绝对时间
项目中需要对软件每个执行的动作做严格的时刻表。比如软件有几个关键动作:
压电机,采集,复位电机
记录每个动作的起始时刻(单位毫秒):
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的情况下,获取准确的时刻。
用一个定时器,做微秒计数。用的时候读取。 在中断服务程序里面调用的话,需要使用函数xTaskGetTickCountFromISR
页:
[1]