当前位置: 首页 > news >正文

A5 STM32_HAL库函数 之 CAN通用驱动程序所有函数的介绍及使用

A5 STM32_HAL库函数 之 CAN通用驱动程序所有函数的介绍及使用

  • 1 CAN通用驱动程序所有函数预览
    • 1.1 HAL_CAN_Init
    • 1.2 HAL_CAN_ConfigFilter
    • 1.3 HAL_CAN_DeInit
    • 1.4 HAL_CAN_MspInit
    • 1.5 HAL_CAN_MspDeInit
    • 1.6 HAL_CAN_Transmit
    • 1.7 HAL_CAN_Transmit_IT
    • 1.8 HAL_CAN_Receive
    • 1.9 HAL_CAN_Receive_IT
    • 1.10 HAL_CAN_Sleep
    • 1.11 HAL_CAN_WakeUp
    • 1.12 HAL_CAN_IRQHandler
    • 1.13 HAL_CAN_TxCpltCallback
    • 1.14 HAL_CAN_RxCpltCallback
    • 1.15 HAL_CAN_ErrorCallback
    • 1.16 HAL_CAN_GetState
    • 1.17 HAL_CAN_GetError
  • 该文档修改记录:
  • 总结

1 CAN通用驱动程序所有函数预览

序号函数名描述
1HAL_CAN_Init()初始化CAN外设。
2HAL_CAN_ConfigFilter()配置CAN过滤器。
3HAL_CAN_DeInit()反初始化CAN外设。
4HAL_CAN_MspInit()初始化MCU外设相关的CAN引脚或资源。
5HAL_CAN_MspDeInit()反初始化MCU外设相关的CAN引脚或资源。
6HAL_CAN_Transmit()同步发送CAN消息。
7HAL_CAN_Transmit_IT()异步发送CAN消息,使用中断处理发送完成。
8HAL_CAN_Receive()同步接收CAN消息。
9HAL_CAN_Receive_IT()异步接收CAN消息,使用中断处理接收完成。
10HAL_CAN_Sleep()进入CAN休眠模式。
11HAL_CAN_WakeUp()唤醒CAN设备。
12HAL_CAN_IRQHandler()CAN中断处理程序。
13HAL_CAN_TxCpltCallback()CAN发送完成回调函数。
14HAL_CAN_RxCpltCallback()CAN接收完成回调函数。
15HAL_CAN_ErrorCallback()CAN错误回调函数。
16HAL_CAN_GetState()获取CAN状态。
17HAL_CAN_GetError()获取CAN错误状态。

使用模板:

#include "stm32f4xx_hal.h"int main(void) {// HAL初始化HAL_Init();// 初始化MCU外设相关的引脚或资源HAL_MspInit();// 初始化CAN外设HAL_CAN_Init();// 配置CAN过滤器HAL_CAN_ConfigFilter();// 启动CAN设备// 进行其他操作...// 发送CAN消息HAL_CAN_Transmit();// 异步发送CAN消息HAL_CAN_Transmit_IT();// 接收CAN消息HAL_CAN_Receive();// 异步接收CAN消息HAL_CAN_Receive_IT();// 进入CAN休眠模式HAL_CAN_Sleep();// 唤醒CAN设备HAL_CAN_WakeUp();// 获取CAN状态uint32_t canState = HAL_CAN_GetState();// 获取CAN错误状态uint32_t canError = HAL_CAN_GetError();// 反初始化CAN外设HAL_CAN_DeInit();// 反初始化MCU外设相关的引脚或资源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 过滤器
输入参数 1hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体
输入参数 2sFilter: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 数据传输
输入参数 1hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体
输入参数 2Timeout:传输超时时间,单位为毫秒
输出参数
返回值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 数据
输入参数 1hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体
输入参数 2FIFONumber:FIFO 编号,可以是 CAN_FIFO0 或 CAN_FIFO1
输入参数 3Timeout:接收超时时间,单位为毫秒
输出参数
返回值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 数据接收
输入参数 1hcan:CAN 句柄,指向一个 CAN_HandleTypeDef 结构体
输入参数 2FIFONumber: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通用驱动程序所有函数的介绍及使用的内容。
有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。
创作不容,如果文档对您有帮助,记得给个赞。

http://www.lryc.cn/news/336993.html

相关文章:

  • python如何判断图片为黑白还是彩色
  • C语言进阶课程学习记录-main函数与命令行参数
  • Utilize webcam to capture photo with camera
  • 【uniapp】开发微信小程序 — 注意事项
  • the python tutorial
  • AIoT人工智能物联网之AI 实战
  • Python 大麦抢票脚本
  • 前端开发攻略---用JavaScript打造炫酷数字变化动画效果:手写实现你的自定义动画函数!支持更改任意数字、动画速度
  • 【学习】移动端兼容性测试有什么方法及重要性
  • 记录linux从0部署java项目(宝塔)
  • Python的时间和日期:探索datetime模块
  • 代理与反向代理
  • 长风破浪会有时,直挂云帆济沧海
  • jAavascript基础积累
  • 神经网络训练中batch的作用
  • 【grpc】grpc进阶一,再回首protobuf
  • iframe嵌入Vue页面实现免登方法
  • 详解TCP/IP五层模型
  • 开创加密资产新纪元:深度解析ERC-314协议
  • Rust 实战练习 - 9. 文本编码,URL编码,加密解密
  • linux环境openfile限制
  • python之pandas数据导入和导出
  • Docker 集成 redis,并在nacos进行配置时需要注意点
  • 数据库系统工程师考试大纲
  • (Java)数据结构——图(第七节)Folyd实现多源最短路径
  • 使用Python进行高效的多线程HTTP请求
  • 如何利用OceanBase v4.2的 外部表简化外部数据处理
  • 【灵境矩阵】零代码创建AI智能体之行业词句助手
  • springboot 防抖操作
  • Playwright录制脚本 —— web自动化测试!