作者fengwing (liberty)
看板ASM
标题[问题] RTOS传参数给Task
时间Thu Nov 16 01:46:25 2017
各位板友好
目前在练习RTOS的使用,但是碰上了一些问题
TASK_1每秒侦测开关所代表的数字(1 ~ 5)
TASK_2利用TASK_1侦测到的参数,做LED闪烁与延迟
每秒闪1~5次并延迟1~5秒,起初练习时,我用TASK_2-6...
後来想学着用参数的传递,这样应该只需要一个TASK_2,
只是两个是否都会碰到延迟的问题呢?
因为在判断参数的更动,我用TASK_1去做,然後传给TASK_2
当参数改变,TASK_2完成一次loop,可能还会有一段时间,
TASK_1发现参数改变,那该如何马上让TASK_2做新一轮的任务,
如果在TASK_2加一个判断式,好像也得loop跑完才能执行。
这样该如何解决延迟的问题呢? 我有想过删除再创Orz
也有查到似乎能用Quene或是Event去做?
恳请板友解惑,也希望没有违反板规,谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.37.176.170
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/ASM/M.1510767988.A.546.html
※ 编辑: fengwing (114.37.176.170), 11/16/2017 01:50:54
1F:推 purpon: 看不太懂你的问题。如果task2 用sleep特定秒数,这样就是 11/17 00:14
2F:→ purpon: 在blocking state,之後等到秒数到了才回到ready state. 11/17 00:14
不好意思说明的不太好Orz
task1侦测、传递参数,以及让task2 suspended、resume,
task2重覆做当下的任务,比如说重覆1秒闪5次、延迟5秒,
会有5种不同的参数被传进task2,让task2有5种运作方式,
我想请教当task1随机时间传递不同的参数给task2,
当task2运行到一半的时候,因参数不同,要求task2做任务的切换,
task2是不是会将任务的最後一次回圈做完,然後才会改做新的任务呢?
这样我该如何让task2立即中止旧任务,马上开始做新的任务呢?
※ 编辑: fengwing (118.166.214.149), 11/17/2017 09:13:35
3F:推 purpon: 这感觉跟rtos没什麽关系吧。 你task2在做task时进到一个wh 11/17 09:19
4F:→ purpon: ile loop 侦测到有新参数时,就break,这样能解决? 11/17 09:19
我在学习使用rtos的函数,还不是很熟,所以都用很简单的例子Orz
※ 编辑: fengwing (118.166.214.149), 11/18/2017 12:15:12