文章目录

  • 串口初始化
  • 登记任务号
  • 串口发送

  打开Z-stack目录Projects\zstack\Samples\SamplesAPP\CC2530DB里面的SampleApp.eww工程,这次试验直接基于协议栈的SampleApp来修改的。打开工程后,workspace目录下有两个比较重要的文件夹,即ZmainApp。这里主要用到App,它是用户自己添加自己代码的地方,主要文件是SampleApp.cSampleApp.h

串口初始化

  我们在workspace下找到HAL\Target\CC2530EB\drivershal_uart.c,可以看到里面已经包括了串口初始化、发送、接收等函数。再看看workspace上的MT层,发觉有很多基本函数前面带MT,包括MT_UART.C。打开这个文件,看到MT_UartInit函数,这里也有一个串口初始化函数。Z-stack上有一个MT层,用户可以选用MT层配置和调用其他驱动,进一步简化了操作流程。
  打开APP目录下的OSAL_SampleApp.C文件,找到上节提到的osalInitTasks任务初始化函数中的SampleApp_Init函数。进入这个函数,发现原来在SampleApp.c文件中,我们在这里加入串口初始化代码。在函数中加入语句MT_UartInit();

  进入MT_UartInit函数,修改自己想要的初始化配置:

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;
#if defined (ZTOOL_P1) || defined (ZTOOL_P2)uartConfig.callBackFunc = MT_UartProcessZToolData;
#elif defined (ZAPP_P1) || defined (ZAPP_P2)uartConfig.callBackFunc = MT_UartProcessZAppData;
#elseuartConfig.callBackFunc = NULL;
#endif/* Start UART */
#if defined (MT_UART_DEFAULT_PORT)HalUARTOpen ( MT_UART_DEFAULT_PORT, &uartConfig );
#else/* Silence IAR compiler warning */( void ) uartConfig;
#endif/* 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
}
  • 7行:uartConfig.baudRate = MT_UART_DEFAULT_BAUDRATE;是配置波特率,查看MT_UART_DEFAULT_BAUDRATE的定义,可以看到#define MT_UART_DEFAULT_BAUDRATE HAL_UART_BR_38400,默认的波特率是38400bps。现在修改成115200bps,修改成#define MT_UART_DEFAULT_BAUDRATE HAL_UART_BR_115200
  • 8行:uartConfig.flowControl = MT_UART_DEFAULT_OVERFLOW;语句是配置流控,进入定义可以看到#define MT_UART_DEFAULT_OVERFLOW TRUE,默认是打开串口流控。如果你是只连了TX/RX2根线方式,务必将流控进行关闭,即#define MT_UART_DEFAULT_OVERFLOW FALSE。注意,2根线的通讯连接务一定要关闭流控,不然是永远收发不了信息的。
  • 1420行:这个是预编译,根据预先定义的ZTOOL或者ZAPP选择不同的数据处理函数。后面的P1P2则是串口0和串口1,在这里使用ZTOOL和串口0。可以在option -> C/C++ CompilerPreprocessor里面看到,已经默认添加ZTOOL_P1预编译:

登记任务号

  在函数SampleApp_Init刚添加的串口初始化语句下面加入MT_UartRegisterTaskID(task_id);/* 登记任务号 */,意思就是把串口事件通过task_id登记在函数SampleApp_Init里面:

串口发送

  经过前面两个步骤,现在串口已经可以发送信息了。我们在刚刚添加初始化代码后面加入一条上电提示Hello World的语句HalUARTWrite(0, "Hello World\n", 12); /* 串口0, "字符", 字符个数 */。注意,需要在SampleApp.c文件里加入头文件MT_UART.h。下载并通过串口调试助手查看,可以看到输出了Hello World

ZigBee协议栈的串口实验相关推荐

  1. 《ZigBee开发笔记》第四部分 提高篇-第3章 CC2530协议栈串口实验

    实验设备 硬件:PC 机一台:ZB2530(底板.核心板.仿真器.USB 线) 两套 软件:win7 系统,IAR 8.20 集成开发环境 上节我们实现了无线LED通讯实验,相信大家对 ZStack ...

  2. zigbee协议栈初使用(三)无线数据传输

    zigbee协议栈初使用(三)无线数据传输 本次使用协议栈例程广播通信完成,本文记录网蜂<Zigbee实战演练>学习总结 一.发送部分   打开SampleApp.c找到 uint16 S ...

  3. CC2530的串口实验

    CC2530的串口实验主要有编程主要有一下几个步骤: 一.串口初始化函数(设置时钟频率-->选择用来当做串口的IO-->设置波特率-->发送中断设为0) 二.字符串发送函数(U0DB ...

  4. Zigbee协议栈ZStack构架

     协议栈版本信息: ZigBee2006\ZStack-1.4.3-1.2.1 1.ZStack协议栈构架 Zigbee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供一些 ...

  5. zigbee协议栈ADC采集外部电压

    ADC 由于最近在做一个项目,其中一个步骤是需要CC2530片内ADC采集外设的电压值,三天反思不得其解,终于解决了这个问题. zigbee协议栈是有错误的,稍后我会写出来 ADC支持14位模数转换, ...

  6. ZigBee协议栈Zstack介绍

    文中所讲述的协议栈是基于ZigBee2006\Zstack-1.4.3-1.2.1 1.ZSTACK协议栈的架构 ZigBee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供一 ...

  7. 二.了解zigbee协议栈中几个常用语句

    二.了解zigbee协议栈中几个常用语句 我在上一篇文章中说到过,zigbee作为一门通信技术,关键我们是要让它组起网来,虽然我们很多的实现还是用单片机的底板实现的:但要明白我们学习的核心在哪?在协议 ...

  8. ZStack通信(Zigbee协议栈通信)

    ZStack通信-Zigbee协议栈通信 一.注册端点 二.发送数据函数 三.接收数据 一.注册端点 应用都是建立在端点ZDO(Zigbee Device Object)之上的, 所以要实现通信首先要 ...

  9. ZIGBEE通讯-10.ZigBee协议栈的无线点灯

    在ZIGBEE协议栈中已经自带了按键与LED的驱动与使用函数,所以只需要将按键与LED修改为使用的开发板所连接IO就可以使用了.接下来将主要分析在协议栈中按键的初始化.按键的检测以及按键事件的传递与处 ...

  10. ZigBee协议栈之osal浅析

    ZigBee是目前比较流行的一种低功耗无线组网技术,主要用于智能家居控制以及智能工业生产.ZigBee大的特点就是低功耗.自组网. 说到ZigBee就不得不提IEEE802.15和ZigBee联盟,他 ...

最新文章

  1. 数据科学的积累:海平面下的冰山 | 清华信息技术研究院郑方
  2. C++ cin.ignore()用法
  3. homebrew 常用命令
  4. 第十周项目1-程序填空与阅读(一)
  5. WPF 创建自定义面板
  6. java获取页面点击次数_在Java中怎样得出一个按钮点击的次数
  7. 国外的电子商务开发情况
  8. vue2.0 自定义 饼状图 (Echarts)组件
  9. JSP实用教程(3)——JSP内置对象
  10. 泛泰A870 CWM Recovery En/Cn合集
  11. 仿京东商城源码java_Java+SSM实现类似京东的3C电子商城系统
  12. 输入法相关的测试用例整理
  13. Unity VR开发教程 OpenXR+XR Interaction Toolkit 2.1.1 (一) 安装和配置
  14. 音频怎么转换mp3格式?
  15. jul177链接_「jul177小早川中文」无删减版高清天天影音第89集
  16. nn.Sigmoid torch
  17. 解惑篇|Docker和 K8s 到底啥关系?想学K8s,必须得先学 Docker 吗?
  18. H5/C3基础(2)
  19. 2023年全国最新二级建造师精选真题及答案49
  20. 使用exceljs导出部门-职位联动下拉框的excel

热门文章

  1. 分频测试软件,带有强大的分频控制软件_天逸 TY-D01_音频评测-中关村在线
  2. 如何去除WINRAR的广告
  3. php如何实现运算符重载,JS怎样实现运算符重载
  4. LDA算法和PCA算法的总结(原理和思想)
  5. Linux命令之打包tar
  6. AD的PCB文件无法保存问题
  7. matplotlib之简单动画制作
  8. 各地的磁倾角_中国各地磁偏角
  9. Java之映射(map)
  10. 一寸照片像素是多少?教你一寸照片电子版怎么弄