STM32cubemx教程及STM32入门(四)串口通信

STM32cubemx教程及STM32入门(四)串口通信 2022.8.24

前言

本章主要介绍串口通信的概念以及在STM32单片机上通过STM32CubeMX和HAL库进行串口通信,同时重定义了printf函数。

简介

在串行通信中,一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以“起始位”开始,以“停止位”结束。在进行传输之前,双方一定要使用同一个波特率设置。波特率就是每秒钟传输的数据位数。
常用的两种基本串行通信方式包括同步通信和异步通信。
异步通信不带时钟同步信号(UART,单总线通信接口,LIN,调制解调,IrDA)
同步通信带时钟同步信号传输(SPI,IIC通信接口,智能卡)

UART和USART

UART和USART的区别见下图
在这里插入图片描述

STM32的USART

在这里插入图片描述 我们通常使用的是异步通信.异步通信规定传输的数据格式由起始位(start bit)、数据位(data bit)、奇偶校验位(parity bit)和停止位(stop bit)组成。
如下图为32的USART内部结构
在这里插入图片描述下图为STM32的串行异步通信引脚接口
在这里插入图片描述

USART的寄存器

USART_SR:状态寄存器
在这里插入图片描述

USART_DR:数据寄存器
在这里插入图片描述

USART_BRR:波特率寄存器
这个寄存器的位15:4存放的是USARTDIV(USART分频器除法因子)的整数部分,位3:0存放的是USARTDIV的小数部分
在这里插入图片描述

波特率计算方法

在这里插入图片描述PCLK1:用于USART2~5
PCLK2:用于USART1

通过上述公式我们可以计算出USARTDIV的值,向USART_BRR写入这个值就可以控制波特率

使用STM32Cubemx编写定时器中断程序的步骤

在这里插入图片描述在这里插入图片描述首先仍然是先配置HSE和时钟树,此时PCLK1为36MHz,PCLK2为72MHz

接着如下图所示配置串口初始化
Mode(模式)选择栏中:
Asynchronous异步通信
Synchronous同步通信

正下方分别是:
Baud Rate 波特率 115200
Word Length 传输数据长度 8
Parity 奇偶校验位 none
Stop Bits 停止位 1

发送和接收都使能
在这里插入图片描述接着配置中断
在这里插入图片描述生成文件与之前相同
在这里插入图片描述

HAL库中的USART函数

我们打开stm32f1xx_hal_uart.h头文件,可以看到hal库中和usart相关的所有函数

初始化函数

在这里插入图片描述

IO操作函数

在这里插入图片描述

这么多IO操作函数,大家只需要掌握常用几个就行
HAL_UART_Transmit();串口发送数据,使用超时管理机制
HAL_UART_Receive();串口接收数据,使用超时管理机制
HAL_UART_Transmit_IT();串口中断模式发送
HAL_UART_Receive_IT();串口中断模式接收
HAL_UART_Transmit_DMA();串口DMA模式发送
HAL_UART_Transmit_DMA();串口DMA模式接收

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

传输中断函数

在这里插入图片描述
这里只要重点掌握以下即可

HAL_UART_IRQHandler(UART_HandleTypeDef *huart); //串口中断处理函数

该函数会在中断处理中被调用。功能:对接收到的数据进行判断和处理 判断是发送中断还是接收中断,然后进行数据的发送和接收,在中断服务函数中使用。如果接收数据,则会进行接收中断处理函数,如果发送数据,则会进行发送中断处理函数。
在这里插入图片描述

HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart); //串口发送中断回调函数
HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart); //串口接收中断回调函数

串口查询函数

HAL_UART_GetState(); 判断UART的接收是否结束,或者发送数据是否忙碌

在这里插入图片描述

重写printf函数

在usart.c文件中可看到串口1的初始化函数MX_USART1_UART_Init(void),以及管脚配置函数HAL_UART_MspInit()。C语言中的标准库中所用的标准输出函数,默认的输出设备是显示器,要实现串口或LCD的输出,必须重新定义标准库函数里与输出函数相关的函数。例如:printf输出到串口,需要将fputc里面的输出指向串口(重定向),方法如下:只要自己添加一个int fputc(int ch, FILE *f)函数,能够输出字符就可以了。
在usart.c文件后面添加如下代码,代码中添加了#ifdef宏定义进行条件编译,如果使用GUNC编译,则PUTCHAR_PROTOTYPE 定义为int __io_putchar(int ch)函数,否则定义为int fputc(int ch, FILE *f)函数。
在这里插入图片描述

  • 10
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32CubeMX是一种集成开发环境(IDE),专为STM32微控制器系列设计的软件。它可以帮助开发人员快速而方便地生成包含配置和初始化代码的完整项目。以下是描述STM32CubeMX教案的详细内容: 教案目标: 1. 了解STM32CubeMX的基本概念和功能。 2. 学习如何使用STM32CubeMX生成项目代码。 3. 学习如何配置STM32微控制器的引脚、时钟和外设。 4. 掌握如何添加中断和配置外设的参数。 5. 学会使用STM32CubeMX生成的代码进行应用开发。 教案内容: 1. 简介部分: - 介绍STM32CubeMX的作用和优势。 - 介绍STM32系列微控制器的特点和应用领域。 - 引导学生了解STM32CubeMX的界面和基本操作。 2. 使用STM32CubeMX生成项目代码: - 讲解如何创建一个新项目。 - 引导学生选择适当的微控制器型号。 - 演示如何配置引脚、时钟和外设。 - 解释每个配置选项的作用和影响。 - 演示如何生成项目代码。 3. 配置外设和中断: - 解释不同外设的功能和使用场景。 - 演示如何配置外设参数,如UART、SPI和I2C。 - 介绍中断的概念和作用。 - 演示如何添加中断处理函数和配置中断优先级。 4. 在生成的代码上进行应用开发: - 引导学生了解生成的代码结构和功能文件。 - 解释主要函数的作用和流程。 - 演示如何在生成的代码上添加应用逻辑。 - 引导学生进行基本的应用开发练习。 教案总结: 通过本教案,学生将了解并掌握如何使用STM32CubeMX生成项目代码,并配置和初始化STM32微控制器的引脚、时钟和外设。他们还将学会添加中断和配置外设的参数,以及在生成的代码上进行应用开发。这将为学生将来的STM32微控制器开发奠定坚实的基础,提高他们的开发效率和质量。 ### 回答2: STM32CubeMX是一种基于STM32微控制器的软件配置工具,它的教案主要涵盖以下内容: 首先,教案会介绍STM32CubeMX的基本概念和使用方法。学生将学习如何下载和安装STM32CubeMX软件,并了解其主要功能和特点。教案还会演示如何创建一个新的STM32项目,并通过图形化界面来配置STM32微控制器的各种外设,如GPIO、定时器、串口等。 其次,教案会详细介绍STM32CubeMX的配置选项和参数设置。学生将学习如何选择适合自己的STM32系列微控制器,并根据项目的需求配置相应的时钟源、时序参数和电源管理选项。教案还会讲解如何配置外设的工作模式、引脚分配和中断设置,以及如何通过STM32CubeMX自动生成初始化代码。 然后,教案会介绍STM32CubeMX的代码生成和项目管理功能。学生将学习如何生成用于不同开发环境(如Keil、IAR等)的初始化代码,并将其集成到自己的项目中。教案还会演示如何使用STM32CubeMX的项目管理功能,包括添加和删除文件、导出和导入工程等。 最后,教案会引导学生进行实际的STM32开发实践。学生将通过实验来探索STM32CubeMX的各种功能和优势,例如通过GPIO控制LED灯、通过UART与PC进行通信等。教案还会提供一些常见问题的解答和调试技巧,帮助学生更好地理解和应用STM32CubeMX。 总的来说,STM32CubeMX教案旨在帮助学生快速入门STM32微控制器的开发,并通过图形化配置工具和自动生成代码的功能提高开发效率,并培养学生的问题解决和调试能力。它是STM32微控制器开发过程中的重要工具,对于初学者和有经验的开发者都具有很大的帮助作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值