打印
[STM32F1]

F1和F4对GPIO的操作区别

[复制链接]
174|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
铁血丹心LLLL|  楼主 | 2023-7-26 17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
GPIO, IO, gp, pi
以下是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;


使用特权

评论回复
沙发
铁血丹心LLLL|  楼主 | 2023-7-26 17:05 | 只看该作者
以下是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;

使用特权

评论回复
板凳
铁血丹心LLLL|  楼主 | 2023-7-26 17:05 | 只看该作者
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是锁存配置,一般不用。

使用特权

评论回复
地板
铁血丹心LLLL|  楼主 | 2023-7-26 17:05 | 只看该作者
然后F1的AFIO是独立的,不在GPIO的结构体里。

下面举个F4设置IO电平的例子:
#define CONVST_1()        GPIOC->BSRRL = GPIO_Pin_6
#define CONVST_0()        GPIOC->BSRRH = GPIO_Pin_6

使用特权

评论回复
5
铁血丹心LLLL|  楼主 | 2023-7-26 17:05 | 只看该作者
F1设置IO电平的例子:
#define CONVST_1()        GPIOC->BSRR = GPIO_Pin_6
#define CONVST_0()        GPIOC->BRR = GPIO_Pin_6

操作之前记得初始化!

使用特权

评论回复
6
yiy| | 2023-7-26 20:38 | 只看该作者
在cubeMX面前这些都不是问题。

使用特权

评论回复
7
地瓜patch| | 2023-7-26 21:25 | 只看该作者
搞单片机成为软件工程师了,有几个会配寄存器的

使用特权

评论回复
8
内政奇才| | 2023-9-26 16:29 | 只看该作者
总的来说,虽然F1和F4在GPIO的基本功能上相似,但在GPIO寄存器的定义、配置、翻转速度、UART串口数量以及I2C接口数量等方面存在差异。

使用特权

评论回复
9
MessageRing| | 2023-9-30 19:05 | 只看该作者
可以用cubeMX来配置这个

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

59

主题

449

帖子

1

粉丝