FreeRTOS新手求解答

2019-07-20 03:25发布

      LED1的优先级高于LED0的优先级,(已经删除浮点任务)
      当第一次vTaskDelay(200),阻塞当前任务,进入LED0任务,进入vTaskDelay(500),等vTaskDelay(200)过后,高任务优先级LED1开始执行,保留现场所以从       延迟之后开始跑,
      但是到vTaskDelay(800)时候,又会进入LED0,此时计时的话,是保留上次计时的数吗?即是从300开始计时吗?
      当计时开始的时候CPU在做什么?因为此时LED1还是在阻塞太,CPU会延迟300后,轮询执行LED0任务吗?(在LED1任务回复就绪状态前)。


    如果我的任务不用任何的延迟,即不用vTaskDelay()函数,怎么去实现多任务?比如I2C读取EEPROM,和读写内部Flash,


   如果CPU在执行当前最高优先级任务,其他任务发生中断怎么处理?(外部按键中断等)


谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
46条回答
烈日灼心
1楼-- · 2019-07-25 04:40
ZHDX 发表于 2019-3-7 10:29
我觉得你应该去学学统筹方法.

或者玩玩一些快餐店游戏.

可能你说对了,但是和我的问题不相符
edmund1234
2楼-- · 2019-07-25 10:39
本帖最后由 edmund1234 于 2019-3-7 11:42 编辑
烈日灼心 发表于 2019-3-7 09:59
看你的这个代码分析,意思好像是LED1 delay 跑去LED0Toggle,在跑完delay500,在跑了一个Idle。在跑LED1 ...
看到你回复的“在跑完delay500”, 感觉你还没能从传统的delay摆脱出来, 它不是你以往所认识的Delay


留意看最右边的时间吧
jermy_z
3楼-- · 2019-07-25 12:41
 精彩回答 2  元偷偷看……
jermy_z
4楼-- · 2019-07-25 18:13
edmund1234 发表于 2019-3-7 11:38
看到你回复的“在跑完delay500”, 感觉你还没能从传统的delay摆脱出来, 它不是你以往所认识的Delay

他就是自以为是的在按照自己的理解在瞎搞,告诉他先去了解下原理,也不去,祝他好运吧
烈日灼心
5楼-- · 2019-07-25 23:41
ZHDX 发表于 2019-3-6 23:11
我举个简单例子吧.

你是一个大管家(CPU)

我的意思是,如果客户A的优先级高,你在执行客户B的任务,会不会跳到A?因为A的延迟是200ms,B的任务是500ms、
edmund1234
6楼-- · 2019-07-26 00:54
 精彩回答 2  元偷偷看……

一周热门 更多>