⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dso.txt

📁 STM32手持式示波器源代码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
00006a  f8900390          LDRB     r0,[r0,#0x390]
00006e  b920              CBNZ     r0,|L4.122|
;;;561    	{
;;;562    		g_DSO.BufUsed = 1;
000070  2101              MOVS     r1,#1
000072  482e              LDR      r0,|L4.300|
000074  f8801390          STRB     r1,[r0,#0x390]
000078  e003              B        |L4.130|
                  |L4.122|
;;;563    	}
;;;564    	else
;;;565    	{
;;;566    		g_DSO.BufUsed = 0;
00007a  2100              MOVS     r1,#0
00007c  482b              LDR      r0,|L4.300|
00007e  f8801390          STRB     r1,[r0,#0x390]
                  |L4.130|
;;;567    	}
;;;568    
;;;569    	if (g_DSO.BufUsed == 0)
000082  482a              LDR      r0,|L4.300|
000084  f8900390          LDRB     r0,[r0,#0x390]
000088  b920              CBNZ     r0,|L4.148|
;;;570    	{
;;;571    		px = g_DSO.xCh1Buf1;
00008a  4d27              LDR      r5,|L4.296|
00008c  3530              ADDS     r5,r5,#0x30
;;;572    		py = g_DSO.yCh1Buf1;
00008e  f505771b          ADD      r7,r5,#0x26c
000092  e002              B        |L4.154|
                  |L4.148|
;;;573    	}
;;;574    	else
;;;575    	{
;;;576    		px = g_DSO.xCh1Buf2;
000094  4d26              LDR      r5,|L4.304|
;;;577    		py = g_DSO.yCh1Buf2;
000096  f505771b          ADD      r7,r5,#0x26c
                  |L4.154|
;;;578    	}
;;;579    
;;;580    	/* 计算当前最新的数据位置,向前递减400个样本 */
;;;581    	//pos = SAMPLE_COUNT - DMA_GetCurrDataCounter(DMA1_Channel1);
;;;582    	//pos = 0;
;;;583    
;;;584    	/* CH1通道, 输入0V时,ADC采样值 = 1872 */
;;;585    	for (i = 0; i < 300; i++)
00009a  2400              MOVS     r4,#0
00009c  e020              B        |L4.224|
                  |L4.158|
;;;586    	{
;;;587    		px[i] = 10 + i;
00009e  f104000a          ADD      r0,r4,#0xa
0000a2  f8250014          STRH     r0,[r5,r4,LSL #1]
;;;588    		iTemp = g_DSO.Ch1VOffset + (int16_t)((1872 - g_DSO.Ch1Buf[i + 1]) * 10) / g_DSO.Ch1Attenuation;
0000a6  4923              LDR      r1,|L4.308|
0000a8  1c60              ADDS     r0,r4,#1
0000aa  f8310010          LDRH     r0,[r1,r0,LSL #1]
0000ae  f5c060ea          RSB      r0,r0,#0x750
0000b2  eb000080          ADD      r0,r0,r0,LSL #2
0000b6  0040              LSLS     r0,r0,#1
0000b8  b201              SXTH     r1,r0
0000ba  481b              LDR      r0,|L4.296|
0000bc  6940              LDR      r0,[r0,#0x14]
0000be  fb91f1f0          SDIV     r1,r1,r0
0000c2  4819              LDR      r0,|L4.296|
0000c4  8d40              LDRH     r0,[r0,#0x2a]
0000c6  4408              ADD      r0,r0,r1
0000c8  b206              SXTH     r6,r0
;;;589    
;;;590    		if (iTemp > 220)
0000ca  2edc              CMP      r6,#0xdc
0000cc  dd01              BLE      |L4.210|
;;;591    		{
;;;592    			iTemp = 220;
0000ce  26dc              MOVS     r6,#0xdc
0000d0  e002              B        |L4.216|
                  |L4.210|
;;;593    		}
;;;594    		else if (iTemp < 20)
0000d2  2e14              CMP      r6,#0x14
0000d4  da00              BGE      |L4.216|
;;;595    		{
;;;596    			iTemp = 20;
0000d6  2614              MOVS     r6,#0x14
                  |L4.216|
;;;597    		}
;;;598    		py[i] = iTemp;
0000d8  f8276014          STRH     r6,[r7,r4,LSL #1]
0000dc  1c60              ADDS     r0,r4,#1              ;585
0000de  b204              SXTH     r4,r0                 ;585
                  |L4.224|
0000e0  f5b47f96          CMP      r4,#0x12c             ;585
0000e4  dbdb              BLT      |L4.158|
;;;599    	}
;;;600    
;;;601    	/* 清除上帧波形 */
;;;602    	if (g_DSO.BufUsed == 0)
0000e6  4811              LDR      r0,|L4.300|
0000e8  f8900390          LDRB     r0,[r0,#0x390]
0000ec  b938              CBNZ     r0,|L4.254|
;;;603    	{
;;;604    		LCD_DrawPoints(g_DSO.xCh1Buf2, g_DSO.yCh1Buf2, 300, Blue);
0000ee  231f              MOVS     r3,#0x1f
0000f0  f44f7296          MOV      r2,#0x12c
0000f4  4910              LDR      r1,|L4.312|
0000f6  480e              LDR      r0,|L4.304|
0000f8  f7fffffe          BL       LCD_DrawPoints
0000fc  e007              B        |L4.270|
                  |L4.254|
;;;605    	}
;;;606    	else
;;;607    	{
;;;608    		LCD_DrawPoints(g_DSO.xCh1Buf1, g_DSO.yCh1Buf1, 300, Blue);
0000fe  231f              MOVS     r3,#0x1f
000100  f44f7296          MOV      r2,#0x12c
000104  490d              LDR      r1,|L4.316|
000106  f5a1701b          SUB      r0,r1,#0x26c
00010a  f7fffffe          BL       LCD_DrawPoints
                  |L4.270|
;;;609    	}
;;;610    
;;;611    	/* 显示更新的波形 */
;;;612    	LCD_DrawPoints((uint16_t *)px, (uint16_t *)py, 300, Yellow);
00010e  f64f73e0          MOV      r3,#0xffe0
000112  f44f7296          MOV      r2,#0x12c
000116  4639              MOV      r1,r7
000118  4628              MOV      r0,r5
00011a  f7fffffe          BL       LCD_DrawPoints
;;;613    }
00011e  e8bd81f0          POP      {r4-r8,pc}
;;;614    
                          ENDP

000122  0000              DCW      0x0000
                  |L4.292|
                          DCD      ||.data||+0x2
                  |L4.296|
                          DCD      g_DSO+0x4000
                  |L4.300|
                          DCD      g_DSO+0x5000
                  |L4.304|
                          DCD      g_DSO+0x4508
                  |L4.308|
                          DCD      g_DSO
                  |L4.312|
                          DCD      g_DSO+0x4774
                  |L4.316|
                          DCD      g_DSO+0x429c

                          AREA ||i.DispCh2Wave||, CODE, READONLY, ALIGN=2

                  DispCh2Wave PROC
;;;620    */
;;;621    static void DispCh2Wave(void)
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;622    {
;;;623    	int16_t i;		/* 有符号数 */
;;;624    	//uint16_t pos;
;;;625    	uint16_t *px;
;;;626    	uint16_t *py;
;;;627    	int16_t iTemp;
;;;628    
;;;629    	/* 显示通道2电平标记 */
;;;630    	{
;;;631    		static uint16_t y = 170;
;;;632    
;;;633    		LCD_SetTextColor(Blue);  /* 选择蓝色 */
000004  201f              MOVS     r0,#0x1f
000006  f7fffffe          BL       LCD_SetTextColor
;;;634    		LCD_DrawLine(1, y, 6, Horizontal);
00000a  2300              MOVS     r3,#0
00000c  2206              MOVS     r2,#6
00000e  4838              LDR      r0,|L5.240|
000010  8801              LDRH     r1,[r0,#0]  ; y
000012  2001              MOVS     r0,#1
000014  f7fffffe          BL       LCD_DrawLine
;;;635    
;;;636    		y = g_DSO.Ch2VOffset;
000018  4836              LDR      r0,|L5.244|
00001a  8d80              LDRH     r0,[r0,#0x2c]
00001c  4934              LDR      r1,|L5.240|
00001e  8008              STRH     r0,[r1,#0]
;;;637    
;;;638    		if (y < 20)
000020  4608              MOV      r0,r1
000022  8800              LDRH     r0,[r0,#0]  ; y
000024  2814              CMP      r0,#0x14
000026  da02              BGE      |L5.46|
;;;639    		{
;;;640    			y = 20;
000028  2014              MOVS     r0,#0x14
00002a  8008              STRH     r0,[r1,#0]
00002c  e006              B        |L5.60|
                  |L5.46|
;;;641    		}
;;;642    		else if (y > 220)
00002e  4830              LDR      r0,|L5.240|
000030  8800              LDRH     r0,[r0,#0]  ; y
000032  28dc              CMP      r0,#0xdc
000034  dd02              BLE      |L5.60|
;;;643    		{
;;;644    			y = 220;
000036  20dc              MOVS     r0,#0xdc
000038  492d              LDR      r1,|L5.240|
00003a  8008              STRH     r0,[r1,#0]
                  |L5.60|
;;;645    		}
;;;646    		LCD_SetTextColor(Green);  /* 选择白色 */
00003c  f44f60fc          MOV      r0,#0x7e0
000040  f7fffffe          BL       LCD_SetTextColor
;;;647    		LCD_DrawLine(1, y, 6, Horizontal);
000044  2300              MOVS     r3,#0
000046  2206              MOVS     r2,#6
000048  4829              LDR      r0,|L5.240|
00004a  8801              LDRH     r1,[r0,#0]  ; y
00004c  2001              MOVS     r0,#1
00004e  f7fffffe          BL       LCD_DrawLine
;;;648    	}
;;;649    		
;;;650    	if (g_DSO.BufUsed == 0)
000052  4829              LDR      r0,|L5.248|
000054  f8900390          LDRB     r0,[r0,#0x390]
000058  b918              CBNZ     r0,|L5.98|
;;;651    	{
;;;652    		px = g_DSO.xCh2Buf1;
00005a  4d28              LDR      r5,|L5.252|
;;;653    		py = g_DSO.yCh2Buf1;
00005c  f505771b          ADD      r7,r5,#0x26c
000060  e002              B        |L5.104|
                  |L5.98|
;;;654    	}
;;;655    	else
;;;656    	{
;;;657    		px = g_DSO.xCh2Buf2;
000062  4d27              LDR      r5,|L5.256|
;;;658    		py = g_DSO.yCh2Buf2;
000064  f505771b          ADD      r7,r5,#0x26c
                  |L5.104|
;;;659    	}
;;;660    
;;;661    	/* 计算当前最新的数据位置,向前递减400个样本 */
;;;662    	//pos = SAMPLE_COUNT - DMA_GetCurrDataCounter(DMA2_Channel5);
;;;663    	//pos = 0;
;;;664    
;;;665    	for (i = 0; i < 300; i++)
000068  2400              MOVS     r4,#0
00006a  e020              B        |L5.174|
                  |L5.108|
;;;666    	{
;;;667    		px[i] = 10 + i;
00006c  f104000a          ADD      r0,r4,#0xa
000070  f8250014          STRH     r0,[r5,r4,LSL #1]
;;;668    		iTemp = g_DSO.Ch2VOffset + (int16_t)((1872 - g_DSO.Ch2Buf[i + 1]) * 10) / g_DSO.Ch2Attenuation;
000074  4923              LDR      r1,|L5.260|
000076  1c60              ADDS     r0,r4,#1
000078  f8310010          LDRH     r0,[r1,r0,LSL #1]
00007c  f5c060ea          RSB      r0,r0,#0x750
000080  eb000080          ADD      r0,r0,r0,LSL #2
000084  0040              LSLS     r0,r0,#1
000086  b201              SXTH     r1,r0
000088  481a              LDR      r0,|L5.244|
00008a  6980              LDR      r0,[r0,#0x18]
00008c  fb91f1f0          SDIV     r1,r1,r0
000090  4818              LDR      r0,|L5.244|
000092  8d80              LDRH     r0,[r0,#0x2c]
000094  4408              ADD      r0,r0,r1
000096  b206              SXTH     r6,r0
;;;669    
;;;670    		if (iTemp > 220)
000098  2edc              CMP      r6,#0xdc
00009a  dd01              BLE      |L5.160|
;;;671    		{
;;;672    			iTemp = 220;
00009c  26dc              MOVS     r6,#0xdc
00009e  e002              B        |L5.166|
                  |L5.160|
;;;673    		}
;;;674    		else if (iTemp < 20)
0000a0  2e14              CMP      r6,#0x14
0000a2  da00              BGE      |L5.166|
;;;675    		{
;;;676    			iTemp = 20;
0000a4  2614              MOVS     r6,#0x14
                  |L5.166|
;;;677    		}
;;;678    		py[i] = iTemp;
0000a6  f8276014          STRH     r6,[r7,r4,LSL #1]
0000aa  1c60              ADDS     r0,r4,#1              ;665
0000ac  b204              SXTH     r4,r0                 ;665
                  |L5.174|
0000ae  f5b47f96          CMP      r4,#0x12c             ;665
0000b2  dbdb              BLT      |L5.108|
;;;679    	}
;;;680    
;;;681    	/* 清除上帧波形 */
;;;682    	if (g_DSO.BufUsed == 0)
0000b4  4810              LDR      r0,|L5.248|
0000b6  f8900390          LDRB     r0,[r0,#0x390]
0000ba  b938              CBNZ     r0,|L5.204|
;;;683    	{
;;;684    		LCD_DrawPoints(g_DSO.xCh2Buf2, g_DSO.yCh2Buf2, 300, Blue);
0000bc  231f              MOVS     r3,#0x1f
0000be  f44f7296          MOV      r2,#0x12c
0000c2  4911              LDR      r1,|L5.264|
0000c4  480e              LDR      r0,|L5.256|
0000c6  f7fffffe          BL       LCD_DrawPoints
0000ca  e006              B        |L5.218|
                  |L5.204|
;;;685    	}
;;;686    	else
;;;687    	{
;;;688    		LCD_DrawPoints(g_DSO.xCh2Buf1, g_DSO.yCh2Buf1, 300, Blue);
0000cc  231f              MOVS     r3,#0x1f
0000ce  f44f7296          MOV      r2,#0x12c
0000d2  490e              LDR      r1,|L5.268|
0000d4  4809              LDR      r0,|L5.252|
0000d6  f7fffffe          BL       LCD_DrawPoints
                  |L5.218|
;;;689    	}
;;;690    	/* 显示更新的波形 */
;;;691    	LCD_DrawPoints((uint16_t *)px, (uint16_t *)py, 300, Green);
0000da  f44f63fc          MOV      r3,#0x7e0
0000de  f44f7296          MOV      r2,#0x12c
0000e2  4639              MOV      r1,r7
0000e4  4628              MOV      r0,r5
0000e6  f7fffffe          BL       LCD_DrawPoints
;;;692    }
0000ea  e8bd81f0          POP      {r4-r8,pc}
;;;693    
                          ENDP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -