Shang-Shian Liu
/
New_Time_Recorder
To Record the time of the car
Diff: main.cpp
- Revision:
- 3:70ce5fd299bb
- Parent:
- 2:c9889e740474
- Child:
- 4:1300ca51fc75
diff -r c9889e740474 -r 70ce5fd299bb main.cpp --- a/main.cpp Tue Aug 11 17:46:58 2020 +0000 +++ b/main.cpp Tue Aug 11 17:59:44 2020 +0000 @@ -8,6 +8,7 @@ #define BUTTON_DEBOUNCE 0.3f #define LCD_SHOW_PERIOD 3.0f //show last cycle for 2 sec #define SENSOR_IN_DEBOUNCE 0.2f + #define NVIC_RESET_PROTECT 4.0f //all sys reset by pull blue button(button 2) for more than 4 seconds //Define-Don't Change #if(DEBUG == 2 && NO_DELAY == 1) #define NO_DELAY 0 @@ -15,7 +16,7 @@ #define m_1 1000000.0f #define TX_SIZE 16 #define RX_SIZE 16 -#if (!DEBUG) +#if (DEBUG != 1) #define CYCLE_TIME_PROTECT 2.0f //used in formal , protect someone trigger the sensor #else #define CYCLE_TIME_PROTECT 1.0f @@ -126,6 +127,7 @@ void Initial_Hardware(void); void Initial_IT(void); //main function + void ALL_SYS_RESET_CHECK(void); void reset_parameters(void); void show_all(void); void lcd_show(void); @@ -134,6 +136,7 @@ void time_cal(void); void RF_Send(int); void RF_Receive(int); + void RF_Check(void); // IT Functions void sensor_in(void); void button_fall(void); @@ -152,19 +155,8 @@ { Initial_All(); while(1) { - if(role == 0 && mode == 1) { - rf_check_timer.start(); - if(rf_check_timer.read() > 1){ - rf_interval_cnt++; - rf_check_timer.reset(); - } - if(rf_interval_cnt % 5 == 0 && rf_interval_cnt) { - RF_Send(CHECK); - } - if(rf_interval_cnt > 5) rf_state = 0; - if(rf_interval_cnt > 20000) rf_interval_cnt = 0; - } - else rf_check_timer.stop(); + ALL_SYS_RESET_CHECK(); + RF_Check(); time_cal(); show_all(); } @@ -223,6 +215,26 @@ wait(1); } //while loop + void ALL_SYS_RESET_CHECK(){ + if(MY_BUTTON_2.read()){ + if(us_ticker_read()/m_1 - button_RTC_2 > NVIC_RESET_PROTECT) NVIC_SystemReset(); + } + } + void RF_Check(){ + if(role == 0 && mode == 1) { + rf_check_timer.start(); + if(rf_check_timer.read() > 1){ + rf_interval_cnt++; + rf_check_timer.reset(); + } + if(rf_interval_cnt % 5 == 0 && rf_interval_cnt) { + RF_Send(CHECK); + } + if(rf_interval_cnt > 5) rf_state = 0; + if(rf_interval_cnt > 20000) rf_interval_cnt = 0; + } + else rf_check_timer.stop(); + } void reset_parameters() { process = 0; lcd_print_flag = 0; @@ -640,12 +652,12 @@ } void RxCallback(){ //read from buffer - #if(RX_MODE == 1) + #if(RX_MODE == 1) // by scanf ,printf RF.scanf("%s",RX_buffer); if(RX_buffer[0]-'0' == MASTER) this_cycle_timer.start(); else if(RX_buffer[0]-'0' == SLAVE || RX_buffer[0]-'0' == RESULT) this_cycle_timer.stop(); Rx_flag = 1; - #elif(RX_MODE == 2) + #elif(RX_MODE == 2) //by getc , printf while(RF.readable()){ char new_char = RF.getc(); if(new_char != '\n') { @@ -668,6 +680,5 @@ if(Rx_flag == 1){ RF_Receive(RX_buffer[0]-'0'); Rx_flag = 0; - //清空rx?? } }