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 */
}