完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
` 本帖最后由 MMCU5721167 于 2020-1-15 13:21 编辑 在前面一章中我们已经详细介绍了我们基于MM32W系列开发的智能灯控方案,在本章节我们将介绍一款大家生活中很常见的一个蓝牙产品的应用方案,基于MM32W系列开发的蓝牙自拍杆应用。 基于蓝牙威廉希尔官方网站 的蓝牙自拍杆可以进行远距离拍照,不用担心因为线材等因素的约束,且本方案无需专门的手机APP,可直接使用系统内的蓝牙连接。该方案在开发、测试、使用操作阶段都比较简单,且操作迅速,能够适用大部分的场景、方便人们的生活。 硬件资源: 本方案基于MM32 BLE_Test Board进行测试验证,蓝牙自拍杆应用在硬件上只需要一个功能按键即可,蓝牙部分使用蓝牙控制的最小系统,我们将这个按键接到MCU的PA0引脚,既可以用做唤醒引脚使用,又可以用做自拍的功能引脚。 图1 测试开发板 软件资源: 将PA0配置为下拉输入模式,复用中断线到PA0并配置外部中断线中断,最后使能PWR时钟与WakeUp引脚。详细代码如下: do { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);//使能GPIOA GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0; //PA.0 GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IPD;//下拉输入 GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化IO } while(0); do { EXti_InitTypeDef EXTI_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);//使能复用功能时钟 //使用外部中断方式 SYSCFG_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); //中断线0连接GPIOA.0 EXTI_InitStructure.EXTI_Line = EXTI_Line0; //设置按键所有的外部线路 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //设外外部中断模式:EXTI线路为中断请求 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; //上升沿触发 EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); // 初始化外部中断 } while(0); do { NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = EXTI0_1_IRQn; //使能按键所在的外部中断通道 NVIC_InitStructure.NVIC_IRQChannelPriority = 2; //从优先级2级 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断通道 NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器 } while(0); RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能PWR外设时钟 PWR_WakeUpPinCmd(ENABLE); //使能唤醒管脚功能 2、我们在gatt_user_send_notify_data_callback函数中给手机发送数据,该函数属于回调函数,协议栈会在系统允许的时候(异步)回调本函数,该函数可用于蓝牙模块端主动发送数据之用,函数内部不得增加阻塞代码。在蓝牙自拍杆应用中我们在该函数中判断PA0的电平状态,若按键按下则给手机发送按键按下信息。详细实现代码如下: void gatt_user_send_notify_data_callback(void) { if (GPIO_ReadInputData(GPIOA) & 0x01)//press { NotifyKey(0x28); NotifyApplePhoto(); } } u8 NotifyApplePhoto(void)//apple photo hid photo capture, hard code { u8 Keyarray[5] = {2,0,8,0,0}; //VolUp,hard code sconn_notifydata(Keyarray,5); Keyarray[2] = 0; sconn_notifydata(Keyarray,5); return 1; } u8 NotifyKey(u8 KeyIdx)//hid standard keyboard key, hard code { u8 Keyarray[9] = {1,0,0,0,0,0,0,0,0};//0xa1 Keyarray[3] = KeyIdx; sconn_notifydata(Keyarray,9); Keyarray[3] = 0; sconn_notifydata(Keyarray,9); return 1; } 我们直接使用手机自带的蓝牙功能进行测试,操作流程如下: 1. 打开手机蓝牙并进入蓝牙控制界面,搜索自拍杆蓝牙设备。 2. 选择对应名称(MindMotion-Shutter)的蓝牙设备并进行配对。 3. 配对成功后打开手机相机界面,这个时候点击按键K1就可以进行拍照了。 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
2256个成员聚集在这个小组
加入小组灵动微电子MM32全系列MCU产品应用手册,库函数和例程和选型表
11924 浏览 3 评论
【MM32 eMiniBoard试用连载】+基于OLED12864的GUI---U8G2
6016 浏览 1 评论
【MM32 eMiniBoard试用连载】移植RT-Thread至MM32L373PS
11149 浏览 0 评论
【MM32 eMiniBoard测评报告】+ 开箱 + 初探
4617 浏览 1 评论
灵动微课堂(第106讲) | MM32 USB功能学习笔记 —— WinUSB设备
4351 浏览 1 评论
[MM32软件] MM32F002使用内部flash存储数据怎么操作?
1580浏览 1评论
890浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-13 18:36 , Processed in 0.595818 second(s), Total 49, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号