HAL库常用函数汇总【不间断更新】

3fcc20c8304157fba8443686b98b1907.jpeg

1,系统函数

HAL_Delay

原型:void HAL_Delay(uint32_t Delay);

作用:利用滴答定时器生成的系统延迟函数

参数:

   Delay:延迟时间,单位是ms

返回值:无

示例代码:

HAL_Delay(50);//延迟50ms

2,GPIO函数

HAL_GPIO_WritePin

原型:void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);

作用:使得某一个GPIO的Pin的状态变成高电平或者低电平

参数:  

   GPIOx:引脚选择

   GPIO_Pin:引脚编号选择

   PinState:引脚状态设置

返回值:无

示例代码:

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_SET);//设置PB15引脚为高电平HAL_Delay(500);//延时500msHAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_RESET);//设置PB15引脚为低电平HAL_Delay(500);//延时500ms

HAL_GPIO_TogglePin

原型:void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

作用:使得某一个GPIO的Pin的状态翻转

参数:  

   GPIOx:引脚选择

   GPIO_Pin:引脚编号选择    

返回值:无

示例代码:

HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_15);//设置PB15引脚翻转,如果原先是低电平,现在就是高电平;如果原先是高电平,现在就是低电平。

HAL_GPIO_ReadPin

原型:GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

作用:读取某一个GPIO的Pin的状态翻转

参数:  

   GPIOx:引脚选择

   GPIO_Pin:引脚编号选择

返回值:某一个GPIO的Pin的状态。

   GPIO_PIN_SET:当前状态为高电平

   GPIO_PIN_RESET:当前状态为低电平

示例代码:

if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_15)==GPIO_PIN_RESET)//判断PB15为低电平  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_SET);//设置PB14引脚为高电平

3,UART函数

printf重定向

原型:int fputc(int c,FILE *stream);

作用:printf重定向

参数:系统参数,无需关心

返回值:系统参数,无需关心

示例代码:

int fputc(int c,FILE *stream)//需要引用头文件:stdio.h{  HAL_UART_Transmit(&huart1,(uint8_t *)&c,1,100);//注意,这里重定向是串口1  return c;}

HAL_UART_Transmit

原型:HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart,uint8_t *pData,uint16_t Size,uint32_t Timeout);

作用:串口以阻塞式发送数据

参数:

   huart:串口号选择

   pData:发送的数据

   Size:发送数据的长度

   Timeout:超时时间,代表执行函数时,最多占用串口的时间,单位是毫秒

返回值:无

示例代码:

unsigned char str[]={"hello world"};//需要发送的数据
HAL_UART_Transmit(&huart1,str,sizeof(str),100);//串口1在100ms以内发送数据

HAL_UART_Receive_IT

原型:HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart,uint8_t *pData,uint16_t Size);

作用:串口以中断方式接收数据

参数:

   huart:串口号选择

   pData:发送的数据

   Size:发送数据的长度

返回值:无

示例代码:

unsigned char str[1];//接收数据存放位置HAL_UART_Receive_IT(&huart1,str,1);//串口接收数据          //串口接收完成的中断回调函数void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){    if(str[0]==0x80)//判断接收的数据是否为0x80      HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);//翻转PB5电平}

HAL_UART_RxCpltCallback

原型:__weak void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);

作用:串口接收完成的中断回调函数

参数:系统参数,无需关心

返回值:无

示例代码:

unsigned char str[1];//接收数据存放位置HAL_UART_Receive_IT(&huart1,str,1);//串口接收一个数据          //串口接收完成的中断回调函数void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){    if(str[0]==0x80)//判断接收的数据是否为0x80      HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);//翻转PB5电平}

3,IIC函数

HAL_I2C_Master_Transmit

原型:HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout);

作用:IIC以主机模式发送数据

参数:

   hi2c:IIC编号

   DevAddress:写入的地址

   pData:写入的数据

   Size:写入数据的字节数

   Timeout 最大传输时间,超过传输时间将自动退出传输函数

返回值:无

示例代码:

uint16_t Address=0x1234;
uint8_t TxData[2]={0x11,0x22};//在100ms以内,使用IIC1,采用主机模式,向地址0x1234写入数据0x11和0x22    
HAL_I2C_Master_Transmit(&hi2c1,I2C1_WRITE_ADDRESS,(uint8_t*)TxData,2,100);

4,SPI函数

HAL_SPI_TransmitReceive

原型:HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout);

作用:SPI以阻塞模式发送数据并接收返回值

参数:

   hspi:SPI编号

   pTxData:写入的数据

   pRxData:读取的数据

   Size:写入数据的字节数

   Timeout:最大传输时间,超过传输时间将自动退出函数

返回值:无

示例代码:

uint8_t TxData[2]={0x11,0x22};
uint8_t RxData[2];//在100ms以内,使用SPI1,写入0x11和0x22,并等待接收的返回值
HAL_SPI_TransmitReceive(&spi1,(uint8_t*)TxData,(uint8_t*)TxData,2,100);

==========

往期回顾:

小白都看得懂的STM32的DMA知识

STM32CubeMX的外部中断的使用

ADC的低功耗和阻抗问题

外部中断为什么会误触发?

利用STM32CubeMX解读时钟树

==========

d6b4a8f13b4608d31c1a4a86c52576b5.jpeg

d0592b063158632fb892c95bdb910fe3.jpeg

782f8c01d60bf890310a26b98578ec2c.jpeg

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

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

相关文章

统信UOS上使用localsend传输文件

原文链接:统信UOS上使用localsend传输文件及文件夹方法 hello,大家好,今天带给大家一个全新的主题:在统信UOS上如何高效使用 localsend 软件进行文件和文件夹的传输。这篇文章将为您提供详细的指导和操作步骤,让您能够…

P8A012-A016组策略安全

账户策略 【预备知识】 组策略(Group Policy)是Microsoft Windows系统管理员为用户和计算机定义并控制程序、网络资源及操作系统行为的主要工具。通过使用组策略可以设置各种软件、计算机和用户策略。 【实验步骤】 网络拓扑:server2008A…

查看mysql 或SQL server 的连接数,mysql超时、最大连接数配置

1、mysql 的连接数 1.1、最大可连接数 show variables like max_connections; 1.2、运行中连接数 show status like Threads_connected; 1.3、配置最大连接数, mysql版本不同可配置的最大连接数不同,mysql8.0的版本默认151个连接数,…

好物分享(领劵优惠好手)

本次分享一个领取领优惠、充值、会员、购物优惠等功能 部分截图 需要的点击下方按钮 前往体验 感谢大家的支持 更多内容请关注微信小程序,源码、插件、模板及时更新

webpack如何处理css

一、准备工作 新建目录 添加样式 .word {color: red; } index.js添加dom元素,添加一个css word import ./css/index.css;const div document.createElement("div"); div.innerText "hello word!!!"; div.className "word"; do…

儿童台灯怎么选对眼睛好?专业儿童护眼台灯分享

随着时代的改革和发展,现在的孩子学业压力要远比我们想象中的繁重很多,而且随着年龄的增长,用眼到需求也会越来越大。再加上过早的接触电子产品,导致现在的孩子近视率都非常高! 因此作为家长一定要重视孩子的视力健康&…

Ubuntu系统Springboot项目Nginx安装(编译安装方式)

1.下载 nginx官网下载 Index of /download/ 2.解压 这里我下载的1.25.3版本,系统是ubuntu 解压 tar -zxvf nginx-1.25.3.tar.gz 3.编译安装 安装前需要执行安装一些系统依赖 3.1安装PCRE库 ubuntu:执行以下命令 sudo apt-get install libpcre…

Cesium 关闭深度写入

没有关闭PointPrimitive的深度写入: 关闭了PointPrimitive的深度写入: if (pointPrimitiveCollection._rsOpaque) {pointPrimitiveCollection._rsOpaque Cesium.RenderState.fromCache({depthTest: {enabled: false,}});}const p pointPrimitiveCollection.add({position:…

会议预告 | 求臻医学诚邀您共聚P4 2023第七届肿瘤精准医疗大会

2023年12月7日-8日,P4 2023第七届肿瘤精准医疗大会将于北京隆重举行。60余位院士/监管/临床医生/科研权威专家与精准药企/诊断企业KOL领衔出席,1000余位精准医疗领域行业精英代表齐聚现场,大会将深度探讨行业痛点与年度热门议题,与…

网络篇---第六篇

系列文章目录 文章目录 系列文章目录前言一、HTTP1.0、HTTP1.1、HTTP2.0的关系和区别二、说说HTTP协议与TCP/IP协议的关系三、如何理解HTTP协议是无状态的?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章…

python与机器学习1,机器学习的一些基础知识概述(完善ing)

目录 1 AI ,ML,DL,NN 等等概念分类 1.1 人工智能、机器学习、深度学习、神经网络之间的关系: 1.2 人工智能的发展 2 ML机器学习的分类:SL, USL,RL 2.1 机器学习的分类 2.2 具体的应用举例 2.3 数据分类 3 关于阈值θ和偏移量b的由来 4 不同的激…

定制开发办公软件在企业发展中的优势|app小程序网站搭建

定制开发办公软件在企业发展中的优势|app小程序网站搭建 如今,办公软件已经成为企业日常工作的必需品。很多企业为了提高工作效率和满足自身业务需要,选择定制开发办公软件。下面将介绍定制开发办公软件在企业发展中的优势。 首先,定制开发办…