csr867x入门之串口AT指令协议(三)
目录
功能简介
功能实现
功能调试
功能简介
通过封装串口AT指令,我们可以把8670作为一个蓝牙外设,通过串口的AT指令协议与外部mcu通讯。
比如当csr8670连接到pc端,再pc端通过串口工具发送指令,芯片内部去解析指令,并执行相应的操作
功能实现
8670内置有一套字符串解析工具,通过编写.parse文件,当项目编译时,会生成对应的.c和.h文件。首先我门可以参考hfp_parse.parse进行编写sink_parse.parse
如上图所示,第一部分为指令,第二部分为指令解析之后对应的回调函数,当指令后面跟有参数时,需要按照第三部的格式,可以对指令规定一个固定的结尾,如”\r\n”或”\r”等。
编写好.parse之后,添加到工程中进行编译,此时会报错,原因是找不到回调函数的实体,这个时候只需要在sink_parse.h中复制函数定义(注:函数定义会根据.parse自动生成),实现函数实体即可
以AT+GVER指令为例,void handleGetVersion(Task ),回调函数实现示例如下:
void handleGetVersion(Task t)
{ UartSendStr("+VER:");UartSendStr("0.0.2");UartSendStr("\r\n");
}
功能调试
将编译好的固件烧到板子中,板子连接到pc,用pc上的串口工具发送AT+GVER\r\n, 该指令会进入我们上篇博客所述的app_uart_handler()串口数据分发函数,后进入UartparseData()进行指令解析,最终调用上面实现的handleGetVersion()结果如下图所示:
我已经封装了一部分的AT指令,基本上包含了所有蓝牙功能的使用,具体可以参考我的《AT指令集.docx》。
上面我只贴出了部分代码,详细源码及相关的工具资料等,请到我的博客<csr867x入门笔记(序)>最下面的网盘链接或者github链接中下载。
csr867x入门之串口AT指令协议(三)相关推荐
- csr867x入门之串口数据收发(二)
目录 Uart功能模块实现 将uart库导入工程中 添加应用层逻辑 使用 Uart功能模块实现 默认4.1的adk中是不包含uart收发的应用层逻辑,所以需要自己实现 在src/lib目录下新建uar ...
- csr867x入门笔记(序)
本专栏的主要内容是csr867x的入门使用,主要包括环境搭建及体验,串口调试,at指令协议添加,各个蓝牙协议的使用等,最终这些例程会加入到adk里面,adk主要是基于4.1版本. 我也会把相关的资料放 ...
- csr867x入门之gatt使用(五)
简述 目前的adk中只有电池,心率等几个固定的gatt服务,所以如果要实现自定义的数据收发,需要再自定义一个gatt服务 使能BLE/GATT功能 首先要在config中使能gatt,如下图所示: 添 ...
- 基于HMI串口屏的协议(STM32)
基于HMI串口屏的协议(STM32) 提示: 硬件:STM32H750VBT6.USART_HMI(3.5寸基本型)(TJC4832T035_011X) 官方资料网站:HMI 文章目录 基于HMI串口 ...
- python爬虫入门教程--快速理解HTTP协议(一)
http协议是互联网里面最重要,最基础的协议之一,我们的爬虫需要经常和http协议打交道.下面这篇文章主要给大家介绍了关于python爬虫入门之快速理解HTTP协议的相关资料,文中介绍的非常详细,需要 ...
- Vue学习(入门实例、常用指令)-学习笔记
文章目录 Vue学习(入门实例.常用指令)-学习笔记 实例 常用指令 v-on v-bind v-for v-html v-if event v-model 双向数据绑定实现 - defineProp ...
- STM32驱动串口屏,STM32F103C8T6串口发送指令控制HMI串口屏
STM32驱动串口屏,STM32F103C8T6串口发送指令控制HMI串口屏 串口屏 基础指令集 硬件和接线 接线 实验前准备 STM32程序 串口程序 主函数 实验现象 总结 串口屏 串口屏是一个集 ...
- zhuan:串口成帧协议
串口成帧协议 串口接收中的问题 在电子系统中,最简单.最广泛的通信方式无疑是串口了,几乎所有与模块相关的产品,差不多都有串口的操作方式,如串口蓝牙模块.串口WIFI模块.串口ZigBee模块.串口语音 ...
- TCP/IP协议三次握手与四次握手流程解析
原文链接地址:http://www.2cto.com/net/201310/251896.html TCP/IP协议三次握手与四次握手流程解析 TCP/IP协议的详细信息参看<TCP/IP协议详 ...
最新文章
- KindEditor编辑器在ASP.NET中的使用
- python交互式程序设计导论第二周_沧州学堂云Python 交互式程序设计导论搜题公众号...
- CentOS6.5升级到CentOS7
- 微软职位内部推荐-Senior PM
- 60个我们应该看到的简单和创意的广告
- 03-drawcommands工程分析详解
- U-GAT-IT整体流程分析
- java 代码压缩javascript_利用Java来压缩 JavaScript 代码详解
- 2 华为云闪付_教你区分信用卡刷卡、挥卡、插卡、云闪付等支付方式!
- Android LowMemoryKiller ADJ原理
- Linux Ubuntu 安装 numpy 教程
- Ignite 的使用过程(一)
- elasticsearch整体结构示意图
- 使用three建立一个正方体
- 直接管理和维护计算机系统的程序称为,全国2008年4月高等教育自学考试计算机原理试题...
- 二元隐函数求二阶偏导_高数,隐函数求二阶偏导。f(x-y,yz)确定了z=(x,y),f具有二阶连续偏导数,求...
- Preserving Prefix Integrity
- 怎么在sqlyog设置表的外键
- 【Java十大热门游戏合集】Java经典游戏项目
- Mysql面试高频知识点
热门文章
- 文字logo设计的作用
- 性价比天花板:如何在预算有限的情况下吃得美味又健康
- python 计算月还款额度
- 华为近场通讯nfc在哪里打开_华为手机nfc感应区在手机哪个位置
- python成功爬取拉勾网——初识反爬(一个小白真实的爬取路程,内容有点小多)
- Java项目:课程在线学习与测试系统(java+SSM+redis+Bootstrap+Tomcat+mysql)
- Java实验报告四,研究生薪资管理,创建一个抽象交通工具Vehicle类,经理与员工工资等实验
- java调用海康威视人脸识别抓拍
- sd卡突然所有文件都无法删除,在手机中会提示‘无法删除’,并且无法格式化,并且无法写入文件,
- 多可系统中如何修改注册信息