我正在测试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 ?!
}