[STM32] 串口发数据 数组以0x00结尾的问题

[复制链接]
2667|6
 楼主| 10157969 发表于 2013-8-28 14:09 | 显示全部楼层 |阅读模式
本帖最后由 10157969 于 2013-8-29 10:01 编辑

假设我想给串口发一组数据 01 00控制灯亮, 01 01控制灯灭,  串口数据通过中断存在数组RX1[]里。我判断一下数组里是否有 01 00 如果有灯亮 ,如果有01 01 灯灭。
eg:if((RX1[0]==0x01)&&(RX1[1]==0x00))
    {
     LED0=0;  //LED亮
   }
else if((RX1[0]==0x01)&&(RX1[1]==0x01) )
{
    LED0=1;   //LED灭
}
这样为什么 不可以?  但是将00改成02等等不是00结尾的就能用或者00在中间就可以例如01 00 02(当然上面的程序就改成比较三个数了) ,这是临时写的小程序,希望你明白 谢谢你 帮我看一下  在线等


这个是串口1中断程序
void USART1_IRQHandler(void)
{   
                  
  if(USART_GetITStatus(USART1,USART_IT_RXNE)==SET)
    {         
          USART_ClearITPendingBit(USART1,USART_IT_RXNE);
    RX1[seat1]=USART_ReceiveData(USART1);
          seat1++;
          Uart1_Get_Flag=1;
    }
        
}
andyzhao365 发表于 2013-8-28 14:10 | 显示全部楼层
刘前辈 发表于 2013-8-28 18:26 | 显示全部楼层
本帖最后由 刘前辈 于 2013-8-28 18:28 编辑

笔误?写错了!
if((RX1[0]==0x01)&&(RX1[1])==0x00)
{
}
 楼主| 10157969 发表于 2013-8-29 10:03 | 显示全部楼层
我改过来了 和那没关系  还是不行
ayb_ice 发表于 2013-8-29 10:23 | 显示全部楼层
本帖最后由 ayb_ice 于 2013-8-29 10:25 编辑

简单应用直接用一个字节搞定了

比如:
'1' = ON,
'0' = OFF
chenluck 发表于 2013-8-29 11:42 | 显示全部楼层
首先识别串口收到2BYTE,然后再进行判读,判读要请除标记重新接收的
ipman 发表于 2013-9-14 20:28 | 显示全部楼层
建议不要在接收中断做任何动作, 将数据保存在fifo中,在main进程中用状态机polling,这个问题应该是处理逻辑出错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部