日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

更正文檔 貢獻(xiàn)說明

概述

Timer,即通用硬件定時器。 該組件是Timer VFS驅(qū)動子系統(tǒng),給應(yīng)用或組件提供通過VFS形式(open/close/ioctl)訪問硬件Timer驅(qū)動對上層提供服務(wù)的接口。該組件初始化過程中,會根據(jù)hardware/chip/<chip_name>/package.yaml中定義的CONFIG_TIMER_NUM來依此創(chuàng)建如下名稱的設(shè)備節(jié)點(diǎn):

  • /dev/timer0

  • /dev/timer1

  • ...

  • /dev/timer[CONFIG_TIMER_NUM - 1]

組件支持以下功能:

  • 設(shè)置定時器運(yùn)行周期

  • 設(shè)置中斷回調(diào)函數(shù)

  • 啟動/停止定時器

版權(quán)信息

說明

Apache license v2.0

目錄結(jié)構(gòu)

.
├── example
│   └── timer_example.c  #Timer示例代碼
├── include
│   ├── aos
│   │   └── hal
│   │       └── timer.h   #Timer HAL API申明
│   └── vfsdev
│       └── timer_dev.h   #Timer設(shè)備API申明
├── package.yaml          #編譯和配置文件
├── README.md             #使用文檔
└── src
    └── timer_dev.c       #Timer設(shè)備實現(xiàn)代碼

依賴組件

  • base # 最底層核心驅(qū)動模型、驅(qū)動自動加載機(jī)制以及Device VFS core

  • vfs # VFS API抽象庫

常用配置

本組件可以通過CONFIG_TIMER_NUM配置對上層提供設(shè)備節(jié)點(diǎn)的數(shù)量,CONFIG_TIMER_NUM代表芯片內(nèi)部的硬件定時器控制器的數(shù)量。 CONFIG_TIMER_NUM默認(rèn)是在hardware/chip/<chip_name>/package.yaml中的define節(jié)點(diǎn)進(jìn)行配置。 如果沒有定義CONFIG_TIMER_NUM,則代碼中會定義默認(rèn)對外輸出的設(shè)備節(jié)點(diǎn)數(shù)量。

說明

設(shè)備節(jié)點(diǎn)數(shù)量:默認(rèn)4個, 如需修改,在hardware/chip/<chip_name>/package.yaml中修改CONFIG_TIMER_NUM配置

define:
  CONFIG_TIMER_NUM: 1

API說明

打開設(shè)備節(jié)點(diǎn)

int open(const char *pathname, int flags);

args

description

pathname

硬件定時器外設(shè)VFS路徑

flags

目前固定為0值

兼容POSIX標(biāo)準(zhǔn)的open接口。其中參數(shù)pathname/dev/timer加硬件定時器外設(shè)ID,例如/dev/timer0

關(guān)閉設(shè)備節(jié)點(diǎn)

int close(int fd);

兼容POSIX標(biāo)準(zhǔn)的close接口。

設(shè)置定時器參數(shù)

在需要設(shè)定硬件定時器的定時及超時處理函數(shù)的時候呼叫此API

int ioctl(int fd, IOC_TIMER_IRQP_SET, unsigned long arg);
// arg為指向timer_alarm_t結(jié)構(gòu)體的指針
// 如需設(shè)定周期為500ms的周期性定時器,并在硬件定時器到期后呼叫timer_handler(argument_pointer),代碼如下:
timer_alarm_t ralarm;
alarm.arg = argument_pointer; // 呼叫定時器到期處理函數(shù)的時候傳入的參數(shù)
alarm.cb = timer_handler;     // 定時器到期處理函數(shù)指針
alarm.period = 500000;        // 單位:ms
alarm.auto_reload = true;     // 開啟自動重新加載硬件定時器功能
ioctl (fd, IOC_TIMER_IRQP_SET, &ralarm);

獲取定時器當(dāng)前設(shè)定參數(shù)

在需要獲取硬件定時器的當(dāng)前的定時參數(shù)的時候呼叫此API

int ioctl(int fd, IOC_TIMER_IRQP_GET, unsigned long arg);

// 示例代碼
timer_alarm_t ralarm;
ioctl (fd, IOC_TIMER_IRQP_GET, &alarm);

開啟/停止定時器

int ioctl(int fd, IOC_TIMER_CONTROL, unsigned long arg);

// arg為IO_TIMER_START代表開啟定時器, 示例代碼:
ioctl (fd, IOC_TIMER_CONTROL, IO_TIMER_START)
// arg為IO_TIMER_STOP代表停止定時器
ioctl (fd, IOC_TIMER_CONTROL, IO_TIMER_STOP)

控制定時器是否自動重新加載

int ioctl(int fd, IOC_TIMER_RELOAD, unsigned long arg);

// arg為true代表開啟自動重載定時器功能, 示例代碼:
ioctl (fd, IOC_TIMER_RELOAD, true)
// arg為false代表停止自動重載定時器功能, 示例代碼:
ioctl (fd, IOC_TIMER_RELOAD, false)

使用示例

組件使用示例相關(guān)的代碼下載、編譯和固件燒錄均依賴AliOS Things配套的開發(fā)工具,所以首先需要參考《AliOS Things集成開發(fā)環(huán)境使用說明之搭建開發(fā)環(huán)境》,下載安裝。 待開發(fā)環(huán)境搭建完成后,可以按照以下步驟進(jìn)行示例的測試。

步驟1 創(chuàng)建或打開工程

打開已有工程

如果用于測試的案例工程已存在,可參考《AliOS Things集成開發(fā)環(huán)境使用說明之打開工程》打開已有工程。

創(chuàng)建新的工程

組件的示例代碼可以通過編譯鏈接到AliOS Things的任意案例(solution)來運(yùn)行,這里選擇helloworld_demo案例。helloworld_demo案例相關(guān)的源代碼下載可參考《AliOS Things集成開發(fā)環(huán)境使用說明之創(chuàng)建工程》

步驟2 添加組件

案例下載完成后,需要在helloworld_demo組件的package.yaml中添加對組件的依賴:

depends:
  - timer: master # helloworld_demo中引入timer組件

步驟3 下載組件

在已安裝了的開發(fā)環(huán)境工具欄中,選擇Terminal -> New Terminal啟動終端,并且默認(rèn)工作路徑為當(dāng)前工程的workspace,此時在終端命令行中輸入:

aos install timer

上述命令執(zhí)行成功后,組件源碼則被下載到了./components/drivers/peripheral/timer路徑中。

步驟4 添加示例

在timer組件的package.yaml中添加example示例代碼

source_file:
  原有其他文件
  - example/timer_example.c # add timer_example.c

步驟5 編譯固件

在示例代碼已經(jīng)添加至組件的配置文件,并且helloworld_demo已添加了對該組件的依賴后,就可以編譯helloworld_demo案例來生成固件了,具體編譯方法可參考《AliOS Things集成開發(fā)環(huán)境使用說明之編譯固件》

步驟6 燒錄固件

helloworld_demo案例的固件生成后,可參考《AliOS Things集成開發(fā)環(huán)境使用說明之燒錄固件》來燒錄固件。

步驟7 打開串口

固件燒錄完成后,可以通過串口查看示例的運(yùn)行結(jié)果,打開串口的具體方法可參考《AliOS Things集成開發(fā)環(huán)境使用說明之查看日志》

當(dāng)串口終端打開成功后,可在串口中輸入help來查看已添加的測試命令。

步驟8 測試示例

CLI命令行輸入:

timer_example id

其中ID取值范圍:[0, CONFIG_TIMER_NUM)

說明

關(guān)鍵日志

vfs timer test success, ret:0

注意事項

FAQ