jinglixixi 发表于 2022-7-17 23:19

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

在N32G430片内具有RTC计时器,通过其例程可经验其性能,其运行效果如图1所示。图1RTC测试 通过对程序的分析可知,其主要的处理过程为;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()的处理。
页: [1]
查看完整版本: 【N32G430开发板试用】RTC电子时钟