这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 嵌入式开发» STM32» STM32G070RB探测6-串口发送及重定向printf函数到串口输出

共13条 1/2 1 2 跳转至

STM32G070RB探测6-串口发送及重定向printf函数到串口输出

高工
2020-12-23 23:04:08 打赏
本来说要先写定时器,但我意识到,如果没有打印功能,调试起来很难受,所以先简单的搞一下串口输出,并且重定向printf,这样我们就能先实现printf功能,美汁汁(详细的肯定留给大Z老师讲了)老规矩,先点点点

我们之前生成的项目中已经配置好了串口

如果没有的话,需要我们再配置,连接stlink的串口是串口2 PA2PA3,我们直接点即可(按图即可)

首先我们测试一下

打开uart库的头文件

简单看下,都是hal库通用的函数

我们使用这个函数,阻塞式发送

声明

extern UART_HandleTypeDef huart2;

在while前加两句函数

uint8_t hello[13] = "Hello World\r\n"; HAL_UART_Transmit(&huart2, (uint8_t *)&hello, 13,0xFF);

编译打印

然后重定向

在usart.c最后加上函数

/* USER CODE BEGIN 1 */ #include "stdio.h" #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_Transmit(&huart2, (uint8_t*) &ch, 1, 0xffff); return ch; } /* USER CODE END 1 */

同时在main函数中调用

#include 

然后直接

printf("Hello World\r\n");

针不戳




关键词: STM32 单片机

管理员
2020-12-24 09:47:37 打赏
2楼

高效输出,针不戳~


高工
2020-12-24 10:35:33 打赏
3楼

突然间就高产了~真不戳


院士
2020-12-24 11:26:07 打赏
4楼

调试信息的输出太有学问了。


高工
2020-12-27 23:11:06 打赏
5楼

学到了


菜鸟
2022-01-11 11:02:35 打赏
6楼

Hi :


请问一下为什么我的IAR 9.20版本 按照你上述操作STM32开发板printf 不能重定向呢?还是输出不了打印,

  1. uint8_t hello[13] ="Hello World\r\n";

  2. HAL_UART_Transmit(&huart2, (uint8_t *)&hello, 13,0xFF);

上面这个函数是可以打印的,但是直接使用printf 就不打印了,楼主有遇到过吗?


菜鸟
2022-01-11 11:24:16 打赏
7楼

解决了要使用putchar就可以打印了,fputc不行,

int putchar(int ch)

{

HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xFFFF);

return ch;

}



专家
2022-01-14 09:26:47 打赏
8楼

感谢分享!


专家
2022-01-15 11:07:33 打赏
9楼

谢谢分享


专家
2022-01-16 07:02:36 打赏
10楼

感谢分享


共13条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]