色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

STM32中的位帶(bit-band)操作

h1654155971.7688 ? 來源:未知 ? 作者:李倩 ? 2018-05-13 09:28 ? 次閱讀

支持了位帶操作后,可以使用普通的加載/存儲指令來對單一的比特進行讀寫。在 CM3 中,有兩個區中實現了位帶。其中一個是 SRAM 區的最低 1MB 范圍,第二個則是片內外設區的最低 1MB范圍。這兩個區中的地址除了可以像普通的 RAM 一樣使用外,它們還都有自己的“位帶別名區”,位帶別名區把每個比特膨脹成一個 32 位的字。當你通過位帶別名區訪問這些字時,就可以達到訪問原始比特的目的。

位帶操作的概念其實 30 年前就有了,那還是8051 單片機開創的先河,如今,CM3 將此能力進化,這里的位帶操作是 8051 位尋址區的威力大幅加強版。

CM3 使用如下術語來表示位帶存儲的相關地址:

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

位帶別名:對別名地址的訪問最終作用到位帶區的訪問上(這中途有一個地址映射過程)

在位帶區中,每個比特都映射到別名地址區的一個字——這是只有 LSB 有效的字。當一個別名地址被訪問時,會先把該地址變換成位帶地址。

對于讀操作,讀取位帶地址中的一個字,再把需要的位右移到 LSB,并把 LSB 返回。對于寫操作,把需要寫的位左移至對應的位序號處,然后執行一個原子的“讀-改-寫”過程。

支持位帶操作的兩個內存區的范圍是:

0x2000_0000‐0x200F_FFFF(SRAM 區中的最低 1MB)

0x4000_0000‐0x400F_FFFF(片上外設區中的最低 1MB)

對 SRAM 位帶區的某個比特,記它所在字節地址為 A,位序號為 n(0<=n<=7),則該比特在別名區的地址為:

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

對于片上外設位帶區的某個比特,記它所在字節的地址為 A,位序號為 n(0<=n<=7),則該比特在別名區的地址為:

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

上式中,“*4”表示一個字為 4 個字節,“*8”表示一個字節中有 8 個比特。

這里再不嫌啰嗦地舉一個例子:

1. 在地址 0x20000000 處寫入 0x3355AACC

2. 讀取地址0x22000008。本次讀訪問將讀取 0x20000000,并提取比特 2,值為 1。

3. 往地址 0x22000008 處寫 0。本次操作將被映射成對地址 0x20000000 的“讀-改-寫”操作(原子的),把比特2 清 0。

4. 現在再讀取 0x20000000,將返回 0x3355AAC8(bit[2]已清零)。

位帶別名區的字只有 LSB 有意義。另外,在訪問位帶別名區時,不管使用哪一種長度的數據傳送指令(字/半字/字節),都把地址對齊到字的邊界上,否則會產生不可預料的結果。

[cpp] view plain copy///////////////////////////////////////////////////////////////

//位帶操作,實現51類似的GPIO控制功能

//具體實現思想,參考<>第五章(87頁~92頁).

//IO口操作宏定義

#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))

//IO口地址映射

#define GPIOA_ODR_Addr (GPIOA_BASE+12) //0x4001080C

#define GPIOB_ODR_Addr (GPIOB_BASE+12) //0x40010C0C

#define GPIOC_ODR_Addr (GPIOC_BASE+12) //0x4001100C

#define GPIOD_ODR_Addr (GPIOD_BASE+12) //0x4001140C

#define GPIOE_ODR_Addr (GPIOE_BASE+12) //0x4001180C

#define GPIOF_ODR_Addr (GPIOF_BASE+12) //0x40011A0C

#define GPIOG_ODR_Addr (GPIOG_BASE+12) //0x40011E0C

#define GPIOA_IDR_Addr (GPIOA_BASE+8) //0x40010808

#define GPIOB_IDR_Addr (GPIOB_BASE+8) //0x40010C08

#define GPIOC_IDR_Addr (GPIOC_BASE+8) //0x40011008

#define GPIOD_IDR_Addr (GPIOD_BASE+8) //0x40011408

#define GPIOE_IDR_Addr (GPIOE_BASE+8) //0x40011808

#define GPIOF_IDR_Addr (GPIOF_BASE+8) //0x40011A08

#define GPIOG_IDR_Addr (GPIOG_BASE+8) //0x40011E08

//IO口操作,只對單一的IO口!

//確保n的值小于16!

#define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n) //輸出

#define PAin(n) BIT_ADDR(GPIOA_IDR_Addr,n) //輸入

#define PBout(n) BIT_ADDR(GPIOB_ODR_Addr,n) //輸出

#define PBin(n) BIT_ADDR(GPIOB_IDR_Addr,n) //輸入

#define PCout(n) BIT_ADDR(GPIOC_ODR_Addr,n) //輸出

#define PCin(n) BIT_ADDR(GPIOC_IDR_Addr,n) //輸入

#define PDout(n) BIT_ADDR(GPIOD_ODR_Addr,n) //輸出

#define PDin(n) BIT_ADDR(GPIOD_IDR_Addr,n) //輸入

#define PEout(n) BIT_ADDR(GPIOE_ODR_Addr,n) //輸出

#define PEin(n) BIT_ADDR(GPIOE_IDR_Addr,n) //輸入

#define PFout(n) BIT_ADDR(GPIOF_ODR_Addr,n) //輸出

#define PFin(n) BIT_ADDR(GPIOF_IDR_Addr,n) //輸入

#define PGout(n) BIT_ADDR(GPIOG_ODR_Addr,n) //輸出

#define PGin(n) BIT_ADDR(GPIOG_IDR_Addr,n) //輸入

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

    關注

    6035

    文章

    44554

    瀏覽量

    634653
  • STM32
    +關注

    關注

    2270

    文章

    10895

    瀏覽量

    355744

原文標題:高手經驗!STM32中的位帶(bit-band)操作

文章出處:【微信號:weixin21ic,微信公眾號:21ic電子網】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    STM32(cortex_m3) 的 Bit-Banding 該怎樣理解?

    ) 是如何確定的?這個文檔 是 STM32 的 Firware library的 PDF文件。 Bit-Banding的意思是:對Bit-Band區一個字的操作對應實際存儲器
    發表于 01-19 10:28

    STM32BIT_BAND段/)和別名區使用入門

    的影響。 三、應用說明 支持了操作bit_band),有兩個區實現了。其中一個是SR
    發表于 07-04 09:34

    STM32BIT_BAND段/)和別名區使用入門

    的影響。 三、應用說明 支持了操作bit_band),有兩個區實現了。其中一個是SR
    發表于 07-09 00:22

    別名區的關系

    別名區的關系:是指在存儲區可以按
    發表于 08-10 06:05

    操作原理

    (四)操作1.操作原理STM32將每個比特膨脹成為32字,訪問這些字就實現了訪問
    發表于 11-30 08:20

    操作原理詳解+LED實驗的相關資料分享

    具有重要意義。CM3提供了2個區(Bit Band Region)以及對應的別名區(
    發表于 12-16 07:06

    在KE04/KE06產品上使用Bit-band and BME的教程

    如何在KE04 and KE06產品上使用Bit-band and BME
    發表于 12-09 07:36

    【國民技術N32項目移植】N32的bit-band操作

    與輸入寄存器,使用別名區可以將單個管腳1bit的控制擴展到32,實現類似PA0 = 1;代碼操作
    發表于 03-05 18:07

    關于STM32(bit-band)操作說明

    支持了操作后,可以使用普通的加載/存儲指令來對單一的比特進行讀寫。在 CM3 ,有兩個區實現了
    發表于 11-30 01:33 ?671次閱讀
     關于<b class='flag-5'>STM32</b><b class='flag-5'>中</b>的<b class='flag-5'>位</b><b class='flag-5'>帶</b>(<b class='flag-5'>bit-band</b>)<b class='flag-5'>操作</b>說明

    STM32開發操作機制

    為了像51單片機一樣能夠對某個管腳單獨操作,引入了操作這樣的操作機制。 如下圖,
    的頭像 發表于 04-09 14:07 ?1667次閱讀
    <b class='flag-5'>STM32</b>開發<b class='flag-5'>中</b>的<b class='flag-5'>位</b>帶<b class='flag-5'>操作</b>機制

    STM32入門基礎篇(四)

    (四)操作1.操作原理STM32將每個比特膨脹成為32字,訪問這些字就實現了訪問
    發表于 11-21 18:06 ?0次下載
    <b class='flag-5'>STM32</b>入門基礎篇(四)

    MCU_STM32操作 -- bit banding

    操作STM32芯片除了通用的寄存器訪問,還有一個比較有意思的操作。這個位的意思,就是每
    發表于 11-26 15:21 ?6次下載
    MCU_<b class='flag-5'>STM32</b>的<b class='flag-5'>位</b>帶<b class='flag-5'>操作</b> -- <b class='flag-5'>bit</b> banding

    STM32學習筆記:操作Bit_band Operations)

    支持操作),詳情請參考相關內核處理器的指南或技術參考手冊(TRM)。1、操作CPU不能直接對位
    發表于 12-04 12:36 ?0次下載
    <b class='flag-5'>STM32</b>學習筆記:<b class='flag-5'>位</b>帶<b class='flag-5'>操作</b>(<b class='flag-5'>Bit_band</b> Operations)

    stm32--基本操作

    stm32--基本操作支持了操作后,可以使用普通的加載/存儲指令來對單一的比特進行讀寫。
    發表于 01-13 14:15 ?1次下載
    <b class='flag-5'>stm32</b>--<b class='flag-5'>位</b><b class='flag-5'>帶</b>基本<b class='flag-5'>操作</b>

    stm32操作有什么用

    。 一、STM32操作的原理 別名區 在STM32微控制器
    的頭像 發表于 12-22 16:02 ?1387次閱讀
    主站蜘蛛池模板: 国产国拍亚洲精品永久软件| 美女被抽插到哭内射视频免费| 亚洲精品福利在线| 后入到高潮免费观看| 亚洲高清视频免费| 夜夜草导航| 中国xxxxxz| 粉嫩小护士| 国偷自产视频一区二区99| 好男人视频免费高清在线观看www| 饥渴的新婚女教师| 老师的快感电影完整版| 欧美日韩黄色| 樱花草在线影视WWW日本动漫| 恋夜秀场支持安卓版全部视频国产| 97影院午夜午夜伦不卡| 欧美日韩亚洲一区二区三区在线观看| 粗暴玩烂货调教| 亚洲精品国产在线观看 | 美女张开腿让男人桶爽无弹窗 | 别插我B嗯啊视频免费| 天天躁日日躁狠狠躁中文字幕老牛| 校花的奶好大好浪| 91九色麻豆| 国产精品私人玩物在线观看| 理论937| 亚洲 日韩 色 图网站| 99久久久无码国产AAA精品| 国产乱码二卡3卡四卡| 亚洲午夜精品一区二区公牛电影院| 三叶草成人| 2021年国产精品久久| 国产午夜精品理论片免费观看| 欧美内射AAAAAAXXXXX| 伊人久久艹| 国产亚洲精品精华液| 日韩中文字幕亚洲无线码| 最近中文字幕在线看免费完整版| 精品一区二区三区四区五区六区| 大桥未久电影在线观看| 一起洗澡的老师免费播放|