MounRiverStudio更新到v1.82,WCH-Link版本更新到2.7后,调试时RTC时钟初始化失败。

MounRiverStudio更新到v1.82,WCH-Link版本更新到2.7后,MounRiverStudio中下载程序和调试程序都会死在RTC_WaitForSynchro(),按单片机复位键运行到RTC时钟初始化位置仍会死机,断电重启后程序能正常运行,调试不能成功,除非不初始化RTC时钟。之前版本都正常,升级后出现此现象,求解。WCH-Link版本退到到2.6后正常。

您好,添加一下打开RTC时钟的代码就可以了,可参考附件程序:

icon_rar.gifmain.zip



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即可。


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