找回密码
 立即注册
楼主: W***

库函数的分时调度问题

[复制链接]
  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 122 天

    [LV.7]常住居民III

    9

    主题

    92

    回帖

    590

    积分

    高级会员

    积分
    590
    发表于 2023-12-9 22:25:35 | 显示全部楼层
    你对这个时间片轮询程序理解有错    这个程序我都用了很长时间了    程序简单逻辑没有问题
    这个任务定义为   任务1: 0 500 500 lamp1       任务1: 0 500 500  lamp2
    定时器中断后会对第2个数500进行减1计算   注意是2个任务同时减    当第2数个500减到0时  就会在任务的第1个数的0置成1   代表任务就绪可以执行了    同时将第3个数500传递给第2个数   代表下一个任务是500周期
    这时候就有个问题了      你2个任务同时都会减到0代表你2个任务都就绪了   运行第一个任务对IO置0就1个时钟的时间都不到1us   就运行第二个任务了把你这个置0的IO又给置1了    中间就隔了个任务切换时间大概2us
    所以你根本很难看到他已经切换了   然后输出就根据任务及中断的延迟而是乱的
    解决方案1:不要2个任务控制同一个IO   例如: lamp1    P12=~P12      lamp2    P13=~P13    再观察一目了然
    解决方案2:加延时阻塞函数          例如: lamp1    P12=0  delay_ms(500)        P12=1  delay_ms(500)      
    这个时间片轮询程序的缺点:任务内延时都是阻塞,无消息传递,任务优先级---众生平等,任务时效----看其他任务是不是能按时间完成,任务无法插队,BUG直接卡住....................
    但同时优点也非常明显:非常简单,非常可靠,满足大多数场合需求,
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 08:05
  • 签到天数: 149 天

    [LV.7]常住居民III

    18

    主题

    533

    回帖

    1288

    积分

    金牌会员

    积分
    1288
     楼主| 发表于 2023-12-10 08:38:04 | 显示全部楼层
    lzzasd 发表于 2023-12-9 22:25
    你对这个时间片轮询程序理解有错    这个程序我都用了很长时间了    程序简单逻辑没有问题
    这个任务定义为  ...

    嗯嗯,谢谢
    不停地学习
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-16 18:25 , Processed in 0.054995 second(s), 31 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表