STM32HAL库常用库函数说明

这篇具有很好参考价值的文章主要介绍了STM32HAL库常用库函数说明。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系统函数

HAL_Delay(延时函数)

  • 函数原型:
void HAL_Delay(uint32_t Delay);
参数 说明
Delay 延时时间
数据类型:unsigned int 32位
返回值 无返回值

GPIO

HAL_GPIO_WritePin(GPIO引脚电平设置)

  • 函数原型:
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
参数 说明
*GPIOx 引脚选泽,参数范围:GPIOA~GPIOC等
GPIO_Pin 引脚编号选择,参数范围:GPIO_PIN_0~GPIO_PIN_15等
PinState 引脚状态设置,参数范围:GPIO_PIN_SET:高电平
GPIO_PIN_RESET:低电平
返回值 无返回值
  • 应用举例
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_SET);//设置PB15引脚为高电平
HAL_Delay(500);//延时500ms
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_RESET);//设置PB15引脚为低电平
HAL_Delay(500);//延时500ms

HAL_GPIO_TogglePin(GPIO电平翻转)

  • 函数原型:
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
参数 说明
*GPIOx 引脚选泽,参数范围:GPIOA~GPIOC等
GPIO_Pin 引脚编号选择,参数范围:GPIO_PIN_0~GPIO_PIN_15等
返回值 无返回值
  • 应用举例
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_15);//翻转GPIO引脚电平
HAL_Delay(500);//延时500ms

HAL_GPIO_ReadPin(获取GPIO引脚状态)

  • 函数原型:
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
参数 说明
*GPIOx 引脚选泽,参数范围:GPIOA~GPIOC等
GPIO_Pin 引脚编号选择,参数范围:GPIO_PIN_0~GPIO_PIN_15等
返回值 返回GPIO状态
GPIO_PIN_SET:当前状态为高电平
GPIO_PIN_RESET:当前状态为低电平
  • 应用举例
if(HAL_GPIO_ReadPin(GPIOB,KEY1_Pin)==GPIO_PIN_RESET){//判断PB15引脚是否为低电平
	HAL_GPIO_WritePin(LED0_GPIO_Port,LED0_Pin,GPIO_PIN_SET);//设置PB14引脚为高电平
}else{
	HAL_GPIO_WritePin(LED0_GPIO_Port,LED0_Pin,GPIO_PIN_RESET);//设置PB14引脚为低电平
}

Timer

HAL_TIM_Base_Start_IT(打开定时器)

  • 函数原型:
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim);
参数 说明
*htim 定时器选择,范围:&htim1~&htim8等
  • 应用举例:
HAL_TIM_Base_Start_IT(&htim2);//开启定时器2中断

HAL_TIM_Base_Stop_IT(关闭定时器中断)

  • 函数原型:
HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim);
参数 说明
*htim 定时器选择,范围:&htim1~&htim8等
  • 应用举例:
  HAL_TIM_Base_Stop_IT(&htim2);//关闭定时器2中断

USART(串口)

HAL_UART_Transmit(阻塞式发送函数)

  • 函数原型:
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart,uint8_t *pData,uint16_t Size,uint32_t Timeout);
参数 说明
*huart 串口选择,范围:&huart1~&huart3等
*pData 发送的数据
Size 发送数据的长度
Timerout 超时时间
  • 应用举例
unsigned char str[]={"hello world"};//需要发送的数据

HAL_UART_Transmit(&huart1,str,sizeof(str)100);//串口发送数据

HAL_UART_Transmit_IT(非阻塞式发送函数)

  • 函数原型:
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart,uint8_t *pData,uint16_t Size);
参数 说明
*huart 串口选择,范围:&huart1~&huart3等
*pData 发送的数据
Size 发送数据的长度
  • 应用举例:
unsigned char str[]={"hello world"};//需要发送的数据
HAL_UART_Transmit_IT(&huart1,str,sizeof(str)100);//串口发送数据


//串口发送完毕回调函数
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart){
  if(huart->Instance==USART1){//判断是否是串口1产生的中断
    HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);//翻转PB5电平
  }
}

HAL_UART_Receive(阻塞式接收函数)——不推荐使用

  • 函数原型:
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart,uint8_t *pData,uint16_t Size,uint32_t Timeout);
参数 说明
*huart 串口选择,范围:&huart1~&huart3等
*pData 接收的数据存放位置
Size 需要接收的长度
Timerout 超时时间
  • 应用举例:
unsigned char str[1];//接收数据存放位置
HAL_UART_Receive(&huart1,str,1);//串口接收数据

HAL_UART_Receive_IT(非阻塞式接收函数)

  • 函数原型:
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart,uint8_t *pData,uint16_t Size);
参数 说明
*huart 串口选择,范围:&huart1~&huart3等
*pData 接收的数据存放位置
Size 需要接收的长度
  • 应用举例:
unsigned char str[1];//接收数据存放位置
HAL_UART_Receive_IT(&huart1,str,1);//串口接收数据


//串口接收完毕回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
  if(huart->Instance==USART1){//判断是否为串口1产生中断
    if(str[0]==0x80){//判断接收的数据是否为0x80
      HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);//翻转PB5电平
    }
  }
}

printf重定向

  • 在开始修改代码之前我们需要引用头文件:stdio.h
  • 修该fputc函数
int fputc(int c,FILE *stream){
  HAL_UART_Transmit(&huart1,(uint8_t *)&c,1,100);
  return c;
}

ADC

HAL_ADC_Start(阻塞式ADC转换开始)

  • 函数原型:
HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc);
参数 说明
*hadc ADC选择,范围:&hadc1~&hadc3等

HAL_ADC_Stop(阻塞式ADC转换停止)

  • 函数原型:
HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc);
参数 说明
*hadc ADC选择,范围:&hadc1~&hadc3等

HAL_ADC_Start_IT(非阻塞式ADC转换开始)

  • 函数原型:
HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc);
参数 说明
*hadc ADC选择,范围:&hadc1~&hadc3等

HAL_ADC_Stop_IT(非阻塞式ADC转换停止)

  • 函数原型:
HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef* hadc);
参数 说明
*hadc ADC选择,范围:&hadc1~&hadc3等

HAL_ADC_PollForConversion(等待常规组转换完成)

  • 函数原型:
HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout)
参数 说明
*hadc ADC选择,范围:&hadc1~&hadc3等
Timeout 超时时间
返回值 状态
HAL_ERROR:错误
HAL_TIMEOUT:超时
HAL_OK:转换完成

HAL_ADC_GetValue(获取ADC转换结果)

  • 函数原型:
uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc);
参数 说明
*hadc ADC选择,范围:&hadc1~&hadc3等
返回值 ADC转换结果

ADC单通道应用举例

//阻塞式
HAL_ADC_Start(&hadc1);//开始ADC转换
if(HAL_OK==HAL_ADC_PollForConversion(&hadc1,10)){//判断是否转换成功
	ADC_value=HAL_ADC_GetValue(&hadc1);//获取ADC转换值
   	printf("当前采集值为:%d\r\n",ADC_value);//串口输出值
}


//非阻塞式
HAL_ADC_Start_IT(&hadc1);//开始ADC转换

//ADC的中断回调函数
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){
  if(hadc->Instance==ADC1){//判断是否为ADC1产生的中断
    ADC_value=HAL_ADC_GetValue(&hadc1);//获取ADC转换值
    printf("当前值:%d\r\n",ADC_value);//串口输出值
  }
}

文章来源地址https://www.toymoban.com/news/detail-401816.html

到了这里,关于STM32HAL库常用库函数说明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于STM32使用HAL_Delay(),程序卡死,的解决办法。

    在使用STM32的Hal库开发时,存在在中断中使用Hal_Delay()时程序会卡死的问题,这是由于Hal_Delay()是使用定时器实现的,并且它的定时器中断优先级为15是最低的。需要给它重新设置中断优先级,实际操作方式如下: 这会把Hal_Delay()的优先级提到最高,同时要查看另一个中断优先

    2024年02月16日
    浏览(46)
  • STM32 HAL库常用GPIO函数以及外部中断配置与响应流程

    Hello,大家好,这是我第一篇博客,写的不好请大家包涵指教,话不多说直接看内容: HAL库常用GPIO函数: void HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init) 这个函数主要用来初始化我们需要用到的引脚,设置其工作频率、工作模式、上下拉等参数。如果使用CubeMX配置工程

    2024年02月03日
    浏览(46)
  • STM32G0x0系列-软件定时器解决HAL_Delay问题

    目录 HAL_Delay函数源码 软件定时器 创建工程试验 1.将对应文件移动到项目位置 2.添加现有文件放到工程中   3.重定向printf 3.验证自己的软件定时器 4.查看现象          HAL_Delay函数使用了中断机制来实现延时功能,当在中断函数中调用HAL_Delay函数需要考虑中断优先级问题。

    2024年02月07日
    浏览(53)
  • stm32标准库开发常用函数的使用和代码说明

    用于控制端口的读写操作。 GPIO_Init:初始化GPIO端口。 GPIO_WritePin、GPIO_ReadPin:写入或读取指定GPIO引脚的状态。 GPIO_SetPin:设置指定GPIO引脚的状态为高电平。 GPIO_ResetPin:将指定GPIO引脚的状态复位为低电平。 用于管理中断相关操作。 NVIC_EnableIRQ:使能指定的中断。 NVIC_Disab

    2024年02月15日
    浏览(37)
  • 【物联网】stm32标准库开发常用函数的使用和代码说明

    用于控制端口的读写操作。 GPIO_Init:初始化GPIO端口。 GPIO_WritePin、GPIO_ReadPin:写入或读取指定GPIO引脚的状态。 GPIO_SetPin:设置指定GPIO引脚的状态为高电平。 GPIO_ResetPin:将指定GPIO引脚的状态复位为低电平。 用于管理中断相关操作。 NVIC_EnableIRQ:使能指定的中断。 NVIC_Disab

    2024年02月14日
    浏览(40)
  • STM32延迟(休眠)函数delay/sleep

    参考 MSP432(Keil5)——3.delay延时驱动_keil5delay函数_大写的小写字母的博客-CSDN博客 亲手测试过, 好用。用while太愚蠢,而且不好控制。 下载链接 https://download.csdn.net/download/quantum7/87982408 delay.h delay.c

    2024年02月12日
    浏览(35)
  • 【HAL库】STM32CubeMX开发----非阻塞延时实验----SysTick(滴答定时器)中断

    STM32CubeMX 下载和安装 详细教程 【HAL库】STM32CubeMX开发----STM32F103/F207/F407----目录 HAL库 有自带的 ms级 延时函数: HAL_Delay(); 缺点: 这是 阻塞延时 方式,就是延时期间,什么都不能干,这样很浪费资源。 这篇文章主要介绍,利用 SysTick(滴答定时器)中断 实现 非阻塞延时 的实验

    2024年02月16日
    浏览(54)
  • 【STM32】的延时函数

    目录 前言 一、 1.for/while循环延时 2.汇编延时 3.SYSTICK定时器延时 SYSTICK相关寄存器 总结         延时函数是嵌入式中最常用到的测试手段,发现有许多方式可以达到延时的目的,所以这里做一点小总结。 代码如下: 时间公式:延时 = time * 2 * 机器周期 * 指令周期 *(1/26

    2024年02月09日
    浏览(42)
  • STM32 显示代码提示 以及延时函数

    control + alt + space

    2023年04月09日
    浏览(45)
  • STM32延时函数的四种方法

    STM32延时函数的四种方法 单片机编程过程中经常用到延时函数,最常用的莫过于微秒级延时delay_us()和毫秒级delay_ms()。本文基于STM32F207介绍4种不同方式实现的延时函数。 \\\\插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我私信,最近比较

    2023年04月26日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包