微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > cc2530 485

cc2530 485

时间:10-02 整理:3721RD 点击:


 
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个字节的数组,在程序分布调试中,只能接受到最后一个字节。中断也就进入一次

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top