这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 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 <stdio.h>

然后直接

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 跳转至

回复

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