lindahnu 发表于 2024-4-19 12:03

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

使用核内部timer定时器实现延时函数,为什么系统时钟要除以4?

void delay_1ms(uint32_t count)
{
   uint64_t start_mtime, delta_mtime;
   uint64_t tmp = get_timer_value();
   do{
      start_mtime = get_timer_value();
   }while(start_mtime == tmp);
do{
      delta_mtime = get_timer_value() - start_mtime;
   }while(delta_mtime <(SystemCoreClock/4000 * count));

   

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
页: [1]
查看完整版本: GD32VF103使用核内部timer定时器疑问