收藏官网首页
查看: 8|回复: 0

[资料] 《机智云Gokit3开发篇》3搭建Gokit3工程(HAL库版)

跳转到指定楼层
楼主
 楼主| 发表于 昨天 23:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
注册成为机智云开发者,手机加虚拟设备快速开发

注:文章结尾附本文章源码、原理图 资料链接


摘要:本文章主要介绍了gokit3的MCU STM32主控及如何搭建HAL工程以及Gokit3的点灯实验

Gokit3 作为机智云的物联网开发板,核心主控是 STM32F103C8T6,是新手学习 STM32 + 物联网开发的绝佳选择。本文章将从零基础开始,一步步带大家玩转 Gokit3,这次先搞定最基础的-- 如何搭建工程及点灯实验,让 Gokit3 的 LED 先闪起来!

硬件清单
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 的许可证)。


一、开始搭建工程:1、步骤1:STM32CubeMX 新建工程


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


打开 CubeMX,选择芯片型号
双击打开 STM32CubeMX,点击主界面的 “New Project”;

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

2、步骤 2:基础配置(时钟 / 调试接口)
(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,后续代码中可直接用这个别名。



[color=rgba(0, 0, 0, 0.85)]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”;

配置代码生成选项:
勾选 “Generate peripheral initialization as a pair of '.c/.h' files per peripheral”(按外设生成独立的.c/.h 文件,代码更整洁);
其他默认即可;
点击右上角 “GENERATE CODE”,等待代码生成完成,然后点击 “Open Project” 自动打开 Keil 工程。



二、Keil 工程配置与代码编写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关键片段参考:


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

        
3、步骤 3:验证效果
此时 Gokit3 上的LED 1会以 500ms 为间隔循环闪烁,STM32 HAL 库工程搭建成功,点灯实例也成功跑起来。


以上文章到此结束,谢谢大家!

源码、原理图资料链接
原理图:
链接: https://pan.baidu.com/s/19mmg4zj4c9RA-ejn64NxfQ?pwd=WPC1 提取码: WPC1
源码:
链接: https://pan.baidu.com/s/1Y_cJhng56Ld8uamtrD6bpQ?pwd=WPC1 提取码: WPC1


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表