cortex-m3核心的arm晶元,支援位帶(bit band)操作。位帶操作就是使用普通的載入/儲存指令來對單一的位元進行讀寫。在cm3中,有兩個區中實現了位帶。其中乙個是sram區的最低1mb範圍,第二個則是片內外設區的最低1mb範圍。這兩個區中的位址除了可以像普通的ram一樣使用外,它們還都有自己的「位帶別名區」,位帶別名區把每個位元「膨脹」成乙個32 位的字。當你通過位帶別名區訪問這些字時,就可以達到訪問原始位元的目的。
// 參閱sys.**件
// 把「位帶位址+位序號」轉換成別名位址的巨集
#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))
Cortex M3的整體風景
一 流水線 1 cortex cm3處理器使用乙個3級流水線,流水線的3級分別是 取指,解碼和執行 2 當執行的指令大多數是16位時,處理器會每隔乙個週期做一次取指。當執行到跳轉指令時需要清洗流水線,處理器會不得不跳轉目的地重新取指。為了改善這種情 況,cortex cm3支援一定數量的v7m指令可...
STM32中cortex M3核心的學習
對於這個核心,它是哈佛結構,資料匯流排與指令匯流排分開。具有thumb2指令集。主要了解三個部分得功能,第一是暫存器組,第二是儲存器空間管理,第三是nvic中斷控制器。它的內部存在r0 r15暫存器,其中對於r0 r7可以由thumb指令集訪問,r8 r12由thumb2和arm指令集訪問。還有一些...
韌體庫程式設計(3) 位帶操作
位線操作是把暫存器中的某個位單獨拿出來,放在位帶區,並且在位帶別名區重新膨脹為1個字,但只能對這個位進行操作。通過訪問位帶別名區來訪問某個單獨的位。位帶區的每乙個位都是通過對位帶別名區的位址來訪問。位帶區乙個位,對應位帶別名區乙個字 即4個位元組 在 cm3中,有兩個區中實現了位帶。其中乙個是 sr...