6.Emwin+RTC显示时间

6.Emwin+RTC可以显示时间

设备:F407探索者+4.3寸 800*480 屏幕
软件:GUIBulider,vs2013 Keil5

1.GUIBuilder建立界面

我之前已经做好的,就直接用了,你们自己添加就好了,

GUIBuilder

2. c文件添加到vs模拟器

把刚刚生成的c文件添加到vs模拟器上,以便修改微调
vs2013

3.界面移植到STM32

先添加c文件
我这里是把例子的一个拿过来,然后直接复制代码就行了
在这里插入图片描述

4.添加RTC相关的文件

路径添加,工程添加,以及添加相关的库文件,

在这里插入图片描述

FWLIB添加:"stm32f4xx_pwr.h" "stm32f4xx_rcc.h" "stm32f4xx_exti.h"

5. 添加RTC的结构体

在这里插入图片描述

分别创建一个存储时间和日期 的char字符串
因为TEXT的只能显示char字符,如果是整形,需要通过Sprintf来转换

sprintf
其头文件为:#include <stdio.h>

TEXT的函数原型:
int TEXT_SetText (TEXT_Handle hObj, const char * s);
在这里插入图片描述
创建句柄以便后面引用

添加一个定时器,因为界面的刷新显示是需要定时器来定时刷新的,否则就算时间改变了因为界面没有刷新我们也是没有办法看到的
在这里插入图片描述

RTC_TimeTypeDef RTC_TimeStruct;
RTC_DateTypeDef RTC_DateStruct;

char YMD[20];//年月日字符串
char HMS[20];

WM_HWIN TEXT_YMD;//年月日//年月日句柄
WM_HWIN TEXT_HMS;

WM_HTIMER hTimer;


//主函数
void MainTask(void)
{
    
    
	GUI_Init();		//GUI初始化	
	GUI_UC_SetEncodeUTF8();	
	CreateRTC();	
	hTimer = WM_CreateTimer(WM_GetClientWindow(CreateRTC()), 1, 500, 0); //500ms
	while (1)
	{
    
    
		GUI_Delay(200);

	}
}

6.定时器添加显示

把显示时间和日期的函数添加到定时器之间

在这里插入图片描述

	case WM_TIMER:
		
		RTC_GetTime(RTC_Format_BIN,&RTC_TimeStruct);
		RTC_GetDate(RTC_Format_BIN,&RTC_DateStruct);
	
	
   sprintf(HMS,"%02d:%02d:%02d",RTC_TimeStruct.RTC_Hours,RTC_TimeStruct.RTC_Minutes,RTC_TimeStruct.RTC_Seconds); 

	sprintf(YMD,"20%02d-%02d-%02d",RTC_DateStruct.RTC_Year,RTC_DateStruct.RTC_Month,RTC_DateStruct.RTC_Date); 
	
	TEXT_SetText(TEXT_YMD,YMD);//年月日
	TEXT_SetText(TEXT_HMS, HMS);//显示时分秒
	
	WM_RestartTimer(pMsg->Data.v, 500); //500ms刷新一次窗口(9)
	break ;
		

然后去设置时间
在这里插入图片描述
每次修改时间都要把这个5050改成其他值,这样每次改变时间和日期才会生效

7.把代码下载到单片机上

效果如图
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41930631/article/details/116227314
RTC