RM新时代网站-首页

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

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

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

STM32G4系列到底支不支持位帶操作

茶話MCU ? 來源:茶話MCU ? 作者:茶話MCU ? 2024-07-29 09:45 ? 次閱讀

印象中不止一次有人詢問STM32G4系列到底支不支持位帶操作。

其實(shí),從STM32G4系列的參考手冊可以看到,該系列芯片是確定支持位帶操作的,下面為參考手冊中的相關(guān)描述截圖。

b243e832-4cc0-11ef-b8af-92fbcf53809c.png

不過,在STM32G4系列參考手冊上關(guān)于Bitbanding的描述基本就上面這些了。這個位帶操作是否被支持終究跟內(nèi)核有關(guān),STM32G4系列是Cortex -M4核,相關(guān)內(nèi)核手冊也有關(guān)于Bit banding的描述。見下圖,位帶區(qū)和位帶別名區(qū)的地址安排及映射關(guān)系有清晰的定義。

b260b00c-4cc0-11ef-b8af-92fbcf53809c.png

顯然,結(jié)合STM32參考手冊及ARM Cortex-M4內(nèi)核手冊描述,STM32G4系列肯定是支持位帶操作的。

可是,有人在試圖利用位帶操作對STM32G4系列的GPIO進(jìn)行位操作時,根本成功不了。不知是硬件不支持還是自己的代碼哪里有問題。

我們再結(jié)合上圖看看,不難發(fā)現(xiàn),只有落在0x20000000~0x200fffff的RAM才支持位帶操作。對于外設(shè)寄存器來講,只有落在0x40000000~0x400ffff空間的寄存器才支持位帶操作。如果我們試圖進(jìn)行位操作的GPIO寄存器不落在這些區(qū)域自然沒法做位帶操作。

通過查看STM32G4參考手冊,我們可以發(fā)現(xiàn)該系列的GPIO的各種寄存器的地址空間落在0x48000000~0x48001bff區(qū)域,根本就沒落在位帶區(qū),也沒落在位帶別名區(qū)。

b29fd764-4cc0-11ef-b8af-92fbcf53809c.png

既然這樣,我們沒法針對STM32G4系列的GPIO寄存器使用位帶操作。

那么,在STM32G4系列里,有沒有其他外設(shè)可以支持位帶操作呢?即相應(yīng)外設(shè)寄存器地址空間位于0x40000000~0x400ffff區(qū)域。其實(shí),也是有的。比方片內(nèi)的部分TIMER外設(shè),見下圖。是否還有其它外設(shè)請細(xì)看手冊確認(rèn)。

b2bb7d66-4cc0-11ef-b8af-92fbcf53809c.png

當(dāng)然,位于0x20000000~0x200fffff區(qū)間的RAM也支持位帶操作。

下面我基于位帶操作對TIM2->CR1寄存器的CEN位,即該寄存器的bit0,和地址為0x20000800的RAM單元的bit2進(jìn)行寫1、寫0的操作。

我基于STM32G473及HAL庫創(chuàng)建工程,組織代碼。

b2cee96e-4cc0-11ef-b8af-92fbcf53809c.png

TIM2_BASE在庫中已經(jīng)定義,這里就沒有重復(fù)定義了。稍加調(diào)試后,我們可以基于位帶操作對TIM2->CR1的CEN位置位或清零,讓計(jì)數(shù)器時而計(jì)數(shù)時而暫停。我先將x20000800的RAM單元初始化為0xff,然后周期性修改為bit2,可以看到其值在0xff和0xfb兩者間切換。下圖為測試驗(yàn)證結(jié)果。

b2ee6262-4cc0-11ef-b8af-92fbcf53809c.png

好,關(guān)于STM32G4位帶操作的話題就聊到這里,上面主要是做些確認(rèn)和解釋,兼做提醒,免得走彎路浪費(fèi)精力和時間。這玩意用不用,看個人喜好,其實(shí)也并非所有Cortex-M核都支持位帶操作。

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

    關(guān)注

    31

    文章

    5336

    瀏覽量

    120229
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10895

    瀏覽量

    355724
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1204

    瀏覽量

    52051

原文標(biāo)題:STM32G4系列是否支持位帶操作

文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    對于STM32G4系列的MCU,其GPIO的操作是否還支持帶操作

    STM32G4的memory map。GPIO是掛在AHB2總線上的。 但是手冊里面沒有明確找到,其別名區(qū)的起始地址。
    發(fā)表于 03-21 07:34

    帶操作的相關(guān)資料推薦

    注意:本文中關(guān)于STM32帶操作原理只適用于Cortex-M3和Cortex-M4(F)內(nèi)核處理器,Cortex-M系列的其他內(nèi)核處理器
    發(fā)表于 02-07 09:24

    怎樣去使用stm32帶操作

    怎樣去使用stm32帶操作呢?stm32支持帶操作
    發(fā)表于 02-25 07:14

    為什么ch32vxx會不支持stm32帶操作

    為什么ch32vxx會不支持stm32帶操作呢?怎樣去解決ch32vxx不支持stm32
    發(fā)表于 02-28 07:18

    CH573到底不支持mesh組網(wǎng)?

    網(wǎng)絡(luò)內(nèi)的數(shù)據(jù)?我把配網(wǎng)以后的設(shè)備flash讀出來然后新設(shè)備首次上電寫入flash中雖然顯示了配網(wǎng)過了,但是發(fā)送的數(shù)據(jù)別的設(shè)備都收不到。另外我想說573到底不支持mesh組網(wǎng),對外宣稱組網(wǎng),遇到簡單
    發(fā)表于 08-15 07:59

    STM32G431不支持這種雙bank操作模式嗎?

    bank。此外,“FLASH_OPTR_DBANK”未在 HAL 中定義,這表明它不是一個選項(xiàng)。這是否意味著這個特定的 G4 系列不支持這種操作模式?
    發(fā)表于 12-06 06:43

    難道STM32G4芯片的主頻才到80MHz?

    由于死活找不出軟件或硬件方面的原因,幾近內(nèi)心崩潰。甚至不直覺地開始懷疑該芯片是否真的支持170MHz的主頻。所以他的問題簡單直接,STM32G4到底
    的頭像 發(fā)表于 07-05 10:41 ?8756次閱讀
    難道<b class='flag-5'>STM32G4</b>芯片的主頻才到80MHz?

    快速理解STM32帶操作原理

    Bit-banding簡稱帶,有人也叫段。支持帶操作后,可以使用普通的加載/存儲指令來對單一的比特進(jìn)行讀寫。很多朋友是從學(xué)習(xí)51單片
    的頭像 發(fā)表于 09-03 15:40 ?4722次閱讀
    快速理解<b class='flag-5'>STM32</b><b class='flag-5'>位</b><b class='flag-5'>帶操作</b>原理

    openharmony不支持安卓嗎

    前面議論紛紛的鴻蒙是安卓套殼時代話題結(jié)束了,現(xiàn)在,openharmony 不支持安卓系統(tǒng)的話題又出現(xiàn)了?那么,openharmony 到底不支持
    的頭像 發(fā)表于 06-23 09:43 ?2088次閱讀

    STM32學(xué)習(xí)筆記:帶操作(Bit_band Operations)

    注意:本文中關(guān)于STM32帶操作原理只適用于Cortex-M3和Cortex-M4(F)內(nèi)核處理器,Cortex-M系列的其他內(nèi)核處理器
    發(fā)表于 12-04 12:36 ?0次下載
    <b class='flag-5'>STM32</b>學(xué)習(xí)筆記:<b class='flag-5'>位</b><b class='flag-5'>帶操作</b>(Bit_band Operations)

    初識“帶操作

    目錄初識“帶操作”什么是“帶操作”?STM32的“帶操
    發(fā)表于 01-12 17:18 ?0次下載
    初識“<b class='flag-5'>位</b><b class='flag-5'>帶操作</b>”

    STM32G4 系列壽命估算

    STM32G4 系列壽命估算
    發(fā)表于 11-21 08:11 ?2次下載
    <b class='flag-5'>STM32G4</b> <b class='flag-5'>系列</b>壽命估算

    AN5306_OPAMP在STM32G4系列中的應(yīng)用

    AN5306_OPAMP在STM32G4系列中的應(yīng)用
    發(fā)表于 11-21 08:11 ?4次下載
    AN5306_OPAMP在<b class='flag-5'>STM32G4</b><b class='flag-5'>系列</b>中的應(yīng)用

    AN5310_使用STM32F3系列STM32G4系列設(shè)備的模擬特性指南

    AN5310_使用STM32F3系列STM32G4系列設(shè)備的模擬特性指南
    發(fā)表于 11-21 17:06 ?2次下載
    AN5310_使用<b class='flag-5'>STM32</b>F3<b class='flag-5'>系列</b>與<b class='flag-5'>STM32G4</b><b class='flag-5'>系列</b>設(shè)備的模擬特性指南

    STM32G4系列安全手冊

    STM32G4系列安全手冊
    發(fā)表于 11-22 08:21 ?3次下載
    <b class='flag-5'>STM32G4</b><b class='flag-5'>系列</b>安全手冊
    RM新时代网站-首页