欧美日韩欧美,女人和拘做受大片免费看,麻花豆传媒剧国产mv免费版特色,欧美成人精品高清在线观看,麻豆产精国品一二三产区区

【E212】基于STM32F103的CANopen主從機(jī)PDO&SDO例程

2021-08-16 20:03:01      索煒達(dá)電子      1977     

項(xiàng)目編號:E212

文件大小:23.5M

源碼說明:帶中文注釋

開發(fā)環(huán)境:C編譯器

簡要概述:

這是一個(gè)CANopen協(xié)議通信例程,硬件平臺為STM32F103單片機(jī),實(shí)現(xiàn)了簡單的PDO和SDO通信,CANopen的實(shí)現(xiàn)是移植的開源協(xié)議棧CanFestival


CanFestival

CanFestival(官網(wǎng)鏈接https://canfestival.org/), 網(wǎng)上資料很多,入門也很簡單,官方的Manul寫的很簡潔易懂。用CanFestival開源協(xié)議棧之前主要是移植協(xié)議棧到自己的平臺上,支持的平臺很多,Linux和類Unix,Windows,32位ARM單片機(jī)...都可以移植使用,本工程是基于STM32F103平臺的應(yīng)用

硬件

使用STM32F103為主控,主機(jī)用的STM32F103ZET6,6個(gè)從機(jī)用的STM32F103C8T6,CAN收發(fā)器用的NXP家的TJA1050,便宜、好用。主機(jī)要跑emWin就加了塊SDRAM。

開發(fā)環(huán)境

Windows平臺開發(fā),用的MDK,下載后直接打開project文件夾下的工程文件即可打開工程。CANopen對象字典的編輯器我用的是Can Festival官方推薦的,雖然有點(diǎn)不怎么智能,但是湊活著用吧,畢竟自家的協(xié)議棧還得用自家的編輯器不是,避免踩坑嘛(其實(shí)官方的編輯器坑也多),另外由于監(jiān)視用的主機(jī)我加了塊五寸LCD顯示,懶得手寫GUI了,直接用的emWin圖形軟件框架。

主、從機(jī)

主機(jī)用STM32F103ZET6,從機(jī)用C8T6,例程里面,由于主機(jī)跑emWin,沒內(nèi)存跑操作系統(tǒng)了所以主機(jī)就直接裸奔了額,從機(jī)跑了FreeRTOS,整個(gè)系統(tǒng)就是模擬的工業(yè)現(xiàn)場的數(shù)據(jù)采集功能,從機(jī)采集數(shù)據(jù)通過PDO傳輸?shù)街鳈C(jī),主機(jī)用SDO向從機(jī)發(fā)送控制命令,主機(jī)可以監(jiān)視所有從機(jī)的心跳。 從機(jī)代碼是通用的,如果需要多個(gè)從機(jī),直接復(fù)制即可,不過要更改對應(yīng)的從機(jī)ID號。具體更改方法是下載從機(jī)代碼之后打開工程文件,找到node_coonfig.h文件,更改ID號,也可在這個(gè)文件下更改從機(jī)的心跳頻率。

#ifndef _NODE_CONFIG_H

#define _NODE_CONFIG_H

#define SLAVE_NODE_ID           4   //ID為4,可以任意更改,保留0號ID,0號為主機(jī)

#define Producer_Heartbeat_Time 500 //從機(jī)心跳頻率,任意更改,單位ms

#endif

文件列表:

目錄│文件列表:

 │ CANopen-STM32F1.rar

 └ CANopen-STM32F1

    └ CANopen-STM32F1

       ├ CANOpenSlave_Ultra

       │  │ Slave_ultra.od

       │  ├ App

       │  │  │ app.c

       │  │  │ app.h

       │  │  │ FreeRTOSConfig.h

       │  │  │ main.c

       │  │  │ stm32f10x_conf.h

       │  │  │ stm32f10x_it.c

       │  │  │ stm32f10x_it.h

       │  │  └ canopen

       │  │     │ canopen_app.c

       │  │     │ canopen_app.h

       │  │     │ canopen_drv.c

       │  │     │ canopen_drv.h

       │  │     │ config.h

       │  │     │ Node_Config.h

       │  │     │ Slave.c

       │  │     └ Slave.h

       │  ├ Bsp

       │  │  │ bsp.c

       │  │  │ bsp.h

       │  │  │ bsp_can.c

       │  │  │ bsp_can.h

       │  │  │ bsp_timer.c

       │  │  │ bsp_timer.h

       │  │  │ bsp_usart.c

       │  │  └ bsp_usart.h

       │  ├ CANOpen

       │  │  │ canopen_readme.txt

       │  │  ├ inc

       │  │  │  │ can.h

       │  │  │  │ can_driver.h

       │  │  │  │ data.h

       │  │  │  │ dcf.h

       │  │  │  │ def.h

       │  │  │  │ emcy.h

       │  │  │  │ lifegrd.h

       │  │  │  │ lss.h

       │  │  │  │ nmtMaster.h

       │  │  │  │ nmtSlave.h

       │  │  │  │ objacces.h

       │  │  │  │ objdictdef.h

       │  │  │  │ pdo.h

       │  │  │  │ sdo.h

       │  │  │  │ states.h

       │  │  │  │ sync.h

       │  │  │  │ sysdep.h

       │  │  │  │ timer.h

       │  │  │  │ timers_driver.h

       │  │  │  └ stm32

       │  │  │     │ applicfg.h

       │  │  │     │ canfestival.h

       │  │  │     └ timerscfg.h

       │  │  └ 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

       │  ├ Doc

       │  │  └ ReadMe.txt

       │  ├ FreeRTOS

       │  │  │ croutine.c

       │  │  │ event_groups.c

       │  │  │ list.c

       │  │  │ queue.c

       │  │  │ readme.txt

       │  │  │ stream_buffer.c

       │  │  │ tasks.c

       │  │  │ timers.c

       │  │  ├ include

       │  │  │  │ croutine.h

       │  │  │  │ deprecated_definitions.h

       │  │  │  │ event_groups.h

       │  │  │  │ FreeRTOS.h

       │  │  │  │ list.h

       │  │  │  │ message_buffer.h

       │  │  │  │ mpu_prototypes.h

       │  │  │  │ mpu_wrappers.h

       │  │  │  │ portable.h

       │  │  │  │ projdefs.h

       │  │  │  │ queue.h

       │  │  │  │ semphr.h

       │  │  │  │ StackMacros.h

       │  │  │  │ stack_macros.h

       │  │  │  │ stdint.readme

       │  │  │  │ stream_buffer.h

       │  │  │  │ task.h

       │  │  │  └ timers.h

       │  │  └ portable

       │  │     ├ IAR

       │  │     │  ├ ARM_CM0

       │  │     │  │  │ port.c

       │  │     │  │  │ portasm.s

       │  │     │  │  └ portmacro.h

       │  │     │  ├ ARM_CM3

       │  │     │  │  │ port.c

       │  │     │  │  │ portasm.s

       │  │     │  │  └ portmacro.h

       │  │     │  ├ ARM_CM4F

       │  │     │  │  │ port.c

       │  │     │  │  │ portasm.s

       │  │     │  │  └ portmacro.h

       │  │     │  ├ ARM_CM4F_MPU

       │  │     │  │  │ port.c

       │  │     │  │  │ portasm.s

       │  │     │  │  └ portmacro.h

       │  │     │  └ ARM_CM7

       │  │     │     │ ReadMe.txt

       │  │     │     └ r0p1

       │  │     │        │ port.c

       │  │     │        │ portasm.s

       │  │     │        └ portmacro.h

       │  │     ├ MemMang

       │  │     │  │ heap_1.c

       │  │     │  │ heap_2.c

       │  │     │  │ heap_3.c

       │  │     │  │ heap_4.c

       │  │     │  │ heap_5.c

       │  │     │  └ ReadMe.url

       │  │     └ RVDS

       │  │        ├ ARM7_LPC21xx

       │  │        │  │ port.c

       │  │        │  │ portASM.s

       │  │        │  │ portmacro.h

       │  │        │  └ portmacro.inc

       │  │        ├ ARM_CA9

       │  │        │  │ port.c

       │  │        │  │ portASM.s

       │  │        │  │ portmacro.h

       │  │        │  └ portmacro.inc

       │  │        ├ ARM_CM0

       │  │        │  │ port.c

       │  │        │  └ portmacro.h

       │  │        ├ ARM_CM3

       │  │        │  │ port.c

       │  │        │  └ portmacro.h

       │  │        ├ ARM_CM4F

       │  │        │  │ port.c

       │  │        │  └ portmacro.h

       │  │        ├ ARM_CM4_MPU

       │  │        │  │ port.c

       │  │        │  └ portmacro.h

       │  │        └ ARM_CM7

       │  │           │ ReadMe.txt

       │  │           └ r0p1

       │  │              │ port.c

       │  │              └ portmacro.h

       │  ├ Libraries

       │  │  ├ CMSIS

       │  │  │  ├ CoreSupport

       │  │  │  │  │ core_cm3.c

       │  │  │  │  └ core_cm3.h

       │  │  │  └ DeviceSupport

       │  │  │     │ stm32f10x.h

       │  │  │     │ system_stm32f10x.c

       │  │  │     │ system_stm32f10x.h

       │  │  │     └ startup

       │  │  │        │ startup_stm32f10x_cl.s

       │  │  │        │ startup_stm32f10x_hd.s

       │  │  │        │ startup_stm32f10x_hd_vl.s

       │  │  │        │ startup_stm32f10x_ld.s

       │  │  │        │ startup_stm32f10x_ld_vl.s

       │  │  │        │ startup_stm32f10x_md.s

       │  │  │        │ startup_stm32f10x_md_vl.s

       │  │  │        └ startup_stm32f10x_xl.s

       │  │  └ STM32F10x_StdPeriph_Driver

       │  │     ├ inc

       │  │     │  │ misc.h

       │  │     │  │ stm32f10x_adc.h

       │  │     │  │ stm32f10x_bkp.h

       │  │     │  │ stm32f10x_can.h

       │  │     │  │ stm32f10x_cec.h

       │  │     │  │ stm32f10x_crc.h

       │  │     │  │ stm32f10x_dac.h

       │  │     │  │ stm32f10x_dbgmcu.h

       │  │     │  │ stm32f10x_dma.h

       │  │     │  │ stm32f10x_exti.h

       │  │     │  │ stm32f10x_flash.h

       │  │     │  │ stm32f10x_fsmc.h

       │  │     │  │ stm32f10x_gpio.h

       │  │     │  │ stm32f10x_i2c.h

       │  │     │  │ stm32f10x_iwdg.h

       │  │     │  │ stm32f10x_pwr.h

       │  │     │  │ stm32f10x_rcc.h

       │  │     │  │ stm32f10x_rtc.h

       │  │     │  │ stm32f10x_sdio.h

       │  │     │  │ stm32f10x_spi.h

       │  │     │  │ stm32f10x_tim.h

       │  │     │  │ stm32f10x_usart.h

       │  │     │  └ stm32f10x_wwdg.h

       │  │     └ src

       │  │        │ misc.c

       │  │        │ stm32f10x_adc.c

       │  │        │ stm32f10x_bkp.c

       │  │        │ stm32f10x_can.c

       │  │        │ stm32f10x_cec.c

       │  │        │ stm32f10x_crc.c

       │  │        │ stm32f10x_dac.c

       │  │        │ stm32f10x_dbgmcu.c

       │  │        │ stm32f10x_dma.c

       │  │        │ stm32f10x_exti.c

       │  │        │ stm32f10x_flash.c

       │  │        │ stm32f10x_fsmc.c

       │  │        │ stm32f10x_gpio.c

       │  │        │ stm32f10x_i2c.c

       │  │        │ stm32f10x_iwdg.c

       │  │        │ stm32f10x_pwr.c

       │  │        │ stm32f10x_rcc.c

       │  │        │ stm32f10x_rtc.c

       │  │        │ stm32f10x_sdio.c

       │  │        │ stm32f10x_spi.c

       │  │        │ stm32f10x_tim.c

       │  │        │ stm32f10x_usart.c

       │  │        └ stm32f10x_wwdg.c

       │  └ Project

       │     │ CANopen_Slave.uvguix.ZhiyangZhou

       │     │ CANopen_Slave.uvoptx

       │     │ CANopen_Slave.uvprojx

       │     │ EventRecorderStub.scvd

       │     │ JLinkLog.txt

       │     │ JLinkSettings.ini

       │     │ 雙擊刪除“編譯產(chǎn)生文件”.bat

       │     ├ DebugConfig

       │     │  │ CANOpenSlave_STM32F103C8_1.0.0.dbgconf

       │     │  │ CANOpenSlave_STM32F103ZE_1.0.0.dbgconf

       │     │  │ CANopen_Slave_STM32F103C8_1.0.0.dbgconf

       │     │  └ Target_1_STM32F103C8_1.0.0.dbgconf

       │     ├ Listings

       │     │  │ CANopen_Slave.map

       │     │  │ Demo.map

       │     │  └ startup_stm32f10x_hd.lst

       │     └ Objects

       │        │ app.crf

       │        │ app.d

       │        │ app.o

       │        │ bsp.crf

       │        │ bsp.d

       │        │ bsp.o

       │        │ bsp_can.crf

       │        │ bsp_can.d

       │        │ bsp_can.o

       │        │ bsp_timer.crf

       │        │ bsp_timer.d

       │        │ bsp_timer.o

       │        │ bsp_usart.crf

       │        │ bsp_usart.d

       │        │ bsp_usart.o

       │        │ canopen_app.crf

       │        │ canopen_app.d

       │        │ canopen_app.o

       │        │ canopen_drv.crf

       │        │ canopen_drv.d

       │        │ canopen_drv.o

       │        │ CANopen_Slave.axf

       │        │ CANopen_Slave.build_log.htm

       │        │ CANopen_Slave.htm

       │        │ CANopen_Slave.lnp

       │        │ CANopen_Slave.sct

       │        │ CANopen_Slave_CANopen_Slave.dep

       │        │ croutine.crf

       │        │ croutine.d

       │        │ croutine.o

       │        │ dcf.crf

       │        │ dcf.d

       │        │ dcf.o

       │        │ Demo.axf

       │        │ Demo.build_log.htm

       │        │ Demo.hex

       │        │ Demo.htm

       │        │ Demo.lnp

       │        │ Demo.sct

       │        │ Demo_CANOpenSlave.dep

       │        │ emcy.crf

       │        │ emcy.

TAGCANopen
  • 30 次
  • 1 分