跳转至

STM32CubeIDE 串口重定向(printf)及输出浮点型

重定向 printf 至串口

usart.c
/* USER CODE BEGIN 0 */

#include "stdio.h"

/* USER CODE END 0 */

/* USER CODE BEGIN 1 */

//_write 函数在 syscalls.c 中, 使用 __weak 定义, 所以可以直接在其他文件中定义 _write 函数
__attribute__((weak)) int _write(int file, char *ptr, int len)
{
    int DataIdx;
    for (DataIdx = 0; DataIdx < len; DataIdx++)
    {
          while ((USART1->SR & 0X40) == 0); //等待发送完毕
          USART1->DR = (uint8_t) *ptr++;
    }
    return len;
}

/* USER CODE END 1 */

STM32CubeIDE 串口输出浮点型

  1. 在 STM32CubeIDE 侧栏选中工程,右键选择 Properties - C/C++ Build - Settings - MCU GCC Linker - Miscellaneous
  2. Other flags 栏添加一个项目,填 -u_printf_float
  3. 重新编译即可。

HAL_UART_Receive_IT 乱码问题

HAL_UART_Transmit(&huart1, (uint8_t *)aRxBuffer, 10,0xFFFF); 的字长(10)改为 1 即可。

参考与致谢

原文地址:https://wiki-power.com/
本篇文章受 CC BY-NC-SA 4.0 协议保护,转载请注明出处。