[size=13.6364px]1、在进行本文步骤前,请先阅读以下博文:
1)《STM32之蓝牙透传模块(昇润科技)》:http://blog.csdn.net/feilusia/article/details/52838571
2、在进行本文步骤前,请先实现以下博文:
1)《STM32之NVIC》:http://blog.csdn.NET/feilusia/article/details/52819709
2)《STM32之串口》:http://blog.csdn.net/feilusia/article/details/52819571
[size=13.6364px]3)《STM32之系统滴答定时器》:http://blog.csdn.net/feilusia/article/details/52835711
[size=13.6364px]
[size=13.6364px]五、基础知识1、本文使用的蓝牙透传模块是什么? 答:本文使用的蓝牙透传模块是迅通科技的PTR5518。 该模块采用NORDIC公司的Cortex-M0内核芯片nRF51822、模块封装尺寸为15.2×15.2mm,并且通过了BQB 认证、 FCC 认证、CE 认证。
2、如何使用该蓝牙透传模块? 答: 1)硬件 使用到的引脚是1(EN:唤醒与睡眠)、2(TX:模块串口发送)、3(RX:模块串口接收)、8(NTF:连接状态查询)、 9(GND:模块地)、10(VCC:模块电源正极1.8~3.6V)、11(REST:模块复位)、13(FLOW:忙闲状态查询)
2)软件 ①初始化IO ②复位模块 ③唤醒模块
3、PTR5518(讯通科技)与HY-254124 V8(昇润科技)有什么区别? 答: 1)芯片 ①PTR5518(讯通科技) 使用的是32bit的Cortex-M0内核芯片nRF51822。
②HY-254124 V8(昇润科技) 使用的是8bit的51内核芯片CC2541。
2)价格 ①PTR5518(讯通科技)
②HY-254124 V8(昇润科技)
3)认证 ①PTR5518(讯通科技)
通过了蓝牙联盟BQB 认证、美国FCC 认证、欧洲CE 认证。
②HY-254124 V8(昇润科技)
通过了蓝牙联盟BQB 认证。
4)使用 ①PTR5518(讯通科技) 上电并配置好IO口即能广播,使用方便。
②HY-254124 V8(昇润科技) 需要AT指令进行配置,使用较繁琐。
六、实验步骤 注:以下为核心代码及步骤,报错及缺少文件的可自行修改、添加。 1、编写并添加串口透传模块驱动
3)工程中添加GUA_BLE_Uart.c
[size=13.6364px]
4)在MDK设置中添加驱动源文件路径
2、写中断服务函数(stm32f10x_it.c中)
1)添加头文件
[cpp] view plain copy
- #include "GUA_BLE_Uart.h"
2)修改串口中断服务函数
[cpp] view plain copy
- //******************************************************************************
- //name: USART2_IRQHandler
- //introduce: 串口2中断服务函数
- //parameter: none
- //return: none
- //author: 甜甜的大香瓜
- //email: 897503845@qq.com
- //QQ group 香瓜单片机之STM8/STM32(164311667)
- //changetime: 2016.10.17
- //******************************************************************************
- void USART2_IRQHandler(void)
- {
- GUA_U8 nGUA_Ret = 0;
- GUA_U8 nGUA_Num = 0;
- GUA_U8 aGUA_AT_Buf[2] = "AT";
-
- //接收串口数据
- nGUA_Num = GUA_USARTx_Reveive(USART2, gGUA_USART2_rx_buf);
-
- //判断数据是否有效
- if(nGUA_Num > 0)
- {
- //如果是AT指令
- if(memcmp(aGUA_AT_Buf, gGUA_USART2_rx_buf, 2) == 0)
- {
- GUA_BLE_Uart_AT_Cmd(gGUA_USART2_rx_buf, nGUA_Num);
- }
- else
- {
- nGUA_Ret = GUA_USARTx_Judgment(gGUA_USART2_rx_buf); //串口数据判断
- if(nGUA_Ret == GUA_TRUE)
- {
- GUA_USARTx_Process(gGUA_USART2_rx_buf); //串口数据处理
- }
- else
- {
- gGUA_Function = GUA_FUNC_RETRUN_ERROR_EVENT; //空闲
- }
- }
- }
- }
3、在应用层中调用 1)添加头文件(main.c中) [cpp] view plain copy
- #include "GUA_BLE_Uart.h"
2)添加驱动初始化代码(main.c的main函数中)
[cpp] view plain copy
- //串口模块初始化
- GUA_BLE_Uart_Init();
3)数据发往app举例
[cpp] view plain copy
- GUA_BLE_Uart_Send(USART2, gGUA_USART2_tx_buf, GUA_USART2_TX_SIZE); //发送应答
七、注意事项
[size=13.6364px]暂无
[size=13.6364px]
八、实验结果仿真并全速运行,手机的BLE Tool软件能搜索到蓝牙模块在广播,连接上之后可使用两个通道进行读写: 1、数据传输服务 UUID:6940-0001-b5a3-f393-e0a9-e50e-24dc-ca99
1)写数据特性 UUID:6940-0002-b5a3-f393-e0a9-e50e-24dc-ca99
2)读数据特性 UUID:6940-0003-b5a3-f393-e0a9-e50e-24dc-ca99
app往写通道写入17个字节,则stm32能在串口中断服务函数中接收到该17个字节。(最大20字节一包) stm32往串口写入17个字节,则app能在接收通道接收到该17个字节。(最大200字节一包,模块会自动将其分为20字节一包、每个连接事件发送4包)
|