OS_CPU_A.ASM这个文件是移植UCOS-II到LPC1114最关键的部分,里面用到一些汇编指令,Cortex-M3和Cortex-M0的任务切换都用到PenSV中断,被来向在OSStartHighRdy也安装Cortex-M3的方式来完成,就是也触发PenSV中断来完成第一个任务的执行,发现这两个内核还有有点不一样的,只要我设置NVIC_SYSPRI14为最低优先级,就不能触发SysTick这个中断了。OSStartHighRdy,OS_CPU_PendSVHandler这两个函数,启动任务和切换任务
NVIC_SYSPRI14 EQU 0xE000ED22;系统第14号中断
NVIC_PENDSVSET EQU 0x10000000;触发PenSV中断的值
OSStartHighRdy这个函数是在启动OS时调用的,就不是权限教给OS,启动第一个任务。我做了中文解释,如有不对请,帮忙指出啊。
OSStartHighRdy
LDR R0, =OSRunning ;OSRunning = TRUE
MOVS R1, #1
STRB R1, [R0] ;实际上就让OSRunning = 1 表示OS正在运行中
LDR R0, =OSTaskSwHook ;call OSTaskSwHook()
BLX R0 ; 跳到OSTaskSwHook执行
;选择已经准备好的最高优先级的任务