zoukankan      html  css  js  c++  java
  • 11-ESP8266 SDK开发基础入门篇--软硬件定时器

    https://www.cnblogs.com/yangfengwu/p/11094009.html

    定时器有两种,软件定时器和硬件定时器

    软件定时器就是靠里面的任务延时实现的,,这样的定时器其实延时不准确

    硬件定时器 就是硬件中断定时器,咱都学过单片机,中断的准确

    先看软件定时器

     具体大家看下面

    所以第一步,定义一个定时器变量

    可以看这个文件,咱就是用这个头文件

     os_timer_t os_timer_one;//定义一个全局的定时器结构体变量

     

    先看带参数的

    void *XXX   就是说可以接收任意的指针变量

    //定义一个定时器用的回调函数
    void os_timer_one_function(void *parg)
    {
        printf("parg:%s
    ", parg);//打印一下传过来的参数
        GPIO_OUTPUT_SET(5, 1-GPIO_INPUT_GET(5));//GPIO5输出 反转
    }

    os_timer_setfn(&os_timer_one,os_timer_one_function,"yang");//配置定时器          定时器结构体变量         回调函数                   传给回调函数的参数
        os_timer_arm(&os_timer_one,500,1);//使能定时器    os_timer_one--定时器变量    500--500ms进一次       1--循环进去

     下载进去

    500ms亮   500ms灭

    其实这个参数是

    os_timer_setfn(&os_timer_one,os_timer_one_function,"yang");
    这个时候传过去的,只传这一次,只不过,局部变量的值设置了是yang 后期进中断的时候都没有去设置这个参数

     

    不带参数就不说了哈

    大家自己测试,报不报错就看官方底层怎么写的了

     现在看硬件中断定时器

     

    然后...官方给了例子

    咱就稍微改改回调函数里面的

     

     程序挂了......不可以运行了,总是=重启

    然后我把

     程序又好了

    我感觉这个定时器是us级的定时器

    1000  才1ms

    1ms进一次执行  printf    printf还没执行完  中断又到了     所以程序崩了

    u32 cnt = 0;
    void hw_test_timer_cb(void)
    {
        cnt++;
        if(cnt>1000)
        {
            cnt=0;
            printf("1111111111111:%s
    ");//打印
        }
    }

     

     忘了..我后面怎么加了个%s  忘了去掉了

     

     https://www.cnblogs.com/yangfengwu/p/11100552.html

  • 相关阅读:
    systemtap没找到函数变量
    systemtap get var of the tracepoing
    如何在tracepoint上注册函数
    stap中的entry函数
    stap用法
    在submit_bio处使用stapn
    巴达努斯
    perf事件的切换
    perf原理再看
    内存回收的阈值
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/11094085.html
Copyright © 2011-2022 走看看