목차
[WAT-STM32-2.8] 22번 예제 Bit Banding 으로 코드 간소화
WAT-STM32-2.8 예제 중 22번째로 Bit Banding 방식으로 21번의 스위치 입력값을 좀더 간단하게 읽어 올 수 있습니다.
Bit Banding 의 자세한 내용은 아래를 참조하세요 (https://docs.whiteat.com/?p=4006 )
앞의 예제에서는 아래와 같이 스위치 입력을 처리하였습니다.
int keynum = WAT_STM32_KEYScan(); if(keynum != 0) { } else { }
이 번 예제에서는 다음과 같이 간단히 입력을 처리 하겠습니다.
if(KEY2IBB != 0) { } else { }
동작은 앞의 예제와 동일합니다.
KEY1이 눌리면 LED1이
KEY2가 눌리면 LED3이 토글 됩니다.
주요 코드
main.c 파일입니다.
// WAT_STM3228_22 Bit Banding 으로 키 입력 받기 // KEY1 눌리면 LED1 toggle // KEY2 눌리면 LED3 toggle // 출처: https://docs.whiteat.com/?p=4304 // #include "WAT_STM32F103RB_LIB.h" int main(void) { /* 모든 LED 초기화 */ WAT_STM32_LEDInit(LED1); WAT_STM32_LEDInit(LED2); WAT_STM32_LEDInit(LED3); delay(2000000); LED1OBB = 1; //PA.02 OFF LED2OBB = 1; //PB.02 OFF LED3OBB = 1; //PA.03 OFF delay(2000000); LED1OBB = 0; //PA.02 ON LED2OBB = 0; //PB.02 ON LED3OBB = 0; //PA.03 ON delay(2000000); /* BitBand 으로 LED OFF */ PASetBit(2); //PA.02 OFF delay(2000000); PBSetBit(2); //PB.02 OFF delay(2000000); PASetBit(3); //PA.03 OFF delay(2000000); /* KEY 초기화 */ WAT_STM32_KEYInit(KEY1, BUTTON_MODE_GPIO); WAT_STM32_KEYInit(KEY2, BUTTON_MODE_GPIO); while (1) { /* KEY1 눌리면 */ if(KEY1IBB == 0) { delay(150000); if(KEY1IBB == 0) { /* LED1 toggle */ LED1OBB_TOGGLE; // LED1OBB = !LED1OBB; while(KEY1IBB == 0); delay(150000); } } /* KEY2 눌리면 */ if(KEY2IBB == 0) { delay(150000); if(KEY2IBB == 0) { /* LED3 toggle */ LED3OBB_TOGGLE; // LED3OBB = !LED3OBB; while(KEY2IBB == 0); delay(150000); } } } }
결과화면
KEY1 이 눌리면 LED1이 토글,
KEY2 가 눌리면 LED3이 토글됩니다.
WAT-STM32-2.8보드 전체 예제
제품 구매
WAT-STM32-2.8 [STM32F103RB Board + 2.8인치 TFT LCD 터치 세트] 는 https://kit128.com/goods/view?no=221 에서 구매하실 수 있습니다.