GD32VF103使用核内部timer定时器疑问

[复制链接]
3969|16
 楼主| lindahnu 发表于 2024-4-19 12:03 | 显示全部楼层 |阅读模式
使用核内部timer定时器实现延时函数,为什么系统时钟要除以4?

  1. void delay_1ms(uint32_t count)
  2. {
  3.    uint64_t start_mtime, delta_mtime;
  4.    uint64_t tmp = get_timer_value();
  5.    do{
  6.         start_mtime = get_timer_value();
  7.    }while(start_mtime == tmp);
  8.   do{
  9.         delta_mtime = get_timer_value() - start_mtime;
  10.    }while(delta_mtime <(SystemCoreClock/4000 * count));

  11.    

shenxiaolin 发表于 2024-4-30 15:59 | 显示全部楼层
这个和你是用的主频是有关系的,
 楼主| lindahnu 发表于 2024-5-6 14:32 | 显示全部楼层
看了时钟树,原来是用系统时钟4分频后送入到核的timer
埃娃 发表于 2024-5-15 23:27 | 显示全部楼层
看一下时钟图就行了
cen9ce 发表于 2024-6-7 11:58 | 显示全部楼层
分频系数这是
d1ng2x 发表于 2024-6-7 13:02 | 显示全部楼层
可能是为了让时钟小一些呗,就是这样
ex7s4 发表于 2024-6-7 14:07 | 显示全部楼层
为了让延时函数精度更高一些呗
b5z1giu 发表于 2024-6-7 15:12 | 显示全部楼层
为了降低频率,才会除以4
suw12q 发表于 2024-6-7 16:17 | 显示全部楼层
你看看你的频率呗,可能是频率分频,降低频率会这样
y1n9an 发表于 2024-6-7 17:28 | 显示全部楼层
你说的是除以4还是除以4000啊?
w2nme1ai7 发表于 2024-6-8 08:12 | 显示全部楼层
就是一个系数,这个为了降低频率的
t1ngus4 发表于 2024-6-8 09:10 | 显示全部楼层
计算原因,就是为了降低频率,好计算一个很好的延时函数
tax2r6c 发表于 2024-6-8 10:25 | 显示全部楼层
你也可以改成其他的,就是计算得到的这个系数
lamanius 发表于 2024-6-8 11:13 | 显示全部楼层
这个可以写个实际的数也行,主要是为了计算方便吧
FranklinUNK 发表于 2024-6-20 18:51 | 显示全部楼层
这个主频设置有关吧
9dome猫 发表于 2024-6-30 23:15 | 显示全部楼层
如果定时器频率是主时钟频率的四分之一,那么在编程时就需要相应地调整计算公式
 楼主| lindahnu 发表于 2024-9-25 14:37 | 显示全部楼层
是定时器的输入时钟是系统时钟的四分之一,所以要除以4
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

31

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部