stm32微秒定时器

319 阅读1分钟

参考blog.csdn.net/Kevin_8_Lee…

能用,但是在某个中断里面调用时出现了错误(应该改优先级),类似的用滴答定时器进行微秒计时,要把滴答定时器优先级设为最高

84M定时器乖乖用了84个nop

使用普通定时器时注意定时器开启后,前两个周期定时是不准确的

void RCC_delay_us(uint32_t udelay)
{
    __IO uint32_t Delay = udelay * 80 / 7;//(SystemCoreClock 80M)
    do
    {
        __NOP();
    }
    while (Delay --);
}

定时器在初始化第一次使用时默认计数值可能不是要求的值(对第一次计数也要求的情况),可以用__HAL_TIM_SetCounter(&htim1, 250);