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中添加从站,点击启动按钮,启动成功后界面如下:
文件列表:
目录│文件列表:
└ 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