본문 바로가기

02 쉬운 stm32 버튼 제어

반응형

강좌 보러 가기

잡동사니 세상 :: stm32 레지스터 직접 접근 (소개) (tistory.com)

 

stm32 레지스터 직접 접근 (소개)

저번에 올린 3개짜리 짧은 포스트는 중단하고, 이번에 산 책 내용을 기반으로 stm32f103zet6를 제어해보려고 합니다. 라이브러리를 사용하는 방식보단, 레지스터에 직접적으로 접근하여 보다 Microcon

pkr7098.tistory.com

 

 

 

버튼

 

Pull up버튼을 기반으로 GPIOG 3번이며

LED는 GPIOG 2번이다.

2018/10/27 - [아두이노 스터디] - 02 버튼(풀업, 풀다운)

 

더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "stm32f10x.h"
void init_port() {
 GPIO_InitTypeDef LED;
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE);
 LED.GPIO_Pin = 0x0004;
 LED.GPIO_Mode = GPIO_Mode_Out_PP;
 LED.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOG, &LED);
}
 
 
void init_key() {
 GPIO_InitTypeDef KEY;
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE);
 KEY.GPIO_Pin = 0x0008;
 KEY.GPIO_Mode = GPIO_Mode_IN_FLOATING; //INPUT모드로
 KEY.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOG, &KEY);
}
 
 
int main(void) {
 init_port();
 init_key(); //버튼 관련 초기화 함수
 while(1) {
  if(GPIO_ReadInputDataBit(GPIOG, GPIO_Pin_3)) {//버튼 안 눌렸을 때
   GPIO_ResetBits(GPIOG, GPIO_Pin_2); //LED 끈다.
  }
  else { //버튼 눌렀을 때
   GPIO_SetBits(GPIOG, GPIO_Pin_2);  //LED 켠다.
  } 
 }
};
 
 
 
 
cs

LED는 GPIOG 2번에 연결

버튼은 GPIOG 3번에 PULL UP으로 연결

 

따라서 버튼이 눌렸을 때 LED가 켜진다.

 

반응형