OpenEdv-开源电子网

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

求教 正点原子 老师,关于你的延时函数的问题。

[复制链接]

15

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2012-3-3
在线时间
0 小时
发表于 2012-3-11 16:15:08 | 显示全部楼层 |阅读模式
看了你的直接操作寄存器实现的利用 SysTick 延时的函数,非常好用,比 ST 公司的库函数好用多了。
但是,我有一事不明。
我是否可以理解 delay_init 这个函数的参数是 HCLK 更准确一些,因为,如果是,SYSCLK 的话,要是,HCLK 是经过 SYSCLK 分频得到的,那么,延时就不准确了。当然,一般情况下,HCLK = SYSCLK,此时,延时是准确的。
不知道我以上的理解对不对?
请 正点原子 老师赐教。
谢谢了。
Good?good?study,day?day?up.?立志成为牛人。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2200
金钱
2200
注册时间
2012-2-8
在线时间
35 小时
发表于 2012-3-11 17:28:55 | 显示全部楼层
嗯,如果是程序里面约定不对SYSCLK分频得到HCLK的话,就没什么关系了,可以简化程序的编写。
或者,初始化函数里面也可以判断,HCLK是否经过分频得来,是的话做相应的调整。
https://github.com/roxma
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2012-3-11 17:59:46 | 显示全部楼层
回复【楼主位】fanyi:
---------------------------------
这里SYSTICK的频率就是系统时钟频率的1/8。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

15

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2012-3-3
在线时间
0 小时
 楼主| 发表于 2012-3-11 19:17:58 | 显示全部楼层
多谢楼上的各位高手解答。尤其是 正点 老师,太 正点 了。力顶此论坛。
Good?good?study,day?day?up.?立志成为牛人。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2012-3-11 23:28:31 | 显示全部楼层
你那头像也够正点啊.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

15

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2012-3-3
在线时间
0 小时
 楼主| 发表于 2012-3-12 18:59:09 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
呵呵。我比较喜欢看甄子丹的电影。
Good?good?study,day?day?up.?立志成为牛人。
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2016-6-4
在线时间
13 小时
发表于 2017-3-15 02:23:51 | 显示全部楼层
正点原子 发表于 2012-3-11 23:28
你那头像也够正点啊.

原子哥,我想请教您一个问题。我用的stm32c8t6,然后用了delay.c的delay_us()函数延时了325us,但是示波器测出的是2.920ms。但是我用mini开发板(stm32rct6)延时325us就测出的是325us,当然换stm32c8t6的时候启动文件我也改了啊。这是为啥啊,作比赛弄半天都不对,求原子哥看了,解答一下、
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
发表于 2019-11-25 21:21:49 | 显示全部楼层
waitstory 发表于 2017-3-15 02:23
原子哥,我想请教您一个问题。我用的stm32c8t6,然后用了delay.c的delay_us()函数延时了325us,但是示波器 ...

你那成功了吗?我也用c8t6结果也是查10倍,后来怎么解决的啊
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
发表于 2019-11-26 13:57:37 | 显示全部楼层
正点原子 发表于 2012-3-11 23:28
你那头像也够正点啊.

原子哥,这个问题该怎么解决呢,我用的103的例程,delay的时候延时1000ms,结果延时了大约10秒钟,差了10倍
回复 支持 反对

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6666
金钱
6666
注册时间
2015-8-25
在线时间
1035 小时
发表于 2019-11-26 15:12:24 | 显示全部楼层
不一定是10倍,如果外部晶振没起振貌似是差9倍的关系,你可以在SystemInit这个函数里单步调试看看外部晶振是否真的起振了。
Capture.JPG
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2019-5-25
在线时间
11 小时
发表于 2019-11-30 15:14:40 | 显示全部楼层
凌凌漆 发表于 2019-11-26 13:57
原子哥,这个问题该怎么解决呢,我用的103的例程,delay的时候延时1000ms,结果延时了大约10秒钟,差了10 ...

我前两天也是遇到这个问题的,一开始是发现晶振没有起振,然后更换了负载电容,晶振起振了,然后发现还是不行,最后发现在启动文件里面的系统时钟没有初始化,被注释了,释放了时钟就正常了
回复 支持 反对

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
发表于 2019-12-1 08:21:33 | 显示全部楼层
买个妹妹 发表于 2019-11-30 15:14
我前两天也是遇到这个问题的,一开始是发现晶振没有起振,然后更换了负载电容,晶振起振了,然后发现还是 ...

嗯,其实这一点野火要做的比原子的好,你可以看一下野火的启动文件里都是配置好了的,而且野火随便一个工程里的启动文件都是全部的,你想改成什么就可以很方便的修改
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 21:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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