放弃芯片启动到第一次上下文切换之前的栈内容,将 MSP 设置启动时的值 这一段是rtt标准版里的内容
LDR r0, =SCB_VTOR
LDR r0, [r0]
LDR r0, [r0]
MSR msp, r0
第一条是把SCB_VTOR寄存器的地址放在r0里,
第二条是把r0处地址的内容放进r0,也就是把SCB_VTOR的内容放进r0
第三条是把r0处地址的内容放进r0,因为SCB_VTOR存放的是中断向量表相对0x0000 0000的偏移地址,如果把中断向量表理解成数组,所以就相当于把中断向量表的第一个元素放进r0,而根据启动文件,中断向量表第一个元素是堆栈指针,第二个是复位函数
我的理解正确吗?
把中断向量表里的堆栈指针放到MSP寄存器里,像鸡生蛋还是蛋生鸡,堆栈指针最开始是在哪呢?如果MSP里没有值,那中断向量表里的堆栈指针从哪来呢?
更多回帖