STM32 GPIOx_CRL/GPIOx_CRH 寄存器

博客介绍了GPIOx_CRL/GPIOx_CRH寄存器对GPIO进行端口设置的方法,每个寄存器32位,每4位设置1个引脚功能,两寄存器可完成对GPIO0 - 15的设定。还给出设置PB11引脚为开漏输出模式的步骤及指令,同时列举了SDA_IN和SDA_OUT的定义示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GPIOx_CRL/GPIOx_CRH (x:A~F)寄存器用来对GPIO进行端口设置,如:设置GPIO为输入模式或输出模式。每个寄存器含有32位,每4位用来设置1个GPIO引脚功能。GPIOx_CRL/GPIOx_CRH 两个寄存器共含有64位,因此可完成对GPIO0~15的设定。其中GPIOx_CRL用于设置GPIO0~7引脚,GPIOx_CRH用于设置GPIO8~15引脚。

例如设置PB11引脚为开漏输出模式,输出频率为10MHz:

步骤:

  1. 因PB11属于GPIO8~15之间,所以,需通过GPIOB_CRH寄存器才能实现对PB11的设置。
  2. 因GPIOB_CRH寄存器中每4位决定一个GPIO工作模式,所以,需通过设置GPIOB_CRH的第12~15位。
  3. 因PB11引脚“输出模式”,从图中②可以看出须把GPIOB_CRH寄存器的MODE11[1:0]设置为01。
  4. 根据MODE[1:0]的值为01可知,CNF11[1:0]需要选择“在输出模式(MODE[1:0]>00)”中选择需要设置的值。
  5. 因PB11须设置为“通用开漏模式”,故CNF11[1:0]需设置为01。
  6. 最终设置指令为:

GPIOB->CRH&=0XFFFF0FFF;  //清除GPIOB->CRH的第12~15位。

GPIOB->CRH|=3<<12; //设置GPIOB->CRH的第12~15位为0101(10MHz开漏输出模式)。

STM32F103---GPIOx_CRL/GPIOx_CRH <wbr>寄存器学习

转发链接:http://blog.sina.com.cn/s/blog_eaef243d0102wmt6.h

举例:#define SDA_IN()  {GPIOB->CRH&=0XFF0FFFFF;GPIOB->CRL|=(u32)8<<20;} //  1000上下拉输入
#define SDA_OUT() {GPIOB->CRH&=0XFF0FFFFF;GPIOB->CRL|=(u32)3<<20;} //0011 通用推完输出 PB13 50M

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值