0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HAL库常用函数汇总

撞上电子 2023-11-29 08:00 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群


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);

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4423

    浏览量

    68104
  • HAL
    HAL
    +关注

    关注

    2

    文章

    75

    浏览量

    13797
  • 系统
    +关注

    关注

    1

    文章

    1049

    浏览量

    22456
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    《机智云Gokit3开发篇》4 RGB灯的介绍与驱动移植(HAL

    的色彩控制能力。本文聚焦Gokit3开发板(MCU模式,主控STM32F103C8T6),以HAL为开发基础,从P9813驱动芯片的工作原理入手,系统讲解RGB灯的
    的头像 发表于 01-28 19:11 5441次阅读
    《机智云Gokit3开发篇》4 RGB灯的介绍与驱动移植(<b class='flag-5'>HAL</b><b class='flag-5'>库</b>)

    嵌入式开发常用函数速查表

    在嵌入式开发中,掌握常用函数的用法可以大大提高开发效率。无论是单片机初学者还是有一定经验的工程师,熟悉函数库和调用方式都是必备技能。今天,我们为大家整理一份嵌入式开发常用
    的头像 发表于 01-19 09:06 546次阅读
    嵌入式开发<b class='flag-5'>常用</b><b class='flag-5'>函数</b>速查表

    机智云Gokit3开发篇 — 搭建Gokit3工程(HAL版)

    微控制器,支持多种开发环境,使学习与开发变得更加便捷。本文将带您从零基础开始,逐步搭建Gokit3的HAL工程,并通过简单的点灯实验,让您感受开发的乐趣。在这个过
    的头像 发表于 01-08 19:14 743次阅读
    机智云Gokit3开发篇 — 搭建Gokit3工程(<b class='flag-5'>HAL</b><b class='flag-5'>库</b>版)

    请问怎么封装函数库

    怎么封装函数库,只留一些回调函数和引脚定义,完整程序不让人看
    发表于 12-22 13:49

    与标准C的区别

    主要的差异: 1.代码(数据)量更小(对比上图)。 2.缺少一些不常用标准库函数,比如:文件 I/O 的库函数。 3.微最大程度优化代码量,可能会导致有些
    发表于 12-09 07:49

    立即在GitHub上抢先体验面向STM32U5的最新STM32Cube HAL更新

    其满足您的需求。 如何获取预览版本 面向STM32U5系列的STM32Cube HAL2预览版已在GitHub代码STM32CubeU5-V2-Preview中开放。 更新后的HAL2有哪些新功能?
    的头像 发表于 10-20 17:12 1450次阅读

    HTTP开发必备:核心与httpplus扩展应用示例全攻略

    HTTP开发的必备参考!本文汇总核心基础操作与httpplus扩展高级特性,通过示例解析,让你快速上手各类HTTP开发需求。
    的头像 发表于 09-20 15:19 3385次阅读
    HTTP开发必备:核心<b class='flag-5'>库</b>与httpplus扩展<b class='flag-5'>库</b>应用示例全攻略

    在rtthread的main函数里用HAL_Delay函数不起作用是哪里的问题?

    在rtthread的main函数里用HAL_Delay函数无效,我设置延时500ms打印一次,但是实际上,一秒打印了几百次,很显然是HAL_Delay出现了问题。用RT_thread_
    发表于 09-15 07:53

    STM32H7使用HAL如何控制外置USB HS PHY进入低功耗?

    项目使用STM32H7的HAL控制外置USB HS PHY(如USB3300或CH132)的。不知如何让MCU通过ULPI接口写寄存器让USB HS PHY进入低功耗,且USB保持链接状态让PC可以重新唤醒。
    发表于 08-14 07:21

    请问hal的硬件spi,怎么修改spi时钟的占空比?

    请问hal的硬件spi,该怎么修改spi时钟的占空比呀?
    发表于 07-28 07:50

    详解hal_entry入口函数

    当使用RTOS时,程序从main函数开始进行线程调度;当没有使用RTOS时,C语言程序的入口函数main函数调用了hal_entry函数。由
    的头像 发表于 07-25 15:34 2334次阅读

    SPI+DMA一直发会进入HAL_BUSY无法跳出是怎么回事?

    HAL_SPI_STATE_BUSY_TX_RX状态。 通过查看HAL,可以找到State在HAL_SPI_IRQHandler中可被设置为READY状态。但实际使用时,会有中断
    发表于 07-18 06:38

    自己写:构建库函数雏形

    实际上,构建固件是一件费时费力的事情,并且它对开发者对芯片的熟悉程度有一定的要求。甚至,当一个固件的封装程度很高时,想要阅读并理解该固件的底层代码也会变成一件有较高难度的事情。瑞萨RA系列
    的头像 发表于 06-19 11:19 1477次阅读
    自己写<b class='flag-5'>库</b>:构建库<b class='flag-5'>函数</b>雏形

    达梦数据常用管理SQL命令详解

    达梦数据常用管理SQL命令详解
    的头像 发表于 06-17 15:12 7871次阅读
    达梦数据<b class='flag-5'>库</b><b class='flag-5'>常用</b>管理SQL命令详解

    MSP430常用内联函数说明

    电子发烧友网站提供《MSP430常用内联函数说明.docx》资料免费下载
    发表于 06-05 17:20 0次下载