lcddrive.txt

来自「STM32F103ZET6+UCOSII+UCGUI源码」· 文本 代码 · 共 1,540 行 · 第 1/5 页

TXT
1,540
字号
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\lcddrive.o --depend=.\Obj\lcddrive.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\source\lcddrive.c]
                          THUMB

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

                  LCD_Clear PROC
;;;196    *******************************************************************************/
;;;197    void LCD_Clear(u16 Color)
000000  b530              PUSH     {r4,r5,lr}
;;;198    {
;;;199      u32 index = 0;
000002  2400              MOVS     r4,#0
000004  4605              MOV      r5,r0                 ;198
;;;200      
;;;201      LCD_SetCursor(0,0); 
000006  4621              MOV      r1,r4
000008  4620              MOV      r0,r4
00000a  f7fffffe          BL       LCD_SetCursor
00000e  2122              MOVS     r1,#0x22
000010  f04f40d8          MOV      r0,#0x6c000000
000014  8001              STRH     r1,[r0,#0]
;;;202    
;;;203      LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
;;;204    
;;;205      for(index = 0; index < 76800; index++)
000016  f44f3196          MOV      r1,#0x12c00
                  |L1.26|
;;;206      {
;;;207        LCD->LCD_RAM = Color;
00001a  8045              STRH     r5,[r0,#2]
00001c  1c64              ADDS     r4,r4,#1              ;205
00001e  428c              CMP      r4,r1                 ;205
000020  d3fb              BCC      |L1.26|
;;;208      }
;;;209     // while(1);  
;;;210    }
000022  bd30              POP      {r4,r5,pc}
;;;211    
                          ENDP


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

                  LCD_ClearLine PROC
;;;184    *******************************************************************************/
;;;185    void LCD_ClearLine(u8 Line)
000000  a101              ADR      r1,|L2.8|
;;;186    {
;;;187      LCD_DisplayStringLine(Line, "                    ");
000002  f7ffbffe          B.W      LCD_DisplayStringLine
;;;188    }
;;;189    
                          ENDP

000006  0000              DCW      0x0000
                  |L2.8|
000008  202020202020202020202020202020202020202000        DCB      "                    ",0
00001d  00                DCB      0
00001e  00                DCB      0
00001f  00                DCB      0

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

                  LCD_CtrlLinesConfig PROC
;;;751    *******************************************************************************/
;;;752    void LCD_CtrlLinesConfig(void)
000000  b538              PUSH     {r3-r5,lr}
;;;753    {
;;;754      GPIO_InitTypeDef GPIO_InitStructure;
;;;755    
;;;756      /* Enable FSMC, GPIOD, GPIOE, GPIOF, GPIOG and AFIO clocks */
;;;757      RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
000002  2101              MOVS     r1,#1
000004  0208              LSLS     r0,r1,#8
000006  f7fffffe          BL       RCC_AHBPeriphClockCmd
;;;758    
;;;759      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE |
00000a  2101              MOVS     r1,#1
00000c  f24010e1          MOV      r0,#0x1e1
000010  f7fffffe          BL       RCC_APB2PeriphClockCmd
;;;760                             RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG |
;;;761                             RCC_APB2Periph_AFIO, ENABLE);
;;;762    
;;;763      /* Set PD.00(D2), PD.01(D3), PD.04(NOE), PD.05(NWE), PD.08(D13), PD.09(D14),
;;;764         PD.10(D15), PD.14(D0), PD.15(D1) as alternate 
;;;765         function push pull */
;;;766      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]
;;;767                                    GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 | 
;;;768                                    GPIO_Pin_15;
;;;769      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
00001c  2003              MOVS     r0,#3
00001e  f88d0002          STRB     r0,[sp,#2]
;;;770      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
000022  2018              MOVS     r0,#0x18
000024  f88d0003          STRB     r0,[sp,#3]
;;;771      GPIO_Init(GPIOD, &GPIO_InitStructure);
000028  4669              MOV      r1,sp
00002a  4810              LDR      r0,|L3.108|
00002c  f7fffffe          BL       GPIO_Init
;;;772    
;;;773      /* Set PE.07(D4), PE.08(D5), PE.09(D6), PE.10(D7), PE.11(D8), PE.12(D9), PE.13(D10),
;;;774         PE.14(D11), PE.15(D12) as alternate function push pull */
;;;775      GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | 
000030  f64f70c0          MOV      r0,#0xffc0
;;;776                                    GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | 
;;;777                                    GPIO_Pin_15;
;;;778      GPIO_Init(GPIOE, &GPIO_InitStructure);
000034  4c0e              LDR      r4,|L3.112|
000036  f8ad0000          STRH     r0,[sp,#0]            ;775
00003a  4669              MOV      r1,sp
00003c  4620              MOV      r0,r4
00003e  f7fffffe          BL       GPIO_Init
;;;779    
;;;780      GPIO_WriteBit(GPIOE, GPIO_Pin_6, Bit_SET);
000042  2201              MOVS     r2,#1
000044  2140              MOVS     r1,#0x40
000046  4620              MOV      r0,r4
000048  f7fffffe          BL       GPIO_WriteBit
;;;781      /* Set PF.00(A0 (RS)) as alternate function push pull */
;;;782      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
00004c  2001              MOVS     r0,#1
00004e  f8ad0000          STRH     r0,[sp,#0]
;;;783      GPIO_Init(GPIOF, &GPIO_InitStructure);
000052  4669              MOV      r1,sp
000054  4807              LDR      r0,|L3.116|
000056  f7fffffe          BL       GPIO_Init
;;;784    
;;;785      /* Set PG.12(NE4 (LCD/CS)) as alternate function push pull - CE3(LCD /CS) */
;;;786      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
00005a  14a0              ASRS     r0,r4,#18
00005c  f8ad0000          STRH     r0,[sp,#0]
;;;787      GPIO_Init(GPIOG, &GPIO_InitStructure);
000060  4669              MOV      r1,sp
000062  4805              LDR      r0,|L3.120|
000064  f7fffffe          BL       GPIO_Init
;;;788    }
000068  bd38              POP      {r3-r5,pc}
;;;789    
                          ENDP

00006a  0000              DCW      0x0000
                  |L3.108|
                          DCD      0x40011400
                  |L3.112|
                          DCD      0x40011800
                  |L3.116|
                          DCD      0x40011c00
                  |L3.120|
                          DCD      0x40012000

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

                  LCD_DisplayChar PROC
;;;295    *******************************************************************************/
;;;296    void LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii)
000000  3a20              SUBS     r2,r2,#0x20
;;;297    {
;;;298      Ascii -= 32;
000002  b2d2              UXTB     r2,r2
;;;299      LCD_DrawChar(Line, Column, &ASCII_Table[Ascii * 24]);
000004  4b03              LDR      r3,|L4.20|
000006  eb020242          ADD      r2,r2,r2,LSL #1
00000a  eb031202          ADD      r2,r3,r2,LSL #4
00000e  f7ffbffe          B.W      LCD_DrawChar
;;;300    }
;;;301    
                          ENDP

000012  0000              DCW      0x0000
                  |L4.20|
                          DCD      ||.constdata||

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

                  LCD_DisplayOff PROC
;;;737    *******************************************************************************/
;;;738    void LCD_DisplayOff(void)
000000  2126              MOVS     r1,#0x26
000002  f04f40d8          MOV      r0,#0x6c000000
000006  8001              STRH     r1,[r0,#0]
000008  2100              MOVS     r1,#0
00000a  8041              STRH     r1,[r0,#2]
;;;739    {
;;;740      /* Display Off */
;;;741      LCD_WriteReg(0x26, 0x0); 
;;;742    }
00000c  4770              BX       lr
;;;743    
                          ENDP


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

                  LCD_DisplayOn PROC
;;;724    *******************************************************************************/
;;;725    void LCD_DisplayOn(void)
000000  2126              MOVS     r1,#0x26
000002  f04f40d8          MOV      r0,#0x6c000000
000006  8001              STRH     r1,[r0,#0]
000008  213c              MOVS     r1,#0x3c
00000a  8041              STRH     r1,[r0,#2]
;;;726    {
;;;727       /* Display On */
;;;728      LCD_WriteReg(0x26, 0x3C); /* 262K color and display ON */
;;;729    }
00000c  4770              BX       lr
;;;730    
                          ENDP


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

                  LCD_DisplayStringLine PROC
;;;311    *******************************************************************************/
;;;312    void LCD_DisplayStringLine(u8 Line, u8 *ptr)
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;313    {
;;;314      u32 i = 0;
000004  2400              MOVS     r4,#0
000006  4680              MOV      r8,r0                 ;313
000008  460d              MOV      r5,r1                 ;313
;;;315      u16 refcolumn =319;
00000a  f240163f          MOV      r6,#0x13f
;;;316    
;;;317      /* Send the string character by character on lCD */
;;;318      while ((*ptr != 0) & (i < 20))
00000e  2701              MOVS     r7,#1
;;;319      {
;;;320        /* Display one character on LCD */
;;;321        LCD_DisplayChar(Line, refcolumn, *ptr);
;;;322        /* Decrement the column position by 16 */
;;;323        refcolumn -= 16;
;;;324        /* Point on the next character */
;;;325        ptr++;
;;;326        /* Increment the character counter */
;;;327        i++;
000010  e007              B        |L7.34|
                  |L7.18|
000012  4631              MOV      r1,r6                 ;321
000014  4640              MOV      r0,r8                 ;321
000016  f7fffffe          BL       LCD_DisplayChar
00001a  3e10              SUBS     r6,r6,#0x10           ;323
00001c  1c6d              ADDS     r5,r5,#1              ;325
00001e  b2b6              UXTH     r6,r6                 ;323
000020  1c64              ADDS     r4,r4,#1
                  |L7.34|
000022  782a              LDRB     r2,[r5,#0]            ;318
000024  b10a              CBZ      r2,|L7.42|
000026  2001              MOVS     r0,#1                 ;318
000028  e000              B        |L7.44|
                  |L7.42|
00002a  2000              MOVS     r0,#0                 ;318
                  |L7.44|
00002c  4639              MOV      r1,r7                 ;318
00002e  2c14              CMP      r4,#0x14              ;318
000030  d300              BCC      |L7.52|
000032  2100              MOVS     r1,#0                 ;318
                  |L7.52|
000034  4208              TST      r0,r1                 ;318
000036  d1ec              BNE      |L7.18|
;;;328      }
;;;329    }
000038  e8bd81f0          POP      {r4-r8,pc}
;;;330    
                          ENDP


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

                  LCD_DisplyDemo PROC
;;;842    
;;;843    void LCD_DisplyDemo(void)
000000  b510              PUSH     {r4,lr}
000002  4c28              LDR      r4,|L8.164|
000004  201f              MOVS     r0,#0x1f
000006  8060              STRH     r0,[r4,#2]
000008  f64f70ff          MOV      r0,#0xffff
00000c  8020              STRH     r0,[r4,#0]
;;;844    {
;;;845    	LCD_SetBackColor(Blue);
;;;846    
;;;847        /* Set the LCD Text Color */
;;;848        LCD_SetTextColor(White);    
;;;849        LCD_DisplayStringLine(Line0, "    Hello Word !    ");
00000e  a126              ADR      r1,|L8.168|
000010  2000              MOVS     r0,#0
000012  f7fffffe          BL       LCD_DisplayStringLine
;;;850    	LCD_DisplayStringLine(Line1, "                    ");
000016  a12a              ADR      r1,|L8.192|
000018  2018              MOVS     r0,#0x18
00001a  f7fffffe          BL       LCD_DisplayStringLine
;;;851        LCD_DisplayStringLine(Line2, "This's a TFT2.8` LCD");
00001e  a12e              ADR      r1,|L8.216|
000020  2030              MOVS     r0,#0x30
000022  f7fffffe          BL       LCD_DisplayStringLine
;;;852    	LCD_DisplayStringLine(Line3, "demo program with   ");
000026  a132              ADR      r1,|L8.240|
000028  2048              MOVS     r0,#0x48
00002a  f7fffffe          BL       LCD_DisplayStringLine
;;;853    	LCD_DisplayStringLine(Line4, "MINI-STM32 bord use ");
00002e  a136              ADR      r1,|L8.264|
000030  2060              MOVS     r0,#0x60
000032  f7fffffe          BL       LCD_DisplayStringLine
;;;854        LCD_DisplayStringLine(Line5, "STM32F103C8T6 MCU . ");
000036  a13a              ADR      r1,|L8.288|

⌨️ 快捷键说明

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