真.從“零”搞 VSCode+STM32CubeMx+C <1>構建

目錄

前言

準備工作

創建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_HandleTypeDef

2.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和冒號之間要有空格,不然也要報錯!

  • 再次執行構建,成功!

后記

花了大概三個小時,中途卡點有點多,好在暈暈乎乎編譯成功了,下一篇繼續。

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

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

相關文章

C語言學習之結構體

在C語言中,我們已經學了好幾種類型的數據。比如整型int、char、short等,浮點型double、float等。但是這些都是基本數據類型,而這些數據類型應用在實際編程里顯然是不夠用的。比如我們沒有辦法用一旦數據類型來定義一個”人“的屬性。因此這里…

架構-計算機系統基礎

計算機系統基礎 一、計算機系統組成 (一)計算機系統層次結構 硬件組成 主機:包含CPU(運算器控制器)、主存儲器(內存)。外設:輸入設備、輸出設備、輔助存儲器(外存&…

【計算機網絡性能優化】從基礎理論到實戰調優

目錄 前言技術背景與價值當前技術痛點解決方案概述目標讀者說明 一、技術原理剖析核心概念圖解核心作用講解關鍵技術模塊說明技術選型對比 二、實戰演示環境配置要求核心代碼實現案例1:iPerf3帶寬測試案例2:TCP窗口優化案例3:QoS流量整形 運行…

Python 自動化辦公:Excel 數據處理的“秘密武器”

引言 在日常的 IT 辦公場景里,Excel 是數據處理與分析的 “常勝將軍”。無論是財務人員整理賬目、銷售團隊統計業績,還是運營人員分析用戶數據,Excel 都發揮著關鍵作用。但面對海量數據,手動操作 Excel 不僅效率低下,還…

緩存集群技術深度解析:從原理到實戰

緩存集群技術深度解析:從原理到實戰 一、緩存集群核心定位與架構選型 1. 集群模式核心價值 緩存集群通過數據分片、高可用保障、水平擴展解決單節點瓶頸,核心能力包括: 數據分片:將數據分散到多個節點,突破單節點內…

CSDN編輯文章時如何自動生成目錄

如何自動生成目錄 前置條件1. 插入目錄標識符2. 編寫標題層級 前置條件 需要使用markdown編輯,并且只有按照markdown語法編寫不同的標題級別,才能使用這個方法自動生成對應的目錄。 1. 插入目錄標識符 在文章的頂部添加以下代碼: [TOC](文…

產品經理對于電商接口的梳理||電商接口文檔梳理與接入

接口梳理7個注意點總結 ①注意要測試環境和生產環境。生產上線時候要提醒研發換到生產環境調用。 ②注意必輸字段和選輸字段,要傳入字段的含義和校驗。枚舉值不清楚含義的要詢問對方含義,比如說單據類型字段枚舉值是B2C發貨單,BBC發貨單&am…

更快的圖像局部修改與可控生成:Flex.2-preview

Flex.2-preview 文本生成圖像擴散模型介紹 一、模型簡介 Flex.2-preview 是一種 開源的 80 億參數文本生成圖像擴散模型,具備通用控制和修復支持功能,是 Flex.1alpha 的下一代版本。該模型由社區開發并為社區服務,采用 Apache 2.0 許可證&a…

【Castle-X機器人】一、模塊安裝與調試:機器人底盤

持續更新。。。。。。。。。。。。。。。 【ROS機器人】模塊安裝 一、Castle-X機器人底盤1.1 結構概述1.2 驅動執行結構1.3 環境傳感器1.4 電氣系統1.5 Castle-x機器人底盤測試激光雷達傳感器測試及數據可視化超聲波傳感器實時數據獲取防跌落傳感器測試陀螺儀測試鍵盤控制測試…

條件、列表渲染.

#### v-for 1. 渲染列表 vue <template> <ul v-for"(item,index) in list" > <li>{{ item }}</li> </ul> </template> <script setup> import { ref } from vue; let list ref([蘋果, 香蕉, 橙子]) </script>…

node20的安裝和vue的入門準備

一、node20的安裝 直接下載路徑&#xff1a;https://nodejs.org/download/release/v20.11.0/node-v20.11.0-x64.msi 安裝&#xff0c;雙擊msi文件 點擊同意協議 更改下載路徑 什么也不用選&#xff0c;點擊next進行下一步 什么也不用選&#xff0c;點擊next進行下一步 點擊安…

從 Java 到 Kotlin:在現有項目中遷移的最佳實踐!

全文目錄&#xff1a; 開篇語 1. 為什么選擇 Kotlin&#xff1f;1.1 Kotlin 與 Java 的兼容性1.2 Kotlin 的優勢1.3 Kotlin 的挑戰 2. Kotlin 遷移最佳實踐2.1 漸進式遷移2.1.1 步驟一&#xff1a;將 Kotlin 集成到現有的構建工具中2.1.2 步驟二&#xff1a;逐步遷移2.1.3 步驟…

威雅利電子|業界領先的高隔離度用于5G基站的吸收式SPDT開關“NT1819“

業界領先的高隔離度 用于5G基站的吸收式SPDT開關"NT1819" 為了實現智能社會&#xff0c;已經啟動了5G服務。這樣&#xff0c;高速、低延遲、大容量的數據通信成為可能&#xff0c;也給我們的生活和工業發展帶來了巨大的變化。 在5G基站有很多天線&#xff0c;每個天…

Diamond軟件的使用--(6)訪問FPGA的專用SPI接口

1.什么是FPGA的專用SPI接口&#xff1f; 此處的SPI FLASH接口即為FPGA的專用SPI接口&#xff0c;上電時&#xff0c;FPGA從該FLASH讀出程序并運行。 2.訪問SPI PROM需要注意哪些地方&#xff1f; 1&#xff09;處于MASTER SPI MODE 2&#xff09;調用USRMCLK原語&#xff0c;…

Go 語言中的 `select` 語句詳解

select 是 Go 語言中處理通道(Channel)操作的一個強大控制結構&#xff0c;它允許 goroutine 同時等待多個通道操作。下面我將全面詳細地解釋 select 語句的各個方面。 基本語法 select 語句的基本語法如下&#xff1a; select { case <-ch1:// 如果從 ch1 成功接收數據&…

AI如何重塑CC防護行業?五大變革與實戰策略解析

一、CC防護行業的技術痛點與AI的破局方向 CC攻擊&#xff08;Challenge Collapsar&#xff09;作為一種以高頻合法請求消耗服務器資源的DDoS攻擊手段&#xff0c;傳統防護技術面臨三大核心挑戰&#xff1a; 規則依賴性強&#xff1a;基于IP封禁或請求頻率的靜態規則易被繞過&a…

GPT-4o最新圖像生成完全指南:10大應用場景與提示詞模板

引言 OpenAI于近期推出的全新GPT-4o圖像生成功能&#xff0c;代表了AI圖像創作領域的重大突破。作為一個原生多模態系統&#xff0c;GPT-4o將文本理解和圖像生成無縫整合&#xff0c;為創作者、教育工作者和專業人士提供了前所未有的視覺創作靈活性。本文將分享10個GPT-4o圖像…

Linux驅動開發2 - 內核定時器驅動

背景 所有驅動開發都是基于全志T507&#xff08;Android 10&#xff09;進行開發&#xff0c;用于記錄驅動開發過程。 簡介 定時器是比較常用的一個功能&#xff0c;用來執行周期性任務。一般不太精確的定時可以用系統提供的延時函數進行。如果需要進行較為精確的延時&#…

Dify 使用 excel 或者 csv 文件創建知識庫

Dify 使用 excel 或者 csv 文件創建知識庫 1. 創建知識庫2. 創建聊天助手3. 其他 1. 創建知識庫 創建知識庫&#xff0c;導入excel/csv文件&#xff0c; 文件內容&#xff0c; 單擊 “預覽塊”&#xff0c;可以確認會生成多個鍵值對的塊&#xff0c; 配置 Embedding 模型和檢索…

23種設計模式-行為型模式之迭代器模式(Java版本)

Java 迭代器模式&#xff08;Iterator Pattern&#xff09;詳解 &#x1f9e0; 什么是迭代器模式&#xff1f; 迭代器模式是一種行為型設計模式&#xff0c;它提供一種方法順序訪問一個聚合對象中的各個元素&#xff0c;而不暴露該對象的內部表示。 &#x1f3af; 使用場景 …