打印

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

[复制链接]
3309|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lindahnu|  楼主 | 2024-4-19 12:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用核内部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 | 只看该作者
看一下时钟图就行了

使用特权

评论回复
5
cen9ce| | 2024-6-7 11:58 | 只看该作者
分频系数这是

使用特权

评论回复
6
d1ng2x| | 2024-6-7 13:02 | 只看该作者
可能是为了让时钟小一些呗,就是这样

使用特权

评论回复
7
ex7s4| | 2024-6-7 14:07 | 只看该作者
为了让延时函数精度更高一些呗

使用特权

评论回复
8
b5z1giu| | 2024-6-7 15:12 | 只看该作者
为了降低频率,才会除以4

使用特权

评论回复
9
suw12q| | 2024-6-7 16:17 | 只看该作者
你看看你的频率呗,可能是频率分频,降低频率会这样

使用特权

评论回复
10
y1n9an| | 2024-6-7 17:28 | 只看该作者
你说的是除以4还是除以4000啊?

使用特权

评论回复
11
w2nme1ai7| | 2024-6-8 08:12 | 只看该作者
就是一个系数,这个为了降低频率的

使用特权

评论回复
12
t1ngus4| | 2024-6-8 09:10 | 只看该作者
计算原因,就是为了降低频率,好计算一个很好的延时函数

使用特权

评论回复
13
tax2r6c| | 2024-6-8 10:25 | 只看该作者
你也可以改成其他的,就是计算得到的这个系数

使用特权

评论回复
14
lamanius| | 2024-6-8 11:13 | 只看该作者
这个可以写个实际的数也行,主要是为了计算方便吧

使用特权

评论回复
15
FranklinUNK| | 2024-6-20 18:51 | 只看该作者
这个主频设置有关吧

使用特权

评论回复
16
9dome猫| | 2024-6-30 23:15 | 只看该作者
如果定时器频率是主时钟频率的四分之一,那么在编程时就需要相应地调整计算公式

使用特权

评论回复
17
lindahnu|  楼主 | 2024-9-25 14:37 | 只看该作者
是定时器的输入时钟是系统时钟的四分之一,所以要除以4

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

28

帖子

0

粉丝