[活动专区] 【N32G430开发板试用】RTC电子时钟

[复制链接]
944|0
 楼主| jinglixixi 发表于 2022-7-17 23:19 | 显示全部楼层 |阅读模式
N32G430片内具有RTC计时器,通过其例程可经验其性能,其运行效果如图1所示。
1.jpg
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每秒发出一次中断来调用对日期和时间的显示输出,其内容如下:
  1. void EXTI9_5_IRQHandler(void)
  2. {
  3.     if (EXTI_Interrupt_Status_Get(EXTI_LINE7) != RESET)
  4.     {
  5.         /* Display the current Date on the Hyperterminal */
  6.         RTC_Date_Show();
  7.         RTC_Time_Show();
  8.         /* Clear the UP Button EXTI line pending bit */
  9.         EXTI_Interrupt_Status_Clear(EXTI_LINE7);
  10.     }
  11. }

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

实现图2和图3显示效果的主程序为:
  1. int main(void)
  2. {
  3. RTC_Date_And_Time_Default_Value();
  4. RTC_CLKSource_Config(RTC_CLK_LSE, RTC_CLK_FIRST_CONFIG);
  5. RTC_Calendar_Config(DISABLE);
  6.     EXTI_PA7_Configuration();
  7.     EXTI_Interrupt_Status_Clear(EXTI_LINE7);
  8.     RTC_Calibration_Output_Config(RTC_CALIB_OUTPUT_1HZ);
  9.     RTC_Output_Mode_Config(RTC_OUTPUT_PUSHPULL);
  10.     RTC_Calibration_Output_Enable();
  11.          LCD_Initialize();
  12.          Lcd_Init();
  13.          LCD_Clear(BLACK);
  14.          LCD_ShowString(20,10,"N32G430 TEST",RED);
  15.          LCD_ShowString(20,30,"OLED & RTC  ",YELLOW);
  16.          LCD_ShowString(20,50,"  :  :",YELLOW);
  17.          SysTick_Delay_Ms(1000);
  18.     while (1);
  19. }

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

此外,如何使该电子时钟加以校时功能,可使用板载的按键来配置一个时间设置程序来替代函数RTC_Date_And_Time_Default_Value()的处理。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

521

主题

2949

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部