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

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

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

用戶代碼移植到STM32芯片時發(fā)生非對齊錯誤怎么辦

麥辣雞腿堡 ? 來源:茶話MCU ? 作者:茶話MCU ? 2023-09-09 15:48 ? 次閱讀

為什么基于Cortex-M3/M4的STM32芯片組織的用戶代碼移植到基于Cortex-M0/M0+的STM32芯片時為何可能會發(fā)生非對齊錯誤?

這是因為基于Cortex-M3/M4的STM32芯片對數(shù)據(jù)訪問的對齊要求不那么嚴(yán)格,即使非對齊訪問也可以支持,當(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文檔里提取而來,分享給大家算是借花獻(xiàn)佛。

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

    關(guān)注

    456

    文章

    50919

    瀏覽量

    424582
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17173

    瀏覽量

    351625
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10906

    瀏覽量

    356518
  • Cortex
    +關(guān)注

    關(guān)注

    2

    文章

    202

    瀏覽量

    46516
收藏 人收藏

    評論

    相關(guān)推薦

    STM32移植而引發(fā)的兩個小疑問

    STM32用戶將基于STM32F0芯片代碼移植
    的頭像 發(fā)表于 11-18 14:12 ?1172次閱讀
    因<b class='flag-5'>STM32</b><b class='flag-5'>移植</b>而引發(fā)的兩個小疑問

    STM32F407 ADC結(jié)果無法右對齊怎么辦?

    從例程里面復(fù)制的main自己建立的模板里面就出現(xiàn)了這樣的問題,這個“ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;”已經(jīng)設(shè)為右對齊,可是串口出來的數(shù)據(jù)還是0xXXX0,四個四位數(shù)(最右始終為0),明顯是左
    發(fā)表于 09-10 09:34

    STM32F103的程序移植STM32F107VC上,用不了該怎么辦

    做畢業(yè)設(shè)計,小白一枚,把DW1000測距的代碼STM32F103上移植STM32F107VC上,改了啟動文件和宏定義,也改了時鐘,程序可
    發(fā)表于 01-08 09:37

    uboot移植遇到壞塊該怎么辦?

    nand flash 應(yīng)該也沒什么問題才對, 而且視頻教程上也是燒寫到 nand flash上的。 猜想:是因為 nand flash 壞塊的原因嗎?2、如果 uboot.bin 大于4K ,還能繼續(xù)燒寫到 nor flash上嗎?如果不能,應(yīng)該怎么辦? 期待你們的解答,謝謝!輸出的
    發(fā)表于 09-29 10:10

    代碼移植nucleoSTM32F072RBT6上出現(xiàn)錯誤

    之前在使用nucleo STM32F091RCT6進(jìn)行項目實驗時,代碼編譯鏈接無報錯。最近需要將代碼移植nucleo
    發(fā)表于 12-23 06:18

    sx1278驅(qū)動移植時報錯怎么辦?如何解決

    sx1278驅(qū)動移植時報錯怎么辦?如何解決?為什么會同時調(diào)用stm32f10x.h和stm32f103xe.h這兩個頭文件呢?
    發(fā)表于 02-21 07:23

    求助,請問RISC-V系列MCU不支持對齊訪問嗎?

    的hardfault,即對齊load address錯誤。網(wǎng)上搜了一下,好像說RISC-V還是像CORTEX-M系列那樣,能訪問,只是速度一樣會很慢。但是現(xiàn)在直接hardfault了。不允許
    發(fā)表于 06-20 06:37

    電池?fù)Q新無法可依怎么辦

    電池壞了怎么辦?修。修不好怎么辦?換。
    發(fā)表于 03-19 11:23 ?1405次閱讀

    STM32F4芯片移植_LVGL7.11_UCOS移植代碼工程

    STM32F4芯片移植_LVGL7.11_UCOS移植代碼工程
    發(fā)表于 12-09 17:45 ?24次下載

    STM32 進(jìn)入Stop模式后電流還是很大怎么辦

    STM32 進(jìn)入Stop模式后電流還是很大怎么辦?STM32 進(jìn)入停止模式后電流還是很大,可能椒幾百個uA,怎么辦?通常做法有如下幾點:MCU外圍管腳配置檢查外圍有無閉合回路SWDIO
    發(fā)表于 12-08 20:51 ?16次下載
    <b class='flag-5'>STM32</b> 進(jìn)入Stop模式后電流還是很大<b class='flag-5'>怎么辦</b>?

    stm32h743外部RAM字節(jié)對齊訪問,引起的hard fault

    stm32h743外部RAM字節(jié)對齊訪問,引起的hard fault
    發(fā)表于 12-09 09:21 ?5次下載
    <b class='flag-5'>stm32</b>h743外部RAM<b class='flag-5'>非</b>字節(jié)<b class='flag-5'>對齊</b>訪問,引起的hard fault

    STM32-不同芯片移植

    在實際項目中,我們根據(jù)項目需求選用最合適的芯片型號,有時會涉及一個工程代碼在不同芯片上的使用,不同型號的芯片如何
    發(fā)表于 12-29 18:49 ?5次下載
    <b class='flag-5'>STM32</b>-不同<b class='flag-5'>芯片</b>的<b class='flag-5'>移植</b>

    STM32移植的mx wifi源代碼

    STM32移植的mx_wifi源代碼,可方便移植其他的STM32單片機(jī)上。
    發(fā)表于 09-26 16:35 ?2次下載

    STM32的Flash寫了保護(hù)怎么辦?STM32如何設(shè)置讀保護(hù)和解除讀保護(hù)?

    STM32的Flash寫了保護(hù)怎么辦?STM32如何設(shè)置讀保護(hù)和解除讀保護(hù)? 一、STM32的Flash寫了保護(hù)怎么辦? 當(dāng)
    的頭像 發(fā)表于 10-29 17:24 ?1.3w次閱讀

    工控主板發(fā)生故障該怎么辦?

    工控主板發(fā)生故障該怎么辦?前幾天有個客戶問了我這個問題,大部分情況下出現(xiàn)的故障并不可怕,主要是用戶粗心大意造成的。那今天小編就來講解一下工控主板一般會出現(xiàn)故障的主要原因及判斷方法:
    的頭像 發(fā)表于 04-11 18:19 ?897次閱讀