STM32中断接收的数据

2019-03-23 18:42发布

STM32中断接收数据放到数组里面,再对数组进行分段处理,把不同的字符串发到串口屏的相应位置去,为何数据无法更新呢?? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
yl20084784
1楼-- · 2019-03-24 01:28
/ 代码都没贴上来...怎么分析?自己仿真看看
forisigang
2楼-- · 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]);//发送到屏上,数据在屏上不更新,这是为何呢,大神帮忙看下啊???
ienglgge
3楼-- · 2019-03-24 10:56
 精彩回答 2  元偷偷看……
forisigang
4楼-- · 2019-03-24 15:43
ienglgge 发表于 2015-3-2 22:04
首先,你要确认,可以进入中断。看看接收数组的长度是多少。隔一段时间,就在主循环里,打印出接收数组的数据。看看有没有变化。


可以进入中断的,因为发的81个字符,接收的长度我就弄81了,接收的第一串字符发到屏上数据是更新的,再同时多发几串字符到屏上数据就不更新了,

yichun417
5楼-- · 2019-03-24 19:03
真正让你贴代码的人是不会看代码的。也帮你解决不了问题。
zhaojun_xf
6楼-- · 2019-03-24 23:19
 精彩回答 2  元偷偷看……

一周热门 更多>