1、keil Debug的时候切记把优化等级改为0
因为不调为0的话,单步调试的时候会出现迷惑性的现象,箭头表面上会出现不按照我们代码逻辑那样跳转。但是实际上他又是按照我们写的代码逻辑执行的。
2、定时器中断STM32CubeMX配置
1)使能中断切记呀)
2)在定时器初始化函数中手动添加中断初始化函数:
HAL_TIM_Base_Start_IT(&htim2);//以tim2为例
3)就是写回调函数了,回调函数包括:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);//更新中断
void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim);//输出比较
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim);//输入捕获
void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim);//触发中断
当我们使能了定时器中断,就会在stm32f1xx_it.c下生成函数:
void TIM2_IRQHandler(void) /*以tim2为例*/
{
/* 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 */
}
3、Library reports error: __use_no_semihosting was requested, but _ttywrch was referenced
出现这个原因是KEIL没有勾选 Use MicroLIB,勾选即可