- 博客(3)
- 收藏
- 关注
原创 FreeRTOS的任务创建在内存上的体现
本文从内存视角分析FreeRTOS任务创建过程,指出任务由TCB(任务控制块)和栈空间两部分组成,都存储在堆内存中。任务创建过程包括:1)申请内存并初始化TCB,设置任务名、优先级等属性;2)初始化任务栈空间,保存任务上下文信息,其中PC寄存器指向任务函数入口。文章还解析了任务创建API参数含义,并展示了栈空间初始化结构图,强调任务切换时上下文信息的重要性。最后补充了PC和EXC_RETURN寄存器的作用说明。
2025-10-24 08:56:20
1649
原创 浅析CM3内核“双堆栈“机制在FreeRTOS任务切换中的应用
本文深入解析FreeRTOS任务切换的底层机制,重点剖析了PendSV中断中的关键汇编代码。文章从CM3内核的"双堆栈机制"(1个主栈+N个任务栈)入手,解释了MSP和PSP指针的作用。通过逐行分析xPortPendSVHandler汇编函数,详细揭示了任务上下文保存与恢复的全过程:当前任务的寄存器值被压入其专属栈空间,新任务的上下文从栈中弹出并恢复。作者特别强调了pxTopOfStack指针在任务切换中的闭环机制,以及中断屏蔽寄存器basepri的保护作用。
2025-09-24 15:04:53
1981
1
原创 深入内核理解ARM单片机的中断机制
以STM32F407为例,中断执行流程如下:a.中断触发(中断源):外设或内核产生中断信号,置位中断标志位。CPU检测到中断请求,若满足优先级条件(未被更高优先级中断抢占、当前指令执行完毕等),则暂停当前任务。自动保存现场(PC、寄存器等上下文)到栈中。根据中断向量表找到对应ISR地址并跳转执行。在ISR中完成具体功能(如数据读取、状态更新等),需手动清除中断标志位。执行完ISR后,自动恢复现场,返回原程序继续执行。需配置中断优先级分组、使能外设及NVIC中断通道,确保标志位正确清除。
2025-06-09 12:21:18
1759
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅