如题,想通过串口发送字符串存在数组里面,然后在串口助手上打印出来,一开始计数值没有清零导致数据总是会被覆盖,调试了好久终于搞定,但是我在仿真窗口
观察数组数据发现了问题,数据并没有存放在数组里面,而是每个字符轮流存在了数组首地址,而且打印数组大小的确只有首地址有,这样子本来是要对数据进一步
处理的现在没法进行,向诸位请教下,问题出在哪里?代码如下,貌似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]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
就知道为什么了。
---------------------------------
你自己看代码,哪里是静态?
---------------------------------
搞错了,不是叫静态,extern声明了全局变量,为什么字符串只存放在数组首地址呢?而且明明是存完才打印的,现在看来是存一个字符就退出再进中断了
---------------------------------
恕我愚钝:
1. USART1_IRQHandler,是每次接收1个字节后 或者 每次发送1个字节后,就进去这个中断函数执行一次。
2. 那么,你每次执行这个函数时,都会把RxSize和RxCount都赋值为0。
3. 所以,你只会输出1个字符。
---------------------------------
恩,那么如何才能接受整个字符串呢,求不吝赐教,想的头痛,如果counter不清零会导致受到的是乱了,而且size也一直在增加
一周热门 更多>