一、 什么是位段和別名區(qū)
是這樣的,記得MCS51嗎? MCS51就是有位操作,以一位(BIT)為數(shù)據(jù)對(duì)象的操作,MCS51可以簡(jiǎn)單的將P1口的第2位獨(dú)立操作: P1.2=0;P1.2=1 ;這樣就把P1口的第三個(gè)腳(BIT2)置0置1。而現(xiàn)在STM32的位段、位帶別名區(qū)就為了實(shí)現(xiàn)這樣的功能。
它的對(duì)象可以是SRAM、I/O和外設(shè)空間。要實(shí)現(xiàn)對(duì)這些地方的某一位的操作。它是這樣做的:在尋址空間(32位對(duì)應(yīng)的地址空間為 4GB )的另一地方,取個(gè)別名區(qū)空間,從這個(gè)地址開始處,每一個(gè)字(32BIT)對(duì)應(yīng)SRAM或I/O的一位。 這樣,1MB SRAM 就可以有 32MB 的對(duì)應(yīng)別名區(qū)空間,就是1位膨脹到32位(1 BIT 變?yōu)?個(gè)字節(jié))。我們對(duì)這個(gè)別名區(qū)空間內(nèi)的某一字操作(置0或置1),就等于它映射的 SRAM 或 I/O 相應(yīng)的某地址的某一位的操作。
二、使用位段的好處 簡(jiǎn)單來說,可以把代碼縮小, 速度更快,效率更高,更安全。 一般操作要6條指令,而使用位帶別名區(qū)只要4條指令。一般操作是 讀-改-寫的方式, 而位帶別名區(qū)是 寫 操作。防止中斷對(duì) 讀-改-寫 的方式的影響。
三、應(yīng)用說明
支持了位帶操作(bit_band),有兩個(gè)區(qū)中實(shí)現(xiàn)了位帶。其中一個(gè)是SRAM 區(qū)的最低1MB 范圍,第二個(gè)則是片內(nèi)外設(shè)區(qū)的最低1MB 范圍。這兩個(gè)區(qū)中的地址除了可以像普通的RAM 一樣使用外,它們還都有自己的“位帶別名區(qū)”,位帶別名區(qū)把每個(gè)比特膨脹成一個(gè) 32 位的字。 每個(gè)比特膨脹成一個(gè)32 位的字,就是把 1M 擴(kuò)展為 32M 。
于是,位于 RAM 地址 0X200000000 的一個(gè)字節(jié)擴(kuò)展為8個(gè)32 位的字,擴(kuò)展后每位相對(duì)應(yīng)的的地址是:0X220000000,0X220000004,0X220000008,0X22000000C,0X220000010,0X220000014, 0X220000018,0X22000001C
支持位帶操作的兩個(gè)內(nèi)存區(qū)的范圍是:
0x2000 0000‐0x200F FFFF(SRAM 區(qū)中的最低1MB) 0x4000 0000‐0x400F FFFF(片上外設(shè)區(qū)中的最低1MB)
|