刚开始看STM32F10x固件库例程,GPIO输出——使用固件库点亮LED灯,在bsp_led.h中:
/*直接操作寄存器的方法控制*/
#define digitalHi(p,i) {p->BSRR=i;} //输出为高电平
#define digitalLo(p,i) {p->BRR=i;} //输出为低电平
#define digitalToggle(p,i) {p->ODR ^=i;} //输出反转状态
/* 定义控制IO的宏 */
#define LED1_TOGGLE digitalToggle(LED1_GPIO_PORT,LED1_GPIO_PIN)
#define LED1_OFF digitalHi(LED1_GPIO_PORT,LED1_GPIO_PIN)
#define LED1_ON digitalLo(LED1_GPIO_PORT,LED1_GPIO_PIN)
//红
#define LED_RED
LED1_ON;
LED2_OFF
LED3_OFF
不懂 #define digitalHi(p, i) {p->BSRR = i;}中 p 和 i 在哪定义的
参考#define定义宏函数 的正确使用,得以解决此问题。
在此程序宏函数的定义中,直接以无类型的形参来操作寄存器,形参的类型由调用此宏函数时传入的实参来决定,所以在此处宏函数的形参无类型。
——脑子是个好东西
————————————————
版权声明:本文为CSDN博主「A_Hulyi」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_38295979/article/details/90764405