1.由于STM32的 外设很多,为了降低功耗,每个外设都对应着一个时钟,在芯片刚上电的时候这些时钟都是被关闭的,如果想要外设工作,必须把相应的时钟打开。
所有的 GPIO都挂载到 APB2 总线上,具体的时钟由 APB2外设时钟使能寄存器(RCC_APB2ENR)来控制。
开启 GPIOB 端口 时钟
RCC_APB2ENR |= (1<<3);
1<<3的含义:1代表0x01,然后左移三位,由0000 0001变为0000 1000
2.把连接到 LED 灯的 GPIO 引脚 PB0 配置成输出模式,即配置 GPIO 的端口配置低寄存器 CRL,CRL中包含 0-7 号引脚,每个引脚占用 4个寄存器位。MODE位用来配置输出的速度,CNF 位用来配置各种输入输出模式。在这里我们把 PB0 配置为通用推挽输出,输出的速度为 10M
// 清空控制 PB0 的端口位
GPIOB_CRL &= ~( 0x0F<< (4*0));
配置 PB0 为通用推挽输出,速度为 10M(0001)
GPIOB_CRL |= (1<<4*0);
(1<<4*0)含义:根据优先级先算乘法所以4*0=0,所以1<<0=0x01
3.
直接操作 ODR寄存器来控制 GPIO 的电平
// PB0 输出 低电平
GPIOB_ODR |= (0<<0);