依次执行如下操作,代码将不做介绍,相信读者自行容易理解
下面介绍几个uart相关寄存器
寄存器PERCFG (0xF1) --外设控制
cc2530共有两个串口,UART0和UART1,两个串口通过寄存器PERCFG的值映射到不同的引脚
如我们需要使用串口1的 P0.4 P0.5,按照如上寄存的的功能,我们需要将PERCFG 第二位拉低
PERCFG &= ~HAL_UART_PERCFG_BIT;
其定义在HAL_UART_PERCFG_BIT 在_hal_uart_dma.c中
具体代码操作如下:
1、在Option for node "GenericApp"中将宏定义ZTOOL_P1->ZTOOL_P2
2、修改_hal_uart_dma.c的内容
#if (HAL_UART_DMA == 1)
PERCFG &= ~HAL_UART_PERCFG_BIT; // Set UART0 I/O to Alt. 1 location on P0.
#else
PERCFG &= ~HAL_UART_PERCFG_BIT; // Set UART1 I/O to Alt. 2 location on P1.
#endif
PxSEL |= HAL_UART_Px_RX_TX; // Enable Tx and Rx on P1.
ADCCFG &= ~HAL_UART_Px_RX_TX; // Make sure ADC doesnt use this.
UxCSR = CSR_MODE; // Mode is UART Mode.
UxUCR = UCR_FLUSH; // Flush it.
3、修改_hal_uart_dma.的宏定义(应为我们定义了ZTOOL_P2将定义else的宏)
#if (HAL_UART_DMA == 1)
#define HAL_UART_PERCFG_BIT 0x01 // USART0 on P0, Alt-1; so clear this bit.
#define HAL_UART_Px_RX_TX 0x0C // Peripheral I/O Select for Rx/Tx.
#define HAL_UART_Px_RTS 0x20 // Peripheral I/O Select for RTS.
#define HAL_UART_Px_CTS 0x10 // Peripheral I/O Select for CTS.
#else
#define HAL_UART_PERCFG_BIT 0x02 //jerry mei // 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 //jerry mei //P0.4 P0.5//0xC0 // Peripheral I/O Select for Rx/Tx.**
#endif
4、HalUARTWrite修改端口为PORT1 应为我们使用的是端口2
void putchar(char c){
HalUARTWrite(HAL_UART_PORT_1,(uint8*)&c,1); //jerry mei
}
自此,我们已经将 TX:P0_3 RX:P0_2 修改为 TX:P0_4 RXP0_5,赶紧去实验一下吧。。。。