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

📄 dso.txt

📁 STM32手持式示波器源代码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
0000d8  51513a313239353734343633302020202020456d61696c3a61726d666c794071712e636f6d00        DCB      "QQ:1295744630     Email:armfly@qq.com",0
0000fe  00                DCB      0
0000ff  00                DCB      0
                  |L9.256|
000100  b2d9d7f7cce1cabe3a00        DCB      178,217,215,247,204,225,202,190,":",0
00010a  00                DCB      0
00010b  00                DCB      0
                  |L9.268|
00010c  54414d504552bcfc203d20c7d0bbbbcda8b5c0bd        DCB      "TAMPER",188,252," = ",199,208,187,187,205,168,181,192,189
000120  b9b5e3a1a3434831bbf243483200        DCB      185,181,227,161,163,"CH1",187,242,"CH2",0
00012e  00                DCB      0
00012f  00                DCB      0
                  |L9.304|
000130  57414b455550bcfc203d20cfd4cabeb0efd6fabb        DCB      "WAKEUP",188,252," = ",207,212,202,190,176,239,214,250,187
000144  f2cdcbb3f6b0efd6fa00        DCB      242,205,203,179,246,176,239,214,250,0
00014e  00                DCB      0
00014f  00                DCB      0
                  |L9.336|
000150  555345522020bcfc203d20d4ddcda3bbf2cab5ca        DCB      "USER  ",188,252," = ",212,221,205,163,187,242,202,181,202
000164  b1d4cbd0d000        DCB      177,212,203,208,208,0
00016a  00                DCB      0
00016b  00                DCB      0
                  |L9.364|
00016c  d2a1b8cbc9cfbcfc203d20b7c5b4f3b2        DCB      210,161,184,203,201,207,188,252," = ",183,197,180,243,178
00017c  a8d0ceb4b9d6b1b7f9b6c8bbf2cff2        DCB      168,208,206,180,185,214,177,183,249,182,200,187,242,207,242
00018b  c9cfd2c6b6af00        DCB      201,207,210,198,182,175,0
000192  00                DCB      0
000193  00                DCB      0
                  |L9.404|
000194  d2a1b8cbcfc2bcfc203d20cbf5d0a1b2        DCB      210,161,184,203,207,194,188,252," = ",203,245,208,161,178
0001a4  a8d0ceb4b9d6b1b7f9b6c8bbf2cff2        DCB      168,208,206,180,185,214,177,183,249,182,200,187,242,207,242
0001b3  cfc2d2c6b6af00        DCB      207,194,210,198,182,175,0
0001ba  00                DCB      0
0001bb  00                DCB      0
                  |L9.444|
0001bc  d2a1b8cbd7f3bcfc203d20cbaec6bdd5        DCB      210,161,184,203,215,243,188,252," = ",203,174,198,189,213
0001cc  b9bfedb2a8d0ce00        DCB      185,191,237,178,168,208,206,0
                  |L9.468|
0001d4  d2a1b8cbd3d2bcfc203d20cbaec6bdcb        DCB      210,161,184,203,211,210,188,252," = ",203,174,198,189,203
0001e4  f5d0a1b2a8d0ce00        DCB      245,208,161,178,168,208,206,0
                  |L9.492|
0001ec  d2a1b8cb4f4bbcfc203d20c7d0bbbbd2a1        DCB      210,161,184,203,"OK",188,252," = ",199,208,187,187,210,161
0001fd  b8cbb5f7bddac4a3cabda1a3b7f9b6        DCB      184,203,181,247,189,218,196,163,202,189,161,163,183,249,182
00020c  c8bbf2cebbd6c300        DCB      200,187,242,206,187,214,195,0

                          AREA ||i.DsoHelp||, CODE, READONLY, ALIGN=1

                  DsoHelp PROC
;;;383    */
;;;384    static void DsoHelp(uint8_t *pMainStatus)
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;385    {
000004  4604              MOV      r4,r0
;;;386    	uint8_t KeyCode;
;;;387    	uint16_t bright;
;;;388    	uint8_t fRefresh = 1;	/* LCD刷新标志 */
000006  2701              MOVS     r7,#1
;;;389    	uint8_t SubStatus = 0;
000008  f04f0800          MOV      r8,#0
;;;390    
;;;391    	bright = GetBackLight();	/* 读取背光值 */
00000c  f7fffffe          BL       GetBackLight
000010  4606              MOV      r6,r0
;;;392    	while (*pMainStatus == S_HELP)
000012  e031              B        |L10.120|
                  |L10.20|
;;;393    	{
;;;394    		CPU_IDLE();
;;;395    
;;;396    		if (fRefresh)
000014  b12f              CBZ      r7,|L10.34|
;;;397    		{
;;;398    			fRefresh = 0;
000016  2700              MOVS     r7,#0
;;;399    
;;;400    			if (SubStatus == 0)
000018  f1b80f00          CMP      r8,#0
00001c  d101              BNE      |L10.34|
;;;401    			{
;;;402    				DispHelp1();
00001e  f7fffffe          BL       DispHelp1
                  |L10.34|
;;;403    			}
;;;404    		}
;;;405    
;;;406    		/* 读取按键,大于0表示有键按下 */
;;;407    		KeyCode = GetKey();
000022  f7fffffe          BL       GetKey
000026  4605              MOV      r5,r0
;;;408    		if (KeyCode > 0)
000028  2d00              CMP      r5,#0
00002a  dd25              BLE      |L10.120|
;;;409    		{
;;;410    			/* 有键按下 */
;;;411    			switch (KeyCode)
00002c  2d0b              CMP      r5,#0xb
00002e  d221              BCS      |L10.116|
000030  e8dff005          TBB      [pc,r5]
000034  20092020          DCB      0x20,0x09,0x20,0x20
000038  08200d16          DCB      0x08,0x20,0x0d,0x16
00003c  06070a00          DCB      0x06,0x07,0x0a,0x00
;;;412    			{
;;;413    				case KEY_DOWN_JOY_LEFT:	/* 摇杆LEFT键按下 */
;;;414    				case KEY_DOWN_JOY_RIGHT:	/* 摇杆RIGHT键按下 */
000040  bf00              NOP      
;;;415    				case KEY_DOWN_WAKEUP:
000042  bf00              NOP      
;;;416    				case KEY_DOWN_USER:
000044  bf00              NOP      
;;;417    				case KEY_DOWN_JOY_OK:	/* 摇杆OK键 */
000046  bf00              NOP      
;;;418    					/* 退出,进入全速运行状态 */
;;;419    					*pMainStatus = S_RUN;
000048  2001              MOVS     r0,#1
00004a  7020              STRB     r0,[r4,#0]
;;;420    					break;
00004c  e013              B        |L10.118|
;;;421    
;;;422    				case KEY_DOWN_JOY_UP:		/* 摇杆UP键按下 */
;;;423    					bright += BRIGHT_STEP;
00004e  1d70              ADDS     r0,r6,#5
000050  b286              UXTH     r6,r0
;;;424    					if (bright > BRIGHT_MAX)
000052  2eff              CMP      r6,#0xff
000054  dd00              BLE      |L10.88|
;;;425    					{
;;;426    						bright = BRIGHT_MAX;
000056  26ff              MOVS     r6,#0xff
                  |L10.88|
;;;427    					}
;;;428    					SetBackLight(bright);
000058  b2f0              UXTB     r0,r6
00005a  f7fffffe          BL       SetBackLight
;;;429    					break;
00005e  e00a              B        |L10.118|
;;;430    
;;;431    				case KEY_DOWN_JOY_DOWN:		/* 摇杆DOWN键按下 */
;;;432    					if (bright < BRIGHT_STEP)
000060  2e05              CMP      r6,#5
000062  da01              BGE      |L10.104|
;;;433    					{
;;;434    						bright = 0;
000064  2600              MOVS     r6,#0
000066  e001              B        |L10.108|
                  |L10.104|
;;;435    					}
;;;436    					else
;;;437    					{
;;;438    						bright -= BRIGHT_STEP;
000068  1f70              SUBS     r0,r6,#5
00006a  b286              UXTH     r6,r0
                  |L10.108|
;;;439    					}
;;;440    					SetBackLight(bright);
00006c  b2f0              UXTB     r0,r6
00006e  f7fffffe          BL       SetBackLight
;;;441    					break;
000072  e000              B        |L10.118|
                  |L10.116|
;;;442    
;;;443    				default:
;;;444    					break;
000074  bf00              NOP      
                  |L10.118|
000076  bf00              NOP                            ;420
                  |L10.120|
000078  7820              LDRB     r0,[r4,#0]            ;392
00007a  2800              CMP      r0,#0                 ;392
00007c  d0ca              BEQ      |L10.20|
;;;445    			}
;;;446    		}
;;;447    	}
;;;448    }
00007e  e8bd81f0          POP      {r4-r8,pc}
;;;449    
                          ENDP


                          AREA ||i.DsoMain||, CODE, READONLY, ALIGN=1

                  DsoMain PROC
;;;92     */
;;;93     void DsoMain(void)
000000  b508              PUSH     {r3,lr}
;;;94     {
;;;95     	uint8_t MainStatus = S_RUN;		/* 程序执行状态 */
000002  2001              MOVS     r0,#1
000004  9000              STR      r0,[sp,#0]
;;;96     
;;;97     	InitWaveMaker();
000006  f7fffffe          BL       InitWaveMaker
;;;98     //	SetupWaveType(WT_SIN);		/* 设置正弦波 */
;;;99     
;;;100    	LCD_Init();		/* 显示器初始化 */
00000a  f7fffffe          BL       LCD_Init
;;;101    
;;;102    	SetBackLight(BRIGHT_DEFAULT);  /* 设置背光亮度 */
00000e  20c8              MOVS     r0,#0xc8
000010  f7fffffe          BL       SetBackLight
;;;103    
;;;104    	/* 进入主程序循环体 */
;;;105    	while (1)
000014  e00f              B        |L11.54|
                  |L11.22|
;;;106    	{
;;;107    		switch (MainStatus)
000016  f89d0000          LDRB     r0,[sp,#0]
00001a  b110              CBZ      r0,|L11.34|
00001c  2801              CMP      r0,#1
00001e  d108              BNE      |L11.50|
000020  e003              B        |L11.42|
                  |L11.34|
;;;108    		{
;;;109    			case S_HELP:
;;;110    				DsoHelp(&MainStatus);		/* 显示帮助 */
000022  4668              MOV      r0,sp
000024  f7fffffe          BL       DsoHelp
;;;111    				break;
000028  e004              B        |L11.52|
                  |L11.42|
;;;112    
;;;113    			case S_RUN:
;;;114    				DsoRun(&MainStatus);		/* 全速采集,实时显示 */
00002a  4668              MOV      r0,sp
00002c  f7fffffe          BL       DsoRun
;;;115    				break;
000030  e000              B        |L11.52|
                  |L11.50|
;;;116    
;;;117    			default:
;;;118    				break;
000032  bf00              NOP      
                  |L11.52|
000034  bf00              NOP                            ;111
                  |L11.54|
000036  e7ee              B        |L11.22|
;;;119    		}
;;;120    	}
;;;121    }
;;;122    
                          ENDP


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

                  DsoRun PROC
;;;1039   */
;;;1040   static void DsoRun(uint8_t *pMainStatus)
000000  b570              PUSH     {r4-r6,lr}
;;;1041   {
000002  4604              MOV      r4,r0
;;;1042   	uint8_t KeyCode;
;;;1043   	uint8_t fRefresh = 1;	/* LCD刷新标志 */
000004  2601              MOVS     r6,#1
;;;1044   
;;;1045   	InitDsoParam();	/* 初始化示波器参数 */
000006  f7fffffe          BL       InitDsoParam
;;;1046   
;;;1047   	InitDSO();		/* 配置示波器用到的外设:ADC,TIM,DMA等 */
00000a  f7fffffe          BL       InitDSO
;;;1048   
;;;1049   	LCD_Clear(Blue);  			/* 清屏,背景蓝色 */
00000e  201f              MOVS     r0,#0x1f
000010  f7fffffe          BL       LCD_Clear
;;;1050   	LCD_SetBackColor(Blue);		/* 设置文字背景颜色 */
000014  201f              MOVS     r0,#0x1f
000016  f7fffffe          BL       LCD_SetBackColor
;;;1051   
;;;1052   	LCD_SetTextColor(White);	/* 设置文字颜色 */
00001a  f64f70ff          MOV      r0,#0xffff
00001e  f7fffffe          BL       LCD_SetTextColor
;;;1053   
;;;1054   	StartTimer(1, 150);		/* 启动定时器1,100ms刷新1次 */
000022  2196              MOVS     r1,#0x96
000024  2001              MOVS     r0,#1
000026  f7fffffe          BL       StartTimer
                  |L12.42|
;;;1055   	while (*pMainStatus == S_RUN)
00002a  e0c0              B        |L12.430|
                  |L12.44|
;;;1056   	{
;;;1057   		CPU_IDLE();
;;;1058   
;;;1059   		if (fRefresh)
00002c  b13e              CBZ      r6,|L12.62|
;;;1060   		{
;;;1061   			fRefresh = 0;
00002e  2600              MOVS     r6,#0
;;;1062   
;;;1063   			//StopADC();	/* 暂停采样 */
;;;1064   			if (g_DSO.HoldEn == 1)
000030  4861              LDR      r0,|L12.440|
000032  f8900391          LDRB     r0,[r0,#0x391]
000036  2801              CMP      r0,#1
000038  d101              BNE      |L12.62|
;;;1065   			{
;;;1066   				DispDSO();
00003a  f7fffffe          BL       DispDSO
                  |L12.62|
;;;1067   			}
;;;1068   			//StartADC();	/* 开始采样 */
;;;1069   		}
;;;1070   
;;;1071   		if (CheckTimer(1))
00003e  2001              MOVS     r0,#1
000040  f7fffffe          BL       CheckTimer
000044  b168              CBZ      r0,|L12.98|
;;;1072   		{
;;;1073   			StartTimer(1, 150);		/* 启动定时器1,100ms刷新1次 */
000046  2196              MOVS     r1,#0x96
000048  2001              MOVS     r0,#1
00004a  f7fffffe          BL       StartTimer
;;;1074   
;;;1075   			/* 运行状态。每隔100ms刷新1次波形 */
;;;1076   			if (g_DSO.HoldEn == 0)
00004e  485a              LDR      r0,|L12.440|
000050  f8900391          LDRB     r0,[r0,#0x391]
000054  b928              CBNZ     r0,|L12.98|
;;;1077   			{
;;;1078   				StopADC();	/* 暂停采样 */
000056  f7fffffe          BL       StopADC
;;;1079   				DispDSO();
00005a  f7fffffe          BL       DispDSO
;;;1080   				StartADC();	/* 开始采样 */
00005e  f7fffffe          BL       StartADC
                  |L12.98|
;;;1081   			}
;;;1082   		}
;;;1083   
;;;1084   		/* 读

⌨️ 快捷键说明

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