
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
定时器基本配置结构体:中断优先级配置结构体你的定时器配置:每 1 秒进一次中断中断里只做一件事:翻转 LED(快进快出)代码现在 100% 正确,烧录直接亮灯闪烁!

解决:将三组函数完整写入。

本篇博客带大家完成 FreeRTOS多任务创建 + 任务动态删除经典入门实验,非常适合新手理解 RTOS 多任务并发、任务优先级、任务生命周期、vTaskDelete 函数用法。创建三个任务:开始任务、任务1、任务2系统启动后,任务1、任务2同时并发运行,LED0、LED1 每秒翻转一次,串口打印运行信息任务1计数运行5次后,动态删除任务2任务2被删除后彻底停止运行,仅剩任务1独立运行前5秒:两个

优先级 0~4:系统关不掉 → 硬实时优先级 5~15:系统可以关 → 弱实时以后写项目就知道了:特别重要的中断,优先级设成 0~4;普通的外设中断,设成 5~15。

本工程基于STM32F103 标准库,使用通用定时器 TIM2做精准计时,驱动 HC-SR04 超声波模块,实现距离测量;连续采集 5 次距离做均值滤波,最后通过串口打印输出距离值,测量更稳定、精度更高。核心逻辑:TIM2 配置为1ms 定时中断,配合定时器计数器微秒级读数,拼接得到 Echo 高电平总时长,利用超声波测距公式换算成实际距离。

提前定义好要控制的任务句柄,挂起和恢复都需要用到句柄;单独创建一个低优先级的按键任务,专门处理按键扫描,不干扰业务逻辑;按键扫描必须加双层判断 + 延时消抖,同时等待按键松手,避免长按重复触发;挂起任务用vTaskSuspend(句柄),恢复任务用vTaskResume(句柄),注意任务挂起计数的问题;按键任务里加适当延时,避免频繁扫描占用 CPU 资源。中断初始化一定要在 main 里调用PC1

列表 = 双向循环链列表项 = 链上的节点vListInsert = 按排序值插入uxListRemove = 删除节点vListInsertEnd = 尾部插入(不排序)这就是 FreeRTOS 最底层、最核心的数据结构。

这三行是引入头文件,告诉编译器要用哪些功能。里写了 ,所以这里才能调用。main 函数 = 程序的入口单片机上电后,第一行就跑这里。调用你写在里的初始化函数作用:把 PA1 引脚设置成输出模式不初始化,LED 永远不会亮!= 死循环,单片机永远在这里循环= 输出 低电平(0V)我的 LED 是 低电平点亮,所以一输出低电平就亮了引入需要的库,不然编译器不认识结构体。这是你自己写的 LED 初始化

SPI(Serial Peripheral Interface)串行外设接口是一种高速、全双工、同步、主从式的通信总线。串行:数据一位一位传输全双工:发送和接收可以同时进行同步:主机提供统一时钟,收发双方严格同步主从:STM32 一般作为主机,外设作为从机这套 SPI 代码是STM32 最标准、最通用、最稳定的硬件 SPI 主机驱动:✅ 带完整注释,新手能看懂✅ 带超时保护,不卡死✅ 可动态修改速

本项目使用。








