關於在ubuntu中用vscode編譯除錯C\C++,Proteus模擬執行stm32程式
視覺化的程式碼跟蹤除錯與Proteus模擬執行stm32程式
視覺化的程式碼跟蹤除錯
有以下三種方法
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燈依次閃爍,然後全部閃爍一次,再全部熄滅,重複上述現象)
相關文章
- Ubuntu中用VScode編譯除錯C\C++UbuntuVSCode編譯除錯C++
- Proteus模擬執行stm32程式
- 在Linux上使用vscode編譯除錯C/C++程式碼LinuxVSCode編譯除錯C++
- stem32 程式編譯和proteus模擬編譯
- vscode+C 編譯除錯VSCode編譯除錯
- 在windows上配置vs code編譯除錯c/c++Windows編譯除錯C++
- 在Ubuntu環境下用gcc命令執行c程式以及Makefile編譯UbuntuGCC程式編譯
- linux環境下vscode 中C/C++編譯及除錯環境的搭建LinuxVSCodeC++編譯除錯
- vscode遠端除錯c++VSCode除錯C++
- 關於c語言模擬c++的多型C語言C++多型
- java 和c++在編譯和執行上有什麼區別?JavaC++編譯
- PID除錯軟體(C#、模擬、模擬)除錯C#
- C程式從編譯到執行C程式編譯
- Idea除錯Rocketmq原始碼編譯執行Idea除錯MQ原始碼編譯
- C編譯: 使用gdb除錯編譯除錯
- C 編譯: 使用 gdb 除錯編譯除錯
- Linux C++ 開發2 - 編寫、編譯、執行第一個程式LinuxC++編譯
- 在C,C++,java和python執行時直譯器和編譯器的區別C++JavaPython編譯
- 在 Linux 下編譯及除錯 C 程式碼的簡易指南Linux編譯除錯
- ubuntu編譯執行xv6Ubuntu編譯
- vscode除錯多C++檔案專案VSCode除錯C++
- Proteus模擬學習筆記筆記
- vim編譯執行c編譯
- 在MyEclipse中用debug除錯應用程式Eclipse除錯
- C/C++ 程式反除錯的方法C++除錯
- 使用GDB命令列偵錯程式除錯C/C++程式命令列除錯C++
- VScode中配置C++執行環境VSCodeC++
- 編譯C++ 程式的過程編譯C++
- Ubuntu編譯Android整個系統以及編譯指定模組到模擬器Ubuntu編譯Android
- Visual Studio Code (vscode) 配置C、C++環境/編寫執行C、C++(Windows)【真正的小白版】VSCodeC++Windows
- PHP編譯,執行make報錯PHP編譯
- 在 Ubuntu 開啟 GO 程式編譯之旅UbuntuGo編譯
- 怎樣在ubuntu下寫c++程式UbuntuC++
- Windows+VSCode編譯在Linux-x86_64環境上執行的程式WindowsVSCode編譯Linux
- 在Visual C++中用ADO進行資料庫程式設計 (轉)C++資料庫程式設計
- Proteus實現簡單51程式的設計與模擬
- 在Ubuntu上利用vim進行程式編寫及執行Ubuntu行程
- 在c++程式中呼叫被C編譯器編譯後的函式,為什麼要使用extern “C”C++編譯函式