历史上的今天
今天是:2025年02月20日(星期四)
2021年02月20日 | STM32F4寄存器与IO输入输出学习
2021-02-20 来源:eefocus
IO设置函数
包括两个函数:GPIO_Set和GPIO_AF_Set. GPIO_AF_Set,每次只能设置一个IO口的复用功能。
STM32F4的每组通用I/O端口包括4个32位配置寄存器(MODER,OTYPER,OSPEEDR和PUPDR),2个32位数据寄存器(IDR和ODR),1个32位置位/复位寄存器(BSRR),1个32位锁定寄存器(LCKR)和2个32位复用功能选择寄存器(AFRH和AFRL).
这样,STM32F4每组IO有10个32位寄存器控制,其中常用的有4个配置寄存器+2个数据寄存器+2个复用功能选择寄存器,共8个。
各个寄存器介绍
1.MODER寄存器,该寄存器是GPIO端口模式控制寄存器,用于控制GPIOx(STM32F4最多有9组IO,x=A/B/C/D/E/F/G/H/I)的工作模式。
MODERy[1:0]:端口x配置位(y=0~15)这些位通过软件写入,用于配置I/O方向模式。
00:输入(复位状态)
01: 通用输出模式
10: 复用功能模式
11:模拟模式
该寄存器各位在复位后,一般都是0(个别不是0,比如JTAG占用的几个IO口),也就是在默认状态下是输入状态的。每组IO下有16个IO口,该寄存器共32位,每两个控制一个IO,位31:16 保留,必须保持复位值。
2.OSPEEDR寄存器,该寄存器用于控制GPIOx的输出速度。(输出模式)复位时,寄存器值一般为0.
00: 2MHz(低速)
01: 25MHz(中速)
10: 50MHz(快速)
11: 30pF时为100MHz(高速)(15pF时为80MHz输出(最大速度))
3.PUPDR寄存器,用于控制GPIOx的上拉/下拉。复位后,寄存器值为0.
00: 无上拉/下拉
01: 上拉
10: 下拉
11: 保留
4.ODR寄存器,用于设置某个IO输出低电平(ODRy=0)还是高电平(ODRy=1),该寄存器也仅在输出模式下有效,在输入模式下(MODER[1:0])不起作用.
5.IDR寄存器,用于读取GPIOx的输入,用于读取某个IO的电平,如果对应的位为0,则说明该IO输入的是低电平
6.OTYPER寄存器,在输入模式不起作用,低16位有效。
0: 输出推挽(复位状态)
1: 输出开漏
7.AFRL和AFRH,是用来设置IO引脚复用和映射的,STM32F4每个IO引脚通过一个复用器连接到板载外设,该复用器一次仅允许一个外设的复用功能(AF)连接到IO引脚,AFRL控制0…7这8个IO口,AFRH控制8…15这8个IO口。4个位控制一个IO。
0000: AF0
1111: AF15
8.BSRR寄存器是端口位设置/清除寄存器,BSRR低16位用于设置GPIO口对应位输出高电平,高16位用于设置GPIO口对应位输出低电平.
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
{
/* Check the parameters */
assert_param(IS_GPIO_PIN(GPIO_Pin));
assert_param(IS_GPIO_PIN_ACTION(PinState));
if(PinState != GPIO_PIN_RESET)
{
GPIOx->BSRR = GPIO_Pin;
}
else
{
GPIOx->BSRR = (uint32_t)GPIO_Pin << 16U;
}
}
STM32F4的IO的8种模式
4种输入模式
1.GPIO_Mode_IN_FLOATING 浮空输入
MCU直接读取I/O电平,I/O电平状态不确定,完全由外部输入决定
2.GPIO_Mode_IPU 上拉输入
IO内部接上拉电阻,此时如果IO口外部没有信号输入或引脚悬空,IO默认为高电平,如果要大电流还是要外部上拉
3.GPIO_Mode_IPD 下拉输入
IO内部接上拉电阻,没有外部信号或引脚悬空,IO默认为低电平
4.GPIO_Mode_AIN 模拟输入
当位于模拟输入配置下,通过数模转换,转换成模拟信号,CPU不能在"输入数据寄存器"上读到有效数据.
4种输出模式
1.GPIO_Mode_OUT_OD 开漏输出
2.GPIO_Mode_AF_OD 复用开漏输出
3.GPIO_Mode_OUT_PP 推挽输出
4.GPIO_Mode_AF_PP 复用推挽输出
开漏输出:可以输出强低电平,高电平得靠外部电阻拉高
推挽输出:可以输出强高低电平.
上一篇:按键实验(GPIO的输入模式)
史海拾趣
|
在单片机市场,除了在低端8位市场可以看到排名第8的凌阳和排名第十的华邦外,鲜见中国芯的影子。 而与此形成强烈对比的是:联发科和展讯主导了中国GSM和TD市场。 即使分外重视中国市场的国际大厂,也不过是在中国建造投产8位单片机市场, ...… 查看全部问答> |
|
中立认识对嵌入式linux的评价!各位欲使用嵌入linux的注意了! 这是我转摘得文章。各位欲使用嵌入linux的注意了!这里的linux是指嵌入式的不要混淆了! 2008-05-09 上周,Green Hills Software(GHS)就嵌入式Linux撰写了一则措辞严厉的观点,下面就是它的开场白:“Embedded Linux是迄今为止最夸大其词的嵌入式 ...… 查看全部问答> |
|
在上一篇文章中卓跃教育已经为大家介绍了Android智能系统的优 越性。那么接下来卓跃教育继续为大家介绍下面的这几点: 6.多运营商支持 苹果iPhone在美国 ...… 查看全部问答> |
|
转自ednchina(1)所有综合工具都支持的结构:always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,notif0,notif1,if,inout,in ...… 查看全部问答> |
|
出一套全新原装TI stellaris Launchpad LM4F120 开发板 全新原装TI stellaris Launchpad LM4F120 开发板,希望兑换4000芯币 已被 exiao 以4000芯币拍下! file:///F:/QQ截图20130809132653 [ 本帖最后由 长毛小兔 于 2013-8-11 23:30 编辑 ]… 查看全部问答> |




