Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 3:70ce5fd299bb, committed 2020-08-11
- Comitter:
- Dennis40816
- Date:
- Tue Aug 11 17:59:44 2020 +0000
- Parent:
- 2:c9889e740474
- Child:
- 4:1300ca51fc75
- Commit message:
- 8-12 DEBUG PASS VERSION ; with NVIC_RESET
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- 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??
}
}