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));
这个和你是用的主频是有关系的, 看了时钟树,原来是用系统时钟4分频后送入到核的timer 看一下时钟图就行了 分频系数这是 可能是为了让时钟小一些呗,就是这样 为了让延时函数精度更高一些呗 为了降低频率,才会除以4 你看看你的频率呗,可能是频率分频,降低频率会这样 你说的是除以4还是除以4000啊? 就是一个系数,这个为了降低频率的 计算原因,就是为了降低频率,好计算一个很好的延时函数 你也可以改成其他的,就是计算得到的这个系数 这个可以写个实际的数也行,主要是为了计算方便吧 这个主频设置有关吧 如果定时器频率是主时钟频率的四分之一,那么在编程时就需要相应地调整计算公式 是定时器的输入时钟是系统时钟的四分之一,所以要除以4
页:
[1]