以下是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
操作之前记得初始化!
本文发布于:2024-01-31 17:23:14,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170669299730163.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |