我正在测试STM32F746G发现板上的以太网连接 . 但是,只是拥有一个未连接的EthernetInterface实例,偶尔获取两个时间戳之间的持续时间要长得多 .
在下面的示例中,采用100K倍的时间戳,并测量自上一个时间戳以来的持续时间 . 如果没有以太网接口,则需要在 1 and 2 us 之间不断进行 . 存在以太网实例 . 它有时需要 20 us .
所以看起来我的程序被打断了 . 有人有想法,这里到底发生了什么?
#include "mbed.h"
#include "EthernetInterface.h"
Serial pc(SERIAL_TX, SERIAL_RX); // serial for printf
//EthernetInterface ethIf; // <= INFLUENCES TIMING
int main()
{
uint32_t durationMax = 0; // statistics
Timer timer; // a timer
timer.start(); // start it
uint32_t timeStampLast = timer.read_us(); // sampling timestamp
for (int i = 0; i < 100000; ++i)
{
const uint32_t timeStampNowUs = timer.read_us();
const uint32_t durationUs = timeStampNowUs - timeStampLast;
timeStampLast = timeStampNowUs;
durationMax = std::max(durationMax, durationUs);
}
pc.printf("Duration max: %u us\n", durationMax); // either 3 or 20 ?!
}