關於在ubuntu中用vscode編譯除錯C\C++,Proteus模擬執行stm32程式

AssissanLiu發表於2020-11-07

視覺化的程式碼跟蹤除錯

有以下三種方法
1、視覺化前端 Kdbg。參考網址:連結.
2、視覺化前端 Insight。有點older,不推薦。參考網址:連結.
3、 基於跨平臺多型別程式碼編輯器VScode,強烈推薦。參考網址:
連結1.
連結2.
l連結3.
我選擇的是方法三

在ubuntu18.04版本安裝vscode

1.進入ubuntu桌面版系統,點選圖片中指向的圖示(軟體中心)。

在這裡插入圖片描述
2.在軟體中心中,搜尋Visual Studio Code

在這裡插入圖片描述
3.在頁面中就可以直接選擇安裝

在這裡插入圖片描述
4.即可進入vscode
在這裡插入圖片描述

關於在ubuntu中用vscode編譯除錯C\C++

(注意以上過程請確保在ubuntu裡面安裝了c++編譯器,和vscode)

1.安裝vscode的C\C++外掛。

(1)在vscode中安裝C++的外掛,按ctrl+p調出命令列,在上面輸入ext install cpptools,或在也可以只輸入ext install然後按空格

在這裡插入圖片描述
可以三個都安裝了,接下來就是漫長的等待安裝過程(因為網路的問題所以漫長)。安裝成功後可能會有提示要重啟vscode,重啟後就可以了。
(2)就是配置除錯和編譯檔案,launch.json和task.json。
首先我們在安裝好了外掛之後,就可以在vscode開啟我們的原始碼檔案了並且除錯了,不過要注意vscode要除錯的話只能開啟包含原始碼檔案的資料夾,不能開啟單個檔案除錯。(我新建了一個main.cpp放在了主目錄中)
在這裡插入圖片描述
在vscode中開啟剛才建立的main.cpp檔案。
在這裡插入圖片描述
點選左邊三角形的圖示,進行執行,然後就自帶生成出來一個.json檔案,在這裡插入圖片描述

2.配置launch.json和task.json這兩個檔案

想要除錯原始碼檔案,我們需要建立或者生成tasks.json和launch.json檔案,tasks.json檔案幫助我們自動在終端中輸入gcc指令,編譯輸出可執行檔案的,而launch.json檔案則是啟動gdb程式進行除錯的。
1.建立資料夾並進入該資料夾內部

mkdir test
 cd test

2.編寫程式碼
建立並編寫test.c
程式碼塊:

#include <stdio.h>
void ShowRevertNum(int iNum)
{
 while (iNum > 10)
 {
printf("%d", iNum % 10);
 iNum = iNum / 10;
 }
 printf("%d\n", iNum);
}
int main(void)
{
 int iNum;
 printf("Please input a number :");
 scanf("%d", &iNum);
 printf("After revert : ");
 ShowRevertNum(iNum);
 return 0;
}

3.選擇C++(GDB/LLDB)外掛之後再根據提示,選擇“g++ -生成和除錯活動檔案”,執行結束後VSCode會自動生成適用於gcc編譯的launch.json檔案。
在這裡插入圖片描述
4.點選工具欄上的Terminal(終端),選擇Configure Tasks(配置任務) -> C/C++:gcc build active file,VSCode會自動生成適用於gcc編譯的tasks.json檔案儲存後繼續進行編譯,需要在第九行後新增語句:

"${fileDirname}/test.c",

在這裡插入圖片描述

3.編譯除錯C++程式

注意:
command就是呼叫的控制檯命令;
args就是命令列引數了,-g引數是必須的,否則到時候沒有除錯資訊,vscode會無法設定斷點。
配置好後在test.c檔案介面,我們就可以先按ctrl+shift+B先編譯,再按上方除錯工具欄的圖示綠色箭頭,再點選終端:
在這裡插入圖片描述
發現輸入為“100”時,原則上應該輸出“001”,但是現在輸出的是“010”,說明程式碼出現問題,設定斷點開始除錯。
(設定點選語句前面來設定斷點)
在這裡插入圖片描述
此時點選下圖箭頭所指的圖示開始向下除錯:
在這裡插入圖片描述
除錯後發現錯誤,在當iNum=10時,程式會跳出迴圈,對此進行修改,將迴圈條件改為:

while (iNum >= 10)

重新進行除錯,並再次輸入100。
在這裡插入圖片描述
成功編譯!!!!!

proteus中執行stm32程式

(實驗keil和proteus所用檔案工程百度網盤連結,提取碼為0f7c ,以下為連結:所用keil和proteus檔案工程) 點這裡.

1.建立proteus新工程檔案

1.點選建立新工程,輸入工程名、安裝路徑。
在這裡插入圖片描述
2.選擇從選中的模板中建立原理圖(DEFAULT)。
在這裡插入圖片描述
3.選擇不建立PCB布版設計。
在這裡插入圖片描述
4.選擇建立韌體專案,其中:系列選擇Cortex-M3,Controller選擇STM32F103R6,點選下一步,然後建立成功。
在這裡插入圖片描述

2.配置實驗所需原件

1.建立專案完成後就如下圖所示,顯示出自己所選的型號,STM32F103R6,系統並以配置好電源。
在這裡插入圖片描述
2.新增實驗所需燈,點選左邊P,然後進入下圖,在關鍵字中輸入LED-YELLOW,並點選確認選中。在這裡插入圖片描述
3.新增實驗所需電阻,點選左邊P,然後進入下圖,在關鍵字中輸入RES,並點選確認選中。
在這裡插入圖片描述
4.新增完燈和電阻後螢幕會如下圖所示。
在這裡插入圖片描述
5.設定電阻值為50在這裡插入圖片描述
6.連結器件,如圖
在這裡插入圖片描述

3.keil5中編寫程式

在這裡插入圖片描述
進入keil 5中選擇Option for Target,然後勾選Create HEX file,生成hex檔案。

4.匯入hex檔案進入stm32晶片中

配置Crystal Frequency改成8M(設定晶振為8M)。
在這裡插入圖片描述

5.開始模擬

模擬結果如下:在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述

(該程式是8個led燈依次閃爍,然後全部閃爍一次,再全部熄滅,重複上述現象)

相關文章