STM32使用CUBEMX+Keil串口输出重定向方法
环境配置说明:
PC:win10专业版 版本号2009 Keil:uversiobV5.21a STM32CUBEMX:V6.5.0 测试用开发板:STM32F407VET6核心板 F4固件库:STM32Cube FW_F4 V1.27.0
重要说明
如果要使用printf函数来打印串口数据,1、串口配置好;2、keil需要设置使用MicroLIB;3、在“usart.h”中需要包含“#include “stdio.h””(注:有的串口函数可能是“uart.h”,同理)如下图所示。这个是大前提,如果这没设置,后面的配置就没用了。 然后需要在“USART.h”包含stdio.h头文件如下图
方式一:在“USART.C”添加下列这段代码即可
#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(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
方式二:在“USART.C”添加下列这段代码即可
int fputc(int ch, FILE *fp);
int fgetc(FILE *fp);
int fputc(int ch, FILE *fp)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
return ch;
}
int fgetc(FILE *fp)
{
uint8_t ch = 0;
HAL_UART_Receive(&huart1, &ch, 1, 0xffff);
return ch;
}
其他方式:这个遇到了再补上来
如何修改串口
上面两段代码,都只要修改这句和就可以了 *HAL_UART_Transmit(&huart1, (uint8_t )&ch, 1, 0xffff); 将huart1换成你设置的串口就可以了。 另外需要说明的是stdio.h头文件要放在“USART.H”头文件中,不然其他地方使用会报警告甚至出错。
|