STM32 CubeMx 学习笔记-串口通信

1.CubeMx 设置

STM32 CubeMx 学习笔记-串口通信_第1张图片
STM32 CubeMx 学习笔记-串口通信_第2张图片
STM32 CubeMx 学习笔记-串口通信_第3张图片
STM32 CubeMx 学习笔记-串口通信_第4张图片
STM32 CubeMx 学习笔记-串口通信_第5张图片
STM32 CubeMx 学习笔记-串口通信_第6张图片
STM32 CubeMx 学习笔记-串口通信_第7张图片
STM32 CubeMx 学习笔记-串口通信_第8张图片
按上面设置好,生成代码。注意串口引脚要和电路板一致!

2.测试串口和printf重写

生成代码后,用HAL_UART_Transmit()测试串口能否正常使用。

HAL_UART_Transmit(&huart1,(uint8_t*)"hello",5,100);
HAL_Delay(1000);

测试正常后,下面重写printf函数

注意先在keil里设置Ues MicroLIB,不然重写没用1
STM32 CubeMx 学习笔记-串口通信_第9张图片
下面介绍2种方法:

第一种

在main.c中加#include “stdio.h”,然后在main()之前加入以下代码:

int fputc(int ch, FILE *f)
{
	/* ·¢ËÍÒ»¸ö×Ö½ÚÊý¾Ýµ½´®¿ÚDEBUG_USART */
	HAL_UART_Transmit(&UartHandle, (uint8_t *)&ch, 1, 1000);	
	
	return (ch);
}

第二种

在uart.c中加#include “stdio.h”,然后在uart.c最后加入以下代码:

#ifdef __GNUC__
  /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
     set to 'Yes') calls __io_putchar() */
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
PUTCHAR_PROTOTYPE
{
  /* Place your implementation of fputc here */
  /* ?????????????? */
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
  return ch;
}

这样就可以了。

你可能感兴趣的:(stm32,单片机,学习)