rt-thread 是通過 I/O 設備模型來管理 soc 上的外設,從上到下分為三層:I/O 設備管理層、設備驅動框架層和設備驅動層。stm32 的 HAL 庫就屬于設備驅動層,比如熟知的 i2c、spi 的外設驅動在用 cubemx 生成代碼的時候就已經準備好。中科藍訊的 ab32vg1 的設備驅動已經在sdk 中由藍訊的工程師實現。而在設備驅動層之上的設備驅動框架層和設備 I/O 管理層要說明一下:設備驅動框架層提供了一些接口留給設備驅動開發者去實現,只在做驅動移植的時候需要,作為普通用戶,只需要關心 I/O 管理層即可,rt-thread 的 I/O 管理層提供了類似于 linux中文件 IO 的 ap,常用的有 rt_device_find、rt_device_open、rt_device_read、rt_device_close等。下面列舉了 hwtimer 的 api,結合示例去理解如何將這些 api 用起來實現定時器的功能。
//查找設備
/*
name:設備名稱
*/
rt_device_t rt_device_find(const char* name)
//打開定時器設備
/*
dev:定時器設備句柄
oflags:打開模式,一般取 RT_DEVICE_OFLAG_RDWR
*/
rt_err_t rt_device_open(rt_device_t dev, rt_uint16_t oflags);
//設置超時回調
/*
dev:定時器設備句柄
rx_ind:超時回調函數
*/
rt_err_t rt_device_set_rx_indicate(rt_device_t dev, rt_err_t (*rx_ind)(rt_device_t dev,rt_size_t size))
//控制定時器
/*
dev:定時器設備句柄
cmd:控制命令,可取
HWTIMER_CTRL_FREQ_SET 設置計數頻率
HWTIMER_CTRL_STOP 停止定時器
HWTIMER_CTRL_INFO_GET 獲取定時器特征信息
HWTIMER_CTRL_MODE_SET 設置定時器模式
arg:控制命令參數
設置定時器模式時,可取
HWTIMER_MODE_ONESHOT 單 次 定 時
HWTIMER_MODE_PERIOD 周 期 性 定 時
*/
rt_err_t rt_device_control(rt_device_t dev, rt_uint8_t cmd, void* arg);
//設置定時器超時值
/*
dev:定時器設備句柄
pos:偏移值,未使用,可取 0 值
buffer:指向超時時間結構體
size:超時時間結構體大小
*/
rt_size_t rt_device_write(rt_device_t dev,
rt_off_t pos,
const void* buffer,
rt_size_t size);
//獲取定時器當前值
/*
dev:定時器句柄
pos:偏移值,未使用,可取 0 值
buffer:超時時間結構體
size:超時時間結構體大小
*/
rt_size_t rt_device_read(rt_device_t dev,
rt_off_t pos,
void* buffer,
rt_size_t size
);
//關閉定時器
/*
dev:定時器句柄
*/
rt_err_t rt_device_close(rt_device_t dev);
![poYBAGMEcJ-Abg84AAE6fM31FEg525.png](https://file.elecfans.com/web2/M00/63/B9/poYBAGMEcJ-Abg84AAE6fM31FEg525.png)
使用 rt-thread studio 進行 sdk 的開發是一件非常有效率的事情,新建 bsp 工程后只需要在rt-thread setting 配置需要的硬件功能就可以使用 rt-thread 提供的設備 I/O 管理接口對底層的 soc 的外設進行控制。從示例中可以定時器的流程:先用 rt_device_find 根據設備名稱查找到定時器句柄、使用定時器句柄打開定時器、接著設置定時器的回調函數、配置完定時器后設置定時器的定時值后定時器啟動,之后每當定時器的計數器溢出就會執行一次定時器的回調函數。
審核編輯:湯梓紅
-
操作系統
+關注
關注
37文章
6896瀏覽量
123749 -
定時器
+關注
關注
23文章
3255瀏覽量
115380 -
Timer
+關注
關注
1文章
64瀏覽量
12819 -
RT-Thread
+關注
關注
31文章
1305瀏覽量
40387
發布評論請先 登錄
相關推薦
STm32與RT-thread操作系統的配合使用
RT-Thread Studio操作系統
基于RT-Thread操作系統衍生rt-smart實時操作系統簡介
RT-Thread編程指南
RT-Thread用戶手冊
RT Thread操作系統教程及資料
RT-Thread Smart微內核操作系統發布!
國民技術攜手RT-Thread共同推進MCU與RT-Thread操作系統廣泛適配
RT-Thread實時操作系統安裝向導
RT-Thread學習筆記 RT-Thread的架構概述
![<b class='flag-5'>RT-Thread</b>學習筆記 <b class='flag-5'>RT-Thread</b>的架構概述](https://file.elecfans.com/web2/M00/52/31/pYYBAGLKk5WAA__jAADjdAdXhIs410.jpg)
RT-Thread操作系統已經成功部署至芯馳E3
RT-Thread操作系統的FreeRTOS兼容層
RT-Thread榮獲“最具影響力IoT操作系統獎”
![<b class='flag-5'>RT-Thread</b>榮獲“最具影響力IoT<b class='flag-5'>操作系統</b>獎”](https://file1.elecfans.com/web2/M00/C4/8A/wKgZomX0EhWACv8DAAAUet8ikhs451.png)
新書發布——《實時操作系統應用技術:RT-Thread與ARM編程實踐》
![新書發布——《實時<b class='flag-5'>操作系統</b>應用技術:<b class='flag-5'>RT-Thread</b>與ARM編程實踐》](https://file1.elecfans.com/web2/M00/C4/8A/wKgZomX0EhWACv8DAAAUet8ikhs451.png)
RT-Thread操作系統應用開發寒假師資培訓
![<b class='flag-5'>RT-Thread</b><b class='flag-5'>操作系統</b>應用開發寒假師資培訓](https://file1.elecfans.com/web2/M00/C4/8A/wKgZomX0EhWACv8DAAAUet8ikhs451.png)
評論