ucosIII自学笔记_阻塞延时与空闲任务_2

写在前面:本次课程主要是在任务1、任务2中添加闲时任务,实现任务1、2延时时候运行空闲任务。

1、main()函数

1)关中断CPU_IntDis()

2)配置systick 10ms延时一次,并10ms进入systick中断处理 (同前一节课程)

3)初始化OS  OSInit(&err);(需要改写 在里面添加创建IdleTask

4)Task1Creat  Task2Creat 在任务1、2的task函数内容中加入OSTimeDly()

5)将任务控制块Task1TCB Task2TCB加入就绪列表OSRdyList[].HeadPtr

6)启动任务OSStart()





1.3、初始化OS  OSInit()

添加OS_IdleTaskInit()


1.3.1OS_IdleTaskInit() 闲时任务初始化:创建闲时任务OS_IdleTask()

闲时任务控制块、堆栈基地址、堆栈大小都要定义


1.3.1OS_IdleTask()闲时任务定义:只进行变量++


至此闲时任务已经添加完成,一直到OSStart(),开始启动任务。将任务1添加到OSTCBHighRdyPtr,接着在OSStartHighRdy()中将任务1添加到OSTCBCurPtr,这段汇编代码执行完毕就开始运行任务1Task1()。变成高电平,执行OSTimeDly(2);

2任务切换过程

2.1、OSTimeDly() 进行任务调度OSSched()


2.1.1OSSched()任务调度

开始是为task1->切换到task2->切换到IdleTask->systick中断执行中进行任务切换回task1、2


3中断处理

systick 10ms中断时间到进行中断处理,并调用OSTimeTick(),进行延时参数的--,并进行任务调度,此后如果task2延时时间到,由IdleTask切换回Task1




  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值