目錄
前言
準備工作
創建STM32CubeMx項目
VSCode導入項目&配置
構建錯誤調試
后記
前言
? ? ? ?去年10月開始接觸單片機,一直在用樹莓派的Pico,之前一直用Micropython,玩的不亦樂乎,試錯階段優勢明顯,很快就能鼓搗一些小玩意出來。這兩天準備往“C+STM32”的路線走一走,也是因為市場上還是這個路線比較通用。
準備工作
- 開發工具1:STM32CubeMx,用于生成項目及基礎代碼,我理解就是把依賴都弄好,畢竟是人家官方的開發工具。
- 開發工具2:VSCode,裝插件,主要是C和EIDE這兩個插件,原來還不知道為啥要多加個VSCode,直到我第一次運行STM32CubeMx,實在不知道點哪里,上手有點難度,而且巨慢,時不時報個錯,但是能用,我這是新裝的WIN10,沒有亂七八糟的軟件。
- 其實這個組合就是一個親爹負責生出來,后爹負責養育,后邊只要改依賴什么的都需要親爹重新生成一下子。
- STM32單片機一個:我之前買了4個,拿看著最簡單的先來試試,STM32F103C8T6。
- STM32CubeMx注冊賬號一個,下載需要,另外創建項目的時候需要下載相關的依賴,也需要。
創建STM32CubeMx項目
- 打開軟件,第一次打開無所適從,最后選的紅框處
- 腦袋嗡嗡的,最后按箭頭所指摸索的
- 默認進到的頁面選針腳,單片機領域的HelloWorld都是點燈
- 然后選Project Manager,我主要是奔著Makefile來的,第三個框選的就是這個,中間的框好像是默認的,不確定是否對后續的操作有無影響。
VSCode導入項目&配置
- 這個直接打開STM32CubeMx創建的項目沒有反應,我就又創建了EIDE項目,然后把所有文件都拷貝到這個新目錄里,然后就開始各種找資料,沒有一個準確的,但是思路基本有了。需要配置如圖紅框處的內容,這些都是拷貝過來的,需要人工指定一下。
- 最后兩個框,在Makefile文件中找
構建錯誤調試
- 配置好了就可以點構建了
- 哈,噼里啪啦一通報錯,大概有兩種情況
1.引入了不該引入的內容,如:
stm32f1xx_hal_timebase_rtc_alarm_template.c:73:1: error: unknown type name 'RTC_HandleTypeDef'; did you mean 'DMA_HandleTypeDef'?
? ?73 | RTC_HandleTypeDef ? ? ? ?hRTC_Handle;
? ? ? | ^~~~~~~~~~~~~~~~~
? ? ? | DMA_HandleTypeDef2.Gcc版本問題,如:
c:/users/administrator/.eide/tools/gcc_arm/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld.exe:d:/A_WorkPlaces/C/NewProject1/STM32F103XX_FLASH.ld:105: non constant or?
forward reference address expression for section .ARM.extab
collect2.exe: error: ld returned 1 exit status
- 問題1解決,禁用掉報錯的文件,都是模板文件,不會有無問題:
- 問題2解決,是因為eide自動裝的Gcc是版本10,而生成的文件是Gcc11的,可以先看看自己系統是用的哪個版本,然后修改生成文件,看注釋刪掉“(READONLY)” 連括號一塊刪,我的一共五個,另外注意,“.ARM :”的ARM和冒號之間要有空格,不然也要報錯!
- 再次執行構建,成功!
后記
花了大概三個小時,中途卡點有點多,好在暈暈乎乎編譯成功了,下一篇繼續。