【E210】CanFestival移植至战舰STM32F1开发板

2021-08-16 19:47:42      索炜达电子      1486     

项目编号:E210

文件大小:3.4M

源码说明:带中文注释

开发环境:C编译器

简要概述:

1使用STM32CubeMX新建一个工程,仅需对CAN、RCC、SYS做简单的配置即可,CAN波特率配置为500k,点击Project -> Generate Code生成Keil工程与代码;

2.CanFestival官网下载最新版的源代码,在工程目录下新建CanFestival文件夹,将相应的文件拷入其中,其中ObjDict.c,ObjDict.h的生成在博文使用Objdictedit生成CanFestival所需的对象字典文件中讲述,can_STM32.c,timer_STM32.c参考源代码中的can_AVR.c,timer_AVR.c修改而来

3.在timer_STM32.c中需要实现setTimer,getElapsedTime,timerCanFestival三个函数,在can_STM32.c中需要实现canSend函数,在dcf.c中需要在inline前添加static,否则编译不通过,原因不明,在main.c中需要调用setNodeId和setState对协议栈进行配置;

4.编译通过后下载至战舰STM32F1开发板,使用周立功USBCAN-E-P主站卡进行测试,在CANmanager for CANopen中添加从站,点击启动按钮,启动成功后界面如下:

【E210】CanFestival移植至战舰STM32F1开发板

文件列表:

目录│文件列表:

 └ Example_CanFestival_STM32F103

    │ .mxproject

    │ Example_CanFestival_STM32F103.ioc

    └ mx.scratch

    ├ CanFestival

    │  │ DS301.eds

    │  ├ driver

    │  │  │ can_STM32.c

    │  │  └ timer_STM32.c

    │  ├ include

    │  │  │ can.h

    │  │  │ can_driver.h

    │  │  │ data.h

    │  │  │ dcf.h

    │  │  │ def.h

    │  │  │ emcy.h

    │  │  │ lifegrd.h

    │  │  │ lss.h

    │  │  │ nmtMaster.h

    │  │  │ nmtSlave.h

    │  │  │ objacces.h

    │  │  │ ObjDict.h

    │  │  │ objdictdef.h

    │  │  │ pdo.h

    │  │  │ sdo.h

    │  │  │ states.h

    │  │  │ sync.h

    │  │  │ sysdep.h

    │  │  │ timer.h

    │  │  └ timers_driver.h

    │  │  └ STM32

    │  │     │ applicfg.h

    │  │     │ canfestival.h

    │  │     │ config.h

    │  │     └ timerscfg.h

    │  └ src

    │     │ dcf.c

    │     │ emcy.c

    │     │ lifegrd.c

    │     │ lss.c

    │     │ nmtMaster.c

    │     │ nmtSlave.c

    │     │ objacces.c

    │     │ ObjDict.c

    │     │ pdo.c

    │     │ sdo.c

    │     │ states.c

    │     │ sync.c

    │     └ timer.c

    ├ Drivers

    │  ├ CMSIS

    │  │  ├ Device

    │  │  │  └ ST

    │  │  │     └ STM32F1xx

    │  │  │        ├ Include

    │  │  │        │  │ stm32f103xe.h

    │  │  │        │  │ stm32f1xx.h

    │  │  │        │  └ system_stm32f1xx.h

    │  │  └ Include

    │  │     │ arm_common_tables.h

    │  │     │ arm_const_structs.h

    │  │     │ arm_math.h

    │  │     │ cmsis_armcc.h

    │  │     │ cmsis_armcc_V6.h

    │  │     │ cmsis_gcc.h

    │  │     │ core_cm0.h

    │  │     │ core_cm0plus.h

    │  │     │ core_cm3.h

    │  │     │ core_cm4.h

    │  │     │ core_cm7.h

    │  │     │ core_cmFunc.h

    │  │     │ core_cmInstr.h

    │  │     │ core_cmSimd.h

    │  │     │ core_sc000.h

    │  │     └ core_sc300.h

    │  └ STM32F1xx_HAL_Driver

    │     ├ Inc

    │     │  │ stm32f1xx_hal.h

    │     │  │ stm32f1xx_hal_can.h

    │     │  │ stm32f1xx_hal_can_ex.h

    │     │  │ stm32f1xx_hal_cortex.h

    │     │  │ stm32f1xx_hal_def.h

    │     │  │ stm32f1xx_hal_dma.h

    │     │  │ stm32f1xx_hal_dma_ex.h

    │     │  │ stm32f1xx_hal_flash.h

    │     │  │ stm32f1xx_hal_flash_ex.h

    │     │  │ stm32f1xx_hal_gpio.h

    │     │  │ stm32f1xx_hal_gpio_ex.h

    │     │  │ stm32f1xx_hal_pwr.h

    │     │  │ stm32f1xx_hal_rcc.h

    │     │  │ stm32f1xx_hal_rcc_ex.h

    │     │  │ stm32f1xx_hal_tim.h

    │     │  │ stm32f1xx_hal_tim_ex.h

    │     │  └ Legacy

    │     │     └ stm32_hal_legacy.h

    │     └ Src

    │        │ stm32f1xx_hal.c

    │        │ stm32f1xx_hal_can.c

    │        │ stm32f1xx_hal_cortex.c

    │        │ stm32f1xx_hal_dma.c

    │        │ stm32f1xx_hal_flash.c

    │        │ stm32f1xx_hal_flash_ex.c

    │        │ stm32f1xx_hal_gpio.c

    │        │ stm32f1xx_hal_gpio_ex.c

    │        │ stm32f1xx_hal_pwr.c

    │        │ stm32f1xx_hal_rcc.c

    │        │ stm32f1xx_hal_rcc_ex.c

    │        │ stm32f1xx_hal_tim.c

    │        └ stm32f1xx_hal_tim_ex.c

    ├ Inc

    │  │ can.h

    │  │ gpio.h

    │  │ main.h

    │  │ stm32f1xx_hal_conf.h

    │  └ stm32f1xx_it.h

    ├ MDK-ARM

    │  │ Example_CanFestival_STM32F103.uvguix.Everley

    │  │ Example_CanFestival_STM32F103.uvoptx

    │  │ Example_CanFestival_STM32F103.uvprojx

    │  │ JLinkLog.txt

    │  │ JLinkSettings.ini

    │  └ startup_stm32f103xe.s

    │  ├ DebugConfig

    │  │  └ Example_CanFestival_STM32F103_STM32F103ZE.dbgconf

    │  ├ Example_CanFestival_STM32F103

    │  │  │ can.crf

    │  │  │ can_stm32.crf

    │  │  │ dcf.crf

    │  │  │ emcy.crf

    │  │  │ Example_CanFestival_STM32F103.map

    │  │  │ Example_CanFestival_STM32F103.sct

    │  │  │ ExtDll.iex

    │  │  │ gpio.crf

    │  │  │ lifegrd.crf

    │  │  │ lss.crf

    │  │  │ main.crf

    │  │  │ nmtmaster.crf

    │  │  │ nmtslave.crf

    │  │  │ objacces.crf

    │  │  │ objdict.crf

    │  │  │ pdo.crf

    │  │  │ sdo.crf

    │  │  │ states.crf

    │  │  │ stm32f1xx_hal.crf

    │  │  │ stm32f1xx_hal_can.crf

    │  │  │ stm32f1xx_hal_cortex.crf

    │  │  │ stm32f1xx_hal_dma.crf

    │  │  │ stm32f1xx_hal_flash.crf

    │  │  │ stm32f1xx_hal_flash_ex.crf

    │  │  │ stm32f1xx_hal_gpio.crf

    │  │  │ stm32f1xx_hal_gpio_ex.crf

    │  │  │ stm32f1xx_hal_msp.crf

    │  │  │ stm32f1xx_hal_pwr.crf

    │  │  │ stm32f1xx_hal_rcc.crf

    │  │  │ stm32f1xx_hal_rcc_ex.crf

    │  │  │ stm32f1xx_hal_tim.crf

    │  │  │ stm32f1xx_hal_tim_ex.crf

    │  │  │ stm32f1xx_it.crf

    │  │  │ stm32_canfestival.crf

    │  │  │ stm32_canfestival.d

    │  │  │ stm32_canfestival.o

    │  │  │ symbols.d

    │  │  │ sync.crf

    │  │  │ system_stm32f1xx.crf

    │  │  │ timer.crf

    │  │  └ timer_stm32.crf

    │  └ RTE

    │     └ RTE_Components.h

    └ Src

       │ can.c

       │ gpio.c

       │ main.c

       │ stm32f1xx_hal_msp.c

       │ stm32f1xx_it.c

       └ system_stm32f1xx.c

TAGCanFestival
  • 15 次
  • 1 分