新唐火神板開箱實作(三):BSP範例程式與周邊函式庫

一、前言

    在第一篇建立好的專案只是個簡單的Hello World功能。我們可以將新唐範例程式直接複製並取代原本的main.c。新的專案只會引入一些Hello World必要的函式庫,如sys.c、clk.c、uart.c等等,因此如果要新增其他周邊功能,就需要額外手動從BSP (board support package)複製周邊的函式庫(StdDriver)進專案Library的目錄下。

二、NuEclipse的專案目錄結構

    下圖看到的Binaries, Includes只是透過Eclipse build setting分類出來的項目,並不是真的存在檔案系統的目錄。下列四項才是真的存在檔案系統裡面的項目。

    1. CMSIS:不是真的ARM的Cortex Microcontroller Software Interface Standard。裡面是Startup file。
    2. Debug或Release:編譯出來的Binary和執行檔
    3. Library
        /CMSIS:這才真的是CMSIS
        /Device:最裡面放的是暫存器的header
        /StdDriver:StdDriver的header
        /:StdDriver的source file,要手動複製的周邊函式庫就是複製到這裡
    4. User:使用者的程式碼,如main.c,也可以放一些自己建立的Library,大一點的Library建議再分一個資料夾出來。


三、範例程式 (SampleCode)

    範例程式放在BSP中SampleCode這個目錄中,裡面會再按照不同方向分門別類。

    
    其中SampleCode/StdDriver是各硬體周邊的範例程式,前綴就是那一個周邊功能,使用範例程式有下面兩種方法。

    1. Import Existing Project
        直接照NuEclipse使用手冊第3.3章節的步驟,將專案目錄指向範例程式中GCC這一個資料夾,直接將範例程式匯入。
        - 優點: 快、速成,該有的library和header路徑都設定好了。
        - 缺點: 目錄太多層,自己不好管理,複製專案時幾乎要整份BSP一起存。
        - 使用時機: 快速測試

    2. New Project
        NuEclipse使用手冊3.2有說怎麼自己建立新專案。就是第一篇提的方法,本篇將介紹怎麼新增其他周邊功能。
        - 優點: 目錄結構簡單明瞭
        - 缺點: 偶遇不同版本的Library(專案內建的與手動複製進去的)有相容性問題。但全部換成同版本即可解決。
        - 使用時機: 要自己寫程式,或基於範例程式修改自己要的功能時

    我們在第一篇已經建立好專案了,接著就是把範例程式取代掉原本的main.c。這回我們要用M0A23接收CAN的資料,因此我們將M0A21BSP/SampleCode/StdDriver/CAN_NormalMode_Rx/main.c複製並取代專案目錄下原本的/User/main.c。

    到這邊如果我們按下編譯的鐵鎚會跳出一堆錯誤,因為main.c呼叫的周邊函式庫沒在專案裡面。


四、周邊函式庫 (StdDriver)

    接著我們再把M0A21BSP/Library/StdDriver/src/can.c複製到專案的Library目錄裡面,這回按下編譯就不會再跳錯誤了。


五、功能驗證

    一樣把VolCANo.bin複製進Nu-Link生成的磁碟機裡面進行燒錄,然後用Putty開serial可以看見print出來的訊息。這樣基本上就成功一半了,後續的測試待未來的文章介紹。



留言

這個網誌中的熱門文章

無法被取代的指針型三用電表(一):前言

關於新唐科技NuMicro ISP的介紹和使用方式

新唐火神板開箱實作(一):NuMaker-Volcano與NuEclipse IDE入門篇