[WAT-STM32-2.8] 28번 예제 RTC(Real Time Clock) 실험

[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로 현재 시간을 출력합니다.
STM32_LED_ 110

WAT-STM32-2.8보드  전체 예제

[WAT-STM32-2.8] STM32F103RB Board + 2.8인치 TFT LCD 터치 세트

제품 구매

WAT-STM32-2.8 [STM32F103RB Board + 2.8인치 TFT LCD 터치 세트] 는 https://kit128.com/goods/view?no=221 에서 구매하실 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다