Cortex-M3中的位帶操作bit band

       Cortex-M3內核的ARM芯片,支持位帶(bit band)操作。位帶操作就是使用普通的加載/存儲指令來對單一的比特進行讀寫。在CM3中,有兩個區中實現了位帶。其中一個是SRAM區的最低1MB範圍,第二個則是片內外設區的最低1MB範圍。這兩個區中的地址除了可以像普通的RAM一樣使用外,它們還都有自己的“位帶別名區”,位帶別名區把每個比特“膨脹”成一個32 位的字。當你通過位帶別名區訪問這些字時,就可以達到訪問原始比特的目的。

// 參閱sys.h文件

// 把“位帶地址+位序號”轉換成別名地址的宏
#define BITBAND(addr, bitnum)    ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2)) 

// 把該地址轉換成一個指針
#define MEM_ADDR(addr)           *((volatile unsigned long  *)(addr))

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章