如何使用 UART1 作为上位机控制串口
( Pual Lin )
NXP 提供的 Coordinator 例程中都是以 UART0 作为串口接收,即上位机 GUI 软
件通过 UART0 来对 Dongle 进行命令控制。如果我们想使用 UART1 来作为串口接收,
就需要在程序中做出如下改动,下面以 JN-AN-1216-Zigbee-3-0-IoT-ControlBridge 例
程为例。
1、 编辑文档 irq_JN516x.S,
PIC_ChannelPriorities:
.byte 0 # pwm1 priority
.byte 0 # pwm2 priority
.byte 0 # system controller priority
.byte 7 # MAC priority
.byte 0 # AES priority
.byte 0 # PHY priority
.byte 5 # uart0 priority
.byte 5 # uart1 priority
.byte 0 # timer0 priority
.byte 0 # spi slave priority
.byte 0 # i2c maste/slave priority
.byte 0 # spi master priority
.byte 0 # pwm4 priority
.byte 0 # analog peripherals priority
.byte 0 # pwm3 priority
.byte 15 # tick timer priority
2、 编辑文档 Makefile,
添加 CFLAGS += -DUART=1
3、 编辑 uart.c,
PUBLIC void UART_vInit(void)
{
………………………
#if (UART == E_AHI_UART_0)
vAHI_UartSetRTSCTS(UART, TRUE);
#endif
………………………
}
PUBLIC void UART_vRtsStopFlow(void)
{
#if (UART == E_AHI_UART_0)
vAHI_UartSetControl(UART, FALSE, FALSE, E_AHI_UART_WORD_LEN_8,
TRUE,
E_AHI_UART_RTS_HIGH);
#endif
}
PUBLIC void UART_vRtsStartFlow(void)
{
#if (UART == E_AHI_UART_0)
vAHI_UartSetControl(UART, FALSE, FALSE, E_AHI_UART_WORD_LEN_8,
TRUE,
E_AHI_UART_RTS_LOW);
#endif
}
PUBLIC void UART_vTxChar(uint8 u8Char)
{
while ( !UART_bTxReady () && !( u8AHI_UartReadLineStatus ( UART
) & E_AHI_UART_LS_TEMT ) );
vAHI_UartWriteData(UART, u8Char);
while ( !UART_bTxReady() && !( u8AHI_UartReadLineStatus ( UART
) & E_AHI_UART_LS_TEMT ) );
}