목차
[WAT-STM32-2.8] 28번 예제 RTC(Real Time Clock) 실험
WAT-STM32-2.8 예제 중 28번으로 RTC 를 사용하여 시계를 만드는 예제입니다.
RTC 초기화
RTC_NVIC_Configuration();
RTC 인터럽트 루틴
void RTC_IRQHandler(void) { if (RTC_GetITStatus(RTC_IT_SEC) != RESET) { /* Clear the RTC Second interrupt */ RTC_ClearITPendingBit(RTC_IT_SEC); /* Toggle LED1 */ WAT_STM32_LEDToggle(LED1); /* Enable time update */ TimeDisplay = 1; /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); /* Reset RTC Counter when Time is 23:59:59 */ if (RTC_GetCounter() == 0x00015180) { RTC_SetCounter(0x0); /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); } } }
현재 시간 출력
void Time_Display(uint32_t TimeVar) { to_tm(TimeVar, &systmtime); printf("\n %d %d %d (%s) %0.2d:%0.2d:%0.2d", systmtime.tm_year, systmtime.tm_mon, systmtime.tm_mday, WEEK_STR[systmtime.tm_wday], systmtime.tm_hour, systmtime.tm_min, systmtime.tm_sec); }
주요 코드
main.c 파일 일부입니다.
// WAT_STM3228_27 Analog to Digital 실험 // 출처: https://docs.whiteat.com/?p=4343 // /* Infinite loop */ while (1) { if (TimeDisplay == 1) /* If 1s has paased */ { /* Display current time */ Time_Display(RTC_GetCounter()); TimeDisplay = 0; /* LED1 TOGGLE */ WAT_STM32_LEDToggle(LED2); } }
결과화면
1초 마다 LED1, LED2 가 ON/OFF 되면서 UART로 현재 시간을 출력합니다.
WAT-STM32-2.8보드 전체 예제
제품 구매
WAT-STM32-2.8 [STM32F103RB Board + 2.8인치 TFT LCD 터치 세트] 는 https://kit128.com/goods/view?no=221 에서 구매하실 수 있습니다.