我在用hpm6750定时器,通过定时器中断周期处理函数,周期1ms,但是定时器的每周期时间都会飘,会有us级的抖动,我的中断回调函数如下:
int us_temp[1000];
int us_idx = 0;
/* Timer timeout callback */
static rt_err_t timeout_cb(rt_device_t dev, rt_size_t size)
{
rt_device_read(hw_dev, 0, &timeout_s, sizeof(timeout_s));
int us = timeout_s.sec * 1000000 + timeout_s.usec;
if(us_idx < 1000)
{
us_temp[us_idx] = us;
us_idx++;
}
return 0;
}
抖动情况如下(单位us):
可以参考下这个帖子,关于关闭全局中断导致实时性问题求解决,PRIMASK 如何改用 BASEPRI
谢谢回复!我尝试了修改定时器的优先级,但是还是会有抖动