drv_uart.txt
来自「该模板使用于周立功公司研发的EasyARM2100系列开发板」· 文本 代码 · 共 777 行 · 第 1/3 页
TXT
777 行
00024c e5c10002 STRB r0,[r1,#2] ; send232
;;;190 send232[3]=0xff; //报头
000250 e5c10003 STRB r0,[r1,#3] ; send232
;;;191
;;;192
;;;193 send232[4]=0x08; //数据包长 40字节
000254 e3a00008 MOV r0,#8
000258 e5c10004 STRB r0,[r1,#4] ; send232
;;;194 send232[5]=0xf7; //数据包长 反码
00025c e3a000f7 MOV r0,#0xf7
000260 e5c10005 STRB r0,[r1,#5] ; send232
;;;195 send232[6]=type; //控制字
000264 e2810000 ADD r0,r1,#0
000268 e5c04006 STRB r4,[r0,#6] ; send232
;;;196 send232[7]=serial_number++; //序列号加1
00026c e59f0348 LDR r0,|L1.1468|
000270 e5d00000 LDRB r0,[r0,#0] ; serial_number
000274 e5c10007 STRB r0,[r1,#7] ; send232
000278 e59f033c LDR r0,|L1.1468|
00027c e5d00000 LDRB r0,[r0,#0] ; serial_number
000280 e2800001 ADD r0,r0,#1
000284 e59f1330 LDR r1,|L1.1468|
000288 e5c10000 STRB r0,[r1,#0] ; serial_number
;;;197 if(serial_number>=254) serial_number=1;
00028c e2810000 ADD r0,r1,#0
000290 e5d00000 LDRB r0,[r0,#0] ; serial_number
000294 e35000fe CMP r0,#0xfe
000298 ba000002 BLT |L1.680|
00029c e3a00001 MOV r0,#1
0002a0 e59f1314 LDR r1,|L1.1468|
0002a4 e5c10000 STRB r0,[r1,#0] ; serial_number
|L1.680|
;;;198
;;;199
;;;200 send232[8] =0; //此处填入0,表示不能返回结果
0002a8 e3a00000 MOV r0,#0
0002ac e59f1304 LDR r1,|L1.1464|
0002b0 e5c10008 STRB r0,[r1,#8] ; send232
;;;201 send232[9] =0;
0002b4 e5c10009 STRB r0,[r1,#9] ; send232
;;;202 send232[10]=0;
0002b8 e5c1000a STRB r0,[r1,#0xa] ; send232
;;;203 send232[11]=0;
0002bc e5c1000b STRB r0,[r1,#0xb] ; send232
;;;204 for(i=0;i<12;i++)
0002c0 e3a05000 MOV r5,#0
0002c4 ea000005 B |L1.736|
|L1.712|
;;;205 {
;;;206 crcbuff[i]=send232[i];
0002c8 e59f02e8 LDR r0,|L1.1464|
0002cc e7d00005 LDRB r0,[r0,r5]
0002d0 e59f12d0 LDR r1,|L1.1448|
0002d4 e7c10005 STRB r0,[r1,r5]
0002d8 e2850001 ADD r0,r5,#1 ;204
0002dc e20050ff AND r5,r0,#0xff ;204
|L1.736|
0002e0 e355000c CMP r5,#0xc ;204
0002e4 bafffff7 BLT |L1.712|
;;;207 }
;;;208 crc_temp=crc16_tab(ptr,(12-6)); //取得CRC校验码
0002e8 e3a01006 MOV r1,#6
0002ec e59f02cc LDR r0,|L1.1472|
0002f0 e5900000 LDR r0,[r0,#0] ; ptr
0002f4 ebfffffe BL crc16_tab
0002f8 e59f12c4 LDR r1,|L1.1476|
0002fc e1c100b0 STRH r0,[r1,#0] ; crc_temp
;;;209
;;;210 send232[12]=crc_temp>>8;
000300 e2810000 ADD r0,r1,#0
000304 e1d000b0 LDRH r0,[r0,#0] ; crc_temp
000308 e1a00440 ASR r0,r0,#8
00030c e59f12a4 LDR r1,|L1.1464|
000310 e5c1000c STRB r0,[r1,#0xc] ; send232
;;;211 send232[13]=crc_temp;
000314 e59f02a8 LDR r0,|L1.1476|
000318 e1d000b0 LDRH r0,[r0,#0] ; crc_temp
00031c e5c1000d STRB r0,[r1,#0xd] ; send232
;;;212 for(i=0;i<14;i++)
000320 e3a05000 MOV r5,#0
000324 ea000004 B |L1.828|
|L1.808|
;;;213 {
;;;214 UART0_SendByte(send232[i]);
000328 e59f1288 LDR r1,|L1.1464|
00032c e7d10005 LDRB r0,[r1,r5]
000330 ebfffffe BL UART0_SendByte
000334 e2850001 ADD r0,r5,#1 ;212
000338 e20050ff AND r5,r0,#0xff ;212
|L1.828|
00033c e355000e CMP r5,#0xe ;212
000340 bafffff8 BLT |L1.808|
;;;215 }
;;;216
;;;217 }
000344 e8bd4070 POP {r4-r6,lr}
000348 e12fff1e BX lr
;;;218
ENDP
setting_parm PROC
;;;233 void setting_parm(uint8 channel)
;;;234 {
00034c e92d4070 PUSH {r4-r6,lr}
000350 e1a04000 MOV r4,r0
;;;235 uint8 i;
;;;236
;;;237 //canshu0 = 12341;
;;;238 // canshu1 = 23452;
;;;239 // canshu2 = 32343;
;;;240 // jifen_shijian = 42344;
;;;241 // guanchen = 52345;
;;;242 send232[0]=0xff;
000354 e3a000ff MOV r0,#0xff
000358 e59f1258 LDR r1,|L1.1464|
00035c e5c10000 STRB r0,[r1,#0] ; send232
;;;243 send232[1]=0xff;
000360 e5c10001 STRB r0,[r1,#1] ; send232
;;;244 send232[2]=0xff;
000364 e5c10002 STRB r0,[r1,#2] ; send232
;;;245 send232[3]=0xff; //报头
000368 e5c10003 STRB r0,[r1,#3] ; send232
;;;246
;;;247
;;;248 send232[4]=0x08; //数据包长 40字节
00036c e3a00008 MOV r0,#8
000370 e5c10004 STRB r0,[r1,#4] ; send232
;;;249 send232[5]=0xf7; //数据包长 反码
000374 e3a000f7 MOV r0,#0xf7
000378 e5c10005 STRB r0,[r1,#5] ; send232
;;;250 send232[6]=channel+2; //命令字
00037c e2840002 ADD r0,r4,#2
000380 e5c10006 STRB r0,[r1,#6] ; send232
;;;251 send232[7]=serial_number++; //序列号加1
000384 e59f0230 LDR r0,|L1.1468|
000388 e5d00000 LDRB r0,[r0,#0] ; serial_number
00038c e5c10007 STRB r0,[r1,#7] ; send232
000390 e59f0224 LDR r0,|L1.1468|
000394 e5d00000 LDRB r0,[r0,#0] ; serial_number
000398 e2800001 ADD r0,r0,#1
00039c e59f1218 LDR r1,|L1.1468|
0003a0 e5c10000 STRB r0,[r1,#0] ; serial_number
;;;252 if(serial_number>=254) serial_number=1;
0003a4 e2810000 ADD r0,r1,#0
0003a8 e5d00000 LDRB r0,[r0,#0] ; serial_number
0003ac e35000fe CMP r0,#0xfe
0003b0 ba000002 BLT |L1.960|
0003b4 e3a00001 MOV r0,#1
0003b8 e59f11fc LDR r1,|L1.1468|
0003bc e5c10000 STRB r0,[r1,#0] ; serial_number
|L1.960|
;;;253
;;;254 switch(channel) //以设置参数类型
0003c0 e3540005 CMP r4,#5
0003c4 308ff104 ADDCC pc,pc,r4,LSL #2
0003c8 ea00004f B |L1.1292|
0003cc ea000003 B |L1.992|
0003d0 ea000011 B |L1.1052|
0003d4 ea00001f B |L1.1112|
0003d8 ea00002d B |L1.1172|
0003dc ea00003b B |L1.1232|
|L1.992|
;;;255 {
;;;256 case 0: //放大器标定参数0
0003e0 e1a00000 MOV r0,r0
;;;257 {
;;;258 send232[8] =SET[0].byte[0];
0003e4 e59f01dc LDR r0,|L1.1480|
0003e8 e5d00000 LDRB r0,[r0,#0] ; SET
0003ec e59f11c4 LDR r1,|L1.1464|
0003f0 e5c10008 STRB r0,[r1,#8] ; send232
;;;259 send232[9] =SET[0].byte[1];
0003f4 e59f01cc LDR r0,|L1.1480|
0003f8 e5d00001 LDRB r0,[r0,#1] ; SET
0003fc e5c10009 STRB r0,[r1,#9] ; send232
;;;260 send232[10]=SET[0].byte[2];
000400 e59f01c0 LDR r0,|L1.1480|
000404 e5d00002 LDRB r0,[r0,#2] ; SET
000408 e5c1000a STRB r0,[r1,#0xa] ; send232
;;;261 send232[11]=SET[0].byte[3];
00040c e59f01b4 LDR r0,|L1.1480|
000410 e5d00003 LDRB r0,[r0,#3] ; SET
000414 e5c1000b STRB r0,[r1,#0xb] ; send232
;;;262 }
;;;263 break;
000418 ea00003d B |L1.1300|
|L1.1052|
;;;264 case 1: //放大器标定参数1
00041c e1a00000 MOV r0,r0
;;;265 {
;;;266 send232[8] =SET[1].byte[0];
000420 e59f01a0 LDR r0,|L1.1480|
000424 e5d00004 LDRB r0,[r0,#4] ; SET
000428 e59f1188 LDR r1,|L1.1464|
00042c e5c10008 STRB r0,[r1,#8] ; send232
;;;267 send232[9] =SET[1].byte[1];
000430 e59f0190 LDR r0,|L1.1480|
000434 e5d00005 LDRB r0,[r0,#5]
000438 e5c10009 STRB r0,[r1,#9] ; send232
;;;268 send232[10]=SET[1].byte[2];
00043c e59f0184 LDR r0,|L1.1480|
000440 e5d00006 LDRB r0,[r0,#6]
000444 e5c1000a STRB r0,[r1,#0xa] ; send232
;;;269 send232[11]=SET[1].byte[3];
000448 e59f0178 LDR r0,|L1.1480|
00044c e5d00007 LDRB r0,[r0,#7]
000450 e5c1000b STRB r0,[r1,#0xb] ; send232
;;;270 }
;;;271 break;
000454 ea00002e B |L1.1300|
|L1.1112|
;;;272 case 2: //放大器标定参数2
000458 e1a00000 MOV r0,r0
;;;273 {
;;;274 send232[8] =SET[2].byte[0];
00045c e59f0164 LDR r0,|L1.1480|
000460 e5d00008 LDRB r0,[r0,#8] ; SET
000464 e59f114c LDR r1,|L1.1464|
000468 e5c10008 STRB r0,[r1,#8] ; send232
;;;275 send232[9] =SET[2].byte[1];
00046c e59f0154 LDR r0,|L1.1480|
000470 e5d00009 LDRB r0,[r0,#9]
000474 e5c10009 STRB r0,[r1,#9] ; send232
;;;276 send232[10]=SET[2].byte[2];
000478 e59f0148 LDR r0,|L1.1480|
00047c e5d0000a LDRB r0,[r0,#0xa]
000480 e5c1000a STRB r0,[r1,#0xa] ; send232
;;;277 send232[11]=SET[2].byte[3];
000484 e59f013c LDR r0,|L1.1480|
000488 e5d0000b LDRB r0,[r0,#0xb]
00048c e5c1000b STRB r0,[r1,#0xb] ; send232
;;;278 }
;;;279 break;
000490 ea00001f B |L1.1300|
|L1.1172|
;;;280 case 3: //放大器积分时间
000494 e1a00000 MOV r0,r0
;;;281 {
;;;282 send232[8] =SET[3].byte[0];
000498 e59f0128 LDR r0,|L1.1480|
00049c e5d0000c LDRB r0,[r0,#0xc] ; SET
0004a0 e59f1110 LDR r1,|L1.1464|
0004a4 e5c10008 STRB r0,[r1,#8] ; send232
;;;283 send232[9] =SET[3].byte[1];
0004a8 e59f0118 LDR r0,|L1.1480|
0004ac e5d0000d LDRB r0,[r0,#0xd]
0004b0 e5c10009 STRB r0,[r1,#9] ; send232
;;;284 send232[10]=SET[3].byte[2];
0004b4 e59f010c LDR r0,|L1.1480|
0004b8 e5d0000e LDRB r0,[r0,#0xe]
0004bc e5c1000a STRB r0,[r1,#0xa] ; send232
;;;285 send232[11]=SET[3].byte[3];
0004c0 e59f0100 LDR r0,|L1.1480|
0004c4 e5d0000f LDRB r0,[r0,#0xf]
0004c8 e5c1000b STRB r0,[r1,#0xb] ; send232
;;;286 }
;;;287 break;
0004cc ea000010 B |L1.1300|
|L1.1232|
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?