STM32学习-HAL库 串口通信

学完标准库之后,本来想学习freertos的,但是看了很多教程都是移植的HAL库程序,这里再学习一些HAL库的内容,有了基础这里直接学习主要的外设。

HAL库对于串口主要有两个结构体UART_InitTypeDef和UART_HandleTypeDef,前者对串口的通信参数配置,后者是对串口整体进行配置。

typedef struct
{uint32_t BaudRate; /* 波特率 */uint32_t WordLength; /* 字长 */uint32_t StopBits; /* 停止位 */uint32_t Parity; /* 校验位 */uint32_t Mode; /* UART 模式 */uint32_t HwFlowCtl; /* 硬件流设置 */uint32_t OverSampling; /* 过采样设置 */
}UART_InitTypeDef;
typedef struct
{USART_TypeDef *Instance; /* UART 寄存器基地址 */UART_InitTypeDef Init; /* UART 通信参数 */uint8_t *pTxBuffPtr; /* 指向 UART 发送缓冲区 */uint16_t TxXferSize; /* UART 发送数据的大小 */__IO uint16_t TxXferCount; /* UART 发送数据的个数 */uint8_t *pRxBuffPtr; /* 指向 UART 接收缓冲区 */uint16_t RxXferSize; /* UART 接收数据大小 */__IO uint16_t RxXferCount; /* UART 接收数据的个数 */DMA_HandleTypeDef *hdmatx; /* UART 发送参数设置(DMA) */DMA_HandleTypeDef *hdmarx; /* UART 接收参数设置(DMA) */HAL_LockTypeDef Lock; /* 锁定对象 */__IO HAL_UART_StateTypeDef gState; /* UART 发送状态结构体 */__IO HAL_UART_StateTypeDef RxState; /* UART 接收状态结构体 */__IO uint32_t ErrorCode; /* UART 操作错误信息 */
}UART_HandleTypeDef; 

在CubeMX生成代码必须使用1.8.5的HAL库,和1.8.0有些出入,新定义了一些成员。在HAL_UART_Init()传入实例化的结构体就可完成串口的初始化。注意,这里仅仅是通信相关的配置,引脚的配置MX自动完成了,如果使用了中断,那么也自动设定。

串口的主要功能就是接收和发送。HAL_UART_Transmit和HAL_UART_Receive都是阻塞方式发送和接收,执行完之后就不再执行,还阻碍了其他代码的运行。一般使用中断方式进行收发,涉及的比较复杂,HAL_UART_Receive_IT()和HAL_UART_Transmit_IT(),这里给出接收的图解。

发送和接收类似,不再赘述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/360552.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VC++开发积累——vc++6.0中删除函数的方法,右键,Delete

目录 引出插曲:删除函数的方法多行注释的实现代码输入的自动提示搜索出来,标记和取消标记跳转到上一步的位置 ctrl TAB 总结其他规范和帮助文档创建第一个Qt程序对象树概念信号signal槽slot自定义信号和槽1.自定义信号2.自定义槽3.建立连接4.进行触发 自…

26.高级特性(上)

目录 一、不安全的Rust二、不安全的超能力2.1 概念2.2 解引用裸指针2.3 调用不安全的函数或方法2.3 创建不安全代码的安全抽象2.4 使用extern函数调用外部代码2.5 访问或修改可变静态变量2.6 实现不安全trait2.7 访问联合体中的字段 三、高级trait3.1 关联类型在trait定义中指定…

百元蓝牙耳机哪款好?值得购买的百元蓝牙耳机品牌有这些

在如今移动互联网时代,蓝牙耳机已经成为不少人生活中的必备产品。然而,市面上的蓝牙耳机种类繁多,价格也参差不齐,选择一款性价比高的产品成了不少消费者的难题。尤其是针对百元左右的蓝牙耳机,更是需要慎重选择。那么…

考研数学|张宇和武忠祥,强化能不能同时跟?

可以说你跟武老师学明白了,120完全没问题!如果追求更高,宇哥的怀抱也想你敞开! 学长我21年一战数学83,总分没过线,22年二战143,逆袭上岸211!市面上的老师我基本都听过,最…

【vite】define 全局常量定义

&#x1f9ed; define 说明 类型&#xff1a; Record<string, any> 定义全局常量替换方式。其中每项在开发环境下会被定义在全局&#xff0c;而在构建时被静态替换。 Vite 使用 esbuild define 来进行替换&#xff0c;因此值的表达式必须是一个包含 JSON 可序列化值&a…

[MySql]两阶段提交

文章目录 什么是binlog使用binlog进行恢复的流程 什么是redolog缓冲池redologredolog结构 两阶段提交 什么是binlog binlog是二进制格式的文件&#xff0c;用于记录用户对数据库的修改&#xff0c;可以作用于主从复制过程中数据同步以及基于时间点的恢复&#xff08;PITR&…

Matlab|【防骗帖】考虑时空相关性的风电功率预测误差建模与分析

目录 1 主要内容 2 部分程序 3 下载链接 1 主要内容 这个程序《考虑时空相关性的风电功率预测误差建模与分析》画的图片非常漂亮&#xff0c;和原文献基本一致&#xff0c;但是实际上内容并未实现出来&#xff0c;主要就是利用现有的风电预测的数据和结果做了相关的图&#…

Verilog的逻辑系统及数据类型(一):四值逻辑系统

目录 1. Verilog采用的四值逻辑系统2.主要数据类型2.1 net&#xff08;线网&#xff09;2.2 寄存器类 &#xff08;register)2.3 Verilog中net和register声明语法2.3.1 net声明2.3.2 寄存器声明 2.4 选择正确的数据类型2.5 选择数据类型时常犯的错误2.5.1 信号类型确定方法总结…

目标检测数据集 - 手机屏幕表面表面缺陷检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍&#xff1a;手机屏幕表面缺陷检测数据集&#xff0c;真实采集高质量手机屏幕表面含缺陷图片数据&#xff0c;数据集含多款不同型号和品牌的手机屏幕表面图片数据&#xff0c;包括苹果手机屏、三星手机屏、华为手机屏等数据。数据标注标签包括 Bubble 气泡/水滴、Scr…

现在的Java面试都这么扯淡了吗?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;开发兼过半年面试官 刚开始…

upload-labs第14关

upload-labs第14关 第十四关一、源代码分析代码审计 二、绕过分析a. 制作图片码首先需要一个照片&#xff0c;然后其次需要一个eval.php。 b.上传图片码上传成功 c.结合文件包含漏洞进行访问访问&#xff1a;http://192.168.1.110/upload-labs-master/include.php?filehttp://…

VUE div的右上角的角标/标签

一、效果图 二、代码 <div class"comp-overview"><div class"overview-item" v-for"(item,index) in overviewInfoList" :key"index"><div class"angle_mark"><span>{{item.label}}</span>&…

重学java 73.设计模式

本想送你一本沉思录&#xff0c;可该迷途知返的人是我 —— 24.6.18 设计模式 设计模式(Design pattern)&#xff0c;是一套被反复使用、经过分类编目的、代码设计经验的总结&#xff0c;使用设计模式是为了可重用代码、保证代码可靠性、程序的重用性,稳定性。 1995 年&#x…

Python | Leetcode Python题解之第165题比较版本号

题目&#xff1a; 题解&#xff1a; class Solution:def compareVersion(self, version1: str, version2: str) -> int:n, m len(version1), len(version2)i, j 0, 0while i < n or j < m:x 0while i < n and version1[i] ! .:x x * 10 ord(version1[i]) - o…

HarmonyOS应用开发——Hello World

下载 HUAWEI DevEco Studio: https://developer.harmonyos.com/cn/develop/deveco-studio/#download 同意&#xff0c;进入配置页面&#xff1a; 配置下载源以及本地存放路径&#xff0c;包括nodejs和ohpm: 配置鸿蒙SDK路径&#xff1a; 接受协议&#xff1a; 确认无误后&#…

配置OSPF认证(华为)

#交换设备 配置OSPF认证-基于华为路由器 OSPF&#xff08;开放最短路径优先&#xff09;是一种内部网关协议&#xff08;IGP&#xff09;&#xff0c;用于在单一自治系统&#xff08;AS&#xff09;内决策路由。OSPF认证功能是路由器中的一项安全措施&#xff0c;它的主要用途…

【Docker】rancher 管理平台搭建

目录 1. 所有节点安装docker 2. 所有节点配置/etc/sysconfig/docker 文件修改如下配置 3. 配置证书 4. 镜像仓库导入镜像 5. 创建镜像仓库 5.1 查询上传的 image id 5.2 镜像打标签 5.3 镜像上推 6. server 节点 7. client 节点 8. 在 server 节点启动 9. 查看运行…

前端:HTML、CSS、JavaScript 代码注释 / 注释与代码规范

一、HTML 行内注释 HTML注释是在HTML代码中添加说明和解释的一种方法&#xff0c;这些注释不会被浏览器渲染或显示在页面上&#xff0c;而是被浏览器忽略。HTML注释对于代码的可读性、可维护性和团队协作非常重要。 1.1、HTML注释的语法 HTML注释的语法是以<!--开始&…

优化系统小工具

一款利用VB6编写的系统优化小工具&#xff0c;系统优化、桌面优化、清理垃圾、查找文件等功能。 下载:https://download.csdn.net/download/ty5858/89432367

Emacs之显示blame插件:blamer、git-messenger(一百四十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…