安信可PB-03蓝牙模组入门之旅 二:SDK二次开发入门,认识架构,开始点亮一盏LED。
- 本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。
1、 安信可PB-03蓝牙模组入门之旅一:Windows SDK二次开发入门环境搭建,以及固件烧录。
2、 安信可PB-03蓝牙模组入门之旅 二:SDK二次开发入门,认识架构,开始点亮一盏LED。
文章目录
- 一、PB-03系列二次开发架构说明
- 1.1 模块启动流程
- 1.2 SDK介绍
- 二、快速入门,点亮一颗LED
- 另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈!
一、PB-03系列二次开发架构说明
1.1 模块启动流程
首先,要了解芯片的启动流程,如下图所示看到我手上的PB-03模组是支持OTA的,
⚫ ROM 部分:启动并引导-或者 Boot loader 或者 Application 和 BLE 协议栈 API,PB-03是没有 TM 引脚的,通过上电后特定的时间内配合上位机实现进去烧录模式。而像 PB-02模组,启动是通过 TM 管脚的高低电平选择编程模式(高电平)还是正常启动模式(低电平)。
⚫ OTA Boot loader:用于引导 Application 以及处理 OTA 升级。
⚫ Application:应用代码,绝大部分二次开发工作都集中在 Application 部分。
1.2 SDK介绍
可二次开发的 SDK 没有使用第三方的 RTOS,不过在应用层抽象了 Task 概念,对于 BLE 应用,以下 Task 是必须的,每个 Task 分别包括一个初始化函数和一个事件处理函数,具体说明请参考下资料文件《PHY62XX_SDK_Application_Guide_v1.0.pdf》。
Tasks (Task 初始化&Task 事件响应函数) 说明 | 说明 |
---|---|
LL_Init();LL_ProcessEvent(uint8, uint16) ; | Link layer 初始化和对应的事件处理函数。 |
HCI_Init();HCI_ProcessEven(uint8, uint16) ; | HCI 层初始化和对应的事件处理函数 。 |
L2CAP_Init();L2CAP_ProcessEvent(uint8, uint16) ; | L2CAP 初始化和对应的事件处理函数 。 |
GAP_Init();GAP_ProcessEvent(uint8, uint16) ; | GAP 初始化和对应的事件处理函数 。 |
LGATT_Init();GATT_ProcessEvent(uint8, uint16) ; | GATT初始化和对应的事件处理函数。 |
应用一般定义一到多个 Task,典型场景(例程)一般只用一个应用 Task。人机交互,外设 控制,BLE 广播和连接的配置,GATT Profile 的加载等事务都在应用 Task 实现。任务以内以及任务之间可以通过 OSAL 提供的 API 进行交互和通信。
二、快速入门,点亮一颗LED
- 首先我们打开 my_example/gpio 这个工程,找到任务分配函数
osalInitTasks();
,为了方便用户开发业务程序,每个业务要以一个 Task 单独存在,Task 的唯一标准用其 ID 组成,像下面这个的写法。
void osalInitTasks( void )
{uint8 taskID = 0;tasksEvents = (uint16*)osal_mem_alloc( sizeof( uint16 ) * tasksCnt);osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt));LL_Init( taskID++);Blink_Init(taskID);
}
最重要的如何定义一个任务回调函数,注意这数组的的顺序,即每个子元素所在的下标,对应 osalInitTasks() 方法的任务传参顺序。
// The order in this table must be identical to the task initialization calls below in osalInitTask.
const pTaskEventHandlerFn tasksArr[] =
{LL_ProcessEvent,Blink_ProcessEvent,
};
任务使用,闪烁一盏LED。
void Blink_Init(uint8 task_id)
{LOG("%s task_id=%d \n", __FUNCTION__, task_id);Blink_TaskID = task_id;// LED 转换hal_gpio_pin_init(LED_GPIO, OEN);hal_gpio_write(LED_GPIO, 1);osal_start_timerEx(Blink_TaskID, Blink_Task_EVT, 1000);
}uint16 Blink_ProcessEvent(uint8 task_id, uint16 events)
{//判断是否这个任务IDif (task_id != Blink_TaskID){return 0;}//判断所在的ID是否一致if (events & Blink_Task_EVT){// LED 转换LED_Toggle(LED_GPIO);//延迟一秒WaitMs(1000);LOG("%s \n", __FUNCTION__);osal_start_timerEx(Blink_TaskID, Blink_Task_EVT, 2000);return (events ^ Blink_Task_EVT);}return 0;
}
本文对应的源码下载:https://github.com/xuhongv/PHY6252_6222_SDK/tree/main/my_examples/peripheral/gpio
另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈!
- phy6252 蓝牙Mesh学习demo汇总:https://github.com/xuhongv/PHY6252_6222_SDK
安信可PB-03蓝牙模组入门之旅 二:SDK二次开发入门,认识架构,开始点亮一盏LED。相关推荐
- 安信可PB系列蓝牙模组 APP Ble Mesh组网教程
文章目录 一.前言 二.硬件准备 三.软件准备 四.AT指令集 五.APP组网示例 六.数据通信 一.前言 本文以PB-02开发板为例,介绍PB系列蓝牙模组通过安卓"PHY Mesh&quo ...
- 安信可PB-01/02蓝牙模组实现远程OTA无线升级功能介绍,剖析整个实现原理和代码介绍。
文章目录 一.安信可PB-01/02蓝牙模组 OTA简介 二.安信可PB-01/02蓝牙模组 FOTA实现流程 三.通过手机APP 完成安信可PB-01/02蓝牙模组的OTA演示 联系我们 一.安信可 ...
- 安信可的GPRS+GSM模组A9连接机智云的教程
安信可的GSM+GPR模组连接机智云搭建教程,官网给的文档也有相应的教程.我这里纯数对于个人连接机智云的过程中做一个记录. 1.首次先准备好好模组+USB转TTL串口工具+安信可官网的串口助手. 2. ...
- 【离线语音专题①】安信可最新离线语音模组VC系列出厂固件使用教程——SDK开源?
文章目录 前言 一.使用前准备 1.通讯接口连接 2.开发板硬件说明 3.烧录说明 (1)JTAG烧录接线及烧录介绍 (2)UART串口升级接线及烧录介绍 二.模组出厂固件使用 1.指令词及指令码 2 ...
- 【AT指令使用】安信可ESP-32-S3/ESP-32-C3系列模组AT固件应用之Web Captive portal功能
目录 前言 一.Captive portal功能原理 二.操作过程 1.烧录带有Captive portal功能的AT固件 2.模组开启Captive portal功能操作过程 3.手机部分的操作过程 ...
- 【 安信可海思Hi-12F模组】AT指令入门教程 接入鸿蒙智联
文章目录 一.前言 二.创建产品 三.产品信息配置 3.1 AT+SYSVER 设置产品系统信息 3.2 AT+SYSPRAM 配置产品详细信息 3.3 AT+SYSTOKEN 设置产品 token ...
- 泰凌微ble mesh蓝牙模组天猫精灵学习之旅 ② 如何实现 微信小程序蓝牙控制 Ble Mesh模组 安信可TB02,全部开源!
本<泰凌微ble mesh蓝牙模组天猫精灵学习之旅>系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.小 ...
- 泰凌微ble mesh蓝牙模组天猫精灵学习之旅 ① 小白也痴迷,如何在 Linux环境搭建编译烧录 安信可TB02,点亮一盏LED灯;
本<泰凌微ble mesh蓝牙模组天猫精灵学习之旅>系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.小 ...
- 泰凌微ble mesh蓝牙模组天猫精灵学习之旅③简单入门安信可TB-02开发开发板轻松接入天猫精灵,语音控制冷暖灯so easy!
本<泰凌微ble mesh蓝牙模组天猫精灵学习之旅>系列博客学习由半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.小白也痴迷,如 ...
最新文章
- 【11平台天梯】【原理分析】11平台天梯原理分析
- 网络工程师_记录的一些真题_2008下半年上午
- MySQL的用户的创建以及远程登录配置
- 系统运维手册_如何摆脱“背锅侠”,做一个合格的IT运维人员
- Java常用类之要点总结
- ABAP 关于ALV布局保存选项的讲解
- __int64 与long long 的区别
- 使用Spring Boot和注释支持配置Spring JMS应用程序
- vue 跨域:使用vue-cli 配置 proxyTable 实现跨域问题
- centos在文本中搜索字符串_linux(centos8):用grep命令查找文件内容
- Activity 生命周期与状态保存
- php preg_replace html,php – 忽略preg_replace中的html标签
- 【洛谷OJ】传球游戏
- JavaSocket编程基础
- vb在服务器上新建文件夹,VB 创建文件夹
- 手机QQ邮箱可以发html邮件么,如何使用手机qq邮箱发送邮件
- 基于java的学生学籍管理系统(含源文件)
- zotero本地常见插件配置,新电脑配置zotero,新手入门
- Python数据预处理:机器学习、人工智能通用技术(1)
- 主播直播时如何选择合适的内容?如何打造主播人设?