【CPU占用率查看】

FreeRTOS-UART项目详解

复制代码
这个项目是半年前写的一个demo,但是已经有些忘记,所以使用腾讯AI助手生成注释,方便阅读,如需要了解腾讯AI助手可以通过以下链接进行安装

嵌入式AI协助编程

项目地址:gitee地址

  1. 项目概述

这是一个基于STM32F407芯片的FreeRTOS项目,主要实现了任务管理和UART通信功能。项目使用STM32CubeMX生成基础代码框架,采用HAL库进行底层驱动开发。

  1. 硬件配置

主控芯片:STM32F407

通信接口:USART1

TX: PA9

RX: PA10

波特率:115200

数据格式:8位数据位,1位停止位,无校验位

时钟配置:使用定时器进行FreeRTOS运行时统计

  1. 软件架构

项目采用FreeRTOS操作系统,主要包含以下组件:

FreeRTOS内核

UART通信驱动

任务管理模块

系统监控模块

  1. 主要功能

  2. UART通信功能:

实现了printf重定向到UART1

支持标准输出功能

波特率115200,支持异步收发

  1. FreeRTOS任务管理:

defaultTask:普通优先级任务,每秒打印"Task01"

CPU_myTask02:低优先级任务,负责系统监控,每3秒输出一次任务状态

  1. FreeRTOS任务详解

defaultTask

优先级:普通(Normal)

堆栈大小:128*4字节

主要功能:每隔1秒通过UART发送"Task01"字符串

CPU_myTask02(系统监控任务)

优先级:低(Low)

堆栈大小:128*8字节

主要功能:

输出任务运行状态信息

显示任务名称、状态、优先级、剩余栈空间、任务序号

显示任务运行时间统计信息

任务状态说明:

B:阻塞

R:就绪

D:删除

S:暂停

X:运行

  1. 特殊实现说明

  2. 运行时统计:

使用configureTimerForRunTimeStats和getRunTimeCounterValue实现任务运行时间统计

通过RUN_Time变量记录运行时间

  1. printf重定向:

重新实现了fputc函数

禁用半主机模式

直接通过USART1寄存器发送数据

  1. 调试输出说明

系统会定期输出两种格式的信息:

  1. 任务状态列表:显示所有任务的当前状态

  2. 运行时统计:显示每个任务的运行计数和CPU使用率

这个项目主要用于演示FreeRTOS的任务管理功能,并通过UART接口提供了实时的系统运行状态监控。

这里需要注意一下时钟的使用,我们我的系统运行检测依靠的是定时器TIM4


相关推荐
不做无法实现的梦~34 分钟前
STM32解析PPM协议
stm32·单片机·嵌入式硬件
番茄灭世神2 小时前
MCU开发常见软件BUG总结(持续更新)
c语言·stm32·单片机·嵌入式·gd32
Ar-Sr-Na2 小时前
STM32现代化AI开发指南-VSCode环境配置(macOS)
c语言·人工智能·vscode·stm32·嵌入式硬件·硬件工程
世微 如初3 小时前
AP5125 宽压大功率 LED 恒流驱动器:技术参数与应用设计指南
stm32·单片机·嵌入式硬件
2301_789015624 小时前
C++:智能指针
c语言·开发语言·汇编·c++·智能指针
济6174 小时前
FreeRTOS 任务管理源码解析---任务创建与删除全流程----FreeRTOS专栏
嵌入式·freertos
weixin_446023564 小时前
C语言开发Win32程序太麻烦?微软不支持有3个原因
c语言·微软·mfc·win32程序·开发难度
程序员zgh4 小时前
C/C++ 单元测试系统 构建
c语言·开发语言·c++·学习·单元测试
孬甭_4 小时前
揭开指针的面纱(中)
c语言
草莓熊Lotso5 小时前
【Linux系统加餐】 mmap 文件映射全解:从底层原理、API 到实战开发(含 malloc 模拟实现)
android·linux·运维·服务器·c语言·c++