To Record the time of the car

Dependencies:   mbed TextLCD

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??
         }
     }