当宏命令遇到GPIO口寄存器设置不同,该怎么做?
比如说,探索者的板子,我想让LED和BEEP同时工作,也就是PF8/9/10三个口的PUPDR,8设置下拉,9、10设置上拉。那么问题来了,当采用宏命令时:
void TEST_Init(void)
{
RCC->AHB1ENR|=1<<5;
GPIO_Set(GPIOF,PIN9|PIN10,
GPIO_MODE_OUT,
GPIO_OTYPE_PP,
GPIO_SPEED_100M,
GPIO_PUPD_PU
);
GPIO_Set(GPIOF,PIN8,
GPIO_MODE_OUT,
GPIO_OTYPE_PP,
GPIO_SPEED_100M,
GPIO_PUPD_PD
);
LED0=1;
LED1=1;
BEEP=0;
}
这样就可以完成8下拉,9、10上拉的设置,但是其他寄存器却进行了一大堆重复设置。有没有办法一次设置完成呢?
位操作GPIOF_PUPDR当然可以,我这里问的是,如果咱们就用宏命令,有没有技巧也能完成这件事呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
实在想优化,直接操作寄存器吧,可以一次操作很多,但是可读性就比较差了。
---------------------------------
收到~~
一周热门 更多>