学UCOSII的思想:不断寻找问题,寻找答案,思考解决;找到问题是根本……
一、初一看,运行流程:
裸机:初始化变量--->主循环前准备--->-主循环(使用状态机优化多任务)
| |
中断
UCOSII:初始化------>类似主循环前的准备------------->类似主循环
| | | |
创建任务-->进入多任务管理 任务调度-->用户任务
| |
中断
ucosii通过定时中断或主动放弃任务,进行任务调度。
二、再看细看UCOSII每个流程的函数结构
一般的函数结构就是这样的:
void main()
{
...
OSInit(); //初始化;
OSTaskCreat1(); //创建任务1;
OSTaskCreat2(); //创建任务2;
...
OSStart(); //多任务管理开始;
}
然后粗暴的看了一半 ucosII 2.52源码注释pdf ,下载了mdk版的ucosII三个灯的多任务程序,编译木有错误,大概是些什么文件了解了。
然后遇到了第一个问题,A 任务中一个while(1){……},B任务中也有一个while(1){……},这两个任务是怎么切换的呢。。。卡在这里
然后找资料呗,然后找到这里uCos的多任务实现解决了问题。ohyeah
:systick时钟节拍中断
void SysTick_Handler(void)
{
OSIntEnter();
OSTimeTick(); //
OSIntExit(); //在这里切换,具体看上面链接
}
这里是输入:http://www.amobbs.com/thread-5233926-1-1.html