延时和任务挂起(使用篇)

本文介绍了在嵌入式系统中,尤其是使用bcos操作系统时,如何进行任务延时和挂起操作。延时和挂起能让任务在指定时间后继续执行或暂停,以实现系统的高效调度。每个任务至少需要1ms的延时,以避免独占CPU资源。
摘要由CSDN通过智能技术生成

1.概述

在任务中延时和任务挂起是嵌入式操作系统中的常规需求,bcos提供了任务延时和挂起的接口。用户调用任务延时接口和任务挂起任务挂起接口后调用这两个接口的任务会被系统调度到任务等待队列中,直到任务延时超时或用户调研任务恢复函数后才会重新被添加到就绪队列中调度执行。在正常的bcos的使用过程中每一个任务至少要有1ms的延时调用,否则该任务会一直占用cpu的执行权其他任务无法被调度执行。

2.任务延时、挂起、恢复接口

/*
 * 系统延时函数,调研该函数会触发系统调度,当前任务会放弃cpu的占有权。
 * 有两种情况不可以调用系统延时函数:
 * 1.由于tasklet的处理函数在空闲任务中执行,当tasket的处理函数被执行时
 * 就绪队列中只有空闲任务。系统无法放弃空闲任务的执行权,所以在tasklet
 * 的处理函数中不允许调用系统延时函数。
 * 2.在中断处理函数中也不允许调用系统延时函数,由于中断处理函数执行在特权模式
 * 其栈指针是MSP,此时cpu不是执行在任务中。
 *
 * @tick£:系统滴答数,正常情况下一个系统滴答1ms
 */
void bcos_delay_ms(BC_OS_TICK tick);

/*
 * 任务挂起
 *
 * 该接口以宏的形式实现
 */
#define bcos_task_suspend();

/*
 * 任务恢复
 * 
 * 该函数有两个功能:
 * 1.该函数与bcos_task_suspend()操作相反,可以取消任务挂起;
 * 2.该函数可以取消任务延时,让任务马上恢复执行;
 * 该函数的执行会触发一次任务调度
 *
 * @param
 * 		tcb:任务TCB指针
 */
void bcos_task_resume(bcos_tcb_t *tcb);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

南波儿万

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

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

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

打赏作者

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

抵扣说明:

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

余额充值