ARM

gpio port를 이용하여 led on/off 하기

GunwooYun 2022. 4. 24. 11:42

사용보드 : STM32F103RB + I/O board

 

GPIO 입력 및 출력 : 스위치를 누르면 해당 LED ON, 1초 딜레이 후 OFF

 

확대해야 잘 보임


PC0:7 OUTPUT LED
PA8 SWITCH 1
PB4 SWITCH 2
PB5 SWITCH 5
PB10 SWITCH 10

SW1 누르면 PC0:1 HIGH
SW2 누르면 PC2:3 HIGH
SW3 누르면 PC4:5 HIGH
SW4 누르면 PC6:7 HIGH

 

스위치가 pull-up 방식이므로 기본값은 high이다. 조건문에서 부정조건을 넣지 않으면 첫번째 단에서 계속 걸리게 되므로 부정문을 넣어 LOW일때 작동하도록 한다.

while (1)
  {
	  // switch default pull-up, value is 1
	  if(!HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8))
		  HAL_GPIO_WritePin(GPIOC, 0x0001 | 0x0002, GPIO_PIN_SET); // PC0, PC1 HIGH
	  else if(!HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_4))
	  		  HAL_GPIO_WritePin(GPIOC, 0x0004 | 0x0008, GPIO_PIN_SET); // PC2, PC3 HIGH
	  else if(!HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_5))
	  		  HAL_GPIO_WritePin(GPIOC, 0x0010 | 0x0020, GPIO_PIN_SET); // PC4, PC5 HIGH
	  else if(!HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_10))
	  	  		  HAL_GPIO_WritePin(GPIOC, 0x0040 | 0x0080, GPIO_PIN_SET); // PC6, PC7 HIGH
	  HAL_Delay(1000); // delay 1 sec
	  HAL_GPIO_WritePin(GPIOC, 0x00FF, GPIO_PIN_RESET); // PC0:7 LOW
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }