Embeded/ARM Cortex-M4

GPIO(General Purpose Input Output) IN, OUT 소스

gharlic 2015. 7. 8. 03:48

 GPIO(General Purpose Input Output)은 쉽게 말해 다용도 입출력 기능으로

GPIO는 입출력 뿐만 아니라 후에 다루게될 ADC, DAC를 포함해서 Timer까지 등까지 대부분의 기능을 겸한다.

GPIO를 통해 외부에서 swt등으로 입력하는 신호를 입력받을 수 도 있고

MCU내부에서 처리한 값을 GPIO를 통해 LED등의 소자로 출력할 수 도 있다.

 

다음은 OUT모드로 GPIO를 초기화시키는 소스이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void Init_GPIO() {
 
        GPIO_InitTypeDef GPIO;
 
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);
 
        GPIO.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4;
 
        GPIO.GPIO_Mode = GPIO_Mode_OUT;
 
        GPIO.GPIO_PuPd = GPIO_PuPd_NOPULL;
 
        GPIO.GPIO_OType = GPIO_OType_PP;
 
        GPIO.GPIO_Speed = GPIO_Speed_100MHz;
 
        GPIO_Init(GPIOE, &GPIO);
 
}
 
cs

GPIO E포트의 1,2,3,4번 핀을 OUT모드로 설정한다.

 

1
2
3
4
GPIO_SetBits(GPIOE,GPIO_Pin_01);
 
GPIO_ResetBits(GPIOE,GPIO_Pin_01);
 
cs

다음과 같은 소스로 E포트 1번핀을 Set/Reset시킬 수 있다.

 

 

다음은 IN모드로 GPIO를 초기화시키는 소스이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void Init_GPIO() {
 
        GPIO_InitTypeDef GPIO;
 
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);
 
        GPIO.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4;
 
        GPIO.GPIO_Mode = GPIO_Mode_IN;
 
        GPIO.GPIO_PuPd = GPIO_PuPd_NOPULL;
 
        GPIO.GPIO_OType = GPIO_OType_PP;
 
        GPIO.GPIO_Speed = GPIO_Speed_100MHz;
 
        GPIO_Init(GPIOE, &GPIO);
 
}
 
cs

GPIO E포트의 1,2,3,4번 핀을 IN모드로 설정한다.

 

1
int a = GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_1);
cs

다음과 같은 소스로 변수 a에 E포트 1번으로 입력된 값을 읽어들일 수 있다.

이 때 a의 값을 활용할 때에는 Low는 0, High는 1이 정확하게 나오지 않기 때문에

값을 비교할 땐 if ( a == 0 )이 참이면 Low

if ( a != 0 )이 참이면 High신호가 입력된 것으로 활용 하여야한다.

반응형