本帖最后由 gaobq 于 2022-10-24 11:17 编辑
使用GD32F303ZE,一直都是在嘉立创SMT,GD32,晶振都是嘉立创的基础库元器件。
最近做了5块板子,程序写进去,跑不起来,焊了两块都是一样的现象。
发现在单片机的RESET脚上对地并了一个100uF的大电容,单片机就能复位成功,软件正常运行。单不明白原因,为什么这批板子复位需要时间长才行,以前的板子都是复位10k上拉电阻,100nF对地电容,同样是GD32F303,从未出现过问题。
百度上找到一篇文件,说是可能外部晶振起振时间过长,在换外部晶振处加个延时,于是就在system_gd32f30x.c文件中的 外部120MHz定义处加了个软件延时,但是不起作用?
#elif defined (__SYSTEM_CLOCK_120M_PLL_HXTAL)
/*!
\brief configure the system clock to 120M by PLL which selects HXTAL(8M) as its clock source
\param[in] none
\param[out] none
\retval none
*/
static void system_clock_120m_hxtal(void)
{
uint32_t timeout = 0U;
uint32_t stab_flag = 0U;
uint32_t i;
i=0xFFFFFF;
while(i--);
/* enable HXTAL */
RCU_CTL |= RCU_CTL_HXTALEN;
/* wait until HXTAL is stable or the startup time is longer than HXTAL_STARTUP_TIMEOUT */
do{
timeout++;
stab_flag = (RCU_CTL & RCU_CTL_HXTALSTB);
}while((0U == stab_flag) && (HXTAL_STARTUP_TIMEOUT != timeout));
/* if fail */
if(0U == (RCU_CTL & RCU_CTL_HXTALSTB)){
while(1){
}
}
......
请问大家有没有遇到复位时间过长的问题?是什么原因导致的?怎么解决,飞个大电容可以解决,但是太麻烦,板子上没有设置安装电容的位置。 |