OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2966|回复: 8

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

[复制链接]

3

主题

10

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2018-7-10
在线时间
6 小时
发表于 2018-12-25 11:34:45 | 显示全部楼层 |阅读模式
3金钱
用103RC做的项目,想尽量降低功耗所以降低时钟频率 通过更改库函数如下只做了此处修改 1545708530(1).jpg    继电器接入220V负载后跳动几下会引起程序死机,空载情况下可以正常使用  电源部分已经做了光耦隔离   继电器驱动电路如下
1545708673(1).jpg
光耦输入电压为3.3V    目前还是找不到问题的原因   请大神指点   外部晶振为8M

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-12-26 02:43:38 | 显示全部楼层
回复

使用道具 举报

4

主题

349

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1046
金钱
1046
注册时间
2017-5-19
在线时间
335 小时
发表于 2018-12-26 08:54:01 | 显示全部楼层
你的意思是用72MHz 没问题?
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2018-7-10
在线时间
6 小时
 楼主| 发表于 2018-12-26 13:03:17 | 显示全部楼层
wxjhby 发表于 2018-12-26 08:54
你的意思是用72MHz 没问题?

是的  9倍频至72M是没有问题的  关闭倍频后空载情况下正常  一接负载就死机
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2018-7-10
在线时间
6 小时
 楼主| 发表于 2018-12-26 13:03:45 | 显示全部楼层

原子哥有什么思路吗
回复

使用道具 举报

4

主题

349

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1046
金钱
1046
注册时间
2017-5-19
在线时间
335 小时
发表于 2018-12-26 13:31:52 | 显示全部楼层
肯定是有干扰,首先要找到干扰信号在哪里干扰的,用示波器看复位信号和晶振的波形,看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]
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2018-7-10
在线时间
6 小时
 楼主| 发表于 2018-12-26 13:51:22 | 显示全部楼层
wxjhby 发表于 2018-12-26 13:31
肯定是有干扰,首先要找到干扰信号在哪里干扰的,用示波器看复位信号和晶振的波形,看PCB布局。
可以先试 ...

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

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2018-7-10
在线时间
6 小时
 楼主| 发表于 2018-12-30 11:27:53 | 显示全部楼层
wxjhby 发表于 2018-12-26 13:31
肯定是有干扰,首先要找到干扰信号在哪里干扰的,用示波器看复位信号和晶振的波形,看PCB布局。
可以先试 ...

采用内部RC振荡器就可以了
回复

使用道具 举报

4

主题

349

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1046
金钱
1046
注册时间
2017-5-19
在线时间
335 小时
发表于 2019-1-1 20:18:06 | 显示全部楼层
shimingyan1992 发表于 2018-12-30 11:27
采用内部RC振荡器就可以了

那就是PCB布局和走线还需要修改
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 23:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表