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.cnblogs.com/sggggr/p/15064719.html