문제 설명
// main.c #1
void Main(void)
{
Sys_Init();
Uart_Printf("KEY Input Test #1\n");
// KEY[1:0], GPB[7:6]을 GPIO 입력으로 선언
for(;;)
{
// KEY0이 눌렸으면 LED0를 ON, 안 눌렸으면 OFF
// KEY1이 눌렸으면 LED1를 ON, 안 눌렸으면 OFF
}
}
정답 코드
/* Key 인식 #1 */
#if 1
void Main(void)
{
int value = 0;
Sys_Init();
Uart_Printf("KEY Input Test #1\n");
Macro_Write_Block(GPIOB->CRL, 0xff, 0x44, 24);
for(;;)
{
if(Macro_Check_Bit_Clear(GPIOB->IDR, 6)) Macro_Set_Bit(value, 0);
else Macro_Clear_Bit(value, 0);
if(Macro_Check_Bit_Clear(GPIOB->IDR, 7)) Macro_Set_Bit(value, 1);
else Macro_Clear_Bit(value, 1);
LED_Display(value);
}
}
#endif
/* Extract Macro를 이용한 Key 인식 #2 */
#if 0
void Main(void)
{
Sys_Init();
Uart_Printf("KEY Input Test #2\n");
Macro_Write_Block(GPIOB->CRL, 0xff, 0x44, 24);
for(;;)
{
Macro_Write_Block(GPIOB->ODR,0x3,Macro_Extract_Area(GPIOB->IDR,0x3,6),8);
}
}
#endif
메모
printf 내부의 \n 습관화 필요