MCHP Harmony V2.06 系统定时器故障 SYSZ-DEBUG_BreakPoint()
static SYS_TMR_HANDLEhmiAgtTimer;hmiAgtTimer = SYS_TMR_DelayMS( 100 );
if(NULL != hmiAgtTimer){
HmiAgt_SetState(pHACtx, HMI_AGT_STATE_WAIT); // 去:等待状态
}
if(SYS_TMR_DelayStatusGet(hmiAgtTimer)){
HmiAgt_SetState(pHACtx, HMI_AGT_STATE_IDLE); // 去:闲置状态
}
用ICD4调试,PIC32MZ0512EF0064,定时还未超时,就出现:
while (1)
{
SYS_DEBUG_BreakPoint();
}
CallStack 如下:
_general_exception_handler()(位于d:/microchip/harmonyv2_06/apps/mp_sc_190327/imware/srclsystem_configldefaull/system_exceptions.c:137)
Runtime exception (near)PC address 0x9d00a4b4 in function:SYS_TMR_Tasks()(位于d/microchip/harmonyM2_06/firamework/systemtmr/srclsys_tmr.c:698)
从695行开始:
pClient = sClientObjects + 0;
for ( ix = 0; ix < sizeof(sClientObjects)/sizeof(*sClientObjects); ix++, pClient++ )
{
if ( pClient->isrState == SYS_TMR_CLIENT_ISR_MARK_DEL)
{
_SYS_TMR_ClientDelete(pClient);
}
else if(pClient->isrState == SYS_TMR_CLIENT_ISR_MARK_INACTIVE)
{
pClient->isrEnable = 0;
pClient->currState = SYS_TMR_CLIENT_INACTIVE;
}
}
哪里出问题了?
没看明白。 感觉和程序存储器有关系。
添加空语句:Nop();
如下:
Nop();
Nop();
Nop();
Nop();
最多4个,添加到其中某一个,程序就运行正常了:一个串口发送数据,几个定时器启动一段延时。
非常奇怪:
再添加一段代码,又是:SYS_DEBUG_BreakPoint(); 又是SYS_TMR_Task()任务异常。
再添加几个Nop(); 可能又正常了。
啥原因?
_general_exception_handler()(位于d/microchip/harmonyN2_06/apps/mp_Sc_190327/irmware/srclsystem_config/default/system_exceptions.c: 137)
Runtime exception (near)PC address 0x⁹d0080d8 in function: SYS_TMR_Tasks()(位于d:microchip/harmonyv2_06fframework/system/tmr/srclsys_tmr.c:730) _general_exception_handler()(位于d/microchip/harmony/V2_06/apps/np_sc_190327/firmware/src/system_config/default/system_exceptions.c: 137)
Runtime exception (near)PC address 0x9d0080d8 in function: SYS_TMR_Tasks()(位于d:microchip/harmonyv2_06/framework/system/tmr/src/sys_tmr.c:730)
页:
[1]