赞
踩
GPIO有九组IO口,分别用大写字母表示,即,x=A/B/C/D/E/F/G/H/I.
IO口可以由软件配置成如下8种模式
1,输入浮空
2,输入上拉
3,输入下拉
4,模拟输入
5,开漏输出
6,推挽输出
7,推挽式复用功能
8,开漏式复用功能
该寄存器是GPIO端口模式控制寄存器,用于控制IO口的工作模式
每组IO下有16个IO口,该寄存器共32位,每2个位控制1个IO,不同设置所对应的模式见上表
这个寄存器用于控制GPIO的输出类型,低16位有效,每一个位控制一个IO口,复位后该寄存器值都是0
该寄存器控制GPIOx的输出速度,该寄存器各位描述见下表
这个寄存器也仅用于输出模式,在输入模式下不起作用。
每两个位控制一个IO口,复位后该寄存器值一般为0.
该寄存器用于GPIOx的上拉/下拉,该寄存器各位描述见下表
每2个位控制一个IO口,用于设置上下拉
提醒!!!!:STM32F1是通过ODR寄存器控制上下拉的,二STM32F4则由单独的寄存器PUPDR控制上下拉,使用起来更灵活。复位后,该寄存器一般值为0.
该寄存器用于设置某个IO输出低电平(ODRy=0)还是高点平(ODRy=1),该寄存器各位描述见下表
(PS:果然要把寄存器全名记住可以方便理解哈哈哈哈哈哈)
这个寄存器用于读取GPIOx的输入,具体配置见下表
如果对应的位为0(IDRy=0),则说明该IO输入的是低电平,如果是1(IDRy=1),则表示输入的是高点平。
我熬设置PC11的第十二个IO口为推挽输出,速度100Mhz,不戴上下拉,并且输出高点平。代码如下:
以上代码第一句需要开启PC时钟操作,STM32所有外设的使用都必须先开启时钟。
这个函数支持对STM32F4的任何IO口进行设置,并且支持同时设置多个IO(功能一致时),此时再配置PC11
超级简单。
并且正点原子为GPIO_Set定义了一些列的宏在sys.h里面
如再设置PC11
超级简单!
AFRL控制0~7八个IO口,AFRH控制8 ~ 15这8个IO口
AFRL寄存器
该寄存器每4个位控制1个IO口,用于选择AF0 ~ AF15,寄存器共32位,即8个IO口,AFRH控制高八位呗
对于STM32F40xx/STM32F41xx来说,简单复用大概这样子
详情明天上午补吧。
这是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开发指南-寄存器版本》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。