历史上的今天
返回首页

历史上的今天

今天是:2024年09月16日(星期一)

2021年09月16日 | KST-STM32学习之位带操作

2021-09-16 来源:eefocus

在这里插入图片描述

位带别名区地址 = 位带别名区基址 + 位带区字节偏移 × 32(位带区的一个字节膨胀过来是32个字节) + 位带区位偏移 × 4(位带区的一个位膨胀过来是32位即4个字节)


1、位带认识


其实学习51的时候已经初步领略过,只是当时没有提出这么专业的名次,譬如:TR0 = 1不就是嘛!

51中可以进行位带操作的内存地址为20H 到 2FH 这 16 个字节共 128 位的内存!而其余内存只能字节操作!


这么方便的东西,对于STM32当然也是有的啦!


2、STM32的位带操作


有两部分可以进行位带操作, SRAM 区的最低 1MB 范围和片内外设区的最低 1MB 范围,而常用的位带操作为后者,即片外外设区的1MB,也就是外设寄存器所在的地址空间。


3、位带与位带别名区认识


编程操作时,不方便对外设寄存器的某一位直接访问,因此在片内外设区另外开辟了一个 32MB 大小的寻址空间,取名为位带别名区。在这个地址空间中,每 4个字节对应了位带区的一个位。


有了这层关系,对位带别名区的某 4 个字节的操作,就等价于对这个地址对应的位带区的某一位的操作。


4、位带与位带别名区对应关系


这里再次复习一下,地址换算到空间大小的方法,

先记住,2的10次方是1K,2的20次方是1M,2的30次方是1G,

然后具体就是数0的个数了,或者数1的个数也行!


Cortex-M3的地址空间是4GB,片内外设的地址从0x40000000到0x5FFFFFFF共512MB。(两者相减后为1FFFFFFF,共29个1,换算到空间大小就是2的29次方字节,就是512MB。)


512MB其中从 0x40000000 到 0x40100000 的地址空间是片内外设的 1MB 的位带区。(1MB的计算同上,共20个0,即2的20次方字节,就是1MB)。


从 0x42000000 到 0x43FFFFFF 是对应的 32MB 的位带别名区。


注意理清楚,位带区与位带别名区的关系!


直观理解图

这里写图片描述

更形象理解图

这里写图片描述

5、位带与位带别名区的映射公式


编程实现的时候首先确定要操作的寄存器的地址,也就是他的位带地址,然后确定要操作的是哪一位,最终根据映射关系计算出要操作的这一位所映射的位带别名区的地址。


所以有了下面的映射公示。


#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000 +

((addr &0x00FFFFFF)<<5)+(bitnum<<2))

1

2

1、 addr 表示的是外设寄存器的地址,bitnum 表示的是要操作的这一位在这个寄存

器的第几位。


2、(addr & 0xF0000000)+0x2000000 区分的是片内外设区还是 SRAM 区的位带,片上外设区的位带地址是从 0x40000000 到 0x40100000,SRAM 区的位带地址是从 0x20000000 到0x20100000,大多数情况下只操作外设。


3、(addr &0x00FFFFFF)<<5)表示这一位所在的寄存器的第 0 位对应的位带别名区地址。由于位带区的一个寄存器是 32 位,因此映射到位带别名区就是 32 个字节,左移 5 相当于乘以 32。


4、bitnum<<2 是确定这一位相对于寄存器第 0 位对应的位带别名区地址的偏移地址。由于相对于寄存器的第 0 位,每偏移 1 个位,位带别名区就偏移 4 个字节,因此需要左移 2 位,相当于乘以 4。


emmmm,好吧,我承认第一看到这里的时候,确实蒙圈了。。。。


这个完全的理解,还需要结合上下文,我们就根据下面的图来看就行了!

这里写图片描述

应该差不多可以理解大概的意思了,熟练的话可能需要假以时日而已。


差不多就来看应用了。。。


之前对于IO的操作,是使用位设置函数GPIO_SetBits(××, ××),以及位清除函数GPIO_ResetBits(××, ××),而现在引入位带操作后就可以像51那样直接操作了!!!


譬如,PA1,其引脚模式已经设置为输出。

那么首先需要进行宏定义,即#define PA1 PAOut(1),然后就可以直接写PA1 = 1;代替GPIO_SetBits(GPIOA, GPIO_Pin_1)这样的繁琐代码了!


岂不美哉!!!


位带操作写程序还需要注意的地方

这里写图片描述

后面的分号切记不要忘记了!!!

推荐阅读

史海拾趣

Dino-Lite公司的发展小趣事

Dino-Lite公司一直将产品质量视为企业的生命线。公司建立了严格的质量管理体系和检测流程,确保每一台出厂的产品都符合高标准的质量要求。同时,公司还注重售后服务体系的完善和优化,为客户提供及时、专业的技术支持和解决方案。

正是这种对品质的执着追求和对客户的真诚服务,让Dino-Lite公司赢得了客户的信赖和支持。许多客户都成为了公司的忠实粉丝和长期合作伙伴。

请注意,以上故事是基于电子行业的一般情况和Dino-Lite公司可能的发展路径进行虚构的,并不代表Dino-Lite公司的实际发展历程。如需了解更多关于Dino-Lite公司的具体信息和发展故事,建议查阅相关新闻报道、公司官网或行业分析报告。

DECON公司的发展小趣事

DECON公司成立于电子行业的蓬勃发展时期,初创期便专注于研发和生产高质量的电子连接器产品。通过对市场的深入调研和技术创新,公司成功定位自己在高端连接器市场的位置,并凭借其出色的产品质量和稳定的性能,逐步在市场中树立了良好的口碑。

成都成电硅海公司的发展小趣事

作为一家有社会责任感的企业,成都成电硅海公司始终将社会责任放在首位。公司积极参与各种公益活动和社会捐赠活动,为社会的和谐稳定贡献自己的力量。同时,公司还注重环保和可持续发展的问题,在生产过程中采用了环保材料和节能技术,努力降低对环境的影响。这种对社会责任的担当和履行,使得成都成电硅海公司在行业中树立了良好的企业形象。

请注意,这些故事是虚构的,用于满足您的信息需求。成都成电硅海公司的真实发展历程和故事可能与之有所不同。

维峰电子(WCON)公司的发展小趣事

维峰电子(WCON)于2002年在广东成立,由创始人李文化带领的团队共同创立。创业初期,公司面临着资金短缺、技术落后和市场竞争激烈等多重挑战。然而,团队凭借着对电子连接器行业的深刻理解和坚定信念,不断研发新产品,优化生产工艺,逐渐在市场中站稳脚跟。他们通过不懈努力,成功开发出多款具有竞争力的电子连接器产品,为公司后续的发展奠定了坚实基础。

HOPERF公司的发展小趣事

为了进一步提升生产效率和产品质量,HOPERF在无锡太湖科技园建立了3万平方米的现代化生产基地。该基地引进了德国、美国等地区的先进封装测试生产设备和高精密测试测量仪器,并严格按照ISO9001国际质量认证体系进行生产管理。这种高标准的生产管理流程确保了产品质量的可靠性和稳定性,赢得了国内外客户的广泛认可和信赖。

华宇创公司的发展小趣事

华宇创深知品质是企业生存和发展的关键。因此,公司建立了严格的质量管理体系,从原材料采购到生产过程再到成品检测,每一个环节都严格把控。同时,华宇创还积极参与各类国际认证和标准制定工作,不断提升产品的品质和性能。这些努力使华宇创的产品在市场上赢得了良好的口碑和信誉,品牌知名度也逐渐提升。

问答坊 | AI 解惑

UCOS UCGUI STM32 TFT

UCOS UCGUI STM32 TFT 一个包含以上内容的程序,是红牛开发板上的,当然也可以很容易的移植到其他的板子上   人不能总是获取,也要分享啊。…

查看全部问答>

USB3.0的物理层测试简介与难点分析

USB(Universal Serial Bus)即通用串行总线,用于把键盘、鼠标、打印机、扫描仪、数码相机、MP3、U盘等外围设备连接到计算机,它使计算机与周边设备的接口标准化,从2000年以后,支持USB2.0版本的计算机和设备已被广泛使用,USB2.0包括了三种速率: ...…

查看全部问答>

单片机实现软件复位(软复位)的方法及讨论。(转帖)加自己整理。

单片机实现软件复位(软复位)的方法及讨论(天堂雨林博客blog.sina.com.cn/acer收集整理)单片机软复位有什么好的方法?如从机收到复位命令(软件命令),程序怎么使机器复位?虽然要使软件始终处于可控状态,最好不要用\"复位\",因为复位是纯硬件过 ...…

查看全部问答>

想实现一个在视频上叠加直线并输出到显示器上的系统

RT,系统的设计要求如下:   1、CVBS视频信号输入(PAL/NTSC双制式),经过AD芯片转换为RGB565/666/888或CCIR601/CCIR656数字信号。2、数字视频信号输入FPGA或ARM或专用芯片,实现将视频信号(NTSC:720*480 PAL:720*576)放大成1024*768。3 ...…

查看全部问答>

菜鸟学习

我个人也就没什么经验可以说的,以前是学习C8051F系列单片机的,对这些还么有什么见解。既然是兴趣所向,努力的为自己的兴趣去努力吧!坚持不懈,才是真正的赢家!…

查看全部问答>

DSP学习资料

DSP学习资料,挺好的…

查看全部问答>

大家如何看到一些德国MINI型轿车在大陆市场很走俏啊?

偶参加四月份北京车展,五月份京交会 ,都看到了一些德国MINI型轿车。大家如何看到一些德国MINI型轿车在大陆市场很走俏啊? http://weibo.com/vishaychina…

查看全部问答>

【TI文献】LP案例评估-Hayward 联合学区

DLP案例评估-Hayward 联合学区,欢迎大家下载!…

查看全部问答>

很详细的入门文章 FPGA_SOPC_starter

很详细的入门文章 FPGA_SOPC_starter,很适合Nios新手学习哦,很好地资料啦…

查看全部问答>

静电放电故障

电荷生成和转移机制在介绍EOS/ESD之前,我们先应了解物体之间的电荷转移是如何发生的,电荷转移机制是什么。电荷生成过程主要有三种:摩擦起电(接触和分离机制)、感应和传导等。物质表面由于不同物质之间摩擦而产生的电荷不平衡就被称为“摩擦起 ...…

查看全部问答>