HAL库的中断函数到底在哪里?
比如说使用TIM2定时器定时器,用cubemx生成代码后,在stm32f0xx_it.c中有
/**
* @brief This function handles TIM2 global interrupt.
*/
void TIM2_IRQHandler(void)
{
/ USER CODE BEGIN TIM2_IRQn 0 /
/ USER CODE END TIM2_IRQn 0 /
HAL_TIM_IRQHandler(&htim2);
/ USER CODE BEGIN TIM2_IRQn 1 /
/ USER CODE END TIM2_IRQn 1 /
}
而AL_TIM_IRQHandler(&htim2)中有
/ TIM Update event /
if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET)
{
if(__HAL_TIM_GET_ITSTATUS(htim, TIM_IT_UPDATE) !=RESET)
{
__HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);
HAL_TIM_PeriodElapsedCallback(htim);
}
}
看到有的资料写HAL_TIM_PeriodElapsedCallback(htim);是用户接口
那前面的几个函数不都叫中断调用函数吗?他们是什么关系?我要实现的代码到底写在哪里??
/**
* @brief This function handles TIM2 global interrupt.
*/
void TIM2_IRQHandler(void)
{
/ USER CODE BEGIN TIM2_IRQn 0 /
/ USER CODE END TIM2_IRQn 0 /
HAL_TIM_IRQHandler(&htim2);
/ USER CODE BEGIN TIM2_IRQn 1 /
/ USER CODE END TIM2_IRQn 1 /
}
而AL_TIM_IRQHandler(&htim2)中有
/ TIM Update event /
if(__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET)
{
if(__HAL_TIM_GET_ITSTATUS(htim, TIM_IT_UPDATE) !=RESET)
{
__HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);
HAL_TIM_PeriodElapsedCallback(htim);
}
}
看到有的资料写HAL_TIM_PeriodElapsedCallback(htim);是用户接口
那前面的几个函数不都叫中断调用函数吗?他们是什么关系?我要实现的代码到底写在哪里??
2 个回复
admin
赞同来自: 菜田怪圈
函数HAL_TIM_IRQHandler(&htim2);的内部包含了这个回调,用keil编译后查看函数结构就能发现
seuliang
赞同来自: yayayayaya