TI中文支持网
TI专业的中文技术问题搜集分享网站

cc2530 485

 void SendCahar(unsigned char temp)
{
    U0DBUF = temp;  

}

void main(void)
{
  int j;
   InitUART();
    
  while(1)  {  
    
   ;    if(i==5) _tempRtflag=1;
     
    if(_tempRtflag==1)
    {

          Delay_ms(7);
          P0_1=1;//方向控制
    
      for(j=0;j<i;j++)       {     
          SendCahar(Recdata[j]); //每发送一个字节就产生一次中断,等待发送完成     //UTX0IF为1表示一个字节发送完成,后面就不发送了
       }  
       i=0;
      U0CSR|=0x02;
      
      _tempRtflag=0;

        Delay_ms(10);
       P0_1=0;
     }
    }
}
void InitUART()
{
   //晶振配置
    CLKCONCMD &= ~0x40; //设置系统时钟源为 32MHZ 晶振    while(CLKCONSTA & 0x40); //等待晶振稳定为 32M    CLKCONCMD &= ~0x47; //设置系统主时钟频率为 32MHZ
    //SLEEPCMD |= 0x04;  //关闭不用的RC振荡器

   //I/O口配置
   P0DIR = 0x02;    //485发送接受控制位
   PERCFG = 0x00; //位置 1 P0 口   P0SEL = 0x3c; //P0_2,P0_3,P0_4,P0_5 用作串口,第二功能
   P2DIR &= ~0XC0; //P0 优先作为 UART0 ,优先级 
    
   //串口配置
   U0CSR |= 0x80; //UART 方式   U0GCR |= 10; //U0GCR 与 U0BAUD 配合   U0BAUD |=216; // 波特率设为 57600   
   UTX0IF = 0; //UART0 TX 中断标志初始置位 1 (收发时候)置0表示禁止中断
      
   P0_1=0;     //默认是接受数据
    U0CSR |= 0X40; //允许接收    IEN0 |= 0x84; // 开总中断,接收中断   
   
}

void Delay_ms(unsigned  int xms)   //i=xms  即延时 i 毫秒{ 
  unsigned  int  i,j;  for(i=xms;i>0;i–)      for(j=587;j>0;j–); 
}
void UartSend_String(char *Data, int len){     int j;
      Delay_ms(7);
     P0_1=1;
    for(j=0;j<len;j++)     {       
       U0DBUF = *Data++;  
       while(!UTX0IF); //每发送一个字节就产生一次中断,等待发送完成     //UTX0IF为1表示一个字节发送完成,后面就不发送了
        UTX0IF = 0;
     }  
    
      Delay_ms(20);
     _temptxflag=0;
     
     RS485_TX_EN=0;
    
}

#pragma vector = URX0_VECTOR __interrupt void UART0_ISR(void)               //接受完成后,进行数据发送,发送完成在尽心接受
 {     
 
      temp=U0DBUF;          URX0IF = 0;
        Recdata[i++]=temp;
   }

串口助手发送5个字节的数组,在程序分布调试中,只能接受到最后一个字节。中断也就进入一次

VV:

串口助手的配置和CC2530的配置一样么?

赞(0)
未经允许不得转载:TI中文支持网 » cc2530 485
分享到: 更多 (0)