已有的HAL_Delay()
__weak void HAL_Delay(__IO uint32_t Delay)
{
uint32_t tickstart = 0U;
tickstart = HAL_GetTick();
while((HAL_GetTick() - tickstart) < Delay)
{
}
}
上面为ms级延时函数
现在我们要实现的是us级延时函数
void HAL_Delay_us(uint32_t nus)
{
//将systic设置为1us中断
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000000);
//延时nus
HAL_Delay(nus-1);
//恢复systic中断为1ms
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
}