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

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

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

3天內不再提示

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

冬至配餃子 ? 來源:知曉編程 ? 作者:Firefly ? 2023-07-11 16:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1 定義

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

名詞定義

位段

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

位帶

CortexM3參考手冊使用的

別名區(qū)

地址總線上用來位訪問地址區(qū)域,

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

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

2 位帶操作

2.1 范圍

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

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

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

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

2.2 位帶操作

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

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

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

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

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

圖片

圖片

2.3代碼實現(xiàn)

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

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

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

addr & 0x00ffffff:

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

<< 5:

等價于乘以32

<< 2:

等價于乘以4

特別提醒

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

3 位段的優(yōu)點

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

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

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

1、讀取整個寄存器

2、掩蔽不需要的位

3、比較并跳轉

使用位帶操作后

1、從未帶別名區(qū)讀取狀態(tài)位

2、比較并跳轉

圖片

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

圖片

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

    關注

    38

    文章

    7643

    瀏覽量

    166838
  • STM32
    +關注

    關注

    2291

    文章

    11022

    瀏覽量

    363465
  • GPIO
    +關注

    關注

    16

    文章

    1279

    瀏覽量

    53813
  • MCS51單片機
    +關注

    關注

    0

    文章

    24

    瀏覽量

    14913
  • SRAM控制器
    +關注

    關注

    0

    文章

    11

    瀏覽量

    5963
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

    AVR單片機的端口操作方法

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

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

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

    C語言的操作方法

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

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

    硬件操作優(yōu)勢的是什么?硬件帶bitband操作方法有哪些?
    發(fā)表于 01-17 06:58

    GPIO引腳操作方法概述

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

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

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

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

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

    LED光電參數定義及其詳解

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

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

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

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

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

    電子測力計的操作方法

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

    AD18操作方法

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

    STM32F407入門開發(fā): 操作

    STM32F407的操作可以實現(xiàn)類似51單片機中寄存器的操作方法操作GPIO口代碼簡潔方便。 關于
    的頭像 發(fā)表于 05-28 13:50 ?4147次閱讀
    <b class='flag-5'>STM32</b>F407入門開發(fā): <b class='flag-5'>位</b>帶<b class='flag-5'>操作</b>

    multisim的基本界面與操作方法

    電子發(fā)燒友網站提供《multisim的基本界面與操作方法.pdf》資料免費下載
    發(fā)表于 06-24 16:53 ?0次下載
    主站蜘蛛池模板: 午夜伦理片免费观看在线 | 亚洲看黄 | 中文字幕亚洲一区二区三区 | 特黄a大片免费视频 | 亚洲一区二区三区四区五区六区 | 69天堂| 亚洲a网| 久久综合九色综合97_ 久久久 | 黄色免费小视频 | 黄网在线观看免费 | 美女扒尿口给男人桶到爽 | 女人张开腿 让男人桶个爽 免费观看 | 特黄特黄一级高清免费大片 | 亚洲黄色性视频 | 午夜神马福利 | 扒开末成年粉嫩的流白浆视频 | 青草视频久久 | 青草视频在线观看国产 | 国产视频一二区 | 亚洲免费黄色网址 | 超色视频 | 九九热精品视频 | 午夜影剧院 | 国产片翁熄系列乱在线视频 | 夜夜爱夜夜做夜夜爽 | 色多多入口 | 草逼网址 | 开心激情五月网 | 天天操天天干天天操 | 被暗卫肉高h | 免费午夜视频 | a成人在线 | 加勒比视频一区 | 色综合天天综合网亚洲影院 | fenfencao在线观看免费视频 | 日本69xxxxx| 农村苗族一级特黄a大片 | 七月色婷婷 | 黄a级免费 | 激情五月宗合网 | 国产成人教育视频在线观看 |