GPIO输出——使用固件库点亮LED 宏定义遇到的问题

刚开始看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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwjgxz.html