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条回答
正点原子
1楼-- · 2019-07-21 10:46
你得明白局部变量的特性。
就知道为什么了。
xiaotianst
2楼-- · 2019-07-21 11:16
 精彩回答 2  元偷偷看……
正点原子
3楼-- · 2019-07-21 14:24
回复【3楼】xiaotianst:
---------------------------------
你自己看代码,哪里是静态?
xiaotianst
4楼-- · 2019-07-21 17:08
回复【4楼】正点原子:
---------------------------------
搞错了,不是叫静态,extern声明了全局变量,为什么字符串只存放在数组首地址呢?而且明明是存完才打印的,现在看来是存一个字符就退出再进中断了
LuoKen
5楼-- · 2019-07-21 17:08
回复【5楼】xiaotianst:
---------------------------------

恕我愚钝:
1. USART1_IRQHandler,是每次接收1个字节后 或者 每次发送1个字节后,就进去这个中断函数执行一次。
2. 那么,你每次执行这个函数时,都会把RxSize和RxCount都赋值为0。
3. 所以,你只会输出1个字符。
xiaotianst
6楼-- · 2019-07-21 19:16
回复【6楼】LuoKen:
---------------------------------
恩,那么如何才能接受整个字符串呢,求不吝赐教,想的头痛,如果counter不清零会导致受到的是乱了,而且size也一直在增加

一周热门 更多>