SimonLiuのESP 8266とAliOS Things学習チュートリアルシリーズの8:タイマ実装
2418 ワード
交流群へようこそ:ESP 8266 AliOS Things群番号:107723112すべてのチュートリアルAliOS Things入門チュートリアルシリーズを参照してください.このチュートリアルはSimonLiuのCSDNブログで同期的に更新されています.
AliOSのタイマーについては、ネット上ではまだ専門的な文章が述べられていませんが、yloopの非同期フレームワークに関する文章にはいくつかの関連があります.SimonLiuはAliOS ThingsのAliOS Things API KERNEL Guideに関する内容を読んで、AliOS Thingsでタイマを実現する方法は2つあると結論した.1つ目はyloopフレームワークで実現し、2つ目はaosのタイマapiで実現する.
ここでSimonLiuは、2つのタイマを使用して情報を印刷しながら、インスタンス
1.yloop非同期フレームワークによるタイマーの実現
実際、helloworldルーチンとSimonLiuのGPIO_LEDルーチンとUARTルーチンでは、yloop非同期フレームワークを使用して、タイミング実行のいくつかの関数を実現しています.このインスタンス・コードは次のとおりです.
メインプログラム入口呼び出し 呼び出し に入る.
1秒後、タイマーがトリガーされ、印刷情報 は、
2.AliOS Things kernel apiによるタイマーの実現
AliOS Thingsのタイマ変数 を宣言する宣言タイマコールバック関数 タイマコールバック関数は を実現する.タイマ を作成する.起動タイマ
次に、メイン・プログラム・エントリでタイマーを作成して起動します.
AliOSのタイマーについては、ネット上ではまだ専門的な文章が述べられていませんが、yloopの非同期フレームワークに関する文章にはいくつかの関連があります.SimonLiuはAliOS ThingsのAliOS Things API KERNEL Guideに関する内容を読んで、AliOS Thingsでタイマを実現する方法は2つあると結論した.1つ目はyloopフレームワークで実現し、2つ目はaosのタイマapiで実現する.
ここでSimonLiuは、2つのタイマを使用して情報を印刷しながら、インスタンス
timertest
(ソースコードの表示とダウンロードをクリック)を書き直した.1.yloop非同期フレームワークによるタイマーの実現
実際、helloworldルーチンとSimonLiuのGPIO_LEDルーチンとUARTルーチンでは、yloop非同期フレームワークを使用して、タイミング実行のいくつかの関数を実現しています.このインスタンス・コードは次のとおりです.
int application_start(int argc, char *argv[])
{
/* */
aos_post_delayed_action(1000, printMessage, NULL);
aos_loop_run();
return 0;
}
}
メインプログラム入口
application_start
でこのことをしました.aos_post_delayed_action
は、1000ミリ秒の使い捨てタイマー(Yloopには使い捨てタイマーしか入っていない)を作成し、1000ミリ秒後にprintMessage()
を実行します.aos_loop_run
は、イベントループ1秒後、タイマーがトリガーされ、
printMessage()
が呼び出され、printMessage()
の中で2つのことが行われました.static void printMessage(void *arg)
{
printf("[%06d]messager from yloop\r
" ,(unsigned)aos_now_ms());
aos_post_delayed_action(1000, printMessage, NULL);
}
printMessage()
を実行するまで1000ミリ秒のタイマを再作成します.これにより、printMessage()
を実行するたびにタイマが作成され、1000ミリ秒後に実行され、タイマが実現されます.2.AliOS Things kernel apiによるタイマーの実現
AliOS Thingsの
kernel api :
AliOS Things API KERNEL Guideには、タイマに関する関数がリストされています.aos_timer_new
aos_timer_free
aos_timer_start
aos_timer_stop
aos_timer_change
ESP8266 non_os SDK
をよく知っている人は、その中のタイマーに慣れていないはずです.AliOS Thingsのタイマーapi
の使用方法とESP8266 non_os SDK
のタイマーの差は多くありません.手順は以下の通りです.//
aos_timer_t timer1;
//
void timer1_cb(void);
//
void timer1_cb(void)
{
printf("[%06d]messager from timer\r
" ,(unsigned)aos_now_ms());
}
次に、メイン・プログラム・エントリでタイマーを作成して起動します.
//
aos_timer_new(&timer1, timer1_cb, NULL, 1000, 1);
//
aos_timer_start(&timer1);