WCH沁恒单片机
直播中

tr12345

8年用户 961经验值
擅长:制造/封装
私信 关注
[问答]

如何用CH32V307VCT6的基本定时器TIM6来实现高精度延时1us和1ms

我想用CH32V307VCT6的基本定时器tiM6来实现高精度延时1us和1ms,请给一个demo代码,谢谢!
  

回帖(1)

雷友水

2022-6-20 11:04:35
您的代码使用了中断处理函数,但我的想法是能否不用中断处理函数来实现延时?就像CH32V307EVT例程里面的:

void Delay_Us(uint32_t n)
{
? uint32_t i;
? SysTick->SR &= ~(1 << 0);
? i = (uint32_t)n * p_us;
? SysTick->CMP = i;
? SysTick->CTLR |= (1 << 4) | (1 << 5) | (1 << 0);
? while((SysTick->SR & (1 << 0)) != (1 << 0)) ;
? SysTick->CTLR &= ~(1 << 0);
}
这个里面使用的是SysTick,我的想法是能否用TIM6代替SysTick来完成延时的功能?
或者说,能否直接操作TIM6的寄存器来实现延时功能?谢谢。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分