在ATmega4809 中,带有RTC时钟模块,它可以用来实时计数器(Real-Time Counter)和周期中断定时器(Periodic Interrupt Timer)。因为没有日历功能,所以没有实时时钟功能,而只是一个计数器。
使用RTC时,可以选择内部RC振荡器、外部时钟、外部32K作为时钟源。可以配置时钟分频获得长延时,可以设置RTC溢出中断和比较中断。
下面以溢出中断为例,介绍RTC的基本使用方法。
首先在MCC中添加RTC模块
然后先配置Pin,设置PF5为输出,方便指示RTC运行状态
然后配置RTC,选择时钟为外部32K 振荡器,时钟分频设置为1,周期(Period)设置为1s,并允许Overflow中断
在中断管理中,允许全局中断
在系统模块中,将XOSC32设置为ENABLE(这一点非常重要,否则外部32K时钟将不工作)
产生MCC的代码后,在main.c中添加下面代码:
#include "mcc_generated_files/mcc.h"
void RTC_OVI()
{
PORTF_toggle_pin_level(5);
}
/*
Main application
*/
int main(void)
{
/* Initializes MCU, drivers and middleware */
SYSTEM_Initialize();
RTC_SetOVFIsrCallback(RTC_OVI);
/* Replace with your application code */
while (1){
}
}
编译并下载后,可以看到LED以1Hz的频率闪烁,代表RTC中断正常运行。
此内容由EEWORLD论坛网友dcexpert原创,如需转载或用于商业用途需征得作者同意并注明出处