在TMOS的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看看关闭定时器的任务是否运行了,后面是否又开启了,导致没关闭。


使用在定时器中断里面关中断的方式,已解决,感谢!


只有登录才能回复,可以选择微信账号登录