목차
[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 에서 구매하실 수 있습니다.

