学習日記——ESP 8266システムインタフェース(2020.2.18)
10507 ワード
システムインタフェースは/
一、システム_get sdk_ version機能:SDKバージョン情報 を問い合わせる関数定義: 二、OS_printf 機能:出力をフォーマットし、文字列を印刷します.
【注意】本インタフェースはUART 0からデフォルトで印刷されます.I0T_ Demoの関数定義: パラメータ: 戻り: なし例: 三、OS_strlen 機能:C言語関数をカプセル化し、文字列長を計算します. 関数定義: パラメータ: は、文字列の長さ を返します.例:
四、システム_init_ done_ cb機能:user_Initで呼び出し、システム初期化完了のコールバック関数を登録します. 注意:インタフェースwifi_station_ scanは、システム初期化が完了し、Stationモードが可能になった場合に呼び出さなければならない. 関数定義: パラメータ: 戻り値:なし. 例:
五、システム_OS_ task機能:システムタスクを作成し、最大3つのタスクの作成をサポートし、優先度はそれぞれ0/1/2 である.関数定義: パラメータ: 六、システム_OS_ post 機能:タスクにメッセージを送信する 関数定義: パラメータ: 戻り値:true:成功;false:失敗 例:
七、OS_memset機能:パラメータ1(dest)が指す位置のnbyteバイトをval指定ASCII値/データ に全て埋め込む.関数定義: パラメータ: 戻り値:destへのvoid*ポインタ 八、OS_memcpy 定義:パラメータ2(src)が指す位置から、nbyteバイトをパラメータ1(dest)が指す位置にコピーする .関数定義: パラメータ: 戻り値:destへのvoid*ポインタ 九、OS_memmove 機能:パラメータ2(src)が指す位置から、nbyteバイトをパラメータ1(dest)が指す位置にコピーする .関数定義 注意:ターゲット領域とソース領域が重複している場合、memmoveは、ソース文字列が上書きされる前に重複領域のバイトをターゲット領域にコピーすることを保証することができる.ただし、コピーするとsrcの内容が変更されます.ターゲット領域がソース領域と重複していない場合はmemcpy関数と同じ機能です. パラメータ:dest:ターゲットアドレス;src:ソースアドレス;nbyte:コピーされたバイト数 戻り値:destへのvoid*ポインタ 十、OS_memcmp 機能:比較パラメータ1(str 1)指向位置とパラメータ2(str 1)指向位置の前nbyteバイト(バイト別比較) 関数定義: パラメータ:dest、ターゲットアドレス;src、ソースアドレス;nbyte、比較バイト数 戻り値:戻り値<0:buf 1戻り値=0:buf 1=buf 2戻り値>0:buf 1>buf 2 例:char*s 1="abc";char *s2=“acd”; int result = memcmp(s1,s2,3); s 1とs 2の最初の3バイトを比較し、最初のバイトは等しく、2番目のバイトの比較ではs 1
十一、os_strstr機能:文字列str 2がstr 1のサブ列であるか否かを判断する 関数定義: パラメータ:str 1、文字列1(親列);str 2、文字列2(サブストリング) 戻り値:戻り値=NULL:文字列2は文字列1のサブ列戻り値ではありません!=NULL:文字列2は文字列1のサブストリングであり、文字列2が文字列1に初めて現れるアドレス を返す
十二、strcpy機能:パラメータ2(src)が指す位置からの文字列('0'の終端を含む)を、パラメータ1(dest)で始まるアドレス空間 にコピーする.関数定義:char*strcpy(char*dest,const char*src) パラメータ:dest、ターゲットアドレス;src、ソースアドレス 戻り値:destを指すchar*ポインタ 十三、os_strncpy 機能:パラメータ2(src)が指す位置からの文字列の先頭nbyteバイトを、パラメータ1(dest)から始まるアドレス空間 にコピーする.関数定義: 注意:1、srcの前のn文字にNULL文字が含まれていない場合、結果はNULL文字で終わりません.すなわち、n 2の場合、srcの長さがnバイト未満の場合、destはnバイトがコピーされるまで'0'で埋め込まれる.3、srcとdestが指すメモリ領域は重複してはいけません.destはsrcの文字長+'0'を収容するのに十分な空間が必要です. パラメータ:dest、ターゲット文字列;src、ソース文字列;nbyte、コピーされたバイト数 戻り値:destを指すchar*ポインタ 十四、os_strcmp 機能:2つの文字列を左から右へ1文字ずつ比較(ASCII値の大きさで比較)し、異なる文字が現れるまで .関数定義:int os_strcmp( const char *s1, const char *s2 ) パラメータ:1、s 1:文字列1 2、s 2:文字列2 戻り値:戻り値<0:s 1戻り値=0:s 1=s 2戻り値>0:s 1>s 2 十五、os_strncmp 機能:文字列s 1とs 2の前のnbyte文字を比較します. 関数定義: 注意:比較する文字には文字列終了フラグ'0'が含まれ、'0'に遭遇すると比較が終了し、nbyteがいくらであっても後の文字の比較は続行されません. パラメータ:1、s 1:文字列1 2、s 2:文字列2 3、nbyte:比較バイト数 戻り値:戻り値<0:s 1戻り値=0:s 1=s 2(前のnbyteバイト)戻り値>0:s 1>s 2(前のnbyteバイト) 十六、OS_delay_ us 機能:遅延関数.最大値65535μs 関数定義: パラメータ: 戻り: なし
十七、OS_bzero機能:セット文字列pの最初のnバイトがゼロであり、0 を含む.関数定義: パラメータ:
18、0 S_install _putc1機能:印刷インタフェース関数 を登録する関数定義: パラメータ: 戻り: なし例:
ESP8266_ NONOS_ SDK/include/user jinterface.h
にあります.os_ XXX
シリーズインターフェースは、/ESP8266 NONOS_ SDK/linclude/osapi.h
にある.一、システム_get sdk_ version
const char* system_ _get_ sdk_ version(void)
【注意】本インタフェースはUART 0からデフォルトで印刷されます.I0T_ Demoの
uart_ init
は、ボーレートを設定して、os_ printf
をUART 1から印刷するように変更することができます.os. install_ putc1((void *)uart1_ write_ char);
は、本インタフェースを呼び出して125バイトを超えてはいけないデータを印刷したり、頻繁に本インタフェースを呼び出して印刷したりします.そうしないと、印刷対象のデータの一部が失われる可能性があります.void OS_ printf(const char *s)
const char *s
:文字列oS_ printf(“SDK version: %s
” ,system _get_ sdk_ version());
os_ strlen(char *s)
char *s
:文字列char *ssid =“ESP8266”;
os_ memcpy(softAP. config.ssid, ssid, oS_ strlen(ssid));
四、システム_init_ done_ cb
void system_ init_ done_ cb(init. done_ cb_t cb)
init_ done_ cb. t cb
:システム初期化完了コールバック関数void to. _scan(void)
{
wifi. _station_ scan(NULL,scan_ done);
}
void user. init(void)
{
wifi_ set_ opmode(STATION_ MODE);
system_ _init_ done_ cb(to_ scan);
}
五、システム_OS_ task
bool system_ os_ task
(
os_ task_ t task,
uint8 prio,
os_ event_ .t *queue,
uint8 qlen
)
os_ task t task
:タスク関数uint8 prio
:タスク優先度、0/1/2;0が最小優先度です.これは、最大3つのタスクos. _event. t *queue
の確立のみをサポートすることを示す:メッセージキューポインタuint8 qlen
:メッセージキュー深さbool system_ OS_ post
(
uint8 prio,
os_ signal_t sig,
os_ param_ .t par
)
uint8 prio
:タスク優先度は、確立時のタスク優先度に対応します.os_ signal. t sig
:メッセージタイプos_ param_t par
:メッセージパラメータ void task post(void)
{
system_ os. post(USER TASK_ PRI0_ 0,SIG_ RX,'a’ );
}
七、OS_memset
void os_memset( void *dest, int val, unsigned int nbyte )
dest
、ターゲットアドレス;val
、文字/データを入力します.nbyte
、パディングバイト数void os_memcpy( void *dest, const void *src, unsigned int nbyte )
dest
、ターゲットアドレス;src
:ソースアドレス;nbyte
:コピーされたバイト数void os_memmove( void *dest, const void *src, unsigned int nbyte )
int os_memcmp( const void *str1, const void *str2, unsigned int nbyte )
十一、os_strstr
char * os_strstr( const char *str1, const char *str2 )
十二、strcpy
char * os_strncpy( char *dest, char *src, unsigned int nbyte)
int os_strncmp( const char *s1, const char *s2, unsigned int
nbyte)
void os_ delay_us(uint16 us)
uint16 us
:遅延時間十七、OS_bzero
void os_ bzero(void *p,size. _t n)
void *p
:ゼロにするデータの開始アドレス;size+n
:ゼロにするデータバイト数.18、0 S_install _putc1
void oS. _install_ putc1(void(*p)(char )
void(*p)(char c)
印刷インタフェース関数ポインタUART.c
、uart. init
のos. _install_ putc1((void *)uart1_ write_ char)
を参照して、os_ printf
をUART 1から印刷するように変更します.そうでなければ、os_ printf
はUART 0からデフォルトで印刷されます.