瀏覽代碼

Merge pull request #213 from SSYYL/master

Added the function of pasting image data to buffer (STM32)
SSYYL 3 年之前
父節點
當前提交
72370cb1f2

+ 5 - 0
.vscode/settings.json

@@ -0,0 +1,5 @@
+{
+    "files.associations": {
+        "imagedata.h": "c"
+    }
+}

文件差異過大導致無法顯示
+ 20 - 20
STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.qiumingsong


+ 1 - 1
STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx

@@ -1303,7 +1303,7 @@
 
 
   <Group>
   <Group>
     <GroupName>GUI</GroupName>
     <GroupName>GUI</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
     <RteFlg>0</RteFlg>

+ 4 - 3
STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm

@@ -27,9 +27,10 @@ Project File Date:  11/01/2021
 <h2>Output:</h2>
 <h2>Output:</h2>
 *** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\Program Files\keil5\ARM\ARMCC\Bin'
 *** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\Program Files\keil5\ARM\ARMCC\Bin'
 Build target 'epd-demo'
 Build target 'epd-demo'
-compiling main.c...
+compiling EPD_2in66_test.c...
+compiling GUI_Paint.c...
 linking...
 linking...
-Program Size: Code=18544 RO-data=360 RW-data=20 ZI-data=4252  
+Program Size: Code=24312 RO-data=21000 RW-data=76 ZI-data=41140  
 FromELF: creating hex file...
 FromELF: creating hex file...
 "epd-demo\epd-demo.axf" - 0 Error(s), 0 Warning(s).
 "epd-demo\epd-demo.axf" - 0 Error(s), 0 Warning(s).
 
 
@@ -54,7 +55,7 @@ Package Vendor: Keil
 <h2>Collection of Component Files used:</h2>
 <h2>Collection of Component Files used:</h2>
 
 
    * Component: ARM::CMSIS:CORE:5.4.0
    * Component: ARM::CMSIS:CORE:5.4.0
-Build Time Elapsed:  00:00:02
+Build Time Elapsed:  00:00:03
 </pre>
 </pre>
 </body>
 </body>
 </html>
 </html>

文件差異過大導致無法顯示
+ 718 - 361
STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm


+ 454 - 355
STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map

@@ -16,6 +16,7 @@ Section Cross References
     main.o(.text) refers to gpio.o(.text) for MX_GPIO_Init
     main.o(.text) refers to gpio.o(.text) for MX_GPIO_Init
     main.o(.text) refers to usart.o(.text) for MX_USART1_UART_Init
     main.o(.text) refers to usart.o(.text) for MX_USART1_UART_Init
     main.o(.text) refers to spi.o(.text) for MX_SPI1_Init
     main.o(.text) refers to spi.o(.text) for MX_SPI1_Init
+    main.o(.text) refers to epd_2in66_test.o(.text) for EPD_2in66_test
     gpio.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin
     gpio.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin
     spi.o(.text) refers to stm32f1xx_hal_spi.o(.text) for HAL_SPI_Init
     spi.o(.text) refers to stm32f1xx_hal_spi.o(.text) for HAL_SPI_Init
     spi.o(.text) refers to main.o(.text) for Error_Handler
     spi.o(.text) refers to main.o(.text) for Error_Handler
@@ -270,6 +271,7 @@ Section Cross References
     epd_2in66_test.o(.text) refers to gui_paint.o(.text) for Paint_NewImage
     epd_2in66_test.o(.text) refers to gui_paint.o(.text) for Paint_NewImage
     epd_2in66_test.o(.text) refers to malloc.o(i.free) for free
     epd_2in66_test.o(.text) refers to malloc.o(i.free) for free
     epd_2in66_test.o(.text) refers to imagedata.o(.constdata) for gImage_2in66
     epd_2in66_test.o(.text) refers to imagedata.o(.constdata) for gImage_2in66
+    epd_2in66_test.o(.text) refers to imagedata.o(.constdata) for gImage_100X50
     epd_2in66_test.o(.text) refers to font16.o(.data) for Font16
     epd_2in66_test.o(.text) refers to font16.o(.data) for Font16
     epd_2in66_test.o(.text) refers to font12.o(.data) for Font12
     epd_2in66_test.o(.text) refers to font12.o(.data) for Font12
     epd_2in66_test.o(.text) refers to font12cn.o(.data) for Font12CN
     epd_2in66_test.o(.text) refers to font12cn.o(.data) for Font12CN
@@ -1011,7 +1013,6 @@ Section Cross References
 
 
 Removing Unused input sections from the image.
 Removing Unused input sections from the image.
 
 
-    Removing startup_stm32f103xe.o(HEAP), (36864 bytes).
     Removing main.o(.rev16_text), (4 bytes).
     Removing main.o(.rev16_text), (4 bytes).
     Removing main.o(.revsh_text), (4 bytes).
     Removing main.o(.revsh_text), (4 bytes).
     Removing main.o(.rrx_text), (6 bytes).
     Removing main.o(.rrx_text), (6 bytes).
@@ -1053,7 +1054,6 @@ Removing Unused input sections from the image.
     Removing imagedata.o(.constdata), (2756 bytes).
     Removing imagedata.o(.constdata), (2756 bytes).
     Removing imagedata.o(.constdata), (5630 bytes).
     Removing imagedata.o(.constdata), (5630 bytes).
     Removing imagedata.o(.constdata), (5630 bytes).
     Removing imagedata.o(.constdata), (5630 bytes).
-    Removing imagedata.o(.constdata), (5630 bytes).
     Removing imagedata.o(.constdata), (33606 bytes).
     Removing imagedata.o(.constdata), (33606 bytes).
     Removing imagedata.o(.constdata), (128000 bytes).
     Removing imagedata.o(.constdata), (128000 bytes).
     Removing imagedata.o(.constdata), (15000 bytes).
     Removing imagedata.o(.constdata), (15000 bytes).
@@ -1152,7 +1152,6 @@ Removing Unused input sections from the image.
     Removing epd_2in66_test.o(.rev16_text), (4 bytes).
     Removing epd_2in66_test.o(.rev16_text), (4 bytes).
     Removing epd_2in66_test.o(.revsh_text), (4 bytes).
     Removing epd_2in66_test.o(.revsh_text), (4 bytes).
     Removing epd_2in66_test.o(.rrx_text), (6 bytes).
     Removing epd_2in66_test.o(.rrx_text), (6 bytes).
-    Removing epd_2in66_test.o(.text), (1032 bytes).
     Removing epd_2in66b_test.o(.rev16_text), (4 bytes).
     Removing epd_2in66b_test.o(.rev16_text), (4 bytes).
     Removing epd_2in66b_test.o(.revsh_text), (4 bytes).
     Removing epd_2in66b_test.o(.revsh_text), (4 bytes).
     Removing epd_2in66b_test.o(.rrx_text), (6 bytes).
     Removing epd_2in66b_test.o(.rrx_text), (6 bytes).
@@ -1322,8 +1321,6 @@ Removing Unused input sections from the image.
     Removing epd_2in66.o(.rev16_text), (4 bytes).
     Removing epd_2in66.o(.rev16_text), (4 bytes).
     Removing epd_2in66.o(.revsh_text), (4 bytes).
     Removing epd_2in66.o(.revsh_text), (4 bytes).
     Removing epd_2in66.o(.rrx_text), (6 bytes).
     Removing epd_2in66.o(.rrx_text), (6 bytes).
-    Removing epd_2in66.o(.text), (704 bytes).
-    Removing epd_2in66.o(.constdata), (159 bytes).
     Removing epd_2in66b.o(.rev16_text), (4 bytes).
     Removing epd_2in66b.o(.rev16_text), (4 bytes).
     Removing epd_2in66b.o(.revsh_text), (4 bytes).
     Removing epd_2in66b.o(.revsh_text), (4 bytes).
     Removing epd_2in66b.o(.rrx_text), (6 bytes).
     Removing epd_2in66b.o(.rrx_text), (6 bytes).
@@ -1398,27 +1395,13 @@ Removing Unused input sections from the image.
     Removing dev_config.o(.rev16_text), (4 bytes).
     Removing dev_config.o(.rev16_text), (4 bytes).
     Removing dev_config.o(.revsh_text), (4 bytes).
     Removing dev_config.o(.revsh_text), (4 bytes).
     Removing dev_config.o(.rrx_text), (6 bytes).
     Removing dev_config.o(.rrx_text), (6 bytes).
-    Removing dev_config.o(.text), (104 bytes).
     Removing gui_paint.o(.rev16_text), (4 bytes).
     Removing gui_paint.o(.rev16_text), (4 bytes).
     Removing gui_paint.o(.revsh_text), (4 bytes).
     Removing gui_paint.o(.revsh_text), (4 bytes).
     Removing gui_paint.o(.rrx_text), (6 bytes).
     Removing gui_paint.o(.rrx_text), (6 bytes).
-    Removing gui_paint.o(.text), (3588 bytes).
-    Removing gui_paint.o(.bss), (24 bytes).
-    Removing gui_paint.o(.conststring), (236 bytes).
     Removing font8.o(.constdata), (760 bytes).
     Removing font8.o(.constdata), (760 bytes).
     Removing font8.o(.data), (8 bytes).
     Removing font8.o(.data), (8 bytes).
-    Removing font12.o(.constdata), (1140 bytes).
-    Removing font12.o(.data), (8 bytes).
-    Removing font12cn.o(.constdata), (1494 bytes).
-    Removing font12cn.o(.data), (12 bytes).
-    Removing font16.o(.constdata), (3040 bytes).
-    Removing font16.o(.data), (8 bytes).
-    Removing font20.o(.constdata), (3800 bytes).
-    Removing font20.o(.data), (8 bytes).
     Removing font24.o(.constdata), (6840 bytes).
     Removing font24.o(.constdata), (6840 bytes).
     Removing font24.o(.data), (8 bytes).
     Removing font24.o(.data), (8 bytes).
-    Removing font24cn.o(.constdata), (4482 bytes).
-    Removing font24cn.o(.data), (12 bytes).
     Removing system_stm32f1xx.o(.rev16_text), (4 bytes).
     Removing system_stm32f1xx.o(.rev16_text), (4 bytes).
     Removing system_stm32f1xx.o(.revsh_text), (4 bytes).
     Removing system_stm32f1xx.o(.revsh_text), (4 bytes).
     Removing system_stm32f1xx.o(.rrx_text), (6 bytes).
     Removing system_stm32f1xx.o(.rrx_text), (6 bytes).
@@ -1481,7 +1464,7 @@ Removing Unused input sections from the image.
     Removing cdrcmple.o(.text), (48 bytes).
     Removing cdrcmple.o(.text), (48 bytes).
     Removing depilogue.o(.text), (186 bytes).
     Removing depilogue.o(.text), (186 bytes).
 
 
-469 unused section(s) (total 961251 bytes) removed from the image.
+450 unused section(s) (total 898906 bytes) removed from the image.
 
 
 ==============================================================================
 ==============================================================================
 
 
@@ -1515,38 +1498,38 @@ Image Symbol Table
     ../Src/usart.c                           0x00000000   Number         0  usart.o ABSOLUTE
     ../Src/usart.c                           0x00000000   Number         0  usart.o ABSOLUTE
     ../clib/microlib/division.c              0x00000000   Number         0  uldiv.o ABSOLUTE
     ../clib/microlib/division.c              0x00000000   Number         0  uldiv.o ABSOLUTE
     ../clib/microlib/division.c              0x00000000   Number         0  uidiv.o ABSOLUTE
     ../clib/microlib/division.c              0x00000000   Number         0  uidiv.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry10a.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry10b.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry9b.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry9b.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry9a.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry7a.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry7a.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry2.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry2.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry5.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry8a.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry7b.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry8b.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry8b.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry8a.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry11a.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry11a.o ABSOLUTE
-    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry10b.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry11b.o ABSOLUTE
     ../clib/microlib/init/entry.s            0x00000000   Number         0  entry11b.o ABSOLUTE
-    ../clib/microlib/longlong.c              0x00000000   Number         0  llshl.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry5.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry9a.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry7b.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry.o ABSOLUTE
+    ../clib/microlib/init/entry.s            0x00000000   Number         0  entry10a.o ABSOLUTE
     ../clib/microlib/longlong.c              0x00000000   Number         0  llushr.o ABSOLUTE
     ../clib/microlib/longlong.c              0x00000000   Number         0  llushr.o ABSOLUTE
+    ../clib/microlib/longlong.c              0x00000000   Number         0  llshl.o ABSOLUTE
     ../clib/microlib/longlong.c              0x00000000   Number         0  llsshr.o ABSOLUTE
     ../clib/microlib/longlong.c              0x00000000   Number         0  llsshr.o ABSOLUTE
     ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  malloca.o ABSOLUTE
     ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  malloca.o ABSOLUTE
     ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  mallocra.o ABSOLUTE
     ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  mallocra.o ABSOLUTE
     ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  mallocr.o ABSOLUTE
     ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  mallocr.o ABSOLUTE
     ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  malloc.o ABSOLUTE
     ../clib/microlib/malloc/malloc.c         0x00000000   Number         0  malloc.o ABSOLUTE
     ../clib/microlib/malloc/mvars.c          0x00000000   Number         0  mvars.o ABSOLUTE
     ../clib/microlib/malloc/mvars.c          0x00000000   Number         0  mvars.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf1.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf0.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf0.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printfb.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf6.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf1.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf5.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf5.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printfa.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf8.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf7.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf4.o ABSOLUTE
-    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf3.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf2.o ABSOLUTE
     ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf2.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf3.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf4.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf6.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printfb.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf7.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printf8.o ABSOLUTE
+    ../clib/microlib/printf/printf.c         0x00000000   Number         0  printfa.o ABSOLUTE
     ../clib/microlib/printf/stubs.s          0x00000000   Number         0  stubs.o ABSOLUTE
     ../clib/microlib/printf/stubs.s          0x00000000   Number         0  stubs.o ABSOLUTE
     ../clib/microlib/stdio/streams.c         0x00000000   Number         0  stdout.o ABSOLUTE
     ../clib/microlib/stdio/streams.c         0x00000000   Number         0  stdout.o ABSOLUTE
     ../clib/microlib/string/memcpy.c         0x00000000   Number         0  memcpyb.o ABSOLUTE
     ../clib/microlib/string/memcpy.c         0x00000000   Number         0  memcpyb.o ABSOLUTE
@@ -1762,81 +1745,109 @@ Image Symbol Table
     __lit__00000000                          0x08000140   Data           4  entry2.o(.ARM.Collect$$$$00002712)
     __lit__00000000                          0x08000140   Data           4  entry2.o(.ARM.Collect$$$$00002712)
     .text                                    0x08000144   Section       36  startup_stm32f103xe.o(.text)
     .text                                    0x08000144   Section       36  startup_stm32f103xe.o(.text)
     .text                                    0x08000168   Section        0  main.o(.text)
     .text                                    0x08000168   Section        0  main.o(.text)
-    .text                                    0x080001fc   Section        0  gpio.o(.text)
-    .text                                    0x0800025c   Section        0  spi.o(.text)
-    .text                                    0x08000318   Section        0  usart.o(.text)
-    .text                                    0x080003f0   Section        0  stm32f1xx_it.o(.text)
-    .text                                    0x08000420   Section        0  stm32f1xx_hal_msp.o(.text)
-    .text                                    0x0800045c   Section        0  system_stm32f1xx.o(.text)
-    .text                                    0x08000520   Section        0  stm32f1xx_hal_spi.o(.text)
-    SPI_WaitFlagStateUntilTimeout            0x08000609   Thumb Code   210  stm32f1xx_hal_spi.o(.text)
-    SPI_EndRxTxTransaction                   0x080006db   Thumb Code    36  stm32f1xx_hal_spi.o(.text)
-    SPI_EndRxTransaction                     0x0800089b   Thumb Code   112  stm32f1xx_hal_spi.o(.text)
-    SPI_CloseTx_ISR                          0x08000c7b   Thumb Code   130  stm32f1xx_hal_spi.o(.text)
-    SPI_TxISR_8BIT                           0x08000cfd   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
-    SPI_TxISR_16BIT                          0x08000d1b   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
-    SPI_CloseRx_ISR                          0x08000ddd   Thumb Code    76  stm32f1xx_hal_spi.o(.text)
-    SPI_RxISR_8BIT                           0x08000e29   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
-    SPI_RxISR_16BIT                          0x08000e47   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
-    SPI_CloseRxTx_ISR                        0x08000e67   Thumb Code   158  stm32f1xx_hal_spi.o(.text)
-    SPI_2linesTxISR_8BIT                     0x08000f05   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
-    SPI_2linesRxISR_8BIT                     0x08000f33   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
-    SPI_2linesTxISR_16BIT                    0x08000f61   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
-    SPI_2linesRxISR_16BIT                    0x08000f8f   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
-    SPI_DMAError                             0x08001129   Thumb Code    34  stm32f1xx_hal_spi.o(.text)
-    SPI_DMATransmitCplt                      0x0800114b   Thumb Code   102  stm32f1xx_hal_spi.o(.text)
-    SPI_DMAHalfTransmitCplt                  0x080011b3   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
-    SPI_DMAReceiveCplt                       0x0800128d   Thumb Code   110  stm32f1xx_hal_spi.o(.text)
-    SPI_DMAHalfReceiveCplt                   0x080012fd   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
-    SPI_DMATransmitReceiveCplt               0x08001307   Thumb Code    92  stm32f1xx_hal_spi.o(.text)
-    SPI_DMAHalfTransmitReceiveCplt           0x08001365   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
-    SPI_AbortRx_ISR                          0x080015b3   Thumb Code    82  stm32f1xx_hal_spi.o(.text)
-    SPI_AbortTx_ISR                          0x08001605   Thumb Code    28  stm32f1xx_hal_spi.o(.text)
-    SPI_DMARxAbortCallback                   0x08001745   Thumb Code    98  stm32f1xx_hal_spi.o(.text)
-    SPI_DMATxAbortCallback                   0x080017a7   Thumb Code   114  stm32f1xx_hal_spi.o(.text)
-    SPI_DMAAbortOnError                      0x080019f1   Thumb Code    16  stm32f1xx_hal_spi.o(.text)
-    .text                                    0x08001b08   Section        0  stm32f1xx_hal.o(.text)
-    .text                                    0x08001c90   Section        0  stm32f1xx_hal_rcc.o(.text)
-    RCC_Delay                                0x08001d8b   Thumb Code    32  stm32f1xx_hal_rcc.o(.text)
-    .text                                    0x08002558   Section        0  stm32f1xx_hal_gpio.o(.text)
-    .text                                    0x0800292c   Section        0  stm32f1xx_hal_dma.o(.text)
-    DMA_SetConfig                            0x08002a3b   Thumb Code    56  stm32f1xx_hal_dma.o(.text)
-    .text                                    0x08003574   Section        0  stm32f1xx_hal_cortex.o(.text)
-    .text                                    0x08003798   Section        0  stm32f1xx_hal_uart.o(.text)
-    UART_SetConfig                           0x08003799   Thumb Code   194  stm32f1xx_hal_uart.o(.text)
-    UART_WaitOnFlagUntilTimeout              0x08003a79   Thumb Code   120  stm32f1xx_hal_uart.o(.text)
-    UART_EndRxTransfer                       0x08003d29   Thumb Code    28  stm32f1xx_hal_uart.o(.text)
-    UART_EndTxTransfer                       0x08003d45   Thumb Code    18  stm32f1xx_hal_uart.o(.text)
-    UART_DMAError                            0x08003d57   Thumb Code    74  stm32f1xx_hal_uart.o(.text)
-    UART_DMATxHalfCplt                       0x08003da3   Thumb Code    10  stm32f1xx_hal_uart.o(.text)
-    UART_DMATransmitCplt                     0x08003daf   Thumb Code    48  stm32f1xx_hal_uart.o(.text)
-    UART_DMARxHalfCplt                       0x08003e6b   Thumb Code    10  stm32f1xx_hal_uart.o(.text)
-    UART_DMAReceiveCplt                      0x08003e77   Thumb Code    62  stm32f1xx_hal_uart.o(.text)
-    UART_DMARxAbortCallback                  0x080041ab   Thumb Code    44  stm32f1xx_hal_uart.o(.text)
-    UART_DMATxAbortCallback                  0x080041d7   Thumb Code    66  stm32f1xx_hal_uart.o(.text)
-    UART_DMATxOnlyAbortCallback              0x080042cd   Thumb Code    20  stm32f1xx_hal_uart.o(.text)
-    UART_DMARxOnlyAbortCallback              0x08004341   Thumb Code    20  stm32f1xx_hal_uart.o(.text)
-    UART_EndTransmit_IT                      0x080043bd   Thumb Code    26  stm32f1xx_hal_uart.o(.text)
-    UART_Transmit_IT                         0x080043d7   Thumb Code    94  stm32f1xx_hal_uart.o(.text)
-    UART_DMAAbortOnError                     0x08004435   Thumb Code    16  stm32f1xx_hal_uart.o(.text)
-    UART_Receive_IT                          0x08004445   Thumb Code   146  stm32f1xx_hal_uart.o(.text)
-    .text                                    0x08004734   Section        0  memseta.o(.text)
-    .text                                    0x08004758   Section        0  uidiv.o(.text)
-    .text                                    0x08004784   Section       36  init.o(.text)
-    i.__0printf$3                            0x080047a8   Section        0  printf3.o(i.__0printf$3)
-    i.__scatterload_copy                     0x080047c8   Section       14  handlers.o(i.__scatterload_copy)
-    i.__scatterload_null                     0x080047d6   Section        2  handlers.o(i.__scatterload_null)
-    i.__scatterload_zeroinit                 0x080047d8   Section       14  handlers.o(i.__scatterload_zeroinit)
-    i._printf_core                           0x080047e8   Section        0  printf3.o(i._printf_core)
-    _printf_core                             0x080047e9   Thumb Code   436  printf3.o(i._printf_core)
-    .constdata                               0x080049a0   Section       16  system_stm32f1xx.o(.constdata)
-    .constdata                               0x080049b0   Section        8  system_stm32f1xx.o(.constdata)
-    .data                                    0x20000000   Section        4  system_stm32f1xx.o(.data)
-    .data                                    0x20000004   Section       12  stm32f1xx_hal.o(.data)
-    .data                                    0x20000010   Section        4  stdout.o(.data)
-    .bss                                     0x20000014   Section       88  spi.o(.bss)
-    .bss                                     0x2000006c   Section       64  usart.o(.bss)
-    STACK                                    0x200000b0   Section     4096  startup_stm32f103xe.o(STACK)
+    .text                                    0x08000200   Section        0  gpio.o(.text)
+    .text                                    0x08000260   Section        0  spi.o(.text)
+    .text                                    0x0800031c   Section        0  usart.o(.text)
+    .text                                    0x080003f4   Section        0  stm32f1xx_it.o(.text)
+    .text                                    0x08000424   Section        0  stm32f1xx_hal_msp.o(.text)
+    .text                                    0x08000460   Section        0  epd_2in66_test.o(.text)
+    .text                                    0x08000890   Section        0  epd_2in66.o(.text)
+    EPD_2IN66_Reset                          0x08000891   Thumb Code    56  epd_2in66.o(.text)
+    EPD_2IN66_SendCommand                    0x08000aa7   Thumb Code    46  epd_2in66.o(.text)
+    EPD_2IN66_SendData                       0x08000ad5   Thumb Code    46  epd_2in66.o(.text)
+    EPD_2IN66_TurnOnDisplay                  0x08000b03   Thumb Code    14  epd_2in66.o(.text)
+    .text                                    0x08000b50   Section        0  dev_config.o(.text)
+    .text                                    0x08000bb8   Section        0  gui_paint.o(.text)
+    .text                                    0x08001a28   Section        0  system_stm32f1xx.o(.text)
+    .text                                    0x08001aec   Section        0  stm32f1xx_hal_spi.o(.text)
+    SPI_WaitFlagStateUntilTimeout            0x08001bd5   Thumb Code   210  stm32f1xx_hal_spi.o(.text)
+    SPI_EndRxTxTransaction                   0x08001ca7   Thumb Code    36  stm32f1xx_hal_spi.o(.text)
+    SPI_EndRxTransaction                     0x08001e67   Thumb Code   112  stm32f1xx_hal_spi.o(.text)
+    SPI_CloseTx_ISR                          0x08002247   Thumb Code   130  stm32f1xx_hal_spi.o(.text)
+    SPI_TxISR_8BIT                           0x080022c9   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
+    SPI_TxISR_16BIT                          0x080022e7   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
+    SPI_CloseRx_ISR                          0x080023a9   Thumb Code    76  stm32f1xx_hal_spi.o(.text)
+    SPI_RxISR_8BIT                           0x080023f5   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
+    SPI_RxISR_16BIT                          0x08002413   Thumb Code    30  stm32f1xx_hal_spi.o(.text)
+    SPI_CloseRxTx_ISR                        0x08002433   Thumb Code   158  stm32f1xx_hal_spi.o(.text)
+    SPI_2linesTxISR_8BIT                     0x080024d1   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
+    SPI_2linesRxISR_8BIT                     0x080024ff   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
+    SPI_2linesTxISR_16BIT                    0x0800252d   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
+    SPI_2linesRxISR_16BIT                    0x0800255b   Thumb Code    46  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAError                             0x080026f5   Thumb Code    34  stm32f1xx_hal_spi.o(.text)
+    SPI_DMATransmitCplt                      0x08002717   Thumb Code   102  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAHalfTransmitCplt                  0x0800277f   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAReceiveCplt                       0x08002859   Thumb Code   110  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAHalfReceiveCplt                   0x080028c9   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
+    SPI_DMATransmitReceiveCplt               0x080028d3   Thumb Code    92  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAHalfTransmitReceiveCplt           0x08002931   Thumb Code    10  stm32f1xx_hal_spi.o(.text)
+    SPI_AbortRx_ISR                          0x08002b7f   Thumb Code    82  stm32f1xx_hal_spi.o(.text)
+    SPI_AbortTx_ISR                          0x08002bd1   Thumb Code    28  stm32f1xx_hal_spi.o(.text)
+    SPI_DMARxAbortCallback                   0x08002d11   Thumb Code    98  stm32f1xx_hal_spi.o(.text)
+    SPI_DMATxAbortCallback                   0x08002d73   Thumb Code   114  stm32f1xx_hal_spi.o(.text)
+    SPI_DMAAbortOnError                      0x08002fbd   Thumb Code    16  stm32f1xx_hal_spi.o(.text)
+    .text                                    0x080030d4   Section        0  stm32f1xx_hal.o(.text)
+    .text                                    0x0800325c   Section        0  stm32f1xx_hal_rcc.o(.text)
+    RCC_Delay                                0x08003357   Thumb Code    32  stm32f1xx_hal_rcc.o(.text)
+    .text                                    0x08003b24   Section        0  stm32f1xx_hal_gpio.o(.text)
+    .text                                    0x08003ef8   Section        0  stm32f1xx_hal_dma.o(.text)
+    DMA_SetConfig                            0x08004007   Thumb Code    56  stm32f1xx_hal_dma.o(.text)
+    .text                                    0x08004b40   Section        0  stm32f1xx_hal_cortex.o(.text)
+    .text                                    0x08004d64   Section        0  stm32f1xx_hal_uart.o(.text)
+    UART_SetConfig                           0x08004d65   Thumb Code   194  stm32f1xx_hal_uart.o(.text)
+    UART_WaitOnFlagUntilTimeout              0x08005045   Thumb Code   120  stm32f1xx_hal_uart.o(.text)
+    UART_EndRxTransfer                       0x080052f5   Thumb Code    28  stm32f1xx_hal_uart.o(.text)
+    UART_EndTxTransfer                       0x08005311   Thumb Code    18  stm32f1xx_hal_uart.o(.text)
+    UART_DMAError                            0x08005323   Thumb Code    74  stm32f1xx_hal_uart.o(.text)
+    UART_DMATxHalfCplt                       0x0800536f   Thumb Code    10  stm32f1xx_hal_uart.o(.text)
+    UART_DMATransmitCplt                     0x0800537b   Thumb Code    48  stm32f1xx_hal_uart.o(.text)
+    UART_DMARxHalfCplt                       0x08005437   Thumb Code    10  stm32f1xx_hal_uart.o(.text)
+    UART_DMAReceiveCplt                      0x08005443   Thumb Code    62  stm32f1xx_hal_uart.o(.text)
+    UART_DMARxAbortCallback                  0x08005777   Thumb Code    44  stm32f1xx_hal_uart.o(.text)
+    UART_DMATxAbortCallback                  0x080057a3   Thumb Code    66  stm32f1xx_hal_uart.o(.text)
+    UART_DMATxOnlyAbortCallback              0x08005899   Thumb Code    20  stm32f1xx_hal_uart.o(.text)
+    UART_DMARxOnlyAbortCallback              0x0800590d   Thumb Code    20  stm32f1xx_hal_uart.o(.text)
+    UART_EndTransmit_IT                      0x08005989   Thumb Code    26  stm32f1xx_hal_uart.o(.text)
+    UART_Transmit_IT                         0x080059a3   Thumb Code    94  stm32f1xx_hal_uart.o(.text)
+    UART_DMAAbortOnError                     0x08005a01   Thumb Code    16  stm32f1xx_hal_uart.o(.text)
+    UART_Receive_IT                          0x08005a11   Thumb Code   146  stm32f1xx_hal_uart.o(.text)
+    .text                                    0x08005d00   Section        0  memseta.o(.text)
+    .text                                    0x08005d24   Section        0  uidiv.o(.text)
+    .text                                    0x08005d50   Section       36  init.o(.text)
+    i.__0printf$3                            0x08005d74   Section        0  printf3.o(i.__0printf$3)
+    i.__scatterload_copy                     0x08005d94   Section       14  handlers.o(i.__scatterload_copy)
+    i.__scatterload_null                     0x08005da2   Section        2  handlers.o(i.__scatterload_null)
+    i.__scatterload_zeroinit                 0x08005da4   Section       14  handlers.o(i.__scatterload_zeroinit)
+    i._printf_core                           0x08005db4   Section        0  printf3.o(i._printf_core)
+    _printf_core                             0x08005db5   Thumb Code   436  printf3.o(i._printf_core)
+    i.free                                   0x08005f6c   Section        0  malloc.o(i.free)
+    i.malloc                                 0x08005fbc   Section        0  malloc.o(i.malloc)
+    .constdata                               0x08006028   Section      656  imagedata.o(.constdata)
+    .constdata                               0x080062b8   Section     5630  imagedata.o(.constdata)
+    .constdata                               0x080078b6   Section      159  epd_2in66.o(.constdata)
+    .constdata                               0x08007955   Section     1140  font12.o(.constdata)
+    .constdata                               0x08007dc9   Section     1494  font12cn.o(.constdata)
+    .constdata                               0x0800839f   Section     3040  font16.o(.constdata)
+    .constdata                               0x08008f7f   Section     3800  font20.o(.constdata)
+    .constdata                               0x08009e57   Section     4482  font24cn.o(.constdata)
+    .constdata                               0x0800afd9   Section       16  system_stm32f1xx.o(.constdata)
+    .constdata                               0x0800afe9   Section        8  system_stm32f1xx.o(.constdata)
+    .conststring                             0x0800aff4   Section      233  gui_paint.o(.conststring)
+    .data                                    0x20000000   Section        8  font12.o(.data)
+    .data                                    0x20000008   Section       12  font12cn.o(.data)
+    .data                                    0x20000014   Section        8  font16.o(.data)
+    .data                                    0x2000001c   Section        8  font20.o(.data)
+    .data                                    0x20000024   Section       12  font24cn.o(.data)
+    .data                                    0x20000030   Section        4  system_stm32f1xx.o(.data)
+    .data                                    0x20000034   Section       12  stm32f1xx_hal.o(.data)
+    .data                                    0x20000040   Section        4  stdout.o(.data)
+    .data                                    0x20000044   Section        4  mvars.o(.data)
+    .data                                    0x20000048   Section        4  mvars.o(.data)
+    .bss                                     0x2000004c   Section       88  spi.o(.bss)
+    .bss                                     0x200000a4   Section       64  usart.o(.bss)
+    .bss                                     0x200000e4   Section       24  gui_paint.o(.bss)
+    HEAP                                     0x20000100   Section    36864  startup_stm32f103xe.o(HEAP)
+    STACK                                    0x20009100   Section     4096  startup_stm32f103xe.o(STACK)
 
 
     Global Symbols
     Global Symbols
 
 
@@ -1965,192 +1976,242 @@ Image Symbol Table
     WWDG_IRQHandler                          0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
     WWDG_IRQHandler                          0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
     Error_Handler                            0x08000169   Thumb Code     8  main.o(.text)
     Error_Handler                            0x08000169   Thumb Code     8  main.o(.text)
     SystemClock_Config                       0x08000171   Thumb Code    88  main.o(.text)
     SystemClock_Config                       0x08000171   Thumb Code    88  main.o(.text)
-    main                                     0x080001c9   Thumb Code    32  main.o(.text)
-    MX_GPIO_Init                             0x080001fd   Thumb Code    86  gpio.o(.text)
-    MX_SPI1_Init                             0x0800025d   Thumb Code    62  spi.o(.text)
-    HAL_SPI_MspInit                          0x0800029b   Thumb Code    80  spi.o(.text)
-    HAL_SPI_MspDeInit                        0x080002eb   Thumb Code    28  spi.o(.text)
-    MX_USART1_UART_Init                      0x08000319   Thumb Code    48  usart.o(.text)
-    HAL_UART_MspInit                         0x08000349   Thumb Code   100  usart.o(.text)
-    HAL_UART_MspDeInit                       0x080003ad   Thumb Code    30  usart.o(.text)
-    fputc                                    0x080003cb   Thumb Code    20  usart.o(.text)
-    NMI_Handler                              0x080003f1   Thumb Code     2  stm32f1xx_it.o(.text)
-    HardFault_Handler                        0x080003f3   Thumb Code     8  stm32f1xx_it.o(.text)
-    MemManage_Handler                        0x080003fb   Thumb Code     2  stm32f1xx_it.o(.text)
-    BusFault_Handler                         0x080003fd   Thumb Code     2  stm32f1xx_it.o(.text)
-    UsageFault_Handler                       0x080003ff   Thumb Code     2  stm32f1xx_it.o(.text)
-    SVC_Handler                              0x08000401   Thumb Code     2  stm32f1xx_it.o(.text)
-    DebugMon_Handler                         0x08000403   Thumb Code     2  stm32f1xx_it.o(.text)
-    PendSV_Handler                           0x08000405   Thumb Code     2  stm32f1xx_it.o(.text)
-    SysTick_Handler                          0x08000407   Thumb Code     4  stm32f1xx_it.o(.text)
-    HAL_MspInit                              0x08000421   Thumb Code    52  stm32f1xx_hal_msp.o(.text)
-    SystemInit                               0x0800045d   Thumb Code    60  system_stm32f1xx.o(.text)
-    SystemCoreClockUpdate                    0x08000499   Thumb Code   108  system_stm32f1xx.o(.text)
-    HAL_SPI_Init                             0x08000523   Thumb Code   180  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_DeInit                           0x080005d9   Thumb Code    48  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Transmit                         0x080006ff   Thumb Code   412  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TransmitReceive                  0x0800090b   Thumb Code   510  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Receive                          0x08000b09   Thumb Code   366  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TxCpltCallback                   0x08000c77   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_ErrorCallback                    0x08000c79   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Transmit_IT                      0x08000d39   Thumb Code   162  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_RxCpltCallback                   0x08000ddb   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TxRxCpltCallback                 0x08000e65   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TransmitReceive_IT               0x08000fbd   Thumb Code   188  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Receive_IT                       0x08001079   Thumb Code   176  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TxHalfCpltCallback               0x080011b1   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Transmit_DMA                     0x080011bd   Thumb Code   208  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_RxHalfCpltCallback               0x080012fb   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TxRxHalfCpltCallback             0x08001363   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_TransmitReceive_DMA              0x0800136f   Thumb Code   302  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Receive_DMA                      0x0800149d   Thumb Code   278  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Abort                            0x08001621   Thumb Code   290  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_AbortCpltCallback                0x08001743   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_Abort_IT                         0x08001819   Thumb Code   328  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_DMAPause                         0x08001961   Thumb Code    38  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_DMAResume                        0x08001987   Thumb Code    38  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_DMAStop                          0x080019ad   Thumb Code    68  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_IRQHandler                       0x08001a01   Thumb Code   250  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_GetState                         0x08001afb   Thumb Code     6  stm32f1xx_hal_spi.o(.text)
-    HAL_SPI_GetError                         0x08001b01   Thumb Code     4  stm32f1xx_hal_spi.o(.text)
-    HAL_InitTick                             0x08001b0b   Thumb Code    58  stm32f1xx_hal.o(.text)
-    HAL_Init                                 0x08001b45   Thumb Code    32  stm32f1xx_hal.o(.text)
-    HAL_MspDeInit                            0x08001b65   Thumb Code     2  stm32f1xx_hal.o(.text)
-    HAL_DeInit                               0x08001b67   Thumb Code    26  stm32f1xx_hal.o(.text)
-    HAL_IncTick                              0x08001b81   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_GetTick                              0x08001b8d   Thumb Code     6  stm32f1xx_hal.o(.text)
-    HAL_GetTickPrio                          0x08001b93   Thumb Code     6  stm32f1xx_hal.o(.text)
-    HAL_SetTickFreq                          0x08001b99   Thumb Code    30  stm32f1xx_hal.o(.text)
-    HAL_GetTickFreq                          0x08001bb7   Thumb Code     6  stm32f1xx_hal.o(.text)
-    HAL_Delay                                0x08001bbd   Thumb Code    34  stm32f1xx_hal.o(.text)
-    HAL_SuspendTick                          0x08001bdf   Thumb Code    14  stm32f1xx_hal.o(.text)
-    HAL_ResumeTick                           0x08001bed   Thumb Code    14  stm32f1xx_hal.o(.text)
-    HAL_GetHalVersion                        0x08001bfb   Thumb Code     4  stm32f1xx_hal.o(.text)
-    HAL_GetREVID                             0x08001bff   Thumb Code     8  stm32f1xx_hal.o(.text)
-    HAL_GetDEVID                             0x08001c07   Thumb Code    10  stm32f1xx_hal.o(.text)
-    HAL_GetUIDw0                             0x08001c11   Thumb Code     6  stm32f1xx_hal.o(.text)
-    HAL_GetUIDw1                             0x08001c17   Thumb Code     6  stm32f1xx_hal.o(.text)
-    HAL_GetUIDw2                             0x08001c1d   Thumb Code     6  stm32f1xx_hal.o(.text)
-    HAL_DBGMCU_EnableDBGSleepMode            0x08001c23   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_DBGMCU_DisableDBGSleepMode           0x08001c2f   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_DBGMCU_EnableDBGStopMode             0x08001c3b   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_DBGMCU_DisableDBGStopMode            0x08001c47   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_DBGMCU_EnableDBGStandbyMode          0x08001c53   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_DBGMCU_DisableDBGStandbyMode         0x08001c5f   Thumb Code    12  stm32f1xx_hal.o(.text)
-    HAL_RCC_DeInit                           0x08001c91   Thumb Code   250  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_OscConfig                        0x08001dab   Thumb Code  1080  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_GetSysClockFreq                  0x080021e3   Thumb Code    88  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_ClockConfig                      0x0800223b   Thumb Code   364  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_MCOConfig                        0x080023a7   Thumb Code    64  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_EnableCSS                        0x080023e7   Thumb Code     8  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_DisableCSS                       0x080023ef   Thumb Code     8  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_GetHCLKFreq                      0x080023f7   Thumb Code     6  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_GetPCLK1Freq                     0x080023fd   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_GetPCLK2Freq                     0x08002413   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_GetOscConfig                     0x08002429   Thumb Code   168  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_GetClockConfig                   0x080024d1   Thumb Code    52  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_CSSCallback                      0x08002505   Thumb Code     2  stm32f1xx_hal_rcc.o(.text)
-    HAL_RCC_NMI_IRQHandler                   0x08002507   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
-    HAL_GPIO_Init                            0x08002559   Thumb Code   524  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_DeInit                          0x08002765   Thumb Code   320  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_ReadPin                         0x080028a5   Thumb Code    14  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_WritePin                        0x080028b3   Thumb Code    14  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_TogglePin                       0x080028c1   Thumb Code    16  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_LockPin                         0x080028d1   Thumb Code    42  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_EXTI_Callback                   0x080028fb   Thumb Code     2  stm32f1xx_hal_gpio.o(.text)
-    HAL_GPIO_EXTI_IRQHandler                 0x080028fd   Thumb Code    18  stm32f1xx_hal_gpio.o(.text)
-    HAL_DMA_Init                             0x0800292d   Thumb Code   144  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_DeInit                           0x080029bd   Thumb Code   126  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_Start                            0x08002a73   Thumb Code    88  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_Start_IT                         0x08002acb   Thumb Code   124  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_Abort                            0x08002b47   Thumb Code    72  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_Abort_IT                         0x08002b8f   Thumb Code   318  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_PollForTransfer                  0x08002ccd   Thumb Code  1316  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_IRQHandler                       0x080031f1   Thumb Code   672  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_RegisterCallback                 0x08003491   Thumb Code    80  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_UnRegisterCallback               0x080034e1   Thumb Code    86  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_GetState                         0x08003537   Thumb Code     6  stm32f1xx_hal_dma.o(.text)
-    HAL_DMA_GetError                         0x0800353d   Thumb Code     4  stm32f1xx_hal_dma.o(.text)
-    HAL_NVIC_SetPriorityGrouping             0x08003575   Thumb Code    30  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_SetPriority                     0x08003593   Thumb Code    98  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_EnableIRQ                       0x080035f5   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_DisableIRQ                      0x08003611   Thumb Code    36  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_SystemReset                     0x08003635   Thumb Code    26  stm32f1xx_hal_cortex.o(.text)
-    HAL_SYSTICK_Config                       0x0800364f   Thumb Code    36  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_GetPriorityGrouping             0x08003673   Thumb Code    10  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_GetPriority                     0x0800367d   Thumb Code    94  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_SetPendingIRQ                   0x080036db   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_GetPendingIRQ                   0x080036f7   Thumb Code    42  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_ClearPendingIRQ                 0x08003721   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
-    HAL_NVIC_GetActive                       0x0800373d   Thumb Code    42  stm32f1xx_hal_cortex.o(.text)
-    HAL_SYSTICK_CLKSourceConfig              0x08003767   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
-    HAL_SYSTICK_Callback                     0x08003783   Thumb Code     2  stm32f1xx_hal_cortex.o(.text)
-    HAL_SYSTICK_IRQHandler                   0x08003785   Thumb Code     8  stm32f1xx_hal_cortex.o(.text)
-    HAL_UART_Init                            0x0800385d   Thumb Code   100  stm32f1xx_hal_uart.o(.text)
-    HAL_HalfDuplex_Init                      0x080038c1   Thumb Code   110  stm32f1xx_hal_uart.o(.text)
-    HAL_LIN_Init                             0x0800392f   Thumb Code   130  stm32f1xx_hal_uart.o(.text)
-    HAL_MultiProcessor_Init                  0x080039b1   Thumb Code   146  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_DeInit                          0x08003a45   Thumb Code    52  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Transmit                        0x08003af1   Thumb Code   202  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Receive                         0x08003bbb   Thumb Code   212  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Transmit_IT                     0x08003c8f   Thumb Code    66  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Receive_IT                      0x08003cd1   Thumb Code    86  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_ErrorCallback                   0x08003d27   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_TxHalfCpltCallback              0x08003da1   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_TxCpltCallback                  0x08003dad   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Transmit_DMA                    0x08003ddf   Thumb Code   138  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_RxHalfCpltCallback              0x08003e69   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_RxCpltCallback                  0x08003e75   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Receive_DMA                     0x08003eb5   Thumb Code   150  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_DMAPause                        0x08003f4b   Thumb Code   102  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_DMAResume                       0x08003fb1   Thumb Code    98  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_DMAStop                         0x08004013   Thumb Code    88  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Abort                           0x0800406b   Thumb Code   148  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortTransmit                   0x080040ff   Thumb Code    80  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortReceive                    0x0800414f   Thumb Code    90  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortCpltCallback               0x080041a9   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_Abort_IT                        0x08004219   Thumb Code   178  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortTransmitCpltCallback       0x080042cb   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortTransmit_IT                0x080042e1   Thumb Code    94  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortReceiveCpltCallback        0x0800433f   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_AbortReceive_IT                 0x08004355   Thumb Code   104  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_IRQHandler                      0x080044d7   Thumb Code   312  stm32f1xx_hal_uart.o(.text)
-    HAL_LIN_SendBreak                        0x0800460f   Thumb Code    70  stm32f1xx_hal_uart.o(.text)
-    HAL_MultiProcessor_EnterMuteMode         0x08004655   Thumb Code    50  stm32f1xx_hal_uart.o(.text)
-    HAL_MultiProcessor_ExitMuteMode          0x08004687   Thumb Code    50  stm32f1xx_hal_uart.o(.text)
-    HAL_HalfDuplex_EnableTransmitter         0x080046b9   Thumb Code    54  stm32f1xx_hal_uart.o(.text)
-    HAL_HalfDuplex_EnableReceiver            0x080046ef   Thumb Code    54  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_GetState                        0x08004725   Thumb Code    12  stm32f1xx_hal_uart.o(.text)
-    HAL_UART_GetError                        0x08004731   Thumb Code     4  stm32f1xx_hal_uart.o(.text)
-    __aeabi_memset                           0x08004735   Thumb Code    14  memseta.o(.text)
-    __aeabi_memset4                          0x08004735   Thumb Code     0  memseta.o(.text)
-    __aeabi_memset8                          0x08004735   Thumb Code     0  memseta.o(.text)
-    __aeabi_memclr                           0x08004743   Thumb Code     4  memseta.o(.text)
-    __aeabi_memclr4                          0x08004743   Thumb Code     0  memseta.o(.text)
-    __aeabi_memclr8                          0x08004743   Thumb Code     0  memseta.o(.text)
-    _memset$wrapper                          0x08004747   Thumb Code    18  memseta.o(.text)
-    __aeabi_uidiv                            0x08004759   Thumb Code     0  uidiv.o(.text)
-    __aeabi_uidivmod                         0x08004759   Thumb Code    44  uidiv.o(.text)
-    __scatterload                            0x08004785   Thumb Code    28  init.o(.text)
-    __scatterload_rt2                        0x08004785   Thumb Code     0  init.o(.text)
-    __0printf$3                              0x080047a9   Thumb Code    22  printf3.o(i.__0printf$3)
-    __1printf$3                              0x080047a9   Thumb Code     0  printf3.o(i.__0printf$3)
-    __2printf                                0x080047a9   Thumb Code     0  printf3.o(i.__0printf$3)
-    __scatterload_copy                       0x080047c9   Thumb Code    14  handlers.o(i.__scatterload_copy)
-    __scatterload_null                       0x080047d7   Thumb Code     2  handlers.o(i.__scatterload_null)
-    __scatterload_zeroinit                   0x080047d9   Thumb Code    14  handlers.o(i.__scatterload_zeroinit)
-    AHBPrescTable                            0x080049a0   Data          16  system_stm32f1xx.o(.constdata)
-    APBPrescTable                            0x080049b0   Data           8  system_stm32f1xx.o(.constdata)
-    Region$$Table$$Base                      0x080049b8   Number         0  anon$$obj.o(Region$$Table)
-    Region$$Table$$Limit                     0x080049d8   Number         0  anon$$obj.o(Region$$Table)
-    SystemCoreClock                          0x20000000   Data           4  system_stm32f1xx.o(.data)
-    uwTickFreq                               0x20000004   Data           1  stm32f1xx_hal.o(.data)
-    uwTickPrio                               0x20000008   Data           4  stm32f1xx_hal.o(.data)
-    uwTick                                   0x2000000c   Data           4  stm32f1xx_hal.o(.data)
-    __stdout                                 0x20000010   Data           4  stdout.o(.data)
-    hspi1                                    0x20000014   Data          88  spi.o(.bss)
-    huart1                                   0x2000006c   Data          64  usart.o(.bss)
-    __initial_sp                             0x200010b0   Data           0  startup_stm32f103xe.o(STACK)
+    main                                     0x080001c9   Thumb Code    36  main.o(.text)
+    MX_GPIO_Init                             0x08000201   Thumb Code    86  gpio.o(.text)
+    MX_SPI1_Init                             0x08000261   Thumb Code    62  spi.o(.text)
+    HAL_SPI_MspInit                          0x0800029f   Thumb Code    80  spi.o(.text)
+    HAL_SPI_MspDeInit                        0x080002ef   Thumb Code    28  spi.o(.text)
+    MX_USART1_UART_Init                      0x0800031d   Thumb Code    48  usart.o(.text)
+    HAL_UART_MspInit                         0x0800034d   Thumb Code   100  usart.o(.text)
+    HAL_UART_MspDeInit                       0x080003b1   Thumb Code    30  usart.o(.text)
+    fputc                                    0x080003cf   Thumb Code    20  usart.o(.text)
+    NMI_Handler                              0x080003f5   Thumb Code     2  stm32f1xx_it.o(.text)
+    HardFault_Handler                        0x080003f7   Thumb Code     8  stm32f1xx_it.o(.text)
+    MemManage_Handler                        0x080003ff   Thumb Code     2  stm32f1xx_it.o(.text)
+    BusFault_Handler                         0x08000401   Thumb Code     2  stm32f1xx_it.o(.text)
+    UsageFault_Handler                       0x08000403   Thumb Code     2  stm32f1xx_it.o(.text)
+    SVC_Handler                              0x08000405   Thumb Code     2  stm32f1xx_it.o(.text)
+    DebugMon_Handler                         0x08000407   Thumb Code     2  stm32f1xx_it.o(.text)
+    PendSV_Handler                           0x08000409   Thumb Code     2  stm32f1xx_it.o(.text)
+    SysTick_Handler                          0x0800040b   Thumb Code     4  stm32f1xx_it.o(.text)
+    HAL_MspInit                              0x08000425   Thumb Code    52  stm32f1xx_hal_msp.o(.text)
+    EPD_2in66_test                           0x08000461   Thumb Code   692  epd_2in66_test.o(.text)
+    EPD_2IN66_ReadBusy                       0x080008c9   Thumb Code    54  epd_2in66.o(.text)
+    EPD_2IN66_Init                           0x080008ff   Thumb Code    86  epd_2in66.o(.text)
+    EPD_2IN66_Init_Partial                   0x08000955   Thumb Code   210  epd_2in66.o(.text)
+    EPD_2IN66_Clear                          0x08000a27   Thumb Code    50  epd_2in66.o(.text)
+    EPD_2IN66_Display                        0x08000a59   Thumb Code    60  epd_2in66.o(.text)
+    EPD_2IN66_Sleep                          0x08000a95   Thumb Code    18  epd_2in66.o(.text)
+    DEV_SPI_WriteByte                        0x08000b51   Thumb Code    18  dev_config.o(.text)
+    DEV_Module_Init                          0x08000b63   Thumb Code    38  dev_config.o(.text)
+    DEV_Module_Exit                          0x08000b89   Thumb Code    38  dev_config.o(.text)
+    Paint_NewImage                           0x08000bb9   Thumb Code    56  gui_paint.o(.text)
+    Paint_SelectImage                        0x08000bf1   Thumb Code     6  gui_paint.o(.text)
+    Paint_SetRotate                          0x08000bf7   Thumb Code    44  gui_paint.o(.text)
+    Paint_SetScale                           0x08000c23   Thumb Code    80  gui_paint.o(.text)
+    Paint_SetMirroring                       0x08000c73   Thumb Code    62  gui_paint.o(.text)
+    Paint_SetPixel                           0x08000cb1   Thumb Code   238  gui_paint.o(.text)
+    Paint_Clear                              0x08000d9f   Thumb Code   104  gui_paint.o(.text)
+    Paint_ClearWindows                       0x08000e07   Thumb Code    52  gui_paint.o(.text)
+    Paint_DrawPoint                          0x08000e3b   Thumb Code   180  gui_paint.o(.text)
+    Paint_DrawLine                           0x08000eef   Thumb Code   654  gui_paint.o(.text)
+    Paint_DrawRectangle                      0x0800117d   Thumb Code   170  gui_paint.o(.text)
+    Paint_DrawCircle                         0x08001227   Thumb Code   528  gui_paint.o(.text)
+    Paint_DrawChar                           0x08001437   Thumb Code   172  gui_paint.o(.text)
+    Paint_DrawString_EN                      0x080014e3   Thumb Code   116  gui_paint.o(.text)
+    Paint_DrawString_CN                      0x08001557   Thumb Code   518  gui_paint.o(.text)
+    Paint_DrawNum                            0x0800175d   Thumb Code   140  gui_paint.o(.text)
+    Paint_DrawTime                           0x080017e9   Thumb Code   282  gui_paint.o(.text)
+    Paint_DrawBitMap                         0x08001903   Thumb Code    46  gui_paint.o(.text)
+    Paint_DrawBitMap_Paste                   0x08001931   Thumb Code   110  gui_paint.o(.text)
+    Paint_DrawBitMap_Block                   0x0800199f   Thumb Code    54  gui_paint.o(.text)
+    SystemInit                               0x08001a29   Thumb Code    60  system_stm32f1xx.o(.text)
+    SystemCoreClockUpdate                    0x08001a65   Thumb Code   108  system_stm32f1xx.o(.text)
+    HAL_SPI_Init                             0x08001aef   Thumb Code   180  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_DeInit                           0x08001ba5   Thumb Code    48  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Transmit                         0x08001ccb   Thumb Code   412  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TransmitReceive                  0x08001ed7   Thumb Code   510  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Receive                          0x080020d5   Thumb Code   366  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TxCpltCallback                   0x08002243   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_ErrorCallback                    0x08002245   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Transmit_IT                      0x08002305   Thumb Code   162  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_RxCpltCallback                   0x080023a7   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TxRxCpltCallback                 0x08002431   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TransmitReceive_IT               0x08002589   Thumb Code   188  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Receive_IT                       0x08002645   Thumb Code   176  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TxHalfCpltCallback               0x0800277d   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Transmit_DMA                     0x08002789   Thumb Code   208  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_RxHalfCpltCallback               0x080028c7   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TxRxHalfCpltCallback             0x0800292f   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_TransmitReceive_DMA              0x0800293b   Thumb Code   302  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Receive_DMA                      0x08002a69   Thumb Code   278  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Abort                            0x08002bed   Thumb Code   290  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_AbortCpltCallback                0x08002d0f   Thumb Code     2  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_Abort_IT                         0x08002de5   Thumb Code   328  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_DMAPause                         0x08002f2d   Thumb Code    38  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_DMAResume                        0x08002f53   Thumb Code    38  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_DMAStop                          0x08002f79   Thumb Code    68  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_IRQHandler                       0x08002fcd   Thumb Code   250  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_GetState                         0x080030c7   Thumb Code     6  stm32f1xx_hal_spi.o(.text)
+    HAL_SPI_GetError                         0x080030cd   Thumb Code     4  stm32f1xx_hal_spi.o(.text)
+    HAL_InitTick                             0x080030d7   Thumb Code    58  stm32f1xx_hal.o(.text)
+    HAL_Init                                 0x08003111   Thumb Code    32  stm32f1xx_hal.o(.text)
+    HAL_MspDeInit                            0x08003131   Thumb Code     2  stm32f1xx_hal.o(.text)
+    HAL_DeInit                               0x08003133   Thumb Code    26  stm32f1xx_hal.o(.text)
+    HAL_IncTick                              0x0800314d   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_GetTick                              0x08003159   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_GetTickPrio                          0x0800315f   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_SetTickFreq                          0x08003165   Thumb Code    30  stm32f1xx_hal.o(.text)
+    HAL_GetTickFreq                          0x08003183   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_Delay                                0x08003189   Thumb Code    34  stm32f1xx_hal.o(.text)
+    HAL_SuspendTick                          0x080031ab   Thumb Code    14  stm32f1xx_hal.o(.text)
+    HAL_ResumeTick                           0x080031b9   Thumb Code    14  stm32f1xx_hal.o(.text)
+    HAL_GetHalVersion                        0x080031c7   Thumb Code     4  stm32f1xx_hal.o(.text)
+    HAL_GetREVID                             0x080031cb   Thumb Code     8  stm32f1xx_hal.o(.text)
+    HAL_GetDEVID                             0x080031d3   Thumb Code    10  stm32f1xx_hal.o(.text)
+    HAL_GetUIDw0                             0x080031dd   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_GetUIDw1                             0x080031e3   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_GetUIDw2                             0x080031e9   Thumb Code     6  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_EnableDBGSleepMode            0x080031ef   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_DisableDBGSleepMode           0x080031fb   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_EnableDBGStopMode             0x08003207   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_DisableDBGStopMode            0x08003213   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_EnableDBGStandbyMode          0x0800321f   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_DBGMCU_DisableDBGStandbyMode         0x0800322b   Thumb Code    12  stm32f1xx_hal.o(.text)
+    HAL_RCC_DeInit                           0x0800325d   Thumb Code   250  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_OscConfig                        0x08003377   Thumb Code  1080  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetSysClockFreq                  0x080037af   Thumb Code    88  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_ClockConfig                      0x08003807   Thumb Code   364  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_MCOConfig                        0x08003973   Thumb Code    64  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_EnableCSS                        0x080039b3   Thumb Code     8  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_DisableCSS                       0x080039bb   Thumb Code     8  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetHCLKFreq                      0x080039c3   Thumb Code     6  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetPCLK1Freq                     0x080039c9   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetPCLK2Freq                     0x080039df   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetOscConfig                     0x080039f5   Thumb Code   168  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_GetClockConfig                   0x08003a9d   Thumb Code    52  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_CSSCallback                      0x08003ad1   Thumb Code     2  stm32f1xx_hal_rcc.o(.text)
+    HAL_RCC_NMI_IRQHandler                   0x08003ad3   Thumb Code    22  stm32f1xx_hal_rcc.o(.text)
+    HAL_GPIO_Init                            0x08003b25   Thumb Code   524  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_DeInit                          0x08003d31   Thumb Code   320  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_ReadPin                         0x08003e71   Thumb Code    14  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_WritePin                        0x08003e7f   Thumb Code    14  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_TogglePin                       0x08003e8d   Thumb Code    16  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_LockPin                         0x08003e9d   Thumb Code    42  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_EXTI_Callback                   0x08003ec7   Thumb Code     2  stm32f1xx_hal_gpio.o(.text)
+    HAL_GPIO_EXTI_IRQHandler                 0x08003ec9   Thumb Code    18  stm32f1xx_hal_gpio.o(.text)
+    HAL_DMA_Init                             0x08003ef9   Thumb Code   144  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_DeInit                           0x08003f89   Thumb Code   126  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_Start                            0x0800403f   Thumb Code    88  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_Start_IT                         0x08004097   Thumb Code   124  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_Abort                            0x08004113   Thumb Code    72  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_Abort_IT                         0x0800415b   Thumb Code   318  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_PollForTransfer                  0x08004299   Thumb Code  1316  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_IRQHandler                       0x080047bd   Thumb Code   672  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_RegisterCallback                 0x08004a5d   Thumb Code    80  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_UnRegisterCallback               0x08004aad   Thumb Code    86  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_GetState                         0x08004b03   Thumb Code     6  stm32f1xx_hal_dma.o(.text)
+    HAL_DMA_GetError                         0x08004b09   Thumb Code     4  stm32f1xx_hal_dma.o(.text)
+    HAL_NVIC_SetPriorityGrouping             0x08004b41   Thumb Code    30  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_SetPriority                     0x08004b5f   Thumb Code    98  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_EnableIRQ                       0x08004bc1   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_DisableIRQ                      0x08004bdd   Thumb Code    36  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_SystemReset                     0x08004c01   Thumb Code    26  stm32f1xx_hal_cortex.o(.text)
+    HAL_SYSTICK_Config                       0x08004c1b   Thumb Code    36  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_GetPriorityGrouping             0x08004c3f   Thumb Code    10  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_GetPriority                     0x08004c49   Thumb Code    94  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_SetPendingIRQ                   0x08004ca7   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_GetPendingIRQ                   0x08004cc3   Thumb Code    42  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_ClearPendingIRQ                 0x08004ced   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
+    HAL_NVIC_GetActive                       0x08004d09   Thumb Code    42  stm32f1xx_hal_cortex.o(.text)
+    HAL_SYSTICK_CLKSourceConfig              0x08004d33   Thumb Code    28  stm32f1xx_hal_cortex.o(.text)
+    HAL_SYSTICK_Callback                     0x08004d4f   Thumb Code     2  stm32f1xx_hal_cortex.o(.text)
+    HAL_SYSTICK_IRQHandler                   0x08004d51   Thumb Code     8  stm32f1xx_hal_cortex.o(.text)
+    HAL_UART_Init                            0x08004e29   Thumb Code   100  stm32f1xx_hal_uart.o(.text)
+    HAL_HalfDuplex_Init                      0x08004e8d   Thumb Code   110  stm32f1xx_hal_uart.o(.text)
+    HAL_LIN_Init                             0x08004efb   Thumb Code   130  stm32f1xx_hal_uart.o(.text)
+    HAL_MultiProcessor_Init                  0x08004f7d   Thumb Code   146  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_DeInit                          0x08005011   Thumb Code    52  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Transmit                        0x080050bd   Thumb Code   202  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Receive                         0x08005187   Thumb Code   212  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Transmit_IT                     0x0800525b   Thumb Code    66  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Receive_IT                      0x0800529d   Thumb Code    86  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_ErrorCallback                   0x080052f3   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_TxHalfCpltCallback              0x0800536d   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_TxCpltCallback                  0x08005379   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Transmit_DMA                    0x080053ab   Thumb Code   138  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_RxHalfCpltCallback              0x08005435   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_RxCpltCallback                  0x08005441   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Receive_DMA                     0x08005481   Thumb Code   150  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_DMAPause                        0x08005517   Thumb Code   102  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_DMAResume                       0x0800557d   Thumb Code    98  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_DMAStop                         0x080055df   Thumb Code    88  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Abort                           0x08005637   Thumb Code   148  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortTransmit                   0x080056cb   Thumb Code    80  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortReceive                    0x0800571b   Thumb Code    90  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortCpltCallback               0x08005775   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_Abort_IT                        0x080057e5   Thumb Code   178  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortTransmitCpltCallback       0x08005897   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortTransmit_IT                0x080058ad   Thumb Code    94  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortReceiveCpltCallback        0x0800590b   Thumb Code     2  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_AbortReceive_IT                 0x08005921   Thumb Code   104  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_IRQHandler                      0x08005aa3   Thumb Code   312  stm32f1xx_hal_uart.o(.text)
+    HAL_LIN_SendBreak                        0x08005bdb   Thumb Code    70  stm32f1xx_hal_uart.o(.text)
+    HAL_MultiProcessor_EnterMuteMode         0x08005c21   Thumb Code    50  stm32f1xx_hal_uart.o(.text)
+    HAL_MultiProcessor_ExitMuteMode          0x08005c53   Thumb Code    50  stm32f1xx_hal_uart.o(.text)
+    HAL_HalfDuplex_EnableTransmitter         0x08005c85   Thumb Code    54  stm32f1xx_hal_uart.o(.text)
+    HAL_HalfDuplex_EnableReceiver            0x08005cbb   Thumb Code    54  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_GetState                        0x08005cf1   Thumb Code    12  stm32f1xx_hal_uart.o(.text)
+    HAL_UART_GetError                        0x08005cfd   Thumb Code     4  stm32f1xx_hal_uart.o(.text)
+    __aeabi_memset                           0x08005d01   Thumb Code    14  memseta.o(.text)
+    __aeabi_memset4                          0x08005d01   Thumb Code     0  memseta.o(.text)
+    __aeabi_memset8                          0x08005d01   Thumb Code     0  memseta.o(.text)
+    __aeabi_memclr                           0x08005d0f   Thumb Code     4  memseta.o(.text)
+    __aeabi_memclr4                          0x08005d0f   Thumb Code     0  memseta.o(.text)
+    __aeabi_memclr8                          0x08005d0f   Thumb Code     0  memseta.o(.text)
+    _memset$wrapper                          0x08005d13   Thumb Code    18  memseta.o(.text)
+    __aeabi_uidiv                            0x08005d25   Thumb Code     0  uidiv.o(.text)
+    __aeabi_uidivmod                         0x08005d25   Thumb Code    44  uidiv.o(.text)
+    __scatterload                            0x08005d51   Thumb Code    28  init.o(.text)
+    __scatterload_rt2                        0x08005d51   Thumb Code     0  init.o(.text)
+    __0printf$3                              0x08005d75   Thumb Code    22  printf3.o(i.__0printf$3)
+    __1printf$3                              0x08005d75   Thumb Code     0  printf3.o(i.__0printf$3)
+    __2printf                                0x08005d75   Thumb Code     0  printf3.o(i.__0printf$3)
+    __scatterload_copy                       0x08005d95   Thumb Code    14  handlers.o(i.__scatterload_copy)
+    __scatterload_null                       0x08005da3   Thumb Code     2  handlers.o(i.__scatterload_null)
+    __scatterload_zeroinit                   0x08005da5   Thumb Code    14  handlers.o(i.__scatterload_zeroinit)
+    free                                     0x08005f6d   Thumb Code    76  malloc.o(i.free)
+    malloc                                   0x08005fbd   Thumb Code    92  malloc.o(i.malloc)
+    gImage_100X50                            0x08006028   Data         656  imagedata.o(.constdata)
+    gImage_2in66                             0x080062b8   Data        5630  imagedata.o(.constdata)
+    WF_PARTIAL                               0x080078b6   Data         159  epd_2in66.o(.constdata)
+    Font12_Table                             0x08007955   Data        1140  font12.o(.constdata)
+    Font12CN_Table                           0x08007dc9   Data        1494  font12cn.o(.constdata)
+    Font16_Table                             0x0800839f   Data        3040  font16.o(.constdata)
+    Font20_Table                             0x08008f7f   Data        3800  font20.o(.constdata)
+    Font24CN_Table                           0x08009e57   Data        4482  font24cn.o(.constdata)
+    AHBPrescTable                            0x0800afd9   Data          16  system_stm32f1xx.o(.constdata)
+    APBPrescTable                            0x0800afe9   Data           8  system_stm32f1xx.o(.constdata)
+    Region$$Table$$Base                      0x0800b0e0   Number         0  anon$$obj.o(Region$$Table)
+    Region$$Table$$Limit                     0x0800b100   Number         0  anon$$obj.o(Region$$Table)
+    Font12                                   0x20000000   Data           8  font12.o(.data)
+    Font12CN                                 0x20000008   Data          12  font12cn.o(.data)
+    Font16                                   0x20000014   Data           8  font16.o(.data)
+    Font20                                   0x2000001c   Data           8  font20.o(.data)
+    Font24CN                                 0x20000024   Data          12  font24cn.o(.data)
+    SystemCoreClock                          0x20000030   Data           4  system_stm32f1xx.o(.data)
+    uwTickFreq                               0x20000034   Data           1  stm32f1xx_hal.o(.data)
+    uwTickPrio                               0x20000038   Data           4  stm32f1xx_hal.o(.data)
+    uwTick                                   0x2000003c   Data           4  stm32f1xx_hal.o(.data)
+    __stdout                                 0x20000040   Data           4  stdout.o(.data)
+    __microlib_freelist                      0x20000044   Data           4  mvars.o(.data)
+    __microlib_freelist_initialised          0x20000048   Data           4  mvars.o(.data)
+    hspi1                                    0x2000004c   Data          88  spi.o(.bss)
+    huart1                                   0x200000a4   Data          64  usart.o(.bss)
+    Paint                                    0x200000e4   Data          24  gui_paint.o(.bss)
+    __heap_base                              0x20000100   Data           0  startup_stm32f103xe.o(HEAP)
+    __heap_limit                             0x20009100   Data           0  startup_stm32f103xe.o(HEAP)
+    __initial_sp                             0x2000a100   Data           0  startup_stm32f103xe.o(STACK)
 
 
 
 
 
 
@@ -2160,62 +2221,88 @@ Memory Map of the image
 
 
   Image Entry point : 0x08000131
   Image Entry point : 0x08000131
 
 
-  Load Region LR_IROM1 (Base: 0x08000000, Size: 0x000049ec, Max: 0x00080000, ABSOLUTE)
+  Load Region LR_IROM1 (Base: 0x08000000, Size: 0x0000b14c, Max: 0x00080000, ABSOLUTE)
 
 
-    Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x000049d8, Max: 0x00080000, ABSOLUTE)
+    Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x0000b100, Max: 0x00080000, ABSOLUTE)
 
 
     Exec Addr    Load Addr    Size         Type   Attr      Idx    E Section Name        Object
     Exec Addr    Load Addr    Size         Type   Attr      Idx    E Section Name        Object
 
 
     0x08000000   0x08000000   0x00000130   Data   RO            3    RESET               startup_stm32f103xe.o
     0x08000000   0x08000000   0x00000130   Data   RO            3    RESET               startup_stm32f103xe.o
-    0x08000130   0x08000130   0x00000000   Code   RO         2914  * .ARM.Collect$$$$00000000  mc_w.l(entry.o)
-    0x08000130   0x08000130   0x00000004   Code   RO         3214    .ARM.Collect$$$$00000001  mc_w.l(entry2.o)
-    0x08000134   0x08000134   0x00000004   Code   RO         3217    .ARM.Collect$$$$00000004  mc_w.l(entry5.o)
-    0x08000138   0x08000138   0x00000000   Code   RO         3219    .ARM.Collect$$$$00000008  mc_w.l(entry7b.o)
-    0x08000138   0x08000138   0x00000000   Code   RO         3221    .ARM.Collect$$$$0000000A  mc_w.l(entry8b.o)
-    0x08000138   0x08000138   0x00000008   Code   RO         3222    .ARM.Collect$$$$0000000B  mc_w.l(entry9a.o)
-    0x08000140   0x08000140   0x00000000   Code   RO         3224    .ARM.Collect$$$$0000000D  mc_w.l(entry10a.o)
-    0x08000140   0x08000140   0x00000000   Code   RO         3226    .ARM.Collect$$$$0000000F  mc_w.l(entry11a.o)
-    0x08000140   0x08000140   0x00000004   Code   RO         3215    .ARM.Collect$$$$00002712  mc_w.l(entry2.o)
+    0x08000130   0x08000130   0x00000000   Code   RO         2915  * .ARM.Collect$$$$00000000  mc_w.l(entry.o)
+    0x08000130   0x08000130   0x00000004   Code   RO         3215    .ARM.Collect$$$$00000001  mc_w.l(entry2.o)
+    0x08000134   0x08000134   0x00000004   Code   RO         3218    .ARM.Collect$$$$00000004  mc_w.l(entry5.o)
+    0x08000138   0x08000138   0x00000000   Code   RO         3220    .ARM.Collect$$$$00000008  mc_w.l(entry7b.o)
+    0x08000138   0x08000138   0x00000000   Code   RO         3222    .ARM.Collect$$$$0000000A  mc_w.l(entry8b.o)
+    0x08000138   0x08000138   0x00000008   Code   RO         3223    .ARM.Collect$$$$0000000B  mc_w.l(entry9a.o)
+    0x08000140   0x08000140   0x00000000   Code   RO         3225    .ARM.Collect$$$$0000000D  mc_w.l(entry10a.o)
+    0x08000140   0x08000140   0x00000000   Code   RO         3227    .ARM.Collect$$$$0000000F  mc_w.l(entry11a.o)
+    0x08000140   0x08000140   0x00000004   Code   RO         3216    .ARM.Collect$$$$00002712  mc_w.l(entry2.o)
     0x08000144   0x08000144   0x00000024   Code   RO            4    .text               startup_stm32f103xe.o
     0x08000144   0x08000144   0x00000024   Code   RO            4    .text               startup_stm32f103xe.o
-    0x08000168   0x08000168   0x00000094   Code   RO           13    .text               main.o
-    0x080001fc   0x080001fc   0x00000060   Code   RO          162    .text               gpio.o
-    0x0800025c   0x0800025c   0x000000bc   Code   RO          186    .text               spi.o
-    0x08000318   0x08000318   0x000000d8   Code   RO          216    .text               usart.o
-    0x080003f0   0x080003f0   0x00000030   Code   RO          246    .text               stm32f1xx_it.o
-    0x08000420   0x08000420   0x0000003c   Code   RO          273    .text               stm32f1xx_hal_msp.o
-    0x0800045c   0x0800045c   0x000000c4   Code   RO         2523    .text               system_stm32f1xx.o
-    0x08000520   0x08000520   0x000015e8   Code   RO         2579    .text               stm32f1xx_hal_spi.o
-    0x08001b08   0x08001b08   0x00000188   Code   RO         2603    .text               stm32f1xx_hal.o
-    0x08001c90   0x08001c90   0x000008c8   Code   RO         2633    .text               stm32f1xx_hal_rcc.o
-    0x08002558   0x08002558   0x000003d4   Code   RO         2681    .text               stm32f1xx_hal_gpio.o
-    0x0800292c   0x0800292c   0x00000c48   Code   RO         2705    .text               stm32f1xx_hal_dma.o
-    0x08003574   0x08003574   0x00000224   Code   RO         2729    .text               stm32f1xx_hal_cortex.o
-    0x08003798   0x08003798   0x00000f9c   Code   RO         2893    .text               stm32f1xx_hal_uart.o
-    0x08004734   0x08004734   0x00000024   Code   RO         2921    .text               mc_w.l(memseta.o)
-    0x08004758   0x08004758   0x0000002c   Code   RO         3229    .text               mc_w.l(uidiv.o)
-    0x08004784   0x08004784   0x00000024   Code   RO         3246    .text               mc_w.l(init.o)
-    0x080047a8   0x080047a8   0x00000020   Code   RO         3014    i.__0printf$3       mc_w.l(printf3.o)
-    0x080047c8   0x080047c8   0x0000000e   Code   RO         3256    i.__scatterload_copy  mc_w.l(handlers.o)
-    0x080047d6   0x080047d6   0x00000002   Code   RO         3257    i.__scatterload_null  mc_w.l(handlers.o)
-    0x080047d8   0x080047d8   0x0000000e   Code   RO         3258    i.__scatterload_zeroinit  mc_w.l(handlers.o)
-    0x080047e6   0x080047e6   0x00000002   PAD
-    0x080047e8   0x080047e8   0x000001b8   Code   RO         3021    i._printf_core      mc_w.l(printf3.o)
-    0x080049a0   0x080049a0   0x00000010   Data   RO         2524    .constdata          system_stm32f1xx.o
-    0x080049b0   0x080049b0   0x00000008   Data   RO         2525    .constdata          system_stm32f1xx.o
-    0x080049b8   0x080049b8   0x00000020   Data   RO         3254    Region$$Table       anon$$obj.o
+    0x08000168   0x08000168   0x00000098   Code   RO           13    .text               main.o
+    0x08000200   0x08000200   0x00000060   Code   RO          162    .text               gpio.o
+    0x08000260   0x08000260   0x000000bc   Code   RO          186    .text               spi.o
+    0x0800031c   0x0800031c   0x000000d8   Code   RO          216    .text               usart.o
+    0x080003f4   0x080003f4   0x00000030   Code   RO          246    .text               stm32f1xx_it.o
+    0x08000424   0x08000424   0x0000003c   Code   RO          273    .text               stm32f1xx_hal_msp.o
+    0x08000460   0x08000460   0x00000430   Code   RO          868    .text               epd_2in66_test.o
+    0x08000890   0x08000890   0x000002c0   Code   RO         1919    .text               epd_2in66.o
+    0x08000b50   0x08000b50   0x00000068   Code   RO         2365    .text               dev_config.o
+    0x08000bb8   0x08000bb8   0x00000e70   Code   RO         2390    .text               gui_paint.o
+    0x08001a28   0x08001a28   0x000000c4   Code   RO         2524    .text               system_stm32f1xx.o
+    0x08001aec   0x08001aec   0x000015e8   Code   RO         2580    .text               stm32f1xx_hal_spi.o
+    0x080030d4   0x080030d4   0x00000188   Code   RO         2604    .text               stm32f1xx_hal.o
+    0x0800325c   0x0800325c   0x000008c8   Code   RO         2634    .text               stm32f1xx_hal_rcc.o
+    0x08003b24   0x08003b24   0x000003d4   Code   RO         2682    .text               stm32f1xx_hal_gpio.o
+    0x08003ef8   0x08003ef8   0x00000c48   Code   RO         2706    .text               stm32f1xx_hal_dma.o
+    0x08004b40   0x08004b40   0x00000224   Code   RO         2730    .text               stm32f1xx_hal_cortex.o
+    0x08004d64   0x08004d64   0x00000f9c   Code   RO         2894    .text               stm32f1xx_hal_uart.o
+    0x08005d00   0x08005d00   0x00000024   Code   RO         2922    .text               mc_w.l(memseta.o)
+    0x08005d24   0x08005d24   0x0000002c   Code   RO         3230    .text               mc_w.l(uidiv.o)
+    0x08005d50   0x08005d50   0x00000024   Code   RO         3247    .text               mc_w.l(init.o)
+    0x08005d74   0x08005d74   0x00000020   Code   RO         3015    i.__0printf$3       mc_w.l(printf3.o)
+    0x08005d94   0x08005d94   0x0000000e   Code   RO         3257    i.__scatterload_copy  mc_w.l(handlers.o)
+    0x08005da2   0x08005da2   0x00000002   Code   RO         3258    i.__scatterload_null  mc_w.l(handlers.o)
+    0x08005da4   0x08005da4   0x0000000e   Code   RO         3259    i.__scatterload_zeroinit  mc_w.l(handlers.o)
+    0x08005db2   0x08005db2   0x00000002   PAD
+    0x08005db4   0x08005db4   0x000001b8   Code   RO         3022    i._printf_core      mc_w.l(printf3.o)
+    0x08005f6c   0x08005f6c   0x00000050   Code   RO         3187    i.free              mc_w.l(malloc.o)
+    0x08005fbc   0x08005fbc   0x0000006c   Code   RO         3188    i.malloc            mc_w.l(malloc.o)
+    0x08006028   0x08006028   0x00000290   Data   RO          294    .constdata          imagedata.o
+    0x080062b8   0x080062b8   0x000015fe   Data   RO          316    .constdata          imagedata.o
+    0x080078b6   0x080078b6   0x0000009f   Data   RO         1920    .constdata          epd_2in66.o
+    0x08007955   0x08007955   0x00000474   Data   RO         2437    .constdata          font12.o
+    0x08007dc9   0x08007dc9   0x000005d6   Data   RO         2451    .constdata          font12cn.o
+    0x0800839f   0x0800839f   0x00000be0   Data   RO         2465    .constdata          font16.o
+    0x08008f7f   0x08008f7f   0x00000ed8   Data   RO         2479    .constdata          font20.o
+    0x08009e57   0x08009e57   0x00001182   Data   RO         2507    .constdata          font24cn.o
+    0x0800afd9   0x0800afd9   0x00000010   Data   RO         2525    .constdata          system_stm32f1xx.o
+    0x0800afe9   0x0800afe9   0x00000008   Data   RO         2526    .constdata          system_stm32f1xx.o
+    0x0800aff1   0x0800aff1   0x00000003   PAD
+    0x0800aff4   0x0800aff4   0x000000e9   Data   RO         2392    .conststring        gui_paint.o
+    0x0800b0dd   0x0800b0dd   0x00000003   PAD
+    0x0800b0e0   0x0800b0e0   0x00000020   Data   RO         3255    Region$$Table       anon$$obj.o
 
 
 
 
-    Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x080049d8, Size: 0x000010b0, Max: 0x00010000, ABSOLUTE)
+    Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x0800b100, Size: 0x0000a100, Max: 0x00010000, ABSOLUTE)
 
 
     Exec Addr    Load Addr    Size         Type   Attr      Idx    E Section Name        Object
     Exec Addr    Load Addr    Size         Type   Attr      Idx    E Section Name        Object
 
 
-    0x20000000   0x080049d8   0x00000004   Data   RW         2526    .data               system_stm32f1xx.o
-    0x20000004   0x080049dc   0x0000000c   Data   RW         2604    .data               stm32f1xx_hal.o
-    0x20000010   0x080049e8   0x00000004   Data   RW         3228    .data               mc_w.l(stdout.o)
-    0x20000014        -       0x00000058   Zero   RW          187    .bss                spi.o
-    0x2000006c        -       0x00000040   Zero   RW          217    .bss                usart.o
-    0x200000ac   0x080049ec   0x00000004   PAD
-    0x200000b0        -       0x00001000   Zero   RW            1    STACK               startup_stm32f103xe.o
+    0x20000000   0x0800b100   0x00000008   Data   RW         2438    .data               font12.o
+    0x20000008   0x0800b108   0x0000000c   Data   RW         2452    .data               font12cn.o
+    0x20000014   0x0800b114   0x00000008   Data   RW         2466    .data               font16.o
+    0x2000001c   0x0800b11c   0x00000008   Data   RW         2480    .data               font20.o
+    0x20000024   0x0800b124   0x0000000c   Data   RW         2508    .data               font24cn.o
+    0x20000030   0x0800b130   0x00000004   Data   RW         2527    .data               system_stm32f1xx.o
+    0x20000034   0x0800b134   0x0000000c   Data   RW         2605    .data               stm32f1xx_hal.o
+    0x20000040   0x0800b140   0x00000004   Data   RW         3229    .data               mc_w.l(stdout.o)
+    0x20000044   0x0800b144   0x00000004   Data   RW         3234    .data               mc_w.l(mvars.o)
+    0x20000048   0x0800b148   0x00000004   Data   RW         3235    .data               mc_w.l(mvars.o)
+    0x2000004c        -       0x00000058   Zero   RW          187    .bss                spi.o
+    0x200000a4        -       0x00000040   Zero   RW          217    .bss                usart.o
+    0x200000e4        -       0x00000018   Zero   RW         2391    .bss                gui_paint.o
+    0x200000fc   0x0800b14c   0x00000004   PAD
+    0x20000100        -       0x00009000   Zero   RW            2    HEAP                startup_stm32f103xe.o
+    0x20009100        -       0x00001000   Zero   RW            1    STACK               startup_stm32f103xe.o
 
 
 
 
 ==============================================================================
 ==============================================================================
@@ -2225,10 +2312,20 @@ Image component sizes
 
 
       Code (inc. data)   RO Data    RW Data    ZI Data      Debug   Object Name
       Code (inc. data)   RO Data    RW Data    ZI Data      Debug   Object Name
 
 
+       104         10          0          0          0        780   dev_config.o
+       704         64        159          0          0       3190   epd_2in66.o
+      1072        380          0          0          0       1457   epd_2in66_test.o
+         0          0       1140          8          0       1353   font12.o
+         0          0       1494         12          0       1363   font12cn.o
+         0          0       3040          8          0       1353   font16.o
+         0          0       3800          8          0       1353   font20.o
+         0          0       4482         12          0       1363   font24cn.o
         96         10          0          0          0        803   gpio.o
         96         10          0          0          0        803   gpio.o
-       148         20          0          0          0     461070   main.o
+      3696        660        233          0         24      14384   gui_paint.o
+         0          0       6286          0          0       3112   imagedata.o
+       152         20          0          0          0     463420   main.o
        188         18          0          0         88       1429   spi.o
        188         18          0          0         88       1429   spi.o
-        36          8        304          0       4096        796   startup_stm32f103xe.o
+        36          8        304          0      40960        796   startup_stm32f103xe.o
        392         38          0         12          0       7649   stm32f1xx_hal.o
        392         38          0         12          0       7649   stm32f1xx_hal.o
        548         12          0          0          0      30674   stm32f1xx_hal_cortex.o
        548         12          0          0          0      30674   stm32f1xx_hal_cortex.o
       3144        164          0          0          0       7109   stm32f1xx_hal_dma.o
       3144        164          0          0          0       7109   stm32f1xx_hal_dma.o
@@ -2242,9 +2339,9 @@ Image component sizes
        216         18          0          0         64       1753   usart.o
        216         18          0          0         64       1753   usart.o
 
 
     ----------------------------------------------------------------------
     ----------------------------------------------------------------------
-     17904        616        360         16       4252     562871   Object Totals
+     23484       1730      21000         64      41140     594929   Object Totals
          0          0         32          0          0          0   (incl. Generated)
          0          0         32          0          0          0   (incl. Generated)
-         0          0          0          0          4          0   (incl. Padding)
+         0          0          6          0          4          0   (incl. Padding)
 
 
     ----------------------------------------------------------------------
     ----------------------------------------------------------------------
 
 
@@ -2260,23 +2357,25 @@ Image component sizes
          8          4          0          0          0          0   entry9a.o
          8          4          0          0          0          0   entry9a.o
         30          0          0          0          0          0   handlers.o
         30          0          0          0          0          0   handlers.o
         36          8          0          0          0         68   init.o
         36          8          0          0          0         68   init.o
+       188         20          0          0          0        160   malloc.o
         36          0          0          0          0        108   memseta.o
         36          0          0          0          0        108   memseta.o
+         0          0          0          8          0          0   mvars.o
        472         14          0          0          0        184   printf3.o
        472         14          0          0          0        184   printf3.o
          0          0          0          4          0          0   stdout.o
          0          0          0          4          0          0   stdout.o
         44          0          0          0          0         80   uidiv.o
         44          0          0          0          0         80   uidiv.o
 
 
     ----------------------------------------------------------------------
     ----------------------------------------------------------------------
-       640         30          0          4          0        440   Library Totals
+       828         50          0         12          0        600   Library Totals
          2          0          0          0          0          0   (incl. Padding)
          2          0          0          0          0          0   (incl. Padding)
 
 
     ----------------------------------------------------------------------
     ----------------------------------------------------------------------
 
 
       Code (inc. data)   RO Data    RW Data    ZI Data      Debug   Library Name
       Code (inc. data)   RO Data    RW Data    ZI Data      Debug   Library Name
 
 
-       638         30          0          4          0        440   mc_w.l
+       826         50          0         12          0        600   mc_w.l
 
 
     ----------------------------------------------------------------------
     ----------------------------------------------------------------------
-       640         30          0          4          0        440   Library Totals
+       828         50          0         12          0        600   Library Totals
 
 
     ----------------------------------------------------------------------
     ----------------------------------------------------------------------
 
 
@@ -2285,15 +2384,15 @@ Image component sizes
 
 
       Code (inc. data)   RO Data    RW Data    ZI Data      Debug   
       Code (inc. data)   RO Data    RW Data    ZI Data      Debug   
 
 
-     18544        646        360         20       4252     561955   Grand Totals
-     18544        646        360         20       4252     561955   ELF Image Totals
-     18544        646        360         20          0          0   ROM Totals
+     24312       1780      21000         76      41140     593809   Grand Totals
+     24312       1780      21000         76      41140     593809   ELF Image Totals
+     24312       1780      21000         76          0          0   ROM Totals
 
 
 ==============================================================================
 ==============================================================================
 
 
-    Total RO  Size (Code + RO Data)                18904 (  18.46kB)
-    Total RW  Size (RW Data + ZI Data)              4272 (   4.17kB)
-    Total ROM Size (Code + RO Data + RW Data)      18924 (  18.48kB)
+    Total RO  Size (Code + RO Data)                45312 (  44.25kB)
+    Total RW  Size (RW Data + ZI Data)             41216 (  40.25kB)
+    Total ROM Size (Code + RO Data + RW Data)      45388 (  44.32kB)
 
 
 ==============================================================================
 ==============================================================================
 
 

+ 3 - 3
STM32/STM32-F103ZET6/User/Examples/EPD_2in66_test.c

@@ -58,7 +58,7 @@ int EPD_2in66_test(void)
     Paint_SelectImage(BlackImage);
     Paint_SelectImage(BlackImage);
     Paint_Clear(WHITE);
     Paint_Clear(WHITE);
     Paint_DrawBitMap(gImage_2in66);
     Paint_DrawBitMap(gImage_2in66);
-
+    Paint_DrawBitMap_Paste(gImage_100X50, 10, 10, 100, 50, TRUE);
     EPD_2IN66_Display(BlackImage);
     EPD_2IN66_Display(BlackImage);
     DEV_Delay_ms(2000);
     DEV_Delay_ms(2000);
 #endif
 #endif
@@ -92,8 +92,8 @@ int EPD_2in66_test(void)
     Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE);
     Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE);
     Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK);
     Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK);
 
 
-    Paint_DrawString_CN(130, 0,"ÄãºÃabc", &Font12CN, BLACK, WHITE);
-    Paint_DrawString_CN(130, 20, "΢ѩµç×Ó", &Font24CN, WHITE, BLACK);
+    Paint_DrawString_CN(130, 0,"���abc", &Font12CN, BLACK, WHITE);
+    Paint_DrawString_CN(130, 20, "΢ѩ����", &Font24CN, WHITE, BLACK);
 
 
     EPD_2IN66_Display(BlackImage);
     EPD_2IN66_Display(BlackImage);
     DEV_Delay_ms(4000);   
     DEV_Delay_ms(4000);   

+ 46 - 0
STM32/STM32-F103ZET6/User/Examples/ImageData.c

@@ -30,6 +30,52 @@
 ******************************************************************************/
 ******************************************************************************/
 
 
 #include "ImageData.h"
 #include "ImageData.h"
+
+const unsigned char gImage_100X50[656] = { /*0X00,0X01,0X64,0X00,0X32,0X00,*/
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC7,0X00,0X66,0X00,0X0E,0X66,0X00,
+0X03,0X03,0X00,0X00,0X00,0X00,0XC7,0X00,0X66,0X00,0X0E,0XE6,0X00,0X03,0X03,0X00,
+0X00,0X00,0X00,0XC7,0X00,0X66,0X00,0X06,0XFE,0X00,0X03,0X1F,0X00,0X00,0X00,0X00,
+0XC7,0X3F,0X66,0X7E,0X07,0XFE,0X7E,0X7B,0X3F,0X00,0X00,0X00,0X00,0XFF,0X33,0X66,
+0X66,0X07,0XFC,0X66,0X63,0X73,0X00,0X00,0X00,0X00,0XC7,0X7F,0X66,0XE6,0X07,0XFC,
+0XE6,0X63,0X73,0X00,0X00,0X00,0X00,0XC7,0X70,0X66,0XE6,0X03,0XBC,0XE6,0X63,0X73,
+0X00,0X00,0X00,0X00,0XC7,0X3F,0X66,0X7E,0X03,0X9C,0X7E,0X63,0X3F,0X00,0X00,0X00,
+0X00,0XC7,0X1E,0X66,0X3C,0X03,0X98,0X3C,0X63,0X1F,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
+0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,};
+
+
+
 const unsigned char gImage_1in02d[2560] = { /* 0X00,0X02,0X80,0X00,0X50,0X00, */
 const unsigned char gImage_1in02d[2560] = { /* 0X00,0X02,0X80,0X00,0X50,0X00, */
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0C,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0C,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,

+ 3 - 0
STM32/STM32-F103ZET6/User/Examples/ImageData.h

@@ -31,6 +31,9 @@
 
 
 #ifndef _IMAGEDATA_H_
 #ifndef _IMAGEDATA_H_
 #define _IMAGEDATA_H_
 #define _IMAGEDATA_H_
+
+extern const unsigned char gImage_100X50[];
+
 extern const unsigned char gImage_1in02d[];
 extern const unsigned char gImage_1in02d[];
 
 
 extern const unsigned char gImage_1in54[];
 extern const unsigned char gImage_1in54[];

+ 30 - 0
STM32/STM32-F103ZET6/User/GUI/GUI_Paint.c

@@ -777,6 +777,36 @@ void Paint_DrawBitMap(const unsigned char* image_buffer)
     }
     }
 }
 }
 
 
+/******************************************************************************
+function:	paste monochrome bitmap to a frame buff
+parameter:
+    image_buffer :A picture data converted to a bitmap
+    xStart: The starting x coordinate
+    yStart: The starting y coordinate
+    imageWidth: Original image width
+    imageHeight: Original image height
+    flipColor: Whether the color is reversed
+info:
+    Use this function to paste image data into a buffer
+******************************************************************************/
+void Paint_DrawBitMap_Paste(const unsigned char* image_buffer, UWORD xStart, UWORD yStart, UWORD imageWidth, UWORD imageHeight, UBYTE flipColor)
+{
+    UBYTE color, srcImage;
+    UWORD x, y;
+    UWORD width = (imageWidth%8==0 ? imageWidth/8 : imageWidth/8+1);
+    
+    for (y = 0; y < imageHeight; y++) {
+        for (x = 0; x < imageWidth; x++) {
+            srcImage = image_buffer[y*width + x/8];
+            if(flipColor)
+                color = (((srcImage<<(x%8) & 0x80) == 0) ? 1 : 0);
+            else
+                color = (((srcImage<<(x%8) & 0x80) == 0) ? 0 : 1);
+            Paint_SetPixel(x+xStart, y+yStart, color);
+        }
+    }
+}
+
 ///******************************************************************************
 ///******************************************************************************
 //function:	SDisplay half of monochrome bitmap
 //function:	SDisplay half of monochrome bitmap
 //parameter:
 //parameter:

+ 4 - 0
STM32/STM32-F103ZET6/User/GUI/GUI_Paint.h

@@ -116,6 +116,9 @@ typedef enum {
 #define FONT_FOREGROUND     BLACK
 #define FONT_FOREGROUND     BLACK
 #define FONT_BACKGROUND     WHITE
 #define FONT_BACKGROUND     WHITE
 
 
+#define TRUE 1
+#define FALSE 0
+
 //4 Gray level
 //4 Gray level
 #define  GRAY1 0x03 //Blackest
 #define  GRAY1 0x03 //Blackest
 #define  GRAY2 0x02
 #define  GRAY2 0x02
@@ -200,6 +203,7 @@ void Paint_DrawTime(UWORD Xstart, UWORD Ystart, PAINT_TIME *pTime, sFONT* Font,
 
 
 //pic
 //pic
 void Paint_DrawBitMap(const unsigned char* image_buffer);
 void Paint_DrawBitMap(const unsigned char* image_buffer);
+void Paint_DrawBitMap_Paste(const unsigned char* image_buffer, UWORD Xstart, UWORD Ystart, UWORD imageWidth, UWORD imageHeight, UBYTE flipColor);
 //void Paint_DrawBitMap_Half(const unsigned char* image_buffer, UBYTE Region);
 //void Paint_DrawBitMap_Half(const unsigned char* image_buffer, UBYTE Region);
 //void Paint_DrawBitMap_OneQuarter(const unsigned char* image_buffer, UBYTE Region);
 //void Paint_DrawBitMap_OneQuarter(const unsigned char* image_buffer, UBYTE Region);
 //void Paint_DrawBitMap_OneEighth(const unsigned char* image_buffer, UBYTE Region);
 //void Paint_DrawBitMap_OneEighth(const unsigned char* image_buffer, UBYTE Region);

部分文件因文件數量過多而無法顯示