STM32无系统移植CanFestival小白教程

首先,如果对CANOPEN的一些基本概念不懂的话,先去看看《CANopen轻松入门》,看了那么多资料觉得这个写得最好。
链接:https://pan.baidu.com/s/1KxO_TOj2PnKg-8M8fPLpZA
提取码:8888

最近需要用到CANOPEN来通讯,网上资料很多,可是感觉没有很小白的教程,东看西看看了好久,才算是能用起来。我这边用的是STM32,不跑系统移植了CanFestival,最后实现从站接收报文并修改一些变量的值。移植参考了一些文章,在这里感谢分享资料的老哥们。按照下面的步骤应该能成功通讯获取到想要的变量值。
1、下载CanFestival源码:https://hg.beremiz.org/CanFestival-3,选择bz2格式下载就行。
2、解压下载的CanFestival源码备用。
3、在STM32工程目录下新建文件夹CanFestival,再新建其子文件夹driver、inc和src。
在这里插入图片描述4、拷贝CanFestival源码src目录下的 dcf.c、emcy.c、lifegrd.c、lss.c、nmtMaster.c、nmtSlave.c、objacces.c、pdo.c、sdo.c、states.c、sync.c、timer.c 共12个文件到STM32工程的CanFestival\src目录下。
在这里插入图片描述
5、STM32工程的CanFestival\inc目录下创建子目录stm32,并拷贝CanFestival源码include\AVR目录下的 applicfg.h、canfestival.h、config.h、timerscfg.h 共4个头文件到STM32工程的CanFestival\inc\stm32目录中。
在这里插入图片描述
6、拷贝CanFestival源码include目录下的所有.h文件到STM32工程的CanFestival\inc目录下,共19个文件。
在这里插入图片描述
7、在STM32工程的CanFestival\driver目录下创建stm32_canfestival.c。
在这里插入图片描述
9、在keil里添加各头文件路径。
在这里插入图片描述

10、注释掉config.h中红框的宏。
在这里插入图片描述
11、在stm32_canfestival.c中包含头文件#include “canfestival.h”,并定义如下空函数:

#include "canfestival.h"

void setTimer(TIMEVAL value)
{
   

}

TIMEVAL getElapsedTime(void)
{
   
	return 1;
}

unsigned char canSend(CAN_PORT notused, Message *m)
{
   
	return 1;
}

void timerForCan(void)
{
   
	
}

12、编译工程,在dcf.c中有两个内联函数会报错,在函数定义前加static即可。
在这里插入图片描述
13、再次编译,应该没有错误,如果有,自己看一下是不是需要添加一下头文件什么的。
14、完善stm32_canfestival.c中的内容。其中函数CAN1_Send_Msg和CAN底层有关&

  • 20
    点赞
  • 113
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值