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.mzph.cn/news/801242.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

fssh挂载远程服务器目录

fssh挂载远程服务器目录 1、服务器自动登录 1.1 生成SSH 密钥对 ssh-keygen -t rsa这个命令会生成一个私钥(默认保存在 ~/.ssh/id_rsa)和一个公钥(默认保存在 ~/.ssh/id_rsa.pub)。 你可以通过 -f 参数指定一个不同的文件名和路径来保存这些密钥。 会要求输入名称和密码…

聊聊Linux内核中内存模型

介绍 在Linux中二进制的程序从磁盘加载到内存,运行起来后用户态是使用pid来唯一标识进程,对于内核都是以task_struct表示。二进制程序中的数据段、代码段、堆都能提现在task_struct中。每一个进程都有自己的虚拟地址空间,虚拟地址空间包含几…

【2024】Prometheus通过node_exporter都监控了什么

我们通过prometheus进行监控,通过node_exporter进行Linux系统的监控。 那么我们通过node_exporter都监控了什么? 目录 常用指标CPU相关内存相关磁盘相关网络相关其他指标常用监控告警案例:cpu案例:内存案例:磁盘案例:网络案例:常用指标 Prometheus通过node_exporter可以…

交换机虚拟化技术

1、思科虚拟化技术: (1)stackwise:堆叠,一般用于盒式交换机的场景 ①原理:可以将多台物理设备逻辑的虚拟成一台大的设备 ②冗余交换机管理引擎: 三种模式: 1)RPR&am…

stack和queue的使用

前言 前面我们对string、vector、list做了介绍并对底层进行了实现!本期我们继续来介绍STL容器,stack和queue! 本期内容介绍 stack 常用接口的介绍 queue 常用接口的介绍 什么是stack? 这里的栈和我们C语言实现的数据结构的那个栈功能是一样…

向上向下采样

在数字图像处理中,向上采样(upsampling)和向下采样(downsampling)是两种常见的操作,用于改变图像的分辨率。 向上采样(Upsampling): 向上采样是指增加图像的分辨率&…

leetcode代码记录(最长连续递增序列

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 给定一个未经排序的整数数组&#xff0c;找到最长且 连续递增的子序列&#xff0c;并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r&#xff08;l < r&#xff09;确定…

如何查看当前python环境的安装路径

起因&#xff1a;在查看python安装路径时&#xff0c;由于环境变量未添加&#xff0c;导致直接用python无法查看&#xff0c;但是pip又可用。因此找到另外一种代替方法。 利用pip show 库 pip show numpy

代码随想录第34天| 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果

1005.K次取反后最大化的数组和 1005. K 次取反后最大化的数组和 - 力扣&#xff08;LeetCode&#xff09; 代码随想录 (programmercarl.com) 贪心算法&#xff0c;这不就是常识&#xff1f;还能叫贪心&#xff1f;LeetCode&#xff1a;1005.K次取反后最大化的数组和_哔哩哔…

德兰梅尔:耐高温热销的膜元件亮相2024上海国际生物发酵展

德兰梅尔&#xff1a;耐高温热销的膜元件盛装亮相2024上海国际生物发酵展&#xff0c;8月7-9号上海新国际博览中心与您不见不散&#xff01; 据了解&#xff0c;从成立至今&#xff0c;德兰梅尔一直专注膜技术、膜产品的开发生产。在中国市场上&#xff0c;德兰梅尔刚步入中国…

共享门店模式:一种资源优化的创新合伙人机制

共享门店模式&#xff0c;亦被称为“共享股东”模式&#xff0c;是一种创新的合伙人机制。它运用新颖的思维、方式及系统&#xff0c;吸引并集结拥有资源和能力的人才&#xff0c;共同合作&#xff0c;并使他们转变为门店的分红股东。 这一模式的核心在于门店资源的共享&#x…

题目:学习使用按位或 |

题目&#xff1a;学习使用按位或 | There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheated should leave qui…

(css)el-tag标签,el-select多选框,el-cascader级联选框自定义样式

(css)el-tag标签&#xff0c;el-select多选框&#xff0c;el-cascader级联选框自定义样式 css: :root {--button-color: #065de0; }// 标签 .tagNew {margin-right: 20px;border-radius: 20px; }.el-tag.el-tag--info {background-color: var(--button-color);border-color: v…

字符串匹配算法之BF与KMP算法

目录 BF算法(暴力匹配算法) KMP算法 核心思想&#xff1a; next数组 next数组的优化 BF算法(暴力匹配算法) #include <assert.h> int BF(const char* str, const char* sub) {assert(str ! NULL && sub ! NULL);if (str NULL || sub NULL){return -1;}int…

MySQL学习笔记(二)

1、把查询结果中去除重复记录 2、连接查询 从一张表中单独查询&#xff0c;称为单表查询。emp表和dept表联合起来查询数据&#xff0c;从emp表中取员工名字&#xff0c;从dept表中取部门名字&#xff0c;这种跨表查询&#xff0c;多张表联合起来查询数据&#xff0c;被称为连…

【Java SE】8.1继承和多态

目录 1.继承 1.1为什么需要继承 1.2继承概念 1.3继承的语法 1.4父类成员访问 1.4.1子类中访问父类的成员变量 1.4.2子类中访问父类的成员方法 1.5 super关键字 1.6子类构造方法 1.7 super和this 1.8再谈初始化 1.9 protected关键字 1.10继承方式 1.11 final关键字 …

YOLOv9最新改进系列:YOLOv8融合BoTNet模块,融合CNN+自然语言处理技术的优势,有效提升检测效果!

YOLOv9最新改进系列&#xff1a;YOLOv9融合BoTNet模块&#xff0c;融合CNN自然语言处理技术的优势&#xff0c;有效提升检测效果&#xff01; YOLOv9原文链接戳这里&#xff0c;原文全文翻译请关注B站Ai学术叫叫首er B站全文戳这里&#xff01; 详细的改进教程以及源码&…

解读一个binlog文件的内容

解析一个binlog mysqlbinlog -v mysql-bin.000001 /*!50530 SET SESSION.PSEUDO_SLAVE_MODE1*/; /*!50003 SET OLD_COMPLETION_TYPECOMPLETION_TYPE,COMPLETION_TYPE0*/; DELIMITER /*!*/;# at 4 #240402 17:28:13 server id 4294967295 end_log_pos 123 CRC32 0x64dbff7b …

深入理解计算机系统 家庭作业 2.84

这题没有这个要求所以可以用 ? > : < 这种运算 以下代码用的是位级运算.因为我误解了题意 呜呜呜 想看用判断的代码请自行百度 ((((ux<<9>>9)<<((ux<<1>>24)-127)) - ((uy<<9>>9)<<((uy<<1>>24)-127)))>…

【攻防世界】ics-05(PHP伪协议+代码审计+Linux指令)

首先根据题目提示&#xff0c;进入云平台设备维护中心页面&#xff1a; 页面无异常&#xff0c;检查源代码&#xff1a; 发现注入点 ?page&#xff0c;大致有如下思路&#xff1a;1、SSTI模板引擎漏洞&#xff1b;2、XXS&#xff1b;3、PHP伪协议。 首先尝试SSTI漏洞&#xf…