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是不可屏蔽中断,优先级很高。

相关推荐
fhq_fn_jgd1 小时前
51单片机(串口通信)
单片机·嵌入式硬件
深圳市元恩微科技开发有限公司1 小时前
兆讯恒达(北京兆讯)MH2457 系列 国产屏驱 MCU
单片机
Brilliantwxx2 小时前
【STM32】 I2C_EEPROM_test 工程(实战篇)
开发语言·stm32·单片机·嵌入式硬件·ecmascript
en.en..3 小时前
UDP套接字编程完整标准流程(服务端+客户端)
单片机·嵌入式硬件
斑马1393 小时前
单片机学习笔记(一)——STC89C52的GPIO、LED、数码管、定时器和中断
单片机·stc89c52
开发笔记-阿牛3 小时前
做工业报警器语音提示,CK6159A 为什么更合适?
人工智能·stm32·单片机·嵌入式硬件·音频
恶魔泡泡糖4 小时前
stm32F103C8T6标准库串口接收轮询方式1
stm32·单片机·嵌入式硬件
艾芯微科技5 小时前
B16WS SOD-323 肖特基二极管参数、应用电路与选型踩坑指南
网络·单片机·嵌入式硬件·集成测试·51单片机
天空'之城5 小时前
单片机基础核心知识点汇总(三十七)
单片机·嵌入式硬件
Groundwork Explorer5 小时前
ESP32-C3 SuperMini 排查WIFI收发故障
python·单片机·嵌入式硬件·mcu