ucosii 如何确定定时器的时间_【deven】对uCOS-II中定时器的改进 | 学步园

【deven】对uCOS-II中定时器的改进

作者:deven

deven.yculblog.com

硬件环境:LPC2220;键盘采用ZLG7290,中断信号接EINT3,用IIC读取按键数据;编码器采用1000个信号的,Z相接EINT0,A相接CAP1.2,B相接CAP1.3。

一。发生了什么问题

不知道为何,在按键中断中POST一个信号量,虽然在任务中得到了响应,但是跟踪发现,切换到任务之后并没有执行,而是不停地进入timer0中断。键盘响应有延迟是可以忍受的,但是在其他中断处理中就可能影响到系统性能。例如我用光电编码器的时候信号触发比较频繁,从中断到任务中得到实际响应会变慢。

为了能及时响应任务,并且减少中断触发频率,必须对系统的定时器进行改进。

二。时钟中断的作用

起初看到这个时钟中断就想当然的任务是操作系统调度所必须的,然后进一步思考后发现错了。在一般的分时系统中,为了实现时间片的轮转,在一定时间后必须将处理器切换到下一个任务,因此必须有定时器定时地切换任务。而在uCOS-II这样的优先级调度的系统中,是在高优先级任务放弃cpu之后才进行调度进入低优先级任务的。

在uCOS-II系统中时钟中断又起到了一个什么样的作用呢?先来看看任务在什么样的情况下放弃cpu,在什么样的情况下得到cpu。

放弃cpu可以由OSSemPend、OSMutexPend、OSFlagPend、OSMboxPend、OSQPend、OSTimeDly、OSTimeDlyHMSM几个函数触发。这里最后两个函数是跟时间相关,其他函数都是跟事件相关。所以一个cpu要再次得到执行&#x

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值