初中生
最后登录1970-1-1
在线时间 小时
注册时间2022-10-18
|
我发现只要启动了定时器就会卡死主函数。为了确定是定时器的问题,我新建了工程,在while中设定led不断亮灭,通过usart发送一个数值给电脑,用以确定程序能否执行到while。然后我发现只要注释掉HAL_TIM_Base_Start_IT(&htim2),就能执行到while,去掉注释,就会卡死。
为了避免是回调函数写错导致的卡死,新建的工程中我没有重写回调函数,实际上写的所有的代码就仅限于HAL_TIM_Base_Start_IT(&htim2)和while中的几句了。
求回答,到底为什么启动定时器就会卡死,如何解决,如何正确使用定时器呢
复制一段main中代码:
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_I2C1_Init();
MX_TIM2_Init();
MX_USART1_UART_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_Base_Start_IT(&htim2);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
uint8_t dat=0x78;
HAL_UART_Transmit_IT(&huart1,&dat,1);
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
HAL_Delay(500);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
|
|