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

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

2、步驟 2:基礎(chǔ)配置(時(shí)鐘 / 調(diào)試接口)
(1)配置調(diào)試接口(必須,否則無(wú)法下載程序)
點(diǎn)擊左側(cè)菜單欄“System Core” → “SYS”;
右側(cè)“Debug” 選項(xiàng)選擇 “Serial Wire”(SWD 模式,占用引腳少,Gokit3自帶SWD燒錄接口);

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

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


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


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

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

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

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

完整main.c關(guān)鍵片段參考:
@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庫(kù) */ HAL_Init(); /* 2. 配置系統(tǒng)時(shí)鐘(CubeMX自動(dòng)生成) */ SystemClock_Config(); /* 3. 初始化外設(shè)(CubeMX自動(dòng)生成,包含PB0) */ MX_GPIO_Init(); /* 4. 主循環(huán) */ while (1) {/* 點(diǎn)燈核心代碼:LED0(PB0)翻轉(zhuǎn)電平,間隔500ms閃爍 */HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_1); // 翻轉(zhuǎn)PB0電平(亮→滅/滅→亮)HAL_Delay(500); // 延時(shí)500ms(HAL庫(kù)自帶延時(shí)函數(shù),單位ms) }}
代碼解釋
HAL_Init():初始化 HAL 庫(kù)核心組件(如 SysTick 定時(shí)器,用于HAL_Delay);
SystemClock_Config():CubeMX 自動(dòng)生成的時(shí)鐘配置函數(shù),對(duì)應(yīng)我們之前設(shè)置的 72MHz 主頻;
MX_GPIO_Init():初始化 GPIO(包含 PB0 的輸出配置);
HAL_GPIO_TogglePin():HAL 庫(kù) GPIO 電平翻轉(zhuǎn)函數(shù),參數(shù) 1=GPIO 端口(GPIOB),參數(shù) 2 = 引腳(GPIO_PIN_0);
HAL_Delay():HAL 庫(kù)毫秒級(jí)延時(shí)函數(shù),底層基于 SysTick 定時(shí)器實(shí)現(xiàn)。
2、步驟 2:下載程序到 Gokit3:
不會(huì)燒錄下載的可以此文章
鏈接:
《機(jī)智云Gokit3開(kāi)發(fā)篇》1如何給Gokit3燒錄程序(MCU+ST-Link版)-GoKit 開(kāi)源套件-開(kāi)源項(xiàng)目及賽事-機(jī)智云
3、步驟 3:驗(yàn)證效果
此時(shí)Gokit3 上的LED 1會(huì)以 500ms 為間隔循環(huán)閃爍,STM32 HAL 庫(kù)工程搭建成功,點(diǎn)燈實(shí)例也成功跑起來(lái)。

通過(guò)本次介紹,我們從零基礎(chǔ)開(kāi)始成功搭建了Gokit3的HAL庫(kù)工程,并完成了簡(jiǎn)單的點(diǎn)燈實(shí)驗(yàn),體驗(yàn)了開(kāi)發(fā)的樂(lè)趣與成就感。希望這篇文章能夠?yàn)槟腟TM32學(xué)習(xí)之旅提供幫助,并激發(fā)您在物聯(lián)網(wǎng)開(kāi)發(fā)領(lǐng)域的探索興趣。
-
機(jī)智云
+關(guān)注
關(guān)注
3文章
647瀏覽量
27769 -
Gokit
+關(guān)注
關(guān)注
2文章
15瀏覽量
12970 -
HAL
+關(guān)注
關(guān)注
2文章
75瀏覽量
13668
發(fā)布評(píng)論請(qǐng)先 登錄
《機(jī)智云Gokit3開(kāi)發(fā)篇》4 RGB燈的介紹與驅(qū)動(dòng)移植(HAL庫(kù))
【GoKit3(S)】Gokit3開(kāi)箱及介紹
【Gokit 3試用體驗(yàn)】Gokit3開(kāi)箱報(bào)告
【Gokit3試用體驗(yàn)】1、開(kāi)箱評(píng)測(cè)
如何使用機(jī)智云開(kāi)發(fā)一款智能硬件產(chǎn)品
每周精選:Gokit3S開(kāi)發(fā)攻略、低成本SOC開(kāi)發(fā)(1月9日)
GoKit3采用分體式可插拔的設(shè)計(jì)方案
4G模組接入機(jī)智云gokit3開(kāi)發(fā)板
通過(guò)機(jī)智云GoKit3開(kāi)發(fā)套件實(shí)現(xiàn)手機(jī)APP的遠(yuǎn)程控制
機(jī)智云推出基于物聯(lián)網(wǎng)智能硬件開(kāi)發(fā)套件GoKit3
gokit3是如何接入4G模組ML302-GC211轉(zhuǎn)接板的
GoKit3的硬件電路原理
【機(jī)智云Gokit3測(cè)評(píng)】Gokit3硬件電路學(xué)習(xí)
機(jī)智云Gokit3開(kāi)發(fā)篇:ST-Link燒錄MCU程序操作詳解
如何給Gokit3燒錄程序(MCU+FlyMcu版)
機(jī)智云Gokit3開(kāi)發(fā)篇 — 搭建Gokit3工程(HAL庫(kù)版)
評(píng)論