STM32单片机的CRL和CRH寄存器

本文详细介绍了STM32单片机中IO端口的配置,包括输入和输出模式的设置。通过操作GPIO的CRL和CRH寄存器,利用位操作实现PA0、PA1和PA2的输入(上/下拉)和输出(通用推挽50MHz)模式。具体步骤包括使用‘与’和‘或’运算来修改寄存器的特定位,以达到所需的端口功能。
摘要由CSDN通过智能技术生成

问题:

在这里插入图片描述
当32单片机进行引脚分配时,需要了解该程序的功能。

基础知识:

STM32 的每个 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 口的模式及输出速率。

其中CRL配置规则

在这里插入图片描述

其中CRH配置规则

解释:

1、输入

GPIOA->CRL&=0XFFFFFFF0;GPIOA->CRL|=8<<0;

①前半段GPIOA->CRL&=0XFFFFFFF0;

利用“与”运算,把这个位清0,同时不影响其他的位的设置。

此时把PA0设置成模拟输入模式

②后半段GPIOA->CRL|=8<<0;

意思就是将8(1000)左移0位(不移位),然后再与GPIOC->CRL进行运算。

此时把PA0设置成上拉/下拉输入模式

2、输出

GPIOA->CRL&=0XFFFFFFF0;GPIOA->CRL|=3<<0;

①前半段GPIOA->CRL&=0XFFFFFFF0;

利用“与”运算,把这个位清0,同时不影响其他的位的设置。

此时把PA0设置成模拟输入模式

②后半段GPIOA->CRL|=3<<0;

意思就是将3(0011)左移0位(不移位),然后再与GPIOC->CRL进行运算。

此时把PA0设置成通用推挽输出模式

扩展

PA1为输入(上/下拉)
GPIOA->CRL&=0XFFFFFF0F;GPIOA->CRL|=8<<4;
PA2为输入(上/下拉)
GPIOA->CRL&=0XFFFFF0FF;GPIOA->CRL|=8<<8;
PA1为输出(通用推挽输出50MHZ)
GPIOA->CRL&=0XFFFFFF0F;GPIOA->CRL|=3<<4;
PA2为输出(通用推挽输出50MHZ)
GPIOA->CRL&=0XFFFFF0FF;GPIOA->CRL|=3<<8;

以此类推。

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值