打印
[Atmel]

跑一下SAM4N例程(十八):RTC

[复制链接]
611|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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);
                }
        }
}


主函数在初始化结束后就调一个菜单显示按多少键可以设时间,设日期,设日期报警,设时间报警。

以下是运行的截图:




相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2398

主题

6953

帖子

67

粉丝