历史上的今天
今天是: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开发指南-寄存器版本》
史海拾趣
|
看见一个朋友的博客里写着:将一些大的组件(如汉字)库放到user store(如SD卡、Flash等)来减少内核大小,这也是个好办法,NK加载时要到user store去加载,需要注意的是:在加载显示驱动前就要加载保存字体的存贮设备的驱动,否则中文字体不能加载。 ...… 查看全部问答> |
|
哪位大哥能提供下载:SAP KERNEL ORACLE 文件的地址吗? 哪位大哥能提供下载:SAP KERNEL ORACLE 文件的地址吗? 我在安装SAP IDES4.7时,发现少了一个文件目录,即:SAP KERNEL ORACLE, 请各位高手帮帮我! 我已经安装很多次了,不过到了需要CD kernel时,就安装不了,我是下载SAP的安装包的,没有CD,不 ...… 查看全部问答> |
|
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应急灯制作成功了!!羞愧的是我完成的很晚,高兴的是终于达到制作要求。 首先要感谢的是SOSO琳子姐姐(实际按我的年龄该叫她侄女,既然网友都这么叫她,我也这么 ...… 查看全部问答> |
|
我用MOS管IRF9630做电源开关管,负载是M22模块(不知道大家用过这个吗?)!!! 当模块检测SIM卡时,MOS管输出电压很是不稳定!!!! 如果不带负载,开关管输出很稳定!!!!!!!!!!!!!!!!!!! 请DX们帮忙,是负载问题还是开关 ...… 查看全部问答> |




