这段代码的含义就是把__io_putchar或者fputc函数重定义为HAL_UART_Transmit函数。 把这段代码放在最开头的位置 然后你就可以愉快的使用printf函数了。 cnt++;// 原先的格式化字符串就不需要了// sprintf(str,"cnt=%d\n",cnt);// HAL_UART_Transmit(&huart1,str,20,50);//通过usart1把str字符串发送出去...
重定向需要完成三步: 初始化串口 包含stdio.h头文件 在keil中勾选使用C库 (Use MicroLIB) 重写fputc函数(以串口1为例) #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif PUTCHAR_PROTOTYPE { HAL_UART_Trans...
包含stdio.h头文件 在keil中勾选使用C库 (Use MicroLIB) 重写fputc函数(以串口1为例) #ifdef__GNUC__#definePUTCHAR_PROTOTYPE int __io_putchar(int ch)#else#definePUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)#endifPUTCHAR_PROTOTYPE{HAL_UART_Transmit(&huart1, (uint8_t *)&ch,1,0xFFFF);...
然后就可以在下方添加重定向的程序了: /* USER CODE BEGIN 1 */intfputc(intch,FILE * f){HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,0xffff);returnch;}intfgetc(FILE * f){uint8_tch=0;HAL_UART_Receive(&huart1,&ch,1,0xffff);returnch;}/* USER CODE END 1 */ 这边要注意的是,我...
HAL_UART_Receive(&huart1,&ch, 1, 0xffff); return ch; } //后面直接使用printf函数即可: printf("AnQi测试\r\n"); 若不想自己封装代码,只需把usart_printf.c复制到主函数即可。 3.主函数main.c 记得在主函数中引入.h文件 直接使用printf即可,和C语言中的用法相同 ...
首先在main.c文件中添加标准输入输出库 #include <stdio.h> 然后在stm32cubemx生成的文件中,找到usart.c文件,在后面添加如下代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include "stdio.h" #include "stm32f1xx_hal.h" ...
STM32 hal_printf重定向操作只需要在uart.c文件中添加如下代码, #include "stdio.h" extern UART_HandleTypeDef huart1; uint8_t ch; uint8_t ch_r; /*fputc*/ int fputc(int c, FILE * f) { ch=c; HAL_UART_Transmit(&huart1,&ch,1,1000); return c; 单片机 IAR单片机 下载并关注上传...
首先,新建一个嵌入式工程,通过Clion选择配置,如选择STM32f103c8t6芯片并设置debug模式。在配置USART时,选择异步通信模式,并调整波特率等参数。然后,确保时钟树设置正确,并在Project Manager项目配置中同步。硬件连接时,连接STLINK和CH340模块,注意TXD和RXD的对应。接下来,使用HAL_UART_Transmit函数...
对于STM32CubeIDE的用户来说,重定向printf到串口是常见的需求。实现这一功能通常涉及直接在putchar函数体内将字符发送出去,这在HAL库中可能需要使用阻塞模式的UART传输函数。然而,采用DMA辅助串口自动发送是一种更高效的方法,它允许在非阻塞模式下快速传输数据。这不仅提高了传输速度,还能确保程序在数据...
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 等一些格式输出。