/** * @brief Initial UART0 as debug console. * @param None * @return None */ void SysInit_DebugConsole() { /* Enable UART0 for debug console */ //GCR->PB_L_MFP = (GCR->PB_L_MFP & ~0x77) | (PB1_MFP_UART0_TX | PB0_MFP_UART0_RX); /* Select multi-function pin for UART0 */ MFP_UART0_TO_PORTA(); CLK->APBCLK |= CLK_APBCLK_UART0_EN; /* Enable UART0 clock */ CLK->CLKDIV0 &= ~CLK_CLKDIV0_UART_MASK; CLK->CLKSEL1 = (CLK->CLKSEL1 & ~CLK_CLKSEL1_UART_MASK) | CLK_CLKSEL1_UART_HXT; /* Select 12 Mhz XTAL */ UART0->BAUD = 0x67; /* Baud Rate:115200 OSC:12MHz */ UART0->TLCTL = 0x03; /* Character len is 8 bits */ }
/** * @brief The function prints the source file name and line number where the assert_param() error * occurs, and then stops in an infinite loop. User can add his own codes here if necessary. * @param[in] file Source file name * @param[in] line Line number * @return None */ void assert_error(uint8_t * file, uint32_t line) { MFP_UART0_TO_PORTA(); /* UART0 TX/RX to PA14/PA15*/ CLK->APBCLK |= CLK_APBCLK_UART0_EN; /* Enable UART0 clock */ CLK->CLKDIV0 &= ~CLK_CLKDIV0_UART_MASK; CLK->CLKSEL1 = (CLK->CLKSEL1 & ~CLK_CLKSEL1_UART_MASK) | CLK_CLKSEL1_UART_HXT; /* Select 12 Mhz XTAL */ /* Set UART to 115200,n,8,1,none */ UART0->BAUD = 0x67; /* Baud Rate:115200 for 12MHz */ UART0->TLCTL = 0x03; /* Word len is 8 bits */ printf("[%s] line %d : wrong parameters.\r\n", file, line); /* Infinite loop */ while(1) ; }
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; }