stm32寄存器操作gpio_stm32单片机软件

(3) 2024-09-20 17:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
stm32寄存器操作gpio_stm32单片机软件,希望能够帮助你!!!。

任何一个单片机,最简单的外设莫过于 IO 口的高低电平控制了。所以今天为大家讲解通过寄存器操作控制高低电平,对寄存器操作有一个简单认识。

STM32 的 IO 口可以由软件配置成如下 8 种模式:

1、输入浮空

2、输入上拉

3、输入下拉

4、模拟输入

5、开漏输出

6、推挽输出

7、推挽式复用功能

8、开漏复用功能

每个 IO 口可以自由编程,但 IO 口寄存器必须要按 32 位字被访问。每个 IO 端口都有 7 个寄存器来控制。他们分别是:配置模式的 2 个 32 位的端口配置寄存器 CRL 和 CRH;2 个 32位的数据寄存器 IDR 和 ODR;1 个 32 位的置位/复位寄存器BSRR;一个 16 位的复位寄存器BRR;1 个 32 位的锁存寄存器 LCKR;这里我们仅介绍常用 的几个寄存器,我们常用的 IO端口寄存器只有 4 个:CRL、CRH、IDR、ODR。CRL 和 CRH 控制着每个 IO 口的模式及输出速率。

stm32寄存器操作gpio_stm32单片机软件_https://bianchenghao6.com/blog__第1张

STM32 的 IO 口位配置表

stm32寄存器操作gpio_stm32单片机软件_https://bianchenghao6.com/blog__第2张

STM32 输出模式配置表

接下来我们看看端口低配置寄存器 CRL 的描述。

stm32寄存器操作gpio_stm32单片机软件_https://bianchenghao6.com/blog__第3张

端口低配置寄存器 CRL

CRH 的作用和 CRL 完全一样,只是 CRL 控制的是低 8 位输出口,而 CRH 控制的是高 8位输出口。

stm32寄存器操作gpio_stm32单片机软件_https://bianchenghao6.com/blog__第4张

端口高配置寄存器 CRH

IDR 是一个端口输入数据寄存器,只用了低 16 位。该寄存器为只读寄存器,并且只能以16 位的形式读出。要想知道某个 IO 口的状态,你只要读这个寄存器,再看某个位的状态就可以了。

stm32寄存器操作gpio_stm32单片机软件_https://bianchenghao6.com/blog__第5张

端口输入数据寄存器 IDR

ODR 是一个端口输出数据寄存器,也只用了低 16 位。该寄存器为可读写,从该寄存器读来的数据可以用于判断当前 IO 口的输出状态。而向该寄存器写数据,则可以控制某个 IO 口的输出电平。

stm32寄存器操作gpio_stm32单片机软件_https://bianchenghao6.com/blog__第6张

端口输出数据寄存器 ODR

比如我们要设置 PORTB 的PB.5为推挽输出的LED初始化配置。

void LED_Init(void)

{

RCC->APB2ENR|=1<<3; //首先使能 PORTB 时钟

GPIOB->CRL&=0XFF0FFFFF;//清掉PB.5原来的设置,同时也不影响其他位的设置

GPIOB->CRL|=0X00;//PB.5 推挽输出

GPIOB->ODR|=1<<5; //PB.5 输出高

}

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复