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

如何在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);
}
http://www.xdnf.cn/news/8506.html

相关文章:

  • 使用pip安装ptflops报错
  • 探索Qwen2ForCausalLM 架构上进行微调
  • k8s容器入门(2) 容器化组件“可漂移“
  • 企业知识管理面临的挑战与飞书知识问答的解决方案
  • 字节开源多模态文档图像解析模型:Dolphin
  • 【FastAPI】--基础教程
  • 使用compressorjs实现前端图片压缩
  • 文章记单词 | 第106篇(六级)
  • 提高 Maven 项目的编译效率
  • 苍穹外卖day1实战,Idea中Lombok编译时“找不到符号”,更改JDK版本最全流程,作者亲身尝试
  • 【JavaScript篇】对象武林:构造函数创世录与实例江湖风云
  • 大型多模态推理模型技术演进综述:从模块化架构到原生推理能力的综合分析
  • 锐化算子构建方法(机翻)
  • 皮尔森电流互感器测试浪涌电流时的一些典型问题
  • 【AS32X601驱动系列教程】GPIO_按键检测详解
  • HJ106 字符逆序【牛客网】
  • vue3自定义指令来实现 v-copy 功能
  • Systemd服务重启策略详解:on-failure与相关配置
  • 互联网大厂Java求职面试:Spring Cloud微服务架构设计中的挑战与解决方案
  • 通义千问的视觉识别技术和特点
  • 7.6/Q1,GBD数据库最新文章解读
  • 【小程序】手机号快速验证组件如何使用对公转账方式
  • Redis7 新增数据结构深度解析:ListPack 的革新与优化
  • 全志F1c200开发笔记——移植根文件系统
  • 系分论文《论软件系统的安全性测试方法》
  • 一次复杂接口故障的抓包全过程:四款工具协同作战实录(含 Charles)
  • 初识C++:模版
  • 文献阅读——NeuroBayesSLAM
  • vue中v-clock指令
  • ROS2学习(9)------ROS2动作