当前位置: 首页 > news >正文

如何在STM32CubeMX下为STM32工程配置调试打印功能

为STM32工程配置调试打印功能

一、配置调试用的打印串口

#include <stdio.h>		//标准输入输出库//1.在STM32CubeMX中打开并配置好某串口设备;
//2.在main.c文件中添加如下代码行对输入输出重定向;
//3.在文件开头包含stdio.h头文件。
#pragma import(__use_no_semihosting)
struct __FILE
{int a;
};FILE __stdin, __stdout;void _sys_exit(int x)
{}//printf函数的父类函数
int fputc(int ch, FILE *f)
{//调试串口的发送函数HAL_UART_Transmit(&husart?, (uint8_t *)&ch, 1, 10);return ch;
}//scanf函数的父类函数
int fgetc(FILE *f)
{uint8_t ch = 0;//调试串口的接收函数HAL_UART_Receive(&husart?, (uint8_t *)&ch, 1, 10);return (int)ch;
}

二、配置USB作为虚拟打印端口

#include <stdarg.h>//1.在STM32CubeMX中配置好RCC(HCLK = 72MHz)、打开USB功能,
//2.在中间件和软件包菜单项里,勾选USB_DEVICE,并选择工作模式为
//   Communication Device Class(Virtual Port Com)
//3.生成代码后,工程文件中会自动生成usb_device.c、usbd_desc.c
//  以及usbd_cdc_if.c三个文件,我们需要在usbd_cdc_if.c文件末尾
//  添加如下usb打印函数,以后就是用该打印函数进行调试输出
//4.记得在开头包含头文件stdarg.h
void usb_printf(const char *format, ...)
{va_list args;uint32_t length;va_start(args, format);length = vsnprintf((char *)UserTxBufferFS, APP_TX_DATA_SIZE, (char *)format, args);va_end(args);CDC_Transmit_FS(UserTxBufferFS, length);
}

相关文章:

  • android设计——功能临时开启与永久管控
  • 穿屏技巧:Mac-Windows一套鼠标键盘控制多台设备 (sharemouse6.0-Keygen)| KM-401A
  • 相机坐标系、图像坐标系和世界坐标系
  • 豆瓣的 PyPI 源关闭后替代方案
  • 博弈论(巴什、nim、......SG打表)
  • 数据集YOLO格式转换COCO格式
  • 计算机图形学:(三)MVP变换扩展
  • 初识 Flask 框架
  • 详解MySQL锁机制
  • 七彩喜适老化改造:让每个空间成为长者尊严的守护者
  • 广东省省考备考(第十八天5.23)—言语:语句排序题(听课后强化训练)
  • 基于大模型的股骨干骨折全周期预测与诊疗方案研究报告
  • 【MySQL成神之路】MySQL索引相关介绍
  • C++性能测试工具——sysprof的使用
  • FRP技术概览
  • 注册并创建一个微信小程序
  • git初始化及操作指南
  • 《边缘算力困局突破:智能体模型动态调度全解析》
  • 2025年电工杯数学建模竞赛A题的 数据基于Kaggle 的AMS 2013-2014 太阳能预测大赛 (2.8G 数据)
  • 腾讯地图WebServiceAPI提供基于HTTPS/HTTP协议的数据接口
  • 创建网站怎么赚钱的/重庆seo什么意思
  • 香港做网站公司/手机怎么制作网页
  • 网站的注册上一步下一步怎么做/千锋教育培训收费一览表
  • 新手如何做网站的教程/株洲seo优化首选
  • 在线简历/百度官方优化软件
  • 移动互联网技术就业前景/郑州seo顾问