打印
[STM32WB]

基于STM32WB55的配置串口打印Debug经验分享

[复制链接]
231|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cr315|  楼主 | 2023-12-6 14:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
套件概述
在STM32WB55系列微控制器上进行开发时,实时监控应用程序的运行情况和调试潜在问题是至关重要的。使用串口(USART/UART)进行Debug信息打印是一种简便、高效的方法。下面是如何在STM32WB55上配置串口来打印调试信息的概述。



选择芯片型号



配置时钟源
HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:



配置时钟树



RTC时钟配置



RFWKP时钟配置




查看开启STM32_WPAN条件
可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。



配置HSEM
硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。
开启HSEM如下。



配置IPCC
通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。
开启如下所示。


使用特权

评论回复
沙发
cr315|  楼主 | 2023-12-6 14:49 | 只看该作者
配置RTC



启动RF




开启蓝牙



开启串口调试

CFG_HW_USART1_ENABLED允许开发者选择是否使用USART1作为跟踪输出的通道,并且这个配置只在特定的设置下可用。这样的配置通常用于嵌入式系统的调试,使得开发者可以实时查看设备的状态和输出信息。



CFG_HW_USART1_ENABLED这是一个配置标志,当设置为启用时,USART1会被用作输出跟踪的通道。当禁用时,USART1不会用于这个目的。

仅当USART1由CubeMX用户界面配置时,此特定的硬件配置才可用:这意味着只有在使用ST的CubeMX工具配置USART1时,才可以使用CFG_HW_USART1_ENABLED这一特定的配置选项。

查看原理图可以的是PA9和PA10与CH340链接在一起,且为串口打印端口。



串口配置如下。



开启CFG_HW_USART1_ENABLED。



关闭MX_USART1_UART_Init函数的生成。



CFG_HW_USART1_DMA_TX_SUPPORTED允许开发者启用USART1的DMA发送功能。启用此功能可以提高USART1发送数据时的效率,但在配置上可能需要更多的步骤和注意事项。

当其被设置为启用时,USART1将使用DMA来进行数据发送(TX)。DMA允许数据从内存直接发送到外设(在这种情况下是USART1),而不需要CPU的干预,从而提高效率和数据传输速度。

[size=0.83em]
微信图片_20231203163846.png (167.97 KB, 下载次数: 0)
下载附件
[color=rgb(153, 153, 153) !important]3 天前 上传





使用特权

评论回复
板凳
cr315|  楼主 | 2023-12-6 14:50 | 只看该作者
启DMA。



开启中断。



启用串口1的tx的DMA。



若无法开启可以重新打开BLE配置。



启动串口1调试跟踪。



启用应用程序中的跟踪 。



配置蓝牙参数
配置为自定义模板。



命名设备名



配置BLE GATT



配置SVC



设置工程信息



工程文件设置



Keil工程配置



代码配置

在main.c中添加如下头文件。
  • /* USER CODE BEGIN Includes */
  • #include "stm32_seq.h"
  • /* USER CODE END Includes */

复制代码


UTIL_SEQ_Run(UTIL_SEQ_DEFAULT)函数应该在应用程序的while循环中,启动任务调度。
  •   /* USER CODE BEGIN WHILE */
  •   while (1)
  •   {
  •     /* USER CODE END WHILE */
  •     MX_APPE_Process();
  •     /* USER CODE BEGIN 3 */
  •     UTIL_SEQ_Run(UTIL_SEQ_DEFAULT);
  •   }
  •   /* USER CODE END 3 */
  • }

复制代码


在app_entry.c中添加初始化 APPD_Init()。
  • void MX_APPE_Init( void )
  • {
  •   System_Init( );       /**< System initialization */
  •   SystemPower_Config(); /**< Configure the system Power Mode */
  •   HW_TS_Init(hw_ts_InitMode_Full, &hrtc); /**< Initialize the TimerServer */
  • /* USER CODE BEGIN APPE_Init_1 */
  •     APPD_Init();
  • /* USER CODE END APPE_Init_1 */
  •   appe_Tl_Init();  /* Initialize all transport layers */
  •   /**
  •    * From now, the application is waiting for the ready event ( VS_HCI_C2_Ready )
  •    * received on the system channel before starting the Stack
  •    * This system event is received with APPE_SysUserEvtRx()
  •    */
  • /* USER CODE BEGIN APPE_Init_2 */
  • /* USER CODE END APPE_Init_2 */
  •    return;
  • }

复制代码


结果演示
在app_ble.c中,数组a_AdvData定义了设备名称。



将设备设置为一般可发现模式,若成功会打印如下参数。



串口打印如下所示。


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1227

主题

3251

帖子

0

粉丝