A5 STM32_HAL库函数 之 CAN通用驱动程序所有函数的介绍及使用
1 CAN通用驱动程序所有函数预览
序号 | 函数名 | 描述 |
---|
1 | HAL_CAN_Init() | 初始化CAN外设。 |
2 | HAL_CAN_ConfigFilter() | 配置CAN过滤器。 |
3 | HAL_CAN_DeInit() | 反初始化CAN外设。 |
4 | HAL_CAN_MspInit() | 初始化MCU外设相关的CAN引脚或资源。 |
5 | HAL_CAN_MspDeInit() | 反初始化MCU外设相关的CAN引脚或资源。 |
6 | HAL_CAN_Transmit() | 同步发送CAN消息。 |
7 | HAL_CAN_Transmit_IT() | 异步发送CAN消息,使用中断处理发送完成。 |
8 | HAL_CAN_Receive() | 同步接收CAN消息。 |
9 | HAL_CAN_Receive_IT() | 异步接收CAN消息,使用中断处理接收完成。 |
10 | HAL_CAN_Sleep() | 进入CAN休眠模式。 |
11 | HAL_CAN_WakeUp() | 唤醒CAN设备。 |
12 | HAL_CAN_IRQHandler() | CAN中断处理程序。 |
13 | HAL_CAN_TxCpltCallback() | CAN发送完成回调函数。 |
14 | HAL_CAN_RxCpltCallback() | CAN接收完成回调函数。 |
15 | HAL_CAN_ErrorCallback() | CAN错误回调函数。 |
16 | HAL_CAN_GetState() | 获取CAN状态。 |
17 | HAL_CAN_GetError() | 获取CAN错误状态。 |
使用模板:
#include "stm32f4xx_hal.h"
int main(void) {
HAL_Init();
HAL_MspInit();
HAL_CAN_Init();
HAL_CAN_ConfigFilter();
HAL_CAN_Transmit();
HAL_CAN_Transmit_IT();
HAL_CAN_Receive();
HAL_CAN_Receive_IT();
HAL_CAN_Sleep();
HAL_CAN_WakeUp();
uint32_t canState = HAL_CAN_GetState();
uint32_t canError = HAL_CAN_GetError();
HAL_CAN_DeInit();
HAL_MspDeInit();
return 0;
}
1.1 HAL_CAN_Init
函数名 | HAL_CAN_Init |
---|
函数原形 | HAL_StatusTypeDef HAL_CAN_Init(CAN_HandleTypeDef* hcan) |
功能描述 | 初始化 CAN 控制器 |
输入参数 | hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | HAL_StatusTypeDef:初始化结果,可以是 HAL_OK 或 HAL_ERROR |
先决条件 | 无 |
被调用函数 | 无 |
1.2 HAL_CAN_ConfigFilter
函数名 | HAL_CAN_ConfigFilter |
---|
函数原形 | HAL_StatusTypeDef HAL_CAN_ConfigFilter(CAN_HandleTypeDef* hcan, CAN_FilterTypeDef* sFilter) |
功能描述 | 配置 CAN 过滤器 |
输入参数 1 | hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体 |
输入参数 2 | sFilter:CAN 过滤器配置结构体,包含过滤器编号、模式、掩码等信息 |
输出参数 | 无 |
返回值 | HAL_StatusTypeDef:配置结果,可以是 HAL_OK 或 HAL_ERROR |
先决条件 | 无 |
被调用函数 | 无 |
1.3 HAL_CAN_DeInit
函数名 | HAL_CAN_DeInit |
---|
函数原形 | HAL_StatusTypeDef HAL_CAN_DeInit(CAN_HandleTypeDef* hcan) |
功能描述 | 反初始化 CAN 控制器 |
输入参数 | hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | HAL_StatusTypeDef:反初始化结果,可以是 HAL_OK 或 HAL_ERROR |
先决条件 | 无 |
被调用函数 | 无 |
1.4 HAL_CAN_MspInit
函数名 | HAL_CAN_MspInit |
---|
函数原形 | void HAL_CAN_MspInit(CAN_HandleTypeDef* hcan) |
功能描述 | CAN 外设底层初始化,典型的用途是配置外设的时钟和引脚 |
输入参数 | hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | 无 |
先决条件 | 无 |
被调用函数 | 无 |
1.5 HAL_CAN_MspDeInit
函数名 | HAL_CAN_MspDeInit |
---|
函数原形 | void HAL_CAN_MspDeInit(CAN_HandleTypeDef* hcan) |
功能描述 | CAN 外设底层反初始化,典型的用途是恢复外设的默认配置 |
输入参数 | hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | 无 |
先决条件 | 无 |
被调用函数 | 无 |
1.6 HAL_CAN_Transmit
函数名 | HAL_CAN_Transmit |
---|
函数原形 | HAL_StatusTypeDef HAL_CAN_Transmit(CAN_HandleTypeDef* hcan, uint32_t Timeout) |
功能描述 | 启动 CAN 数据传输 |
输入参数 1 | hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体 |
输入参数 2 | Timeout:传输超时时间,单位为毫秒 |
输出参数 | 无 |
返回值 | HAL_StatusTypeDef:传输结果,可以是 HAL_OK 或 HAL_ERROR |
先决条件 | 无 |
被调用函数 | 无 |
1.7 HAL_CAN_Transmit_IT
函数名 | HAL_CAN_Transmit_IT |
---|
函数原形 | HAL_StatusTypeDef HAL_CAN_Transmit_IT(CAN_HandleTypeDef* hcan) |
功能描述 | 以中断方式启动 CAN 数据传输 |
输入参数 | hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | HAL_StatusTypeDef:传输结果,可以是 HAL_OK 或 HAL_ERROR |
先决条件 | 无 |
被调用函数 | 无 |
1.8 HAL_CAN_Receive
函数名 | HAL_CAN_Receive |
---|
函数原形 | HAL_StatusTypeDef HAL_CAN_Receive(CAN_HandleTypeDef* hcan, uint8_t FIFONumber, uint32_t Timeout) |
功能描述 | 接收 CAN 数据 |
输入参数 1 | hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体 |
输入参数 2 | FIFONumber:FIFO 编号,可以是 CAN_FIFO0 或 CAN_FIFO1 |
输入参数 3 | Timeout:接收超时时间,单位为毫秒 |
输出参数 | 无 |
返回值 | HAL_StatusTypeDef:接收结果,可以是 HAL_OK 或 HAL_ERROR |
先决条件 | 无 |
被调用函数 | 无 |
1.9 HAL_CAN_Receive_IT
函数名 | HAL_CAN_Receive_IT |
---|
函数原形 | HAL_StatusTypeDef HAL_CAN_Receive_IT(CAN_HandleTypeDef* hcan, uint8_t FIFONumber) |
功能描述 | 以中断方式启动 CAN 数据接收 |
输入参数 1 | hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体 |
输入参数 2 | FIFONumber:FIFO 编号,可以是 CAN_FIFO0 或 CAN_FIFO1 |
输出参数 | 无 |
返回值 | HAL_StatusTypeDef:接收结果,可以是 HAL_OK 或 HAL_ERROR |
先决条件 | 无 |
被调用函数 | 无 |
1.10 HAL_CAN_Sleep
函数名 | HAL_CAN_Sleep |
---|
函数原形 | HAL_StatusTypeDef HAL_CAN_Sleep(CAN_HandleTypeDef* hcan) |
功能描述 | 进入 CAN 休眠模式 |
输入参数 | hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | HAL_StatusTypeDef:操作结果,可以是 HAL_OK 或 HAL_ERROR |
先决条件 | 无 |
被调用函数 | 无 |
1.11 HAL_CAN_WakeUp
函数名 | HAL_CAN_WakeUp |
---|
函数原形 | HAL_StatusTypeDef HAL_CAN_WakeUp(CAN_HandleTypeDef* hcan) |
功能描述 | 唤醒 CAN 控制器 |
输入参数 | hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | HAL_StatusTypeDef:操作结果,可以是 HAL_OK 或 HAL_ERROR |
先决条件 | 无 |
被调用函数 | 无 |
1.12 HAL_CAN_IRQHandler
函数名 | HAL_CAN_IRQHandler |
---|
函数原形 | void HAL_CAN_IRQHandler(CAN_HandleTypeDef* hcan) |
功能描述 | CAN 中断处理函数 |
输入参数 | hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | 无 |
先决条件 | 无 |
被调用函数 | 无 |
1.13 HAL_CAN_TxCpltCallback
函数名 | HAL_CAN_TxCpltCallback |
---|
函数原形 | void HAL_CAN_TxCpltCallback(CAN_HandleTypeDef* hcan) |
功能描述 | CAN 数据传输完成回调函数 |
输入参数 | hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | 无 |
先决条件 | 无 |
被调用函数 | 无 |
1.14 HAL_CAN_RxCpltCallback
函数名 | HAL_CAN_RxCpltCallback |
---|
函数原形 | void HAL_CAN_RxCpltCallback(CAN_HandleTypeDef* hcan) |
功能描述 | CAN 数据接收完成回调函数 |
输入参数 | hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | 无 |
先决条件 | 无 |
被调用函数 | 无 |
1.15 HAL_CAN_ErrorCallback
函数名 | HAL_CAN_ErrorCallback |
---|
函数原形 | void HAL_CAN_ErrorCallback(CAN_HandleTypeDef *hcan) |
功能描述 | CAN 错误处理回调函数 |
输入参数 | hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | 无 |
先决条件 | 无 |
被调用函数 | 无 |
1.16 HAL_CAN_GetState
函数名 | HAL_CAN_GetState |
---|
函数原形 | uint32_t HAL_CAN_GetState(CAN_HandleTypeDef* hcan) |
功能描述 | 获取 CAN 控制器状态 |
输入参数 | hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | uint32_t:CAN 控制器状态,可能的值有: |
- HAL_CAN_STATE_READY:就绪状态
- HAL_CAN_STATE_BUSY:忙碌状态
- HAL_CAN_STATE_BUSY_TX:忙碌发送状态
- HAL_CAN_STATE_BUSY_RX:忙碌接收状态
- HAL_CAN_STATE_BUSY_TX_RX:忙碌发送接收状态
- HAL_CAN_STATE_TIMEOUT:超时状态
- HAL_CAN_STATE_ERROR:错误状态 |
| 先决条件 | 无 |
| 被调用函数 | 无 |
1.17 HAL_CAN_GetError
函数名 | HAL_CAN_GetError |
---|
函数原形 | uint32_t HAL_CAN_GetError(CAN_HandleTypeDef* hcan) |
功能描述 | 获取 CAN 错误状态 |
输入参数 | hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体 |
输出参数 | 无 |
返回值 | uint32_t:CAN 错误状态,可能的值有: |
- HAL_CAN_ERROR_NONE:无错误
- HAL_CAN_ERROR_EWG:错误警告
- HAL_CAN_ERROR_EPV:误差传动器警告
- HAL_CAN_ERROR_BOF:总线关闭错误
- HAL_CAN_ERROR_LEC:最后的错误代码
- HAL_CAN_ERROR_SOF:起始帧错误
- HAL_CAN_ERROR_ACK:确认错误
- HAL_CAN_ERROR_BR:位错误
- HAL_CAN_ERROR_BD:数据错误 |
| 先决条件 | 无 |
| 被调用函数 | 无 |
该文档修改记录:
修改时间 | 修改说明 |
---|
2024年4月8日 | 第一次发布,介绍了 A5 STM32_HAL库函数 之 CAN通用驱动程序所有函数的介绍及使用 |
总结
以上就是A5 STM32_HAL库函数 之 CAN通用驱动程序所有函数的介绍及使用的内容。
有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。
创作不容,如果文档对您有帮助,记得给个赞。