2021-08-16 19:47:42 索煒達電子 1482
項目編號:E210
文件大小:3.4M
源碼說明:帶中文注釋
開發(fā)環(huán)境: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對協(xié)議棧進行配置;
4.編譯通過后下載至戰(zhàn)艦STM32F1開發(fā)板,使用周立功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