MounRiverStudio更新到v1.82,WCH-Link版本更新到2.7后,MounRiverStudio中下載程序和調(diào)試程序都會死在RTC_WaitForSynchro(),按單片機(jī)復(fù)位鍵運(yùn)行到RTC時鐘初始化位置仍會死機(jī),斷電重啟后程序能正常運(yùn)行,調(diào)試不能成功,除非不初始化RTC時鐘。之前版本都正常,升級后出現(xiàn)此現(xiàn)象,求解。WCH-Link版本退到到2.6后正常。
TECH_37你好,主程序中就是調(diào)用RTC初始化死循環(huán)的,mcu component 不升級,WCH-Link版本退到到2.6后就能正常。
link新版本中,下載前會將RTC時鐘關(guān)閉(因重新下載程序,RTC關(guān)閉比較合理),之前例程中,RTC時鐘僅在第一次上電,初始化時鐘。故在main.c程序中,做上述修改即可。
TECH_37,謝謝!RTC時鐘問題已解決,mcu component 升級后,優(yōu)化等級為2,U3_rbuf被優(yōu)化掉了。len有數(shù)值,com3_rdata.data的值全為0,求助?。?!
void USART3_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
void USART3_IRQHandler(void)
{
? ? u32 len;
? ? if(USART_GetITStatus(USART3,USART_IT_IDLE) != RESET)? //
? ? {
? ? ? ? USART_ClearFlag(USART3,USART_FLAG_IDLE);
? ? ? ? len = USART3->STATR;
? ? ? ? len = USART3->DATAR;
? ? ? ? DMA_Cmd(DMA1_Channel3,DISABLE);
? ? ? ? DMA_ClearFlag(DMA1_FLAG_GL3);
? ? ? ? len=U3_rbuf_len-DMA_GetCurrDataCounter(DMA1_Channel3);
? ? ? ? com3_rdata.len=len;
? ? ? ? memcpy(com3_rdata.data,U3_rbuf,len);
? ? ? ? com3_rdata.data[len]=0;
? ? ? ? DMA1_Channel3->CNTR=U3_rbuf_len;
? ? ? ? DMA_Cmd(DMA1_Channel3,ENABLE);
? ? }
}
您好,全局變量在中斷中做標(biāo)志位時在聲明和定義時 加上volatile即可。