# Learning **Repository Path**: xiao_wu_er/learning ## Basic Information - **Project Name**: Learning - **Description**: 学习使用 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-11 - **Last Updated**: 2025-12-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FreeRTOS STM32F411 项目说明 ## 项目简介 这是一个基于 FreeRTOS 的嵌入式开发项目,适用于 STM32F411 系列微控制器。项目包含了 FreeRTOS 内核、CMSIS 驱动、STM32F4 标准外设库以及 BSP(板级支持包)等模块,旨在为用户提供一个完整的实时操作系统开发环境。 ## 主要组件 - **FreeRTOS 内核**: 提供任务调度、队列、信号量、事件组、定时器等 RTOS 功能。 - **CMSIS 驱动**: 包括 Cortex-M4 内核支持、系统初始化和时钟配置。 - **STM32F4 标准外设库**: 提供对 STM32F4 系列微控制器的各种外设(如 GPIO、USART、I2C、SPI 等)的驱动支持。 - **BSP**: 包括按键和 LED 的初始化与控制功能。 ## 功能概述 - **任务管理**: 支持多任务调度,用户可以创建多个任务并设置优先级。 - **硬件驱动**: 提供丰富的硬件驱动支持,包括 GPIO、USART、I2C、SPI 等。 - **中断管理**: 支持中断配置和处理。 - **定时器**: 提供软件定时器功能。 - **队列和信号量**: 支持任务间通信和同步。 ## 使用说明 ### 硬件要求 - STM32F411 系列微控制器开发板 - J-Link 或其他兼容的调试器 ### 软件要求 - MDK-ARM 开发环境 - FreeRTOS 支持的编译工具链 ### 编译和下载 1. 打开 `FreeRTOS_Standard_lib/MDK-ARM/Bootloader.uvprojx` 工程文件。 2. 配置工程选项,确保包含正确的头文件路径和库文件。 3. 编译工程。 4. 使用 J-Link 下载程序到目标设备。 ### 示例代码 #### 主函数 (`main.c`) ```c #include "FreeRTOS.h" #include "task.h" #include "gpio.h" #include "key.h" TaskHandle_t mytask_handle; TaskHandle_t key_control_handle; void mytask(void *arg) { while (1) { // 任务逻辑 vTaskDelay(pdMS_TO_TICKS(1000)); } } void key_control(void *arg) { while (1) { // 按键控制逻辑 uint8_t key = Key_Scan(); if (key) { // 处理按键事件 } vTaskDelay(pdMS_TO_TICKS(100)); } } int main(void) { // 初始化系统时钟 SystemClock_Config(); // 初始化 GPIO led_init(); // 创建任务 xTaskCreate(mytask, "mytask", configMINIMAL_STACK_SIZE, NULL, 1, &mytask_handle); xTaskCreate(key_control, "key_control", configMINIMAL_STACK_SIZE, NULL, 1, &key_control_handle); // 启动调度器 vTaskStartScheduler(); // 如果调度器启动失败,进入死循环 for (;;); } ``` ## 配置选项 - **FreeRTOSConfig.h**: FreeRTOS 的配置文件,包含任务栈大小、系统时钟频率、中断优先级等配置项。 - **系统时钟配置**: 在 `system_stm32f4xx.c` 中定义了系统时钟的初始化函数。 ## 贡献指南 - 提交代码前请确保通过测试。 - 遵循项目编码规范。 - 提交 Issue 或 Pull Request 以报告问题或提出改进。 ## 许可证 本项目采用 MIT 许可证,请参阅 [LICENSE](LICENSE) 文件获取详细信息。 ## 联系方式 如有任何问题或建议,请联系 [xiao_wu_er](https://gitee.com/xiao_wu_er)。 ## 致谢 感谢 [FreeRTOS](https://www.freertos.org) 提供的实时操作系统支持,以及 [STM32Cube](https://www.st.com/stm32cube) 提供的标准外设库。