Pārlūkot izejas kodu

Added the function of pasting image data to buffer (STM32)

SSYYL 3 gadi atpakaļ
vecāks
revīzija
7a1e6ae4cc

+ 5 - 0
.vscode/settings.json

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

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 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>
     <GroupName>GUI</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <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>
 *** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\Program Files\keil5\ARM\ARMCC\Bin'
 Build target 'epd-demo'
-compiling main.c...
+compiling EPD_2in66_test.c...
+compiling GUI_Paint.c...
 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...
 "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>
 
    * Component: ARM::CMSIS:CORE:5.4.0
-Build Time Elapsed:  00:00:02
+Build Time Elapsed:  00:00:03
 </pre>
 </body>
 </html>

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 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 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 epd_2in66_test.o(.text) for EPD_2in66_test
     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 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 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_100X50
     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 font12cn.o(.data) for Font12CN
@@ -1011,7 +1013,6 @@ Section Cross References
 
 Removing Unused input sections from the image.
 
-    Removing startup_stm32f103xe.o(HEAP), (36864 bytes).
     Removing main.o(.rev16_text), (4 bytes).
     Removing main.o(.revsh_text), (4 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), (5630 bytes).
     Removing imagedata.o(.constdata), (5630 bytes).
-    Removing imagedata.o(.constdata), (5630 bytes).
     Removing imagedata.o(.constdata), (33606 bytes).
     Removing imagedata.o(.constdata), (128000 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(.revsh_text), (4 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(.revsh_text), (4 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(.revsh_text), (4 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(.revsh_text), (4 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(.revsh_text), (4 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(.revsh_text), (4 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(.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(.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(.revsh_text), (4 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 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
     ../clib/microlib/division.c              0x00000000   Number         0  uldiv.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  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  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  entry8a.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/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  llshl.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  mallocra.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/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  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  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  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/stdio/streams.c         0x00000000   Number         0  stdout.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)
     .text                                    0x08000144   Section       36  startup_stm32f103xe.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
 
@@ -1965,192 +1976,242 @@ Image Symbol Table
     WWDG_IRQHandler                          0x0800015f   Thumb Code     0  startup_stm32f103xe.o(.text)
     Error_Handler                            0x08000169   Thumb Code     8  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
 
-  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
 
     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
-    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
 
-    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
 
+       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
-       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
-        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
        548         12          0          0          0      30674   stm32f1xx_hal_cortex.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
 
     ----------------------------------------------------------------------
-     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          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
         30          0          0          0          0          0   handlers.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
+         0          0          0          8          0          0   mvars.o
        472         14          0          0          0        184   printf3.o
          0          0          0          4          0          0   stdout.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)
 
     ----------------------------------------------------------------------
 
       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   
 
-     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_Clear(WHITE);
     Paint_DrawBitMap(gImage_2in66);
-
+    Paint_DrawBitMap_Paste(gImage_100X50, 10, 10, 100, 50, TRUE);
     EPD_2IN66_Display(BlackImage);
     DEV_Delay_ms(2000);
 #endif
@@ -92,8 +92,8 @@ int EPD_2in66_test(void)
     Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE);
     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);
     DEV_Delay_ms(4000);   

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

@@ -30,6 +30,52 @@
 ******************************************************************************/
 
 #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, */
 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,

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

@@ -31,6 +31,9 @@
 
 #ifndef _IMAGEDATA_H_
 #define _IMAGEDATA_H_
+
+extern const unsigned char gImage_100X50[];
+
 extern const unsigned char gImage_1in02d[];
 
 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
 //parameter:

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

@@ -116,6 +116,9 @@ typedef enum {
 #define FONT_FOREGROUND     BLACK
 #define FONT_BACKGROUND     WHITE
 
+#define TRUE 1
+#define FALSE 0
+
 //4 Gray level
 #define  GRAY1 0x03 //Blackest
 #define  GRAY2 0x02
@@ -200,6 +203,7 @@ void Paint_DrawTime(UWORD Xstart, UWORD Ystart, PAINT_TIME *pTime, sFONT* Font,
 
 //pic
 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_OneQuarter(const unsigned char* image_buffer, UBYTE Region);
 //void Paint_DrawBitMap_OneEighth(const unsigned char* image_buffer, UBYTE Region);

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels