请选择 进入手机版 | 继续访问电脑版
查看: 58|回复: 0

[原创] LPC51U68开发板测评__RTC时钟

[复制链接]
  • TA的每日心情
    奋斗
    2020-1-22 10:20
  • 签到天数: 539 天

    [LV.9]以坛为家II

    156

    主题

    2240

    帖子

    34

    金豆

    金牌会员

    Rank: 6Rank: 6

    积分
    5227
    最后登录
    2020-1-22
    发表于 2019-12-6 21:44:34 | 显示全部楼层 |阅读模式
    本帖最后由 jinglixixi 于 2019-12-6 21:50 编辑

    LPC51U68具有RTC计时功能,与前面介绍的OLED屏相结合,就能构成一个RTC电子时钟,其显示效果如图所示。
    t.png
    RTC计时效果

    显示该效果的主程序如下:
    1. #include "fsl_debug_console.h"
    2. #include "board.h"
    3. #include "fsl_rtc.h"

    4. #include "pin_mux.h"
    5. #include <stdbool.h>

    6. #include "oledfont.h"

    7. int main(void)
    8. {
    9.     uint32_t sec;
    10.     uint32_t currSeconds;
    11.     uint8_t index;
    12.     rtc_datetime_t date;

    13.     /* Board pin, clock, debug console init */
    14.     /* attach 12 MHz clock to FLEXCOMM0 (debug console) */
    15.     CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);

    16.     /* Enable the RTC 32K Oscillator */
    17.     SYSCON->RTCOSCCTRL |= SYSCON_RTCOSCCTRL_EN_MASK;

    18.     BOARD_InitPins();
    19.     BOARD_BootClockFROHF48M();
    20.     BOARD_InitDebugConsole();

    21.     /* Init RTC */
    22.     RTC_Init(RTC);

    23.     /* Set a start date time and start RT */
    24.     date.year   = 2019U;
    25.     date.month  = 12U;
    26.     date.day    = 4U;
    27.     date.hour   = 8U;
    28.     date.minute = 10;
    29.     date.second = 0;

    30.     /* RTC time counter has to be stopped before setting the date & time in the TSR register */
    31.     RTC_StopTimer(RTC);

    32.     /* Set RTC time to default */
    33.     RTC_SetDatetime(RTC, &date);

    34.     /* Enable RTC alarm interrupt */
    35.     RTC_EnableInterrupts(RTC, kRTC_AlarmInterruptEnable);

    36.     /* Enable at the NVIC */
    37.     EnableIRQ(RTC_IRQn);

    38.     /* Start the RTC time counter */
    39.     RTC_StartTimer(RTC);
    40.                
    41.     OLED_Init();
    42.     OLED_Clear();
    43.     OLED_ShowString(0,0,"LPC51U68 TEST",16);
    44.     OLED_ShowString(0,2,"OLED Display",16);
    45.     OLED_ShowString(0,4,"jinglixixi",16);
    46.     OLED_ShowString(0,6,"2019.12.3",16);
    47.     delay_ms(800);
    48.     OLED_Clear();
    49.     busyWait = true;
    50.     index    = 0;
    51.     sec      = 0;
    52.     while(1)
    53.     {
    54.                  /* Get date time */
    55.                  RTC_GetDatetime(RTC, &date);
    56.                  OLED_ShowString(0,0,"Current datetime",16);
    57.                  OLED_ShowNum(0,2,date.year,4,16);
    58.                  OLED_ShowChar(32,2,'-',16);
    59.                  OLED_ShowNum(40,2,date.month,2,16);
    60.                  OLED_ShowChar(56,2,'-',16);
    61.                  OLED_ShowNum(64,2,date.day,2,16);
    62.                
    63.                  OLED_ShowNum(16,4,date.hour,2,16);
    64.                  OLED_ShowChar(32,4,':',16);
    65.                  OLED_ShowNum(40,4,date.minute,2,16);
    66.                  OLED_ShowChar(56,4,':',16);
    67.                  OLED_ShowNum(64,4,date.second,2,16);        
    68.                  delay_ms(500);        
    69.         }
    70. }
    复制代码


    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    小黑屋|手机版|Archiver|恩智浦技术社区

    GMT+8, 2020-2-19 02:22 , Processed in 0.102557 second(s), 16 queries , MemCache On.

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表