bug反馈~!zigbee栈2.5.1a中SerialApp运行不了
TI:
你好,这几天调试串口,死活调不通,
受不了,参考贵公司的SerialApp,在IAR中运行发现串口也不通
说说我的情况与做的实验
1. 我的机器win7 x64 旗舰版,IAR 8.10.1,zigbee栈2.5.1a,跑我自己的程序,CC2530串口可以接收数据,但是不能输出数据(管脚处示波器没有波形),但是HalUARTWrite函数的返回值是对的,之后在代码中插入死循环,一直执行,串口的初始化,宏定义全部都是抄自SerialApp
temp_len+= HalUARTWrite(SERIAL_APP_PORT, p, sizeof(ss);发现temp_len每次返回值都是对的,temp_len最大到128就不增长了,
2.在同样的机器,(win7 x64 旗舰版,IAR 8.10.1,zigbee栈2.5.1a),跑SerialApp,HalUARTWrite同样没法输出,插入同样的死循环,结果一样temp_len到128就不涨了,示波器上什么波形都没有
3.在VMware Workstation运行win xp 32位,IAR 7.51a,zigbee栈2.2.2-1.3.0,SerialApp完美运行,HalUARTWrite()函数执行时,示波器有波形,电脑上显示串口读到的值也对
4.在(win7 x64 旗舰版,IAR 8.10.1),没有zigbee环境,写了段小代码,运行成功,CC2530串口输出到电脑完全正确
//代码如下
void initUARTtest(void)
{
CLKCONCMD &= ~0x40;
while(!(SLEEPSTA & 0x40));
CLKCONCMD &= ~0x47;
SLEEPCMD |= 0x04;
PERCFG = 0x00;
P0SEL = 0x3c;
U0CSR |= 0x80;
U0GCR |= 10;
U0BAUD |= 216; //波特率设为57600
UTX0IF = 1;
U0CSR |= 0X40; //允许接收
IEN0 |= 0x84; //开总中断,接收中断
}
void UartTX_Send_String(uchar *Data,int len)
{
int j,k;
for(j=0;j<len;j++)
{
U0DBUF = *Data++;
while(UTX0IF == 0);
UTX0IF = 0;
}
}
void main(void)
{int k;
initUARTtest();
while(1)
{UartTX_Send_String(Recdata,6);
for(k=0;k<255;k++)
{Delay(255);
}}}
5.同样的代码放在(win7 x64 旗舰版,IAR 8.10.1,zigbee栈2.5.1a,),中单步调试,执行到语句 U0DBUF = *Data++;CC2530没有发出波形
6.多次重复试验4与5,发现试验4在执行到U0DBUF = *Data++,时候UTX0IF会变到1,而试验5在执行到U0DBUF = *Data++;时候UTX0IF不会变化,
补充试验 (win7 x64 旗舰版,IAR 8.10.1,跑zigbee栈2.2.2-1.3.0的SerialApp,同样是HalUARTWrite返回值正确,但是串口就是没有波形输出,编译的时候会有非常多的警告,
IAR 编译器的问题?