寫在前面:聚沃科技SDK使用GD固件庫基礎上開發了MCU外設驅動的中間層以及板級外設的驅動,相關例程調用驅動函數實現,用戶在基于聚沃科技的SDK做產品開發時,可以很方便的適配新的硬件,直接調用相關驅動接口開發上層應用即可,類似STM32的hal庫,彌補了原廠這一塊的空缺,并且在驅動中做了很多容錯性處理,總結了應用中常見一些問題,可靠性比原廠demo例程更好,可在裸機、RTOS等不同開發框架下穩定運行,能很好的縮短軟件開發周期。 本文主要針對SDK如何重定義硬件接口和外設參數進行說明,方便讓大家快速靈活使用聚沃科技SDK。 |
軟件架構簡介
聚沃科技SDK框架如下圖所示,底層驅動為官方提供的外設庫,聚沃科技實現了抽象層驅動包括MCU_Driver和BSP_Driver,其中MCU_Driver為MCU底層外設驅動,調用底層驅動進行再次封裝,BSP_Driver為板級資源驅動,調用MCU_Driver進行再次封裝,便于應用層調用,應用層及應用層驅動為上層應用,包括主函數文件以及相關上層驅動。該例程架構經過多層封裝便于讀者開發中直接使用。
![wKgZomY4NyWAUuM2AAD1W8N2fds853.png](https://file1.elecfans.com/web2/M00/E0/30/wKgZomY4NyWAUuM2AAD1W8N2fds853.png)
主要功能介紹:
- driver_public.c
該文件主要會初始化延時模塊、系統tick中斷、配套例程的LCD和串口打印,不同系列之間也會根據芯片特點做一些必要性初始化,比如H7的SDK中還做了cache的使能、中斷向量表到SRAM的copy和偏移、基礎MPU的配置。
在mian函數開始調用driver_init即可,產品開發中不需要LCD和串口打印可配置LCD_DEBUG為0或直接刪除對應代碼:
![wKgaomY4NzWAc8K6AABQF1vrZ4c962.png](https://file1.elecfans.com/web2/M00/E1/11/wKgaomY4NzWAc8K6AABQF1vrZ4c962.png)
提供了機器周期延時、us延時、ma延時函數,采用了僅查詢方式實現,支持函數重入、ROTS下調用等。
![wKgZomY4N02AFe-1AAAKG40BaCU908.png](https://file1.elecfans.com/web2/M00/E0/31/wKgZomY4N02AFe-1AAAKG40BaCU908.png)
提供了定時任務函數指針可方便增加一些簡單的定時任務,配置時間值并指向函數即可自動調用執行:
![wKgaomY4N1uAU1KbAAAiDgjt7pA169.png](https://file1.elecfans.com/web2/M00/E1/11/wKgaomY4N1uAU1KbAAAiDgjt7pA169.png)
- driver_public.h
測試例程功能時,在該頭文件中可以選擇LCD打印信息,并選擇對應的屏幕類型,例程結果會顯示在LCD上,不使用LCD時LCD_DEBUG配置0即可;
![wKgaomY4N22AdPopAAAHYmnQhpM650.png](https://file1.elecfans.com/web2/M00/E1/11/wKgaomY4N22AdPopAAAHYmnQhpM650.png)
該文件中預留了分散加載的宏定義,可以方便的指定變量、函數位置,需要配合工程配置以及SCT文件使用:
![wKgZomY4N4SAfgg-AAASFPKfn5E582.png](https://file1.elecfans.com/web2/M00/E0/31/wKgZomY4N4SAfgg-AAASFPKfn5E582.png)
![wKgZomY4N4SAX_A8AAAJfapKRGw167.png](https://file1.elecfans.com/web2/M00/E0/31/wKgZomY4N4SAX_A8AAAJfapKRGw167.png)
![wKgaomY4N4SANa9WAAAM2HCYqzc004.png](https://file1.elecfans.com/web2/M00/E1/11/wKgaomY4N4SANa9WAAAM2HCYqzc004.png)
![wKgaomY4N4SAfM8vAAAJwNuLPDg031.png](https://file1.elecfans.com/web2/M00/E1/11/wKgaomY4N4SAfM8vAAAJwNuLPDg031.png)
- driver_xx.c\bsp_xx.c中定義接口和參數
在驅動文件上方提供了注冊接口或參數的示例,可參考修改即可:
- 普通GPIO:
![wKgaomY4N8uAV5KkAABBQ6a6CE8529.png](https://file1.elecfans.com/web2/M00/E1/12/wKgaomY4N8uAV5KkAABBQ6a6CE8529.png)
GPIO_DEF括號內內容分別是:注冊名稱、PORT、PIN、GPIO模式、默認電平、IO中斷回調函數;需要增加或者修改可以復制模版后修改名稱和參數。
調用驅動時將注冊名稱指針傳輸調用:
![wKgZomY4N_WAMthTAAAXh3UEfn8394.png](https://file1.elecfans.com/web2/M00/E0/32/wKgZomY4N_WAMthTAAAXh3UEfn8394.png)
![wKgaomY4OAeAeI-UAAAgqroUST8721.png](https://file1.elecfans.com/web2/M00/E1/12/wKgaomY4OAeAeI-UAAAgqroUST8721.png)
定義USART時參考模版分別定義TX、RX、DMA通道,USART波特率和模式,如沒有使用DMA任意填寫參數;
通信類外設有三個模式:MODE_POLL、MODE_DMA、MODE_INT可選,根據需要選擇配置,也可以應用中修改結構體參數并重初始化來靈活變更模式。
![wKgZomY4OBuAVRNBAABY3kNEapY579.png](https://file1.elecfans.com/web2/M00/E0/32/wKgZomY4OBuAVRNBAABY3kNEapY579.png)
-
mcu
+關注
關注
146文章
17317瀏覽量
352644 -
SDK
+關注
關注
3文章
1045瀏覽量
46273 -
驅動接口
+關注
關注
0文章
10瀏覽量
2632
發布評論請先 登錄
相關推薦
評論