一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

STM32硬件錯誤的調(diào)試技巧

小麥大叔 ? 來源:小麥大叔 ? 作者:小麥大叔 ? 2022-07-21 14:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在用KeilSTM32的程序進行仿真時程序有時會跑飛,停止仿真程序會停在HardFault_Handler函數(shù)里的死循環(huán)while(1)中。

這說明STM32出現(xiàn)了硬件錯誤。

4651ec2c-08a8-11ed-ba43-dac502259ad0.png

硬件錯誤中斷

STM32出現(xiàn)硬件錯誤可能有以下原因:

數(shù)組越界操作;

內(nèi)存溢出,訪問越界;

堆棧溢出,程序跑飛;

中斷處理錯誤;

遇到這種情況,可以通過以下2種方式來定位到出錯代碼段。

方法1:

在硬件中斷函數(shù)HardFault_Handler里的while(1)處打調(diào)試斷點,程序執(zhí)行到斷點處時點擊STOP停止仿真。

466c27d6-08a8-11ed-ba43-dac502259ad0.png

示例

1.2 在Keil菜單欄點擊View——Registers Window,在寄存器查看窗口查找R14(LR)的值。

如果R14(LR) = 0xFFFFFFE9,繼續(xù)查看MSP(主堆棧指針)的值;如果R14(LR) = 0xFFFFFFFD,繼續(xù)查看PSP(進程棧指針)的值;

我的程序R14(LR) = 0xFFFFFFF9,接下來以此為例。

467999d4-08a8-11ed-ba43-dac502259ad0.png

寄存器信息

1.3 在Keil菜單欄點擊“View”——“Memory Windows”——“Memory1”;

在“Address”地址欄中輸入MSP的值:0x20001288,然后在對應的行里找到地址。

地址一般以0x08開頭的32位數(shù)。本例中,地址為0x08003CB9。

4691ad3a-08a8-11ed-ba43-dac502259ad0.png

內(nèi)存信息

1.4 在Keil菜單欄點擊View——Disassembly Window,在Disassembly窗口中右擊,在下拉菜單中選擇Show Disassemblyat Address...。

在彈出框Show Code atAdress的地址框中輸入地址0x08003CB9進行搜索,然后就會找到相對應的代碼。這里的代碼就是進入循環(huán)中斷之前的情況。

仔細查看附近區(qū)域的相關(guān)代碼來排查錯誤具體原因。

46b206c0-08a8-11ed-ba43-dac502259ad0.jpg

方法2:

2.1在硬件中斷函數(shù)HardFault_Handler里的while(1)處打調(diào)試斷點,程序執(zhí)行到斷點處時點擊“STOP”停止仿真。

46d05efe-08a8-11ed-ba43-dac502259ad0.jpg

CallStack

2.2 在Keil菜單欄點擊View——Call Stack Window彈出Call Stack + Locals對話框。

然后在對話框中右鍵選擇Show Caller Code,就會跳轉(zhuǎn)到出錯之前的函數(shù)處,仔細查看這部分函數(shù)被調(diào)用或者數(shù)組內(nèi)存使用情況。

審核編輯 :李倩

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

    關(guān)注

    2291

    文章

    11022

    瀏覽量

    363500
  • 硬件
    +關(guān)注

    關(guān)注

    11

    文章

    3473

    瀏覽量

    67344
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4377

    瀏覽量

    64556

原文標題:簡單實用!STM32硬件錯誤的調(diào)試技巧

文章出處:【微信號:knifewheat,微信公眾號:小麥大叔】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    使用STM32CubeIDE調(diào)試STM32MP157D的M4內(nèi)核時報了下圖這個錯誤,怎么解決?

    我使用STM32CubeIDE調(diào)試STM32MP157D的M4內(nèi)核時報了下圖這個錯誤: 經(jīng)過我的排除后發(fā)現(xiàn),應該是STM32CubeIDE
    發(fā)表于 06-18 06:57

    硬件調(diào)試:JLink 驅(qū)動配置與調(diào)試技巧

    摘要: 本文深入探討了 JLink 調(diào)試器在嵌入式系統(tǒng)硬件調(diào)試中的應用,詳細闡述了 JLink 驅(qū)動配置的方法以及硬件調(diào)試技巧。本文以國科安
    的頭像 發(fā)表于 06-12 23:20 ?344次閱讀
    <b class='flag-5'>硬件</b><b class='flag-5'>調(diào)試</b>:JLink 驅(qū)動配置與<b class='flag-5'>調(diào)試</b>技巧

    STM32F10xxx硬件開發(fā)指南

    官方STM32F10xxx硬件開發(fā)指南
    發(fā)表于 04-14 14:59 ?2次下載

    在mimxrt1170_evk調(diào)試hello_world出現(xiàn)硬件傳輸錯誤怎么解決?

    錯誤 硬件傳輸錯誤 調(diào)試上下文:evkmimxrt1170_hello_world_cm4 LinkServer Debug 請指教,非常感謝!
    發(fā)表于 03-25 07:31

    如何通過J-Link實現(xiàn)STM32H5控制調(diào)試端口

    基于J-Link實現(xiàn)STM32H5安全編程介紹了在禁用TrustZone時,如何通過J-Link實現(xiàn)STM32H5控制調(diào)試端口的安全鎖定或回歸打開。
    的頭像 發(fā)表于 03-17 10:25 ?425次閱讀
    如何通過J-Link實現(xiàn)<b class='flag-5'>STM32</b>H5控制<b class='flag-5'>調(diào)試</b>端口

    使用STM32CubeIDE調(diào)試STM32MP157D的M4內(nèi)核時報了錯誤怎么解決?

    我使用STM32CubeIDE調(diào)試STM32MP157D的M4內(nèi)核時報了下圖這個錯誤: 經(jīng)過我的排除后發(fā)現(xiàn),應該是STM32CubeIDE
    發(fā)表于 03-14 06:01

    STM32F103C8T6使用CubeIDE燒錄運行報硬件錯誤,相同代碼MDK燒錄卻可以正常運行,為什么?

    自制PCB使用STM32F103C8T6,通過STM32CubeMX生成了CubeIDE項目和MDK項目,編譯下載相同的代碼CubeIDE不能正常執(zhí)行,經(jīng)過調(diào)試發(fā)現(xiàn)進入了硬件
    發(fā)表于 03-12 06:18

    STM32 AD采集:電阻分壓電路調(diào)試指南

    調(diào)試基于STM32為主控,內(nèi)部ADC采集電阻分壓式電壓值電路,STM32未使用參考電壓源,直接將Vref接至3V3供電端,發(fā)現(xiàn)采集后電壓誤差較大,其電路圖如下所示。 理論計算 根據(jù)分壓公式,理想Vr
    的頭像 發(fā)表于 02-07 11:12 ?1923次閱讀
    <b class='flag-5'>STM32</b> AD采集:電阻分壓電路<b class='flag-5'>調(diào)試</b>指南

    如何進行硬件調(diào)試?

    硬件調(diào)試硬件系統(tǒng)設計、開發(fā)和制造過程中不可或缺的一環(huán),旨在對可能出現(xiàn)的問題進行分析和解決。以下是進行硬件調(diào)試的一般步驟和方法: 一、準備階
    的頭像 發(fā)表于 11-10 10:17 ?2219次閱讀
    如何進行<b class='flag-5'>硬件</b><b class='flag-5'>調(diào)試</b>?

    socket編程中的錯誤處理技巧

    錯誤處理能夠確保程序在遇到異常情況時不會崩潰,而是能夠優(yōu)雅地處理問題。 提升用戶體驗 :通過適當?shù)?b class='flag-5'>錯誤處理,可以給用戶提供清晰的錯誤信息,避免用戶感到困惑。 便于調(diào)試和維護 :良好
    的頭像 發(fā)表于 11-01 17:47 ?1491次閱讀

    stm32下載完成,但沒執(zhí)行,為什么

    1. 硬件連接問題 檢查USB線和接口 :確保使用的USB線和接口沒有損壞。 檢查電源 :確保STM32板子正確供電。 檢查下載線 :使用ST-Link或其他兼容的下載線,并確保它們連接正確。 2.
    的頭像 發(fā)表于 09-02 09:25 ?3935次閱讀

    第三篇-V1.5 TB6612電機pwm控制STM32智能小車 STM32F103C8T6單片機

    通過合理的硬件設計和詳細的視頻筆記介紹,硬件使用STM32F103主控資料多方便學習,通過3萬字筆記、12多個小時視頻、20多章節(jié)代碼手把手教會你如何開發(fā)和調(diào)試
    的頭像 發(fā)表于 08-12 18:29 ?2711次閱讀
    第三篇-V1.5 TB6612電機pwm控制<b class='flag-5'>STM32</b>智能小車 <b class='flag-5'>STM32</b>F103C8T6單片機

    開發(fā)攻略之STM32調(diào)試端口的映射

    最近有一個項目用到了STM32F103RB系列單片機,由于引腳數(shù)量較少,不得不使用到了單片機的PB3和PB4兩個引腳。而這兩個引腳剛好又是STM32系列的JTAG調(diào)試引腳,如果要用于普通IO的功能
    的頭像 發(fā)表于 08-03 08:11 ?827次閱讀
    開發(fā)攻略之<b class='flag-5'>STM32</b><b class='flag-5'>調(diào)試</b>端口的映射

    說說硬件調(diào)試中發(fā)現(xiàn)的那些低級錯誤

    說說硬件調(diào)試中發(fā)現(xiàn)的那些低級錯誤 2024-07-03 11:47**·**一博高速先生 高速先生成員--周偉 最近遇到很多debug相關(guān)的咨詢,曾經(jīng)我們說過,我們做過的板子越多,遇到問題的概率也
    發(fā)表于 07-03 12:02

    說說硬件調(diào)試中發(fā)現(xiàn)的那些低級錯誤

    硬件調(diào)試中會經(jīng)常遇到各種意想不到的問題,有些調(diào)試花了幾個月,各種能想到的辦法都嘗試了,最后發(fā)現(xiàn)卻是一個非常低級的錯誤,有多低級?請看今天的內(nèi)文介紹。
    的頭像 發(fā)表于 07-03 12:00 ?684次閱讀
    說說<b class='flag-5'>硬件</b><b class='flag-5'>調(diào)試</b>中發(fā)現(xiàn)的那些低級<b class='flag-5'>錯誤</b>