stm32 ->HAL库重定向printf,实现串口打印

这篇具有很好参考价值的文章主要介绍了stm32 ->HAL库重定向printf,实现串口打印。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

步骤

  • 在CubeMX中初始化uart引脚
MX_USART1_UART_Init();
  • 包含printf函数的头文件stdio.h

  • 重定义printf函数

int fputc(int ch, FILE *f)
{
	HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff); 
  return ch;
}
  • 勾选Use MicroLIB

stm32 ->HAL库重定向printf,实现串口打印,STM32,stm32,单片机,嵌入式硬件

  • 编译烧录

实现代码

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */

/* Private variables ---------------------------------------------------------*/
UART_HandleTypeDef huart1;

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
int fputc(int ch, FILE *f)
{
	HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff); 
  return ch;
}
/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */
  GPIO_PinState pinState = NULL;
 
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
    HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_1);
    pinState = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1);
    
    if(pinState == GPIO_PIN_SET) {
        printf("PA1 is high\n");
    } else {
        printf("PA1 is low\n");
    }
    
    HAL_Delay(1000); 

  }
  /* USER CODE END 3 */
}

测试

stm32 ->HAL库重定向printf,实现串口打印,STM32,stm32,单片机,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-570034.html

到了这里,关于stm32 ->HAL库重定向printf,实现串口打印的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

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

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

    2024年02月04日
    浏览(83)
  • stm32 串口调试配置及printf重定向

    stm32使用串口调试打印时,需要对串口进行配置并对printf进行重定向,本文介绍如何配置串口以及printf重定向。 示例: 1、配置选项选中要配置的usart 2、模式选择异步模式,硬件流控制disable 3、配置串口参数 生成代码后可以在工程中usart.c中查看到串口相关代码 在工程配置中

    2024年02月11日
    浏览(58)
  • 【STM32】HAL库三步实现串口重定向(代码复制可用)

    目录 第一步:添加标准输入输出头文件 第二步:重写fputc()函数 第三步:重写fgetc()函数 代码汇总(直接复制使用)-需要直接来复制 在PC上进行C语言程序开发时,我们可以利用C语言的格式化输出函数 printf()将程序的运行结果发送到显示屏上显示,也可以利用格式化输人函数

    2024年02月05日
    浏览(43)
  • 关于STM32 hal printf重定向 “FILE“ is undefined

    关于STM32 hal printf重定向,及报错。“FILE” is undefined 增加以下内容:

    2024年02月13日
    浏览(43)
  • STM32-HAL库-printf函数重定向(简单易懂亲测有效)

    由于STM32cubemx生成的HAL库代码没有printf,为了让这个函数能实现打印功能,我们必须要把这个函数重定向,让它重定向到串口中,把要输出的内容打印到串口中。 配置好时钟后,选择你的串口,生成代码。 进入到STM32xxxhal.c中,加入如下两条语句,你的huart是数字几,后面就修

    2024年02月05日
    浏览(46)
  • STM32 HAL库串口重映射printf

    添加代码 keil设置 microlib 是缺省 C 库的备选库。 它旨在与需要装入到极少量内存中的深层嵌入式应用程序配合使用。 这些应用程序不在操作系统中运行。 microlib 进行了 高度优化以使代码变得很小 。 它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。 某些库函数的运

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

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

    2024年02月02日
    浏览(48)
  • 【13】STM32·HAL库-正点原子SYSTEM文件夹 | SysTick工作原理、寄存器介绍 | printf函数使用、重定向

      下面函数都是以sys_开头,定义在sys.c中。正点原子函数现阶段命名规则如果是在led.c中,则以led_开头。在F7/H7系列中会存在Cache配置函数,I-Cache中存储指令,D-Cache中存储数据。   SysTick,即系统滴答定时器,包含在M3/4/7内核里面,核心是一个24位的递减计数器( 最大计

    2024年02月15日
    浏览(43)
  • 【STM32】CUBEMX之串口:串口三种模式(轮询模式、中断模式、DMA模式)的配置与使用示例 + 串口重定向 + 使用HAL扩展函数实现不定长数据接收

    目录   总览 使用CUBEMX创建工程的基本配置 CUBEMX中的配置 Keil中的配置 实物连接 串口轮询模式 轮询模式HAL库函数 特点 实验一:发送数据给单片机并让其返回相同值 串口重定向 串口中断模式 在CUBEMX中打开串口中断 中断模式HAL库函数 特点 实验二:使用中断回调完成实验一

    2024年04月10日
    浏览(74)
  • STM32系列(HAL库) ——使用串口打印的3种方式

    1、硬件: STM32C8T6最小系统板 USB-TTL串口模块 ST-Link下载器 2、软件: keil5-IDE cubeMX 1、配置RCC——选择外部时钟源 2、配置SYS—— Serial Wire模式   3、时钟树拉满72M          ......  4、配置串口1      5.创建工程         ...... 1.方式一:使用微库(Use MicroLIB) ①:需要在 u

    2024年01月25日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包