//event 处理 if(events & GET_RFID_EVT) { rfid_data = getRFID();
请教:在TMOS的event中调用一个函数,判断如果1s后还没有返回值则关闭这个event,启动另外一个event。怎样实现比较方便?
//event 处理 if(events & GET_RFID_EVT) { rfid_data = getRFID();
请教:在TMOS的event中调用一个函数,判断如果1s后还没有返回值则关闭这个event,启动另外一个event。怎样实现比较方便?
调用tmos_start_task任务只会执行一次,就不需要关闭任务了,可以在你A任务中加个判断:有返回值,则使用tmos_start_task调用B任务。
tmos有设定超时的方法吗?我在A任务中调用这个getRFID()函数,如果等不到有返回值,tmos会一直卡在这里
没有超时的设置,tmos本身并不会导致你卡在任务里,你调用的函数是否有卡住的可能,另外tmos任务是否按照例程写。
谢谢答复。再请教一个定时器的问题:
在main()中配置中断:
TMR0_TimerInit(FREQ_SYS/1); // 设置定时时间1s TMR0_ITCfg(ENABLE, TMR0_3_IT_CYC_END); // 中断配置:定时-周期结束
在TMOS的一个event中开启:
PFIC_EnableIRQ(TMR0_IRQn); //开启定时器0
然后再另外一个event中关闭:
PFIC_DisableIRQ(TMR0_IRQn);
这个定时器我只希望运行一次(定时1次),这样做法是正确的吗?
测试打印发现关闭失败,这个定时器一直在响应。
如果只想定时一次,那么可以在定时器中断里面关中断就可以了,你上述的方法也可以,不过可以加点log看看关闭定时器的任务是否运行了,后面是否又开启了,导致没关闭。
使用在定时器中断里面关中断的方式,已解决,感谢!