stm32点亮LED的有关寄存器配置CRL、CRH、IDR、ODR

1、先了解io口
32的io口可以由软件配置寄存器为8种模式:

1、输入浮空   5、开漏输出   
2、输入上拉   6、推挽输出
3、输入下拉   7、推挽式复用功能
4、模拟输入   8、开漏复用功能

单io口寄存器必须按32位字被访问

32 的每个 io端口 都有 7 个寄存器控制:

两个32位 端口配置 寄存器-- CRL和CRH
两个32位 数据 寄存器-- IDR和ODR
一个32位 置位/复位 寄存器-- BSRR
一个16位 复位 寄存器-- BRR
一个32位 锁存 寄存器-- LCKR

常用的4个寄存器-- CRL、CRH、IDR、ODR

2、来看CRL和CEH:
CRL 和 CRH 控制着每个 IO 口的模式及输出速率

io口配置表:
io口配置表
输出模式配置:
输出模式配置
端口低配置寄存器 CRL 的描述:
端口低配置寄存器 CRL
此寄存器的复位值:0x4444 4444
CRL 控制着那几个IO端口(A–G)的低 8 位端口的模式,
例如:A0—A7由CRL控制,A8—A15由CRH控制
每个IO口占用CRL的4个位,高两位为CNFy[1:0],低两位为MODE

下面有几个配置模式常用的值:

-  0X0 表示模拟输入模式(ADC 用)
-  0X3 表示推挽输出模式(做输出口用,50M 速率)
-  0X8 表示上/下拉输入模式(做输入口用)
-  0XB 表示复用输出(使用 IO 口的第二功能,50M 速率)

举例:将A端口的第11位设置为上拉输入,12位设置为推挽输出
11位和12位属于高8位,由CRH控制,然后一个引脚占4位 11=1000 12=1110 根据上表来配置的

代码的写法:

GPIOC->CRH &= 0XFFF00FFF;  //清除原来的设置
GPIOC->CRH |= 0X00038000;   //配置11输入  12输出
GPIOC->ODR = 1<<11;  //11上拉

3、下面到 IDR 寄存器
IDR 是一个端口输入 数据寄存器,只用了低 16 位。该寄存器为 只读 寄存器,并且只能以 16 位的形式读出
在这里插入图片描述
4、ODR 是一个端口输出数据寄存器
也只用了低 16 位。该寄存器为可 读写,从该寄存器读出来的数据可以用于判断当前 IO 口的输出状态。而向该寄存器写数据,则可以控制某个 IO 口的输出电平。该寄存器的各位描述如下图所示
在这里插入图片描述
配置好这几个寄存器,就可以让32的IO口来控制LED灯了

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漏洞百出

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值