新唐火神板開箱實作(三):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出來的訊息。這樣基本上就成功一半了,後續的測試待未來的文章介紹。
留言
張貼留言