ROS中启用CAN

1、源码安装canopen
从官网下载canopen至Ubuntu,下载地址:
https://github.com/ros-industrial/ros_canopen/tree/kinetic-devel
终端输入:

$ mkdir -p ~/canopen/src  #建立一个名为canopen的文件夹

再将刚才下载的canopen文件解压到/canopen/src文件目录下,原文件应该在download下。
进入canopen目录下,终端输入:

$ catkin_make

成功后如下所示:
在这里插入图片描述
2、配置CAN
终端输入:

$ sudo modprobe mttcan
$ sudo modprobe can
$ sudo modprobe can_raw
$ sudo ip link set can0 type can bitrate 500000 dbitrate 2000000 berr-reporting on fd on
$ sudo ip link set up can0
$ sudo ip link set can1 type can bitrate 500000 dbitrate 2000000 berr-reporting on fd on
$ sudo ip link set up can1

使用

$ ifconfig

查询CAN端口是否打开
3、测试
新建终端打开roscore

$ roscore

新建终端输入:

$  rosrun socketcan_bridge socketcan_to_topic_node

可以看到已经成功连接上了CAN0
在这里插入图片描述
在新建终端输入:

$ rostopic echo /received_messages

可以在线监测来自于can0收到的数据
在这里插入图片描述

  • 3
    点赞
  • 146
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 41
    评论
`CAN0_RX1_IRQHandler` 是GD32库用于处理 CAN0 接收邮箱1断的断处理函数。 在使用CAN模块时,当接收到CAN数据时,可以通过断方式进行处理。当CAN接收邮箱1有新的消息到达时,将会触发 `CAN0_RX1_IRQHandler` 断处理函数。 你可以在代码编写 `CAN0_RX1_IRQHandler` 函数来处理接收到的CAN数据,例如读取接收到的数据并进行相应的处理操作。 以下是一个示例代码,展示了如何编写 `CAN0_RX1_IRQHandler` 断处理函数: ```c #include "gd32f10x.h" void CAN0_RX1_IRQHandler(void) { if(can_receive_message_pending(CAN0, CAN_RECEIVE_FIFO1)) { can_receive_message_struct receive_message; can_message_receive(CAN0, CAN_RECEIVE_FIFO1, &receive_message); // 在这里进行接收到的CAN数据的处理 // 例如,读取接收到的数据并进行相应的操作 uint8_t received_data[8]; for(uint8_t i = 0; i < receive_message.rx_dlen; i++) { received_data[i] = receive_message.rx_data[i]; } } } ``` 在这个示例代码,`CAN0_RX1_IRQHandler` 断处理函数首先检查 CAN 接收邮箱1 是否有未处理的消息(通过 `can_receive_message_pending` 函数)。如果有未处理消息,则调用 `can_message_receive` 函数从接收邮箱1读取消息。 然后,你可以根据接收到的数据进行相应的处理操作,例如将数据存储到变量或进行其他操作。 请注意,在使用断处理函数之前,需要确保已经正确配置了CAN模块的断,并使能相应的断。另外,需要在NVIC配置和使能CAN0_RX1_IRQn断。 以上是一个简单的示例,具体的操作和处理方式可能会根据你的具体需求和系统架构有所不同。请参考GD32库函数和文档,以及相关的MCU参考手册,获取更详细的信息。
评论 41
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶执念

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值