📌 核心调度者分工(从复位到任务运行)
硬件复位逻辑
「初始化者」:上电后自动读取向量表,加载MSP初始值、PC复位地址(无代码干预)
硬件内核
「执行者」:复位后初始化通用寄存器、中断时压栈/出栈、切换MSP/PSP
NVIC
「中断调度员」:管理中断优先级,触发内核执行上下文切换
RTOS内核
「任务调度员」:在中断中修改PSP值,切换任务栈(改指针指向的RAM地址)
CPU 核心寄存器(从复位初始值到运行值)
R0
0x00
通用寄存器
R1
0x00
通用寄存器
LR
0xFFFF
返回地址
PC
0x08000000
指令地址
MSP
0x00
主栈指针
PSP
0x00
进程栈指针
PSR
0x00
状态寄存器
RAM 主栈(MSP 指向)
归属:硬件复位/内核/NVIC
栈底 (0x200010C0)
0x20001090
0x20001060
0x20001030
0x20001000
0x20000FD0
0x20000FA0
0x20000F70
0x20000F40
0x20000F10
0x20000EE0
0x20000EB0
栈顶 (0x20000E80)
⬆️ MSP
控制者:硬件复位逻辑
RAM 进程栈(PSP 指向)
归属:RTOS/应用任务
栈底 (0x200020C0)
0x20002090
0x20002060
0x20002030
0x20002000
0x20001FD0
0x20001FA0
0x20001F70
0x20001F40
0x20001F10
0x20001EE0
0x20001EB0
栈顶 (0x20001E80)
⬆️ PSP
控制者:未激活(RTOS启动后接管)
核心溯源:上电复位 → MSP从向量表0x08000000加载初始值 | 通用寄存器初始值=硬件默认0x00 | PSP初始值=0(RTOS启动后赋值)
执行日志(完整上电流程)
⚡️ 初始状态:MCU未上电 → 所有寄存器值为随机值/0,RAM未初始化,无栈指针指向