当宏命令遇到GPIO口寄存器设置不同,该怎么做?

2019-07-21 03:34发布

当宏命令遇到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当然可以,我这里问的是,如果咱们就用宏命令,有没有技巧也能完成这件事呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。