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 + -
显示快捷键?