1233

Dependencies:   cJSON_lib mcp2515- mbed-dev-f303 esp8266 yezhong_main_controller_copy_3

Committer:
yezhong
Date:
Fri Jun 24 07:58:26 2022 +0000
Revision:
0:e923de71caa5
111111

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yezhong 0:e923de71caa5 1 #include "data_pc.h"
yezhong 0:e923de71caa5 2
yezhong 0:e923de71caa5 3 Serial pc(PA_2, PA_3); // tx, rx U2 min
yezhong 0:e923de71caa5 4
yezhong 0:e923de71caa5 5
yezhong 0:e923de71caa5 6 int pc_control = 0; // 命令帧标志位
yezhong 0:e923de71caa5 7 unsigned int flag_A = 0, flag_B = 0;
yezhong 0:e923de71caa5 8 unsigned int pc_num = 0;
yezhong 0:e923de71caa5 9
yezhong 0:e923de71caa5 10 uint16_t phase_flag_get[1] = {0};
yezhong 0:e923de71caa5 11 uint16_t phase_flag_use[1] = {0};
yezhong 0:e923de71caa5 12 unsigned int phase_flag = 0;
yezhong 0:e923de71caa5 13
yezhong 0:e923de71caa5 14 void pc_decode(){
yezhong 0:e923de71caa5 15 phase_flag = phase_flag_use[0];
yezhong 0:e923de71caa5 16 }
yezhong 0:e923de71caa5 17
yezhong 0:e923de71caa5 18 void pc_clear(){
yezhong 0:e923de71caa5 19 phase_flag_use[0] = 0;
yezhong 0:e923de71caa5 20 }
yezhong 0:e923de71caa5 21
yezhong 0:e923de71caa5 22 void serial_pc_isr(){
yezhong 0:e923de71caa5 23 while(pc.readable()){
yezhong 0:e923de71caa5 24 uint16_t c=pc.getc();
yezhong 0:e923de71caa5 25 if(c == 'A'){
yezhong 0:e923de71caa5 26 flag_A = 1;
yezhong 0:e923de71caa5 27 flag_B = 0;
yezhong 0:e923de71caa5 28 pc_num = 0;
yezhong 0:e923de71caa5 29 phase_flag_get[0] = 0;
yezhong 0:e923de71caa5 30 break;
yezhong 0:e923de71caa5 31 }
yezhong 0:e923de71caa5 32 if(c == 'B'){
yezhong 0:e923de71caa5 33 flag_B = 1;
yezhong 0:e923de71caa5 34 }
yezhong 0:e923de71caa5 35 if(flag_A == 1){
yezhong 0:e923de71caa5 36 if((flag_B != 1) && (pc_num < 1))
yezhong 0:e923de71caa5 37 {
yezhong 0:e923de71caa5 38 phase_flag_get[pc_num] = c;
yezhong 0:e923de71caa5 39 }
yezhong 0:e923de71caa5 40 pc_num++;
yezhong 0:e923de71caa5 41
yezhong 0:e923de71caa5 42 if((flag_B == 1) && (pc_num != 2))
yezhong 0:e923de71caa5 43 {
yezhong 0:e923de71caa5 44 flag_A = 0;
yezhong 0:e923de71caa5 45 flag_B = 0;
yezhong 0:e923de71caa5 46 pc_num = 0;
yezhong 0:e923de71caa5 47 }
yezhong 0:e923de71caa5 48 if((flag_B == 1) && (pc_num == 2))
yezhong 0:e923de71caa5 49 {
yezhong 0:e923de71caa5 50 flag_A = 0;
yezhong 0:e923de71caa5 51 flag_B = 0;
yezhong 0:e923de71caa5 52 pc_num = 0;
yezhong 0:e923de71caa5 53
yezhong 0:e923de71caa5 54 phase_flag_use[0] = phase_flag_get[0] - '0';
yezhong 0:e923de71caa5 55 pc_decode();
yezhong 0:e923de71caa5 56
yezhong 0:e923de71caa5 57 pc.printf("%d", phase_flag); // 命令帧接收成功
yezhong 0:e923de71caa5 58
yezhong 0:e923de71caa5 59 pc_clear();
yezhong 0:e923de71caa5 60
yezhong 0:e923de71caa5 61 }
yezhong 0:e923de71caa5 62 pc_control = 1;
yezhong 0:e923de71caa5 63 }
yezhong 0:e923de71caa5 64 }
yezhong 0:e923de71caa5 65 }