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

CC2530 UART1 的问题

我使用的是CC2530F256 的芯片,写了一个小程序想测试一下串口的功能。我们的板子目前连的是P1_6 as TX ,P1_7是RX. 根据文档可知P1_6,P1_7时UART1的Alt2的位置来配置。程序如下。但是程序运行了以后,用示波器没有发现任何输出,不知道什么原因。请教各位专家。

#include "ioCC2530.h"
#include <string.h>

#define uchar unsigned char
#define uint  unsigned int

#define led1 P0_0

void delayms(uint ms);              
void ledInit();                      
void uartInit();                     
void uartSend(char *Data, int len);  

uchar RXTXflag = 1;                  
char  temp;                          
uchar datanumber = 0;                
char  Rxdata[12] = { '0','1','2','3','4','5','6','7','8','9' };                   

/***********************************

***********************************/
void delayms(uint ms)
{
  int i, j;
  for(i=ms; i>0; i–)
    for(j=1156; j>0; j–);
}

/***********************************

***********************************/
void ledInit()
{
  P0SEL &= ~0x01;  //set as general I/O
  P0DIR |= 0x01;   //set as output
  P0INP &= ~0x01;  //set pull-up pull-down mode   led1 = 0;
}

/***********************************

***********************************/
void uartInit()
{
   CLKCONCMD &= ~0x40;        //设置时钟源32MHz晶振  
  while(!(SLEEPSTA & 0x40)); //等待晶振稳定为32MHz  
  CLKCONCMD &= ~0x07;        //设置系统主频为32MHz   
  //CLKCONCMD |= 0x30;          // time1的定时时钟为 500KHz   
  SLEEPCMD  |= 0x04;          //关闭不用的RC振荡器    
    //
  PERCFG &= ~0x02;            //set USART1 Alt2
  P1SEL  |=  0xc0;            //P1_7、P1_6 used as UART
  P1DIR  &=  ~0x80;             //P1_7 as input and P1_6 as output
 // P2DIR  &= ~0x80;            // the frist priority is UART1
  P2SEL &= ~ 0x20;
  P2SEL |= 0x40;
   //
  U1CSR  |= 0x80;              //set UART mode
  U1UCR   = 0x02;
  U1GCR  |= 10;                //set BPS 38400
  U1BAUD |= 59;               //
  UTX1IF  = 0;                 //UART1 TX interrupt
  U1CSR  |= 0x40;              //enable UART1 TX
  IEN0   |= 0x88;              //Enable Interrupt
  IEN2   |= 0x08;
 }

/***********************************

***********************************/
void uartSend(char *Data, int len)
{
  int j;
  for(j=0; j<len; j++)         //
  {
    U1DBUF = *Data++;          //
    while(UTX1IF == 0);        //
    UTX1IF = 0;                //
  }
}

/***********************************

***********************************/
void main()
{
  //
  ledInit();
  uartInit();
#if 1
 
  datanumber = 12;
   while (1)
  {
      U1CSR &= ~0x40;          //disable receive
      uartSend(Rxdata, datanumber); //
      RXTXflag = 1;            //
      //datanumber = 0;          //
  }
#endif
 
}

/***********************************
UART1接收中断
***********************************/
#pragma vector = URX1_VECTOR
__interrupt void UART1_ISR(void)
{
  URX1IF = 0;    //清中断标志
  temp = U1DBUF; //读取缓冲中的数据
}

Viki Shi:

官方的IO例程测试过吗?是否正常?

frank li5:

回复 Viki Shi:

请问官方IO例程是指TI官网的CC2530-Software Examples (Rev. B)  (ZIP 505 KB ) 吗?

Viki Shi:

回复 frank li5:

对,里面有IO例程

frank li5:

回复 Viki Shi:

这里面有三个例子, light_switch, per_test, spectrum_analyzer. 哪个是I/O例程? 另外,z-stack Mesh1.0.0下面是不是没有SerialApp的例程了,去哪里找这个例程呐?

赞(0)
未经允许不得转载:TI中文支持网 » CC2530 UART1 的问题
分享到: 更多 (0)