本帖最后由 ddllxxrr 于 2015-4-7 20:57 编辑
RTC即实时时钟,通过它完全可实现电子计时功能。
首先在Atmel Studio6.2的开发环境下插入开发板。即有一个开发板的快捷界面弹出这时可直接打开例程
RTC的例程是靠RTC的自身的中断来刷新显示,显示就是往串口输出在串口显示。
可以按照菜单来设置时间,日期,时间报警,日期报警
以下代码是用来设置RCT时钟中断:
/* Configure RTC interrupts */
NVIC_DisableIRQ(RTC_IRQn);
NVIC_ClearPendingIRQ(RTC_IRQn);
NVIC_SetPriority(RTC_IRQn, 0);
NVIC_EnableIRQ(RTC_IRQn);
rtc_enable_interrupt(RTC, RTC_IER_SECEN | RTC_IER_ALREN);
以下是RTC中断程序:
void RTC_Handler(void)
{
uint32_t ul_status = rtc_get_status(RTC);
/* Second increment interrupt */
if ((ul_status & RTC_SR_SEC) == RTC_SR_SEC) {
/* Disable RTC interrupt */
rtc_disable_interrupt(RTC, RTC_IDR_SECDIS);
refresh_display();
rtc_clear_status(RTC, RTC_SCCR_SECCLR);
rtc_enable_interrupt(RTC, RTC_IER_SECEN);
} else {
/* Time or date alarm */
if ((ul_status & RTC_SR_ALARM) == RTC_SR_ALARM) {
/* Disable RTC interrupt */
rtc_disable_interrupt(RTC, RTC_IDR_ALRDIS);
gs_ul_alarm_triggered = 1;
refresh_display();
/* Show additional menu item for clear notification */
gs_ul_menu_shown = 0;
rtc_clear_status(RTC, RTC_SCCR_ALRCLR);
rtc_enable_interrupt(RTC, RTC_IER_ALREN);
}
}
}
主函数在初始化结束后就调一个菜单显示按多少键可以设时间,设日期,设日期报警,设时间报警。
以下是运行的截图:
|