버튼을 한 번 누르면 Blue LED 켜짐
버튼을 또 한 번 누르면 Blue LED 꺼짐
PinMap

main.h에 private defines 추가
#define LED_STATE0 0 // 초기 상태에서 100ms동안 High가 유지되면 LED On으로 하는 상태
#define LED_STATE1 1 // Switch High에서 Low로 떨어지는지 점검하는 상태
#define LED_STATE2 2 // LED On상태에서 Switch 100ms이상 High 유지되면 LED Off하는 상태
#define LED_STATE3 3 // Switch High에서 Low로 떨어지는지 점검하는 상태

unsigned char ReadSW, SW_High_Counter, LED_State;

while (1)
{
// USER_Btn_GPIO_Port : 파란색 USER 버튼
// ReadSW : 파란색 버튼이 눌렸는지 판단
ReadSW = HAL_GPIO_ReadPin(USER_Btn_GPIO_Port, USER_Btn_Pin);
switch(LED_State)
{
case LED_STATE0:
if(ReadSW)
{
++SW_High_Counter;
if(SW_High_Counter > 10)
{
SW_High_Counter = 0x00;
LED_State = LED_STATE1;
HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET);
break;
}
}
else
{
SW_High_Counter = 0;
}
break;
case LED_STATE1:
if(ReadSW) break;
else
{
LED_State = LED_STATE2;
SW_High_Counter = 0x00;
break;
}
break;
case LED_STATE2:
if(ReadSW)
{
++SW_High_Counter;
if(SW_High_Counter > 10)
{
SW_High_Counter = 0x00;
LED_State = LED_STATE3;
HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);
break;
}
}
else
{
SW_High_Counter = 0;
}
break;
case LED_STATE3:
if(ReadSW) break;
else
{
LED_State = LED_STATE0;
SW_High_Counter = 0x00;
break;
}
break;
default:
break;
}
HAL_Delay(10);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}


