STM32的GPIO端口寄存器配置

每组GPIO端口有7个寄存器。包括:

1.两个32位配置寄存器(GPIOx_CRL, GPIOx_CRH)

2.两个32位数据寄存器(GPIOx_IDR, GPIOx_ODR)

3.一个32位置位/复位寄存器(GPIOx_BSRR)

4.一个16位复位寄存器(GPIOx_BRR)

5.一个32位锁定寄存器(GPIOx_LCKR)

这7个寄存器适当配置,可以控制一组GPIO的16个IO口。

 

为什么16个IO口需要两个32位的配置寄存器呢?CRL/CRH每四个位控制一个IO口,GPIOx_CRL共32位可控制0-7口(4*8),GPIOx_CRH共32位可控制8-15口(4*8)

1端口配置低寄存器 (GPIOx_CRL) (x=A..E)
用来配置GPIO端口的输入输出模式,具体配置方式见下图,表格中表示相同的8组配置,分别对应一个IO口。

2端口配置高寄存器 (GPIOx_CRH) (x=A..E)
端口配置高寄存器GPIOx_CRH与端口配置低寄存器GPIOx_CRL配置方式相同,只不过GPIOx_CRH配置每组GPIO的高8口,GPIOx_CRL配置每组GPIO的低8口。 

 

3端口输入数据寄存器 (GPIOx_IDR) (x=A..E)
GPIOx_IDR寄存器的高16位保留,始终读为0、低16位每个位控制该组一个IO,刚好16个,对应IO口输入电平。

4端口输出数据寄存器 (GPIOx_ODR) (x=A..E)
GPIOx_ODR寄存器的高16位保留,始终读为0、低16位每个位控制该组一个IO,刚好16个,对应IO口输出电平。每个位控制一个IO口的输出电平高或者低。同时 GPIOx_ODR可以配置上下拉模式(此处我也没搞懂,先mark)

 

5端口位设置 / 清除寄存器 (GPIOx_BSRR) (x=A..E)
当GPIOx_BSRR的低16位对应设置为1时,对应的IO口输出为高电平;对应设置为0时,对应IO口不产生任何的影响,此处所说的影响是指对GPIOx_ODR寄存器的影响,也就是说通过设置GPIOx_BSRR间接设置GPIOx_ODR。高16位的工作方式与低16位刚好相反。

 

6端口位清除寄存器 (GPIOx_BRR) (x=A..E)
作用同GPIO_BSRR的高16位。

 

7端口配置锁定寄存器 (GPIOx_LCKR) (x=A..E)
当执行正确的写序列设置了位 16(LCKK) 时,该寄存器用来锁定端口位的配置。位 [15:0] 用于锁
GPIO 端口的配置。在规定的写入操作期间,不能改变 LCKP[15:0] 。当对相应的端口位执行了
LOCK 序列后,在下次系统复位之前将不能再更改端口位的配置。
每个锁定位锁定控制寄存器 (CRL, CRH) 中相应的 4 个位。

  • 10
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值