求助canfestival+stm32f4 心跳不准如何定位问题

2019-12-20 21:47发布


canfestival移植stm32f4 问题倒不大,但是这个心跳一旦bootup后就开始乱跳了,关于stm32_canfestival.c的时钟函数配置大致如下,
头文件timescfg.h 也已经改成1:1,因为定时器就是1ms中断。设置心跳时间为1s,bootup前是预定义状态,心跳正常1s。收发PDO后就开始乱了,1s里有2个心跳,大概率互补叠加为1s左右。
参考前人的移植历程好像移植没注意这个问题?找不到问题原因阿

#define MS_TO_TIMEVAL(ms) ((ms * 1))
#define US_TO_TIMEVAL(us) ((us))
void setTimer(TIMEVAL value)
{
                u16 capture;
                nexttime = value;
    NextTime=(TimeCNT+value)%TIMEVAL_MAX;
}

// Get the elapsed time since the last occured alarm //
TIMEVAL getElapsedTime(void)
{
        int ret=0;
        ret = (TimeCNT >= last_time_set) ? (TimeCNT - last_time_set) : (TimeCNT + TIMEVAL_MAX - last_time_set);
        last_time_set = TimeCNT;
                                elapsetime = ret;
        return ret;
}

void timerForCan(void)
{  
    TimeCNT++;
                if (TimeCNT>=TIMEVAL_MAX)
                {
                        TimeCNT=0;
                }
                if (TimeCNT==NextTime)
                {
                        TimeDispatch();
                }
        
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。