前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >11-ESP8266 SDK开发基础入门篇--定时器

11-ESP8266 SDK开发基础入门篇--定时器

作者头像
杨奉武
发布2019-07-01 17:47:32
8220
发布2019-07-01 17:47:32
举报
文章被收录于专栏:知识分享知识分享

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

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

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

先看软件定时器

 具体大家看下面

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

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

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

先看带参数的

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

代码语言:javascript
复制
//定义一个定时器用的回调函数
void os_timer_one_function(void *parg)
{
    printf("parg:%s\n", parg);//打印一下传过来的参数
    GPIO_OUTPUT_SET(5, 1-GPIO_INPUT_GET(5));//GPIO5输出 反转
}
代码语言:javascript
复制
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灭

其实这个参数是

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

不带参数就不说了哈

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

 现在看硬件中断定时器

然后...官方给了例子

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

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

然后我把

 程序又好了

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

1000  才1ms

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

代码语言:javascript
复制
u32 cnt = 0;
void hw_test_timer_cb(void)
{
    cnt++;
    if(cnt>1000)
    {
        cnt=0;
        printf("1111111111111:%s\n");//打印
    }
}

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

https://cloud.tencent.com/developer/article/1451791

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档