公式为:
#define 寄存器的位带别名 = 0x42000000+(寄存器的地址-0x40000000)84+引脚编号4
例:
#define PEout(x) (uint32_t )(0x42000000+((uint32_t)&GPIOE->ODR-0x40000000)84+(x)4)
GPIOE->ODR获取端口的引脚电平
适用场合:
1)多线程编程共享全局变量的时候,该全局变量要加上 e volatile 进行修饰,让编译器不要优化该变量。
2)裸机编程的时候,某函数与中断服务函数共享全局变量的时候,该全局变量要加上 e volatile 进行修饰,让编译器不要优化该变量。
3)ARM 定义寄存器的时候,寄存器是指向一个地址,要加上 e volatile 进行修饰,让编译器不要优化该变量。
原文:https://www.cnblogs.com/lp06/p/11847488.html