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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

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

關于位帶操作,它的難點其實在于需要理解或掌握較多基礎知識。當你掌握這些基礎知識,它其實就不難了。

接下來帶領大家掌握關于Cortex-M3的位帶操作,順便讓大家回顧一下這些基礎知識。

1初識位帶操作

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

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

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

STM32F1內核Cortex-M3早就考慮到了這個問題,為了能達到直接操作ODR1這類Bit位,就在內核中開辟了一塊地址區域(位帶別名):可以將ODR1這類Bit位(位帶區)映射到位帶別名區域對應的地址,只需要操作映射后的地址,就可以實現操作這個ODR1位了。

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

2位帶操作中的映射關系

在Cortex-M3中有兩個區實現了位帶操作,其中一個是SRAM區的最低 1MB 范圍,第二個則是片內外設區的最低 1MB 范圍。

這兩個區域如下圖紅色標注的區域:

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

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

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

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

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

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

解釋上面多處出現的關鍵詞

位帶區: 支持位帶操作的地址區;

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

3位帶區->別名區計算公式

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

1.SARM區計算公式

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

2.片上外設區計算公式

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

由于映射關系一樣,所以公式原理也一樣,只是地址不一樣。計算公式需要結合上圖比特的膨脹對應關系來理解。

*8:1個字4個字節;

*4:1個字節8Bit;

4代碼實現

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

1.RAM位帶操作宏定義

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


2.外設寄存器位帶宏定義

#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數據輸出寄存器輸出1

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

D.讀取PA1數據輸出寄存器

uint8_t Val;

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

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

5位帶操作優缺點

1.優點

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

2.缺點

操作不當(傳入地址參數不對),容易出現總線Fault。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2291

    文章

    11020

    瀏覽量

    363188
  • 51單片機
    +關注

    關注

    277

    文章

    5710

    瀏覽量

    126920
  • Cortex-M3
    +關注

    關注

    9

    文章

    276

    瀏覽量

    60183
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    充電接口真的了解嗎?

    USB(Universal Serial Bus,通用串行總線)自1994年誕生以來,已成為我們日常生活中不可或缺的接口標準。從鍵盤、鼠標到手機、充電寶,USB接口無處不在。但知道USB接口也有
    的頭像 發表于 05-18 17:39 ?399次閱讀

    帶您了解觀測水尺的主要用途和意義

    觀測水尺是一種用于測量和記錄水位變化的工具,主要應用于水文監測、水利工程、航運、防洪抗旱等領域。以下是的主要用途和意義:1.水文監測與數據采集記錄水位變化:通過定期觀測水尺刻度,獲取河流、湖泊
    的頭像 發表于 04-14 10:59 ?353次閱讀
    帶您<b class='flag-5'>了解</b>觀測水尺的主要<b class='flag-5'>用途</b>和意義

    代碼+案例+生態:武漢芯源半導體CW32嵌入式開發實戰正式出版

    和好評。然而,我們深知,對于開發者來說,僅僅了解產品的基本特性遠遠不夠,深入掌握其原理、應用技巧以及開發方法,才能真正發揮出 CW32 單片機的強大潛力。 正是基于這樣的考慮,我們精心策劃編寫了這本
    發表于 03-03 15:14

    國產 ARM 平臺硬核實測!RK3568 賦能人工智能機械臂手部檢測案例演示

    一、產品簡介TL3568-PlusTEB人工智能實驗箱國產高性能處理器644核低功耗2.0GHz超高主頻1T超高算力NPU兼容鴻蒙等國產操作系統二、實驗目的1、了解MediaPipe開發框架的
    的頭像 發表于 02-10 07:57 ?600次閱讀
    國產 ARM 平臺硬核實測!RK3568 賦能人工智能機械臂手部檢測案例演示

    什么是YOLO?RK3568+YOLOv5是如何實現物體識別的?一起來了解一下!

    一、產品簡介TL3568-PlusTEB人工智能實驗箱國產高性能處理器644核低功耗2.0GHz超高主頻1T超高算力NPU兼容鴻蒙等國產操作系統二、實驗目的1、了解YOLOv5模型的用途
    的頭像 發表于 12-19 19:04 ?929次閱讀
    什么是YOLO?RK3568+YOLOv5是如何實現物體識別的?一起來<b class='flag-5'>了解</b>一下!

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

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

    絕緣電阻測試的基礎以及為什么如此重要

    絕緣電阻測試的八個技巧 絕緣材料是一種能抵抗試圖通過的電流的材料。絕緣體有助于抵抗沖擊和短路,使電絕緣成為任何建筑或系統中最重要的部件之一。這也意味著測量電阻特別重要,必須清楚地了解電阻水平,以
    發表于 12-09 10:24

    如何快速入門HAL庫編程 HAL庫與裸機編程的比較

    如何快速入門HAL庫編程 要快速入門HAL庫編程,可以遵循以下步驟: 了解基礎知識 : 掌握C語言編程基礎,包括變量、數據類型、函數、指針等。 了解
    的頭像 發表于 12-02 11:39 ?1040次閱讀

    STM32 OLED多菜單操作

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

    實時顯示和拍照存儲,IFD-x實時掌握溫度信息 非接觸式熱成像儀器紅外線成像

    實時顯示和拍照存儲,IFD-x實時掌握溫度信息 非接觸式熱成像儀器紅外線成像 非接觸式熱成像儀器,IFD-x采用紅外陣列高精度溫度傳感器和先進的軟件算法。它能夠對視場范圍內的任何物體進行紅外成像
    的頭像 發表于 09-26 10:00 ?445次閱讀

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

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

    【免費分享】易上手的STM32多核心開發板資料包一網打盡,教程+課件+視頻+項目+源碼

    ?想要深入學習STM32開發嗎?現在機會來了!我們為初學者們準備了一份全面的資料包,包括原理圖、教程、課件、視頻、項目、源碼等,所有資料全部免費領取,課程視頻可試看(購買后看完整版),從零開始,
    的頭像 發表于 09-03 10:09 ?750次閱讀
    【免費分享】易上手的<b class='flag-5'>STM32</b>多核心開發板資料包一網打盡,教程+課件+視頻+項目+源碼

    認識貼片電阻嗎,對他了解多少?

    認識貼片電阻嗎,對他了解多少?
    的頭像 發表于 08-27 15:49 ?1142次閱讀
    <b class='flag-5'>你</b>認識貼片電阻嗎,<b class='flag-5'>你</b>對他<b class='flag-5'>了解</b>多少?

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

    印象中不止一次有人詢問STM32G4系列到底支不支持帶操作
    的頭像 發表于 07-29 09:45 ?2159次閱讀
    <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
    發表于 07-23 08:13
    主站蜘蛛池模板: 日本欧美一区二区免费视 | 日本天堂影院 | 她也啪97在线视频 | 九色欧美 | 色中色在线视频 | 四虎影院大全 | 久久精品免费 | 国产亚洲3p一区二区三区 | 手机看片99| 久久久久久久成人午夜精品福利 | 免费爱爱网站 | 久久精品免费观看视频 | 国产资源视频在线观看 | 国产日韩欧美一区二区 | 四虎永久精品免费网址大全 | 99色播 | 日本大片免费播放网站 | 一区三区三区不卡 | 婷婷资源| 色吧综合 | 亚洲午夜免费 | 欧美爆操 | bt 另类 专区 欧美 制服 | 伊人久久大线蕉香港三级 | 毛片大全高清免费 | 美女扒开内裤无遮挡禁18 | 国产黄色的视频 | 日本特黄色大片 | 国产婷婷综合在线精品尤物 | 国产男人午夜视频在线观看 | 老色批午夜免费视频网站 | 婷婷午夜激情 | 亚洲色图综合在线 | 一区二区三区四区视频在线观看 | 亚洲天堂成人网 | 91九色成人 | 你懂得在线网站 | 亚洲免费网站在线观看 | 亚洲婷婷综合中文字幕第一页 | 夜夜骑日日射 | 黄网站播放 |