# CAN总线 **Repository Path**: dhtest2019/can-bus ## Basic Information - **Project Name**: CAN总线 - **Description**: CAN总线入门学习记录 - **Primary Language**: C - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-07-03 - **Last Updated**: 2025-07-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CAN总线 ## 介绍 CAN总线入门学习记录 ## 软件架构 软件架构说明:FreeRTOS + CubeMX + HAL (CAN + OLED + KEY + LED) ## 使用说明 1. Fork 本仓库 2. Demo03_LED_C8T6是FreeRTOS+HAL+CAN的循环发送和接收,使用环回模式,自发自收,在OLED上显示数据,如果插入了CAN收发器模块,则复位需要重新上电! 3. 两套相同的设备,按照02-CAN总线三个设备互相通信图接线,一个烧录接收设备代码,另一个烧录发送设备代码 现象: 发送端显示发送的TxID、数据长度Leng、发送的数据 接收端显示接收的RxID、数据长度Leng、接收的数据 4. Demo06_Can_StdExt_DataRemote 和 Demo06_Can_StdExt_DataRemoteRx 按照02图接线 发送设备烧录Demo06_Can_StdExt_DataRemote 接收设备烧录Demo06_Can_StdExt_DataRemoteRx 发送端:开启 CAN_Transmit_Func xKey_Handle 两个任务,注释默认任务的PC13操作,作为发送端指示灯用 接收端:开启 xCAN_Receive_Handle 任务(只开启这一个任务+默认任务即可),取消注释默认任务的PC13操作,作为指示灯用 操作:按按键1和按键2,发送数据,数据++ 现象: 发送端显示发送的TxID、数据长度Leng、发送的数据 接收端根据接收的数据显示对应的信息 注意:CAN模式是手动修改的,在CubeMX中配置未更正为Normal模式 5. 备份Demo07_CanFilters_16List 标识符过滤器 16位列表模式 完善发送部分代码,定义一个结构体数组,存储待发送的帧,每次按按键,就发送一个待发帧 CAN总线代码分别部署在两个设备上,一个发送端烧录Demo07_CanFilters_16List代码,另一个接收端烧录Demo07_CanNormal_All_In代码(接收端基本是全速运行,只有接收的任务) 注意:CAN总线上处于正常模式的设备至少要有两个,因为一个设备发出一个报文后,需要别的设备给应答,如果只有一个设备是正常模式,发出一帧后没有收到应答,发送就失败了 6. 验证过滤器 - 16位列表模式 修改发送设备代码,模拟总线上存在的报文,发送报文;配置接收端过滤器,查看是否生效 备份两个工程Demo08的Tx和Rx, 发送6组标准数据帧, 接收端现在是全通, 能发能收 修改过滤器配置,满足第一行的过滤器配置 如果想接收0x234的遥控帧那就这样配置:(0x234<<5) | 0x10。发送端没有发送遥控帧,这里仅做说明。 7. 更新了OLED显示的代码,显示接收的是stdard帧和extended帧,数据长度,数据帧还是扩展帧,ID号,以及数组里的8个数据 8. 发送端烧录Demo09_Filters_loopback_TxRx代码,自动发送数据(按键会导致发送代码卡死,直接改成定时1000ms发送一次);接收端烧录Demo07_CanNormal_All_In(修改了OLED显示),自动接收数据,全通数据,监控总线报文ID ## 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)