`前言:
说起来比较遗憾,第一篇完成之后一直在鼓捣hid蓝牙键盘,一共花了5+个工作日时间吧,最后还是没完成起来,只完成了键盘的识别,但是按键发上去没反应,也不知道是什么原因,小可爱助手亲切的帮我转达了两次,可能官方人员根本不重视我们所谓的体验吧,一直没有得到官方的支持,所以此项目作废,哪天来了兴致再整吧.
现在这一篇就比较基础了,蓝牙点灯,说起来容易做起来,还是比较容易的,前提是建立在对蓝牙ble开发比较熟悉的程度上.本人之前玩nordic的52832,所以ble算是没花多少时间,这次就来体验一下siliconlabs的蓝牙开发吧
首先:
打开ide,建立工程,我这里选择的是thermometer_freertos工程:
本来是想做一个OLED屏幕滚动显示一些字符的,结果ram不足只能作罢,唉,好纠结
芯科的开发环境跟nordic的有很大不一样,体现在ble的服务,特征值等的添加修改上,不得不说silicon的操作很方便新手上手,勾勾选选,输入几个字符就能把服务,属性,特征值等建立好,下面是我的服务等的截图
然后:
做好服务之后就可以在撸代码了,主要是处理特征值的read,write,no tify等事件,这里我们在lightcontrol的写事件做好相应的处理,蓝牙收到的数据会传如到rgbSet函数,这个函数会执行点灯的指令
- int rgbSet(uint32_t color){
- if(color &(1<
- GPIO_PinOutSet(gpioPortC, BLUE_PIN);
- }else{
- GPIO_PinOutClear(gpioPortC, BLUE_PIN);
- }
- if(color &(1<
- GPIO_PinOutSet( gpioPortC, RED_PIN);
- }else{
- GPIO_PinOutClear(gpioPortC, RED_PIN);
- }
- if(color &(1<
- GPIO_PinOutSet( gpioPortC, GREEN_PIN);
- }else{
- GPIO_PinOutClear(gpioPortC, GREEN_PIN);
- }
- return 0;
- }
复制代码
要想点灯成功,还需要初始化对应的gpio口,查看官方手册,知道有几个引脚是可以配置的,IO口配置代码:
- int rgbInit(){
- GPIO_PinModeSet(gpioPortC,BLUE_PIN,gpioModePushPull, 1);
- GPIO_PinModeSet(gpioPortC,RED_PIN, gpioModePushPull, 1);
- GPIO_PinModeSet(gpioPortC,GREEN_PIN,gpioModePushPull,1);
- }
复制代码
把线接上:
app.c添加处理即可:
- case sl_bt_evt_gatt_server_user_write_request_id:
- app_log_info("user_write_==%d
- ",evt->data.evt_gatt_server_user_write_request.characteristic);
- if (gattdb_lightcontrol == evt->data.evt_gatt_server_user_write_request.characteristic) {
- app_log_info("gattdb_lightcontrol output write opcode==%d
- ",evt->data.evt_gatt_server_user_write_request.att_opcode);
- uint8array *buff =&(evt->data.evt_gatt_server_user_write_request.value);
- app_log_info("output write value %d ==%02x
- ",buff->len,buff->data[0]);
- uint32_t color=buff->data[0];
- rgbSet(color);
- sl_status_t ret = sl_bt_gatt_server_send_user_write_response(evt->data.evt_gatt_server_user_write_request.connection,
- evt->data.evt_gatt_server_user_write_request.characteristic,
- 0);
- app_log_info("write rsp ret = %d
- ",ret);
- }
- break;
复制代码
用silicon官方的蓝牙Ble调试工具,可以进行数据收发测试:
最后奉上完整视频如下:
`
|