728x90
반응형

Holtek사 MCU중 HT32F52357와 HT32F52367은 기능은 같은데 Flash와 SRAM 용량 차이가 있음. Holtek 사에 예제 프로그램을 이용하여 SYSTICK (System Tick Time)을 사용해 보자.

example -> SYSTICK -> Period_DownCounting 폴더에 들어가서 _CreateProject.bat를 실행하자.

자동으로 프로젝트가 만들어지면 프로젝트 실행.

회로도에는 LED가 3개 있지만 제어 가능한것은 2개 인것을 알고 있다.

PE3, PA6에 LED가 연결 되어 있고 하나는 Power 인가시 들어오는 LED로 알고 있다.

현재 프로그램상에서 3개로 표시 되어 있는데 확인을 위해 HT_LED1을 더블 클릭후 F12를 클릭 하여 선언된 곳으로 가보자.

선언된 곳으로 가니 HT_LED1 = 0, 이라고 되어 있는 부분이다.

조금 위에 보면 선언된 문장을 보고 다음과 같은지 확인 하고 다르다면 변경해주자.

#define LED1_GPIO_ID                (GPIO_PE)
#define LED1_GPIO_PIN               (GPIO_PIN_3)
#define LED1_AFIO_MODE              (AFIO_FUN_GPIO)

#define LED2_GPIO_ID                (GPIO_PA)
#define LED2_GPIO_PIN               (GPIO_PIN_6)
#define LED2_AFIO_MODE              (AFIO_FUN_GPIO)

#define LED3_GPIO_ID                (GPIO_PB)
#define LED3_GPIO_PIN               (GPIO_PIN_7)
#define LED3_AFIO_MODE              (AFIO_FUN_GPIO)

 

LED3_GPIO_ID는 Port B로 연결 되어 있으니 LED 켜지고 꺼지는것과는 관계가 없음을 생각할수 있다.

SYSTICK_SetReloadValue(SystemCoreClock / 8 / 1000); // (CK_AHB/8/1000) = 1ms on chip

이부분에서 8이 들어간 이유는 Datasheet를 보고 확인 할수 있다.

Datasheet를 보면 Systick Clock은 CK_AHB 클럭에 8로 나눈값으로 동작 한다는것을 알수 있다.

Delay(500); 이 실행 되는 문장 설명함.

void Delay(u32 nTime) 펑션에있는 DelayTime이 어디서 0이 되게 해주는지 나와 있는 부분임.

ht32f5xxxx_01_it.c 파일 밑에 보면 void SysTick_Handler(void) 펑션에 TimingDelay 펑션을 실행 해주는 부분이 있다.

SysTick_Handler펑션은 1msec마다 실행 하게 앞에서 설정 했다.

Ctrl + F5를 눌러 디버깅 모드에 들어간후 F5를 눌러서 실행을 하자.

 

 

 

Period_DownCounting.zip
4.85MB

LED가 500msec마다 깜빡이는것을 확인 할수 있다.

 

 

 

 

728x90
반응형

+ Recent posts