本文主要是介绍STM32之HAL库微妙延迟(借助Systick),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
代码
void bsp_us_delay(uint32_t us) {uint32_t start, now, delta, reload, us_tick;start = SysTick->VAL;reload = SysTick->LOAD;us_tick = SystemCoreClock / 1000000UL;do {now = SysTick->VAL;delta = start > now ? start - now : reload + start - now;} while (delta < us_tick * us);
}
测试(主要逻辑)
stm32_pin_mode(GPIOB,GPIO_PIN_6,pin_mode_output);while (1){pin_high(GPIOB,GPIO_PIN_6);bsp_us_delay(20);pin_low(GPIOB,GPIO_PIN_6);bsp_us_delay(20);}
逻辑分析仪查看结果
大概1us左右的误差
这篇关于STM32之HAL库微妙延迟(借助Systick)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!