91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用VSCode和VS2017實現編譯調試STM32程序

發布時間:2020-07-28 14:59:03 來源:億速云 閱讀:733 作者:小豬 欄目:編程語言

這篇文章主要為大家展示了如何使用VSCode和VS2017實現編譯調試STM32程序,內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

近兩年,微軟越來越擁抱開源支持跨平臺,win10搭載Linux子系統,開源VSCode作為跨平臺編輯器,VS2017官方支持了Linux和嵌入式開發功能。

ST也是,近兩年開發的軟件工具基本都是跨平臺(基于Java)的,比如STM32CubeMX,MCUFinder,STM32CubeProgrammer等。17年年底收購了truestudio的開發公司-Atollic。這個公司的IDE就是基于Eclipse使用GNU套裝的。

官方都支持了,那我們有必要了解一下。要是好用,說不定就可以淘汰老舊的Keil了。

必要軟件

VSCode或者VS2017。

GNU ARM Embedded Toolchain。JLink或者STLink。

STM32CubeMX。這個一般開發STM32的都會裝。

使用思路

編譯就不說了,有makefile,有gcc就可以了。

調試的話,整體的流程圖如下:

如何使用VSCode和VS2017實現編譯調試STM32程序

  • 前端 。這里VSCode和VS2017就是封裝了GDB的圖形前端,這樣我們使用GDB調試的時候就不需要再在命令行窗口敲指令了。
  • GDB Client。arm-none-eabi-gdb
  • GDB Server。JLink官方SEGGER提供了一個GDB server。STLink在github也有一個開源的項目。這里演示使用JLink。如果不嫌麻煩的話,也可以使用openOCD。
  • 調試器這里使用JLink,接口使用SWD。
  • 目標板芯片型號為STM32F103RCT6

VS2017

這里使用VSCode舉例,但是VS2017實際上也是支持的,可以參考官方博客。這里本人做了一下嘗試,發現官方還未完善。文檔有多處錯誤,所以暫不考慮。

如何使用VSCode和VS2017實現編譯調試STM32程序

VSCode基本配置

這個現代化的編輯器,好處就不多說了,對比keil誰用誰知道,網上也能搜到一堆的關于它的介紹。

必要插件

C/C++為必要插件,否則無法調試。

建議安裝插件

  • crustify。用來格式化代碼, shift+alt+f,非常方便。缺點是代碼中有Unicode可能會導致亂碼,然后配置文件有點多。
  • Bracket Pair Colorizer。不同顏色高亮顯示匹配括號,愛護視力必備。
  • C/C++ Clang Command Adapter。用來補全和診斷,需要同時安裝Clang,參考官方文檔。

JLink安裝

安裝完成后,目錄下應該有下列文件

如何使用VSCode和VS2017實現編譯調試STM32程序

GNU ARM Embedded Toolchain安裝

下載后,安裝或者解壓即可。目錄下有一個bin的文件夾,可以看到有下列文件:

如何使用VSCode和VS2017實現編譯調試STM32程序

安裝完成后,將bin文件夾路徑添加到環境變量。不過這不是必要的,只是方便在命令行中使用,在vscode中使用是不需要的。

使用cube生成代碼以及makefile

這里需要注意,cube的版本至少要是4.23.0。否則沒有生成makefile的選項,這里使用4.24.0。在配置完成后,設置選項需要選擇Makefile,如下圖:

如何使用VSCode和VS2017實現編譯調試STM32程序

點擊生成后文件目錄如下:

如何使用VSCode和VS2017實現編譯調試STM32程序

如何使用VSCode和VS2017實現編譯調試STM32程序

在main.c中添加兩行閃燈的代碼:

 while (1)
 {
  HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
  HAL_Delay(500);
  Counter++;

 /* USER CODE END WHILE */
 /* USER CODE BEGIN 3 */

 }

至此,整個工程就搭建好了。

編譯

官方生成了makefile,那么只要執行make就可以了。makefile的語法,網上可以找到很多的教程,這里不細說。

就目前的工程,想要make成功,改一句話即可使用,即指定gcc的路徑。我的路徑如下:

BINPATH = D:/GNU_ARM_TOOLS/2016q3_Version_5_6/bin

修改后,打開命令行,輸入make即可。如果,提示make不是內部或者外部命令,那你還需要安裝GNU make,這個可自行搜索下載。

如果配置成功,應該能看到下面的畫面:

如何使用VSCode和VS2017實現編譯調試STM32程序

這樣,在build目錄下面可以找到blink.hex,blink.elf,blink.bin這幾個文件。至此,編譯成功。
其實,即使不使用cube生成Makefile,我們也可以自己寫一個,或者使用CMake。但是,使用官方的文件,會統一大家的程序結構,以后移植或者開源也更容易。

而且,官方的Makefile結構比較清晰,熟悉Keil工程配置的人,其實很容易接受。

下載

可以使用JFlash直接燒錄

如何使用VSCode和VS2017實現編譯調試STM32程序

如果沒什么問題的話,復位之后,目標板的led應該已經開始閃爍了。

調試

這里是重點。

1.運行GDB server

我這里是在windows平臺下,JLink提供的GDB server有一個圖形客戶端。Linux平臺下使用命令行版本,也是一樣的。

打開JLinkGDBServer.exe,配置連接好后,應該看到下面的界面

如何使用VSCode和VS2017實現編譯調試STM32程序

這個server一直開著就行,注意上面的端口號2331,后面要用到。

2.測試GDB

由于VSCode的配置文件中使用了較多的GDB指令,這里使用命令行先演示一下,方便理解,也剛好測試GDB是否正確安裝。

在命令行輸入arm-none-eabi-gdb,應該看到如下畫面,否則你的GNU套裝沒安裝好,或者沒添加到環境變量

如何使用VSCode和VS2017實現編譯調試STM32程序

繼續輸入下面的指令:

如何使用VSCode和VS2017實現編譯調試STM32程序

此時,應該也看到led燈在閃爍了。

簡單解釋這幾個指令,詳細的可以自行搜索gdb的教程,或者查看GNU套件安裝目錄下的文檔。

  • target remote :2331 :連接到GDB server。
  • file : 載入目標文件到gdb。
  • load : 下載文件到目標板。
  • c : 運行到下一個斷點,如果沒有斷點,會一直運行
  • monitor reset : 傳遞命令reset給JLink GDB server。
     

monitor 后面的參數不是gdb的指令,而是gdb server的(這里就是JLink Server的),這里參考JLink的文檔(在安裝目錄下有),可以接受如下指令

如何使用VSCode和VS2017實現編譯調試STM32程序

常用的也就是reset了。

3.配置VSCode調試

在vscode的窗口按下F5,彈出來的窗口選擇gdb

如何使用VSCode和VS2017實現編譯調試STM32程序

官方給了默認配置,需要修改成我們自己的。這里改動比較多,具體的配置參數需要參考兩個地方,一個是vscode的官網
,一個是cpp插件的github文檔

最終我們的配置如下:

{
  // 使用 IntelliSense 了解相關屬性。 
  // 懸停以查看現有屬性的描述。
  // 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [

    {
      "name": "blink Launch",
      "type": "cppdbg",
      "request": "launch",
      "targetArchitecture": "arm",//雖然官方說棄用了,但實際上必須指明
      "program": "blink", // 采用了自定義的設置,這里沒啥用了
      "args": [""],
      "stopAtEntry": true,
      "cwd": "${workspaceFolder}",
      "environment": [],
      "externalConsole": true,
      "MIMode": "gdb",
      "miDebuggerPath": "D:/GNU_ARM_TOOLS/2016q3_Version_5_6/bin/arm-none-eabi-gdb.exe",
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ],
      "launchCompleteCommand": "None",
      "miDebuggerServerAddress": "localhost:2331",
      "customLaunchSetupCommands": [
        {
          "text": "target remote :2331",
          "description": "connect to server",
          "ignoreFailures": false
        },
        {
          "text": "file F:/STM32/led/blink/build/blink.elf",
          "description": "load file to gdb",
          "ignoreFailures": false
        },
        {
          "text": "load",
          "description": "download file to MCU",
          "ignoreFailures": false
        },
        {
          "text": "monitor reset",
          "description": "reset MCU",
          "ignoreFailures": false
        },
        {
          "text": "b main",
          "description": "set breakpoints at main",
          "ignoreFailures": false
        },
      ]
    }
  ]
}

再次按下F5后,效果如圖:

如何使用VSCode和VS2017實現編譯調試STM32程序

這個配置中,最重要的就是customLaunchSetupCommands中的設置,有了上面gdb再命令行的演示,就很容易理解了。

以上就是關于如何使用VSCode和VS2017實現編譯調試STM32程序的內容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

崇义县| 夹江县| 济宁市| 利辛县| 马尔康县| 扶沟县| 娄烦县| 水城县| 石门县| 龙川县| 江西省| 广丰县| 蛟河市| 兰州市| 靖州| 随州市| 太仆寺旗| 平安县| 隆子县| 财经| 玛曲县| 咸阳市| 景宁| 黔东| 鄢陵县| 胶南市| 廉江市| 海林市| 武义县| 天峨县| 康乐县| 广元市| 舟山市| 和林格尔县| 伊吾县| 柳河县| 略阳县| 丹江口市| 紫阳县| 宝山区| 宜都市|