HAL_配置uart printf

在math.h中 加入
#include "stm32f4xx_hal.h"
#include "stdio.h"

用于支持printf 及 一些 HAL 定义的 数据结构

在uart.c 文件中加入如下代码,用于把printf输出到串口1

/* USER CODE BEGIN 0 */
int fputc(int c,FILE * f)
{
 HAL_UART_Transmit(&huart1,(uint8_t *)&c,1,20);
 return c;
}
/* USER CODE END 0 */

注意一定要在 /* USER CODE BEGIN X */ 与 /* USER CODE END X */ 中间添加代码,不然重新用STM32CubeMX生成代码后就会被覆盖.

 

复制代码
/**
  * 函数功能: 重定向c库函数printf到DEBUG_USARTx
  * 输入参数: 无
  * 返 回 值: 无
  * 说    明:无
  */
int fputc(int ch, FILE *f)
{
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
  return ch;
}
 
/**
  * 函数功能: 重定向c库函数getchar,scanf到DEBUG_USARTx
  * 输入参数: 无
  * 返 回 值: 无
  * 说    明:无
  */
int fgetc(FILE *f)
{
  uint8_t ch = 0;
  HAL_UART_Receive(&huart1, &ch, 1, 0xffff);
  return ch;
}
复制代码

 

/**  * 函数功能: 重定向c库函数printf到DEBUG_USARTx  * 输入参数: 无  * 返 回 值: 无  * 说    明:无  */int fputc(int ch, FILE *f){  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);  return ch;} /**  * 函数功能: 重定向c库函数getchar,scanf到DEBUG_USARTx  * 输入参数: 无  * 返 回 值: 无  * 说    明:无  */int fgetc(FILE *f){  uint8_t ch = 0;  HAL_UART_Receive(&huart1, &ch, 1, 0xffff);  return ch;}

posted @   流水江湖  阅读(442)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示