印象中不止一次有人詢問(wèn)STM32G4系列到底支不支持位帶操作。
其實(shí),從STM32G4系列的參考手冊(cè)可以看到,該系列芯片是確定支持位帶操作的,下面為參考手冊(cè)中的相關(guān)描述截圖。
不過(guò),在STM32G4系列參考手冊(cè)上關(guān)于Bitbanding的描述基本就上面這些了。這個(gè)位帶操作是否被支持終究跟內(nèi)核有關(guān),STM32G4系列是Cortex -M4核,相關(guān)內(nèi)核手冊(cè)也有關(guān)于Bit banding的描述。見(jiàn)下圖,位帶區(qū)和位帶別名區(qū)的地址安排及映射關(guān)系有清晰的定義。
顯然,結(jié)合STM32參考手冊(cè)及ARM Cortex-M4內(nèi)核手冊(cè)描述,STM32G4系列肯定是支持位帶操作的。
可是,有人在試圖利用位帶操作對(duì)STM32G4系列的GPIO進(jìn)行位操作時(shí),根本成功不了。不知是硬件不支持還是自己的代碼哪里有問(wèn)題。
我們?cè)俳Y(jié)合上圖看看,不難發(fā)現(xiàn),只有落在0x20000000~0x200fffff的RAM才支持位帶操作。對(duì)于外設(shè)寄存器來(lái)講,只有落在0x40000000~0x400ffff空間的寄存器才支持位帶操作。如果我們?cè)噲D進(jìn)行位操作的GPIO寄存器不落在這些區(qū)域自然沒(méi)法做位帶操作。
通過(guò)查看STM32G4參考手冊(cè),我們可以發(fā)現(xiàn)該系列的GPIO的各種寄存器的地址空間落在0x48000000~0x48001bff區(qū)域,根本就沒(méi)落在位帶區(qū),也沒(méi)落在位帶別名區(qū)。
既然這樣,我們沒(méi)法針對(duì)STM32G4系列的GPIO寄存器使用位帶操作。
那么,在STM32G4系列里,有沒(méi)有其他外設(shè)可以支持位帶操作呢?即相應(yīng)外設(shè)寄存器地址空間位于0x40000000~0x400ffff區(qū)域。其實(shí),也是有的。比方片內(nèi)的部分TIMER外設(shè),見(jiàn)下圖。是否還有其它外設(shè)請(qǐng)細(xì)看手冊(cè)確認(rèn)。
當(dāng)然,位于0x20000000~0x200fffff區(qū)間的RAM也支持位帶操作。
下面我基于位帶操作對(duì)TIM2->CR1寄存器的CEN位,即該寄存器的bit0,和地址為0x20000800的RAM單元的bit2進(jìn)行寫(xiě)1、寫(xiě)0的操作。
我基于STM32G473及HAL庫(kù)創(chuàng)建工程,組織代碼。
TIM2_BASE在庫(kù)中已經(jīng)定義,這里就沒(méi)有重復(fù)定義了。稍加調(diào)試后,我們可以基于位帶操作對(duì)TIM2->CR1的CEN位置位或清零,讓計(jì)數(shù)器時(shí)而計(jì)數(shù)時(shí)而暫停。我先將x20000800的RAM單元初始化為0xff,然后周期性修改為bit2,可以看到其值在0xff和0xfb兩者間切換。下圖為測(cè)試驗(yàn)證結(jié)果。
好,關(guān)于STM32G4位帶操作的話題就聊到這里,上面主要是做些確認(rèn)和解釋,兼做提醒,免得走彎路浪費(fèi)精力和時(shí)間。這玩意用不用,看個(gè)人喜好,其實(shí)也并非所有Cortex-M核都支持位帶操作。
-
寄存器
+關(guān)注
關(guān)注
31文章
5421瀏覽量
123343 -
STM32
+關(guān)注
關(guān)注
2289文章
11014瀏覽量
362389 -
GPIO
+關(guān)注
關(guān)注
16文章
1273瀏覽量
53585
原文標(biāo)題:STM32G4系列是否支持位帶操作
文章出處:【微信號(hào):stmcu832,微信公眾號(hào):茶話MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
對(duì)于STM32G4系列的MCU,其GPIO的位操作是否還支持位帶操作?
位帶操作的相關(guān)資料推薦
為什么ch32vxx會(huì)不支持stm32位帶操作呢
CH573到底支不支持mesh組網(wǎng)?
STM32G431不支持這種雙bank操作模式嗎?
難道STM32G4芯片的主頻才到80MHz?

快速理解STM32位帶操作原理

openharmony不支持安卓嗎
STM32學(xué)習(xí)筆記:位帶操作(Bit_band Operations)

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

評(píng)論