微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何让程序在 stm32f7 中等待确切的持续时间?

如何解决如何让程序在 stm32f7 中等待确切的持续时间?

我将 STM32f7 Nucleo 板用于我的一个项目。我需要让程序等待我正在使用的变量指定的确切持续时间。等待时间以纳秒为单位,因此我无法使用 HAL_Delay() 方法

定时器频率为 216 Mhz。我使用的是 TIM3 以 1us 滴答滴答,而 TIM2 以 1 毫秒滴答滴答。

但是,我无法达到程序的确切等待时间。

while (ptpTimeCompare(configTime,currentTime) >= 0) {
    ptpTime temp;

    temp = ptpTimeDiff(configTime,currentTime);
    configStartWaitingTime = (uint64_t) (ptpTimetoCycleTime(&temp) *
        1000000000.0);

    if (temp.tv_sec > 0) {
        HAL_TIM_Base_Start(&htim2);
        delay_sec(temp.tv_sec * 1000);
        getCurrentTime(Scheduler);

        if (configTime >= currentTime) {
            HAL_TIM_Base_Start(&htim3);
            delay_usec(temp.tv_nsec / 100000);
            getCurrentTime(Scheduler);
        }
        else
            getCurrentTime(qbvScheduler);
    }
}

但是,最终 currentTime 总是大于 configTime

有什么办法可以使 currentTimeconfigTime 完全相等,以便代码的执行恰好从 configTime 开始?

两个时间都存储在一个结构中

currentTime{
tv_sec;
tv_nsec
};

非常感谢这方面的任何帮助

提前致谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。