你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
查看全部评分
狂吠的小疯狗 发表于 2018-7-25 08:39 两个问题.:一优先级,二,延时函数. 创建任务的时候,会执行任务调度. 你可以把后者的 优先级改的比前者的高. ...
创建任务的时候,会执行任务调度. 你可以把后者的 优先级改的比前者的高.试试. 这样后者会正常执行,但是前者就不一定了.因为你用的延时函数 (我没用hal库) 所以不知道你的hal延时函数 兼不兼容操作系统.是不是操作系统的延时函数.还是裸奔的延时函数. 如果是裸奔的延时函数.则你无论怎么修改两个任务 都不能正常运行.
必须要用 操作系统的延时函数才行.
评分
查看全部评分
延时函数用过hal库的延时函数,也用过操作系统的延时函数,结果都是一样的。改优先级的话,确实是优先级高的会执行
你可以尝试删掉任务1的vTaskDelay运行看看情况,灯是不是运行的是任务1的操作;;
然后恢复任务1的vTaskDelay,删除任务2的vTaskDelay,再看看情况,灯是不是运行任务2的操作;;
一般来说vTaskDelay让任务处于阻塞,执行别的任务,直到这个时间结束才会跳出阻塞继续执行这个任务;;
讲得不对的地方请指正,我也是个萌新...
评分
查看全部评分
评分
查看全部评分
看格式应该不是cube生成的工程 延时函数 用 vTaskDelay() 延时
然后两个任务优先级一样 都延时1s 一个任务开灯一个任务关灯,你看到现象就不奇怪了。
然后需要再不同的任务中对同一对象(外设或者大块共享内存等)设进行操作,建议加锁,
1.假如先创建的点灯, 先创建在lsit前面先执行(这个没仔细研究,也许是后执行),点灯,延时任务挂起
2.此时第二个任务获得CPU使用权,灭灯,延时挂机。
3.1秒延时
循环下去,就是你所看到的现象了
评分
查看全部评分