当前位置:   article > 正文

STM32个人学习笔记-第二集(F4GPIO寄存器介绍)

STM32个人学习笔记-第二集(F4GPIO寄存器介绍)

STM32个人学习笔记-第二集

一,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开发指南-寄存器版本》

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/301994
推荐阅读
相关标签
  

闽ICP备14008679号