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

(已解决)stm32中设置的系统时钟和delay延迟有什么关系?

[复制链接]
ky661 提问时间:2018-6-7 22:09 /
delay延迟是根据单片机的晶振进行的计算,然后通过抢占CPU的时间进行的延迟
系统时钟又是根据CPU频率怎样进行的时间计算?
这个程序把两者结合起来的意义在哪里?
可能我的表述有点问题,就是不太懂系统时钟怎么用,为什么要这样用。

屏幕截图(4).png
收藏 评论8 发布时间:2018-6-7 22:09

举报

8个回答
feixiang20 回答时间:2018-6-7 23:59:49
如果要详细了解,可以翻阅以下资料,比较长就不粘贴了
【Stm32_Clock_Init系统时钟设置和delay_init延时初始化的问题】
【STM32的滴答时钟怎么设置延时时间】
【关于原子STM32不完全手册中delay_init 函数中系统时钟的疑问】
【stm32中Delay()函数延时的时间是怎么计算的】
【STM32系统时钟和延迟函数初始化】

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2 可以再说明下

查看全部评分

STM1024 回答时间:2018-6-8 08:23:48
本帖最后由 stm1024 于 2018-6-8 08:27 编辑

首先,指令的周期是确定的。然后主频越高的情况下,相同时间内的周期数就越多,能执行的指令就越多。因此,简单地说,同样的代码,系统主频越高,执行时间就越短,所以延迟也不一样。
你把你代码中,RCC_PLLMul_9换小试试,可以发现你的GPIO切换时间延长了。

像上面这种delay,延时间不精确,也不好计算,推荐使用SysTick,纯粹基于晶振频率。

然后我觉得你这里使用“抢占”很容易让人误以为是中断抢占……



评分

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

查看全部评分

wudianjun2001 回答时间:2018-6-8 08:33:45
你这个delay一般很少用,主要的还是通过定时中断来实现。我一般在程序开头初始化的时候会这样用,后面主程序里不会用

评分

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

查看全部评分

andey 回答时间:2018-6-8 14:13:41
提示: 作者被禁止或删除 内容自动屏蔽
MrJiu 回答时间:2018-6-8 14:58:26
这种delay一般就做个大概的延时。。。差不多就OK了,当然了至于初始化的时候,由于心跳时钟还没开始工作所以会用这种超级大值的delay。。。

评分

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

查看全部评分

ky661 回答时间:2018-6-8 18:09:11
feixiang20 发表于 2018-6-7 23:59
如果要详细了解,可以翻阅以下资料,比较长就不粘贴了
【Stm32_Clock_Init系统时钟设置和delay_init延时初 ...

嗯嗯,好的,谢谢啦
ky661 回答时间:2018-6-8 18:10:09
stm1024 发表于 2018-6-8 08:23
首先,指令的周期是确定的。然后主频越高的情况下,相同时间内的周期数就越多,能执行的指令就越多。因此, ...

(⊙﹏⊙),就是不太清楚要怎么表达,嗯嗯,谢谢啦
ky661 回答时间:2018-6-8 18:10:28
wudianjun2001 发表于 2018-6-8 08:33
你这个delay一般很少用,主要的还是通过定时中断来实现。我一般在程序开头初始化的时候会这样用,后面主程 ...

这样子哦

所属标签

相似问题

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