MCU+RTOS調試

1. 引言

? ? ? ? 在做項目時,百分之三十的時間寫代碼,還有百分之70的時間用于調試。本期將以Keil為例進行調試章節的講解,目的在于做出一個標準化的調試步驟,方便大家學習如何調試代碼。內容分為基礎調試、中級調試及進階調試三部分,本次主要講解基礎調試。

2. 基礎調試

2.1 調試設置

? ? ? ? 在Keil中,我們通常通過下載調試器進行調試。常見的下載調試器有DAP/Stlink等,本次講解以Stlink為例。首先,需要點擊魔術棒進行設置,點擊魔術棒,再點擊DeBug--點擊紅框中的Use,選擇Stlink Debugger,同時將其勾選;如下圖所示:

? ? ? ? 接下來點擊Utilities--取消勾選use debug driver,如下圖所示:

? ? ? ? 選擇Stlink Debugger,如下圖所示,最后點擊確定。

2.2 調試界面講解

? ? ? ? 點擊Keil工具欄的 “d”符號進入調試界面(前提是Stlink已經連接板子),如下圖所示:

? ? ? ? 進入后調試界面如下圖所示:

? ? ? ? 接下來介紹一下debug工具欄,如下圖所示:

復位:其功能等同于硬件上按復位按鈕。相當于實現了一次硬復位。按下該按鈕之后,代 碼會重新從頭開始執行。

執行到斷點處:該按鈕用來快速執行到斷點處,有時候你并不需要觀看每步是怎么執行的, 而是想快速的執行到程序的某個地方看結果,這個按鈕就可以實現這樣的功能,前提是你在查 看的地方設置了斷點。

停止運行:此按鈕在程序一直執行的時候會變為有效,通過按該按鈕,就可以使程序停止 下來,進入到單步調試狀態。

執行進去:該按鈕用來實現執行到某個函數里面去的功能,也就是進入函數中去執行每一行語句,這個過程會讓你看到。

執行過去:在碰到有函數的地方,通過該按鈕就可以單步執行過這個函數,而不進入這個 函數單步執行。

執行出去:該按鈕是在進入了函數單步調試的時候,有時候你可能不必再執行該函數的剩 余部分了,通過該按鈕就直接一步執行完函數余下的部分,并跳出函數,回到函數被調用的位 置。

執行到光標處:該按鈕可以迅速的使程序運行到光標處,其實是挺像執行到斷點處按鈕功 能,但是兩者是有區別的,斷點可以有多個,但是光標所在處只有一個。

匯編窗口:通過該按鈕,就可以查看匯編代碼,這對分析程序很有用。

堆棧局部變量窗口:通過該按鈕,顯示Call Stack+Locals窗口,顯示當前函數的局部變量 及其值,方便查看。

觀察窗口:MDK5提供2個觀察窗口(下拉選擇),該按鈕按下,會彈出一個顯示變量的窗 口,輸入你所想要觀察的變量/表達式,即可查看其值,是很常用的一個調試窗口。

內存查看窗口:MDK5提供4個內存查看窗口(下拉選擇),該按鈕按下,會彈出一個內存查看窗口,可以在里面輸入你要查看的內存地址,然后觀察這一片內存的變化情況。是很常用 的一個調試窗口 串口打印窗口:MDK5提供4個串口打印窗口(下拉選擇),該按鈕按下,會彈出一個類似 串口調試助手界面的窗口,用來顯示從串口打印出來的內容。

邏輯分析窗口:該圖標下面有3個選項(下拉選擇),我們一般用第一個,也就是邏輯分析 窗口(Logic Analyzer),點擊即可調出該窗口,通過SETUP按鈕新建一些IO口,就可以觀察這 些IO口的電平變化情況,以多種形式顯示出來,比較直觀。

系統查看窗口:該按鈕可以提供各種外設寄存器的查看窗口(通過下拉選擇),選擇對應外設,即可調出該外設的相關寄存器表,并顯示這些寄存器的值,方便查看設置的是否正確。

2.3 基礎調試步驟

? ? ? ? 該調試步驟是筆者個人總結的,僅供參考。首先點擊調試,進入調試界面后,此時程序會執行到main函數處,這是因為我們勾選了run to main。

????????先點擊單步調試,點擊執行進去或者是點擊執行過去,通常點擊執行過去可加快調試速度。目的是檢查main函數中的各個硬件初始化函數是否正常運行,看有沒有卡在哪個初始化函數無法繼續往下執行。注意:通常在第一步出現程序卡住的問題大概率是硬件初始化函數的順序不對,比如說在lcd初始化函數里邊調用了串口的printf函數,但是串口初始化函數在lcd初始化函數后邊調用,這個時候就會出現程序卡住的情況。

? ? ? ? 如果需要快速執行到某個地方,可以添加斷點,再點擊執行到斷點處即可。也可以選擇不添加斷點,直接點擊執行到斷點處,此時程序會全速運行,此時你看通過stlink連接的板子顯示的現象是否與你預期的一致,如果不一致或者是沒現象,代表程序卡住了。此時,點擊停止,程序會自動定位到代碼卡住的地方,方便快速糾錯。

2.4 持續更新中....

ps:如有需要MCU+RTOS項目的同學,請聯系1840813505@qq.com,備注CSDN。

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

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

相關文章

Redis的數據淘汰策略是什么?有哪些?

1.監測設置了TTL的數據volatile-lru:淘汰最近最少使用的數據volatile-lfu:淘汰最近使用次數最少的數據volatile-ttl;淘汰將要過期的數據volatile-random:隨機淘汰2.監測全庫數據allkeys-lru:淘汰最近最少使用的數據all…

相控陣波束躍度指向誤差Matlab仿真

波束躍度影響:TR芯片移相器位數、陣元數量、校準后陣元初始相位、TR芯片移相器精度、波控計算精度等。用MATLAB進行TR芯片移相器位數、陣元數量對指向誤差進行仿真。 close all; %線陣波束躍度仿真 20250726 %beam displacement % 波束躍度影響:TR芯片移…

板凳-------Mysql cookbook學習 (十二--------6)

MySQL 8 導入二進制文件(trailer.ogv)操作指南 在MySQL中導入二進制文件(如trailer.ogv視頻文件)通常有幾種方法,我將詳細介紹每種方法的操作步驟。 方法一:使用LOAD_FILE函數導入BLOB字段 這是最直接的方法,適合中小型二進制文件。sql - 1. …

昇思學習營-【模型推理和性能優化】學習心得_20250730

一、權重的加載 模型包含兩部分: base model 和 LoRA adapter 其中base model的權重在微調時被凍結, 推理時加載原權重即可,LoRA adapter可通過PeftModel.from_pretrained進行加載。 二、啟動推理 通過model.generate,啟動推理…

[AI8051U入門第十一步]W5500-服務端

學習目標: 1、連接TCP/IP 2、學習W5500作為服務端代碼一、TCP/IP介紹 TCP/IP 協議棧介紹 TCP/IP(Transmission Control Protocol / Internet Protocol)是互聯網通信的核心協議族,定義了數據如何在網絡中進行傳輸和路由。它由多個協議組成,采用分層架構,確保不同設備之間…

C 標準庫 <time.h> 函數詳解

目錄 概述 1 核心數據類型 1.1 time_t 1.2 clock_t 1.3 struct tm 1.4 size_t 2 核心函數 2.1 時間獲取函數 2.2 時間轉換函數 2.3 時間差計算 2.4 時間格式化函數 3 線程安全版本(POSIX 擴展) 3.1 函數列表 3.2 時間處理完整示例 4 重要…

基于BEKK-GARCH模型的參數估計、最大似然估計以及參數標準誤估計的MATLAB實現

基于BEKK-GARCH模型的參數估計、最大似然估計以及參數標準誤估計的MATLAB實現。BEKK-GARCH模型是一種多變量GARCH模型,用于估計多個時間序列的條件方差和協方差矩陣。 MATLAB實現BEKK-GARCH模型 1. 準備數據 假設你已經有一個時間序列數據矩陣 returns,每…

TDengine 中 TDgpt 用于異常檢測

介紹 TDgpt 內置時序數據異常檢測模型 TDengine 中定義了異常(狀態)窗口來提供異常檢測服務。異常窗口可以視為一種特殊的事件窗口(Event Window),即異常檢測算法確定的連續異常時間序列數據所在的時間窗口。與普通事件…

統計學08:概率分布

一、隨機變量隨機變量是一個將 隨機事件 映射到 數值 的數學函數,用于描述事件的結果。隨機變量可以是離散的(如骰子)或連續的(如人的身高、體重)。1)概率質量函數PMF——離散隨機變量P(X x) 對應于某個值…

vue3【組件封裝】消息反饋 S-msgWin.vue (針對父容器對齊,左右居中,可自定義頂部距離)

最終效果成功的提示報錯的提示代碼實現components/SUI/S-msgWin.vue <script lang"ts" setup> const props defineProps({msg: {type: Object,required: true,},top: {type: String,default: "50%",},duration: {type: Number,default: 3000,}, });…

MySQL 8.0.42創建MGR集群

MySQL 8.0.42創建MGR集群 概述 關于MySQL MGR集群的介紹就不在這里做詳細的介紹了&#xff0c;大家可以自己到官網上查看閱讀。在這里主要是實際操作方面的內容 總體結構設計如下圖服務器節點信息序號角色IP地址數據庫端口MGR端口1主節點192.168.56.1043309100612從節點192.168…

《Go Web編程實戰派--從入門到精通》的隨筆筆記

第二章 Go Web 開發基礎2.1第一個Go Web 程序package mainimport ("fmt""net/http" )func hello(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "Hello World") } func main() {server : &http.Server{Addr: "0.0.0.0:80&q…

MySQL在Linux環境下的性能調優

&#x1f4ca; MySQL性能基準測試&#xff1a;知己知彼建立性能基線的關鍵指標# 核心性能指標監控腳本 #!/bin/bash echo " MySQL Performance Baseline " mysql -e "SHOW GLOBAL STATUS LIKE Questions;" mysql -e "SHOW GLOBAL STATUS LIKE Uptime;…

PyQt事件處理機制深度指南:超越信號與槽的底層掌控

—— 5大核心策略實戰案例&#xff0c;解鎖GUI交互的底層密碼 &#x1f50d; 事件與信號槽的本質差異維度事件處理機制信號與槽機制抽象層級操作系統消息的原始封裝對事件的高級封裝應用場景控件行為定制/底層交互常規業務邏輯綁定執行順序先于信號槽觸發在事件處理完成后觸發性…

10_opencv_分離顏色通道、多通道圖像混合

split() 通道分離 void cv::split(const Mat & src,Mat * mvbegin ) merge() 通道合并 void cv::merge(InputArrayOfArrays mv,OutputArray dst ) Mat::at()方法 Mat::at()方法返回一個引用到指定的數組元素。 注意是引用&#xff0c;相當于兩者等價&#xff0c;也就是…

Kotlin的datetime庫

kotlinx 是一組不是 Kotlin 標準庫一部分&#xff0c;但非常實用的擴展項目集合。其中&#xff0c;kotlinx-datetime 是一個跨平臺的 Kotlin 時間日期處理庫。 如何在項目中使用該庫 Gradle 項目中 在 repositories 塊中添加 Maven Central 倉庫&#xff1a; repositories {…

基于模型蒸餾的大模型文案生成最佳實踐

背景 大語言模型在生成高質量文案方面表現優異&#xff0c;然而其巨大的計算資源消耗和存儲需求&#xff0c;使得實際應用尤其是在資源受限場景中的應用充滿挑戰。企業在尋求高效的文案生成時&#xff0c;常常面臨著在性能和資源之間權衡的困境。在這種背景下&#xff0c;模型…

調用通義千問大模型實現流式對話

前言 我使用的是硅基流動中通義千問免費的大模型&#xff1a;我的技術棧使用的 Next14.2 全棧框架。 代碼結構 需要使用的庫&#xff1a; npm i ai openai目錄結構&#xff1a; 基礎測試頁面 test-openai/page.tsx&#xff1a; use client;import { useChat } from ai/react;ex…

如何搭建Linux環境下的flink本地集群

第一步&#xff0c;搭建Linux環境 這里我使用的是 WSL2 安裝前&#xff0c;先用管理員打開終端&#xff0c;執行以下三條命令&#xff0c;目的是開啟安裝 WSL2所需要的環境 //開啟適用于windows的Linux子系統 dism.exe /online /enable-feature /featurename:Microsoft-Wind…

算法:鏈表part02:24. 兩兩交換鏈表中的節點 + 19. 刪除鏈表的倒數第 N 個結點 + 面試題 02.07. 鏈表相交

24. 兩兩交換鏈表中的節點題目&#xff1a;https://leetcode.cn/problems/swap-nodes-in-pairs/description/ 講解&#xff1a;https://programmercarl.com/0024.%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.html 復習可以先…