以下是stm32f4xx.h中对GPIO的定义。
- typedef struct
- {
- __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */
- __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */
- __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */
- __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */
- __IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */
- __IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */
- __IO uint16_t BSRRL; /*!< GPIO port bit set/reset low register, Address offset: 0x18 */
- __IO uint16_t BSRRH; /*!< GPIO port bit set/reset high register, Address offset: 0x1A */
- __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */
- __IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */
- } GPIO_TypeDef;
复制代码
以下是stm32f10x.h中对GPIO的定义。
- typedef struct
- {
- __IO uint32_t CRL;
- __IO uint32_t CRH;
- __IO uint32_t IDR;
- __IO uint32_t ODR;
- __IO uint32_t BSRR;
- __IO uint32_t BRR;
- __IO uint32_t LCKR;
- } GPIO_TypeDef;
复制代码
F1的CRL、CRH用于配置输入输出、推完开漏模式、速度、上下拉输入、复用输出,和F4的MODER、OTYPER、OSPEEDR、PUPDR、AFR[2]等效。
IDR和ODR都是一样的,输入输出寄存器。
F1的BSRR的低16位是置位,F4的BSRRL是置位。(F1的BSRR高16位和BRR等效,都是复位)
F1的BRR是复位,F4的BSRRH是复位。
LCKR是锁存配置,一般不用。
然后F1的AFIO是独立的,不在GPIO的结构体里。
下面举个F4设置IO电平的例子:
- #define CONVST_1() GPIOC->BSRRL = GPIO_Pin_6
- #define CONVST_0() GPIOC->BSRRH = GPIO_Pin_6
复制代码
F1设置IO电平的例子:
- #define CONVST_1() GPIOC->BSRR = GPIO_Pin_6
- #define CONVST_0() GPIOC->BRR = GPIO_Pin_6
复制代码
操作之前记得初始化!
————————————————
版权声明:小盼你最萌哒
如有侵权请联系删除
|