__asm void prvStartFirstTask( void )
__asm void prvStartFirstTask( void )
{
PRESERVE8
/* Use the NVIC offset register to locate the stack. */
ldr r0, =0xE000ED08 // 0xE000ED08 地址处为VTOR(向量表偏移量)寄存器,存储向量表起始地址
ldr r0, [r0] // 启动文件中, 最初地址放置的__initial_sp
ldr r0, [r0] // 根据向量表实际存储地址,取出向量表中的第一项,向量表第一项存储主堆栈指针 MSP 的初始值
/* Set the msp back to the start of the stack. */
msr msp, r0 // 将 __initial_sp的初始值写入 MSP 中
/* Globally enable interrupts. */
cpsie i
cpsie f
dsb
isb
/* Call SVC to start the first task. */
svc 0 // 调用SVC中断
nop
nop
}

最低0.47元/天 解锁文章
2662

被折叠的 条评论
为什么被折叠?



