[方案相关]

【玄宇芯】+HC32F030开发板实现的电子时钟

[复制链接]
380|0
手机看帖
扫描二维码
随时随地手机跟帖
jinglixixi|  楼主 | 2020-10-11 02:01 | 显示全部楼层 |阅读模式
HC32F030HC32L136不同,它自身没有内置硬件的万年历 RTC,要想实现与RTC类似的功能只能借助于systick,利用秒信号来进行计时,并通过程序来完成时间的进制转换。
实现电子时钟功能的主程序如下:
int32_t main(void)
{
stc_gpio_config_t stcGpioCfg;
Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
delay1ms(500);
App_OledInit();        
OLED_VCC();
OLED_GND();
OLED_Init();
OLED_Clear();
OLED_ShowString(0,0,"HC32F030 TEST",16);
OLED_ShowString(0,2,"OLED DISPLAY",16);
OLED_ShowCHinese(0, 4, 0);
OLED_ShowCHinese(16, 4, 1);
OLED_ShowCHinese(32, 4, 2);
OLED_ShowCHinese(48, 4, 3);
OLED_ShowCHinese(64, 4, 4);
OLED_ShowString(0,6,"   :  :",16);
stcGpioCfg.enDir = GpioDirOut;
stcGpioCfg.enDrv = GpioDrvH;
stcGpioCfg.enPuPd = GpioPd;
stcGpioCfg.enOD = GpioOdDisable;
Gpio_Init(GpioPortD, GpioPin5, &stcGpioCfg);
SysTick_Config(SystemCoreClock);
while (1)
{
OLED_ShowNum(8,6,hh,2,16);
OLED_ShowNum(32,6,mm,2,16);
OLED_ShowNum(56,6,ss,2,16);
}
}

显示计时的处理函数为:
void SysTick_Handler(void)
{
static uint8_t u8Flag = TRUE;
Gpio_WriteOutputIO(GpioPortD, GpioPin5, u8Flag);
ss++;
if(ss==60)
{
mm++;
ss=0;
}
if(mm==60)
{
hh++;
mm=0;
}
if(hh==24)
{
hh=0;
}
u8Flag = !u8Flag;
}

程序下载后,其运行效果如图1和图2所示。
1.jpg
1  计时效果1

2.jpg
2计时效果2

工程文件:

rtc_systick.rar

6.41 KB

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

446

主题

2675

帖子

36

粉丝