Add 4.37inch e-Paper (G) STM32 program and fix some bugs.

This commit is contained in:
SSYYL 2022-08-16 16:59:55 +08:00
commit 77accf11dd
32 changed files with 4453 additions and 1186 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

View file

@ -16,7 +16,7 @@
<TargetCommonOption>
<Device>STM32F103ZE</Device>
<Vendor>STMicroelectronics</Vendor>
<PackID>Keil.STM32F1xx_DFP.2.1.0</PackID>
<PackID>Keil.STM32F1xx_DFP.2.3.0</PackID>
<PackURL>http://www.keil.com/pack/</PackURL>
<Cpu>IRAM(0x20000000-0x2000FFFF) IROM(0x8000000-0x807FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3")</Cpu>
<FlashUtilSpec></FlashUtilSpec>
@ -184,7 +184,6 @@
<hadXRAM>0</hadXRAM>
<uocXRam>0</uocXRam>
<RvdsVP>0</RvdsVP>
<RvdsMve>0</RvdsMve>
<hadIRAM2>0</hadIRAM2>
<hadIROM2>0</hadIROM2>
<StupSel>8</StupSel>
@ -552,6 +551,11 @@
<FileType>1</FileType>
<FilePath>..\User\Examples\EPD_2in66b_test.c</FilePath>
</File>
<File>
<FileName>EPD_3in52_test.c</FileName>
<FileType>1</FileType>
<FilePath>..\User\Examples\EPD_3in52_test.c</FilePath>
</File>
<File>
<FileName>EPD_3in7_test.c</FileName>
<FileType>1</FileType>
@ -643,9 +647,9 @@
<FilePath>..\User\Examples\EPD_3in0g_test.c</FilePath>
</File>
<File>
<FileName>EPD_3in52_test.c</FileName>
<FileName>EPD_4in37g_test.c</FileName>
<FileType>1</FileType>
<FilePath>..\User\Examples\EPD_3in52_test.c</FilePath>
<FilePath>..\User\Examples\EPD_4in37g_test.c</FilePath>
</File>
<File>
<FileName>EPD_7in3g_test.c</FileName>
@ -772,6 +776,11 @@
<FileType>1</FileType>
<FilePath>..\User\e-Paper\EPD_2in66b.c</FilePath>
</File>
<File>
<FileName>EPD_3in52.c</FileName>
<FileType>1</FileType>
<FilePath>..\User\e-Paper\EPD_3in52.c</FilePath>
</File>
<File>
<FileName>EPD_3in7.c</FileName>
<FileType>1</FileType>
@ -863,9 +872,9 @@
<FilePath>..\User\e-Paper\EPD_3in0g.c</FilePath>
</File>
<File>
<FileName>EPD_3in52.c</FileName>
<FileName>EPD_4in37g.c</FileName>
<FileType>1</FileType>
<FilePath>..\User\e-Paper\EPD_3in52.c</FilePath>
<FilePath>..\User\e-Paper\EPD_4in37g.c</FilePath>
</File>
<File>
<FileName>EPD_7in3g.c</FileName>

View file

@ -3,189 +3,58 @@
<pre>
<h1>µVision Build Log</h1>
<h2>Tool Versions:</h2>
IDE-Version: ¦ÌVision V5.26.2.0
IDE-Version: ¦ÌVision V5.25.2.0
Copyright (C) 2018 ARM Ltd and ARM Germany GmbH. All rights reserved.
License Information: , , LIC=RC93N-YLJYL-JJH6S-LI3Z1-D1AV2-99PL8
License Information: ass ass, ass, LIC=JL2UH-W872P-CJR6Z-JYZTW-ESB48-R6YF4
Tool Versions:
Toolchain: MDK-ARM Plus Version: 5.26.2.0
Toolchain Path: D:\KEIL\azwz\ARM\ARMCC\Bin
Toolchain: MDK-ARM Plus Version: 5.25.2.0
Toolchain Path: D:\Program Files\keil5\ARM\ARMCC\Bin
C Compiler: Armcc.exe V5.06 update 6 (build 750)
Assembler: Armasm.exe V5.06 update 6 (build 750)
Linker/Locator: ArmLink.exe V5.06 update 6 (build 750)
Library Manager: ArmAr.exe V5.06 update 6 (build 750)
Hex Converter: FromElf.exe V5.06 update 6 (build 750)
CPU DLL: SARMCM3.DLL V5.26.2.0
Dialog DLL: DCM.DLL V1.17.2.0
Target DLL: STLink\ST-LINKIII-KEIL_SWO.dll V3.0.5.0
Dialog DLL: TCM.DLL V1.36.1.0
CPU DLL: SARMCM3.DLL V5.25.2.0
Dialog DLL: DCM.DLL V1.17.1.0
Target DLL: STLink\ST-LINKIII-KEIL_SWO.dll V3.0.1.0
Dialog DLL: TCM.DLL V1.35.1.0
<h2>Project:</h2>
E:\ÏîÄ¿\e-Paper\Code\E-Paper_code\STM32\STM32-F103ZET6\MDK-ARM\epd-demo.uvprojx
Project File Date: 07/22/2022
E:\github\E-Paper_code\STM32\STM32-F103ZET6\MDK-ARM\epd-demo.uvprojx
Project File Date: 08/16/2022
<h2>Output:</h2>
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\KEIL\azwz\ARM\ARMCC\Bin'
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\Program Files\keil5\ARM\ARMCC\Bin'
Build target 'epd-demo'
assembling startup_stm32f103xe.s...
compiling usart.c...
compiling gpio.c...
compiling spi.c...
compiling stm32f1xx_it.c...
compiling main.c...
compiling ImageData2.c...
compiling ImageData.c...
compiling stm32f1xx_hal_msp.c...
compiling EPD_1in54b_test.c...
compiling EPD_1in54_test.c...
compiling EPD_1in02_test.c...
compiling EPD_1in54_V2_test.c...
compiling EPD_2in7b_V2_test.c...
compiling EPD_2in7b_test.c...
compiling EPD_1in54b_V2_test.c...
compiling EPD_1in54c_test.c...
compiling EPD_2in7_test.c...
compiling EPD_2in9bc_test.c...
compiling EPD_2in9d_test.c...
compiling EPD_2in9b_V3_test.c...
compiling EPD_2in9_test.c...
compiling EPD_2in9_V2_test.c...
compiling EPD_2in13b_V4_test.c...
compiling EPD_2in13_test.c...
compiling EPD_2in13b_V3_test.c...
compiling EPD_2in13_V3_test.c...
compiling EPD_2in13_V2_test.c...
compiling EPD_2in13bc_test.c...
compiling EPD_3in7_test.c...
compiling EPD_2in13d_test.c...
compiling EPD_2in66b_test.c...
compiling EPD_2in66_test.c...
compiling EPD_4in2_test.c...
compiling EPD_4in01f_test.c...
compiling EPD_4in2b_V2_test.c...
compiling EPD_4in2bc_test.c...
compiling EPD_5in65f_test.c...
compiling EPD_5in83_V2_test.c...
compiling EPD_7in5_test.c...
compiling EPD_5in83b_V2_test.c...
compiling EPD_5in83bc_test.c...
compiling EPD_5in83_test.c...
compiling EPD_7in5b_V2_test.c...
compiling EPD_7in5b_HD_test.c...
compiling EPD_7in5bc_test.c...
compiling EPD_7in5_V2_test.c...
compiling EPD_7in5_HD_test.c...
compiling EPD_3in52_test.c...
compiling EPD_7in3g_test.c...
compiling EPD_3in0g_test.c...
compiling EPD_1in02d.c...
compiling EPD_1in64g_test.c...
compiling EPD_1in54c.c...
compiling EPD_1in54_V2.c...
compiling EPD_1in54b.c...
compiling EPD_1in54b_V2.c...
compiling EPD_1in54.c...
compiling EPD_2in7b_V2.c...
compiling EPD_2in9.c...
compiling EPD_2in7.c...
compiling EPD_2in7b.c...
compiling EPD_2in9_V2.c...
compiling EPD_2in9b_V3.c...
compiling EPD_2in9bc.c...
compiling EPD_2in9d.c...
compiling EPD_2in13.c...
compiling EPD_2in13_V2.c...
compiling EPD_2in13b_V3.c...
compiling EPD_2in13_V3.c...
compiling EPD_2in13d.c...
compiling EPD_2in13b_V4.c...
compiling EPD_2in13bc.c...
compiling EPD_3in7.c...
compiling EPD_2in66b.c...
compiling EPD_4in01f.c...
compiling EPD_2in66.c...
compiling EPD_4in2.c...
..\User\e-Paper\EPD_4in2.c(612): warning: #550-D: variable "Height" was set but never used
UWORD Width, Height;
..\User\e-Paper\EPD_4in2.c: 1 warning, 0 errors
compiling EPD_5in83_V2.c...
compiling EPD_5in65f.c...
compiling EPD_4in2b_V2.c...
compiling EPD_4in2bc.c...
compiling EPD_5in83.c...
compiling EPD_7in5_V2.c...
compiling EPD_7in5_HD.c...
compiling EPD_7in5.c...
compiling EPD_5in83bc.c...
compiling EPD_5in83b_V2.c...
compiling EPD_3in0g.c...
..\User\e-Paper\EPD_3in0g.c(86): warning: #177-D: function "EPD_3IN0G_ReadBusyL" was declared but never referenced
static void EPD_3IN0G_ReadBusyL(void)
..\User\e-Paper\EPD_3in0g.c: 1 warning, 0 errors
compiling EPD_7in5bc.c...
compiling EPD_7in5b_HD.c...
compiling EPD_1in64g.c...
..\User\e-Paper\EPD_1in64g.c(90): warning: #177-D: function "EPD_1IN64G_ReadBusyL" was declared but never referenced
static void EPD_1IN64G_ReadBusyL(void)
..\User\e-Paper\EPD_1in64g.c: 1 warning, 0 errors
compiling EPD_7in5b_V2.c...
compiling font8.c...
compiling font12.c...
compiling font12CN.c...
compiling font16.c...
compiling font20.c...
compiling font24.c...
compiling font24CN.c...
compiling DEV_Config.c...
compiling EPD_3in52.c...
compiling EPD_7in3g.c...
..\User\e-Paper\EPD_7in3g.c(86): warning: #177-D: function "EPD_7IN3G_ReadBusyL" was declared but never referenced
static void EPD_7IN3G_ReadBusyL(void)
..\User\e-Paper\EPD_7in3g.c: 1 warning, 0 errors
compiling GUI_Paint.c...
compiling system_stm32f1xx.c...
compiling stm32f1xx_hal_rcc_ex.c...
compiling stm32f1xx_hal_spi.c...
compiling stm32f1xx_hal.c...
compiling stm32f1xx_hal_rcc.c...
compiling stm32f1xx_hal_gpio_ex.c...
compiling stm32f1xx_hal_pwr.c...
compiling stm32f1xx_hal_flash.c...
compiling stm32f1xx_hal_gpio.c...
compiling stm32f1xx_hal_dma.c...
compiling stm32f1xx_hal_cortex.c...
compiling stm32f1xx_hal_tim_ex.c...
compiling stm32f1xx_hal_exti.c...
compiling stm32f1xx_hal_tim.c...
compiling stm32f1xx_hal_uart.c...
compiling stm32f1xx_hal_flash_ex.c...
compiling EPD_4in37g_test.c...
linking...
Program Size: Code=24300 RO-data=9260 RW-data=56 ZI-data=41136
Program Size: Code=24416 RO-data=57124 RW-data=56 ZI-data=53424
FromELF: creating hex file...
"epd-demo\epd-demo.axf" - 0 Error(s), 4 Warning(s).
"epd-demo\epd-demo.axf" - 0 Error(s), 0 Warning(s).
<h2>Software Packages used:</h2>
Package Vendor: ARM
http://www.keil.com/pack/ARM.CMSIS.5.9.0.pack
ARM.CMSIS.5.9.0
CMSIS (Common Microcontroller Software Interface Standard)
* Component: CORE Version: 5.6.0
http://www.keil.com/pack/ARM.CMSIS.5.7.0.pack
ARM.CMSIS.5.7.0
CMSIS (Cortex Microcontroller Software Interface Standard)
* Component: CORE Version: 5.4.0
Package Vendor: Keil
http://www.keil.com/pack/Keil.STM32F1xx_DFP.2.1.0.pack
Keil.STM32F1xx_DFP.2.1.0
http://www.keil.com/pack/Keil.STM32F1xx_DFP.2.3.0.pack
Keil.STM32F1xx_DFP.2.3.0
STMicroelectronics STM32F1 Series Device Support, Drivers and Examples
<h2>Collection of Component include folders:</h2>
.\RTE\_epd-demo
D:\KEIL\azwz\ARM\PACK\ARM\CMSIS\5.9.0\CMSIS\Core\Include
D:\KEIL\azwz\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include
D:\Program Files\keil5\ARM\PACK\ARM\CMSIS\5.7.0\CMSIS\Core\Include
D:\Program Files\keil5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include
<h2>Collection of Component Files used:</h2>
* Component: ARM::CMSIS:CORE:5.6.0
Build Time Elapsed: 00:00:47
* Component: ARM::CMSIS:CORE:5.4.0
Build Time Elapsed: 00:00:02
</pre>
</body>
</html>

View file

@ -3,11 +3,11 @@
<title>Static Call Graph - [epd-demo\epd-demo.axf]</title></head>
<body><HR>
<H1>Static Call Graph for image epd-demo\epd-demo.axf</H1><HR>
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Wed Jul 27 17:17:15 2022
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Tue Aug 16 16:55:17 2022
<BR><P>
<H3>Maximum Stack Usage = 752 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
<H3>Maximum Stack Usage = 760 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
Call chain for Maximum Stack Depth:</H3>
main &rArr; EPD_7in3g_test &rArr; Paint_DrawNum &rArr; Paint_DrawString_EN &rArr; Paint_DrawChar &rArr; Paint_SetPixel &rArr; __2printf
main &rArr; EPD_4in37g_test &rArr; Paint_DrawNum &rArr; Paint_DrawString_EN &rArr; Paint_DrawChar &rArr; Paint_SetPixel &rArr; __2printf
<P>
<H3>
Mutually Recursive functions
@ -365,14 +365,14 @@ Global Symbols
</UL>
<P><STRONG><a name="[46]"></a>main</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, main.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 752<LI>Call Chain = main &rArr; EPD_7in3g_test &rArr; Paint_DrawNum &rArr; Paint_DrawString_EN &rArr; Paint_DrawChar &rArr; Paint_SetPixel &rArr; __2printf
<BR><BR>[Stack]<UL><LI>Max Depth = 760<LI>Call Chain = main &rArr; EPD_4in37g_test &rArr; Paint_DrawNum &rArr; Paint_DrawString_EN &rArr; Paint_DrawChar &rArr; Paint_SetPixel &rArr; __2printf
</UL>
<BR>[Calls]<UL><LI><a href="#[72]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART1_UART_Init
<LI><a href="#[73]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_SPI1_Init
<LI><a href="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
<LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
<LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
<LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
</UL>
<BR>[Address Reference Count : 1]<UL><LI> entry9a.o(.ARM.Collect$$$$0000000B)
@ -493,82 +493,75 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
</UL>
<P><STRONG><a name="[74]"></a>EPD_7in3g_test</STRONG> (Thumb, 480 bytes, Stack size 48 bytes, epd_7in3g_test.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 752<LI>Call Chain = EPD_7in3g_test &rArr; Paint_DrawNum &rArr; Paint_DrawString_EN &rArr; Paint_DrawChar &rArr; Paint_SetPixel &rArr; __2printf
<P><STRONG><a name="[74]"></a>EPD_4in37g_test</STRONG> (Thumb, 688 bytes, Stack size 56 bytes, epd_4in37g_test.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 760<LI>Call Chain = EPD_4in37g_test &rArr; Paint_DrawNum &rArr; Paint_DrawString_EN &rArr; Paint_DrawChar &rArr; Paint_SetPixel &rArr; __2printf
</UL>
<BR>[Calls]<UL><LI><a href="#[86]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetScale
<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawBitMap
<LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SelectImage
<LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_NewImage
<LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawString_EN
<LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawString_CN
<LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawRectangle
<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawPoint
<LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawNum
<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawLine
<LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawCircle
<LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawString_EN
<LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawString_CN
<LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawRectangle
<LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawPoint
<LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawNum
<LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawLine
<LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawCircle
<LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_Clear
<LI><a href="#[81]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_Module_Init
<LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_Module_Exit
<LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_Module_Exit
<LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Sleep
<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Init
<LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Display_part
<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Clear
<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Sleep
<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Init
<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Display
<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Clear
<LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;malloc
<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;free
<LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;free
<LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
</UL>
<BR>[Called By]<UL><LI><a href="#[46]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[82]"></a>EPD_7IN3G_Init</STRONG> (Thumb, 354 bytes, Stack size 8 bytes, epd_7in3g.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 120<LI>Call Chain = EPD_7IN3G_Init &rArr; EPD_7IN3G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
<P><STRONG><a name="[82]"></a>EPD_4IN37G_Init</STRONG> (Thumb, 344 bytes, Stack size 8 bytes, epd_4in37g.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 120<LI>Call Chain = EPD_4IN37G_Init &rArr; EPD_4IN37G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_SendData
<LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_SendCommand
<LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_ReadBusyH
<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
</UL>
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
</UL>
<P><STRONG><a name="[83]"></a>EPD_7IN3G_Clear</STRONG> (Thumb, 62 bytes, Stack size 24 bytes, epd_7in3g.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 144<LI>Call Chain = EPD_7IN3G_Clear &rArr; EPD_7IN3G_TurnOnDisplay &rArr; EPD_7IN3G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
<P><STRONG><a name="[83]"></a>EPD_4IN37G_Clear</STRONG> (Thumb, 74 bytes, Stack size 24 bytes, epd_4in37g.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 144<LI>Call Chain = EPD_4IN37G_Clear &rArr; EPD_4IN37G_TurnOnDisplay &rArr; EPD_4IN37G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_TurnOnDisplay
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_SendData
<LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_SendCommand
<LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_ReadBusyH
<BR>[Calls]<UL><LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_TurnOnDisplay
<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_ReadBusyH
</UL>
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
</UL>
<P><STRONG><a name="[99]"></a>EPD_7IN3G_Display</STRONG> (Thumb, 70 bytes, Stack size 32 bytes, epd_7in3g.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_TurnOnDisplay
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_SendData
<LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_SendCommand
<LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_ReadBusyH
<P><STRONG><a name="[8a]"></a>EPD_4IN37G_Display</STRONG> (Thumb, 72 bytes, Stack size 32 bytes, epd_4in37g.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 152<LI>Call Chain = EPD_4IN37G_Display &rArr; EPD_4IN37G_TurnOnDisplay &rArr; EPD_4IN37G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_TurnOnDisplay
<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_ReadBusyH
</UL>
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
</UL>
<P><STRONG><a name="[90]"></a>EPD_7IN3G_Display_part</STRONG> (Thumb, 128 bytes, Stack size 56 bytes, epd_7in3g.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 176<LI>Call Chain = EPD_7IN3G_Display_part &rArr; EPD_7IN3G_TurnOnDisplay &rArr; EPD_7IN3G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
<P><STRONG><a name="[92]"></a>EPD_4IN37G_Sleep</STRONG> (Thumb, 30 bytes, Stack size 8 bytes, epd_4in37g.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 120<LI>Call Chain = EPD_4IN37G_Sleep &rArr; EPD_4IN37G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_TurnOnDisplay
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_SendData
<LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_SendCommand
<LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_ReadBusyH
<BR>[Calls]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
</UL>
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
</UL>
<P><STRONG><a name="[91]"></a>EPD_7IN3G_Sleep</STRONG> (Thumb, 30 bytes, Stack size 8 bytes, epd_7in3g.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 120<LI>Call Chain = EPD_7IN3G_Sleep &rArr; EPD_7IN3G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_SendData
<LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_SendCommand
</UL>
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
</UL>
<P><STRONG><a name="[9a]"></a>DEV_SPI_WriteByte</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, dev_config.o(.text))
@ -576,8 +569,8 @@ Global Symbols
</UL>
<BR>[Calls]<UL><LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_Transmit
</UL>
<BR>[Called By]<UL><LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_SendData
<LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_SendCommand
<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
</UL>
<P><STRONG><a name="[81]"></a>DEV_Module_Init</STRONG> (Thumb, 38 bytes, Stack size 8 bytes, dev_config.o(.text))
@ -585,25 +578,25 @@ Global Symbols
</UL>
<BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
</UL>
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
</UL>
<P><STRONG><a name="[93]"></a>DEV_Module_Exit</STRONG> (Thumb, 38 bytes, Stack size 8 bytes, dev_config.o(.text))
<P><STRONG><a name="[94]"></a>DEV_Module_Exit</STRONG> (Thumb, 38 bytes, Stack size 8 bytes, dev_config.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = DEV_Module_Exit
</UL>
<BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
</UL>
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
</UL>
<P><STRONG><a name="[85]"></a>Paint_NewImage</STRONG> (Thumb, 56 bytes, Stack size 16 bytes, gui_paint.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = Paint_NewImage
</UL>
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
</UL>
<P><STRONG><a name="[87]"></a>Paint_SelectImage</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, gui_paint.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<BR><BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
</UL>
<P><STRONG><a name="[9c]"></a>Paint_SetRotate</STRONG> (Thumb, 44 bytes, Stack size 8 bytes, gui_paint.o(.text), UNUSED)
@ -615,7 +608,7 @@ Global Symbols
</UL>
<BR>[Calls]<UL><LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
</UL>
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
</UL>
<P><STRONG><a name="[9d]"></a>Paint_SetMirroring</STRONG> (Thumb, 62 bytes, Stack size 8 bytes, gui_paint.o(.text), UNUSED)
@ -627,60 +620,60 @@ Global Symbols
</UL>
<BR>[Calls]<UL><LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
</UL>
<BR>[Called By]<UL><LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawString_CN
<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawPoint
<BR>[Called By]<UL><LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawString_CN
<LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawPoint
<LI><a href="#[9f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_ClearWindows
<LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawBitMap_Paste
<LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawChar
</UL>
<P><STRONG><a name="[88]"></a>Paint_Clear</STRONG> (Thumb, 104 bytes, Stack size 12 bytes, gui_paint.o(.text))
<P><STRONG><a name="[88]"></a>Paint_Clear</STRONG> (Thumb, 156 bytes, Stack size 12 bytes, gui_paint.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = Paint_Clear
</UL>
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
</UL>
<P><STRONG><a name="[9f]"></a>Paint_ClearWindows</STRONG> (Thumb, 52 bytes, Stack size 32 bytes, gui_paint.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetPixel
</UL>
<P><STRONG><a name="[89]"></a>Paint_DrawPoint</STRONG> (Thumb, 180 bytes, Stack size 40 bytes, gui_paint.o(.text))
<P><STRONG><a name="[8b]"></a>Paint_DrawPoint</STRONG> (Thumb, 180 bytes, Stack size 40 bytes, gui_paint.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = Paint_DrawPoint &rArr; Paint_SetPixel &rArr; __2printf
</UL>
<BR>[Calls]<UL><LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetPixel
<LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
</UL>
<BR>[Called By]<UL><LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawLine
<LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawCircle
<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<BR>[Called By]<UL><LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawLine
<LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawCircle
<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
</UL>
<P><STRONG><a name="[8a]"></a>Paint_DrawLine</STRONG> (Thumb, 654 bytes, Stack size 48 bytes, gui_paint.o(.text))
<P><STRONG><a name="[8c]"></a>Paint_DrawLine</STRONG> (Thumb, 662 bytes, Stack size 48 bytes, gui_paint.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 128<LI>Call Chain = Paint_DrawLine &rArr; Paint_DrawPoint &rArr; Paint_SetPixel &rArr; __2printf
</UL>
<BR>[Calls]<UL><LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawPoint
<BR>[Calls]<UL><LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawPoint
<LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
</UL>
<BR>[Called By]<UL><LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawRectangle
<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<BR>[Called By]<UL><LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawRectangle
<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
</UL>
<P><STRONG><a name="[8b]"></a>Paint_DrawRectangle</STRONG> (Thumb, 170 bytes, Stack size 48 bytes, gui_paint.o(.text))
<P><STRONG><a name="[8d]"></a>Paint_DrawRectangle</STRONG> (Thumb, 170 bytes, Stack size 48 bytes, gui_paint.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 176<LI>Call Chain = Paint_DrawRectangle &rArr; Paint_DrawLine &rArr; Paint_DrawPoint &rArr; Paint_SetPixel &rArr; __2printf
</UL>
<BR>[Calls]<UL><LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawLine
<BR>[Calls]<UL><LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawLine
<LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
</UL>
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
</UL>
<P><STRONG><a name="[8c]"></a>Paint_DrawCircle</STRONG> (Thumb, 528 bytes, Stack size 72 bytes, gui_paint.o(.text))
<P><STRONG><a name="[8e]"></a>Paint_DrawCircle</STRONG> (Thumb, 528 bytes, Stack size 72 bytes, gui_paint.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 152<LI>Call Chain = Paint_DrawCircle &rArr; Paint_DrawPoint &rArr; Paint_SetPixel &rArr; __2printf
</UL>
<BR>[Calls]<UL><LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawPoint
<BR>[Calls]<UL><LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawPoint
<LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
</UL>
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
</UL>
<P><STRONG><a name="[a0]"></a>Paint_DrawChar</STRONG> (Thumb, 172 bytes, Stack size 40 bytes, gui_paint.o(.text))
@ -690,53 +683,57 @@ Global Symbols
<LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
</UL>
<BR>[Called By]<UL><LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawTime
<LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawString_EN
<LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawString_EN
</UL>
<P><STRONG><a name="[8d]"></a>Paint_DrawString_EN</STRONG> (Thumb, 116 bytes, Stack size 48 bytes, gui_paint.o(.text))
<P><STRONG><a name="[8f]"></a>Paint_DrawString_EN</STRONG> (Thumb, 116 bytes, Stack size 48 bytes, gui_paint.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 128<LI>Call Chain = Paint_DrawString_EN &rArr; Paint_DrawChar &rArr; Paint_SetPixel &rArr; __2printf
</UL>
<BR>[Calls]<UL><LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawChar
<LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
</UL>
<BR>[Called By]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawNum
<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<BR>[Called By]<UL><LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawNum
<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
</UL>
<P><STRONG><a name="[8e]"></a>Paint_DrawString_CN</STRONG> (Thumb, 518 bytes, Stack size 40 bytes, gui_paint.o(.text))
<P><STRONG><a name="[90]"></a>Paint_DrawString_CN</STRONG> (Thumb, 518 bytes, Stack size 40 bytes, gui_paint.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = Paint_DrawString_CN &rArr; Paint_SetPixel &rArr; __2printf
</UL>
<BR>[Calls]<UL><LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetPixel
</UL>
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
</UL>
<P><STRONG><a name="[8f]"></a>Paint_DrawNum</STRONG> (Thumb, 140 bytes, Stack size 576 bytes, gui_paint.o(.text))
<P><STRONG><a name="[91]"></a>Paint_DrawNum</STRONG> (Thumb, 140 bytes, Stack size 576 bytes, gui_paint.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 704<LI>Call Chain = Paint_DrawNum &rArr; Paint_DrawString_EN &rArr; Paint_DrawChar &rArr; Paint_SetPixel &rArr; __2printf
</UL>
<BR>[Calls]<UL><LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawString_EN
<BR>[Calls]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawString_EN
<LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
<LI><a href="#[6d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
</UL>
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
</UL>
<P><STRONG><a name="[a1]"></a>Paint_DrawTime</STRONG> (Thumb, 282 bytes, Stack size 72 bytes, gui_paint.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawChar
</UL>
<P><STRONG><a name="[105]"></a>Paint_DrawBitMap</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, gui_paint.o(.text), UNUSED)
<P><STRONG><a name="[89]"></a>Paint_DrawBitMap</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, gui_paint.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = Paint_DrawBitMap
</UL>
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
</UL>
<P><STRONG><a name="[a2]"></a>Paint_DrawBitMap_Paste</STRONG> (Thumb, 110 bytes, Stack size 56 bytes, gui_paint.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetPixel
</UL>
<P><STRONG><a name="[106]"></a>Paint_DrawBitMap_Block</STRONG> (Thumb, 54 bytes, Stack size 20 bytes, gui_paint.o(.text), UNUSED)
<P><STRONG><a name="[105]"></a>Paint_DrawBitMap_Block</STRONG> (Thumb, 54 bytes, Stack size 20 bytes, gui_paint.o(.text), UNUSED)
<P><STRONG><a name="[47]"></a>SystemInit</STRONG> (Thumb, 60 bytes, Stack size 0 bytes, system_stm32f1xx.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xe.o(.text)
</UL>
<P><STRONG><a name="[107]"></a>SystemCoreClockUpdate</STRONG> (Thumb, 108 bytes, Stack size 0 bytes, system_stm32f1xx.o(.text), UNUSED)
<P><STRONG><a name="[106]"></a>SystemCoreClockUpdate</STRONG> (Thumb, 108 bytes, Stack size 0 bytes, system_stm32f1xx.o(.text), UNUSED)
<P><STRONG><a name="[78]"></a>HAL_SPI_Init</STRONG> (Thumb, 180 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = HAL_SPI_Init &rArr; HAL_SPI_MspInit &rArr; HAL_GPIO_Init
@ -789,7 +786,7 @@ Global Symbols
<LI><a href="#[aa]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseTx_ISR
</UL>
<P><STRONG><a name="[108]"></a>HAL_SPI_Transmit_IT</STRONG> (Thumb, 162 bytes, Stack size 4 bytes, stm32f1xx_hal_spi.o(.text), UNUSED)
<P><STRONG><a name="[107]"></a>HAL_SPI_Transmit_IT</STRONG> (Thumb, 162 bytes, Stack size 4 bytes, stm32f1xx_hal_spi.o(.text), UNUSED)
<P><STRONG><a name="[ae]"></a>HAL_SPI_RxCpltCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[57]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_DMAReceiveCplt
@ -852,9 +849,9 @@ Global Symbols
<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Abort_IT
</UL>
<P><STRONG><a name="[109]"></a>HAL_SPI_DMAPause</STRONG> (Thumb, 38 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text), UNUSED)
<P><STRONG><a name="[108]"></a>HAL_SPI_DMAPause</STRONG> (Thumb, 38 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text), UNUSED)
<P><STRONG><a name="[10a]"></a>HAL_SPI_DMAResume</STRONG> (Thumb, 38 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text), UNUSED)
<P><STRONG><a name="[109]"></a>HAL_SPI_DMAResume</STRONG> (Thumb, 38 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text), UNUSED)
<P><STRONG><a name="[bf]"></a>HAL_SPI_DMAStop</STRONG> (Thumb, 68 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Abort
@ -865,9 +862,9 @@ Global Symbols
<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Abort_IT
</UL>
<P><STRONG><a name="[10b]"></a>HAL_SPI_GetState</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text), UNUSED)
<P><STRONG><a name="[10a]"></a>HAL_SPI_GetState</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text), UNUSED)
<P><STRONG><a name="[10c]"></a>HAL_SPI_GetError</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text), UNUSED)
<P><STRONG><a name="[10b]"></a>HAL_SPI_GetError</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text), UNUSED)
<P><STRONG><a name="[c1]"></a>HAL_InitTick</STRONG> (Thumb, 58 bytes, Stack size 16 bytes, stm32f1xx_hal.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = HAL_InitTick &rArr; HAL_NVIC_SetPriority
@ -908,8 +905,6 @@ Global Symbols
<LI><a href="#[6e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_OscConfig
<LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
<LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[df]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Receive
<LI><a href="#[de]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_WaitOnFlagUntilTimeout
<LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_PollForTransfer
<LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_DeInit
<LI><a href="#[a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_Receive
@ -923,54 +918,56 @@ Global Symbols
<LI><a href="#[aa]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseTx_ISR
<LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_WaitFlagStateUntilTimeout
<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_Transmit
<LI><a href="#[df]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Receive
<LI><a href="#[de]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_WaitOnFlagUntilTimeout
</UL>
<P><STRONG><a name="[10d]"></a>HAL_GetTickPrio</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[10c]"></a>HAL_GetTickPrio</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[c8]"></a>HAL_SetTickFreq</STRONG> (Thumb, 30 bytes, Stack size 16 bytes, stm32f1xx_hal.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
</UL>
<P><STRONG><a name="[10e]"></a>HAL_GetTickFreq</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[10d]"></a>HAL_GetTickFreq</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[75]"></a>HAL_Delay</STRONG> (Thumb, 34 bytes, Stack size 16 bytes, stm32f1xx_hal.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = HAL_Delay
</UL>
<BR>[Calls]<UL><LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
</UL>
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
<LI><a href="#[46]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Init
<LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_ReadBusyH
<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Init
<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_ReadBusyH
</UL>
<P><STRONG><a name="[10f]"></a>HAL_SuspendTick</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[10e]"></a>HAL_SuspendTick</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[110]"></a>HAL_ResumeTick</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[10f]"></a>HAL_ResumeTick</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[111]"></a>HAL_GetHalVersion</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[110]"></a>HAL_GetHalVersion</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[112]"></a>HAL_GetREVID</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[111]"></a>HAL_GetREVID</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[113]"></a>HAL_GetDEVID</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[112]"></a>HAL_GetDEVID</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[114]"></a>HAL_GetUIDw0</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[113]"></a>HAL_GetUIDw0</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[115]"></a>HAL_GetUIDw1</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[114]"></a>HAL_GetUIDw1</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[116]"></a>HAL_GetUIDw2</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[115]"></a>HAL_GetUIDw2</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[117]"></a>HAL_DBGMCU_EnableDBGSleepMode</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[116]"></a>HAL_DBGMCU_EnableDBGSleepMode</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[118]"></a>HAL_DBGMCU_DisableDBGSleepMode</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[117]"></a>HAL_DBGMCU_DisableDBGSleepMode</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[119]"></a>HAL_DBGMCU_EnableDBGStopMode</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[118]"></a>HAL_DBGMCU_EnableDBGStopMode</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[11a]"></a>HAL_DBGMCU_DisableDBGStopMode</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[119]"></a>HAL_DBGMCU_DisableDBGStopMode</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[11b]"></a>HAL_DBGMCU_EnableDBGStandbyMode</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[11a]"></a>HAL_DBGMCU_EnableDBGStandbyMode</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[11c]"></a>HAL_DBGMCU_DisableDBGStandbyMode</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[11b]"></a>HAL_DBGMCU_DisableDBGStandbyMode</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED)
<P><STRONG><a name="[c9]"></a>HAL_RCC_DeInit</STRONG> (Thumb, 250 bytes, Stack size 24 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
@ -1006,9 +1003,9 @@ Global Symbols
<BR><BR>[Calls]<UL><LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_Init
</UL>
<P><STRONG><a name="[11d]"></a>HAL_RCC_EnableCSS</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED)
<P><STRONG><a name="[11c]"></a>HAL_RCC_EnableCSS</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED)
<P><STRONG><a name="[11e]"></a>HAL_RCC_DisableCSS</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED)
<P><STRONG><a name="[11d]"></a>HAL_RCC_DisableCSS</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED)
<P><STRONG><a name="[ce]"></a>HAL_RCC_GetHCLKFreq</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[cf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetPCLK2Freq
@ -1031,9 +1028,9 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[d9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_SetConfig
</UL>
<P><STRONG><a name="[11f]"></a>HAL_RCC_GetOscConfig</STRONG> (Thumb, 168 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED)
<P><STRONG><a name="[11e]"></a>HAL_RCC_GetOscConfig</STRONG> (Thumb, 168 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED)
<P><STRONG><a name="[120]"></a>HAL_RCC_GetClockConfig</STRONG> (Thumb, 52 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED)
<P><STRONG><a name="[11f]"></a>HAL_RCC_GetClockConfig</STRONG> (Thumb, 52 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED)
<P><STRONG><a name="[d1]"></a>HAL_RCC_CSSCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED)
<BR><BR>[Called By]<UL><LI><a href="#[d0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_NMI_IRQHandler
@ -1057,22 +1054,22 @@ Global Symbols
<LI><a href="#[7a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_MspDeInit
</UL>
<P><STRONG><a name="[95]"></a>HAL_GPIO_ReadPin</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_ReadBusyH
<P><STRONG><a name="[96]"></a>HAL_GPIO_ReadPin</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_ReadBusyH
</UL>
<P><STRONG><a name="[76]"></a>HAL_GPIO_WritePin</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[81]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_Module_Init
<LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_Module_Exit
<LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_Module_Exit
<LI><a href="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Init
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_SendData
<LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_SendCommand
<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Init
<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
</UL>
<P><STRONG><a name="[121]"></a>HAL_GPIO_TogglePin</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text), UNUSED)
<P><STRONG><a name="[120]"></a>HAL_GPIO_TogglePin</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text), UNUSED)
<P><STRONG><a name="[122]"></a>HAL_GPIO_LockPin</STRONG> (Thumb, 42 bytes, Stack size 4 bytes, stm32f1xx_hal_gpio.o(.text), UNUSED)
<P><STRONG><a name="[121]"></a>HAL_GPIO_LockPin</STRONG> (Thumb, 42 bytes, Stack size 4 bytes, stm32f1xx_hal_gpio.o(.text), UNUSED)
<P><STRONG><a name="[d3]"></a>HAL_GPIO_EXTI_Callback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text), UNUSED)
<BR><BR>[Called By]<UL><LI><a href="#[d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_EXTI_IRQHandler
@ -1082,9 +1079,9 @@ Global Symbols
<BR><BR>[Calls]<UL><LI><a href="#[d3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_EXTI_Callback
</UL>
<P><STRONG><a name="[123]"></a>HAL_DMA_Init</STRONG> (Thumb, 144 bytes, Stack size 4 bytes, stm32f1xx_hal_dma.o(.text), UNUSED)
<P><STRONG><a name="[122]"></a>HAL_DMA_Init</STRONG> (Thumb, 144 bytes, Stack size 4 bytes, stm32f1xx_hal_dma.o(.text), UNUSED)
<P><STRONG><a name="[124]"></a>HAL_DMA_DeInit</STRONG> (Thumb, 126 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED)
<P><STRONG><a name="[123]"></a>HAL_DMA_DeInit</STRONG> (Thumb, 126 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED)
<P><STRONG><a name="[d4]"></a>HAL_DMA_Start</STRONG> (Thumb, 88 bytes, Stack size 16 bytes, stm32f1xx_hal_dma.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[d5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DMA_SetConfig
@ -1093,42 +1090,42 @@ Global Symbols
<P><STRONG><a name="[b5]"></a>HAL_DMA_Start_IT</STRONG> (Thumb, 124 bytes, Stack size 16 bytes, stm32f1xx_hal_dma.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[d5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DMA_SetConfig
</UL>
<BR>[Called By]<UL><LI><a href="#[e8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Receive_DMA
<LI><a href="#[e5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Transmit_DMA
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_Receive_DMA
<BR>[Called By]<UL><LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_Receive_DMA
<LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TransmitReceive_DMA
<LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_Transmit_DMA
<LI><a href="#[e8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Receive_DMA
<LI><a href="#[e5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Transmit_DMA
</UL>
<P><STRONG><a name="[bb]"></a>HAL_DMA_Abort</STRONG> (Thumb, 72 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED)
<BR><BR>[Called By]<UL><LI><a href="#[ed]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_AbortReceive
<BR><BR>[Called By]<UL><LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_DMAStop
<LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_Abort
<LI><a href="#[ed]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_AbortReceive
<LI><a href="#[ec]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_AbortTransmit
<LI><a href="#[ea]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Abort
<LI><a href="#[e9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_DMAStop
<LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_DMAStop
<LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_Abort
</UL>
<P><STRONG><a name="[be]"></a>HAL_DMA_Abort_IT</STRONG> (Thumb, 318 bytes, Stack size 40 bytes, stm32f1xx_hal_dma.o(.text), UNUSED)
<BR><BR>[Called By]<UL><LI><a href="#[f6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
<BR><BR>[Called By]<UL><LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_IRQHandler
<LI><a href="#[bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_Abort_IT
<LI><a href="#[f6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
<LI><a href="#[f3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_AbortReceive_IT
<LI><a href="#[f1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_AbortTransmit_IT
<LI><a href="#[ef]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Abort_IT
<LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_IRQHandler
<LI><a href="#[bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_Abort_IT
</UL>
<P><STRONG><a name="[d6]"></a>HAL_DMA_PollForTransfer</STRONG> (Thumb, 1316 bytes, Stack size 56 bytes, stm32f1xx_hal_dma.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
</UL>
<P><STRONG><a name="[125]"></a>HAL_DMA_IRQHandler</STRONG> (Thumb, 672 bytes, Stack size 40 bytes, stm32f1xx_hal_dma.o(.text), UNUSED)
<P><STRONG><a name="[124]"></a>HAL_DMA_IRQHandler</STRONG> (Thumb, 672 bytes, Stack size 40 bytes, stm32f1xx_hal_dma.o(.text), UNUSED)
<P><STRONG><a name="[126]"></a>HAL_DMA_RegisterCallback</STRONG> (Thumb, 80 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED)
<P><STRONG><a name="[125]"></a>HAL_DMA_RegisterCallback</STRONG> (Thumb, 80 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED)
<P><STRONG><a name="[127]"></a>HAL_DMA_UnRegisterCallback</STRONG> (Thumb, 86 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED)
<P><STRONG><a name="[126]"></a>HAL_DMA_UnRegisterCallback</STRONG> (Thumb, 86 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED)
<P><STRONG><a name="[128]"></a>HAL_DMA_GetState</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED)
<P><STRONG><a name="[127]"></a>HAL_DMA_GetState</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED)
<P><STRONG><a name="[eb]"></a>HAL_DMA_GetError</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED)
<BR><BR>[Called By]<UL><LI><a href="#[ed]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_AbortReceive
@ -1146,29 +1143,29 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
</UL>
<P><STRONG><a name="[129]"></a>HAL_NVIC_EnableIRQ</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<P><STRONG><a name="[128]"></a>HAL_NVIC_EnableIRQ</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<P><STRONG><a name="[12a]"></a>HAL_NVIC_DisableIRQ</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<P><STRONG><a name="[129]"></a>HAL_NVIC_DisableIRQ</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<P><STRONG><a name="[12b]"></a>HAL_NVIC_SystemReset</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<P><STRONG><a name="[12a]"></a>HAL_NVIC_SystemReset</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<P><STRONG><a name="[c2]"></a>HAL_SYSTICK_Config</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
</UL>
<P><STRONG><a name="[12c]"></a>HAL_NVIC_GetPriorityGrouping</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<P><STRONG><a name="[12b]"></a>HAL_NVIC_GetPriorityGrouping</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<P><STRONG><a name="[12d]"></a>HAL_NVIC_GetPriority</STRONG> (Thumb, 94 bytes, Stack size 8 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<P><STRONG><a name="[12c]"></a>HAL_NVIC_GetPriority</STRONG> (Thumb, 94 bytes, Stack size 8 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<P><STRONG><a name="[12e]"></a>HAL_NVIC_SetPendingIRQ</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<P><STRONG><a name="[12d]"></a>HAL_NVIC_SetPendingIRQ</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<P><STRONG><a name="[12f]"></a>HAL_NVIC_GetPendingIRQ</STRONG> (Thumb, 42 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<P><STRONG><a name="[12e]"></a>HAL_NVIC_GetPendingIRQ</STRONG> (Thumb, 42 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<P><STRONG><a name="[130]"></a>HAL_NVIC_ClearPendingIRQ</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<P><STRONG><a name="[12f]"></a>HAL_NVIC_ClearPendingIRQ</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<P><STRONG><a name="[131]"></a>HAL_NVIC_GetActive</STRONG> (Thumb, 42 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<P><STRONG><a name="[130]"></a>HAL_NVIC_GetActive</STRONG> (Thumb, 42 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<P><STRONG><a name="[132]"></a>HAL_SYSTICK_CLKSourceConfig</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<P><STRONG><a name="[131]"></a>HAL_SYSTICK_CLKSourceConfig</STRONG> (Thumb, 28 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<P><STRONG><a name="[d8]"></a>HAL_SYSTICK_Callback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED)
<BR><BR>[Called By]<UL><LI><a href="#[d7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SYSTICK_IRQHandler
@ -1209,20 +1206,20 @@ Global Symbols
<P><STRONG><a name="[7f]"></a>HAL_UART_Transmit</STRONG> (Thumb, 202 bytes, Stack size 32 bytes, stm32f1xx_hal_uart.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = HAL_UART_Transmit &rArr; UART_WaitOnFlagUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[de]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_WaitOnFlagUntilTimeout
<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<BR>[Calls]<UL><LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[de]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_WaitOnFlagUntilTimeout
</UL>
<BR>[Called By]<UL><LI><a href="#[67]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;fputc
</UL>
<P><STRONG><a name="[df]"></a>HAL_UART_Receive</STRONG> (Thumb, 212 bytes, Stack size 32 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[de]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_WaitOnFlagUntilTimeout
<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<BR><BR>[Calls]<UL><LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[de]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_WaitOnFlagUntilTimeout
</UL>
<P><STRONG><a name="[133]"></a>HAL_UART_Transmit_IT</STRONG> (Thumb, 66 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[132]"></a>HAL_UART_Transmit_IT</STRONG> (Thumb, 66 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[134]"></a>HAL_UART_Receive_IT</STRONG> (Thumb, 86 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[133]"></a>HAL_UART_Receive_IT</STRONG> (Thumb, 86 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[e2]"></a>HAL_UART_ErrorCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[f6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_IRQHandler
@ -1256,14 +1253,14 @@ Global Symbols
<BR><BR>[Calls]<UL><LI><a href="#[b5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Start_IT
</UL>
<P><STRONG><a name="[135]"></a>HAL_UART_DMAPause</STRONG> (Thumb, 102 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[134]"></a>HAL_UART_DMAPause</STRONG> (Thumb, 102 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[136]"></a>HAL_UART_DMAResume</STRONG> (Thumb, 98 bytes, Stack size 4 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[135]"></a>HAL_UART_DMAResume</STRONG> (Thumb, 98 bytes, Stack size 4 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[e9]"></a>HAL_UART_DMAStop</STRONG> (Thumb, 88 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[e0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_EndTxTransfer
<BR><BR>[Calls]<UL><LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Abort
<LI><a href="#[e0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_EndTxTransfer
<LI><a href="#[e1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_EndRxTransfer
<LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Abort
</UL>
<P><STRONG><a name="[ea]"></a>HAL_UART_Abort</STRONG> (Thumb, 148 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
@ -1313,53 +1310,53 @@ Global Symbols
</UL>
<P><STRONG><a name="[f6]"></a>HAL_UART_IRQHandler</STRONG> (Thumb, 312 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[e2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_ErrorCallback
<BR><BR>[Calls]<UL><LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Abort_IT
<LI><a href="#[e2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_ErrorCallback
<LI><a href="#[f5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_Receive_IT
<LI><a href="#[f7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_Transmit_IT
<LI><a href="#[f4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_EndTransmit_IT
<LI><a href="#[e1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_EndRxTransfer
<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Abort_IT
</UL>
<P><STRONG><a name="[137]"></a>HAL_LIN_SendBreak</STRONG> (Thumb, 70 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[136]"></a>HAL_LIN_SendBreak</STRONG> (Thumb, 70 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[138]"></a>HAL_MultiProcessor_EnterMuteMode</STRONG> (Thumb, 50 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[137]"></a>HAL_MultiProcessor_EnterMuteMode</STRONG> (Thumb, 50 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[139]"></a>HAL_MultiProcessor_ExitMuteMode</STRONG> (Thumb, 50 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[138]"></a>HAL_MultiProcessor_ExitMuteMode</STRONG> (Thumb, 50 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[13a]"></a>HAL_HalfDuplex_EnableTransmitter</STRONG> (Thumb, 54 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[139]"></a>HAL_HalfDuplex_EnableTransmitter</STRONG> (Thumb, 54 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[13b]"></a>HAL_HalfDuplex_EnableReceiver</STRONG> (Thumb, 54 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[13a]"></a>HAL_HalfDuplex_EnableReceiver</STRONG> (Thumb, 54 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[13c]"></a>HAL_UART_GetState</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[13b]"></a>HAL_UART_GetState</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[13d]"></a>HAL_UART_GetError</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[13c]"></a>HAL_UART_GetError</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED)
<P><STRONG><a name="[f9]"></a>__aeabi_memset</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<BR><BR>[Called By]<UL><LI><a href="#[fa]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_memset$wrapper
<LI><a href="#[f8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
</UL>
<P><STRONG><a name="[13e]"></a>__aeabi_memset4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[13d]"></a>__aeabi_memset4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[13f]"></a>__aeabi_memset8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[13e]"></a>__aeabi_memset8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[f8]"></a>__aeabi_memclr</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[f9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memset
</UL>
<P><STRONG><a name="[6d]"></a>__aeabi_memclr4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawNum
<BR><BR>[Called By]<UL><LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawNum
<LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
</UL>
<P><STRONG><a name="[140]"></a>__aeabi_memclr8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[13f]"></a>__aeabi_memclr8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[fa]"></a>_memset$wrapper</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[f9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memset
</UL>
<P><STRONG><a name="[141]"></a>__aeabi_uidiv</STRONG> (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)
<P><STRONG><a name="[140]"></a>__aeabi_uidiv</STRONG> (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)
<P><STRONG><a name="[fe]"></a>__aeabi_uidivmod</STRONG> (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)
<BR><BR>[Called By]<UL><LI><a href="#[fd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_core
@ -1371,107 +1368,102 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[68]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_main_scatterload
</UL>
<P><STRONG><a name="[142]"></a>__scatterload_rt2</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)
<P><STRONG><a name="[141]"></a>__scatterload_rt2</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)
<P><STRONG><a name="[fc]"></a>__0printf$3</STRONG> (Thumb, 22 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[fd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_core
</UL>
<P><STRONG><a name="[143]"></a>__1printf$3</STRONG> (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3), UNUSED)
<P><STRONG><a name="[142]"></a>__1printf$3</STRONG> (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3), UNUSED)
<P><STRONG><a name="[6b]"></a>__2printf</STRONG> (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = __2printf
</UL>
<BR>[Called By]<UL><LI><a href="#[86]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetScale
<LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawString_EN
<LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawRectangle
<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawPoint
<LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawNum
<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawLine
<LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawCircle
<LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawString_EN
<LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawRectangle
<LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawPoint
<LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawNum
<LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawLine
<LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawCircle
<LI><a href="#[2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HardFault_Handler
<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
<LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Error_Handler
<LI><a href="#[9d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetMirroring
<LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_DrawChar
<LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetPixel
<LI><a href="#[9c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Paint_SetRotate
<LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_ReadBusyH
<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_ReadBusyH
</UL>
<P><STRONG><a name="[144]"></a>__scatterload_copy</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)
<P><STRONG><a name="[143]"></a>__scatterload_copy</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)
<P><STRONG><a name="[145]"></a>__scatterload_null</STRONG> (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED)
<P><STRONG><a name="[144]"></a>__scatterload_null</STRONG> (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED)
<P><STRONG><a name="[146]"></a>__scatterload_zeroinit</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED)
<P><STRONG><a name="[145]"></a>__scatterload_zeroinit</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED)
<P><STRONG><a name="[92]"></a>free</STRONG> (Thumb, 76 bytes, Stack size 8 bytes, malloc.o(i.free))
<P><STRONG><a name="[93]"></a>free</STRONG> (Thumb, 76 bytes, Stack size 8 bytes, malloc.o(i.free))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = free
</UL>
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
</UL>
<P><STRONG><a name="[84]"></a>malloc</STRONG> (Thumb, 92 bytes, Stack size 20 bytes, malloc.o(i.malloc))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = malloc
</UL>
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7in3g_test
<BR>[Called By]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4in37g_test
</UL>
<P>
<H3>
Local Symbols
</H3>
<P><STRONG><a name="[94]"></a>EPD_7IN3G_ReadBusyH</STRONG> (Thumb, 40 bytes, Stack size 8 bytes, epd_7in3g.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = EPD_7IN3G_ReadBusyH &rArr; __2printf
<P><STRONG><a name="[95]"></a>EPD_4IN37G_ReadBusyH</STRONG> (Thumb, 40 bytes, Stack size 8 bytes, epd_4in37g.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = EPD_4IN37G_ReadBusyH &rArr; __2printf
</UL>
<BR>[Calls]<UL><LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
</UL>
<BR>[Called By]<UL><LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Init
<LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Display_part
<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Clear
<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Display
<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_TurnOnDisplay
<BR>[Called By]<UL><LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Display
<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Clear
<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_TurnOnDisplay
</UL>
<P><STRONG><a name="[96]"></a>EPD_7IN3G_SendCommand</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, epd_7in3g.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = EPD_7IN3G_SendCommand &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
<P><STRONG><a name="[97]"></a>EPD_4IN37G_SendCommand</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, epd_4in37g.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = EPD_4IN37G_SendCommand &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_SPI_WriteByte
</UL>
<BR>[Called By]<UL><LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Sleep
<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Init
<LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Display_part
<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Clear
<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Display
<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_TurnOnDisplay
<BR>[Called By]<UL><LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Sleep
<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Init
<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Display
<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Clear
<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_TurnOnDisplay
</UL>
<P><STRONG><a name="[97]"></a>EPD_7IN3G_SendData</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, epd_7in3g.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = EPD_7IN3G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
<P><STRONG><a name="[98]"></a>EPD_4IN37G_SendData</STRONG> (Thumb, 46 bytes, Stack size 16 bytes, epd_4in37g.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = EPD_4IN37G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;DEV_SPI_WriteByte
</UL>
<BR>[Called By]<UL><LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Sleep
<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Init
<LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Display_part
<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Clear
<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Display
<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_TurnOnDisplay
<BR>[Called By]<UL><LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Sleep
<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Init
<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Display
<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Clear
<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_TurnOnDisplay
</UL>
<P><STRONG><a name="[98]"></a>EPD_7IN3G_TurnOnDisplay</STRONG> (Thumb, 36 bytes, Stack size 8 bytes, epd_7in3g.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 120<LI>Call Chain = EPD_7IN3G_TurnOnDisplay &rArr; EPD_7IN3G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
<P><STRONG><a name="[99]"></a>EPD_4IN37G_TurnOnDisplay</STRONG> (Thumb, 36 bytes, Stack size 8 bytes, epd_4in37g.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 120<LI>Call Chain = EPD_4IN37G_TurnOnDisplay &rArr; EPD_4IN37G_SendData &rArr; DEV_SPI_WriteByte &rArr; HAL_SPI_Transmit &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_SendData
<LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_SendCommand
<LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_ReadBusyH
<BR>[Calls]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendData
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_SendCommand
<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_ReadBusyH
</UL>
<BR>[Called By]<UL><LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Display_part
<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Clear
<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_7IN3G_Display
<BR>[Called By]<UL><LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Display
<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EPD_4IN37G_Clear
</UL>
<P><STRONG><a name="[a4]"></a>SPI_WaitFlagStateUntilTimeout</STRONG> (Thumb, 210 bytes, Stack size 32 bytes, stm32f1xx_hal_spi.o(.text))

File diff suppressed because it is too large Load diff

View file

@ -102,23 +102,23 @@ ARM Macro Assembler Page 2
57 00001000 ; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
58 00001000 ; </h>
59 00001000
60 00001000 00009000
60 00001000 0000C000
Heap_Size
EQU 0x9000
EQU 0xC000
61 00001000
62 00001000 AREA HEAP, NOINIT, READWRITE, ALIGN=
3
63 00000000 __heap_base
64 00000000 Heap_Mem
SPACE Heap_Size
65 00009000 __heap_limit
66 00009000
67 00009000 PRESERVE8
68 00009000 THUMB
69 00009000
70 00009000
71 00009000 ; Vector Table Mapped to Address 0 at Reset
72 00009000 AREA RESET, DATA, READONLY
65 0000C000 __heap_limit
66 0000C000
67 0000C000 PRESERVE8
68 0000C000 THUMB
69 0000C000
70 0000C000
71 0000C000 ; Vector Table Mapped to Address 0 at Reset
72 0000C000 AREA RESET, DATA, READONLY
73 00000000 EXPORT __Vectors
74 00000000 EXPORT __Vectors_End
75 00000000 EXPORT __Vectors_Size
@ -580,17 +580,17 @@ ARM Macro Assembler Page 9
00000000
Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M3 --apcs=interw
ork --depend=epd-demo\startup_stm32f103xe.d -oepd-demo\startup_stm32f103xe.o -I
.\RTE\_epd-demo -ID:\KEIL\azwz\ARM\PACK\ARM\CMSIS\5.9.0\CMSIS\Core\Include -ID:
\KEIL\azwz\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include --predefine="__MICR
OLIB SETA 1" --predefine="__UVISION_VERSION SETA 526" --predefine="_RTE_ SETA 1
.\RTE\_epd-demo -I"D:\Program Files\keil5\ARM\PACK\ARM\CMSIS\5.7.0\CMSIS\Core\I
nclude" -I"D:\Program Files\keil5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Incl
ude" --predefine="__MICROLIB SETA 1" --predefine="__UVISION_VERSION SETA 525" -
ARM Macro Assembler Page 10
" --predefine="STM32F10X_HD SETA 1" --list=startup_stm32f103xe.lst startup_stm3
2f103xe.s
-predefine="_RTE_ SETA 1" --predefine="STM32F10X_HD SETA 1" --list=startup_stm3
2f103xe.lst startup_stm32f103xe.s
@ -653,7 +653,7 @@ Symbol: __heap_base
Uses
At line 351 in file startup_stm32f103xe.s
Comment: __heap_base used once
__heap_limit 00009000
__heap_limit 0000C000
Symbol: __heap_limit
Definitions
@ -1414,7 +1414,7 @@ Symbol: WWDG_IRQHandler
ARM Macro Assembler Page 1 Alphabetic symbol ordering
Absolute symbols
Heap_Size 00009000
Heap_Size 0000C000
Symbol: Heap_Size
Definitions

View file

@ -57,7 +57,7 @@ __initial_sp
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Heap_Size EQU 0x9000
Heap_Size EQU 0xC000
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base

View file

@ -94,61 +94,62 @@ int main(void)
MX_SPI1_Init();
/* USER CODE BEGIN 2 */
// EPD_1in64g_test();
// EPD_3in0g_test();
// EPD_7in3g_test();
// EPD_1in02d_test();
// EPD_1in54_test();
// EPD_1in54_V2_test();
// EPD_1in54b_test();
// EPD_1in54b_V2_test();
// EPD_1in54c_test();
// EPD_1in64g_test();
// EPD_3in0g_test();
// EPD_4in37g_test();
// EPD_7in3g_test();
// EPD_2in7_test();
// EPD_2in7b_test();
// EPD_2in7b_V2_test();
// EPD_1in02d_test();
// EPD_2in9_test();
// EPD_2in9_V2_test();
// EPD_2in9bc_test();
// EPD_2in9b_V3_test();
// EPD_2in9d_test();
// EPD_1in54_test();
// EPD_1in54_V2_test();
// EPD_1in54b_test();
// EPD_1in54b_V2_test();
// EPD_1in54c_test();
// EPD_2in13_test();
// EPD_2in13_V2_test();
// EPD_2in13_V3_test();
// EPD_2in13bc_test();
// EPD_2in13b_V3_test();
// EPD_2in13b_V4_test();
// EPD_2in13d_test();
// EPD_2in66_test();
// EPD_2in66b_test();
// EPD_3in52_test();
// EPD_3in7_test();
// EPD_4in01f_test();
// EPD_4in2_test();
// EPD_4in2bc_test();
// EPD_4in2b_V2_test();
// EPD_5in65f_test();
// EPD_5in83_test();
// EPD_5in83_V2_test();
// EPD_5in83bc_test();
// EPD_5in83b_V2_test();
// EPD_2in7_test();
// EPD_2in7b_test();
// EPD_2in7b_V2_test();
// EPD_7in5_test();
// EPD_7in5_V2_test();
// EPD_7in5bc_test();
// EPD_7in5b_V2_test();
// EPD_2in9_test();
// EPD_2in9_V2_test();
// EPD_2in9bc_test();
// EPD_2in9b_V3_test();
// EPD_2in9d_test();
// EPD_7in5_HD_test();
// EPD_7in5b_HD_test();
// EPD_2in13_test();
// EPD_2in13_V2_test();
// EPD_2in13_V3_test();
// EPD_2in13bc_test();
// EPD_2in13b_V3_test();
// EPD_2in13b_V4_test();
// EPD_2in13d_test();
// EPD_2in66_test();
// EPD_2in66b_test();
// EPD_3in52_test();
// EPD_3in7_test();
// EPD_4in01f_test();
// EPD_4in2_test();
// EPD_4in2bc_test();
// EPD_4in2b_V2_test();
// EPD_5in65f_test();
// EPD_5in83_test();
// EPD_5in83_V2_test();
// EPD_5in83bc_test();
// EPD_5in83b_V2_test();
// EPD_7in5_test();
// EPD_7in5_V2_test();
// EPD_7in5bc_test();
// EPD_7in5b_V2_test();
// EPD_7in5_HD_test();
// EPD_7in5b_HD_test();
/* USER CODE END 2 */

View file

@ -29,7 +29,6 @@
******************************************************************************/
#include "EPD_Test.h"
#include "EPD_1in64g.h"
#include "time.h"
int EPD_1in64g_test(void)
{
@ -40,9 +39,7 @@ int EPD_1in64g_test(void)
printf("e-Paper Init and Clear...\r\n");
EPD_1IN64G_Init();
printf("White \r\n");
EPD_1IN64G_Clear(EPD_1IN64G_WHITE); // While
EPD_1IN64G_Clear(EPD_1IN64G_WHITE);
DEV_Delay_ms(2000);
//Create a new image cache
@ -57,40 +54,39 @@ int EPD_1in64g_test(void)
Paint_NewImage(BlackImage, EPD_1IN64G_WIDTH, EPD_1IN64G_HEIGHT, 0, EPD_1IN64G_WHITE);
Paint_SetScale(4);
#if 1 // show bmp
printf("show BMP-----------------\r\n");
#if 1 // show image for array
printf("show image for array\r\n");
Paint_SelectImage(BlackImage);
Paint_Clear(WHITE);
Paint_DrawBitMap(gImage_1in64g);
Paint_Clear(EPD_1IN64G_WHITE);
Paint_DrawBitMap(gImage_1in64g);
EPD_1IN64G_Display(BlackImage);
DEV_Delay_ms(2000);
#endif
#if 1 // Drawing on the image
//1.Select Image
printf("SelectImage:BlackImage\r\n");
Paint_SelectImage(BlackImage);
Paint_Clear(0x55);
Paint_Clear(EPD_1IN64G_WHITE);
// 2.Drawing on the image
printf("Drawing:BlackImage\r\n");
Paint_DrawPoint(10, 80, Red_4Color, DOT_PIXEL_1X1, DOT_STYLE_DFT);
Paint_DrawPoint(10, 90, Yellow_4Color, DOT_PIXEL_2X2, DOT_STYLE_DFT);
Paint_DrawPoint(10, 100, Black_4Color, DOT_PIXEL_3X3, DOT_STYLE_DFT);
Paint_DrawLine(20, 70, 70, 120, Red_4Color, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
Paint_DrawLine(70, 70, 20, 120, Red_4Color, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
Paint_DrawRectangle(20, 70, 70, 120, Yellow_4Color, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
Paint_DrawRectangle(80, 70, 130, 120, Yellow_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawCircle(45, 95, 20, Black_4Color, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
Paint_DrawCircle(105, 95, 20, Black_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawLine(85, 95, 125, 95, Red_4Color, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
Paint_DrawLine(105, 75, 105, 115, Yellow_4Color, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
Paint_DrawString_EN(10, 0, "Red, yellow, white and black", &Font16, Red_4Color, Yellow_4Color);
Paint_DrawString_EN(10, 35, "Four color e-Paper", &Font12, Yellow_4Color, Black_4Color);
Paint_DrawString_CN(10, 125, "微雪电子", &Font24CN, Red_4Color, White_4Color);
Paint_DrawNum(10, 50, 123456, &Font12, Red_4Color, White_4Color);
Paint_DrawPoint(10, 80, EPD_1IN64G_RED, DOT_PIXEL_1X1, DOT_STYLE_DFT);
Paint_DrawPoint(10, 90, EPD_1IN64G_YELLOW, DOT_PIXEL_2X2, DOT_STYLE_DFT);
Paint_DrawPoint(10, 100, EPD_1IN64G_BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT);
Paint_DrawLine(20, 70, 70, 120, EPD_1IN64G_RED, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
Paint_DrawLine(70, 70, 20, 120, EPD_1IN64G_RED, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
Paint_DrawRectangle(20, 70, 70, 120, EPD_1IN64G_YELLOW, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
Paint_DrawRectangle(80, 70, 130, 120, EPD_1IN64G_YELLOW, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawCircle(45, 95, 20, EPD_1IN64G_BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
Paint_DrawCircle(105, 95, 20, EPD_1IN64G_BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawLine(85, 95, 125, 95, EPD_1IN64G_RED, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
Paint_DrawLine(105, 75, 105, 115, EPD_1IN64G_YELLOW, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
Paint_DrawString_EN(10, 0, "Red, yellow, white and black", &Font16, EPD_1IN64G_RED, EPD_1IN64G_YELLOW);
Paint_DrawString_EN(10, 35, "Four color e-Paper", &Font12, EPD_1IN64G_YELLOW, EPD_1IN64G_BLACK);
Paint_DrawString_CN(10, 125, "微雪电子", &Font24CN, EPD_1IN64G_RED, EPD_1IN64G_WHITE);
Paint_DrawNum(10, 50, 123456, &Font12, EPD_1IN64G_RED, EPD_1IN64G_WHITE);
printf("EPD_Display\r\n");
EPD_1IN64G_Display(BlackImage);
@ -101,13 +97,13 @@ int EPD_1in64g_test(void)
//1.Select Image
printf("SelectImage:BlackImage\r\n");
Paint_SelectImage(BlackImage);
Paint_Clear(0x55);
Paint_Clear(EPD_1IN64G_WHITE);
// 2.Drawing on the image
printf("Drawing:BlackImage\r\n");
Paint_DrawRectangle(1, 1, 168, 55, Red_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(1, 112, 167, 167, Yellow_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(59, 1, 109, 167, Black_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(1, 1, 168, 55, EPD_1IN64G_RED, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(1, 112, 167, 167, EPD_1IN64G_YELLOW, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(59, 1, 109, 167, EPD_1IN64G_BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL);
printf("EPD_Display\r\n");
EPD_1IN64G_Display(BlackImage);
@ -118,33 +114,24 @@ int EPD_1in64g_test(void)
//1.Select Image
printf("SelectImage:BlackImage\r\n");
Paint_SelectImage(BlackImage);
Paint_Clear(0x55);
Paint_Clear(EPD_1IN64G_WHITE);
int hNumber, hWidth, vNumber, vWidth;
hNumber = 8;
hWidth = EPD_1IN64G_HEIGHT/hNumber; // 168/16=21
vNumber = 8;
vWidth = EPD_1IN64G_WIDTH/vNumber; // 168/16=21
int wNumber, lNumber;
wNumber = (EPD_1IN64G_WIDTH/80)==0 ? (EPD_1IN64G_WIDTH/80) : (EPD_1IN64G_WIDTH/80)+1;
lNumber = (EPD_1IN64G_HEIGHT/20)==0 ? (EPD_1IN64G_HEIGHT/20) : (EPD_1IN64G_HEIGHT/20)+1;
// 2.Drawing on the image
printf("Drawing:BlackImage\r\n");
for(int j=0; j<lNumber; j++) {
if(j%2 == 0) {
for(int i=0; i<wNumber; i++) {
Paint_DrawRectangle(1+i*80, 1+j*20, 20+i*80, 20+j*20, Black_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(21+i*80, 1+j*20, 40+i*80, 20+j*20, White_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(41+i*80, 1+j*20, 60+i*80, 20+j*20, Yellow_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(61+i*80, 1+j*20, 80+i*80, 20+j*20, Red_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
}
for(int i=0; i<hNumber; i++) { // horizontal
Paint_DrawRectangle(1, 1+i*hWidth, EPD_1IN64G_WIDTH, hWidth*(1+i), EPD_1IN64G_BLACK + (i % 2), DOT_PIXEL_1X1, DRAW_FILL_FULL);
}
for(int i=0; i<vNumber; i++) { // vertical
if(i%2) {
Paint_DrawRectangle(1+i*vWidth, 1, vWidth*(i+1), EPD_1IN64G_HEIGHT, EPD_1IN64G_YELLOW + (i/2%2), DOT_PIXEL_1X1, DRAW_FILL_FULL);
}
else {
for(int i=0; i<wNumber; i++) {
Paint_DrawRectangle(1+i*80, 1+j*20, 20+i*80, 20+j*20, Yellow_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(21+i*80, 1+j*20, 40+i*80, 20+j*20, Red_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(41+i*80, 1+j*20, 60+i*80, 20+j*20, Black_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(61+i*80, 1+j*20, 80+i*80, 20+j*20, White_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
}
}
}
}
printf("EPD_Display\r\n");
EPD_1IN64G_Display(BlackImage);

View file

@ -40,8 +40,6 @@ int EPD_3in0g_test(void)
printf("e-Paper Init and Clear...\r\n");
EPD_3IN0G_Init();
printf("Black \r\n");
EPD_3IN0G_Clear(EPD_3IN0G_WHITE); // WHITE
DEV_Delay_ms(2000);
@ -57,15 +55,14 @@ int EPD_3in0g_test(void)
Paint_NewImage(BlackImage, EPD_3IN0G_WIDTH, EPD_3IN0G_HEIGHT, 0, EPD_3IN0G_WHITE);
Paint_SetScale(4);
#if 1 // show bmp
printf("show BMP-----------------\r\n");
#if 1 // show image for array
printf("show image for array\r\n");
EPD_3IN0G_Init();
Paint_SelectImage(BlackImage);
Paint_Clear(WHITE);
Paint_DrawBitMap(gImage_3in0g);
Paint_Clear(EPD_3IN0G_WHITE);
Paint_DrawBitMap(gImage_3in0g);
EPD_3IN0G_Display(BlackImage);
DEV_Delay_ms(2000);
#endif
#if 1 // Drawing on the image
@ -73,25 +70,25 @@ int EPD_3in0g_test(void)
EPD_3IN0G_Init();
printf("SelectImage:BlackImage\r\n");
Paint_SelectImage(BlackImage);
Paint_Clear(0x55);
Paint_Clear(EPD_3IN0G_WHITE);
// 2.Drawing on the image
printf("Drawing:BlackImage\r\n");
Paint_DrawPoint(10, 80, Red_4Color, DOT_PIXEL_1X1, DOT_STYLE_DFT);
Paint_DrawPoint(10, 90, Yellow_4Color, DOT_PIXEL_2X2, DOT_STYLE_DFT);
Paint_DrawPoint(10, 100, Black_4Color, DOT_PIXEL_3X3, DOT_STYLE_DFT);
Paint_DrawLine(20, 70, 70, 120, Red_4Color, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
Paint_DrawLine(70, 70, 20, 120, Red_4Color, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
Paint_DrawRectangle(20, 70, 70, 120, Yellow_4Color, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
Paint_DrawRectangle(80, 70, 130, 120, Yellow_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawCircle(45, 95, 20, Black_4Color, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
Paint_DrawCircle(105, 95, 20, Black_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawLine(85, 95, 125, 95, Red_4Color, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
Paint_DrawLine(105, 75, 105, 115, Yellow_4Color, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
Paint_DrawString_EN(10, 0, "Red, yellow, white and black", &Font16, Red_4Color, Yellow_4Color);
Paint_DrawString_EN(10, 35, "Four color e-Paper", &Font12, Yellow_4Color, Black_4Color);
Paint_DrawString_CN(10, 125, "΢ѩµç×Ó", &Font24CN, Red_4Color, White_4Color);
Paint_DrawNum(10, 50, 123456, &Font12, Red_4Color, White_4Color);
Paint_DrawPoint(10, 80, EPD_3IN0G_RED, DOT_PIXEL_1X1, DOT_STYLE_DFT);
Paint_DrawPoint(10, 90, EPD_3IN0G_YELLOW, DOT_PIXEL_2X2, DOT_STYLE_DFT);
Paint_DrawPoint(10, 100, EPD_3IN0G_BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT);
Paint_DrawLine(20, 70, 70, 120, EPD_3IN0G_RED, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
Paint_DrawLine(70, 70, 20, 120, EPD_3IN0G_RED, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
Paint_DrawRectangle(20, 70, 70, 120, EPD_3IN0G_YELLOW, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
Paint_DrawRectangle(80, 70, 130, 120, EPD_3IN0G_YELLOW, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawCircle(45, 95, 20, EPD_3IN0G_BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
Paint_DrawCircle(105, 95, 20, EPD_3IN0G_BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawLine(85, 95, 125, 95, EPD_3IN0G_RED, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
Paint_DrawLine(105, 75, 105, 115, EPD_3IN0G_YELLOW, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
Paint_DrawString_EN(10, 0, "Red, yellow, white and black", &Font16, EPD_3IN0G_RED, EPD_3IN0G_YELLOW);
Paint_DrawString_EN(10, 35, "Four color e-Paper", &Font12, EPD_3IN0G_YELLOW, EPD_3IN0G_BLACK);
Paint_DrawString_CN(10, 125, "微雪电子", &Font24CN, EPD_3IN0G_RED, EPD_3IN0G_WHITE);
Paint_DrawNum(10, 50, 123456, &Font12, EPD_3IN0G_RED, EPD_3IN0G_WHITE);
printf("EPD_Display\r\n");
EPD_3IN0G_Display(BlackImage);
@ -103,13 +100,13 @@ int EPD_3in0g_test(void)
EPD_3IN0G_Init();
printf("SelectImage:BlackImage\r\n");
Paint_SelectImage(BlackImage);
Paint_Clear(0x55);
Paint_Clear(EPD_3IN0G_WHITE);
// 2.Drawing on the image
printf("Drawing:BlackImage\r\n");
Paint_DrawRectangle(1, 1, 167, 86, Red_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(1, 314, 167, 399, Yellow_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(59, 1, 109, 399, Black_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(1, 1, 167, 86, EPD_3IN0G_RED, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(1, 314, 167, 399, EPD_3IN0G_YELLOW, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(59, 1, 109, 399, EPD_3IN0G_BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL);
printf("EPD_Display\r\n");
EPD_3IN0G_Display(BlackImage);
@ -121,34 +118,24 @@ int EPD_3in0g_test(void)
EPD_3IN0G_Init();
printf("SelectImage:BlackImage\r\n");
Paint_SelectImage(BlackImage);
Paint_Clear(0x55);
Paint_Clear(EPD_3IN0G_WHITE);
int hNumber, hWidth, vNumber, vWidth;
hNumber = 20;
hWidth = EPD_3IN0G_HEIGHT/hNumber; // 400/20=20
vNumber = 8;
vWidth = EPD_3IN0G_WIDTH/vNumber; // 168/8=21
int wNumber, lNumber;
wNumber = (EPD_3IN0G_WIDTH/80)==0 ? (EPD_3IN0G_WIDTH/80) : (EPD_3IN0G_WIDTH/80)+1;
lNumber = (EPD_3IN0G_HEIGHT/20)==0 ? (EPD_3IN0G_HEIGHT/20) : (EPD_3IN0G_HEIGHT/20)+1;
// 2.Drawing on the image
printf("Drawing:BlackImage\r\n");
for(int j=0; j<lNumber; j++) {
if(j%2 == 0) {
for(int i=0; i<wNumber; i++) {
Paint_DrawRectangle(1+i*80, 1+j*20, 20+i*80, 20+j*20, Red_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(21+i*80, 1+j*20, 40+i*80, 20+j*20, Yellow_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(41+i*80, 1+j*20, 60+i*80, 20+j*20, White_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(61+i*80, 1+j*20, 80+i*80, 20+j*20, Black_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
}
for(int i=0; i<hNumber; i++) { // horizontal
Paint_DrawRectangle(1, 1+i*hWidth, EPD_3IN0G_WIDTH, hWidth*(1+i), EPD_3IN0G_BLACK + (i % 2), DOT_PIXEL_1X1, DRAW_FILL_FULL);
}
for(int i=0; i<vNumber; i++) { // vertical
if(i%2) {
Paint_DrawRectangle(1+i*vWidth, 1, vWidth*(i+1), EPD_3IN0G_HEIGHT, EPD_3IN0G_YELLOW + (i/2%2), DOT_PIXEL_1X1, DRAW_FILL_FULL);
}
else {
for(int i=0; i<wNumber; i++) {
Paint_DrawRectangle(1+i*80, 1+j*20, 20+i*80, 20+j*20, White_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(21+i*80, 1+j*20, 40+i*80, 20+j*20, Black_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(41+i*80, 1+j*20, 60+i*80, 20+j*20, Red_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawRectangle(61+i*80, 1+j*20, 80+i*80, 20+j*20, Yellow_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
}
}
}
}
printf("EPD_Display\r\n");
EPD_3IN0G_Display(BlackImage);
DEV_Delay_ms(3000);

View file

@ -39,7 +39,7 @@ int EPD_3in52_test(void)
}
printf("e-Paper Init and Clear...\r\n");
EPD_3IN52_Init();
EPD_3IN52_Init();
EPD_3IN52_display_NUM(EPD_3IN52_WHITE);
EPD_3IN52_lut_GC();

View file

@ -0,0 +1,135 @@
/*****************************************************************************
* | File : EPD_4in37g_test.c
* | Author : Waveshare team
* | Function : 4.37inch e-Paper (G) test demo
* | Info :
*----------------
* | This version: V1.0
* | Date : 2022-08-15
* | Info :
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documnetation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
#
******************************************************************************/
#include "EPD_Test.h"
#include "EPD_4in37g.h"
int EPD_4in37g_test(void)
{
printf("EPD_4IN37G_test Demo\r\n");
if(DEV_Module_Init()!=0){
return -1;
}
printf("e-Paper Init and Clear...\r\n");
EPD_4IN37G_Init();
EPD_4IN37G_Clear(EPD_4IN37G_WHITE); // WHITE
DEV_Delay_ms(2000);
//Create a new image cache
UBYTE *BlackImage;
/* you have to edit the startup_stm32fxxx.s file and set a big enough heap size */
UWORD Imagesize = ((EPD_4IN37G_WIDTH % 4 == 0)? (EPD_4IN37G_WIDTH / 4 ): (EPD_4IN37G_WIDTH / 4 + 1)) * EPD_4IN37G_HEIGHT;
if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) {
printf("Failed to apply for black memory...\r\n");
return -1;
}
printf("Paint_NewImage\r\n");
Paint_NewImage(BlackImage, EPD_4IN37G_WIDTH, EPD_4IN37G_HEIGHT, 0, EPD_4IN37G_WHITE);
Paint_SetScale(4);
#if 1 // show image for array
printf("show image for array\r\n");
Paint_SelectImage(BlackImage);
Paint_Clear(EPD_4IN37G_WHITE);
Paint_DrawBitMap(Image4color);
EPD_4IN37G_Display(BlackImage);
DEV_Delay_ms(2000);
#endif
#if 1 // Drawing on the image
//1.Select Image
printf("SelectImage:BlackImage\r\n");
Paint_SelectImage(BlackImage);
Paint_Clear(EPD_4IN37G_WHITE);
// 2.Drawing on the image
printf("Drawing:BlackImage\r\n");
Paint_DrawPoint(10, 80, EPD_4IN37G_RED, DOT_PIXEL_1X1, DOT_STYLE_DFT);
Paint_DrawPoint(10, 90, EPD_4IN37G_YELLOW, DOT_PIXEL_2X2, DOT_STYLE_DFT);
Paint_DrawPoint(10, 100, EPD_4IN37G_BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT);
Paint_DrawLine(20, 70, 70, 120, EPD_4IN37G_RED, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
Paint_DrawLine(70, 70, 20, 120, EPD_4IN37G_RED, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
Paint_DrawRectangle(20, 70, 70, 120, EPD_4IN37G_YELLOW, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
Paint_DrawRectangle(80, 70, 130, 120, EPD_4IN37G_YELLOW, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawCircle(45, 95, 20, EPD_4IN37G_BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
Paint_DrawCircle(105, 95, 20, EPD_4IN37G_BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawLine(85, 95, 125, 95, EPD_4IN37G_YELLOW, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
Paint_DrawLine(105, 75, 105, 115, EPD_4IN37G_RED, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
Paint_DrawString_EN(10, 0, "Red, yellow, white and black", &Font20, EPD_4IN37G_YELLOW, EPD_4IN37G_WHITE);
Paint_DrawString_EN(10, 30, "Four color e-Paper", &Font12, EPD_4IN37G_RED, EPD_4IN37G_BLACK);
Paint_DrawString_CN(10, 125, "微雪电子", &Font24CN, EPD_4IN37G_WHITE, EPD_4IN37G_RED);
Paint_DrawNum(10, 50, 123456, &Font12, EPD_4IN37G_WHITE, EPD_4IN37G_BLACK);
printf("EPD_Display\r\n");
EPD_4IN37G_Display(BlackImage);
DEV_Delay_ms(3000);
#endif
#if 1 // Drawing on the image
//1.Select Image
printf("SelectImage:BlackImage\r\n");
Paint_SelectImage(BlackImage);
Paint_Clear(EPD_4IN37G_WHITE);
int hNumber, hWidth, vNumber, vWidth;
hNumber = 16;
hWidth = EPD_4IN37G_HEIGHT/hNumber; // 368/16=23
vNumber = 16;
vWidth = EPD_4IN37G_WIDTH/vNumber; // 512/16=32
// 2.Drawing on the image
printf("Drawing:BlackImage\r\n");
for(int i=0; i<hNumber; i++) { // horizontal
Paint_DrawRectangle(1, 1+i*hWidth, EPD_4IN37G_WIDTH, hWidth*(1+i), EPD_4IN37G_BLACK + (i % 2), DOT_PIXEL_1X1, DRAW_FILL_FULL);
}
for(int i=0; i<vNumber; i++) { // vertical
if(i%2) {
Paint_DrawRectangle(1+i*vWidth, 1, vWidth*(i+1), EPD_4IN37G_HEIGHT, EPD_4IN37G_YELLOW + (i/2%2), DOT_PIXEL_1X1, DRAW_FILL_FULL);
}
}
printf("EPD_Display\r\n");
EPD_4IN37G_Display(BlackImage);
DEV_Delay_ms(3000);
#endif
printf("Clear...\r\n");
EPD_4IN37G_Clear(EPD_4IN37G_WHITE);
printf("Goto Sleep...\r\n");
EPD_4IN37G_Sleep();
free(BlackImage);
BlackImage = NULL;
DEV_Delay_ms(2000);//important, at least 2s
// close 5V
printf("close 5V, Module enters 0 power consumption ...\r\n");
DEV_Module_Exit();
return 0;
}

View file

@ -40,9 +40,7 @@ int EPD_7in3g_test(void)
printf("e-Paper Init and Clear...\r\n");
EPD_7IN3G_Init();
printf("Black \r\n");
EPD_7IN3G_Clear(EPD_7IN3G_WHITE); // WHITE
EPD_7IN3G_Clear(EPD_7IN3G_WHITE);
DEV_Delay_ms(2000);
//Create a new image cache
@ -59,48 +57,41 @@ int EPD_7in3g_test(void)
Paint_NewImage(BlackImage, EPD_7IN3G_WIDTH/2, EPD_7IN3G_HEIGHT/2 , 0, EPD_7IN3G_WHITE);
Paint_SetScale(4);
#if 0 // show bmp
//Not enough memory,Not supported
printf("show BMP-----------------\r\n");
Paint_SelectImage(BlackImage);
Paint_Clear(WHITE);
Paint_DrawBitMap(gImage_7in3g);
EPD_7IN3G_Display(BlackImage);
#if 1 // show image for array
printf("show image for array\r\n");
EPD_7IN3G_Display(gImage_7in3g);
DEV_Delay_ms(2000);
#endif
#if 1 // Drawing on the image
//1.Select Image
printf("SelectImage:BlackImage\r\n");
Paint_SelectImage(BlackImage);
Paint_Clear(0x55);
Paint_Clear(EPD_7IN3G_WHITE);
// 2.Drawing on the image
printf("Drawing:BlackImage\r\n");
Paint_DrawPoint(10, 80, Red_4Color, DOT_PIXEL_1X1, DOT_STYLE_DFT);
Paint_DrawPoint(10, 90, Yellow_4Color, DOT_PIXEL_2X2, DOT_STYLE_DFT);
Paint_DrawPoint(10, 100, Black_4Color, DOT_PIXEL_3X3, DOT_STYLE_DFT);
Paint_DrawLine(20, 70, 70, 120, Red_4Color, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
Paint_DrawLine(70, 70, 20, 120, Red_4Color, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
Paint_DrawRectangle(20, 70, 70, 120, Yellow_4Color, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
Paint_DrawRectangle(80, 70, 130, 120, Yellow_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawCircle(45, 95, 20, Black_4Color, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
Paint_DrawCircle(105, 95, 20, Black_4Color, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawLine(85, 95, 125, 95, Red_4Color, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
Paint_DrawLine(105, 75, 105, 115, Yellow_4Color, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
Paint_DrawString_EN(10, 0, "Red, yellow, white and black", &Font16, Red_4Color, Yellow_4Color);
Paint_DrawString_EN(10, 35, "Four color e-Paper", &Font12, Yellow_4Color, Black_4Color);
Paint_DrawString_CN(10, 125, "΢ѩµç×Ó", &Font24CN, Red_4Color, White_4Color);
Paint_DrawNum(10, 50, 123456, &Font12, Red_4Color, White_4Color);
Paint_DrawPoint(10, 80, EPD_7IN3G_WHITE, DOT_PIXEL_1X1, DOT_STYLE_DFT);
Paint_DrawPoint(10, 90, EPD_7IN3G_YELLOW, DOT_PIXEL_2X2, DOT_STYLE_DFT);
Paint_DrawPoint(10, 100, EPD_7IN3G_BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT);
Paint_DrawLine(20, 70, 70, 120, EPD_7IN3G_WHITE, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
Paint_DrawLine(70, 70, 20, 120, EPD_7IN3G_WHITE, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
Paint_DrawRectangle(20, 70, 70, 120, EPD_7IN3G_YELLOW, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
Paint_DrawRectangle(80, 70, 130, 120, EPD_7IN3G_YELLOW, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawCircle(45, 95, 20, EPD_7IN3G_BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
Paint_DrawCircle(105, 95, 20, EPD_7IN3G_BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawLine(85, 95, 125, 95, EPD_7IN3G_WHITE, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
Paint_DrawLine(105, 75, 105, 115, EPD_7IN3G_YELLOW, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
Paint_DrawString_EN(10, 0, "Red, yellow, white and black", &Font16, EPD_7IN3G_WHITE, EPD_7IN3G_YELLOW);
Paint_DrawString_EN(10, 35, "Four color e-Paper", &Font12, EPD_7IN3G_YELLOW, EPD_7IN3G_BLACK);
Paint_DrawString_CN(10, 125, "微雪电子", &Font24CN, EPD_7IN3G_RED, EPD_7IN3G_WHITE);
Paint_DrawNum(10, 50, 123456, &Font12, EPD_7IN3G_RED, EPD_7IN3G_WHITE);
printf("EPD_Display\r\n");
EPD_7IN3G_Display_part(BlackImage, 0, 0, 400, 240);
EPD_7IN3G_Display_part(BlackImage, 200, 120, 400, 240);
DEV_Delay_ms(3000);
#endif
printf("Clear...\r\n");
EPD_7IN3G_Clear(EPD_7IN3G_WHITE);

View file

@ -38,6 +38,7 @@
int EPD_1in64g_test(void);
int EPD_3in0g_test(void);
int EPD_4in37g_test(void);
int EPD_7in3g_test(void);
int EPD_1in02d_test(void);

View file

@ -32,15 +32,15 @@
#ifndef _IMAGEDATA_H_
#define _IMAGEDATA_H_
// colour_4
extern const unsigned char gImage_1in64g[];
extern const unsigned char gImage_3in0g[];
extern const unsigned char gImage_7in3g[];
// ImageData2.c
/* --------------------------------------- */
extern const unsigned char gImage_2in13b_V4b[];
extern const unsigned char gImage_2in13b_V4r[];
extern const unsigned char gImage_1in64g[];
extern const unsigned char gImage_3in0g[];
extern const unsigned char Image4color[];
extern const unsigned char gImage_7in3g[];
/* --------------------------------------- */
// ImageData.c

File diff suppressed because it is too large Load diff

View file

@ -262,14 +262,21 @@ parameter:
******************************************************************************/
void Paint_Clear(UWORD Color)
{
if(Paint.Scale == 2 || Paint.Scale == 4){
if(Paint.Scale == 2) {
for (UWORD Y = 0; Y < Paint.HeightByte; Y++) {
for (UWORD X = 0; X < Paint.WidthByte; X++ ) {//8 pixel = 1 byte
UDOUBLE Addr = X + Y*Paint.WidthByte;
Paint.Image[Addr] = Color;
}
}
}else if(Paint.Scale == 7){
}else if(Paint.Scale == 4) {
for (UWORD Y = 0; Y < Paint.HeightByte; Y++) {
for (UWORD X = 0; X < Paint.WidthByte; X++ ) {
UDOUBLE Addr = X + Y*Paint.WidthByte;
Paint.Image[Addr] = (Color<<6)|(Color<<4)|(Color<<2)|Color;
}
}
}else if(Paint.Scale == 7) {
for (UWORD Y = 0; Y < Paint.HeightByte; Y++) {
for (UWORD X = 0; X < Paint.WidthByte; X++ ) {
UDOUBLE Addr = X + Y*Paint.WidthByte;

View file

@ -125,11 +125,6 @@ typedef enum {
#define GRAY3 0x01 //gray
#define GRAY4 0x00 //white
//colour
#define Black_4Color 0x00
#define White_4Color 0x01
#define Yellow_4Color 0x02
#define Red_4Color 0x03
/**
* The size of the point
**/

View file

@ -188,9 +188,7 @@ void EPD_1IN64G_Clear(UBYTE color)
EPD_1IN64G_SendCommand(0x10);
for (UWORD j = 0; j < Height; j++) {
for (UWORD i = 0; i < Width; i++) {
for(UBYTE k = 0; k < 4; k++) {
EPD_1IN64G_SendData(color);
}
EPD_1IN64G_SendData((color << 6) | (color << 4) | (color << 2) | color);
}
}
@ -222,6 +220,10 @@ void EPD_1IN64G_Display(UBYTE *Image)
EPD_1IN64G_SendData(Image[i + j * Width]);
}
}
EPD_1IN64G_SendCommand(0x68);
EPD_1IN64G_SendData(0x00);
EPD_1IN64G_TurnOnDisplay();
}

View file

@ -18,11 +18,11 @@
#define EPD_1IN64G_WIDTH 168
#define EPD_1IN64G_HEIGHT 168
//colour
#define EPD_1IN64G_BLACK 0x00
#define EPD_1IN64G_WHITE 0x55
#define EPD_1IN64G_YELLOW 0xAA
#define EPD_1IN64G_RED 0xFF
// Color
#define EPD_1IN64G_BLACK 0x0
#define EPD_1IN64G_WHITE 0x1
#define EPD_1IN64G_YELLOW 0x2
#define EPD_1IN64G_RED 0x3
void EPD_1IN64G_Init(void);
void EPD_1IN64G_Clear(UBYTE color);

View file

@ -177,7 +177,7 @@ void EPD_3IN0G_Clear(UBYTE color)
EPD_3IN0G_SendCommand(0x10);
for (UWORD j = 0; j < Height; j++) {
for (UWORD i = 0; i < Width; i++) {
EPD_3IN0G_SendData(color);
EPD_3IN0G_SendData((color << 6) | (color << 4) | (color << 2) | color);
}
}

View file

@ -18,11 +18,11 @@
#define EPD_3IN0G_WIDTH 168
#define EPD_3IN0G_HEIGHT 400
//colour
#define EPD_3IN0G_BLACK 0x00
#define EPD_3IN0G_WHITE 0x55
#define EPD_3IN0G_YELLOW 0xAA
#define EPD_3IN0G_RED 0xFF
// Color
#define EPD_3IN0G_BLACK 0x0
#define EPD_3IN0G_WHITE 0x1
#define EPD_3IN0G_YELLOW 0x2
#define EPD_3IN0G_RED 0x3
void EPD_3IN0G_Init(void);
void EPD_3IN0G_Clear(UBYTE color);

View file

@ -0,0 +1,240 @@
/*****************************************************************************
* | File : EPD_4in37g.h
* | Author : Waveshare team
* | Function : 4.37inch e-Paper (G)
* | Info :
*----------------
* | This version: V1.0
* | Date : 2022-08-15
* | Info :
* -----------------------------------------------------------------------------
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documnetation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
#
******************************************************************************/
#include "EPD_4in37g.h"
#include "Debug.h"
/******************************************************************************
function : Software reset
parameter:
******************************************************************************/
static void EPD_4IN37G_Reset(void)
{
DEV_Digital_Write(EPD_RST_PIN, 1);
DEV_Delay_ms(20);
DEV_Digital_Write(EPD_RST_PIN, 0);
DEV_Delay_ms(2);
DEV_Digital_Write(EPD_RST_PIN, 1);
DEV_Delay_ms(20);
}
/******************************************************************************
function : send command
parameter:
Reg : Command register
******************************************************************************/
static void EPD_4IN37G_SendCommand(UBYTE Reg)
{
DEV_Digital_Write(EPD_DC_PIN, 0);
DEV_Digital_Write(EPD_CS_PIN, 0);
DEV_SPI_WriteByte(Reg);
DEV_Digital_Write(EPD_CS_PIN, 1);
}
/******************************************************************************
function : send data
parameter:
Data : Write data
******************************************************************************/
static void EPD_4IN37G_SendData(UBYTE Data)
{
DEV_Digital_Write(EPD_DC_PIN, 1);
DEV_Digital_Write(EPD_CS_PIN, 0);
DEV_SPI_WriteByte(Data);
DEV_Digital_Write(EPD_CS_PIN, 1);
}
/******************************************************************************
function : Wait until the busy_pin goes LOW
parameter:
******************************************************************************/
static void EPD_4IN37G_ReadBusyH(void)
{
Debug("e-Paper busy H\r\n");
while(!DEV_Digital_Read(EPD_BUSY_PIN)) { //LOW: busy, HIGH: idle
DEV_Delay_ms(5);
}
Debug("e-Paper busy H release\r\n");
}
static void EPD_4IN37G_ReadBusyL(void)
{
Debug("e-Paper busy L\r\n");
while(DEV_Digital_Read(EPD_BUSY_PIN)) { //LOW: idle, HIGH: busy
DEV_Delay_ms(5);
}
Debug("e-Paper busy L release\r\n");
}
/******************************************************************************
function : Turn On Display
parameter:
******************************************************************************/
static void EPD_4IN37G_TurnOnDisplay(void)
{
EPD_4IN37G_SendCommand(0x12); // DISPLAY_REFRESH
EPD_4IN37G_SendData(0x00);
EPD_4IN37G_ReadBusyH();
EPD_4IN37G_SendCommand(0x02); // POWER_OFF
EPD_4IN37G_SendData(0X00);
EPD_4IN37G_ReadBusyH();
}
/******************************************************************************
function : Initialize the e-Paper register
parameter:
******************************************************************************/
void EPD_4IN37G_Init(void)
{
EPD_4IN37G_Reset();
EPD_4IN37G_SendCommand(0xAA);
EPD_4IN37G_SendData(0x49);
EPD_4IN37G_SendData(0x55);
EPD_4IN37G_SendData(0x20);
EPD_4IN37G_SendData(0x08);
EPD_4IN37G_SendData(0x09);
EPD_4IN37G_SendData(0x18);
EPD_4IN37G_SendCommand(0x01);
EPD_4IN37G_SendData(0x3F);
EPD_4IN37G_SendCommand(0x00);
EPD_4IN37G_SendData(0x4F);
EPD_4IN37G_SendData(0x69);
EPD_4IN37G_SendCommand(0x05);
EPD_4IN37G_SendData(0x40);
EPD_4IN37G_SendData(0x1F);
EPD_4IN37G_SendData(0x1F);
EPD_4IN37G_SendData(0x2C);
EPD_4IN37G_SendCommand(0x08);
EPD_4IN37G_SendData(0x6F);
EPD_4IN37G_SendData(0x1F);
EPD_4IN37G_SendData(0x1F);
EPD_4IN37G_SendData(0x22);
//===================
//20211212
//First setting
EPD_4IN37G_SendCommand(0x06);
EPD_4IN37G_SendData(0x6F);
EPD_4IN37G_SendData(0x1F);
EPD_4IN37G_SendData(0x17);
EPD_4IN37G_SendData(0x17);
//===================
EPD_4IN37G_SendCommand(0x03);
EPD_4IN37G_SendData(0x00);
EPD_4IN37G_SendData(0x54);
EPD_4IN37G_SendData(0x00);
EPD_4IN37G_SendData(0x44);
EPD_4IN37G_SendCommand(0x50);
EPD_4IN37G_SendData(0x3F);
EPD_4IN37G_SendCommand(0x60);
EPD_4IN37G_SendData(0x02);
EPD_4IN37G_SendData(0x00);
//Please notice that PLL must be set for version 2 IC
EPD_4IN37G_SendCommand(0x30);
EPD_4IN37G_SendData(0x08);
EPD_4IN37G_SendCommand(0x61);
EPD_4IN37G_SendData(0x02);
EPD_4IN37G_SendData(0x00);
EPD_4IN37G_SendData(0x01);
EPD_4IN37G_SendData(0x70);
EPD_4IN37G_SendCommand(0xE3);
EPD_4IN37G_SendData(0x2F);
EPD_4IN37G_SendCommand(0x84);
EPD_4IN37G_SendData(0x01);
}
/******************************************************************************
function : Clear screen
parameter:
******************************************************************************/
void EPD_4IN37G_Clear(UBYTE color)
{
UWORD Width, Height;
Width = (EPD_4IN37G_WIDTH % 4 == 0)? (EPD_4IN37G_WIDTH / 4 ): (EPD_4IN37G_WIDTH / 4 + 1);
Height = EPD_4IN37G_HEIGHT;
EPD_4IN37G_SendCommand(0x04);
EPD_4IN37G_ReadBusyH();
EPD_4IN37G_SendCommand(0x10);
for (UWORD j = 0; j < Height; j++) {
for (UWORD i = 0; i < Width; i++) {
EPD_4IN37G_SendData((color << 6) | (color << 4) | (color << 2) | color);
}
}
EPD_4IN37G_TurnOnDisplay();
}
/******************************************************************************
function : Sends the image buffer in RAM to e-Paper and displays
parameter:
******************************************************************************/
void EPD_4IN37G_Display(UBYTE *Image)
{
UWORD Width, Height;
Width = (EPD_4IN37G_WIDTH % 4 == 0)? (EPD_4IN37G_WIDTH / 4 ): (EPD_4IN37G_WIDTH / 4 + 1);
Height = EPD_4IN37G_HEIGHT;
EPD_4IN37G_SendCommand(0x04);
EPD_4IN37G_ReadBusyH();
EPD_4IN37G_SendCommand(0x10);
for (UWORD j = 0; j < Height; j++) {
for (UWORD i = 0; i < Width; i++) {
EPD_4IN37G_SendData(Image[i + j * Width]);
}
}
EPD_4IN37G_TurnOnDisplay();
}
/******************************************************************************
function : Enter sleep mode
parameter:
******************************************************************************/
void EPD_4IN37G_Sleep(void)
{
EPD_4IN37G_SendCommand(0x02); // POWER_OFF
EPD_4IN37G_SendData(0X00);
EPD_4IN37G_SendCommand(0x07); // DEEP_SLEEP
EPD_4IN37G_SendData(0XA5);
}

View file

@ -0,0 +1,51 @@
/*****************************************************************************
* | File : EPD_4in37g.c
* | Author : Waveshare team
* | Function : 4.37inch e-Paper (G)
* | Info :
*----------------
* | This version: V1.0
* | Date : 2022-08-15
* | Info :
* -----------------------------------------------------------------------------
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documnetation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
#
******************************************************************************/
#ifndef __EPD_4IN37G_H_
#define __EPD_4IN37G_H_
#include "DEV_Config.h"
// Display resolution
#define EPD_4IN37G_WIDTH 512
#define EPD_4IN37G_HEIGHT 368
// Color
#define EPD_4IN37G_BLACK 0x0
#define EPD_4IN37G_WHITE 0x1
#define EPD_4IN37G_YELLOW 0x2
#define EPD_4IN37G_RED 0x3
void EPD_4IN37G_Init(void);
void EPD_4IN37G_Clear(UBYTE color);
void EPD_4IN37G_Display(UBYTE *Image);
void EPD_4IN37G_Sleep(void);
#endif

View file

@ -132,7 +132,6 @@ void EPD_7IN3G_Init(void)
EPD_7IN3G_SendData(0x4F);
EPD_7IN3G_SendData(0x69);
EPD_7IN3G_SendCommand(0x05);
EPD_7IN3G_SendData(0x40);
EPD_7IN3G_SendData(0x1F);
@ -168,9 +167,6 @@ void EPD_7IN3G_Init(void)
EPD_7IN3G_SendCommand(0x30);
EPD_7IN3G_SendData(0x08);
EPD_7IN3G_SendCommand(0x50);
EPD_7IN3G_SendData(0x3F);
@ -203,7 +199,7 @@ void EPD_7IN3G_Clear(UBYTE color)
EPD_7IN3G_SendCommand(0x10);
for (UWORD j = 0; j < Height; j++) {
for (UWORD i = 0; i < Width; i++) {
EPD_7IN3G_SendData(color);
EPD_7IN3G_SendData((color << 6) | (color << 4) | (color << 2) | color);
}
}
@ -214,7 +210,7 @@ void EPD_7IN3G_Clear(UBYTE color)
function : Sends the image buffer in RAM to e-Paper and displays
parameter:
******************************************************************************/
void EPD_7IN3G_Display(UBYTE *Image)
void EPD_7IN3G_Display(const UBYTE *Image)
{
UWORD Width, Height;
Width = (EPD_7IN3G_WIDTH % 4 == 0)? (EPD_7IN3G_WIDTH / 4 ): (EPD_7IN3G_WIDTH / 4 + 1);
@ -232,7 +228,7 @@ void EPD_7IN3G_Display(UBYTE *Image)
EPD_7IN3G_TurnOnDisplay();
}
void EPD_7IN3G_Display_part(UBYTE *Image, UWORD xstart, UWORD ystart, UWORD image_width, UWORD image_heigh)
void EPD_7IN3G_Display_part(UBYTE *Image, UWORD xstart, UWORD ystart, UWORD image_width, UWORD image_height)
{
UWORD Width, Height;
Width = (EPD_7IN3G_WIDTH % 4 == 0)? (EPD_7IN3G_WIDTH / 4 ): (EPD_7IN3G_WIDTH / 4 + 1);
@ -244,7 +240,7 @@ void EPD_7IN3G_Display_part(UBYTE *Image, UWORD xstart, UWORD ystart, UWORD imag
EPD_7IN3G_SendCommand(0x10);
for (UWORD i = 0; i < Height; i++) {
for (UWORD j = 0; j < Width; j++) {
if(i<image_heigh+ystart && i>=ystart && j<(image_width+xstart)/4 && j>=xstart/4) {
if(i<image_height+ystart && i>=ystart && j<(image_width+xstart)/4 && j>=xstart/4) {
EPD_7IN3G_SendData(Image[(j-xstart/4) + (image_width/4*(i-ystart))]);
}
else

View file

@ -38,16 +38,16 @@
#define EPD_7IN3G_WIDTH 800
#define EPD_7IN3G_HEIGHT 480
//colour
#define EPD_7IN3G_BLACK 0x00
#define EPD_7IN3G_WHITE 0x55
#define EPD_7IN3G_YELLOW 0xAA
#define EPD_7IN3G_RED 0xFF
// Color
#define EPD_7IN3G_BLACK 0x0
#define EPD_7IN3G_WHITE 0x1
#define EPD_7IN3G_YELLOW 0x2
#define EPD_7IN3G_RED 0x3
void EPD_7IN3G_Init(void);
void EPD_7IN3G_Clear(UBYTE color);
void EPD_7IN3G_Display(UBYTE *Image);
void EPD_7IN3G_Display_part(UBYTE *Image, UWORD xstart, UWORD ystart, UWORD image_width, UWORD image_heigh);
void EPD_7IN3G_Display(const UBYTE *Image);
void EPD_7IN3G_Display_part(UBYTE *Image, UWORD xstart, UWORD ystart, UWORD image_width, UWORD image_height);
void EPD_7IN3G_Sleep(void);
#endif