【NUCLEO-WB09KE评测】4、也谈BLE从机配置及BLE点灯
本帖最后由 sujingliang 于 2024-9-26 15:23 编辑<p><span style="font-size:18px;"><strong>目标</strong></span></p>
<p> 其实对于用STM32CubeMX从头配置工程,我是抗拒的,因为之前被它折腾得太惨。每次用MX开启一个新的工程,感觉就像一次新的历险。</p>
<p> 还好NUCLEO-WB09KE的配置不用考虑mpu、xspi、EXTMEM_MANAGER等等拦路虎,感觉有得搞,并且前面大佬已经成功配置过了。</p>
<p> 那还等什么开干。</p>
<p> </p>
<p><span style="font-size:18px;"><strong>一、配置</strong></span></p>
<p><span style="font-size:16px;">我尽量贴的详细些</span></p>
<p><strong>1、RCC:</strong><span style="color:#d35400;"><span style="font-size:16px;"><strong>一定要重视RCC</strong></span></span></p>
<div style="text-align: center;"></div>
<p>这里选择了HSE、LSE,这意味着高速晶振和低速晶振都用是外部晶振。所以HSI、LSI就不要在时钟配置中做为时钟来源,否则肯定是不起振的。</p>
<p>时钟图:<span style="color:#d35400;"><strong>要和RCC对应上</strong></span></p>
<div style="text-align: center;"></div>
<p><br />
2、SYS配上吧</p>
<div style="text-align: center;"></div>
<p><br />
<strong>3、RADIO_TIMER</strong></p>
<p>配置WIN32_BLE时有提示RADIO_TIMER需要先配置。参数默认不做修改。</p>
<p> </p>
<div style="text-align: center;"></div>
<p><strong>4、RADIO</strong></p>
<p>配置原因同上</p>
<div style="text-align: center;"></div>
<div><strong>5、UART1配置上,用来打日志</strong></div>
<div> </div>
<div>
<div style="text-align: center;"></div>
<div><strong>6、PKA</strong></div>
<div>也是系统提示要配置</div>
<div>
<div style="text-align: center;"></div>
<p><strong>7、STM32_BLE</strong></p>
<p>这个是重点但是一般还真不容易配错。</p>
<div style="text-align: center;"></div>
<div style="text-align: center;">
<div style="text-align: center;"></div>
<div style="text-align: center;"> </div>
<div style="text-align: center;"></div>
<div style="text-align: left;">设置了1个服务,1个特征</div>
<div style="text-align: left;">
<div style="text-align: center;"></div>
<div style="text-align: center;"> </div>
<div><strong>8、DEBUG也设上,略</strong></div>
<div> </div>
<div style="text-align: center;"><span style="color:#27ae60;"><span style="font-size:18px;"><b>生成代码,我生成的是KEIL文件</b></span></span></div>
</div>
</div>
</div>
<hr />
<p> </p>
</div>
<p><span style="font-size:18px;"><strong>二、程序</strong></span></p>
<p><span style="font-size:18px;">1、printf重定向要实现,略</span></p>
<p><span style="font-size:18px;">2、main() --->while(1)好像要手工加入:</span></p>
<pre>
<code class="language-cpp">MX_APPE_Process();</code></pre>
<p><span style="font-size:18px;">3、加上BLE控制LD3(PB2)的功能</span></p>
<p><span style="font-size:18px;">Application/User/STM32_BLE/App下,led_service_app.c</span></p>
<p> </p>
<p><span style="font-size:18px;">找到LED_SERVICE_LED_TOGGLE_WRITE_EVT,在后面加控制PB2和打印输出的代码</span></p>
<pre>
<code class="language-cpp">case LED_SERVICE_LED_TOGGLE_WRITE_EVT:
/* USER CODE BEGIN Service1Char1_WRITE_EVT */
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_2);
APP_DBG_MSG("LED_SERVICE_LED_TOGGLE_WRITE_EVT\r\n");
/* USER CODE END Service1Char1_WRITE_EVT */
break;</code></pre>
<p> </p>
<p><span style="font-size:18px;"><strong>三、效果</strong></span></p>
<p> </p>
<p><span style="font-size:18px;">1、BLE调试助手操作</span></p>
<p> </p>
<p><span style="font-size:18px;">发现蓝牙WB09</span></p>
<div style="text-align: center;"></div>
<div>连接WB09,可以看到3个服务:GAP、默认的GATT、自己建的GATT:Unknow Service</div>
<div style="text-align: center;">
<div style="text-align: center;"></div>
<p style="text-align: left;">向Unknow Service下的唯一特征发送任何值,触发LED_SERVICE_LED_TOGGLE_WRITE_EVT消息</p>
<div style="text-align: center;"></div>
<div style="text-align: left;">读缺省GATT服务特征值返回:</div>
<div style="text-align: center;"></div>
<p> </p>
</div>
<p><span style="font-size:18px;">2、NUCLEO-WB09KE收到任意写给特征值LED_TOGGLE的操作,都会触发打印如下日志,并且PB2翻转。</span></p>
<div style="text-align: center;"></div>
<div style="text-align: center;"> </div>
<div><strong>其他没有描述清楚的可以直接参考STM32CubeMX的工程文件.ioc,应该可以用来生成KEIL文件:</strong></div>
<div></div>
<p> </p>
补充内容 (2024-10-6 14:42):
app_ble.c中540行左右可能需要自己加一下:
/* USER CODE BEGIN APP_BLE_Init_4 */
APP_BLE_Procedure_Gap_Peripheral(PROC_GAP_PERIPH_ADVERTISE_START_FAST);
/* USER CODE END APP_BLE_Init_4 */
补充内容 (2024-10-6 14:42):
调试器下载需要注意:
Debug->Connect:Normal
不要选under Reset,否则STLINK无法正常工作 <p>BLE从机配置及BLE点灯的图文步骤已经说很详细了</p>
<p>大佬,感觉这个是单纯的使用他们封装的协议接口去使用,改不了底层是吧</p>
页:
[1]