文章目录

  • 1- 原理图分析
  • 2- 配置使能串口USART1
  • 3- 添加代码
  • 4- 烧录连接显示
  • 5- 浮点数输出

1- 原理图分析

PC与CPU相互通信就是通过USB Type_C接口和USB电平转换实现的。
我们可以看到,CPU通过管脚USART1连接CH340C芯片将USB转串口,实现PC与CPU之间的通信。
当然,这里用的是CH340的芯片,我们就需要安装ch340串口。


2- 配置使能串口USART1


按住Ctrl+s生成代码。


3- 添加代码

在usart.h中添加头文件<stdio.h>

标准库的 printf函数 能方便的输出格式化的字符串。

而单片机只有串口,只能打印int型数。如果能借用标准库 stdio.h 文件里的 printf函数,那么单片机输出格式化字符串就方便了。
printf函数的底层会调用字符输出函数,我们只需要把这个字符输出函数给重新实现为我们的单片机串口输出函数,就可以实现 printf函数。

在usart.c中添加printf()函数的重定向实现,这串代码对gcc或者keil编译器都是可以用的。

/* USER CODE BEGIN 1 */
#ifdef __GNUC__#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)/*char类型是以int类型存储的,所以可以用int*/
#else#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */PUTCHAR_PROTOTYPE
{HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);return ch;
}
/* USER CODE END 1 */

因为我的STM32单片机上时使用的是gcc编译器,所以其实直接这样写也是可以的,直接修改__io_putchar(int ch)函数。

/* USER CODE BEGIN 1 */
__io_putchar(int ch)
{HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);return ch;
}
/* USER CODE END 1 */

最后在main()函数中调用就可以了。


4- 烧录连接显示

然后烧录,烧录之后记得在STM32Programmer断开连接,再用SSCOM连接就可以看到打印结果了。Reset一次就会打印一次。记住DTR不能打钩。


5- 浮点数输出

由于单片机的硬件资源限制(内存太小),所以STM32 单片机里C语言标准库的printf()并不支持浮点数的输出。

当你想要输出浮点数的时候默认是不行的,但是会提示让你去怎么修改,记得最后添加 \t\n 。

如果要使能浮点数打印的话,则需要添加链接选项"-u_printf_float"支持。这个配置好后,提示的错误消失,并能正常打印浮点数了。

成功输出浮点数。

如有错误还请指出~

STM32串口printf调试输出(SSCOM V5.13.1)相关推荐

  1. STC15双串口printf调试输出案例

    STC15双串口printf调试输出案例 ✨本案例基于库函数开发,通过对库函数案例修改而来.如果所选单片机型号ROM比较小,那么就不要这么做.

  2. 使用SSCOM V5.13进行串口网口调试

    一.网口调试: 网口无需连接,即可收发数据,客户端软件正常运行,客户端电脑无需运行SSCOM V5.13.只有客户端软件运行之后端口才能正常工作. 二.串口调试:

  3. J-Link、ST-Link、DAPLink、ULink仿真器区别?以及支持的JTAG、SWD、SWIM下载模式、SWV、串口Printf调试差异?

    参考文章 什么是下载调试器? 简单来说,下载调试器是将PC(例如通过USB协议)发送的命令转换为MCU(负责MCU内部外围设备))理解的语言(例如SWD或JTAG协议)的设备,加载代码并精确控制执行. ...

  4. SSCOM V5.13.1使用方法

    新手使用串口助手记录 1.首先端口号和波特率要设置正确,发送不了命令时要检查一下这两个有没有错误. 然后把DTR和回车换行勾上. (DTR没勾暂时不清楚会有什么状况,回车换行没勾真的是灾难. a.测A ...

  5. STM32串口打印输出乱码的解决办法

    前言 最近在试用uFUN开发板,下载配套的Demo程序,串口数据输出正常,当使用另一个模板工程,调用串口printf调试功能时,输出的却是乱码,最后发现是外部晶振频率不一样.很多STM32开发板都是使 ...

  6. stm32中如何进行printf重定向用于串口调试输出

    1 在main中包含stdio.h 文件 2 Target选项框里选Use MicroLib 选项 3 在main中添加UART1_Configuration()初始化的代码 Uart1初始化, vo ...

  7. Keil MDK 中利用串口及c标准库函数printf为cortex-m3做调试输出(lpc1788)

    摘要: c标准库的printf是输出给显示器的,将printf函数进行修改,使其输出重定向至串口,就能实现目的.printf函数调用fputc函数完成实质输出单一字符的工作,因此将fputc函数修改使 ...

  8. STM32串口的使用(原理、结构体、库函数、串口发送字符(串)、重定向printf串口发送、串口中断接收控制灯)

    参考:串口的结构体 重定向printf串口发送stm32等博文 作者:点灯小哥 发布时间: 2021-03-06 21:46:33 网址:https://blog.csdn.net/weixin_46 ...

  9. 华大单片机HC32L136如何做printf串口打印格式化输出

    目录 写在前面 半主机模式介绍(可以跳过) 串口接收初始化 串口发送重定向 主程序 连好开发板 运行效果 写在前面 通常工程师在做产品开发和程序调试的时候会通过仿真器进入仿真模式来获得芯片运行的结果, ...

  10. STM32移植RT-Thread后的串口在调试助手上出现:(mq != RT_NULL) assert failed at rt_mq_recv:2085和串口只发送数据不能接收数据问题

    STM32移植RT-Thread后的串口在调试助手上出现:(mq != RT_NULL) assert failed at rt_mq_recv:2085的问题讨论:http://www.rt-thr ...

最新文章

  1. 如何借助“AI+边缘计算”助推能源产业智能化转型?这场直播给你答案 | 量子位·视点...
  2. 【Groovy】闭包 Closure ( 闭包类 Closure 简介 | this、owner、delegate 成员区别 | 静态闭包变量 | 闭包中定义闭包 )
  3. javascript   卸载事件(onunload)
  4. java spring mvc_java spring mvc 全注解
  5. Android Jetpack 之 ViewModel
  6. bootstrap css选择不同的宽度
  7. 男友问别人:你裙子里穿什么了?
  8. 方法、脚本-Pig Grunt之简单命令及实例说明-by小雨
  9. ASP.NET CORE中使用SESSION
  10. Python爬虫 - 02.实现贴吧签到
  11. 关于笔记本自动睡眠更改设置无用的解决办法
  12. MPU6050数据分析
  13. 传智播客C++学院教学总监朱景尧老师
  14. 简单测试ROS里面C++ 和 python 文件获取参数格式
  15. 如何快速有效的发散思维?
  16. pycharm激活方法到2099年
  17. 紫阳的日常——第一章 拒绝访问的高考成绩
  18. 夯实第一超市地位 京东超市成超10大品类超50家品牌线上最大渠道
  19. spring context:property-placeholder无法加载配置文件,导致属性无效
  20. Spring IOC循环依赖问题

热门文章

  1. 厦门市建筑物矢量数据(Shp格式+带高度)
  2. MATLAB实现FFT算法
  3. SQL开发技巧(二)
  4. B站后台源码疑似泄露,作为程序员我们得注意哪些?
  5. VM的安装使用教程(校园内自用)
  6. Visual Studio Code鼠标右键Open in Browser消失问题
  7. 铁路售票系统的设计分析(时序图、类图)
  8. SqliteDev如何突破限制
  9. Linux创建文本文件【Ubuntu】
  10. 在U盘上安装ChromiumOS