GPIO_SetBits(GPIOx,GPIO_Pin)
Posted 嵌入式历练者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
以上是关于GPIO_SetBits(GPIOx,GPIO_Pin)的主要内容,如果未能解决你的问题,请参考以下文章
stm32中GPIOx_BSRR和 GPIO_xBRR寄存允许对任何GPIOx进行读\更改的独立访问;
GPIOx_BSRR 这个寄存器的功能既有设置又有清除,为啥还要GPIOx_BRR这个呢?啥区