你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

低功耗应用~STM32F4低功耗的GPIO配置释义

[复制链接]
ataudio 发布时间:2015-1-31 21:11
本帖最后由 ataudio 于 2015-1-31 21:14 编辑

   本人使用STM32是半路出家,并没有经历过F1xx系列,因此依靠网络结合手册来学习。

    由于F1具有广泛的群众基础,网络上搜寻的配置和应用,几乎都是F103等F1的配置,但是F4却引入了大量不一样的设置值,对我造成了非常大的困扰。经过和很多STM32的开发者交流,也没有得到F4的GPIO配置的完善信息。令人苦恼。

    下面,我在低功耗配置时,深入GPIO的理解,也彻底理清了GPIO配置中F4和F1的差异。

    手册RM0090与RM0008对GPIO的描述,几乎完全一样,但是,实际情况怎样呢?我们打开库的头文件stm32f4xx_gpio.h和stm32f1xx_gpio.h,就会发现差异巨大。
除非特别说明,否则本部分适用于整个 STM32F4xx 系列。GPIO 主要特性
● 受控I/O 多达 16 个
● 输出状态:推挽或开漏 + 上拉/下拉
● 从输出数据寄存器 (GPIOx_ODR) 或外设(复用功能输出)输出数据
● 可为每个 I/O 选择不同的速度
● 输入状态:浮空、上拉/下拉、模拟
● 将数据输入到输入数据寄存器 (GPIOx_IDR) 或外设(复用功能输入)
● 置位和复位寄存器 (GPIOx_BSRR),对 GPIOx_ODR 具有按位写权限
● 锁定机制 (GPIOx_LCKR),可冻结 I/O 配置
● 模拟功能 ● 复用功能输入/输出选择寄存器(一个 I/O 最多可具有 16 个复用功能)
● 快速翻转,每次翻转最快只需要两个时钟周期
● 引脚复用非常灵活,允许将 I/O 引脚用作 GPIO 或多种外设功能中的一种
GPIO 功能描述
根据数据手册中列出的每个 I/O 端口的特性,可通过软件将通用 I/O (GPIO) 端口的各个端口位分别配置为多种模式:
每个 I/O 端口位均可自由编程,但 I/O 端口寄存器必须按 32 位字、半字或字节进行访问。 GPIOx_BSRR 寄存器旨在实现对 GPIO ODR 寄存器进行原子读取/修改访问。这样便可确保 在读取和修改访问之间发生中断请求也不会有问题。
● 输入浮空
● 输入上拉
● 输入下拉
● 模拟功能
● 具有上拉或下拉功能的开漏输出
● 具有上拉或下拉功能的推挽输出
● 具有上拉或下拉功能的复用功能推挽
● 具有上拉或下拉功能的复用功能开漏


实际上,stm32f4xx_gpio.h中定义的IO模式,是相邻设置,没保留空间:
typedef enum
{
  GPIO_Mode_IN  = 0x00, /*!< GPIO Input Mode */
  GPIO_Mode_OUT = 0x01, /*!< GPIO Output Mode */
  GPIO_Mode_AF  = 0x02, /*!< GPIO Alternate function Mode */
  GPIO_Mode_AN  = 0x03  /*!< GPIO Analog Mode*/
}GPIOMode_TypeDef;
stm32f10x_gpio.hGPIO模式,是间隔4设置:
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;

四种配置怎么可能和8中配置一样??手册还是代码出现错误了吗?

还是查看 手册,关于GPIO配置的寄存器说明。结合函数库的头文件,终于发现:不一致的地方,其实是因为STM32F4xx的配置寄存器的组合变复杂了。F4仍然是可配置成8种状态的,但是其配置,需要三个寄存器选择性的组合在一起。
再来看看stm32f4xx_gpio.h中定义的另外两个enum,在stm32f1xx_gpio.h中是没有的。
typedef enum
{
GPIO_PuPd_NOPULL = 0x00,
GPIO_PuPd_UP     = 0x01,
GPIO_PuPd_DOWN   = 0x02
}GPIOPuPd_TypeDef;
typedef enum
{
GPIO_OType_PP = 0x00,
GPIO_OType_OD = 0x01
}GPIOOType_TypeDef;
而GPIOMode包含了AF(GPIO Alternate function Mode,可复用)和AN(GPIO Analog Mode),GPIOPuPd和GPIOMode中的GPIO_Mode_IN组合,配置输入的模式中的输入上拉和输入下拉,以及Floating Input(GPIOPuPd为00-GPIO_PuPd_NOPULL);
而GPIOMode包含了AF(GPIO Alternate function Mode)和AN(GPIO Analog Mode),GPIOPuPd和GPIOMode中的GPIO_Mode_OUT组合,配置输入的模式中的推挽输出和开漏输出。甚至上述三个寄存器组合,变成推挽输出上拉等。
详细的配置组合在RM0090-En的Page 267表格Table 35中。



         未尽部分,请参看附件。附件是经过多次才完成的笔记,衔接比较生硬,请包涵。

        低功耗测试单芯片的F4(带接地处理),实测STOP模式功耗410uA,在手册上的380~500+之间。可认为测试有效。



低功耗应用~STM32F4低功耗的GPIO配置.rar

下载

233.1 KB, 下载次数: 301

低功耗应用~STM32F4低功耗的GPIO配置

收藏 1 评论4 发布时间:2015-1-31 21:11

举报

4个回答
lkl0305 回答时间:2015-1-31 23:23:56
多谢分享
北斗光寒 回答时间:2015-2-1 09:25:14
有意思  还没有详细研究F4
xiang90721 回答时间:2017-6-23 15:47:05
楼主你这说完还是没说低功耗时,IO口怎么配置呢,仅仅模拟输入?
epochal 回答时间:2017-6-23 21:04:44
谢谢分享!!!

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版