📄 lcd.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 942] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Int_Flash\lcd.o --depend=.\Int_Flash\lcd.d --device=DARMSTM --apcs=interwork -O3 -I..\include -I..\..\..\..\..\INC\ST\STM32F10x\USB -Id:\Keil\ARM\INC\ST\STM32F10x -D__MICROLIB --omf_browse=.\Int_Flash\lcd.crf ..\source\lcd.c]
THUMB
AREA ||i.LCD_WriteReg||, CODE, READONLY, ALIGN=1
LCD_WriteReg PROC
000000 f04f42d8 MOV r2,#0x6c000000
000004 8010 STRH r0,[r2,#0]
000006 8051 STRH r1,[r2,#2]
000008 4770 BX lr
ENDP
AREA ||i.LCD_FSMCConfig||, CODE, READONLY, ALIGN=1
LCD_FSMCConfig PROC
;;;781 void LCD_FSMCConfig(void)
;;;782 {
000000 b500 PUSH {lr}
000002 b097 SUB sp,sp,#0x5c
;;;783 FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;
;;;784 FSMC_NORSRAMTimingInitTypeDef p;
;;;785
;;;786 /*-- FSMC Configuration ------------------------------------------------------*/
;;;787 /* FSMC_Bank1_NORSRAM4 timing configuration */
;;;788 p.FSMC_AddressSetupTime = 1;
000004 2001 MOVS r0,#1
;;;789 p.FSMC_AddressHoldTime = 0;
000006 9001 STR r0,[sp,#4]
000008 2000 MOVS r0,#0
;;;790 p.FSMC_DataSetupTime = 5;
00000a 2105 MOVS r1,#5
;;;791 p.FSMC_BusTurnAroundDuration = 0;
00000c e9cd0102 STRD r0,r1,[sp,#8]
;;;792 p.FSMC_CLKDivision = 0;
;;;793 p.FSMC_DataLatency = 0;
;;;794 p.FSMC_AccessMode = FSMC_AccessMode_B;
000010 f04f5180 MOV r1,#0x10000000
;;;795
;;;796 /* FSMC_Bank1_NORSRAM4 configured as follows:
;;;797 - Data/Address MUX = Disable
;;;798 - Memory Type = SRAM
;;;799 - Data Width = 16bit
;;;800 - Write Operation = Enable
;;;801 - Extended Mode = Disable
;;;802 - Asynchronous Wait = Disable */
;;;803 FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;
000014 e9cd0106 STRD r0,r1,[sp,#0x18]
000018 9004 STR r0,[sp,#0x10] ;792
00001a 2106 MOVS r1,#6
;;;804 FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
;;;805 FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;
00001c e9cd1008 STRD r1,r0,[sp,#0x20]
000020 9005 STR r0,[sp,#0x14] ;793
;;;806 FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
000022 2110 MOVS r1,#0x10
;;;807 FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
000024 e9cd010a STRD r0,r1,[sp,#0x28]
;;;808 FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
000028 900c STR r0,[sp,#0x30]
;;;809 FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
00002a 900d STR r0,[sp,#0x34]
;;;810 FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
00002c 900e STR r0,[sp,#0x38]
;;;811 FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
00002e 0209 LSLS r1,r1,#8
;;;812 FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
000030 e9cd010f STRD r0,r1,[sp,#0x3c]
;;;813 FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
000034 9011 STR r0,[sp,#0x44]
;;;814 FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
000036 9012 STR r0,[sp,#0x48]
;;;815 FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
000038 9014 STR r0,[sp,#0x50]
00003a a801 ADD r0,sp,#4
;;;816 FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;
00003c 9015 STR r0,[sp,#0x54]
;;;817
;;;818 FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
00003e 9016 STR r0,[sp,#0x58]
000040 a808 ADD r0,sp,#0x20
000042 f7fffffe BL FSMC_NORSRAMInit
;;;819
;;;820 /* Enable FSMC_Bank1_NORSRAM4 */
;;;821 FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);
000046 2101 MOVS r1,#1
000048 2006 MOVS r0,#6
00004a f7fffffe BL FSMC_NORSRAMCmd
;;;822 }
00004e b017 ADD sp,sp,#0x5c
000050 bd00 POP {pc}
;;;823
ENDP
AREA ||i.LCD_CtrlLinesConfig||, CODE, READONLY, ALIGN=2
LCD_CtrlLinesConfig PROC
;;;737 void LCD_CtrlLinesConfig(void)
;;;738 {
000000 b508 PUSH {r3,lr}
;;;739 GPIO_InitTypeDef GPIO_InitStructure;
;;;740
;;;741 /* Enable FSMC, GPIOD, GPIOE, GPIOF, GPIOG and AFIO clocks */
;;;742 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
000002 2101 MOVS r1,#1
000004 0208 LSLS r0,r1,#8
000006 f7fffffe BL RCC_AHBPeriphClockCmd
;;;743
;;;744 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE |
00000a 2101 MOVS r1,#1
00000c f24010e1 MOV r0,#0x1e1
000010 f7fffffe BL RCC_APB2PeriphClockCmd
;;;745 RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG |
;;;746 RCC_APB2Periph_AFIO, ENABLE);
;;;747
;;;748 /* Set PD.00(D2), PD.01(D3), PD.04(NOE), PD.05(NWE), PD.08(D13), PD.09(D14),
;;;749 PD.10(D15), PD.14(D0), PD.15(D1) as alternate
;;;750 function push pull */
;;;751 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]
;;;752 GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 |
;;;753 GPIO_Pin_15;
;;;754 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
00001c 2003 MOVS r0,#3
00001e f88d0002 STRB r0,[sp,#2]
;;;755 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
000022 2018 MOVS r0,#0x18
000024 f88d0003 STRB r0,[sp,#3]
;;;756 GPIO_Init(GPIOD, &GPIO_InitStructure);
000028 4669 MOV r1,sp
00002a 480d LDR r0,|L3.96|
00002c f7fffffe BL GPIO_Init
;;;757
;;;758 /* Set PE.07(D4), PE.08(D5), PE.09(D6), PE.10(D7), PE.11(D8), PE.12(D9), PE.13(D10),
;;;759 PE.14(D11), PE.15(D12) as alternate function push pull */
;;;760 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
000030 f64f7080 MOV r0,#0xff80
000034 f8ad0000 STRH r0,[sp,#0]
;;;761 GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |
;;;762 GPIO_Pin_15;
;;;763 GPIO_Init(GPIOE, &GPIO_InitStructure);
000038 4669 MOV r1,sp
00003a 480a LDR r0,|L3.100|
00003c f7fffffe BL GPIO_Init
;;;764
;;;765 /* Set PF.00(A0 (RS)) as alternate function push pull */
;;;766 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
000040 2001 MOVS r0,#1
000042 f8ad0000 STRH r0,[sp,#0]
;;;767 GPIO_Init(GPIOF, &GPIO_InitStructure);
000046 4669 MOV r1,sp
000048 4807 LDR r0,|L3.104|
00004a f7fffffe BL GPIO_Init
;;;768
;;;769 /* Set PG.12(NE4 (LCD/CS)) as alternate function push pull - CE3(LCD /CS) */
;;;770 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
00004e f44f5080 MOV r0,#0x1000
000052 f8ad0000 STRH r0,[sp,#0]
;;;771 GPIO_Init(GPIOG, &GPIO_InitStructure);
000056 4669 MOV r1,sp
000058 4804 LDR r0,|L3.108|
00005a f7fffffe BL GPIO_Init
;;;772 }
00005e bd08 POP {r3,pc}
;;;773
ENDP
|L3.96|
000060 40011400 DCD 0x40011400
|L3.100|
000064 40011800 DCD 0x40011800
|L3.104|
000068 40011c00 DCD 0x40011c00
|L3.108|
00006c 40012000 DCD 0x40012000
AREA ||i.STM3210E_LCD_Init||, CODE, READONLY, ALIGN=1
STM3210E_LCD_Init PROC
;;;49 void STM3210E_LCD_Init(void)
;;;50 {
000000 e92d5ff0 PUSH {r4-r12,lr}
;;;51 /* Configure the LCD Control pins --------------------------------------------*/
;;;52 LCD_CtrlLinesConfig();
000004 f7fffffe BL LCD_CtrlLinesConfig
;;;53
;;;54 /* Configure the FSMC Parallel interface -------------------------------------*/
;;;55 LCD_FSMCConfig();
000008 f7fffffe BL LCD_FSMCConfig
;;;56
;;;57 Delay(5); /* delay 50 ms */
00000c 2005 MOVS r0,#5
00000e f7fffffe BL Delay
000012 20e3 MOVS r0,#0xe3
000014 f04f44d8 MOV r4,#0x6c000000
000018 8020 STRH r0,[r4,#0]
00001a f2430008 MOV r0,#0x3008
00001e 8060 STRH r0,[r4,#2]
000020 20e7 MOVS r0,#0xe7
000022 8020 STRH r0,[r4,#0]
000024 2612 MOVS r6,#0x12
000026 8066 STRH r6,[r4,#2]
000028 f04f0aef MOV r10,#0xef
00002c f8a4a000 STRH r10,[r4,#0]
000030 f2412031 MOV r0,#0x1231
000034 8060 STRH r0,[r4,#2]
000036 2001 MOVS r0,#1
000038 8020 STRH r0,[r4,#0]
00003a 0200 LSLS r0,r0,#8
00003c 8060 STRH r0,[r4,#2]
00003e 2002 MOVS r0,#2
000040 8020 STRH r0,[r4,#0]
000042 f44f60e0 MOV r0,#0x700
000046 8060 STRH r0,[r4,#2]
000048 2703 MOVS r7,#3
00004a 8027 STRH r7,[r4,#0]
00004c f2410030 MOV r0,#0x1030
000050 8060 STRH r0,[r4,#2]
000052 2004 MOVS r0,#4
000054 8020 STRH r0,[r4,#0]
000056 2500 MOVS r5,#0
000058 8065 STRH r5,[r4,#2]
00005a 2008 MOVS r0,#8
00005c 8020 STRH r0,[r4,#0]
00005e f2402002 MOV r0,#0x202
000062 8060 STRH r0,[r4,#2]
000064 2009 MOVS r0,#9
000066 8020 STRH r0,[r4,#0]
000068 8065 STRH r5,[r4,#2]
00006a 200a MOVS r0,#0xa
00006c 8020 STRH r0,[r4,#0]
00006e 8065 STRH r5,[r4,#2]
000070 200c MOVS r0,#0xc
000072 8020 STRH r0,[r4,#0]
000074 8065 STRH r5,[r4,#2]
000076 200d MOVS r0,#0xd
000078 8020 STRH r0,[r4,#0]
00007a 8065 STRH r5,[r4,#2]
00007c 200f MOVS r0,#0xf
00007e 8020 STRH r0,[r4,#0]
000080 8065 STRH r5,[r4,#2]
000082 f04f0810 MOV r8,#0x10
000086 f8a48000 STRH r8,[r4,#0]
00008a 8065 STRH r5,[r4,#2]
00008c f04f0b11 MOV r11,#0x11
000090 f8a4b000 STRH r11,[r4,#0]
000094 8065 STRH r5,[r4,#2]
000096 8026 STRH r6,[r4,#0]
000098 8065 STRH r5,[r4,#2]
00009a f04f0913 MOV r9,#0x13
00009e f8a49000 STRH r9,[r4,#0]
0000a2 8065 STRH r5,[r4,#2]
;;;58 /* Start Initial Sequence ----------------------------------------------------*/
;;;59 LCD_WriteReg(0x00e3,0x3008);
;;;60 LCD_WriteReg(0x00e7,0x0012);
;;;61 LCD_WriteReg(0x00ef,0x1231);//Set the internal vcore voltage
;;;62 LCD_WriteReg(0x0001,0x0100);//S
;;;63
;;;64 //LCD_WriteReg(R229,0x8000); /* Set the internal vcore voltage */
;;;65 //LCD_WriteReg(R0, 0x0001); /* Start internal OSC. */
;;;66 //LCD_WriteReg(R1, 0x0100); /* set SS and SM bit */
;;;67 LCD_WriteReg(R2, 0x0700); /* set 1 line inversion */
;;;68 LCD_WriteReg(R3, 0x1030); /* set GRAM write direction and BGR=1. */
;;;69 LCD_WriteReg(R4, 0x0000); /* Resize register */
;;;70 LCD_WriteReg(R8, 0x0202); /* set the back porch and front porch */
;;;71 LCD_WriteReg(R9, 0x0000); /* set non-display area refresh cycle ISC[3:0] */
;;;72 LCD_WriteReg(R10, 0x0000); /* FMARK function */
;;;73 LCD_WriteReg(R12, 0x0000); /* RGB interface setting */
;;;74 LCD_WriteReg(R13, 0x0000); /* Frame marker Position */
;;;75 LCD_WriteReg(R15, 0x0000); /* RGB interface polarity */
;;;76
;;;77 /* Power On sequence ---------------------------------------------------------*/
;;;78 LCD_WriteReg(R16, 0x0000); /* SAP, BT[3:0], AP, DSTB, SLP, STB */
;;;79 LCD_WriteReg(R17, 0x0000); /* DC1[2:0], DC0[2:0], VC[2:0] */
;;;80 LCD_WriteReg(R18, 0x0000); /* VREG1OUT voltage */
;;;81 LCD_WriteReg(R19, 0x0000); /* VDV[4:0] for VCOM amplitude */
;;;82 Delay(20); /* Dis-charge capacitor power voltage (200ms) */
0000a4 2014 MOVS r0,#0x14
0000a6 f7fffffe BL Delay
0000aa f8a48000 STRH r8,[r4,#0]
0000ae f24170b0 MOV r0,#0x17b0
0000b2 8060 STRH r0,[r4,#2]
0000b4 f8a4b000 STRH r11,[r4,#0]
0000b8 f2401037 MOV r0,#0x137
0000bc 8060 STRH r0,[r4,#2]
;;;83 LCD_WriteReg(R16, 0x17B0); /* SAP, BT[3:0], AP, DSTB, SLP, STB */
;;;84 LCD_WriteReg(R17, 0x0137); /* DC1[2:0], DC0[2:0], VC[2:0] */
;;;85 Delay(5); /* Delay 50 ms */
0000be 2005 MOVS r0,#5
0000c0 f7fffffe BL Delay
0000c4 8026 STRH r6,[r4,#0]
0000c6 f2401039 MOV r0,#0x139
0000ca 8060 STRH r0,[r4,#2]
;;;86 LCD_WriteReg(R18, 0x0139); /* VREG1OUT voltage */
;;;87 Delay(5); /* Delay 50 ms */
0000cc 2005 MOVS r0,#5
0000ce f7fffffe BL Delay
0000d2 f8a49000 STRH r9,[r4,#0]
0000d6 f44f50e8 MOV r0,#0x1d00
0000da 8060 STRH r0,[r4,#2]
0000dc 2029 MOVS r0,#0x29
0000de 8020 STRH r0,[r4,#0]
0000e0 f8a49002 STRH r9,[r4,#2]
;;;88 LCD_WriteReg(R19, 0x1d00); /* VDV[4:0] for VCOM amplitude */
;;;89 LCD_WriteReg(R41, 0x0013); /* VCM[4:0] for VCOMH */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -