EthernetInterface实例中断程序

时间:2018-12-10 10:09:53

标签: c++ embedded ethernet mbed

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

0 个答案:

没有答案