common.txt
18.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
; generated by Component: ARM Compiler 5.06 update 6 (build 750) Tool: ArmCC [4d3637]
; commandline ArmCC [--c99 --list --split_sections --debug -c --asm --interleave -o.\flash\obj\common.o --asm_dir=.\Flash\List\ --list_dir=.\Flash\List\ --depend=.\flash\obj\common.d --cpu=Cortex-M4.fp --apcs=interwork -O0 --diag_suppress=9931,870 -I..\..\Libraries\CMSIS\Include -I..\..\Libraries\CMSIS\Device\ST\STM32F4xx\Include -I..\..\Libraries\STM32F4xx_StdPeriph_Driver\inc -I..\..\uCOS-III\uC-CPU -I..\..\uCOS-III\uC-LIB -I..\..\uCOS-III\uCOS-III\Ports -I..\..\uCOS-III\uCOS-III\Source -I..\..\uCOS-III\uC-CPU\ARM-Cortex-M4\RealView -I..\..\uCOS-III\uC-LIB\Ports\ARM-Cortex-M4\RealView -I..\..\uCOS-III\uCOS-III\Ports\ARM-Cortex-M4\Generic\RealView -I..\..\User -I..\..\User\bsp -I..\..\User\bsp\inc -I..\..\User\libapp -I..\..\RL-ARM\Config -I..\..\RL-ARM\Driver -I..\..\RL-ARM\RL-RTX\inc -I..\..\User\bsp\BSP -I..\..\RL-ARM\RL-CAN -I..\..\Libraries\DSP_LIB\Include -I..\..\MODBUS\modbus\rtu -I..\..\MODBUS\BARE\port -I..\..\MODBUS\modbus\include -I..\..\User\bsp\BSP -I..\..\PLC -I..\..\Avoid -I.\RTE\_Flash -IC:\Users\49520\AppData\Local\Arm\Packs\ARM\CMSIS\5.5.1\CMSIS\Core\Include -IC:\Users\49520\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\2.13.0\Drivers\CMSIS\Device\ST\STM32F4xx\Include -D__UVISION_VERSION=527 -D_RTE_ -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -D__RTX -D__FPU_USED=1 --omf_browse=.\flash\obj\common.crf ..\..\User\common.c]
THUMB
AREA ||i.BitToByte||, CODE, READONLY, ALIGN=2
BitToByte PROC
;;;16
;;;17 void BitToByte(unsigned char byte_data,unsigned char bit_len,unsigned char byte_buf[],unsigned short *byte_offset,unsigned short *bit_offset)
000000 b5fc PUSH {r2-r7,lr}
;;;18 {
000002 4605 MOV r5,r0
000004 4614 MOV r4,r2
000006 9e07 LDR r6,[sp,#0x1c]
;;;19 unsigned int byteOffset,bitOffset;
;;;20 unsigned char mask[8]={0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF};
000008 f20f0c6c ADR r12,|L1.120|
00000c e9dc7c00 LDRD r7,r12,[r12,#0]
000010 e9cd7c00 STRD r7,r12,[sp,#0]
;;;21
;;;22 byteOffset = *byte_offset;
000014 881a LDRH r2,[r3,#0]
;;;23 bitOffset = *bit_offset;
000016 8830 LDRH r0,[r6,#0]
;;;24
;;;25 if((bit_len == 0) || (bit_len > 8) || (bitOffset == 0) || (bitOffset > 8))
000018 b121 CBZ r1,|L1.36|
00001a 2908 CMP r1,#8
00001c dc02 BGT |L1.36|
00001e b108 CBZ r0,|L1.36|
000020 2808 CMP r0,#8
000022 d900 BLS |L1.38|
|L1.36|
;;;26 return;
;;;27
;;;28 byte_data &= mask[bit_len-1];
;;;29
;;;30 if(bit_len <= bitOffset)
;;;31 {
;;;32 byte_buf[byteOffset] |= (byte_data << (bitOffset - bit_len));
;;;33 bitOffset = bitOffset - bit_len;
;;;34 }
;;;35 else
;;;36 {
;;;37 byte_buf[byteOffset] |= (byte_data >> (bit_len - bitOffset));
;;;38 byteOffset++;
;;;39 byte_buf[byteOffset] = (byte_data << (8 - (bit_len - bitOffset)));
;;;40 bitOffset = (8 - (bit_len - bitOffset));
;;;41 }
;;;42
;;;43 if(bitOffset == 0)
;;;44 {
;;;45 byteOffset++;
;;;46 bitOffset = 8;
;;;47 }
;;;48
;;;49 *byte_offset = byteOffset;
;;;50 *bit_offset = bitOffset;
;;;51 }
000024 bdfc POP {r2-r7,pc}
|L1.38|
000026 1e4f SUBS r7,r1,#1 ;28
000028 f81d7007 LDRB r7,[sp,r7] ;28
00002c 403d ANDS r5,r5,r7 ;28
00002e 4281 CMP r1,r0 ;30
000030 d809 BHI |L1.70|
000032 5ca7 LDRB r7,[r4,r2] ;32
000034 eba00c01 SUB r12,r0,r1 ;32
000038 fa05fc0c LSL r12,r5,r12 ;32
00003c ea47070c ORR r7,r7,r12 ;32
000040 54a7 STRB r7,[r4,r2] ;32
000042 1a40 SUBS r0,r0,r1 ;33
000044 e011 B |L1.106|
|L1.70|
000046 5ca7 LDRB r7,[r4,r2] ;37
000048 eba10c00 SUB r12,r1,r0 ;37
00004c fa45fc0c ASR r12,r5,r12 ;37
000050 ea47070c ORR r7,r7,r12 ;37
000054 54a7 STRB r7,[r4,r2] ;37
000056 1c52 ADDS r2,r2,#1 ;38
000058 1a0f SUBS r7,r1,r0 ;39
00005a f1c70708 RSB r7,r7,#8 ;39
00005e fa05f707 LSL r7,r5,r7 ;39
000062 54a7 STRB r7,[r4,r2] ;39
000064 1a0f SUBS r7,r1,r0 ;40
000066 f1c70008 RSB r0,r7,#8 ;40
|L1.106|
00006a b908 CBNZ r0,|L1.112|
00006c 1c52 ADDS r2,r2,#1 ;45
00006e 2008 MOVS r0,#8 ;46
|L1.112|
000070 801a STRH r2,[r3,#0] ;49
000072 8030 STRH r0,[r6,#0] ;50
000074 bf00 NOP
000076 e7d5 B |L1.36|
;;;52
ENDP
|L1.120|
000078 0103070f DCB 1,3,"\a",15,31,"?",127,255
00007c 1f3f7fff
AREA ||i.GetBitFromByte||, CODE, READONLY, ALIGN=1
GetBitFromByte PROC
;;;86
;;;87 unsigned long GetBitFromByte(unsigned char bit_len,unsigned char byte_buf[],unsigned short *byte_offset,unsigned short *bit_offset)
000000 e92d41f0 PUSH {r4-r8,lr}
;;;88 {
000004 4604 MOV r4,r0
000006 460d MOV r5,r1
000008 4616 MOV r6,r2
00000a 461f MOV r7,r3
;;;89 unsigned short byteOffset,bitOffset;
;;;90 unsigned long data,tempdata;
;;;91
;;;92 byteOffset = *byte_offset;
00000c 8832 LDRH r2,[r6,#0]
;;;93 bitOffset = *bit_offset;
00000e 8839 LDRH r1,[r7,#0]
;;;94
;;;95 data = 0;
000010 f04f0c00 MOV r12,#0
;;;96
;;;97 if((bit_len > 32) || (bitOffset == 0) || (bitOffset > 8))
000014 2c20 CMP r4,#0x20
000016 dc02 BGT |L2.30|
000018 b109 CBZ r1,|L2.30|
00001a 2908 CMP r1,#8
00001c dd02 BLE |L2.36|
|L2.30|
;;;98 return 0;
00001e 2000 MOVS r0,#0
|L2.32|
;;;99
;;;100 while(bit_len > 0)
;;;101 {
;;;102 if(bit_len <= bitOffset)
;;;103 {
;;;104 tempdata = (byte_buf[byteOffset] >> (bitOffset - bit_len));
;;;105 tempdata &= ((0x01 << bit_len) - 1);
;;;106 bitOffset -= bit_len;
;;;107 data += tempdata;
;;;108 bit_len = 0;
;;;109 }
;;;110 else
;;;111 {
;;;112 tempdata = byte_buf[byteOffset] & ((0x01 << bitOffset) - 1);
;;;113 tempdata <<= (bit_len - bitOffset);
;;;114 bit_len -= bitOffset;
;;;115 byteOffset++;
;;;116 bitOffset = 8;
;;;117 data += tempdata;
;;;118 }
;;;119 }
;;;120
;;;121 if(bitOffset == 0)
;;;122 {
;;;123 byteOffset++;
;;;124 bitOffset = 8;
;;;125 }
;;;126 *byte_offset = byteOffset;
;;;127 *bit_offset = bitOffset;
;;;128 return data;
;;;129 }
000020 e8bd81f0 POP {r4-r8,pc}
|L2.36|
000024 e01e B |L2.100|
|L2.38|
000026 428c CMP r4,r1 ;102
000028 dc0d BGT |L2.70|
00002a 5ca8 LDRB r0,[r5,r2] ;104
00002c eba10804 SUB r8,r1,r4 ;104
000030 fa40f308 ASR r3,r0,r8 ;104
000034 2001 MOVS r0,#1 ;105
000036 40a0 LSLS r0,r0,r4 ;105
000038 1e40 SUBS r0,r0,#1 ;105
00003a 4003 ANDS r3,r3,r0 ;105
00003c 1b08 SUBS r0,r1,r4 ;106
00003e b281 UXTH r1,r0 ;106
000040 449c ADD r12,r12,r3 ;107
000042 2400 MOVS r4,#0 ;108
000044 e00e B |L2.100|
|L2.70|
000046 f8158002 LDRB r8,[r5,r2] ;112
00004a 2001 MOVS r0,#1 ;112
00004c 4088 LSLS r0,r0,r1 ;112
00004e 1e40 SUBS r0,r0,#1 ;112
000050 ea080300 AND r3,r8,r0 ;112
000054 1a60 SUBS r0,r4,r1 ;113
000056 4083 LSLS r3,r3,r0 ;113
000058 1a60 SUBS r0,r4,r1 ;114
00005a b2c4 UXTB r4,r0 ;114
00005c 1c50 ADDS r0,r2,#1 ;115
00005e b282 UXTH r2,r0 ;115
000060 2108 MOVS r1,#8 ;116
000062 449c ADD r12,r12,r3 ;117
|L2.100|
000064 2c00 CMP r4,#0 ;100
000066 dcde BGT |L2.38|
000068 b911 CBNZ r1,|L2.112|
00006a 1c50 ADDS r0,r2,#1 ;123
00006c b282 UXTH r2,r0 ;123
00006e 2108 MOVS r1,#8 ;124
|L2.112|
000070 8032 STRH r2,[r6,#0] ;126
000072 8039 STRH r1,[r7,#0] ;127
000074 4660 MOV r0,r12 ;128
000076 e7d3 B |L2.32|
;;;130
ENDP
AREA ||i.HexAscii2Decimal||, CODE, READONLY, ALIGN=1
HexAscii2Decimal PROC
;;;130
;;;131 unsigned char HexAscii2Decimal(unsigned char asciiH,unsigned char asciiL)
000000 b530 PUSH {r4,r5,lr}
;;;132 {
000002 4602 MOV r2,r0
;;;133 unsigned char decimal = 0;
000004 2000 MOVS r0,#0
;;;134 unsigned char hexH,hexL;
;;;135
;;;136 if((asciiH >= '0') && (asciiH <= '9'))
000006 2a30 CMP r2,#0x30
000008 db05 BLT |L3.22|
00000a 2a39 CMP r2,#0x39
00000c dc03 BGT |L3.22|
;;;137 {
;;;138 hexH = asciiH - '0';
00000e f1a20530 SUB r5,r2,#0x30
000012 b2eb UXTB r3,r5
000014 e010 B |L3.56|
|L3.22|
;;;139 }
;;;140 else if((asciiH >= 'a') && (asciiH <= 'f'))
000016 2a61 CMP r2,#0x61
000018 db05 BLT |L3.38|
00001a 2a66 CMP r2,#0x66
00001c dc03 BGT |L3.38|
;;;141 {
;;;142 hexH = asciiH - 'a' + 10;
00001e f1a20557 SUB r5,r2,#0x57
000022 b2eb UXTB r3,r5
000024 e008 B |L3.56|
|L3.38|
;;;143 }
;;;144 else if((asciiH >= 'A') && (asciiH <= 'F'))
000026 2a41 CMP r2,#0x41
000028 db05 BLT |L3.54|
00002a 2a46 CMP r2,#0x46
00002c dc03 BGT |L3.54|
;;;145 {
;;;146 hexH = asciiH - 'A' + 10;
00002e f1a20537 SUB r5,r2,#0x37
000032 b2eb UXTB r3,r5
000034 e000 B |L3.56|
|L3.54|
;;;147 }
;;;148 else
;;;149 {
;;;150 hexH = 0;
000036 2300 MOVS r3,#0
|L3.56|
;;;151 }
;;;152
;;;153 if((asciiL >= '0') && (asciiL <= '9'))
000038 2930 CMP r1,#0x30
00003a db05 BLT |L3.72|
00003c 2939 CMP r1,#0x39
00003e dc03 BGT |L3.72|
;;;154 {
;;;155 hexL = asciiL - '0';
000040 f1a10530 SUB r5,r1,#0x30
000044 b2ec UXTB r4,r5
000046 e010 B |L3.106|
|L3.72|
;;;156 }
;;;157 else if((asciiL >= 'a') && (asciiL <= 'f'))
000048 2961 CMP r1,#0x61
00004a db05 BLT |L3.88|
00004c 2966 CMP r1,#0x66
00004e dc03 BGT |L3.88|
;;;158 {
;;;159 hexL = asciiL - 'a' + 10;
000050 f1a10557 SUB r5,r1,#0x57
000054 b2ec UXTB r4,r5
000056 e008 B |L3.106|
|L3.88|
;;;160 }
;;;161 else if((asciiL >= 'A') && (asciiL <= 'F'))
000058 2941 CMP r1,#0x41
00005a db05 BLT |L3.104|
00005c 2946 CMP r1,#0x46
00005e dc03 BGT |L3.104|
;;;162 {
;;;163 hexL = asciiL - 'A' + 10;
000060 f1a10537 SUB r5,r1,#0x37
000064 b2ec UXTB r4,r5
000066 e000 B |L3.106|
|L3.104|
;;;164 }
;;;165 else
;;;166 {
;;;167 hexL = 0;
000068 2400 MOVS r4,#0
|L3.106|
;;;168 }
;;;169
;;;170 decimal = hexH * 16 + hexL;
00006a eb041503 ADD r5,r4,r3,LSL #4
00006e b2e8 UXTB r0,r5
;;;171 return decimal;
;;;172 }
000070 bd30 POP {r4,r5,pc}
;;;173
ENDP
AREA ||i.SetBitToByte||, CODE, READONLY, ALIGN=1
SetBitToByte PROC
;;;52
;;;53 void SetBitToByte(unsigned long data,unsigned char bit_len,unsigned char byte_buf[],unsigned short *byte_offset,unsigned short *bit_offset)
000000 e92d4ff8 PUSH {r3-r11,lr}
;;;54 {
000004 4607 MOV r7,r0
000006 460c MOV r4,r1
000008 4692 MOV r10,r2
00000a 4698 MOV r8,r3
00000c 9e0a LDR r6,[sp,#0x28]
;;;55 unsigned short byteOffset,bitOffset;
;;;56 unsigned byte_data;
;;;57
;;;58 byteOffset = *byte_offset;
00000e f8b8b000 LDRH r11,[r8,#0]
;;;59 bitOffset = *bit_offset;
000012 8835 LDRH r5,[r6,#0]
;;;60
;;;61 if((bit_len == 0) || (bit_len > 32) || (bitOffset == 0) || (bitOffset > 8))
000014 b124 CBZ r4,|L4.32|
000016 2c20 CMP r4,#0x20
000018 dc02 BGT |L4.32|
00001a b10d CBZ r5,|L4.32|
00001c 2d08 CMP r5,#8
00001e dd01 BLE |L4.36|
|L4.32|
;;;62 return;
;;;63
;;;64 while(bit_len > 0)
;;;65 {
;;;66 if(bit_len > bitOffset)
;;;67 {
;;;68 byte_data = (data >> (bit_len - bitOffset));
;;;69 BitToByte(byte_data,(unsigned char)bitOffset,byte_buf,byte_offset,bit_offset);
;;;70 bit_len -= bitOffset;
;;;71
;;;72 byteOffset = *byte_offset;
;;;73 bitOffset = *bit_offset;
;;;74 }
;;;75 else
;;;76 {
;;;77 byte_data = data;
;;;78 BitToByte(byte_data,bit_len,byte_buf,byte_offset,bit_offset);
;;;79 bit_len = 0;
;;;80
;;;81 byteOffset = *byte_offset;
;;;82 bitOffset = *bit_offset;
;;;83 }
;;;84 }
;;;85 }
000020 e8bd8ff8 POP {r3-r11,pc}
|L4.36|
000024 e01f B |L4.102|
|L4.38|
000026 42ac CMP r4,r5 ;66
000028 dd10 BLE |L4.76|
00002a 1b60 SUBS r0,r4,r5 ;68
00002c fa27f900 LSR r9,r7,r0 ;68
000030 b2e9 UXTB r1,r5 ;69
000032 f00900ff AND r0,r9,#0xff ;69
000036 4643 MOV r3,r8 ;69
000038 4652 MOV r2,r10 ;69
00003a 9600 STR r6,[sp,#0] ;69
00003c f7fffffe BL BitToByte
000040 1b60 SUBS r0,r4,r5 ;70
000042 b2c4 UXTB r4,r0 ;70
000044 f8b8b000 LDRH r11,[r8,#0] ;72
000048 8835 LDRH r5,[r6,#0] ;73
00004a e00c B |L4.102|
|L4.76|
00004c 46b9 MOV r9,r7 ;77
00004e f00900ff AND r0,r9,#0xff ;78
000052 4643 MOV r3,r8 ;78
000054 4652 MOV r2,r10 ;78
000056 4621 MOV r1,r4 ;78
000058 9600 STR r6,[sp,#0] ;78
00005a f7fffffe BL BitToByte
00005e 2400 MOVS r4,#0 ;79
000060 f8b8b000 LDRH r11,[r8,#0] ;81
000064 8835 LDRH r5,[r6,#0] ;82
|L4.102|
000066 2c00 CMP r4,#0 ;64
000068 dcdd BGT |L4.38|
00006a bf00 NOP
00006c e7d8 B |L4.32|
;;;86
ENDP
;*** Start embedded assembler ***
#line 1 "..\\..\\User\\common.c"
AREA ||.rev16_text||, CODE
THUMB
EXPORT |__asm___8_common_c_512530b6____REV16|
#line 129 "..\\..\\Libraries\\CMSIS\\Include\\core_cmInstr.h"
|__asm___8_common_c_512530b6____REV16| PROC
#line 130
rev16 r0, r0
bx lr
ENDP
AREA ||.revsh_text||, CODE
THUMB
EXPORT |__asm___8_common_c_512530b6____REVSH|
#line 144
|__asm___8_common_c_512530b6____REVSH| PROC
#line 145
revsh r0, r0
bx lr
ENDP
AREA ||.rrx_text||, CODE
THUMB
EXPORT |__asm___8_common_c_512530b6____RRX|
#line 300
|__asm___8_common_c_512530b6____RRX| PROC
#line 301
rrx r0, r0
bx lr
ENDP
;*** End embedded assembler ***