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

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

[复制链接]
select326 提问时间:2019-1-8 10:53 /
阅读主题, 点击返回1楼
收藏 评论20 发布时间:2019-1-8 10:53
20个回答
select326 回答时间:2019-1-8 18:10:42
wenyangzeng 发表于 2019-1-8 16:39
让CUBEMX自动生成即可:

CubeMX不会写US延时,一直不敢用
select326 回答时间: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();
select326 回答时间: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个机器周期算就行。先算机器周期时间,延时需要多少个机器周期。
select326 回答时间: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 本身也是函数调用,会不会占用系统周期?或者说,这个在编译时就解决了,?
回答时间:2019-1-9 09:56:43
在比较大的计时中可以忽略,但是越小越需要考虑代码所执行的周期。比如FOR循环执行需要多少个机器周期。
qiangtech 回答时间:2019-1-9 10:42:09
FOR和NOP延时用在要求不高的地方还可以,如果要求高一点还是用SYSTICK和TIMER来延时比较好。还有就是下次换个频率的芯片,FOR和NOP又要重新调试。

评分

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

查看全部评分

select326 回答时间:2019-1-9 18:17:22
这个迁时肯定是要精确的,不是大约。这个NOP 方案只怕还是不行。还是得考虑下使用HAL库 如何做US延时
芯领神会 回答时间:2019-1-9 21:23:34
我最近也遇到了这个类似的问题,不过我是使用的LL库,使用CubeMx生成的,使用的额内部晶振,主要造成这个的原因是生成的代码里面有一个内部晶振校准的代码,屏蔽掉就好了,我是用的stm32L051的代码。你可以看看是不是有可能是相同的问题。

评分

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

查看全部评分

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版