為什么基于Cortex-M3/M4的STM32芯片組織的用戶代碼移植到基于Cortex-M0/M0+的STM32芯片時為何可能會發(fā)生非對齊錯誤?
這是因為基于Cortex-M3/M4的STM32芯片對數(shù)據(jù)訪問的對齊要求不那么嚴格,即使非對齊訪問也可以支持,當(dāng)然可能會犧牲訪問效率。而對于Cortex-M0/M0+的芯片則明確不支持對數(shù)據(jù)的非對齊訪問。顯然,我們設(shè)計代碼時盡量遵循對齊訪問便于移植。
因為內(nèi)核的差異導(dǎo)致我們在應(yīng)用上的誤解或誤用,這也是常有的事情。我這里剛好就最近某STM32用戶咨詢的問題稍作整理,順便做個簡單分享。
下面是部分Cortex-M內(nèi)核的NVIC特性差異對照表,有興趣的話可以看看。
該表格是我從The Definitive guide to ARM Cortex-M0 and ARM Cortex-M0+
Processors文檔里提取而來,分享給大家算是借花獻佛。
-
芯片
+關(guān)注
關(guān)注
456文章
51283瀏覽量
427823 -
mcu
+關(guān)注
關(guān)注
146文章
17358瀏覽量
352824 -
STM32
+關(guān)注
關(guān)注
2273文章
10926瀏覽量
357802 -
Cortex
+關(guān)注
關(guān)注
2文章
203瀏覽量
46616
發(fā)布評論請先 登錄
相關(guān)推薦
STM32F407 ADC結(jié)果無法右對齊怎么辦?
將STM32F103的程序移植到STM32F107VC上,用不了該怎么辦
uboot移植遇到壞塊該怎么辦?
將代碼移植到nucleoSTM32F072RBT6上出現(xiàn)錯誤
sx1278驅(qū)動移植時報錯怎么辦?如何解決
求助,請問RISC-V系列MCU不支持非對齊訪問嗎?
STM32 進入Stop模式后電流還是很大怎么辦?
![<b class='flag-5'>STM32</b> 進入Stop模式后電流還是很大<b class='flag-5'>怎么辦</b>?](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
stm32h743外部RAM非字節(jié)對齊訪問,引起的hard fault
![<b class='flag-5'>stm32</b>h743外部RAM<b class='flag-5'>非</b>字節(jié)<b class='flag-5'>對齊</b>訪問,引起的hard fault](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32-不同芯片的移植
![<b class='flag-5'>STM32</b>-不同<b class='flag-5'>芯片</b>的<b class='flag-5'>移植</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論