微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32 GPIO 相关寄存器(二)

STM32 GPIO 相关寄存器(二)

时间:11-29 来源:互联网 点击:
STM32单片机,有了端口才能和外界联系,学会了端口控制,才能更好地利用外设。建立和外界的联系,发挥自身的优点。

首先介绍一下基本的GPIO相关的寄存器

1,GPIOX_CRL 低8位端口配置寄存器

这个寄存器主要是对配置管脚是输入还是输出:

其中1)MODEy[1:0]主要是配置是输入端口还是输出端口的。配置为输出得时候还可以配置输出的管脚速度等级。

2)CNFy[1:0] 主要是两种形式,在端口配置输入的时候,即MODEy[1:0]位00(输入),用来配置输入的模式,主要是模拟输入,浮空输入,上拉模式和下拉模式。

3)CNFy[1:0]在端口配置为输出的时候,用来控制输入的模式。具体看手册吧。

总得来说,就是MODEy[1:0] 先配置管脚是输入还是输出,是输入就继续配置CNFy[1:0]来配置输出管脚的连接模式。要是输出的话,就继续配置MODEy[1:0]的管脚速度速度等级,之后再配置管脚的连接模式。上拉,下拉,推免,开漏等等。具体运用的时候看看手册就明白了。

2,GPIOX_CRH高8位端口配置寄存器

和GPIOX_CRH 完全一样,只是端口换成高8位了。不说了,看看就明白了!

3,GPIOX_ODR端口输出数据寄存器

学过AVR的都知道,输出的时候有输出数据寄存器,STM32也一样。思想COPY过来,就自然知道了GPIOX_ODR是做什么的了。不过要注意的是,这个玩意不能一个位一个位的去操作,还是51的简单啊,不过原子大哥已经把那个端口映射可操作位段,不明白,还是看自己的吧。一个GPIOA端口就16位,自然的32位的GPIOX_ODR 就只有低16位有效了,想输出什么就给这个寄存器赋值就OK了。

或者用GPIOA->ODR |=(1ODR &=(0

完成了这一步,我们就可以软件延时,控制输出流水灯了。前提是开启设备时钟哦。

4,GPIOX_IDR 端口输入数据寄存器

这个寄存器用到的前提是端口配置为输入模式时候。什么时候想读取值,就什么时候读取吧。大家都明白。

5,GPIOX_BSRR 端口位设置/清除寄存器

这个寄存器我用了一些,别的也不会。就感觉超级好用。用起来很方便。比如你端口配置好了。想PA5输出“1”。就GPIOA->BSRR |=(1<5);5是对应的哦。输出“0”,一样的

GPIO->BSRR |=(1<(5+16));为什么加16,你明白的。

6,GPIOX_BRR 端口位清除寄存器

晚上百度了一下,有了GPIOX_BSRR 为什么还要有GPIOX_BRR ,没看明白。有了拿来就用就对了。一样的和GPIOx_BSRR一样的用法。专门清除的。GPIOA->BRR |= (1

7,端口配置锁定寄存器GPIOX_LCKR,锁定了当然就不能修改了。保护了。避免不小心造成的失误。以后用到了在琢磨吧。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top