GPIO_SetBits(GPIOx,GPIO_Pin)

2022年01月13日 阅读数:4
这篇文章主要向大家介绍GPIO_SetBits(GPIOx,GPIO_Pin),主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。
//stm32f10x_gpio.h  127行~142行

#define GPIO_Pin_0                 ((uint16_t)0x0001)  /*!< Pin 0 selected */
#define GPIO_Pin_1                 ((uint16_t)0x0002)  /*!< Pin 1 selected */
#define GPIO_Pin_2                 ((uint16_t)0x0004)  /*!< Pin 2 selected */
#define GPIO_Pin_3                 ((uint16_t)0x0008)  /*!< Pin 3 selected */
#define GPIO_Pin_4                 ((uint16_t)0x0010)  /*!< Pin 4 selected */
#define GPIO_Pin_5                 ((uint16_t)0x0020)  /*!< Pin 5 selected */
#define GPIO_Pin_6                 ((uint16_t)0x0040)  /*!< Pin 6 selected */
#define GPIO_Pin_7                 ((uint16_t)0x0080)  /*!< Pin 7 selected */
#define GPIO_Pin_8                 ((uint16_t)0x0100)  /*!< Pin 8 selected */
#define GPIO_Pin_9                 ((uint16_t)0x0200)  /*!< Pin 9 selected */
#define GPIO_Pin_10                ((uint16_t)0x0400)  /*!< Pin 10 selected */
#define GPIO_Pin_11                ((uint16_t)0x0800)  /*!< Pin 11 selected */
#define GPIO_Pin_12                ((uint16_t)0x1000)  /*!< Pin 12 selected */
#define GPIO_Pin_13                ((uint16_t)0x2000)  /*!< Pin 13 selected */
#define GPIO_Pin_14                ((uint16_t)0x4000)  /*!< Pin 14 selected */
#define GPIO_Pin_15                ((uint16_t)0x8000)  /*!< Pin 15 selected */

/*GPIO库函数开发和寄存器开发区别
 函数原型为:void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
 ->箭头操做符要求左操做数必须是个指针GPIO_TypeDef* GPIOx,因此GPIOx是一个指向
 GPIO_TypeDef结构体的指针*/
GPIO_SetBits(GPIOx,GPIO_Pin);  //库函数开发
等价于
GPIOx->BSRR = GPIO_Pin;       //寄存器开发
//BSRR寄存器高16位写1->清0,低16位写1->置1
GPIO_ResetBits(GPIOx,GPIO_Pin);
等价于
GPIOx->BRR = GPIO_Pin;