STM32 HAL 库 速查手册

news/2024/11/20 8:43:44/文章来源:https://www.cnblogs.com/KicyKnoty/p/18556005

GPIO

// void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);
HAL_GPIO_Init(GPIOA, GPIO_PIN_1); // 初始化GPIO引脚 PA1// void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin);
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_1); // 反初始化GPIO引脚 PA1// GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1); // 读取GPIO引脚电平状态// void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 1); // 写入GPIO引脚电平状态
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 0); // 写入GPIO引脚电平状态// void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_1); // 翻转GPIO引脚电平状态// HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
HAL_GPIO_LockPin(GPIOA, GPIO_PIN_1); // 锁住GPIO引脚电平状态
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin); // 外部中断处理函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);   // 外部中断回调函数

UART

// HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout);
HAL_UART_Transmit(&huart1, (uint8_t *) msg, strlen(msg), HAL_MAX_DELAY); // 串口发送数据// HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
HAL_UART_Receive(&huart1, (uint8_t *) msg, strlen(msg), HAL_MAX_DELAY); // 串口接收数据// HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size);
HAL_UART_Transmit_IT(&huart1, (uint8_t *) msg, strlen(msg)); // 串口中断模式发送  // HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
HAL_UART_Receive_IT(&huart1, (uint8_t *) msg, strlen(msg));	// 串口中断模式接收// HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size);
HAL_UART_Transmit_DMA(&huart1, (uint8_t *) msg, strlen(msg)); // 串口DMA模式接收// HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
HAL_UART_Transmit_DMA(&huart1, (uint8_t *) msg, strlen(msg)); // 串口DMA模式发送// HAL_UART_StateTypeDef HAL_UART_GetState(const UART_HandleTypeDef *huart);
HAL_UART_StateTypeDef HAL_UART_GetState(&huart1); // 查询串口接收状态
void HAL_UART_IRQHandler(UART_HandleTypeDef *huart); // 串口中断处理函数
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart); // 串口发送回调函数
void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart); // 串口发送过半回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart); // 串口接收回调函数
void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart); // 串口接收过半回调函数
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart); // 串口接收错误函数
// HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint16_t *RxLen, uint32_t Timeout);
HAL_UARTEx_ReceiveToIdle(&huart1, msg, strlen(msg), HAL_MAX_DELAY); // 串口接收不定长数据// HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
HAL_UARTEx_ReceiveToIdle_IT(&huart1, msg, strlen(msg)); // 中断模式串口接收不定长数据// HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
HAL_UARTEx_ReceiveToIdle_DMA(&huart1, msg, strlen(msg)); // DMA模式串口接收不定长数据
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size); // 串口数据接收完毕回调函数

I2C

// HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout);
HAL_I2C_Master_Transmit(&hi2c1, ADDRESS, &sendBuffer, strlen(sendBuffer), HAL_MAX_DELAY); // I2C向从设备(地址左移补0)写入(一般为写入寄存器地址或寄存器地址+命令)// HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout);
HAL_I2C_Master_Receive(&hi2c1, ADDRESS, &readBuffer, strlen(readBuffer), HAL_MAX_DELAY); // I2C向从设备(地址左移补1)读取(可结合写入命令读取某个寄存器值)// HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size);
HAL_I2C_Master_Transmit_IT(&hi2c1, ADDRESS, &sendBuffer, strlen(sendBuffer)) // I2C中断模式向从设备写入数据// HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size);
HAL_I2C_Master_Receive_IT(&hi2c1, ADDRESS, &readBuffer, strlen(readBuffer)) // I2C中断模式向从设备读取数据// HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size);
HAL_I2C_Master_Transmit_DMA(&hi2c1, ADDRESS, &sendBuffer, strlen(sendBuffer)) // I2C DMA模式向从设备写入数据// HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size);
HAL_I2C_Master_Receive_DMA&hi2c1, ADDRESS, &readBuffer, strlen(readBuffer)) // I2C DMA模式向从设备读取数据// HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout);// HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout);// HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size);// HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size);// HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size);// HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size);
void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c); // I2C发送中断
void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c); // I2C接收中断
void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c); // I2C写入中断
void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c); // I2C读取中断

定时器

void HAL_TIM_Base_Start_IT(&htim2); // 定时器启动函数
void HAL_TIM_Encoder_Start(&htim2, TIM_CHANNEL_ALL); // 编码器启动函数void HAL_TIM_IRQHandler(&htim2); // 定时器中断处理函数
void HAL_TIM_PeriodElapsedCallback(&htim2); // 定时器回调函数__HAL_TIM_GET_COUNTER(&htim2); // 获取计数器值(编码器值)
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1); // 使能PWM输出
__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, 100); // 设置PWM占空比

  • 参考文档:STM32HAL库常用函数速查手册 - __TRACKER - 博客园
  • L丶小言 - STM32HAL库纯使用向教学,STM32HAL库学习 | BiliBili
  • keysking - 【STM32入门教程】应该是全B站最好的STM32教程了 | BiliBili

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

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

相关文章

画图-利用画图工具修改聊天记录时间

1、用Windows自带的画图工具 打开要修改的图片 选择“矩形”用矩形选中要修改的时间即可对其进行 移动 或者覆盖的操作

Redis中常见的数据类型及其应用场景

五种常见数据类型 Redis中的数据类型指的是 value存储的数据类型,key都是以String类型存储的,value根据场景需要,可以以String、List等类型进行存储。各数据类型介绍:Redis数据类型对应的底层数据结构String 类型的应用场景 常用命令存放键值:set key value [EX seconds] …

dotnet 9 WPF 项目禁用 IncludePackageReferencesDuringMarkupCompilation 导致源代码包 XAML 构建失败

本文记录在 dotnet 6 时通过禁用 IncludePackageReferencesDuringMarkupCompilation 解决源代码冲突问题时,在 dotnet 9 将因此导致 XAML 构建生成的 g.cs 文件包含的 XAML 只记录相对文件路径,从而导致构建不通过在 WPF 修复 dotnet 6 与源代码包冲突 这篇博客里面和大家介绍…

WPF 被 灵格斯翻译官 取词带崩

本文记录 灵格斯翻译官 翻译软件带崩 WPF 程序问题灵格斯翻译官 : http://www.lingoes.cn/ 只要有 WPF 的 ToolTip 或者其他小窗口,执行鼠标拖动过程中,就可能被带崩 我这次没有捞 dump 文件,就只记录此问题 退出 灵格斯翻译官 进程则没有此问题 我从事件管理器也看到 WPS …

读数据质量管理:数据可靠性与数据质量问题解决之道09数据可靠性

数据可靠性1. 数据可靠性 1.1. 数据可靠性指的是一个组织在整个数据生命周期中提供高数据可用性和健康状况的能力1.1.1. 是高数据质量带来的结果1.1.1.1. 高质量的大数据是这个大规模转型平台的核心1.1.2. 随着公司接收到比以往更…

sql-labs靶场通关

Basic challeges基础 sql 注入,没有任何的过滤,转义,WAFless-1 -- (单引号)这里虽然是数值型注入,但是,php 中为 id 参数套了个单引号,所以这里按字符型注入方式通过,可以看到,这里输出的还是 id=1 的值,以此判断为数值型,发生了 int 隐式转换payload: 0 union selec…

年底了,你的项目该复盘了

了解复盘? 什么是复盘? 复盘,围棋术语,也称“复局”,指对局完毕后,复演该盘棋的记录,以检查对局中招法的优劣和得失关键。复盘就是每次博弈结束以后,双方棋手把刚才的对局再重复一遍,这样可以有效地加深对这盘对弈的印象,也可以找出双方攻守的漏洞,是提高自己水平的…

强化学习--策略迭代如何解决01背包问题?内附代码

背景 看Sutton的Reinforcement learning: An introduction,里面将策略迭代作为一种基于动态规划的方法。 书中举了个grid world的例子,非常符合书中的数学原理,有状态转移概率,每个时间步就是每个state等..... 动态规划作为一个常见的面试八股,经常出现于笔试题中,一般都…

Redis 学习笔记(一)-Redis 安装

一、Redis简介 (1)什么是Redis ​ Redis 是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。在企业开发中, 主要用于做数据库、缓…

交互式备忘单: 汇集了各种有用的安全工具

这份工具包是一个交互式备忘单,汇集了各种有用的安全工具,主要用于渗透测试或红队练习。这些工具来自于Github仓库和其他公开来源。以下是工具列表及其分类: AD:用于Active Directory安全的工具。 BinaryExp:用于二进制漏洞利用/入侵的工具。 Blue:用于蓝队操作和防御的工…

29. 使用MySQL之数据库维护

1. 备份数据 像所有数据一样,MySQL的数据也必须经常备份。由于MySQL数据库是基于磁盘的文件,普通的备份系统和例程就能备份MySQL的数据。但是,由于这些文件总是处于打开和使用状态,普通的文件副本备份不一定总是有效。 下面列出这个问题的可能解决方案。使用命令行实用程序…

QT实现组合键监测

QT实现快捷键监测,完成某些组合键功能参考于:Qt 获取组合键 键盘按住某键 鼠标组合实现 - Andy5020 - 博客园MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);QWidget::installEventFilter(this); }bool MainW…