STM32燒錄程序正常,但是運行異常

一、硬件配置問題

  1. BOOT引腳設置錯誤
    STM32的啟動模式由BOOT0和BOOT1引腳決定。若設置為從RAM啟動(BOOT0=1,BOOT1=0),程序在掉電后無法保存,導致復位后無法正常運行。應確保BOOT0=0(從Flash啟動)15。
    檢查步驟

    • 確認硬件電路中BOOT0引腳是否接地(非調試狀態下)。
    • 檢查BOOT1引腳是否未被意外拉高。
  2. 電源或復位電路不穩定
    電源電壓波動或復位信號異常可能導致程序運行異常。例如,VDDA(模擬電源)未正確連接或濾波電容失效,可能導致芯片內部邏輯錯誤25。
    解決方法

    • 用示波器檢查電源電壓是否穩定(如3.3V±5%)。
    • 確保復位電路中的電容和電阻參數符合要求(如10kΩ上拉電阻+100nF電容)。
  3. 晶振未正常工作
    外部晶振未起振或頻率偏差過大,可能導致程序初始化失敗。尤其在使用HSE(外部高速時鐘)時需重點排查46。
    驗證方法

    • 測量晶振引腳波形是否正常(8MHz或12MHz)。
    • 嘗試切換為HSI(內部時鐘)以排除晶振問題。

二、軟件代碼邏輯缺陷

  1. 外設初始化順序錯誤
    例如,串口時鐘使能(如USART1)與GPIO時鐘使能順序顛倒,可能導致硬件復位后外設無法正常工作,而燒錄后自動運行可能因時序差異暫時正常6。
    修正建議

    • 確保先使能外設時鐘,再配置引腳和功能。
    • 檢查代碼中是否存在未初始化的外設(如未關閉的DMA或中斷)。
  2. 中斷或堆棧溢出
    未處理的中斷或堆棧空間不足可能導致程序跑飛。例如,未正確配置NVIC優先級或未清除中斷標志位26。
    調試方法

    • 在調試模式下單步執行,觀察是否觸發HardFault異常。
    • 增大堆棧大小(通過修改啟動文件中的Stack_Size)。

三、Flash及燒錄配置問題

  1. Flash寫保護未解除
    若芯片被設置為讀/寫保護狀態,程序可能無法正確寫入或運行。需通過調試工具(如ST-Link Utility)解除保護23。
    操作步驟

    • 使用工具擦除整個Flash區域。
    • 重新燒錄未加密的固件。
  2. 燒錄后未執行完整復位
    某些燒錄工具(如Keil)在下載后可能未觸發硬件復位,導致程序未從正確地址啟動。
    解決方法

    • 在燒錄選項中勾選“Reset after Programming”5。
    • 手動重啟開發板以驗證運行狀態。

四、其他潛在因素

  1. SWJ引腳被占用
    若程序將SWD或JTAG引腳(如PA13/PA14)配置為普通GPIO,可能導致調試接口失效,間接影響程序運行邏輯23。
    排查建議

    • 檢查代碼中是否誤配置了調試引腳功能。
    • 使用“從RAM啟動”模式擦除原有程序。
  2. 硬件設計缺陷
    如PCB布局不合理(高頻信號干擾)、未添加去耦電容等,可能導致偶發性故障。需結合硬件原理圖排查46。


總結步驟

  1. 優先級排查:檢查BOOT引腳→電源/復位電路→Flash保護狀態→外設初始化順序。
  2. 工具輔助:使用示波器測量電源和晶振波形,通過ST-Link Utility解除保護。
  3. 代碼優化:啟用看門狗(IWDG)檢測程序卡死,增加關鍵節點的調試輸出(如LED或串口日志)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81403.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81403.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81403.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

汽車二自由度系統模型以及電動助力轉向系統模型

汽車二自由度系統模型與電動助力轉向系統(EPS)的詳細建模方案,包含理論推導、MATLAB/Simulink實現代碼及參數說明: 一、二自由度汽車模型 1. 模型描述 包含以下兩個自由度: 橫向運動(側向加速度&#xf…

git提交庫常用詞

新功能 feat修改BUG fix文檔修改 docs格式修改 style重構 refactor性能提升 perf測試 test構建系統 build對CI配置文件修改 ci修改構建流程、或增加依賴庫、工具 chore回滾版本 revert

JavaScript 時間轉換:從 HH:mm:ss 到十進制小時及反向轉換

關鍵點 JavaScript 可以輕松實現時間格式(HH:mm:ss 或 HH:mm)與十進制小時(如 17.5)的相互轉換。兩個函數分別處理時間字符串到十進制小時,以及十進制小時到時間字符串的轉換,支持靈活的輸入和輸出格式。這…

LLM智能體新紀元:深入解析MCP與A2A協議,賦能智能自動化協作

LLM智能體(LLM agents)是能夠自主行動以實現特定目標的AI系統。在實際應用中,智能體能夠將用戶請求拆解為多個步驟,利用知識庫或API獲取數據,最終整合出答案。這讓智能體相比于傳統獨立聊天機器人擁有更強大的能力——…

[PMIC]PMIC重要知識點總結

PMIC重要知識點總結 摘要:PMIC (Power Management Integrated Circuit) 是現代電子設備中至關重要的組件,負責電源管理,包括電壓調節、電源轉換、電池管理和功耗優化等。PMIC 中的數字部分主要涉及控制邏輯、狀態機、寄存器配置、通信接口&am…

PYTHON訓練營DAY28

類 (一)題目1:定義圓(Circle)類 要求: 包含屬性:半徑 radius。包含方法: calculate_area():計算圓的面積(公式:πr)。calculate_circ…

機器學習-人與機器生數據的區分模型測試 -數據篩選

內容繼續機器學習-人與機器生數據的區分模型測試 使用隨機森林的弱學習樹來篩選相對穩定的特征數據 # 隨機森林篩選特征 X data.drop([city, target], axis1) # 去除修改前的城市名稱列和目標變量列 y data[target] X_train, X_test, y_train, y_test train_test_split(X…

Data whale LLM universe

使用LLM API開發應用 基本概念 Prompt Prompt 最初指的是自然語言處理研究人員為下游任務設計的一種任務專屬的輸入模板。 Temperature 使用Temperature參數控制LLM生成結果的隨機性和創造性,一般取值設置在0~1之間,當取值接近1的時候預測的隨機性較…

Azure 應用的托管身份與服務主體

Microsoft Entra ID -- 前稱 Azure Active Directory -- 提供強大的身份驗證和授權功能。托管身份和服務主體通過限制憑據暴露的風險來幫助確保對 Azure 資源的訪問安全。 托管身份為Azure原生應用程序自動管理身份,而服務主體則非常適合需要訪問Azure資源的外部應…

16 C 語言布爾類型與 sizeof 運算符詳解:布爾類型的三種聲明方式、執行時間、賦值規則

1 布爾類型 1.1 布爾類型概述 布爾類型用于表示邏輯上的真(true)和假(false)兩種狀態,是編程中條件判斷和邏輯運算的基礎。在 C 語言中,布爾值的表示方式隨著標準的發展而不斷完善。 1.2 布爾類型的三種聲…

【C++詳解】string各種接口如何使用保姆級攻略

文章目錄 一、string介紹二、string使用構造函數析構函數賦值運算符重載string的遍歷修改方法1、下標[]2、迭代器3、范圍for 迭代器使用詳解const迭代器反向迭代器(reverse) Capacity(容量相關)size/lengthmax_sizecapacityclear/emptyshrink_to_fit(縮容)reserve(擴…

回調函數應用示例

回調函數是一種通過函數指針(或引用)調用的函數,它在特定事件或條件發生時被另一個函數調用。回調函數的核心思想是將函數作為參數傳遞,以便在適當的時候執行自定義邏輯,常用于異步編程、事件驅動架構等場景。 業務場景…

linux標準庫頭文件解析

linuxc標準庫 C 標準庫&#xff08;C Standard Library&#xff09;包含了一組頭文件&#xff0c;這些頭文件提供了許多函數和宏&#xff0c;用于處理輸入輸出、字符串操作、數學計算、內存管理等常見編程任務。。 頭文件功能簡介<stdio.h>標準輸入輸出庫&#xff0c;包含…

Unbuntu 命令

Ubuntu 命令速查表? ?分類??命令??功能描述??示例/常用選項????文件與目錄?ls列出目錄內容ls -a&#xff08;顯示隱藏文件&#xff09;; ls -lh&#xff08;詳細列表易讀大小&#xff09; cd切換目錄cd ~&#xff08;主目錄&#xff09;; cd ..&#xff08;上級…

怎么在excel單元格1-5行中在原來內容前面加上固定一個字?

環境&#xff1a; WPS 2024 問題描述&#xff1a; 怎么在excel單元格1-5行中在原來內容前面加上固定一個字&#xff1f; 解決方案&#xff1a; 1.在Excel中&#xff0c;如果您想在單元格的內容前面添加一個固定的字&#xff0c;可以通過以下幾種方法實現&#xff1a; 方法…

Linux zip、unzip 壓縮和解壓

zip 命令用于壓縮文件&#xff0c;壓縮后的文件后綴名為 .zip 。 對應的解壓命令是 unzip 。 測試用的目錄結構如下&#xff0c; userzn:~/test$ tree . ├── folder1 │ ├── folder111 │ │ └── file1.txt │ └── main1.c ├── folder2 │ ├── …

【C語言練習】047. 理解遞歸與循環的轉換

047. 理解遞歸與循環的轉換 047. 理解遞歸與循環的轉換1. 遞歸與循環的基本概念遞歸循環2. 遞歸與循環的轉換示例1:計算階乘示例2:漢諾塔問題3. 遞歸與循環的適用場景遞歸:循環:一、遞歸的適用場景與代碼示例1. 分治問題2. 樹形結構遍歷3. 復雜狀態問題二、循環的適用場景與…

我的創作紀念日——《驚變256天》

我的創作紀念日——《驚變256天》 機緣收獲日常成就憧憬 最近&#xff0c;博主收到了 CSDN 發來的系統消息&#xff0c;這才驚覺&#xff0c;自上次第128天創作紀念日之后&#xff0c;竟又悄然走過了 128 天。站在 256 天這個頗具意義的里程碑前回望&#xff0c;博主在2023 年 …

Redis 事務與管道:原理、區別與應用實踐

在現代分布式系統開發中&#xff0c;Redis 作為高性能的內存數據庫&#xff0c;其事務處理和管道技術是開發者必須掌握的核心知識點。本文將深入探討 Redis 事務和管道的實現原理、使用場景、性能差異以及最佳實踐&#xff0c;幫助開發者根據實際需求選擇合適的技術方案。 一、…

Mysql 8.0.32 union all 創建視圖后中文模糊查詢失效

記錄問題,最近在使用union all聚合了三張表的數據,創建視圖作為查詢主表,發現字段值為中文的篩選無法生效.......... sql示例: CREATE OR REPLACE VIEW test_view AS SELECTid,name,location_address AS address,type,"1" AS data_type,COALESCE ( update_time, cr…