如何解决如何让程序在 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
。
有什么办法可以使 currentTime
和 configTime
完全相等,以便代码的执行恰好从 configTime
开始?
两个时间都存储在一个结构中
currentTime{
tv_sec;
tv_nsec
};
非常感谢这方面的任何帮助
提前致谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。