STM32
直播中

笔画张

12年用户 926经验值
私信 关注
[问答]

stm32通过串口发送字符串存在数组里面遇到的疑问求解

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


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

回帖(1)

陈茗卓

2024-5-14 09:11:22
这段代码有很多问题:
     1.下面这段代码:
         RxSize=RxCount;
         USART_ClearFlag(USART1,USART_FLAG_TC);
        for(RxCount=0;RxCount          printf("%c",RxBuf[RxCount]);
        这段代码是在串口1的中断函数里吗?如果是,那么每次接收中断都会执行这段代码,所以,你看到接收到的字符只存在字符串的首地址就是对的;因为每收到一个数据,他就会打印出去,同时RxCount就会清零。也就是 你每次接收到的数据都是第一个数据。
      
        2.RxCout这个变量是局部动态变量,退出中断函数后就消失了,所以你每次进入中断函数,RxCount都会重新定义并赋值为0 。那么你调试看到的现象也可以解释了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分