问题1.
昨天用之前的方法处理好串口发送数据的程序,结果发现发送数据总是会发送错误一些数据,百思不得其解,结果发现是
因为没有给串口转接板提供电源以及没有和单片机共地。
问题2.
char buffer[];
void TIM2_IRQHandler(void)
{
/* USER CODE BEGIN TIM2_IRQn 0 */
time_count++;
// printf("%d\r\n",time_count);
sprintf(buffer,"aaaaaaaaaaaaaasdf%d\r\n",time_count);
buffer[strlen(buffer)]=0;
HAL_UART_Transmit(&huart1,(uint8_t *)buffer,strlen(buffer),10);
/* USER CODE END TIM2_IRQn 0 */
HAL_TIM_IRQHandler(&htim2);
/* USER CODE BEGIN TIM2_IRQn 1 */
/* USER CODE END TIM2_IRQn 1 */
}
发现刚开始一段时间,发送正常,一秒钟进一次中断,但是当time_count大于9的时候,就会不断地进入tim2中断函数,是什么原因的。
后来发现原来是字符串长度超过buffer的定义的长度了,至于为什么TIM2_IRQHandler()函数的参数有问题会导致定时器2会不断中断的原因尚不清楚。
但这个问题告诉我们,如果使用库函数,一定要保证它的参数没有任何问题,对于我们自定义的函数也是一样。
时间: 2024-10-14 07:08:26