stm32cubeMX+FreeRTOS(1)——USART 串口打印
一、STM32CubeMX配置RTOS+USART
1.配置RTOS
默认前面的SYS和RCC配置完成
2.配置USART
二、printf重定向
#include “stdio.h”
#include "usart.h"
#define DEBUG_UART_TIMEOUT 500
/**
* 函数功能: 重定向c库函数printf到DEBUG_USART1
* 输入参数: 无
* 返 回 值: 无
* 说 明:无
*/
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, DEBUG_UART_TIMEOUT);
return ch;
}
/**
* 函数功能: 重定向c库函数getchar,scanf到DEBUG_USART1
* 输入参数: 无
* 返 回 值: 无
* 说 明:无
*/
int fgetc(FILE *f)
{
uint8_t ch = 0;
HAL_UART_Receive(&huart1, &ch, 1, DEBUG_UART_TIMEOUT);
return ch;
}
注意
1.一定要包含#include <stdio.h>头文件
2.在KEIL里勾选 Use MicroLIB
二、MicroLIB
使用MicroLIB,简化嵌入式开发操作,例如你用printf()函数的时候,就会从串口1输出字符串,当然也可以重定义到其他串口;
使用MicroLIB会优化代码空间,但会降低某些程序的执行效率(比如: memcpy()),效率换空间;
由于MicroLIB不支持浮点运算,所以在有FPU单元的MCU上,使用MicroLIB并开启FPU会让程序死机或跑飞。
Microlib不支持C++,在使用C++开发MCU时,首要条件是不能使用Microlib;
参考:https://blog.csdn.net/qq_35697978/article/details/120138859