STM32寄存器编程——代码移植

本文介绍了STM32中如何通过寄存器配置IO口,包括设置引脚、方向及模式。以PA0为例,通过GPIOA的CRL寄存器进行设置,先将引脚设为PA0,再设定为输入模式并使用上/下拉输入。同时,文章提供了IO口模式的真值表,详细解释了不同位设置对应的功能。
摘要由CSDN通过智能技术生成

本篇文章只是移植别人例程的时候遇到的寄存器操作,并不是专门寄存器编程的文章。



(2021/11/14编辑)

1. IO设置

IO口的寄存器设置就两步骤

  1. 设置引脚
  2. 设置方向及模式

1.1 引脚的设置

  1. 每个IO口有两个寄存器CRH和CRL来设置IO口
  2. 每个引脚占用寄存器的4个位,32位的寄存器即控制8个引脚
    设置哪个引脚将其对应的4个位全置0即可
  3. 其中CRH寄存器用来设置IO口高8位的引脚(如:PA8–PA15),CRL寄存器用来设置IO口低8位的引脚(如:PA0–PA7)

示例:
以PA0为例设置寄存器,总共需要两步,首先设置引脚,然后设置方向及模式

GPIOA->CRL&=0xFFFFFFF0; //设置引脚为PA0
GPIOA->CRL|=8<<0; //设置引脚的方向与模式

1.2 方向及模式的设置

之前说了每个引脚由寄存器的4个位进行设置,我们给出如下的寄存器真值表。

1、0位:设置方向
0 0 :输入
0 1 :输出(最大速度10Mhz)
1 0 :输出(最大速度20Mhz)
1 1 :输出(最大速度50Mhz)

3、2位数:设置模式
当方向为输入时:
	0 0:模拟输入
	0 1:浮空输入
	1 0:上/下拉输入
	1 1:保留
当方向为输出时:
	0 0:通用推挽输出
	0 1:通用开漏输出
	1 0:复用推挽输出
	1 1:复用开漏输出

所以在我另外一篇DHT11传感器使用的文章中的引脚设定的意思为

#define DHT11_IO_IN()  {DHT11_GPIO_Port->CRL&=0XFFFFFFF0;DHT11_GPIO_Port->CRL|=8<<0;}
#define DHT11_IO_OUT() {DHT11_GPIO_Port->CRL&=0XFFFFFFF0;DHT11_GPIO_Port->CRL|=3<<0;}

以上的意思就是

  1. 设置引脚为DHT11_GPIO_Port的0号引脚
  2. 8的二进制代码为1000,对应上面的真值表即为:输入模式、上/下拉输入
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值