OpenEdv-开源电子网

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

F407外部有源晶振损坏后从板子去掉后MCU仍然能生成PWM波,测得通用定时器的时钟是16MHz

[复制链接]

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2020-2-26
在线时间
36 小时
发表于 2021-2-25 09:42:04 | 显示全部楼层 |阅读模式
3金钱
有以下几个疑问,大佬有时间帮忙解答一下呀,谢谢1.程序未使能时钟安全系统CSS,HSE损坏MCU没了时钟来源应该就不工作了呀?

2.我修改AHB和APB1的分频系数,MCU生成的PWM波频率并没有变化,这有可能是啥问题呀?

最佳答案

查看完整内容[请看2#楼]

仿真调试看了一下,RCC的CFGR寄存器的值是0,查看了参考手册,知道了原因。 由于HSE故障,HSEStatus == (uint32_t)0x00,system_stm32f4xx.c中对HSEStatus == (uint32_t)0x00的情况进行没有进行时钟配置,均是默认值0。 故CFGR寄存器中的SWS位和SW位为0,即系统在HSE发生故障时会强制选择HSI作为系统时钟;同时PPRE1位(APB1的预分频器)、PPRE2位(APB2预分频器)、HPRE位(AHB的预分频器)均为0,AHB不对SYSCLK分频,APB不对AHB ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2020-2-26
在线时间
36 小时
 楼主| 发表于 2021-2-25 09:42:05 | 显示全部楼层
jermy_z 发表于 2021-2-25 10:31
自动切换回内部振荡器了吧

仿真调试看了一下,RCC的CFGR寄存器的值是0,查看了参考手册,知道了原因。
由于HSE故障,HSEStatus == (uint32_t)0x00,system_stm32f4xx.c中对HSEStatus == (uint32_t)0x00的情况进行没有进行时钟配置,均是默认值0。
故CFGR寄存器中的SWS位和SW位为0,即系统在HSE发生故障时会强制选择HSI作为系统时钟;同时PPRE1位(APB1的预分频器)、PPRE2位(APB2预分频器)、HPRE位(AHB的预分频器)均为0,AHB不对SYSCLK分频,APB不对AHB分频,所以通用定时器的时钟就是HSI自身的时钟,即16MHz。
至于问题2中提到的改变AHB和APB预分频系数,输出的PWM波的频率没变,这是因为我是在HSEStatus == (uint32_t)0x01的程序块中修改的参数,HSE故障程序就不会进到这个程序块中来
感谢各位大佬的指点
回复

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2020-2-26
在线时间
36 小时
 楼主| 发表于 2021-2-25 10:27:10 | 显示全部楼层
另外,system_stm32f4xx.c中没有对HSEStatus == (uint32_t)0x00的情况进行时钟配置
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13083
金钱
13083
注册时间
2012-11-26
在线时间
3809 小时
发表于 2021-2-25 10:31:45 | 显示全部楼层
自动切换回内部振荡器了吧
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13083
金钱
13083
注册时间
2012-11-26
在线时间
3809 小时
发表于 2021-2-25 10:33:03 | 显示全部楼层
我用HAL库编写,外部晶振挂了,可以用内部振荡器,现象上,一颗指示状态的LED,翻转速度明显是变了
学无止境
回复

使用道具 举报

3

主题

821

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3359
金钱
3359
注册时间
2011-11-10
在线时间
207 小时
发表于 2021-2-25 10:52:11 | 显示全部楼层
对,如果外部晶振挂了,会自动切换到内部RC振荡器。如果你的设备对速度没有太大要求,可以选外部晶振频率和内部RC一致的,这样即使外部挂了,程序运行也不会有太大问题。
回复

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2020-2-26
在线时间
36 小时
 楼主| 发表于 2021-2-25 14:05:03 | 显示全部楼层
c2007s 发表于 2021-2-25 10:52
对,如果外部晶振挂了,会自动切换到内部RC振荡器。如果你的设备对速度没有太大要求,可以选外部晶振频率和 ...

可以,我就是外部晶振坏了后,MCU输出的信号频率不对,在后级电路中信号出现了严重失真。学到了一个方法,谢谢大佬
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-13 23:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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