06_STM32Cubeide开发_串口通讯

本文详细介绍了STM32串口的硬件接收与发送原理,包括串口发送的TDR和移位寄存器操作,以及串口接收的中断处理。此外,还详细阐述了如何在STM32CubeIDE中重定义printf函数以实现串口输出,并讲解了串口接收中断的配置与应用,强调了回车换行作为接收结束标志的重要性。
摘要由CSDN通过智能技术生成

一、STM32串口硬件接收与发送框图

在这里插入图片描述

0.补充

  • 串口是以ascii码字符(8位二进制数据)来通讯的
  • 串口的物理线 数据是一位一位传输的

1.串口发送

  1. 数据写入发送数据寄存器TDR
  2. 数据从发送数据寄存器TDR逐步转入发送移位寄存器 ()
    -------前:TXE=0-----------数据全部转入发送移位寄存器 --------后:TXE=1--------------
  3. 发送移位寄存器将每一帧数据逐步发送到引脚上
    -------前:TC=0-----------最后一帧数据发送完 --------后:TC=1--------------
  4. 串口发送完成中断按照设置是否执行

2.串口接收

  1. 数据从引脚到接收移位寄存器
  2. 数据从接收移位寄存器接收数据寄存器RDR
    -------前:RXNE=0-----------数据全部转入接收数据寄存器RDR --------后:RXNE=1--------------
  3. 数据可以被读取,也可以产生接收中断

二、printf串口重定义(串口发送)

1.将syscall.c文件在工程编译中排除

(因为此文件和我们即将要添加的文件相冲突)
在这里插入图片描述
在这里插入图片描述

2.添加两个文件到工程中

  • 添加retarget.h文件到Core >> Inc中
  • 添加retarget.c文件到Core >> Src中

在这里插入图片描述

/*
 * retarget.c
 *
 *  Created on: 2021年10月20日
 *      Author: Administrator
 */

#include <_ansi.h>
#include <_syslist.h>
#include <errno.h>
#include <sys/time.h>
#include <sys/times.h>
#include <limits.h>
#include <signal.h>
#include <../Inc/retarget.h>
#include <stdint.h>
#include <stdio.h>
#if !defined(OS_USE_SEMIHOSTING)
#define STDIN_FILENO  0
#define STDOUT_FILENO 1
#define STDERR_FILENO 2

UART_HandleTypeDef *gHuart;

void RetargetInit(UART_HandleTypeDef *huart)  {
   
  gHuart = huart;
  /* Disable I/O buffering for STDOUT  stream, so that
   * chars are sent out as soon as they are  printed. */
  setvbuf(stdout, NULL, _IONBF, 0);
}
int _isatty(int fd) {
   
  if (fd >= STDIN_FILENO && fd <=  STDERR_FILENO)
    return 1;
  errno = EBADF;
  return 0;
}
int _write(int fd, char* ptr, int len) {
   
  HAL_StatusTypeDef hstatus
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
STM32CubeIDE是一款集成开发环境(IDE),用于开发STM32系列微控制器应用程序。它提供了许多工具和资源,帮助开发人员快速、高效地开发STM32应用程序。 在STM32CubeIDE中,串口通讯是一个非常常见的应用。STM32微控制器通常具有多个串口,可以用于与其他设备进行通信,例如传感器、显示屏、WiFi模块等。以下是在STM32CubeIDE中实现串口通讯的步骤: 1. 配置串口引脚 在STM32CubeIDE中,可以使用CubeMX插件来配置STM32微控制器的引脚。在CubeMX中,选择相应的微控制器型号,然后选择“Pinout”选项卡。在这里,可以选择要用作串口引脚的GPIO引脚。 2. 配置串口外设 在CubeMX中,选择“Configuration”选项卡,然后选择“USART”外设。在这里,可以配置串口的波特率、数据位、停止位和校验位等参数。 3. 生成代码 在CubeMX中完成串口配置后,可以单击“Generate Code”按钮生成相应的代码。这将生成一个包含初始化串口的代码的C文件。 4. 编写串口通讯代码 在生成的代码中,可以使用HAL库函数来编写串口通讯代码。HAL库提供了许多函数,可以发送和接收数据,以及处理串口中断等。 5. 测试代码 在编写完串口通讯代码后,可以将代码下载到STM32微控制器中,然后使用串口调试工具进行测试。串口调试工具可以显示发送和接收的数据,并且可以检查数据是否正确。 总之,在STM32CubeIDE中实现串口通讯需要进行引脚配置、外设配置、代码编写和测试。通过使用HAL库函数,可以轻松地实现串口通讯,并与其他设备进行通信。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值