码迷,mamicode.com
首页 > 其他好文 > 详细

串口传输数据发生错误的原因

时间:2015-08-04 10:51:33      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:

问题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会不断中断的原因尚不清楚。

但这个问题告诉我们,如果使用库函数,一定要保证它的参数没有任何问题,对于我们自定义的函数也是一样。

 

串口传输数据发生错误的原因

标签:

原文地址:http://www.cnblogs.com/xye2015/p/4701045.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!