Я тестирую подключение Ethernet на плате обнаружения STM32F746G .Тем не менее, просто имея неподключенный экземпляр EthernetInterface , время между выборками двух временных меток время от времени значительно больше.
В приведенном ниже примере 100К раз берется временная метка и измеряется продолжительность с предыдущей временной метки.Без интерфейса Ethernet это постоянно занимает от 1 до 2 us .Наличие экземпляра Ethernet.Иногда это занимает до 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 ?!
}