野火MINI_STM32_CubeMX_USAT1串口_printf重定向

本文档介绍了如何使用STM32CubeMX配置串口1,并实现C库函数printf和scanf的重定向,以便通过串口进行数据收发。在STM32CubeMX中完成了RCC、SYS和串口配置,同时在main.c文件中添加了必要的代码段,实现了数据的阻塞式接收和发送。此外,还提到了在状态栏魔术棒中启用UseMicroLIB选项以调用库函数。
摘要由CSDN通过智能技术生成

使用了串口1,进行开发

我的原理图是如此,另外需要将A9和A10 两个PIN使用跳冒跳在一起。

原理图
在这里插入图片描述

项目的初始化和生成都由stm32cubeMX生成

  1. RCC 配置
    在这里插入图片描述
  2. sys配置

在这里插入图片描述
3. 串口配置
在这里插入图片描述
clk 配置信息
在这里插入图片描述
project 配置
在这里插入图片描述

在这里插入图片描述

main.c函数的配置

1. 增加代码

这个部分需要增加在main函数外面

/* USER CODE BEGIN 0 */
#include <stdio.h>
 //重定向c库函数printf到串口USARTx,重定向后可使用printf函数
 int fputc(int ch, FILE *f)
 {
     /* 发送一个字节数据到串口USARTx */
     HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
     return (ch);
 }

 //重定向c库函数scanf到串口USARTx,重写向后可使用scanf、getchar等函数
 int fgetc(FILE *f)
 {
     int ch;
     /* 等待串口输入数据 */
     while (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE) == RESET);
     HAL_UART_Receive(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
     return (ch);
 }

/* USER CODE END 0 */

增加在while 函数中的数据
下面代码实现将接收到的数据,发送出来,
需要注意,这里是阻塞方式接收,如果没收到数据就一直停止在while位置,等待输入

  while (1)
  {
    /* USER CODE END WHILE */
        uint8_t ch[10];
        /* 等待串口输入数据 */
        while (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE) == RESET);
        HAL_UART_Receive(&huart1, (uint8_t *)&ch, 10, 0x2F);
        printf("接收到字符:%s \r\n",ch);
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

在状态栏魔术棒中,打开选项,Target,选上“调用库函数”Use MicroLIB在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值