STM32WB55开发(4)----配置串口打印Debug调试信息

2023-09-14 21:44:00

概述

在STM32WB55系列微控制器上进行开发时,实时监控应用程序的运行情况和调试潜在问题是至关重要的。使用串口(USART/UART)进行Debug信息打印是一种简便、高效的方法。下面是如何在STM32WB55上配置串口来打印调试信息的概述。
最近在弄ST的课程,需要样片的可以加群申请:615061293 。

硬件准备

首先需要准备一个开发板,这里我准备的是WB55RG 的开发板:
在这里插入图片描述

视频教学

https://www.bilibili.com/video/BV16h4y1w7WT/

STM32WB55开发(4)----配置串口打印Debug调试信息

样品申请

https://www.wjx.top/vm/OhcKxJk.aspx#

源码下载

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

选择芯片型号

在这里插入图片描述

配置时钟源

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

配置时钟树

在这里插入图片描述

RTC时钟配置

在这里插入图片描述
RFWKP时钟配置

在这里插入图片描述

查看开启STM32_WPAN条件

可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。
在这里插入图片描述

配置HSEM

硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。
开启HSEM如下。
在这里插入图片描述

配置IPCC

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

在这里插入图片描述

配置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的干预,从而提高效率和数据传输速度。
在这里插入图片描述

开启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定义了设备名称。
在这里插入图片描述

将设备设置为一般可发现模式,若成功会打印如下参数。
在这里插入图片描述

串口打印如下所示。

在这里插入图片描述

更多推荐

腾讯mini项目-【指标监控服务重构】2023-07-19

今日已办OpenTelemetryLogs通过日志记录API支持日志收集集成现有的日志记录库和日志收集工具Overview日志记录API-LoggingAPI,允许您检测应用程序并生成结构化日志旨在与其他telemertydata(例如metric和trace)配合使用,以提供统一的可观测性解决方案结构化日志记录,允许

预处理代码

一、缺失值处理删除缺失值:data1=data.dropna()#丢弃缺失值#dropna()删除缺失值所在行(axis=0)或列(axis=1),默认为axis=0补全示例数据:importpandasaspdimportnumpyasnpdata=pd.DataFrame({'name':['Bob','Mary'

一篇搞定,Kettle详细教程

文章目录第一章Kettle概述1.1Kettle发展历程1.2Kettle简介1.3Kettle相关俗语1.4Kettle设计与组成1.5Kettle功能模块1.6Kettle的执行Transformation(转换)1.7Kettle商业和社区版区别1.8数据集成与ETL1.9ETL工具比较第二章Kettle安装部署

【python基础】编写/运行hello world项目

1.编写helloworld项目编程界每种语言的第一个程序往往都是输出helloworld。因此我们来看看,如何用Python输出helloworld。1.如果你是初学者,main.py中的代码暂时是无法看懂的,所以可以把main中的源代码直接删除。如下所示这里我们要学习python的第一个知识点,print输出函数。

机器学习(14)---逻辑回归(含手写公式、推导过程和手写例题)

逻辑回归一、逻辑回归概述二、模型、策略和优化(手写)三、w和b的梯度下降公式推导四、例题分析4.1题目4.2解答一、逻辑回归概述1.逻辑回归也称作logistic回归分析,是一种广义的线性回归分析模型,属于机器学习中的监督学习。其推导过程与计算方式类似于回归的过程,但实际上主要是用来解决二分类问题(当然也可以解决多分类

项目实战— pytorch搭建CNN处理MNIST数据集

项目文件夹介绍项目文件夹CNN_MNIST_practice文件夹是整个项目的文件夹,里面存放了六个子文件夹以及四个.py程序,接下来我们分别来介绍这些文件的内容。其中minist_all_CPU.py是CPU版本的模型训练+测试程序,而minist_all_GPU.py则是GPU版本的模型训练+测试程序。minist

Spring MyBatis【一篇搞定】

SpringMyBatis​SpringMyBatis在Spring中是一个非常重要的知识,将前端传递的数据存储起来,或者查询数据库⾥⾯的数据;简单来说MyBatis是更简单完成程序和数据库交互的⼯具,也就是更简单的操作和读取数据库⼯具。文章目录SpringMyBatis一、MyBatis简介二、学习MyBatis重要

用 Github Codespaces 免费搭建本地开发测试环境

如何丝滑地白嫖一个本地开发环境?怎么新建一个代码空间?1:通过Github网页新建2:通过VSCode插件新建为代码创建相应的开发测试环境如何丝滑地白嫖一个本地开发环境?使用Codespaces为开发者解决这样的痛点:为项目设置和维护一个或一组开发工作站。在“第一次提交”发生之前浪费的时间。开发工作站之间的配置/工具/

浅谈C++|模板篇

一.模板模板概念模板就是建立通用的模具,大大提高复用性模板的特点:1.模板不可以直接使用,它只是一个框架2.模板的通用并不是万能的·C++另一种编程思想称为泛型编程,主要利用的技术就是模板。·C++提供两种模板机制:函数模板和类模板二.函数模板函数模板作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用

校园网络技术需求分析

路由技术:路由协议工作在OSI参考模型的第3层,因此它的作用主要是在通信子网间路由数据包。路由器具有在网络中传递数据时选择最佳路径的能力。除了可以完成主要的路由任务,利用访问控制列表(AccessControlList,ACL),路由器还可以用来完成以路由器为中心的流量控制和过滤功能。在本工程设计中,内网用户不仅通过路

慢SQL原因分析之索引失效 | 京东物流技术团队

现象最近收到一个慢sql工单,慢sql大概是这样:“selectxxxfromtabelwheretype=1”。咦,type字段明明有索引啊,为啥是慢sql呢?原因通过执行explain,发现实际上数据库执行了全表扫描,从而被系统判定为慢sql。这时有一定开发经验的同事会说:“字段区分度不够,这种字段作单独索引是没有

热文推荐