历史上的今天
返回首页

历史上的今天

今天是:2024年12月22日(星期日)

2020年12月22日 | STM32个人学习笔记-第二集(F4GPIO寄存器介绍)

2020-12-22 来源:eefocus

一,GPIO口寄存器

GPIO有九组IO口,分别用大写字母表示,即,x=A/B/C/D/E/F/G/H/I.
IO口可以由软件配置成如下8种模式
1,输入浮空
2,输入上拉
3,输入下拉
4,模拟输入
5,开漏输出
6,推挽输出
7,推挽式复用功能
8,开漏式复用功能

二,IO口常用的8个寄存器

1,MODER寄存器

该寄存器是GPIO端口模式控制寄存器,用于控制IO口的工作模式
在这里插入图片描述

每组IO下有16个IO口,该寄存器共32位,每2个位控制1个IO,不同设置所对应的模式见上表

2,OTYPER寄存器

这个寄存器用于控制GPIO的输出类型,低16位有效,每一个位控制一个IO口,复位后该寄存器值都是0
在这里插入图片描述

3,OSPEEDR寄存器

该寄存器控制GPIOx的输出速度,该寄存器各位描述见下表
在这里插入图片描述
这个寄存器也仅用于输出模式,在输入模式下不起作用。
每两个位控制一个IO口,复位后该寄存器值一般为0.

4,PUPDR寄存器

该寄存器用于GPIOx的上拉/下拉,该寄存器各位描述见下表
在这里插入图片描述

每2个位控制一个IO口,用于设置上下拉
提醒!!!!:STM32F1是通过ODR寄存器控制上下拉的,二STM32F4则由单独的寄存器PUPDR控制上下拉,使用起来更灵活。复位后,该寄存器一般值为0.

5,ODR寄存器(output data register)

该寄存器用于设置某个IO输出低电平(ODRy=0)还是高点平(ODRy=1),该寄存器各位描述见下表
在这里插入图片描述

6,IDR寄存器(input data register)

(PS:果然要把寄存器全名记住可以方便理解哈哈哈哈哈哈)
这个寄存器用于读取GPIOx的输入,具体配置见下表
在这里插入图片描述
如果对应的位为0(IDRy=0),则说明该IO输入的是低电平,如果是1(IDRy=1),则表示输入的是高点平。

因为正点原子的教程先就介绍这么多寄存器,咱就先记录这么多。

举个栗子:

我熬设置PC11的第十二个IO口为推挽输出,速度100Mhz,不戴上下拉,并且输出高点平。代码如下:

在这里插入图片描述
以上代码第一句需要开启PC时钟操作,STM32所有外设的使用都必须先开启时钟。

其实这样设置IO口好麻烦的,正点原子的SYSTEM文件夹中有一个GPIO_Set函数

在这里插入图片描述
在这里插入图片描述
这个函数支持对STM32F4的任何IO口进行设置,并且支持同时设置多个IO(功能一致时),此时再配置PC11
在这里插入图片描述

超级简单。

并且正点原子为GPIO_Set定义了一些列的宏在sys.h里面
如再设置PC11
在这里插入图片描述

超级简单!

7,关于GPIO复用的两个寄存器

AFRL控制0~7八个IO口,AFRH控制8 ~ 15这8个IO口

AFRL寄存器
在这里插入图片描述
该寄存器每4个位控制1个IO口,用于选择AF0 ~ AF15,寄存器共32位,即8个IO口,AFRH控制高八位呗
对于STM32F40xx/STM32F41xx来说,简单复用大概这样子
在这里插入图片描述

详情明天上午补吧。

再拿PC11举个栗子

这是PC11的引脚原理图
在这里插入图片描述
我们要用PC11的SDIO_D3。因为11脚由AFRH【15:12】控制,且属于SDIO功能复用,所以要选择AF12。
,
在这里插入图片描述

注意!!!在MDK里面AFRL和AFRH呗定义为AFR[2],其中AFR[0]代表AFRL,AFR[1]代表AFRH。

这里正点还是将复用功能封装成函数:GPIO_AF_Set
在这里插入图片描述

通过这个函数,则刚才的复用设置可以设置写成:
在这里插入图片描述

资料来源:《正点原子STM32F4开发指南-寄存器版本》

推荐阅读

史海拾趣

Advanced Semiconductor, Inc.公司的发展小趣事

随着科技的快速发展,ASI不断加大对研发的投入,努力突破技术瓶颈。在某一时期,公司成功研发出一款具有划时代意义的半导体芯片,这款芯片不仅性能卓越,而且功耗更低,极大地提升了电子设备的性能和使用体验。这一技术突破使得ASI在市场上获得了更多的份额,并奠定了公司在半导体行业的领先地位。

世纪金光(CENGOL)公司的发展小趣事

在碳化硅材料技术取得突破后,世纪金光迅速将这一技术应用于功率器件的研发与生产。公司成功开发出额定电压650-1700V、额定电流5-100A的碳化硅肖特基二极管(SBD)以及额定电压650-1200V、额定电流20-100A的金属-氧化物半导体场效应晶体管(MOSFET)。这些高性能的功率器件在电源PFC、充电桩充电模组、光伏逆变器、特种电源等领域得到了广泛应用,为客户提供了高效、可靠的解决方案。

Frolyt Condensers & Elements GmbH公司的发展小趣事

随着全球对环保问题的日益重视,Frolyt Condensers & Elements GmbH积极响应号召,将环保理念融入产品设计和生产流程中。公司投入大量资金研发环保型电容器材料和生产工艺,成功推出了多款低能耗、无污染的电容器产品。这些产品不仅满足了市场对环保产品的需求,还帮助Frolyt树立了良好的企业形象,进一步提升了市场竞争力。

Good Sky Electric Co Ltd公司的发展小趣事
Z32A、Z32K、Z3025J型摇臂钻床的主电路通常包括断路器、主电路熔断器、接触器正反转主触点、热继电器以及电机等关键元件。这些元件共同协作,确保钻床的安全稳定运行。
Elytone Electronics Co Ltd公司的发展小趣事

Elytone Electronics Co Ltd成立于XXXX年,最初是一家仅有几名员工的小型电子产品加工厂。公司创始人凭借对电子技术的热爱和对市场敏锐的洞察力,带领团队开始了艰苦的创业之路。在资源有限的情况下,他们不断研发新产品,优化生产工艺,逐步在行业内建立起了一定的知名度。

AnDAPT__Inc.公司的发展小趣事

近年来,Elytone公司积极响应国家环保政策,致力于推动绿色发展。他们采用环保材料和清洁能源进行生产,减少了对环境的污染。同时,公司还加强了对废弃物的回收和处理工作,实现了资源的循环利用。这些举措不仅提升了公司的社会形象,也为行业的可持续发展做出了积极贡献。

问答坊 | AI 解惑

新手报道,发几个教程

新手报道,不知道对大家有没有用,如果有用还会把其他杂七杂八的都传上 [ 本帖最后由 hdx 于 2009-7-12 13:21 编辑 ]…

查看全部问答>

急!!!怎么将大的组件放到user store里???

看见一个朋友的博客里写着:将一些大的组件(如汉字)库放到user store(如SD卡、Flash等)来减少内核大小,这也是个好办法,NK加载时要到user store去加载,需要注意的是:在加载显示驱动前就要加载保存字体的存贮设备的驱动,否则中文字体不能加载。 ...…

查看全部问答>

哪位大哥能提供下载:SAP KERNEL ORACLE 文件的地址吗?

哪位大哥能提供下载:SAP KERNEL ORACLE 文件的地址吗? 我在安装SAP IDES4.7时,发现少了一个文件目录,即:SAP KERNEL ORACLE, 请各位高手帮帮我! 我已经安装很多次了,不过到了需要CD kernel时,就安装不了,我是下载SAP的安装包的,没有CD,不 ...…

查看全部问答>

从OAL请求一个逻辑中断号

KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &g_I2CIrq, sizeof(UINT32), &g_I2CSysIntr, sizeof(UINT32), NULL) 可以从OAL请求一个SYSINTR值,然后通过IST执行相关中断 但是SYSINTR有SYSINTR_I2C,SYSINTR_TOUC,SYSINTR_SERIA....... 系统怎么 ...…

查看全部问答>

为什么门电路很多都是反向的?

好多元件,喜欢用与非门,或非门,这样输入和输出都是取反的。感觉很麻烦,这里面有什么道理吗?…

查看全部问答>

我的LED应急灯制作过程(4)-调试完成,交差!

各位网友,本人羞愧但是又高兴地告诉大家,我的LED应急灯制作成功了!!羞愧的是我完成的很晚,高兴的是终于达到制作要求。       首先要感谢的是SOSO琳子姐姐(实际按我的年龄该叫她侄女,既然网友都这么叫她,我也这么 ...…

查看全部问答>

芯片烧写出现问题

                                 我下载stm32程序时出现“cannot access memory”的对话框,是不是说我的芯片不能再烧啦?谢谢…

查看全部问答>

【求助】请高手帮忙!!!!急!!!!!!

我用MOS管IRF9630做电源开关管,负载是M22模块(不知道大家用过这个吗?)!!! 当模块检测SIM卡时,MOS管输出电压很是不稳定!!!! 如果不带负载,开关管输出很稳定!!!!!!!!!!!!!!!!!!! 请DX们帮忙,是负载问题还是开关 ...…

查看全部问答>