首页 > 编程知识 正文

MDK-ARM,cortex m0 m3 区别

时间:2023-05-04 05:53:08 阅读:39006 作者:3978

bit-band是一种对Cortex-M3内核中的一个区域进行位与字映射的机制,对IO控制LED这样的位操作,与传递的c语言位操作相比提供了更大的方便。

位带区域是将存储器别名区域一个字映射到位带区域的一位的区域,在处理器的存储器映射中包含SRAM和周边存储区域中最低1MB的两个位带区域.

下图是处理器的地址空间映射,包含(位绑定区域映射)

Cortex-M3内存映射有两个32MB别名空间,它们映射到两个1MB位-带区域:

对32MB SRAM别名区域的访问映射到对1MB SRAM bit-band区域的访问,对32MB外围设备别名区域的访问映射到对1MB外围设备bit-band区域的访问

映射表达式演示如何将别名区域中的单词与位-带区域中的对应位或目标位相关联。 地图表达式为以下:

bit _ word _ offset=(byte _ offset x32 ) (bit_number x 4 ) )。

bit _ word _ addr=bit _ band _ base bit _ word _ offset

这里:

Bit_word_offset表示bit-band存储中目标比特的位置Bit_word_addr表示映射到别名存储中的目标比特的字的地址Bit_band_base表示

下图显示了SRAM bit-band别名区域和SRAM bit-band区域之间的bit-band映射的示例:

地址0x23FFFFE0的另一个名称映射到0x 200 fffff bit-band字节中的位0:

0x 23 ffff E0=0x 22000000 (0x ffff * 32 )0*4

地址0x23FFFFFC的另一个名称映射到0x200FFFFF的bit-band字节位7:

0x 23 ffffc=0x 22000000 (0x fffff * 32 )7*4

地址0x220000000的另一个名称映射到0x20000000字节的位0:

0x22000000=0x22000000(0*32 )0*4

地址0x220001C的另一个名称映射到0x 2000000 bit-band字节中的位0:

0x2200001c=0x22000000(0*32 )7*4

向别名区域写入字的作用与在bit-band区域的目标位上读取-修改-写入相同。

写入别名区域的字的位0决定写入bit-band区域的目标位的值。 将比特0为1的值写入别名区域意味着将1写入比特-band比特,将比特0为0的值写入别名区域意味着将0写入比特-band比特。

另一个名称的位置[31:1]在bit-band位置不起作用。 对0x01的写入具有与对0xFF的写入相同的效果,对0x00的写入具有与对0x0E的写入相同的效果。

读取别名区域中的一个字符将返回0x01或0x00。0x01表示位-带区域的目标位,0x00表示目标位已清除。 位[31:1]为0。

注:对于大端格式,对bit-band别名区域的访问必须是字节。 访问值无法预测。

以下是:宏(来自Atmel ASF的bit-banding Example ),根据bit-band区域的地址和目标位计算bit-band alias region贴图的相应字节

/* *briefcalculatebitbandaliasaddress.* * calculatethebitbandaliasaddressandreturnapointeraddresstoword.*paramadadaddared parambitthebitpositionofbitbandingbit.*caller graph */# definebitband _ # definebitband _ } bit () (卷安装330 )

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。