你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F030K6T6时钟配置和延时不正确,请求帮助

[复制链接]
CC4 提问时间:2019-1-8 10:53 /
本帖最后由 select326 于 2019-1-11 11:04 编辑

问题解决:原因是延时时间的数值写得太大,会导致溢出,分段延时后,问题解决。

我用STM32F030K6T6 做了核心板,附原理图和工程文件。目前时钟配置这块是有问题的,表现就是:
想在delay_ms(5000),实际上能延时将近13秒,照着网上的教程配置后,现在又只能延时3秒左右 。
时钟使用内部HSI,没有安装 外部晶振。

请求大神帮忙配置二个时钟:

1、使用内部时钟
2、 安装25M晶振时使用外部时钟,配置超频,也知道能不能超频到96M

030.png 压缩文件.zip (2.06 MB, 下载次数: 13)
收藏 评论20 发布时间:2019-1-8 10:53

举报

20个回答
CC4 回答时间:2019-1-9 09:34:45
本帖最后由 select326 于 2019-1-9 09:40 编辑
安 发表于 2019-1-9 08:12
就按1个机器周期算就行。先算机器周期时间,延时需要多少个机器周期。

我查了下资料,说是一个nop 的时间就是: 1/系统时钟
照这样计算,STM32F030K6 配置时钟48M,一个nop 就是  1/48000000
1秒=1000MS = 1000000 us
想要延时1US,就需要执行 48次 nop
这样计算对吗?

但是,nop 本身也是函数调用,会不会占用系统周期?或者说,这个在编译时就解决了,?
CC4 回答时间:2019-1-10 09:55:47
芯领神会 发表于 2019-1-9 21:23
我最近也遇到了这个类似的问题,不过我是使用的LL库,使用CubeMx生成的,使用的额内部晶振,主要造成这个的 ...

我也想用LL库,但是,使用LL库不会配置时钟,造成运行各种问题。。
使用HAL库,不会做US延时,也会有各种问题。。。。
你的代码来一个测试下呀
mtg 回答时间:2019-1-9 21:23:34
我最近也遇到了这个类似的问题,不过我是使用的LL库,使用CubeMx生成的,使用的额内部晶振,主要造成这个的原因是生成的代码里面有一个内部晶振校准的代码,屏蔽掉就好了,我是用的stm32L051的代码。你可以看看是不是有可能是相同的问题。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

wenyangzeng 回答时间:2019-1-8 11:25:39
使用LSI时系统时钟默认只有8MHZ,要对系统时钟进行配置,才能达到48MHZ

无标题.png

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

mmuuss586 回答时间:2019-1-8 11:46:11

时钟哪里没配置对吧

评分

参与人数 1蝴蝶豆 +1 收起 理由
STMCU + 1

查看全部评分

qiangtech 回答时间:2019-1-8 11:56:08
使用CUBEMX,对着时钟树检查一下。

评分

参与人数 1蝴蝶豆 +1 收起 理由
STMCU + 1

查看全部评分

wudianjun2001 回答时间:2019-1-8 12:46:18
重点开下时钟树的配置文件吧,还有硬件的具体使用

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

废鱼 回答时间:2019-1-8 14:02:18
delay_ms的代码发一下,要注意不同的芯片,主频不一样,如果用for循环的话,因为机器周期的问题,会导致时间不准确。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

CC4 回答时间:2019-1-8 15:54:03
安 发表于 2019-1-8 14:02
delay_ms的代码发一下,要注意不同的芯片,主频不一样,如果用for循环的话,因为机器周期的问题,会导致时 ...

有上传完整工程,请看看,谢谢
CC4 回答时间:2019-1-8 15:54:58
wenyangzeng 发表于 2019-1-8 11:25
使用LSI时系统时钟默认只有8MHZ,要对系统时钟进行配置,才能达到48MHZ

这个时钟树我看过,但是,代码不会写,求帮助
wenyangzeng 回答时间:2019-1-8 16:39:11
本帖最后由 wenyangzeng 于 2019-1-8 16:40 编辑
select326 发表于 2019-1-8 15:54
这个时钟树我看过,但是,代码不会写,求帮助

让CUBEMX自动生成即可:

main.rar (2.22 KB, 下载次数: 5)
废鱼 回答时间:2019-1-8 17:22:02
楼主先确定一下SetSysClock配置是否成功。
CC4 回答时间:2019-1-8 18:10:42
wenyangzeng 发表于 2019-1-8 16:39
让CUBEMX自动生成即可:

CubeMX不会写US延时,一直不敢用
CC4 回答时间:2019-1-8 18:11:17
安 发表于 2019-1-8 17:22
楼主先确定一下SetSysClock配置是否成功。

这个要怎么确定呢??指点下
wenyangzeng 回答时间:2019-1-8 18:50:21
本帖最后由 wenyangzeng 于 2019-1-8 18:51 编辑
select326 发表于 2019-1-8 18:10
CubeMX不会写US延时,一直不敢用

1毫秒用HAL_Delay(1);
微秒级用__nop();
CC4 回答时间:2019-1-8 22:39:27
wenyangzeng 发表于 2019-1-8 18:50
1毫秒用HAL_Delay(1);
微秒级用__nop();

用了CubeMX后,确实能解决时钟配置的问题。一个NOP 延时是多少US呀?
另外,如果 想要超频,这在CubeMX是无法实现的吧?
废鱼 回答时间:2019-1-9 08:12:21
就按1个机器周期算就行。先算机器周期时间,延时需要多少个机器周期。
12下一页
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版