秉火429笔记之七位带操作

发布者:dadigt最新更新时间:2019-09-12 来源: eefocus关键字:秉火  位带操作  关键字 手机看文章 扫描二维码
随时随地手机看文章

位带概况

位操作,简单的理解,可以单独的对一个比特位读和写,51单片机非常常见。类如,51单片机通过关键字sbit来实现位定义,STM32并没有这个关键字,而是通过访问位带别名区(Bit band alias)来实现的。


通过查看《M4内核参考手册》3.4 system address map 可知下图:

M4中2个区域实现了位带,其一为SRAM的最低1MB空间,其二为外设区域的最低1MB空间。


参考3.7 Bit-banding 可知,位带区的一个比特经过膨胀后,虽然变大到4个字节,但是还是LSB才有效。有人会问这不是浪费空间吗,要知道F429的系统总线是32位的,按照4个字节访问的时候是最快的,所以膨胀成4个字节来访问是最高效的。通过指针的形式访问位带别名区地址从而达到操作位带区比特位的效果。


// 把“位带地址+位序号”转换成别名地址的宏

#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x02000000+((addr & 0x000FFFFF)<<5)+(bitnum<<2))

 

// 把一个地址转换成一个指针

#define MEM_ADDR(addr) *((volatile unsigned long *)(addr))

 

// 把位带别名区地址转换成指针

#define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum))

关键字:秉火  位带操作  关键字 引用地址:秉火429笔记之七位带操作

上一篇:秉火429笔记之五控制RGB彩灯
下一篇:秉火429笔记之四启动文件分析

推荐阅读最新更新时间:2024-11-07 13:36

keil 中的重入问题解决
keil c 中可以用关键字 reentrant 定义, 如:void fun(void) reentrant{} 但函数中不可以使用BOOL变量,以为KEIL默认 将所有变量定位到外部RAM的最高处,而外部RAM不可以位寻址。 另外如果你的外部RAM不足64K(0XFFFF),你还的更改KEIL系统文件STARTUP.A51中 XBPSTACKTOP EQU 0FFFFH+1;这一行。 例如你的外部RAM是0-0x7fff, 则该为: XBPSTACKTOP EQU 07FFFH+1;
[单片机]
STM32 操作
Cortex-M3 支持了位操作后,可以使用普通的加载/存储指令来对单一的比特进行读写。   在 CM3 支持的位带中,有两个区中实现了位带。   其中一个是 SRAM 区的最低 1MB 范围, 0x20000000 ‐ 0x200FFFFF(SRAM 区中的最低 1MB);   第二个则是片内外设区的最低 1MB范围, 0x40000000 ‐ 0x400FFFFF(片上外设区中的最低 1MB)。   这两个区中的地址除了可以像普通的 RAM 一样使用外,它们还都有自己的 位带别名区 ,位带别名区把每个比特膨胀成一个 32 位的字。当你通过位带别名区访问这些字时,就可以达到访问原始比特的目的。   CM3 使用如下术语来表
[单片机]
名家观点/4 明年ICT产业关键字
    9月的德国柏林电子展IFA落幕,苹果发表新手机iPhone 5s/5c,英特尔在开发者论坛喊出「超行动时代」新战略。一系列重大事件后,明年资通讯(ICT)科技产业大趋势已渐明朗,简言之:「4」为明年度的关键字。 2014年科技大趋势:4G、4K、4核、4屏、14奈米、F4。 4G:从4G终端、网路、平台、内容与服务串成的4G生态链,将是明年第一主角。4G行动网路全球普及,4G智慧手机成为当红产品,以高价与平价双主轴出击,4G网通产品如4G接收转播基台等成为最佳配角。 4K终端将是明年最吸睛的产品。IFA最热门题材都与4K息息相关,4K电视冲到110寸、4K手机由宏碁 Liquid S2领衔推出且众多厂商共襄盛举、4K平板电脑
[手机便携]
STM32总结一 STM32三种点亮LED灯方式的不同之处
STM32点亮LED灯有很多种方法。 第一种是操作寄存器来点亮LED灯,(以GPIOC的第一个LED为例)操作的方法是首先在中文手册,首先要声明的是,手册里面看到的地址,都是字节,表示第多少多少个字节,然后这个数字对应一个字节位,所以每一个32位的寄存器占四个字节,找到block2(这个是外设区,所有的外设地址都在这个区)的基地址,然后加上第一段偏移地址,就越过APB1总线的内存区,到达了APB2总线这个区的基地址。然后再加上相对于APB2的偏移地址就可以定位出某个特定外设的基地址,这里所指的是GPIOC端口的基地址,然后再在这个端口外设基地址的基础上,加上相应的偏移地址,就可以定义出这个端口的寄存器地址,这些寄存器是紧紧的挨
[单片机]
STM32总结一 STM32三种点亮LED灯方式的不同之处
STM32操作详解
一. Cortex-M3存储器映射 存储区最开始的1GB空间分别为code(代码)区和SRAM区,Code区使用经过针对优化的I-Code总线来连接,同理,SRAM区使用D-Code总线连接,虽然SRAM也可以用来转载和执行代码,但这样做会使CPU不得不通过系统总线来取指令,产生额外CPU等待周期,因此在SRAM中运行代码会比代码区的片上Flash中运行要缓慢。 接下来的0.5GB存储空间是片上外设区,微控制器的所有用户设备的基地址都落在这个区域内,片上外设区和SRAM区的起始1MB区域可以用来使用位带技术实现位寻址,由于STM32所有SRAM和外设都位于这个区域,因此STM32所有存储区都可以用“字(Word)”或“位(bi
[单片机]
你了解C语言中的关键字volatile吗?
我们在学习C语言的32个关键字时,大家都不太注意volatile这个关键字,volatile是一个类型修饰符。volatile的中文意思是“易变的”。那么在程序中我们在什么情况下才使用他呢?我们在分析内核时经常看到这个关键字的使用。举例如下: view plaincopy to clipboardprint? 1.struct task_struct { 2.volatile long state; /* -1 unrunnable, 0 runnable, 0 stopped */ 3.void *stack; 4.atomic_t usage; 5.unsigned int flags; /* per proce
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved