STM32F4 HAL库常用API手册(非CubeMX生成,需手动调用)

本文档整理了 STM32F4 系列 HAL 库中常用外设的核心 API 及其简要说明,所有函数均需开发者手动调用。内容涵盖 GPIO、UART、TIM、ADC、DAC、SPI、I2C、CAN、RTC、看门狗、FLASH、CRC、RNG、DMA、PWR、SAI、SD 卡及 HAL 顶层通用函数,方便快速查阅与使用。

一、GPIO 通用输入输出

API 函数 简洁说明
HAL_GPIO_WritePin(GPIOx, GPIO_PIN_x, PinState) 写引脚电平
HAL_GPIO_ReadPin(GPIOx, GPIO_PIN_x) 读引脚电平,返回 0 或 1
HAL_GPIO_TogglePin(GPIOx, GPIO_PIN_x) 翻转引脚电平
HAL_GPIO_LockPin(GPIOx, GPIO_PIN_x) 锁定引脚配置(直到复位)

二、UART/USART 串口

2.1 阻塞发送/接收

API 函数 简洁说明
HAL_UART_Transmit(huart, pData, Size, Timeout) 阻塞发送指定字节
HAL_UART_Receive(huart, pData, Size, Timeout) 阻塞接收指定字节

2.2 中断发送/接收

API 函数 简洁说明
HAL_UART_Transmit_IT(huart, pData, Size) 中断方式发送
HAL_UART_Receive_IT(huart, pData, Size) 中断方式接收(启动后一直收)
HAL_UART_Transmit_IT(huart, pData, Size) 中断发送

2.3 DMA 发送/接收

API 函数 简洁说明
HAL_UART_Transmit_DMA(huart, pData, Size) DMA 方式发送
HAL_UART_Receive_DMA(huart, pData, Size) DMA 方式接收(常需配合空闲中断)
HAL_UART_DMAPause(huart) 暂停 DMA 传输
HAL_UART_DMAResume(huart) 恢复 DMA 传输
HAL_UART_DMAStop(huart) 停止 DMA 传输

2.4 中断处理与状态查询

API 函数 简洁说明
HAL_UART_IRQHandler(huart) UART 中断总处理函数(在 stm32f4xx_it.c 中调用)
HAL_UART_Abort(huart) 中止所有传输
HAL_UART_Abort_IT(huart) 中止传输(中断方式)
HAL_UART_GetState(huart) 取得当前状态(HAL_UART_STATE_READY/BUSY 等)
HAL_UART_GetError(huart) 获取错误码

2.5 回调函数(需自己重写实现)

回调函数 触发时机
HAL_UART_TxCpltCallback(huart) 发送完成(DMA/IT 方式下回调)
HAL_UART_TxHalfCpltCallback(huart) 发送一半完成
HAL_UART_RxCpltCallback(huart) 接收完成(最常用:在里面再次调用 Receive_IT)
HAL_UART_RxHalfCpltCallback(huart) 接收一半完成
HAL_UART_ErrorCallback(huart) 发生错误(溢出、噪声、帧错等)
HAL_UART_AbortCpltCallback(huart) 中止完成回调

2.6 空闲中断(常用但 HAL 没有专门 API,需手动实现)

__HAL_UART_ENABLE_IT(huart, UART_IT_IDLE) 使能空闲中断后,在 USARTx_IRQHandler 内判断 IDLE 标志,配合 DMA 接收实现不定长接收。


三、TIM 定时器

3.1 基本定时器(时基)

API 函数 简洁说明
HAL_TIM_Base_Start(htim) 启动定时器计数(轮询)
HAL_TIM_Base_Stop(htim) 停止定时器
HAL_TIM_Base_Start_IT(htim) 启动定时器(中断方式,更新事件将进回调)
HAL_TIM_Base_Stop_IT(htim) 停止定时器中断模式
HAL_TIM_Base_Start_DMA(htim, pData, Length) 启动定时器 DMA 传输
HAL_TIM_Base_Stop_DMA(htim) 停止 DMA 模式

3.2 输出比较(OC)

API 函数 简洁说明
HAL_TIM_OC_Start(htim, Channel) 启动输出比较通道
HAL_TIM_OC_Stop(htim, Channel) 停止输出比较
HAL_TIM_OC_Start_IT(htim, Channel) 中断方式启动 OC
HAL_TIM_OC_Stop_IT(htim, Channel) 中断方式停止 OC
HAL_TIM_OC_Start_DMA(htim, Channel, pData, Length) DMA 方式启动 OC
HAL_TIM_OC_Stop_DMA(htim, Channel) DMA 停止 OC

3.3 PWM 脉宽调制

API 函数 简洁说明
HAL_TIM_PWM_Start(htim, Channel) 启动 PWM 输出(最常用)
HAL_TIM_PWM_Stop(htim, Channel) 停止 PWM
HAL_TIM_PWM_Start_IT(htim, Channel) 启动 PWM(带中断)
HAL_TIM_PWM_Stop_IT(htim, Channel) 停止 PWM 中断
HAL_TIM_PWM_Start_DMA(htim, Channel, pData, Length) DMA 方式启动 PWM
HAL_TIM_PWM_Stop_DMA(htim, Channel) 停止 DMA 方式 PWM

3.4 输入捕获(IC)

API 函数 简洁说明
HAL_TIM_IC_Start(htim, Channel) 启动输入捕获(轮询)
HAL_TIM_IC_Stop(htim, Channel) 停止输入捕获
HAL_TIM_IC_Start_IT(htim, Channel) 中断方式启动 IC
HAL_TIM_IC_Stop_IT(htim, Channel) 中断停止 IC
HAL_TIM_IC_Start_DMA(htim, Channel, pData, Length) DMA 启动 IC
HAL_TIM_IC_Stop_DMA(htim, Channel) DMA 停止 IC
HAL_TIM_ReadCapturedValue(htim, Channel) 读取捕获寄存器值

3.5 单脉冲模式(One Pulse)

API 函数 简洁说明
HAL_TIM_OnePulse_Start(htim, OutputChannel) 启动单脉冲输出
HAL_TIM_OnePulse_Stop(htim, OutputChannel) 停止单脉冲
HAL_TIM_OnePulse_Start_IT(htim, OutputChannel) 中断方式单脉冲
HAL_TIM_OnePulse_Stop_IT(htim, OutputChannel) 停止中断方式单脉冲

3.6 编码器接口(Encoder)

3.6 编码器接口(Encoder)

API 函数 简洁说明
HAL_TIM_Encoder_Start(htim, Channel) 启动编码器接口(最常用:TIM_CHANNEL_ALL)
HAL_TIM_Encoder_Stop(htim, Channel) 停止编码器
HAL_TIM_Encoder_Start_IT(htim, Channel) 编码器+中断
HAL_TIM_Encoder_Stop_IT(htim, Channel) 停止编码器中断
HAL_TIM_Encoder_Start_DMA(htim, Channel, pData1, pData2, Length) DMA方式编码器
HAL_TIM_Encoder_Stop_DMA(htim, Channel) 停止DMA编码器

编码器使用小技巧:CNT寄存器值即编码器累积值,可直接读取 htim->Instance->CNT。

3.7 中断处理与通用控制

API 函数 简洁说明
HAL_TIM_IRQHandler(htim) TIM中断总处理(在stm32f4xx_it.c中调用)
HAL_TIM_OC_ConfigChannel(htim, sConfig, Channel) 运行时配置OC通道参数
HAL_TIM_PWM_ConfigChannel(htim, sConfig, Channel) 运行时配置PWM通道
HAL_TIM_IC_ConfigChannel(htim, sConfig, Channel) 运行时配置IC通道
HAL_TIM_ConfigClockSource(htim, sClockSourceConfig) 配置时钟源(内部/外部/ETR)
HAL_TIM_SlaveConfigSynchro(htim, sSlaveConfig) 配置从模式(定时器级联)
HAL_TIM_GenerateEvent(htim, EventSource) 软件产生事件(如更新事件)
__HAL_TIM_SET_COUNTER(htim, value) 宏:设置计数器值
__HAL_TIM_GET_COUNTER(htim) 宏:获取计数器值
__HAL_TIM_SET_COMPARE(htim, Channel, value) 宏:设置PWM比较值(修改占空比)
__HAL_TIM_SET_AUTORELOAD(htim, value) 宏:设置自动重装值

3.8 回调函数(需自己重写)

回调函数 触发时机
HAL_TIM_PeriodElapsedCallback(htim) 周期更新事件回调(基本定时器最常用)
HAL_TIM_PeriodElapsedHalfCpltCallback(htim) DMA方式半满传输回调
HAL_TIM_OC_DelayElapsedCallback(htim) 输出比较匹配回调
HAL_TIM_IC_CaptureCallback(htim) 输入捕获完成回调
HAL_TIM_IC_CaptureHalfCpltCallback(htim) 输入捕获半完成(DMA)
HAL_TIM_PWM_PulseFinishedCallback(htim) PWM脉冲完成回调
HAL_TIM_PWM_PulseFinishedHalfCpltCallback(htim) PWM半完成回调
HAL_TIM_TriggerCallback(htim) 触发事件回调
HAL_TIM_ErrorCallback(htim) 错误回调

四、ADC 模数转换

4.1 启动/停止

API 函数 简洁说明
HAL_ADC_Start(hadc) 启动ADC转换(轮询方式)
HAL_ADC_Stop(hadc) 停止ADC
HAL_ADC_Start_IT(hadc) 启动ADC(中断方式)
HAL_ADC_Stop_IT(hadc) 停止ADC中断模式
HAL_ADC_Start_DMA(hadc, pData, Length) DMA方式启动(多通道最常用)
HAL_ADC_Stop_DMA(hadc) 停止DMA方式

4.2 结果读取与等待

API 函数 简洁说明
HAL_ADC_GetValue(hadc) 读取ADC转换结果
HAL_ADC_PollForConversion(hadc, Timeout) 阻塞等待转换完成
HAL_ADC_PollForEvent(hadc, EventType, Timeout) 阻塞等待事件(看门狗、溢出等)
HAL_ADC_IRQHandler(hadc) ADC中断总处理

4.3 运行时配置

API 函数 简洁说明
HAL_ADC_ConfigChannel(hadc, sConfig) 配置ADC通道(采样时间等)
HAL_ADC_AnalogWDGConfig(hadc, sConfig) 配置模拟看门狗

4.4 回调函数

回调函数 触发时机
HAL_ADC_ConvCpltCallback(hadc) 转换完成(DMA全部传输完成时)
HAL_ADC_ConvHalfCpltCallback(hadc) 转换半完成(DMA半满)
HAL_ADC_LevelOutOfWindowCallback(hadc) 模拟看门狗越界
HAL_ADC_ErrorCallback(hadc) 错误回调

五、DAC 数模转换

5.1 启动/停止

API 函数 简洁说明
HAL_DAC_Start(hdac, Channel) 启动DAC通道(手动输出模式)
HAL_DAC_Stop(hdac, Channel) 停止DAC
HAL_DAC_Start_DMA(hdac, Channel, pData, Length, Alignment) 启动DAC+DMA(输出波形时用)
HAL_DAC_Stop_DMA(hdac, Channel) 停止DAC DMA

5.2 设置输出值

API 函数 简洁说明
HAL_DAC_SetValue(hdac, Channel, Alignment, Data) 设置DAC输出值
HAL_DAC_GetValue(hdac, Channel) 获取当前DAC输出值
HAL_DAC_ConfigChannel(hdac, sConfig, Channel) 配置DAC通道参数
HAL_DAC_IRQHandler(hdac) DAC中断处理

5.3 回调函数

回调函数 触发时机
HAL_DAC_ConvCpltCallbackCh1(hdac) DMA传输完成
HAL_DAC_ConvHalfCpltCallbackCh1(hdac) DMA半传输完成
HAL_DAC_ErrorCallbackCh1(hdac) 错误回调
HAL_DAC_DMAUnderrunCallbackCh1(hdac) DMA欠载(下溢)

六、SPI 串行外设接口

6.1 阻塞方式

API 函数 简洁说明
HAL_SPI_Transmit(hspi, pData, Size, Timeout) 阻塞发送
HAL_SPI_Receive(hspi, pData, Size, Timeout) 阻塞接收
HAL_SPI_TransmitReceive(hspi, pTxData, pRxData, Size, Timeout) 阻塞全双工收发

6.2 中断方式

API 函数 简洁说明
HAL_SPI_Transmit_IT(hspi, pData, Size) 中断发送
HAL_SPI_Receive_IT(hspi, pData, Size) 中断接收
HAL_SPI_TransmitReceive_IT(hspi, pTxData, pRxData, Size) 中断全双工

6.3 DMA方式

API 函数 简洁说明
HAL_SPI_Transmit_DMA(hspi, pData, Size) DMA发送
HAL_SPI_Receive_DMA(hspi, pData, Size) DMA接收
HAL_SPI_TransmitReceive_DMA(hspi, pTxData, pRxData, Size) DMA全双工
HAL_SPI_DMAPause(hspi) 暂停DMA
HAL_SPI_DMAResume(hspi) 恢复DMA
HAL_SPI_DMAStop(hspi) 停止DMA

6.4 中止与中断处理

API 函数 简洁说明
HAL_SPI_Abort(hspi) 中止传输
HAL_SPI_Abort_IT(hspi) 中止传输(中断)
HAL_SPI_IRQHandler(hspi) SPI中断总处理

6.5 回调函数

回调函数 触发时机
HAL_SPI_TxCpltCallback(hspi) 发送完成
HAL_SPI_RxCpltCallback(hspi) 接收完成
HAL_SPI_TxRxCpltCallback(hspi) 全双工收发完成
HAL_SPI_TxHalfCpltCallback(hspi) 发送半完成
HAL_SPI_RxHalfCpltCallback(hspi) 接收半完成
HAL_SPI_TxRxHalfCpltCallback(hspi) 全双工半完成
HAL_SPI_ErrorCallback(hspi) 错误回调
HAL_SPI_AbortCpltCallback(hspi) 中止完成

七、I2C 集成电路总线

7.1 主机阻塞方式

API 函数 简洁说明
HAL_I2C_Master_Transmit(hi2c, DevAddress, pData, Size, Timeout) 主机阻塞发送
HAL_I2C_Master_Receive(hi2c, DevAddress, pData, Size, Timeout) 主机阻塞接收
HAL_I2C_Mem_Write(hi2c, DevAddress, MemAddress, MemAddSize, pData, Size, Timeout) 写从机内部寄存器(EEPROM常用)
HAL_I2C_Mem_Read(hi2c, DevAddress, MemAddress, MemAddSize, pData, Size, Timeout) 读从机内部寄存器
HAL_I2C_IsDeviceReady(hi2c, DevAddress, Trials, Timeout) 检测从机是否就绪(轮询ACK)

7.2 从机阻塞方式

API 函数 简洁说明
HAL_I2C_Slave_Transmit(hi2c, pData, Size, Timeout) 从机阻塞发送
HAL_I2C_Slave_Receive(hi2c, pData, Size, Timeout) 从机阻塞接收

7.3 中断方式(主机/从机/存储器)

API 函数 简洁说明
HAL_I2C_Master_Transmit_IT(hi2c, DevAddress, pData, Size) 主机中断发送
HAL_I2C_Master_Receive_IT(hi2c, DevAddress, pData, Size) 主机中断接收
HAL_I2C_Slave_Transmit_IT(hi2c, pData, Size) 从机中断发送
HAL_I2C_Slave_Receive_IT(hi2c, pData, Size) 从机中断接收
HAL_I2C_Mem_Write_IT(hi2c, DevAddress, MemAddress, MemAddSize, pData, Size) 中断写内存
HAL_I2C_Mem_Read_IT(hi2c, DevAddress, MemAddress, MemAddSize, pData, Size) 中断读内存
HAL_I2C_EnableListen_IT(hi2c) 开启从机监听模式
HAL_I2C_DisableListen_IT(hi2c) 关闭监听
HAL_I2C_Master_Abort_IT(hi2c, DevAddress) 主机中止传输

7.4 DMA方式

API 函数 简洁说明
HAL_I2C_Master_Transmit_DMA(hi2c, DevAddress, pData, Size) 主机DMA发送
HAL_I2C_Master_Receive_DMA(hi2c, DevAddress, pData, Size) 主机DMA接收
HAL_I2C_Slave_Transmit_DMA(hi2c, pData, Size) 从机DMA发送
HAL_I2C_Slave_Receive_DMA(hi2c, pData, Size) 从机DMA接收
HAL_I2C_Mem_Write_DMA(hi2c, DevAddress, MemAddress, MemAddSize, pData, Size) DMA写内存
HAL_I2C_Mem_Read_DMA(hi2c, DevAddress, MemAddress, MemAddSize, pData, Size) DMA读内存

7.5 中断处理与状态

API 函数 简洁说明
HAL_I2C_IRQHandler(hi2c) I2C中断总处理
HAL_I2C_EV_IRQHandler(hi2c) 事件中断处理(部分库)
HAL_I2C_ER_IRQHandler(hi2c) 错误中断处理
HAL_I2C_GetState(hi2c) 获取状态
HAL_I2C_GetError(hi2c) 获取错误

7.6 回调函数

回调函数 触发时机
HAL_I2C_MasterTxCpltCallback(hi2c) 主机发送完成
HAL_I2C_MasterRxCpltCallback(hi2c) 主机接收完成
HAL_I2C_SlaveTxCpltCallback(hi2c) 从机发送完成
HAL_I2C_SlaveRxCpltCallback(hi2c) 从机接收完成
HAL_I2C_MemTxCpltCallback(hi2c) 存储器写入完成
HAL_I2C_MemRxCpltCallback(hi2c) 存储器读取完成
HAL_I2C_ListenCpltCallback(hi2c) 监听完成
HAL_I2C_AddrCallback(hi2c, TransferDirection, SlaveMatchCode) 从机地址匹配回调
HAL_I2C_ErrorCallback(hi2c) 错误回调
HAL_I2C_AbortCpltCallback(hi2c) 中止完成

八、CAN 控制器局域网

8.1 启动/停止与配置

API 函数 简洁说明
HAL_CAN_Start(hcan) 启动CAN(从初始化模式进入正常模式)
HAL_CAN_Stop(hcan) 停止CAN(回到初始化模式)
HAL_CAN_ConfigFilter(hcan, sFilterConfig) 配置CAN滤波器(非常重要)

8.2 中断使能

API 函数 简洁说明
HAL_CAN_ActivateNotification(hcan, ActiveITs) 激活中断通知(如接收、发送、错误)
HAL_CAN_DeactivateNotification(hcan, InactiveITs) 关闭中断通知

8.3 发送/接收

API 函数 简洁说明
HAL_CAN_AddTxMessage(hcan, pHeader, aData, pTxMailbox) 添加消息到发送邮箱
HAL_CAN_GetRxMessage(hcan, RxFifo, pHeader, aData) 从接收FIFO取出消息
HAL_CAN_GetTxMailboxesFreeLevel(hcan) 获取空闲发送邮箱数
HAL_CAN_IsTxMessagePending(hcan, TxMailboxes) 是否有消息在等待发送
HAL_CAN_GetRxFifoFillLevel(hcan, RxFifo) 获取接收FIFO填充级别

8.4 状态与错误

API 函数 简洁说明
HAL_CAN_GetState(hcan) 取得CAN状态
HAL_CAN_GetError(hcan) 取得错误码
HAL_CAN_IRQHandler(hcan) CAN中断总处理

8.5 回调函数

回调函数 触发时机
HAL_CAN_TxMailbox0CompleteCallback(hcan) 发送邮箱0发送完成
HAL_CAN_TxMailbox1CompleteCallback(hcan) 发送邮箱1发送完成
HAL_CAN_TxMailbox2CompleteCallback(hcan) 发送邮箱2发送完成
HAL_CAN_RxFifo0MsgPendingCallback(hcan) 接收FIFO0有新消息(常用)
HAL_CAN_RxFifo0FullCallback(hcan) FIFO0满
HAL_CAN_RxFifo1MsgPendingCallback(hcan) 接收FIFO1有新消息
HAL_CAN_RxFifo1FullCallback(hcan) FIFO1满
HAL_CAN_SleepCallback(hcan) 进入睡眠
HAL_CAN_WakeUpFromRxMsgCallback(hcan) 从接收唤醒
HAL_CAN_ErrorCallback(hcan) 错误回调

九、RTC 实时时钟

9.1 时间/日期

API 函数 简洁说明
HAL_RTC_SetTime(hrtc, sTime, Format) 设置时间(Format: RTC_FORMAT_BIN / RTC_FORMAT_BCD)
HAL_RTC_GetTime(hrtc, sTime, Format) 获取时间
HAL_RTC_SetDate(hrtc, sDate, Format) 设置日期
HAL_RTC_GetDate(hrtc, sDate, Format) 获取日期

9.2 闹钟

API 函数 简洁说明
HAL_RTC_SetAlarm(hrtc, sAlarm, Format) 设置闹钟(轮询)
HAL_RTC_SetAlarm_IT(hrtc, sAlarm, Format) 设置闹钟(中断方式)
HAL_RTC_DeactivateAlarm(hrtc, Alarm) 取消闹钟
HAL_RTC_GetAlarm(hrtc, sAlarm, Format) 获取当前闹钟配置
HAL_RTC_AlarmIRQHandler(hrtc) 闹钟中断处理

9.3 唤醒定时器

API 函数 简洁说明
HAL_RTCEx_SetWakeUpTimer_IT(hrtc, Counter, WakeUpClock) 设置周期性唤醒定时器(中断)
HAL_RTCEx_DeactivateWakeUpTimer(hrtc) 取消唤醒定时器
HAL_RTC_WakeUpTimerIRQHandler(hrtc) 唤醒定时器中断处理

9.4 备份寄存器

API 函数 简洁说明
HAL_RTCEx_BKUPWrite(hrtc, BackupRegister, Data) 写备份寄存器
HAL_RTCEx_BKUPRead(hrtc, BackupRegister) 读备份寄存器

9.5 回调函数

回调函数 触发时机
HAL_RTC_AlarmAEventCallback(hrtc) 闹钟A触发
HAL_RTCEx_AlarmBEventCallback(hrtc) 闹钟B触发
HAL_RTCEx_WakeUpTimerEventCallback(hrtc) 唤醒定时器触发
HAL_RTCEx_Tamper1EventCallback(hrtc) 篡改事件1
HAL_RTCEx_TimeStampEventCallback(hrtc) 时间戳事件

十、WWDG 窗口看门狗

API 函数 简洁说明
HAL_WWDG_Init(hwwdg) 初始化(CubeMX会生成)
HAL_WWDG_Refresh(hwwdg) 喂狗(关键函数,周期内必须调用)
HAL_WWDG_IRQHandler(hwwdg) WWDG中断处理
HAL_WWDG_EarlyWakeupCallback(hwwdg) 提前唤醒中断回调(接近超时前触发)

注意:WWDG必须在窗口范围内喂狗(太早也会复位)。


十一、IWDG 独立看门狗

API 函数 简洁说明
HAL_IWDG_Init(hiwdg) 初始化(CubeMX会生成)
HAL_IWDG_Refresh(hiwdg) 喂狗(关键函数)

注意:IWDG一旦启动就不能停止,直到芯片复位。


十二、FLASH 闪存

12.1 读写控制

API 函数 简洁说明
HAL_FLASH_Unlock(void) 解锁FLASH(写入前必须)
HAL_FLASH_Lock(void) 重新锁定FLASH
HAL_FLASH_Program(TypeProgram, Address, Data) 编程写入(字节/半字/字/双字)
HAL_FLASH_Program_IT(TypeProgram, Address, Data) 中断方式编程
HAL_FLASH_IRQHandler(void) FLASH中断总处理
HAL_FLASH_GetError(void) 获取FLASH错误
FLASH_WaitForLastOperation(Timeout) 等待上次操作完成

12.3 回调函数

回调函数 触发时机
HAL_FLASH_EndOfOperationCallback(ReturnValue) 编程/擦除完成(IT模式)
HAL_FLASH_OperationErrorCallback(ReturnValue) FLASH操作错误

12.4 擦除(FLASHEx扩展函数,非常常用)

API 函数 简洁说明
HAL_FLASHEx_Erase(pEraseInit, SectorError) 擦除指定扇区(pEraseInit指定类型/扇区数/并行位数)
HAL_FLASHEx_Erase_IT(pEraseInit) 中断方式擦除
HAL_FLASHEx_OBProgram(pOBInit) 配置Option字节(读保护、写保护、BOOT位等)
HAL_FLASHEx_OBGetConfig(pOBInit) 获取当前Option字节配置

十三、CRC 循环冗余校验

API 函数 简洁说明
HAL_CRC_Accumulate(hcrc, pBuffer, BufferLength) 累加计算CRC(不重置初始值)
HAL_CRC_Calculate(hcrc, pBuffer, BufferLength) 重新计算CRC(从默认初始值开始)

十四、RNG 随机数发生器

API 函数 简洁说明
HAL_RNG_GetRandomNumber(hrng) 获取32位随机数(阻塞)
HAL_RNG_GetRandomNumber_IT(hrng) 中断方式获取随机数
HAL_RNG_IRQHandler(hrng) RNG中断处理
HAL_RNG_ReadyDataCallback(hrng, random32bit) 随机数就绪回调(需重写)
HAL_RNG_ErrorCallback(hrng) 错误回调

十五、DMA 直接存储器访问

API 函数 简洁说明
HAL_DMA_Start(hdma, SrcAddress, DstAddress, DataLength) 启动DMA传输(轮询方式,一般由外设API内部调用)
HAL_DMA_Start_IT(hdma, SrcAddress, DstAddress, DataLength) 启动DMA(中断方式)
HAL_DMA_Abort(hdma) 中止DMA
HAL_DMA_Abort_IT(hdma) 中止DMA(中断方式)
HAL_DMA_PollForTransfer(hdma, CompleteLevel, Timeout) 阻塞等待传输完成
HAL_DMA_IRQHandler(hdma) DMA中断总处理
HAL_DMA_RegisterCallback(hdma, CallbackID, pCallback) 注册回调
HAL_DMA_GetState(hdma) 获取DMA状态
HAL_DMA_GetError(hdma) 获取DMA错误

DMA的回调一般通过外设的回调(如UART/ADC的XferCpltCallback)间接触发,因此业务上通常不直接写DMA回调。


十六、PWR 电源管理

API 函数 简洁说明
HAL_PWR_EnableBkUpAccess(void) 使能备份域访问(写RTC备份寄存器前必须)
HAL_PWR_DisableBkUpAccess(void) 关闭备份域访问
HAL_PWR_ConfigPVD(sConfigPVD) 配置可编程电压检测
HAL_PWR_EnablePVD(void) 使能PVD
HAL_PWR_DisablePVD(void) 关闭PVD
HAL_PWR_EnableWakeUpPin(WakeUpPinx) 使能唤醒引脚(用于STOP模式唤醒)
HAL_PWR_DisableWakeUpPin(WakeUpPinx) 关闭唤醒引脚
HAL_PWR_EnterSTOPMode(Regulator, STOPEntry) 进入STOP模式
HAL_PWR_EnterSTANDBYMode(void) 进入STANDBY模式
HAL_PWR_EnterSLEEPMode(SLEEPEntry, Regulator) 进入SLEEP模式
HAL_PWR_PVD_IRQHandler(void) PVD中断处理
HAL_PWR_PVDCallback(void) PVD中断回调(需重写)

十七、SAI 串行音频接口

API 函数 简洁说明
HAL_SAI_Transmit(hsai, pData, Size, Timeout) 阻塞发送音频数据
HAL_SAI_Receive(hsai, pData, Size, Timeout) 阻塞接收
HAL_SAI_Transmit_IT(hsai, pData, Size) 中断发送
HAL_SAI_Receive_IT(hsai, pData, Size) 中断接收
HAL_SAI_Transmit_DMA(hsai, pData, Size) DMA发送
HAL_SAI_Receive_DMA(hsai, pData, Size) DMA接收
HAL_SAI_DMAPause(hsai) 暂停DMA
HAL_SAI_DMAResume(hsai) 恢复DMA
HAL_SAI_DMAStop(hsai) 停止DMA
HAL_SAI_Abort(hsai) 中止传输
HAL_SAI_IRQHandler(hsai) SAI中断处理
HAL_SAI_TxCpltCallback(hsai) 发送完成回调
HAL_SAI_TxHalfCpltCallback(hsai) 发送半完成
HAL_SAI_RxCpltCallback(hsai) 接收完成
HAL_SAI_RxHalfCpltCallback(hsai) 接收半完成
HAL_SAI_ErrorCallback(hsai) 错误回调

十八、SD 卡(SDIO接口)

API 函数 简洁说明
HAL_SD_InitCard(hsd) 初始化SD卡(HAL_SD_Init后调用)
HAL_SD_ReadBlocks(hsd, pData, BlockAdd, NumberOfBlocks, Timeout) 阻塞读块
HAL_SD_WriteBlocks(hsd, pData, BlockAdd, NumberOfBlocks, Timeout) 阻塞写块
HAL_SD_Erase(hsd, BlockStartAdd, BlockEndAdd) 擦除块范围
HAL_SD_ReadBlocks_IT(hsd, pData, BlockAdd, NumberOfBlocks) 中断方式读
HAL_SD_WriteBlocks_IT(hsd, pData, BlockAdd, NumberOfBlocks) 中断方式写
HAL_SD_ReadBlocks_DMA(hsd, pData, BlockAdd, NumberOfBlocks) DMA方式读
HAL_SD_WriteBlocks_DMA(hsd, pData, BlockAdd, NumberOfBlocks) DMA方式写
HAL_SD_IRQHandler(hsd) SDIO中断处理
HAL_SD_GetCardState(hsd) 获取卡状态
HAL_SD_GetCardInfo(hsd, pCardInfo) 获取卡信息(CID/CSD等)
HAL_SD_TxCpltCallback(hsd) 写完成回调
HAL_SD_RxCpltCallback(hsd) 读完成回调
HAL_SD_ErrorCallback(hsd) 错误回调
HAL_SD_AbortCallback(hsd) 中止回调

十九、HAL通用/顶层API

API 函数 简洁说明
HAL_Init(void) HAL库初始化(默认在main开头调用)
HAL_DeInit(void) 反初始化HAL
HAL_InitTick(TickPriority) 初始化SysTick(CubeMX在SystemClock_Config后调用)
HAL_IncTick(void) 增加系统节拍计数(在SysTick_Handler中被调用)
HAL_GetTick(void) 获取当前系统节拍(ms级延时函数基础)
HAL_Delay(Delay) ms级阻塞延时
HAL_SuspendTick(void) 暂停SysTick(进入低功耗前调用)
HAL_ResumeTick(void) 恢复SysTick
HAL_GetHalVersion(void) 获取HAL版本
HAL_GetREVID(void) 获取芯片修订ID
HAL_GetDEVID(void) 获取芯片设备ID
HAL_GetUIDw0/1/2(void) 获取芯片唯一ID(UID)
HAL_NVIC_SetPriority(IRQn, PreemptPriority, SubPriority) 设置中断优先级
HAL_NVIC_EnableIRQ(IRQn) 使能中断
HAL_NVIC_DisableIRQ(IRQn) 关闭中断
HAL_NVIC_SystemReset(void) 发起系统复位
HAL_SYSTICK_Config(TicksNumb) 配置SysTick(返回0为成功)

本手册内容保持原始API与说明不变,仅对格式进行整理。

相关推荐
m0_377108141 小时前
小智ai,esp32
单片机
是摆烂第一名呀2 小时前
RK3576+GMSL摄像头底层适配与调试
linux·arm开发·驱动开发·嵌入式硬件·数码相机
Mr-pn-junction11 小时前
clk_gate
单片机·嵌入式硬件·fpga开发
尼喃15 小时前
662K和65Z5三脚稳压芯片PW6566,附引脚定义与典型电路图
嵌入式硬件
李永奉19 小时前
杰理可视化SDK开发-【BUG】配置“TWS两边同时按消息使能”功能后,按键单击功能无效失灵
开发语言·单片机·嵌入式硬件·物联网·bug
执迷不悟82319 小时前
51单片机--中断/定时/PWM
单片机·嵌入式硬件·51单片机
A小调的码农21 小时前
OPENOCD+MSYS+VSCODE:从“灯不亮“到“终于亮了“
ide·vscode·stm32·单片机·编辑器
AI的探索之旅21 小时前
让 Claude Code 直接操刀画原理图和 PCB:VSCode 插件接外部 API 全流程
linux·ide·vscode·嵌入式硬件·编辑器
Dlrb12111 天前
单片机通信协议---串口及串口通信
单片机·嵌入式硬件·串口·uart·modbus·波特率·主机从机