STM32八股【6】-----CortexM3的双堆栈(MSP、PSP)设计

STM32的线程模式(Thread Mode)和内核模式(Handler Mode)以及其对应的权级和堆栈指针

线程模式:

正常代码执行时的模式(如 main 函数、FreeRTOS任务)

可以是特权级(使用MSP)也可以是非特权级(使用PSP)

异常模式:

正在执行中断服务程序

永远是特权级,使用MSP

模式 栈指针 特权级 应用场景
线程模式 MSP 特权级 系统启动初期
线程模式 PSP 非特权级 RTOS用户任务
内核模式 MSP 特权级 中断服务程序、系统调用处理

在RAM上的分布情况

text 复制代码
地址 ↓ 增大 (低 → 高)                       物理地址范围
┌──────────────────────────────┐
│         RAM 结束              │ 0x2002_0000
├──────────────────────────────┤
│          MSP 栈区             │← 异常模式、中断使用
│      (Main Stack Pointer)     │
│      ↓ 向下增长               │
├──────────────────────────────┤
│         PSP - 任务A 栈        │← 任务A执行时使用
│      (Process Stack Pointer)  │
│      ↓ 向下增长               │
├──────────────────────────────┤
│         PSP - 任务B 栈        │← 任务B执行时使用
│      ↓ 向下增长               │
├──────────────────────────────┤
│         PSP - 任务C 栈        │← 任务C执行时使用
│      ↓ 向下增长               │
├──────────────────────────────┤
│          全局变量区           │
│        BSS / DATA段等         │
├──────────────────────────────┤
│          堆(heap)区         │↑ 向上增长
├──────────────────────────────┤
│         RAM 起始地址          │ 0x2000_0000
└──────────────────────────────┘

RTOS任务如何从MSP切换到PSP?SVC_Handler 起到什么作用?

待写

相关推荐
智购科技自动贩卖机31 分钟前
自动售货机硬件主控方案选型实战:单片机、树莓派、ESP32怎么选?
人工智能·单片机·嵌入式硬件·物联网·网络协议·yolo·架构
WWJA王文举2 小时前
# STM32使用DMA后数据异常?可能不是DMA配置问题:从缓存、变量类型、时序到外设状态全面排查
stm32·嵌入式硬件·缓存
电化学仪器白超2 小时前
MV-CS200-10UC相机参数配置
python·单片机·嵌入式硬件·数码相机·自动化·ltspice
我和头发拼了2 小时前
STM32--9USART收发HEX数据包
stm32·单片机·嵌入式硬件
wuyk5552 小时前
7.AVL 树:第一个自平衡二叉搜索树
开发语言·stm32·单片机·算法
国科安芯3 小时前
星载网络化控制的总线脊梁:四路CANFD在分布式载荷管理中的架构优势
分布式·单片机·嵌入式硬件·架构·系统架构·canfd·低轨卫星星座
whaosoft-1433 小时前
嵌入式※~国产MCU替换STM
嵌入式硬件
树的枝3 小时前
【STM32】05.TIM定时器
笔记·stm32·单片机·嵌入式硬件
caimouse3 小时前
ReactOS 图形系统分析(50):画笔子系统 — pen.c
c语言·开发语言·stm32
硅农深芯4 小时前
PDN仿真显示高频阻抗大意味着什么?
单片机·嵌入式硬件·pdn·阻抗·pi仿真