UCOS-III 系统时钟工作模式

1. 无系统时钟模式

无系统时钟模式,一般用于低功耗设备, 系统进入空闲任务时,可以让CPU进入低功耗模式,通过外部事件唤醒CPU。无系统时钟模式,不能使用延时服务、阻塞超时服务、定时服务以及时间片调度服务。

1.1 无系统时钟模式下,系统工作在无时间服务的状态

 

e84c290aaf52334e09d0afc053df1cfc.png

1)任务通过挂起内核对象来等待来自 ISR 的信号 
2)由于系统任务处于挂起状态,内核切换到空闲任务,直到发生调度事件。还可以通过OSIdleTaskHook() 回调进入低功耗模式。 
3)当外设中断最终发生时,系统离开低功耗状态,进入中断服务 
4)在服务中断之后,ISR 通过发布内核对象让任务进入就绪状态 
5)当调用 OSIntExit() 时,将会进行系统调度,执行就绪任务

 

1.2 无系统时钟模式下,通过硬件定时器提供简单的时间服务

 

f6072c869ddc20008181b33d17aae5d6.png

1) 任务希望延迟 1 分钟,在挂起内核对象之前,将硬件定时器配置为一分钟后触发中断,并启动定时器。 
2) 主动挂起任务 
3) 切换到空闲任务,可能进入低功耗状态。 
4) 一分钟后,定时器发生中断,退出低功耗模式,通过发布内核对象唤醒任务。

 

2. 周期性系统时钟模式

1)周期性系统时钟模式,通过周期性的时钟中断,来提供延时服务、超时服务、定时服务。

2)周期性系统时钟(1-100ms), 频率越高CPU消耗越高,需根据任务的实时性要求调整系时钟周期

3)可以在OSTimeTickHook()内实现不受系统抖动影响的高精度定时任务,如数据采集等。

 

e8147045f3f1af9238cd5ceacaa28f84.png

3. 动态系统时钟模式

        动态系统时钟模式,通过设置硬件定时器,提供延时服务、超时服务,但不支持时间片轮调度。系统不会定时产生周期性的时钟中断; 当有任务需要延时服务或定时服务时,通过调用接口OS_DynTickSet设置并启动硬件定时器,硬件定时器超时进入ISR并调用 OSTimeDynTick()更新系统时钟。OS_DynTickSet、OS_DynTickGet需要BSP实现。

 

89895906359f3014bbd8111589b2ee3d.png

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TechIoT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值