int test_rtc(int argc,char **argv) { struct tm tm; time_t t; char *v; #ifdef CONFIG_CHINESE printf("RTC实时时钟测试\n说明:\n"); printf("1.注意显示的时钟秒值是否变化,如果显示的时钟不变,说明RTC工作不正常。\n"); printf("2.按任意键退出测试程序。\n"); #else printf("press any key to out of RTC test\n"); #endif printf("\n"); init_legacy_rtc(); while(1){ t = tgt_gettime(); while(tgt_gettime() == t){ if (get_uart_char(COM1_BASE_ADDR)){ printf("\n"); return 0; } } #ifdef HAVE_TOD tm = *localtime (&t); #endif printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b%04d-%02d-%02d %02d:%02d:%02d",tm.tm_year+1900,tm.tm_mon+1,tm.tm_mday,tm.tm_hour, tm.tm_min, tm.tm_sec); } return 0; }
int main (void) { SystemCoreClockUpdate (); GPIOInit (); while (GPIOGetValue (BTN_PORT, BTN_PIN) == 0) ; POWER_ON; SSP_IOConfig (SSP_NUM); /* initialize SSP port, share pins with SPI1 on port2(p2.0-3). */ SSP_Init (SSP_NUM); UARTInit (115200); LED1_ON; TIMInit (0, 2 * SystemCoreClock); TIMInit (1, SystemCoreClock); TIMInit16 (1, SystemCoreClock); TIMInit16 (0, SystemCoreClock); enable_timer16 (0); // Initialize SYstick SysTick_Config ( SYSTICK_DELAY); MSP5701_init (); SST25_init (); //LED1_BLINK; // TODO: insert code here NVIC_ClearPendingIRQ (EINT0_IRQn); NVIC_ClearPendingIRQ (EINT1_IRQn); NVIC_EnableIRQ (EINT0_IRQn); NVIC_EnableIRQ (EINT1_IRQn); clearAllEvents(); while (1) { if (checkEvent(BtnPressed)) { // Start measuring. //GPIOSetValue(LED1_PORT, LED1_PIN, ~GPIOGetValue(LED1_PORT,LED1_PIN)&0x1); clearEvent(BtnPressed); if (measure == 1) { measure = 0; live = 0; /* Save data info */ storage_save_data_info (&actual_record); meas_pointer = 0; stop_systick (); } else { measure = 1; meas_pointer = 0; storage_init (&actual_record); start_systick (); } clearEvent(BtnPressed); } if (checkEvent(PowerOff)) { // Turn off device. storage_save_data_info (&actual_record); meas_pointer = 0; measure = 0; LED1_OFF; LED2_OFF; UARTSend ((uint8_t*) "sleep\r\n", 7); POWER_OFF ; while (1) ; clearEvent(PowerOff); } if (checkEvent(UART_data)) { clearEvent(UART_data); uint8_t command = get_uart_char (); switch (command) { case 'e': stop_systick (); SST25_erase (0, SIZE_FULL); break; case 'r': measure = 0; /* Save data info */ if (actual_record.rec_index != -1) { storage_save_data_info (&actual_record); } meas_pointer = 0; stop_systick (); send_data (); break; case 'l': sleep = 0; measure = 1; live = 1; start_systick (); break; case 'n': live = 0; measure = 1; storage_init (&actual_record); start_systick (); sleep = 1; break; case 's': live = 0; sleep = 1; measure = 0; /* Save data info */ storage_save_data_info (&actual_record); meas_pointer = 0; stop_systick (); break; default: break; } } if (TimeTick & measure) { TimeTick = 0; /* Do stuff */ MSP5701_measure_press (&press); if (live == 0) { memcpy ((uint8_t*) (meas_buffer + meas_pointer), &press, sizeof(press)); meas_pointer += sizeof(press); if (meas_pointer >= SAMPLE_BUFFER_LENGTH - 1) { /* Store samples in external memory */ uint32_t length_written = storage_save_data ( &actual_record, meas_buffer, SAMPLE_BUFFER_LENGTH); meas_pointer = 0; if (length_written != SAMPLE_BUFFER_LENGTH) { /* Run out of memory - stop measuring */ measure = 0; meas_pointer = 0; storage_save_data_info (&actual_record); /* Turn off device */ POWER_OFF ; } } } else { /*Transmit live*/ UARTSend ((uint8_t*) &press, 4); UARTSend ((uint8_t*) "\r\n", 2); } } if (sleep == 1) { __WFI (); } } return 0; }