blob: 7b412055712815aa93089a34db7a5c3a3c4aeeeb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
/**
*********************************************************************************************************
* Copyright(c) 2018, Realtek Semiconductor Corporation. All rights reserved.
**********************************************************************************************************
* @file main.c
* @brief This file provides demo code to realize RTC tick function.
RTC is a 32-bit counter.
* @details
* @author yuan
* @date 2018-05-25
* @version v1.0
*********************************************************************************************************
*/
/* Defines ------------------------------------------------------------------*/
/** Prescaler value.
* 12 bits prescaler for COUNTER frequency (32768/(PRESCALER+1)).
* If use internal 32KHz, (32000/(PRESCALER+1)).
* Must be written when RTC 32-bit counter is stopped.
*/
#define RTC_PRESCALER_VALUE (3200-1) //f = 10Hz
/* Includes ------------------------------------------------------------------*/
#include <stdlib.h>
#include "rtl876x_nvic.h"
#include "rtl876x_rcc.h"
#include "rtl876x_rtc.h"
#include "trace.h"
/**
* @brief Initialize rtc peripheral.
* @param No parameter.
* @return void
*/
void driver_rtc_init(void)
{
RTC_DeInit();
RTC_SetPrescaler(RTC_PRESCALER_VALUE);
RTC_INTConfig(RTC_INT_TICK, ENABLE);
/* Config RTC interrupt */
NVIC_InitTypeDef NVIC_InitStruct;
NVIC_InitStruct.NVIC_IRQChannel = RTC_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPriority = 2;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStruct);
RTC_NvCmd(ENABLE);
/* Start RTC */
RTC_ResetCounter();
RTC_Cmd(ENABLE);
}
/**
* @brief Demo code of operation about RTC.
* @param No parameter.
* @return void
*/
void rtc_demo(void)
{
/* Initialize RTC peripheral */
driver_rtc_init();
//Add application code here
}
/**
* @brief Entry of app code
* @return int (To avoid compile warning)
*/
int main(void)
{
extern uint32_t random_seed_value;
srand(random_seed_value);
__enable_irq();
rtc_demo();
while (1)
{
__nop();
__nop();
__nop();
__nop();
__nop();
__nop();
}
}
void RTC_Handler(void)
{
/* RTC tick interrupt handle */
if (RTC_GetINTStatus(RTC_INT_TICK) == SET)
{
/* Notes: DBG_DIRECT function is only used for debugging demonstrations, not for application projects.*/
DBG_DIRECT("[main]RTC_Handler: RTC_INT_TICK");
// Add application code here
RTC_ClearTickINT();
}
}
/******************* (C) COPYRIGHT 2018 Realtek Semiconductor Corporation *****END OF FILE****/
|