stm32之位带操作
来源:互联网 发布:淘宝地区分析 编辑:程序博客网 时间:2024/05/22 15:34
stm32相对于8位微控制CPU来说实在强大的不得了,依稀记得51控制I/O空的时候是:sbit LED1 = P0^0;然而我们在32却没有想“sbit”类似的关键字进行I/O的某位进行操作。于是引入了“位带操作的概念”,什么事位带操作???标准的定义是:通过访问位带别名区来实现,即通过将每个比特位膨胀成一个32位字,当访问这些字的时候就达到了访问“位”的目的,这就是位带操作!!!是不是很抽象?首先我们先看看寄存器的图:
红色箭头位置表示:stm32支持位带操作的区域是 SRAM 区的最低 1MB 范围(APB1/2 ,AHB外设)和片内外设区的最低 1MB范围。
我们以点亮一盏灯LED为例,则查到寄存器,得知是GPIOC,该地址C口的输出寄存器地址是0x4001100c,属于片内外区的范围(0x40000000~0x400ffffff),一个GPIO端口32为,如下图所示:
上述所知,LED的输出控制寄存器的地址是0x4001100c ,假设我们要访问第2个LED,则是GPIOC^1引脚,也就是GPIOC bit[1],
stm32访问的最小单元是地址,所以无发访问到GPIOC bit[1],这个时候,我们要通过位带访问别名区来控制GPIOC bit[1],,也就是起始地为
0x42000000 大小为32Mb的单元。这时我们在想想概念,通过访问位带别名区来实现,即通过将每个比特位膨胀成一个32位字,当访问这
些字的时候就达到了访问“位”的目的。所以我们理解为把地址为0x4001100c的8个bit映射到地址为0x42000000 大小为32Mb的单元。并且每个bit扩展为32位,如图所示:
总结:
1.为什没不可以直接访问位?
答:访问的最小单元是“字节”,而不是位,其中也没有“sbit”类似的关键字,无法访问到具体的地址里的某个BIT
2.怎么解决?
说白了,就是把某危楼(片内外设区)的一家(一个地址)8口人(8bit)搬到一个另地方(位带别名区),并且,每个人(每一位bit)住上了更大的房子(变成32bit)
阅读全文
0 0
- stm32之位带操作
- stm32 位带操作
- STM32位带操作
- STM32位带操作
- stm32位带操作
- STM32位带操作详解
- STM32的位带操作
- STM32位带操作举例
- stm32位带操作的理解
- STM32位带操作公式详解
- STM32 Contex-M的位带操作
- STM32位带操作----待更
- Stm32位带操作分析-浅显易懂
- STM32的位带操作分析
- 位带操作在stm32中的C语言实现
- 位带操作
- stmf103 位带操作
- STM32F2位带操作
- 想让字体更有吸引力?来学下字体设计的断舍离!
- spring cloud微服务分布式云架构
- iptable详解
- MAC下Linux配置JDK
- 辍学程序员改变世界,这个长的像马云的90后真要击败扎克伯格了……
- stm32之位带操作
- 趣图丨当有人跟你说开发这个功能很简单时,你应该有的反应!
- webSocket和http关系、WebSocket原理
- java 排序
- log4j详解+例子
- 最完整的Chrome浏览器客户端调试大全
- struts2国际化以及后端验证
- 第十四章 数据结构的扩充
- js获取日期、时间、日期常用方法、时间计算并格式化和实现电子表