1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用STM32F103,从停止模式唤醒时调用以下函数进行时钟初始化,外部晶振故障的情况下,单片机多次唤醒后会有死机情况,怀疑是在外部晶振故障的情况下启动外部晶振,会有导致单片机死机的概率。请问有没有遇到这个问题或者清楚这个问题的老铁????????
void sysclocksetback(void) { __IO uint32_t StartUpCounter = 0,time_out=0x500,HES_status=0; /*根据标志状态选择启动外部时钟*/ RCC_HSEConfig(RCC_HSE_ON); while((HES_status==0)&&(StartUpCounter <= time_out)) { HES_status=RCC_GetFlagStatus(RCC_FLAG_HSERDY); StartUpCounter++; } if(HES_status) { /*使能时钟故障监测*/ RCC_ClockSecuritySystemCmd(ENABLE); /*!< PLLCLK = 8MHz(HSE) * 6 = 48 MHz */ RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_6); /*使能pll*/ RCC_PLLCmd(ENABLE); StartUpCounter=0; while((RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==0)&&(StartUpCounter <= time_out)) { StartUpCounter++; } /*选择pll做时钟源*/ RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); StartUpCounter=0; while((RCC_GetSYSCLKSource()!=0x08)&&(StartUpCounter <= time_out)) { StartUpCounter++; } } else { /*禁能时钟故障监测*/ RCC_ClockSecuritySystemCmd(DISABLE); /*!< PLLCLK = 8MHz(HSI)/2 * 6 = 48 MHz */ RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_12); /*使能pll*/ RCC_PLLCmd(ENABLE); StartUpCounter=0; while((RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==0)&&(StartUpCounter <= time_out)) { StartUpCounter++; } /*选择pll做时钟源*/ RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); StartUpCounter=0; while((RCC_GetSYSCLKSource()!=0x08)&&(StartUpCounter <= time_out)) { StartUpCounter++; } } } |
|
相关推荐
1 个讨论
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
2234 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2053 浏览 3 评论
4664 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2197 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2734 浏览 1 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 10:46 , Processed in 0.627722 second(s), Total 50, Slave 40 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号