zoukankan      html  css  js  c++  java
  • FreeRTOS软件定时器的使用

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

    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)
  • 相关阅读:
    Cornerstone-忽略(隐藏)文件
    ios开发xcode8+ 无需开发者账号,app打包ipa
    ssh-ajax登陆action返回字符串
    手动编译包含两个import自写类的java类。
    关闭IO资源
    java聊天室二(客户端)
    java聊天室一(服务器)
    文件IO常用操作
    Hive启动时的棘手问题的处理
    对于java反射的理解
  • 原文地址:https://www.cnblogs.com/429512065qhq/p/8893711.html
Copyright © 2011-2022 走看看