wen 发表于 2023-12-27 11:27:26

绝对时间

项目中需要对软件每个执行的动作做严格的时刻表。
比如软件有几个关键动作:
压电机,采集,复位电机

记录每个动作的起始时刻(单位毫秒):
0,126,1200


实现接口如下:

void TimRcord(eTim eT)
{
        static TickType_t tBase;
       
        if(TIM_START_TST == eT)
        {
                memset(g_tTiming,0,sizeof(g_tTiming));
                tBase = xTaskGetTickCount();
        }
       
        g_tTiming = xTaskGetTickCount()-tBase;
}


一切貌似很正常。但是“采集动作”有用到接口taskENTER_CRITICAL(); 导致采集结束的时刻不准。
有没有其他好的方案:在使用taskENTER_CRITICAL的情况下,获取准确的时刻。


regbbs 发表于 2023-12-27 13:14:54

用一个定时器,做微秒计数。用的时候读取。

xxwl0406 发表于 2023-12-27 16:38:48

在中断服务程序里面调用的话,需要使用函数xTaskGetTickCountFromISR
页: [1]
查看完整版本: 绝对时间