打印
[活动专区]

【N32G430开发板试用】RTC电子时钟

[复制链接]
538|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
N32G430片内具有RTC计时器,通过其例程可经验其性能,其运行效果如图1所示。
1  RTC测试
通过对程序的分析可知,其主要的处理过程为;
1)使用以默认数据来设置RTC输出值,其语句为:RTC_Date_And_Time_Default_Value();
2)选取RTC时钟源,其语句为:RTC_CLKSource_Config(RTC_CLK_LSE,RTC_CLK_FIRST_CONFIG);
3)禁止RTC日历调节,其语句为:RTC_Calendar_Config(DISABLE);
4)配置PA7引脚中断,其语句为:EXTI_PA7_Configuration();
5)清除PA7中断状态,其语句为:EXTI_Interrupt_Status_Clear(EXTI_LINE7);
6)配置RTC校准输出模式,其语句为:RTC_Calibration_Output_Config(RTC_CALIB_OUTPUT_1HZ);
7)配置RTC输出模式,其语句为:RTC_Output_Mode_Config(RTC_OUTPUT_PUSHPULL);
那么RTC的时间值是如何输出的呢?
原来它是通过PA7每秒发出一次中断来调用对日期和时间的显示输出,其内容如下:
void EXTI9_5_IRQHandler(void)
{
    if (EXTI_Interrupt_Status_Get(EXTI_LINE7) != RESET)
    {
        /* Display the current Date on the Hyperterminal */
        RTC_Date_Show();
        RTC_Time_Show();
        /* Clear the UP Button EXTI line pending bit */
        EXTI_Interrupt_Status_Clear(EXTI_LINE7);
    }
}

这样,在配有OLED屏的基础上,只需修改相应的显示函数即可实现RTC的显示。
修改后,实现时间值显示的函数为;
void RTC_Time_Show(void)
{
    RTC_Time_Get(RTC_FORMAT_BIN, &RTC_TimeStructure);
    LCD_ShowNum(20,50, RTC_TimeStructure.Hours,2,YELLOW);
         LCD_ShowNum(44,50, RTC_TimeStructure.Minutes,2,YELLOW);
         LCD_ShowNum(68,50, RTC_TimeStructure.Seconds,2,YELLOW);
    (void)RTC->DATE;
}

实现图2和图3显示效果的主程序为:
int main(void)
{
RTC_Date_And_Time_Default_Value();
RTC_CLKSource_Config(RTC_CLK_LSE, RTC_CLK_FIRST_CONFIG);
RTC_Calendar_Config(DISABLE);
    EXTI_PA7_Configuration();
    EXTI_Interrupt_Status_Clear(EXTI_LINE7);
    RTC_Calibration_Output_Config(RTC_CALIB_OUTPUT_1HZ);
    RTC_Output_Mode_Config(RTC_OUTPUT_PUSHPULL);
    RTC_Calibration_Output_Enable();
         LCD_Initialize();
         Lcd_Init();
         LCD_Clear(BLACK);
         LCD_ShowString(20,10,"N32G430 TEST",RED);
         LCD_ShowString(20,30,"OLED & RTC  ",YELLOW);
         LCD_ShowString(20,50,"  :  :",YELLOW);
         SysTick_Delay_Ms(1000);
    while (1);
}

经程序的编译下载,即可达到如下的显示效果。
2 计时效果
3计时效果

此外,如何使该电子时钟加以校时功能,可使用板载的按键来配置一个时间设置程序来替代函数RTC_Date_And_Time_Default_Value()的处理。

使用特权

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

本版积分规则

451

主题

2747

帖子

38

粉丝