OpenEdv-开源电子网

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

延时函数delay_init(168)中的168是根据什么设置的

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
25
金钱
25
注册时间
2015-3-30
在线时间
0 小时
发表于 2015-4-9 18:35:25 | 显示全部楼层 |阅读模式
5金钱
刚买的开发板,stm32f407的,看跑马灯实验,对于这个延时函数的参数168不理解。这个是应该是系统时钟,但是为什么要传入168,这个是根据什么设置的?
我的晶振是8M的。
看main函数,刚进来就是就是初始化延时函数,不理解这个168的设置跟哪些有有关系?如果系统时钟是72M,8分频的话fac_us=9   传入168,fac_us应该是21吧。求高手帮忙解答下,多谢了
int main(void)

 
delay_init(168);  //初始化延时函数
LED_Init();        //初始化LED端口



最佳答案

查看完整内容[请看2#楼]

HCLK时钟,一般默认都是等于系统时钟。。。  而Systick时钟,可以是HCLK,也可以是HCLK/8,所以一般就传入一个这个参数了。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2015-4-9 18:35:26 | 显示全部楼层
HCLK时钟,一般默认都是等于系统时钟。。。
 而Systick时钟,可以是HCLK,也可以是HCLK/8,所以一般就传入一个这个参数了。。。
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复

使用道具 举报

12

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-6-28
在线时间
4 小时
发表于 2015-8-2 16:37:34 | 显示全部楼层
回复【2楼】Admin:
---------------------------------
这个函数传入参数与不传参数有什么区别吗?
我看那本纸质版的《精通stm32f4》里面写的就是没有传入参数的  fac_us = SystemCoreClock / 8000000; 

而工程文件中写的是传入参数的, fac_us = SYSCLK / 8;  //SYSCLK 为传入的参数 , 例程中是 168 

如果传入参数的话会为代码提供哪些便利?这两者有什么区别吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-2 22:59:35 | 显示全部楼层
回复【3楼】Hatton:
--------------------------------
这个你自己感觉了,哪个个方便用哪个
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2015-7-27
在线时间
0 小时
发表于 2015-8-13 18:23:43 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
回复【4楼】正点原子:
---------------------------------
站长,你的回答,好模糊,我们没看懂
回复

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2016-5-21
在线时间
16 小时
发表于 2017-1-17 19:48:00 | 显示全部楼层
没看明白 站长在细讲一下吧
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2017-2-24
在线时间
7 小时
发表于 2017-3-14 12:10:33 | 显示全部楼层
我开始怀疑人生了。。。好晕。。
回复

使用道具 举报

hsc1992 该用户已被删除
发表于 2017-3-17 14:00:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2015-12-6
在线时间
1 小时
发表于 2017-5-29 22:58:20 | 显示全部楼层
我好不容易理解了168,为什么新版程序传入的是84。。。。。


//ALIENTEK 探索者STM32F407开发板 实验0
//STM32F4工程模板-库函数版本
//技术支持:www.openedv.com
//淘宝店铺:http://eboard.taobao.com
//广州市星翼电子科技有限公司  
//作者:正点原子 @ALIENTEK

int main(void)
{
        u32 t=0;
        uart_init(115200);
        delay_init(84);
       
  while(1){
    printf("t:%d\r\n",t);
                delay_ms(500);
                t++;
        }
}
回复

使用道具 举报

3

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2019-5-8
在线时间
27 小时
发表于 2019-5-16 16:14:40 | 显示全部楼层
Admin 发表于 2015-4-9 18:35
HCLK时钟,一般默认都是等于系统时钟。。。
 而Systick时钟,可以是HCLK,也可以是HCLK/8,所以一般就 ...

我都系统时钟是16M,延时初始化时直接选HCLK,后面算1us多少个时钟周期怎么算?代码如下:
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);       
fac_us=SystemCoreClock/8000000;       

还能除8000000吗?
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2019-6-12
在线时间
4 小时
发表于 2019-6-18 12:08:38 | 显示全部楼层
xou822 发表于 2017-5-29 22:58
**** 作者被禁止或删除 内容自动屏蔽 ****

那说明你还是不明白,
回复

使用道具 举报

9

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2020-11-24
在线时间
38 小时
发表于 2020-11-30 22:28:50 | 显示全部楼层
求解,不明白为啥是168
回复

使用道具 举报

9

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2020-11-24
在线时间
38 小时
发表于 2020-12-5 18:51:42 | 显示全部楼层
shelden 发表于 2020-11-30 22:28
求解,不明白为啥是168

暂时理解:我用的STM32F407芯片主频是168MHz,所以延时函数初始化这里传入的形参是168
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-13 17:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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