STM32WB55_NUCLEO开发(11)----发送数据到手机

这篇具有很好参考价值的文章主要介绍了STM32WB55_NUCLEO开发(11)----发送数据到手机。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

本篇文章将详细介绍如何在上节配置的基础上,实现通过点击STM32WB开发板上的按键发送数据到手机上。
最近在弄ST和瑞萨RA的课程,需要样片的可以加群申请:6_15061293 。

硬件准备

首先需要准备一个开发板,这里我准备的是NUCLEO-WB55RG 的开发板:
STM32WB55_NUCLEO开发(11)----发送数据到手机

视频教学

听不到声音的请点击跳转进行观看。
https://www.bilibili.com/video/BV1DM41137Jk/

STM32WB55

源码下载

https://download.csdn.net/download/qq_24312945/87772294

蓝牙配置

选择“mySVC”选项卡。添加第二个特征,特征数Number of characteristics设置为2
STM32WB55_NUCLEO开发(11)----发送数据到手机

定义第二个特征名称,这里定义为’myCharRead’,同时将UUID增加为00 01
STM32WB55_NUCLEO开发(11)----发送数据到手机

启用CHAR_PROP_NOTIFY属性。
CHAR_PROP_NOTIFY 是一个参数描述,它允许设备在特性值发生变化时发送通知,而无需接收方响应。这种通知机制使得数据传输更加高效,因为发送方不需要等待接收方的确认。
STM32WB55_NUCLEO开发(11)----发送数据到手机

代码配置

我们希望在按钮按下时调用aci_gatt_update_char_value(…) API。这将会发送一个指令(CMD)给CM0+处理器,同时传递一个值作为参数,为了解决在中断上下文中调用API的问题,我们需要创建一个后台任务来调用aci_gatt_update_char_value(…)。这个任务将在主程序循环中运行,并在检测到按钮按下事件时调用API。
当按钮被按下时,我们希望更新蓝牙GATT特征值。为了实现这一目标,我们需要创建一个在后台运行的任务,而不是直接在中断处理程序中调用API。这是因为ACI接口不是可重入的,直接在中断处理程序中调用API可能导致不安全的情况。

app_conf.h

在app_conf.h中定义自定义任务。

/* USER CODE BEGIN Defines */
void myTask(void);
/* USER CODE END Defines */

STM32WB55_NUCLEO开发(11)----发送数据到手机
同时添加任务定义。

  /* USER CODE BEGIN CFG_Task_Id_With_NO_HCI_Cmd_t */
	CFG_MY_TASK,
  /* USER CODE END CFG_Task_Id_With_NO_HCI_Cmd_t *

STM32WB55_NUCLEO开发(11)----发送数据到手机

app_ble.c

在app_ble.c中的蓝牙初始化中注册我们自己的任务和调度任务。
UTIL_SEQ_RegTask(1 << CFG_MY_TASK, UTIL_SEQ_RFU, myTask) 和 UTIL_SEQ_SetTask(1 << CFG_MY_TASK, CFG_SCH_PRIO_0) 是用于任务调度和任务优先级设置的。
UTIL_SEQ_RegTask(1 << CFG_MY_TASK, UTIL_SEQ_RFU, myTask) 将一个名为 myTask 的任务注册到任务调度器中。
UTIL_SEQ_SetTask(1 << CFG_MY_TASK, CFG_SCH_PRIO_0)为设置优先级。

  /* USER CODE BEGIN APP_BLE_Init_1 */
	UTIL_SEQ_RegTask( 1<<CFG_MY_TASK, UTIL_SEQ_RFU, myTask);
	UTIL_SEQ_SetTask(1 << CFG_MY_TASK, CFG_SCH_PRIO_0);
  /* USER CODE END APP_BLE_Init_1 *

STM32WB55_NUCLEO开发(11)----发送数据到手机

按键配置

查看原理图可以得知PC4为SW1按键。
STM32WB55_NUCLEO开发(11)----发送数据到手机

同时配置为上拉,默认状态下电平为高电平状态。
STM32WB55_NUCLEO开发(11)----发送数据到手机

custom_app.c

编写我们的myTask任务函数,通过检测PC4按键进行数据发送。
检测一个按键(SW1)是否被按下,如果按下则执行相应的操作,包括更新UpdateCharData数组的第一个元素,调用自定义函数Custom_STM_App_Update_Char进行处理,就是向手机APP发送一个0xbb的数据。

/* USER CODE BEGIN PFP */
void myTask(void)
{
if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_4)==0)//SW1按键按下
{
	UpdateCharData[0] = 0xbb;
 Custom_STM_App_Update_Char(CUSTOM_STM_MYCHARREAD, (uint8_t *)UpdateCharData);

}
UTIL_SEQ_SetTask(1 << CFG_MY_TASK, CFG_SCH_PRIO_0);
}

/* USER CODE END PFP */

STM32WB55_NUCLEO开发(11)----发送数据到手机

结果演示

STM32WB55_NUCLEO开发(11)----发送数据到手机文章来源地址https://www.toymoban.com/news/detail-427516.html

到了这里,关于STM32WB55_NUCLEO开发(11)----发送数据到手机的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32WB55开发(6)----FUS更新

    在 STM32WB 微控制器中,FUS(Firmware Upgrade Services)是用于固件升级的一种服务。这项服务可以让你更新设备上的无线栈固件(如蓝牙、Zigbee或 Thread 栈),以及无线 MCU (microcontroller unit) 的系统服务。 FUS 实质上是设备的一部分固件,它可以独立于主应用程序运行,主要负责安全

    2024年01月16日
    浏览(30)
  • STM32WB55开发(5)----调整射频功率

    随着无线通信技术的不断进步,能够精确地控制射频(RF)信号的功率变得越来越重要。调整射频功率不仅可以影响设备的通信距离和覆盖范围,还可以优化电池的使用寿命和减少可能的射频干扰。ACI_HAL_SET_TX_POWER_LEVEL指令提供了一种方法,使工程师和开发者能够在ST的蓝牙设

    2024年02月06日
    浏览(36)
  • STM32WB55开发(3)----断开蓝牙连接

    在嵌入式领域中,STM32WB 系列微控制器以其双核架构和强大的无线连接能力而著称。特别是其蓝牙5.0的功能使得这款微控制器非常适合那些需要低功耗和高性能无线连接的应用。然而,在实际的应用中,合理和有效地管理蓝牙连接是非常关键的,尤其是当设备需要断开或重新

    2024年02月08日
    浏览(34)
  • 内嵌功能强大、低功耗STM32WB55CEU7、STM32WB55CGU7 射频微控制器 - MCU, 48-UFQFN

    一、概述: STM32WB55xx多协议无线和超低功耗器件内嵌功能强大的超低功耗无线电模块(符合蓝牙® 低功耗SIG规范5.0和IEEE 802.15.4-2011标准)。该器件内含专用的Arm® Cortex® -M0+,用于执行所有的底层实时操作。这些器件基于高性能Arm® Cortex®-M4 32位RISC内核(工作频率可达64 MHz),

    2024年02月11日
    浏览(27)
  • STM32学习记录——蓝牙发送数据(手机显示传感器数据)

    文章目录 前言 一、学习目的 二、代码记录         将数据通过蓝牙发送到手机上,是学生学习单片机的必备技能之一,它可以将手机作为简单的上位机,从而使数据直观地展现出来。        蓝牙的初始化、蓝牙接受数据以及蓝牙简单应用的介绍和代码记录,可以看一看下

    2024年02月07日
    浏览(27)
  • STM32 Nucleo-144开发板开箱bring-up

    最近做项目,用到STM32F446ZET6这款MCU,为了赶进度,前期软件需要提前开发,于是在某宝买了对应主控的官方开发板,为了避免遗忘,后面能翻出来回忆一些细节,就形成了本篇的主要内容,同时也希望能够帮助刚上手的小伙伴少走弯路,如果对你有帮助请点赞、收藏、转发,

    2024年02月07日
    浏览(34)
  • 【STM32】STM32F411RET6(NUCLEO)开发板基于HAL库创建工程模板及屏幕驱动

    驱动单色0.96英寸七针OLED 显示屏 串口调试等功能 本文如题采用STM32F411RET6(NUCLEO)开发板如图所示。 开发环境使用MDK(keil5)和STM32CubeMX,不了解的同学可以去百度一下。 首先选择对应的开发板型号,然后进入图形化配置界面。 第一步是时钟配置,每个板子在不考虑功耗的情况下

    2024年02月09日
    浏览(35)
  • RT-Thread NUCLEO-STM32L452RE开发板BSP说明

    本文档为 NUCLEO-L452RE 开发板提供的 BSP (板级支持包) 说明。 主要内容如下: 开发板资源介绍 BSP 快速上手 进阶使用方法 通过阅读快速上手章节开发者可以快速地上手该 BSP,将 RT-Thread 运行在开发板上。在进阶使用指南章节,将会介绍更多高级功能,帮助开发者利用 RT-Thread

    2024年01月22日
    浏览(41)
  • RT-Thread NUCLEO-STM32H563ZI开发板BSP说明

    本文档为 yuanzihao为 NUCLEO-STM32H563ZIT6 开发板提供的 BSP (板级支持包) 说明。 主要内容如下: 开发板资源介绍 BSP 快速上手 注意事项及参考资料 通过阅读快速上手章节开发者可以快速地上手该 BSP,将 RT-Thread 运行在开发板上。 NUCLEO-STM32H563ZIT6是 ST 推出的一款基于 ARM Cortex-M33 内

    2024年02月03日
    浏览(37)
  • RT-Thread STM32G070RB-Nucleo开发板的BSP说明

    本文档为 STM32G070RB-Nucleo 开发板的 BSP (板级支持包) 说明。 主要内容如下: 开发板资源介绍 BSP 快速上手 进阶使用方法 通过阅读快速上手章节开发者可以快速地上手该 BSP,将 RT-Thread 运行在开发板上。在进阶使用指南章节,将会介绍更多高级功能,帮助开发者利用 RT-Thread 驱

    2024年02月03日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包