Holtek사 MCU중 HT32F52357와 HT32F52367은 기능은 같은데 Flash와 SRAM 용량 차이가 있음. LED를 켜보자.
Keil 프로그램에서 왼쪽에 Project 창에보면 HT32 폴더 밑에 User 폴더에 Main.c 파일이 있다.
더블 클릭하여 파일을 열고 int main(void) 부분에 보면 GPIO_Configuration(); 부분이 있는데 이부분을 더블 클릭하고 난후에 F12 키를 누르면 해당 명령문이 있는 곳으로 이동할수 있다.
{ /* Enable peripheral clock */
CKCU_PeripClockConfig_TypeDef CKCUClock = {{ 0 }};
CKCUClock.Bit.AFIO = 1; //AFIO(Alternate Function Input/Output Control Unit) Clock을 켜줘야 GPIO가 정상 동작함.
CKCUClock.Bit.PB = 1; //Port B에 Clock을 공급 하라는 명령
CKCU_PeripClockConfig(CKCUClock, ENABLE); //AHB, APB Clock을 공급 하라는 명령
}
이부분은 PB(Port B)에 클럭을 인가 하는 부분이다.
우리는 PE3과 PA6을 제어 하여야 하기때문에 수정이 필요함.
CKCUClock.Bit.PB = 1; 이줄을 삭제하고 PB(Port B는 현재 사용 안함)
이부분을
CKCUClock.Bit.PA = 1;
//Port A에 Clock을 공급 하라는 명령
CKCUClock.Bit.PE = 1;
//Port E에 Clock을 공급 하라는 명령
으로 수정을 하자.
{ /* Configure GPIO as output mode */
/* Configure AFIO mode as GPIO */
AFIO_GPxConfig(GPIO_PB, AFIO_PIN_1, AFIO_FUN_GPIO);
/* Configure GPIO pull resistor */
GPIO_PullResistorConfig(HT_GPIOB, GPIO_PIN_1, GPIO_PR_DOWN);
/* Default value RESET/SET */
GPIO_WriteOutBits(HT_GPIOB, GPIO_PIN_1, RESET);
/* Configure GPIO direction as output */
GPIO_DirectionConfig(HT_GPIOB, GPIO_PIN_1, GPIO_DIR_OUT);
}
이부분 에서도 몇가지 수정을 해야함.
현재 사진처럼 GPIO_PB 글씨를 더블클릭후 F12번 키를 누르면 GPIO_PB가 어디에 선언 되어 있는지 알수 있다.
F12를 눌러 선언된 곳으로 이동하니 GPIO_PA, GPIO_PE가 있는것을 확인 했음.
밑으로 조금 내려보면 GPIO_PIN_0 부터 15번까지 또는 GPIO_PIN_ALL 까지 있는것을 확인 할수 있다.
{ /* Configure GPIO as output mode */
/* Configure AFIO mode as GPIO */
AFIO_GPxConfig(GPIO_PB, AFIO_PIN_1, AFIO_FUN_GPIO);
/* Configure GPIO pull resistor */
GPIO_PullResistorConfig(HT_GPIOB, GPIO_PIN_1, GPIO_PR_DOWN);
/* Default value RESET/SET */
GPIO_WriteOutBits(HT_GPIOB, GPIO_PIN_1, RESET);
/* Configure GPIO direction as output */
GPIO_DirectionConfig(HT_GPIOB, GPIO_PIN_1, GPIO_DIR_OUT);
}
이부분을 복사하여 붙여넣기 하여 두개를 만들자. (방법은 많으나 설명에 편의를 위한 방법으로 함.)
{ /* Configure GPIO as output mode */
/* Configure AFIO mode as GPIO */
AFIO_GPxConfig(GPIO_PB, AFIO_PIN_1, AFIO_FUN_GPIO);
//이부분은 PB1(Port B에 1번핀)에 기능은 GPIO로 사용하겠다는 명령임.
/* Configure GPIO pull resistor */
GPIO_PullResistorConfig(HT_GPIOB, GPIO_PIN_1, GPIO_PR_DOWN);
//이부분은 PB1에 Pull Down 저항을 걸어 주겠다는 명령임.
/* Default value RESET/SET */
GPIO_WriteOutBits(HT_GPIOB, GPIO_PIN_1, RESET);
//이부분은 PB1에 출력을 Low(0)로 하겠다는 명령임.
/* Configure GPIO direction as output */
GPIO_DirectionConfig(HT_GPIOB, GPIO_PIN_1, GPIO_DIR_OUT);
//이부분은 PB1을 출력으로 하겠다는 명령임.
}
{ /* Configure GPIO as output mode */
/* Configure AFIO mode as GPIO */
AFIO_GPxConfig(GPIO_PB, AFIO_PIN_1, AFIO_FUN_GPIO);
/* Configure GPIO pull resistor */
GPIO_PullResistorConfig(HT_GPIOB, GPIO_PIN_1, GPIO_PR_DOWN);
/* Default value RESET/SET */
GPIO_WriteOutBits(HT_GPIOB, GPIO_PIN_1, RESET);
/* Configure GPIO direction as output */
GPIO_DirectionConfig(HT_GPIOB, GPIO_PIN_1, GPIO_DIR_OUT);
}
이렇게 복사 한후 위에것은 PB를 PA로 GPIOB를 GPIOA로 PIN_1을 PIN_6으로 변경하고
아래는 PB를 PE로 GPIOB를 GPIOE로 PIN_1을 PIN_3으로 변경 하자.
{ /* Configure GPIO as output mode */
/* Configure AFIO mode as GPIO */
AFIO_GPxConfig(GPIO_PA, AFIO_PIN_6, AFIO_FUN_GPIO);
//PA6을 GPIO기능으로 사용하겠다는 명령
/* Configure GPIO pull resistor */
GPIO_PullResistorConfig(HT_GPIOA, GPIO_PIN_6, GPIO_PR_DISABLE);
//PA6에 Pull-Up, Pull-Down 저항을 연결 하지 말라는 명령
/* Default value RESET/SET */
GPIO_WriteOutBits(HT_GPIOA, GPIO_PIN_6, SET);
//PA6에 HIGH(위에서 Pull-Up, Pull-Down을 연결하지 말라고 했으므로 Floating 상태) 출력을 하라는 명령
/* Configure GPIO direction as output */
GPIO_DirectionConfig(HT_GPIOA, GPIO_PIN_6, GPIO_DIR_OUT);
//PA6을 출력 포트로 사용하라는 명령
}
{ /* Configure GPIO as output mode */
/* Configure AFIO mode as GPIO */
AFIO_GPxConfig(GPIO_PE, AFIO_PIN_3, AFIO_FUN_GPIO);
/* Configure GPIO pull resistor */
GPIO_PullResistorConfig(HT_GPIOE, GPIO_PIN_3, GPIO_PR_DISABLE);
/* Default value RESET/SET */
GPIO_WriteOutBits(HT_GPIOE, GPIO_PIN_3, SET);
/* Configure GPIO direction as output */
GPIO_DirectionConfig(HT_GPIOE, GPIO_PIN_3, GPIO_DIR_OUT);
}
이렇게 변경 하면 초기 포트 셋팅은 완료 한것이다.
F7 키를 눌러 에러가 없는지 확인하자.
'프로그램 > Holtek 32Bit' 카테고리의 다른 글
GPIO Input Test And GPIO Output Test (0) | 2023.07.10 |
---|---|
Holtek EVM Board에 LED 켜기 3단계 Debug 진행 (1) | 2023.07.09 |
Holtek EVM Board에 LED 켜기 1단계 준비 작업 (0) | 2023.07.09 |
Holtek GPIO Output 예제 실행하기 (0) | 2023.07.09 |
Holtek 예제 다운 받기 (2) | 2023.07.08 |