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

相关推荐
azwsm12 小时前
驱动第一阶段——启动流程
单片机·嵌入式硬件
lhbweilai16 小时前
STM32 I2C(hal库)
stm32·单片机·嵌入式硬件
单片机杂货铺19 小时前
基于STM32的智能市政清洁小车系统设计
stm32·单片机·嵌入式硬件·物联网·硬件工程
单片机杂货铺19 小时前
基于STM32的智能书房系统的设计
stm32·单片机·嵌入式硬件·51单片机·硬件工程
普科PRBTEK20 小时前
电流探头的常见应用场景
单片机·嵌入式硬件
qq_4017004120 小时前
3个常用的单片机实现隔离控制大电流负载例子
单片机·嵌入式硬件
weixin_4568083821 小时前
【沁恒蓝牙开发】BLE常见错误码与解析
c语言·单片机·嵌入式硬件
电化学仪器白超21 小时前
禹衡光栅长度计精度评测:基于国标0级氧化锆量块的校正与数据分析
python·单片机·嵌入式硬件·物联网·自动化
LCMICRO-133108477461 天前
国产长芯微LPS7118完全pin-pin替代ADP7118,是一款采用 CMOS 技术设计的低噪声、高 PSRR、快速瞬态响应、低压差线性稳压器
arm开发·单片机·嵌入式硬件·fpga开发·硬件工程·线性稳压器·adp7118
LCMICRO-133108477461 天前
国产长芯微LM3042完全P2P替代LT3042,是一款高性能低压差线性稳压器
arm开发·单片机·嵌入式硬件·fpga开发·硬件工程·线性稳压器·lt3042