这段代码的含义就是把__io_putchar或者fputc函数重定义为HAL_UART_Transmit函数。 把这段代码放在最开头的位置 然后你就可以愉快的使用printf函数了。 cnt++;// 原先的格式化字符串就不需要了// sprintf(str,"cnt=%d\n",cnt);// HAL_UART_Transmit(&huart1,str,20,50);//通过usart1把str字符串发送出去...
printf("Hello, I am %s\r\n", "iii"); // printf输出字符串 printf("Test int: i = %d\r\n", 100); // printf输出int型数据 printf("Test float: i = %f\r\n", 1.234); // printf输出float型数据 printf("Test hex: i = 0x%2x\r\n",100); // printf输出16进制数据 printf("Test ...
例如:printf输出到串口,需要将fputc里面的输出指向串口(重定向),方法如下:只要自己添加一个int fputc(int ch, FILEf)函数,能够输出字符就可以了。 在usart.c文件后面添加如下代码,代码中添加了#ifdef宏定义进行条件编译,如果使用GUNC编译,则PUTCHAR_PROTOTYPE 定义为int __io_putchar(int ch)函数,否则定义为int ...
我们在使用其他单片机的时候喜欢使用printf函数来输出代码运行日志,或者检查bug;但是stm32不支持printf函数直接使用,所以我们需要重定向串口,使用串口助手来查看printf输出的内容。 2.代码 话不多说上代码,我已经封装好了,大家直接粘贴进自己的工程即可。 usart_printf.h此文件声明了所使用的函数 #ifndef __USART_PRINT...
试发printf重定向(串口)(HAL库) 啊,因为是萌新,所以先发一条地球人都能明白的重定向功能叭。 本来躺在stdio.h下舒适地使用printf与scanf的我们在进入了串口上位机时,便不得不使用类似于Transmit与Receive这样带着前后缀不方便记忆还有着一大长串的格式的函数来进行数据的收发。那么为了解决这个问题,便使用到重定向...
STM32的HAL库开发系列 - 串口重定向打印函数 那既然有了printf,那么为什么还要自定义打印函数呢?因为当遇到多个串口都需要使用printf时就没有办法了,所以只能自己定义打印函数,让所有串口都能像使用printf函数一样做串口输出。 首先需要包含几个头文件: #include <string.h> ...
对于变量发送,可以尝试格式化字符串或使用printf重定向,后者更为简便。通过将__io_putchar或fputc函数重定义为HAL_UART_Transmit函数,你就可以在代码中无缝使用printf函数输出数据。整个过程涉及基础的通信原理、硬件连接和编程实践,通过本文,你将能够掌握串口通信和printf重定向在HAL环境中的应用。
通过本篇博客您将学到:STM32CubeMX创建串口例程 HAL库UATR函数库 重定义printf函数 HAL库,UART中断...
HAL_UART_Transmit(&UartHandle,temp,1,2); //UartHandle是串口的句柄 } //重定向函数2 PUTCHAR_PROTOTYPE { HAL_UART_Transmit(&UARTHandle, (uint8_t *)&ch, 1, 0xFFFF); return ch; } 在keil中勾选使用C库 之后就可以 使用printf()函数,像C语言一样输出打印信息,支持 %d %x 等一些格式输出。
对于printf() 函数我们并不陌生,初学C语言使用的第一个函数,其作用是在终端打印显示格式化字符串。 但是如果我们使用的是单片机运行C语言代码,如果不经任何修改直接使用 printf() 函数,结果是什么现象都没有。要想使用这个函数,常规方法是重定向 printf() 函数,结合串口来打印到串口助手上位机。这里的重定向就非常复...