在當今物聯網時代,越來越多的開發者希望能夠快速上手并實現創新的產品與應用。機智云的Gokit3開發板因其易用性和豐富功能受到初學者的青睞。該開發板核心主控采用了高性價比的STM32F103C8T6微控制器,支持多種開發環境,使學習與開發變得更加便捷。
本文將帶您從零基礎開始,逐步搭建Gokit3的HAL庫工程,并通過簡單的點燈實驗,讓您感受開發的樂趣。在這個過程中,我們將學習如何使用STM32的HAL庫,掌握基本的開發流程,為后續更復雜的項目打下堅實的基礎。
文章結尾附本文章源碼、原理圖資料鏈接。
01硬件清單
Gokit3 開發板(核心:STM32F103C8T6)
Micro USB 數據線(供電 / 下載)
ST-Link 下載器(若板子自帶則無需額外,Gokit3 一般集成了 ST-Link)
軟件清單
軟件名稱
l STM32CubeMX----可視化配置工程、生成 HAL 庫代碼
官網下載鏈:(https://www.st.com/en/development-tools/stm32cubemx.html);
安裝時需下載STM32F1 系列固件包(CubeMX 內可直接下載);
下載V5 版本(需兼容 F1 系列);
安裝對應芯片包(STM32F1xx_DFP);
需破解(新手可自行找教程,注意選擇支持F1 的許可證)。
02開始搭建工程
1、步驟1:STM32CubeMX 新建工程
介紹:STM32CubeMX 是 ST 官方的可視化配置工具,能極大簡化 HAL 庫工程搭建,新手不用手動配置寄存器,效率拉滿
打開CubeMX,選擇芯片型號
雙擊打開STM32CubeMX,點擊主界面的 “New Project”;

在“Part Number Search” 搜索框輸入 STM32F103C8T6,選中搜索結果中的芯片(注意區分 LQFP48 封裝),點擊 “Start Project”;

(1)配置調試接口(必須,否則無法下載程序)
點擊左側菜單欄“System Core” → “SYS”;
右側“Debug” 選項選擇 “Serial Wire”(SWD 模式,占用引腳少,Gokit3自帶SWD燒錄接口);

(2)配置時鐘源和時鐘樹(決定系統主頻)
Gokit3 的 STM32F103C8T6 外接 8MHz 晶振(HSE),我們配置系統主頻為 72MHz(F103 的最大主頻):
點擊左側“RCC”;
右側“High Speed External (HSE)” 選擇 “Crystal/Ceramic Resonator”(外部晶振);

點擊頂部菜單欄“Clock Configuration”(時鐘配置);
配置時鐘樹:
HSE 設為 8MHz;
PLLSRC 選擇 HSE;
PLLMUL 選擇 x9(8*9=72MHz);
HCLK 選擇 72MHz;
PCLK1 選擇 36MHz(APB1 最大 36MHz);
PCLK2 選擇 72MHz;


3、步驟3:配置 LED 引腳(Gokit3 硬件對應)
先查 Gokit3 原理圖:有4個LED 正極接PB1、PB11、PB14、PB15 引腳(高電平點亮,低電平熄滅)原理圖如下:


配置如下:(我們以LED1為例)
點擊左側“GPIO”;
在引腳列表中找到 PB1,點擊下拉菜單:
Mode 選擇 “Output Push Pull”(推挽輸出);
Pull-up/Pull-down 選擇 “Pull down”(下拉,默認低電平,LED 滅);
Speed 選擇 “Low”(低速即可,LED 無需高速);
可給 PB0 重命名(方便識別):在 “User Label” 欄輸入 LED0,后續代碼中可直接用這個別名。

STM32F103C8T6 的 GPIO 外設支持八種工作模式,可分為輸入模式、輸出模式、復用輸出模式三大類
這里介紹GPIO的八種模式
輸入浮空(GPIO_Mode_IN_FLOATING)
輸入上拉(GPIO_Mode_IPU)
輸入下拉(GPIO_Mode_IPD)
開漏輸出(GPIO_Mode_Out_OD)
推挽輸出(GPIO_Mode_Out_PP)
復用開漏輸出(GPIO_Mode_AF_OD)
復用推挽輸出(GPIO_Mode_AF_PP)
4、步驟4:生成工程代碼
點擊頂部菜單欄“Project Manager”;
配置項目基本信息:
Project Name:輸入工程名(如Gokit3_LED_HAL);
Project Path:選擇保存路徑(這里推薦全英文路徑,兼容性問題);
Toolchain/IDE:選擇 “MDK-ARM”;

配置代碼生成選項:
勾選“Generate peripheral initialization as a pair of '.c/.h' files per peripheral”(按外設生成獨立的.c/.h 文件,代碼更整潔);
其他默認即可;
點擊右上角“GENERATE CODE”,等待代碼生成完成,然后點擊 “Open Project” 自動打開 Keil 工程。

03Keil 工程配置與代碼編寫
1、步驟 1:編寫點燈代碼(核心邏輯)
STM32CubeMX 生成的代碼已包含 HAL 庫底層驅動,我們只需在main.c中添加點燈邏輯即可:
打開Core/main.c文件,找到while(1)循環(約 95 行左右);
在while(1)中添加如下代碼:
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_1);
HAL_Delay(500);

完整main.c關鍵片段參考:
@font-face{font-family:"Times New Roman";}@font-face{font-family:"宋體";}@font-face{font-family:"Calibri";}p.MsoNormal{mso-style-name:正文;mso-style-parent:"";margin:0pt;margin-bottom:.0001pt;mso-pagination:none;text-align:justify;text-justify:inter-ideograph;font-family:Calibri;mso-fareast-font-family:宋體;mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;}span.msoIns{mso-style-type:export-only;mso-style-name:"";text-decoration:underline;text-underline:single;color:blue;}span.msoDel{mso-style-type:export-only;mso-style-name:"";text-decoration:line-through;color:red;}@page{mso-page-border-surround-header:no;mso-page-border-surround-footer:no;}@pageSection0{}div.Section0{page:Section0;}intmain(void){ /* 1. 初始化HAL庫 */ HAL_Init(); /* 2. 配置系統時鐘(CubeMX自動生成) */ SystemClock_Config(); /* 3. 初始化外設(CubeMX自動生成,包含PB0) */ MX_GPIO_Init(); /* 4. 主循環 */ while (1) {/* 點燈核心代碼:LED0(PB0)翻轉電平,間隔500ms閃爍 */HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_1); // 翻轉PB0電平(亮→滅/滅→亮)HAL_Delay(500); // 延時500ms(HAL庫自帶延時函數,單位ms) }}
代碼解釋
HAL_Init():初始化 HAL 庫核心組件(如 SysTick 定時器,用于HAL_Delay);
SystemClock_Config():CubeMX 自動生成的時鐘配置函數,對應我們之前設置的 72MHz 主頻;
MX_GPIO_Init():初始化 GPIO(包含 PB0 的輸出配置);
HAL_GPIO_TogglePin():HAL 庫 GPIO 電平翻轉函數,參數 1=GPIO 端口(GPIOB),參數 2 = 引腳(GPIO_PIN_0);
HAL_Delay():HAL 庫毫秒級延時函數,底層基于 SysTick 定時器實現。
2、步驟 2:下載程序到 Gokit3:
不會燒錄下載的可以此文章
鏈接:
《機智云Gokit3開發篇》1如何給Gokit3燒錄程序(MCU+ST-Link版)-GoKit 開源套件-開源項目及賽事-機智云
3、步驟 3:驗證效果
此時Gokit3 上的LED 1會以 500ms 為間隔循環閃爍,STM32 HAL 庫工程搭建成功,點燈實例也成功跑起來。

通過本次介紹,我們從零基礎開始成功搭建了Gokit3的HAL庫工程,并完成了簡單的點燈實驗,體驗了開發的樂趣與成就感。希望這篇文章能夠為您的STM32學習之旅提供幫助,并激發您在物聯網開發領域的探索興趣。
-
機智云
+關注
關注
3文章
647瀏覽量
27769 -
Gokit
+關注
關注
2文章
15瀏覽量
12970 -
HAL
+關注
關注
2文章
75瀏覽量
13668
發布評論請先 登錄
【Gokit 3試用體驗】Gokit3開箱報告
如何使用機智云開發一款智能硬件產品
每周精選:Gokit3S開發攻略、低成本SOC開發(1月9日)
GoKit3采用分體式可插拔的設計方案
通過機智云GoKit3開發套件實現手機APP的遠程控制
機智云推出基于物聯網智能硬件開發套件GoKit3
gokit3是如何接入4G模組ML302-GC211轉接板的
GoKit3的硬件電路原理
機智云Gokit3開發篇:ST-Link燒錄MCU程序操作詳解
如何給Gokit3燒錄程序(MCU+FlyMcu版)
機智云Gokit3開發篇 — 搭建Gokit3工程(HAL庫版)
評論