2095|1

119

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

【Microchip WBZ451 Curiosity】-8- BLE Custom Service开发体验 [复制链接]

本帖最后由 慕容雪花 于 2023-8-21 20:31 编辑

往期测评文章一览:

文章序号 标题 链接
1 【Microchip WBZ451 Curiosity】-1- 开箱 https://bbs.eeworld.com.cn/thread-1251951-1-1.html
2 【Microchip WBZ451 Curiosity】-2- 开发环境搭建 https://bbs.eeworld.com.cn/thread-1251952-1-1.html
3 【Microchip WBZ451 Curiosity】-3- 出厂BLE例程体验 https://bbs.eeworld.com.cn/thread-1252992-1-1.html
4 【Microchip WBZ451 Curiosity】-4- 从0创建简易BLE广播 https://bbs.eeworld.com.cn/thread-1253144-1-1.html
5 【Microchip WBZ451 Curiosity】-5- 增加硬件UART https://bbs.eeworld.com.cn/thread-1253425-1-1.html
6 【Microchip WBZ451 Curiosity】-6- gpio驱动 https://bbs.eeworld.com.cn/thread-1253445-1-1.html
7 【Microchip WBZ451 Curiosity】-7- EIC外部中断控制器的使用 https://bbs.eeworld.com.cn/thread-1253493-1-1.html

 

本文主要体验如何在Microchip的集成开发环境MPLABX IDE中,配合Maplab Harmony MCC插件来图形化开发BLE功能。先来个演示视频:

ble gatt custom service

 

1. 老朋友MCC,虽然好用,但是还是卡,一如既往。

 

 

2. 在BLE基础配置中,确认不需要勾选GATT Client。在本文中,手机app作为GATT Client,WBZ451开发板作为GATT Server。

 

 

3. 在customized Service组件中,增加一个Service。Service名称有长度限制,注意UUID的小端存储模式。这里定义的UUID与手机app看到的有区别。

 

 

4. Service下面包含Characteristic。下图展示的是Characteristic 0。这个Characteristic用于读取按键状态,以及订阅按键状态变化。

 

 

5. Characteristic 1即第二个Characteristic,用户控制板载LED状态。类似Characteristic 0的UUID,都可以用在线的UUID生成器自动生成。

 

6. 点击Generate,自动生成代码。

7. 自动生成的代码存储在config\default\ble\service_ble

 

 

8. APP Task中,循环使用OS抽象层的OSAL_QUEUE_Receive()函数检测是否有相应的事件发生。

        case APP_STATE_SERVICE_TASKS:
        {
            if (OSAL_QUEUE_Receive(&appData.appQueue, &appMsg, OSAL_WAIT_FOREVER))
            {
                if(p_appMsg->msgId==APP_MSG_BLE_STACK_EVT)
                {
                    // Pass BLE Stack Event Message to User Application for handling
                    APP_BleStackEvtHandler((STACK_Event_T *)p_appMsg->msgData);
                }
                else if(p_appMsg->msgId==APP_MSG_BLE_CS_LED_EVT)
                {
                    APP_CustomService_RGB_Handler((uint8_t *)((STACK_Event_T *)p_appMsg->msgData));
                }else if(p_appMsg->msgId==APP_MSG_BLE_CS_BUTTON_EVT)
                {
                    APP_CustomService_Button_Handler();
                }
            }
            break;
        }

9. 手机app,通过ble gatt写入数据后,步骤8中会检测到相应的BLE事件,通过如下的函数调用,接受到的报文的msgId = APP_MSG_BLE_CS_LED_EVT.

 

 

之后,调用LED灯的处理函数:

uint8_t APP_CustomService_RGB_Handler(uint8_t *p_cmd)
{
    
    bleCSdata.RGB_LED.Red = p_cmd[0];
    bleCSdata.RGB_LED.Green = p_cmd[1];
    bleCSdata.RGB_LED.Blue = p_cmd[2];
    
    //SYS_CONSOLE_PRINT ("[BLE] RGB LED data 0x%X 0x%X 0x%X \r\n",p_cmd[0],p_cmd[1],p_cmd[2]);
    SERCOM0_USART_Write((uint8_t *)"[BLE] RGB LED data Received\r\n",strlen("[BLE] RGB LED data Received\r\n"));
    if(bleCSdata.rgbOnOffStatus == LED_ON)
    {    
        if(bleCSdata.RGB_LED.Red)
            RGB_LED_RED_Set();
        else
            RGB_LED_RED_Clear();
        if(bleCSdata.RGB_LED.Green)
            RGB_LED_GREEN_Set();
        else
            RGB_LED_GREEN_Clear(); 
        if(bleCSdata.RGB_LED.Blue)
            RGB_LED_BLUE_Set();
        else
            RGB_LED_BLUE_Clear();        
        
        //SYS_CONSOLE_MESSAGE("[BLE] RGB SET\n\r");        
    }
    return SUCCESS;
}

总结:

整体来讲,使用MPLABX IDE配合HARMONY MCC插件开发蓝牙BLE应用是非常方便的。尤其是MPLABX IDE自带的函数调用结构图非常方便的查看代码。

此帖出自RF/无线论坛

最新回复

MPLABX IDE自带的函数调用结构图非常方便的查看代码,这是亮点   详情 回复 发表于 2023-8-23 07:31
点赞 关注
 

回复
举报

6587

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

MPLABX IDE自带的函数调用结构图非常方便的查看代码,这是亮点

此帖出自RF/无线论坛
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表