STM32第13章 GPIO位-位带操作

时间:2024.10.21

TIPS:参考资料在《CM3 权威指南 CnR2》存储器系统章节

一、学习内容

位带操作--GPIO输入与输出

1.知识回顾

在前面的GPIO输出点亮LED中,虽然使用固件库编程,但底层逻辑还是对寄存器操作

GPIOB->ODR |= 0<<0;

51单片机的操作:P0=0xFE;       //总线操作

                            sbit LED1=P0^0

                             LED1 =0;        //位操作

2.位带简介

位操作

可以单独地对一个比特位进行读和写。

在51单片机中利用关键字sbit来实现位定义

在STM32中没有这样的关键字,而是通过访问位带别名区来实现的

理解

位带操作就是对寄存器里的单独的一个位操作,此时我们进行操作需要地址,位带操作就是对寄存器里的每一个位都重新在位带别名区里找了一个地址,而且这个地址(一个位)会重新膨胀成一个字(四个字节),但是它在进行操作的时候,只有最低位是有效的

原因

STM32的总线都是32位的,当它按照32位来进行操作时效率是最高的

总结

寄存器的每一个位都对于一个地址,我们对地址进行操作,那么就可以单独地实现对这个位的读和写,此时不影响其它位

位带区和位带别名区示意图

TIPS

在STM32里,片上外设片上SRAM可以实现位带操作,但并不是所有的都可以,它有一个地址的限制。

片上外设片上SRAM均有1MB的位带区,位带区里面的每一个位都可以通过位带别名区的地址来访问。位带区的一个位,对应位带别名区的四个字节。

3.位带区和位带别名区地址转换

地址转换

统一地址:

问题:

addr:要操作的位所在寄存器的地址,怎么查询到?

解决:

参考手册-2存储器和总线架构-2.3存储器映像

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值