STM32点亮第一盏灯
1.在原理图里面找到灯的位置
打开原理图,如下图可以观察到LED1对应的管脚是PA5
并且,阳极对应的就是PA5所以当PA5为高电平时点亮LED1
2.编程实现
//延迟函数
void Delay(u32 count)
{
u32 i=0;
for(;i<count;i++);
}
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能PA口
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //配置端口PA5这个端口
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //模式为推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO速度是50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化
//GPIO_SetBits(GPIOA,GPIO_Pin_5); //设置PA5端口为高电平
GPIOA->BSRR = ((uint16_t)0x0020); //或者使用位操作设置PA5端口为高电平
while(1){
GPIOA->BRR = ((uint16_t)0x0020); //使用位操作设置PA5端口为低电平
//GPIO_ResetBits(GPIOA,GPIO_Pin_5); //或者使用函数的形式
Delay(3000000); //延迟
GPIOA->BSRR = ((uint16_t)0x0020);
//GPIO_SetBits(GPIOA,GPIO_Pin_5);
Delay(3000000);
}
}
ODR寄存器可读可写:既能控制管脚为高电平,也能控制管脚为低电平。
管脚对于位写1 gpio 管脚为高电平,写 0 为低电平
BSRR 只写寄存器:[color=Red]既能控制管脚为高电平,也能控制管脚为低电平。
对寄存器高 16bit 写1 对应管脚为低电平,对寄存器低16bit写1对应管脚为高电平。写 0 ,无动作
BRR 只写寄存器:只能改变管脚状态为低电平,对寄存器 管脚对于位写 1 相应管脚会为低电平。写 0 无动作。
3.编译、连接、下载运行即可