[ST NUCLEO-WBA52CG] 5 - 创建自己的BLE工程
<div class='showpostmsg'><p>上一个帖子写了如何使用STM32CUBEMX生成一个BLE的样板工程,生成的工程还需要自己添加一些应用信息。</p><p>生成的工程结构如下图所示:</p>
<p></p>
<p>这里主要是要关注以下几个文件:app_conf.h, main.c, app_entry.c, app_ble.c, xxx_server_app.c, xxx_server.c。它们的作用如下图所示:</p>
<p></p>
<p></p>
<p>从上面的2个图中可以看到各个文件的调用关系,以及各个文件的作用。</p>
<p>一、首先在app_conf.h 文件中添加我们注册到sequencer中的任务ID,这里有1个任务是必须要添加的,就是停止广播的任务。</p>
<p>二、在app_entry.c 文件中的MX_APPE_Init函数中添加工程中用到的外设的初始化,这个函数是BLE应用的入口函数,因此相关硬件的初始化都是在这里完成的。</p>
<p>三、在app_ble.c文件中,将停止广播的函数注册到sequencer中,同时创建定时器,这个定时器也是用于停止广播的,比如设置广播时长为60s,超过60s后停止广播。</p>
<p></p>
<p></p>
<p>然后设置RF的输出功率,并打开广播,打开广播的同时,开启“停止广播的定时器”。</p>
<p>同时在app_ble.c中需要对一些事件进行处理,比如连接中断时间、连接成功的事件。</p>
<p>四、在xxx_app.c文件中,P2P_SERVER_EventHandler()函数中,将属性值更改事件的数据获取到,然后传递给xxx_server_app.c文件中的P2P_SERVER_Notification()函数</p>
<p>五、在xxx_server_app.c中添加对GATT属性读写的执行函数。</p>
<p>具体的设置方式可以参照下面这个网址:</p>
<p><a href="https://wiki.stmicroelectronics.cn/stm32mcu/wiki/Connectivity:STM32WBA_BLE_STM32CubeMX">STM32WBA Bluetooth® Low Energy - STM32CubeMX Application Conception - stm32mcu (stmicroelectronics.cn)</a></p>
<p>总结</p>
<p>从上面的配置上可以看出需要修改的地方还是很多的,而且涉及的文件也很多,各个文件之间的关系需要弄清楚。不同的文件负责的功能不一样,需要按功能向相关的文件中添加代码。</p>
<p>在没有操作系统的情况下,BLE的协议栈是通过sequencer来实现事件触发的机制的,并且搭配定时器timer来实现一些周期性的功能,sequencer和timer的代码在文件夹Utilities中。</p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p>看着代码,感觉就不像在研究STM32,这代码结构看着有点像瑞萨的例程。</p>
页:
[1]