CC2530串口

来源:互联网 发布:软件开发工程师月薪 编辑:程序博客网 时间:2024/04/28 13:39

         2530有两个USART口,每个USART口都有两个位置可选择,以USART0为例,位置1用的是P0端口(P0_2(RX)、P0_3(TX)),位置2用的是P1端口(P1_5(TX)和P1_4(RX))。每个USART口都可以选择为USART和SPI功能,由U0CSR.MODE控制,当U0CSR.MODE=1时,即为USART模式。每个串口都由四根线组成,TXD、RXD、CTS(硬件刘控制相关)、RTS(硬件流控制相关),其中的RXD和TXD是最主要的(通常都是两线模式),CTS和RTS选用(四线模式)。USART0有两个中断,发送完成中断(数据传输开始时触发)和接收中断,IEN0寄存器的URX0IE位置1,则使能接收中断,而发送中断的使能位在IEN2中(UTX0IE)。如果是接收中断,在IEN0中设置了中断使能之前,还必须设置U0CSR(USART0控制寄存器)的U0CSR.RE位(接收器使能),注意在USART完成设置完成前,不能使能接收。我用的是USART0,P1_4和P1_5引脚,只使用接收中断,完成的功能是接收到PC传来的字符之后再回传给PC,并且显示出来。最简单的一个USART初始化流程就是,先选择功能引脚(P1SEL |= (1<<4)&&(1<<5)),其次选择USART口的位置(PERCFG |= (1<<0)),然后是波特率的设置(可参考数据手册,我用的是9600,U0BAUD=59;U0GCR=8),接着就可以使能USART端口功能和接收中断了(U0CSR |= 0xC0;IEN0 |= (1<<2)),最后记得开全局总中断(EA=1;)。

           

void Uart0Init(void)
{
  //设置P0.2与P0.3时用
  //     P0SEL |=   0x0C;                                 //初始化UART0端口,设置P0.2与P0.3为外部设备IO口
  //     PERCFG&= ~0x01;                                  //选择UART0为可选位置一,即RXD接P0.2,TXD接P0.3

   P1SEL |= (1<<4)|(1<<5); //初始化UART0端口,设置P1.4与P1.5为外部设备IO口
   PERCFG|= (1<<0);                                   //选择UART0为可选位置2,即RXD接P1.4,TXD接P1.5

  
 
   U0GCR = 8;
   U0BAUD = 59;                                      //设置UART0波特率为2400bps
   U0CSR = 0xC0;                                      //设置为UART模式,并使能接受器
   IEN0 |=0x04; //使能接受中断
   EA=1;
}

 

/*UART0接收中断
-------------------------------------------------------*/
void Uart0Receive_Interrupt(void) interrupt URX0_VECTOR
{

   EA=0;
   TCON &= ~0x08;//清接收标志
 
   temp=U0DBUF;
  U0DBUF=temp;
   EA=1;

}

 

原创粉丝点击