各种函数初始化或者置位复位函数,参数里的引脚,什么时候可以用 “|”的关系,什么时候只能多次调用函数呢?

2019-07-20 19:39发布


为什么 GPIO_SetBit 参数可以一次传递两个参数(GPIO_Pin_9 与 GPIO_Pin_10),而 SYSCFG_EXTILineConfig()却不能用类似的方法呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
花好,月正圆
2019-07-21 08:59
先上这两张图。#define EXTI_PortSourceGPIOA       ((uint8_t)0x00)
#define EXTI_PortSourceGPIOB       ((uint8_t)0x01)


EXTI_PortSourceGPIOA   | EXTI_PortSourceGPIOB        实际值是0x00 | 0x01 = 0x01,所以按位或运算结果就出错。
而由库函数:
#define GPIO_Pin_0                 ((uint16_t)0x0001)  /* Pin 0 selected */
#define GPIO_Pin_1                 ((uint16_t)0x0002)  /* Pin 1 selected */


GPIO_Pin_0  |  GPIO_Pin_1         
实际值是0x01 | 0x02  =
   0000 0001
|  0000 0010
------------------------
   0000 0011  =0x03.这样就把GPIO_Pin_0与GPIO_Pin_1同时设置了。


其他情况,以此类推即可。

一周热门 更多>