rt_thread重定义了定时器类型为rt_timer_t structrt_timertm1 回调函数 voidtimeout_callback(void*parameter){/*回调函数的动作*/} 动态创建 rt_timer_trt_timer_create(constchar*name,void(*)(void*parameter)timeout,void*parameter,rt_tick_t
comm_delay先获取当前时间,加上延时时间以计算出到期时间timeout,之后循环等待当前时间超过timeout以完成延时。 系统时间使用uint32_t变量来记录,经过49.71天后将达到最大值UINT32_MAX(0xffffffff),溢出后回到0重新累加。不仅是当前时间会溢出,在接近49.71天时,计算的timeout将会更先一步溢出,从而使延时判断失效。 前...
名称:rt_timer_t rt_timer_create(const charname, void (timeout)(void *parameter), void *parameter, rt_tick_t time, rt_uint8_t flag) 功能:动态创建一个定时器 参数:name定时器的名称 参数:void (timeout) (void parameter) 定时器超时函数指针(当定时器超时时,系统会调用这个函数) 参数:paramet...
struct rt_object parent; /**< inherit from rt_object */ rt_list_t row[RT_TIMER_SKIP_LIST_LEVEL]; void (*timeout_func)(void *parameter); /**< timeout function */ void *parameter; /**< timeout function's parameter */ rt_tick_t init_tick; /**< timer timeout tick */ rt_...
rt_tick_tinit_tick;//延时时间 rt_tick_ttimeout_tick;//延时时间 + rt_tick全局变量数值 }; typedefstructrt_timer*rt_timer_t; 2.2 定时器链表 定时器开始:将所在延时线程的优先级从优先级组和表中移除,然后把自己挂载到定时器链表上; ...
1rt_timer_trt_timer_create(constchar*name,2void(*timeout)(void*parameter),3void*parameter,4rt_tick_ttime,5rt_uint8_tflag); (1)入口参数: name:定时器的名称。name 定时器的名称void (timeout) (voidparameter):定时器超时函数指针(当定时器超时时,系统会调用这个函数,即定时器超时回调函数)。p...
parameter:定时器超时后传给timeout_func函数的参数 init_tick:定时器内部用来记录定时器初始化指定的定时值 timeout_tick:定时器内部用来计算相对当前OSTICK定时器的超时TICK值。 /* hard timer list */static rt_list_t rt_timer_list[RT_TIMER_SKIP_LIST_LEVEL];/* soft timer list */static rt_list_t...
if ((current_tick - t->timeout_tick) < RT_TICK_MAX / 2) { RT_OBJECT_HOOK_CALL(rt_timer_enter_hook, (t)); /* remove timer from timer list firstly */ _rt_timer_remove(t); if (!(t->parent.flag & RT_TIMER_FLAG_PERIODIC)) ...
static void alarm_hour_cb(rt_alarm_t alarm, time_t timestamp) { LOG_D("alarm_hour_cb ok!\n"); } static void rtc_alarm_hour_create(void) { static time_t now; struct tm *p_tm; struct rt_alarm_setup alarm_setup_test; if (p_alarm_hour != RT_NULL) ...
闹钟时间到了,会执行此函数 */staticvoidalarm_hour_cb(rt_alarm_talarm,time_ttimestamp){LOG_D("alarm_hour_cb ok!\n");}staticvoidrtc_alarm_hour_create(void){statictime_tnow;structtm*p_tm;structrt_alarm_setupalarm_setup_test;if(p_alarm_hour!=RT_NULL)return;now=time(NULL);p_tm=local...