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

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

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

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

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

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

1 定義

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

名詞定義

位段

STM32用戶參考手冊(cè)使用的名字

位帶

CortexM3參考手冊(cè)使用的

別名區(qū)

地址總線上用來(lái)位訪問(wèn)地址區(qū)域,

所以說(shuō),位段和位帶是一個(gè)意思,是不同手冊(cè)的不同叫法。

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

2 位帶操作

2.1 范圍

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

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

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

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

2.2 位帶操作

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

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

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

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

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

圖片

圖片

2.3代碼實(shí)現(xiàn)

把“位帶地址+位序號(hào)”轉(zhuǎn)換別名地址宏為:

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

把該地址轉(zhuǎn)換成一個(gè)指針:

#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位對(duì)齊

bitnum的取值范圍:

0-31

解析:

(addr & 0xf0000000) + 0x02000000:

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

addr & 0x00ffffff:

屏蔽了最高2位,相當(dāng)于減去0x20000000或者0x40000000。因?yàn)槲粠^(qū)的有效范圍是1M,即0x100000,這樣子就做到了低6位有效。

<< 5:

等價(jià)于乘以32

<< 2:

等價(jià)于乘以4

特別提醒

當(dāng)你使用位帶功能時(shí),要訪問(wèn)的變量必須用 volatile 來(lái)定義。因?yàn)?C 編譯器并不知道同一個(gè)比特可以有兩個(gè)地址。所以就要通過(guò) volatile,使得編譯器每次都如實(shí)地把新數(shù)值寫(xiě)入存儲(chǔ)器,而不再會(huì)出于優(yōu)化的考慮。

3 位段的優(yōu)點(diǎn)

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

位帶操作還能用來(lái)化簡(jiǎn)跳轉(zhuǎn)的判斷。

當(dāng)跳轉(zhuǎn)依據(jù)是某個(gè)位時(shí),以前必須這樣做

1、讀取整個(gè)寄存器

2、掩蔽不需要的位

3、比較并跳轉(zhuǎn)

使用位帶操作后

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

2、比較并跳轉(zhuǎn)

圖片

當(dāng)然,對(duì)于寫(xiě)入操作也從4步精簡(jiǎn)到3步

圖片

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

    關(guān)注

    38

    文章

    7514

    瀏覽量

    164003
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10910

    瀏覽量

    356598
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1212

    瀏覽量

    52182
  • MCS51單片機(jī)
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    14713
  • SRAM控制器
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    5908
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32學(xué)習(xí)筆記-GPIO做為輸出時(shí)操作方法

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

    AVR單片機(jī)的端口操作方法

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

    AVR單片機(jī)的端口操作方法解析

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

    C語(yǔ)言的操作方法

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

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

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

    GPIO引腳操作方法概述

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

    WinCE文件目錄定制及內(nèi)存調(diào)整的操作方法

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

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

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

    LED光電參數(shù)定義及其詳解

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

    詳細(xì)圖文剖析STM32單片機(jī)串口一鍵下載電路與操作方法

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

    寄存器操作方法_對(duì)寄存器操作的通用方法總結(jié)

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

    電子測(cè)力計(jì)的操作方法

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

    STM32操作

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

    AD18操作方法

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

    STM32F407入門(mén)開(kāi)發(fā): 操作

    STM32F407的操作可以實(shí)現(xiàn)類似51單片機(jī)中寄存器的操作方法操作GPIO口代碼簡(jiǎn)潔方便。 關(guān)于
    的頭像 發(fā)表于 05-28 13:50 ?3693次閱讀
    <b class='flag-5'>STM32</b>F407入門(mén)開(kāi)發(fā): <b class='flag-5'>位</b>帶<b class='flag-5'>操作</b>
    主站蜘蛛池模板: 狠狠丁香激情久久综合| www.亚洲成在线| 日本黄色小视频在线观看| 四虎影视永久在线观看| 亚洲成年人在线| 午夜性爽爽爽| 色天使色婷婷丁香久久综合| 琪琪午夜伦埋大全影院| 免费人成在线观看网站品爱网日本| 六月丁香婷婷激情国产| 国产高清片| 天天夜夜啦啦啦| 久草男人天堂| 国产黄视频在线观看| 九九re| 五月开心六月伊人色婷婷| 欧美一级特黄aa大片| 国产一区二区三区乱码| 午夜欧美| 91精品福利视频| 老师叫我下面含着精子去上课| 亚洲国产婷婷综合在线精品| 日本不卡高清免费v日本| 国模鲍鱼| 手机免费看大片| 四虎影院的网址| 日本久操| 国产玖玖| 日韩一级黄| 在线观看网站黄| 精品成人| 色偷偷88欧美精品久久久| 激情五月五月婷婷| 婷婷爱五月天| 欧美乱理伦另类视频| 永久在线观看www免费视频| 日韩色爱| 俺去鲁婷婷六月色综合| 国产伦精品一区二区三区四区| 羞羞漫画喷水漫画yy漫画| 泰国一级毛片aaa下面毛多|