机智云Gokit3开发篇 — 搭建Gokit3工程(HAL库版)

描述

 

在当今物联网时代,越来越多的开发者希望能够快速上手并实现创新的产品与应用。机智云的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 内可直接下载);

l Keil MDK-ARM V5代码编译、下载调试

下载V5 版本(需兼容 F1 系列);

安装对应芯片包(STM32F1xx_DFP);

需破解(新手可自行找教程,注意选择支持F1 的许可证)。


 

02开始搭建工程
 


 

1、步骤1:STM32CubeMX 新建工程


 

介绍:STM32CubeMX 是 ST 官方的可视化配置工具,能极大简化 HAL 库工程搭建,新手不用手动配置寄存器,效率拉满


 

打开CubeMX,选择芯片型号

双击打开STM32CubeMX,点击主界面的 “New Project”;


 


HAL


 


 

在“Part Number Search” 搜索框输入 STM32F103C8T6,选中搜索结果中的芯片(注意区分 LQFP48 封装),点击 “Start Project”;


 


HAL


 

2、步骤 2:基础配置(时钟 / 调试接口)

(1)配置调试接口(必须,否则无法下载程序)

点击左侧菜单栏“System Core” → “SYS”;

右侧“Debug” 选项选择 “Serial Wire”(SWD 模式,占用引脚少,Gokit3自带SWD烧录接口);


 


HAL


 


 

(2)配置时钟源和时钟树(决定系统主频)

Gokit3 的 STM32F103C8T6 外接 8MHz 晶振(HSE),我们配置系统主频为 72MHz(F103 的最大主频):


 

点击左侧“RCC”;

右侧“High Speed External (HSE)” 选择 “Crystal/Ceramic Resonator”(外部晶振);


HAL


 


 

点击顶部菜单栏“Clock Configuration”(时钟配置);

配置时钟树:

HSE 设为 8MHz;

PLLSRC 选择 HSE;

PLLMUL 选择 x9(8*9=72MHz);

HCLK 选择 72MHz;

PCLK1 选择 36MHz(APB1 最大 36MHz);

PCLK2 选择 72MHz;


 

HALHAL


 


 

3、步骤 3:配置 LED 引脚(Gokit3 硬件对应)

先查 Gokit3 原理图:有4个LED 正极接PB1、PB11、PB14、PB15 引脚(高电平点亮,低电平熄灭)原理图如下:


 


HAL


 


 


HAL


 


 

配置如下:(我们以LED1为例)

点击左侧“GPIO”;

在引脚列表中找到 PB1,点击下拉菜单:

Mode 选择 “Output Push Pull”(推挽输出);

Pull-up/Pull-down 选择 “Pull down”(下拉,默认低电平,LED 灭);

Speed 选择 “Low”(低速即可,LED 无需高速);

可给 PB0 重命名(方便识别):在 “User Label” 栏输入 LED0,后续代码中可直接用这个别名。


 


HAL


 


 

STM32F103C8T6 的 GPIO 外设支持八种工作模式,可分为输入模式、输出模式、复用输出模式三大类

这里介绍GPIO的八种模式


 

输入浮空(GPIO_Mode_IN_FLOATING)

输入上拉(GPIO_Mode_IPU)

输入下拉(GPIO_Mode_IPD)

模拟输入(GPIO_Mode_AIN)

开漏输出(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”;


 


HAL


 


 

配置代码生成选项:

勾选“Generate peripheral initialization as a pair of '.c/.h' files per peripheral”(按外设生成独立的.c/.h 文件,代码更整洁);

其他默认即可;

点击右上角“GENERATE CODE”,等待代码生成完成,然后点击 “Open Project” 自动打开 Keil 工程。


 


HAL


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);


 


HAL


 


 

完整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;}@page Section0{}div.Section0{page:Section0;}int main(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 库工程搭建成功,点灯实例也成功跑起来。


 


HAL


 

通过本次介绍,我们从零基础开始成功搭建了Gokit3的HAL库工程,并完成了简单的点灯实验,体验了开发的乐趣与成就感。希望这篇文章能够为您的STM32学习之旅提供帮助,并激发您在物联网开发领域的探索兴趣。 

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分