
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
使用器件标准化更换元器件

keil debug

信号量、互斥量的句柄本质都是队列句柄,底层均通过计数值:复用队列的字段,代表「资源数 / 可用状态」;无数据区:创建时指定,无需拷贝数据,仅管理计数值和等待状态;等待链表:复用(等待获取)、(等待释放),管理阻塞的任务;原子操作:所有计数值修改(++/--)均在关中断后执行,保证多任务 / 中断下的原子性。

g_Count++

c源文件、.h头文件:预处理后的.i文件删除所有注释展开宏定义(#define处理条件编译(#if#ifdef将#include的头文件内容插入到当前位置。

操作队列/信号量事件组临界区保护(关中断)(仅禁调度)原因支持 ISR 访问,需防中断干扰等待仅限任务;设置 ISR 版走代理模式,实际修改在任务中唤醒策略通常唤醒一个任务 (FIFO 或优先级)遍历链表,唤醒所有满足条件的任务数据清除队列出队即删除数据可选(自动清零) 或保留 (手动清零结构体复用Queue_t独立。

任务 = 函数 + 独立栈:函数是业务逻辑,栈是保存局部变量、调用关系、现场的空间;TCB 是任务的 “身份证”:保存栈顶指针、优先级、链表节点,用来管理任务;链表用于任务管理:就绪链表、延迟链表、挂起链表,分别管理不同状态的任务;调度器靠 Tick 中断驱动:每隔一段时间检查延迟链表、切换任务;核心调度规则:高优先级抢占,同优先级时间片轮转;空闲任务是 “兜底”:优先级最低,做清理工作,还会礼让

定时器的通用实现逻辑,这是理解 FreeRTOS 的前提:超时时间:比如设置 100ms,就是(记为),当累加到这个值时触发回调;定时器链表:所有定时器通过挂到一个链表中,且链表按从小到大排序。FreeRTOS 为了保证中断的快速退出和提高灵活性,采用了“委托”机制。被唤醒的两种情况:情况1:收到用户操作(启动/停止/修改定时器)的命令消息(来自 xTimerQueue);情况2:阻塞等待超时(无

实现串口bootloader









