找回密码
 立即注册
楼主: WHX

库函数的分时调度问题

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:372
  • 最近打卡:2025-05-01 10:53:48

12

主题

125

回帖

1685

积分

金牌会员

积分
1685
发表于 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直接卡住....................
但同时优点也非常明显:非常简单,非常可靠,满足大多数场合需求,
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:484
  • 最近打卡:2025-05-01 08:52:01
已绑定手机

23

主题

589

回帖

2813

积分

金牌会员

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

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:03 , Processed in 0.151455 second(s), 54 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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