1113|1

274

帖子

8

TA的资源

纯净的硅(初级)

楼主
 

[ST NUCLEO-WBA52CG] 5 - 创建自己的BLE工程 [复制链接]

上一个帖子写了如何使用STM32CUBEMX生成一个BLE的样板工程,生成的工程还需要自己添加一些应用信息。

生成的工程结构如下图所示:

这里主要是要关注以下几个文件:app_conf.h, main.c, app_entry.c, app_ble.c, xxx_server_app.c, xxx_server.c。它们的作用如下图所示:

从上面的2个图中可以看到各个文件的调用关系,以及各个文件的作用。

一、首先在app_conf.h 文件中添加我们注册到sequencer中的任务ID,这里有1个任务是必须要添加的,就是停止广播的任务。

二、在app_entry.c 文件中的MX_APPE_Init函数中添加工程中用到的外设的初始化,这个函数是BLE应用的入口函数,因此相关硬件的初始化都是在这里完成的。

三、在app_ble.c文件中,将停止广播的函数注册到sequencer中,同时创建定时器,这个定时器也是用于停止广播的,比如设置广播时长为60s,超过60s后停止广播。

然后设置RF的输出功率,并打开广播,打开广播的同时,开启“停止广播的定时器”。

同时在app_ble.c中需要对一些事件进行处理,比如连接中断时间、连接成功的事件。

四、在xxx_app.c文件中,P2P_SERVER_EventHandler()函数中,将属性值更改事件的数据获取到,然后传递给xxx_server_app.c文件中的P2P_SERVER_Notification()函数

五、在xxx_server_app.c中添加对GATT属性读写的执行函数。

具体的设置方式可以参照下面这个网址:

STM32WBA Bluetooth® Low Energy - STM32CubeMX Application Conception - stm32mcu (stmicroelectronics.cn)

总结

从上面的配置上可以看出需要修改的地方还是很多的,而且涉及的文件也很多,各个文件之间的关系需要弄清楚。不同的文件负责的功能不一样,需要按功能向相关的文件中添加代码。

在没有操作系统的情况下,BLE的协议栈是通过sequencer来实现事件触发的机制的,并且搭配定时器timer来实现一些周期性的功能,sequencer和timer的代码在文件夹Utilities中。

此帖出自RF/无线论坛

最新回复

看着代码,感觉就不像在研究STM32,这代码结构看着有点像瑞萨的例程。   详情 回复 发表于 2023-8-25 17:29
点赞 关注
 

回复
举报

7175

帖子

2

TA的资源

版主

沙发
 

看着代码,感觉就不像在研究STM32,这代码结构看着有点像瑞萨的例程。

此帖出自RF/无线论坛
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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