실습 과제명 : 아두이노 칩셋을 이용한 스위치로 LED 끄고 켜기
수행기간 : 2022. 05. 24
참가인원 : 1명
담당업무 : 조합 논리회로, 레지스터 이용
수행목표 :
PD0 - PD7 아웃풋으로 놓고
PG0-PG3 인풋으로 저장
1번 PG0 을 눌렀을때 LED 조명 끄기 후 else 문으로 GPIOD를 ODR 해줘서 0x8,에 있는값 외에는 모두 0으로 만들고 1000 에서 왼쪽으로 두칸 이동 된점 LED 점등
0000 1000 ->0100 0000
회로도를 참조해야 한다.
아두이노 칩셋 LED 스위치 회로도
int A;
while (1)
{
GPIO_PinState Input_A = HAL_GPIO_ReadPin(GPIOG, GPIO_PIN_0);
GPIO_PinState Input_B = HAL_GPIO_ReadPin(GPIOG, GPIO_PIN_1);
GPIO_PinState Input_C = HAL_GPIO_ReadPin(GPIOG, GPIO_PIN_2);
GPIO_PinState Input_D = HAL_GPIO_ReadPin(GPIOG, GPIO_PIN_3);
if(HAL_GPIO_ReadPin(GPIOG, GPIO_PIN_0 == 1))
{
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_0, 1);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_1, 1);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, 1);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_3, 1);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_4, 1);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_5, 1);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_6, 1);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_7, 1);
}
else {
// ((GPIOD -> ODR) <<2) = 0x8;
GPIOD -> ODR = 0x8<<1;
}