物联网系统时钟节拍详解:
一,SysTick初始化:
配置SysTick装载值—>使能SysTick时钟源、使能SysTick中断、使能SysTick。
二,SysTick中断服务函数:
关闭中断—>Tick值增加、SysTick任务调度、启动PendSV—>开启中断
三,SysTick任务调度:
系统节拍数加1,判断是否溢出,溢出更新任务锁定时间--------->判断是否有任务需要解除阻塞,获取延时列表第一个任务控制块(时间排序),获取状态列表值,判断时间是否到达,未到达退出------------>任务阻塞时间到达、从延时列表中删除、从时间列表中删除、添加到就绪列表中---------如果使用抢占内核判断任务优先级是否大于当前任务、开始调度---------->如果使用时间片调度,判断当前优先级下是否还有其他任务,开启任务调度器。