banner
Hi my new friend!

stm32_HAL库api

Scroll down

GPIO操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// HAL_GPIO_Init - 初始化GPIO端口和引脚的配置,包括模式、速度、上拉/下拉电阻等。
// 参数:
// GPIOx - 指向GPIO端口的指针,例如GPIOA、GPIOB等。
// GPIO_Init - 指向GPIO初始化结构体的指针,该结构体包含所有初始化设置。
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);

// HAL_GPIO_DeInit - 将GPIO端口的注册设置重置为默认值。
// 参数:
// GPIOx - 指向GPIO端口的指针,例如GPIOA、GPIOB等。
// GPIO_Pin - 指定需要重置的端口引脚。
void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin);

// HAL_GPIO_WritePin - 设置GPIO引脚的输出状态。
// 参数:
// GPIOx - 指向GPIO端口的指针。
// GPIO_Pin - 指定操作的引脚。
// PinState - 新的引脚状态(高或低)。
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);

// HAL_GPIO_ReadPin - 读取GPIO引脚的当前状态。
// 参数:
// GPIOx - 指向GPIO端口的指针。
// GPIO_Pin - 指定读取的引脚。
// 返回:
// 引脚的当前状态(高或低)。
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

// HAL_GPIO_TogglePin - 切换指定GPIO引脚的状态。
// 参数:
// GPIOx - 指向GPIO端口的指针。
// GPIO_Pin - 指定操作的引脚。
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

// HAL_GPIO_EXTI_IRQHandler - 处理指定引脚的外部中断请求。
// 参数:
// GPIO_Pin - 指定需要处理的中断引脚。
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);

// HAL_GPIO_EXTI_Callback - 在中断服务例程中调用的回调函数,处理外部中断事件。
// 参数:
// GPIO_Pin - 触发中断的引脚。
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);

核心配置

1
2
3
4
5
6
7
8
9
10
// HAL_RCC_OscConfig - 配置内部/外部振荡器(包括PLL)。
// 参数:
// RCC_OscInitStruct - 指向一个包含振荡器配置信息的结构体的指针。
HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct);

// HAL_RCC_ClockConfig - 配置系统时钟(SYSCLK)、AHB时钟、APB时钟。
// 参数:
// RCC_ClkInitStruct - 指向一个包含时钟配置信息的结构体的指针。
// FLASH_Latency - 闪存延迟周期。
HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLASH_Latency);

定时器操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// HAL_TIM_Base_Init - 初始化基础定时器。
// 参数:
// htim - 指向定时器句柄的指针,包含定时器配置信息。
HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim);

// HAL_TIM_Base_Start - 启动基础定时器。
// 参数:
// htim - 指向定时器句柄的指针。
HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim);

// HAL_TIM_Base_Stop - 停止基础定时器。
// 参数:
// htim - 指向定时器句柄的指针。
HAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim);

// HAL_TIM_PWM_Init - 初始化PWM定时器。
// 参数:
// htim - 指向PWM定时器句柄的指针。
HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim);

// HAL_TIM_PWM_Start - 启动PWM输出。
// 参数:
// htim - 指向PWM定时

器句柄的指针。
// Channel - PWM频道号。
HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel);

// HAL_TIM_PWM_Stop - 停止PWM输出。
// 参数:
// htim - 指向PWM定时器句柄的指针。
// Channel - PWM频道号。
HAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);

ADC操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// HAL_ADC_Init - 初始化模拟数字转换器。
// 参数:
// hadc - 指向ADC句柄的指针,包含ADC配置信息。
HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef *hadc);

// HAL_ADC_Start - 启动ADC转换。
// 参数:
// hadc - 指向ADC句柄的指针。
HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef *hadc);

// HAL_ADC_Stop - 停止ADC转换。
// 参数:
// hadc - 指向ADC句柄的指针。
HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef *hadc);

// HAL_ADC_PollForConversion - 轮询等待转换完成。
// 参数:
// hadc - 指向ADC句柄的指针。
// Timeout - 超时时间,以毫秒为单位。
HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef *hadc, uint32_t Timeout);

// HAL_ADC_GetValue - 获取最近一次ADC转换的结果。
// 参数:
// hadc - 指向ADC句柄的指针。
// 返回:
// 转换结果的数值。
uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef *hadc);

DAC操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// HAL_DAC_Init - 初始化数模转换器。
// 参数:
// hdac - 指向DAC句柄的指针,包含DAC配置信息。
HAL_StatusTypeDef HAL_DAC_Init(DAC_HandleTypeDef *hdac);

// HAL_DAC_Start - 启动DAC通道。
// 参数:
// hdac - 指向DAC句柄的指针。
// Channel - 指定DAC通道。
HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef *hdac, uint32_t Channel);

// HAL_DAC_Stop - 停止DAC通道。
// 参数:
// hdac - 指向DAC句柄的指针。
// Channel - 指定DAC通道。
HAL_StatusTypeDef HAL_DAC_Stop(DAC_HandleTypeDef *hdac, uint32_t Channel);

// HAL_DAC_SetValue - 设置DAC通道的输出值。
// 参数:
// hdac - 指向DAC句柄的指针。
// Channel - 指定DAC通道。
// Alignment - 数据对齐方式。
// Data - 输出的模拟值对应的数字量。
HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data);

USART操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// HAL_UART_Init - 初始化USART接口。
// 参数:
// huart - 指向UART句柄的指针,包含UART配置信息。
HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart);

// HAL_UART_Transmit - 通过USART发送数据。
// 参数:
// huart - 指向UART句柄的指针。
// pData - 指向要发送的数据缓冲区的指针。
// Size - 要发送的数据字节数。
// Timeout - 超时时间,以毫秒为单位。
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);

// HAL_UART_Receive - 通过USART接收数据。
// 参数:
// huart - 指向UART句柄的指针。
// pData - 指向接收数据缓冲区的指针。
// Size - 要接收的数据字节数。
// Timeout - 超时时间,以毫秒为单位。
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);

SPI操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// HAL_SPI_Init - 初始化SPI接口。
// 参数:
// hspi - 指向SPI句柄的指针,包含SPI配置信息。
HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi);

// HAL_SPI_Transmit - 通过SPI发送数据。
// 参数:
// hspi - 指向SPI句柄的指针。
// pData - 指向要发送的数据缓冲区的指针。
// Size - 要发送的数据字节数。
// Timeout - 超时时间,以毫秒为单位。
HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);

// HAL_SPI_Receive - 通过SPI接收数据。
// 参数:
// hspi - 指向SPI句柄的指针。
// pData - 指向接收数据缓冲区的指针。
// Size - 要接收的数据字节数。
// Timeout - 超时时间,以毫秒为单位。
HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);

I2C操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// HAL_I2C_Master_Transmit - 以主机模式通过I2C发送数据。
// 参数:
// hi2c - 指向I2C句柄的指针。
// DevAddress - 目标设备的地址。
// pData - 指向要发送的数据缓冲区的指针。
// Size - 要发送的数据字节数。
// Timeout - 超时时间,以毫秒为单位。
HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi

2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout);

// HAL_I2C_Master_Receive - 以主机模式通过I2C接收数据。
// 参数:
// hi2c - 指向I2C句柄的指针。
// DevAddress - 目标设备的地址。
// pData - 指向接收数据缓冲区的指针。
// Size - 要接收的数据字节数。
// Timeout - 超时时间,以毫秒为单位。
HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout);

CAN操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// HAL_CAN_Init - 初始化CAN总线。
// 参数:
// hcan - 指向CAN句柄的指针,包含CAN配置信息。
HAL_StatusTypeDef HAL_CAN_Init(CAN_HandleTypeDef *hcan);

// HAL_CAN_Start - 启动CAN模块。
// 参数:
// hcan - 指向CAN句柄的指针。
HAL_StatusTypeDef HAL_CAN_Start(CAN_HandleTypeDef *hcan);

// HAL_CAN_Stop - 停止CAN模块。
// 参数:
// hcan - 指向CAN句柄的指针。
HAL_StatusTypeDef HAL_CAN_Stop(CAN_HandleTypeDef *hcan);

// HAL_CAN_AddTxMessage - 添加一个消息到CAN传输邮箱。
// 参数:
// hcan - 指向CAN句柄的指针。
// pHeader - 指向消息头部的指针。
// aData - 指向要发送的数据数组的指针。
// pTxMailbox - 指向传输邮箱的指针。
HAL_StatusTypeDef HAL_CAN_AddTxMessage(CAN_HandleTypeDef *hcan, CAN_TxHeaderTypeDef *pHeader, uint8_t *aData, uint32_t *pTxMailbox);

RTC操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// HAL_RTC_Init - 初始化实时时钟。
// 参数:
// hrtc - 指向RTC句柄的指针,包含RTC配置信息。
HAL_StatusTypeDef HAL_RTC_Init(RTC_HandleTypeDef *hrtc);

// HAL_RTC_SetTime - 设置RTC当前时间。
// 参数:
// hrtc - 指向RTC句柄的指针。
// sTime - 指向存储时间信息的结构体的指针。
// Format - 时间格式(12小时或24小时)。
HAL_StatusTypeDef HAL_RTC_SetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format);

// HAL_RTC_SetDate - 设置RTC当前日期。
// 参数:
// hrtc - 指向RTC句柄的指针。
// sDate - 指向存储日期信息的结构体的指针。
// Format - 日期格式(阴历或阳历)。
HAL_StatusTypeDef HAL_RTC_SetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format);

PWM管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// HAL_TIM_PWM_Init - 初始化用于PWM输出的定时器。
// 参数:
// htim - 指向定时器句柄的指针。
HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim);

// HAL_TIM_PWM_ConfigChannel - 配置PWM通道。
// 参数:
// htim - 指向定时器句柄的指针。
// sConfig - 指向PWM配置结构体的指针。
// Channel - 定时器的频道号。
HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel);

// HAL_TIM_PWM_Start - 启动PWM输出。
// 参数:
// htim - 指向定时器句柄的指针。
// Channel - 定时器的频道号。
HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel);

中断和回调管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// HAL_NVIC_SetPriority - 设置中断优先级。
// 参数:
// IRQn - 中断号。
// PreemptPriority - 抢占优先级。
// SubPriority - 子优先级。
void HAL_NVIC_SetPriority(IRQn

_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority);

// HAL_NVIC_EnableIRQ - 使能中断。
// 参数:
// IRQn - 中断号。
void HAL_NVIC_EnableIRQ(IRQn_Type IRQn);

// HAL_NVIC_DisableIRQ - 禁用中断。
// 参数:
// IRQn - 中断号。
void HAL_NVIC_DisableIRQ(IRQn_Type IRQn);

// HAL_NVIC_ClearPendingIRQ - 清除中断等待标志。
// 参数:
// IRQn - 中断号。
void HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn);

电源管理

1
2
3
4
5
// HAL_PWR_EnableBkUpAccess - 使能对备份域的访问。
void HAL_PWR_EnableBkUpAccess(void);

// HAL_PWR_DisableBkUpAccess - 禁用对备份域的访问。
void HAL_PWR_DisableBkUpAccess(void);

FLASH操作

1
2
3
4
5
6
7
8
9
10
11
12
// HAL_FLASH_Unlock - 解锁FLASH控制寄存器的访问。
void HAL_FLASH_Unlock(void);

// HAL_FLASH_Lock - 锁定FLASH控制寄存器,禁止编程操作。
void HAL_FLASH_Lock(void);

// HAL_FLASH_Program - 在FLASH存储区域编程一个字。
// 参数:
// TypeProgram - 编程类型(例如单字编程)。
// Address - 要编程的地址。
// Data - 要写入的数据。
HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data);

DMA操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// HAL_DMA_Init - 初始化DMA通道。
// 参数:
// hdma - 指向DMA句柄的指针。
HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma);

// HAL_DMA_Start - 启动DMA传输。
// 参数:
// hdma - 指向DMA句柄的指针。
// SrcAddress - 源地址。
// DstAddress - 目标地址。
// DataLength - 传输数据的长度。
HAL_StatusTypeDef HAL_DMA_Start(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);

// HAL_DMA_Abort - 中止当前的DMA传输。
// 参数:
// hdma - 指向DMA句柄的指针。
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma);

错误处理

1
2
// HAL_Error_Handler - 用于处理HAL库操作错误的通用错误处理函数。
void HAL_Error_Handler(void);
其他文章
12
2023/07
Freertos
  • 23/07/12
  • 15:25
  • 1.9k
  • 7
目录导航 置顶
  1. 1. GPIO操作
  2. 2. 核心配置
  3. 3. 定时器操作
  4. 4. ADC操作
  5. 5. DAC操作
  6. 6. USART操作
  7. 7. SPI操作
  8. 8. I2C操作
  9. 9. CAN操作
  10. 10. RTC操作
  11. 11. PWM管理
  12. 12. 中断和回调管理
  13. 13. 电源管理
  14. 14. FLASH操作
  15. 15. DMA操作
  16. 16. 错误处理
请输入关键词进行搜索