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

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

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

3天內不再提示

STM32開發(fā)中的位運算以及位帶操作

單片機與嵌入式 ? 來源:單片機與嵌入式 ? 2023-11-29 14:36 ? 次閱讀

為了像51單片機一樣能夠對某個管腳單獨操作,引入了位帶操作這樣的操作機制。

如下圖,位帶(Bit band)區(qū)就是就是你想單獨操作的IO的區(qū)域,比如PA1、PA2。而位帶別名區(qū)就是你給每一位重新起了個名字的那一片地址區(qū)域。可以看下表,M3內核存儲器映射表,你能看到1M內存的BitBand區(qū),還有與之對應的32M內存的BitBand別名區(qū),因為你將每一位膨脹成為了一個32位的地址,所以相應的別名區(qū)的內存也會是位帶區(qū)的32倍。

f513ed6e-8e80-11ee-939d-92fbcf53809c.png

想進行位帶操作,應該先去找該位對應的別名區(qū)的地址,找到了這個地址,對這個地址進行操作,那么實際上也就是對該位進行操作了。

官方給出了如下相應的計算公式:

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

其中,AliasAddr是別名區(qū)的地址,A是GPIOA->ODR的地址,n是該端口的上的某一位。

0x42000000是位帶別名區(qū)域的起始地址,A是輸出數據寄存器GPIOA->ODR的地址,A的地址先減去位帶區(qū)基地址,得到的是相對于位帶區(qū)基地址的偏移地址,那么膨脹之后還是一個偏移地址,是相對于位帶別名區(qū)基地址的偏移量,加上位帶別名區(qū)域基地址,就得到了其對應的別名區(qū)地址。

多數情況下,大家見到的代碼,應該是以下這個樣子,一共分為三步:

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

第一步,就是我們上面分析的,得到位帶別名區(qū)域的32位地址。

第二步,就是將第一步得到的32位地址,給轉換成一個指針變量,并且操作這個地址里的值,唯一的區(qū)別,就是由于安全的考慮,多加了一個volatile 這樣的關鍵字。

舉個例子

如下,想直接訪問0x00000001這個地址,并且給這個地址寫1,該怎么做呢?

#defineADDR0x00000001
*(int*)ADDR=1;

第三步,就是將前兩部,結合在一起,根據傳入的addr和bit計算得到32位的地址,然后強制類型轉換,使得我們可以去操作這個地址里的值。

提示:bitnum<<2相當于bitnum2乘以4,實際上在計算機底層乘法也是基于位運算實現的。

審核編輯:湯梓紅

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

    關注

    6065

    文章

    44934

    瀏覽量

    647664
  • 嵌入式
    +關注

    關注

    5143

    文章

    19561

    瀏覽量

    315480
  • STM32
    +關注

    關注

    2290

    文章

    11018

    瀏覽量

    362731
  • 位運算
    +關注

    關注

    0

    文章

    17

    瀏覽量

    8543

原文標題:STM32開發(fā)中的位運算以及位帶操作

文章出處:【微信號:單片機與嵌入式,微信公眾號:單片機與嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    詳解STM32帶操作

    STM32帶操作是一種非常有用的技術,它可以讓你直接訪問一個單一的,而不必去讀取或者寫入整個寄存器。這種技術可以用于提高代碼的執(zhí)行
    發(fā)表于 06-07 15:33 ?1514次閱讀

    帶操作原理

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

    STM32帶操作的方法

    前言這篇文章主要用來講解STM32帶操作,學習過51單片機的應改了解,在控制51單片機IO引腳時,只需要向某一個IO口賦值就可以實現,對應IO口的輸出高或地。那么
    發(fā)表于 01-17 06:27

    快速理解STM32帶操作原理

    Bit-banding簡稱帶,有人也叫段。支持帶操作后,可以使用普通的加載/存儲指令來對單一的比特進行讀寫。很多朋友是從學習51單片機過來的,都知道P1.1這個引腳可以單獨控制
    的頭像 發(fā)表于 09-03 15:40 ?5061次閱讀
    快速理解<b class='flag-5'>STM32</b><b class='flag-5'>位</b><b class='flag-5'>帶操作</b>原理

    STM32開發(fā)帶操作機制

    為了像51單片機一樣能夠對某個管腳單獨操作,引入了帶操作這樣的操作機制。 如下圖,帶(Bit band)區(qū)就是就是你想單獨
    的頭像 發(fā)表于 04-09 14:07 ?1856次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>中</b>的<b class='flag-5'>位</b><b class='flag-5'>帶操作</b>機制

    MCU_STM32帶操作 -- bit banding

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

    STM32帶操作

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

    STM32單片機---帶操作

    STM32單片機---帶操作一、帶操作二、寄存器地址與別名地址轉換技巧三、
    發(fā)表于 11-29 14:51 ?2次下載
    <b class='flag-5'>STM32</b>單片機---<b class='flag-5'>位</b><b class='flag-5'>帶操作</b>

    初識“帶操作

    ”什么是“帶操作”?CPU不能直接對位帶區(qū)的單個數據尋址,只能通過對位帶別名區(qū)的訪問(或讀/寫)實現對位帶區(qū)單個數據
    發(fā)表于 01-12 17:18 ?0次下載
    初識“<b class='flag-5'>位</b><b class='flag-5'>帶操作</b>”

    STM32帶操作

    1. 什么是帶操作?學習 51 單片機的時候就使用過位操作,通過關鍵字 sbit 對單片機IO口進行定義。但STM32沒有這樣的關鍵字,
    發(fā)表于 01-13 14:01 ?5次下載
    <b class='flag-5'>STM32</b>的<b class='flag-5'>位</b><b class='flag-5'>帶操作</b>

    STM32帶操作-詳解-計算過程

    前言這篇文章主要用來講解STM32帶操作,學習過51單片機的應改了解,在控制51單片機IO引腳時,只需要向某一個IO口賦值就可以實現,對應IO口的輸出高或地。那么
    發(fā)表于 01-17 10:43 ?5次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>位</b><b class='flag-5'>帶操作</b>-詳解-計算過程

    八、STM32帶操作

    一、帶區(qū)與帶別名區(qū)(一)帶介紹1、帶操作在學習51單片機時就已經使用過位操作,比如使用s
    發(fā)表于 01-18 11:12 ?8次下載
    八、<b class='flag-5'>STM32</b><b class='flag-5'>位</b><b class='flag-5'>帶操作</b>

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

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

    stm32帶操作有什么用

    STM32帶操作是一種在ARM Cortex-M微控制器中使用的特殊技術,它允許同時處理多個位,并且可以提高代碼效率和性能。在這篇文章,我將詳細介紹
    的頭像 發(fā)表于 12-22 16:02 ?1907次閱讀

    STM32開發(fā)運算以及帶操作

    STM32開發(fā)運算以及
    的頭像 發(fā)表于 02-02 14:38 ?2280次閱讀
    主站蜘蛛池模板: 日韩在线视频一区二区三区 | 国产永久免费爽视频在线 | 色综合色综合色综合色综合 | 波多野结衣的毛片 | 久久亚洲国产午夜精品理论片 | 天天摸夜班摸天天碰 | 色多多视频网站 | 极品国产一区二区三区 | 亚洲午夜久久久久久噜噜噜 | 四虎影音在线观看 | 美女免费视频是黄的 | 亚洲网色 | 国产成人v爽在线免播放观看 | 久久久久毛片成人精品 | 天天爽夜夜爽一区二区三区 | 第四色成人网 | 国产激情久久久久影院小草 | 婷婷激情六月 | 色人阁婷婷 | 四虎在线免费播放 | 日本特黄特黄刺激大片免费 | 特黄三级| 天天看片天天干 | 久久综合欧美 | 在线观看深夜观看网站免费 | 伦理一区二区三区 | 狠狠色狠狠色 | 亚洲va老文色欧美黄大片人人 | 久久久久九九精品影院 | 国产成人永久免费视频 | 国产精品福利在线观看免费不卡 | 激情5月婷婷 | 天堂资源在线观看 | 日韩精品另类天天更新影院 | 国产美女叼嘿视频免费看 | 欧美人与zoxxxx | 99色综合 | 亚洲人色大成年网站在线观看 | 四虎免费影院在线播放 | 亚洲国产网址 | 88av在线看|