串口通信问题求解

2019-08-14 04:49发布

本帖最后由 zzp941010 于 2017-8-29 11:50 编辑

我在做一个项目的时候需要两块板子通过485进行串口通信,用于接收的板子需要在收到0x01后将接下来的八个字节数据放入数组,请问论坛各位大牛需要怎样写中断处理函数,新人小白在此谢过啦。我尝试着写了一下但是功能没有实现,程序如下






中断处理 中断处理
各位有经验的或者有想法的前辈帮忙给点建议吧@正点原子
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
zzp941010
1楼-- · 2019-08-14 20:33
目前调试到这一步
huanghan
2楼-- · 2019-08-15 00:44
本帖最后由 huanghan 于 2017-8-30 08:06 编辑

如果你的串口配置没问题,这样就可以实现 static u8 flag=0;
u8 buffer[9]={0};
u8 Rxbuffer[8]={0};
u8 Res=0;
void USART1_IRQHandler(void)
{

  if(USART_GetITSatus(USART1,USART_IT_RXNE)!=RESET)
  {
          buffer[flag]=USART_ReceiveData(USART1);
         if(buffer[0]==0x01)
          {
               Res++;
          }
          else Res=0;      
   }

  if(Res==9)
  {
    flag=1;
     if(buffer[0]==0x01)
      {
        for(Res=0;  Res<8;  Res++)
         {
           Rxbuffer[Res] =buffer[flag]
           flag++;
          }
       }
     flag=0;
     Res=0;

   }
   USART_ClearITPendingBit(USART1, USART_IT_RXNE);
  }
}
820726128
3楼-- · 2019-08-15 05:36
按2楼的说法做就行了,flag,flag_begin加static,然后在flag_begin清零后,把flag也清零。不过我有个问题就是buffer这个数组你怎么传出去??
zey
4楼-- · 2019-08-15 09:10
 精彩回答 2  元偷偷看……

一周热门 更多>