移植ucosII到STM32F103ZE(五)
这个文件包含着必须用汇编写的代码。
申明这些变量是在其他文件定义的,本文件只做引用(有几个好像并未引用,不过没有关系)。
替换后的 PPendSV中断
声明这些函数是在本文件中定义的。EXPORT这个关键字是跟编译器有关的,能被keil识别,但不能被IAR 识别。
NVIC_INT_CTTRL
NVIC_SYSPRI14
NVIC_PENDSV_PRI
NVIC_PENDSVSET
S_CPU_SR_Save
OS_CPU_SR_Restore
OSStartHighRdy()由 OSStart()调用,用来启动最高优先级任务,当然任务必须在OSStart()前已被创建。
OSStartHighRdy
OSStartHang
void
{
# if
#endif
OS_ENTER_CRITICAL();
#if OS_TASK_PROFILE_EN > 0
#endif
}
OSCtxSw
OSIntExit()对调用 OSIntCtxSw()做任务切换。
OSIntCtxSw
OSIntCtxSw()则是中断退出时,由中断状态切换到另一个任务。由中断切换到任务时,CPU 寄存器入栈的工作已经做完了,所以无需做第二次了(参考邵老师书的 3.10 节)。这里只不过由于 CM3 的特殊机制导致了在这两个函数中只要做触发 PendSV中断即可,具体切换由 PendSV 中断来处理。
评论