首页 > 解决方案 > EthernetInterface 实例中断程序

问题描述

我正在STM32F746G发现板上测试以太网连接。然而,仅仅有一个未连接的EthernetInterface实例,偶尔获取两个时间戳之间的持续时间要长得多。

在下面的示例中,使用 100K 次时间戳并测量自上一个时间戳以来的持续时间。如果没有以太网接口,这需要持续1 到 2 us。存在以太网实例。有时最多需要20 我们

所以看起来我的程序被打断了。有人有想法吗,这里到底发生了什么?

#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 ?!
}

标签: c++embeddedethernetmbed

解决方案


推荐阅读