参考了以下博主,实际上因为时钟配置相近,用的就是相似的代码https://blog.csdn.net/qq_22252423/article/details/76468161
void delay_us(uint16_t cnt)
{
uint16_t timer1 = 0xFFFF - cnt - 5;
HAL_TIM_Base_Start(&htim3);
__HAL_TIM_SetCounter(&htim3,timer1);
while(timer1<0xffff-5)
{
timer1=__HAL_TIM_GetCounter(&htim3);
}
HAL_TIM_Base_Stop(&htim3);
};
用的是中断的方法,先配置中断至1us发生一次,然后将设定的时间写入中断的计数器,直至时间到达,即可跳出中断,中断掉使能。注意中断时间过于频繁和过长会导致运行出问题,所以不建议长时间延时。
为防止计数错误。“-5”是必要的,避开计数终点为0xFFFF。