野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 25916|回复: 4

RFID读取到的信息传到了串口1并且通过lcd显示,通过串口3将数据发送至电脑显示乱码

[复制链接]
发表于 2014-5-14 10:06:37 | 显示全部楼层 |阅读模式
通过串口1已将RFID读取到的信息通过lcd显示,将信息通过串口2或者3将数据发到电脑为什么显示乱码?
中断函数如下:(注:串口3只发送数据到电脑)
void USART1_IRQHandler(void)                                                                            //
{

// if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE)!= RESET)
  if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)                                //
  {       
    USART_ClearITPendingBit(USART1,USART_IT_RXNE);
    RxBuffer[RxCounter++] = USART_ReceiveData(USART1);                                //
        if(RxCounter == 46)                                                                         //èç1û½óêÕêy¾Yá¿μèóú×üêy¾Yá¿
    {       
                flagreceiver = 1;
//                USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);                                  
//          for(i=0; i< RxCounter; i++) TxBuffer[i]=RxBuffer[i];                         //
//            RxCounter = 0;       
    }
                          

  }          

  if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET)                           //
  {   
    USART_SendData(USART1, TxBuffer[TxCounter++]);                                   //                                                                                                                  
    if(TxCounter == 18)                                                           //
    {       
            USART_ITConfig(USART1, USART_IT_TXE, DISABLE);
                USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);       
             flag = 1;                                                  
//                 USART_ITConfig(USART1, USART_IT_TXE, DISABLE);                           //
                 
/*                    GPIO_WriteBit(GPIOA, GPIO_Pin_4, (BitAction)0x01);
                 for(i=0;i<1000000;i++);       
                 GPIO_WriteBit(GPIOA, GPIO_Pin_4, (BitAction)0x00);          */
                 TxCounter=0;                                                                                                   //
    }   
  }         
}
void USART3_IRQHandler(void)                                                                            //
{

// if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE)!= RESET)
  if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)                               
  {       
    USART_ClearITPendingBit(USART3,USART_IT_RXNE);
    RxBuffer[RxCounter++] = USART_ReceiveData(USART3);                               
        if(RxCounter == 46)                                                                         //
    {       
                flagreceiver = 1;
//                USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);                                  
//          for(i=0; i< RxCounter; i++) TxBuffer[i]=RxBuffer[i];                         //
//            RxCounter = 0;       
    }
                          

  }          

回复

使用道具 举报

发表于 2014-5-14 10:07:58 | 显示全部楼层
你发送的这些是16进制数据,要把串口调试助手设置成以16进制显示的
回复 支持 反对

使用道具 举报

发表于 2014-5-14 10:09:47 | 显示全部楼层
看看波特率有没有设置正确,另外看看串口3是用哪个引脚的,可能在板子有复用,通过板子左侧的跳帽可以解除复用
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-14 17:54:34 | 显示全部楼层
void USART1_IRQHandler(void)                                                                            
{
  unsigned int i;
// if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE)!= RESET)
  if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)                       
  {       
    USART_ClearITPendingBit(USART1,USART_IT_RXNE);
    RxBuffer[RxCounter++] = USART_ReceiveData(USART1);               
                USART_SendData(USART3,RxBuffer[RxCounter-1]);
                RxCounter++;
                 while (USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);

        if(RxCounter == 46)                                                                        
    {       
                flagreceiver = 1;
//                USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);                                  
//          for(i=0; i< RxCounter; i++) TxBuffer[i]=RxBuffer[i];                
//            RxCounter = 0;       
    }
                          
  
  }          
中断函数换成这个依旧不行,,,求大神啊啊啊啊啊
回复 支持 反对

使用道具 举报

发表于 2014-5-14 20:06:07 | 显示全部楼层
david52 发表于 2014-5-14 17:54
void USART1_IRQHandler(void)                                                                            
{
  unsigned int i;

一步步来硬件调试,看它接收到的是什么数据,一步步去分析,肯定可以找出来的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 04:47 , Processed in 0.028683 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表