STM32 位帶操作解析

STM32位帶解析

本人最近根據正點原子的視頻自學STM32,在學習STM32的的位帶操作操作時,只是介紹到了位帶別名區把位帶區的每一個比特位膨脹成32位的字,即位帶區的每一個比特位對應位帶別名區中一個4個字節大小的地址。下圖示例SRAM區中的最低1MB的位帶區與位帶別名區的膨脹對應關係:

在這裏插入圖片描述

轉換公式

在這裏插入圖片描述
對於我這種初學者來說,我會想知道具體怎麼去計算,但是又對位操作比較陌生,所以特地的去查了一下怎麼去做計算,並記錄下來,希望能給同樣是初學者帶來幫助,以0x200FFFFF爲例:
1.A = 0x200FFFFF
2.A - 0x20000000 = 0xFFFFF
3.(A - 0x20000000) * 32 = 0xFFFFF *32 = 0x1FFFFE0

由於32 = 2^5; 所以相當於0xFFFFF向左移5位,即爲0x1FFFFE0;

4.假設
n = 0;
AliasAddr = 0x22000000 + 0x1FFFE0 + 0x00 = 0x23FFFFE0

n = 1;
AliasAddr = 0x22000000 + 0x1FFFE0 + 0x04 = 0x23FFFFE4


n = 7; (4*7 = 28 = 0x1C)
AliasAddr = 0x22000000 + 0x1FFFE0 + 0x1C = 0x23FFFFFC

注:
0xFFFFF = 1111 1111 1111 1111 1111 左移5位得到
0001 1111 1111 1111 1111 1110 0000 = 0x1FFFFE0

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