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

CC2530串口0异常

CC2530 zstack 3.0.2 用的是串口0,P0.2和P0.3脚

P0.4和P0.5作为LED的控制,测试时发现P0.5接的LED灯在串口来数据的时候会闪一下

这是为什么?MT_UART_DEFAULT_OVERFLOW 已经设为FLASE了

预编译里

ZTOOL_P1
MT_TASK

串口的初始化如下,

void initUart0()
{
halUARTCfg_t uartConfig;
/* Initialize APP ID */
App_TaskID = 0;
uartConfig.configured = TRUE;
uartConfig.baudRate = HAL_UART_BR_9600;
uartConfig.flowControl = FALSE;
uartConfig.flowControlThreshold = 0;
uartConfig.rx.maxBufSize = 128;//默认128;
uartConfig.tx.maxBufSize = 128;//默认128;
uartConfig.idleTimeout = 6;//默认6
uartConfig.intEnable = FALSE; uartConfig.callBackFunc = uartRxCb;
HalUARTOpen (HAL_UART_PORT_0, &uartConfig);
}

Viki Shi:

这里有一个串口的例子,供参考:e2echina.ti.com/…/175480

user5367314:

回复 Viki Shi:

串口使用是没问题的,只是P0.5脚作为IO使用,连的是LED,
在串口接收数据的时候LED会闪烁,MT_UART_DEFAULT_OVERFLOW 已经设为FLASE

YiKai Chen:

回复 user5367314:

查查U0UCR/P0SEL/P0DIR的設置

user5367314:

回复 YiKai Chen:

这些都是3.0.2协议栈light例程默认的,我没动过,只是改了MT_UART_DEFAULT_OVERFLOW 为FLASE,
现在的情况只要串口不接收数据的时候,P0.5可以正常控制LED,串口来数据的时候,P0.5连的灯就会闪一下,
然后P0.5又是正常的,可以控制LED的亮灭

YiKai Chen:

回复 user5367314:

請先查U0UCR/P0SEL/P0DIR的設置

user5367314:

回复 YiKai Chen:

U0UCR/P0SEL/P0DIR的設置如下,是否有问题?串口用的串口0的接收引脚P0.2(只接收,无需发送)
P0.3,P0.4,P0.5作为普通IO去控制LED
static void HalUARTInitDMA(void)
{
……
PxSEL|= HAL_UART_Px_RX_TX;// Enable Tx and Rx on P1.
……
UxUCR = UCR_FLUSH;// Flush it.
……
}

static void HalUARTOpenDMA(halUARTCfg_t *config)
{
……if (config->flowControl){UxUCR = UCR_FLOW | UCR_STOP;PxSEL |= HAL_UART_Px_CTS;PxDIR |=HAL_UART_Px_RTS;
……}else{UxUCR = UCR_STOP;}
……
}
static void HalUARTResumeDMA( void )
{
……UxUCR |= UCR_FLUSH;
……
}

YiKai Chen:

回复 user5367314:

我指調試一下程序,在你程序跑起來看到問題的時候暫停下來看一下暫存器U0UCR/P0SEL/P0DIR的內容為何?

user5367314:

回复 YiKai Chen:

下面三个函数会调用P0.5脚,导致P0.5拉低之后串口一来数据就拉高,屏蔽下面的PxOUT代码问题解决,是否会出现其他问题?
HalUARTSuspendDMA函数
PxOUT |= HAL_UART_Px_RTS;// Disable Rx flow.

HalUARTPollDMA函数
PxOUT |= HAL_UART_Px_RTS;// Disable Rx flow.

HalUARTReadDMA函数
PxOUT &= ~HAL_UART_Px_RTS;// 默认 Re-enable the flow on any read.

YiKai Chen:

回复 user5367314:

應該不会出现其他问题

user5710134:

根据你的描述,在设置Uart初始化时,可以采用默认,看看LED是否会闪吗?要是还是闪,说明使能是无效的,再看看手册,使能端的设置。

赞(0)
未经允许不得转载:TI中文支持网 » CC2530串口0异常
分享到: 更多 (0)