STM32微秒级(us)延时
实现代码:
void Delay_us(uint16_t time)//Delay_us(0) = 10.2us
{
HAL_SYSTICK_Config(72);
HAL_Delay(time);
HAL_SYSTICK_Config(72000);
}
由于使用的是F103配置的工作主频是72MHz,所以为72;
实现原理:修改HAL_Delay的延时,将延时从1ms减少一千倍,再修改回1ms;
可以通过下面的代码获取HAL的工作频率
RCC_ClocksTypeDef get_rcc_clock;
RCC_GetClocksFreq(&get_rcc_clock);
printf("SYSCLK_Frequency:%d\r\n",get_rcc_clock.SYSCLK_Frequency);
printf("HCLK_Frequency:%d\r\n",get_rcc_clock.HCLK_Frequency);
printf("PCLK1_Frequency:%d\r\n",get_rcc_clock.PCLK1_Frequency);
printf("PCLK2_Frequency:%d\r\n",get_rcc_clock.PCLK2_Frequency);
printf("ADCCLK_Frequency:%d\r\n",get_rcc_clock.ADCCLK_Frequency);
本文介绍了如何在STM32 F103上实现微秒级别的延时函数,通过修改HAL_Delay配置以达到所需的精度。代码中展示了如何将HAL_Delay的延时单位从毫秒降低到微秒,并给出了获取HAL库工作频率的方法,以确保延时计算的准确性。
3005

被折叠的 条评论
为什么被折叠?



