目录
BF7006的RTC相当于一个特殊的32位定时器。该RTC支持睡眠模式唤醒和触发ADC采样。
1. 初始化
初始化前先关闭RTC。
RTC_SC = 0; //Disable RTC
1.1 时钟源选择
三种时钟源可由软件选择:1K内部时钟、外部晶振时钟32分频和32K内部时钟。1K内部时钟是默认时钟,但是选择这个时钟后需要2ms等待时间才能正常工作。
if(clk == 32 * 1000)
{
RTC_SC |= (1 << 6); //Select 32KHz
}
else if(clk == 1 * 1000)
{
}
else
{
RTC_SC |= (1 << 5); //Select ExOSC / 32
}
建议使用32KHz作为时钟源。
1.2 定时时间
RTC默认选择1秒的定时时间即可,所以RTC_MOD等于时钟源频率。
RTC_MOD = clk;
注意RTC_MOD的值必须大于3。
1.3 使能中断
寄存器RTC_SC的位4使能中断。
RTC_SC |= (1 << 4);
NVIC_EnableIRQ(RTC_IRQn);
1.4 启动RTC
寄存器RTC_SC的位9控制RTC的启停。
RTC_SC |= (uint16_t)1 << 9;
2. RTC中断函数
中断函数是RTC_IRQHandler。通过RTC_SC寄存器的位7设置为1清除RTC中断标志。