/** * @brief Main routine. * @param None. * @return None. */ int32_t main(void) { S_RTC_TIME_DATA_T sCurTime; SYS_Init(); UART0_Init(); DEBUG_MSG("\nNANO130 NuTiny EVB Demo Program V1.0.0\n"); DEBUG_MSG("[Power Down Demo]\n"); /* Unlock protected registers */ SYS_UnlockReg(); /* Time Setting */ sCurTime.u32Year = 2013; sCurTime.u32Month = 10; sCurTime.u32Day = 15; sCurTime.u32Hour = 0; sCurTime.u32Minute = 0; sCurTime.u32Second = 0; sCurTime.u32DayOfWeek = RTC_TUESDAY; sCurTime.u32TimeScale = RTC_CLOCK_24; RTC_Open(&sCurTime); DEBUG_MSG("RTC Init. complete!\n"); /* Do LCD Initializaton */ LCD_Open(LCD_C_TYPE, 4, LCD_BIAS_THIRD, LCD_FREQ_DIV64, LCD_CPVOl_3V); LCD_EnableDisplay(); DEBUG_MSG("LCD Init. complete!\n"); /* Start displaying on LCD */ LCDLIB_SetSymbol(2, 27, 1); CLK_SysTickDelay(335000); textticker("*** NUVOTON NANO130 ***", 335000); CLK_SysTickDelay(335000); LCDLIB_Printf(0, "NUVOTON"); LCD_EnableBlink(250); CLK_SysTickDelay(335000); CLK_SysTickDelay(335000); CLK_SysTickDelay(335000); CLK_SysTickDelay(335000); CLK_SysTickDelay(335000); LCD_DisableBlink(); /* Read curent RTC time */ RTC_GetDateAndTime(&sCurTime); DEBUG_MSG("Current Time:%d/%02d/%02d %02d:%02d:%02d\n",sCurTime.u32Year,sCurTime.u32Month,sCurTime.u32Day,sCurTime.u32Hour,sCurTime.u32Minute,sCurTime.u32Second); /* Display RTC time */ showTime(sCurTime.u32Hour, sCurTime.u32Minute); DEBUG_MSG("Start MAIN loop.\n"); while(1) { textticker("*** GOING TO POWER DOWN ***", 335000); DEBUG_MSG("Going to Power Down...\n"); #ifdef __DEBUG_MSG while(!(UART1->FSR & UART_FSR_TE_F)) ; /* waits for message send out */ #endif /* Enter power down mode */ /* This sample will not wake up*/ Enter_PowerDown(); DEBUG_MSG("Program resume...\n"); if (_Wakeup_Flag == 1) { _Wakeup_Flag = 0; textticker("*** WAKE UP ***", 335000); CLK_SysTickDelay(335000); CLK_SysTickDelay(335000); CLK_SysTickDelay(335000); } }; }
int32_t main(void) { int32_t bLoop = true; uint32_t com, seg, onoff; uint8_t u8Item; char input; char text[LCD_DIGIT_NUM]=""; int32_t idx = 0, blinkfreq, ret; long long num; S_LCD_INIT lcdinit; STR_UART_T param; SYS_SetChipClockSrc((CLK_PWRCTL_HXT_EN | CLK_PWRCTL_LXT_EN), 1); // Wait HXT and LXT stable while(SYS_CheckChipClockSrc(CLK_CLKSTATUS_LXT_STB | CLK_CLKSTATUS_HXT_STB) != 0) ; /* Select UART Clock Source From 12MHz */ SYS_SelectIPClockSource_1(CLK_CLKSEL1_UART_MASK, CLK_CLKSEL1_UART_HXT); MFP_UART0_TO_PORTA(); param.u32BaudRate = 115200; param.u32cDataBits = DRVUART_DATABITS_8; param.u32cStopBits = DRVUART_STOPBITS_1; param.u32cParity = DRVUART_PARITY_NONE; param.u32cRxTriggerLevel = DRVUART_FIFO_1BYTES; param.u8TimeOut = 0; UART_Init(UART0, ¶m); /* Select LCD Clock Source From 32KHz */ SYS_SelectIPClockSource_1(CLK_CLKSEL1_LCD_MASK, CLK_CLKSEL1_LCD_LXT); /* Select LCD Clock Source From 10KHz */ //SYS_SelectIPClockSource_1(CLK_CLKSEL1_LCD_MASK, CLK_CLKSEL1_LCD_LIRC); /* Select LCD COMs, SEGs, V1 ~ V3, DH1, DH2 */ MFP_LCD_TYPEA(); /* LCD Initialize */ lcdinit.cpump_enable = true; lcdinit.internal_bias = false; lcdinit.cpump_freqdiv = LCD_CPUMP_DIV1; lcdinit.cpump_voltage = LCD_CPVOl_3V; lcdinit.bias = LCD_BIAS_THIRD; lcdinit.mux = LCD_MUX_ONE_FOURTH; lcdinit.freqdiv = LCD_FREQ_DIV64; LCD_Init(&lcdinit); while(bLoop) { idx = 0; strcpy(text, ""); // clear buffer TestItem(); u8Item = getchar(); printf("%c\n", u8Item); switch(u8Item) { case '0': { printf("Input text: "); while(1) { input = getchar(); printf("%c", input); if(input == 0xD) break; strcat( text, &input); idx++; if(idx >= LCD_ALPHABET_NUM) break; } printf("\n"); printf("%s \n", text); LCD_Write(text); break; } case '1': { printf("Input number: "); while(1) { input = getchar(); printf("%c", input); if(input == 0xD) break; strcat( text, &input); idx++; if(idx >= LCD_DIGIT_NUM) break; } printf("\n"); //num = atof(text); num = local_atoi(text); LCD_Number(num); break; } case '2': { //DrvLCD_Write("NUVOTON"); LCD_Number(8888888888888); input: printf("Input the frequency of blinking (ms): "); blinkfreq = sysGetNum(); printf("\n"); ret = LCD_BlinkFrequency(blinkfreq); if(ret == ERR_LCD_CAL_BLINK_FAIL) { printf("Over the time range and input again...\n"); goto input; } LCD_EnableInt(LCD_FRAMECOUNT_INT); LCD_EnableBlink(); printf("Any key to end Blinking display..."); getchar(); LCD_DisableBlink(); break; } case '3': printf("Pixel On/Off (1:On, 0:Off): "); onoff = sysGetNum(); printf("\n"); if(onoff>1) continue; printf("Input Com: "); com = sysGetNum(); printf("\nInput Segment: "); seg = sysGetNum(); if(onoff) LCD_EnableSegment(com, seg); else LCD_DisableSegment(com, seg); break; case '4': bLoop = false; break; default: printf("Wrong Item\n"); break; } } LCD_Disable(); return true; }