lpc2146 串口程序

 

void __irq IRQ_UART0(void)
{
 uint32 receivebuf,uartiir;
 
 usart0_timer_update=0x01;     // 置位更新时间标志 
 uartiir=U0IIR&0x0f;     // 取得中断标志
 if (uartiir==0x04)     // 接收到数据标志
 {
     receivebuf=U0RBR;    // 串口数据读到临时变量备用
     if (usart0_receive_boot)  // 已经收到帧头
     {
      command_buffer[usart0_receive_num]=receivebuf;
      if  (usart0_receive_num==0)    // 接收的是长度
       usart0_receive_len=receivebuf;
      else         // 接收的是数据及校验
      {
       if (usart0_receive_num==usart0_receive_len) 
       {
        usart0_receive_ok_set;   // 接收数据完成
        U0IER=0x00;      // 关闭接收中断,等发送完或出错再开
       } 
      }
      ++usart0_receive_num;
     }
     else          // 帧头还没收到
     {
      if (receivebuf==RECEIVE_BOOT_CODE)  // 是帧头
      {
       usart0_receive_boot_set;   // 置位帧头标志
       usart0_receive_num=0;    // 初始化接收指针
       usart0_receiving_set;    // 置位正在接收数据
      } 
     }
 }    
 VICVectAddr = 0x00;        // 中断处理结束
}
 

 

只发了个串口中断的处理函数,比较简单,不全法了 呵呵

 

你可能感兴趣的:(timer,command,buffer)