在Keil中CTRL+F,在当前工程(Current Project)下搜索关键字“SysTick_Handler”,找到这个函数,函数内容为
/**
* @brief This function handles System tick timer.
*/
void SysTick_Handler(void)
{
/* USER CODE BEGIN SysTick_IRQn 0 */
/* USER CODE END SysTick_IRQn 0 */
HAL_IncTick();
/* USER CODE BEGIN SysTick_IRQn 1 */
/* USER CODE END SysTick_IRQn 1 */
}
发现只有一个 HAL_IncTick(); 函数,缺少我们自己重定义的 HAL_SYSTICK_Callback();函数,那么我们把HAL_SYSTICK_Callback();加在SysTick_Handler()函数里即可。
例如:
/**
* @brief This function handles System tick timer.
*/
void SysTick_Handler(void)
{
/* USER CODE BEGIN SysTick_IRQn 0 */
/* USER CODE END SysTick_IRQn 0 */
HAL_IncTick();
/* USER CODE BEGIN SysTick_IRQn 1 */
HAL_SYSTICK_Callback();
/* USER CODE END SysTick_IRQn 1 */
}
我在STM32CubeMx中文网上学习《STM32Cube 学习之三:按键输入 》这一章节内容时遇到的这个问题,给出的解决办法参考上面的网址连接,我稍微说明一下。
在Keil中CTRL+F,在当前工程(Current Project)下搜索关键字“SysTick_Handler”,找到这个函数,函数内容为
/**
* @brief This function handles System tick timer.
*/
void SysTick_Handler(void)
{
/* USER CODE BEGIN SysTick_IRQn 0 */
/* USER CODE END SysTick_IRQn 0 */
HAL_IncTick();
/* USER CODE BEGIN SysTick_IRQn 1 */
/* USER CODE END SysTick_IRQn 1 */
}
发现只有一个 HAL_IncTick(); 函数,缺少我们自己重定义的 HAL_SYSTICK_Callback();函数,那么我们把HAL_SYSTICK_Callback();加在SysTick_Handler()函数里即可。
例如:
/**
* @brief This function handles System tick timer.
*/
void SysTick_Handler(void)
{
/* USER CODE BEGIN SysTick_IRQn 0 */
/* USER CODE END SysTick_IRQn 0 */
HAL_IncTick();
/* USER CODE BEGIN SysTick_IRQn 1 */
HAL_SYSTICK_Callback();
/* USER CODE END SysTick_IRQn 1 */
}
这个时候下载工程至单片机,进入调试模式发现HAL_SYSTICK_Callback();已经在实时被调用了~~~
至此解决了HAL_SYSTICK_Callback();函数没有被调用(执行)的问题。
一周热门 更多>