【星云 Orbit-F4 开发板】01. STM32F407 HAL库开发环境安装与工程模板创建

这几天规划下,计划为我的学生出一个星系列的四个开发板,所有原理图,印板图和例程源码全部开源,博客上文章配合开发板硬件电路设计,不定时发布。不忘初心,用我的执着致力点燃学生对技术的热情,培养“懂理论能实战”的嵌入式人才。愿你们所行风雨无阻,前程似锦。

核心板型号 处理器参数 学习定位 典型应用场景
极光 Orbit-C8 STC8H8K64U(51架构/24MHz) 单片机原理与应用 GPIO控制/UART通信
星火 Orbit-F1 STM32F103RET6(Cortex-M3/72MHz) ARM应用开发实践 智能小车/物联网节点
星云 Orbit-F4 STM32F407VGT6(Cortex-M4/168MHz) 实时操作系统进阶 四轴飞控/工业网关
星界 Orbit-H7 STM32H743IIT6(双核480MHz+AI加速器) 嵌入式AI与边缘计算 机器视觉/预测性维护

本教程将详细指导你完成 STM32F407 开发环境的安装、器件包的安装以及工程模板的创建与使用。我们将基于 Keil MDK 开发工具,详细讲解每一步操作,包括文件结构的创建、移植过程、移植文件名称及对应目录,以及 Keil 分组目录和对应文件的说明。拿到板子的同学可以先动起来。


1️⃣ Keil MDK 开发环境安装

1.1 Keil MDK 社区版介绍

Keil MDK 社区版是 ARM 官方推出的免费版本,适用于非商业用途。它支持所有基于 Cortex-M 的微控制器,并且没有代码大小限制。

1.2 Keil MDK 下载与安装
  1. 访问下载页面 打开 Keil MDK 社区版下载链接:Arm Keil | MDK-Community edition。

  2. 注册账号 如果没有账号,点击 Sign up 进行注册。填写邮箱并获取验证码,完成注册。

  3. 登录并下载 使用注册的账号登录,点击 Download Keil MDK 下载安装包。

  4. 安装 Keil MDK

    • 右键以管理员身份运行安装包。

    • 按照提示选择安装路径(路径中不能包含中文)。

    • 填写个人信息(可随意填写)。

    • 等待安装完成。

  5. 激活 Keil MDK

    • 以管理员身份运行 Keil MDK。

    • 点击 File -> License Management

    • 点击 Get LIC via Internet,按照提示填写信息并获取激活码。

    • 将激活码粘贴到 New License ID Code (LIC) 中,点击 Add LIC 完成激活。

2️⃣ STM32F407 器件包安装

2.1 下载器件包
  1. 访问 STM32 官网 打开 STM32 官网:https://www.st.com,搜索并下载 STM32F4 系列的器件包(Pack)。

  2. 下载 Pack 文件 找到 STM32F4xx_DFP 器件包并下载。

2.2 安装器件包
  1. 双击安装 Pack 文件 下载完成后,双击 .pack 文件进行安装。

  2. 按照提示完成安装 点击 Next,等待安装完成。

  3. 验证安装 打开 Keil MDK,点击 Project -> Manage -> Pack Installer,查看是否已安装 STM32F4xx_DFP

3️⃣ 工程模板创建与使用

3.1 创建新工程
  1. 新建工程文件夹 在本地创建一个文件夹,例如 STM32F40x_Project,注意路径中不能包含中文。

  2. 打开 Keil MDK 并创建工程

    • 打开 Keil MDK,点击 Project -> New uVision Project

    • 选择刚才创建的文件夹,输入工程名称,例如 STM32F40x_Template

    • 点击 Save

  3. 选择芯片型号 在弹出的窗口中选择 STM32F407xxx(根据实际芯片型号选择),点击 OK

  4. 选择 CMSIS 固件 在弹出的窗口中选择 CMSIS -> COREDevice -> Startup,点击 OK

3.2 文件结构创建
  1. 创建文件夹结构 在工程文件夹 STM32F40x_Project 中创建以下文件夹:

    • Projects:存放不同 IDE 的工程文件。

      • MDK-RAM:存放 Keil MDK 的工程文件。

      • Output:存放编译输出文件。

    • Drivers:存放所有驱动相关文件。

      • BSP:存放底层相关的支持包。

      • Module:存放各类软件模块,如定时器、状态机等。

      • CMSIS:存放 CMSIS 核心文件。

      • STM32F4xx_HAL_Driver:存放 STM32 HAL 库文件。

    • APP:存放应用程序,由用户编写,包含 main 函数。

  2. 目录结构图示

STM32F40x_Project/
├── Projects/
│   ├── MDK-RAM/
│   └── Output/
├── Drivers/
│   ├── BSP/
│   ├── Module/
│   ├── CMSIS/
│   └── STM32F4xx_HAL_Driver/
└── APP/
  1. 复制库文件与启动文件 从 STM32 HAL 库中复制以下文件到对应文件夹:

    • Drivers/CMSIS/Device/ST/STM32F4xx/Include:复制到 Drivers/CMSIS/Inc

    • Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates:复制到 Drivers/CMSIS/Src

    • Drivers/STM32F4xx_HAL_Driver/Inc:复制到 Drivers/STM32F4xx_HAL_Driver/Inc

    • Drivers/STM32F4xx_HAL_Driver/Src:复制到 Drivers/STM32F4xx_HAL_Driver/Src

3.3 Keil 分组目录与对应文件
  1. 在 Keil 中添加分组

    • 右键 Target 1,选择 Add Group,创建以下分组:

      • CMSIS

      • STM32F4xx_HAL_Driver

      • BSP

      • Module

      • APP

  2. 添加文件到分组

    • CMSIS 分组:添加 Drivers/CMSIS/Src 文件夹中的 core_cm4.csystem_stm32f4xx.c

    • STM32F4xx_HAL_Driver 分组:添加 Drivers/STM32F4xx_HAL_Driver/Src 文件夹中的所有 .c 文件。

    • BSP 分组:添加 Drivers/BSP 文件夹中的文件。

    • Module 分组:添加 Drivers/Module 文件夹中的文件。

    • APP 分组:添加 APP 文件夹中的文件。

  3. 添加头文件路径

    • 点击 Project -> Options for Target -> C/C++

    • Include Paths 中添加以下路径:

      • Drivers/BSP

      • Drivers/Module

      • Drivers/CMSIS/Inc

      • Drivers/STM32F4xx_HAL_Driver/Inc

      • APP

3.4 编写主程序
  1. 创建 main.c 文件

    • 右键 APP 分组,选择 Add New Item to Group,创建 main.c 文件。

  2. 编写代码main.c 中添加以下代码:

#include "stm32f4xx_hal.h"
#include "bsp_init.h"
​
void Delay(uint32_t count) {
    while (count--);
}
​
int main(void) {
    // 板子初始化
    HAL_Init();
    SystemClock_Config();
    Board_Init();
​
    // 使能 GPIOC 时钟
    __HAL_RCC_GPIOC_CLK_ENABLE();
​
    // 配置 GPIOC Pin 13 为推挽输出
    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_InitStruct.Pin = GPIO_PIN_13;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
​
    while (1) {
        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); // 点亮 LED
        Delay(1000000);
        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);   // 熄灭 LED
        Delay(1000000);
    }
}
  1. 编写 bsp_init.hbsp_init.c 文件

    • 创建 bsp_init.h 文件Drivers/BSP 文件夹中创建 bsp_init.h 文件,内容如下:

#ifndef __BSP_INIT_H
#define __BSP_INIT_H
​
#include "stm32f4xx_hal.h"
​
void Board_Init(void);
​
#endif /* __BSP_INIT_H */
  • 创建 bsp_init.c 文件Drivers/BSP 文件夹中创建 bsp_init.c 文件,内容如下:

#include "bsp_init.h"
​
void SystemClock_Config(void) {
    RCC_OscInitTypeDef RCC_OscInitStruct = {0};
    RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
​
    /** 初始化HSE振荡器
    */
    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
    RCC_OscInitStruct.HSEState = RCC_HSE_ON;
    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
    RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
    RCC_OscInitStruct.PLL.PLLM = 8;
    RCC_OscInitStruct.PLL.PLLN = 336;
    RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
    RCC_OscInitStruct.PLL.PLLQ = 7;
    if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
        Error_Handler();
    }
​
    /** 初始化CPU、AHB和APB总线时钟
    */
    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
                                  | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
    RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
    RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
​
    if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) {
        Error_Handler();
    }
}
​
void Board_Init(void) {
    // 初始化HAL库
    HAL_Init();
​
    // 配置系统时钟
    SystemClock_Config();
}
  1. 编写 Error_Handler 函数

    • 创建 error_handler.c 文件APP 文件夹中创建 error_handler.c 文件,内容如下:

#include "stm32f4xx_hal.h"
​
void Error_Handler(void) {
    while (1) {
        // 错误处理代码
    }
}
  1. main.c 中包含 error_handler.c

    • main.c 文件的顶部添加以下代码:

#include "error_handler.h"
3.5 编译与下载
  1. 编译工程 点击 Build 按钮(或按 F7),确保没有错误和警告。

  2. 下载程序 连接开发板,点击 Download 按钮(或按 F8),将程序下载到开发板。

4️⃣ 使用例程或模板

4.1 复制模板工程
  1. 从 STM32CubeMX 生成模板工程

    • 打开 STM32CubeMX,选择 STM32F407VGT6 芯片。

    • 配置所需的外设(如GPIO、定时器等)。

    • 生成 Keil 项目文件。

  2. 打开生成的工程 在 Keil MDK 中打开生成的工程文件(.uvprojx)。

4.2 修改头文件路径
  1. 调整头文件路径 点击 Project -> Options for Target -> C/C++,修改头文件路径为相对路径。

4.3 编译与下载
  1. 编译工程 点击 Build 按钮,确保没有错误和警告。

  2. 下载程序 连接开发板,点击 Download 按钮,将程序下载到开发板。

5️⃣ 总结

通过本教程,你已经完成了 STM32F407 开发环境的安装、器件包的安装以及工程模板的创建与使用。接下来,你可以基于模板开发自己的应用程序,探索 STM32F407 的更多功能!

希望这些步骤能帮助你顺利搭建 STM32F407 的开发环境并开始你的嵌入式开发之旅。如果有任何问题,请随时提问!发之旅。如果有任何问题,请随时提问!

你可能感兴趣的:(【星云,Orbit-F4,开发板】,【星火,Orbit-F1开发板】,单片机,stm32,物联网,mcu,嵌入式硬件)