logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

FreeRTOS内核(四)信号量与互斥量的核心机制

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

文章图片
#c语言#嵌入式#stm32
单片机从编译到启动的流程

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

文章图片
#单片机#嵌入式硬件
FreeRTOS内核(五)事件组与任务通知的核心机制

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

文章图片
#c语言#嵌入式#stm32
FreeRTOS内核(二)任务的核心机制

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

文章图片
#嵌入式#stm32#mcu +1
FreeRTOS内核(六)定时任务的核心机制

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

文章图片
#c语言#嵌入式#stm32 +2
    共 21 条
  • 1
  • 2
  • 3
  • 请选择