OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2528|回复: 7

串口进中断但是不判断?

[复制链接]

7

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2017-5-6
在线时间
18 小时
发表于 2017-10-10 14:01:15 | 显示全部楼层 |阅读模式
10金钱
u8 buffer[3]; //¶¨òå′®¿ú»o3å½óêÕêy×é
u8 rec_flag=0; //¶¨òå′®¿ú½óêÕ±êÖ¾
void USART1_IRQHandler(void)                        //′®¿ú1ÖD¶Ï·tÎñ3ìDò
        {
        u8 Res;
                static u8 i;
       
       
//  if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE)==1)
                if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
  {
    GPIO_ResetBits(GPIOC, GPIO_Pin_0);
//                Res =USART_ReceiveData(USART1);
               
                USART_ClearFlag(USART1,USART_FLAG_RXNE);
//                USART_SendData(USART1,Res);
               
    if(rec_flag==0)
    {
//                        USART_SendData(USART1,rec_flag);
//                        GPIO_ResetBits(GPIOC, GPIO_Pin_1);
      if(USART_ReceiveData(USART1)==0xff)
      {
                                GPIO_ResetBits(GPIOC, GPIO_Pin_1);
        rec_flag=1;       
//                                USART_SendData(USART1,rec_flag);
        i=0;

      }                       
    }
    else
    {
      if(USART_ReceiveData(USART1)==0xff)
      {
        rec_flag=0;       
//                                USART_SendData(USART1,rec_flag);
                               
        if(i==3)
        {
//          Communication_Decode();               
                                        if(buffer[0]==0x00)//êÖ¶ˉ¿ØÖÆ
         {
//        GPIO_SetBits(GPIOC,GPIO_Pin_0);
        
         switch(buffer[1])
           {
            case 0x01:GPIO_ResetBits(GPIOC, GPIO_Pin_1);break;//ǰ½ø

            }
         }
        }
        i=0;
      }
      else
      {
        buffer=USART_ReceiveData(USART1);
        i++;
      }
    }               
  }
  else
  {
    USART_ClearFlag(USART1,USART_FLAG_LBD);
  }       
[/mw_shl_code]

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2017-5-6
在线时间
18 小时
 楼主| 发表于 2017-10-10 14:18:17 | 显示全部楼层
1.png 我用串口助手发送16进制指令FF000200FF,然后单片机用串口中断接受这段指令,现在我用led灯来调试是否接受到指令,中断可以进去,并执行到判断标志位哪里,但是往下就不执行了,第一个FF不判断了



回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7549
金钱
7549
注册时间
2016-11-30
在线时间
642 小时
发表于 2017-10-10 15:03:07 | 显示全部楼层
USART_ClearFlag(USART1,USART_FLAG_RXNE);这句不需要
回复

使用道具 举报

7

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2017-5-6
在线时间
18 小时
 楼主| 发表于 2017-10-10 15:50:40 | 显示全部楼层
是这个问题导致的吗,我回去试试
回复

使用道具 举报

4

主题

349

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1046
金钱
1046
注册时间
2017-5-19
在线时间
335 小时
发表于 2017-10-10 15:51:54 | 显示全部楼层
那你看看到底收到的是什么?
回复

使用道具 举报

7

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2017-5-6
在线时间
18 小时
 楼主| 发表于 2017-10-11 13:48:59 | 显示全部楼层
怎么看看收到的是啥啊
回复

使用道具 举报

7

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2017-5-6
在线时间
18 小时
 楼主| 发表于 2017-10-11 13:55:24 | 显示全部楼层
wxjhby 发表于 2017-10-10 15:51
那你看看到底收到的是什么?

用两个函数就可以吗
Res =USART_ReceiveData(USART1);
               
USART_SendData(USART1,Res);不管串口助手发送啥,单片机就发送啥吗,
               
回复

使用道具 举报

7

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2017-5-6
在线时间
18 小时
 楼主| 发表于 2017-10-16 16:08:38 | 显示全部楼层
没人解答一下
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 10:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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