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 + -
显示快捷键?