
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
以STM32F407为例,中断执行流程如下:a.中断触发(中断源):外设或内核产生中断信号,置位中断标志位。CPU检测到中断请求,若满足优先级条件(未被更高优先级中断抢占、当前指令执行完毕等),则暂停当前任务。自动保存现场(PC、寄存器等上下文)到栈中。根据中断向量表找到对应ISR地址并跳转执行。在ISR中完成具体功能(如数据读取、状态更新等),需手动清除中断标志位。执行完ISR后,自动恢复现场,

前面介绍完了FreeRTOS的一些核心功能,如任务切换,创建任务等等,并将煮包从ARM内核以及内存的视角的相关思考进行了分享,从这里开始介绍FreeRTOS的另外一个板块,就是任务间通信机制,如队列、信号量、互斥量、事件组这些,今天分享的是FreeRTOS队列的学习笔记;是关于标题中的互斥访问、休眠唤醒以及环形缓冲区都会在文章中一一介绍到~~~~关于队列,数据结构里面的描述就不做介绍啦~,最重要的

本文分析了FreeRTOS的内存管理实现原理,重点介绍了heap1、heap2和heap4三种内存管理算法。heap1只能分配不能释放内存,heap2通过链表管理解决了释放问题但仍存在内存碎片问题,heap4进一步优化,通过地址排序和相邻块合并机制提高了内存利用率。文章详细阐述了各算法的初始化、分配和释放过程,揭示了FreeRTOS如何通过链表管理内存池,并指出实际分配大小会包含链表头和对齐填充。

本文解析了FreeRTOS任务调度机制,包括抢占式调度和时间片轮转调度两种方式。通过链表管理任务状态(就绪、运行、阻塞、挂起),其中就绪链表按优先级数组组织。调度由tick中断触发,涉及现场保存与恢复。空闲任务(IDLE)具有特殊退让规则,会主动让出CPU。文章详细介绍了调度器启动过程、第一个任务启动的硬件相关配置(涉及MSP指针和SVC中断),以及任务切换的本质(寄存器值切换)和过程(在Pend

本文解析了ARM Cortex-M3内核中CONTROL寄存器和EXC_RETURN异常返回值的作用。CONTROL寄存器通过bit0和bit1控制处理器操作模式(特权级/用户级)和堆栈指针选择(MSP/PSP),与handler模式和线程模式组合形成三种运行状态。特权级可直接修改CONTROL寄存器,而用户级需通过异常服务例程修改。EXC_RETURN作为32位异常返回值,其低四位决定中断返回行

本文详细解析了FreeRTOS任务创建过程中的关键细节,重点分析了任务栈的内存分布机制。作者首先回顾了任务创建函数原型中缺失的pxTaskCode、usStackDepth和pvParameters三个参数在TCB中的转化过程。通过分析源码中的pxPortInitialiseStack函数,揭示了任务栈初始化的核心机制:函数入口地址(pxCode)被存入栈中特定位置,在任务切换时可恢复到PC寄存器








