学习日记——ESP8266系统接口(2020.2.18)

系统接口位于/ESP8266_ NONOS_ SDK/include/user jinterface.h
os_ XXX 系列接口位于/ESP8266 NONOS_ SDK/linclude/osapi.h

一、system_ get sdk_ version

  • 功能:查询SDK版本信息
  • 函数定义:const char* system_ _get_ sdk_ version(void)

二、OS_ printf

  • 功能:格式化输出,打印字符串。

【注意】本接口默认从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 \n” ,system _get_ sdk_ version());

三、OS_ strlen

  • 功能:封装C语言函数,计算字符串长度。
  • 函数定义:os_ strlen(char *s)
  • 参数:char *s: 字符串
  • 返回:字符串长度
  • 示例:
char *ssid =“ESP8266”;
 os_ memcpy(softAP. config.ssid, ssid, oS_ strlen(ssid));

四、system_ init_ done_ cb

  • 功能:在user_ init中调用,注册系统初始化完成的回调函数。
  • 注意:接口wifi_ station_ scan必须在系统初始化完成后,并且Station 模式使能的情况下调用。
  • 函数定义: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);
}

五、system_ OS_ task

  • 功能:创建系统任务,最多支持创建3个任务,优先级分别为0/1/2
  • 函数定义:
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: 消息队列深度

六、system_ OS_ post

  • 功能:向任务发送消息
  • 函数定义:
bool system_ OS_ post 
(
	uint8 prio,
	os_ signal_t sig,
	os_ param_ .t par
)
  • 参数:
    uint8 prio:任务优先级,与建立时的任务优先级对应。
    os_ signal. t sig: 消息类型
    os_ param_t par:消息参数
  • 返回值:true:成功;false:失败
  • 示例:
 void task post(void) 
 { 
 	system_ os. post(USER TASK_ PRI0_ 0,SIG_ RX,'a’ );
 }

七、OS_ memset

  • 功能:将参数1(dest)所指向位置的nbyte个字节全部填充为val指定的ASCII值/数据
  • 函数定义:void os_memset( void *dest, int val, unsigned int nbyte )
  • 参数:dest,目标地址;val,填充字符/数据;nbyte,填充字节数
  • 返回值:指向dest的void*指针

八、OS_ memcpy

  • 定义:从参数2(src)所指的位置起,拷贝nbyte个字节到参数1(dest)所指位置处
  • 函数定义:void os_memcpy( void *dest, const void *src, unsigned int nbyte )
  • 参数:dest,目标地址 ;src:源地址 ;nbyte:拷贝的字节数
  • 返回值:指向dest的void*指针

九、OS_memmove

  • 功能:从参数2(src)所指的位置起,拷贝nbyte个字节到参数1(dest)所指位置处
  • 函数定义void os_memmove( void *dest, const void *src, unsigned int nbyte )
  • 注意:如果目标区域和源区域有重叠的话,memmove能够保证源字符串在被覆盖之前将重叠区域的字节拷贝到目标区域中。但复制后src内容会被更改。当目标区域与源区域没有重叠则和memcpy函数功能相同。
  • 参数:dest:目标地址; src:源地址; nbyte:拷贝的字节数
  • 返回值:指向dest的void*指针

十、OS_memcmp

  • 功能:比较 参数1(str1)指向位置和参数2(str1)指向位置的前nbyte个字节(按字节比较)
  • 函数定义:
int  os_memcmp( const void *str1,  const void *str2,  unsigned int nbyte )
  • 参数:dest,目标地址 ;src,源地址 ;nbyte,比较的字节数
  • 返回值:
    返回值<0:buf1<buf2
    返回值=0:buf1==buf2
    返回值>0:buf1>buf2
  • 示例: char *s1=“abc”; char *s2=“acd”; int result = memcmp(s1,s2,3);
    比较s1和s2的前3个字节,第一个字节相等,第二个字节比较中s1<s2(第三字节无需比较)。所以result = -1。

十一、os_strstr

  • 功能:判断字符串str2是否是str1的子串
  • 函数定义:char * os_strstr( const char *str1, const char *str2 )
  • 参数:str1,字符串1(母串) ;str2,字符串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)开始的地址空间
  • 函数定义:
char *  os_strncpy( char *dest,  char *src,  unsigned int nbyte)
  • 注意:
    1、如果src的前n个字符不含NULL字符,则结果不会以NULL字符结束。
    即:如果n<src的长度,只是将src的前n个字符复制到dest的前n个字符,不自动添加 ‘\0’,也就是结果dest不包括’\0’,需要再手动添加一个’\0’。
    2、如果src的长度小于n个字节,则以’\0’填充dest直到复制完n个字节。
    3、src和dest所指内存区域不可以重叠,dest必须有足够的空间来容纳src的字符长度+’\0’。
  • 参数:dest,目标字符串; src,源字符串; nbyte,复制的字节数
  • 返回值:指向dest的char*指针

十四、os_strcmp

  • 功能:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇’\0’为止
  • 函数定义:int os_strcmp( const char *s1, const char *s2 )
  • 参数:
    1、s1: 字符串1
    2、s2: 字符串2
  • 返回值:
    返回值<0: s1<s2
    返回值=0: s1==s2
    返回值>0: s1>s2

十五、os_strncmp

  • 功能:比较字符串s1和s2的前nbyte个字符。
  • 函数定义:
int  os_strncmp( const char *s1,  const char *s2,  unsigned int
   nbyte)
  • 注意: 要比较的字符包括字符串结束标志’\0’并且一旦遇到’\0’就结束比较,无论nbyte是多少,不再继续比较后边的字符。
  • 参数:
    1、s1: 字符串1
    2、s2: 字符串2
    3、nbyte: 比较的字节数
  • 返回值:
    返回值<0: s1<s2(前nbyte个字节)
    返回值=0: s1==s2(前nbyte个字节)
    返回值>0: s1>s2(前nbyte个字节)

十六、OS_ delay_ us

  • 功能:延时函数。最大值65535 μs
  • 函数定义:void os_ delay_us(uint16 us)
  • 参数:uint16 us:延时时间
  • 返回:无

十七、OS_ bzero

  • 功能:置字符串p的前n个字节为零且包含\0
  • 函数定义:void os_ bzero(void *p,size. _t n)
  • 参数:void *p:要置零的数据的起始地址;size+n:要置零的数据字节数。

十八、0S_ 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打印。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱生活的fuyao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值