ESP8266_04ピン制御とソフトウェアタイマー
From:https://mp.weixin.qq.com/s/APawDx4io4gKJyOeuErTLA
2、ソフトウェアタイマの使用1、制御ピン:このセクションでは、2つの部分を有しています。
前記第一のタイマ、内部ESP8266タイマーは、ソフトウェアとハードウェアタイマータイマーを含んでいます。実際には、マニュアルがちょうど同じタイママイクロコントローラ内のハードウェアタイマー、およびソフトウェアによって、純粋にソフトウェアタイマを指摘し、我々は、サイクル遅延機能は、マイクロコントローラの内部のようなものですforループに類似であることを理解することができます。
タイマーは、ピン制御を理解する最初の私のブロック図で、ここで、簡単です:
原理は簡単ですが、ボードはLEDの三色があり、実現のタイミングスイッチのように、ここでの手順は、LED。ステップ - 私はGPIO、2の使用についてお話しましょう。:あなたは「user_interface.h」ファイルを含める使用する前に
図1に示すように、共通のピンGPIOモードに提供されます。
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U、FUNC_GPIO12)。
PIN_FUNC_SELECT機能は端子機能を選択する機能であり、最初のパラメータは、ピンの名前であり、2番目のパラメータは、ピン番号のように見えるが、実際には機能に対応するピンです。
、FUNC_GPIO12コンパイラ、F3キーを押しを選択し、このファイルには、eagle_soc.hファイルを開きます。あなたはそれがFUNC_GPIO12、FUNC_GPIO13、またはどのくらいあるかどうか、わかります、対応するマクロ定義が3以下のとおりです。
#define FUNC_GPIO12 3
2、方向及びレベル設定端子
gpio_output_set(BIT12、BIT13、BIT12 | BIT13、0):
この関数は0に塗りつぶしを使用していなかった、4つのパラメータの合計をGPIO機能のプロパティを設定することです。
高い位置に出力設定された第1のパラメータ。
低出力ビットを設定する2番目のパラメータ。
3番目のパラメータは、出力端子となるように設定することができます。
第四のパラメータは、入力端子を有効にすることを条件とします。
そう上記のコード行の意味:GPIO13 GPIO12と出力設定、高出力12は、出力13は、ローです。同様に、手段次のコードの行:GPIO12入力を設定します。
gpio_output_set(0、0、0、BIT12):
注意:152のマニュアル2C-esp8266_sdk_api_guide_cn_v1.5.4を参照。
その後、使用する前に、次の2つのヘッダファイルを含むソフトウェアタイマーを、使用します。
#include「ets_sys.h」の定義タイマー構造//
#include "osapi.h"
使用方法は、4つのステップに分けて、非常に簡単です:
1、ソフトウェアタイマ定義された構造
os_timer_t LED_timer; //動作期間を実装するためのソフトウェアタイマの構造を定義します
2、タイマーのタイミング機能をオフにします
os_timer_disarm(&LED_timer); //設定するには、オフ
3.タイマーコールバック関数を設定します。タイマーを使用して、コールバック関数を設定する必要があります
os_timer_setfn(&LED_timer、(os_timer_func_tの*)LED_TURN、NULL);
機能は、次の3つのパラメータがあります。
まず、これを使用して、タイマーを設定したいですか?LED_timer
第二に、タイマ時間後に実行するように機能しており、アップしている。LED_TURN
第三、コールバック関数のパラメータは、そうでない場合はNULLを書くことができます。
以上、それはまた、非常に簡単です。ように!タイミングはどのくらいの時間の長さですか?心配しないでください。
4、タイマーを有効にし、ループが実行されるかどうか、時間の長さを設定します
os_timer_arm(&LED_timer、3000、1)。
機能は、次の3つのパラメータがあります。
あなたはタイマーを作ることができ、最初の?LED_timer
二、長い長い時間?3000ミリ秒。マイクロ秒の別の機能は、自分で勉強することができます。
第三に、この機能は、一度実行またはループの実行を時限わずか3秒で?1サイクル; 0、一度。
第三のステップは、関数LED_TURNで述べた機能は、この機能は、LEDオンまたはオフされます。
空LED_TURN()
{
静的state_flag = 0。
もし(state_flag == 0)
{
// GPIO12は、GPIO13を引き下げ
gpio_output_set(BIT12、BIT13、BIT12 | BIT13、0);
state_flag = 1。
}
他
{
gpio_output_set(BIT13、BIT12、BIT12 | BIT13、0);
state_flag = 0;
}
}
これ、ソフトウェア使用タイマーが終了しました。
注意:23のマニュアル2C-esp8266_sdk_api_guide_cn_v1.5.4を参照。
注意:マニュアルが推奨する、非常に危険、達成するためのプログラムで(1)無限ループ中に使用しないでください。
きれいが続くと、それを構築するLEDパネルを見ることができますダウンロードした後、ライトがオフに、binファイルを構築します。
リンクをダウンロードします。https://pan.baidu.com/s/1fDc4ap2TeazjP_nQL7ZtVg
抽出コード:9onb