rt_thread hc32f460開發(fā)二:adc驅(qū)動(dòng)移植

RT-Thread 驅(qū)動(dòng)開發(fā)簡(jiǎn)介

RT-Thread驅(qū)動(dòng)開發(fā)最開始應(yīng)該是要閱讀官方的文檔,理解驅(qū)動(dòng)的運(yùn)行原理和使用方法。ADC部分的文檔在這里https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/adc/adc

RT-Thread中驅(qū)動(dòng)程序的思想有些類似于Kernel或UBoot中驅(qū)動(dòng)的思路,通常的流程是驅(qū)動(dòng)主動(dòng)注冊(cè)設(shè)備,應(yīng)用程序查找并打開設(shè)備調(diào)用系統(tǒng)接口完成功能調(diào)用。

開發(fā)要做的工作大致有如下四部分:

1、編寫通用的和板級(jí)電路無(wú)關(guān)的驅(qū)動(dòng)代碼drv_adc.c,這部分驅(qū)動(dòng)盡量覆蓋片內(nèi)外設(shè)的所有通道。

2、編寫板級(jí)相關(guān)的代碼,放在board_config.c中,板級(jí)初始化的代碼完成初始化具體引腳等功能,通常由RT_USING_XXX這樣的配置宏來(lái)控制編譯。

3、修改編譯控制文件和配置選項(xiàng),把驅(qū)動(dòng)加入系統(tǒng)中。

4、編寫使用該驅(qū)動(dòng)的代碼實(shí)現(xiàn)驅(qū)動(dòng)查找和調(diào)用。

drv_adc.c通用驅(qū)動(dòng)編寫方法

通用驅(qū)動(dòng)中一般有兩個(gè)關(guān)鍵的數(shù)據(jù)結(jié)構(gòu):rt_adc_ops把通過驅(qū)動(dòng)操作外設(shè)完成功能的代碼注冊(cè)到設(shè)備樹中。還有一個(gè)自定義數(shù)據(jù)結(jié)構(gòu)struct hc32_adc_device用于記錄MCU外設(shè)的配置和運(yùn)行時(shí)所需數(shù)據(jù)。

ADC驅(qū)動(dòng)代碼結(jié)構(gòu)不復(fù)雜,主要有兩個(gè)函數(shù)完成hc32_adc_enabled和hc32_adc_convert。其中hc32_adc_enabled主要配置外設(shè)時(shí)鐘、采樣精度、對(duì)齊方式、掃描模式、等外設(shè)特性,hc32_adc_convert完成參數(shù)指定通道的數(shù)據(jù)的實(shí)際采集工作。這部分功能參考官方的樣例不難實(shí)現(xiàn)。

板級(jí)初始化代碼

板級(jí)初始化代碼放在board_config.c中。

修編譯選項(xiàng)并進(jìn)行配置

* 修改ddl_config.h開啟DDL_ADC_ENABLE

* 修改Libaries\SConscript包含hc32f460_adc.c,如果需要dma的話把dma添加到公共部分

* 修改drivers\SConscript包含drv_adc.c

* 修改board\Kconfig增加ADC相關(guān)的配置

* 執(zhí)行menuconfig開啟adc

* 重新生成工程

編寫應(yīng)用代碼查找驅(qū)動(dòng)并進(jìn)行調(diào)用。


開發(fā)資料

HC32F460用戶手冊(cè)

https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/65/id/47/key/0

HC32F460數(shù)據(jù)手冊(cè)

https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/65/id/46/key/0

HC32F460驅(qū)動(dòng)庫(kù)

https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/66/id/57/key/9

HC32F460驅(qū)動(dòng)庫(kù)幫助

https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/66/id/57/key/8

HC32F460IDE支持包

https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/66/id/58/key/2

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容