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

📄 dso.txt

📁 STM32手持式示波器源代码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\dso.o --depend=.\Obj\dso.d --device=DARMSTM --apcs=interwork -O0 -Otime -I..\..\Libraries\CMSIS\Core\CM3 -I..\..\Libraries\STM32F10x_StdPeriph_Driver\inc -I..\..\Source\inc -Id:\Keil\ARM\INC\ST\STM32F10x -D__MICROLIB -DSTM32F10X_HD -DUSE_STDPERIPH_DRIVER ..\..\Source\src\dso.c]
                          THUMB

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

                  AdjustAtt PROC
;;;923    */
;;;924    static void AdjustAtt(uint8_t ch, uint8_t mode)
000000  2801              CMP      r0,#1
;;;925    {
;;;926    
;;;927    	if (ch == 1)
000002  d125              BNE      |L1.80|
;;;928    	{
;;;929    		if (mode == 0) 	/* 降低 */
000004  b951              CBNZ     r1,|L1.28|
;;;930    		{
;;;931    			if (g_DSO.Ch1AttId > 0)
000006  4a26              LDR      r2,|L1.160|
000008  7c12              LDRB     r2,[r2,#0x10]
00000a  2a00              CMP      r2,#0
00000c  dd10              BLE      |L1.48|
;;;932    			{
;;;933    				g_DSO.Ch1AttId--;
00000e  4a24              LDR      r2,|L1.160|
000010  7c12              LDRB     r2,[r2,#0x10]
000012  1e52              SUBS     r2,r2,#1
000014  b2d3              UXTB     r3,r2
000016  4a22              LDR      r2,|L1.160|
000018  7413              STRB     r3,[r2,#0x10]
00001a  e009              B        |L1.48|
                  |L1.28|
;;;934    			}
;;;935    		}
;;;936    		else		/* 增加 */
;;;937    		{
;;;938    			if (g_DSO.Ch1AttId < ATT_COUNT - 1)
00001c  4a20              LDR      r2,|L1.160|
00001e  7c12              LDRB     r2,[r2,#0x10]
000020  2a05              CMP      r2,#5
000022  da05              BGE      |L1.48|
;;;939    			{
;;;940    				g_DSO.Ch1AttId++;
000024  4a1e              LDR      r2,|L1.160|
000026  7c12              LDRB     r2,[r2,#0x10]
000028  1c52              ADDS     r2,r2,#1
00002a  b2d3              UXTB     r3,r2
00002c  4a1c              LDR      r2,|L1.160|
00002e  7413              STRB     r3,[r2,#0x10]
                  |L1.48|
;;;941    			}
;;;942    		}
;;;943    
;;;944    		g_DSO.Ch1Attenuation = g_AttTable[g_DSO.Ch1AttId][0];
000030  4a1b              LDR      r2,|L1.160|
000032  7c12              LDRB     r2,[r2,#0x10]
000034  4b1b              LDR      r3,|L1.164|
000036  f8533032          LDR      r3,[r3,r2,LSL #3]
00003a  4a19              LDR      r2,|L1.160|
00003c  6153              STR      r3,[r2,#0x14]
;;;945    		g_DSO.Ch1VScale =  g_AttTable[g_DSO.Ch1AttId][1];
00003e  7c12              LDRB     r2,[r2,#0x10]
000040  4b18              LDR      r3,|L1.164|
000042  eb0302c2          ADD      r2,r3,r2,LSL #3
000046  6852              LDR      r2,[r2,#4]
000048  b293              UXTH     r3,r2
00004a  4a15              LDR      r2,|L1.160|
00004c  8393              STRH     r3,[r2,#0x1c]
00004e  e026              B        |L1.158|
                  |L1.80|
;;;946    	}
;;;947    	else if (ch == 2)
000050  2802              CMP      r0,#2
000052  d124              BNE      |L1.158|
;;;948    	{
;;;949    		if (mode == 0) 	/* 降低 */
000054  b951              CBNZ     r1,|L1.108|
;;;950    		{
;;;951    			if (g_DSO.Ch2AttId > 0)
000056  4a12              LDR      r2,|L1.160|
000058  7c52              LDRB     r2,[r2,#0x11]
00005a  2a00              CMP      r2,#0
00005c  dd10              BLE      |L1.128|
;;;952    			{
;;;953    				g_DSO.Ch2AttId--;
00005e  4a10              LDR      r2,|L1.160|
000060  7c52              LDRB     r2,[r2,#0x11]
000062  1e52              SUBS     r2,r2,#1
000064  b2d3              UXTB     r3,r2
000066  4a0e              LDR      r2,|L1.160|
000068  7453              STRB     r3,[r2,#0x11]
00006a  e009              B        |L1.128|
                  |L1.108|
;;;954    			}
;;;955    		}
;;;956    		else		/* 增加 */
;;;957    		{
;;;958    			if (g_DSO.Ch2AttId < ATT_COUNT - 1)
00006c  4a0c              LDR      r2,|L1.160|
00006e  7c52              LDRB     r2,[r2,#0x11]
000070  2a05              CMP      r2,#5
000072  da05              BGE      |L1.128|
;;;959    			{
;;;960    				g_DSO.Ch2AttId++;
000074  4a0a              LDR      r2,|L1.160|
000076  7c52              LDRB     r2,[r2,#0x11]
000078  1c52              ADDS     r2,r2,#1
00007a  b2d3              UXTB     r3,r2
00007c  4a08              LDR      r2,|L1.160|
00007e  7453              STRB     r3,[r2,#0x11]
                  |L1.128|
;;;961    			}
;;;962    		}
;;;963    		g_DSO.Ch2Attenuation = g_AttTable[g_DSO.Ch2AttId][0];
000080  4a07              LDR      r2,|L1.160|
000082  7c52              LDRB     r2,[r2,#0x11]
000084  4b07              LDR      r3,|L1.164|
000086  f8533032          LDR      r3,[r3,r2,LSL #3]
00008a  4a05              LDR      r2,|L1.160|
00008c  6193              STR      r3,[r2,#0x18]
;;;964    		g_DSO.Ch2VScale =  g_AttTable[g_DSO.Ch2AttId][1];
00008e  7c52              LDRB     r2,[r2,#0x11]
000090  4b04              LDR      r3,|L1.164|
000092  eb0302c2          ADD      r2,r3,r2,LSL #3
000096  6852              LDR      r2,[r2,#4]
000098  b293              UXTH     r3,r2
00009a  4a01              LDR      r2,|L1.160|
00009c  83d3              STRH     r3,[r2,#0x1e]
                  |L1.158|
;;;965    	}
;;;966    }
00009e  4770              BX       lr
;;;967    
                          ENDP

                  |L1.160|
                          DCD      g_DSO+0x4000
                  |L1.164|
                          DCD      g_AttTable

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

                  DecSampleFreq PROC
;;;903    */
;;;904    static void DecSampleFreq(void)
000000  b510              PUSH     {r4,lr}
;;;905    {
;;;906    	if (g_DSO.TimeBaseId > 0)
000002  480d              LDR      r0,|L2.56|
000004  6840              LDR      r0,[r0,#4]
000006  b120              CBZ      r0,|L2.18|
;;;907    	{
;;;908    		g_DSO.TimeBaseId--;
000008  480b              LDR      r0,|L2.56|
00000a  6840              LDR      r0,[r0,#4]
00000c  1e41              SUBS     r1,r0,#1
00000e  480a              LDR      r0,|L2.56|
000010  6041              STR      r1,[r0,#4]
                  |L2.18|
;;;909    	}
;;;910    													 
;;;911    	g_DSO.TimeBase = g_TimeTable[g_DSO.TimeBaseId];
000012  4809              LDR      r0,|L2.56|
000014  6840              LDR      r0,[r0,#4]
000016  4909              LDR      r1,|L2.60|
000018  f8511020          LDR      r1,[r1,r0,LSL #2]
00001c  4806              LDR      r0,|L2.56|
00001e  60c1              STR      r1,[r0,#0xc]
;;;912    	g_DSO.SampleFreq = 25000000 / g_DSO.TimeBase;
000020  68c0              LDR      r0,[r0,#0xc]
000022  4907              LDR      r1,|L2.64|
000024  fbb1f1f0          UDIV     r1,r1,r0
000028  4803              LDR      r0,|L2.56|
00002a  6081              STR      r1,[r0,#8]
;;;913    
;;;914    	SetSampRate(g_DSO.SampleFreq);	/* 改变采样频率 */
00002c  4601              MOV      r1,r0
00002e  6888              LDR      r0,[r1,#8]
000030  f7fffffe          BL       SetSampRate
;;;915    }
000034  bd10              POP      {r4,pc}
;;;916    
                          ENDP

000036  0000              DCW      0x0000
                  |L2.56|
                          DCD      g_DSO+0x4000
                  |L2.60|
                          DCD      g_TimeTable
                  |L2.64|
                          DCD      0x017d7840

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

                  DispButton PROC
;;;503    */
;;;504    static void DispButton(void)
000000  b510              PUSH     {r4,lr}
;;;505    {
;;;506    	LCD_SetTextColor(White);  /* 选择白色 */
000002  f64f70ff          MOV      r0,#0xffff
000006  f7fffffe          BL       LCD_SetTextColor
;;;507    
;;;508    	/* 绘制一个实线矩形框 x, y, h, w */
;;;509    	LCD_DrawRect(320, 19, 25, 70);
00000a  2346              MOVS     r3,#0x46
00000c  2219              MOVS     r2,#0x19
00000e  2113              MOVS     r1,#0x13
000010  f44f70a0          MOV      r0,#0x140
000014  f7fffffe          BL       LCD_DrawRect
;;;510    	LCD_DisplayString(323, 24, "扩展按钮");
000018  a209              ADR      r2,|L3.64|
00001a  2118              MOVS     r1,#0x18
00001c  f2401043          MOV      r0,#0x143
000020  f7fffffe          BL       LCD_DisplayString
;;;511    
;;;512    	LCD_DrawRect(320, 55, 25, 70);
000024  2346              MOVS     r3,#0x46
000026  2219              MOVS     r2,#0x19
000028  2137              MOVS     r1,#0x37
00002a  f44f70a0          MOV      r0,#0x140
00002e  f7fffffe          BL       LCD_DrawRect
;;;513    	LCD_DisplayString(323, 60, "扩展按钮");
000032  a203              ADR      r2,|L3.64|
000034  213c              MOVS     r1,#0x3c
000036  f2401043          MOV      r0,#0x143
00003a  f7fffffe          BL       LCD_DisplayString
;;;514    
;;;515    }
00003e  bd10              POP      {r4,pc}
;;;516    
                          ENDP

                  |L3.64|
000040  c0a9d5b9b0b4c5a500        DCB      192,169,213,185,176,180,197,165,0
000049  00                DCB      0
00004a  00                DCB      0
00004b  00                DCB      0

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

                  DispCh1Wave PROC
;;;522    */
;;;523    static void DispCh1Wave(void)
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;524    {
;;;525    	int16_t i;		/* 有符号数 */
;;;526    	//uint16_t pos;
;;;527    	uint16_t *px;
;;;528    	uint16_t *py;
;;;529    	int16_t iTemp;
;;;530    
;;;531    	static uint8_t s_DispFirst = 0;		/* 用于第一次调用时刷屏 */
;;;532    
;;;533    	/* 显示通道1电平标记 */
;;;534    	{
;;;535    		static uint16_t y = 70;
;;;536    
;;;537    		LCD_SetTextColor(Blue);  /* 选择蓝色 */
000004  201f              MOVS     r0,#0x1f
000006  f7fffffe          BL       LCD_SetTextColor
;;;538    		LCD_DrawLine(1, y, 6, Horizontal);
00000a  2300              MOVS     r3,#0
00000c  2206              MOVS     r2,#6
00000e  4845              LDR      r0,|L4.292|
000010  8801              LDRH     r1,[r0,#0]  ; y
000012  2001              MOVS     r0,#1
000014  f7fffffe          BL       LCD_DrawLine
;;;539    
;;;540    		y = g_DSO.Ch1VOffset;
000018  4843              LDR      r0,|L4.296|
00001a  8d40              LDRH     r0,[r0,#0x2a]
00001c  4941              LDR      r1,|L4.292|
00001e  8008              STRH     r0,[r1,#0]
;;;541    
;;;542    		if (y < 20)
000020  4608              MOV      r0,r1
000022  8800              LDRH     r0,[r0,#0]  ; y
000024  2814              CMP      r0,#0x14
000026  da02              BGE      |L4.46|
;;;543    		{
;;;544    			y = 20;
000028  2014              MOVS     r0,#0x14
00002a  8008              STRH     r0,[r1,#0]
00002c  e006              B        |L4.60|
                  |L4.46|
;;;545    		}
;;;546    		else if (y > 220)
00002e  483d              LDR      r0,|L4.292|
000030  8800              LDRH     r0,[r0,#0]  ; y
000032  28dc              CMP      r0,#0xdc
000034  dd02              BLE      |L4.60|
;;;547    		{
;;;548    			y = 220;
000036  20dc              MOVS     r0,#0xdc
000038  493a              LDR      r1,|L4.292|
00003a  8008              STRH     r0,[r1,#0]
                  |L4.60|
;;;549    		}
;;;550    		LCD_SetTextColor(Yellow);  /* 选择白色 */
00003c  f64f70e0          MOV      r0,#0xffe0
000040  f7fffffe          BL       LCD_SetTextColor
;;;551    		LCD_DrawLine(1, y, 6, Horizontal);
000044  2300              MOVS     r3,#0
000046  2206              MOVS     r2,#6
000048  4836              LDR      r0,|L4.292|
00004a  8801              LDRH     r1,[r0,#0]  ; y
00004c  2001              MOVS     r0,#1
00004e  f7fffffe          BL       LCD_DrawLine
;;;552    	}
;;;553    
;;;554    	if (s_DispFirst == 0)
000052  4834              LDR      r0,|L4.292|
000054  1e80              SUBS     r0,r0,#2
000056  7800              LDRB     r0,[r0,#0]  ; s_DispFirst
000058  b930              CBNZ     r0,|L4.104|
;;;555    	{
;;;556    		s_DispFirst = 1;
00005a  2001              MOVS     r0,#1
00005c  4931              LDR      r1,|L4.292|
00005e  1e89              SUBS     r1,r1,#2
000060  7008              STRB     r0,[r1,#0]
;;;557    		LCD_Clear(Blue);  			/* 清屏,背景蓝色 */
000062  201f              MOVS     r0,#0x1f
000064  f7fffffe          BL       LCD_Clear
                  |L4.104|
;;;558    	}
;;;559    
;;;560    	if (g_DSO.BufUsed == 0)
000068  4830              LDR      r0,|L4.300|

⌨️ 快捷键说明

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