stm32串口接收数据存放数组的困惑

2019-07-21 05:02发布

如题,想通过串口发送字符串存在数组里面,然后在串口助手上打印出来,一开始计数值没有清零导致数据总是会被覆盖,调试了好久终于搞定,但是我在仿真窗口 观察数组数据发现了问题,数据并没有存放在数组里面,而是每个字符轮流存在了数组首地址,而且打印数组大小的确只有首地址有,这样子本来是要对数据进一步 处理的现在没法进行,向诸位请教下,问题出在哪里?代码如下,貌似count++,没有什么作用

[mw_shl_code=c,true]void USART1_IRQHandler(void) { u8 RxSize=0,RxCount=0; if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) { USART_ClearITPendingBit(USART1,USART_IT_RXNE); RxBuf[RxCount++] = USART_ReceiveData(USART1); } RxSize=RxCount; USART_ClearFlag(USART1,USART_FLAG_TC); for(RxCount=0;RxCount<RxSize;RxCount++) printf("%c",RxBuf[RxCount]); }[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
xiaotianst
2019-07-22 03:55
回复【8楼】joe_knight:
---------------------------------
恩,C语言是学的不怎么好,后来想了想。的确程序逻辑上是有问题,但是好像硬件上也不对,向串口发送字符串的时候,串口是接收到一个字符就进入一次中断,那么字符串末尾的还发不发过去呢,后来我修改了程序,对检测,作为字符串接收完成标志,发现进不去,好像并不会发送,所以需要自己定义一个帧尾的识别符。修改程序如下
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
RxBuf[RxCount]=USART_ReceiveData(USART1);
}
  if(RxBuf[RxCount]==' ')
{
RxSize=RxCount;
printf("RxCount=%d ",RxCount);
RxCount=0;
// printf("RxCount=%d ",RxCount);

printf("RxSize=%d ",RxSize);

}
else 
{
// printf("RxCount=%d ",RxCount);
RxCount+=1;

}
所以现在想请教下,向串口发送字符串的时候,会不会发过去?

一周热门 更多>