微秒计时器

2019-07-21 00:24发布

在实时性要求极高的自动控制系统中,PID的计算十分依赖于时间的准确性,所以我希望能做一个单位为微秒的计时器,来准确计算两次PID运算间隔的时间。目前只能想到定时器,但微秒的频繁中断恐怕是不行,请问各位大神有什么高招呢?
我在某开源项目里找到这样一段代码,但是看不懂~
uint32_t micros(void)
{
    register uint32_t ms, cycle_cnt;
    do {
        ms = sysTickUptime;
        cycle_cnt = SysTick->VAL;
        /*
         * If the SysTick timer expired during the previous instruction, we need to give it a little time for that
         * interrupt to be delivered before we can recheck sysTickUptime:
         */
        asm volatile(" nop ");
    } while (ms != sysTickUptime);
    return (ms * 1000) + (usTicks * 1000 - cycle_cnt) / usTicks;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
阿拓
1楼-- · 2019-07-21 04:05
 精彩回答 2  元偷偷看……
lvehe
2楼-- · 2019-07-21 08:07
原子的程序有us定时,可以看看,也是用的,systick

一周热门 更多>