在CANOpen中,有部分和时间相关的子协议,比如pdo和lifegrd等,这就要求移植的时候实现定时器的底层接口。
在timer.h中给出了接口声明
/* 设置定时器重载值 */
void setTimer(TIMEVAL value);
/* 获取当前定时器计数器值 */
TIMEVAL getElapsedTime(void);
timer.c通过一个定时器实现各种定时事务的管理,定时事件数的上限取决于config.h中的宏MAX_NB_TIMER,在timer.c中定义了定时事件入口数组s_timer_entry timers[MAX_NB_TIMER]。
/* 定时事件入口结构体 */
struct struct_s_timer_entry
{
UNS8 state; /* 事件状态 */
CO_D