使用STM32 HAL库配置和控制外设接口

使用STM32 HAL库配置和控制外设接口非常简单,以下是一个示例,演示如何使用STM32 HAL库配置和控制USART外设接口。

✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进

❤欢迎关注我的知乎:对error视而不见

代码获取、问题探讨及文章转载可私信。

 ☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。

🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!👇

点击领取更多详细资料

```c
#include "stm32f4xx_hal.h"UART_HandleTypeDef huart2;void USART2_MspInit(UART_HandleTypeDef *huart)
{GPIO_InitTypeDef GPIO_InitStruct;__HAL_RCC_USART2_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();GPIO_InitStruct.Pin = GPIO_PIN_2 | GPIO_PIN_3;GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;GPIO_InitStruct.Pull = GPIO_PULLUP;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;GPIO_InitStruct.Alternate = GPIO_AF7_USART2;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}void USART2_Init()
{huart2.Instance = USART2;huart2.Init.BaudRate = 115200;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;HAL_UART_Init(&huart2);
}int main(void)
{HAL_Init();USART2_MspInit(&huart2);USART2_Init();char txData[] = "Hello, World!\r\n";while(1){HAL_UART_Transmit(&huart2, (uint8_t *)txData, strlen(txData), HAL_MAX_DELAY);HAL_Delay(1000);}
}
```

以上示例代码演示了如何使用STM32 HAL库配置和控制USART外设接口。在`USART2_MspInit`函数中,我们首先打开了USART2外设的时钟,并对USART2相关的GPIO引脚进行初始化配置。接着,`USART2_Init`函数用于初始化USART2外设的通信参数,例如波特率、数据位、停止位等。最后,在一个无限循环中,我们使用`HAL_UART_Transmit`函数发送数据到USART2外设,并通过`HAL_Delay`函数添加一个延时。

以上示例是配置和控制USART外设的基本示例,您可以根据具体需求和外设类型使用不同的HAL库函数进行操作。例如,使用`HAL_UART_Receive`函数接收数据,使用`HAL_UART_Transmit_IT`函数进行中断方式的数据发送等。

总结而言,使用STM32 HAL库配置和控制外设接口非常方便。首先,您需要使用官方提供的HAL库函数进行引脚和外设时钟的初始化配置。然后,通过HAL库中提供的函数来设置外设的通信参数,并使用相应的函数进行数据的接收和发送。这种简单而高效的方法大大降低了嵌入式系统开发的复杂性,使得开发人员可以更加专注于应用逻辑的实现。

✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进

❤欢迎关注我的知乎:对error视而不见

代码获取、问题探讨及文章转载可私信。

 ☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。

🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!👇

点击领取更多详细资料

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

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

相关文章

数据结构——框架简介

1.数据结构的作用 数据结构是计算机科学中一种重要的概念,它主要用于组织和存储数据以便有效地进行操作。数据结构可以看作是数据的组织方式,通过合理的数据结构设计,可以更高效地执行各种操作,提高程序的性能和可维护性。 以下是…

pytorch 利用Tensorboar记录训练过程loss变化

文章目录 1. LossHistory日志类定义2. LossHistory类的使用2.1 实例化LossHistory2.2 记录每个epoch的loss2.3 训练结束close掉SummaryWriter 3. 利用Tensorboard 可视化3.1 显示可视化效果 参考 利用Tensorboard记录训练过程中每个epoch的训练loss以及验证loss,便于…

JAVA原型模式详解

原型模式 1 原型模式介绍 定义: 原型模式(Prototype Design Pattern)用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。 西游记中的孙悟空 拔毛变小猴,孙悟空这种根据自己的形状复制出多个身外化身的技巧,在面向对象软件设计领…

Java实现音乐平台 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示 四、核心代码4.1 查询单首音乐4.2 新增音乐4.3 新增音乐订单4.4 查询音乐订单4.5 新增音乐收藏 五、免责说明 一、摘要 1.1 项目介绍 基于微信小程序JAVAVueSpringBootMySQL的音乐平台,包含了音乐…

后端软件三层架构

一、三层架构简介 三层架构是软件开发中广泛采用的一种经典架构模式,其核心价值在于通过清晰的任务划分来提高代码的可维护性和重用性。具体来说,三层架构主要包括以下三个层次: 持久层(DAO层):这一层主要…

【XR806开发板试用】xr806使用tcp socket与手机通信

本文为极术社区XR806开发板活动试用文章。 参考:基于星辰处理器的全志XR806开源鸿蒙开发板上手体验 搭建环境。并成功编译。 项目源码 : https://gitee.com/kingwho/smart-home 在同一个局域网中,手机与xr806连接后,手机 APP 每隔…

背包2讲(2.6)

问题1&#xff1a;装箱问题 题解&#xff1a;这题其实本质上也是01背包&#xff0c;只不过算是变式&#xff0c;要求剩余空间最小值&#xff0c;我们可以转换成最大可以装多少的问题&#xff0c;然后就可以很快的写出题的答案 #include<bits/stdc.h> using namespace st…

c++学习第十六讲---STL常用容器---stack容器,queue容器

一、stack容器&#xff1a; 1.stack基本概念&#xff1a; stack栈容器 stack是一种先进后出的数据结构&#xff0c;它只有一个出口。 栈中只有顶端的元素才能被使用&#xff0c;因此不存在遍历操作。 栈中进数据&#xff1a;入栈 --- push() 栈中出数据&#xff1a;出栈 -…

【UE Niagara】实现物体变形的两种方式

目录 效果 步骤 方式一、通过设置粒子位置 方式二、通过线性力 效果 步骤 方式一、通过设置粒子位置 新建一个Niagara系统&#xff0c;选择Empty模板 这里命名为“NS_Morph” 打开“NS_Morph”&#xff0c;先添加一个“Spawn Burst Instantaneous”模块&#xff0c;“Spa…

用友U8 Cloud ReportDetailDataQuery SQL注入漏洞复现(QVD-2023-47860)

0x01 产品简介 用友U8 Cloud 提供企业级云ERP整体解决方案,全面支持多组织业务协同,实现企业互联网资源连接。 U8 Cloud 亦是亚太地区成长型企业最广泛采用的云解决方案。 0x02 漏洞概述 用友U8 cloud ReportDetailDataQuery 接口处存在SQL注入漏洞,攻击者未经授权可以访…

手撕spring bean的加载过程

这里我们采用手撕源码的方式&#xff0c;开始探索spring boot源码中最有意思的部分-bean的生命周期&#xff0c;也可以通过其中的原理理解很多面试以及工作中偶发遇到的问题。 springboot基于约定大于配置的思想对spring进行优化&#xff0c;使得这个框架变得更加轻量化&#…

【win】vscode无法使用ctrl+shift+p快捷键的解决方案

本文首发于 ❄️慕雪的寒舍 今天使用vscode的时候遇到的这个问题&#xff0c;明明快捷键设置的是ctrlshiftp&#xff0c;但是在电脑上怎么敲都敲不出来&#xff0c;因为用这个快捷键打开命令面板都习惯了&#xff0c;也不想换&#xff0c;就在找原因。 同时百度的时候还遇到了…