#define GreenLedPin A0
uint32_t flashLedGetTimeTick;

int flashLed(uint16_t toggleTime);
void toggleLed1(int pins);
void toggleLed2(int pins);
void toggleLed3(int pins);
//example4 to toggle led
#define   toggleLed4(pins)   digitalWrite(pins, !digitalRead(pins))

void setup() {
  // put your setup code here, to run once:
  flashLedGetTimeTick = millis();
  pinMode(GreenLedPin, OUTPUT);
  Serial.begin(115200);

}

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

}

int flashLed(uint16_t toggleTime){

  if(millis() - flashLedGetTimeTick > toggleTime){
    flashLedGetTimeTick = millis();
    toggleLed4(GreenLedPin);
    Serial.println("toggle once pin!");
    return 1;
  }else{
    return 0;
  }

}

//example1 to toggle led
void toggleLed1(int pins){
  if(digitalRead(pins) == HIGH){
    digitalWrite(pins, LOW);
  }else{
    digitalWrite(pins, HIGH);
  }
}

//example2 to toggle led
void toggleLed2(int pins){
  bool pinState = !digitalRead(pins);
  // uint8_t pinState1 = ~digitalRead(pins);
  // Serial.print("pin's state = ");
  // Serial.println(pinState1);
  //注意比较,取反~和非!运算符的规则。自己好好用实践体会下
  digitalWrite(pins,pinState);
}

//example3 to toggle led
void toggleLed3(int pins){
  digitalWrite(pins, !digitalRead(pins));
}