174|0

1480

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

【MCXA156开发板测评】+以UTICK实现电子时钟效果 [复制链接]

在厂家提供的例程中有一个UTICK程序,它可以起到精确延时的作用。

相应的函数内容为:

static void UTickDelay(uint32_t usec)
{
    UTICK_SetTick(EXAMPLE_UTICK, kUTICK_Onetime, usec - 1, UTickCallback);
    while (!utickExpired)
    {
    }
    utickExpired = false;
}

static void UTickCallback(void)
{
    utickExpired = true;
}

进行测试的主程序为:

#define EXAMPLE_UTICK UTICK0
#define UTICK_TIME_1S (1000000UL)

int main(void)
{
    RESET_ReleasePeripheralReset(kUTICK0_RST_SHIFT_RSTn);
    BOARD_InitPins();
    BOARD_InitBootClocks();
    BOARD_InitDebugConsole();

    PRINTF("Utick example start...\r\n");
    UTICK_Init(EXAMPLE_UTICK);
    while (true)
    {
        PRINTF("UTICK delay 1 second...\r\n");
        UTickDelay(UTICK_TIME_1S);
    }
}

经程序的编译与下载,其测试结构如图1所示,即每秒方式一次信息。由测试结果看,延时效果还是比较好的。

 

图1 测试结果

 

由于在资料中没见到RTC的相关内容,要想实现RTC的电子计时功能就只有依赖UTICK了。

经修改,实现电子时钟功能的主程序为:

int main(void)
{
    uint32_t h,m,s;
    RESET_ReleasePeripheralReset(kUTICK0_RST_SHIFT_RSTn);
    BOARD_InitPins();
    BOARD_InitBootClocks();
    BOARD_InitDebugConsole();
    PRINTF("clock:\r\n");
    UTICK_Init(EXAMPLE_UTICK);
    h=23;m=58;s=58;
	PRINTF("hh:mm:ss= %d:%d:%d\r\n",h,m,s);
    while (true)
    {
		  UTickDelay(UTICK_TIME_1S);
		  if(s<59)
		  {
		     s=s+1;
		  }
		  else
		  {
			 s=0;
			 if(m<59)
			 {
			      m=m+1;
			 }
			 else
             {
			      m=0;
			      h=(h+1)%24;
			 }
		   }
		   PRINTF("hh:mm:ss= %d:%d:%d\r\n",h,m,s);
    }
}

经程序的编译与下载,其测试结果如图2和图3所示。

 

图2 测试结果1

 

 

图3 测试结果2

 

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

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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