Debian13下使用 Vim + Vimspector + ST-LINK v2.1 調試 STM32F103 指南

1. 硬件準備與連接

1.1 所需硬件

  • STM32F103C8T6 最小系統板
  • ST-LINK v2.1 調試器
  • 連接線(杜邦線)

1.2 硬件連接

ST-LINK v2.1 ? STM32F103C8T6 連接方式:

ST-LINK v2.1 引腳STM32F103C8T6 引腳功能說明
SWDIOPA13數據線
SWCLKPA14時鐘線
GNDGND共地
3.3V (可選)3.3V (可選)供電

連接注意事項:

  • 確保目標板的 BOOT0 引腳已接地(低電平)
  • 如目標板已有獨立供電,可不連接 3.3V 引腳以避免電源沖突
  • 使用短而優質的連接線,確保連接牢固

2. 軟件環境安裝與配置

2.1 安裝編譯工具鏈

sudo apt update
sudo apt install build-essential git
sudo apt install arm-none-eabi-gcc arm-none-eabi-binutils arm-none-eabi-newlib

2.2 安裝調試工具

sudo apt install gdb-multiarch openocd

2.3 安裝配置 Vimspector

  1. ~/.vimrc 中添加插件配置(以 vim-plug 為例):

    call plug#begin('~/.vim/plugged')
    Plug 'puremourning/vimspector'
    call plug#end()
    
  2. 安裝插件:

    :PlugInstall
    
  3. 安裝調試適配器:

    :VimspectorInstall --enable-c
    

    或使用 Python 腳本安裝:

    # 進入 vimspector 目錄,通常在你的插件管理路徑下
    cd ~/.vim/plugged/vimspector  # 路徑請根據實際情況修改
    ./install_gadget.py --enable-c
    
  4. 配置 Vimspector 快捷鍵(添加到 ~/.vimrc):

     nmap <Leader>dd <Plug>VimspectorContinuenmap <Leader>dx <Plug>VimspectorStopnmap <Leader>dR <Plug>VimspectorRestartnmap <Leader>dp <Plug>VimspectorPausenmap <Leader>db <Plug>VimspectorToggleBreakpointnmap <Leader>dc <Plug>VimspectorToggleConditionalBreakpointnmap <Leader>dn <Plug>VimspectorStepOvernmap <Leader>di <Plug>VimspectorStepIntonmap <Leader>do <Plug>VimspectorStepOutnmap <Leader>dr <Plug>VimspectorRunToCursor
    

3. Vimspector 調試配置

3.1 創建 .vimspector.json 文件

在項目根目錄創建 .vimspector.json 文件:

{"configurations": {"Launch STM32": {"adapter": "vscode-cpptools","configuration": {"request": "launch","type": "cppdbg","program": "${workspaceRoot}/build/software.elf", // 確保此路徑正確"cwd": "${workspaceRoot}","targetArchitecture": "arm","MIMode": "gdb","MIDebuggerPath": "gdb-multiarch","stopOnEntry": true,"stopAtConnect": true,"serverAddress": "localhost","serverPort": 3333,"serverType": "openocd","setupCommands": [{"description": "Specify executable file", // 明確指定可執行文件"text": "file ${workspaceRoot}/build/software.elf","ignoreFailures": false},{"description": "Connect to OpenOCD","text": "target extended-remote :3333"},{"description": "Reset and halt","text": "monitor reset halt","ignoreFailures": true},{"description": "Load program","text": "load","ignoreFailures": false}],"launchCompleteCommand": "exec-continue"}}}
}

3.2 工作區路徑說明

  • ${workspaceRoot} 表示 Vim 的當前工作目錄
  • 使用 :pwd 命令可查看當前工作目錄
  • 使用 :cd /path/to/project 可切換工作目錄

4. 調試流程

4.1 啟動 OpenOCD

打開終端,運行以下命令:

sudo openocd -f interface/stlink.cfg -f target/stm32f1x.cfg

4.2 啟動 Vim 并打開項目

cd /path/to/project
vim src/main.c

4.3 啟動調試會話

在 Vim 中執行:

<Leader>dd

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

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

相關文章

第21課:成本優化與資源管理

第21課:成本優化與資源管理 課程目標 掌握計算資源優化 學習成本控制策略 了解資源調度算法 實踐實現成本優化系統 課程內容 21.1 成本分析框架 成本分析系統 class CostAnalysisFramework {constructor(config) {this.config

SAP HANA Scale-out 04:CalculationView優化

CV執行過程計算視圖激活時&#xff0c;生成Stored ModelSELECT查詢時&#xff1a;首先將Stored Model實例化為runtime Model 計算引擎執行優化&#xff0c;將runtime Model轉換為Optimized Runtime ModelOptimized Runtime Model通過SQL Optimizer進行優化計算引擎優化特性說明…

鴻蒙審核問題——Scroll中嵌套了List/Grid時滑動問題

文章目錄背景原因解決辦法1、借鑒Flutter中的解決方式&#xff0c;如下圖2、鴻蒙Next中對應的解決方式&#xff0c;如下圖3、官方文檔回訪背景 來源一次審核被拒的情況。也是出于粗心導致的。之前在flutter項目中也是遇到過這種問題的。其實就是滾動視圖內嵌滾動視圖造成的&am…

測試電商購物車功能,設計測試case

在電商場景中&#xff0c;購物車是連接商品瀏覽與下單支付的關鍵環節&#xff0c;需要從功能、性能、兼容性、安全性等多維度進行測試。以下是購物車功能的測試用例設計&#xff1a; 一、功能測試 1. 商品添加到購物車 - 未登錄狀態下&#xff0c;添加商品到購物車&#xff08;…

Linux --- 常見的基本指令

一. 前言本篇博客使用的 Linux 操作系統是 centos &#xff0c;用來學習Linux 的 Linux 系統的內核版本和系統架構信息版本如下所示&#xff1a;上圖的主要結構為&#xff1a;主版本號-次版本號 修正次數&#xff0c;3.10.0 是操作系統的主版本號&#xff1b;當我們在維護一段L…

微信小程序 -開發郵箱注冊驗證功能

一、前端驗證&#xff1a;正則表達式與插件結合正則表達式設計 使用通用郵箱格式校驗正則&#xff0c;并允許中文域名&#xff08;如.中國&#xff09;&#xff1a; const emailReg /^[a-zA-Z0-9._%-][a-zA-Z0-9-](?:\.[a-zA-Z0-9-])*\.[a-zA-Z]{2,}(?:\.[a-zA-Z]{2})?$/i;…

docker 部署 code-server

docker 部署 code-servercode-serverError response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headersdocker 配置正確步驟 阿里云源permission de…

網絡編程專題:從源碼解析網絡編程常用方法(基于6.16.3內核)

前言 本文是因為作者在研究下面這個代碼時發現的問題&#xff1a; int main() {// 1. 創建 IPv4 專用地址結構體 sockaddr_instruct sockaddr_in ipv4_addr;memset(&ipv4_addr, 0, sizeof(ipv4_addr)); // 初始化清零// 2. 填充 IPv4 專屬信息ipv4_addr.sin_family AF_IN…

2025年數字公共治理專業重點學什么內容?(詳細指南)

數字公共治理作為一個新興的跨學科領域&#xff0c;近年來受到越來越多高校和學生的關注。這個專業融合了多個學科的知識體系&#xff0c;旨在培養掌握現代治理理念和技術應用能力的復合型人才。對于在校大學生而言&#xff0c;了解這一專業的學習內容和發展方向&#xff0c;有…

一招解決 win 下 終端打印中文亂碼問題

適合所有終端 cmd powershell git bash&#xff0c; 原理&#xff1a;修改電腦的區域設置&#xff0c;勾選使用 UTF-8 1.電腦搜索 區域&#xff0c; 打開區域設置2. 打開相關設置3. 點擊更改 日期、時間或數字格式4. 選則管理-點擊更改系統區域設置&#xff0c;在彈出框中勾選 …

Elasticsearch面試精講 Day 13:索引生命周期管理ILM

【Elasticsearch面試精講 Day 13】索引生命周期管理ILM 在“Elasticsearch面試精講”系列的第13天&#xff0c;我們將深入探討 索引生命周期管理&#xff08;Index Lifecycle Management, ILM&#xff09; 這一核心運維機制。作為大規模日志、監控和時序數據場景下的必備功能&…

Python快速入門專業版(二十八):函數參數進階:默認參數與可變參數(*args/**kwargs)

目錄引一、默認參數&#xff1a;給函數參數設置“默認值”1. 基本語法與使用示例示例1&#xff1a;帶默認參數的乘法函數2. 默認參數的核心規則&#xff1a;必須放在非默認參數之后示例2&#xff1a;默認參數位置錯誤&#xff08;報錯&#xff09;3. 默認參數的“可變對象陷阱”…

FreeRTOS 知識點

一、配置過程二、基本知識點2.1 搶占優先級和響應優先級在 FreeRTOS 中&#xff0c;任務的調度方式主要有 ??搶占式&#xff08;Preemptive&#xff09;?? 和 ??協作式&#xff08;Cooperative&#xff09;?? 兩種模式&#xff0c;它們的核心區別在于 ??任務如何釋放…

SQL注入漏洞手動測試詳細過程

這是一次詳細的、基于真實手動測試思維的SQL注入漏洞測試過程記錄。我們將以一個假設的Web應用程序為例&#xff0c;進行逐步探測和利用。測試目標假設我們正在測試一個名為 example.com 的電商網站&#xff0c;其有一個查看商品詳情的頁面&#xff0c;URL 為&#xff1a; http…

機器人控制器開發(通訊——ros話題轉為websocket)

1 為什么要實現ROS話題轉WebSocket 主要有如下5個優點&#xff1a;跨平臺通信需求 WebSocket作為一種標準的Web通信協議&#xff0c;允許任何支持WebSocket的客戶端&#xff08;網頁、移動應用、其他系統&#xff09;與ROS機器人進行實時通信&#xff0c;打破了ROS傳統通信方式…

SQL-字符串函數、數值函數、日期函數

字符串函數1. 字符串拼接concat-- 拼接字符串hello和mysql&#xff0c;結果為hellomysql -- 格式&#xff1a;concat(str1, str2, ...)&#xff1a;拼接多個字符串 select concat(hello, mysql);注意事項&#xff1a;若任一參數為null&#xff0c;結果為null&#xff08;如conc…

JAVA高級工程師--Redis持久化詳細版

一、Redis DBRedis 數據庫的數量在單機和集群模式下有根本性的區別。1. 單機模式 (Standalone)在單機模式下&#xff0c;Redis 默認提供 16 個邏輯數據庫&#xff0c;索引編號為 0 到 15。選擇數據庫&#xff1a; 使用 SELECT <index> 命令進行切換。例如&#xff0c;SE…

hexo文章

文章目錄Tag的使用勾選框圖片的組合站內文章引用注意&#xff1a;1、關于中括號的問題目錄總結 Tag的使用 在 markdown 中加入如下的代碼來使用便簽&#xff1a; {% note success %} 文字 或者 markdown 均可 {% endnote %}或者使用 HTML 形式&#xff1a; <p class&quo…

技術面:Spring (bean的生命周期、創建方式、注入方式、作用域)

Spring Bean的生命周期是什么樣的&#xff1f; 在Spring容器里一個Bean的從創建到銷毀一般都是經歷了以下幾個階段&#xff1a; 定義階段&#xff08;Bean元信息配置&#xff09;>實例化階段&#xff08;創建Bean對象&#xff09;>初始化階段&#xff08;執行初始化邏輯&…

SpringSecurity的應用

官方文檔 一、核心能力 1.1 身份認證 (Authentication) - “你是誰&#xff1f;” 多種認證方式&#xff1a;支持幾乎所有主流認證方案&#xff0c;如表單登錄&#xff08;Username/Password&#xff09;、HTTP Basic、HTTP Digest、OAuth 2.0、OIDC (OpenID Connect)、SAML …