158|0

106

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【MCXN947开发板测评】RTC电子时钟 [复制链接]

MCXN947配有RTC计算器,将它与LCD显示屏配合可方便地实现电子时钟功能。

在配置LCD显示屏之前,RTC程序所实现的功能是设置系统时间,如何开始计时,当得到预置的闹钟时间时停止计时,在打开串口的情况下,其运行结构如图1所示。

 

图1 测试效果

 

在为LCD屏配置数据显示函数后,即可完成时钟显示的需要,该数据显示函数是:

void LCD_ShowNum(uint16_t x,uint16_t y,uint16_t num,uint8_t len,uint16_t color)
{
    uint8_t t,temp;
    uint8_t show=0;
    for(t=0;t<len;t++)
    {
        temp=(num/mypow(10,len-t-1))%10;
        if(enshow==0&&t<(len-1))
        {
            if(temp==0)
            {
                LCD_ShowChar(x+8*t,y,' ',0,color);
                continue;
            }
            else 
            show=1;
        }
        LCD_ShowChar(x+8*t,y,temp+48,0,color);
    }
}

 

实现电子时钟计时效果的主程序是:

int main(void)
{
    irtc_config_t irtcConfig;
	
	  gpio_pin_config_t led_config = {
        kGPIO_DigitalOutput,
        0,
    };
#if APP_IRTC_IS_SLAVE
    irtc_datetime_t alarmDatetime, datetimeGet;
#else
    irtc_datetime_t datetime, alarmDatetime, datetimeGet;
    datetime.year    = 2024;
    datetime.month   = 12;
    datetime.day     = 15;
    datetime.weekDay = 7;
    datetime.hour    = 18;
    datetime.minute  = 55;
    datetime.second  = 30;
#endif
    CLOCK_SetClkDiv(kCLOCK_DivFlexcom4Clk, 1u);
    CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
    CLOCK_EnableClock(kCLOCK_Gpio0); 
    BOARD_InitPins();
    BOARD_InitBootClocks();
    BOARD_InitDebugConsole();
	GPIO_PinInit(GPIO0, 25U, &led_config);
	GPIO_PinInit(GPIO0, 26U, &led_config);
	GPIO_PinInit(GPIO0, 24U, &led_config);
	GPIO_PinInit(GPIO0, 27U, &led_config);
	GPIO_PinInit(GPIO0, 10U, &led_config);
	GPIO_PinInit(GPIO0, 28U, &led_config);
	Lcd_Init();
    LCD_Clear(RED);
    LCD_ShowString(20,10,"MCXN947 CLOCK",YELLOW);  
	LCD_ShowString(20,40,"  :  :",YELLOW);
	CLOCK_SetupClk16KClocking(kCLOCK_Clk16KToVbat | kCLOCK_Clk16KToMain);
    IRTC_GetDefaultConfig(&irtcConfig);
    if (IRTC_Init(RTC, &irtcConfig) == kStatus_Fail)
    {
        return 1;
    }
#if !defined(FSL_FEATURE_RTC_HAS_NO_GP_DATA_REG) || (!FSL_FEATURE_RTC_HAS_NO_GP_DATA_REG)
    IRTC_Enable32kClkDuringRegisterWrite(RTC, true);
#endif
#if !defined(FSL_FEATURE_RTC_HAS_NO_TAMPER_FEATURE) || (!FSL_FEATURE_RTC_HAS_NO_TAMPER_FEATURE)
    IRTC_ClearTamperStatusFlag(RTC);
#endif
#if !APP_IRTC_IS_SLAVE
    IRTC_SetDatetime(RTC, &datetime);
#endif
    IRTC_GetDatetime(RTC, &datetimeGet);
	LCD_ShowNum(20,40,datetimeGet.hour,2,YELLOW);
	LCD_ShowNum(44,40,datetimeGet.minute,2,YELLOW);
	LCD_ShowNum(68,40,datetimeGet.second,2,YELLOW);
	while (1)
    {
			IRTC_GetDatetime(RTC, &datetimeGet);
		    LCD_ShowNum(20,40,datetimeGet.hour,2,YELLOW);
		    LCD_ShowNum(44,40,datetimeGet.minute,2,YELLOW);
		    LCD_ShowNum(68,40,datetimeGet.second,2,YELLOW);
	}
}

 

经程序的编译与下载,其显示效果如图2显示,这样就实现了电子时钟的计时功能。

 

图2 显示效果

 

此帖出自NXP MCU论坛
点赞 关注(1)
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表