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设置为复用工能模式

STM32F4工程--IO口--寄存器详解_第1张图片

2、端口输出类型寄存器(GPIOx_OTYPER)

①寄存器为32位,但是只用了低16位,高16位作为保留,没有使用。一组IO有16个IO口,每位寄存器控制一个IO口。

②可配置为两种模式:推挽输出(复位状态)、开漏输出。

③参考下图,如果将PA9设置为开漏输出,应当如何配置呢:

答:将GPIOA _OTYPER寄存器的OT9设置为1,也就是将GPIOA_OTYPER寄存器的第9位设置为1。

STM32F4工程--IO口--寄存器详解_第2张图片

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设置为高速

STM32F4工程--IO口--寄存器详解_第3张图片

4、端口上拉/下拉寄存器(GPIOx_PUPDR)

①②③④⑤⑥

①寄存器为32位,一共分成了16组为:PUPDR0---PUPDR15,每组两个位,一组IO口最多有16个,每两个寄存器控制一个IO口。

②可配置为四种模式:无上拉或下拉(浮空)、上拉、下拉、保留。

STM32F4工程--IO口--寄存器详解_第4张图片

5、端口输入数据寄存器(GPIOx_IDR)

①寄存器为32位,但是只用了低16位,高16位作为保留,没有使用。一组IO有16个IO口,每位寄存器控制一个IO口。

②用于读取IO口的电平数据,如果IO口输入的电平为高电平,则对应寄存器的数据位为1。

STM32F4工程--IO口--寄存器详解_第5张图片

6、端口输入数据寄存器(GPIOx_ODR)

①寄存器为32位,但是只用了低16位,高16位作为保留,没有使用。一组IO有16个IO口,每位寄存器控制一个IO口。

②用于设置IO口的电平数据,如果对寄存器写入数据1,则对用IO口输出1。

STM32F4工程--IO口--寄存器详解_第6张图片

7、 端口置位/复位寄存器(GPIOx_BSRR)

STM32F4工程--IO口--寄存器详解_第7张图片

8、端口配置锁定寄存器(GPIOx_LCKR)

STM32F4工程--IO口--寄存器详解_第8张图片

9、复用功能寄存器(GPIOx_AFRL、AFRH)

分高位AFRH和低位AFRL,分别控制8个IO口

STM32F4工程--IO口--寄存器详解_第9张图片

 


(文章为观看原子STM32视频后的笔记及总结,主要用于个人学习巩固知识)

(新手写文章,很多地方写的不够完善,还希望大家能够指点)(侵删)

你可能感兴趣的:(STM32,1024程序员节,stm32,单片机)