欢迎来到天天文库
浏览记录
ID:45099533
大小:47.00 KB
页数:3页
时间:2019-11-09
《STM32的位段、位带别名区》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、STM32的BitBandingBitBanding功能是相对于以往能够进行bit操作的单片机而言的。通过BitBanding功能可以像51单片机的bit操作一样。MCS51可以简单的将P1口的第2位独立操作: P1.2=0;P1.2=1 ; 就是这样把P1口的第三个脚(BIT2)置0或置1了。而现在STM32的位段、位带别名区就为了实现这样的功能。只不过他是为需要操作的地址(1字节)的每一个位(共8位)起个别名,分别对应别名区的一个字(word)。也就是别名区的大小是BitBand区的32倍。这样,对32MB的别名区地址的操作,就是对相应BitBand区的位的操作。注意:别名
2、字的位[31:1]在bit-band位上不起作用。写入0x01与写入0xFF的效果相同。写入0x00与写入0x0E的效果相同。如图是跟BitBanding有关系的存储器结构: STM32有两个BitBand区域,分别是:0x20000000——0x20100000:该地址是STM32的SRAM低1MB的地址区域;0x40000000——0x40100000:该地址是STM32的Peripherals低1MB的地址区域; 另外,STM32还有两个对应的BitBand区域的别名区,分别是:0x22000000——0x23FFFFFF:共32MB的空间,对应相应1MB的每一个位;0x
3、42000000——0x43FFFFFF:共32MB的空间,对应相应1MB的每一个位; 接下来的问题是如何确定BitBand区字节的位所对应的那个别名区的字(word)。BitBand区和别名区是一一对应的,具体的公式为:bit_word_addr=bit_band_base+(byte_offset×32)+(bit_number×4);bit_band_base:32MB别名区首地址;byte_offset:1MB位段区偏移量,即为bit-band区中包含目标位的字节的编号;bit_number:位段中目标位的位位置(0-7); 注意:别名字的位[31:1]在bit-ban
4、d位上不起作用。写入0x01与写入0xFF的效果相同。写入0x00与写入0x0E的效果相同。 举个例子(通过别名区访问地址):1、想操作SRAM中BitBand区地址为0x20000018字节的第2位计算别名区对应子地址:0x22000000+(18*32)+(2*4)=0x22000248所以,对0x22000248地址的操作,就是对0x20000018字节的第2位进行操作; 2、想操作Peripherals中BitBand区地址为0x40000021字节的第7位(可能是一个功能寄存器);计算别名区对应子地址:0x42000000+(21*32)+(7*4)=0x420002
5、BC所以,对0x420002BC的操作,就是对0x40000021字节的第7位进行操作;
此文档下载收益归作者所有