最近几天在用CUBEMX实现stm32f407zgt6的双can通讯,中间走了一些弯路,记录下来供需要的人参考借鉴,希望可以帮助大家节省开发周期。

准备工作:

一、硬件

使用启明高配版开发板,因为启明的板子上有两个can可以使用,在调试之前,需要先将can1_H连接can2_H,can1_L连接can2_L,并且需要将P15和P21跳线帽连接好。

二、软件工具

1.我使用的软件版本是CUBEMX4.27,使用的库为fw_f4_v1210。

2.keil版本

程序编写

can在网上有很多介绍,可以在网上搜索一些基础介绍,之前调试can主要是卡在了新的库包里对滤波器以及FIFO和回调函数的设置上出现一些问题。

一、cubemx设置

1.Pinout部分

使能RCC,CAN1,CAN2以及开发板的PE3,PE4,PG9,SYS可以选择SW模式。点亮灯主要是想在调试的时候使用方便

2.Clock Configuration,建议将系统时钟设置为168

3.configuration设置

can1设置,波特率设置为500并勾选RX0中断

can2设置和can1相同

NVIC部分

点击生成代码

建议勾选下图中选项,生成的代码各部分会更清晰

因为使用的是MDK5,所以我勾选图中选项

完成配置后生成代码

二、代码编写

点开工程目录中的MDK-ARM文件夹中的MDK工程

用cubemx生成的代码是基础配置代码,里面一些具体的服务函数和配置仍需要我们添加,主要有以下几个部分

can.c部分。

添加接收和发送函数句柄

在can的初始化函数中添加对滤波器的配置,SlaveStartFilterBank为从过滤器配置,用来选择从过滤器的寄存器编号。当选择双can模式时,这个参数要跟can2的FilterBank一致。

以下是can1的滤波器配置

以下是can2的配置,HAL_CAN_ConfigFilter的第一个参数可以是can1也可以是can2

接下来编写两个发送函数CAN_TRANSMIT1和CAN_TRANSMIT2

以下是CAN_TRANSMIT1函数

以下是CAN_TRANSMIT2,因为我想实现的是can2接收的数据在发回给can1,所以我将can2接收的数据在赋值给can1

书写回调函数,因为我将can1和can2都绑定在FIFO0上,所以只写了一个回调函数(也可以将can1绑定FIFO0,can2绑定FIFO1,写两个回调函数)

can.h部分

主要是声明几个结构体和两个函数

main.c部分,调用传递函数即可

到此,配置完成,下载到开发板中即可实现can之间的通信,实验成功的现象是led1和led2灯亮起

cubemx+stm32f407+双Can通信相关推荐

  1. linux进程间通信:消息队列实现双端通信

    双端通信描述 利用消息队列针对发送接受消息的类型唯一性 进行多个客户端之间消息传递,而不需要server端进行消息转发. 同时消息队列的读阻塞和写阻塞特性(消息队列中已经写入数据,如果再不读出来,则无 ...

  2. STC12C5A60S2单片机-双串口通信

    STC12C5A60S2单片机是一款功能比较强大的单片机,它拥有两个全双工串行通信接口,串口1的功能及操作与传统51单片机串行口相同:特殊的是STC12C5A60S2单片机内部有一个独立波特率发生器, ...

  3. Unity与Android交互(双端通信)

    前言 最近小编开始做关于手部康复的项目,需要Android集成Unity,以Android为主,Unity为辅的开发:上一篇给大家分享了Unity嵌入Android的操作过程,所以今天想给大家分享一下 ...

  4. 2021年双非通信方向的详细保研经历(北邮、上交、东南)

    2021年双非通信方向的详细保研经历 介绍 专业: 双非通信工程(双非真的太难了,每次都是title被碾压) 基本情况: 绩点4.46/5.0,专业排名2/543(非rk1还是有一点劣势的) 六级47 ...

  5. Linux 设置双网卡通信,外网网卡和内网网卡

    文章目录 Linux 设置双网卡通信,外网网卡和内网网卡 1.配置路由表 2.设置启动自动生效 Linux 设置双网卡通信,外网网卡和内网网卡 1.配置路由表 背景,Linux 主机已经安装了内网.外 ...

  6. STM32F103+NRF2401+游戏摇杆ADC双单片机通信遥控小车

    STM32F103+NRF2401+游戏摇杆ADC双单片机通信遥控小车 文章目录 STM32F103+NRF2401+游戏摇杆ADC双单片机通信遥控小车 前言 一.实现的功能? 二.主要代码及模块讲解 ...

  7. ROS与STM32F407实现消息通信(含源码)

    关注微信公众号"混沌无形",后台回复:13462EE.免费获取完整工程源码! 本文参考STM32F1与ROS的通信工程:https://blog.csdn.net/qq_36349 ...

  8. 基于STM32的双蓝牙通信

    首先我们应该让两个蓝牙间互相通信 1.准备两个蓝牙模块(主从一体),用USB转TTL连接到电脑,再打开两个串口分别连接两个蓝牙模块,上电同时按住蓝牙上的按键进入AT指令模式(指示灯慢闪),波特率设置为 ...

  9. STM32F407多路串口通信进行数据收发

    一直被说是就不能把几个串口放在一起,写个标准例程直接用,非要每次用哪个串口才现场改程序,被迫把usart1,usart2,usart3进行了资源整合,挂在这以备不时之需. 功能简述: 串口1,串口2, ...

最新文章

  1. CodeIgniter自带的数据库类使用介绍
  2. java中char占的二进制,java数据类型与二进制详细介绍
  3. iis服务器怎样配置多张证书,IIS配置多个ssl怎么做?怎么配置?
  4. 3D空间的指定起点和终点的抛体运动
  5. linux命令:until循环
  6. Android Timer编写方式深解
  7. 4.9.5 通用注释
  8. Windows 环境下配置 Oracle 11gR2 Data Guard 手记
  9. TZOJ 4839 麦森数(模拟快速幂)
  10. [有源滤波器]Sallen-key开关电容电路(二阶低通滤波器)
  11. java查看eth转账状态_eth交易记录input解析
  12. SPSS实现两变量相关分析
  13. 【中科三方】什么是云解析DNS?云解析DNS有必要购买吗?
  14. 左神算法:找到二叉树中的最大搜索二叉子树(树形dp套路,Java版)
  15. 《蜗居》台词100句 血淋淋的经典
  16. NVIDIA Jetson之OTA远程升级Jetpack
  17. Android发送edp服务器,Android6.0调试笔记之edp屏无法点亮问题怎么解决
  18. 拿下Facebook黑客杯四冠王!与Jeff Dean相提并论...ACM竞赛之神的传奇前半生
  19. 一个几乎免费的云服务器和虚拟主机平台
  20. cocos creator微信小游戏截图

热门文章

  1. 逆势马丁网格策略交易演示
  2. java饼图_java 百分比饼图的实现代码
  3. svg模糊图片局部清晰透视图
  4. 【数学建模笔记 07】数学建模的对策论
  5. python平行四边形函数_在Python中,如何确定一个点是否在某个平行四边形内?
  6. linux 打开三维stl文件,三维stl文件查看工具下载
  7. Error:NgdBuild:604解决方法
  8. 猿创征文|瑞吉外卖——移动端_邮箱验证码登录
  9. 穷人思维和富人思维,决定你一生的财富
  10. pyqt5 图像上划线_PyQt5如何用QPainter在QScrollArea上画线?