STM32H5开发系列教程之串口打印配置详解

STM32H5开发—-4.开发板介绍

  • 概述
  • 样品申请
  • 硬件准备
  • 生成例程
  • 配置调试口
  • 代码生成配置
  • 项目配置
  • 调试配置
  • 串口重定向
  • 打印测试
  • 结果
  • 概述

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

    /* USER CODE BEGIN Includes */
    #include "stdio.h"
    /* USER CODE END Includes */
    

    函数声明和串口重定向:

    /* 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 */
    

    打印测试

      /* 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 */
    

    结果

    物联沃分享整理
    物联沃-IOTWORD物联网 » STM32H5开发系列教程之串口打印配置详解

    发表评论