STM32的8种工作模式被赋值为0x00,0x04,0x28等的原因及端口速度

本文探讨了STM32在keil中配置GPIO端口时,模式值如0x00、0x04、0x28等的由来。通过分析STM32参考手册和固件库,解释了这些数值如何映射到寄存器配置,并以LED流水灯程序为例,展示了在调试过程中变量的变化,揭示了GPIO初始化函数的工作原理。
摘要由CSDN通过智能技术生成

如有错误,还请包涵与指出

1.keil中的GIPO端口配置值与对应寄存器端口配置值

        在配置端口模式时,突然想到为什么stm32f10x_gpio.h文件中配置端口的模式值等于图1这些值,这些值与寄存器上介绍的值又感觉不一样,为什么这8种模式就等于对应的这些值。

//8种输出模式
typedef enum
{ GPIO_Mode_AIN = 0x0,
  GPIO_Mode_IN_FLOATING = 0x04,
  GPIO_Mode_IPD = 0x28,
  GPIO_Mode_IPU = 0x48,
  GPIO_Mode_Out_OD = 0x14,
  GPIO_Mode_Out_PP = 0x10,
  GPIO_Mode_AF_OD = 0x1C,
  GPIO_Mode_AF_PP = 0x18
}GPIOMode_TypeDef;

//端口的三种速度
typedef enum
{ 
  GPIO_Speed_10MHz = 1,
  GPIO_Speed_2MHz, 
  GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;

图1  Keil中配置端口给的值

         在STM32中文参考手册中,可以看到端口配置低寄存器(CRL)的定义,如图2所示,对某个端口配置成推挽输出,速度为50MHz,则这4位为:0011。这里当时想糊涂了,一个是0011,一个是0x10,怎么等价的。去网上百度了一下,在

  • 29
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值