MounRiverStudio更新到v1.82,WCH-Link版本更新到2.7后,MounRiverStudio中下载程序和调试程序都会死在RTC_WaitForSynchro(),按单片机复位键运行到RTC时钟初始化位置仍会死机,断电重启后程序能正常运行,调试不能成功,除非不初始化RTC时钟。之前版本都正常,升级后出现此现象,求解。WCH-Link版本退到到2.6后正常。
TECH_37你好,主程序中就是调用RTC初始化死循环的,mcu component 不升级,WCH-Link版本退到到2.6后就能正常。
link新版本中,下载前会将RTC时钟关闭(因重新下载程序,RTC关闭比较合理),之前例程中,RTC时钟仅在第一次上电,初始化时钟。故在main.c程序中,做上述修改即可。
TECH_37,谢谢!RTC时钟问题已解决,mcu component 升级后,优化等级为2,U3_rbuf被优化掉了。len有数值,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);
? ? }
}
您好,全局变量在中断中做标志位时在声明和定义时 加上volatile即可。