State variables and millis help.

I see several problems with your code, starting with over-dependence on global variables.

void  readButtons(){                    //read buttons status

  //Enter button
  // read the state of the switch into a variable:
  buttonState = digitalRead(buttonPinEnter);
  
}

There is no reason for this function to not return a value. Actually, there is no need for a function that does nothing but call another function.

void activateAlarm(){

  if (buttonState == false) {
    alarmStartMillis = millis();
    alarmSounding = true;
    Serial.println("timer started");
  }
}

You should not even be calling this function if buttonState is not HIGH (or LOW).

The digitalRead function does not return true or false. Don't test for true or false.

The Serial.print() statement is wrong. You are not using a timer. You recorded when an event occurred.

  if (alarmSounding == true) {

If alarmSounding is true, this statement reads if (true == true). Since true is equal to true, the result of the comparison is true. If, on the other hand, alarmSounding is false, the statement reads if (true == false). Since true is not equal false, the result of the comparison is false. So, you can see that the result of the comparison is always the same as the value in alarmSounding. So, look like a real programmer and ditch the == true part of that statement.

The biggest problem with your code, though, is that you are not testing for when the switch BECOMES pressed, but rather testing when the switch IS pressed. So, as long as the switch IS pressed, the event time (when the switch became pressed) keeps moving forward. It doesn't stop moving until you release the switch.

Look at the state change detection example.