【CANopen】关于STM32的CanFestival移植
2024-01-02 19:14:59
系列文章目录
使用STM32F407单片机
一、准备工作
二、源码移植
1、新建CubeMX工程
默认都会,略
2、移植CanFestival源码
在CubeMX生成代码路径下创建一个文件夹,将源码目录下的include和src
两个文件夹复制进去
3、去除源码中的多余项
首先是include文件夹,如图所示,其中,timers.h大概率会和CubeMX中生成的文件名重名,所以需要重命名
这个文件夹改名后需要修改src\timer.c和include\sdo.h中的头文件引用
接下来是src文件夹,如图
4、源码修改
- config.h
- dcf.c
三、底层驱动适配
CAN和定时器的配置在CubeMX中配置。配置完成后需要我们完成的函数一共有三个:
uint8_t canSend(CAN_PORT notused, Message *message)
void setTimer(TIMEVAL value)
TIMEVAL getElapsedTime(void)
另外,需要在定时器中断中清除CAN软件定时器的计数值。
需要注意的点:
- CAN的过滤器配置还是需要手动配置的;
- CAN的过滤器配置为0;
- 定时器的配置,需要按照
timerscfg.h
中的配置,如图,定时器计数值+1的时间和定时器的时钟和分频值有关。
四、字典工具
使用字典之前需要先安装python和wxpython,实测3.8版本打开字典闪退,换用2.7版本可用,其他版本未使用。
进入CanFestival源码objdictgen文件夹中
将Gnosis_Utils-current.tar.gz解压,复制gnosis文件夹到CanFestival源码objdictgen文件夹中
然后双击打开objdictedit.py,出现如下界面为成功:
1、字典的使用
新建一个字典,测试一下CanFestival移植是否成功
然后点击文件->建立字典,将字典生成c和h文件,将这两个文件添加进工程。
注意修改CO_Data类型引用的名字
初始化调用下面这三个函数既可
setNodeId(&master_Data,0x02);//设置node-id
setState(&master_Data, Initialisation);//canopen初始化
setState(&master_Data, Operational);//canopen进入操作状态
完成以上后,既可在接收端收到id为0x700的报文。
文章来源:https://blog.csdn.net/qq_41214093/article/details/135339916
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!