我正在 STM32F746G 发现板上测试以太网连接。 但是,仅具有一个未连接的 EthernetInterface 实例,偶尔会花费两个时间戳之间的持续时间会更长。
在下面的示例中,获取时间戳100K次,并测量自上一个时间戳以来的持续时间。 如果没有以太网接口,这将持续花费 1-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 ?!
}