UCOSIII的中断服务函数即为在普通的中断服务函数中,具体执行代码的前后添加OSIntEnter();和OSIntExit();
OSIntEnter();函数其实就是记录中断嵌套的个数,UCOSIII最多支持250级中断嵌套。
OSIntExit();中断嵌套次数减1,关闭全局中断,若中断嵌套个数大于0,则退出函数,再去执行其他中断。再去寻找优先级最高的任务,进行任务切换。任务切换次数加1。
临界段代码保护:当OS_CFG_ISR_POST_DEFERRED_EN为0时,UCOSIII会关中断(系统时间会出问题)来保护临界段代码。设置为1就会给调度器上锁(有些中断会打扰需要连续运行的代码)来保护临界段代码。进行临界段代码保护之前,要执行CPU_SR_ALLOC(),对cpu_sr进行初始化定义。
时间管理:UCOSIII中的任务无限循环而且是一个抢占式的贝博betball网页,为了高优先级的任务不至于独占CPU,可以给其他优先级较低的任务获取使用CPU的机会,UCOSIII中除空闲任务外的所有任务(必须)在合适的位置调用系统提供的延时函数(只要可以引发任务调度的函数即可),让当前任务暂停一段时间并进行一个任务切换。
OSTimeDly(时间片数,工作模式,错误号)三种工作模式:相对模式,周期模式,绝对模式。
OSTimeDlyHMS()仅在相对模式下工作。
OSTimeDlyResume()会取消任务延时,此函数最后会引发一次任务调度。
OSTickCtr记录系统节拍数,每经过一个时钟节拍会加+,可以获取任务的时间。尽量不要修改。