void Delay_us(uint32_t xus) { SysTick->LOAD = 72 * xus; //设置定时器重装值 SysTick->VAL = 0x00; //清空当前计数值 SysTick->CTRL = 0x00000005; //设置时钟源为HCLK,启动定时器 while(!(SysTick->CTRL & 0x00010000)); //等待计数到0 SysTick->CTRL = 0x00000004; //关闭定时器 }
时间: 2023-12-26 16:04:45 浏览: 146
stm32f4 SysTick 精确延时 非中断方式
这段代码是一个延时函数,用于延时指定的微秒数。它使用了Cortex-M系列微控制器中的SysTick定时器,并通过设置定时器的重装值、清空当前计数值、设置时钟源和启动定时器来实现延时。然后,在定时器计数到0之前,函数会一直等待。最后,关闭定时器。
需要注意的是,代码中的延时时间xus是以微秒为单位的,并且假设系统时钟频率为72MHz。如果系统时钟频率不是72MHz,那么需要对代码进行相应的修改以适应实际情况。
阅读全文