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

📄 tft_lcd.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\tft_lcd.o --depend=.\Obj\tft_lcd.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\tft_lcd.c]
                          THUMB

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

                  LCD_BresenhamLine PROC
;;;468    */
;;;469    void LCD_BresenhamLine (uint16_t x1 , uint16_t y1 , uint16_t x2 , uint16_t y2 , int c)
000000  e92d4ff0          PUSH     {r4-r11,lr}
;;;470    {
000004  b087              SUB      sp,sp,#0x1c
000006  4604              MOV      r4,r0
000008  460d              MOV      r5,r1
00000a  4616              MOV      r6,r2
00000c  461f              MOV      r7,r3
00000e  f8dd8040          LDR      r8,[sp,#0x40]
;;;471    	int dx , dy ;
;;;472    	int tx , ty ;
;;;473    	int inc1 , inc2 ;
;;;474    	int d , iTag ;
;;;475    	int x , y ;
;;;476    
;;;477    	LCD_PutPixel(x1 , y1 , c);
000012  fa1ff288          UXTH     r2,r8
000016  4629              MOV      r1,r5
000018  4620              MOV      r0,r4
00001a  f7fffffe          BL       LCD_PutPixel
;;;478    
;;;479    	/* 如果两点重合,结束后面的动作。*/
;;;480    	if ( x1 == x2 && y1 == y2 )
00001e  42b4              CMP      r4,r6
000020  d104              BNE      |L1.44|
000022  42bd              CMP      r5,r7
000024  d102              BNE      |L1.44|
                  |L1.38|
;;;481    	{
;;;482    		return;
;;;483    	}
;;;484    
;;;485    	iTag = 0 ;
;;;486    	/* dx = abs ( x2 - x1 ); */
;;;487    	if (x2 >= x1)
;;;488    	{
;;;489    		dx = x2 - x1;
;;;490    	}
;;;491    	else
;;;492    	{
;;;493    		dx = x1 - x2;
;;;494    	}
;;;495    
;;;496    	/* dy = abs ( y2 - y1 ); */
;;;497    	if (y2 >= y1)
;;;498    	{
;;;499    		dy = y2 - y1;
;;;500    	}
;;;501    	else
;;;502    	{
;;;503    		dy = y1 - y2;
;;;504    	}
;;;505    
;;;506    	if ( dx < dy )   /*如果dy为计长方向,则交换纵横坐标。*/
;;;507    	{
;;;508    		uint16_t temp;
;;;509    
;;;510    		iTag = 1 ;
;;;511    		temp = x1; x1 = y1; y1 = temp;
;;;512    		temp = x2; x2 = y2; y2 = temp;
;;;513    		temp = dx; dx = dy; dy = temp;
;;;514    	}
;;;515    	tx = x2 > x1 ? 1 : -1 ;    /*确定是增1还是减1*/
;;;516    	ty = y2 > y1 ? 1 : -1 ;
;;;517    	x = x1 ;
;;;518    	y = y1 ;
;;;519    	inc1 = 2 * dy ;
;;;520    	inc2 = 2 * ( dy - dx );
;;;521    	d = inc1 - dx ;
;;;522    	while ( x != x2 )     /*循环画点*/
;;;523    	{
;;;524    		if ( d < 0 )
;;;525    		{
;;;526    			d += inc1 ;
;;;527    		}
;;;528    		else
;;;529    		{
;;;530    			y += ty ;
;;;531    			d += inc2 ;
;;;532    		}
;;;533    		if ( iTag )
;;;534    		{
;;;535    			LCD_PutPixel ( y , x , c ) ;
;;;536    		}
;;;537    		else
;;;538    		{
;;;539    			LCD_PutPixel ( x , y , c ) ;
;;;540    		}
;;;541    		x += tx ;
;;;542    	}
;;;543    	return;
;;;544    }
000026  b007              ADD      sp,sp,#0x1c
000028  e8bd8ff0          POP      {r4-r11,pc}
                  |L1.44|
00002c  2000              MOVS     r0,#0                 ;485
00002e  9000              STR      r0,[sp,#0]            ;485
000030  42a6              CMP      r6,r4                 ;487
000032  db02              BLT      |L1.58|
000034  eba60904          SUB      r9,r6,r4              ;489
000038  e001              B        |L1.62|
                  |L1.58|
00003a  eba40906          SUB      r9,r4,r6              ;493
                  |L1.62|
00003e  42af              CMP      r7,r5                 ;497
000040  db02              BLT      |L1.72|
000042  1b78              SUBS     r0,r7,r5              ;499
000044  9006              STR      r0,[sp,#0x18]         ;499
000046  e001              B        |L1.76|
                  |L1.72|
000048  1be8              SUBS     r0,r5,r7              ;503
00004a  9006              STR      r0,[sp,#0x18]         ;503
                  |L1.76|
00004c  9806              LDR      r0,[sp,#0x18]         ;506
00004e  4581              CMP      r9,r0                 ;506
000050  da0d              BGE      |L1.110|
000052  2101              MOVS     r1,#1                 ;510
000054  9100              STR      r1,[sp,#0]            ;510
000056  4620              MOV      r0,r4                 ;511
000058  462c              MOV      r4,r5                 ;511
00005a  4605              MOV      r5,r0                 ;511
00005c  4630              MOV      r0,r6                 ;512
00005e  463e              MOV      r6,r7                 ;512
000060  4607              MOV      r7,r0                 ;512
000062  fa1ff089          UXTH     r0,r9                 ;513
000066  f8dd9018          LDR      r9,[sp,#0x18]         ;513
00006a  9006              STR      r0,[sp,#0x18]         ;513
00006c  bf00              NOP                            ;514
                  |L1.110|
00006e  42a6              CMP      r6,r4                 ;515
000070  dd01              BLE      |L1.118|
000072  2001              MOVS     r0,#1                 ;515
000074  e001              B        |L1.122|
                  |L1.118|
000076  f04f30ff          MOV      r0,#0xffffffff        ;515
                  |L1.122|
00007a  9005              STR      r0,[sp,#0x14]         ;515
00007c  42af              CMP      r7,r5                 ;516
00007e  dd01              BLE      |L1.132|
000080  2001              MOVS     r0,#1                 ;516
000082  e001              B        |L1.136|
                  |L1.132|
000084  f04f30ff          MOV      r0,#0xffffffff        ;516
                  |L1.136|
000088  9004              STR      r0,[sp,#0x10]         ;516
00008a  46a2              MOV      r10,r4                ;517
00008c  46ab              MOV      r11,r5                ;518
00008e  9806              LDR      r0,[sp,#0x18]         ;519
000090  0040              LSLS     r0,r0,#1              ;519
000092  9003              STR      r0,[sp,#0xc]          ;519
000094  9806              LDR      r0,[sp,#0x18]         ;520
000096  eba00009          SUB      r0,r0,r9              ;520
00009a  0040              LSLS     r0,r0,#1              ;520
00009c  9002              STR      r0,[sp,#8]            ;520
00009e  9803              LDR      r0,[sp,#0xc]          ;521
0000a0  eba00009          SUB      r0,r0,r9              ;521
0000a4  9001              STR      r0,[sp,#4]            ;521
0000a6  e022              B        |L1.238|
                  |L1.168|
0000a8  9801              LDR      r0,[sp,#4]            ;524
0000aa  2800              CMP      r0,#0                 ;524
0000ac  da04              BGE      |L1.184|
0000ae  9903              LDR      r1,[sp,#0xc]          ;526
0000b0  9801              LDR      r0,[sp,#4]            ;526
0000b2  4408              ADD      r0,r0,r1              ;526
0000b4  9001              STR      r0,[sp,#4]            ;526
0000b6  e005              B        |L1.196|
                  |L1.184|
0000b8  9804              LDR      r0,[sp,#0x10]         ;530
0000ba  4483              ADD      r11,r11,r0            ;530
0000bc  e9dd0101          LDRD     r0,r1,[sp,#4]         ;531
0000c0  4408              ADD      r0,r0,r1              ;531
0000c2  9001              STR      r0,[sp,#4]            ;531
                  |L1.196|
0000c4  9800              LDR      r0,[sp,#0]            ;533
0000c6  b140              CBZ      r0,|L1.218|
0000c8  fa1ff288          UXTH     r2,r8                 ;535
0000cc  fa1ff18a          UXTH     r1,r10                ;535
0000d0  fa1ff08b          UXTH     r0,r11                ;535
0000d4  f7fffffe          BL       LCD_PutPixel
0000d8  e007              B        |L1.234|
                  |L1.218|
0000da  fa1ff288          UXTH     r2,r8                 ;539
0000de  fa1ff18b          UXTH     r1,r11                ;539
0000e2  fa1ff08a          UXTH     r0,r10                ;539
0000e6  f7fffffe          BL       LCD_PutPixel
                  |L1.234|
0000ea  9805              LDR      r0,[sp,#0x14]         ;541
0000ec  4482              ADD      r10,r10,r0            ;541
                  |L1.238|
0000ee  45b2              CMP      r10,r6                ;522
0000f0  d1da              BNE      |L1.168|
0000f2  e798              B        |L1.38|
;;;545    
                          ENDP


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

                  LCD_Clear PROC
;;;218    */
;;;219    void LCD_Clear(uint16_t Color)
000000  b530              PUSH     {r4,r5,lr}
;;;220    {
000002  4605              MOV      r5,r0
;;;221    	uint32_t index = 0;
000004  2400              MOVS     r4,#0
;;;222    
;;;223    	LCD_SetCursor(0, 0);	/* 设置光标位置 */
000006  2100              MOVS     r1,#0
000008  4608              MOV      r0,r1
00000a  f7fffffe          BL       LCD_SetCursor
;;;224    
;;;225    	LCD_WriteRAM_Prepare(); 	/* 准备写显存 */
00000e  f7fffffe          BL       LCD_WriteRAM_Prepare
;;;226    
;;;227    	for (index = 0; index < 400 * 240; index++)
000012  bf00              NOP      
000014  e003              B        |L2.30|
                  |L2.22|
;;;228    	{
;;;229    		LCD->LCD_RAM = Color;
000016  f04f40d8          MOV      r0,#0x6c000000
00001a  8045              STRH     r5,[r0,#2]
00001c  1c64              ADDS     r4,r4,#1              ;227
                  |L2.30|
00001e  4802              LDR      r0,|L2.40|
000020  4284              CMP      r4,r0                 ;227
000022  d3f8              BCC      |L2.22|
;;;230    	}
;;;231    }
000024  bd30              POP      {r4,r5,pc}
;;;232    
                          ENDP

000026  0000              DCW      0x0000
                  |L2.40|
                          DCD      0x00017700

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

                  LCD_ClearLine PROC
;;;207    */
;;;208    void LCD_ClearLine(uint8_t Line)
000000  b510              PUSH     {r4,lr}
;;;209    {
000002  4604              MOV      r4,r0
;;;210    	LCD_DisplayString(0, Line, "                    ");
000004  a202              ADR      r2,|L3.16|
000006  4621              MOV      r1,r4
000008  2000              MOVS     r0,#0
00000a  f7fffffe          BL       LCD_DisplayString
;;;211    }
00000e  bd10              POP      {r4,pc}
;;;212    
                          ENDP

                  |L3.16|
000010  202020202020202020202020202020202020202000        DCB      "                    ",0
000025  00                DCB      0
000026  00                DCB      0
000027  00                DCB      0

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

                  LCD_CtrlLinesConfig PROC
;;;880    */
;;;881    static void LCD_CtrlLinesConfig(void)
000000  b508              PUSH     {r3,lr}
;;;882    {
;;;883      GPIO_InitTypeDef GPIO_InitStructure;
;;;884    
;;;885      /* 使能 FSMC, GPIOD, GPIOE, GPIOF, GPIOG 和 AFIO 时钟 */
;;;886      RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
000002  2101              MOVS     r1,#1
000004  0208              LSLS     r0,r1,#8
000006  f7fffffe          BL       RCC_AHBPeriphClockCmd
;;;887    
;;;888      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE |
00000a  2101              MOVS     r1,#1
00000c  f24010e1          MOV      r0,#0x1e1
000010  f7fffffe          BL       RCC_APB2PeriphClockCmd
;;;889                             RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG |
;;;890                             RCC_APB2Periph_AFIO, ENABLE);
;;;891    
;;;892      /* 设置 PD.00(D2), PD.01(D3), PD.04(NOE), PD.05(NWE), PD.08(D13), PD.09(D14),
;;;893         PD.10(D15), PD.14(D0), PD.15(D1) 为复用推挽输出 */
;;;894      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 |
000014  f24c7033          MOV      r0,#0xc733
000018  f8ad0000          STRH     r0,[sp,#0]
;;;895                                    GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 |
;;;896                                    GPIO_Pin_15; // | GPIO_Pin_7;
;;;897      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
00001c  2003              MOVS     r0,#3
00001e  f88d0002          STRB     r0,[sp,#2]
;;;898      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
000022  2018              MOVS     r0,#0x18
000024  f88d0003          STRB     r0,[sp,#3]
;;;899      GPIO_Init(GPIOD, &GPIO_InitStructure);
000028  4669              MOV      r1,sp
00002a  480d              LDR      r0,|L4.96|
00002c  f7fffffe          BL       GPIO_Init
;;;900    
;;;901      /* 设置 PE.07(D4), PE.08(D5), PE.09(D6), PE.10(D7), PE.11(D8), PE.12(D9), PE.13(D10),
;;;902         PE.14(D11), PE.15(D12) 为复用推挽输出 */

⌨️ 快捷键说明

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