STM32F103ZET6基于HAL库实现CAN回环测试和中断接收

news2024/12/28 20:27:20

简介

在野火STM32F103ZET6开发板上基于HAL库实现了CAN回环测试,并通过PCAN客户端工具和串口打印的方式,分别验证了CAN数据发送成功和CAN数据中断接收成功。

STM32F1开发板测试

STM32测试程序

发送函数

/*
 * 函数名:CAN_SetMsg
 * 描述  :CAN通信报文内容设置,设置一个数据内容为0-7的数据包
 * 输入  :发送报文结构体
 * 输出  : 无
 * 调用  :外部调用
 */	 
void CAN_SetMsg(void)
{	  
	uint32_t TxMailbox = 0;
	
#if CAN_STD
	TxHeader.StdId = 0x13;				//使用的标准ID
	TxHeader.IDE   = CAN_ID_STD;		//标准模式
#else
 	TxHeader.ExtId = 0x1314;			//使用的扩展ID
	TxHeader.IDE   = CAN_ID_EXT;		//扩展模式
#endif
	TxHeader.RTR = CAN_RTR_DATA;		//发送的是数据
	TxHeader.DLC = 2;					//数据长度为8字节
	TxHeader.TransmitGlobalTime = DISABLE;//是否发送时间戳
	
	TxData[0] = 0xAB;
	TxData[1] = 0xCD;
	
	/* 发送消息 */
	if (HAL_OK != HAL_CAN_AddTxMessage(&Can_Handle, &TxHeader, TxData, &TxMailbox)){
		printf("HAL_CAN_AddTxMessage is err\r\n");
		Error_Handler();
	}
}

void CAN_Test(void)
{		
		/* 装载一帧数据 */
		CAN_SetMsg();
		HAL_Delay(3000);
	
		if (can_flag) {				
				printf("\r\n CAN rece data: \r\n");	
				CAN_DEBUG_ARRAY(RxData, 2); 			
				can_flag = 0;
				HAL_Delay(1000);
		}	
}

中断函数

void USB_LP_CAN1_RX0_IRQHandler(void)
{
	HAL_CAN_IRQHandler(&Can_Handle);
}

void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)//接受邮箱0挂起中断回调函数
{
	if(hcan->Instance == CAN1)
	{
		can_flag = 1;//接收成功
		HAL_CAN_GetRxMessage(&Can_Handle, CAN_RX_FIFO0, &RxHeader, RxData);	//获取数据
	}
	else
	{
		can_flag = 0; //接收失败
	}
}

完整代码见: https://download.csdn.net/download/liuxu324/89470865

串口工具输出

在这里插入图片描述

PCAN-View输出

标准帧

在这里插入图片描述

扩展帧

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1853000.html

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

相关文章

Windows安全中心打开白屏的解决方法

Windows安全中心打开白屏的解决方法: 1. 复制以下内容,打开记事本粘贴并保存,同时将记事本文件的【txt后缀名改为reg】: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defende…

RTA_OS基础功能讲解 2.10-调度表

RTA_OS基础功能讲解 2.10-调度表 文章目录 RTA_OS基础功能讲解 2.10-调度表一、调度表简介二、调度表配置2.1 同步三、到期点配置四、启动调度表4.1 绝对启动4.2 相对启动4.3 同步启动五、到期点处理六、停止调度表6.1 重新启动被停止的调度表七、切换调度表八、选择同步策略8.…

NSIS 入门教程 (三)

引言 在教程的第二部分中,我们为安装程序增加了一个卸载程序,并查看了一些其他的向导页面以及安装部分的选择。第三部分的目标是使安装程序的外观更加现代化。 更现代的外观 为了给安装程序一个更现代的外观,我们要启用现代用户界面。要提…

UnityShader——基础篇之UnityShader基础

UnityShader基础 UnityShader概述 材质和UnityShader 总的来说,在Unity中需要配合使用材质(Material)和 Unity Shader 才能达到需要的效果,常见流程为: 创建一个材质创建一个 Unity Shader,并把它赋给上一步中创建的材质把材质…

AcWing算法基础课笔记——求组合数4

求组合数Ⅳ 用来解决求 C a b C_a^b Cab​的问题(没有模运算) 解决办法:分解质因数,实现高精度乘法。 C a b a ! b ! ( a − b ) ! C_a^b \frac{a!}{b!(a - b)!} Cab​b!(a−b)!a!​ 其中 a ! a! a!可以用 p p p的倍数来表示…

自动驾驶仿真:Carsim转向传动比设置

文章目录 一、转向传动比概念二、设置转向传动比1、C factor概念2、Steer Kinematics概念3、传动比计算公式 三、转向传动比验证 一、转向传动比概念 转向传动比(Steering Ratio)表示方向盘转动角度与车轮转动角度之间的关系。公式如下: 转向…

计算机网络 动态路由OSPF

一、理论知识 1.OSPF基本概念 ①OSPF是一种链路状态路由协议,使用Dijkstra算法计算最短路径。 ②OSPF使用区域(Area)来组织网络,区域0(Area 0)是主干区域。 ③路由器通过通告直连网络加入OSPF域。 ④反…

QT中制作带有界面的静态库

1、可参考以下文章 QT中制作带有界面的动态库 2、相比动态库,静态库就更简单了,,, 1)创建静态库项目 2)直接右键创建同名窗口类进行覆盖 3)编译生成静态库 4)使用

人工智能导论笔记

目录 ​编辑 绪论篇 有关知识表示和推理的零碎知识点 机器学习篇 K-近邻算法(KNN) 人工神经网络与深度学习篇 人工神经元模型 人工神经网络 BP神经网络 卷积神经网络 搜索策略 状态空间表示法 盲目搜索 启发式图搜索策略 绪论篇 3个学派&a…

实战篇:GY-906红外测温模块 + 万年历(定时器计数中断版本) -STM32篇

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 向上代码兼容GD32F450ZGT6中使用 后续项目主要在下面该专栏中发布: https://blog.csdn.net/qq_62316532/category_12608431.html?spm1001.2014.3001.5482 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转…

视频批量剪辑新境界:一键转码MP4至MP3并自动删除原文件,轻松优化存储空间与播放体验

随着数字媒体的飞速发展,视频文件已成为我们生活中不可或缺的一部分。然而,大量视频文件的累积不仅占据了宝贵的存储空间,而且在某些情况下,我们更希望提取视频中的音频内容。为了满足这一需求,我们推出了全新的视频批…

LLVM——安装多版本LLVM和Clang并切换使用(Ubuntu)

1、描述 本机(Ubuntu22)已经安装了LLVM-14,但是需要使用LLVM-12。安装LLVM-12和Clang-12并切换使用。 2、过程 安装LLVM-12和Clang-12。 sudo apt-get install llvm-12 sudo apt-get install clang-12 【注】运行 sudo apt-get install ll…

django学习入门系列之第三点《CSS基础样式介绍2》

文章目录 文字对齐方式外边距内边距往期回顾 文字对齐方式 水平对齐方式 text-align: center;垂直对齐方式 /* 注意&#xff0c;这个只能是一行来居中 */ line-height:/*长度*/ ;样例 <!DOCTYPE html> <html lang"en"> <head><meta charset…

【Oracle】实验一 安装和使用Oracle数据库

【实验目的】 掌握Oracle软件安装过程&#xff0c;选择安装组件掌握建立Oracle数据库&#xff0c;配置网络连接使用SQL*Plus&#xff0c;登录到实例和数据库掌握命令方式的关闭和启动实例及数据库 【实验内容】 安装Oracle19c&#xff0c;记录安装过程。切记&#xff1a;创建…

Jenkins定时构建自动化(二):Jenkins的定时构建

目录 ​编辑 一、 jenkins定时构建语法&#xff1a; 1. 语法规则&#xff1a; 2. 常见用法举例 3. 再次举例 接上一篇&#xff1a;Jenkins定时构建自动化(一)&#xff1a;Jenkins下载安装配置&#xff1a;Jenkins定时构建自动化(一)&#xff1a;Jenkins下载安装配置-CSDN博客 …

HTML静态网页成品作业(HTML+CSS)——故宫介绍网页(4个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有4个页面。 二、作品演示 三、代…

【教学类-36-09】20240622钓鱼(通义万相)-A4各种大小的鱼

背景需求&#xff1a; 用通义万相获得大量的简笔画鱼的图片&#xff0c;制作成不同大小&#xff0c;幼儿用吸铁石钓鱼的纸片&#xff08;回形针&#xff09;&#xff0c;涂色、排序等 补一张通义万相的鱼图 素材准备 &#xff08;一&#xff09;优质的鱼图片 &#xff08;二&a…

(2024)豆瓣电影TOP250爬虫详细讲解和代码

&#xff08;2024&#xff09;豆瓣电影TOP250爬虫详细讲解和代码 爬虫目的 获取 https://movie.douban.com/top250 电影列表的所有电影的属性。并存储起来。说起来很简单就两步。 第一步爬取数据第二步存储 爬虫思路 总体流程图 由于是分页的&#xff0c;要先观察分页的规…

VS Code安装及环境配置(超详细)

VS Code简介 Visual Studio Code&#xff08;简称 VS Code &#xff09;是 Microsoft 于2015年4月发布的一款代码编辑器&#xff0c;以界面简洁、轻量著称。 它是一款免费开源的现代化轻量级代码编辑器&#xff0c;支持几乎所有主流开发语言的语法高亮、智能代码补全、自定义…

投票多功能小程序(ThinkPHP+Uniapp+FastAdmin)

&#x1f389;你的决策小助手&#xff01; 支持图文投票、自定义选手报名内容、自定义主题色、礼物功能(高级授权)、弹幕功能(高级授权)、会员发布、支持数据库私有化部署&#xff0c;Uniapp提供全部无加密源码。​ 一、引言&#xff1a;为什么我们需要多功能投票小程序&#…