极品馒头泬19p,国产精品亚洲一区二区三区,狠狠色噜噜狠狠狠7777奇米,国产精品视频一区二区三区无码,国产欧美日韩久久久久

【E1070】CANopen協(xié)議棧的移植以及使用

2021-09-11 20:27:24      索煒達(dá)電子      751     

項(xiàng)目編號:E1070

文件大?。?M

源碼說明:帶中文注釋

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

簡要概述:

主要是記錄我對CANOPEN協(xié)議的理解以及使用。圖片還沒研究好怎么上傳,等后面研究好了補(bǔ)上。

第一步;新建一個(gè)工程,配置好各種時(shí)鐘之類的。當(dāng)然你用的是原子的板子, 你也可以拿一個(gè)LED實(shí)驗(yàn)或者蜂鳴器實(shí)驗(yàn)的工程  直接來改,你把其他的注釋掉就好了。

第二步;到網(wǎng)上下載CanFestival源碼CanFestival-3-10,解壓出來,并將文件夾名字改為CanFestival-3-10。移植需要用到的源文件在CanFestival-3-10\src目錄下,頭文件在CanFestival-3-10\include目錄下。

第三部;開始移植。


移植步驟:

步驟一;在新建好的工程目錄下新建文件夾CanFestival,再在CanFestival下新建文件夾driver、inc和src,再在inc文件夾下面新建stm32文件夾。
步驟二;將CanFestival-3-10\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共12個(gè)文件拷貝到                 CanFestival\src目錄下;將CanFestival-3-10\include目錄下的所有.h文件共19個(gè)文件全部拷貝到CanFestival\inc目錄下,再把CanFestival-3-10\examples\AVR\Slave目錄下              的ObjDict.h文件拷貝過來,一共20個(gè);將CanFestival-3-10\include\AVR目錄下的applicfg.h、canfestival.h、config.h、timerscfg.h共4個(gè)頭文件拷貝到c                                         anfestival\inc\stm32 目錄下;將CanFestival-3-10\examples\TestMasterSlave目錄下的TestSlave.c、TestSlave.h、TestMaster.h、TestMaster.c拷貝到canfestival\driver目               錄下,并在該目錄下新建 stm32_canfestival.c文件。
步驟三;將CanFestival\src目錄下的所有.c文件添加到工程;將canfestival\driver目錄下的stm32_canfestival.c文件添加到工程;如果實(shí)現(xiàn)的是從設(shè)備,再將                                             canfestival\driver目錄下的TestSlave.c文件添加到工程,如果實(shí)現(xiàn)的是主設(shè)備,則將TestMaster.c文件添加到工程。
步驟四;將文件目錄canfestival\inc、canfestival\inc\stm32、canfestival\driver等路徑添加到工程包含路徑。
步驟五;在stm32_canfestival.c中包含頭文件#include "canfestival.h",并定義如下函數(shù):
            void setTimer(TIMEVAL value)
           {
                                                }
           TIMEVAL getElapsedTime(void)
           {
                   return 1;
                                                }

             unsigned char canSend(CAN_PORT notused, Message *m)
            {
                  return 1;
                                               }
           為什么這里要定義幾個(gè)空函數(shù)呢?因?yàn)榭蘸瘮?shù)編譯的時(shí)候不會(huì)報(bào)錯(cuò)啊,我們現(xiàn)在把后面的都弄好了,最后來處理這邊會(huì)更方便。我這只是針對新手,老鳥無視就好了。
           這幾個(gè)函數(shù)都是定義來供canfestival源碼調(diào)用的,如果找不到這幾個(gè)函數(shù)編譯就會(huì)報(bào)錯(cuò)。
步驟六;通過以上幾步,所有的文件都弄齊了,但是編譯一定會(huì)出現(xiàn)報(bào)錯(cuò),注釋或刪除掉config.h文件中的如下幾行就能編譯通過:
            #include <inttypes.h>
            #include <avr\io.h>
            #include <avr\interrupt.h>
            #include <avr/pgmspace.h>
            #include <avr\sleep.h>
            #include <avr\wdt.h>
            如果還有其他錯(cuò)誤,可能就是不同版本的源碼導(dǎo)致的,也有可能是不同的DEMO引起的,不能解決這些問題的話,那就是GAMEOVER,如果能解決,那么我們繼續(xù)。

TAGCANOPEN
  • 3 次
  • 5 分