我的项目中使用了UART0的P0口(ZAPP_P1)作为其中一个用途,现在我需要同时使用UART1的P1口(ZTOOL_P2)作为debug的串口,即可以和PC通信的打印口,我按照网络上的方法把UART0设置成DMA方式,UART1设置成ISR方式,修改代码如下:
#if HAL_UART
#ifndef HAL_UART_DMA
#if HAL_DMA
#if (defined ZAPP_P1) || (defined ZTOOL_P1)
#define HAL_UART_DMA 1
#else
#define HAL_UART_DMA 2
#endif
#else
#define HAL_UART_DMA 0
#endif
#endif
#ifndef HAL_UART_ISR
#if (defined ZAPP_P2) || (defined ZTOOL_P2)
#define HAL_UART_ISR 2
#elif (defined ZAPP_P1) || (defined ZTOOL_P1)
#define HAL_UART_ISR 1
#else
#define HAL_UART_ISR 1
#endif
#endif
IAR的option中有ZAPP_P1和ZTOOL_P2选项,我在把两个串口初始化完成后调用HalUARTWrite(HAL_UART_PORT_1, "hello", 5);不成功,PC端没有打印出“hello”,串口初始化代码如下:
void MT_UartInit ()
{
halUARTCfg_t uartConfig;
/* Initialize APP ID */
App_TaskID = 0;
/* UART Configuration */
uartConfig.configured = TRUE;
uartConfig.baudRate = MT_UART_DEFAULT_BAUDRATE;
uartConfig.flowControl = MT_UART_DEFAULT_OVERFLOW;
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 = MT_UartProcessZAppData;
/* Start UART */
HalUARTOpen (ZAPP_PORT, &uartConfig);
/* Initialize for ZApp */
#if defined (ZAPP_P1) || defined (ZAPP_P2)
/* Default max bytes that ZAPP can take */
MT_UartMaxZAppBufLen = 1;
MT_UartZAppRxStatus = MT_UART_ZAPP_RX_READY;
#endif
/* UART1 Configuration */
uartConfig.configured = TRUE;
uartConfig.baudRate = HAL_UART_BR_9600;
uartConfig.flowControl = MT_UART_DEFAULT_OVERFLOW;
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 = MT_UartProcessZToolData;
HalUARTOpen (ZTOOL_PORT, &uartConfig);
}
请问是怎么回事啊?