HC32F030與HC32L136不同,它自身沒有內(nèi)置硬件的萬年歷 RTC,要想實(shí)現(xiàn)與RTC類似的功能只能借助于systick,利用秒信號(hào)來進(jìn)行計(jì)時(shí),并通過程序來完成時(shí)間的進(jìn)制轉(zhuǎn)換。 實(shí)現(xiàn)電子時(shí)鐘功能的主程序如下: - 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);
- }
- }
復(fù)制代碼
顯示計(jì)時(shí)的處理函數(shù)為: - 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;
- }
復(fù)制代碼 程序下載后,其運(yùn)行效果如圖1和圖2所示。
1.jpg (28.48 KB, 下載次數(shù): 79)
下載附件
2020-10-11 02:06 上傳
圖1 計(jì)時(shí)效果1
2.jpg (26.1 KB, 下載次數(shù): 67)
下載附件
2020-10-11 02:06 上傳
圖2計(jì)時(shí)效果2 工程文件:
|