异步执行语句

支持芯片: SHMICTRL系列芯片 ESP32-S3系列
void async_run(int n);
//n: 语句组编号

在异步通信过程中,比如WIFI通信中,大量使用异步方式完成操作;在异步操作中,如果需要串联调用多个异步通信指令,就会需要在执行完成的完成事件中继续使用异步命令调用,这样相当于在一个没有结束的线程中直接启用另一个线程,在单片机这种内存极其紧张的环境中就会导致RAM内存不够,减少系统的稳定性;

因此我们增加了异步执行语句,在需要启动新语句的时候,不在完成事件中启动,而是通过async_run语句在主进程的消息循环中启动新的WIFI通信语句;

async_run语句执行后不停留,直接回继续执行async_run语句后面的语句;

调用没有结束的时候就调用灵异

示例

void app.onASYNC(int m){
    if (m==1){
        wifi_sntp("ntp.tencent.com","CST-8");
    }
    if (m==2){
        getuser();//获取用户
    }
}


void app.onWIFI32(int m){
    //本事件函数中请不要书写wifi启动语句
    int  size;
    int code;
    if (m==2){
        //wifi_connect
        code=wifi_getinfo(8);
        if (code==3){
            //连接成功
            async_run(1);
        }
    }
    if (m==5){
        //sntp 完成
        async_run(2);
    }
};


wifi_connect("ssid","passwd");
start();

在以上的代码中,按下步骤执行:

注意