当前位置: 首页 > news >正文

STM32 - HAL库UART串口

1.串口初始化配置

/*******************************************************************************
Function: BSP_UART_Init 
Description: 串口初始化
Input:  instance 串口号baudRate: 波特率
Output: 无
Return: 无
*******************************************************************************/
void BSP_UART_Init(USART_TypeDef *instance, uint32_t baudRate)
{if (instance == USART1){huart1.Instance = USART1;huart1.Init.BaudRate = baudRate;huart1.Init.WordLength = UART_WORDLENGTH_8B;huart1.Init.StopBits = UART_STOPBITS_1;huart1.Init.Parity = UART_PARITY_NONE;huart1.Init.Mode = UART_MODE_TX_RX;huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;huart1.Init.OverSampling = UART_OVERSAMPLING_16;if (HAL_UART_Init(&s_uart1) != HAL_OK){Error_Handler();}}else if (instance == USART2){huart2.Instance = USART2;huart2.Init.BaudRate = baudRate;huart2.Init.WordLength = UART_WORDLENGTH_8B;huart2.Init.StopBits = UART_STOPBITS_1;huart2.Init.Parity = UART_PARITY_NONE;huart2.Init.Mode = UART_MODE_TX_RX;huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;huart2.Init.OverSampling = UART_OVERSAMPLING_16;if (HAL_UART_Init(&s_uart2) != HAL_OK){Error_Handler();}}else if (instance == USART3){huart3.Instance = USART3;huart3.Init.BaudRate = baudRate;huart3.Init.WordLength = UART_WORDLENGTH_8B;huart3.Init.StopBits = UART_STOPBITS_1;huart3.Init.Parity = UART_PARITY_NONE;huart3.Init.Mode = UART_MODE_TX_RX;huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;huart3.Init.OverSampling = UART_OVERSAMPLING_16;if (HAL_UART_Init(&s_uart3) != HAL_OK){Error_Handler();}}
}

1.1 外设句柄 xxx_HandleTypeDef

UART_HandleTypeDef huart1;
UART_HandleTypeDef huart2;

第一行表示:名为huart1的、类型为UART_HandleTypeDef型的一个结构体

第二行表示:名为huart2的、类型为UART_HandleTypeDef型的一个结构体

1.2 __UART_HandleTypeDef

stm32f1xx_hal_uart.h文件

代码类型___UART_HandleTypeDef,别名UART_HandleTypeDef

/*** @brief  UART handle Structure definition*/
typedef struct __UART_HandleTypeDef
{USART_TypeDef                 *Instance;        /*!< UART registers base address        */UART_InitTypeDef              Init;             /*!< UART communication parameters      */uint8_t                       *pTxBuffPtr;      /*!< Pointer to UART Tx transfer Buffer */uint16_t                      TxXferSize;       /*!< UART Tx Transfer size              */__IO uint16_t                 TxXferCount;      /*!< UART Tx Transfer Counter           */uint8_t                       *pRxBuffPtr;      /*!< Pointer to UART Rx transfer Buffer */uint16_t                      RxXferSize;       /*!< UART Rx Transfer size              */__IO uint16_t                 RxXferCount;      /*!< UART Rx Transfer Counter           */DMA_HandleTypeDef             *hdmatx;          /*!< UART Tx DMA Handle parameters      */DMA_HandleTypeDef             *hdmarx;          /*!< UART Rx DMA Handle parameters      */HAL_LockTypeDef               Lock;             /*!< Locking object                     */__IO HAL_UART_StateTypeDef    gState;           /*!< UART state information related to global Handle managementand also related to Tx operations.This parameter can be a value of @ref HAL_UART_StateTypeDef */__IO HAL_UART_StateTypeDef    RxState;          /*!< UART state information related to Rx operations.This parameter can be a value of @ref HAL_UART_StateTypeDef */__IO uint32_t                 ErrorCode;        /*!< UART Error code    

huart1.Instance = USART1;这行代码,首先第一点huart1.Instance表示的是结构体huart1中的成员变量Instance。

1.3 Instance成员=USART1

#define USART1              ((USART_TypeDef *)USART1_BASE)

USART1是一个宏。

这个宏是将USART1_BASE(常量)强制转换为USART_TypeDef型结构体指针。

常量强制转化为一个结构体指针,该常量为结构体的起始地址

USART1_BASE被强制转换为USART_TypeDef的起始地址,内存空间将以USART_TypeDef类型进行构建,首址为USART1_BASE,空间内有成员,按其固有类型顺序依次分配内存空间。

根据HAL库的注释,可以知道Instance指向的也是uart寄存器组的基地址。

相关文章:

STM32 - HAL库UART串口

1.串口初始化配置/******************************************************************************* Function: BSP_UART_Init Description: 串口初始化 Input: instance 串口号baudRate: 波特率 Output: 无 Return: 无 ************************************************…...

Vue3 的状态管理库(Pinia)

目录前言&#xff1a;一、什么是 Pinai二、安装与使用pinia三、什么是 store四、state1. 定义 state2. 组件中访问 state五、Getters1. 定义 Getters2. 在组件中使用 Getters六、Actions1. 定义Actions2. 组件中访问 Actions总结&#xff1a;前言&#xff1a; 在编写vue里的项目…...

信息系统项目管理师知识点汇总(2023最新)

信息系统项目管理师 信息系统项目管理师简介如何应对考试考试细节与学习 十大管理 十大管理四十七过程 信息化和信息系统 项目管理基础 项目整体管理 项目范围管理 项目进度管理 项目成本管理 项目质量管理 项目人力资源管理 项目沟通管理 项目干系人管理 项目风险…...

标题标题标题

图床&#xff08;Typora uPic/PicGo 七牛云&#xff09; 图床&#xff08;Typora uPic/PicGo 七牛云&#xff09; 笔者平时使用 Typora 编写 markdown 文档&#xff0c;文档中常常会放置图片&#xff0c;如果文档不需要分享的话&#xff0c;其实讲图片存放在本地就可以了…...

OKR学习总结二

总结 绩效管理不是进行事后管理&#xff0c;而是参与整个过程并进行实时把控。 我们将受益目标分为两个子目标&#xff1a; 新增收入和重复收入。第一部分目标由市场营销部承担&#xff0c;第二个目标则由产品部承担。 简而言之&#xff0c;文化是一系列价值观和信仰的体现&…...

MAC中docker搭建fastdfs

1:首先搭建Docker2:通过Docker搭建fastdfs&#xff08;1&#xff09;查找镜像打开终端通命令查找fastdfs的镜像docker search fastdfs&#xff08;二&#xff09;拉取镜像在找到合适的镜像后执行命令:docker pull delron/fastdfs&#xff08;三&#xff09; 创建storage和track…...

JavaScript 变量

变量是用于存储信息的"容器"。实例var x5;var y6;var zxy;尝试一下 就像代数那样x5y6zxy在代数中&#xff0c;我们使用字母&#xff08;比如 x&#xff09;来保存值&#xff08;比如 5&#xff09;。通过上面的表达式 zxy&#xff0c;我们能够计算出 z 的值为 11。在…...

【前端验证】环境仿真中对于寄存器配置的随机策略讨论

前言 本篇文章旨在讨论环境仿真中对于寄存器配置的随机。 寄存器域的随机性 使用ralgen生成的寄存器本身是rand属性的,也就是说其自身是可以通过约束随机的方式在用例中进行随机性配置的,比如下面这个寄存器: class ral_reg_REG_PRJ_sys_cfg_base_config extends uvm_re…...

Servlet如何读取Web资源文件?【操作演示】

在实际开发中&#xff0c;有时候可能会需要读取Web应用中的一些资源文件&#xff0c;比如配置文件&#xff0c;图片等。为此&#xff0c;在ServletContext接口中定义了一些读取Web资源的方法&#xff0c;这些方法是依靠Servlet容器来实现的。Servlet容器根据资源文件相对于Web应…...

[ vulhub漏洞复现篇 ] Drupal 远程代码执行漏洞(CVE-2019-6339)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…...

flex-shrink和felx-grow

本文就是简单的介绍下flex-shrink和felx-grow的作用和计算方式吧&#xff1b;关于这个介绍也是很多&#xff1b;flex-shrinkflex-shrink是flex布局中的一种方式&#xff0c;简单来说&#xff0c;就是当布局大小小于容器大小的时候&#xff0c;使用flex-shrink能够按照一定的比例…...

将HTTP接口配置成HTTPS

一、使用Java的keytool.exe程序生成本机的TLS许可找到Java的jdk目录进入bin默认安装路径C:\Program Files\Java\jdk1.8.0_91\bin 进入命令面板&#xff0c;在bin的路径栏中输入cmd敲击回车即可使用keytoolkeytool -genkeypair -alias tomcat_https -keypass 123456 -keyalg RSA…...

YOLOV5报错解决办法

&#x1f308;&#x1f308;&#x1f604;&#x1f604; 欢迎来到茶色岛独家岛屿&#xff0c;本期将为大家揭晓YOLOV5报错解决办法&#xff0c;做好准备了么&#xff0c;那么开始吧。 &#x1f332;&#x1f332;&#x1f434;&#x1f434; 1.在pycharm终端使用pip install…...

java final关键字 详解

概述&#xff1a;作用&#xff1a;细节&#xff1a;演示&#xff1a;总结&#xff1a;一、概述 : final [ˈ faɪnl]&#xff0c;最终的&#xff0c;最后的&#xff0c;决定性的&#xff0c;不可改变的。final作为Java中的一个关键字可以用来修饰类&#xff0c;方法&#xff0c…...

Vbs_To_Exe制作简易exe程序

文章目录一、准备vbs脚本文件二、工具打包exe一、准备vbs脚本文件 新建一个文本文档 复制下面代码到文本文档中 Set speech CreateObject("SAPI.SpVoice") speech.Speak "l love you!"修改文本后缀为.vbs。编码选择ANSI&#xff08;解决中文乱码问题&am…...

AI制药 - TMScore(US-align)、RMSD、Sequence 源码

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/129125467 参考文档:Nature Methods | 蛋白、RNA、DNA及其复合物结构的比对算法US-align 官网地址:https://zhanggroup.org/US-align/ TMScore TMScore,…...

关于个人的经历

简介 我是一个意外接触微机技术的五年专生(前三年寄读一个中专&#xff0c;后两年回大专学校)&#xff0c;2020年中考失利&#xff0c;以高中线上30分去了现在所在五年专&#xff0c;专业是软件&#xff0c;目前个人已过程序员&#xff0c;网管&#xff0c;信息处理员&#xff…...

设计在单链表中删除值相同的多余结点的算法(包括指针的引用的知识点)

1 C中指针与引用的区别 引用相当于起别名int m; int &n m;n 相当于 m 的别名&#xff08;绰号&#xff09;&#xff0c;对 n 的任何操作就是对m的操作。 所以 n 既不是m的拷贝&#xff0c;也不是指向 m 的指针&#xff0c;其实n就是 m 它自己。 引用的注意事项&#xff…...

100份简历才找一个合适的,2023,软件测试岗位饱和了吗?

各大互联网公司的接连裁员&#xff0c;政策限制的行业接连消失&#xff0c;让今年的求职雪上加霜&#xff0c;想躺平却没有资本&#xff0c;还有人说软件测试岗位饱和了&#xff0c;对此很多求职者深信不疑&#xff0c;因为投出去的简历回复的越来越少了。 另一面企业招人真的…...

(三十七)vue 项目中常用的2个Ajax库

文章目录axios实现vue-resource实现上一篇&#xff1a;&#xff08;三十六&#xff09;Vue解决Ajax跨域问题 先看一个github搜索案例 有一个搜索框&#xff0c;输入相关用户名&#xff0c;就能模糊搜索出用户&#xff0c;展现到下方 第一步&#xff1a;我们用到了第三方样式库…...

谷歌:子目标驱动提升长程智能体

&#x1f4d6;标题&#xff1a;A Subgoal-driven Framework for Improving Long-Horizon LLM Agents &#x1f310;来源&#xff1a;arXiv, 2603.19685v1 &#x1f31f;摘要 基于大语言模型&#xff08;LLM&#xff09;的代理已经成为数字环境的强大自主控制器&#xff0c;跨越…...

机器翻译大揭秘:电脑是如何学会“说人话”的?

&#x1f4dd; 想获取更多技术干货&#xff1f;欢迎关注我的微信公众号【小布的学习手记】&#xff0c;第一时间获取最新文章和学习资源&#xff01; 版权声明&#xff1a;本文同步发布于个人博客。欢迎交流与转载&#xff0c;但请务必注明出处。 你是否想过&#xff0c;当你按…...

3个神奇技巧让你的Windows 11系统优化效率翻倍

3个神奇技巧让你的Windows 11系统优化效率翻倍 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and customize your Windo…...

革新性中国象棋智能辅助系统:全流程视觉识别与实时决策实战指南

革新性中国象棋智能辅助系统&#xff1a;全流程视觉识别与实时决策实战指南 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi 在数字化对弈场景中&#xff0…...

如何让模拟人生1实现宽屏显示?3步打造经典游戏现代体验

如何让模拟人生1实现宽屏显示&#xff1f;3步打造经典游戏现代体验 【免费下载链接】Sims-1-Complete-Collection-Widescreen-Patcher Patches The Sims 1 to a custom resolution. 项目地址: https://gitcode.com/gh_mirrors/si/Sims-1-Complete-Collection-Widescreen-Patc…...

granite-4.0-h-350m效果展示:中英双语问答、代码补全、文本摘要三连击

granite-4.0-h-350m效果展示&#xff1a;中英双语问答、代码补全、文本摘要三连击 今天带大家看看一个轻量级但能力不俗的AI模型——granite-4.0-h-350m。这个模型虽然只有3.5亿参数&#xff0c;但在多个任务上的表现却让人眼前一亮。我用Ollama部署了它的文本生成服务&#x…...

Fastboot Enhance:告别命令行,三步完成Android刷机可视化操作

Fastboot Enhance&#xff1a;告别命令行&#xff0c;三步完成Android刷机可视化操作 【免费下载链接】FastbootEnhance A user-friendly Fastboot ToolBox & Payload Dumper for Windows 项目地址: https://gitcode.com/gh_mirrors/fa/FastbootEnhance 你是否曾经面…...

WordPress开发工具链配置:IDE集成与CI/CD自动化

WordPress开发工具链配置&#xff1a;IDE集成与CI/CD自动化 【免费下载链接】WordPress-Coding-Standards PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions 项目地址: https://gitcode.com/gh_mirrors/wo/WordPress-Coding-Standards WordPres…...

新手零基础入门:借助快马AI生成openclaw101登录页代码并逐行解读

作为一个刚接触Web开发的新手&#xff0c;想要快速理解一个官网登录页面的实现逻辑确实不容易。最近我发现InsCode(快马)平台的AI生成功能特别适合这种学习场景&#xff0c;它能根据自然语言描述直接生成可运行的代码&#xff0c;还能逐行解释实现原理。下面就以openclaw101登录…...

深入理解MUNIT架构:内容编码器与风格编码器的完美结合

深入理解MUNIT架构&#xff1a;内容编码器与风格编码器的完美结合 【免费下载链接】MUNIT Multimodal Unsupervised Image-to-Image Translation 项目地址: https://gitcode.com/gh_mirrors/mu/MUNIT MUNIT&#xff08;Multimodal Unsupervised Image-to-Image Translat…...