本帖最后由 df_flying 于 2018-12-10 15:35 编辑
HAL库没有那么神秘,你跟进去看就是在LL上封装了一层,中断处理上HAL确实使用了轮询,处理的case比较多。中断入口一般都在stm32f7xx_it.c文件,这个函数你可以自己写,你也可以调用callback函数HAL_TIM_PeriodElapsedCallback(),这里清零已经HAL里封装好了。你跟HAL_TIM_IRQHandler 这个函数即可
/* TIM Update event */
if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET)
{
if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) !=RESET)
{
__HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE); <----------------这里清零
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
htim->PeriodElapsedCallback(htim);
#else
HAL_TIM_PeriodElapsedCallback(htim);
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
}
}
|