目录
- 0. FreeRTOS配置
- 1. void prvStartFirstTask( void )
- 2. void vPortSVCHandler( void )
- 3. void xPortPendSVHandler( void )
- 4. StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters )
- 5. void xPortSysTickHandler( void )
正文
0. FreeRTOS配置
- (1) FreeRTOS版本v8.1.2,以下介绍的函数与当前较新的10.1.1版本并无太多变化。
- (2) 未开启FPU
1. prvStartFirstTask()
__asm void prvStartFirstTask( void )
{
PRESERVE8 /* 堆栈的8字节对齐,参考8_DUI0473Marmasm_user_guide.pdf及AAPCS */
/* Use the NVIC offset register to locate the stack. */
ldr r0, =0xE000ED08 /* SCB->VTOR,向量表偏移地址寄存器*/
ldr r0, [r0] /* 从向量表偏移地址寄存器中取出起始地址(0x08000000) */
ldr r0, [r0] /* 取出STACK起始地址并初始化到MSP */
/* Set the msp back to the start of the stack. */
msr msp, r0