# GD32-F4-Project **Repository Path**: nie-yuzhi/gd32-f4-project ## Basic Information - **Project Name**: GD32-F4-Project - **Description**: No description available - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-22 - **Last Updated**: 2025-12-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GD32F4xx LVGL + FreeRTOS 项目 ## 项目简介 本项目是基于GD32F4xx系列微控制器的嵌入式应用,集成了FreeRTOS实时操作系统、LVGL图形界面库、IAP(应用内编程)Bootloader功能。支持通过串口Xmodem协议进行固件升级,提供完整的嵌入式开发解决方案。 ## 功能特性 ### 核心功能 - **FreeRTOS实时操作系统**: 多任务调度,支持任务优先级管理 - **LVGL图形界面**: 现代化GUI界面,支持多种控件和动画效果 - **IAP Bootloader**: 支持通过Xmodem协议进行固件空中升级 - **多任务架构**: 任务间通信和同步机制 ### 外设支持 - **LCD显示**: 支持彩色TFT显示屏驱动 - **触摸屏**: 支持FT5206和GT1151Q触摸控制器 - **LED指示**: 多路LED控制和状态指示 - **按键输入**: 按键扫描和事件处理 - **串口通信**: UART通信支持 - **I2C设备**: AT24C02 EEPROM存储器 - **SPI Flash**: W25Q128外部Flash存储器 - **外部SRAM**: 扩展内存支持 ### 软件特性 - **内存管理**: 自定义内存池管理(SRAMIN/SRAMCCM/SRAMEX) - **文件系统**: LVGL文件系统抽象层 - **图像解码**: 支持PNG、GIF、JPG等多种图片格式 - **字体支持**: 多种字体和编码支持 - **Xmodem协议**: 可靠的固件传输协议 ## 软件架构 ### 目录结构 ``` ├── Drivers/ # 硬件驱动层 │ ├── BSP/ # 板级支持包 │ ├── CMSIS/ # ARM CMSIS标准 │ ├── SYSTEM/ # 系统通用驱动 │ └── GD32F4xx_standard_peripheral/ # GD32标准外设库 ├── Middlewares/ # 中间件层 │ ├── FreeRTOS/ # FreeRTOS操作系统 │ ├── LVGL/ # LVGL图形库 │ └── Malloc/ # 内存管理 ├── Projects/ # 项目文件(MDK工程) ├── User/ # 用户应用代码 │ ├── main.c # 主程序入口 │ ├── main.h # 主程序头文件 │ └── freertos.c # FreeRTOS任务管理 ├── Output/ # 编译输出目录 └── README.md # 项目说明文档 ``` ### 任务架构 项目采用多任务设计,主要任务包括: 1. **vStartTask**: 启动任务,负责系统初始化和创建其他任务 2. **vLvglTask**: LVGL图形界面任务,处理UI渲染 3. **vLedTask**: LED闪烁任务,系统状态指示 4. **vKeyScanTask**: 按键扫描任务,按键输入检测 5. **vKeyProcessTask**: 按键处理任务,响应用户操作 6. **vIAPTask**: IAP升级任务,处理固件升级流程 ### 内存分区 ``` Flash布局: ├── Bootloader区域 (16KB) # 引导程序 ├── APP区域 (64KB) # 用户应用程序 └⃣ 系统保留区域 SRAM布局: ├── SRAMIN: 内部SRAM # 关键数据存储 ├── SRAMCCM: CCM内存 # 核心耦合内存 └── SRAMEX: 外部SRAM # 扩展内存池 ``` ## 硬件要求 ### 主控芯片 - GD32F407xx / GD32F427xx 系列微控制器 - 主频: 最高168MHz - Flash: 512KB - 3072KB - SRAM: 192KB - 256KB ### 外设配置 - **显示屏**: 7寸TFT LCD,分辨率800×480 - **触摸屏**: FT5206/GT1151Q电容触摸屏 - **存储**: W25Q128 SPI Flash (16MB) - **EEPROM**: AT24C02 I2C存储器 - **SRAM**: IS71/IS72系列外部SRAM - **通信**: USART0 (波特率115200) ## 安装教程 ### 开发环境搭建 1. **安装Keil MDK**: 下载并安装Keil MDK-ARM开发环境 2. **安装GD32固件库**: 下载对应芯片的GD32F4xx固件库 3. **导入项目**: 打开`Projects/MDK-ARM`目录下的`.uvprojx`工程文件 4. **配置编译器**: 确保选择正确的芯片型号和配置 ### 编译步骤 1. 打开Keil MDK,导入工程文件 2. 选择目标芯片型号(GD32F407/GD32F427) 3. 配置编译选项和优化级别 4. 编译项目:`Project -> Build All` 5. 下载调试:使用J-Link或ST-Link调试器 ### 下载程序 1. **J-Link调试器**: - 连接J-Link到开发板 - 配置调试器为J-Link - 选择SWD模式,速率设置为5MHz - 点击"Download"下载程序 2. **串口下载**: - 通过Bootloader模式,使用Xmodem协议 - 打开串口工具,波特率115200 - 按提示操作进行固件升级 ## 使用说明 ### 系统启动 1. 上电后系统自动运行Bootloader 2. 检测是否需要升级固件 3. 启动FreeRTOS调度器 4. 运行LVGL图形界面 ### 串口命令 通过串口可以执行以下操作: - 进入IAP升级模式 - 固件版本查询 - 系统状态监控 - 内存信息查看 ### 按键操作 - **KEY0**: 进入IAP升级模式 - **KEY1**: 系统复位 - **KEY2**: 背光调节 - **WK_UP**: 功能选择 ### 触摸操作 - 支持多点触摸 - 滑动切换界面 - 点击激活功能 - 长按弹出菜单 ### IAP升级流程 1. 进入升级模式:按下指定按键或串口命令 2. 等待传输:系统显示等待Xmodem传输提示 3. 选择文件:通过串口工具选择固件文件(.hex) 4. 开始传输:Xmodem协议自动传输和校验 5. 完成升级:传输完成后自动重启到新固件 ## 参与贡献 ### 代码规范 - 遵循GNU C标准 - 使用4空格缩进 - 添加必要的注释说明 - 保持函数和变量的命名清晰 ### 提交流程 1. Fork本仓库到个人账户 2. 创建功能分支:`git checkout -b feature/new-function` 3. 提交代码更改:`git commit -am 'Add new function'` 4. 推送分支:`git push origin feature/new-function` 5. 创建Pull Request ### 问题反馈 - 在Issues中报告Bug - 提出功能改进建议 - 完善文档说明 - 分享使用经验 ## 技术支持 ### 开发文档 - [GD32F4xx参考手册](https://www.gigadevice.com/product/mcu/32.html) - [FreeRTOS官方文档](https://www.freertos.org/) - [LVGL图形库文档](https://docs.lvgl.io/) ### 调试工具 - **Keil MDK**: 官方开发环境 - **J-Link调试器**: 硬件调试工具 - **串口助手**: 串口通信调试 - **逻辑分析仪**: 信号时序分析 ### 常见问题 1. **编译错误**: 检查芯片型号和库文件配置 2. **下载失败**: 确认调试器连接和SWD配置 3. **显示异常**: 检查LCD驱动和背光控制 4. **触摸无效**: 确认触摸屏驱动和校准设置 ## 版本历史 - **v1.0.0**: 初始版本,基础功能实现 - **v1.1.0**: 添加IAP升级功能 - **v1.2.0**: 完善LVGL界面和任务管理 - **v1.3.0**: 优化内存管理和性能 ## 许可证 本项目基于MIT许可证开源,详见LICENSE文件。 ## 联系方式 如有问题或建议,请通过以下方式联系: - 提交Issue - 发送邮件 - 加入技术交流群 --- **注意**: 本项目仅供学习和研究使用,商业使用请确保相关组件的版权合规性。