OpenEdv-开源电子网

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

fac_us=SYSCLK/8 ,fac_us 表示的是1us?

[复制链接]

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2013-9-1
在线时间
0 小时
发表于 2013-9-1 21:21:48 | 显示全部楼层 |阅读模式

假设  SYSCLK  为72MHZ ;  fac_us=SYSCLK/8  中  fac_us  怎么会表示的是1us 呢? 


void delay_init(u8 SYSCLK)
{
SysTick->CTRL&=0xfffffffb;//bit2清空,选择外部时钟  HCLK/8
fac_us=SYSCLK/8;    
fac_ms=(u16)fac_us*1000;
}
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2013-9-1
在线时间
0 小时
 楼主| 发表于 2013-9-1 22:13:58 | 显示全部楼层
哦 想通了 简单来讲就是 :

SYSCLK =72MHZ 
SysTick=72/8=9MHZ

当SysTick 计数( fac_us)=SYSCLK/8=9 次时候,那么延时就有1us 了!   计数9M次则有1s。



但有另外一个问题,就是我使用 MDK时,我发现其自启动文件似乎没有默认系统时钟为72MHZ,估计是版本的问题,这应该怎么处理呢?  也就是当运行 main() 函数时,没有运行自带的默认为72MHZ的文件。
回复 支持 0 反对 1

使用道具 举报

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2013-9-1
在线时间
0 小时
 楼主| 发表于 2013-9-1 21:22:04 | 显示全部楼层
求解了·
回复 支持 反对

使用道具 举报

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2013-9-1
在线时间
0 小时
 楼主| 发表于 2013-9-1 21:22:56 | 显示全部楼层
还有就是STM32最新的库函数及其说明,谁能发我一下呢,感谢哈。

905574448@qq.com
回复 支持 反对

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2013-9-1 23:10:25 | 显示全部楼层
你用的库函数的版本是?
站在巨人的肩膀上不断的前进。。。
回复 支持 反对

使用道具 举报

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2013-9-1
在线时间
0 小时
 楼主| 发表于 2013-9-1 23:58:15 | 显示全部楼层
老大  怎么知道自己用的爱哪个版本的库函数呢?

指的是 .LIB 文件吗?· 

我看了一下好像是2008年的,晕了·  

我下载了一个3.5 的  但是里面怎么都是历程,哪个才是库函数呢?·
回复 支持 反对

使用道具 举报

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2013-9-1
在线时间
0 小时
 楼主| 发表于 2013-9-2 20:27:43 | 显示全部楼层
如上 在线求问····
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-2 21:17:09 | 显示全部楼层
库函数就是有很多:stm32f10x_xxxx.c的代码的东东...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2013-9-1
在线时间
0 小时
 楼主| 发表于 2013-9-11 23:41:13 | 显示全部楼层
了解了,感谢··  顺便问一句:如果使用原子的函数会不会被告啊?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-12 12:15:42 | 显示全部楼层
回复【9楼】alan1987:
---------------------------------
不会。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2013-9-1
在线时间
0 小时
 楼主| 发表于 2013-9-12 21:03:19 | 显示全部楼层
呵呵· THANKS
回复 支持 反对

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2013-7-18
在线时间
2 小时
发表于 2013-9-28 15:09:30 | 显示全部楼层
编译的时候总是提醒fac_us没有定义,那么例说STM32在介绍delay_init函数时也没有对fac_us定义?在哪能看到其定义呢?原子大哥求教啦!
回复 支持 反对

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2013-7-18
在线时间
2 小时
发表于 2013-9-28 15:11:45 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
编译的时候总是提醒fac_us没有定义,那么例说STM32在介绍delay_init函数时也没有对fac_us定义?在哪能看到其定义呢?原子大哥求教啦!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-28 21:32:59 | 显示全部楼层
回复【13楼】willows0313:
---------------------------------
你直接编译我们的例程试试。
在delay.c里面有定义的!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2013-7-18
在线时间
2 小时
发表于 2013-9-28 22:08:12 | 显示全部楼层
回复【14楼】正点原子:
---------------------------------
例说STM32不是原子哥写的?好多代码都跟原子哥的一样啊?谢谢原子哥啦,我试试!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-29 14:37:16 | 显示全部楼层
回复【15楼】willows0313:
---------------------------------
是我写的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2015-8-18
在线时间
0 小时
发表于 2015-8-27 14:20:46 | 显示全部楼层
回复【4楼】alan1987:
---------------------------------
“当SysTick 计数( fac_us)=SYSCLK/8=9 次时候,那么延时就有1us 了!   计数9M次则有1s。”
除得的9是9MHz的意思,为什么理解为9次??求解
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2016-9-9
在线时间
6 小时
发表于 2017-4-13 14:06:16 | 显示全部楼层
牧野 发表于 2015-8-27 14:20
**** 作者被禁止或删除 内容自动屏蔽 ****

初始化的时候调用delay_init(168);并不是168M,即168 000 000
回复 支持 反对

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2018-7-18
在线时间
7 小时
发表于 2018-7-19 18:18:15 | 显示全部楼层
这个72Mhz是自己随意的定的吗
回复 支持 反对

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2018-7-18
在线时间
7 小时
发表于 2018-7-19 18:20:09 | 显示全部楼层
alan1987 发表于 2013-9-1 22:13
哦 想通了 简单来讲就是 :

SYSCLK =72MHZ 

当SysTick 计数( fac_us)=SYSCLK/8=9 次时候,那么延时就有1us 了!这个1us是怎么得来的
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2019-3-9
在线时间
3 小时
发表于 2019-8-28 22:02:29 | 显示全部楼层
我也想来一下自己关于1us的得来的想法。
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);  //设置了systick的时钟源为8 分频的 AHB 时钟 (HCLK)
然后接fac_us=SYSCLK/8;
假设我们传入的SYSCLK参数为168,即我们的SYSCLK  为168MHZ
那么168M经过8分频为21MHZ,即时间为(1/21000000)秒
假设我们现在想得到1us则 只需要(1/21000000)*21即可得到1us
而21可以由fac_us=SYSCLK/8这句话得到
/////////////////
不知表达是否准确,欢迎各位指出
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 03:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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