ZigBee协议栈的串口实验
文章目录
- 串口初始化
- 登记任务号
- 串口发送
打开Z-stack
目录Projects\zstack\Samples\SamplesAPP\CC2530DB
里面的SampleApp.eww
工程,这次试验直接基于协议栈的SampleApp
来修改的。打开工程后,workspace
目录下有两个比较重要的文件夹,即Zmain
和App
。这里主要用到App
,它是用户自己添加自己代码的地方,主要文件是SampleApp.c
和SampleApp.h
。
串口初始化
我们在workspace
下找到HAL\Target\CC2530EB\drivers
的hal_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/RX
的2
根线方式,务必将流控进行关闭,即#define MT_UART_DEFAULT_OVERFLOW FALSE
。注意,2
根线的通讯连接务一定要关闭流控,不然是永远收发不了信息的。 - 第
14
至20
行:这个是预编译,根据预先定义的ZTOOL
或者ZAPP
选择不同的数据处理函数。后面的P1
和P2
则是串口0
和串口1
,在这里使用ZTOOL
和串口0
。可以在option -> C/C++ Compiler
的Preprocessor
里面看到,已经默认添加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协议栈的串口实验相关推荐
- 《ZigBee开发笔记》第四部分 提高篇-第3章 CC2530协议栈串口实验
实验设备 硬件:PC 机一台:ZB2530(底板.核心板.仿真器.USB 线) 两套 软件:win7 系统,IAR 8.20 集成开发环境 上节我们实现了无线LED通讯实验,相信大家对 ZStack ...
- zigbee协议栈初使用(三)无线数据传输
zigbee协议栈初使用(三)无线数据传输 本次使用协议栈例程广播通信完成,本文记录网蜂<Zigbee实战演练>学习总结 一.发送部分 打开SampleApp.c找到 uint16 S ...
- CC2530的串口实验
CC2530的串口实验主要有编程主要有一下几个步骤: 一.串口初始化函数(设置时钟频率-->选择用来当做串口的IO-->设置波特率-->发送中断设为0) 二.字符串发送函数(U0DB ...
- Zigbee协议栈ZStack构架
协议栈版本信息: ZigBee2006\ZStack-1.4.3-1.2.1 1.ZStack协议栈构架 Zigbee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供一些 ...
- zigbee协议栈ADC采集外部电压
ADC 由于最近在做一个项目,其中一个步骤是需要CC2530片内ADC采集外设的电压值,三天反思不得其解,终于解决了这个问题. zigbee协议栈是有错误的,稍后我会写出来 ADC支持14位模数转换, ...
- ZigBee协议栈Zstack介绍
文中所讲述的协议栈是基于ZigBee2006\Zstack-1.4.3-1.2.1 1.ZSTACK协议栈的架构 ZigBee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供一 ...
- 二.了解zigbee协议栈中几个常用语句
二.了解zigbee协议栈中几个常用语句 我在上一篇文章中说到过,zigbee作为一门通信技术,关键我们是要让它组起网来,虽然我们很多的实现还是用单片机的底板实现的:但要明白我们学习的核心在哪?在协议 ...
- ZStack通信(Zigbee协议栈通信)
ZStack通信-Zigbee协议栈通信 一.注册端点 二.发送数据函数 三.接收数据 一.注册端点 应用都是建立在端点ZDO(Zigbee Device Object)之上的, 所以要实现通信首先要 ...
- ZIGBEE通讯-10.ZigBee协议栈的无线点灯
在ZIGBEE协议栈中已经自带了按键与LED的驱动与使用函数,所以只需要将按键与LED修改为使用的开发板所连接IO就可以使用了.接下来将主要分析在协议栈中按键的初始化.按键的检测以及按键事件的传递与处 ...
- ZigBee协议栈之osal浅析
ZigBee是目前比较流行的一种低功耗无线组网技术,主要用于智能家居控制以及智能工业生产.ZigBee大的特点就是低功耗.自组网. 说到ZigBee就不得不提IEEE802.15和ZigBee联盟,他 ...
最新文章
- 数据科学的积累:海平面下的冰山 | 清华信息技术研究院郑方
- C++ cin.ignore()用法
- homebrew 常用命令
- 第十周项目1-程序填空与阅读(一)
- WPF 创建自定义面板
- java获取页面点击次数_在Java中怎样得出一个按钮点击的次数
- 国外的电子商务开发情况
- vue2.0 自定义 饼状图 (Echarts)组件
- JSP实用教程(3)——JSP内置对象
- 泛泰A870 CWM Recovery En/Cn合集
- 仿京东商城源码java_Java+SSM实现类似京东的3C电子商城系统
- 输入法相关的测试用例整理
- Unity VR开发教程 OpenXR+XR Interaction Toolkit 2.1.1 (一) 安装和配置
- 音频怎么转换mp3格式?
- jul177链接_「jul177小早川中文」无删减版高清天天影音第89集
- nn.Sigmoid torch
- 解惑篇|Docker和 K8s 到底啥关系?想学K8s,必须得先学 Docker 吗?
- H5/C3基础(2)
- 2023年全国最新二级建造师精选真题及答案49
- 使用exceljs导出部门-职位联动下拉框的excel