void delay_us(__IO uint32_t delay)
{
__IO uint32_t init_val;//初始值
__IO uint32_t current;//当前值
__IO int target_val;//目标值
init_val = SysTick->VAL;//获取当前计数器值作为初始值
target_val=init_val-(delay*(SystemCoreClock/1000000));
//初始值减去要延时的嘀嗒数就是目标嘀嗒值
while(target_val<=0){
//如果目标值小于0 ,就等计数器重装载,直到目标值大于0跳出循环
target_val+=SystemCoreClock/1000;
do{
current = SysTick->VAL;
}while(current>10);
}
do{
current = SysTick->VAL;
}while(current>target_val);
}
hal库微妙延时,利用systick实现,10多行代码搞定,供参考
最新推荐文章于 2025-03-11 14:27:47 发布