当前位置: 代码网 > it编程>硬件开发>stm32 > STM32HAL库常用库函数说明

STM32HAL库常用库函数说明

2024年08月06日 stm32 我要评论
【代码】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);
参数说明
*hadcadc选择,范围:&hadc1~&hadc3等

hal_adc_stop(阻塞式adc转换停止)

  • 函数原型:
hal_statustypedef hal_adc_stop(adc_handletypedef* hadc);
参数说明
*hadcadc选择,范围:&hadc1~&hadc3等

hal_adc_start_it(非阻塞式adc转换开始)

  • 函数原型:
hal_statustypedef hal_adc_start_it(adc_handletypedef* hadc);
参数说明
*hadcadc选择,范围:&hadc1~&hadc3等

hal_adc_stop_it(非阻塞式adc转换停止)

  • 函数原型:
hal_statustypedef hal_adc_stop_it(adc_handletypedef* hadc);
参数说明
*hadcadc选择,范围:&hadc1~&hadc3等

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

  • 函数原型:
hal_statustypedef hal_adc_pollforconversion(adc_handletypedef* hadc, uint32_t timeout)
参数说明
*hadcadc选择,范围:&hadc1~&hadc3等
timeout超时时间
返回值状态
hal_error:错误
hal_timeout:超时
hal_ok:转换完成

hal_adc_getvalue(获取adc转换结果)

  • 函数原型:
uint32_t hal_adc_getvalue(adc_handletypedef* hadc);
参数说明
*hadcadc选择,范围:&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);//串口输出值
  }
}
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com