Part Number:CC1310Other Parts Discussed in Thread:SYSBIOS
各位专家:
我在collector 端定义了一个新的HEARTPACKAGE_TIMEOUT_EVT 事件并初始化了事件结构
#define HEARTPACKAGE_TIMEOUT_EVT 0x0020 //心跳包事件
if(Collector_events & HEARTPACKAGE_TIMEOUT_EVT)
{
HeartPackageCount=HeartPackageCount+1;
if (HeartPackageCount>200)
HeartPackageCount=0;
LCD_WRITE_STRING_VALUE("HEARTPACKAGE_TIMEOUT_EVT=",HeartPackageCount,10, 3);
Util_clearEvent(&Collector_events, HEARTPACKAGE_TIMEOUT_EVT);
Csf_setHeartPackageClock(HEARTPACKAGE_TIMEOUT_VALUE);//启动心跳包
}//IF
问题:程序开始运行正常,运行至12 分钟后,系统停止,通过ROV 查看,发现 在 ti.sysbios.knl.Task.IdleTask 任务呈 Preempted 状态,导致系统停止。而
Kevin Qiu1:
从上面的任务状态来看,当前任务是空闲任务,而它处于被抢占状态,其他两个任务又都在阻塞,此时没有任务运行,所以看起来系统死掉了
,
自由飞翔:
你分析的对,但是,此时信号量根据定时器已经发布了信号量HEARTPACKAGE_TIMEOUT_EVT。此时apptask 应该接收信号量运行呀,为什么还是阻塞状态呀。
注意:在HEARTPACKAGE_TIMEOUT_EVT 事件处理完又设定计时器启动了。
Util_clearEvent(&Collector_events, HEARTPACKAGE_TIMEOUT_EVT); Csf_setHeartPackageClock(HEARTPACKAGE_TIMEOUT_VALUE);//启动心跳包
void Csf_setHeartPackageClock(uint32_t trackingTime){
/* Stop the Tracking timer */ if(Timer_isActive(&HeartPackageClkStruct) == true) { Timer_stop(&HeartPackageClkStruct); LCD_WRITE_STRING("Timer_isActive_stop", 3);
}
if(trackingTime) { /* Setup timer */ Timer_setTimeout(HeartPackageClkHandle, trackingTime); Timer_start(&HeartPackageClkStruct); LCD_WRITE_STRING("Timer_isActive_start", 3); }}
//计时器结构及回调函数
void Csf_initializeHeartPackageClock(void){ /* Initialize the timers needed for this application */ HeartPackageClkHandle = Timer_construct(&HeartPackageClkStruct, HeartPackageTimeoutCallback, HEARTPACKAGE_TIMEOUT_VALUE, 0, false, 0);}
static void HeartPackageTimeoutCallback(UArg a0){ (void)a0; /* Parameter is not used */
Util_setEvent(&Collector_events, HEARTPACKAGE_TIMEOUT_EVT);
/* Wake up the application thread when it waits for clock event */ Semaphore_post(collectorSem);}
,
Kevin Qiu1:
参考下面链接提到的步骤,用RTOS分析工具看一下:
https://dev.ti.com/tirex/content/simplelink_academy_cc13x0sdk_4_20_00_00/modules/rtos/tirtos_basics/tirtos_basics.html
,
自由飞翔:
正在按你要求进一步查询,请问在ROV 中如何调出下面的图形显示。
,
Kevin Qiu1:
参考视频里面的步骤:https://training.ti.com/how-use-runtime-object-view
,
自由飞翔:
收到,多谢
,
Kevin Qiu1:
不客气