STM32F4工程--IO口--寄存器详解
作者:互联网
STM32F4工程--IO口--GPIO寄存器详解
----芯片:STM32F429IGT6
----参考资料:正点原子视频
一、基础知识
1、每组IO口包含10个寄存器,如果配置一个IO口需要2个位,那么刚好32位寄存器配置一组IO口16个IO口 如果配置一个IO口只需要1个位,一般高16位保留 BSRR寄存器32位分为低16位BSRRL和高16位BSRRH,BSRRL配置一组IO口的16个IO口的置位状态(1),BSRRH配置复位状态(0)。
4个32位配置寄存器:
一个端口模式寄存器(GPIOx_MODER)
一个端口输出类型寄存器(GPIOx_OTYPER)
一个端口输出速度寄存器(GPIOx_OSPEEDR)
一个端口上拉下拉寄存器(GPIOx_PUPDR)
2个32位数据寄存器
一个端口输入数据寄存器(GPIOx_IDR)
一个端口输出数据寄存器(GPIOx_ODR)
1个32位置位/复位寄存器
一个端口置位/复位寄存器(GPIOx_BSRR)
1个32位锁存寄存器
一个端口配置锁存寄存器(GPIOx_LCKR)
2个32复用功能共寄存器
两个复用功能寄存器(低位GPIOx_AFRL & GPIOx_AFRH)
如果芯片有GPIOA~GPIOI 9个组,那么一共有对应9X10=90个寄存器。
二、寄存器详解
1、端口模式寄存器(GPIOx_MODER)
①寄存器为32位,一共分成了16组为:MODER0---MODER15,每组两个位,一组IO口最多有16个,每两个寄存器控制一个IO口。
②可配置为四种模式:输入模式(复位状态)、通用输出模式、复用功能模式、模拟模式
③参考下图,如果将PA9设置为复用工能模式,应当如何配置呢:
答:将GPIOA_MODER寄存器的MODER9设置为10,也就是将GPIOA_MODER寄存器的第18位设置为0,将第19位设置为1。即可将PA9设置为复用工能模式
2、端口输出类型寄存器(GPIOx_OTYPER)
①寄存器为32位,但是只用了低16位,高16位作为保留,没有使用。一组IO有16个IO口,每位寄存器控制一个IO口。
②可配置为两种模式:推挽输出(复位状态)、开漏输出。
③参考下图,如果将PA9设置为开漏输出,应当如何配置呢:
答:将GPIOA _OTYPER寄存器的OT9设置为1,也就是将GPIOA_OTYPER寄存器的第9位设置为1。
3、端口输出速度寄存器(GPIOx_OSPEEDR)
①寄存器为32位,一共分成了16组为:OSPEEDR0---OSPEEDR15,每组两个位,一组IO口最多有16个,每两个寄存器控制一个IO口。
②可配置为四种模式:2MHZ低速、25MHz中速、50MHz快速、100MHz高速。
③参考下图,如果将PA9设置为高速,应当如何配置呢:
答:将GPIOA_OSPEEDR寄存器的OSPEEDR9设置为11,也就是将GPIOA_OSPEEDR寄存器的第18位设置为1,将第19位设置为1。即可将PA9设置为高速
4、端口上拉/下拉寄存器(GPIOx_PUPDR)
①②③④⑤⑥
①寄存器为32位,一共分成了16组为:PUPDR0---PUPDR15,每组两个位,一组IO口最多有16个,每两个寄存器控制一个IO口。
②可配置为四种模式:无上拉或下拉(浮空)、上拉、下拉、保留。
5、端口输入数据寄存器(GPIOx_IDR)
①寄存器为32位,但是只用了低16位,高16位作为保留,没有使用。一组IO有16个IO口,每位寄存器控制一个IO口。
②用于读取IO口的电平数据,如果IO口输入的电平为高电平,则对应寄存器的数据位为1。
6、端口输入数据寄存器(GPIOx_ODR)
①寄存器为32位,但是只用了低16位,高16位作为保留,没有使用。一组IO有16个IO口,每位寄存器控制一个IO口。
②用于设置IO口的电平数据,如果对寄存器写入数据1,则对用IO口输出1。
7、 端口置位/复位寄存器(GPIOx_BSRR)
8、端口配置锁定寄存器(GPIOx_LCKR)
9、复用功能寄存器(GPIOx_AFRL、AFRH)
分高位AFRH和低位AFRL,分别控制8个IO口
(文章为观看原子STM32视频后的笔记及总结,主要用于个人学习巩固知识)
(新手写文章,很多地方写的不够完善,还希望大家能够指点)(侵删)
标签:16,--,32,GPIOx,端口,IO,寄存器,STM32F4 来源: https://blog.csdn.net/qq_38326581/article/details/109240033