代码
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左右的误差
文章来源地址https://www.toymoban.com/news/detail-502354.html
文章来源:https://www.toymoban.com/news/detail-502354.html
到了这里,关于STM32之HAL库微妙延迟(借助Systick)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!