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

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

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

3天內不再提示

STM32位段的定義及其操作方法詳解

冬至配餃子 ? 來源:知曉編程 ? 作者:Firefly ? 2023-07-11 16:40 ? 次閱讀

1 定義

首先需要明確下,位段,位帶和別名區這三個名詞

名詞定義

位段

STM32用戶參考手冊使用的名字

位帶

CortexM3參考手冊使用的

別名區

地址總線上用來位訪問地址區域,

所以說,位段和位帶是一個意思,是不同手冊的不同叫法。

由上述的名詞解釋得知,位帶功能并不是STM32獨有的,是CortexM3的功能(CortexM4也有這樣的功能)。MCS51有位操作,以一位(bit)為數據對象的操作,MCS51可以簡單的將P1口的第2位獨立操作:P1.2=0;P1.2=1 ;這樣就把P1口的第三個腳(bit2)置0置1。而STM32的位段、位帶別名區最重要的就為了實現這樣的功能。

2 位帶操作

2.1 范圍

位帶是有范圍的,并不是CortexM3全部地址空間都支持的。在 CM3中,有兩個區中實現了位帶。其中一個是 SRAM 區的最低 1MB 范圍,第二個則是片內外設區的最低 1MB 范圍。這兩個區中的地址除了可以像普通的 RAM 一樣使用外,它們還都有自己的“位帶別名區”,位帶別名區把每個比特膨脹成一個 32 位的字。當你通過位帶別名區訪問這些字時,就可以達到訪問原始比特的目的。

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

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

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

2.2 位帶操作

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

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

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

AliasAddr0x42000000 + ((A‐0x40000000)*8+n)*4 = 0x42000000 + (A‐0x40000000)*32 + n*4

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

圖片

圖片

2.3代碼實現

把“位帶地址+位序號”轉換別名地址宏為:

#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000 + ((addr &0xFF FFF)< bitnum 

把該地址轉換成一個指針:

#define MEM_ADDR(addr, bitnum) *((volatile unsigned long *)((addr & 0xF0000000)+0x2000000 + ((addr &0xFF FFF)< 2)))

其中

addr的取值范圍:

0x2000_0000‐0x200F_FFFF

0x4000_0000‐0x400F_FFFF

注意:addr取值要32位對齊

bitnum的取值范圍:

0-31

解析:

(addr & 0xf0000000) + 0x02000000:

區分SRAM還是外設,如果是外設,結果為4,再加0x2000000就等于0x4200000,0x42000000就是外設別名位帶區。如果是SRAM,結果為2,再加上0x2000000就等于0x22000000,0x22000000就是SRAM別名位帶區。

addr & 0x00ffffff:

屏蔽了最高2位,相當于減去0x20000000或者0x40000000。因為位帶區的有效范圍是1M,即0x100000,這樣子就做到了低6位有效。

<< 5:

等價于乘以32

<< 2:

等價于乘以4

特別提醒

當你使用位帶功能時,要訪問的變量必須用 volatile 來定義。因為 C 編譯器并不知道同一個比特可以有兩個地址。所以就要通過 volatile,使得編譯器每次都如實地把新數值寫入存儲器,而不再會出于優化的考慮。

3 位段的優點

最容易想到的就是通過 GPIO 的管腳來單獨控制每盞 LED 的點亮與熄滅。另一方面,也對操作串行接口器件提供了很大的方便(典型如 74HC165,CD4094)。位帶操作可以把代碼縮小, 速度更快,效率更高,更安全??傊粠Р僮鲗τ?a target="_blank">硬件 I/O 密集型的底層程序最有用處了

位帶操作還能用來化簡跳轉的判斷。

當跳轉依據是某個位時,以前必須這樣做

1、讀取整個寄存器

2、掩蔽不需要的位

3、比較并跳轉

使用位帶操作后

1、從未帶別名區讀取狀態位

2、比較并跳轉

圖片

當然,對于寫入操作也從4步精簡到3步

圖片

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

    關注

    38

    文章

    7484

    瀏覽量

    163776
  • STM32
    +關注

    關注

    2270

    文章

    10896

    瀏覽量

    355781
  • GPIO
    +關注

    關注

    16

    文章

    1204

    瀏覽量

    52060
  • MCS51單片機
    +關注

    關注

    0

    文章

    24

    瀏覽量

    14695
  • SRAM控制器
    +關注

    關注

    0

    文章

    11

    瀏覽量

    5892
收藏 人收藏

    評論

    相關推薦

    STM32學習筆記-GPIO做為輸出時操作方法

    操作方法。GPIOx_ODR: 端口輸出數據寄存器,它的31:16保留不用,15:0對應x的相應引腳,他只能以16方式操作。GPIOx_BSRR:端口
    發表于 10-07 15:51

    AVR單片機的端口操作方法

    一、常規方法AVR單片機的各類教材或編程應用參考資料,對介紹的端口操作方法不外乎宏定義及整體和某個常量相或、相與來實現某一單個位狀態的改變。如:PORT&=-(1《1);等價于:PO
    發表于 07-13 08:11

    AVR單片機的端口操作方法解析

    的端口操作方法不外乎宏定義及整體和某個常量相或、相與來實現某一單個位狀態的改變。如:PORT&=-(1《1);等價于:PORTB&=oxfd;作用是PB1清零而其余不變。與之類似的
    發表于 11-23 08:35

    C語言的操作方法

    使用 C語言對寄存器賦值時,我們常常要求只修改該寄存器的某幾位的值,且其它的寄存器不變,這個時候我們就需要用到 C 語言的操作方法了。1. 把變量的某位清零此處我們以變量 a代表寄存器,并假設
    發表于 11-26 08:00

    硬件帶bitband操作方法有哪些?

    硬件操作優勢的是什么?硬件帶bitband操作方法有哪些?
    發表于 01-17 06:58

    GPIO引腳操作方法概述

    :原則 - 不能影響到其他三、STM32F103的GPIO操作方法1、看原理圖確定引腳2、再看芯片手冊(1)時鐘使能(2)設置GPIOB0為GPIO、用作輸出(3)怎么設置GPIOB0的輸出電平?四、
    發表于 01-20 07:38

    WinCE文件目錄定制及內存調整的操作方法

    本文介紹了WinCE文件目錄定制及內存調整的操作方法。WinCE的文件目錄結構以及文件的位置都是在DAT文件中定義的。所有的da
    發表于 10-18 10:09 ?962次閱讀

    新A8L加裝倒車影像和激活的操作方法詳解

    新A8L加裝倒車影像和激活的操作方法詳解,感興趣的小伙伴們可以看看。
    發表于 08-03 16:15 ?36次下載

    LED光電參數定義及其詳解

    LED光電參數定義及其詳解
    發表于 02-08 00:50 ?21次下載

    詳細圖文剖析STM32單片機串口一鍵下載電路與操作方法

    在此介紹STM32單片機串口一鍵下載電路與操作方法詳解。
    的頭像 發表于 12-31 23:07 ?4.7w次閱讀
    詳細圖文剖析<b class='flag-5'>STM32</b>單片機串口一鍵下載電路與<b class='flag-5'>操作方法</b>

    寄存器操作方法_對寄存器操作的通用方法總結

    本文主要詳解寄存器操作方法以及對寄存器操作的通用方法總結,具體的跟隨小編來了解一下。
    的頭像 發表于 05-22 15:53 ?2.3w次閱讀

    電子測力計的操作方法

    電子測力計正確操作方法
    發表于 04-17 15:57 ?2611次閱讀

    STM32操作

    操作:將一個重新定義一個字的帶別名來操作
    發表于 11-26 18:06 ?12次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>位</b>帶<b class='flag-5'>操作</b>

    AD18操作方法

    AD18操作方法
    發表于 03-28 15:04 ?0次下載

    STM32F407入門開發: 操作

    STM32F407的操作可以實現類似51單片機中寄存器的操作方法,操作GPIO口代碼簡潔方便。 關于
    的頭像 發表于 05-28 13:50 ?3660次閱讀
    <b class='flag-5'>STM32</b>F407入門開發: <b class='flag-5'>位</b>帶<b class='flag-5'>操作</b>
    主站蜘蛛池模板: 粉嫩国产14xxxxx0000| 国产MD视频一区二区三区| 丰满五十六十老熟女HD60| 国产专区亚洲欧美另类在线| 奶水太多h室友| 午夜福利免费0948视频| 自拍偷拍2| 国产手机在线精品| 欧美成人中文字幕在线看| 亚洲AV国产福利精品在现观看| 538在线播放| 国产免费毛片在线观看| 欧美gay69| 亚洲欧美在无码片一区二区| 草莓视频cm.888tw| 久久九九少妇免费看A片| 私人玩物在线观看| 99精品视频一区在线视频免费观看| 国产精品久久久久久影院 | 美女裸露100%奶头视频| 亚瑟天堂久久一区二区影院| BL文库好大粗黑强强肉NP| 护士美女照片| 素人约啪第五季| babesvideos欧美最新| 久久国产免费| 羞羞答答的免费视频在线观看| vagaa哇嘎黄短片| 久久一er精这里有精品| 亚洲国产成人爱AV在线播放丿| JIZZ19学生第一次| 久久久无码AV精品亚洲A片软件| 十分钟免费观看高清视频大全 | 精品国产乱码久久久久久人妻 | 亚洲AV午夜福利精品香蕉麻豆| 白人大战34厘米黑人BD| 久久综合香蕉久久久久久久| 亚洲精品色播一区二区 | 久久re视频这里精品09首页| 無码一区中文字幕少妇熟女网站 | 中文字幕 人妻熟女|