stm32降低主频加负载后会引起死机

2019-07-21 06:15发布

用103RC做的项目,想尽量降低功耗所以降低时钟频率 通过更改库函数如下只做了此处修改 1545708530(1).jpg    继电器接入220V负载后跳动几下会引起程序死机,空载情况下可以正常使用  电源部分已经做了光耦隔离   继电器驱动电路如下
1545708673(1).jpg
光耦输入电压为3.3V    目前还是找不到问题的原因   请大神指点   外部晶振为8M

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
正点原子
1楼-- · 2019-07-21 10:42
帮顶
wxjhby
2楼-- · 2019-07-21 13:45
你的意思是用72MHz 没问题?
shimingyan1992
3楼-- · 2019-07-21 16:00
wxjhby 发表于 2018-12-26 08:54
你的意思是用72MHz 没问题?

是的  9倍频至72M是没有问题的  关闭倍频后空载情况下正常  一接负载就死机
shimingyan1992
4楼-- · 2019-07-21 16:49
 精彩回答 2  元偷偷看……
wxjhby
5楼-- · 2019-07-21 17:38
肯定是有干扰,首先要找到干扰信号在哪里干扰的,用示波器看复位信号和晶振的波形,看PCB布局。
可以先试试用内部8M RC振荡器是否有问题

或者外部高速晶振先两分频再两倍频,还是8MHz,不知道是不是因为锁相环的抗干扰能力比较强
[mw_shl_code=c,true]/*RCC config*/
void RCC_Configuration(void)
{
    RCC_DeInit();  
    RCC_HSEConfig(RCC_HSE_ON);
    while(SUCCESS != RCC_WaitForHSEStartUp()){}
    /*设置FLASH存储器延时时钟周期数*/
    FLASH_SetLatency(FLASH_Latency_2);    //FLASH_Latency_2  2延时周期
    /*选择FLASH预取指缓存的模式*/
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);     // 预取指缓存使能
    /*设置PLL时钟源及倍频系数*/  
    /* Fcpu = (PLL_src * PLL_MUL) = (8 Mhz / 2) * (2) = 8Mhz   */
    RCC_PLLConfig(RCC_PLLSource_HSE_Div2, RCC_PLLMul_2);            
    /* Enable PLL */
    RCC_PLLCmd(ENABLE);
     /*检查指定的RCC标志位(PLL准备好标志)设置与否*/   
    while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {}
    /* Set system clock dividers */
    RCC_HCLKConfig(RCC_SYSCLK_Div1);
    RCC_PCLK2Config(RCC_HCLK_Div1);
    RCC_PCLK1Config(RCC_HCLK_Div2);
    RCC_ADCCLKConfig(RCC_PCLK2_Div6);   
    /* Embedded Flash Configuration */
    FLASH_SetLatency(FLASH_Latency_2);                           
    FLASH_HalfCycleAccessCmd(FLASH_HalfCycleAccess_Disable);
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
    /*SYSCLK configuration*/
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
}[/mw_shl_code]
shimingyan1992
6楼-- · 2019-07-21 22:26
wxjhby 发表于 2018-12-26 13:31
肯定是有干扰,首先要找到干扰信号在哪里干扰的,用示波器看复位信号和晶振的波形,看PCB布局。
可以先试 ...

肯定是干扰引起的   用示波器可以明显看到开关瞬间IO口有杂波   我用3倍频 24M晶振试过也是有这个问题   根据您的提示我用一下内部的8M晶振  然后在强电部分再加上安规电容和压敏电阻

一周热门 更多>