|
函数原型 __weak void HAL_Delay(__IO uint32_t Delay) { uint32_t tickstart = HAL_GetTick(); while((HAL_GetTick() - tickstart) < Delay) { } } 注释中延时是ms。怎么算出来的。另外下面的系统滴答中断多长时间进入一次 void SysTick_Handler(void) { HAL_IncTick(); HAL_SYSTICK_IRQHandler(); } |
微信公众号
手机版
SysTick_Handler的调用周期要在中断中才能查询到吧,这里只是一个向量处理函数,看不出时间频率。
{
/*Configure the SysTick to have interrupt in 1ms time basis*/
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
/*Configure the SysTick IRQ priority */
HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority ,0);
/* Return function status */
return HAL_OK;
}
static __IO uint32_t uwTick;
__weak void HAL_IncTick(void)
{
uwTick++;
}
__weak uint32_t HAL_GetTick(void)
{
return uwTick;
}
__weak void HAL_Delay(__IO uint32_t Delay)
{
uint32_t tickstart = HAL_GetTick();
while((HAL_GetTick() - tickstart) < Delay)
{
}
}
谢谢,明白了