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

完善資料讓更多小伙伴認識你,還能領(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ù)訪問的對齊要求不那么嚴格,即使非對齊訪問也可以支持,當然可能會犧牲訪問效率。而對于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文檔里提取而來,分享給大家算是借花獻佛。

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

    關(guān)注

    453

    文章

    50254

    瀏覽量

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

    關(guān)注

    146

    文章

    16922

    瀏覽量

    349995
  • STM32
    +關(guān)注

    關(guān)注

    2264

    文章

    10858

    瀏覽量

    354407
  • Cortex
    +關(guān)注

    關(guān)注

    2

    文章

    202

    瀏覽量

    46417
收藏 人收藏

    評論

    相關(guān)推薦

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

    STM32用戶將基于STM32F0芯片代碼移植
    的頭像 發(fā)表于 11-18 14:12 ?1083次閱讀
    因<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進行項目實驗時,代碼編譯鏈接無報錯。最近需要將代碼移植nucleo
    發(fā)表于 12-23 06:18

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

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

    電池換新無法可依怎么辦

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

    移植FreeRTOSSTM32開發(fā)板上的工程文件和源代碼免費下載

    本文檔的主要內(nèi)容詳細介紹的是移植FreeRTOSSTM32開發(fā)板上的工程文件和源代碼免費下載。
    發(fā)表于 01-07 08:00 ?16次下載
    <b class='flag-5'>移植</b>FreeRTOS<b class='flag-5'>到</b><b class='flag-5'>STM32</b>開發(fā)板上的工程文件和源<b class='flag-5'>代碼</b>免費下載

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

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

    STM32 進入Stop模式后電流還是很大怎么辦?

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

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

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

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

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