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

📄 tft_lcd.txt

📁 STM32手持式示波器源代码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
                          ENDP

00005a  0000              DCW      0x0000
                  |L10.92|
                          DCD      ||.data||

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

                  LCD_DrawMonoPict PROC
;;;707    */
;;;708    void LCD_DrawMonoPict(const uint32_t *Pict)
000000  b570              PUSH     {r4-r6,lr}
;;;709    {
000002  4604              MOV      r4,r0
;;;710    	uint32_t index = 0, i = 0;
000004  2500              MOVS     r5,#0
000006  2600              MOVS     r6,#0
;;;711    
;;;712    	LCD_SetCursor(0, 400);
000008  f44f71c8          MOV      r1,#0x190
00000c  2000              MOVS     r0,#0
00000e  f7fffffe          BL       LCD_SetCursor
;;;713    
;;;714    	LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
000012  f7fffffe          BL       LCD_WriteRAM_Prepare
;;;715    	for (index = 0; index < 2400; index++)
000016  bf00              NOP      
000018  e015              B        |L11.70|
                  |L11.26|
;;;716    	{
;;;717    		for (i = 0; i < 32; i++)
00001a  2600              MOVS     r6,#0
00001c  e010              B        |L11.64|
                  |L11.30|
;;;718    		{
;;;719    			if ((Pict[index] & (1 << i)) == 0x00)
00001e  f8541025          LDR      r1,[r4,r5,LSL #2]
000022  2001              MOVS     r0,#1
000024  40b0              LSLS     r0,r0,r6
000026  4201              TST      r1,r0
000028  d104              BNE      |L11.52|
;;;720    			{
;;;721    				LCD_WriteRAM(s_BackColor);
00002a  4809              LDR      r0,|L11.80|
00002c  8800              LDRH     r0,[r0,#0]  ; s_BackColor
00002e  f7fffffe          BL       LCD_WriteRAM
000032  e004              B        |L11.62|
                  |L11.52|
;;;722    			}
;;;723    			else
;;;724    			{
;;;725    				LCD_WriteRAM(s_TextColor);
000034  4806              LDR      r0,|L11.80|
000036  1e80              SUBS     r0,r0,#2
000038  8800              LDRH     r0,[r0,#0]  ; s_TextColor
00003a  f7fffffe          BL       LCD_WriteRAM
                  |L11.62|
00003e  1c76              ADDS     r6,r6,#1              ;717
                  |L11.64|
000040  2e20              CMP      r6,#0x20              ;717
000042  d3ec              BCC      |L11.30|
000044  1c6d              ADDS     r5,r5,#1              ;715
                  |L11.70|
000046  f5b56f16          CMP      r5,#0x960             ;715
00004a  d3e6              BCC      |L11.26|
;;;726    			}
;;;727    		}
;;;728    	}
;;;729    }
00004c  bd70              POP      {r4-r6,pc}
;;;730    
                          ENDP

00004e  0000              DCW      0x0000
                  |L11.80|
                          DCD      ||.data||+0x2

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

                  LCD_DrawPoints PROC
;;;590    */
;;;591    void LCD_DrawPoints(uint16_t *x, uint16_t *y, uint16_t Size, uint16_t Color)
000000  e92d41f8          PUSH     {r3-r8,lr}
;;;592    {
000004  4604              MOV      r4,r0
000006  460d              MOV      r5,r1
000008  4616              MOV      r6,r2
00000a  461f              MOV      r7,r3
;;;593    #if 1
;;;594    	uint16_t i;
;;;595    
;;;596    	for (i = 0 ; i < Size - 1; i++)
00000c  f04f0800          MOV      r8,#0
000010  e010              B        |L12.52|
                  |L12.18|
;;;597    	{
;;;598    		LCD_BresenhamLine(x[i], y[i], x[i + 1], y[i + 1],	Color);
000012  f1080c01          ADD      r12,r8,#1
000016  9700              STR      r7,[sp,#0]
000018  f835301c          LDRH     r3,[r5,r12,LSL #1]
00001c  f834201c          LDRH     r2,[r4,r12,LSL #1]
000020  f8351018          LDRH     r1,[r5,r8,LSL #1]
000024  f8340018          LDRH     r0,[r4,r8,LSL #1]
000028  f7fffffe          BL       LCD_BresenhamLine
00002c  f1080001          ADD      r0,r8,#1              ;596
000030  fa1ff880          UXTH     r8,r0                 ;596
                  |L12.52|
000034  1e70              SUBS     r0,r6,#1              ;596
000036  4540              CMP      r0,r8                 ;596
000038  dceb              BGT      |L12.18|
;;;599    	}
;;;600    #else
;;;601    	uint16_t i;
;;;602    
;;;603    	for (i = 0 ; i < Size; i++)
;;;604    	{
;;;605    		LCD_PutPixel(x[i], y[i], Color);
;;;606    	}
;;;607    #endif
;;;608    
;;;609    }
00003a  e8bd81f8          POP      {r3-r8,pc}
;;;610    
                          ENDP


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

                  LCD_DrawRect PROC
;;;619    */
;;;620    void LCD_DrawRect(uint16_t Xpos, uint16_t Ypos, uint8_t Height, uint16_t Width)
000000  b5f0              PUSH     {r4-r7,lr}
;;;621    {
000002  4604              MOV      r4,r0
000004  460e              MOV      r6,r1
000006  4615              MOV      r5,r2
000008  461f              MOV      r7,r3
;;;622    	/*
;;;623    	 ---------------->---
;;;624    	|(Xpos,Ypos)        |
;;;625    	V                    V  Height
;;;626    	|                    |
;;;627    	 ---------------->---
;;;628    		  Width
;;;629    	*/
;;;630    
;;;631    	LCD_DrawLine(Xpos, Ypos, Width, Horizontal);  				/* 顶 */
00000a  2300              MOVS     r3,#0
00000c  463a              MOV      r2,r7
00000e  4631              MOV      r1,r6
000010  4620              MOV      r0,r4
000012  f7fffffe          BL       LCD_DrawLine
;;;632    	LCD_DrawLine(Xpos, Ypos + Height, Width, Horizontal);		/* 底 */
000016  1970              ADDS     r0,r6,r5
000018  b281              UXTH     r1,r0
00001a  2300              MOVS     r3,#0
00001c  463a              MOV      r2,r7
00001e  4620              MOV      r0,r4
000020  f7fffffe          BL       LCD_DrawLine
;;;633    
;;;634    	LCD_DrawLine(Xpos, Ypos, Height, Vertical);					/* 左 */
000024  2301              MOVS     r3,#1
000026  462a              MOV      r2,r5
000028  4631              MOV      r1,r6
00002a  4620              MOV      r0,r4
00002c  f7fffffe          BL       LCD_DrawLine
;;;635    	LCD_DrawLine(Xpos + Width, Ypos, Height + 1, Vertical);	/* 右 */
000030  19e1              ADDS     r1,r4,r7
000032  b288              UXTH     r0,r1
000034  2301              MOVS     r3,#1
000036  1c6a              ADDS     r2,r5,#1
000038  4631              MOV      r1,r6
00003a  f7fffffe          BL       LCD_DrawLine
;;;636    }
00003e  bdf0              POP      {r4-r7,pc}
;;;637    
                          ENDP


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

                  LCD_FSMCConfig PROC
;;;925    */
;;;926    static void LCD_FSMCConfig(void)
000000  b500              PUSH     {lr}
;;;927    {
000002  b095              SUB      sp,sp,#0x54
;;;928      FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
;;;929      FSMC_NORSRAMTimingInitTypeDef  FSMC_NORSRAMTimingInitStructure;
;;;930    
;;;931      /*-- FSMC Configuration ------------------------------------------------------*/
;;;932      /*----------------------- SRAM Bank 4 ----------------------------------------*/
;;;933      /* FSMC_Bank1_NORSRAM4 configuration */
;;;934      FSMC_NORSRAMTimingInitStructure.FSMC_AddressSetupTime = 1;
000004  2001              MOVS     r0,#1
000006  9000              STR      r0,[sp,#0]
;;;935      FSMC_NORSRAMTimingInitStructure.FSMC_AddressHoldTime = 0;
000008  2000              MOVS     r0,#0
00000a  9001              STR      r0,[sp,#4]
;;;936      FSMC_NORSRAMTimingInitStructure.FSMC_DataSetupTime = 2;
00000c  2002              MOVS     r0,#2
00000e  9002              STR      r0,[sp,#8]
;;;937      FSMC_NORSRAMTimingInitStructure.FSMC_BusTurnAroundDuration = 0;
000010  2000              MOVS     r0,#0
000012  9003              STR      r0,[sp,#0xc]
;;;938      FSMC_NORSRAMTimingInitStructure.FSMC_CLKDivision = 0;
000014  9004              STR      r0,[sp,#0x10]
;;;939      FSMC_NORSRAMTimingInitStructure.FSMC_DataLatency = 0;
000016  9005              STR      r0,[sp,#0x14]
;;;940      FSMC_NORSRAMTimingInitStructure.FSMC_AccessMode = FSMC_AccessMode_B;
000018  f04f5080          MOV      r0,#0x10000000
00001c  9006              STR      r0,[sp,#0x18]
;;;941    
;;;942      /* Color LCD configuration ------------------------------------
;;;943         LCD configured as follow:
;;;944            - Data/Address MUX = Disable
;;;945            - Memory Type = SRAM
;;;946            - Data Width = 16bit
;;;947            - Write Operation = Enable
;;;948            - Extended Mode = Enable
;;;949            - Asynchronous Wait = Disable */
;;;950      FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;
00001e  2006              MOVS     r0,#6
000020  9007              STR      r0,[sp,#0x1c]
;;;951      FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
000022  2000              MOVS     r0,#0
000024  9008              STR      r0,[sp,#0x20]
;;;952      FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;
000026  9009              STR      r0,[sp,#0x24]
;;;953      FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
000028  2010              MOVS     r0,#0x10
00002a  900a              STR      r0,[sp,#0x28]
;;;954      FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
00002c  2000              MOVS     r0,#0
00002e  900b              STR      r0,[sp,#0x2c]
;;;955      FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
000030  900c              STR      r0,[sp,#0x30]
;;;956      FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
000032  900d              STR      r0,[sp,#0x34]
;;;957      FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
000034  900e              STR      r0,[sp,#0x38]
;;;958      FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
000036  f44f5080          MOV      r0,#0x1000
00003a  900f              STR      r0,[sp,#0x3c]
;;;959      FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
00003c  2000              MOVS     r0,#0
00003e  9010              STR      r0,[sp,#0x40]
;;;960      FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
000040  9011              STR      r0,[sp,#0x44]
;;;961      FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
000042  9012              STR      r0,[sp,#0x48]
;;;962      FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &FSMC_NORSRAMTimingInitStructure;
000044  f8cdd04c          STR      sp,[sp,#0x4c]
;;;963      FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &FSMC_NORSRAMTimingInitStructure;
000048  f8cdd050          STR      sp,[sp,#0x50]
;;;964    
;;;965      FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
00004c  a807              ADD      r0,sp,#0x1c
00004e  f7fffffe          BL       FSMC_NORSRAMInit
;;;966    
;;;967      /* - BANK 3 (of NOR/SRAM Bank 0~3) is enabled */
;;;968      FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);
000052  2101              MOVS     r1,#1
000054  2006              MOVS     r0,#6
000056  f7fffffe          BL       FSMC_NORSRAMCmd
;;;969    }
00005a  b015              ADD      sp,sp,#0x54
00005c  bd00              POP      {pc}
;;;970    
                          ENDP


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

                  LCD_Init PROC
;;;47     */
;;;48     void LCD_Init(void)
000000  b510              PUSH     {r4,lr}
;;;49     {
;;;50     	/* 配置LCD控制口线GPIO */
;;;51     	LCD_CtrlLinesConfig();
000002  f7fffffe          BL       LCD_CtrlLinesConfig
;;;52     
;;;53     	/* 配置FSMC接口,数据总线 */
;;;54     	LCD_FSMCConfig();
000006  f7fffffe          BL       LCD_FSMCConfig
;;;55     
;;;56     	/* FSMC重置后必须加延迟才能访问总线设备  */
;;;57     	DelayMS(20);
00000a  2014              MOVS     r0,#0x14
00000c  f7fffffe          BL       DelayMS
;;;58     
;;;59     	/* 初始化LCD,写LCD寄存器进行配置 */
;;;60     	LCD_WriteReg(0x0000, 0x0000);
000010  2100              MOVS     r1,#0
000012  4608              MOV      r0,r1
000014  f7fffffe          BL       LCD_WriteReg
;;;61     	LCD_WriteReg(0x0001, 0x0100);
000018  f44f7180          MOV      r1,#0x100
00001c  2001              MOVS     r0,#1
00001e  f7fffffe          BL       LCD_WriteReg
;;;62     	LCD_WriteReg(0x0002, 0x0100);
000022  f44f7180          MOV      r1,#0x100
000026  2002              MOVS     r0,#2
000028  f7fffffe          BL       LCD_WriteReg
;;;63     
;;;64     	/*
;;;65     		R003H 寄存器很关键, Entry Mode ,决定了扫描方向
;;;66     		参见:SPFD5420A.pdf 第15页
;;;67     
;;;68     		240x400屏幕物理坐标(px,py)如下:
;;;69     		    R003 = 0x1018                  R003 = 0x1008
;;;70     		  -------------------          -------------------

⌨️ 快捷键说明

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