countdown with a flashing LED problem

so i made a countdown from 30 seconds, but how do i make the built in LED quickly flash during the last 5 seconds? with my current code it flashed with the clock - one flash a second. but i want it to go faster than that. :confused:

int btn = 9;
byte clk = 30;
int RXLED = 17;

void setup() {
  // put your setup code here, to run once:

pinMode(btn, INPUT);
pinMode(17, OUTPUT);
digitalWrite(btn, HIGH);

}

void loop() {
  // put your main code here, to run repeatedly:

while (digitalRead(btn) == HIGH);
  {
    delay(100);
  }
      
clock:
if(clk == 255)
  {
    delay(100);
  }
  else
    {
      clk--;
      Serial.println(clk);
      delay(1000);
    }

while (clk <= 5)
  {
    digitalWrite(RXLED, LOW);
    delay(100);
    digitalWrite(RXLED, HIGH);
    delay(100);
    goto clock;
  }

}

Try something like this:

const int btn = 9;
byte clk = 30;
const int RXLED = 17;

unsigned long prevTime; prevBlinkTime;
unsigned long blinkInterval = 1000;

void setup() {

  Serial.begin(9600);
  pinMode(btn, INPUT_PULLUP);
  pinMode(RXLED, OUTPUT);
  digitalWrite(RXLED, LOW);

  // wait for button press to begin
  while (digitalRead(btn) == HIGH) {
    // do nothing
  }
  prevTime = millis();
  prevBlinkTime = millis();
  digitalWrite(RXLED, HIGH);
}

void loop() {

  unsigned long currentTime = millis();
  if ( currentTime - prevTime >= interval ) {
    prevTime = currentTime;
    clk--;
    Serial.println(clk);
    if ( clk == 5 ) {
      blinkInterval = 100;
    }
  }

  if ( clk == 0 ) {
    // all done, loop forever
    digitalWrite( RXLED, LOW);
    while (1);
  }

  if ( currentTime - prevBlinkTime >= blinkInterval ) {
    prevBlinkTime = currentTime;
    digitalWrite( RXLED, !digitalRead(RXLED));
  }
}