STM32中断接收的数据

2019-03-23 18:42发布

STM32中断接收数据放到数组里面,再对数组进行分段处理,把不同的字符串发到串口屏的相应位置去,为何数据无法更新呢?? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
forisigang
2019-03-24 05:20
yl20084784 发表于 2015-3-2 20:42
代码都没贴上来...怎么分析?自己仿真看看

void USART2_IRQHandler(void)
{                  
        if(USART_GetITStatus(USART2,USART_IT_RXNE) != RESET)
        {
                uint8_t data_2=USART_ReceiveData(USART2);
                Rx_Buffer[Rx_Counter++]=data_2;
             if(Rx_Counter>=Len)
                {
                Rx_Counter=0;
                }
        }
}
void UpDate(void)
{       
    uint8_t *dest[4];
    uint16 i,num=0;
        uint8_t src[Len];
                                   //判断第一个字符是否正确
        for(i=0;i<Len;i++)
        {
    if(Rx_Buffer[0]=='T')
        src=Rx_Buffer;
        }
    split(src," ",dest,&num);           //分割字符串src
        GetScreen();                         //获取文本ID                                                                                                                                                                                                                                                                                                                                                  
    if(current_screen_id ==1)      //文本
    {   
         SetTextValue(1,1,dest[0]);  //发送到屏上
//         SetTextValue(1,2,dest[1]);
//         SetTextValue(1,6,dest[2]);
//       SetTextValue(1,7,dest[3]);
    }
}

void split(uint8_t *src,const uint8_t *separator,uint8_t **dest,uint16 *num)
{
    uint8_t *pNext;
    uint16 count = 0;
    pNext =strtok(src,separator);

    while(pNext!=NULL)
    {
       *dest++ = pNext;
        count++;
        pNext =strtok(NULL,separator);
    }

    *num = count;
}

SetTextValue(1,1,dest[0]);  //发送到屏上这个可以正常更新数据,过以后就屏上数据就不动了,要是同时发         SetTextValue(1,1,dest[0]);  
SetTextValue(1,2,dest[1]);SetTextValue(1,6,dest[2]);
   SetTextValue(1,7,dest[3]);//发送到屏上,数据在屏上不更新,这是为何呢,大神帮忙看下啊???

一周热门 更多>