; generated by Component: ARM Compiler 5.06 update 6 (build 750) Tool: ArmCC [4d3637] ; commandline ArmCC [--list --debug -c --asm --interleave -o.\output\bluetooth.o --asm_dir=.\Listing\ --list_dir=.\Listing\ --depend=.\output\bluetooth.d --cpu=Cortex-M3 --apcs=interwork -O0 --diag_suppress=9931 -I..\..\template\Libraries\CMSIS\startup -I..\..\template\Libraries\CMSIS -I..\..\template\Libraries\STM32F10x_StdPeriph_Driver\inc -I..\..\template\Libraries\STM32F10x_StdPeriph_Driver\src -I..\..\nlib -I..\user\inc -I..\user\src -IC:\Keil_v5\ARM\RV31\INC -IC:\Keil_v5\ARM\CMSIS\Include -IC:\Keil_v5\ARM\INC\ST\STM32F10x -D__MICROLIB -D__UVISION_VERSION=525 -DUSE_STDPERIPH_DRIVER -DSTM32F10X_MD --omf_browse=.\output\bluetooth.crf ..\user\src\Bluetooth.c] THUMB AREA ||.text||, CODE, READONLY, ALIGN=2 flash_read_sys_flag PROC ;;;47 */ ;;;48 void flash_read_sys_flag(void) 000000 b510 PUSH {r4,lr} ;;;49 { 000002 b086 SUB sp,sp,#0x18 ;;;50 u16 buf_short[5] = {0}; 000004 2000 MOVS r0,#0 000006 9003 STR r0,[sp,#0xc] 000008 9004 STR r0,[sp,#0x10] 00000a 9005 STR r0,[sp,#0x14] ;;;51 u8 buf_char[10] = {0}; 00000c 9000 STR r0,[sp,#0] 00000e 9001 STR r0,[sp,#4] 000010 9002 STR r0,[sp,#8] ;;;52 u8 i = 0; 000012 2400 MOVS r4,#0 ;;;53 /*获取存储数据*/ ;;;54 STMFLASH_Read(FLASH_ADRR,buf_short,5); 000014 2205 MOVS r2,#5 000016 a903 ADD r1,sp,#0xc 000018 48f8 LDR r0,|L1.1020| 00001a f7fffffe BL STMFLASH_Read ;;;55 ;;;56 for(i=0;i<5;i++) 00001e bf00 NOP 000020 e00f B |L1.66| |L1.34| ;;;57 { ;;;58 buf_char[i*2] = buf_short[i] >> 8; 000022 a803 ADD r0,sp,#0xc 000024 f8300014 LDRH r0,[r0,r4,LSL #1] 000028 1200 ASRS r0,r0,#8 00002a f80d0014 STRB r0,[sp,r4,LSL #1] ;;;59 buf_char[i*2+1] = buf_short[i]; 00002e a803 ADD r0,sp,#0xc 000030 f8100014 LDRB r0,[r0,r4,LSL #1] 000034 2101 MOVS r1,#1 000036 eb010144 ADD r1,r1,r4,LSL #1 00003a f80d0001 STRB r0,[sp,r1] 00003e 1c60 ADDS r0,r4,#1 ;56 000040 b2c4 UXTB r4,r0 ;56 |L1.66| 000042 2c05 CMP r4,#5 ;56 000044 dbed BLT |L1.34| ;;;60 } ;;;61 ;;;62 if(buf_char[0] == 'A' && buf_char[1] == 'A' && buf_char[2] == 'B' && buf_char[3] == 'B') 000046 f89d0000 LDRB r0,[sp,#0] 00004a 2841 CMP r0,#0x41 00004c d116 BNE |L1.124| 00004e f89d0001 LDRB r0,[sp,#1] 000052 2841 CMP r0,#0x41 000054 d112 BNE |L1.124| 000056 f89d0002 LDRB r0,[sp,#2] 00005a 2842 CMP r0,#0x42 00005c d10e BNE |L1.124| 00005e f89d0003 LDRB r0,[sp,#3] 000062 2842 CMP r0,#0x42 000064 d10a BNE |L1.124| ;;;63 { ;;;64 for(i=0;i<6;i++) 000066 2400 MOVS r4,#0 000068 e006 B |L1.120| |L1.106| ;;;65 { ;;;66 Pass_init[4+i] = buf_char[4+i]; 00006a 1d20 ADDS r0,r4,#4 00006c f81d1000 LDRB r1,[sp,r0] 000070 4ae3 LDR r2,|L1.1024| 000072 5411 STRB r1,[r2,r0] 000074 1c60 ADDS r0,r4,#1 ;64 000076 b2c4 UXTB r4,r0 ;64 |L1.120| 000078 2c06 CMP r4,#6 ;64 00007a dbf6 BLT |L1.106| |L1.124| ;;;67 } ;;;68 } ;;;69 } 00007c b006 ADD sp,sp,#0x18 00007e bd10 POP {r4,pc} ;;;70 ENDP flash_write_sys_flag_ALL PROC ;;;76 */ ;;;77 void flash_write_sys_flag_ALL(u8 *revbuf_char) 000080 b53e PUSH {r1-r5,lr} ;;;78 { 000082 4605 MOV r5,r0 ;;;79 u8 i = 0; 000084 2400 MOVS r4,#0 ;;;80 u16 revbuf_short[5]={0}; 000086 2000 MOVS r0,#0 000088 9000 STR r0,[sp,#0] 00008a 9001 STR r0,[sp,#4] 00008c 9002 STR r0,[sp,#8] ;;;81 ;;;82 for(i=0;i<5;i++) 00008e bf00 NOP 000090 e00b B |L1.170| |L1.146| ;;;83 { ;;;84 revbuf_short[i] = revbuf_char[i*2]<<8 | revbuf_char[i*2+1]; 000092 2001 MOVS r0,#1 000094 eb000044 ADD r0,r0,r4,LSL #1 000098 5c28 LDRB r0,[r5,r0] 00009a f8151014 LDRB r1,[r5,r4,LSL #1] 00009e ea402001 ORR r0,r0,r1,LSL #8 0000a2 f82d0014 STRH r0,[sp,r4,LSL #1] 0000a6 1c60 ADDS r0,r4,#1 ;82 0000a8 b2c4 UXTB r4,r0 ;82 |L1.170| 0000aa 2c05 CMP r4,#5 ;82 0000ac dbf1 BLT |L1.146| ;;;85 } ;;;86 ;;;87 STMFLASH_Write(FLASH_ADRR,revbuf_short,5); 0000ae 2205 MOVS r2,#5 0000b0 4669 MOV r1,sp 0000b2 48d2 LDR r0,|L1.1020| 0000b4 f7fffffe BL STMFLASH_Write ;;;88 } 0000b8 bd3e POP {r1-r5,pc} ;;;89 ENDP BlueSend_GpsFun PROC ;;;101 */ ;;;102 void BlueSend_GpsFun(u32 bmsnum,u8 orde,u8 type,u8 *buff,u16 len,u32 Recnumber) 0000ba e92d47f0 PUSH {r4-r10,lr} ;;;103 { 0000be f5ad7d54 SUB sp,sp,#0x350 0000c2 4606 MOV r6,r0 0000c4 460f MOV r7,r1 0000c6 4690 MOV r8,r2 0000c8 4699 MOV r9,r3 0000ca f8dda374 LDR r10,[sp,#0x374] 0000ce 9cdc LDR r4,[sp,#0x370] ;;;104 u16 index; ;;;105 u8 sendbuf[420] = {0}; 0000d0 f44f71d2 MOV r1,#0x1a4 0000d4 a86b ADD r0,sp,#0x1ac 0000d6 f7fffffe BL __aeabi_memclr4 ;;;106 Data_frame data_frame; ;;;107 ;;;108 data_frame.start_frame = START_FRAME; 0000da f6446057 MOV r0,#0x4e57 0000de f8ad0004 STRH r0,[sp,#4] ;;;109 data_frame.Len_frame = S_GD_LEN + len - 2; 0000e2 f1040012 ADD r0,r4,#0x12 0000e6 b280 UXTH r0,r0 0000e8 f8ad0006 STRH r0,[sp,#6] ;;;110 data_frame.Bms_number = bmsnum; 0000ec 9602 STR r6,[sp,#8] ;;;111 data_frame.orde = orde; 0000ee f88d700c STRB r7,[sp,#0xc] ;;;112 data_frame.farm_sor = 0x00; 0000f2 2000 MOVS r0,#0 0000f4 f88d000d STRB r0,[sp,#0xd] ;;;113 data_frame.Type = type; 0000f8 f88d800e STRB r8,[sp,#0xe] ;;;114 memcpy(data_frame.s_data,buff,len); 0000fc 4622 MOV r2,r4 0000fe 4649 MOV r1,r9 000100 f10d000f ADD r0,sp,#0xf 000104 f7fffffe BL __aeabi_memcpy ;;;115 data_frame.Recnumber = Recnumber; 000108 f8cda1a0 STR r10,[sp,#0x1a0] ;;;116 data_frame.end_signs = END_FRAME; 00010c 2068 MOVS r0,#0x68 00010e f88d01a4 STRB r0,[sp,#0x1a4] ;;;117 data_frame.check_sum = 0; 000112 2000 MOVS r0,#0 000114 906a STR r0,[sp,#0x1a8] ;;;118 ;;;119 sendbuf[0] = (data_frame.start_frame >> 8); 000116 f8bd0004 LDRH r0,[sp,#4] 00011a 1200 ASRS r0,r0,#8 00011c f88d01ac STRB r0,[sp,#0x1ac] ;;;120 sendbuf[1] = data_frame.start_frame; 000120 f8bd0004 LDRH r0,[sp,#4] 000124 b2c0 UXTB r0,r0 000126 f88d01ad STRB r0,[sp,#0x1ad] ;;;121 sendbuf[2] = (data_frame.Len_frame >> 8); 00012a f8bd0006 LDRH r0,[sp,#6] 00012e 1200 ASRS r0,r0,#8 000130 f88d01ae STRB r0,[sp,#0x1ae] ;;;122 sendbuf[3] = data_frame.Len_frame; 000134 f8bd0006 LDRH r0,[sp,#6] 000138 b2c0 UXTB r0,r0 00013a f88d01af STRB r0,[sp,#0x1af] ;;;123 sendbuf[4] = (data_frame.Bms_number >> 24); 00013e 9802 LDR r0,[sp,#8] 000140 0e00 LSRS r0,r0,#24 000142 f88d01b0 STRB r0,[sp,#0x1b0] ;;;124 sendbuf[5] = (data_frame.Bms_number >> 16); 000146 9802 LDR r0,[sp,#8] 000148 0c00 LSRS r0,r0,#16 00014a f88d01b1 STRB r0,[sp,#0x1b1] ;;;125 sendbuf[6] = (data_frame.Bms_number >> 8); 00014e 9802 LDR r0,[sp,#8] 000150 0a00 LSRS r0,r0,#8 000152 f88d01b2 STRB r0,[sp,#0x1b2] ;;;126 sendbuf[7] = data_frame.Bms_number; 000156 9802 LDR r0,[sp,#8] 000158 b2c0 UXTB r0,r0 00015a f88d01b3 STRB r0,[sp,#0x1b3] ;;;127 sendbuf[8] = data_frame.orde; 00015e f89d000c LDRB r0,[sp,#0xc] 000162 f88d01b4 STRB r0,[sp,#0x1b4] ;;;128 sendbuf[9] = data_frame.farm_sor; 000166 f89d000d LDRB r0,[sp,#0xd] 00016a f88d01b5 STRB r0,[sp,#0x1b5] ;;;129 sendbuf[10]= data_frame.Type; 00016e f89d000e LDRB r0,[sp,#0xe] 000172 f88d01b6 STRB r0,[sp,#0x1b6] ;;;130 memcpy(&sendbuf[11],data_frame.s_data,len); 000176 4622 MOV r2,r4 000178 f10d010f ADD r1,sp,#0xf 00017c f20d10b7 ADD r0,sp,#0x1b7 000180 f7fffffe BL __aeabi_memcpy ;;;131 sendbuf[11 + len] = (data_frame.Recnumber >> 24); 000184 9868 LDR r0,[sp,#0x1a0] 000186 0e01 LSRS r1,r0,#24 000188 f104000b ADD r0,r4,#0xb 00018c aa6b ADD r2,sp,#0x1ac 00018e 5411 STRB r1,[r2,r0] ;;;132 sendbuf[12 + len] = (data_frame.Recnumber >> 16); 000190 9868 LDR r0,[sp,#0x1a0] 000192 f3c04107 UBFX r1,r0,#16,#8 000196 f104000c ADD r0,r4,#0xc 00019a 5411 STRB r1,[r2,r0] ;;;133 sendbuf[13 + len] = (data_frame.Recnumber >> 8); 00019c 9868 LDR r0,[sp,#0x1a0] 00019e f3c02107 UBFX r1,r0,#8,#8 0001a2 f104000d ADD r0,r4,#0xd 0001a6 5411 STRB r1,[r2,r0] ;;;134 sendbuf[14 + len] = data_frame.Recnumber; 0001a8 9868 LDR r0,[sp,#0x1a0] 0001aa b2c1 UXTB r1,r0 0001ac f104000e ADD r0,r4,#0xe 0001b0 5411 STRB r1,[r2,r0] ;;;135 sendbuf[15 + len] = data_frame.end_signs; 0001b2 f89d11a4 LDRB r1,[sp,#0x1a4] 0001b6 1c40 ADDS r0,r0,#1 0001b8 5411 STRB r1,[r2,r0] ;;;136 ;;;137 for(index = 0; index < S_GD_LEN + len - 4; index++) 0001ba 2500 MOVS r5,#0 0001bc e006 B |L1.460| |L1.446| ;;;138 { ;;;139 data_frame.check_sum += sendbuf[index]; 0001be a96b ADD r1,sp,#0x1ac 0001c0 5d49 LDRB r1,[r1,r5] 0001c2 986a LDR r0,[sp,#0x1a8] 0001c4 4408 ADD r0,r0,r1 0001c6 906a STR r0,[sp,#0x1a8] 0001c8 1c68 ADDS r0,r5,#1 ;137 0001ca b285 UXTH r5,r0 ;137 |L1.460| 0001cc f1040010 ADD r0,r4,#0x10 ;137 0001d0 42a8 CMP r0,r5 ;137 0001d2 dcf4 BGT |L1.446| ;;;140 } ;;;141 sendbuf[16 + len] = 0x00; 0001d4 2100 MOVS r1,#0 0001d6 aa6b ADD r2,sp,#0x1ac 0001d8 5411 STRB r1,[r2,r0] ;;;142 sendbuf[17 + len] = 0x00; 0001da 1c40 ADDS r0,r0,#1 0001dc 5411 STRB r1,[r2,r0] ;;;143 sendbuf[18 + len] = (data_frame.check_sum >> 8); 0001de 986a LDR r0,[sp,#0x1a8] 0001e0 f3c02107 UBFX r1,r0,#8,#8 0001e4 f1040012 ADD r0,r4,#0x12 0001e8 5411 STRB r1,[r2,r0] ;;;144 sendbuf[19 + len] = data_frame.check_sum; 0001ea 986a LDR r0,[sp,#0x1a8] 0001ec b2c1 UXTB r1,r0 0001ee f1040013 ADD r0,r4,#0x13 0001f2 5411 STRB r1,[r2,r0] ;;;145 ;;;146 /*发送数据*/ ;;;147 Send_TString_Bluetooth(sendbuf,(u16)(S_GD_LEN + len)); 0001f4 1c40 ADDS r0,r0,#1 0001f6 b281 UXTH r1,r0 0001f8 a86b ADD r0,sp,#0x1ac 0001fa f7fffffe BL Send_TString_Bluetooth ;;;148 } 0001fe f50d7d54 ADD sp,sp,#0x350 000202 e8bd87f0 POP {r4-r10,pc} ;;;149 ENDP Bluetoothdecodea PROC ;;;156 */ ;;;157 void Bluetoothdecodea(void) 000206 e92d4ff0 PUSH {r4-r11,lr} ;;;158 { 00020a b0df SUB sp,sp,#0x17c ;;;159 u16 data_len = 0; //长度 00020c 2600 MOVS r6,#0 ;;;160 u32 crc_sum = 0; //累加和 00020e 2000 MOVS r0,#0 000210 905e STR r0,[sp,#0x178] ;;;161 u32 Bms_num = 0; //BMS终端号 000212 905d STR r0,[sp,#0x174] ;;;162 u16 index; ;;;163 ;;;164 u8 orde = 0; //命令字 000214 905b STR r0,[sp,#0x16c] ;;;165 u8 b_addr = 0; //标识码 000216 4681 MOV r9,r0 ;;;166 u8 Type = 0; //传输类型 000218 905a STR r0,[sp,#0x168] ;;;167 u32 recnum = 0; //记录号 00021a 9059 STR r0,[sp,#0x164] ;;;168 ;;;169 u8 sendbuffer[300]; //发送数据缓存 ;;;170 u16 send_len = 0; //数据域长度 00021c 4682 MOV r10,r0 ;;;171 ;;;172 /*309相关变量*/ ;;;173 u8 Rev_309_buf_A[2]={0}; 00021e 900d STR r0,[sp,#0x34] ;;;174 u8 Rev_309_buf_B[2]={0}; 000220 900c STR r0,[sp,#0x30] ;;;175 ;;;176 /*温度相关变量*/ ;;;177 float Rref = 0; //内部参考电阻(单位:KΩ) 000222 900b STR r0,[sp,#0x2c] ;;;178 float Rt1 = 0; //热敏电阻阻值(单位:KΩ) 000224 900a STR r0,[sp,#0x28] ;;;179 ;;;180 /*串数相关变量*/ ;;;181 u8 A_Cellnum = 0; //主309 芯片电池串数 000226 2700 MOVS r7,#0 ;;;182 u8 B_Cellnum = 0; //副309 芯片电池串数 000228 4680 MOV r8,r0 ;;;183 ;;;184 /*接收一帧报文成功*/ ;;;185 if(Bluttooth_buf.gps_Rev_start == 1) 00022a 4876 LDR r0,|L1.1028| 00022c 7800 LDRB r0,[r0,#0] ; Bluttooth_buf 00022e 2801 CMP r0,#1 |L1.560| 000230 f0418043 BNE.W |L1.4794| ;;;186 { ;;;187 Bluttooth_buf.gps_Rev_start = 0; //清除标志位 000234 2000 MOVS r0,#0 000236 4973 LDR r1,|L1.1028| 000238 7008 STRB r0,[r1,#0] ;;;188 Data_Source = 2; 00023a 2002 MOVS r0,#2 00023c 4972 LDR r1,|L1.1032| 00023e 7008 STRB r0,[r1,#0] ;;;189 ;;;190 data_len = (u16)((Bluttooth_buf.gps_Rev_buf[2] << 8) | Bluttooth_buf.gps_Rev_buf[3]); 000240 4870 LDR r0,|L1.1028| 000242 7901 LDRB r1,[r0,#4] 000244 78c0 LDRB r0,[r0,#3] 000246 ea412600 ORR r6,r1,r0,LSL #8 ;;;191 ;;;192 for(index = 0; index < data_len + 2 - 4; index++) 00024a 2000 MOVS r0,#0 00024c 905c STR r0,[sp,#0x170] 00024e e00a B |L1.614| |L1.592| ;;;193 { ;;;194 crc_sum += Bluttooth_buf.gps_Rev_buf[index]; 000250 486c LDR r0,|L1.1028| 000252 1c40 ADDS r0,r0,#1 000254 995c LDR r1,[sp,#0x170] 000256 5c41 LDRB r1,[r0,r1] 000258 985e LDR r0,[sp,#0x178] 00025a 4408 ADD r0,r0,r1 00025c 905e STR r0,[sp,#0x178] 00025e 985c LDR r0,[sp,#0x170] ;192 000260 1c40 ADDS r0,r0,#1 ;192 000262 b280 UXTH r0,r0 ;192 000264 905c STR r0,[sp,#0x170] ;192 |L1.614| 000266 1eb0 SUBS r0,r6,#2 ;192 000268 995c LDR r1,[sp,#0x170] ;192 00026a 4288 CMP r0,r1 ;192 00026c dcf0 BGT |L1.592| ;;;195 } ;;;196 ;;;197 /*条件约束*/ ;;;198 if((u16)crc_sum == (u16)((Bluttooth_buf.gps_Rev_buf[data_len + 2 - 2] << 8) | Bluttooth_buf.gps_Rev_buf[data_len + 2 - 1])) 00026e 1c70 ADDS r0,r6,#1 000270 4964 LDR r1,|L1.1028| 000272 1c49 ADDS r1,r1,#1 000274 5c0a LDRB r2,[r1,r0] 000276 5d88 LDRB r0,[r1,r6] 000278 ea422100 ORR r1,r2,r0,LSL #8 00027c 985e LDR r0,[sp,#0x178] 00027e b280 UXTH r0,r0 000280 4281 CMP r1,r0 000282 d1d5 BNE |L1.560| ;;;199 { ;;;200 /*获取BMS终端号*/ ;;;201 Bms_num = (u32)(((Bluttooth_buf.gps_Rev_buf[4] << 8) | (Bluttooth_buf.gps_Rev_buf[5])) * 65536 + ((Bluttooth_buf.gps_Rev_buf[6] << 8) | Bluttooth_buf.gps_Rev_buf[7])); 000284 485f LDR r0,|L1.1028| 000286 7a01 LDRB r1,[r0,#8] 000288 79c0 LDRB r0,[r0,#7] 00028a ea412100 ORR r1,r1,r0,LSL #8 00028e 485d LDR r0,|L1.1028| 000290 7982 LDRB r2,[r0,#6] 000292 7940 LDRB r0,[r0,#5] 000294 ea422000 ORR r0,r2,r0,LSL #8 000298 eb014000 ADD r0,r1,r0,LSL #16 00029c 905d STR r0,[sp,#0x174] ;;;202 ;;;203 /*获取命令字*/ ;;;204 orde = Bluttooth_buf.gps_Rev_buf[8]; 00029e 4859 LDR r0,|L1.1028| 0002a0 7a40 LDRB r0,[r0,#9] 0002a2 905b STR r0,[sp,#0x16c] ;;;205 ;;;206 /*获取标识码*/ ;;;207 b_addr = Bluttooth_buf.gps_Rev_buf[11]; 0002a4 4857 LDR r0,|L1.1028| 0002a6 f890900c LDRB r9,[r0,#0xc] ;;;208 ;;;209 /*获取记录号*/ ;;;210 recnum = (u32)(((Bluttooth_buf.gps_Rev_buf[data_len + 2 - 5 - 4] << 8) | (Bluttooth_buf.gps_Rev_buf[data_len + 2 - 5 - 3])) * 65536 + ((Bluttooth_buf.gps_Rev_buf[data_len + 2 - 5 - 2] << 8) | Bluttooth_buf.gps_Rev_buf[data_len + 2 - 5 - 1])); 0002aa 1f30 SUBS r0,r6,#4 0002ac 4955 LDR r1,|L1.1028| 0002ae 1c49 ADDS r1,r1,#1 0002b0 5c0a LDRB r2,[r1,r0] 0002b2 1f70 SUBS r0,r6,#5 0002b4 5c08 LDRB r0,[r1,r0] 0002b6 ea422100 ORR r1,r2,r0,LSL #8 0002ba 1fb0 SUBS r0,r6,#6 0002bc 4a51 LDR r2,|L1.1028| 0002be 1c52 ADDS r2,r2,#1 0002c0 5c13 LDRB r3,[r2,r0] 0002c2 1ff0 SUBS r0,r6,#7 0002c4 5c10 LDRB r0,[r2,r0] 0002c6 ea432000 ORR r0,r3,r0,LSL #8 0002ca eb014000 ADD r0,r1,r0,LSL #16 0002ce 9059 STR r0,[sp,#0x164] ;;;211 ;;;212 switch(orde) 0002d0 985b LDR r0,[sp,#0x16c] 0002d2 2807 CMP r0,#7 0002d4 f08087ef BCS.W |L1.4790| 0002d8 e8dff000 TBB [pc,r0] 0002dc fd041929 DCB 0xfd,0x04,0x19,0x29 0002e0 395dfc00 DCB 0x39,0x5d,0xfc,0x00 ;;;213 { ;;;214 case ACTIVACE_ORDE: //激活指令 从休眠中退出 ;;;215 { ;;;216 Type = 0x01; //应答 0002e4 2001 MOVS r0,#1 0002e6 905a STR r0,[sp,#0x168] ;;;217 sendbuffer[0] = b_addr; 0002e8 f88d9038 STRB r9,[sp,#0x38] ;;;218 send_len = 1; 0002ec 4682 MOV r10,r0 ;;;219 BlueActivate = 1; 0002ee 4947 LDR r1,|L1.1036| 0002f0 7008 STRB r0,[r1,#0] ;;;220 BlueSend_GpsFun(Bms_num,orde,Type,sendbuffer,send_len,recnum); 0002f2 9859 LDR r0,[sp,#0x164] 0002f4 ab0e ADD r3,sp,#0x38 0002f6 e9cda000 STRD r10,r0,[sp,#0] 0002fa 9a5a LDR r2,[sp,#0x168] 0002fc 995b LDR r1,[sp,#0x16c] 0002fe 985d LDR r0,[sp,#0x174] 000300 f7fffffe BL BlueSend_GpsFun ;;;221 Beep_Flag = 1; 000304 2001 MOVS r0,#1 000306 4942 LDR r1,|L1.1040| 000308 7008 STRB r0,[r1,#0] |L1.778| ;;;222 } ;;;223 break; 00030a f000bfd5 B.W |L1.4792| ;;;224 case WRITE_ORDE: //写指令 ;;;225 if(BlueActivate == 1) 00030e 483f LDR r0,|L1.1036| 000310 7800 LDRB r0,[r0,#0] ; BlueActivate 000312 2801 CMP r0,#1 000314 d10a BNE |L1.812| ;;;226 { ;;;227 /*MCU数据*/ ;;;228 if(Ranjianyinjian == 0) 000316 483f LDR r0,|L1.1044| 000318 7800 LDRB r0,[r0,#0] ; Ranjianyinjian 00031a b938 CBNZ r0,|L1.812| ;;;229 { ;;;230 Send_TString_BMS(Bluttooth_buf.gps_Rev_buf,data_len+2); 00031c 1cb1 ADDS r1,r6,#2 00031e 4839 LDR r0,|L1.1028| 000320 1c40 ADDS r0,r0,#1 000322 f7fffffe BL Send_TString_BMS ;;;231 Beep_Flag = 1; 000326 2001 MOVS r0,#1 000328 4939 LDR r1,|L1.1040| 00032a 7008 STRB r0,[r1,#0] |L1.812| ;;;232 } ;;;233 } ;;;234 break; 00032c e7ed B |L1.778| ;;;235 case REV_ORDE: //读指令 ;;;236 if(BlueActivate == 1) 00032e 4837 LDR r0,|L1.1036| 000330 7800 LDRB r0,[r0,#0] ; BlueActivate 000332 2801 CMP r0,#1 000334 d10a BNE |L1.844| ;;;237 { ;;;238 /*MCU数据*/ ;;;239 if(Ranjianyinjian == 0) 000336 4837 LDR r0,|L1.1044| 000338 7800 LDRB r0,[r0,#0] ; Ranjianyinjian 00033a b938 CBNZ r0,|L1.844| ;;;240 { ;;;241 Send_TString_BMS(Bluttooth_buf.gps_Rev_buf,data_len+2); 00033c 1cb1 ADDS r1,r6,#2 00033e 4831 LDR r0,|L1.1028| 000340 1c40 ADDS r0,r0,#1 000342 f7fffffe BL Send_TString_BMS ;;;242 Beep_Flag = 1; 000346 2001 MOVS r0,#1 000348 4931 LDR r1,|L1.1040| 00034a 7008 STRB r0,[r1,#0] |L1.844| ;;;243 } ;;;244 } ;;;245 break; 00034c e7dd B |L1.778| ;;;246 case CONF_ORDE: //控制选择指令_只写 ;;;247 switch(b_addr) 00034e f1b90fd0 CMP r9,#0xd0 000352 d003 BEQ |L1.860| 000354 f1b90fd1 CMP r9,#0xd1 000358 d10a BNE |L1.880| 00035a e004 B |L1.870| |L1.860| ;;;248 { ;;;249 case RANJIANYINJIAN: ;;;250 Ranjianyinjian = Bluttooth_buf.gps_Rev_buf[12]; 00035c 4829 LDR r0,|L1.1028| 00035e 7b40 LDRB r0,[r0,#0xd] 000360 492c LDR r1,|L1.1044| 000362 7008 STRB r0,[r1,#0] ;;;251 break; 000364 e004 B |L1.880| |L1.870| ;;;252 case CONF_309NUM: ;;;253 Conf_309num = Bluttooth_buf.gps_Rev_buf[12]; 000366 4827 LDR r0,|L1.1028| 000368 7b40 LDRB r0,[r0,#0xd] 00036a 492b LDR r1,|L1.1048| 00036c 7008 STRB r0,[r1,#0] ;;;254 break; 00036e bf00 NOP |L1.880| 000370 bf00 NOP ;251 ;;;255 } ;;;256 Type = 0x01; 000372 2001 MOVS r0,#1 000374 905a STR r0,[sp,#0x168] ;;;257 sendbuffer[0] = b_addr; 000376 f88d9038 STRB r9,[sp,#0x38] ;;;258 send_len = 1; 00037a 4682 MOV r10,r0 ;;;259 /*发送数据*/ ;;;260 BlueSend_GpsFun(Bms_num,orde,Type,sendbuffer,send_len,recnum); 00037c 9859 LDR r0,[sp,#0x164] 00037e ab0e ADD r3,sp,#0x38 000380 e9cda000 STRD r10,r0,[sp,#0] 000384 9a5a LDR r2,[sp,#0x168] 000386 995b LDR r1,[sp,#0x16c] 000388 985d LDR r0,[sp,#0x174] 00038a f7fffffe BL BlueSend_GpsFun ;;;261 Beep_Flag = 1; 00038e 2001 MOVS r0,#1 000390 491f LDR r1,|L1.1040| 000392 7008 STRB r0,[r1,#0] ;;;262 break; 000394 e7b9 B |L1.778| ;;;263 case PASS_ORDE: //对密码指令 ;;;264 { ;;;265 switch(b_addr) 000396 f1b90fe0 CMP r9,#0xe0 00039a d006 BEQ |L1.938| 00039c f1b90fe1 CMP r9,#0xe1 0003a0 d072 BEQ |L1.1160| 0003a2 f1b90fe2 CMP r9,#0xe2 0003a6 d16d BNE |L1.1156| 0003a8 e0a1 B |L1.1262| |L1.938| ;;;266 { ;;;267 case PASS_YAZ: //密码验证 ;;;268 if((Pass_init[4] == Bluttooth_buf.gps_Rev_buf[12]) && (Pass_init[5] == Bluttooth_buf.gps_Rev_buf[13]) 0003aa 4815 LDR r0,|L1.1024| 0003ac 7901 LDRB r1,[r0,#4] ; Pass_init 0003ae 4815 LDR r0,|L1.1028| 0003b0 7b40 LDRB r0,[r0,#0xd] 0003b2 4281 CMP r1,r0 0003b4 d132 BNE |L1.1052| 0003b6 4812 LDR r0,|L1.1024| 0003b8 7941 LDRB r1,[r0,#5] ; Pass_init 0003ba 4812 LDR r0,|L1.1028| 0003bc 7b80 LDRB r0,[r0,#0xe] 0003be 4281 CMP r1,r0 0003c0 d12c BNE |L1.1052| ;;;269 && (Pass_init[6] == Bluttooth_buf.gps_Rev_buf[14]) && (Pass_init[7] == Bluttooth_buf.gps_Rev_buf[15]) 0003c2 480f LDR r0,|L1.1024| 0003c4 7981 LDRB r1,[r0,#6] ; Pass_init 0003c6 480f LDR r0,|L1.1028| 0003c8 7bc0 LDRB r0,[r0,#0xf] 0003ca 4281 CMP r1,r0 0003cc d126 BNE |L1.1052| 0003ce 480c LDR r0,|L1.1024| 0003d0 79c1 LDRB r1,[r0,#7] ; Pass_init 0003d2 480c LDR r0,|L1.1028| 0003d4 7c00 LDRB r0,[r0,#0x10] 0003d6 4281 CMP r1,r0 0003d8 d120 BNE |L1.1052| ;;;270 && (Pass_init[8] == Bluttooth_buf.gps_Rev_buf[16]) && (Pass_init[9] == Bluttooth_buf.gps_Rev_buf[17]) 0003da 4809 LDR r0,|L1.1024| 0003dc 7a01 LDRB r1,[r0,#8] ; Pass_init 0003de 4809 LDR r0,|L1.1028| 0003e0 7c40 LDRB r0,[r0,#0x11] 0003e2 4281 CMP r1,r0 0003e4 d11a BNE |L1.1052| 0003e6 4806 LDR r0,|L1.1024| 0003e8 7a41 LDRB r1,[r0,#9] ; Pass_init 0003ea 4806 LDR r0,|L1.1028| 0003ec 7c80 LDRB r0,[r0,#0x12] 0003ee 4281 CMP r1,r0 0003f0 d114 BNE |L1.1052| ;;;271 ) ;;;272 { ;;;273 sendbuffer[1] = 1; 0003f2 2001 MOVS r0,#1 0003f4 f88d0039 STRB r0,[sp,#0x39] 0003f8 e013 B |L1.1058| 0003fa 0000 DCW 0x0000 |L1.1020| DCD 0x0800ffe0 |L1.1024| DCD Pass_init |L1.1028| DCD Bluttooth_buf |L1.1032| DCD Data_Source |L1.1036| DCD BlueActivate |L1.1040| DCD Beep_Flag |L1.1044| DCD Ranjianyinjian |L1.1048| DCD Conf_309num |L1.1052| ;;;274 } ;;;275 else ;;;276 sendbuffer[1] = 0; //1成功 0失败 00041c 2000 MOVS r0,#0 00041e f88d0039 STRB r0,[sp,#0x39] |L1.1058| ;;;277 ;;;278 if(sendbuffer[1] == 0) 000422 f89d0039 LDRB r0,[sp,#0x39] 000426 bb30 CBNZ r0,|L1.1142| ;;;279 { ;;;280 //超级密码 ;;;281 if((Pass_CJ[4] == Bluttooth_buf.gps_Rev_buf[12]) && (Pass_CJ[5] == Bluttooth_buf.gps_Rev_buf[13]) 000428 48fe LDR r0,|L1.2084| 00042a 7901 LDRB r1,[r0,#4] ; Pass_CJ 00042c 48fe LDR r0,|L1.2088| 00042e 7b40 LDRB r0,[r0,#0xd] 000430 4281 CMP r1,r0 000432 d121 BNE |L1.1144| 000434 48fb LDR r0,|L1.2084| 000436 7941 LDRB r1,[r0,#5] ; Pass_CJ 000438 48fb LDR r0,|L1.2088| 00043a 7b80 LDRB r0,[r0,#0xe] 00043c 4281 CMP r1,r0 00043e d11b BNE |L1.1144| ;;;282 && (Pass_CJ[6] == Bluttooth_buf.gps_Rev_buf[14]) && (Pass_CJ[7] == Bluttooth_buf.gps_Rev_buf[15]) 000440 48f8 LDR r0,|L1.2084| 000442 7981 LDRB r1,[r0,#6] ; Pass_CJ 000444 48f8 LDR r0,|L1.2088| 000446 7bc0 LDRB r0,[r0,#0xf] 000448 4281 CMP r1,r0 00044a d115 BNE |L1.1144| 00044c 48f5 LDR r0,|L1.2084| 00044e 79c1 LDRB r1,[r0,#7] ; Pass_CJ 000450 48f5 LDR r0,|L1.2088| 000452 7c00 LDRB r0,[r0,#0x10] 000454 4281 CMP r1,r0 000456 d10f BNE |L1.1144| ;;;283 && (Pass_CJ[8] == Bluttooth_buf.gps_Rev_buf[16]) && (Pass_CJ[9] == Bluttooth_buf.gps_Rev_buf[17]) 000458 48f2 LDR r0,|L1.2084| 00045a 7a01 LDRB r1,[r0,#8] ; Pass_CJ 00045c 48f2 LDR r0,|L1.2088| 00045e 7c40 LDRB r0,[r0,#0x11] 000460 4281 CMP r1,r0 000462 d109 BNE |L1.1144| 000464 48ef LDR r0,|L1.2084| 000466 7a41 LDRB r1,[r0,#9] ; Pass_CJ 000468 48ef LDR r0,|L1.2088| 00046a 7c80 LDRB r0,[r0,#0x12] 00046c 4281 CMP r1,r0 00046e d103 BNE |L1.1144| ;;;284 ) ;;;285 { ;;;286 sendbuffer[1] = 1; 000470 2001 MOVS r0,#1 000472 f88d0039 STRB r0,[sp,#0x39] |L1.1142| 000476 e002 B |L1.1150| |L1.1144| ;;;287 } ;;;288 else ;;;289 sendbuffer[1] = 0; //1成功 0失败 000478 2000 MOVS r0,#0 00047a f88d0039 STRB r0,[sp,#0x39] |L1.1150| ;;;290 } ;;;291 Pass_bit = 0; 00047e 2000 MOVS r0,#0 000480 49ea LDR r1,|L1.2092| 000482 7008 STRB r0,[r1,#0] |L1.1156| ;;;292 break; 000484 e058 B |L1.1336| 000486 e7ff B |L1.1160| |L1.1160| ;;;293 case XIUG_PASS_CHU: //修改密码输入原始密码 ;;;294 if((Pass_init[4] == Bluttooth_buf.gps_Rev_buf[12]) && (Pass_init[5] == Bluttooth_buf.gps_Rev_buf[13]) 000488 48e9 LDR r0,|L1.2096| 00048a 7901 LDRB r1,[r0,#4] ; Pass_init 00048c 48e6 LDR r0,|L1.2088| 00048e 7b40 LDRB r0,[r0,#0xd] 000490 4281 CMP r1,r0 000492 d126 BNE |L1.1250| 000494 48e6 LDR r0,|L1.2096| 000496 7941 LDRB r1,[r0,#5] ; Pass_init 000498 48e3 LDR r0,|L1.2088| 00049a 7b80 LDRB r0,[r0,#0xe] 00049c 4281 CMP r1,r0 00049e d120 BNE |L1.1250| ;;;295 && (Pass_init[6] == Bluttooth_buf.gps_Rev_buf[14]) && (Pass_init[7] == Bluttooth_buf.gps_Rev_buf[15]) 0004a0 48e3 LDR r0,|L1.2096| 0004a2 7981 LDRB r1,[r0,#6] ; Pass_init 0004a4 48e0 LDR r0,|L1.2088| 0004a6 7bc0 LDRB r0,[r0,#0xf] 0004a8 4281 CMP r1,r0 0004aa d11a BNE |L1.1250| 0004ac 48e0 LDR r0,|L1.2096| 0004ae 79c1 LDRB r1,[r0,#7] ; Pass_init 0004b0 48dd LDR r0,|L1.2088| 0004b2 7c00 LDRB r0,[r0,#0x10] 0004b4 4281 CMP r1,r0 0004b6 d114 BNE |L1.1250| ;;;296 && (Pass_init[8] == Bluttooth_buf.gps_Rev_buf[16]) && (Pass_init[9] == Bluttooth_buf.gps_Rev_buf[17]) 0004b8 48dd LDR r0,|L1.2096| 0004ba 7a01 LDRB r1,[r0,#8] ; Pass_init 0004bc 48da LDR r0,|L1.2088| 0004be 7c40 LDRB r0,[r0,#0x11] 0004c0 4281 CMP r1,r0 0004c2 d10e BNE |L1.1250| 0004c4 48da LDR r0,|L1.2096| 0004c6 7a41 LDRB r1,[r0,#9] ; Pass_init 0004c8 48d7 LDR r0,|L1.2088| 0004ca 7c80 LDRB r0,[r0,#0x12] 0004cc 4281 CMP r1,r0 0004ce d108 BNE |L1.1250| ;;;297 ) ;;;298 { ;;;299 sendbuffer[1] = 1; 0004d0 2001 MOVS r0,#1 0004d2 e001 B |L1.1240| 0004d4 e044 B |L1.1376| 0004d6 e3fd B |L1.3284| |L1.1240| 0004d8 f88d0039 STRB r0,[sp,#0x39] ;;;300 Pass_bit = 1; 0004dc 49d3 LDR r1,|L1.2092| 0004de 7008 STRB r0,[r1,#0] 0004e0 e004 B |L1.1260| |L1.1250| ;;;301 } ;;;302 else ;;;303 { ;;;304 sendbuffer[1] = 0; //1成功 0失败 0004e2 2000 MOVS r0,#0 0004e4 f88d0039 STRB r0,[sp,#0x39] ;;;305 Pass_bit = 0; 0004e8 49d0 LDR r1,|L1.2092| 0004ea 7008 STRB r0,[r1,#0] |L1.1260| ;;;306 } ;;;307 break; 0004ec e024 B |L1.1336| |L1.1262| ;;;308 case XIUG_PASS_NEW: ;;;309 { ;;;310 u8 i = 0; 0004ee 2400 MOVS r4,#0 ;;;311 memcpy(&Pass_init_Lase[4],&Bluttooth_buf.gps_Rev_buf[12],6); 0004f0 49d0 LDR r1,|L1.2100| 0004f2 48cd LDR r0,|L1.2088| 0004f4 1c40 ADDS r0,r0,#1 0004f6 68c2 LDR r2,[r0,#0xc] 0004f8 604a STR r2,[r1,#4] ; Pass_init_Lase 0004fa 8a00 LDRH r0,[r0,#0x10] 0004fc 8108 STRH r0,[r1,#8] ;;;312 if(Pass_bit == 1) 0004fe 48cb LDR r0,|L1.2092| 000500 7800 LDRB r0,[r0,#0] ; Pass_bit 000502 2801 CMP r0,#1 000504 d114 BNE |L1.1328| ;;;313 { ;;;314 for(i=0;i<6;i++) 000506 bf00 NOP 000508 e006 B |L1.1304| |L1.1290| ;;;315 { ;;;316 Pass_init[4+i] = Pass_init_Lase[4+i]; 00050a 1d20 ADDS r0,r4,#4 00050c 49c9 LDR r1,|L1.2100| 00050e 5c09 LDRB r1,[r1,r0] 000510 4ac7 LDR r2,|L1.2096| 000512 5411 STRB r1,[r2,r0] 000514 1c60 ADDS r0,r4,#1 ;314 000516 b2c4 UXTB r4,r0 ;314 |L1.1304| 000518 2c06 CMP r4,#6 ;314 00051a dbf6 BLT |L1.1290| ;;;317 } ;;;318 flash_write_sys_flag_ALL(Pass_init); 00051c 48c4 LDR r0,|L1.2096| 00051e f7fffffe BL flash_write_sys_flag_ALL ;;;319 Pass_bit = 0; 000522 2000 MOVS r0,#0 000524 49c1 LDR r1,|L1.2092| 000526 7008 STRB r0,[r1,#0] ;;;320 sendbuffer[1] = 1; 000528 2001 MOVS r0,#1 00052a f88d0039 STRB r0,[sp,#0x39] 00052e e002 B |L1.1334| |L1.1328| ;;;321 } ;;;322 else ;;;323 sendbuffer[1] = 0; 000530 2000 MOVS r0,#0 000532 f88d0039 STRB r0,[sp,#0x39] |L1.1334| ;;;324 } ;;;325 break; 000536 bf00 NOP |L1.1336| 000538 bf00 NOP ;292 ;;;326 } ;;;327 Type = 0x01; 00053a 2001 MOVS r0,#1 00053c 905a STR r0,[sp,#0x168] ;;;328 sendbuffer[0] = b_addr; 00053e f88d9038 STRB r9,[sp,#0x38] ;;;329 send_len = 2; 000542 f04f0a02 MOV r10,#2 ;;;330 /*发送数据*/ ;;;331 BlueSend_GpsFun(Bms_num,orde,Type,sendbuffer,send_len,recnum); 000546 9859 LDR r0,[sp,#0x164] 000548 ab0e ADD r3,sp,#0x38 00054a e9cda000 STRD r10,r0,[sp,#0] 00054e 9a5a LDR r2,[sp,#0x168] 000550 995b LDR r1,[sp,#0x16c] 000552 985d LDR r0,[sp,#0x174] 000554 f7fffffe BL BlueSend_GpsFun ;;;332 Beep_Flag = 1; 000558 2001 MOVS r0,#1 00055a 49b7 LDR r1,|L1.2104| 00055c 7008 STRB r0,[r1,#0] ;;;333 } ;;;334 break; 00055e e6d4 B |L1.778| |L1.1376| ;;;335 case REV_ALLORDE: //读MCU全部指令 ;;;336 if(BlueActivate == 1) 000560 48b6 LDR r0,|L1.2108| 000562 7800 LDRB r0,[r0,#0] ; BlueActivate 000564 2801 CMP r0,#1 000566 d17c BNE |L1.1634| ;;;337 { ;;;338 u32 sumVol = 0; 000568 2000 MOVS r0,#0 00056a 9009 STR r0,[sp,#0x24] ;;;339 u16 Out_curr = 0; //放电电流 单位:0.01A 00056c 4683 MOV r11,r0 ;;;340 u16 Chg_curr = 0; 00056e 9008 STR r0,[sp,#0x20] ;;;341 u16 temp = 0; 000570 2400 MOVS r4,#0 ;;;342 ;;;343 if(Ranjianyinjian == 0) 000572 48b3 LDR r0,|L1.2112| 000574 7800 LDRB r0,[r0,#0] ; Ranjianyinjian 000576 b950 CBNZ r0,|L1.1422| ;;;344 { ;;;345 Send_TString_BMS(Bluttooth_buf.gps_Rev_buf,data_len+2); 000578 1cb1 ADDS r1,r6,#2 00057a 48ab LDR r0,|L1.2088| 00057c 1c40 ADDS r0,r0,#1 00057e f7fffffe BL Send_TString_BMS ;;;346 Bluetooth_bit = 1; 000582 2001 MOVS r0,#1 000584 49af LDR r1,|L1.2116| 000586 7008 STRB r0,[r1,#0] ;;;347 Beep_Flag = 1; 000588 49ab LDR r1,|L1.2104| 00058a 7008 STRB r0,[r1,#0] |L1.1420| 00058c e3fd B |L1.3466| |L1.1422| ;;;348 } ;;;349 ;;;350 else if(Ranjianyinjian == 1) 00058e 48ac LDR r0,|L1.2112| 000590 7800 LDRB r0,[r0,#0] ; Ranjianyinjian 000592 2801 CMP r0,#1 000594 d1fa BNE |L1.1420| ;;;351 { ;;;352 u8 i = 0; 000596 2500 MOVS r5,#0 ;;;353 Type = 0x01; //应答 000598 905a STR r0,[sp,#0x168] ;;;354 memset(sendbuffer,0,sizeof(sendbuffer)); //数据清零 00059a f44f7196 MOV r1,#0x12c 00059e a80e ADD r0,sp,#0x38 0005a0 f7fffffe BL __aeabi_memclr4 ;;;355 Send_TString_BMS(stop_orde,22); //发送给MCU停止对309读写 0005a4 2116 MOVS r1,#0x16 0005a6 48a8 LDR r0,|L1.2120| 0005a8 f7fffffe BL Send_TString_BMS ;;;356 Delay_ms(100); 0005ac 2064 MOVS r0,#0x64 0005ae f7fffffe BL Delay_ms ;;;357 ;;;358 if(Conf_309num==1) 0005b2 48a6 LDR r0,|L1.2124| 0005b4 7800 LDRB r0,[r0,#0] ; Conf_309num 0005b6 2801 CMP r0,#1 0005b8 d112 BNE |L1.1504| ;;;359 { ;;;360 MTPRead_fun_1( EEPROM_SCONF1, 2, &Rev_309_buf_A[0]); 0005ba aa0d ADD r2,sp,#0x34 0005bc 2102 MOVS r1,#2 0005be 2000 MOVS r0,#0 0005c0 f7fffffe BL MTPRead_fun_1 ;;;361 data_309_A.EEPROMWriRev_309.Sconf1.datas = Rev_309_buf_A[0]; 0005c4 f89d0034 LDRB r0,[sp,#0x34] 0005c8 49a1 LDR r1,|L1.2128| 0005ca 7008 STRB r0,[r1,#0] ;;;362 A_Cellnum = (data_309_A.EEPROMWriRev_309.Sconf1.bits.cn3_cn0 & 0x0f); 0005cc 4608 MOV r0,r1 0005ce 7800 LDRB r0,[r0,#0] ; data_309_A 0005d0 f000070f AND r7,r0,#0xf ;;;363 if(A_Cellnum<5) 0005d4 2f05 CMP r7,#5 0005d6 da00 BGE |L1.1498| ;;;364 A_Cellnum = 16; 0005d8 2710 MOVS r7,#0x10 |L1.1498| ;;;365 B_Cellnum = 0; 0005da f04f0800 MOV r8,#0 0005de e025 B |L1.1580| |L1.1504| ;;;366 } ;;;367 ;;;368 else if(Conf_309num==2) 0005e0 489a LDR r0,|L1.2124| 0005e2 7800 LDRB r0,[r0,#0] ; Conf_309num 0005e4 2802 CMP r0,#2 0005e6 d121 BNE |L1.1580| ;;;369 { ;;;370 MTPRead_fun_1( EEPROM_SCONF1, 2, &Rev_309_buf_A[0]); 0005e8 aa0d ADD r2,sp,#0x34 0005ea 2102 MOVS r1,#2 0005ec 2000 MOVS r0,#0 0005ee f7fffffe BL MTPRead_fun_1 ;;;371 data_309_A.EEPROMWriRev_309.Sconf1.datas = Rev_309_buf_A[0]; 0005f2 f89d0034 LDRB r0,[sp,#0x34] 0005f6 4996 LDR r1,|L1.2128| 0005f8 7008 STRB r0,[r1,#0] ;;;372 A_Cellnum = (data_309_A.EEPROMWriRev_309.Sconf1.bits.cn3_cn0 & 0x0f); 0005fa 4608 MOV r0,r1 0005fc 7800 LDRB r0,[r0,#0] ; data_309_A 0005fe f000070f AND r7,r0,#0xf ;;;373 if(A_Cellnum<5) 000602 2f05 CMP r7,#5 000604 da00 BGE |L1.1544| ;;;374 A_Cellnum = 16; 000606 2710 MOVS r7,#0x10 |L1.1544| ;;;375 ;;;376 MTPRead_fun_2( EEPROM_SCONF1, 2, &Rev_309_buf_B[0]); 000608 aa0c ADD r2,sp,#0x30 00060a 2102 MOVS r1,#2 00060c 2000 MOVS r0,#0 00060e f7fffffe BL MTPRead_fun_2 ;;;377 data_309_B.EEPROMWriRev_309.Sconf1.datas = Rev_309_buf_B[0]; 000612 f89d0030 LDRB r0,[sp,#0x30] 000616 498f LDR r1,|L1.2132| 000618 7008 STRB r0,[r1,#0] ;;;378 B_Cellnum = (data_309_B.EEPROMWriRev_309.Sconf1.bits.cn3_cn0 & 0x0f); 00061a 4608 MOV r0,r1 00061c 7800 LDRB r0,[r0,#0] ; data_309_B 00061e f000080f AND r8,r0,#0xf ;;;379 if(B_Cellnum<5) 000622 f1b80f05 CMP r8,#5 000626 da01 BGE |L1.1580| ;;;380 B_Cellnum = 0; 000628 f04f0800 MOV r8,#0 |L1.1580| ;;;381 } ;;;382 ;;;383 ;;;384 MTPRead_fun_1( MTP_CONF, 1, &Rev_309_buf_A[0]); 00062c aa0d ADD r2,sp,#0x34 00062e 2101 MOVS r1,#1 000630 2040 MOVS r0,#0x40 000632 f7fffffe BL MTPRead_fun_1 ;;;385 data_309_A.RAM_WrieRev_309.Conf.datas = Rev_309_buf_A[0]; 000636 f89d0034 LDRB r0,[sp,#0x34] 00063a 4985 LDR r1,|L1.2128| 00063c 7688 STRB r0,[r1,#0x1a] ;;;386 ;;;387 RAM_309data.Conf.datas = data_309_A.RAM_WrieRev_309.Conf.datas; 00063e 4608 MOV r0,r1 000640 7e80 LDRB r0,[r0,#0x1a] ; data_309_A 000642 4985 LDR r1,|L1.2136| 000644 7008 STRB r0,[r1,#0] ;;;388 ;;;389 if(Conf_309num==1) 000646 4881 LDR r0,|L1.2124| 000648 7800 LDRB r0,[r0,#0] ; Conf_309num 00064a 2801 CMP r0,#1 00064c d115 BNE |L1.1658| ;;;390 { ;;;391 MTPRead_fun_1( MTP_BALANCEH, 2, &Rev_309_buf_A[0]); 00064e aa0d ADD r2,sp,#0x34 000650 2102 MOVS r1,#2 000652 2041 MOVS r0,#0x41 000654 f7fffffe BL MTPRead_fun_1 ;;;392 data_309_A.RAM_WrieRev_309.Balanceh_l.datas = (Rev_309_buf_A[0] << 8) | Rev_309_buf_A[1]; 000658 f89d0035 LDRB r0,[sp,#0x35] 00065c f89d1034 LDRB r1,[sp,#0x34] 000660 e000 B |L1.1636| |L1.1634| 000662 e3f7 B |L1.3668| |L1.1636| 000664 ea402101 ORR r1,r0,r1,LSL #8 000668 4879 LDR r0,|L1.2128| 00066a 8381 STRH r1,[r0,#0x1c] ;;;393 RAM_309data.Balanceh_l.datas = 0; 00066c 2000 MOVS r0,#0 00066e 497a LDR r1,|L1.2136| 000670 6048 STR r0,[r1,#4] ; RAM_309data ;;;394 RAM_309data.Balanceh_l.datas = data_309_A.RAM_WrieRev_309.Balanceh_l.datas; 000672 4877 LDR r0,|L1.2128| 000674 8b80 LDRH r0,[r0,#0x1c] 000676 6048 STR r0,[r1,#4] ; RAM_309data 000678 e028 B |L1.1740| |L1.1658| ;;;395 } ;;;396 else if(Conf_309num==2) 00067a 4874 LDR r0,|L1.2124| 00067c 7800 LDRB r0,[r0,#0] ; Conf_309num 00067e 2802 CMP r0,#2 000680 d124 BNE |L1.1740| ;;;397 { ;;;398 MTPRead_fun_1( MTP_BALANCEH, 2, &Rev_309_buf_A[0]); 000682 aa0d ADD r2,sp,#0x34 000684 2102 MOVS r1,#2 000686 2041 MOVS r0,#0x41 000688 f7fffffe BL MTPRead_fun_1 ;;;399 data_309_A.RAM_WrieRev_309.Balanceh_l.datas = (Rev_309_buf_A[0] << 8) | Rev_309_buf_A[1]; 00068c f89d0035 LDRB r0,[sp,#0x35] 000690 f89d1034 LDRB r1,[sp,#0x34] 000694 ea402101 ORR r1,r0,r1,LSL #8 000698 486d LDR r0,|L1.2128| 00069a 8381 STRH r1,[r0,#0x1c] ;;;400 MTPRead_fun_2( MTP_BALANCEH, 2, &Rev_309_buf_B[0]); 00069c aa0c ADD r2,sp,#0x30 00069e 2102 MOVS r1,#2 0006a0 2041 MOVS r0,#0x41 0006a2 f7fffffe BL MTPRead_fun_2 ;;;401 data_309_B.RAM_WrieRev_309.Balanceh_l.datas = (Rev_309_buf_B[0] << 8) | Rev_309_buf_B[1]; 0006a6 f89d0031 LDRB r0,[sp,#0x31] 0006aa f89d1030 LDRB r1,[sp,#0x30] 0006ae ea402101 ORR r1,r0,r1,LSL #8 0006b2 4868 LDR r0,|L1.2132| 0006b4 8381 STRH r1,[r0,#0x1c] ;;;402 RAM_309data.Balanceh_l.datas = 0; 0006b6 2000 MOVS r0,#0 0006b8 4967 LDR r1,|L1.2136| 0006ba 6048 STR r0,[r1,#4] ; RAM_309data ;;;403 RAM_309data.Balanceh_l.datas = (data_309_B.RAM_WrieRev_309.Balanceh_l.datas << A_Cellnum) | data_309_A.RAM_WrieRev_309.Balanceh_l.datas; 0006bc 4865 LDR r0,|L1.2132| 0006be 8b80 LDRH r0,[r0,#0x1c] 0006c0 40b8 LSLS r0,r0,r7 0006c2 4963 LDR r1,|L1.2128| 0006c4 8b89 LDRH r1,[r1,#0x1c] 0006c6 4308 ORRS r0,r0,r1 0006c8 4963 LDR r1,|L1.2136| 0006ca 6048 STR r0,[r1,#4] ; RAM_309data |L1.1740| ;;;404 } ;;;405 ;;;406 if(Conf_309num==1) 0006cc 485f LDR r0,|L1.2124| 0006ce 7800 LDRB r0,[r0,#0] ; Conf_309num 0006d0 2801 CMP r0,#1 0006d2 d126 BNE |L1.1826| ;;;407 { ;;;408 MTPRead_fun_1( MTP_BSTATUS1, 1, &Rev_309_buf_A[0]); 0006d4 aa0d ADD r2,sp,#0x34 0006d6 2101 MOVS r1,#1 0006d8 2043 MOVS r0,#0x43 0006da f7fffffe BL MTPRead_fun_1 ;;;409 data_309_A.RAM_WrieRev_309.Bstrtus1.datas = Rev_309_buf_A[0]; 0006de f89d1034 LDRB r1,[sp,#0x34] 0006e2 485b LDR r0,|L1.2128| 0006e4 7781 STRB r1,[r0,#0x1e] ;;;410 RAM_309data.Bstrtus1.datas = data_309_A.RAM_WrieRev_309.Bstrtus1.datas; 0006e6 7f80 LDRB r0,[r0,#0x1e] 0006e8 495b LDR r1,|L1.2136| 0006ea 7208 STRB r0,[r1,#8] ;;;411 ;;;412 MTPRead_fun_1( MTP_BSTATUS2, 1, &Rev_309_buf_A[0]); 0006ec aa0d ADD r2,sp,#0x34 0006ee 2101 MOVS r1,#1 0006f0 2044 MOVS r0,#0x44 0006f2 f7fffffe BL MTPRead_fun_1 ;;;413 data_309_A.RAM_WrieRev_309.Bstrtus2.datas = Rev_309_buf_A[0]; 0006f6 f89d1034 LDRB r1,[sp,#0x34] 0006fa 4855 LDR r0,|L1.2128| 0006fc 77c1 STRB r1,[r0,#0x1f] ;;;414 RAM_309data.Bstrtus2.datas = data_309_A.RAM_WrieRev_309.Bstrtus2.datas; 0006fe 7fc0 LDRB r0,[r0,#0x1f] 000700 4955 LDR r1,|L1.2136| 000702 7248 STRB r0,[r1,#9] ;;;415 ;;;416 MTPRead_fun_1( MTP_BSTATUS3, 1, &Rev_309_buf_A[0]); 000704 aa0d ADD r2,sp,#0x34 000706 2101 MOVS r1,#1 000708 2045 MOVS r0,#0x45 00070a f7fffffe BL MTPRead_fun_1 ;;;417 data_309_A.RAM_WrieRev_309.Bstrtus3.datas = Rev_309_buf_A[0]; 00070e f89d1034 LDRB r1,[sp,#0x34] 000712 484f LDR r0,|L1.2128| 000714 f8801020 STRB r1,[r0,#0x20] ;;;418 RAM_309data.Bstrtus3.datas = data_309_A.RAM_WrieRev_309.Bstrtus3.datas; 000718 f8900020 LDRB r0,[r0,#0x20] 00071c 494e LDR r1,|L1.2136| 00071e 7288 STRB r0,[r1,#0xa] 000720 e052 B |L1.1992| |L1.1826| ;;;419 } ;;;420 ;;;421 else if(Conf_309num==2) 000722 484a LDR r0,|L1.2124| 000724 7800 LDRB r0,[r0,#0] ; Conf_309num 000726 2802 CMP r0,#2 000728 d14e BNE |L1.1992| ;;;422 { ;;;423 MTPRead_fun_1( MTP_BSTATUS1, 1, &Rev_309_buf_A[0]); 00072a aa0d ADD r2,sp,#0x34 00072c 2101 MOVS r1,#1 00072e 2043 MOVS r0,#0x43 000730 f7fffffe BL MTPRead_fun_1 ;;;424 data_309_A.RAM_WrieRev_309.Bstrtus1.datas = Rev_309_buf_A[0]; 000734 f89d1034 LDRB r1,[sp,#0x34] 000738 4845 LDR r0,|L1.2128| 00073a 7781 STRB r1,[r0,#0x1e] ;;;425 MTPRead_fun_2( MTP_BSTATUS1, 1, &Rev_309_buf_B[0]); 00073c aa0c ADD r2,sp,#0x30 00073e 2101 MOVS r1,#1 000740 2043 MOVS r0,#0x43 000742 f7fffffe BL MTPRead_fun_2 ;;;426 data_309_B.RAM_WrieRev_309.Bstrtus1.datas = Rev_309_buf_B[0]; 000746 f89d1030 LDRB r1,[sp,#0x30] 00074a 4842 LDR r0,|L1.2132| 00074c 7781 STRB r1,[r0,#0x1e] ;;;427 RAM_309data.Bstrtus1.datas = data_309_A.RAM_WrieRev_309.Bstrtus1.datas | data_309_B.RAM_WrieRev_309.Bstrtus1.datas; 00074e 4840 LDR r0,|L1.2128| 000750 7f80 LDRB r0,[r0,#0x1e] 000752 4940 LDR r1,|L1.2132| 000754 7f89 LDRB r1,[r1,#0x1e] 000756 4308 ORRS r0,r0,r1 000758 493f LDR r1,|L1.2136| 00075a 7208 STRB r0,[r1,#8] ;;;428 ;;;429 MTPRead_fun_1( MTP_BSTATUS2, 1, &Rev_309_buf_A[0]); 00075c aa0d ADD r2,sp,#0x34 00075e 2101 MOVS r1,#1 000760 2044 MOVS r0,#0x44 000762 f7fffffe BL MTPRead_fun_1 ;;;430 data_309_A.RAM_WrieRev_309.Bstrtus2.datas = Rev_309_buf_A[0]; 000766 f89d1034 LDRB r1,[sp,#0x34] 00076a 4839 LDR r0,|L1.2128| 00076c 77c1 STRB r1,[r0,#0x1f] ;;;431 MTPRead_fun_2( MTP_BSTATUS2, 1, &Rev_309_buf_B[0]); 00076e aa0c ADD r2,sp,#0x30 000770 2101 MOVS r1,#1 000772 2044 MOVS r0,#0x44 000774 f7fffffe BL MTPRead_fun_2 ;;;432 data_309_B.RAM_WrieRev_309.Bstrtus2.datas = Rev_309_buf_B[0]; 000778 f89d1030 LDRB r1,[sp,#0x30] 00077c 4835 LDR r0,|L1.2132| 00077e 77c1 STRB r1,[r0,#0x1f] ;;;433 RAM_309data.Bstrtus2.datas = data_309_A.RAM_WrieRev_309.Bstrtus2.datas | data_309_B.RAM_WrieRev_309.Bstrtus2.datas; 000780 4833 LDR r0,|L1.2128| 000782 7fc0 LDRB r0,[r0,#0x1f] 000784 4933 LDR r1,|L1.2132| 000786 7fc9 LDRB r1,[r1,#0x1f] 000788 4308 ORRS r0,r0,r1 00078a 4933 LDR r1,|L1.2136| 00078c 7248 STRB r0,[r1,#9] ;;;434 ;;;435 MTPRead_fun_1( MTP_BSTATUS3, 1, &Rev_309_buf_A[0]); 00078e aa0d ADD r2,sp,#0x34 000790 2101 MOVS r1,#1 000792 2045 MOVS r0,#0x45 000794 f7fffffe BL MTPRead_fun_1 ;;;436 data_309_A.RAM_WrieRev_309.Bstrtus3.datas = Rev_309_buf_A[0]; 000798 f89d1034 LDRB r1,[sp,#0x34] 00079c 482c LDR r0,|L1.2128| 00079e f8801020 STRB r1,[r0,#0x20] ;;;437 MTPRead_fun_2( MTP_BSTATUS3, 1, &Rev_309_buf_B[0]); 0007a2 aa0c ADD r2,sp,#0x30 0007a4 2101 MOVS r1,#1 0007a6 2045 MOVS r0,#0x45 0007a8 f7fffffe BL MTPRead_fun_2 ;;;438 data_309_B.RAM_WrieRev_309.Bstrtus3.datas = Rev_309_buf_B[0]; 0007ac f89d1030 LDRB r1,[sp,#0x30] 0007b0 4828 LDR r0,|L1.2132| 0007b2 f8801020 STRB r1,[r0,#0x20] ;;;439 RAM_309data.Bstrtus3.datas = data_309_A.RAM_WrieRev_309.Bstrtus3.datas | data_309_B.RAM_WrieRev_309.Bstrtus3.datas; 0007b6 4826 LDR r0,|L1.2128| 0007b8 f8900020 LDRB r0,[r0,#0x20] 0007bc 4925 LDR r1,|L1.2132| 0007be f8911020 LDRB r1,[r1,#0x20] 0007c2 4308 ORRS r0,r0,r1 0007c4 4924 LDR r1,|L1.2136| 0007c6 7288 STRB r0,[r1,#0xa] |L1.1992| ;;;440 } ;;;441 ;;;442 ;;;443 MTPRead_fun_1( MTP_TEMP1, 2, &Rev_309_buf_A[0]); 0007c8 aa0d ADD r2,sp,#0x34 0007ca 2102 MOVS r1,#2 0007cc 2046 MOVS r0,#0x46 0007ce f7fffffe BL MTPRead_fun_1 ;;;444 data_309_A.RAM_WrieRev_309.TEMP1h_l = (Rev_309_buf_A[0] << 8) | Rev_309_buf_A[1]; 0007d2 f89d0035 LDRB r0,[sp,#0x35] 0007d6 f89d1034 LDRB r1,[sp,#0x34] 0007da ea402101 ORR r1,r0,r1,LSL #8 0007de 481c LDR r0,|L1.2128| 0007e0 8441 STRH r1,[r0,#0x22] ;;;445 RAM_309data.TEMP1h_l = data_309_A.RAM_WrieRev_309.TEMP1h_l; 0007e2 8c40 LDRH r0,[r0,#0x22] 0007e4 491c LDR r1,|L1.2136| 0007e6 8188 STRH r0,[r1,#0xc] ;;;446 ;;;447 MTPRead_fun_1( MTP_TEMP2, 2, &Rev_309_buf_A[0]); 0007e8 aa0d ADD r2,sp,#0x34 0007ea 2102 MOVS r1,#2 0007ec 2048 MOVS r0,#0x48 0007ee f7fffffe BL MTPRead_fun_1 ;;;448 data_309_A.RAM_WrieRev_309.TEMP2h_l = (Rev_309_buf_A[0] << 8) | Rev_309_buf_A[1]; 0007f2 f89d0035 LDRB r0,[sp,#0x35] 0007f6 f89d1034 LDRB r1,[sp,#0x34] 0007fa ea402101 ORR r1,r0,r1,LSL #8 0007fe 4814 LDR r0,|L1.2128| 000800 8481 STRH r1,[r0,#0x24] ;;;449 RAM_309data.TEMP2h_l = data_309_A.RAM_WrieRev_309.TEMP2h_l; 000802 8c80 LDRH r0,[r0,#0x24] 000804 4914 LDR r1,|L1.2136| 000806 81c8 STRH r0,[r1,#0xe] ;;;450 ;;;451 MTPRead_fun_1( MTP_TEMP3, 2, &Rev_309_buf_A[0]); 000808 aa0d ADD r2,sp,#0x34 00080a 2102 MOVS r1,#2 00080c 204a MOVS r0,#0x4a 00080e f7fffffe BL MTPRead_fun_1 ;;;452 data_309_A.RAM_WrieRev_309.TEMP3h_l = (Rev_309_buf_A[0] << 8) | Rev_309_buf_A[1]; 000812 f89d0035 LDRB r0,[sp,#0x35] 000816 f89d1034 LDRB r1,[sp,#0x34] 00081a ea402101 ORR r1,r0,r1,LSL #8 00081e 480c LDR r0,|L1.2128| 000820 84c1 STRH r1,[r0,#0x26] ;;;453 RAM_309data.TEMP3h_l = data_309_A.RAM_WrieRev_309.TEMP3h_l; 000822 e01b B |L1.2140| |L1.2084| DCD Pass_CJ |L1.2088| DCD Bluttooth_buf |L1.2092| DCD Pass_bit |L1.2096| DCD Pass_init |L1.2100| DCD Pass_init_Lase |L1.2104| DCD Beep_Flag |L1.2108| DCD BlueActivate |L1.2112| DCD Ranjianyinjian |L1.2116| DCD Bluetooth_bit |L1.2120| DCD stop_orde |L1.2124| DCD Conf_309num |L1.2128| DCD data_309_A |L1.2132| DCD data_309_B |L1.2136| DCD RAM_309data |L1.2140| 00085c 8cc0 LDRH r0,[r0,#0x26] 00085e 49fe LDR r1,|L1.3160| 000860 8208 STRH r0,[r1,#0x10] ;;;454 ;;;455 MTPRead_fun_1( MTP_CUR, 2, &Rev_309_buf_A[0]); 000862 aa0d ADD r2,sp,#0x34 000864 2102 MOVS r1,#2 000866 204c MOVS r0,#0x4c 000868 f7fffffe BL MTPRead_fun_1 ;;;456 data_309_A.RAM_WrieRev_309.Curh_l = (Rev_309_buf_A[0] << 8) | Rev_309_buf_A[1]; 00086c f89d0035 LDRB r0,[sp,#0x35] 000870 f89d1034 LDRB r1,[sp,#0x34] 000874 ea402101 ORR r1,r0,r1,LSL #8 000878 48f8 LDR r0,|L1.3164| 00087a 8501 STRH r1,[r0,#0x28] ;;;457 RAM_309data.Curh_l = data_309_A.RAM_WrieRev_309.Curh_l; 00087c 8d00 LDRH r0,[r0,#0x28] 00087e 49f6 LDR r1,|L1.3160| 000880 8248 STRH r0,[r1,#0x12] ;;;458 ;;;459 for(i=0;i> 8; 000b5a 483f LDR r0,|L1.3160| 000b5c 304c ADDS r0,r0,#0x4c 000b5e f8300015 LDRH r0,[r0,r5,LSL #1] 000b62 1201 ASRS r1,r0,#8 000b64 eb050245 ADD r2,r5,r5,LSL #1 000b68 4844 LDR r0,|L1.3196| 000b6a 4410 ADD r0,r0,r2 000b6c 7041 STRB r1,[r0,#1] ;;;519 blue_datas.Rev_data.Singcellvol[i][2] = RAM_309data.Cell_Num.cellvol[i]; 000b6e 483a LDR r0,|L1.3160| 000b70 304c ADDS r0,r0,#0x4c 000b72 f8101015 LDRB r1,[r0,r5,LSL #1] 000b76 eb050245 ADD r2,r5,r5,LSL #1 000b7a 4840 LDR r0,|L1.3196| 000b7c 4410 ADD r0,r0,r2 000b7e 7081 STRB r1,[r0,#2] 000b80 1c68 ADDS r0,r5,#1 ;515 000b82 b2c5 UXTB r5,r0 ;515 |L1.2948| 000b84 eb070008 ADD r0,r7,r8 ;515 000b88 42a8 CMP r0,r5 ;515 000b8a dce0 BGT |L1.2894| ;;;520 } ;;;521 if((short)RAM_309data.T3_tmp >= 0) 000b8c 4832 LDR r0,|L1.3160| 000b8e f890004b LDRB r0,[r0,#0x4b] ; RAM_309data 000b92 2800 CMP r0,#0 000b94 db07 BLT |L1.2982| ;;;522 blue_datas.Rev_data.MosTmp = RAM_309data.T3_tmp; //MOS管温度 000b96 4830 LDR r0,|L1.3160| 000b98 f890004b LDRB r0,[r0,#0x4b] ; RAM_309data 000b9c 4937 LDR r1,|L1.3196| 000b9e 390e SUBS r1,r1,#0xe 000ba0 f8a1006e STRH r0,[r1,#0x6e] 000ba4 e008 B |L1.3000| |L1.2982| ;;;523 else ;;;524 blue_datas.Rev_data.MosTmp = 100 - RAM_309data.T3_tmp; //MOS管温度 000ba6 482c LDR r0,|L1.3160| 000ba8 f890004b LDRB r0,[r0,#0x4b] ; RAM_309data 000bac f1c00064 RSB r0,r0,#0x64 000bb0 4932 LDR r1,|L1.3196| 000bb2 390e SUBS r1,r1,#0xe 000bb4 f8a1006e STRH r0,[r1,#0x6e] |L1.3000| ;;;525 ;;;526 if((short)RAM_309data.T2_tmp >= 0) 000bb8 4827 LDR r0,|L1.3160| 000bba f890004a LDRB r0,[r0,#0x4a] ; RAM_309data 000bbe 2800 CMP r0,#0 000bc0 db07 BLT |L1.3026| ;;;527 blue_datas.Rev_data.QualiTmp = RAM_309data.T2_tmp; //电池箱内温度 000bc2 4825 LDR r0,|L1.3160| 000bc4 f890004a LDRB r0,[r0,#0x4a] ; RAM_309data 000bc8 492c LDR r1,|L1.3196| 000bca 390e SUBS r1,r1,#0xe 000bcc f8a10070 STRH r0,[r1,#0x70] 000bd0 e008 B |L1.3044| |L1.3026| ;;;528 else ;;;529 blue_datas.Rev_data.QualiTmp = 100 - RAM_309data.T2_tmp; //电池箱内温度 000bd2 4821 LDR r0,|L1.3160| 000bd4 f890004a LDRB r0,[r0,#0x4a] ; RAM_309data 000bd8 f1c00064 RSB r0,r0,#0x64 000bdc 4927 LDR r1,|L1.3196| 000bde 390e SUBS r1,r1,#0xe 000be0 f8a10070 STRH r0,[r1,#0x70] |L1.3044| ;;;530 ;;;531 if((short)RAM_309data.T1_tmp >= 0) 000be4 481c LDR r0,|L1.3160| 000be6 f8900049 LDRB r0,[r0,#0x49] ; RAM_309data 000bea 2800 CMP r0,#0 000bec db07 BLT |L1.3070| ;;;532 blue_datas.Rev_data.CellTmp = RAM_309data.T1_tmp; //电池温度 000bee 481a LDR r0,|L1.3160| 000bf0 f8900049 LDRB r0,[r0,#0x49] ; RAM_309data 000bf4 4921 LDR r1,|L1.3196| 000bf6 390e SUBS r1,r1,#0xe 000bf8 f8a10072 STRH r0,[r1,#0x72] 000bfc e008 B |L1.3088| |L1.3070| ;;;533 else ;;;534 blue_datas.Rev_data.CellTmp = 100 - RAM_309data.T1_tmp; //电池温度 000bfe 4816 LDR r0,|L1.3160| 000c00 f8900049 LDRB r0,[r0,#0x49] ; RAM_309data 000c04 f1c00064 RSB r0,r0,#0x64 000c08 491c LDR r1,|L1.3196| 000c0a 390e SUBS r1,r1,#0xe 000c0c f8a10072 STRH r0,[r1,#0x72] |L1.3088| ;;;535 ;;;536 for(i = 0; i < (A_Cellnum + B_Cellnum); i++) 000c10 2500 MOVS r5,#0 000c12 e008 B |L1.3110| |L1.3092| ;;;537 { ;;;538 sumVol +=RAM_309data.Cell_Num.cellvol[i]; 000c14 4810 LDR r0,|L1.3160| 000c16 304c ADDS r0,r0,#0x4c 000c18 f8301015 LDRH r1,[r0,r5,LSL #1] 000c1c 9809 LDR r0,[sp,#0x24] 000c1e 4408 ADD r0,r0,r1 000c20 9009 STR r0,[sp,#0x24] 000c22 1c68 ADDS r0,r5,#1 ;536 000c24 b2c5 UXTB r5,r0 ;536 |L1.3110| 000c26 eb070008 ADD r0,r7,r8 ;536 000c2a 42a8 CMP r0,r5 ;536 000c2c dcf2 BGT |L1.3092| ;;;539 } ;;;540 blue_datas.Rev_data.CellZvol = sumVol/10.0; //总电压 000c2e 9809 LDR r0,[sp,#0x24] 000c30 f7fffffe BL __aeabi_ui2d 000c34 2200 MOVS r2,#0 000c36 4b12 LDR r3,|L1.3200| 000c38 e9cd0104 STRD r0,r1,[sp,#0x10] 000c3c f7fffffe BL __aeabi_ddiv 000c40 e9cd0106 STRD r0,r1,[sp,#0x18] 000c44 f7fffffe BL __aeabi_d2uiz 000c48 490c LDR r1,|L1.3196| 000c4a 390e SUBS r1,r1,#0xe 000c4c f8a10074 STRH r0,[r1,#0x74] ;;;541 ;;;542 if(data_309_A.RAM_WrieRev_309.Curh_l & 0x8000) //表示放电 000c50 4802 LDR r0,|L1.3164| 000c52 8d00 LDRH r0,[r0,#0x28] 000c54 e016 B |L1.3204| 000c56 0000 DCW 0x0000 |L1.3160| DCD RAM_309data |L1.3164| DCD data_309_A |L1.3168| DCD 0x9999999a |L1.3172| DCD 0x3fa99999 |L1.3176| DCD 0x401b3333 |L1.3180| DCD 0x3ff00000 |L1.3184| DCD 0x447a0000 |L1.3188| DCD 0x083126e9 |L1.3192| DCD 0x40199cac |L1.3196| DCD blue_datas+0xe |L1.3200| DCD 0x40240000 |L1.3204| 000c84 f4004000 AND r0,r0,#0x8000 000c88 b328 CBZ r0,|L1.3286| ;;;543 { ;;;544 Out_curr = (65535-data_309_A.RAM_WrieRev_309.Curh_l)*200.0/(26837*0.0010) / 10.0; 000c8a 49fe LDR r1,|L1.4228| 000c8c 8d09 LDRH r1,[r1,#0x28] 000c8e f64f72ff MOV r2,#0xffff 000c92 1a50 SUBS r0,r2,r1 000c94 f7fffffe BL __aeabi_i2d 000c98 2200 MOVS r2,#0 000c9a 4bfb LDR r3,|L1.4232| 000c9c e9cd0100 STRD r0,r1,[sp,#0] 000ca0 f7fffffe BL __aeabi_dmul 000ca4 4af9 LDR r2,|L1.4236| 000ca6 4bfa LDR r3,|L1.4240| 000ca8 e9cd0102 STRD r0,r1,[sp,#8] 000cac f7fffffe BL __aeabi_ddiv 000cb0 2200 MOVS r2,#0 000cb2 4bf8 LDR r3,|L1.4244| 000cb4 e9cd0104 STRD r0,r1,[sp,#0x10] 000cb8 f7fffffe BL __aeabi_ddiv 000cbc e9cd0106 STRD r0,r1,[sp,#0x18] 000cc0 f7fffffe BL __aeabi_d2uiz 000cc4 fa1ffb80 UXTH r11,r0 ;;;545 if(Out_curr <= 80) Out_curr = 0; 000cc8 f1bb0f50 CMP r11,#0x50 000ccc dc01 BGT |L1.3282| 000cce f04f0b00 MOV r11,#0 |L1.3282| ;;;546 blue_datas.Rev_data.Currdata = Out_curr + 10000; //电流 000cd2 e001 B |L1.3288| |L1.3284| 000cd4 e2ef B |L1.4790| |L1.3286| 000cd6 e006 B |L1.3302| |L1.3288| 000cd8 f2427010 MOV r0,#0x2710 000cdc 4458 ADD r0,r0,r11 000cde 49ee LDR r1,|L1.4248| 000ce0 f8a10076 STRH r0,[r1,#0x76] 000ce4 e027 B |L1.3382| |L1.3302| ;;;547 } ;;;548 else //表示充电 ;;;549 { ;;;550 Chg_curr = data_309_A.RAM_WrieRev_309.Curh_l * 200.0/(26837*0.0010) / 10.0; 000ce6 49e7 LDR r1,|L1.4228| 000ce8 8d08 LDRH r0,[r1,#0x28] 000cea f7fffffe BL __aeabi_ui2d 000cee 2200 MOVS r2,#0 000cf0 4be5 LDR r3,|L1.4232| 000cf2 e9cd0100 STRD r0,r1,[sp,#0] 000cf6 f7fffffe BL __aeabi_dmul 000cfa 4ae4 LDR r2,|L1.4236| 000cfc 4be4 LDR r3,|L1.4240| 000cfe e9cd0102 STRD r0,r1,[sp,#8] 000d02 f7fffffe BL __aeabi_ddiv 000d06 2200 MOVS r2,#0 000d08 4be2 LDR r3,|L1.4244| 000d0a e9cd0104 STRD r0,r1,[sp,#0x10] 000d0e f7fffffe BL __aeabi_ddiv 000d12 e9cd0106 STRD r0,r1,[sp,#0x18] 000d16 f7fffffe BL __aeabi_d2uiz 000d1a b280 UXTH r0,r0 000d1c 9008 STR r0,[sp,#0x20] ;;;551 if(Chg_curr <= 50) Chg_curr = 0; 000d1e 9808 LDR r0,[sp,#0x20] 000d20 2832 CMP r0,#0x32 000d22 dc01 BGT |L1.3368| 000d24 2000 MOVS r0,#0 000d26 9008 STR r0,[sp,#0x20] |L1.3368| ;;;552 blue_datas.Rev_data.Currdata = 10000 - Chg_curr; 000d28 f2427110 MOV r1,#0x2710 000d2c 9808 LDR r0,[sp,#0x20] 000d2e 1a08 SUBS r0,r1,r0 000d30 49d9 LDR r1,|L1.4248| 000d32 f8a10076 STRH r0,[r1,#0x76] |L1.3382| ;;;553 } ;;;554 blue_datas.Rev_data.Soc = 50; //SOC 000d36 2032 MOVS r0,#0x32 000d38 49d7 LDR r1,|L1.4248| 000d3a f8810078 STRB r0,[r1,#0x78] ;;;555 blue_datas.Rev_data.CellTmpSors = 0x03; //默认2 000d3e 2003 MOVS r0,#3 000d40 f8810079 STRB r0,[r1,#0x79] ;;;556 blue_datas.Rev_data.Bms_rl = 40 * 100; //BMS校准电池容量 000d44 f44f607a MOV r0,#0xfa0 000d48 f8a1007c STRH r0,[r1,#0x7c] ;;;557 blue_datas.Rev_data.CellOutrl = 0; 000d4c 2000 MOVS r0,#0 000d4e f8c10080 STR r0,[r1,#0x80] ; blue_datas ;;;558 blue_datas.Rev_data.Cellusnum = 0; 000d52 f8a1007a STRH r0,[r1,#0x7a] ;;;559 blue_datas.Rev_data.CellZnum = A_Cellnum + B_Cellnum; 000d56 eb070008 ADD r0,r7,r8 000d5a f8a10084 STRH r0,[r1,#0x84] ;;;560 ;;;561 if(data_309_A.RAM_WrieRev_309.Bstrtus2.bits.OTD == 1 || data_309_A.RAM_WrieRev_309.Bstrtus2.bits.OTD == 1) 000d5e 48c9 LDR r0,|L1.4228| 000d60 7fc0 LDRB r0,[r0,#0x1f] 000d62 f3c000c0 UBFX r0,r0,#3,#1 000d66 b920 CBNZ r0,|L1.3442| 000d68 48c6 LDR r0,|L1.4228| 000d6a 7fc0 LDRB r0,[r0,#0x1f] 000d6c f3c000c0 UBFX r0,r0,#3,#1 000d70 b188 CBZ r0,|L1.3478| |L1.3442| ;;;562 { ;;;563 blue_datas.Rev_data.CellhitData |= (1<<1); 000d72 48c9 LDR r0,|L1.4248| 000d74 f8b00086 LDRH r0,[r0,#0x86] ; blue_datas 000d78 f0400002 ORR r0,r0,#2 000d7c 49c6 LDR r1,|L1.4248| 000d7e f8a10086 STRH r0,[r1,#0x86] ;;;564 blue_datas.Rev_data.CellhitData |= (1<<4); 000d82 4608 MOV r0,r1 000d84 f8b00086 LDRH r0,[r0,#0x86] ; blue_datas 000d88 e000 B |L1.3468| |L1.3466| 000d8a e292 B |L1.4786| |L1.3468| 000d8c f0400010 ORR r0,r0,#0x10 000d90 f8a10086 STRH r0,[r1,#0x86] 000d94 e00e B |L1.3508| |L1.3478| ;;;565 } ;;;566 else ;;;567 { ;;;568 blue_datas.Rev_data.CellhitData &= ~(1<<1); 000d96 48c0 LDR r0,|L1.4248| 000d98 f8b00086 LDRH r0,[r0,#0x86] ; blue_datas 000d9c f0200002 BIC r0,r0,#2 000da0 49bd LDR r1,|L1.4248| 000da2 f8a10086 STRH r0,[r1,#0x86] ;;;569 blue_datas.Rev_data.CellhitData &= ~(1<<4); 000da6 4608 MOV r0,r1 000da8 f8b00086 LDRH r0,[r0,#0x86] ; blue_datas 000dac f0200010 BIC r0,r0,#0x10 000db0 f8a10086 STRH r0,[r1,#0x86] |L1.3508| ;;;570 } ;;;571 if(data_309_A.RAM_WrieRev_309.Bstrtus1.bits.OV == 1) 000db4 48b3 LDR r0,|L1.4228| 000db6 7f80 LDRB r0,[r0,#0x1e] 000db8 f0000001 AND r0,r0,#1 000dbc b140 CBZ r0,|L1.3536| ;;;572 blue_datas.Rev_data.CellhitData |= (1<<10); 000dbe 48b6 LDR r0,|L1.4248| 000dc0 f8b00086 LDRH r0,[r0,#0x86] ; blue_datas 000dc4 f4406080 ORR r0,r0,#0x400 000dc8 49b3 LDR r1,|L1.4248| 000dca f8a10086 STRH r0,[r1,#0x86] 000dce e007 B |L1.3552| |L1.3536| ;;;573 else ;;;574 blue_datas.Rev_data.CellhitData &= ~(1<<10); 000dd0 48b1 LDR r0,|L1.4248| 000dd2 f8b00086 LDRH r0,[r0,#0x86] ; blue_datas 000dd6 f4206080 BIC r0,r0,#0x400 000dda 49af LDR r1,|L1.4248| 000ddc f8a10086 STRH r0,[r1,#0x86] |L1.3552| ;;;575 if(data_309_A.RAM_WrieRev_309.Bstrtus1.bits.UV == 1) 000de0 48a8 LDR r0,|L1.4228| 000de2 7f80 LDRB r0,[r0,#0x1e] 000de4 f3c00040 UBFX r0,r0,#1,#1 000de8 b140 CBZ r0,|L1.3580| ;;;576 blue_datas.Rev_data.CellhitData |= (1<<11); 000dea 48ab LDR r0,|L1.4248| 000dec f8b00086 LDRH r0,[r0,#0x86] ; blue_datas 000df0 f4406000 ORR r0,r0,#0x800 000df4 49a8 LDR r1,|L1.4248| 000df6 f8a10086 STRH r0,[r1,#0x86] 000dfa e007 B |L1.3596| |L1.3580| ;;;577 else ;;;578 blue_datas.Rev_data.CellhitData &= ~(1<<11); 000dfc 48a6 LDR r0,|L1.4248| 000dfe f8b00086 LDRH r0,[r0,#0x86] ; blue_datas 000e02 f4206000 BIC r0,r0,#0x800 000e06 49a4 LDR r1,|L1.4248| 000e08 f8a10086 STRH r0,[r1,#0x86] |L1.3596| ;;;579 if(data_309_A.RAM_WrieRev_309.Bstrtus1.bits.OCD1 == 1) 000e0c 489d LDR r0,|L1.4228| 000e0e 7f80 LDRB r0,[r0,#0x1e] 000e10 f3c00080 UBFX r0,r0,#2,#1 000e14 b140 CBZ r0,|L1.3624| ;;;580 blue_datas.Rev_data.CellhitData |= (1<<5); 000e16 48a0 LDR r0,|L1.4248| 000e18 f8b00086 LDRH r0,[r0,#0x86] ; blue_datas 000e1c f0400020 ORR r0,r0,#0x20 000e20 499d LDR r1,|L1.4248| 000e22 f8a10086 STRH r0,[r1,#0x86] 000e26 e007 B |L1.3640| |L1.3624| ;;;581 else ;;;582 blue_datas.Rev_data.CellhitData &= ~(1<<5); 000e28 489b LDR r0,|L1.4248| 000e2a f8b00086 LDRH r0,[r0,#0x86] ; blue_datas 000e2e f0200020 BIC r0,r0,#0x20 000e32 4999 LDR r1,|L1.4248| 000e34 f8a10086 STRH r0,[r1,#0x86] |L1.3640| ;;;583 if(data_309_A.RAM_WrieRev_309.Bstrtus1.bits.OCD2 == 1) 000e38 4892 LDR r0,|L1.4228| 000e3a 7f80 LDRB r0,[r0,#0x1e] 000e3c f3c000c0 UBFX r0,r0,#3,#1 000e40 b148 CBZ r0,|L1.3670| ;;;584 blue_datas.Rev_data.CellhitData |= (1<<6); 000e42 4895 LDR r0,|L1.4248| 000e44 f8b00086 LDRH r0,[r0,#0x86] ; blue_datas 000e48 f0400040 ORR r0,r0,#0x40 000e4c 4992 LDR r1,|L1.4248| 000e4e f8a10086 STRH r0,[r1,#0x86] 000e52 e008 B |L1.3686| |L1.3668| 000e54 e22e B |L1.4788| |L1.3670| ;;;585 else ;;;586 blue_datas.Rev_data.CellhitData &= ~(1<<6); 000e56 4890 LDR r0,|L1.4248| 000e58 f8b00086 LDRH r0,[r0,#0x86] ; blue_datas 000e5c f0200040 BIC r0,r0,#0x40 000e60 498d LDR r1,|L1.4248| 000e62 f8a10086 STRH r0,[r1,#0x86] |L1.3686| ;;;587 if(data_309_A.RAM_WrieRev_309.Bstrtus2.bits.UTC == 1 || data_309_A.RAM_WrieRev_309.Bstrtus2.bits.UTD == 1) 000e66 4887 LDR r0,|L1.4228| 000e68 7fc0 LDRB r0,[r0,#0x1f] 000e6a f0000001 AND r0,r0,#1 000e6e b920 CBNZ r0,|L1.3706| 000e70 4884 LDR r0,|L1.4228| 000e72 7fc0 LDRB r0,[r0,#0x1f] 000e74 f3c00080 UBFX r0,r0,#2,#1 000e78 b140 CBZ r0,|L1.3724| |L1.3706| ;;;588 blue_datas.Rev_data.CellhitData |= (1<<9); 000e7a 4887 LDR r0,|L1.4248| 000e7c f8b00086 LDRH r0,[r0,#0x86] ; blue_datas 000e80 f4407000 ORR r0,r0,#0x200 000e84 4984 LDR r1,|L1.4248| 000e86 f8a10086 STRH r0,[r1,#0x86] 000e8a e007 B |L1.3740| |L1.3724| ;;;589 else ;;;590 blue_datas.Rev_data.CellhitData &= ~(1<<9); 000e8c 4882 LDR r0,|L1.4248| 000e8e f8b00086 LDRH r0,[r0,#0x86] ; blue_datas 000e92 f4207000 BIC r0,r0,#0x200 000e96 4980 LDR r1,|L1.4248| 000e98 f8a10086 STRH r0,[r1,#0x86] |L1.3740| ;;;591 ;;;592 if(data_309_A.RAM_WrieRev_309.Bstrtus3.bits.CHG_FET==1) 000e9c 4879 LDR r0,|L1.4228| 000e9e f8900020 LDRB r0,[r0,#0x20] 000ea2 f3c00040 UBFX r0,r0,#1,#1 000ea6 b140 CBZ r0,|L1.3770| ;;;593 blue_datas.Rev_data.CellStrtu |= (1<<0); 000ea8 487b LDR r0,|L1.4248| 000eaa f8b00088 LDRH r0,[r0,#0x88] ; blue_datas 000eae f0400001 ORR r0,r0,#1 000eb2 4979 LDR r1,|L1.4248| 000eb4 f8a10088 STRH r0,[r1,#0x88] 000eb8 e007 B |L1.3786| |L1.3770| ;;;594 else ;;;595 blue_datas.Rev_data.CellStrtu &= ~(1<<0); 000eba 4877 LDR r0,|L1.4248| 000ebc f8b00088 LDRH r0,[r0,#0x88] ; blue_datas 000ec0 f0200001 BIC r0,r0,#1 000ec4 4974 LDR r1,|L1.4248| 000ec6 f8a10088 STRH r0,[r1,#0x88] |L1.3786| ;;;596 ;;;597 if(data_309_A.RAM_WrieRev_309.Bstrtus3.bits.DSG_FET==1) 000eca 486e LDR r0,|L1.4228| 000ecc f8900020 LDRB r0,[r0,#0x20] 000ed0 f0000001 AND r0,r0,#1 000ed4 b140 CBZ r0,|L1.3816| ;;;598 blue_datas.Rev_data.CellStrtu |= (1<<1); 000ed6 4870 LDR r0,|L1.4248| 000ed8 f8b00088 LDRH r0,[r0,#0x88] ; blue_datas 000edc f0400002 ORR r0,r0,#2 000ee0 496d LDR r1,|L1.4248| 000ee2 f8a10088 STRH r0,[r1,#0x88] 000ee6 e007 B |L1.3832| |L1.3816| ;;;599 else ;;;600 blue_datas.Rev_data.CellStrtu &= ~(1<<1); 000ee8 486b LDR r0,|L1.4248| 000eea f8b00088 LDRH r0,[r0,#0x88] ; blue_datas 000eee f0200002 BIC r0,r0,#2 000ef2 4969 LDR r1,|L1.4248| 000ef4 f8a10088 STRH r0,[r1,#0x88] |L1.3832| ;;;601 ;;;602 if(data_309_A.RAM_WrieRev_309.Balanceh_l.datas != 0 || data_309_B.RAM_WrieRev_309.Balanceh_l.datas != 0) 000ef8 4862 LDR r0,|L1.4228| 000efa 8b80 LDRH r0,[r0,#0x1c] 000efc b910 CBNZ r0,|L1.3844| 000efe 4867 LDR r0,|L1.4252| 000f00 8b80 LDRH r0,[r0,#0x1c] 000f02 b140 CBZ r0,|L1.3862| |L1.3844| ;;;603 blue_datas.Rev_data.CellStrtu |= (1<<2); 000f04 4864 LDR r0,|L1.4248| 000f06 f8b00088 LDRH r0,[r0,#0x88] ; blue_datas 000f0a f0400004 ORR r0,r0,#4 000f0e 4962 LDR r1,|L1.4248| 000f10 f8a10088 STRH r0,[r1,#0x88] 000f14 e007 B |L1.3878| |L1.3862| ;;;604 else ;;;605 blue_datas.Rev_data.CellStrtu &= ~(1<<2); 000f16 4860 LDR r0,|L1.4248| 000f18 f8b00088 LDRH r0,[r0,#0x88] ; blue_datas 000f1c f0200004 BIC r0,r0,#4 000f20 495d LDR r1,|L1.4248| 000f22 f8a10088 STRH r0,[r1,#0x88] |L1.3878| ;;;606 ;;;607 blue_datas.Rev_data.CellStrtu |= 0x0008; 000f26 485c LDR r0,|L1.4248| 000f28 f8b00088 LDRH r0,[r0,#0x88] ; blue_datas 000f2c f0400008 ORR r0,r0,#8 000f30 4959 LDR r1,|L1.4248| 000f32 f8a10088 STRH r0,[r1,#0x88] ;;;608 ;;;609 blue_datas.Rev_data.CellTime = 0; 000f36 2000 MOVS r0,#0 000f38 6008 STR r0,[r1,#0] ; blue_datas ;;;610 if(Out_curr == 0 && Chg_curr == 0) 000f3a f1bb0f00 CMP r11,#0 000f3e d103 BNE |L1.3912| 000f40 9808 LDR r0,[sp,#0x20] 000f42 b908 CBNZ r0,|L1.3912| ;;;611 blue_datas.Rev_data.sturt = 0; 000f44 2000 MOVS r0,#0 000f46 7108 STRB r0,[r1,#4] |L1.3912| ;;;612 if(Out_curr>0) blue_datas.Rev_data.sturt = 3; 000f48 f1bb0f00 CMP r11,#0 000f4c dd02 BLE |L1.3924| 000f4e 2003 MOVS r0,#3 000f50 4951 LDR r1,|L1.4248| 000f52 7108 STRB r0,[r1,#4] |L1.3924| ;;;613 if(Chg_curr>0) blue_datas.Rev_data.sturt = 2; 000f54 9808 LDR r0,[sp,#0x20] 000f56 2800 CMP r0,#0 000f58 dd02 BLE |L1.3936| 000f5a 2002 MOVS r0,#2 000f5c 494e LDR r1,|L1.4248| 000f5e 7108 STRB r0,[r1,#4] |L1.3936| ;;;614 ;;;615 memcpy(blue_datas.Rev_data.xinhao,broad_name,9); 000f60 484d LDR r0,|L1.4248| 000f62 1d40 ADDS r0,r0,#5 000f64 494e LDR r1,|L1.4256| 000f66 680a LDR r2,[r1,#0] ; broad_name 000f68 6002 STR r2,[r0,#0] ; blue_datas 000f6a 684a LDR r2,[r1,#4] ; broad_name 000f6c 6042 STR r2,[r0,#4] ; blue_datas 000f6e 7a09 LDRB r1,[r1,#8] ; broad_name 000f70 7201 STRB r1,[r0,#8] ;;;616 ///////////////////////////////////////////////////////////////////////////// ;;;617 /*版本号信息*/ ;;;618 sendbuffer[0] = REVCELLTIME; 000f72 2076 MOVS r0,#0x76 000f74 f88d0038 STRB r0,[sp,#0x38] ;;;619 sendbuffer[1] = blue_datas.Rev_data.CellTime >> 24; 000f78 4847 LDR r0,|L1.4248| 000f7a 6800 LDR r0,[r0,#0] ; blue_datas 000f7c 0e00 LSRS r0,r0,#24 000f7e f88d0039 STRB r0,[sp,#0x39] ;;;620 sendbuffer[2] = blue_datas.Rev_data.CellTime >> 16; 000f82 4845 LDR r0,|L1.4248| 000f84 6800 LDR r0,[r0,#0] ; blue_datas 000f86 0c00 LSRS r0,r0,#16 000f88 f88d003a STRB r0,[sp,#0x3a] ;;;621 sendbuffer[3] = blue_datas.Rev_data.CellTime >> 8; 000f8c 4842 LDR r0,|L1.4248| 000f8e 8800 LDRH r0,[r0,#0] ; blue_datas 000f90 0a00 LSRS r0,r0,#8 000f92 f88d003b STRB r0,[sp,#0x3b] ;;;622 sendbuffer[4] = blue_datas.Rev_data.CellTime; 000f96 4840 LDR r0,|L1.4248| 000f98 7800 LDRB r0,[r0,#0] ; blue_datas 000f9a f88d003c STRB r0,[sp,#0x3c] ;;;623 ;;;624 sendbuffer[5] = REVSTRUCT; 000f9e 2077 MOVS r0,#0x77 000fa0 f88d003d STRB r0,[sp,#0x3d] ;;;625 sendbuffer[6] = blue_datas.Rev_data.sturt; 000fa4 483c LDR r0,|L1.4248| 000fa6 7900 LDRB r0,[r0,#4] ; blue_datas 000fa8 f88d003e STRB r0,[sp,#0x3e] ;;;626 ;;;627 sendbuffer[7] = REVXINGHAO; 000fac 2078 MOVS r0,#0x78 000fae f88d003f STRB r0,[sp,#0x3f] ;;;628 memcpy(&sendbuffer[8],blue_datas.Rev_data.xinhao,9); 000fb2 4839 LDR r0,|L1.4248| 000fb4 1d40 ADDS r0,r0,#5 000fb6 6801 LDR r1,[r0,#0] ; blue_datas 000fb8 9110 STR r1,[sp,#0x40] 000fba 6841 LDR r1,[r0,#4] ; blue_datas 000fbc 9111 STR r1,[sp,#0x44] 000fbe 7a00 LDRB r0,[r0,#8] ; blue_datas 000fc0 f88d0048 STRB r0,[sp,#0x48] ;;;629 ;;;630 temp = 17; 000fc4 2411 MOVS r4,#0x11 ;;;631 sendbuffer[0+temp] = REVSINGCELLVOL; 000fc6 2079 MOVS r0,#0x79 000fc8 a90e ADD r1,sp,#0x38 000fca 5508 STRB r0,[r1,r4] ;;;632 sendbuffer[1+temp] = blue_datas.Rev_data.CellZnum * 3; 000fcc 4832 LDR r0,|L1.4248| 000fce f8900084 LDRB r0,[r0,#0x84] ; blue_datas 000fd2 eb000040 ADD r0,r0,r0,LSL #1 000fd6 b2c1 UXTB r1,r0 000fd8 1c60 ADDS r0,r4,#1 000fda aa0e ADD r2,sp,#0x38 000fdc 5411 STRB r1,[r2,r0] ;;;633 ;;;634 for(i=0;i> 8; 001040 4815 LDR r0,|L1.4248| 001042 f8b0006e LDRH r0,[r0,#0x6e] ; blue_datas 001046 1201 ASRS r1,r0,#8 001048 1c60 ADDS r0,r4,#1 00104a 5c10 LDRB r0,[r2,r0] 00104c 1cc0 ADDS r0,r0,#3 00104e 4420 ADD r0,r0,r4 001050 5411 STRB r1,[r2,r0] ;;;643 sendbuffer[sendbuffer[1+temp] + 4+temp] = blue_datas.Rev_data.MosTmp; 001052 4811 LDR r0,|L1.4248| 001054 f890106e LDRB r1,[r0,#0x6e] ; blue_datas 001058 1c60 ADDS r0,r4,#1 00105a 5c10 LDRB r0,[r2,r0] 00105c 1d00 ADDS r0,r0,#4 00105e 4420 ADD r0,r0,r4 001060 5411 STRB r1,[r2,r0] ;;;644 ;;;645 sendbuffer[sendbuffer[1+temp] + 5+temp] = REVEQUALI; 001062 2181 MOVS r1,#0x81 001064 1c60 ADDS r0,r4,#1 001066 5c10 LDRB r0,[r2,r0] 001068 1d40 ADDS r0,r0,#5 00106a 4420 ADD r0,r0,r4 00106c 5411 STRB r1,[r2,r0] ;;;646 sendbuffer[sendbuffer[1+temp] + 6+temp] = blue_datas.Rev_data.QualiTmp >> 8; 00106e 480a LDR r0,|L1.4248| 001070 f8b00070 LDRH r0,[r0,#0x70] ; blue_datas 001074 1201 ASRS r1,r0,#8 001076 1c60 ADDS r0,r4,#1 001078 5c10 LDRB r0,[r2,r0] 00107a 1d80 ADDS r0,r0,#6 00107c 4420 ADD r0,r0,r4 00107e 5411 STRB r1,[r2,r0] ;;;647 sendbuffer[sendbuffer[1+temp] + 7+temp] = blue_datas.Rev_data.QualiTmp; 001080 4805 LDR r0,|L1.4248| 001082 e00f B |L1.4260| |L1.4228| DCD data_309_A |L1.4232| DCD 0x40690000 |L1.4236| DCD 0xa1cac083 |L1.4240| DCD 0x403ad645 |L1.4244| DCD 0x40240000 |L1.4248| DCD blue_datas |L1.4252| DCD data_309_B |L1.4256| DCD broad_name |L1.4260| 0010a4 f8901070 LDRB r1,[r0,#0x70] ; blue_datas 0010a8 1c60 ADDS r0,r4,#1 0010aa 5c10 LDRB r0,[r2,r0] 0010ac 1dc0 ADDS r0,r0,#7 0010ae 4420 ADD r0,r0,r4 0010b0 5411 STRB r1,[r2,r0] ;;;648 ;;;649 sendbuffer[sendbuffer[1+temp] + 8+temp] = REVCELLTMP; 0010b2 2182 MOVS r1,#0x82 0010b4 1c60 ADDS r0,r4,#1 0010b6 5c10 LDRB r0,[r2,r0] 0010b8 3008 ADDS r0,r0,#8 0010ba 4420 ADD r0,r0,r4 0010bc 5411 STRB r1,[r2,r0] ;;;650 sendbuffer[sendbuffer[1+temp] + 9+temp] = blue_datas.Rev_data.CellTmp >> 8; 0010be 4880 LDR r0,|L1.4800| 0010c0 f8b00072 LDRH r0,[r0,#0x72] ; blue_datas 0010c4 1201 ASRS r1,r0,#8 0010c6 1c60 ADDS r0,r4,#1 0010c8 5c10 LDRB r0,[r2,r0] 0010ca 3009 ADDS r0,r0,#9 0010cc 4420 ADD r0,r0,r4 0010ce 5411 STRB r1,[r2,r0] ;;;651 sendbuffer[sendbuffer[1+temp] + 10+temp] = blue_datas.Rev_data.CellTmp; 0010d0 487b LDR r0,|L1.4800| 0010d2 f8901072 LDRB r1,[r0,#0x72] ; blue_datas 0010d6 1c60 ADDS r0,r4,#1 0010d8 5c10 LDRB r0,[r2,r0] 0010da 300a ADDS r0,r0,#0xa 0010dc 4420 ADD r0,r0,r4 0010de 5411 STRB r1,[r2,r0] ;;;652 ;;;653 sendbuffer[sendbuffer[1+temp] + 11+temp] = REVCELLZVOL; 0010e0 2183 MOVS r1,#0x83 0010e2 1c60 ADDS r0,r4,#1 0010e4 5c10 LDRB r0,[r2,r0] 0010e6 300b ADDS r0,r0,#0xb 0010e8 4420 ADD r0,r0,r4 0010ea 5411 STRB r1,[r2,r0] ;;;654 sendbuffer[sendbuffer[1+temp] + 12+temp] = blue_datas.Rev_data.CellZvol >> 8; 0010ec 4874 LDR r0,|L1.4800| 0010ee f8b00074 LDRH r0,[r0,#0x74] ; blue_datas 0010f2 1201 ASRS r1,r0,#8 0010f4 1c60 ADDS r0,r4,#1 0010f6 5c10 LDRB r0,[r2,r0] 0010f8 300c ADDS r0,r0,#0xc 0010fa 4420 ADD r0,r0,r4 0010fc 5411 STRB r1,[r2,r0] ;;;655 sendbuffer[sendbuffer[1+temp] + 13+temp] = blue_datas.Rev_data.CellZvol; 0010fe 4870 LDR r0,|L1.4800| 001100 f8901074 LDRB r1,[r0,#0x74] ; blue_datas 001104 1c60 ADDS r0,r4,#1 001106 5c10 LDRB r0,[r2,r0] 001108 300d ADDS r0,r0,#0xd 00110a 4420 ADD r0,r0,r4 00110c 5411 STRB r1,[r2,r0] ;;;656 ;;;657 sendbuffer[sendbuffer[1+temp] + 14+temp] = REVCURR; 00110e 2184 MOVS r1,#0x84 001110 1c60 ADDS r0,r4,#1 001112 5c10 LDRB r0,[r2,r0] 001114 300e ADDS r0,r0,#0xe 001116 4420 ADD r0,r0,r4 001118 5411 STRB r1,[r2,r0] ;;;658 sendbuffer[sendbuffer[1+temp] + 15+temp] = blue_datas.Rev_data.Currdata >> 8; 00111a 4869 LDR r0,|L1.4800| 00111c f8b00076 LDRH r0,[r0,#0x76] ; blue_datas 001120 1201 ASRS r1,r0,#8 001122 1c60 ADDS r0,r4,#1 001124 5c10 LDRB r0,[r2,r0] 001126 300f ADDS r0,r0,#0xf 001128 4420 ADD r0,r0,r4 00112a 5411 STRB r1,[r2,r0] ;;;659 sendbuffer[sendbuffer[1+temp] + 16+temp] = blue_datas.Rev_data.Currdata; 00112c 4864 LDR r0,|L1.4800| 00112e f8901076 LDRB r1,[r0,#0x76] ; blue_datas 001132 1c60 ADDS r0,r4,#1 001134 5c10 LDRB r0,[r2,r0] 001136 3010 ADDS r0,r0,#0x10 001138 4420 ADD r0,r0,r4 00113a 5411 STRB r1,[r2,r0] ;;;660 ;;;661 sendbuffer[sendbuffer[1+temp] + 17+temp] = REVSRL; 00113c 2185 MOVS r1,#0x85 00113e 1c60 ADDS r0,r4,#1 001140 5c10 LDRB r0,[r2,r0] 001142 3011 ADDS r0,r0,#0x11 001144 4420 ADD r0,r0,r4 001146 5411 STRB r1,[r2,r0] ;;;662 sendbuffer[sendbuffer[1+temp] + 18+temp] = blue_datas.Rev_data.Soc; 001148 485d LDR r0,|L1.4800| 00114a f8901078 LDRB r1,[r0,#0x78] ; blue_datas 00114e 1c60 ADDS r0,r4,#1 001150 5c10 LDRB r0,[r2,r0] 001152 3012 ADDS r0,r0,#0x12 001154 4420 ADD r0,r0,r4 001156 5411 STRB r1,[r2,r0] ;;;663 ;;;664 sendbuffer[sendbuffer[1+temp] + 19+temp] = CELLTMPNUM; 001158 2186 MOVS r1,#0x86 00115a 1c60 ADDS r0,r4,#1 00115c 5c10 LDRB r0,[r2,r0] 00115e 3013 ADDS r0,r0,#0x13 001160 4420 ADD r0,r0,r4 001162 5411 STRB r1,[r2,r0] ;;;665 sendbuffer[sendbuffer[1+temp] + 20+temp] = blue_datas.Rev_data.CellTmpSors; 001164 4856 LDR r0,|L1.4800| 001166 f8901079 LDRB r1,[r0,#0x79] ; blue_datas 00116a 1c60 ADDS r0,r4,#1 00116c 5c10 LDRB r0,[r2,r0] 00116e 3014 ADDS r0,r0,#0x14 001170 4420 ADD r0,r0,r4 001172 5411 STRB r1,[r2,r0] ;;;666 ;;;667 sendbuffer[sendbuffer[1+temp] + 21+temp] = CELLUSNUM; 001174 2187 MOVS r1,#0x87 001176 1c60 ADDS r0,r4,#1 001178 5c10 LDRB r0,[r2,r0] 00117a 3015 ADDS r0,r0,#0x15 00117c 4420 ADD r0,r0,r4 00117e 5411 STRB r1,[r2,r0] ;;;668 sendbuffer[sendbuffer[1+temp] + 22+temp] = blue_datas.Rev_data.Cellusnum >> 8; 001180 484f LDR r0,|L1.4800| 001182 f8b0007a LDRH r0,[r0,#0x7a] ; blue_datas 001186 1201 ASRS r1,r0,#8 001188 1c60 ADDS r0,r4,#1 00118a 5c10 LDRB r0,[r2,r0] 00118c 3016 ADDS r0,r0,#0x16 00118e 4420 ADD r0,r0,r4 001190 5411 STRB r1,[r2,r0] ;;;669 sendbuffer[sendbuffer[1+temp] + 23+temp] = blue_datas.Rev_data.Cellusnum; 001192 484b LDR r0,|L1.4800| 001194 f890107a LDRB r1,[r0,#0x7a] ; blue_datas 001198 1c60 ADDS r0,r4,#1 00119a 5c10 LDRB r0,[r2,r0] 00119c 3017 ADDS r0,r0,#0x17 00119e 4420 ADD r0,r0,r4 0011a0 5411 STRB r1,[r2,r0] ;;;670 ;;;671 sendbuffer[sendbuffer[1+temp] + 24+temp] = CELLZRL; 0011a2 2189 MOVS r1,#0x89 0011a4 1c60 ADDS r0,r4,#1 0011a6 5c10 LDRB r0,[r2,r0] 0011a8 3018 ADDS r0,r0,#0x18 0011aa 4420 ADD r0,r0,r4 0011ac 5411 STRB r1,[r2,r0] ;;;672 sendbuffer[sendbuffer[1+temp] + 25+temp] = blue_datas.Rev_data.CellOutrl >> 24; 0011ae 4844 LDR r0,|L1.4800| 0011b0 f8d00080 LDR r0,[r0,#0x80] ; blue_datas 0011b4 0e01 LSRS r1,r0,#24 0011b6 1c60 ADDS r0,r4,#1 0011b8 5c10 LDRB r0,[r2,r0] 0011ba 3019 ADDS r0,r0,#0x19 0011bc 4420 ADD r0,r0,r4 0011be 5411 STRB r1,[r2,r0] ;;;673 sendbuffer[sendbuffer[1+temp] + 26+temp] = blue_datas.Rev_data.CellOutrl >> 16; 0011c0 483f LDR r0,|L1.4800| 0011c2 f8d00080 LDR r0,[r0,#0x80] ; blue_datas 0011c6 f3c04107 UBFX r1,r0,#16,#8 0011ca 1c60 ADDS r0,r4,#1 0011cc 5c10 LDRB r0,[r2,r0] 0011ce 301a ADDS r0,r0,#0x1a 0011d0 4420 ADD r0,r0,r4 0011d2 5411 STRB r1,[r2,r0] ;;;674 sendbuffer[sendbuffer[1+temp] + 27+temp] = blue_datas.Rev_data.CellOutrl >> 8; 0011d4 483a LDR r0,|L1.4800| 0011d6 f8b00080 LDRH r0,[r0,#0x80] ; blue_datas 0011da f3c02107 UBFX r1,r0,#8,#8 0011de 1c60 ADDS r0,r4,#1 0011e0 5c10 LDRB r0,[r2,r0] 0011e2 301b ADDS r0,r0,#0x1b 0011e4 4420 ADD r0,r0,r4 0011e6 5411 STRB r1,[r2,r0] ;;;675 sendbuffer[sendbuffer[1+temp] + 28+temp] = blue_datas.Rev_data.CellOutrl; 0011e8 4835 LDR r0,|L1.4800| 0011ea f8901080 LDRB r1,[r0,#0x80] ; blue_datas 0011ee 1c60 ADDS r0,r4,#1 0011f0 5c10 LDRB r0,[r2,r0] 0011f2 301c ADDS r0,r0,#0x1c 0011f4 4420 ADD r0,r0,r4 0011f6 5411 STRB r1,[r2,r0] ;;;676 ;;;677 sendbuffer[sendbuffer[1+temp] + 29+temp] = CELLZCS; 0011f8 218a MOVS r1,#0x8a 0011fa 1c60 ADDS r0,r4,#1 0011fc 5c10 LDRB r0,[r2,r0] 0011fe 301d ADDS r0,r0,#0x1d 001200 4420 ADD r0,r0,r4 001202 5411 STRB r1,[r2,r0] ;;;678 sendbuffer[sendbuffer[1+temp] + 30+temp] = blue_datas.Rev_data.CellZnum >> 8; 001204 482e LDR r0,|L1.4800| 001206 f8b00084 LDRH r0,[r0,#0x84] ; blue_datas 00120a 1201 ASRS r1,r0,#8 00120c 1c60 ADDS r0,r4,#1 00120e 5c10 LDRB r0,[r2,r0] 001210 301e ADDS r0,r0,#0x1e 001212 4420 ADD r0,r0,r4 001214 5411 STRB r1,[r2,r0] ;;;679 sendbuffer[sendbuffer[1+temp] + 31+temp] = blue_datas.Rev_data.CellZnum; 001216 482a LDR r0,|L1.4800| 001218 f8901084 LDRB r1,[r0,#0x84] ; blue_datas 00121c 1c60 ADDS r0,r4,#1 00121e 5c10 LDRB r0,[r2,r0] 001220 301f ADDS r0,r0,#0x1f 001222 4420 ADD r0,r0,r4 001224 5411 STRB r1,[r2,r0] ;;;680 ;;;681 sendbuffer[sendbuffer[1+temp] + 32+temp] = CELLHIT; 001226 218b MOVS r1,#0x8b 001228 1c60 ADDS r0,r4,#1 00122a 5c10 LDRB r0,[r2,r0] 00122c 3020 ADDS r0,r0,#0x20 00122e 4420 ADD r0,r0,r4 001230 5411 STRB r1,[r2,r0] ;;;682 sendbuffer[sendbuffer[1+temp] + 33+temp] = blue_datas.Rev_data.CellhitData >> 8; 001232 4823 LDR r0,|L1.4800| 001234 f8b00086 LDRH r0,[r0,#0x86] ; blue_datas 001238 1201 ASRS r1,r0,#8 00123a 1c60 ADDS r0,r4,#1 00123c 5c10 LDRB r0,[r2,r0] 00123e 3021 ADDS r0,r0,#0x21 001240 4420 ADD r0,r0,r4 001242 5411 STRB r1,[r2,r0] ;;;683 sendbuffer[sendbuffer[1+temp] + 34+temp] = blue_datas.Rev_data.CellhitData; 001244 481e LDR r0,|L1.4800| 001246 f8901086 LDRB r1,[r0,#0x86] ; blue_datas 00124a 1c60 ADDS r0,r4,#1 00124c 5c10 LDRB r0,[r2,r0] 00124e 3022 ADDS r0,r0,#0x22 001250 4420 ADD r0,r0,r4 001252 5411 STRB r1,[r2,r0] ;;;684 ;;;685 sendbuffer[sendbuffer[1+temp] + 35+temp] = CELLSTURT; 001254 218c MOVS r1,#0x8c 001256 1c60 ADDS r0,r4,#1 001258 5c10 LDRB r0,[r2,r0] 00125a 3023 ADDS r0,r0,#0x23 00125c 4420 ADD r0,r0,r4 00125e 5411 STRB r1,[r2,r0] ;;;686 sendbuffer[sendbuffer[1+temp] + 36+temp] = blue_datas.Rev_data.CellStrtu >> 8; 001260 4817 LDR r0,|L1.4800| 001262 f8b00088 LDRH r0,[r0,#0x88] ; blue_datas 001266 1201 ASRS r1,r0,#8 001268 1c60 ADDS r0,r4,#1 00126a 5c10 LDRB r0,[r2,r0] 00126c 3024 ADDS r0,r0,#0x24 00126e 4420 ADD r0,r0,r4 001270 5411 STRB r1,[r2,r0] ;;;687 sendbuffer[sendbuffer[1+temp] + 37+temp] = blue_datas.Rev_data.CellStrtu; 001272 4813 LDR r0,|L1.4800| 001274 f8901088 LDRB r1,[r0,#0x88] ; blue_datas 001278 1c60 ADDS r0,r4,#1 00127a 5c10 LDRB r0,[r2,r0] 00127c 3025 ADDS r0,r0,#0x25 00127e 4420 ADD r0,r0,r4 001280 5411 STRB r1,[r2,r0] ;;;688 ;;;689 ;;;690 ;;;691 send_len = sendbuffer[1+temp] + 38+temp; 001282 1c60 ADDS r0,r4,#1 001284 a90e ADD r1,sp,#0x38 001286 5c08 LDRB r0,[r1,r0] 001288 3026 ADDS r0,r0,#0x26 00128a 4420 ADD r0,r0,r4 00128c fa1ffa80 UXTH r10,r0 ;;;692 ;;;693 Send_TString_BMS(start_orde,22); //发送给MCU开始对309读写 001290 2116 MOVS r1,#0x16 001292 480c LDR r0,|L1.4804| 001294 f7fffffe BL Send_TString_BMS ;;;694 /*发送数据*/ ;;;695 BlueSend_GpsFun(Bms_num,orde,Type,sendbuffer,send_len,recnum); 001298 9859 LDR r0,[sp,#0x164] 00129a ab0e ADD r3,sp,#0x38 00129c e9cda000 STRD r10,r0,[sp,#0] 0012a0 9a5a LDR r2,[sp,#0x168] 0012a2 995b LDR r1,[sp,#0x16c] 0012a4 985d LDR r0,[sp,#0x174] 0012a6 f7fffffe BL BlueSend_GpsFun ;;;696 Beep_Flag = 1; 0012aa 2001 MOVS r0,#1 0012ac 4906 LDR r1,|L1.4808| 0012ae 7008 STRB r0,[r1,#0] ;;;697 } 0012b0 bf00 NOP |L1.4786| ;;;698 } 0012b2 bf00 NOP |L1.4788| ;;;699 break; 0012b4 e000 B |L1.4792| |L1.4790| ;;;700 default: ;;;701 break; 0012b6 bf00 NOP |L1.4792| 0012b8 bf00 NOP ;223 |L1.4794| ;;;702 } ;;;703 } ;;;704 } ;;;705 } 0012ba b05f ADD sp,sp,#0x17c 0012bc e8bd8ff0 POP {r4-r11,pc} ENDP |L1.4800| DCD blue_datas |L1.4804| DCD start_orde |L1.4808| DCD Beep_Flag AREA ||.bss||, DATA, NOINIT, ALIGN=2 Bluttooth_buf % 360 blue_datas % 140 AREA ||.data||, DATA, ALIGN=0 Pass_init 000000 41414242 DCB 0x41,0x41,0x42,0x42 000004 31323334 DCB 0x31,0x32,0x33,0x34 000008 353600 DCB 0x35,0x36,0x00 Pass_init_Lase 00000b 41 DCB 0x41 00000c 41424231 DCB 0x41,0x42,0x42,0x31 000010 32333435 DCB 0x32,0x33,0x34,0x35 000014 3600 DCB 0x36,0x00 Pass_CJ 000016 4141 DCB 0x41,0x41 000018 42423535 DCB 0x42,0x42,0x35,0x35 00001c 33333232 DCB 0x33,0x33,0x32,0x32 000020 00 DCB 0x00 Pass_bit 000021 00 DCB 0x00 BlueActivate 000022 01 DCB 0x01