MSP主堆栈指针

1、MSP主堆栈指针是系统复位后默认使用的堆栈指针,通常用于处理内核和异常(如中断服务函数)的堆栈操作,MSP本身是CPU内部寄存器,记录当前栈顶位置。

Cortex-M内核实际上有2个堆栈指针:

MSP:主堆栈指针

PSP:进程堆栈指针,在简单的裸机系统中,不需要关心PSP。

芯片上电后,CPU会自动从Flash起始地址(0x0000 0000)读取MSP的初始值,然后将这个值加载到MSP寄存器中;这里为什么Flash的起始地址是0X0000 0000 而不是0X8000 0000?其实,这是同一个地址,只不过CPU看到的地址是地址别名或重映射之后的地址,而0X8000 0000是Flash的真实物理地址,GD32芯片内部有一个内存重映射的逻辑模块MMU负责实现。

2、ARM Cortex-M处理器在芯片上电复位时,有一个固定不变的硬件行为:就是从地址0X0000 0000读取MSP的初始值,并且从0X0000 0000读取复位向量的入口地址(PC指针)。

3、所有的异常(NMI不可屏蔽中断、硬件错误、SysTick等)都使用MSP

所有的中断服务函数(ISR)也使用MSP

如果没跑RTOS,main()函数也是用MSP。

如果MSP超出了分配的堆栈空间,访问非法内存区域,会触发MemMange Fault或HardFault。

4、NMI是不可屏蔽中断,优先级很高。

相关推荐
qxl_7999153 小时前
Windows 显卡掉线无报警|模型推理全套防呆方案(实操完整版)
windows·stm32·单片机·推理显卡掉线误报警防呆
hhb_6183 小时前
Armbian 的 root 密码“总被修改”
stm32·单片机·嵌入式硬件
项目題供诗10 小时前
STM32-TIM定时中断(十)
stm32·单片机·嵌入式硬件
普中科技10 小时前
【普中 51-Ai8051 开发攻略】-- 第 24 章 RTC 时钟实验
单片机·嵌入式硬件·rtc·实时时钟·普中科技·ai8051u·aicube
-liming-11 小时前
单片机设计_串口调试工具
数据库·单片机·mongodb
CHANG_THE_WORLD12 小时前
PE文件二进制对比
stm32·单片机·嵌入式硬件
西城微科方案开发14 小时前
华润微CS98P370D2L:高性价比低功耗8位MCU
单片机·嵌入式硬件
时光の尘14 小时前
【嵌入式大厂面经】·CAN总线常见考点(持续更新中···)
stm32·单片机·mcu·物联网·can·ack
国科安芯16 小时前
空间辐射环境下电机伺服系统的抗扰动控制:AS32S601 抗辐射 MCU 在航天机电执行机构中的多场景应用与可靠性评估
单片机·嵌入式硬件·mcu·cocos2d·risc-v