OpenEdv-开源电子网

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

SysTick延时函数问题

[复制链接]

3

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-7-16
在线时间
11 小时
发表于 2017-7-21 16:52:11 | 显示全部楼层 |阅读模式
2金钱
在32开发指南中说:SysTick 的时钟源自 HCLK 的 8 分频,假设我们外部
晶振为 8M,然后倍频到 72M,那么 SysTick 的时钟即为 9Mhz,也就是 SysTick 的计数器
VAL 每减 1,就代表时间过了 1/9us。所以 fac_us=SystemCoreClock/8000000;这句话就是计
算在 SystemCoreClock 时钟频率下延时 1us 需要多少个 SysTick 时钟周期。同理,
fac_ms=(u16)fac_us*1000;就是计算延时 1ms 需要多少个 SysTick 时钟周期,它自然是 1us
的 1000 倍。初始化将计算出 fac_us 和 fac_ms 的值。  


想知道为啥是倍频到72M,而不是其他的,硬性规定吗?

最佳答案

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

可以设置成其他频率,但如果需要在应用中使用USB接口, PLL必须被设置为输出48或72MHZ时钟,用于提供48MHz的USBCLK时钟。 这些设置其实跟你外设所需的频率相关,如果单纯的想进行延时,用其他频率也是可以的,但如果加了其他外设,就要认真考虑系统时钟的频率设置了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

92

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1216
金钱
1216
注册时间
2016-7-17
在线时间
143 小时
发表于 2017-7-21 16:52:12 | 显示全部楼层
本帖最后由 虾兵蟹将 于 2017-7-21 17:10 编辑

可以设置成其他频率,但如果需要在应用中使用USB接口, PLL必须被设置为输出48或72MHZ时钟,用于提供48MHz的USBCLK时钟。
这些设置其实跟你外设所需的频率相关,如果单纯的想进行延时,用其他频率也是可以的,但如果加了其他外设,就要认真考虑系统时钟的频率设置了
回复

使用道具 举报

11

主题

104

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2017-7-14
在线时间
25 小时
发表于 2017-7-21 16:58:13 | 显示全部楼层
STM32有一个SYSTEM—Init()的函数把STM32的时钟设置成72M的,而且单片机执行代码前是先运行SYSTEMINIT()这个函数的,具体你可以去看,在SYSTEM_STM32F10X.C里面
回复

使用道具 举报

3

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2017-7-16
在线时间
11 小时
 楼主| 发表于 2017-7-22 10:29:46 | 显示全部楼层
虾兵蟹将 发表于 2017-7-21 17:05
可以设置成其他频率,但如果需要在应用中使用USB接口, PLL必须被设置为输出48或72MHZ时钟,用于提供48MHz ...

好的,真棒
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-12-23 02:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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