まえに delay(n)がきっちりn[ms]休むかどうかでうやむやしてたが、
ESP32のArduinoは、下のループ処理では1ms周期に規準化されてうごく

loop(){
GPIOをON;
// 数百μsecの処理
GPIOをOFF
delay(1);
}

ってやると、周期が1msecの矩形波が出てくる。