STM32CubeIDE串口printf函数输出中文乱码(配置教程+解决方法)

这篇具有很好参考价值的文章主要介绍了STM32CubeIDE串口printf函数输出中文乱码(配置教程+解决方法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

平台环境

软件:STM32CubeIDE

硬件:STM32H7A3ZIT6Q

一、串口配置

二、printf重定向

三、中文乱码解决方案

步骤

效果

四、总结


前言

本文主要讲述在使用CubeIDE配置串口通信的过程中,如何重定向printf()函数,以及如何解决在串口打印中文时输出乱码的情况。

平台环境

软件:STM32CubeIDE

           串口调试助手

硬件:STM32H7A3ZIT6Q


一、串口配置

主要配置的内容为NVIC;RCC;SYS;USB_OTG_HS;USART3(作者使用串口3,可根据自身情况修改)

(1)RCC:

STM32CubeIDE串口printf函数输出中文乱码(配置教程+解决方法)

PS:注意在时钟树配置界面将其配置成8MHz(推荐),时钟配错会导致输出乱码。

(2)NVIC:打开中断

STM32CubeIDE串口printf函数输出中文乱码(配置教程+解决方法)

 (3)SYS:

STM32CubeIDE串口printf函数输出中文乱码(配置教程+解决方法)

 (4)USART3:

STM32CubeIDE串口printf函数输出中文乱码(配置教程+解决方法)

 (5)USB_OTG_HS:

 STM32CubeIDE串口printf函数输出中文乱码(配置教程+解决方法)

 串口配置完成,但这时候还不能使用printf函数来打印数据,需要我们重写函数。


二、printf重定向

首先需要我们引用头文件,注意要放在private includes下面,如图所示:

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include <string.h>
#include <stdio.h>

/* USER CODE END Includes */

接着我们要在USER CORE BEGIN4/USER END BEGIN4之间插入以下代码:

/* USER CODE BEGIN 4 */
#ifdef __GNUC__

#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

#define GETCHAR_PROTOTYPE int __io_getchar(FILE *f)

#else

#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

#define GETCHAR_PROTOTYPE int fgetc(FILE *f)

#endif /* __GNUC__ */

PUTCHAR_PROTOTYPE
{
	HAL_UART_Transmit(&huart3, (uint8_t *)&ch, 1, 0xFFFF);

	return ch;
}

GETCHAR_PROTOTYPE
{
	uint8_t ch = 0;
	HAL_UART_Receive(&huart3,(uint8_t *)&ch, 1, 0xFFFF);

	if (ch == '\r')
	{
		__io_putchar('\r');
		ch = '\n';
	}

	return __io_putchar(ch);
}

/* USER CODE END 4 */

另外,补充一点,如果想要发送浮点数据,还需进行以下操作

首先找到任务栏中的project ,左击最底下找到properties。

STM32CubeIDE串口printf函数输出中文乱码(配置教程+解决方法)

之后找到c/c++ Build栏中的settings

STM32CubeIDE串口printf函数输出中文乱码(配置教程+解决方法)

到这里就完成了printf的重定向,可以引用printf函数了

但是!

这时候会出现输出乱码的情况,,如图:

STM32CubeIDE串口printf函数输出中文乱码(配置教程+解决方法)

 所以需要进行以下设置


三、中文乱码解决方案

步骤

首先找到任务栏中的project ,左击最底下找到properties

STM32CubeIDE串口printf函数输出中文乱码(配置教程+解决方法)

 点击properties后的界面,注意若只是下面界面中other栏中改成GBK是无效的,其实这个地方选GBK或者UTF-8没有什么影响,只是选择UTF-8时,串口打印中文会偶尔出现乱码,GBK则会好一点

STM32CubeIDE串口printf函数输出中文乱码(配置教程+解决方法)

 界面左侧找到c/c++ Build栏中的settings

STM32CubeIDE串口printf函数输出中文乱码(配置教程+解决方法)

 在左侧other flags中添加图中标蓝部分,添加后点击应用并关闭。

STM32CubeIDE串口printf函数输出中文乱码(配置教程+解决方法)

效果

STM32CubeIDE串口printf函数输出中文乱码(配置教程+解决方法)

 注意:使用前要调试好串口助手的波特率等数据(根据自己配置的数据来调)

四、总结

以上是本人在串口学习中遇到的一些问题和注意点,如有瑕疵,还望包涵,欢迎大家在评论区提出自己的看法。文章来源地址https://www.toymoban.com/news/detail-467596.html

到了这里,关于STM32CubeIDE串口printf函数输出中文乱码(配置教程+解决方法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32CubeIDE开发(四), stm32调试信息串口通信输出显示

    目录 一、stm32串口配置 三、串口驱动功能调用及编译实现 四、编译测试         关于cubeIDE开发基本技巧及流程,本文不详细叙述,请参考:cubeIDE快速开发流程_py_free的博客-CSDN博客_cubeide汉化 一、stm32串口配置         本文采用的开发板是stm32L496VGT3,其有两个 USB 接口,

    2023年04月08日
    浏览(18)
  • STM32串口printf调试输出(SSCOM V5.13.1)

    PC与CPU相互通信就是通过USB Type_C接口和USB电平转换实现的。 我们可以看到,CPU通过管脚USART1连接CH340C芯片将USB转串口,实现PC与CPU之间的通信。 当然,这里用的是CH340的芯片,我们就需要安装ch340串口。 按住Ctrl+s生成代码。 在usart.h中添加头文件stdio.h 标准库的 printf函数 能方

    2024年02月12日
    浏览(20)
  • 【STM32学习5】STM32使用printf函数 打印到电脑串口助手

    本文所使用的方法与代码参考自正点原子,如果想要详细了解这方面的知识,请阅读正点原子官方提供的文档。 在开发STM32应用时,将一些信息通过串口打印到电脑上是常用的调试手段。C语言标准库中的printf函数是我们常用的打印函数。但是在STM32应用下一般无法直接使用这

    2024年02月02日
    浏览(24)
  • stm32(HAL库)使用printf函数打印到串口

    目录 1、简介 2.1 基础配置 2.1.1 SYS配置  2.1.2 RCC配置 2.2 串口外设配置  2.3 项目生成  3、KEIL端程序整合   4、效果测试 在HAL库中,常用的printf函数是无法使用的。本文通过重映射实现在HAL库中进行printf函数。 2.1.1 SYS配置  2.1.2 RCC配置 在usart.c函数最下方复制如下代码 接着在

    2024年02月14日
    浏览(18)
  • STM32在Keil中使用串口助手打印中文字符出现乱码问题

     问题如下,中文字符显示乱码,但数字正常。 通常这种在串口助手打印出现乱码情况: 无非是 波特率设置错误 ,不对应。就像一个滴水的水龙头,水滴进一个循环开合的容器,双方速率不能很好匹配,一定会出现水滴不能完全滴进容器,或者完全滴进或者完全滴不进的情

    2024年02月09日
    浏览(20)
  • STM32 F103C8T6学习笔记3:串口配置—串口收发—自定义Printf函数

    今日学习使用STM32 C8T6的串口,我们在经过学习笔记2的总结归纳可知,STM32 C8T6最小系统板上有三路串口,如下图:  今日我们就着手学习如何配置开通这些串口进行收发,这里不讲串口通信概念与基础,可以自行网上查找,本文直接开始介绍库函数与编程实现:          

    2024年02月10日
    浏览(18)
  • STM32开发中printf利用重定向方法输出到串口(CubeMX 基于HAL库方法,带实际项目应用技巧 巧用goto语句)

    在stdio.h中的printf 原本输出到控制台, 在单片机应用中一般将其改到串口, 并利用串口输出信息来调试程序,非常方便。(本文以USART1为例) 此外CubeMX及CubeIDE 由于自动生成基础代码,因此每当更改硬件配置的时候, 都会被重置生成的基础代码。 这里使用goto语句来避免部分

    2024年02月04日
    浏览(41)
  • arduino输出中文到串口助手乱码问题(已解决)

    原文链接:https://www.yourcee.com/newsinfo/2929612.html 点击图片购买 遇到arduino串口输出的数据乱码这个问题的时候一度以为是串口助手有问题,因为在arduino自带的串口监视器里面输出的中文是正常的 第一步 操作:更换串口助手,包括 XCOM 、 安信可串口助手 、 COM-HC 、甚至STC下载软

    2024年02月05日
    浏览(17)
  • 关于ESP8266串口输出中文时出现乱码的解决方案

    本人之前并没有c语言的项目编程经验,第一次使用ESP8266以及Eclipse编程环境,因此犯了诸多新手会犯的错误,但在网上查找相关问题时发现许多初级错误并不能完整的找到解决办法,因此希望将个人踩过的坑分享出来,如果有初学者遇到类似问题可以得到较快解决方案。 日前

    2024年02月03日
    浏览(23)
  • STM32CubeIDE中文版教程

    STM32CubeIDE中文版教程 首先 https://mirrors.ustc.edu.cn/eclipse/technology/babel/update-site/ 点击此网址进入 如图,选择日期最新的,点进去 再次选择最新的日期 进入到此界面,复制此时的网址  https://mirrors.ustc.edu.cn/eclipse/technology/babel/update-site/R0.20.0/2022-12/ 打开STM32CubeIDE help-Install New Sof

    2024年02月07日
    浏览(20)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包