OpenEdv-开源电子网

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

问一个小问题 关于fac_us=SystemCoreClock/8000000; 怎么是1US呢

[复制链接]

54

主题

136

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
404
金钱
404
注册时间
2014-3-6
在线时间
41 小时
发表于 2014-3-31 20:16:49 | 显示全部楼层 |阅读模式
问一个小问题 关于fac_us=SystemCoreClock/8000000; 怎么是1US呢 72MHZ的八分频是9MHZ即SysTick即为9MHZ  那再除8M也不能是1us啊 ?下面的函数不是说明 fac_us ==1us吗?

void delay_us(u32 nus)
{
u32 temp;      
SysTick->LOAD=nus*fac_us; //时间加载    
SysTick->VAL=0x00;        //清空计数器
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;          //开始倒数  
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//等待时间到达   
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;       //关闭计数器
SysTick->VAL =0X00;       //清空计数器  
}
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-7-25
在线时间
1 小时
发表于 2016-8-23 15:04:04 | 显示全部楼层
SysTick时钟是sysclk 8分频,即SysTick时钟频率=sysclk/8, systick 计1次数所需时间为8/sysclk(s)=8*10^6/sysclk(us),由此,
SysTick  1微秒计数个数为fac_us=sysclk/8*10^6.
举个例子:当sysclk=8M时,systick 计1次数所需时间为1us,由此,fac_us=1,寄存器加载个数SysTick->LOAD=nus*1;
当sysclk=72M时,systick 计1次数所需时间为1/9us,由此,fac_us=9,寄存器加载个数SysTick->LOAD=nus*9;
回复 支持 7 反对 0

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2013-6-2
在线时间
12 小时
发表于 2016-2-5 22:38:06 | 显示全部楼层
看到原子哥的教程也在这纠结,想图方便百度一下没找到==俺的理解是
SYSCLK即SystemCoreClock
HCLK即SYSCLK分频得来(在此未分频),即HCLK==SystemCoreClock
SysTick时钟是HCLK8分频,即SysTick时钟频率==HCLK/8==SystemCoreClock/8,
因此,SysTick一个计数时长(1/(SystemCoreClock/8)),
1us需要计数次数为10^-6÷[1/(SystemCoreClock/8)]=SystemCoreClock/8000000
回复 支持 5 反对 0

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2015-1-22
在线时间
0 小时
发表于 2015-1-22 09:38:57 | 显示全部楼层
fac_us=SystemCoreClock/8000000,SysTic是SystemCoreClock的8分频,1S就是SystemCoreClock/8。
回复 支持 1 反对 0

使用道具 举报

18

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
465
金钱
465
注册时间
2016-1-20
在线时间
89 小时
发表于 2017-8-8 10:25:59 | 显示全部楼层
fac_us=9,systick时钟是9mhz,systick装载值为n*9,每中断一次即为nus
回复 支持 1 反对 0

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2017-6-28 14:24:56 | 显示全部楼层
本帖最后由 zuozhongkai 于 2017-6-28 14:26 编辑

1us的意思是1us systick需要计的数。systick的时钟是SystemCoreClock的1/8。那么1us systick需要计的数不就是(SystemCoreClock/8)/10000000=SystemCoreClock/80000000了!还有,提问帖不要发成分享帖子!别人的最佳答案就没法设置,这样后面看到这个帖子的人就没法第一时间看到最佳答案了!
开往春天的手扶拖拉机
回复 支持 1 反对 0

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2011-1-24
在线时间
0 小时
发表于 2014-3-31 22:01:29 | 显示全部楼层
fac_us 是个系数,不是时间.
回复 支持 反对

使用道具 举报

2

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2015-12-3
在线时间
71 小时
发表于 2016-5-13 13:59:23 | 显示全部楼层
feicien 发表于 2016-2-5 22:38
看到原子哥的教程也在这纠结,想图方便百度一下没找到==俺的理解是
SYSCLK即SystemCoreClock
HCLK即SYSCL ...

回复 支持 反对

使用道具 举报

7

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2016-10-10
在线时间
16 小时
发表于 2016-10-10 14:42:59 | 显示全部楼层
讲的漂亮
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2016-10-12
在线时间
31 小时
发表于 2016-10-27 10:45:00 | 显示全部楼层
原子哥,可以在解释一下fac_us=SystemCoreClock/8000000这个为啥是1us吗?
回复 支持 反对

使用道具 举报

0

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2017-5-9
在线时间
18 小时
发表于 2017-6-28 14:22:19 | 显示全部楼层
feicien 发表于 2016-2-5 22:38
看到原子哥的教程也在这纠结,想图方便百度一下没找到==俺的理解是
SYSCLK即SystemCoreClock
HCLK即SYSCL ...

SysTick时钟频率==HCLK/8(Mhz)==SystemCoreClock/8(Mhz)
不应该这样吗?      SysTick一个计数时长(1/(SystemCoreClock/8000000)).......(s)
1us需要计数次数为10^-6÷[1/(SystemCoreClock/80000000)]=SystemCoreClock/8
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2017-8-8
在线时间
0 小时
发表于 2017-8-8 10:02:47 | 显示全部楼层
感谢楼主分享~~~么么哒
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2017-10-6
在线时间
3 小时
发表于 2017-10-22 14:47:10 | 显示全部楼层
讲的很好
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2018-9-8
在线时间
15 小时
发表于 2018-10-25 14:37:24 | 显示全部楼层
zuozhongkai 发表于 2017-6-28 14:24
1us的意思是1us systick需要计的数。systick的时钟是SystemCoreClock的1/8。那么1us systick需要计的数不就 ...

是不是多写了一个“0”
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2020-12-8
在线时间
3 小时
发表于 2021-7-7 12:55:38 | 显示全部楼层
我也有同样的疑惑,官方出来解释下。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-23 07:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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