关于多个gpio的初始化问题,大神求解

2019-07-20 16:27发布

GPIO_InitStructure.GPIO_Pin = (3<<0)|(3<<4)|(7<<8)|(3<<14);//PD0,1,4,5,8,9,10,14,15 AF OUT

       
  GPIO_InitStructure.GPIO_Pin = (0X1FF<<7);//PE7~15,AF OUT
  麻烦大神解释下这两句代码的具体意思

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
2017214
2019-07-21 18:57
初始化单个IO口:GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
初始化多个IO口可以写成:
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;

其中GPIO_Pin_x是宏定义 :如下 (在MDK中 按键盘F12可以跟踪)
#define GPIO_Pin_0                 ((uint16_t)0x0001)  /*!< Pin 0 selected */
#define GPIO_Pin_1                 ((uint16_t)0x0002)  /*!< Pin 1 selected */
................

GPIO_InitStructure.GPIO_Pin = (3<<0)|(3<<4)|(7<<8)|(3<<14);
(3<<0)==(GPIO_PIN_0 | GPIO_PIN_1)

(3<<4)==(GPIO_PIN_0 | GPIO_PIN_1)<<4==(3<<0)==(GPIO_PIN_4 | GPIO_PIN_5)

(3<<0)|(3<<4)== (3<<0)==(GPIO_PIN_0 | GPIO_PIN_1)| (3<<0)==(GPIO_PIN_4 | GPIO_PIN_5)

按这推算

一周热门 更多>