打印
[STM32]

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

[复制链接]
2297|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 | 只看该作者
我改过来了 和那没关系  还是不行

使用特权

评论回复
5
ayb_ice| | 2013-8-29 10:23 | 只看该作者
本帖最后由 ayb_ice 于 2013-8-29 10:25 编辑

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

比如:
'1' = ON,
'0' = OFF

使用特权

评论回复
6
chenluck| | 2013-8-29 11:42 | 只看该作者
首先识别串口收到2BYTE,然后再进行判读,判读要请除标记重新接收的

使用特权

评论回复
7
ipman| | 2013-9-14 20:28 | 只看该作者
建议不要在接收中断做任何动作, 将数据保存在fifo中,在main进程中用状态机polling,这个问题应该是处理逻辑出错

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

1

粉丝