中级会员
 
- 积分
- 332
- 金钱
- 332
- 注册时间
- 2021-1-19
- 在线时间
- 56 小时
|

楼主 |
发表于 2022-11-5 09:28:56
|
显示全部楼层
终于发现问题了,原来宏定义有两层,我只看到了第一层还以为那就是最原始的定义 ,第二层用中括号括起来了,所以LED2_OFF后面没有分号也可以
我的问题,给各位热心网友添麻烦了,以后宏定义得仔细看看是不是最底层
谢谢啦
所有相关源代码如下
/* 直接操作寄存器的方法控制IO */
#define digitalHi(p,i) {p->BSRR=i;} //设置为高电平
#define digitalLo(p,i) {p->BSRR=(uint32_t)i << 16;} //输出低电平
#define digitalToggle(p,i) {p->ODR ^=i;} //输出反转状态
/* 定义控制IO的宏 */
#define LED1_TOGGLE digitalToggle(LED1_GPIO_PORT,LED1_PIN)
#define LED1_OFF digitalHi(LED1_GPIO_PORT,LED1_PIN)
#define LED1_ON digitalLo(LED1_GPIO_PORT,LED1_PIN)
#define LED2_TOGGLE digitalToggle(LED2_GPIO_PORT,LED2_PIN)
#define LED2_OFF digitalHi(LED2_GPIO_PORT,LED2_PIN)
#define LED2_ON digitalLo(LED2_GPIO_PORT,LED2_PIN)
#define LED3_TOGGLE digitalToggle(LED3_GPIO_PORT,LED3_PIN)
#define LED3_OFF digitalHi(LED3_GPIO_PORT,LED3_PIN)
#define LED3_ON digitalLo(LED3_GPIO_PORT,LED3_PIN)
#define LED4_TOGGLE digitalToggle(LED4_GPIO_PORT,LED4_PIN)
#define LED4_OFF digitalHi(LED4_GPIO_PORT,LED4_PIN)
#define LED4_ON digitalLo(LED4_GPIO_PORT,LED4_PIN)
/* 基本混色,后面高级用法使用PWM可混出全彩颜色,且效果更好 */
//(全部打开)
#define LED_ALLON \
LED1_ON;\
LED2_ON\
LED3_ON\
LED4_ON |
|