这里说明下 volatile 关键字: volatile 提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有 volatile 关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话, 将出现不一致的现象。 位带操作的优点: 1:对于控制 GPIO 的输入和输出非常简单。 2:操作串行接口芯片非常方便(DS1302、74HC595 等),如果采用库函数的话,那么这个时序编写就非常不方便。 GPIO 位带操作: STM32F4 支持的位带操作区有两个,其中应用最多的还是外设 位带区,在外设位带区中包含了APB1、APB2 还有 AHB1 总线上的所有外设寄存器, 使用位带操作应用最多的外设还属 GPIO,通过位带操作控制 STM32 引脚输入与 输出。 IDR是查看引脚电平状态用的寄存器, ODR是引脚电平输出的寄存器。 IDR 和 ODR 寄存器相对于 GPIO 基地址的偏移量是 16 和 20。



