This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2530使用Z-Stack Home 1.2.0协议栈,串口数据错乱问题

Other Parts Discussed in Thread: Z-STACK, CC2538, CC2530

求高手指点迷津!
在使用  Z-Stack Home 1.2.0--2530协议栈定义串口功能时,经常出现串口打印乱码,

搞了好久了都不知道是怎么回事。

在Option的定义如下:

FEATURE_GREEN_POWER

SECURE=0
xTC_LINKKEY_JOIN
xNV_INIT
NV_RESTORE
xPOWER_SAVING
NWK_AUTO_POLL
xHOLD_AUTO_START
xZTOOL_P1
MT_TASK
MT_APP_FUNC
MT_SYS_FUNC
MT_ZDO_FUNC
xLCD_SUPPORTED=DEBUG
ZCL_READ
ZCL_WRITE
ZCL_REPORT
xZCL_EZMODE
ZCL_BASIC
xZCL_IDENTIFY
ZCL_DOORLOCK
ZCL_SCENES
ZCL_GROUPS
xHAL_UART_DMA
HAL_UART=TRUE
xHAL_DMA=0


由于工程问题:本工程是与CC2538通信的,,我尝试过去掉MT_TASK定义,但是编译就会出错,在编译过程中我曾多次想用选择中断方式处理串口数据,但是却一直编译不过,所以一直在DMA模式下工作,并一直出现串口打印乱码。


在多次调用MT_UART层代码测试还是出现问题的情况下,添加了下面部分代码也是同样出错:

void rxCB( uint8 port, uint8 event )
{

// extern uint8 SampleApp_TaskID;
unsigned char flag=0;
uint16 j=0;
rxlen=Hal_UART_RxBufLen(0);
while (Hal_UART_RxBufLen(0)) //检测串口数据是否接收完成
{
HalUARTRead (0,&bflds[j], 1); //把数据接收放到buf中
j++; //记录字符数
flag=1; //已经从串口接收到信息
}
if(flag)
{
flag=0;
HalUARTWrite( 0, &bflds[0], j);
osal_memcpy(&bflds[0],0,j);
j=0;
}
}

void Tq_uartInit(void)
{
halUARTCfg_t uartConfig;

/* UART Configuration */
uartConfig.configured = TRUE;
uartConfig.baudRate = MT_UART_DEFAULT_BAUDRATE;
uartConfig.flowControl = FALSE;
uartConfig.flowControlThreshold = MT_UART_DEFAULT_THRESHOLD;
uartConfig.rx.maxBufSize = MT_UART_DEFAULT_MAX_RX_BUFF;
uartConfig.tx.maxBufSize = MT_UART_DEFAULT_MAX_TX_BUFF;
uartConfig.idleTimeout = MT_UART_DEFAULT_IDLE_TIMEOUT;
uartConfig.intEnable = TRUE;

uartConfig.callBackFunc = rxCB;

HalUARTOpen (0, &uartConfig);
}

总结:求高手百忙中抽空看下是什么原因,帮忙解决下问题,感激不尽!羊年大吉!