nuvoton - M451 Real Time Clock
RTC 的特性
- 1 組 RTC counter
- 支援 Alarm 和 time tick 中斷
- 支援 Wake-up
- 32 KHz 頻率校正
- 80 Bytes RTC register 來儲存資料
RTC 的 Block Diagram
RTC Coding Flow
- Enable Clock for RTC module
CLK_EnableModuleClock(RTC_MODULE);
S_RTC_TIME_DATA_T sWriteRTC;
sWriteRTC.u32Year = 2020;
sWriteRTC.u32Month = 1;
sWriteRTC.u32Day = 21;
sWriteRTC.u32DayOfWeek = RTC_TUESDAY;
sWriteRTC.u32Hour = 15;
sWriteRTC.u32Minute = 30;
sWriteRTC.u32Second = 30;
sWriteRTC.u32TimeScale = RTC_CLOCK_24;
RTC_Open(&sWriteRTC);
NVIC_EnableIRQ(RTC_IRQn);
RTC_EnableInt(RTC_INTEN_TICKIEN_Msk);
RTC_SetTickPeriod(RTC_TICK_1_4_SEC);
void RTC_IRQHandler(void)
{
/* To check if RTC tick interrupt occurred */
if(RTC_GET_TICK_INT_FLAG() == 1)
{
/* Clear RTC tick interrupt flag */
RTC_CLEAR_TICK_INT_FLAG();
}
}
範例程式 :
在 FreeRTOS 中,加入一個 Task 來完成 RTC 中斷比較耗時的工作,平常 Task 位於 Suspend 的狀態,在 1/4 秒會產生中斷,喚醒 Task 做時間的計時,並每秒顯示在 UART console.
範例程式位於 Github 的 nuvotoon-M451-Sample 的 FreeRTOS-RTC-Sample branch
Reference document :
- nuvoton NuMicro-M451-Series-Training-Material
- nuvoton TRM_M451_Series_EN_Rev2.08
留言
張貼留言