博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FreeRTOS软件定时器的使用
阅读量:4610 次
发布时间:2019-06-09

本文共 1147 字,大约阅读时间需要 3 分钟。

先贴上一个创建的代码,先声明一个句柄

TimerHandle_t  pump_wakeup_timer_handle = NULL;

创建定时器和启动定时器,第三个参数,pdFALSE是只定时一次,pdTRUE是自动重载定时器,也就是一直循环。

if(pump_wakeup_timer_handle == NULL)            {                //定时器的第一个参数,字符串,定时器的名字                //第二个参数,是定时时间,毫秒级别                //第三个参数,只定时一次,还是自动加载                //第4个参数吗,定时器的ID,一般为0                //第5个参数,定时到了的回调函数                pump_wakeup_timer_handle = xTimerCreate(NULL, (15000), pdFALSE, NULL, pump_wakeup_timeout_callback);                //启动定时器                //reset这个定时器                if(xTimerStart(pump_wakeup_timer_handle, 0) != pdPASS)                {                    Report("timer start fail");                }            }

定时器回调函数,比如上面定时了15S,那么15S之后到了就会调用这个函数。

void pump_wakeup_timeout_callback(TimerHandle_t xTimer){    if (pump_wakeup_timer_handle != NULL)    {        xTimerDelete(pump_wakeup_timer_handle, 0);        pump_wakeup_timer_handle = NULL;    }    Report("task suspend");}

问题记录,实际测试发现定时器启动函数,只能启动一次,如果启动之后,再次启动会产生问题,导致时间异常,总结起来就是定时器启动函数不会在内部检查是否已经启动了。我犯过这个错误,需要注意。

if(xTimerStart(pump_wakeup_timer_handle, 0) != pdPASS)

 

转载于:https://www.cnblogs.com/429512065qhq/p/8893711.html

你可能感兴趣的文章
poj 1654 && poj 1675
查看>>
运维派 企业面试题1 监控MySQL主从同步是否异常
查看>>
Docker 版本
查看>>
poj 1753 Flip Game
查看>>
在深信服实习是怎样的体验(研发测试岗)
查看>>
Linux免密码登陆
查看>>
SpringMVC中文件的上传(上传到服务器)和下载问题(二)--------下载
查看>>
Socket & TCP &HTTP
查看>>
osip及eXosip的编译方法
查看>>
Hibernate composite key
查看>>
[CF Round #294 div2] D. A and B and Interesting Substrings 【Map】
查看>>
keepalived+nginx安装配置
查看>>
我的2015---找寻真实的自己
查看>>
android编译遇到问题修改
查看>>
解决Ubuntu18.04.2远程桌面Xrdp登录蓝屏问题
查看>>
python_封装redis_hash方法
查看>>
《windows程序设计》获取窗口尺寸(05)
查看>>
【重点突破】——Canvas技术绘制音乐播放器界面
查看>>
监控级联时各个层的PoE交换机怎么选?
查看>>
存储过程
查看>>