在当今物联网时代,越来越多的开发者希望能够快速上手并实现创新的产品与应用。机智云的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文章
649浏览量
27819 -
Gokit
+关注
关注
2文章
15浏览量
12983 -
HAL
+关注
关注
2文章
75浏览量
13733
发布评论请先 登录
【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库版)
评论