在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

解讀STM32位帶操作, 讓你快速了解并掌握它的用途

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-03-08 11:56 ? 次閱讀

今天重溫一下經(jīng)典的位帶操作,主要結(jié)合Cortex-M3內(nèi)核(STM32)來講述,相信許多朋友在初學(xué)的時候都被繞暈過。

關(guān)于位帶操作,它的難點其實在于需要理解或掌握較多基礎(chǔ)知識。當(dāng)你掌握這些基礎(chǔ)知識,它其實就不難了。

接下來帶領(lǐng)大家掌握關(guān)于Cortex-M3的位帶操作,順便讓大家回顧一下這些基礎(chǔ)知識。

1初識位帶操作

Bit-banding簡稱位帶,有人也叫位段。支持位帶操作后,可以使用普通的加載/存儲指令來對單一的比特進(jìn)行讀寫。

很多朋友是從學(xué)習(xí)51單片機(jī)過來的,都知道P1.1這個引腳可以單獨控制,我們操作的這個引腳就是一個Bit位。

我們都知道在STM32中不能直接操作寄存器的某一個Bit位,比如單獨控制PA端口輸出數(shù)據(jù)寄存器中的ODR1,如下圖:

STM32F1內(nèi)核Cortex-M3早就考慮到了這個問題,為了能達(dá)到直接操作ODR1這類Bit位,就在內(nèi)核中開辟了一塊地址區(qū)域(位帶別名):可以將ODR1這類Bit位(位帶區(qū))映射到位帶別名區(qū)域?qū)?yīng)的地址,只需要操作映射后的地址,就可以實現(xiàn)操作這個ODR1位了。

簡單來說就是映射操作,只是這個映射操作有許多約定要遵循。

2位帶操作中的映射關(guān)系

在Cortex-M3中有兩個區(qū)實現(xiàn)了位帶操作,其中一個是SRAM區(qū)的最低 1MB 范圍,第二個則是片內(nèi)外設(shè)區(qū)的最低 1MB 范圍。

這兩個區(qū)域如下圖紅色標(biāo)注的區(qū)域:

這兩個1MB將分別映射到另外兩個地址區(qū)域:

1.SRAM區(qū)的最低1MB(0x2000 0000 --- 0x200F FFFF) 映射到(0x2200 0000 --- 0x23FF FFFF)。

2.片內(nèi)外設(shè)區(qū)的最低1MB(0x4000 0000 --- 0x400F FFFF)映射到(0x4200 0000 --- 0x43FF FFFF)。

其實就是映射到偏移(距離自身)0x0200 0000外的32MB空間(位帶別名區(qū)),如下圖SRAM區(qū)映射關(guān)系:

提示:看圖中的有顏色的8Bit,它是映射到偏移0x0200 0000外的32Bit(4Byte)空間上。我們讀寫0x2200 0000這個地址,其實就是操作0x2000 0000中的Bit0位。

這就是所謂的“比特的膨脹對應(yīng)關(guān)系”,1Bit膨脹到32Bit(4字節(jié))。4字節(jié)對應(yīng)的就是那1Bit位的地址,而這個地址中的數(shù)據(jù)只有最低一位才有效(LSB)。

解釋上面多處出現(xiàn)的關(guān)鍵詞

位帶區(qū): 支持位帶操作的地址區(qū);

位帶別名: 對別名地址的訪問最終作用到位帶區(qū)的訪問上;

3位帶區(qū)->別名區(qū)計算公式

位帶操作的主要目的:通過Bit位地址(A)計算得到別名區(qū)地址(AliasAddr)。

1.SARM區(qū)計算公式

AliasAddr= 0x22000000 + ((A‐0x20000000)*8+n)*4 =0x22000000+(A-0x20000000)*32 + n*4

2.片上外設(shè)區(qū)計算公式

AliasAddr= 0x42000000 + ((A-0x40000000)*8+n)*4 =0x42000000+(A-0x40000000)*32 + n*4

由于映射關(guān)系一樣,所以公式原理也一樣,只是地址不一樣。計算公式需要結(jié)合上圖比特的膨脹對應(yīng)關(guān)系來理解。

*8:1個字4個字節(jié);

*4:1個字節(jié)8Bit;

4代碼實現(xiàn)

利用上面計算公式,代碼實現(xiàn)的過程就很簡單,我們的目的就是對“AliasAddr”這個地址進(jìn)行讀寫操作。

1.RAM位帶操作宏定義

#define BITBAND_RAM(RAM, BIT) (*((uint32_t volatile*)(0x22000000u + (((uint32_t)&(RAM) - (uint32_t)0x20000000u)<<5) + (((uint32_t)(BIT))<<2))))


2.外設(shè)寄存器位帶宏定義

#define BITBAND_REG(REG, BIT) (*((uint32_t volatile*)(0x42000000u + (((uint32_t)&(REG) - (uint32_t)0x40000000u)<<5) + (((uint32_t)(BIT))<<2))))

方便大家對比,給一個截圖:

A.RAM地址0x20001000的Bit1位寫0

BITBAND_RAM(*(uint32_t *)0x20001000, 1) = 0;

B.讀取RAM地址0x20001000的Bit1位

uint8_t Val;

Val=BITBAND_RAM(*(uint32_t *)0x20001000, 1);

C.對PA1數(shù)據(jù)輸出寄存器輸出1

BITBAND_REG(GPIOA->ODR, 1) = 1;

D.讀取PA1數(shù)據(jù)輸出寄存器

uint8_t Val;

Val=BITBAND_REG(GPIOA->ODR, 1);

這里就是操作某一個地址,類似于操作指針一樣;

5位帶操作優(yōu)缺點

1.優(yōu)點

相比直接操作寄存器代碼更簡潔,運行效率更高。避免在多任務(wù),或中斷時出現(xiàn)紊亂等。

2.缺點

操作不當(dāng)(傳入地址參數(shù)不對),容易出現(xiàn)總線Fault。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關(guān)注

    關(guān)注

    2272

    文章

    10924

    瀏覽量

    357608
  • 51單片機(jī)
    +關(guān)注

    關(guān)注

    274

    文章

    5705

    瀏覽量

    124313
  • Cortex-M3
    +關(guān)注

    關(guān)注

    9

    文章

    270

    瀏覽量

    59591
收藏 人收藏

    評論

    相關(guān)推薦

    減速機(jī)的原理和用途知識了解多少?

    減速機(jī)的原理和用途 ?減速機(jī)是一種重要的機(jī)械傳動裝置,主要用于降低輸入軸的轉(zhuǎn)速,同時增加輸出軸的扭矩。? 其工作原理基于齒輪傳動,通過一對或多對齒輪的嚙合來實現(xiàn)減速和增矩的目的。減速機(jī)在工業(yè)生產(chǎn)、交通運輸、建筑機(jī)械、航空航天等多個領(lǐng)域都有廣泛的應(yīng)用。?
    的頭像 發(fā)表于 12-16 14:24 ?300次閱讀
    減速機(jī)的原理和<b class='flag-5'>用途</b>知識<b class='flag-5'>你</b><b class='flag-5'>了解</b>多少?

    STM32 OLED多菜單操作

    stm32 ?oled多菜單操作
    發(fā)表于 10-09 11:01 ?2次下載

    【「倉頡編程快速上手」閱讀體驗】+壹讀后感

    清晰透徹,即使沒有任何編程經(jīng)驗,也能輕松理解。 書中還配備了大量的實例和練習(xí),這使得理論知識不再空洞抽象。通過實際操作這些例子,可以更好地掌握
    發(fā)表于 09-06 20:12

    STM32G4系列到底支不支持帶操作

    印象中不止一次有人詢問STM32G4系列到底支不支持帶操作
    的頭像 發(fā)表于 07-29 09:45 ?1659次閱讀
    <b class='flag-5'>STM32</b>G4系列到底支不支持<b class='flag-5'>位</b><b class='flag-5'>帶操作</b>

    STM32H743系列支持帶操作嗎?

    //IO口操作宏定義 define BITBAND(addr, bitnum) ((addr0xF0000000)+0x2000000+((addr0xFFFFF)<<5
    發(fā)表于 07-23 08:13

    ESP32 WIFI SOFTAP模式可以有多個STA連接到STA相互通信嗎?

    我不清楚SOFT AP是否可以像一個普通的 AP 那樣,可以有多個 STA 連接到 STA 相互通信?
    發(fā)表于 06-20 06:27

    關(guān)于帶操作的疑問求解

    大家都知道,帶有對應(yīng)的帶別名區(qū),操作帶別名區(qū)就可以寫帶區(qū)的BIT,讀取帶BIT值到內(nèi)部
    發(fā)表于 05-17 07:33

    stm32單片機(jī)學(xué)習(xí)路線

    系統(tǒng)(RTOS)的基本概念:實時操作系統(tǒng)在一些復(fù)雜的應(yīng)用中非常有用。了解RTOS的基本概念,如任務(wù)、信號量、消息隊列等,可以幫助你設(shè)計和開發(fā)更加復(fù)雜的應(yīng)用。 2.學(xué)習(xí)配置和使用STM32的外設(shè):
    發(fā)表于 05-10 15:34

    請問stm8s IO操作如何實現(xiàn)?

    請教各位了,stm8s IO操作如何實現(xiàn)像stm32類似的帶操作啊? #define LEDPAout(0), LED = 1; LED
    發(fā)表于 05-09 07:10

    如何快速入門FPGA

    和編程技巧。 參與FPGA相關(guān)的社區(qū)和論壇,與其他工程師交流學(xué)習(xí)經(jīng)驗,解決遇到的問題。 通過以上步驟,可以逐步掌握FPGA的基礎(chǔ)知識,通過實踐項目不斷提升自己的技能。記住,持續(xù)學(xué)習(xí)和實踐是
    發(fā)表于 04-28 09:06

    如何快速入門FPGA?

    和編程技巧。 參與FPGA相關(guān)的社區(qū)和論壇,與其他工程師交流學(xué)習(xí)經(jīng)驗,解決遇到的問題。 通過以上步驟,可以逐步掌握FPGA的基礎(chǔ)知識,通過實踐項目不斷提升自己的技能。記住,持續(xù)學(xué)習(xí)和實踐是
    發(fā)表于 04-28 08:54

    STM32F103RGT6帶操作不成功的原因?

    各位大神,我是一個入門級的超級菜鳥,遇到一個問題: 為啥子我同樣的帶操作STM32F103C8T6上操作成功,但是在STM32F103R
    發(fā)表于 04-19 06:32

    STM32G4XX不能夠像STM32F1XX STM32F4XX那樣對GPIO進(jìn)行帶操作呢?

    請教下,在STM32G4XX系列里面,GPIO掛載在AHB2總線上面,地址在0x4800 0000. 是不是也就意味著,STM32G4XX不能夠在像STM32F1XX STM32F4X
    發(fā)表于 03-21 07:16

    嵌入式工程師需要掌握哪些技術(shù)?

    驅(qū)動程序、操作系統(tǒng)以及與硬件交互的代碼。對于嵌入式系統(tǒng)來說,效率和資源利用率是至關(guān)重要的,因此,掌握C/C++編程技巧是入行嵌入式的基礎(chǔ)。 2. 硬件基礎(chǔ)知識:了解基本的電子電路和數(shù)字邏輯是嵌入式
    發(fā)表于 03-04 16:38

    揭秘線路板上的孔的類型和作用,對電子產(chǎn)品有更深的了解

    揭秘線路板上的孔的類型和作用,對電子產(chǎn)品有更深的了解
    的頭像 發(fā)表于 02-29 17:10 ?1489次閱讀
    主站蜘蛛池模板: 在线精品小视频 | 在线婷婷 | 久久香蕉国产线看观看亚洲片 | 日本高免费观看在线播放 | 色.www| 天天插插| fxxx性xxx性 | 亚洲综合区图片小说区 | 激情五月宗合网 | 久久久久久免费播放一级毛片 | 人人人插 | 91久久婷婷国产综合精品青草 | 农村妇女野外一级毛片 | 天天综合天天 | www深夜视频在线观看高清 | 免费在线观看的网站 | 亚洲免费影视 | 一级毛片一级毛片一级毛片aa | 成色网 | 操吧 | 狠狠色噜噜狠狠狠狠五月婷 | 欧美黑人性色黄在线视频 | 国产精品久久在线观看 | 一区二区在线免费观看 | 天堂在线精品 | 免费午夜视频 | 天天干一干 | 天天干一干 | 欧美黄色片免费观看 | 久久综合九色综合97_ 久久久 | 日韩亚洲欧美日本精品va | 色无欲天天天影视综合网 | 国产色视频网站 | 性色爽爱性色爽爱网站 | 天天干天天操天天拍 | 操你啦在线播放 | h视频在线观看网站 | 三级四级特黄在线观看 | 国内精品第一页 | 亚洲欧美卡通 动漫 丝袜 | 在线播放国产不卡免费视频 |