zigbee修改协议栈:将uart1的引脚位置2改到位置1

参考http://home.eeworld.com.cn/home.php?mod=space&uid=720038&do=blog&id=726867

默认的zstack协议栈里只支持串口0备用位置1和串口2备用位置2

具体流程:hal_board_cfg.h文件PERCFG |= 0x02;改为PERCFG |= 0x00;

_hal_uart_dma.c文件把HAL_UART_DMA == 2条件下两处宏定义改了如下

//#elif (HAL_UART_DMA == 2)
//#define PxOUT                      P1
//#define PxIN                       P1
//#define PxDIR                      P1DIR
//#define PxSEL                      P1SEL
//#define UxCSR                      U1CSR
//#define UxUCR                      U1UCR
//#define UxDBUF                     U1DBUF
//#define UxBAUD                     U1BAUD
//#define UxGCR                      U1GCR
//#define URXxIE                     URX1IE
//#define URXxIF                     URX1IF
//#define UTXxIE                     UTX1IE
//#define UTXxIF                     UTX1IF
#elif (HAL_UART_DMA == 2)//改uart1的位置2 by 
#define PxOUT                      P0
#define PxIN                       P0
#define PxDIR                      P0DIR
#define PxSEL                      P0SEL
#define UxCSR                      U1CSR
#define UxUCR                      U1UCR
#define UxDBUF                     U1DBUF
#define UxBAUD                     U1BAUD
#define UxGCR                      U1GCR
#define URXxIE                     URX1IE
#define URXxIF                     URX1IF
#define UTXxIE                     UTX1IE
#define UTXxIF                     UTX1IF

/******************************************************************/

//#elif (HAL_UART_DMA == 2)
//#define HAL_UART_PERCFG_BIT        0x02         // USART1 on P1, Alt-2; so set this bit.
//#define HAL_UART_Px_RTS            0x20         // Peripheral I/O Select for RTS.
//#define HAL_UART_Px_CTS            0x10         // Peripheral I/O Select for CTS.
//#define HAL_UART_Px_RX_TX          0xC0         // Peripheral I/O Select for Rx/Tx.
#elif (HAL_UART_DMA == 2)//改uart1的位置2 by 
#define HAL_UART_PERCFG_BIT        0x02         // USART1 on P1, Alt-2; so set this bit.
#define HAL_UART_Px_RTS            0x20         // Peripheral I/O Select for RTS.
#define HAL_UART_Px_CTS            0x10         // Peripheral I/O Select for CTS.
#define HAL_UART_Px_RX_TX          0x30         // Peripheral I/O Select for Rx/Tx.

如下图将ZTOOL_P1改为ZTOOL_P2

zigbee修改协议栈:将uart1的引脚位置2改到位置1

小技巧是在串口初始化完成后一直观察P0DIR和P0SEL的值,而且比如修改P0SEL,全局搜索P0SEL不一定全,还要搜PxSEL

还有一个注意的地方:另一种方法在HAL_UART_DMA == 2的条件下再宏定义一个HAL_UART_DMA == 3,即不改动uart1的位置2引脚情况下新添一个位置1引脚,但是这样实际中改动的地方很多,参考最上面那个链接(*感觉不全),_hal_uart.c文件夹下所有涉及到HAL_UART_DMA == 2的条件语句都要新加个HAL_UART_DMA == 3.而且本人改完后只能发送不能接收,故用的上面那个方法