OpenEdv-开源电子网

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

HSE

[复制链接]

12

主题

25

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2017-3-25
在线时间
35 小时
发表于 2017-3-27 15:43:59 | 显示全部楼层 |阅读模式
1金钱
碰到一个很奇怪的问题,求解答。
我用的是STM32F407ZGxx的探索者开发板,然后今天用STM32Cubemx来配置GPIO,想要设置PF9(连接指示灯DS0)默认高电平。
在用HSI作为SYSCLK时没有问题,可以正常电量DS0,但是在用8M HSE作为SYSCLK时却出现无法点亮DS0的问题。使用HSI的Cube配置如图1,使用HSE的Cube配置如图2。首先应该可以排除外部晶振本身的问题,因为我用了一个别的使用了HSE的程序试了下,可以点亮DS0。

HSI

HSI

HSE

HSE

PLL

PLL

最佳答案

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

用STM32Cubemx来生产代码,我发现有个奇怪的情况,就是当配置使用外部高速时钟的时候,生产的代码里面还是会配置内部高速时钟。在初始化系统时钟这个函数里面,它会先判断是否要配置外部高速时钟,如果要配置则配置,再判断是否要配置内部高速时钟,如果要配置则配置,再判断低速时钟是否要配置。 问题就出在已经选择了采用外部高速时钟,但是代码里面配置完外部高速时钟后配置再配置内部高速时钟就出错了,可能是等待就绪超时。 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

18

主题

238

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1823
金钱
1823
注册时间
2014-8-5
在线时间
211 小时
发表于 2017-3-27 15:44:00 | 显示全部楼层
用STM32Cubemx来生产代码,我发现有个奇怪的情况,就是当配置使用外部高速时钟的时候,生产的代码里面还是会配置内部高速时钟。在初始化系统时钟这个函数里面,它会先判断是否要配置外部高速时钟,如果要配置则配置,再判断是否要配置内部高速时钟,如果要配置则配置,再判断低速时钟是否要配置。
问题就出在已经选择了采用外部高速时钟,但是代码里面配置完外部高速时钟后配置再配置内部高速时钟就出错了,可能是等待就绪超时。只要把 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI;中的RCC_OSCILLATORTYPE_HSI去掉就可以了
回复

使用道具 举报

12

主题

25

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2017-3-25
在线时间
35 小时
 楼主| 发表于 2017-3-27 15:44:39 | 显示全部楼层
求顶~~~~
回复

使用道具 举报

12

主题

25

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2017-3-25
在线时间
35 小时
 楼主| 发表于 2017-3-27 15:44:57 | 显示全部楼层
自顶两次
回复

使用道具 举报

5

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1522
金钱
1522
注册时间
2014-5-16
在线时间
217 小时
发表于 2017-3-27 18:22:12 | 显示全部楼层
单步调试撒,这种问题太好找了.
回复

使用道具 举报

12

主题

25

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2017-3-25
在线时间
35 小时
 楼主| 发表于 2017-3-28 09:56:34 | 显示全部楼层
513393302@qq.co 发表于 2017-3-27 21:17
用STM32Cubemx来生产代码,我发现有个奇怪的情况,就是当配置使用外部高速时钟的时候,生产的代码里面还是 ...

确实是这个问题,可是既然已经在Cube里选择了HSI,为什么时钟的初始化函数里还要判断呢?不是应该直接仅配置HSE么?是冗余么?怕HSE没起振造成时钟错误?所以留了个HSI的判断作为备份?
回复

使用道具 举报

18

主题

238

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1823
金钱
1823
注册时间
2014-8-5
在线时间
211 小时
发表于 2017-3-28 12:32:39 | 显示全部楼层
一头鱼 发表于 2017-3-28 09:56
确实是这个问题,可是既然已经在Cube里选择了HSI,为什么时钟的初始化函数里还要判断呢?不是应该直接仅 ...

官方工具可能是考虑这个情况,毕竟这样配置毕竟安全。但是个人觉得函数中应该先判断HSE配置是否完成,如果完成了就没必要配置HSI了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 01:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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