CC2530/Zigbee协议栈之同时使用两个串口

Zigbee协议栈同时使用两个串口

本文参考TI论坛评论区的一个链接,原文链接: how-to-use-two-uart-ports-in-cc2530.

How to use two UART ports in CC2530 Z-Stack
The following steps show how to use two UART ports in CC2530 Z-Stack

①Define HAL_UART=TRUE, HAL_UART_ISR=1, and HAL_UART_DMA=2 in compile options.(在Project->Options中定义)

②Initialize and use UART0 (P0_2 as RX/P0_3 as TX) as the followings:

  • 串口0初始化
void initUart0(halUARTCBack_t pf)
{
	halUARTCfg_t uartConfig;
	uartConfig.configured = TRUE;
	uartConfig.baudRate = HAL_UART_BR_115200;
	uartConfig.flowControl = FALSE;
	uartConfig.flowControlThreshold = 48;
	uartConfig.rx.maxBufSize = 128;
	uartConfig.tx.maxBufSize = 128;
	uartConfig.idleTimeout = 6;
	uartConfig.intEnable = TRUE;
	uartConfig.callBackFunc = pf;
	HalUARTOpen (HAL_UART_PORT_0, &uartConfig);
}
  • 串口0回调函数
void uart0RxCb( uint8 port, uint8 event )
{
  uint8 len = Hal_UART_RxBufLen(port);
  uint8 p[64];
  if(len==0) return;
  
  HalUARTRead(port,p,len);
  HalUARTWrite( port, p, len); 
}
  • 串口0初始化调用
initUart0(uart0RxCb);
  • 测试
//Output "UART0 output test" to P0.3
HalUARTWrite( HAL_UART_PORT_0, "UART0 output test", (byte)osal_strlen("UART0 output test"));

③Initialize and use UART1 (P1_6 as TX/P1_7 as RX) as the followings:

  • 串口1初始化
void initUart1(halUARTCBack_t pf)
{
	halUARTCfg_t uartConfig;
	uartConfig.configured = TRUE;
	uartConfig.baudRate = HAL_UART_BR_115200;
	uartConfig.flowControl = FALSE;
	uartConfig.flowControlThreshold = 48;
	uartConfig.rx.maxBufSize = 128;
	uartConfig.tx.maxBufSize = 128;
	uartConfig.idleTimeout = 6;
	uartConfig.intEnable = TRUE;
	uartConfig.callBackFunc = pf;
	HalUARTOpen (HAL_UART_PORT_1, &uartConfig);
}

  • 串口1回调函数
void uart1RxCb( uint8 port, uint8 event )
{
  uint8 len = Hal_UART_RxBufLen(port);
  uint8 p[64];
  if(len==0) return;
  
  HalUARTRead(port,p,len);
  HalUARTWrite( port, p, len); 
}
  • 串口1初始化调用
initUart1(uart1RxCb);
  • 测试
//Output "UART1 output test" to P1.6
HalUARTWrite( HAL_UART_PORT_1, "UART1 output test", (byte)osal_strlen("UART1 output test"));

注意👇
在移植如上代码后Rebuild all会出现一大堆下图的warning
在这里插入图片描述
大概意思是对HAL_UART_ISR有多个定义,双击任意一个跳转到
在这里插入图片描述
把此处的0改为1即可,重新编译。

回调函数:未测试能否两个回调函数能否合并一起使用。TI官方说不能合并,有博客亲测可以合并…有时间可以测试一下。回调函数里一定要包含HalUARTRead(port,p,len)函数,否则会一直进入回调函数。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值