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신호가 입력된 것으로 활용 하여야한다.
반응형
'Embeded > ARM Cortex-M4' 카테고리의 다른 글
DAC(Digital-Analog Converter) (0) | 2015.07.10 |
---|---|
ADC(Analog-Digital Converter) (0) | 2015.07.10 |
GPIO/Timer를 활용한 FND제어 소스 (0) | 2015.07.08 |
Timer / Timer_Handler 소스 (0) | 2015.07.08 |
라이브러리(library)코딩과 레지스터(Register)코딩 (0) | 2015.07.08 |