我使用的是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的例程了,去哪里找这个例程呐?