• STM32H5开发(5)----串口打印配置


    概述

    在使用STM32CUBEIDE开发STM32H5项目时,串口打印被证明是一项极其有益的调试工具,能够在开发过程中实时输出信息和调试数据,起到了至关重要的作用。通过充分利用串口打印功能,开发者可以轻松地在代码中插入打印语句,通过串口将这些信息传输至连接于PC端的终端软件,从而方便地监测程序的状态以及各变量的实时值。
    在项目中,我们可以将标准C库中的"printf"函数输出进行重定向,使其输出通过USART1通信接口进行传输。值得注意的是,USART1接口与CH340芯片相连接,而CH340则通过串口连接于PC端。这种设置允许我们使用串口助手等工具来实时捕获和显示"printf"函数的输出内容,从而更加高效地进行程序的调试和性能优化。
    最近在弄ST的课程,需要样片的可以加群申请:615061293 。

    样品申请

    https://www.wjx.top/vm/PpC1kRR.aspx

    硬件准备

    在开始进行开发之前,首先需要准备一块合适的开发板,所选用的是搭载了STM32H503RB芯片的开发板,,具备了丰富多样的外设和功能,非常适合各类应用领域的开发需求。
    在这里插入图片描述

    生成例程

    通过查看原理图,可以了解到PB14与USART1的Tx(发送)功能相连接,而PB15则与USART1的Rx(接收)功能相连接。这样的连接配置使得您可以通过USART1接口进行双向的串口通信。

    在这里插入图片描述

    在"Configuration"(配置)选项卡下,找到USART1的配置部分。选择"Async Mode"(异步模式)以启用异步串口通信。
    在这里插入图片描述

    通过确保将PB14设置为Tx引脚,将PB15设置为Rx引脚,将能够正确地配置USART1的引脚,实现正确的串口通信连接。这将为开发提供了一个稳定的通信通道,使能够在开发板上实现数据的双向传输。记得在代码中使用正确的引脚名称,以确保与配置一致。
    在这里插入图片描述

    通过将USART1的波特率设置为115200,将确保与其他设备进行稳定和高效的串口通信。这个设置将影响数据传输速率,确保您的数据能够及时、准确地在通信通道中传递。在编写代码时,确保使用正确的波特率设置,以便在通信的两端保持一致。
    在这里插入图片描述
    本实验的STM32H503以250 MHz运行。
    在这里插入图片描述

    配置调试口

    在这里插入图片描述

    代码生成配置

    在这里插入图片描述

    项目配置

    在这里插入图片描述

    调试配置

    点击小虫子按钮进入调试器配置
    在这里插入图片描述

    或者点击工程。
    在这里插入图片描述

    配置调试器,这里使用jlink进行调试。
    在这里插入图片描述

    串口重定向

    在main.c中,添加头文件,否则可能会出现"identifier ‘FILE’ is undefined"错误。
    通过包含头文件,可以解决"identifier ‘FILE’ is undefined"错误。这是因为该头文件声明了与文件输入/输出相关的标准函数和类型,包括FILE类型,它在标准输入/输出流的处理中非常重要。
    请确保在main.c文件中添加该头文件,并在需要使用文件输入/输出或其他标准I/O函数时,以正确的方式使用它们。

    /* USER CODE BEGIN Includes */
    #include "stdio.h"
    /* USER CODE END Includes */
    
    • 1
    • 2
    • 3

    函数声明和串口重定向:

    /* USER CODE BEGIN PFP */
    #ifdef __GNUC__									//串口重定�???
    #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
    #else
    #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
    #endif
    PUTCHAR_PROTOTYPE
    {
        HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
        return ch;
    }
    /* USER CODE END PFP */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    打印测试

      /* Infinite loop */
      /* USER CODE BEGIN WHILE */
      while (1)
      {
    	  printf("Hello World!\n\r");
    	  HAL_Delay(1000);
        /* USER CODE END WHILE */
    
        /* USER CODE BEGIN 3 */
      }
      /* USER CODE END 3 */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    结果

    在这里插入图片描述

  • 相关阅读:
    spring mvc中如何集成logback呢?
    0x499播客DeLight:刘毅谈 dYdX “叛逃”以太坊
    南大通用数据库-Gbase-8a-学习-28-自定义存储过程之异常捕获
    5G:HARQ协议
    Android 12.0 Launcher3 去掉Hotseat功能
    力扣OJ题讲解——循环队列
    Mysql删除重复数据只保留一条
    vue 性能优化方案
    PacBio HiFi 测序动植物基因组项目真实案例测评
    RISC-V公司中电丽声完成融资计划
  • 原文地址:https://blog.csdn.net/qq_24312945/article/details/132125089