diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..fa7bfda --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "imagedata.h": "c" + } +} \ No newline at end of file diff --git a/Arduino/epd1in54_V2/epd1in54_V2.cpp b/Arduino/epd1in54_V2/epd1in54_V2.cpp index c071a20..7df047b 100644 --- a/Arduino/epd1in54_V2/epd1in54_V2.cpp +++ b/Arduino/epd1in54_V2/epd1in54_V2.cpp @@ -79,30 +79,6 @@ unsigned char WF_PARTIAL_1IN54_0[159] = 0x02,0x17,0x41,0xB0,0x32,0x28, }; -// waveform partial refresh(quality) -// unsigned char WF_PARTIAL_1IN54_1[159] = -// { -// 0x0,0x00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -// 0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -// 0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -// 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -// 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -// 0xA,0x0,0x0,0x0,0x0,0x0,0x1, -// 0x1,0x0,0x0,0x0,0x0,0x0,0x0, -// 0x0,0x0,0x0,0x0,0x0,0x0,0x0, -// 0x0,0x0,0x0,0x0,0x0,0x0,0x0, -// 0x0,0x0,0x0,0x0,0x0,0x0,0x0, -// 0x0,0x0,0x0,0x0,0x0,0x0,0x0, -// 0x0,0x0,0x0,0x0,0x0,0x0,0x0, -// 0x0,0x0,0x0,0x0,0x0,0x0,0x0, -// 0x0,0x0,0x0,0x0,0x0,0x0,0x0, -// 0x0,0x0,0x0,0x0,0x0,0x0,0x0, -// 0x0,0x0,0x0,0x0,0x0,0x0,0x0, -// 0x0,0x0,0x0,0x0,0x0,0x0,0x0, -// 0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0, -// 0x22,0x17,0x41,0x0,0x32,0x20, -// }; - Epd::~Epd() { }; diff --git a/Arduino/epd2in13_V3/epd2in13_V3.cpp b/Arduino/epd2in13_V3/epd2in13_V3.cpp new file mode 100644 index 0000000..2ad2c06 --- /dev/null +++ b/Arduino/epd2in13_V3/epd2in13_V3.cpp @@ -0,0 +1,432 @@ +/***************************************************************************** +* | File : epd2in13_V3.cpp +* | Author : Waveshare team +* | Function : 2.13inch e-paper V3 +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2021-11-01 +* | Info : +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include +#include "epd2in13_V3.h" + +const unsigned char lut_full_update[]= { + 0x80, 0x4A, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x40, 0x4A, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x80, 0x4A, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x40, 0x4A, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF, 0x0, 0x0, 0xF, 0x0, 0x0, 0x2, + 0xF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, + 0x22, 0x17, 0x41, 0x0, 0x32, 0x36 +}; + +const unsigned char lut_partial_update[]= { + 0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x14,0x0,0x0,0x0,0x0,0x0,0x0, + 0x1,0x0,0x0,0x0,0x0,0x0,0x0, + 0x1,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0, + 0x22,0x17,0x41,0x00,0x32,0x36, +}; + +Epd::~Epd() +{ +}; + +/****************************************************************************** +function : Pin definition +parameter: +******************************************************************************/ +Epd::Epd() +{ + reset_pin = RST_PIN; + dc_pin = DC_PIN; + cs_pin = CS_PIN; + busy_pin = BUSY_PIN; + width = EPD_WIDTH; + height = EPD_HEIGHT; +}; + +/****************************************************************************** +function : send command +parameter: + command : Command register +******************************************************************************/ +void Epd::SendCommand(unsigned char command) +{ + DigitalWrite(dc_pin, LOW); + SpiTransfer(command); +} + +/****************************************************************************** +function : send data +parameter: + Data : Write data +******************************************************************************/ +void Epd::SendData(unsigned char data) +{ + DigitalWrite(dc_pin, HIGH); + SpiTransfer(data); +} + +/****************************************************************************** +function : Wait until the busy_pin goes LOW +parameter: +******************************************************************************/ +void Epd::WaitUntilIdle(void) +{ + while(1) { //LOW: idle, HIGH: busy + if(DigitalRead(busy_pin) == 0) + break; + DelayMs(10); + } +} + +/****************************************************************************** +function : Setting the display window +parameter: + Xstart : X-axis starting position + Ystart : Y-axis starting position + Xend : End position of X-axis + Yend : End position of Y-axis +******************************************************************************/ +void Epd::SetWindows(unsigned char Xstart, unsigned char Ystart, unsigned char Xend, unsigned char Yend) +{ + SendCommand(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION + SendData((Xstart>>3) & 0xFF); + SendData((Xend>>3) & 0xFF); + + SendCommand(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION + SendData(Ystart & 0xFF); + SendData((Ystart >> 8) & 0xFF); + SendData(Yend & 0xFF); + SendData((Yend >> 8) & 0xFF); +} + +/****************************************************************************** +function : Set Cursor +parameter: + Xstart : X-axis starting position + Ystart : Y-axis starting position +******************************************************************************/ +void Epd::SetCursor(unsigned char Xstart, unsigned char Ystart) +{ + SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER + SendData(Xstart & 0xFF); + + SendCommand(0x4F); // SET_RAM_Y_ADDRESS_COUNTER + SendData(Ystart & 0xFF); + SendData((Ystart >> 8) & 0xFF); +} + +/****************************************************************************** +function : Send lut data and configuration +parameter: + lut : lut data +******************************************************************************/ +void Epd::Lut(unsigned char *lut) +{ + unsigned char count; + SendCommand(0x32); + for(count = 0; count < 153; count++) { + SendData(lut[count]); + } + + SendCommand(0x3f); + SendData(*(lut+153)); + SendCommand(0x03); // gate voltage + SendData(*(lut+154)); + SendCommand(0x04); // source voltage + SendData(*(lut+155)); // VSH + SendData(*(lut+156)); // VSH2 + SendData(*(lut+157)); // VSL + SendCommand(0x2c); // VCOM + SendData(*(lut+158)); +} + +/****************************************************************************** +function : Initialize the e-Paper register +parameter: + Mode : Mode selection +******************************************************************************/ +int Epd::Init(char Mode) +{ + /* this calls the peripheral hardware interface, see epdif */ + if (IfInit() != 0) { + return -1; + } + + Reset(); + + int count; + if(Mode == FULL) { + WaitUntilIdle(); + SendCommand(0x12); // soft reset + WaitUntilIdle(); + + SendCommand(0x01); //Driver output control + SendData(0xF9); + SendData(0x00); + SendData(0x00); + + SendCommand(0x11); //data entry mode + SendData(0x03); + + SetWindows(0, 0, EPD_WIDTH-1, EPD_HEIGHT-1); + SetCursor(0, 0); + + SendCommand(0x3C); //BorderWavefrom + SendData(0x05); + + SendCommand(0x21); // Display update control + SendData(0x00); + SendData(0x80); + + SendCommand(0x18); //Read built-in temperature sensor + SendData(0x80); + + WaitUntilIdle(); + Lut(lut_full_update); + } else if(Mode == PART) { + + DigitalWrite(reset_pin, LOW); //module reset + DelayMs(1); + DigitalWrite(reset_pin, HIGH); + + Lut(lut_partial_update); + + SendCommand(0x37); + SendData(0x00); + SendData(0x00); + SendData(0x00); + SendData(0x00); + SendData(0x00); + SendData(0x40); + SendData(0x00); + SendData(0x00); + SendData(0x00); + SendData(0x00); + + SendCommand(0x3C); //BorderWavefrom + SendData(0x80); + + SendCommand(0x22); //Display Update Sequence Option + SendData(0xC0); // Enable clock and Enable analog + SendCommand(0x20); //Activate Display Update Sequence + WaitUntilIdle(); + + SetWindows(0, 0, EPD_WIDTH-1, EPD_HEIGHT-1); + SetCursor(0, 0); + } else { + return -1; + } + + return 0; +} + +/****************************************************************************** +function : Software reset +parameter: +******************************************************************************/ +void Epd::Reset(void) +{ + DigitalWrite(reset_pin, HIGH); + DelayMs(20); + DigitalWrite(reset_pin, LOW); //module reset + DelayMs(2); + DigitalWrite(reset_pin, HIGH); + DelayMs(20); +} + +/****************************************************************************** +function : Clear screen +parameter: +******************************************************************************/ +void Epd::Clear(void) +{ + int w, h; + w = (EPD_WIDTH % 8 == 0)? (EPD_WIDTH / 8 ): (EPD_WIDTH / 8 + 1); + h = EPD_HEIGHT; + SendCommand(0x24); + for (int j = 0; j < h; j++) { + for (int i = 0; i < w; i++) { + SendData(0xff); + } + } + + //DISPLAY REFRESH + SendCommand(0x22); + SendData(0xC7); + SendCommand(0x20); + WaitUntilIdle(); +} + +/****************************************************************************** +function : Sends the image buffer in RAM to e-Paper and displays +parameter: + frame_buffer : Image data +******************************************************************************/ +void Epd::Display(const unsigned char* frame_buffer) +{ + int w = (EPD_WIDTH % 8 == 0)? (EPD_WIDTH / 8 ): (EPD_WIDTH / 8 + 1); + int h = EPD_HEIGHT; + + if (frame_buffer != NULL) { + SendCommand(0x24); + for (int j = 0; j < h; j++) { + for (int i = 0; i < w; i++) { + SendData(pgm_read_byte(&frame_buffer[i + j * w])); + } + } + } + + //DISPLAY REFRESH + SendCommand(0x22); + SendData(0xC7); + SendCommand(0x20); + WaitUntilIdle(); +} + +/****************************************************************************** +function : Refresh a base image +parameter: + frame_buffer : Image data +******************************************************************************/ +void Epd::DisplayPartBaseImage(const unsigned char* frame_buffer) +{ + int w = (EPD_WIDTH % 8 == 0)? (EPD_WIDTH / 8 ): (EPD_WIDTH / 8 + 1); + int h = EPD_HEIGHT; + + if (frame_buffer != NULL) { + SendCommand(0x24); + for (int j = 0; j < h; j++) { + for (int i = 0; i < w; i++) { + SendData(pgm_read_byte(&frame_buffer[i + j * w])); + } + } + + SendCommand(0x26); + for (int j = 0; j < h; j++) { + for (int i = 0; i < w; i++) { + SendData(pgm_read_byte(&frame_buffer[i + j * w])); + } + } + } + + //DISPLAY REFRESH + SendCommand(0x22); + SendData(0xC7); + SendCommand(0x20); + WaitUntilIdle(); +} + +/****************************************************************************** +function : Sends the image buffer in RAM to e-Paper and partial refresh +parameter: + frame_buffer : Image data +******************************************************************************/ +void Epd::DisplayPart(const unsigned char* frame_buffer) +{ + int w = (EPD_WIDTH % 8 == 0)? (EPD_WIDTH / 8 ): (EPD_WIDTH / 8 + 1); + int h = EPD_HEIGHT; + + if (frame_buffer != NULL) { + SendCommand(0x24); + for (int j = 0; j < h; j++) { + for (int i = 0; i < w; i++) { + SendData(pgm_read_byte(&frame_buffer[i + j * w])); + } + } + } + + //DISPLAY REFRESH + SendCommand(0x22); + SendData(0x0f); + SendCommand(0x20); + WaitUntilIdle(); +} + +/****************************************************************************** +function : Clear screen +parameter: +******************************************************************************/ +void Epd::ClearPart(void) +{ + int w, h; + w = (EPD_WIDTH % 8 == 0)? (EPD_WIDTH / 8 ): (EPD_WIDTH / 8 + 1); + h = EPD_HEIGHT; + SendCommand(0x24); + for (int j = 0; j < h; j++) { + for (int i = 0; i < w; i++) { + SendData(0xff); + } + } + + //DISPLAY REFRESH + SendCommand(0x22); + SendData(0x0f); + SendCommand(0x20); + WaitUntilIdle(); +} + +/****************************************************************************** +function : Enter sleep mode +parameter: +******************************************************************************/ +void Epd::Sleep() +{ + SendCommand(0x10); //enter deep sleep + SendData(0x01); + DelayMs(200); + + DigitalWrite(reset_pin, LOW); +} + +/* END OF FILE */ + + diff --git a/Arduino/epd2in13_V3/epd2in13_V3.h b/Arduino/epd2in13_V3/epd2in13_V3.h new file mode 100644 index 0000000..855b45d --- /dev/null +++ b/Arduino/epd2in13_V3/epd2in13_V3.h @@ -0,0 +1,74 @@ +/***************************************************************************** +* | File : epd2in13_V3.h +* | Author : Waveshare team +* | Function : 2.13inch e-paper V3 +* | Info : +*---------------- +* | This version: V1.0 +* | Date : 2021-11-01 +* | Info : +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ + +#ifndef epd2in13_V3 +#define epd2in13_V3 + +#include "epdif.h" + +// Display resolution +#define EPD_WIDTH 122 +#define EPD_HEIGHT 250 + +#define FULL 0 +#define PART 1 + +class Epd : EpdIf { +public: + unsigned long width; + unsigned long height; + + Epd(); + ~Epd(); + int Init(char Mode); + void SendCommand(unsigned char command); + void SendData(unsigned char data); + void WaitUntilIdle(void); + void SetWindows(unsigned char Xstart, unsigned char Ystart, unsigned char Xend, unsigned char Yend); + void SetCursor(unsigned char Xstart, unsigned char Ystart); + void Lut(unsigned char *lut); + void Reset(void); + void Clear(void); + void Display(const unsigned char* frame_buffer); + void DisplayPartBaseImage(const unsigned char* frame_buffer); + void DisplayPart(const unsigned char* frame_buffer); + void ClearPart(void); + + void Sleep(void); +private: + unsigned int reset_pin; + unsigned int dc_pin; + unsigned int cs_pin; + unsigned int busy_pin; +}; + +#endif /* EPD2IN13_V3_H */ + +/* END OF FILE */ diff --git a/Arduino/epd2in13_V3/epd2in13_V3.ino b/Arduino/epd2in13_V3/epd2in13_V3.ino new file mode 100644 index 0000000..2340d1c --- /dev/null +++ b/Arduino/epd2in13_V3/epd2in13_V3.ino @@ -0,0 +1,37 @@ +#include +#include "epd2in13_V3.h" +#include "imagedata.h" + +Epd epd; + +void setup() +{ + // put your setup code here, to run once: + Serial.begin(115200); + Serial.println("epd FULL"); + epd.Init(FULL); + epd.Display(IMAGE_DATA); + + Serial.println("epd PART"); + epd.DisplayPartBaseImage(IMAGE_DATA); + char i = 0; + for (i = 0; i < 10; i++) { + Serial.println("e-Paper PART IMAGE_DATA"); + epd.Init(PART); + epd.DisplayPart(IMAGE_DATA); + Serial.println("e-Paper PART Clear"); + epd.Init(PART); + epd.ClearPart(); + } + + epd.Init(FULL); + Serial.println("e-Paper clear and sleep"); + epd.Clear(); + epd.Sleep(); + +} + +void loop() +{ + +} diff --git a/Arduino/epd2in13_V3/epdif.cpp b/Arduino/epd2in13_V3/epdif.cpp new file mode 100644 index 0000000..5c84f51 --- /dev/null +++ b/Arduino/epd2in13_V3/epdif.cpp @@ -0,0 +1,65 @@ +/** + * @filename : epdif.cpp + * @brief : Implements EPD interface functions + * Users have to implement all the functions in epdif.cpp + * @author : Yehui from Waveshare + * + * Copyright (C) Waveshare August 10 2017 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documnetation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "epdif.h" +#include + +EpdIf::EpdIf() { +}; + +EpdIf::~EpdIf() { +}; + +void EpdIf::DigitalWrite(int pin, int value) { + digitalWrite(pin, value); +} + +int EpdIf::DigitalRead(int pin) { + return digitalRead(pin); +} + +void EpdIf::DelayMs(unsigned int delaytime) { + delay(delaytime); +} + +void EpdIf::SpiTransfer(unsigned char data) { + digitalWrite(CS_PIN, LOW); + SPI.transfer(data); + digitalWrite(CS_PIN, HIGH); +} + +int EpdIf::IfInit(void) { + pinMode(CS_PIN, OUTPUT); + pinMode(RST_PIN, OUTPUT); + pinMode(DC_PIN, OUTPUT); + pinMode(BUSY_PIN, INPUT); + + SPI.begin(); + SPI.beginTransaction(SPISettings(2000000, MSBFIRST, SPI_MODE0)); + return 0; +} + diff --git a/Arduino/epd2in13_V3/epdif.h b/Arduino/epd2in13_V3/epdif.h new file mode 100644 index 0000000..3c55313 --- /dev/null +++ b/Arduino/epd2in13_V3/epdif.h @@ -0,0 +1,51 @@ +/** + * @filename : epdif.h + * @brief : Header file of epdif.cpp providing EPD interface functions + * Users have to implement all the functions in epdif.cpp + * @author : Yehui from Waveshare + * + * Copyright (C) Waveshare August 10 2017 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documnetation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef EPDIF_H +#define EPDIF_H + +#include + +// Pin definition +#define RST_PIN 8 +#define DC_PIN 9 +#define CS_PIN 10 +#define BUSY_PIN 7 + +class EpdIf { +public: + EpdIf(void); + ~EpdIf(void); + + static int IfInit(void); + static void DigitalWrite(int pin, int value); + static int DigitalRead(int pin); + static void DelayMs(unsigned int delaytime); + static void SpiTransfer(unsigned char data); +}; + +#endif diff --git a/Arduino/epd2in13_V3/epdpaint.cpp b/Arduino/epd2in13_V3/epdpaint.cpp new file mode 100644 index 0000000..859b964 --- /dev/null +++ b/Arduino/epd2in13_V3/epdpaint.cpp @@ -0,0 +1,342 @@ +/** + * @filename : epdpaint.cpp + * @brief : Paint tools + * @author : Yehui from Waveshare + * + * Copyright (C) Waveshare September 9 2017 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documnetation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include +#include "epdpaint.h" + +Paint::Paint(unsigned char* image, int width, int height) { + this->rotate = ROTATE_0; + this->image = image; + /* 1 byte = 8 pixels, so the width should be the multiple of 8 */ + this->width = width % 8 ? width + 8 - (width % 8) : width; + this->height = height; +} + +Paint::~Paint() { +} + +/** + * @brief: clear the image + */ +void Paint::Clear(int colored) { + for (int x = 0; x < this->width; x++) { + for (int y = 0; y < this->height; y++) { + DrawAbsolutePixel(x, y, colored); + } + } +} + +/** + * @brief: this draws a pixel by absolute coordinates. + * this function won't be affected by the rotate parameter. + */ +void Paint::DrawAbsolutePixel(int x, int y, int colored) { + if (x < 0 || x >= this->width || y < 0 || y >= this->height) { + return; + } + if (IF_INVERT_COLOR) { + if (colored) { + image[(x + y * this->width) / 8] |= 0x80 >> (x % 8); + } else { + image[(x + y * this->width) / 8] &= ~(0x80 >> (x % 8)); + } + } else { + if (colored) { + image[(x + y * this->width) / 8] &= ~(0x80 >> (x % 8)); + } else { + image[(x + y * this->width) / 8] |= 0x80 >> (x % 8); + } + } +} + +/** + * @brief: Getters and Setters + */ +unsigned char* Paint::GetImage(void) { + return this->image; +} + +int Paint::GetWidth(void) { + return this->width; +} + +void Paint::SetWidth(int width) { + this->width = width % 8 ? width + 8 - (width % 8) : width; +} + +int Paint::GetHeight(void) { + return this->height; +} + +void Paint::SetHeight(int height) { + this->height = height; +} + +int Paint::GetRotate(void) { + return this->rotate; +} + +void Paint::SetRotate(int rotate){ + this->rotate = rotate; +} + +/** + * @brief: this draws a pixel by the coordinates + */ +void Paint::DrawPixel(int x, int y, int colored) { + int point_temp; + if (this->rotate == ROTATE_0) { + if(x < 0 || x >= this->width || y < 0 || y >= this->height) { + return; + } + DrawAbsolutePixel(x, y, colored); + } else if (this->rotate == ROTATE_90) { + if(x < 0 || x >= this->height || y < 0 || y >= this->width) { + return; + } + point_temp = x; + x = this->width - y; + y = point_temp; + DrawAbsolutePixel(x, y, colored); + } else if (this->rotate == ROTATE_180) { + if(x < 0 || x >= this->width || y < 0 || y >= this->height) { + return; + } + x = this->width - x; + y = this->height - y; + DrawAbsolutePixel(x, y, colored); + } else if (this->rotate == ROTATE_270) { + if(x < 0 || x >= this->height || y < 0 || y >= this->width) { + return; + } + point_temp = x; + x = y; + y = this->height - point_temp; + DrawAbsolutePixel(x, y, colored); + } +} + +/** + * @brief: this draws a charactor on the frame buffer but not refresh + */ +void Paint::DrawCharAt(int x, int y, char ascii_char, sFONT* font, int colored) { + int i, j; + unsigned int char_offset = (ascii_char - ' ') * font->Height * (font->Width / 8 + (font->Width % 8 ? 1 : 0)); + const unsigned char* ptr = &font->table[char_offset]; + + for (j = 0; j < font->Height; j++) { + for (i = 0; i < font->Width; i++) { + if (pgm_read_byte(ptr) & (0x80 >> (i % 8))) { + DrawPixel(x + i, y + j, colored); + } + if (i % 8 == 7) { + ptr++; + } + } + if (font->Width % 8 != 0) { + ptr++; + } + } +} + +/** +* @brief: this displays a string on the frame buffer but not refresh +*/ +void Paint::DrawStringAt(int x, int y, const char* text, sFONT* font, int colored) { + const char* p_text = text; + unsigned int counter = 0; + int refcolumn = x; + + /* Send the string character by character on EPD */ + while (*p_text != 0) { + /* Display one character on EPD */ + DrawCharAt(refcolumn, y, *p_text, font, colored); + /* Decrement the column position by 16 */ + refcolumn += font->Width; + /* Point on the next character */ + p_text++; + counter++; + } +} + +/** +* @brief: this draws a line on the frame buffer +*/ +void Paint::DrawLine(int x0, int y0, int x1, int y1, int colored) { + /* Bresenham algorithm */ + int dx = x1 - x0 >= 0 ? x1 - x0 : x0 - x1; + int sx = x0 < x1 ? 1 : -1; + int dy = y1 - y0 <= 0 ? y1 - y0 : y0 - y1; + int sy = y0 < y1 ? 1 : -1; + int err = dx + dy; + + while((x0 != x1) && (y0 != y1)) { + DrawPixel(x0, y0 , colored); + if (2 * err >= dy) { + err += dy; + x0 += sx; + } + if (2 * err <= dx) { + err += dx; + y0 += sy; + } + } +} + +/** +* @brief: this draws a horizontal line on the frame buffer +*/ +void Paint::DrawHorizontalLine(int x, int y, int line_width, int colored) { + int i; + for (i = x; i < x + line_width; i++) { + DrawPixel(i, y, colored); + } +} + +/** +* @brief: this draws a vertical line on the frame buffer +*/ +void Paint::DrawVerticalLine(int x, int y, int line_height, int colored) { + int i; + for (i = y; i < y + line_height; i++) { + DrawPixel(x, i, colored); + } +} + +/** +* @brief: this draws a rectangle +*/ +void Paint::DrawRectangle(int x0, int y0, int x1, int y1, int colored) { + int min_x, min_y, max_x, max_y; + min_x = x1 > x0 ? x0 : x1; + max_x = x1 > x0 ? x1 : x0; + min_y = y1 > y0 ? y0 : y1; + max_y = y1 > y0 ? y1 : y0; + + DrawHorizontalLine(min_x, min_y, max_x - min_x + 1, colored); + DrawHorizontalLine(min_x, max_y, max_x - min_x + 1, colored); + DrawVerticalLine(min_x, min_y, max_y - min_y + 1, colored); + DrawVerticalLine(max_x, min_y, max_y - min_y + 1, colored); +} + +/** +* @brief: this draws a filled rectangle +*/ +void Paint::DrawFilledRectangle(int x0, int y0, int x1, int y1, int colored) { + int min_x, min_y, max_x, max_y; + int i; + min_x = x1 > x0 ? x0 : x1; + max_x = x1 > x0 ? x1 : x0; + min_y = y1 > y0 ? y0 : y1; + max_y = y1 > y0 ? y1 : y0; + + for (i = min_x; i <= max_x; i++) { + DrawVerticalLine(i, min_y, max_y - min_y + 1, colored); + } +} + +/** +* @brief: this draws a circle +*/ +void Paint::DrawCircle(int x, int y, int radius, int colored) { + /* Bresenham algorithm */ + int x_pos = -radius; + int y_pos = 0; + int err = 2 - 2 * radius; + int e2; + + do { + DrawPixel(x - x_pos, y + y_pos, colored); + DrawPixel(x + x_pos, y + y_pos, colored); + DrawPixel(x + x_pos, y - y_pos, colored); + DrawPixel(x - x_pos, y - y_pos, colored); + e2 = err; + if (e2 <= y_pos) { + err += ++y_pos * 2 + 1; + if(-x_pos == y_pos && e2 <= x_pos) { + e2 = 0; + } + } + if (e2 > x_pos) { + err += ++x_pos * 2 + 1; + } + } while (x_pos <= 0); +} + +/** +* @brief: this draws a filled circle +*/ +void Paint::DrawFilledCircle(int x, int y, int radius, int colored) { + /* Bresenham algorithm */ + int x_pos = -radius; + int y_pos = 0; + int err = 2 - 2 * radius; + int e2; + + do { + DrawPixel(x - x_pos, y + y_pos, colored); + DrawPixel(x + x_pos, y + y_pos, colored); + DrawPixel(x + x_pos, y - y_pos, colored); + DrawPixel(x - x_pos, y - y_pos, colored); + DrawHorizontalLine(x + x_pos, y + y_pos, 2 * (-x_pos) + 1, colored); + DrawHorizontalLine(x + x_pos, y - y_pos, 2 * (-x_pos) + 1, colored); + e2 = err; + if (e2 <= y_pos) { + err += ++y_pos * 2 + 1; + if(-x_pos == y_pos && e2 <= x_pos) { + e2 = 0; + } + } + if(e2 > x_pos) { + err += ++x_pos * 2 + 1; + } + } while(x_pos <= 0); +} + +/* END OF FILE */ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Arduino/epd2in13_V3/epdpaint.h b/Arduino/epd2in13_V3/epdpaint.h new file mode 100644 index 0000000..17b366f --- /dev/null +++ b/Arduino/epd2in13_V3/epdpaint.h @@ -0,0 +1,75 @@ +/** + * @filename : epdpaint.h + * @brief : Header file for epdpaint.cpp + * @author : Yehui from Waveshare + * + * Copyright (C) Waveshare July 28 2017 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documnetation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef EPDPAINT_H +#define EPDPAINT_H + +// Display orientation +#define ROTATE_0 0 +#define ROTATE_90 1 +#define ROTATE_180 2 +#define ROTATE_270 3 + +// Color inverse. 1 or 0 = set or reset a bit if set a colored pixel +#define IF_INVERT_COLOR 1 + +#include "fonts.h" + +class Paint { +public: + Paint(unsigned char* image, int width, int height); + ~Paint(); + void Clear(int colored); + int GetWidth(void); + void SetWidth(int width); + int GetHeight(void); + void SetHeight(int height); + int GetRotate(void); + void SetRotate(int rotate); + unsigned char* GetImage(void); + void DrawAbsolutePixel(int x, int y, int colored); + void DrawPixel(int x, int y, int colored); + void DrawCharAt(int x, int y, char ascii_char, sFONT* font, int colored); + void DrawStringAt(int x, int y, const char* text, sFONT* font, int colored); + void DrawLine(int x0, int y0, int x1, int y1, int colored); + void DrawHorizontalLine(int x, int y, int width, int colored); + void DrawVerticalLine(int x, int y, int height, int colored); + void DrawRectangle(int x0, int y0, int x1, int y1, int colored); + void DrawFilledRectangle(int x0, int y0, int x1, int y1, int colored); + void DrawCircle(int x, int y, int radius, int colored); + void DrawFilledCircle(int x, int y, int radius, int colored); + +private: + unsigned char* image; + int width; + int height; + int rotate; +}; + +#endif + +/* END OF FILE */ + diff --git a/Arduino/epd2in13_V3/font12.c b/Arduino/epd2in13_V3/font12.c new file mode 100644 index 0000000..9963fe3 --- /dev/null +++ b/Arduino/epd2in13_V3/font12.c @@ -0,0 +1,1385 @@ +/** + ****************************************************************************** + * @file Font12.c + * @author MCD Application Team + * @version V1.0.0 + * @date 18-February-2014 + * @brief This file provides text Font12 for STM32xx-EVAL's LCD driver. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2014 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "fonts.h" +#include + +// +// Font data for Courier New 12pt +// + +const uint8_t Font12_Table[] PROGMEM = +{ + // @0 ' ' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + + // @12 '!' (7 pixels wide) + 0x00, // + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x00, // + 0x00, // + 0x10, // # + 0x00, // + 0x00, // + 0x00, // + + // @24 '"' (7 pixels wide) + 0x00, // + 0x6C, // ## ## + 0x48, // # # + 0x48, // # # + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + + // @36 '#' (7 pixels wide) + 0x00, // + 0x14, // # # + 0x14, // # # + 0x28, // # # + 0x7C, // ##### + 0x28, // # # + 0x7C, // ##### + 0x28, // # # + 0x50, // # # + 0x50, // # # + 0x00, // + 0x00, // + + // @48 '$' (7 pixels wide) + 0x00, // + 0x10, // # + 0x38, // ### + 0x40, // # + 0x40, // # + 0x38, // ### + 0x48, // # # + 0x70, // ### + 0x10, // # + 0x10, // # + 0x00, // + 0x00, // + + // @60 '%' (7 pixels wide) + 0x00, // + 0x20, // # + 0x50, // # # + 0x20, // # + 0x0C, // ## + 0x70, // ### + 0x08, // # + 0x14, // # # + 0x08, // # + 0x00, // + 0x00, // + 0x00, // + + // @72 '&' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x18, // ## + 0x20, // # + 0x20, // # + 0x54, // # # # + 0x48, // # # + 0x34, // ## # + 0x00, // + 0x00, // + 0x00, // + + // @84 ''' (7 pixels wide) + 0x00, // + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + + // @96 '(' (7 pixels wide) + 0x00, // + 0x08, // # + 0x08, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x08, // # + 0x08, // # + 0x00, // + + // @108 ')' (7 pixels wide) + 0x00, // + 0x20, // # + 0x20, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x20, // # + 0x20, // # + 0x00, // + + // @120 '*' (7 pixels wide) + 0x00, // + 0x10, // # + 0x7C, // ##### + 0x10, // # + 0x28, // # # + 0x28, // # # + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + + // @132 '+' (7 pixels wide) + 0x00, // + 0x00, // + 0x10, // # + 0x10, // # + 0x10, // # + 0xFE, // ####### + 0x10, // # + 0x10, // # + 0x10, // # + 0x00, // + 0x00, // + 0x00, // + + // @144 ',' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x18, // ## + 0x10, // # + 0x30, // ## + 0x20, // # + 0x00, // + + // @156 '-' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x7C, // ##### + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + + // @168 '.' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x30, // ## + 0x30, // ## + 0x00, // + 0x00, // + 0x00, // + + // @180 '/' (7 pixels wide) + 0x00, // + 0x04, // # + 0x04, // # + 0x08, // # + 0x08, // # + 0x10, // # + 0x10, // # + 0x20, // # + 0x20, // # + 0x40, // # + 0x00, // + 0x00, // + + // @192 '0' (7 pixels wide) + 0x00, // + 0x38, // ### + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x38, // ### + 0x00, // + 0x00, // + 0x00, // + + // @204 '1' (7 pixels wide) + 0x00, // + 0x30, // ## + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x7C, // ##### + 0x00, // + 0x00, // + 0x00, // + + // @216 '2' (7 pixels wide) + 0x00, // + 0x38, // ### + 0x44, // # # + 0x04, // # + 0x08, // # + 0x10, // # + 0x20, // # + 0x44, // # # + 0x7C, // ##### + 0x00, // + 0x00, // + 0x00, // + + // @228 '3' (7 pixels wide) + 0x00, // + 0x38, // ### + 0x44, // # # + 0x04, // # + 0x18, // ## + 0x04, // # + 0x04, // # + 0x44, // # # + 0x38, // ### + 0x00, // + 0x00, // + 0x00, // + + // @240 '4' (7 pixels wide) + 0x00, // + 0x0C, // ## + 0x14, // # # + 0x14, // # # + 0x24, // # # + 0x44, // # # + 0x7E, // ###### + 0x04, // # + 0x0E, // ### + 0x00, // + 0x00, // + 0x00, // + + // @252 '5' (7 pixels wide) + 0x00, // + 0x3C, // #### + 0x20, // # + 0x20, // # + 0x38, // ### + 0x04, // # + 0x04, // # + 0x44, // # # + 0x38, // ### + 0x00, // + 0x00, // + 0x00, // + + // @264 '6' (7 pixels wide) + 0x00, // + 0x1C, // ### + 0x20, // # + 0x40, // # + 0x78, // #### + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x38, // ### + 0x00, // + 0x00, // + 0x00, // + + // @276 '7' (7 pixels wide) + 0x00, // + 0x7C, // ##### + 0x44, // # # + 0x04, // # + 0x08, // # + 0x08, // # + 0x08, // # + 0x10, // # + 0x10, // # + 0x00, // + 0x00, // + 0x00, // + + // @288 '8' (7 pixels wide) + 0x00, // + 0x38, // ### + 0x44, // # # + 0x44, // # # + 0x38, // ### + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x38, // ### + 0x00, // + 0x00, // + 0x00, // + + // @300 '9' (7 pixels wide) + 0x00, // + 0x38, // ### + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x3C, // #### + 0x04, // # + 0x08, // # + 0x70, // ### + 0x00, // + 0x00, // + 0x00, // + + // @312 ':' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x30, // ## + 0x30, // ## + 0x00, // + 0x00, // + 0x30, // ## + 0x30, // ## + 0x00, // + 0x00, // + 0x00, // + + // @324 ';' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x18, // ## + 0x18, // ## + 0x00, // + 0x00, // + 0x18, // ## + 0x30, // ## + 0x20, // # + 0x00, // + 0x00, // + + // @336 '<' (7 pixels wide) + 0x00, // + 0x00, // + 0x0C, // ## + 0x10, // # + 0x60, // ## + 0x80, // # + 0x60, // ## + 0x10, // # + 0x0C, // ## + 0x00, // + 0x00, // + 0x00, // + + // @348 '=' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x7C, // ##### + 0x00, // + 0x7C, // ##### + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + + // @360 '>' (7 pixels wide) + 0x00, // + 0x00, // + 0xC0, // ## + 0x20, // # + 0x18, // ## + 0x04, // # + 0x18, // ## + 0x20, // # + 0xC0, // ## + 0x00, // + 0x00, // + 0x00, // + + // @372 '?' (7 pixels wide) + 0x00, // + 0x00, // + 0x18, // ## + 0x24, // # # + 0x04, // # + 0x08, // # + 0x10, // # + 0x00, // + 0x30, // ## + 0x00, // + 0x00, // + 0x00, // + + // @384 '@' (7 pixels wide) + 0x38, // ### + 0x44, // # # + 0x44, // # # + 0x4C, // # ## + 0x54, // # # # + 0x54, // # # # + 0x4C, // # ## + 0x40, // # + 0x44, // # # + 0x38, // ### + 0x00, // + 0x00, // + + // @396 'A' (7 pixels wide) + 0x00, // + 0x30, // ## + 0x10, // # + 0x28, // # # + 0x28, // # # + 0x28, // # # + 0x7C, // ##### + 0x44, // # # + 0xEE, // ### ### + 0x00, // + 0x00, // + 0x00, // + + // @408 'B' (7 pixels wide) + 0x00, // + 0xF8, // ##### + 0x44, // # # + 0x44, // # # + 0x78, // #### + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0xF8, // ##### + 0x00, // + 0x00, // + 0x00, // + + // @420 'C' (7 pixels wide) + 0x00, // + 0x3C, // #### + 0x44, // # # + 0x40, // # + 0x40, // # + 0x40, // # + 0x40, // # + 0x44, // # # + 0x38, // ### + 0x00, // + 0x00, // + 0x00, // + + // @432 'D' (7 pixels wide) + 0x00, // + 0xF0, // #### + 0x48, // # # + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x48, // # # + 0xF0, // #### + 0x00, // + 0x00, // + 0x00, // + + // @444 'E' (7 pixels wide) + 0x00, // + 0xFC, // ###### + 0x44, // # # + 0x50, // # # + 0x70, // ### + 0x50, // # # + 0x40, // # + 0x44, // # # + 0xFC, // ###### + 0x00, // + 0x00, // + 0x00, // + + // @456 'F' (7 pixels wide) + 0x00, // + 0x7E, // ###### + 0x22, // # # + 0x28, // # # + 0x38, // ### + 0x28, // # # + 0x20, // # + 0x20, // # + 0x70, // ### + 0x00, // + 0x00, // + 0x00, // + + // @468 'G' (7 pixels wide) + 0x00, // + 0x3C, // #### + 0x44, // # # + 0x40, // # + 0x40, // # + 0x4E, // # ### + 0x44, // # # + 0x44, // # # + 0x38, // ### + 0x00, // + 0x00, // + 0x00, // + + // @480 'H' (7 pixels wide) + 0x00, // + 0xEE, // ### ### + 0x44, // # # + 0x44, // # # + 0x7C, // ##### + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0xEE, // ### ### + 0x00, // + 0x00, // + 0x00, // + + // @492 'I' (7 pixels wide) + 0x00, // + 0x7C, // ##### + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x7C, // ##### + 0x00, // + 0x00, // + 0x00, // + + // @504 'J' (7 pixels wide) + 0x00, // + 0x3C, // #### + 0x08, // # + 0x08, // # + 0x08, // # + 0x48, // # # + 0x48, // # # + 0x48, // # # + 0x30, // ## + 0x00, // + 0x00, // + 0x00, // + + // @516 'K' (7 pixels wide) + 0x00, // + 0xEE, // ### ### + 0x44, // # # + 0x48, // # # + 0x50, // # # + 0x70, // ### + 0x48, // # # + 0x44, // # # + 0xE6, // ### ## + 0x00, // + 0x00, // + 0x00, // + + // @528 'L' (7 pixels wide) + 0x00, // + 0x70, // ### + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x24, // # # + 0x24, // # # + 0x7C, // ##### + 0x00, // + 0x00, // + 0x00, // + + // @540 'M' (7 pixels wide) + 0x00, // + 0xEE, // ### ### + 0x6C, // ## ## + 0x6C, // ## ## + 0x54, // # # # + 0x54, // # # # + 0x44, // # # + 0x44, // # # + 0xEE, // ### ### + 0x00, // + 0x00, // + 0x00, // + + // @552 'N' (7 pixels wide) + 0x00, // + 0xEE, // ### ### + 0x64, // ## # + 0x64, // ## # + 0x54, // # # # + 0x54, // # # # + 0x54, // # # # + 0x4C, // # ## + 0xEC, // ### ## + 0x00, // + 0x00, // + 0x00, // + + // @564 'O' (7 pixels wide) + 0x00, // + 0x38, // ### + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x38, // ### + 0x00, // + 0x00, // + 0x00, // + + // @576 'P' (7 pixels wide) + 0x00, // + 0x78, // #### + 0x24, // # # + 0x24, // # # + 0x24, // # # + 0x38, // ### + 0x20, // # + 0x20, // # + 0x70, // ### + 0x00, // + 0x00, // + 0x00, // + + // @588 'Q' (7 pixels wide) + 0x00, // + 0x38, // ### + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x38, // ### + 0x1C, // ### + 0x00, // + 0x00, // + + // @600 'R' (7 pixels wide) + 0x00, // + 0xF8, // ##### + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x78, // #### + 0x48, // # # + 0x44, // # # + 0xE2, // ### # + 0x00, // + 0x00, // + 0x00, // + + // @612 'S' (7 pixels wide) + 0x00, // + 0x34, // ## # + 0x4C, // # ## + 0x40, // # + 0x38, // ### + 0x04, // # + 0x04, // # + 0x64, // ## # + 0x58, // # ## + 0x00, // + 0x00, // + 0x00, // + + // @624 'T' (7 pixels wide) + 0x00, // + 0xFE, // ####### + 0x92, // # # # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x38, // ### + 0x00, // + 0x00, // + 0x00, // + + // @636 'U' (7 pixels wide) + 0x00, // + 0xEE, // ### ### + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x38, // ### + 0x00, // + 0x00, // + 0x00, // + + // @648 'V' (7 pixels wide) + 0x00, // + 0xEE, // ### ### + 0x44, // # # + 0x44, // # # + 0x28, // # # + 0x28, // # # + 0x28, // # # + 0x10, // # + 0x10, // # + 0x00, // + 0x00, // + 0x00, // + + // @660 'W' (7 pixels wide) + 0x00, // + 0xEE, // ### ### + 0x44, // # # + 0x44, // # # + 0x54, // # # # + 0x54, // # # # + 0x54, // # # # + 0x54, // # # # + 0x28, // # # + 0x00, // + 0x00, // + 0x00, // + + // @672 'X' (7 pixels wide) + 0x00, // + 0xC6, // ## ## + 0x44, // # # + 0x28, // # # + 0x10, // # + 0x10, // # + 0x28, // # # + 0x44, // # # + 0xC6, // ## ## + 0x00, // + 0x00, // + 0x00, // + + // @684 'Y' (7 pixels wide) + 0x00, // + 0xEE, // ### ### + 0x44, // # # + 0x28, // # # + 0x28, // # # + 0x10, // # + 0x10, // # + 0x10, // # + 0x38, // ### + 0x00, // + 0x00, // + 0x00, // + + // @696 'Z' (7 pixels wide) + 0x00, // + 0x7C, // ##### + 0x44, // # # + 0x08, // # + 0x10, // # + 0x10, // # + 0x20, // # + 0x44, // # # + 0x7C, // ##### + 0x00, // + 0x00, // + 0x00, // + + // @708 '[' (7 pixels wide) + 0x00, // + 0x38, // ### + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x38, // ### + 0x00, // + + // @720 '\' (7 pixels wide) + 0x00, // + 0x40, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x10, // # + 0x10, // # + 0x08, // # + 0x08, // # + 0x08, // # + 0x00, // + 0x00, // + + // @732 ']' (7 pixels wide) + 0x00, // + 0x38, // ### + 0x08, // # + 0x08, // # + 0x08, // # + 0x08, // # + 0x08, // # + 0x08, // # + 0x08, // # + 0x08, // # + 0x38, // ### + 0x00, // + + // @744 '^' (7 pixels wide) + 0x00, // + 0x10, // # + 0x10, // # + 0x28, // # # + 0x44, // # # + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + + // @756 '_' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0xFE, // ####### + + // @768 '`' (7 pixels wide) + 0x00, // + 0x10, // # + 0x08, // # + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + + // @780 'a' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x38, // ### + 0x44, // # # + 0x3C, // #### + 0x44, // # # + 0x44, // # # + 0x3E, // ##### + 0x00, // + 0x00, // + 0x00, // + + // @792 'b' (7 pixels wide) + 0x00, // + 0xC0, // ## + 0x40, // # + 0x58, // # ## + 0x64, // ## # + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0xF8, // ##### + 0x00, // + 0x00, // + 0x00, // + + // @804 'c' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x3C, // #### + 0x44, // # # + 0x40, // # + 0x40, // # + 0x44, // # # + 0x38, // ### + 0x00, // + 0x00, // + 0x00, // + + // @816 'd' (7 pixels wide) + 0x00, // + 0x0C, // ## + 0x04, // # + 0x34, // ## # + 0x4C, // # ## + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x3E, // ##### + 0x00, // + 0x00, // + 0x00, // + + // @828 'e' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x38, // ### + 0x44, // # # + 0x7C, // ##### + 0x40, // # + 0x40, // # + 0x3C, // #### + 0x00, // + 0x00, // + 0x00, // + + // @840 'f' (7 pixels wide) + 0x00, // + 0x1C, // ### + 0x20, // # + 0x7C, // ##### + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x7C, // ##### + 0x00, // + 0x00, // + 0x00, // + + // @852 'g' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x36, // ## ## + 0x4C, // # ## + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x3C, // #### + 0x04, // # + 0x38, // ### + 0x00, // + + // @864 'h' (7 pixels wide) + 0x00, // + 0xC0, // ## + 0x40, // # + 0x58, // # ## + 0x64, // ## # + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0xEE, // ### ### + 0x00, // + 0x00, // + 0x00, // + + // @876 'i' (7 pixels wide) + 0x00, // + 0x10, // # + 0x00, // + 0x70, // ### + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x7C, // ##### + 0x00, // + 0x00, // + 0x00, // + + // @888 'j' (7 pixels wide) + 0x00, // + 0x10, // # + 0x00, // + 0x78, // #### + 0x08, // # + 0x08, // # + 0x08, // # + 0x08, // # + 0x08, // # + 0x08, // # + 0x70, // ### + 0x00, // + + // @900 'k' (7 pixels wide) + 0x00, // + 0xC0, // ## + 0x40, // # + 0x5C, // # ### + 0x48, // # # + 0x70, // ### + 0x50, // # # + 0x48, // # # + 0xDC, // ## ### + 0x00, // + 0x00, // + 0x00, // + + // @912 'l' (7 pixels wide) + 0x00, // + 0x30, // ## + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x7C, // ##### + 0x00, // + 0x00, // + 0x00, // + + // @924 'm' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0xE8, // ### # + 0x54, // # # # + 0x54, // # # # + 0x54, // # # # + 0x54, // # # # + 0xFE, // ####### + 0x00, // + 0x00, // + 0x00, // + + // @936 'n' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0xD8, // ## ## + 0x64, // ## # + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0xEE, // ### ### + 0x00, // + 0x00, // + 0x00, // + + // @948 'o' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x38, // ### + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x38, // ### + 0x00, // + 0x00, // + 0x00, // + + // @960 'p' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0xD8, // ## ## + 0x64, // ## # + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x78, // #### + 0x40, // # + 0xE0, // ### + 0x00, // + + // @972 'q' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x36, // ## ## + 0x4C, // # ## + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x3C, // #### + 0x04, // # + 0x0E, // ### + 0x00, // + + // @984 'r' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x6C, // ## ## + 0x30, // ## + 0x20, // # + 0x20, // # + 0x20, // # + 0x7C, // ##### + 0x00, // + 0x00, // + 0x00, // + + // @996 's' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x3C, // #### + 0x44, // # # + 0x38, // ### + 0x04, // # + 0x44, // # # + 0x78, // #### + 0x00, // + 0x00, // + 0x00, // + + // @1008 't' (7 pixels wide) + 0x00, // + 0x00, // + 0x20, // # + 0x7C, // ##### + 0x20, // # + 0x20, // # + 0x20, // # + 0x22, // # # + 0x1C, // ### + 0x00, // + 0x00, // + 0x00, // + + // @1020 'u' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0xCC, // ## ## + 0x44, // # # + 0x44, // # # + 0x44, // # # + 0x4C, // # ## + 0x36, // ## ## + 0x00, // + 0x00, // + 0x00, // + + // @1032 'v' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0xEE, // ### ### + 0x44, // # # + 0x44, // # # + 0x28, // # # + 0x28, // # # + 0x10, // # + 0x00, // + 0x00, // + 0x00, // + + // @1044 'w' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0xEE, // ### ### + 0x44, // # # + 0x54, // # # # + 0x54, // # # # + 0x54, // # # # + 0x28, // # # + 0x00, // + 0x00, // + 0x00, // + + // @1056 'x' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0xCC, // ## ## + 0x48, // # # + 0x30, // ## + 0x30, // ## + 0x48, // # # + 0xCC, // ## ## + 0x00, // + 0x00, // + 0x00, // + + // @1068 'y' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0xEE, // ### ### + 0x44, // # # + 0x24, // # # + 0x28, // # # + 0x18, // ## + 0x10, // # + 0x10, // # + 0x78, // #### + 0x00, // + + // @1080 'z' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x7C, // ##### + 0x48, // # # + 0x10, // # + 0x20, // # + 0x44, // # # + 0x7C, // ##### + 0x00, // + 0x00, // + 0x00, // + + // @1092 '{' (7 pixels wide) + 0x00, // + 0x08, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x20, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x08, // # + 0x00, // + + // @1104 '|' (7 pixels wide) + 0x00, // + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x00, // + 0x00, // + + // @1116 '}' (7 pixels wide) + 0x00, // + 0x20, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x08, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x20, // # + 0x00, // + + // @1128 '~' (7 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x24, // # # + 0x58, // # ## + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // +}; + +sFONT Font12 = { + Font12_Table, + 7, /* Width */ + 12, /* Height */ +}; + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Arduino/epd2in13_V3/font16.c b/Arduino/epd2in13_V3/font16.c new file mode 100644 index 0000000..a36db6e --- /dev/null +++ b/Arduino/epd2in13_V3/font16.c @@ -0,0 +1,1765 @@ +/** + ****************************************************************************** + * @file font16.c + * @author MCD Application Team + * @version V1.0.0 + * @date 18-February-2014 + * @brief This file provides text font16 for STM32xx-EVAL's LCD driver. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2014 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "fonts.h" +#include + +// +// Font data for Courier New 12pt +// + +const uint8_t Font16_Table[] PROGMEM = +{ + // @0 ' ' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @32 '!' (11 pixels wide) + 0x00, 0x00, // + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x00, 0x00, // + 0x0C, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @64 '"' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x1D, 0xC0, // ### ### + 0x1D, 0xC0, // ### ### + 0x08, 0x80, // # # + 0x08, 0x80, // # # + 0x08, 0x80, // # # + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @96 '#' (11 pixels wide) + 0x00, 0x00, // + 0x0D, 0x80, // ## ## + 0x0D, 0x80, // ## ## + 0x0D, 0x80, // ## ## + 0x0D, 0x80, // ## ## + 0x3F, 0xC0, // ######## + 0x1B, 0x00, // ## ## + 0x3F, 0xC0, // ######## + 0x1B, 0x00, // ## ## + 0x1B, 0x00, // ## ## + 0x1B, 0x00, // ## ## + 0x1B, 0x00, // ## ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @128 '$' (11 pixels wide) + 0x04, 0x00, // # + 0x1F, 0x80, // ###### + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x38, 0x00, // ### + 0x1E, 0x00, // #### + 0x0F, 0x00, // #### + 0x03, 0x80, // ### + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x3F, 0x00, // ###### + 0x04, 0x00, // # + 0x04, 0x00, // # + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @160 '%' (11 pixels wide) + 0x00, 0x00, // + 0x18, 0x00, // ## + 0x24, 0x00, // # # + 0x24, 0x00, // # # + 0x18, 0xC0, // ## ## + 0x07, 0x80, // #### + 0x1E, 0x00, // #### + 0x31, 0x80, // ## ## + 0x02, 0x40, // # # + 0x02, 0x40, // # # + 0x01, 0x80, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @192 '&' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x0F, 0x00, // #### + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x0C, 0x00, // ## + 0x1D, 0x80, // ### ## + 0x37, 0x00, // ## ### + 0x33, 0x00, // ## ## + 0x1D, 0x80, // ### ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @224 ''' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x07, 0x00, // ### + 0x07, 0x00, // ### + 0x02, 0x00, // # + 0x02, 0x00, // # + 0x02, 0x00, // # + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @256 '(' (11 pixels wide) + 0x00, 0x00, // + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x06, 0x00, // ## + 0x0E, 0x00, // ### + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0E, 0x00, // ### + 0x06, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @288 ')' (11 pixels wide) + 0x00, 0x00, // + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x0C, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x0C, 0x00, // ## + 0x1C, 0x00, // ### + 0x18, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @320 '*' (11 pixels wide) + 0x00, 0x00, // + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x3F, 0xC0, // ######## + 0x3F, 0xC0, // ######## + 0x0F, 0x00, // #### + 0x1F, 0x80, // ###### + 0x19, 0x80, // ## ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @352 '+' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x04, 0x00, // # + 0x04, 0x00, // # + 0x04, 0x00, // # + 0x3F, 0x80, // ####### + 0x04, 0x00, // # + 0x04, 0x00, // # + 0x04, 0x00, // # + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @384 ',' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x06, 0x00, // ## + 0x04, 0x00, // # + 0x0C, 0x00, // ## + 0x08, 0x00, // # + 0x08, 0x00, // # + 0x00, 0x00, // + 0x00, 0x00, // + + // @416 '-' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x3F, 0x80, // ####### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @448 '.' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @480 '/' (11 pixels wide) + 0x00, 0xC0, // ## + 0x00, 0xC0, // ## + 0x01, 0x80, // ## + 0x01, 0x80, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x06, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x30, 0x00, // ## + 0x30, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @512 '0' (11 pixels wide) + 0x00, 0x00, // + 0x0E, 0x00, // ### + 0x1B, 0x00, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x1B, 0x00, // ## ## + 0x0E, 0x00, // ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @544 '1' (11 pixels wide) + 0x00, 0x00, // + 0x06, 0x00, // ## + 0x3E, 0x00, // ##### + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x3F, 0xC0, // ######## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @576 '2' (11 pixels wide) + 0x00, 0x00, // + 0x0F, 0x00, // #### + 0x19, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x03, 0x00, // ## + 0x06, 0x00, // ## + 0x0C, 0x00, // ## + 0x18, 0x00, // ## + 0x30, 0x00, // ## + 0x3F, 0x80, // ####### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @608 '3' (11 pixels wide) + 0x00, 0x00, // + 0x3F, 0x00, // ###### + 0x61, 0x80, // ## ## + 0x01, 0x80, // ## + 0x03, 0x00, // ## + 0x1F, 0x00, // ##### + 0x03, 0x80, // ### + 0x01, 0x80, // ## + 0x01, 0x80, // ## + 0x61, 0x80, // ## ## + 0x3F, 0x00, // ###### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @640 '4' (11 pixels wide) + 0x00, 0x00, // + 0x07, 0x00, // ### + 0x07, 0x00, // ### + 0x0F, 0x00, // #### + 0x0B, 0x00, // # ## + 0x1B, 0x00, // ## ## + 0x13, 0x00, // # ## + 0x33, 0x00, // ## ## + 0x3F, 0x80, // ####### + 0x03, 0x00, // ## + 0x0F, 0x80, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @672 '5' (11 pixels wide) + 0x00, 0x00, // + 0x1F, 0x80, // ###### + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x1F, 0x00, // ##### + 0x11, 0x80, // # ## + 0x01, 0x80, // ## + 0x01, 0x80, // ## + 0x21, 0x80, // # ## + 0x1F, 0x00, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @704 '6' (11 pixels wide) + 0x00, 0x00, // + 0x07, 0x80, // #### + 0x1C, 0x00, // ### + 0x18, 0x00, // ## + 0x30, 0x00, // ## + 0x37, 0x00, // ## ### + 0x39, 0x80, // ### ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x19, 0x80, // ## ## + 0x0F, 0x00, // #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @736 '7' (11 pixels wide) + 0x00, 0x00, // + 0x7F, 0x00, // ####### + 0x43, 0x00, // # ## + 0x03, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @768 '8' (11 pixels wide) + 0x00, 0x00, // + 0x1F, 0x00, // ##### + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x1F, 0x00, // ##### + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x1F, 0x00, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @800 '9' (11 pixels wide) + 0x00, 0x00, // + 0x1E, 0x00, // #### + 0x33, 0x00, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x33, 0x80, // ## ### + 0x1D, 0x80, // ### ## + 0x01, 0x80, // ## + 0x03, 0x00, // ## + 0x07, 0x00, // ### + 0x3C, 0x00, // #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @832 ':' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @864 ';' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x06, 0x00, // ## + 0x04, 0x00, // # + 0x08, 0x00, // # + 0x08, 0x00, // # + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @896 '<' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0xC0, // ## + 0x03, 0x00, // ## + 0x04, 0x00, // # + 0x18, 0x00, // ## + 0x60, 0x00, // ## + 0x18, 0x00, // ## + 0x04, 0x00, // # + 0x03, 0x00, // ## + 0x00, 0xC0, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @928 '=' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x7F, 0xC0, // ######### + 0x00, 0x00, // + 0x7F, 0xC0, // ######### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @960 '>' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x60, 0x00, // ## + 0x18, 0x00, // ## + 0x04, 0x00, // # + 0x03, 0x00, // ## + 0x00, 0xC0, // ## + 0x03, 0x00, // ## + 0x04, 0x00, // # + 0x18, 0x00, // ## + 0x60, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @992 '?' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x1F, 0x00, // ##### + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x01, 0x80, // ## + 0x07, 0x00, // ### + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x00, 0x00, // + 0x0C, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1024 '@' (11 pixels wide) + 0x00, 0x00, // + 0x0E, 0x00, // ### + 0x11, 0x00, // # # + 0x21, 0x00, // # # + 0x21, 0x00, // # # + 0x27, 0x00, // # ### + 0x29, 0x00, // # # # + 0x29, 0x00, // # # # + 0x27, 0x00, // # ### + 0x20, 0x00, // # + 0x11, 0x00, // # # + 0x0E, 0x00, // ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1056 'A' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x3F, 0x00, // ###### + 0x0F, 0x00, // #### + 0x09, 0x00, // # # + 0x19, 0x80, // ## ## + 0x19, 0x80, // ## ## + 0x1F, 0x80, // ###### + 0x30, 0xC0, // ## ## + 0x30, 0xC0, // ## ## + 0x79, 0xE0, // #### #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1088 'B' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x7F, 0x00, // ####### + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x3F, 0x00, // ###### + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x7F, 0x00, // ####### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1120 'C' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x1F, 0x40, // ##### # + 0x30, 0xC0, // ## ## + 0x60, 0x40, // ## # + 0x60, 0x00, // ## + 0x60, 0x00, // ## + 0x60, 0x00, // ## + 0x60, 0x40, // ## # + 0x30, 0x80, // ## # + 0x1F, 0x00, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1152 'D' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x7F, 0x00, // ####### + 0x31, 0x80, // ## ## + 0x30, 0xC0, // ## ## + 0x30, 0xC0, // ## ## + 0x30, 0xC0, // ## ## + 0x30, 0xC0, // ## ## + 0x30, 0xC0, // ## ## + 0x31, 0x80, // ## ## + 0x7F, 0x00, // ####### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1184 'E' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x7F, 0x80, // ######## + 0x30, 0x80, // ## # + 0x30, 0x80, // ## # + 0x32, 0x00, // ## # + 0x3E, 0x00, // ##### + 0x32, 0x00, // ## # + 0x30, 0x80, // ## # + 0x30, 0x80, // ## # + 0x7F, 0x80, // ######## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1216 'F' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x7F, 0xC0, // ######### + 0x30, 0x40, // ## # + 0x30, 0x40, // ## # + 0x32, 0x00, // ## # + 0x3E, 0x00, // ##### + 0x32, 0x00, // ## # + 0x30, 0x00, // ## + 0x30, 0x00, // ## + 0x7C, 0x00, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1248 'G' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x1E, 0x80, // #### # + 0x31, 0x80, // ## ## + 0x60, 0x80, // ## # + 0x60, 0x00, // ## + 0x60, 0x00, // ## + 0x67, 0xC0, // ## ##### + 0x61, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x1F, 0x00, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1280 'H' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x7B, 0xC0, // #### #### + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x3F, 0x80, // ####### + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x7B, 0xC0, // #### #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1312 'I' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x3F, 0xC0, // ######## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x3F, 0xC0, // ######## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1344 'J' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x1F, 0xC0, // ####### + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x63, 0x00, // ## ## + 0x63, 0x00, // ## ## + 0x63, 0x00, // ## ## + 0x3E, 0x00, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1376 'K' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x7B, 0xC0, // #### #### + 0x31, 0x80, // ## ## + 0x33, 0x00, // ## ## + 0x36, 0x00, // ## ## + 0x3C, 0x00, // #### + 0x3E, 0x00, // ##### + 0x33, 0x00, // ## ## + 0x31, 0x80, // ## ## + 0x79, 0xC0, // #### ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1408 'L' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x7E, 0x00, // ###### + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x18, 0x40, // ## # + 0x18, 0x40, // ## # + 0x18, 0x40, // ## # + 0x7F, 0xC0, // ######### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1440 'M' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0xE0, 0xE0, // ### ### + 0x60, 0xC0, // ## ## + 0x71, 0xC0, // ### ### + 0x7B, 0xC0, // #### #### + 0x6A, 0xC0, // ## # # ## + 0x6E, 0xC0, // ## ### ## + 0x64, 0xC0, // ## # ## + 0x60, 0xC0, // ## ## + 0xFB, 0xE0, // ##### ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1472 'N' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x73, 0xC0, // ### #### + 0x31, 0x80, // ## ## + 0x39, 0x80, // ### ## + 0x3D, 0x80, // #### ## + 0x35, 0x80, // ## # ## + 0x37, 0x80, // ## #### + 0x33, 0x80, // ## ### + 0x31, 0x80, // ## ## + 0x79, 0x80, // #### ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1504 'O' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x1F, 0x00, // ##### + 0x31, 0x80, // ## ## + 0x60, 0xC0, // ## ## + 0x60, 0xC0, // ## ## + 0x60, 0xC0, // ## ## + 0x60, 0xC0, // ## ## + 0x60, 0xC0, // ## ## + 0x31, 0x80, // ## ## + 0x1F, 0x00, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1536 'P' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x7F, 0x00, // ####### + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x3F, 0x00, // ###### + 0x30, 0x00, // ## + 0x30, 0x00, // ## + 0x7E, 0x00, // ###### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1568 'Q' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x1F, 0x00, // ##### + 0x31, 0x80, // ## ## + 0x60, 0xC0, // ## ## + 0x60, 0xC0, // ## ## + 0x60, 0xC0, // ## ## + 0x60, 0xC0, // ## ## + 0x60, 0xC0, // ## ## + 0x31, 0x80, // ## ## + 0x1F, 0x00, // ##### + 0x0C, 0xC0, // ## ## + 0x1F, 0x80, // ###### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1600 'R' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x7F, 0x00, // ####### + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x3E, 0x00, // ##### + 0x33, 0x00, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x7C, 0xE0, // ##### ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1632 'S' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x1F, 0x80, // ###### + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x38, 0x00, // ### + 0x1F, 0x00, // ##### + 0x03, 0x80, // ### + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x3F, 0x00, // ###### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1664 'T' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x7F, 0x80, // ######## + 0x4C, 0x80, // # ## # + 0x4C, 0x80, // # ## # + 0x4C, 0x80, // # ## # + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x3F, 0x00, // ###### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1696 'U' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x7B, 0xC0, // #### #### + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x1F, 0x00, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1728 'V' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x7B, 0xC0, // #### #### + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x1B, 0x00, // ## ## + 0x1B, 0x00, // ## ## + 0x1B, 0x00, // ## ## + 0x0A, 0x00, // # # + 0x0E, 0x00, // ### + 0x0E, 0x00, // ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1760 'W' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0xFB, 0xE0, // ##### ##### + 0x60, 0xC0, // ## ## + 0x64, 0xC0, // ## # ## + 0x6E, 0xC0, // ## ### ## + 0x6E, 0xC0, // ## ### ## + 0x2A, 0x80, // # # # # + 0x3B, 0x80, // ### ### + 0x3B, 0x80, // ### ### + 0x31, 0x80, // ## ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1792 'X' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x7B, 0xC0, // #### #### + 0x31, 0x80, // ## ## + 0x1B, 0x00, // ## ## + 0x0E, 0x00, // ### + 0x0E, 0x00, // ### + 0x0E, 0x00, // ### + 0x1B, 0x00, // ## ## + 0x31, 0x80, // ## ## + 0x7B, 0xC0, // #### #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1824 'Y' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x79, 0xE0, // #### #### + 0x30, 0xC0, // ## ## + 0x19, 0x80, // ## ## + 0x0F, 0x00, // #### + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x1F, 0x80, // ###### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1856 'Z' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x3F, 0x80, // ####### + 0x21, 0x80, // # ## + 0x23, 0x00, // # ## + 0x06, 0x00, // ## + 0x04, 0x00, // # + 0x0C, 0x00, // ## + 0x18, 0x80, // ## # + 0x30, 0x80, // ## # + 0x3F, 0x80, // ####### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1888 '[' (11 pixels wide) + 0x00, 0x00, // + 0x07, 0x80, // #### + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x07, 0x80, // #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1920 '\' (11 pixels wide) + 0x30, 0x00, // ## + 0x30, 0x00, // ## + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x06, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x01, 0x80, // ## + 0x01, 0x80, // ## + 0x00, 0xC0, // ## + 0x00, 0xC0, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1952 ']' (11 pixels wide) + 0x00, 0x00, // + 0x1E, 0x00, // #### + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x1E, 0x00, // #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1984 '^' (11 pixels wide) + 0x04, 0x00, // # + 0x0A, 0x00, // # # + 0x0A, 0x00, // # # + 0x11, 0x00, // # # + 0x20, 0x80, // # # + 0x20, 0x80, // # # + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2016 '_' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0xFF, 0xE0, // ########### + + // @2048 '`' (11 pixels wide) + 0x08, 0x00, // # + 0x04, 0x00, // # + 0x02, 0x00, // # + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2080 'a' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x1F, 0x00, // ##### + 0x01, 0x80, // ## + 0x01, 0x80, // ## + 0x1F, 0x80, // ###### + 0x31, 0x80, // ## ## + 0x33, 0x80, // ## ### + 0x1D, 0xC0, // ### ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2112 'b' (11 pixels wide) + 0x00, 0x00, // + 0x70, 0x00, // ### + 0x30, 0x00, // ## + 0x30, 0x00, // ## + 0x37, 0x00, // ## ### + 0x39, 0x80, // ### ## + 0x30, 0xC0, // ## ## + 0x30, 0xC0, // ## ## + 0x30, 0xC0, // ## ## + 0x39, 0x80, // ### ## + 0x77, 0x00, // ### ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2144 'c' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x1E, 0x80, // #### # + 0x31, 0x80, // ## ## + 0x60, 0x80, // ## # + 0x60, 0x00, // ## + 0x60, 0x80, // ## # + 0x31, 0x80, // ## ## + 0x1F, 0x00, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2176 'd' (11 pixels wide) + 0x00, 0x00, // + 0x03, 0x80, // ### + 0x01, 0x80, // ## + 0x01, 0x80, // ## + 0x1D, 0x80, // ### ## + 0x33, 0x80, // ## ### + 0x61, 0x80, // ## ## + 0x61, 0x80, // ## ## + 0x61, 0x80, // ## ## + 0x33, 0x80, // ## ### + 0x1D, 0xC0, // ### ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2208 'e' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x1F, 0x00, // ##### + 0x31, 0x80, // ## ## + 0x60, 0xC0, // ## ## + 0x7F, 0xC0, // ######### + 0x60, 0x00, // ## + 0x30, 0xC0, // ## ## + 0x1F, 0x80, // ###### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2240 'f' (11 pixels wide) + 0x00, 0x00, // + 0x07, 0xE0, // ###### + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x3F, 0x80, // ####### + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x3F, 0x80, // ####### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2272 'g' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x1D, 0xC0, // ### ### + 0x33, 0x80, // ## ### + 0x61, 0x80, // ## ## + 0x61, 0x80, // ## ## + 0x61, 0x80, // ## ## + 0x33, 0x80, // ## ### + 0x1D, 0x80, // ### ## + 0x01, 0x80, // ## + 0x01, 0x80, // ## + 0x1F, 0x00, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + + // @2304 'h' (11 pixels wide) + 0x00, 0x00, // + 0x70, 0x00, // ### + 0x30, 0x00, // ## + 0x30, 0x00, // ## + 0x37, 0x00, // ## ### + 0x39, 0x80, // ### ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x7B, 0xC0, // #### #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2336 'i' (11 pixels wide) + 0x00, 0x00, // + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x00, 0x00, // + 0x1E, 0x00, // #### + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x3F, 0xC0, // ######## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2368 'j' (11 pixels wide) + 0x00, 0x00, // + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x00, 0x00, // + 0x3F, 0x00, // ###### + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x3E, 0x00, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + + // @2400 'k' (11 pixels wide) + 0x00, 0x00, // + 0x70, 0x00, // ### + 0x30, 0x00, // ## + 0x30, 0x00, // ## + 0x37, 0x80, // ## #### + 0x36, 0x00, // ## ## + 0x3C, 0x00, // #### + 0x3C, 0x00, // #### + 0x36, 0x00, // ## ## + 0x33, 0x00, // ## ## + 0x77, 0xC0, // ### ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2432 'l' (11 pixels wide) + 0x00, 0x00, // + 0x1E, 0x00, // #### + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x3F, 0xC0, // ######## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2464 'm' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x7F, 0x80, // ######## + 0x36, 0xC0, // ## ## ## + 0x36, 0xC0, // ## ## ## + 0x36, 0xC0, // ## ## ## + 0x36, 0xC0, // ## ## ## + 0x36, 0xC0, // ## ## ## + 0x76, 0xE0, // ### ## ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2496 'n' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x77, 0x00, // ### ### + 0x39, 0x80, // ### ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x7B, 0xC0, // #### #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2528 'o' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x1F, 0x00, // ##### + 0x31, 0x80, // ## ## + 0x60, 0xC0, // ## ## + 0x60, 0xC0, // ## ## + 0x60, 0xC0, // ## ## + 0x31, 0x80, // ## ## + 0x1F, 0x00, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2560 'p' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x77, 0x00, // ### ### + 0x39, 0x80, // ### ## + 0x30, 0xC0, // ## ## + 0x30, 0xC0, // ## ## + 0x30, 0xC0, // ## ## + 0x39, 0x80, // ### ## + 0x37, 0x00, // ## ### + 0x30, 0x00, // ## + 0x30, 0x00, // ## + 0x7C, 0x00, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + + // @2592 'q' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x1D, 0xC0, // ### ### + 0x33, 0x80, // ## ### + 0x61, 0x80, // ## ## + 0x61, 0x80, // ## ## + 0x61, 0x80, // ## ## + 0x33, 0x80, // ## ### + 0x1D, 0x80, // ### ## + 0x01, 0x80, // ## + 0x01, 0x80, // ## + 0x07, 0xC0, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + + // @2624 'r' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x7B, 0x80, // #### ### + 0x1C, 0xC0, // ### ## + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x7F, 0x00, // ####### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2656 's' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x1F, 0x80, // ###### + 0x31, 0x80, // ## ## + 0x3C, 0x00, // #### + 0x1F, 0x00, // ##### + 0x03, 0x80, // ### + 0x31, 0x80, // ## ## + 0x3F, 0x00, // ###### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2688 't' (11 pixels wide) + 0x00, 0x00, // + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x7F, 0x00, // ####### + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x18, 0x80, // ## # + 0x0F, 0x00, // #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2720 'u' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x73, 0x80, // ### ### + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x33, 0x80, // ## ### + 0x1D, 0xC0, // ### ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2752 'v' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x7B, 0xC0, // #### #### + 0x31, 0x80, // ## ## + 0x31, 0x80, // ## ## + 0x1B, 0x00, // ## ## + 0x1B, 0x00, // ## ## + 0x0E, 0x00, // ### + 0x0E, 0x00, // ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2784 'w' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0xF1, 0xE0, // #### #### + 0x60, 0xC0, // ## ## + 0x64, 0xC0, // ## # ## + 0x6E, 0xC0, // ## ### ## + 0x3B, 0x80, // ### ### + 0x3B, 0x80, // ### ### + 0x31, 0x80, // ## ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2816 'x' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x7B, 0xC0, // #### #### + 0x1B, 0x00, // ## ## + 0x0E, 0x00, // ### + 0x0E, 0x00, // ### + 0x0E, 0x00, // ### + 0x1B, 0x00, // ## ## + 0x7B, 0xC0, // #### #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2848 'y' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x79, 0xE0, // #### #### + 0x30, 0xC0, // ## ## + 0x19, 0x80, // ## ## + 0x19, 0x80, // ## ## + 0x0B, 0x00, // # ## + 0x0F, 0x00, // #### + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x0C, 0x00, // ## + 0x3E, 0x00, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + + // @2880 'z' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x3F, 0x80, // ####### + 0x21, 0x80, // # ## + 0x03, 0x00, // ## + 0x0E, 0x00, // ### + 0x18, 0x00, // ## + 0x30, 0x80, // ## # + 0x3F, 0x80, // ####### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2912 '{' (11 pixels wide) + 0x00, 0x00, // + 0x06, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x18, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x06, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2944 '|' (11 pixels wide) + 0x00, 0x00, // + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2976 '}' (11 pixels wide) + 0x00, 0x00, // + 0x0C, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x03, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x0C, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @3008 '~' (11 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x18, 0x00, // ## + 0x24, 0x80, // # # # + 0x03, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // +}; + +sFONT Font16 = { + Font16_Table, + 11, /* Width */ + 16, /* Height */ +}; + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Arduino/epd2in13_V3/font20.c b/Arduino/epd2in13_V3/font20.c new file mode 100644 index 0000000..49c8e14 --- /dev/null +++ b/Arduino/epd2in13_V3/font20.c @@ -0,0 +1,2143 @@ +/** + ****************************************************************************** + * @file font20.c + * @author MCD Application Team + * @version V1.0.0 + * @date 18-February-2014 + * @brief This file provides text font20 for STM32xx-EVAL's LCD driver. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2014 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "fonts.h" +#include + +// Character bitmaps for Courier New 15pt +const uint8_t Font20_Table[] PROGMEM = +{ + // @0 ' ' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @40 '!' (14 pixels wide) + 0x00, 0x00, // + 0x07, 0x00, // ### + 0x07, 0x00, // ### + 0x07, 0x00, // ### + 0x07, 0x00, // ### + 0x07, 0x00, // ### + 0x07, 0x00, // ### + 0x07, 0x00, // ### + 0x02, 0x00, // # + 0x02, 0x00, // # + 0x00, 0x00, // + 0x00, 0x00, // + 0x07, 0x00, // ### + 0x07, 0x00, // ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @80 '"' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x1C, 0xE0, // ### ### + 0x1C, 0xE0, // ### ### + 0x1C, 0xE0, // ### ### + 0x08, 0x40, // # # + 0x08, 0x40, // # # + 0x08, 0x40, // # # + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @120 '#' (14 pixels wide) + 0x0C, 0xC0, // ## ## + 0x0C, 0xC0, // ## ## + 0x0C, 0xC0, // ## ## + 0x0C, 0xC0, // ## ## + 0x0C, 0xC0, // ## ## + 0x3F, 0xF0, // ########## + 0x3F, 0xF0, // ########## + 0x0C, 0xC0, // ## ## + 0x0C, 0xC0, // ## ## + 0x3F, 0xF0, // ########## + 0x3F, 0xF0, // ########## + 0x0C, 0xC0, // ## ## + 0x0C, 0xC0, // ## ## + 0x0C, 0xC0, // ## ## + 0x0C, 0xC0, // ## ## + 0x0C, 0xC0, // ## ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @160 '$' (14 pixels wide) + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x07, 0xE0, // ###### + 0x0F, 0xE0, // ####### + 0x18, 0x60, // ## ## + 0x18, 0x00, // ## + 0x1F, 0x00, // ##### + 0x0F, 0xC0, // ###### + 0x00, 0xE0, // ### + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x1F, 0xC0, // ####### + 0x1F, 0x80, // ###### + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @200 '%' (14 pixels wide) + 0x00, 0x00, // + 0x1C, 0x00, // ### + 0x22, 0x00, // # # + 0x22, 0x00, // # # + 0x22, 0x00, // # # + 0x1C, 0x60, // ### ## + 0x01, 0xE0, // #### + 0x0F, 0x80, // ##### + 0x3C, 0x00, // #### + 0x31, 0xC0, // ## ### + 0x02, 0x20, // # # + 0x02, 0x20, // # # + 0x02, 0x20, // # # + 0x01, 0xC0, // ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @240 '&' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x03, 0xE0, // ##### + 0x0F, 0xE0, // ####### + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x06, 0x00, // ## + 0x0F, 0x30, // #### ## + 0x1F, 0xF0, // ######### + 0x19, 0xE0, // ## #### + 0x18, 0xC0, // ## ## + 0x1F, 0xF0, // ######### + 0x07, 0xB0, // #### ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @280 ''' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x03, 0x80, // ### + 0x03, 0x80, // ### + 0x03, 0x80, // ### + 0x01, 0x00, // # + 0x01, 0x00, // # + 0x01, 0x00, // # + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @320 '(' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0xC0, // ## + 0x00, 0xC0, // ## + 0x01, 0x80, // ## + 0x01, 0x80, // ## + 0x01, 0x80, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x01, 0x80, // ## + 0x01, 0x80, // ## + 0x01, 0x80, // ## + 0x00, 0xC0, // ## + 0x00, 0xC0, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @360 ')' (14 pixels wide) + 0x00, 0x00, // + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @400 '*' (14 pixels wide) + 0x00, 0x00, // + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x1B, 0x60, // ## ## ## + 0x1F, 0xE0, // ######## + 0x07, 0x80, // #### + 0x07, 0x80, // #### + 0x0F, 0xC0, // ###### + 0x0C, 0xC0, // ## ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @440 '+' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x3F, 0xF0, // ########## + 0x3F, 0xF0, // ########## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @480 ',' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x03, 0x80, // ### + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x04, 0x00, // # + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @520 '-' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x3F, 0xE0, // ######### + 0x3F, 0xE0, // ######### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @560 '.' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x03, 0x80, // ### + 0x03, 0x80, // ### + 0x03, 0x80, // ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @600 '/' (14 pixels wide) + 0x00, 0x60, // ## + 0x00, 0x60, // ## + 0x00, 0xC0, // ## + 0x00, 0xC0, // ## + 0x00, 0xC0, // ## + 0x01, 0x80, // ## + 0x01, 0x80, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @640 '0' (14 pixels wide) + 0x00, 0x00, // + 0x0F, 0x80, // ##### + 0x1F, 0xC0, // ####### + 0x18, 0xC0, // ## ## + 0x30, 0x60, // ## ## + 0x30, 0x60, // ## ## + 0x30, 0x60, // ## ## + 0x30, 0x60, // ## ## + 0x30, 0x60, // ## ## + 0x30, 0x60, // ## ## + 0x30, 0x60, // ## ## + 0x18, 0xC0, // ## ## + 0x1F, 0xC0, // ####### + 0x0F, 0x80, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @680 '1' (14 pixels wide) + 0x00, 0x00, // + 0x03, 0x00, // ## + 0x1F, 0x00, // ##### + 0x1F, 0x00, // ##### + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x1F, 0xE0, // ######## + 0x1F, 0xE0, // ######## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @720 '2' (14 pixels wide) + 0x00, 0x00, // + 0x0F, 0x80, // ##### + 0x1F, 0xC0, // ####### + 0x38, 0xE0, // ### ### + 0x30, 0x60, // ## ## + 0x00, 0x60, // ## + 0x00, 0xC0, // ## + 0x01, 0x80, // ## + 0x03, 0x00, // ## + 0x06, 0x00, // ## + 0x0C, 0x00, // ## + 0x18, 0x00, // ## + 0x3F, 0xE0, // ######### + 0x3F, 0xE0, // ######### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @760 '3' (14 pixels wide) + 0x00, 0x00, // + 0x0F, 0x80, // ##### + 0x3F, 0xC0, // ######## + 0x30, 0xE0, // ## ### + 0x00, 0x60, // ## + 0x00, 0xE0, // ### + 0x07, 0xC0, // ##### + 0x07, 0xC0, // ##### + 0x00, 0xE0, // ### + 0x00, 0x60, // ## + 0x00, 0x60, // ## + 0x60, 0xE0, // ## ### + 0x7F, 0xC0, // ######### + 0x3F, 0x80, // ####### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @800 '4' (14 pixels wide) + 0x00, 0x00, // + 0x01, 0xC0, // ### + 0x03, 0xC0, // #### + 0x03, 0xC0, // #### + 0x06, 0xC0, // ## ## + 0x0C, 0xC0, // ## ## + 0x0C, 0xC0, // ## ## + 0x18, 0xC0, // ## ## + 0x30, 0xC0, // ## ## + 0x3F, 0xE0, // ######### + 0x3F, 0xE0, // ######### + 0x00, 0xC0, // ## + 0x03, 0xE0, // ##### + 0x03, 0xE0, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @840 '5' (14 pixels wide) + 0x00, 0x00, // + 0x1F, 0xC0, // ####### + 0x1F, 0xC0, // ####### + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x1F, 0x80, // ###### + 0x1F, 0xC0, // ####### + 0x18, 0xE0, // ## ### + 0x00, 0x60, // ## + 0x00, 0x60, // ## + 0x00, 0x60, // ## + 0x30, 0xE0, // ## ### + 0x3F, 0xC0, // ######## + 0x1F, 0x80, // ###### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @880 '6' (14 pixels wide) + 0x00, 0x00, // + 0x03, 0xE0, // ##### + 0x0F, 0xE0, // ####### + 0x1E, 0x00, // #### + 0x18, 0x00, // ## + 0x38, 0x00, // ### + 0x37, 0x80, // ## #### + 0x3F, 0xC0, // ######## + 0x38, 0xE0, // ### ### + 0x30, 0x60, // ## ## + 0x30, 0x60, // ## ## + 0x18, 0xE0, // ## ### + 0x1F, 0xC0, // ####### + 0x07, 0x80, // #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @920 '7' (14 pixels wide) + 0x00, 0x00, // + 0x3F, 0xE0, // ######### + 0x3F, 0xE0, // ######### + 0x30, 0x60, // ## ## + 0x00, 0x60, // ## + 0x00, 0xC0, // ## + 0x00, 0xC0, // ## + 0x00, 0xC0, // ## + 0x01, 0x80, // ## + 0x01, 0x80, // ## + 0x01, 0x80, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @960 '8' (14 pixels wide) + 0x00, 0x00, // + 0x0F, 0x80, // ##### + 0x1F, 0xC0, // ####### + 0x38, 0xE0, // ### ### + 0x30, 0x60, // ## ## + 0x38, 0xE0, // ### ### + 0x1F, 0xC0, // ####### + 0x1F, 0xC0, // ####### + 0x38, 0xE0, // ### ### + 0x30, 0x60, // ## ## + 0x30, 0x60, // ## ## + 0x38, 0xE0, // ### ### + 0x1F, 0xC0, // ####### + 0x0F, 0x80, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1000 '9' (14 pixels wide) + 0x00, 0x00, // + 0x0F, 0x00, // #### + 0x1F, 0xC0, // ####### + 0x38, 0xC0, // ### ## + 0x30, 0x60, // ## ## + 0x30, 0x60, // ## ## + 0x38, 0xE0, // ### ### + 0x1F, 0xE0, // ######## + 0x0F, 0x60, // #### ## + 0x00, 0xE0, // ### + 0x00, 0xC0, // ## + 0x03, 0xC0, // #### + 0x3F, 0x80, // ####### + 0x3E, 0x00, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1040 ':' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x03, 0x80, // ### + 0x03, 0x80, // ### + 0x03, 0x80, // ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x03, 0x80, // ### + 0x03, 0x80, // ### + 0x03, 0x80, // ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1080 ';' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x01, 0xC0, // ### + 0x01, 0xC0, // ### + 0x01, 0xC0, // ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x03, 0x80, // ### + 0x03, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x04, 0x00, // # + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1120 '<' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x30, // ## + 0x00, 0xF0, // #### + 0x03, 0xC0, // #### + 0x07, 0x00, // ### + 0x1C, 0x00, // ### + 0x78, 0x00, // #### + 0x1C, 0x00, // ### + 0x07, 0x00, // ### + 0x03, 0xC0, // #### + 0x00, 0xF0, // #### + 0x00, 0x30, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1160 '=' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x7F, 0xF0, // ########### + 0x7F, 0xF0, // ########### + 0x00, 0x00, // + 0x00, 0x00, // + 0x7F, 0xF0, // ########### + 0x7F, 0xF0, // ########### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1200 '>' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x30, 0x00, // ## + 0x3C, 0x00, // #### + 0x0F, 0x00, // #### + 0x03, 0x80, // ### + 0x00, 0xE0, // ### + 0x00, 0x78, // #### + 0x00, 0xE0, // ### + 0x03, 0x80, // ### + 0x0F, 0x00, // #### + 0x3C, 0x00, // #### + 0x30, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1240 '?' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x0F, 0x80, // ##### + 0x1F, 0xC0, // ####### + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x00, 0x60, // ## + 0x01, 0xC0, // ### + 0x03, 0x80, // ### + 0x03, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x07, 0x00, // ### + 0x07, 0x00, // ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1280 '@' (14 pixels wide) + 0x00, 0x00, // + 0x03, 0x80, // ### + 0x0C, 0x80, // ## # + 0x08, 0x40, // # # + 0x10, 0x40, // # # + 0x10, 0x40, // # # + 0x11, 0xC0, // # ### + 0x12, 0x40, // # # # + 0x12, 0x40, // # # # + 0x12, 0x40, // # # # + 0x11, 0xC0, // # ### + 0x10, 0x00, // # + 0x08, 0x00, // # + 0x08, 0x40, // # # + 0x07, 0x80, // #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1320 'A' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x1F, 0x80, // ###### + 0x1F, 0x80, // ###### + 0x03, 0x80, // ### + 0x06, 0xC0, // ## ## + 0x06, 0xC0, // ## ## + 0x0C, 0xC0, // ## ## + 0x0C, 0x60, // ## ## + 0x1F, 0xE0, // ######## + 0x1F, 0xE0, // ######## + 0x30, 0x30, // ## ## + 0x78, 0x78, // #### #### + 0x78, 0x78, // #### #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1360 'B' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x3F, 0x80, // ####### + 0x3F, 0xC0, // ######## + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x18, 0xE0, // ## ### + 0x1F, 0xC0, // ####### + 0x1F, 0xE0, // ######## + 0x18, 0x70, // ## ### + 0x18, 0x30, // ## ## + 0x18, 0x30, // ## ## + 0x3F, 0xF0, // ########## + 0x3F, 0xE0, // ######### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1400 'C' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x07, 0xB0, // #### ## + 0x0F, 0xF0, // ######## + 0x1C, 0x70, // ### ### + 0x38, 0x30, // ### ## + 0x30, 0x00, // ## + 0x30, 0x00, // ## + 0x30, 0x00, // ## + 0x30, 0x00, // ## + 0x38, 0x30, // ### ## + 0x1C, 0x70, // ### ### + 0x0F, 0xE0, // ####### + 0x07, 0xC0, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1440 'D' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x7F, 0x80, // ######## + 0x7F, 0xC0, // ######### + 0x30, 0xE0, // ## ### + 0x30, 0x70, // ## ### + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x30, 0x70, // ## ### + 0x30, 0xE0, // ## ### + 0x7F, 0xC0, // ######### + 0x7F, 0x80, // ######## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1480 'E' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x3F, 0xF0, // ########## + 0x3F, 0xF0, // ########## + 0x18, 0x30, // ## ## + 0x18, 0x30, // ## ## + 0x19, 0x80, // ## ## + 0x1F, 0x80, // ###### + 0x1F, 0x80, // ###### + 0x19, 0x80, // ## ## + 0x18, 0x30, // ## ## + 0x18, 0x30, // ## ## + 0x3F, 0xF0, // ########## + 0x3F, 0xF0, // ########## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1520 'F' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x3F, 0xF0, // ########## + 0x3F, 0xF0, // ########## + 0x18, 0x30, // ## ## + 0x18, 0x30, // ## ## + 0x19, 0x80, // ## ## + 0x1F, 0x80, // ###### + 0x1F, 0x80, // ###### + 0x19, 0x80, // ## ## + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x3F, 0x00, // ###### + 0x3F, 0x00, // ###### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1560 'G' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x07, 0xB0, // #### ## + 0x1F, 0xF0, // ######### + 0x18, 0x70, // ## ### + 0x30, 0x30, // ## ## + 0x30, 0x00, // ## + 0x30, 0x00, // ## + 0x31, 0xF8, // ## ###### + 0x31, 0xF8, // ## ###### + 0x30, 0x30, // ## ## + 0x18, 0x30, // ## ## + 0x1F, 0xF0, // ######### + 0x07, 0xC0, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1600 'H' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x3C, 0xF0, // #### #### + 0x3C, 0xF0, // #### #### + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x1F, 0xE0, // ######## + 0x1F, 0xE0, // ######## + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x3C, 0xF0, // #### #### + 0x3C, 0xF0, // #### #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1640 'I' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x1F, 0xE0, // ######## + 0x1F, 0xE0, // ######## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x1F, 0xE0, // ######## + 0x1F, 0xE0, // ######## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1680 'J' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x03, 0xF8, // ####### + 0x03, 0xF8, // ####### + 0x00, 0x60, // ## + 0x00, 0x60, // ## + 0x00, 0x60, // ## + 0x00, 0x60, // ## + 0x30, 0x60, // ## ## + 0x30, 0x60, // ## ## + 0x30, 0x60, // ## ## + 0x30, 0xE0, // ## ### + 0x3F, 0xC0, // ######## + 0x0F, 0x80, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1720 'K' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x3E, 0xF8, // ##### ##### + 0x3E, 0xF8, // ##### ##### + 0x18, 0xE0, // ## ### + 0x19, 0x80, // ## ## + 0x1B, 0x00, // ## ## + 0x1F, 0x00, // ##### + 0x1D, 0x80, // ### ## + 0x18, 0xC0, // ## ## + 0x18, 0xC0, // ## ## + 0x18, 0x60, // ## ## + 0x3E, 0x78, // ##### #### + 0x3E, 0x38, // ##### ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1760 'L' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x3F, 0x00, // ###### + 0x3F, 0x00, // ###### + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x30, // ## ## + 0x0C, 0x30, // ## ## + 0x0C, 0x30, // ## ## + 0x3F, 0xF0, // ########## + 0x3F, 0xF0, // ########## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1800 'M' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x78, 0x78, // #### #### + 0x78, 0x78, // #### #### + 0x38, 0x70, // ### ### + 0x3C, 0xF0, // #### #### + 0x34, 0xB0, // ## # # ## + 0x37, 0xB0, // ## #### ## + 0x37, 0xB0, // ## #### ## + 0x33, 0x30, // ## ## ## + 0x33, 0x30, // ## ## ## + 0x30, 0x30, // ## ## + 0x7C, 0xF8, // ##### ##### + 0x7C, 0xF8, // ##### ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1840 'N' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x39, 0xF0, // ### ##### + 0x3D, 0xF0, // #### ##### + 0x1C, 0x60, // ### ## + 0x1E, 0x60, // #### ## + 0x1E, 0x60, // #### ## + 0x1B, 0x60, // ## ## ## + 0x1B, 0x60, // ## ## ## + 0x19, 0xE0, // ## #### + 0x19, 0xE0, // ## #### + 0x18, 0xE0, // ## ### + 0x3E, 0xE0, // ##### ### + 0x3E, 0x60, // ##### ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1880 'O' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x07, 0x80, // #### + 0x0F, 0xC0, // ###### + 0x1C, 0xE0, // ### ### + 0x38, 0x70, // ### ### + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x38, 0x70, // ### ### + 0x1C, 0xE0, // ### ### + 0x0F, 0xC0, // ###### + 0x07, 0x80, // #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1920 'P' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x3F, 0xC0, // ######## + 0x3F, 0xE0, // ######### + 0x18, 0x70, // ## ### + 0x18, 0x30, // ## ## + 0x18, 0x30, // ## ## + 0x18, 0x70, // ## ### + 0x1F, 0xE0, // ######## + 0x1F, 0xC0, // ####### + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x3F, 0x00, // ###### + 0x3F, 0x00, // ###### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @1960 'Q' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x07, 0x80, // #### + 0x0F, 0xC0, // ###### + 0x1C, 0xE0, // ### ### + 0x38, 0x70, // ### ### + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x38, 0x70, // ### ### + 0x1C, 0xE0, // ### ### + 0x0F, 0xC0, // ###### + 0x07, 0x80, // #### + 0x07, 0xB0, // #### ## + 0x0F, 0xF0, // ######## + 0x0C, 0xE0, // ## ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2000 'R' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x3F, 0xC0, // ######## + 0x3F, 0xE0, // ######### + 0x18, 0x70, // ## ### + 0x18, 0x30, // ## ## + 0x18, 0x70, // ## ### + 0x1F, 0xE0, // ######## + 0x1F, 0xC0, // ####### + 0x18, 0xE0, // ## ### + 0x18, 0x60, // ## ## + 0x18, 0x70, // ## ### + 0x3E, 0x38, // ##### ### + 0x3E, 0x18, // ##### ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2040 'S' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x0F, 0xB0, // ##### ## + 0x1F, 0xF0, // ######### + 0x38, 0x70, // ### ### + 0x30, 0x30, // ## ## + 0x38, 0x00, // ### + 0x1F, 0x80, // ###### + 0x07, 0xE0, // ###### + 0x00, 0x70, // ### + 0x30, 0x30, // ## ## + 0x38, 0x70, // ### ### + 0x3F, 0xE0, // ######### + 0x37, 0xC0, // ## ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2080 'T' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x3F, 0xF0, // ########## + 0x3F, 0xF0, // ########## + 0x33, 0x30, // ## ## ## + 0x33, 0x30, // ## ## ## + 0x33, 0x30, // ## ## ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x0F, 0xC0, // ###### + 0x0F, 0xC0, // ###### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2120 'U' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x3C, 0xF0, // #### #### + 0x3C, 0xF0, // #### #### + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x1C, 0xE0, // ### ### + 0x0F, 0xC0, // ###### + 0x07, 0x80, // #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2160 'V' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x78, 0xF0, // #### #### + 0x78, 0xF0, // #### #### + 0x30, 0x60, // ## ## + 0x30, 0x60, // ## ## + 0x18, 0xC0, // ## ## + 0x18, 0xC0, // ## ## + 0x0D, 0x80, // ## ## + 0x0D, 0x80, // ## ## + 0x0D, 0x80, // ## ## + 0x07, 0x00, // ### + 0x07, 0x00, // ### + 0x07, 0x00, // ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2200 'W' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x7C, 0x7C, // ##### ##### + 0x7C, 0x7C, // ##### ##### + 0x30, 0x18, // ## ## + 0x33, 0x98, // ## ### ## + 0x33, 0x98, // ## ### ## + 0x33, 0x98, // ## ### ## + 0x36, 0xD8, // ## ## ## ## + 0x16, 0xD0, // # ## ## # + 0x1C, 0x70, // ### ### + 0x1C, 0x70, // ### ### + 0x1C, 0x70, // ### ### + 0x18, 0x30, // ## ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2240 'X' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x78, 0xF0, // #### #### + 0x78, 0xF0, // #### #### + 0x30, 0x60, // ## ## + 0x18, 0xC0, // ## ## + 0x0D, 0x80, // ## ## + 0x07, 0x00, // ### + 0x07, 0x00, // ### + 0x0D, 0x80, // ## ## + 0x18, 0xC0, // ## ## + 0x30, 0x60, // ## ## + 0x78, 0xF0, // #### #### + 0x78, 0xF0, // #### #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2280 'Y' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x3C, 0xF0, // #### #### + 0x3C, 0xF0, // #### #### + 0x18, 0x60, // ## ## + 0x0C, 0xC0, // ## ## + 0x07, 0x80, // #### + 0x07, 0x80, // #### + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x0F, 0xC0, // ###### + 0x0F, 0xC0, // ###### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2320 'Z' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x1F, 0xE0, // ######## + 0x1F, 0xE0, // ######## + 0x18, 0x60, // ## ## + 0x18, 0xC0, // ## ## + 0x01, 0x80, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x06, 0x00, // ## + 0x0C, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x1F, 0xE0, // ######## + 0x1F, 0xE0, // ######## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2360 '[' (14 pixels wide) + 0x00, 0x00, // + 0x03, 0xC0, // #### + 0x03, 0xC0, // #### + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0xC0, // #### + 0x03, 0xC0, // #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2400 '\' (14 pixels wide) + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x01, 0x80, // ## + 0x01, 0x80, // ## + 0x00, 0xC0, // ## + 0x00, 0xC0, // ## + 0x00, 0xC0, // ## + 0x00, 0x60, // ## + 0x00, 0x60, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2440 ']' (14 pixels wide) + 0x00, 0x00, // + 0x0F, 0x00, // #### + 0x0F, 0x00, // #### + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x0F, 0x00, // #### + 0x0F, 0x00, // #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2480 '^' (14 pixels wide) + 0x00, 0x00, // + 0x02, 0x00, // # + 0x07, 0x00, // ### + 0x0D, 0x80, // ## ## + 0x18, 0xC0, // ## ## + 0x30, 0x60, // ## ## + 0x20, 0x20, // # # + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2520 '_' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0xFF, 0xFC, // ############## + 0xFF, 0xFC, // ############## + + // @2560 '`' (14 pixels wide) + 0x00, 0x00, // + 0x04, 0x00, // # + 0x03, 0x00, // ## + 0x00, 0x80, // # + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2600 'a' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x0F, 0xC0, // ###### + 0x1F, 0xE0, // ######## + 0x00, 0x60, // ## + 0x0F, 0xE0, // ####### + 0x1F, 0xE0, // ######## + 0x38, 0x60, // ### ## + 0x30, 0xE0, // ## ### + 0x3F, 0xF0, // ########## + 0x1F, 0x70, // ##### ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2640 'b' (14 pixels wide) + 0x00, 0x00, // + 0x70, 0x00, // ### + 0x70, 0x00, // ### + 0x30, 0x00, // ## + 0x30, 0x00, // ## + 0x37, 0x80, // ## #### + 0x3F, 0xE0, // ######### + 0x38, 0x60, // ### ## + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x38, 0x60, // ### ## + 0x7F, 0xE0, // ########## + 0x77, 0x80, // ### #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2680 'c' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x07, 0xB0, // #### ## + 0x1F, 0xF0, // ######### + 0x18, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x30, 0x00, // ## + 0x30, 0x00, // ## + 0x38, 0x30, // ### ## + 0x1F, 0xF0, // ######### + 0x0F, 0xC0, // ###### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2720 'd' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x70, // ### + 0x00, 0x70, // ### + 0x00, 0x30, // ## + 0x00, 0x30, // ## + 0x07, 0xB0, // #### ## + 0x1F, 0xF0, // ######### + 0x18, 0x70, // ## ### + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x38, 0x70, // ### ### + 0x1F, 0xF8, // ########## + 0x07, 0xB8, // #### ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2760 'e' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x07, 0x80, // #### + 0x1F, 0xE0, // ######## + 0x18, 0x60, // ## ## + 0x3F, 0xF0, // ########## + 0x3F, 0xF0, // ########## + 0x30, 0x00, // ## + 0x18, 0x30, // ## ## + 0x1F, 0xF0, // ######### + 0x07, 0xC0, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2800 'f' (14 pixels wide) + 0x00, 0x00, // + 0x03, 0xF0, // ###### + 0x07, 0xF0, // ####### + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x1F, 0xE0, // ######## + 0x1F, 0xE0, // ######## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x1F, 0xE0, // ######## + 0x1F, 0xE0, // ######## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2840 'g' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x07, 0xB8, // #### ### + 0x1F, 0xF8, // ########## + 0x18, 0x70, // ## ### + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x18, 0x70, // ## ### + 0x1F, 0xF0, // ######### + 0x07, 0xB0, // #### ## + 0x00, 0x30, // ## + 0x00, 0x70, // ### + 0x0F, 0xE0, // ####### + 0x0F, 0xC0, // ###### + 0x00, 0x00, // + 0x00, 0x00, // + + // @2880 'h' (14 pixels wide) + 0x00, 0x00, // + 0x38, 0x00, // ### + 0x38, 0x00, // ### + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x1B, 0xC0, // ## #### + 0x1F, 0xE0, // ######## + 0x1C, 0x60, // ### ## + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x3C, 0xF0, // #### #### + 0x3C, 0xF0, // #### #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2920 'i' (14 pixels wide) + 0x00, 0x00, // + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x1F, 0x00, // ##### + 0x1F, 0x00, // ##### + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x1F, 0xE0, // ######## + 0x1F, 0xE0, // ######## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @2960 'j' (14 pixels wide) + 0x00, 0x00, // + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x1F, 0xC0, // ####### + 0x1F, 0xC0, // ####### + 0x00, 0xC0, // ## + 0x00, 0xC0, // ## + 0x00, 0xC0, // ## + 0x00, 0xC0, // ## + 0x00, 0xC0, // ## + 0x00, 0xC0, // ## + 0x00, 0xC0, // ## + 0x00, 0xC0, // ## + 0x01, 0xC0, // ### + 0x3F, 0x80, // ####### + 0x3F, 0x00, // ###### + 0x00, 0x00, // + 0x00, 0x00, // + + // @3000 'k' (14 pixels wide) + 0x00, 0x00, // + 0x38, 0x00, // ### + 0x38, 0x00, // ### + 0x18, 0x00, // ## + 0x18, 0x00, // ## + 0x1B, 0xE0, // ## ##### + 0x1B, 0xE0, // ## ##### + 0x1B, 0x00, // ## ## + 0x1E, 0x00, // #### + 0x1E, 0x00, // #### + 0x1B, 0x00, // ## ## + 0x19, 0x80, // ## ## + 0x39, 0xF0, // ### ##### + 0x39, 0xF0, // ### ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @3040 'l' (14 pixels wide) + 0x00, 0x00, // + 0x1F, 0x00, // ##### + 0x1F, 0x00, // ##### + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x1F, 0xE0, // ######## + 0x1F, 0xE0, // ######## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @3080 'm' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x7E, 0xE0, // ###### ### + 0x7F, 0xF0, // ########### + 0x33, 0x30, // ## ## ## + 0x33, 0x30, // ## ## ## + 0x33, 0x30, // ## ## ## + 0x33, 0x30, // ## ## ## + 0x33, 0x30, // ## ## ## + 0x7B, 0xB8, // #### ### ### + 0x7B, 0xB8, // #### ### ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @3120 'n' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x3B, 0xC0, // ### #### + 0x3F, 0xE0, // ######### + 0x1C, 0x60, // ### ## + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x3C, 0xF0, // #### #### + 0x3C, 0xF0, // #### #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @3160 'o' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x07, 0x80, // #### + 0x1F, 0xE0, // ######## + 0x18, 0x60, // ## ## + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x18, 0x60, // ## ## + 0x1F, 0xE0, // ######## + 0x07, 0x80, // #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @3200 'p' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x77, 0x80, // ### #### + 0x7F, 0xE0, // ########## + 0x38, 0x60, // ### ## + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x38, 0x60, // ### ## + 0x3F, 0xE0, // ######### + 0x37, 0x80, // ## #### + 0x30, 0x00, // ## + 0x30, 0x00, // ## + 0x7C, 0x00, // ##### + 0x7C, 0x00, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + + // @3240 'q' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x07, 0xB8, // #### ### + 0x1F, 0xF8, // ########## + 0x18, 0x70, // ## ### + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x30, 0x30, // ## ## + 0x18, 0x70, // ## ### + 0x1F, 0xF0, // ######### + 0x07, 0xB0, // #### ## + 0x00, 0x30, // ## + 0x00, 0x30, // ## + 0x00, 0xF8, // ##### + 0x00, 0xF8, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + + // @3280 'r' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x3C, 0xE0, // #### ### + 0x3D, 0xF0, // #### ##### + 0x0F, 0x30, // #### ## + 0x0E, 0x00, // ### + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x3F, 0xC0, // ######## + 0x3F, 0xC0, // ######## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @3320 's' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x07, 0xE0, // ###### + 0x1F, 0xE0, // ######## + 0x18, 0x60, // ## ## + 0x1E, 0x00, // #### + 0x0F, 0xC0, // ###### + 0x01, 0xE0, // #### + 0x18, 0x60, // ## ## + 0x1F, 0xE0, // ######## + 0x1F, 0x80, // ###### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @3360 't' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x3F, 0xE0, // ######### + 0x3F, 0xE0, // ######### + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x00, // ## + 0x0C, 0x30, // ## ## + 0x0F, 0xF0, // ######## + 0x07, 0xC0, // ##### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @3400 'u' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x38, 0xE0, // ### ### + 0x38, 0xE0, // ### ### + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x18, 0x60, // ## ## + 0x18, 0xE0, // ## ### + 0x1F, 0xF0, // ######### + 0x0F, 0x70, // #### ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @3440 'v' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x78, 0xF0, // #### #### + 0x78, 0xF0, // #### #### + 0x30, 0x60, // ## ## + 0x18, 0xC0, // ## ## + 0x18, 0xC0, // ## ## + 0x0D, 0x80, // ## ## + 0x0D, 0x80, // ## ## + 0x07, 0x00, // ### + 0x07, 0x00, // ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @3480 'w' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x78, 0xF0, // #### #### + 0x78, 0xF0, // #### #### + 0x32, 0x60, // ## # ## + 0x32, 0x60, // ## # ## + 0x37, 0xE0, // ## ###### + 0x1D, 0xC0, // ### ### + 0x1D, 0xC0, // ### ### + 0x18, 0xC0, // ## ## + 0x18, 0xC0, // ## ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @3520 'x' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x3C, 0xF0, // #### #### + 0x3C, 0xF0, // #### #### + 0x0C, 0xC0, // ## ## + 0x07, 0x80, // #### + 0x03, 0x00, // ## + 0x07, 0x80, // #### + 0x0C, 0xC0, // ## ## + 0x3C, 0xF0, // #### #### + 0x3C, 0xF0, // #### #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @3560 'y' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x78, 0xF0, // #### #### + 0x78, 0xF0, // #### #### + 0x30, 0x60, // ## ## + 0x18, 0xC0, // ## ## + 0x18, 0xC0, // ## ## + 0x0D, 0x80, // ## ## + 0x0F, 0x80, // ##### + 0x07, 0x00, // ### + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x0C, 0x00, // ## + 0x7F, 0x00, // ####### + 0x7F, 0x00, // ####### + 0x00, 0x00, // + 0x00, 0x00, // + + // @3600 'z' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x1F, 0xE0, // ######## + 0x1F, 0xE0, // ######## + 0x18, 0xC0, // ## ## + 0x01, 0x80, // ## + 0x03, 0x00, // ## + 0x06, 0x00, // ## + 0x0C, 0x60, // ## ## + 0x1F, 0xE0, // ######## + 0x1F, 0xE0, // ######## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @3640 '{' (14 pixels wide) + 0x00, 0x00, // + 0x01, 0xC0, // ### + 0x03, 0xC0, // #### + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x07, 0x00, // ### + 0x0E, 0x00, // ### + 0x07, 0x00, // ### + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0xC0, // #### + 0x01, 0xC0, // ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @3680 '|' (14 pixels wide) + 0x00, 0x00, // + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x03, 0x00, // ## + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @3720 '}' (14 pixels wide) + 0x00, 0x00, // + 0x1C, 0x00, // ### + 0x1E, 0x00, // #### + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x07, 0x00, // ### + 0x03, 0x80, // ### + 0x07, 0x00, // ### + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x06, 0x00, // ## + 0x1E, 0x00, // #### + 0x1C, 0x00, // ### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + + // @3760 '~' (14 pixels wide) + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x0E, 0x00, // ### + 0x3F, 0x30, // ###### ## + 0x33, 0xF0, // ## ###### + 0x01, 0xE0, // #### + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // + 0x00, 0x00, // +}; + + +sFONT Font20 = { + Font20_Table, + 14, /* Width */ + 20, /* Height */ +}; + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Arduino/epd2in13_V3/font24.c b/Arduino/epd2in13_V3/font24.c new file mode 100644 index 0000000..735f487 --- /dev/null +++ b/Arduino/epd2in13_V3/font24.c @@ -0,0 +1,2521 @@ +/** + ****************************************************************************** + * @file font24.c + * @author MCD Application Team + * @version V1.0.0 + * @date 18-February-2014 + * @brief This file provides text font24 for STM32xx-EVAL's LCD driver. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2014 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "fonts.h" +#include + +const uint8_t Font24_Table [] PROGMEM = +{ + // @0 ' ' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @72 '!' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x03, 0x80, 0x00, // ### + 0x03, 0x80, 0x00, // ### + 0x03, 0x80, 0x00, // ### + 0x03, 0x80, 0x00, // ### + 0x03, 0x80, 0x00, // ### + 0x03, 0x80, 0x00, // ### + 0x03, 0x80, 0x00, // ### + 0x03, 0x80, 0x00, // ### + 0x03, 0x80, 0x00, // ### + 0x01, 0x00, 0x00, // # + 0x01, 0x00, 0x00, // # + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x03, 0x80, 0x00, // ### + 0x03, 0x80, 0x00, // ### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @144 '"' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x0E, 0x70, 0x00, // ### ### + 0x0E, 0x70, 0x00, // ### ### + 0x0E, 0x70, 0x00, // ### ### + 0x04, 0x20, 0x00, // # # + 0x04, 0x20, 0x00, // # # + 0x04, 0x20, 0x00, // # # + 0x04, 0x20, 0x00, // # # + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @216 '#' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x06, 0x60, 0x00, // ## ## + 0x06, 0x60, 0x00, // ## ## + 0x06, 0x60, 0x00, // ## ## + 0x06, 0x60, 0x00, // ## ## + 0x06, 0x60, 0x00, // ## ## + 0x3F, 0xF8, 0x00, // ########### + 0x3F, 0xF8, 0x00, // ########### + 0x06, 0x60, 0x00, // ## ## + 0x0C, 0xC0, 0x00, // ## ## + 0x3F, 0xF8, 0x00, // ########### + 0x3F, 0xF8, 0x00, // ########### + 0x0C, 0xC0, 0x00, // ## ## + 0x0C, 0xC0, 0x00, // ## ## + 0x0C, 0xC0, 0x00, // ## ## + 0x0C, 0xC0, 0x00, // ## ## + 0x0C, 0xC0, 0x00, // ## ## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @288 '$' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x07, 0xB0, 0x00, // #### ## + 0x0F, 0xF0, 0x00, // ######## + 0x18, 0x70, 0x00, // ## ### + 0x18, 0x70, 0x00, // ## ### + 0x1C, 0x00, 0x00, // ### + 0x0F, 0x80, 0x00, // ##### + 0x07, 0xE0, 0x00, // ###### + 0x00, 0xF0, 0x00, // #### + 0x18, 0x30, 0x00, // ## ## + 0x1C, 0x30, 0x00, // ### ## + 0x1C, 0x70, 0x00, // ### ### + 0x1F, 0xE0, 0x00, // ######## + 0x1B, 0xC0, 0x00, // ## #### + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @360 '%' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x07, 0x80, 0x00, // #### + 0x0F, 0xC0, 0x00, // ###### + 0x1C, 0xE0, 0x00, // ### ### + 0x18, 0x60, 0x00, // ## ## + 0x18, 0x60, 0x00, // ## ## + 0x1C, 0xE0, 0x00, // ### ### + 0x0F, 0xF8, 0x00, // ######### + 0x07, 0xE0, 0x00, // ###### + 0x1F, 0xF0, 0x00, // ######### + 0x07, 0x38, 0x00, // ### ### + 0x06, 0x18, 0x00, // ## ## + 0x06, 0x18, 0x00, // ## ## + 0x07, 0x38, 0x00, // ### ### + 0x03, 0xF0, 0x00, // ###### + 0x01, 0xE0, 0x00, // #### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @432 '&' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x03, 0xF0, 0x00, // ###### + 0x07, 0xF0, 0x00, // ####### + 0x0C, 0x60, 0x00, // ## ## + 0x0C, 0x00, 0x00, // ## + 0x0C, 0x00, 0x00, // ## + 0x06, 0x00, 0x00, // ## + 0x07, 0x00, 0x00, // ### + 0x0F, 0x9C, 0x00, // ##### ### + 0x1D, 0xFC, 0x00, // ### ####### + 0x18, 0xF0, 0x00, // ## #### + 0x18, 0x70, 0x00, // ## ### + 0x0F, 0xFC, 0x00, // ########## + 0x07, 0xDC, 0x00, // ##### ### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @504 ''' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x03, 0x80, 0x00, // ### + 0x03, 0x80, 0x00, // ### + 0x03, 0x80, 0x00, // ### + 0x01, 0x00, 0x00, // # + 0x01, 0x00, 0x00, // # + 0x01, 0x00, 0x00, // # + 0x01, 0x00, 0x00, // # + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @576 '(' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x18, 0x00, // ## + 0x00, 0x38, 0x00, // ### + 0x00, 0x70, 0x00, // ### + 0x00, 0xF0, 0x00, // #### + 0x00, 0xE0, 0x00, // ### + 0x00, 0xE0, 0x00, // ### + 0x01, 0xC0, 0x00, // ### + 0x01, 0xC0, 0x00, // ### + 0x01, 0xC0, 0x00, // ### + 0x01, 0xC0, 0x00, // ### + 0x01, 0xC0, 0x00, // ### + 0x01, 0xC0, 0x00, // ### + 0x00, 0xE0, 0x00, // ### + 0x00, 0xE0, 0x00, // ### + 0x00, 0x70, 0x00, // ### + 0x00, 0x70, 0x00, // ### + 0x00, 0x38, 0x00, // ### + 0x00, 0x18, 0x00, // ## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @648 ')' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x18, 0x00, 0x00, // ## + 0x1C, 0x00, 0x00, // ### + 0x0E, 0x00, 0x00, // ### + 0x0E, 0x00, 0x00, // ### + 0x07, 0x00, 0x00, // ### + 0x07, 0x00, 0x00, // ### + 0x03, 0x80, 0x00, // ### + 0x03, 0x80, 0x00, // ### + 0x03, 0x80, 0x00, // ### + 0x03, 0x80, 0x00, // ### + 0x03, 0x80, 0x00, // ### + 0x03, 0x80, 0x00, // ### + 0x07, 0x00, 0x00, // ### + 0x07, 0x00, 0x00, // ### + 0x0F, 0x00, 0x00, // #### + 0x0E, 0x00, 0x00, // ### + 0x1C, 0x00, 0x00, // ### + 0x18, 0x00, 0x00, // ## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @720 '*' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x1D, 0xB8, 0x00, // ### ## ### + 0x1F, 0xF8, 0x00, // ########## + 0x07, 0xE0, 0x00, // ###### + 0x03, 0xC0, 0x00, // #### + 0x03, 0xC0, 0x00, // #### + 0x06, 0x60, 0x00, // ## ## + 0x06, 0x60, 0x00, // ## ## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @792 '+' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x3F, 0xFC, 0x00, // ############ + 0x3F, 0xFC, 0x00, // ############ + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @864 ',' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0xE0, 0x00, // ### + 0x00, 0xC0, 0x00, // ## + 0x01, 0xC0, 0x00, // ### + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x03, 0x00, 0x00, // ## + 0x03, 0x00, 0x00, // ## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @936 '-' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x1F, 0xF8, 0x00, // ########## + 0x1F, 0xF8, 0x00, // ########## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @1008 '.' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x03, 0xC0, 0x00, // #### + 0x03, 0xC0, 0x00, // #### + 0x03, 0xC0, 0x00, // #### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @1080 '/' (17 pixels wide) + 0x00, 0x18, 0x00, // ## + 0x00, 0x18, 0x00, // ## + 0x00, 0x38, 0x00, // ### + 0x00, 0x30, 0x00, // ## + 0x00, 0x70, 0x00, // ### + 0x00, 0x60, 0x00, // ## + 0x00, 0x60, 0x00, // ## + 0x00, 0xC0, 0x00, // ## + 0x00, 0xC0, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x03, 0x00, 0x00, // ## + 0x03, 0x00, 0x00, // ## + 0x06, 0x00, 0x00, // ## + 0x06, 0x00, 0x00, // ## + 0x0E, 0x00, 0x00, // ### + 0x0C, 0x00, 0x00, // ## + 0x1C, 0x00, 0x00, // ### + 0x18, 0x00, 0x00, // ## + 0x18, 0x00, 0x00, // ## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @1152 '0' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x03, 0xC0, 0x00, // #### + 0x07, 0xE0, 0x00, // ###### + 0x0C, 0x30, 0x00, // ## ## + 0x0C, 0x30, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x0C, 0x30, 0x00, // ## ## + 0x0C, 0x30, 0x00, // ## ## + 0x07, 0xE0, 0x00, // ###### + 0x03, 0xC0, 0x00, // #### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @1224 '1' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x80, 0x00, // # + 0x07, 0x80, 0x00, // #### + 0x1F, 0x80, 0x00, // ###### + 0x1D, 0x80, 0x00, // ### ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x1F, 0xF8, 0x00, // ########## + 0x1F, 0xF8, 0x00, // ########## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @1296 '2' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x07, 0xC0, 0x00, // ##### + 0x1F, 0xF0, 0x00, // ######### + 0x38, 0x30, 0x00, // ### ## + 0x30, 0x18, 0x00, // ## ## + 0x30, 0x18, 0x00, // ## ## + 0x00, 0x18, 0x00, // ## + 0x00, 0x30, 0x00, // ## + 0x00, 0x60, 0x00, // ## + 0x01, 0xC0, 0x00, // ### + 0x03, 0x80, 0x00, // ### + 0x06, 0x00, 0x00, // ## + 0x0C, 0x00, 0x00, // ## + 0x18, 0x00, 0x00, // ## + 0x3F, 0xF8, 0x00, // ########### + 0x3F, 0xF8, 0x00, // ########### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @1368 '3' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x03, 0xC0, 0x00, // #### + 0x0F, 0xE0, 0x00, // ####### + 0x0C, 0x70, 0x00, // ## ### + 0x00, 0x30, 0x00, // ## + 0x00, 0x30, 0x00, // ## + 0x00, 0x60, 0x00, // ## + 0x03, 0xC0, 0x00, // #### + 0x03, 0xE0, 0x00, // ##### + 0x00, 0x70, 0x00, // ### + 0x00, 0x18, 0x00, // ## + 0x00, 0x18, 0x00, // ## + 0x00, 0x18, 0x00, // ## + 0x18, 0x38, 0x00, // ## ### + 0x1F, 0xF0, 0x00, // ######### + 0x0F, 0xC0, 0x00, // ###### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @1440 '4' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0xE0, 0x00, // ### + 0x01, 0xE0, 0x00, // #### + 0x01, 0xE0, 0x00, // #### + 0x03, 0x60, 0x00, // ## ## + 0x06, 0x60, 0x00, // ## ## + 0x06, 0x60, 0x00, // ## ## + 0x0C, 0x60, 0x00, // ## ## + 0x0C, 0x60, 0x00, // ## ## + 0x18, 0x60, 0x00, // ## ## + 0x30, 0x60, 0x00, // ## ## + 0x3F, 0xF8, 0x00, // ########### + 0x3F, 0xF8, 0x00, // ########### + 0x00, 0x60, 0x00, // ## + 0x03, 0xF8, 0x00, // ####### + 0x03, 0xF8, 0x00, // ####### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @1512 '5' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x1F, 0xF0, 0x00, // ######### + 0x1F, 0xF0, 0x00, // ######### + 0x18, 0x00, 0x00, // ## + 0x18, 0x00, 0x00, // ## + 0x18, 0x00, 0x00, // ## + 0x1B, 0xC0, 0x00, // ## #### + 0x1F, 0xF0, 0x00, // ######### + 0x1C, 0x30, 0x00, // ### ## + 0x00, 0x18, 0x00, // ## + 0x00, 0x18, 0x00, // ## + 0x00, 0x18, 0x00, // ## + 0x00, 0x18, 0x00, // ## + 0x30, 0x30, 0x00, // ## ## + 0x3F, 0xF0, 0x00, // ########## + 0x0F, 0xC0, 0x00, // ###### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @1584 '6' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0xF8, 0x00, // ##### + 0x03, 0xF8, 0x00, // ####### + 0x07, 0x00, 0x00, // ### + 0x0E, 0x00, 0x00, // ### + 0x0C, 0x00, 0x00, // ## + 0x18, 0x00, 0x00, // ## + 0x1B, 0xC0, 0x00, // ## #### + 0x1F, 0xF0, 0x00, // ######### + 0x1C, 0x30, 0x00, // ### ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x0C, 0x38, 0x00, // ## ### + 0x0F, 0xF0, 0x00, // ######## + 0x03, 0xE0, 0x00, // ##### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @1656 '7' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x1F, 0xF8, 0x00, // ########## + 0x1F, 0xF8, 0x00, // ########## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x38, 0x00, // ## ### + 0x00, 0x30, 0x00, // ## + 0x00, 0x30, 0x00, // ## + 0x00, 0x70, 0x00, // ### + 0x00, 0x60, 0x00, // ## + 0x00, 0x60, 0x00, // ## + 0x00, 0xE0, 0x00, // ### + 0x00, 0xC0, 0x00, // ## + 0x00, 0xC0, 0x00, // ## + 0x01, 0xC0, 0x00, // ### + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @1728 '8' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x07, 0xE0, 0x00, // ###### + 0x0F, 0xF0, 0x00, // ######## + 0x1C, 0x38, 0x00, // ### ### + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x0C, 0x30, 0x00, // ## ## + 0x07, 0xE0, 0x00, // ###### + 0x07, 0xE0, 0x00, // ###### + 0x0C, 0x30, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x1C, 0x38, 0x00, // ### ### + 0x0F, 0xF0, 0x00, // ######## + 0x07, 0xE0, 0x00, // ###### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @1800 '9' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x07, 0xC0, 0x00, // ##### + 0x0F, 0xF0, 0x00, // ######## + 0x1C, 0x30, 0x00, // ### ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x0C, 0x38, 0x00, // ## ### + 0x0F, 0xF8, 0x00, // ######### + 0x03, 0xD8, 0x00, // #### ## + 0x00, 0x18, 0x00, // ## + 0x00, 0x30, 0x00, // ## + 0x00, 0x70, 0x00, // ### + 0x00, 0xE0, 0x00, // ### + 0x1F, 0xC0, 0x00, // ####### + 0x1F, 0x00, 0x00, // ##### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @1872 ':' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x03, 0xC0, 0x00, // #### + 0x03, 0xC0, 0x00, // #### + 0x03, 0xC0, 0x00, // #### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x03, 0xC0, 0x00, // #### + 0x03, 0xC0, 0x00, // #### + 0x03, 0xC0, 0x00, // #### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @1944 ';' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0xF0, 0x00, // #### + 0x00, 0xF0, 0x00, // #### + 0x00, 0xF0, 0x00, // #### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0xE0, 0x00, // ### + 0x01, 0xC0, 0x00, // ### + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x03, 0x00, 0x00, // ## + 0x02, 0x00, 0x00, // # + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @2016 '<' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x1C, 0x00, // ### + 0x00, 0x3C, 0x00, // #### + 0x00, 0xF0, 0x00, // #### + 0x03, 0xC0, 0x00, // #### + 0x0F, 0x00, 0x00, // #### + 0x3C, 0x00, 0x00, // #### + 0xF0, 0x00, 0x00, // #### + 0x3C, 0x00, 0x00, // #### + 0x0F, 0x00, 0x00, // #### + 0x03, 0xC0, 0x00, // #### + 0x00, 0xF0, 0x00, // #### + 0x00, 0x3C, 0x00, // #### + 0x00, 0x1C, 0x00, // ### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @2088 '=' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x7F, 0xFC, 0x00, // ############# + 0x7F, 0xFC, 0x00, // ############# + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x7F, 0xFC, 0x00, // ############# + 0x7F, 0xFC, 0x00, // ############# + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @2160 '>' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x70, 0x00, 0x00, // ### + 0x78, 0x00, 0x00, // #### + 0x1E, 0x00, 0x00, // #### + 0x07, 0x80, 0x00, // #### + 0x01, 0xE0, 0x00, // #### + 0x00, 0x78, 0x00, // #### + 0x00, 0x1E, 0x00, // #### + 0x00, 0x78, 0x00, // #### + 0x01, 0xE0, 0x00, // #### + 0x07, 0x80, 0x00, // #### + 0x1E, 0x00, 0x00, // #### + 0x78, 0x00, 0x00, // #### + 0x70, 0x00, 0x00, // ### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @2232 '?' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x07, 0xC0, 0x00, // ##### + 0x0F, 0xE0, 0x00, // ####### + 0x18, 0x70, 0x00, // ## ### + 0x18, 0x30, 0x00, // ## ## + 0x18, 0x30, 0x00, // ## ## + 0x00, 0x70, 0x00, // ### + 0x00, 0xE0, 0x00, // ### + 0x03, 0xC0, 0x00, // #### + 0x03, 0x80, 0x00, // ### + 0x03, 0x00, 0x00, // ## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x07, 0x00, 0x00, // ### + 0x07, 0x00, 0x00, // ### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @2304 '@' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x03, 0xE0, 0x00, // ##### + 0x07, 0xF0, 0x00, // ####### + 0x0E, 0x38, 0x00, // ### ### + 0x0C, 0x18, 0x00, // ## ## + 0x18, 0x78, 0x00, // ## #### + 0x18, 0xF8, 0x00, // ## ##### + 0x19, 0xD8, 0x00, // ## ### ## + 0x19, 0x98, 0x00, // ## ## ## + 0x19, 0x98, 0x00, // ## ## ## + 0x19, 0x98, 0x00, // ## ## ## + 0x18, 0xF8, 0x00, // ## ##### + 0x18, 0x78, 0x00, // ## #### + 0x18, 0x00, 0x00, // ## + 0x0C, 0x00, 0x00, // ## + 0x0E, 0x18, 0x00, // ### ## + 0x07, 0xF8, 0x00, // ######## + 0x03, 0xE0, 0x00, // ##### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @2376 'A' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x1F, 0x80, 0x00, // ###### + 0x1F, 0xC0, 0x00, // ####### + 0x01, 0xC0, 0x00, // ### + 0x03, 0x60, 0x00, // ## ## + 0x03, 0x60, 0x00, // ## ## + 0x06, 0x30, 0x00, // ## ## + 0x06, 0x30, 0x00, // ## ## + 0x0C, 0x30, 0x00, // ## ## + 0x0F, 0xF8, 0x00, // ######### + 0x1F, 0xF8, 0x00, // ########## + 0x18, 0x0C, 0x00, // ## ## + 0x30, 0x0C, 0x00, // ## ## + 0xFC, 0x7F, 0x00, // ###### ####### + 0xFC, 0x7F, 0x00, // ###### ####### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @2448 'B' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x7F, 0xE0, 0x00, // ########## + 0x7F, 0xF0, 0x00, // ########### + 0x18, 0x38, 0x00, // ## ### + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x38, 0x00, // ## ### + 0x1F, 0xF0, 0x00, // ######### + 0x1F, 0xF8, 0x00, // ########## + 0x18, 0x1C, 0x00, // ## ### + 0x18, 0x0C, 0x00, // ## ## + 0x18, 0x0C, 0x00, // ## ## + 0x18, 0x0C, 0x00, // ## ## + 0x7F, 0xF8, 0x00, // ############ + 0x7F, 0xF0, 0x00, // ########### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @2520 'C' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x03, 0xEC, 0x00, // ##### ## + 0x0F, 0xFC, 0x00, // ########## + 0x1C, 0x1C, 0x00, // ### ### + 0x18, 0x0C, 0x00, // ## ## + 0x30, 0x0C, 0x00, // ## ## + 0x30, 0x00, 0x00, // ## + 0x30, 0x00, 0x00, // ## + 0x30, 0x00, 0x00, // ## + 0x30, 0x00, 0x00, // ## + 0x30, 0x00, 0x00, // ## + 0x18, 0x0C, 0x00, // ## ## + 0x1C, 0x1C, 0x00, // ### ### + 0x0F, 0xF8, 0x00, // ######### + 0x03, 0xF0, 0x00, // ###### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @2592 'D' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x7F, 0xC0, 0x00, // ######### + 0x7F, 0xF0, 0x00, // ########### + 0x18, 0x38, 0x00, // ## ### + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x0C, 0x00, // ## ## + 0x18, 0x0C, 0x00, // ## ## + 0x18, 0x0C, 0x00, // ## ## + 0x18, 0x0C, 0x00, // ## ## + 0x18, 0x0C, 0x00, // ## ## + 0x18, 0x0C, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x38, 0x00, // ## ### + 0x7F, 0xF0, 0x00, // ########### + 0x7F, 0xE0, 0x00, // ########## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @2664 'E' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x7F, 0xF8, 0x00, // ############ + 0x7F, 0xF8, 0x00, // ############ + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x19, 0x98, 0x00, // ## ## ## + 0x19, 0x80, 0x00, // ## ## + 0x1F, 0x80, 0x00, // ###### + 0x1F, 0x80, 0x00, // ###### + 0x19, 0x80, 0x00, // ## ## + 0x19, 0x98, 0x00, // ## ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x7F, 0xF8, 0x00, // ############ + 0x7F, 0xF8, 0x00, // ############ + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @2736 'F' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x3F, 0xFC, 0x00, // ############ + 0x3F, 0xFC, 0x00, // ############ + 0x0C, 0x0C, 0x00, // ## ## + 0x0C, 0x0C, 0x00, // ## ## + 0x0C, 0xCC, 0x00, // ## ## ## + 0x0C, 0xC0, 0x00, // ## ## + 0x0F, 0xC0, 0x00, // ###### + 0x0F, 0xC0, 0x00, // ###### + 0x0C, 0xC0, 0x00, // ## ## + 0x0C, 0xC0, 0x00, // ## ## + 0x0C, 0x00, 0x00, // ## + 0x0C, 0x00, 0x00, // ## + 0x3F, 0xC0, 0x00, // ######## + 0x3F, 0xC0, 0x00, // ######## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @2808 'G' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x03, 0xEC, 0x00, // ##### ## + 0x0F, 0xFC, 0x00, // ########## + 0x1C, 0x1C, 0x00, // ### ### + 0x18, 0x0C, 0x00, // ## ## + 0x30, 0x0C, 0x00, // ## ## + 0x30, 0x00, 0x00, // ## + 0x30, 0x00, 0x00, // ## + 0x30, 0xFE, 0x00, // ## ####### + 0x30, 0xFE, 0x00, // ## ####### + 0x30, 0x0C, 0x00, // ## ## + 0x38, 0x0C, 0x00, // ### ## + 0x1C, 0x1C, 0x00, // ### ### + 0x0F, 0xFC, 0x00, // ########## + 0x03, 0xF0, 0x00, // ###### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @2880 'H' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x7E, 0x7E, 0x00, // ###### ###### + 0x7E, 0x7E, 0x00, // ###### ###### + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x1F, 0xF8, 0x00, // ########## + 0x1F, 0xF8, 0x00, // ########## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x7E, 0x7E, 0x00, // ###### ###### + 0x7E, 0x7E, 0x00, // ###### ###### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @2952 'I' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x1F, 0xF8, 0x00, // ########## + 0x1F, 0xF8, 0x00, // ########## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x1F, 0xF8, 0x00, // ########## + 0x1F, 0xF8, 0x00, // ########## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @3024 'J' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x07, 0xFE, 0x00, // ########## + 0x07, 0xFE, 0x00, // ########## + 0x00, 0x30, 0x00, // ## + 0x00, 0x30, 0x00, // ## + 0x00, 0x30, 0x00, // ## + 0x00, 0x30, 0x00, // ## + 0x00, 0x30, 0x00, // ## + 0x30, 0x30, 0x00, // ## ## + 0x30, 0x30, 0x00, // ## ## + 0x30, 0x30, 0x00, // ## ## + 0x30, 0x30, 0x00, // ## ## + 0x30, 0x60, 0x00, // ## ## + 0x3F, 0xE0, 0x00, // ######### + 0x0F, 0x80, 0x00, // ##### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @3096 'K' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x7F, 0x3E, 0x00, // ####### ##### + 0x7F, 0x3E, 0x00, // ####### ##### + 0x18, 0x30, 0x00, // ## ## + 0x18, 0x60, 0x00, // ## ## + 0x18, 0xC0, 0x00, // ## ## + 0x19, 0x80, 0x00, // ## ## + 0x1B, 0x80, 0x00, // ## ### + 0x1F, 0xC0, 0x00, // ####### + 0x1C, 0xE0, 0x00, // ### ### + 0x18, 0x70, 0x00, // ## ### + 0x18, 0x30, 0x00, // ## ## + 0x18, 0x38, 0x00, // ## ### + 0x7F, 0x1F, 0x00, // ####### ##### + 0x7F, 0x1F, 0x00, // ####### ##### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @3168 'L' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x7F, 0x80, 0x00, // ######## + 0x7F, 0x80, 0x00, // ######## + 0x0C, 0x00, 0x00, // ## + 0x0C, 0x00, 0x00, // ## + 0x0C, 0x00, 0x00, // ## + 0x0C, 0x00, 0x00, // ## + 0x0C, 0x00, 0x00, // ## + 0x0C, 0x00, 0x00, // ## + 0x0C, 0x0C, 0x00, // ## ## + 0x0C, 0x0C, 0x00, // ## ## + 0x0C, 0x0C, 0x00, // ## ## + 0x0C, 0x0C, 0x00, // ## ## + 0x7F, 0xFC, 0x00, // ############# + 0x7F, 0xFC, 0x00, // ############# + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @3240 'M' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0xF0, 0x0F, 0x00, // #### #### + 0xF8, 0x1F, 0x00, // ##### ##### + 0x38, 0x1C, 0x00, // ### ### + 0x3C, 0x3C, 0x00, // #### #### + 0x3C, 0x3C, 0x00, // #### #### + 0x36, 0x6C, 0x00, // ## ## ## ## + 0x36, 0x6C, 0x00, // ## ## ## ## + 0x33, 0xCC, 0x00, // ## #### ## + 0x33, 0xCC, 0x00, // ## #### ## + 0x31, 0x8C, 0x00, // ## ## ## + 0x30, 0x0C, 0x00, // ## ## + 0x30, 0x0C, 0x00, // ## ## + 0xFE, 0x7F, 0x00, // ####### ####### + 0xFE, 0x7F, 0x00, // ####### ####### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @3312 'N' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x78, 0xFE, 0x00, // #### ####### + 0x78, 0xFE, 0x00, // #### ####### + 0x1C, 0x18, 0x00, // ### ## + 0x1E, 0x18, 0x00, // #### ## + 0x1F, 0x18, 0x00, // ##### ## + 0x1B, 0x18, 0x00, // ## ## ## + 0x1B, 0x98, 0x00, // ## ### ## + 0x19, 0xD8, 0x00, // ## ### ## + 0x18, 0xD8, 0x00, // ## ## ## + 0x18, 0xF8, 0x00, // ## ##### + 0x18, 0x78, 0x00, // ## #### + 0x18, 0x38, 0x00, // ## ### + 0x7F, 0x18, 0x00, // ####### ## + 0x7F, 0x18, 0x00, // ####### ## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @3384 'O' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x03, 0xC0, 0x00, // #### + 0x0F, 0xF0, 0x00, // ######## + 0x1C, 0x38, 0x00, // ### ### + 0x18, 0x18, 0x00, // ## ## + 0x38, 0x1C, 0x00, // ### ### + 0x30, 0x0C, 0x00, // ## ## + 0x30, 0x0C, 0x00, // ## ## + 0x30, 0x0C, 0x00, // ## ## + 0x30, 0x0C, 0x00, // ## ## + 0x38, 0x1C, 0x00, // ### ### + 0x18, 0x18, 0x00, // ## ## + 0x1C, 0x38, 0x00, // ### ### + 0x0F, 0xF0, 0x00, // ######## + 0x03, 0xC0, 0x00, // #### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @3456 'P' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x3F, 0xF0, 0x00, // ########## + 0x3F, 0xF8, 0x00, // ########### + 0x0C, 0x1C, 0x00, // ## ### + 0x0C, 0x0C, 0x00, // ## ## + 0x0C, 0x0C, 0x00, // ## ## + 0x0C, 0x0C, 0x00, // ## ## + 0x0C, 0x18, 0x00, // ## ## + 0x0F, 0xF8, 0x00, // ######### + 0x0F, 0xE0, 0x00, // ####### + 0x0C, 0x00, 0x00, // ## + 0x0C, 0x00, 0x00, // ## + 0x0C, 0x00, 0x00, // ## + 0x3F, 0xC0, 0x00, // ######## + 0x3F, 0xC0, 0x00, // ######## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @3528 'Q' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x03, 0xC0, 0x00, // #### + 0x0F, 0xF0, 0x00, // ######## + 0x1C, 0x38, 0x00, // ### ### + 0x18, 0x18, 0x00, // ## ## + 0x38, 0x1C, 0x00, // ### ### + 0x30, 0x0C, 0x00, // ## ## + 0x30, 0x0C, 0x00, // ## ## + 0x30, 0x0C, 0x00, // ## ## + 0x30, 0x0C, 0x00, // ## ## + 0x38, 0x1C, 0x00, // ### ### + 0x18, 0x18, 0x00, // ## ## + 0x1C, 0x38, 0x00, // ### ### + 0x0F, 0xF0, 0x00, // ######## + 0x07, 0xC0, 0x00, // ##### + 0x07, 0xCC, 0x00, // ##### ## + 0x0F, 0xFC, 0x00, // ########## + 0x0C, 0x38, 0x00, // ## ### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @3600 'R' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x7F, 0xE0, 0x00, // ########## + 0x7F, 0xF0, 0x00, // ########### + 0x18, 0x38, 0x00, // ## ### + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x38, 0x00, // ## ### + 0x1F, 0xF0, 0x00, // ######### + 0x1F, 0xC0, 0x00, // ####### + 0x18, 0xE0, 0x00, // ## ### + 0x18, 0x70, 0x00, // ## ### + 0x18, 0x30, 0x00, // ## ## + 0x18, 0x38, 0x00, // ## ### + 0x7F, 0x1E, 0x00, // ####### #### + 0x7F, 0x0E, 0x00, // ####### ### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @3672 'S' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x07, 0xD8, 0x00, // ##### ## + 0x0F, 0xF8, 0x00, // ######### + 0x1C, 0x38, 0x00, // ### ### + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x1E, 0x00, 0x00, // #### + 0x0F, 0xC0, 0x00, // ###### + 0x03, 0xF0, 0x00, // ###### + 0x00, 0x78, 0x00, // #### + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x1C, 0x38, 0x00, // ### ### + 0x1F, 0xF0, 0x00, // ######### + 0x1B, 0xE0, 0x00, // ## ##### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @3744 'T' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x3F, 0xFC, 0x00, // ############ + 0x3F, 0xFC, 0x00, // ############ + 0x31, 0x8C, 0x00, // ## ## ## + 0x31, 0x8C, 0x00, // ## ## ## + 0x31, 0x8C, 0x00, // ## ## ## + 0x31, 0x8C, 0x00, // ## ## ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x0F, 0xF0, 0x00, // ######## + 0x0F, 0xF0, 0x00, // ######## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @3816 'U' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x7E, 0x7E, 0x00, // ###### ###### + 0x7E, 0x7E, 0x00, // ###### ###### + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x0C, 0x30, 0x00, // ## ## + 0x0F, 0xF0, 0x00, // ######## + 0x03, 0xC0, 0x00, // #### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @3888 'V' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x7F, 0x7F, 0x00, // ####### ####### + 0x7F, 0x7F, 0x00, // ####### ####### + 0x18, 0x0C, 0x00, // ## ## + 0x0C, 0x18, 0x00, // ## ## + 0x0C, 0x18, 0x00, // ## ## + 0x0C, 0x18, 0x00, // ## ## + 0x06, 0x30, 0x00, // ## ## + 0x06, 0x30, 0x00, // ## ## + 0x03, 0x60, 0x00, // ## ## + 0x03, 0x60, 0x00, // ## ## + 0x03, 0x60, 0x00, // ## ## + 0x01, 0xC0, 0x00, // ### + 0x01, 0xC0, 0x00, // ### + 0x00, 0x80, 0x00, // # + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @3960 'W' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0xFE, 0x3F, 0x80, // ####### ####### + 0xFE, 0x3F, 0x80, // ####### ####### + 0x30, 0x06, 0x00, // ## ## + 0x30, 0x06, 0x00, // ## ## + 0x30, 0x86, 0x00, // ## # ## + 0x19, 0xCC, 0x00, // ## ### ## + 0x19, 0xCC, 0x00, // ## ### ## + 0x1B, 0x6C, 0x00, // ## ## ## ## + 0x1B, 0x6C, 0x00, // ## ## ## ## + 0x1E, 0x7C, 0x00, // #### ##### + 0x0E, 0x38, 0x00, // ### ### + 0x0E, 0x38, 0x00, // ### ### + 0x0C, 0x18, 0x00, // ## ## + 0x0C, 0x18, 0x00, // ## ## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @4032 'X' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x7E, 0x7E, 0x00, // ###### ###### + 0x7E, 0x7E, 0x00, // ###### ###### + 0x18, 0x18, 0x00, // ## ## + 0x0C, 0x30, 0x00, // ## ## + 0x06, 0x60, 0x00, // ## ## + 0x03, 0xC0, 0x00, // #### + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x03, 0xC0, 0x00, // #### + 0x06, 0x60, 0x00, // ## ## + 0x0C, 0x30, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x7E, 0x7E, 0x00, // ###### ###### + 0x7E, 0x7E, 0x00, // ###### ###### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @4104 'Y' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x7C, 0x7E, 0x00, // ##### ###### + 0x7C, 0x7E, 0x00, // ##### ###### + 0x18, 0x18, 0x00, // ## ## + 0x0C, 0x30, 0x00, // ## ## + 0x06, 0x60, 0x00, // ## ## + 0x06, 0x60, 0x00, // ## ## + 0x03, 0xC0, 0x00, // #### + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x0F, 0xF0, 0x00, // ######## + 0x0F, 0xF0, 0x00, // ######## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @4176 'Z' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x1F, 0xF8, 0x00, // ########## + 0x1F, 0xF8, 0x00, // ########## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x30, 0x00, // ## ## + 0x18, 0x60, 0x00, // ## ## + 0x18, 0xC0, 0x00, // ## ## + 0x01, 0x80, 0x00, // ## + 0x03, 0x00, 0x00, // ## + 0x06, 0x18, 0x00, // ## ## + 0x0C, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x30, 0x18, 0x00, // ## ## + 0x3F, 0xF8, 0x00, // ########### + 0x3F, 0xF8, 0x00, // ########### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @4248 '[' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x01, 0xF0, 0x00, // ##### + 0x01, 0xF0, 0x00, // ##### + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0xF0, 0x00, // ##### + 0x01, 0xF0, 0x00, // ##### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @4320 '\' (17 pixels wide) + 0x18, 0x00, 0x00, // ## + 0x18, 0x00, 0x00, // ## + 0x1C, 0x00, 0x00, // ### + 0x0C, 0x00, 0x00, // ## + 0x0E, 0x00, 0x00, // ### + 0x06, 0x00, 0x00, // ## + 0x06, 0x00, 0x00, // ## + 0x03, 0x00, 0x00, // ## + 0x03, 0x00, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x00, 0xC0, 0x00, // ## + 0x00, 0xC0, 0x00, // ## + 0x00, 0x60, 0x00, // ## + 0x00, 0x60, 0x00, // ## + 0x00, 0x70, 0x00, // ### + 0x00, 0x30, 0x00, // ## + 0x00, 0x38, 0x00, // ### + 0x00, 0x18, 0x00, // ## + 0x00, 0x18, 0x00, // ## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @4392 ']' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x0F, 0x80, 0x00, // ##### + 0x0F, 0x80, 0x00, // ##### + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x0F, 0x80, 0x00, // ##### + 0x0F, 0x80, 0x00, // ##### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @4464 '^' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x80, 0x00, // # + 0x01, 0xC0, 0x00, // ### + 0x03, 0xE0, 0x00, // ##### + 0x07, 0x70, 0x00, // ### ### + 0x06, 0x30, 0x00, // ## ## + 0x0C, 0x18, 0x00, // ## ## + 0x18, 0x0C, 0x00, // ## ## + 0x10, 0x04, 0x00, // # # + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @4536 '_' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0xFF, 0xFF, 0x00, // ################ + 0xFF, 0xFF, 0x00, // ################ + + // @4608 '`' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x03, 0x00, 0x00, // ## + 0x03, 0x80, 0x00, // ### + 0x00, 0xE0, 0x00, // ### + 0x00, 0x60, 0x00, // ## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @4680 'a' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x0F, 0xC0, 0x00, // ###### + 0x1F, 0xE0, 0x00, // ######## + 0x00, 0x30, 0x00, // ## + 0x00, 0x30, 0x00, // ## + 0x07, 0xF0, 0x00, // ####### + 0x1F, 0xF0, 0x00, // ######### + 0x38, 0x30, 0x00, // ### ## + 0x30, 0x30, 0x00, // ## ## + 0x30, 0x70, 0x00, // ## ### + 0x1F, 0xFC, 0x00, // ########### + 0x0F, 0xBC, 0x00, // ##### #### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @4752 'b' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x78, 0x00, 0x00, // #### + 0x78, 0x00, 0x00, // #### + 0x18, 0x00, 0x00, // ## + 0x18, 0x00, 0x00, // ## + 0x1B, 0xE0, 0x00, // ## ##### + 0x1F, 0xF8, 0x00, // ########## + 0x1C, 0x18, 0x00, // ### ## + 0x18, 0x0C, 0x00, // ## ## + 0x18, 0x0C, 0x00, // ## ## + 0x18, 0x0C, 0x00, // ## ## + 0x18, 0x0C, 0x00, // ## ## + 0x18, 0x0C, 0x00, // ## ## + 0x1C, 0x18, 0x00, // ### ## + 0x7F, 0xF8, 0x00, // ############ + 0x7B, 0xE0, 0x00, // #### ##### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @4824 'c' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x03, 0xEC, 0x00, // ##### ## + 0x0F, 0xFC, 0x00, // ########## + 0x1C, 0x1C, 0x00, // ### ### + 0x38, 0x0C, 0x00, // ### ## + 0x30, 0x0C, 0x00, // ## ## + 0x30, 0x00, 0x00, // ## + 0x30, 0x00, 0x00, // ## + 0x38, 0x0C, 0x00, // ### ## + 0x1C, 0x1C, 0x00, // ### ### + 0x0F, 0xF8, 0x00, // ######### + 0x03, 0xF0, 0x00, // ###### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @4896 'd' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x78, 0x00, // #### + 0x00, 0x78, 0x00, // #### + 0x00, 0x18, 0x00, // ## + 0x00, 0x18, 0x00, // ## + 0x07, 0xD8, 0x00, // ##### ## + 0x1F, 0xF8, 0x00, // ########## + 0x18, 0x38, 0x00, // ## ### + 0x30, 0x18, 0x00, // ## ## + 0x30, 0x18, 0x00, // ## ## + 0x30, 0x18, 0x00, // ## ## + 0x30, 0x18, 0x00, // ## ## + 0x30, 0x18, 0x00, // ## ## + 0x18, 0x38, 0x00, // ## ### + 0x1F, 0xFE, 0x00, // ############ + 0x07, 0xDE, 0x00, // ##### #### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @4968 'e' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x07, 0xE0, 0x00, // ###### + 0x1F, 0xF8, 0x00, // ########## + 0x18, 0x18, 0x00, // ## ## + 0x30, 0x0C, 0x00, // ## ## + 0x3F, 0xFC, 0x00, // ############ + 0x3F, 0xFC, 0x00, // ############ + 0x30, 0x00, 0x00, // ## + 0x30, 0x00, 0x00, // ## + 0x18, 0x0C, 0x00, // ## ## + 0x1F, 0xFC, 0x00, // ########### + 0x07, 0xF0, 0x00, // ####### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @5040 'f' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x01, 0xFC, 0x00, // ####### + 0x03, 0xFC, 0x00, // ######## + 0x06, 0x00, 0x00, // ## + 0x06, 0x00, 0x00, // ## + 0x3F, 0xF8, 0x00, // ########### + 0x3F, 0xF8, 0x00, // ########### + 0x06, 0x00, 0x00, // ## + 0x06, 0x00, 0x00, // ## + 0x06, 0x00, 0x00, // ## + 0x06, 0x00, 0x00, // ## + 0x06, 0x00, 0x00, // ## + 0x06, 0x00, 0x00, // ## + 0x06, 0x00, 0x00, // ## + 0x3F, 0xF0, 0x00, // ########## + 0x3F, 0xF0, 0x00, // ########## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @5112 'g' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x07, 0xDE, 0x00, // ##### #### + 0x1F, 0xFE, 0x00, // ############ + 0x18, 0x38, 0x00, // ## ### + 0x30, 0x18, 0x00, // ## ## + 0x30, 0x18, 0x00, // ## ## + 0x30, 0x18, 0x00, // ## ## + 0x30, 0x18, 0x00, // ## ## + 0x30, 0x18, 0x00, // ## ## + 0x18, 0x38, 0x00, // ## ### + 0x1F, 0xF8, 0x00, // ########## + 0x07, 0xD8, 0x00, // ##### ## + 0x00, 0x18, 0x00, // ## + 0x00, 0x18, 0x00, // ## + 0x00, 0x38, 0x00, // ### + 0x0F, 0xF0, 0x00, // ######## + 0x0F, 0xC0, 0x00, // ###### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @5184 'h' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x78, 0x00, 0x00, // #### + 0x78, 0x00, 0x00, // #### + 0x18, 0x00, 0x00, // ## + 0x18, 0x00, 0x00, // ## + 0x1B, 0xE0, 0x00, // ## ##### + 0x1F, 0xF0, 0x00, // ######### + 0x1C, 0x38, 0x00, // ### ### + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x7E, 0x7E, 0x00, // ###### ###### + 0x7E, 0x7E, 0x00, // ###### ###### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @5256 'i' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x1F, 0x80, 0x00, // ###### + 0x1F, 0x80, 0x00, // ###### + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x3F, 0xFC, 0x00, // ############ + 0x3F, 0xFC, 0x00, // ############ + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @5328 'j' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0xC0, 0x00, // ## + 0x00, 0xC0, 0x00, // ## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x1F, 0xF0, 0x00, // ######### + 0x1F, 0xF0, 0x00, // ######### + 0x00, 0x30, 0x00, // ## + 0x00, 0x30, 0x00, // ## + 0x00, 0x30, 0x00, // ## + 0x00, 0x30, 0x00, // ## + 0x00, 0x30, 0x00, // ## + 0x00, 0x30, 0x00, // ## + 0x00, 0x30, 0x00, // ## + 0x00, 0x30, 0x00, // ## + 0x00, 0x30, 0x00, // ## + 0x00, 0x30, 0x00, // ## + 0x00, 0x30, 0x00, // ## + 0x00, 0x70, 0x00, // ### + 0x1F, 0xE0, 0x00, // ######## + 0x1F, 0x80, 0x00, // ###### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @5400 'k' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x3C, 0x00, 0x00, // #### + 0x3C, 0x00, 0x00, // #### + 0x0C, 0x00, 0x00, // ## + 0x0C, 0x00, 0x00, // ## + 0x0C, 0xF8, 0x00, // ## ##### + 0x0C, 0xF8, 0x00, // ## ##### + 0x0C, 0xC0, 0x00, // ## ## + 0x0D, 0x80, 0x00, // ## ## + 0x0F, 0x80, 0x00, // ##### + 0x0F, 0x00, 0x00, // #### + 0x0F, 0x80, 0x00, // ##### + 0x0D, 0xC0, 0x00, // ## ### + 0x0C, 0xE0, 0x00, // ## ### + 0x3C, 0x7C, 0x00, // #### ##### + 0x3C, 0x7C, 0x00, // #### ##### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @5472 'l' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x1F, 0x80, 0x00, // ###### + 0x1F, 0x80, 0x00, // ###### + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x3F, 0xFC, 0x00, // ############ + 0x3F, 0xFC, 0x00, // ############ + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @5544 'm' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0xF7, 0x78, 0x00, // #### ### #### + 0xFF, 0xFC, 0x00, // ############## + 0x39, 0xCC, 0x00, // ### ### ## + 0x31, 0x8C, 0x00, // ## ## ## + 0x31, 0x8C, 0x00, // ## ## ## + 0x31, 0x8C, 0x00, // ## ## ## + 0x31, 0x8C, 0x00, // ## ## ## + 0x31, 0x8C, 0x00, // ## ## ## + 0x31, 0x8C, 0x00, // ## ## ## + 0xFD, 0xEF, 0x00, // ###### #### #### + 0xFD, 0xEF, 0x00, // ###### #### #### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @5616 'n' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x7B, 0xE0, 0x00, // #### ##### + 0x7F, 0xF0, 0x00, // ########### + 0x1C, 0x38, 0x00, // ### ### + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x7E, 0x7E, 0x00, // ###### ###### + 0x7E, 0x7E, 0x00, // ###### ###### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @5688 'o' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x03, 0xC0, 0x00, // #### + 0x0F, 0xF0, 0x00, // ######## + 0x1C, 0x38, 0x00, // ### ### + 0x38, 0x1C, 0x00, // ### ### + 0x30, 0x0C, 0x00, // ## ## + 0x30, 0x0C, 0x00, // ## ## + 0x30, 0x0C, 0x00, // ## ## + 0x38, 0x1C, 0x00, // ### ### + 0x1C, 0x38, 0x00, // ### ### + 0x0F, 0xF0, 0x00, // ######## + 0x03, 0xC0, 0x00, // #### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @5760 'p' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x7B, 0xE0, 0x00, // #### ##### + 0x7F, 0xF8, 0x00, // ############ + 0x1C, 0x18, 0x00, // ### ## + 0x18, 0x0C, 0x00, // ## ## + 0x18, 0x0C, 0x00, // ## ## + 0x18, 0x0C, 0x00, // ## ## + 0x18, 0x0C, 0x00, // ## ## + 0x18, 0x0C, 0x00, // ## ## + 0x1C, 0x18, 0x00, // ### ## + 0x1F, 0xF8, 0x00, // ########## + 0x1B, 0xE0, 0x00, // ## ##### + 0x18, 0x00, 0x00, // ## + 0x18, 0x00, 0x00, // ## + 0x18, 0x00, 0x00, // ## + 0x7F, 0x00, 0x00, // ####### + 0x7F, 0x00, 0x00, // ####### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @5832 'q' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x07, 0xDE, 0x00, // ##### #### + 0x1F, 0xFE, 0x00, // ############ + 0x18, 0x38, 0x00, // ## ### + 0x30, 0x18, 0x00, // ## ## + 0x30, 0x18, 0x00, // ## ## + 0x30, 0x18, 0x00, // ## ## + 0x30, 0x18, 0x00, // ## ## + 0x30, 0x18, 0x00, // ## ## + 0x18, 0x38, 0x00, // ## ### + 0x1F, 0xF8, 0x00, // ########## + 0x07, 0xD8, 0x00, // ##### ## + 0x00, 0x18, 0x00, // ## + 0x00, 0x18, 0x00, // ## + 0x00, 0x18, 0x00, // ## + 0x00, 0xFE, 0x00, // ####### + 0x00, 0xFE, 0x00, // ####### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @5904 'r' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x3E, 0x78, 0x00, // ##### #### + 0x3E, 0xFC, 0x00, // ##### ###### + 0x07, 0xCC, 0x00, // ##### ## + 0x07, 0x00, 0x00, // ### + 0x06, 0x00, 0x00, // ## + 0x06, 0x00, 0x00, // ## + 0x06, 0x00, 0x00, // ## + 0x06, 0x00, 0x00, // ## + 0x06, 0x00, 0x00, // ## + 0x3F, 0xF0, 0x00, // ########## + 0x3F, 0xF0, 0x00, // ########## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @5976 's' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x07, 0xF8, 0x00, // ######## + 0x0F, 0xF8, 0x00, // ######### + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x1F, 0x80, 0x00, // ###### + 0x0F, 0xF0, 0x00, // ######## + 0x00, 0xF8, 0x00, // ##### + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x38, 0x00, // ## ### + 0x1F, 0xF0, 0x00, // ######### + 0x1F, 0xE0, 0x00, // ######## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @6048 't' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x0C, 0x00, 0x00, // ## + 0x0C, 0x00, 0x00, // ## + 0x0C, 0x00, 0x00, // ## + 0x0C, 0x00, 0x00, // ## + 0x3F, 0xF0, 0x00, // ########## + 0x3F, 0xF0, 0x00, // ########## + 0x0C, 0x00, 0x00, // ## + 0x0C, 0x00, 0x00, // ## + 0x0C, 0x00, 0x00, // ## + 0x0C, 0x00, 0x00, // ## + 0x0C, 0x00, 0x00, // ## + 0x0C, 0x00, 0x00, // ## + 0x0C, 0x1C, 0x00, // ## ### + 0x07, 0xFC, 0x00, // ######### + 0x03, 0xF0, 0x00, // ###### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @6120 'u' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x78, 0x78, 0x00, // #### #### + 0x78, 0x78, 0x00, // #### #### + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x38, 0x00, // ## ### + 0x0F, 0xFE, 0x00, // ########### + 0x07, 0xDE, 0x00, // ##### #### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @6192 'v' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x7C, 0x3E, 0x00, // ##### ##### + 0x7C, 0x3E, 0x00, // ##### ##### + 0x18, 0x18, 0x00, // ## ## + 0x18, 0x18, 0x00, // ## ## + 0x0C, 0x30, 0x00, // ## ## + 0x0C, 0x30, 0x00, // ## ## + 0x06, 0x60, 0x00, // ## ## + 0x06, 0x60, 0x00, // ## ## + 0x07, 0xE0, 0x00, // ###### + 0x03, 0xC0, 0x00, // #### + 0x03, 0xC0, 0x00, // #### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @6264 'w' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x78, 0x3C, 0x00, // #### #### + 0x78, 0x3C, 0x00, // #### #### + 0x31, 0x18, 0x00, // ## # ## + 0x33, 0x98, 0x00, // ## ### ## + 0x33, 0x98, 0x00, // ## ### ## + 0x1A, 0xB0, 0x00, // ## # # ## + 0x1E, 0xF0, 0x00, // #### #### + 0x1E, 0xF0, 0x00, // #### #### + 0x1C, 0x60, 0x00, // ### ## + 0x0C, 0x60, 0x00, // ## ## + 0x0C, 0x60, 0x00, // ## ## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @6336 'x' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x3E, 0x7C, 0x00, // ##### ##### + 0x3E, 0x7C, 0x00, // ##### ##### + 0x0C, 0x30, 0x00, // ## ## + 0x06, 0x60, 0x00, // ## ## + 0x03, 0xC0, 0x00, // #### + 0x01, 0x80, 0x00, // ## + 0x03, 0xC0, 0x00, // #### + 0x06, 0x60, 0x00, // ## ## + 0x0C, 0x30, 0x00, // ## ## + 0x3E, 0x7C, 0x00, // ##### ##### + 0x3E, 0x7C, 0x00, // ##### ##### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @6408 'y' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x7E, 0x1F, 0x00, // ###### ##### + 0x7E, 0x1F, 0x00, // ###### ##### + 0x18, 0x0C, 0x00, // ## ## + 0x0C, 0x18, 0x00, // ## ## + 0x0C, 0x18, 0x00, // ## ## + 0x06, 0x30, 0x00, // ## ## + 0x06, 0x30, 0x00, // ## ## + 0x03, 0x60, 0x00, // ## ## + 0x03, 0xE0, 0x00, // ##### + 0x01, 0xC0, 0x00, // ### + 0x00, 0xC0, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x03, 0x00, 0x00, // ## + 0x3F, 0xC0, 0x00, // ######## + 0x3F, 0xC0, 0x00, // ######## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @6480 'z' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x1F, 0xF8, 0x00, // ########## + 0x1F, 0xF8, 0x00, // ########## + 0x18, 0x30, 0x00, // ## ## + 0x18, 0x60, 0x00, // ## ## + 0x00, 0xC0, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x03, 0x00, 0x00, // ## + 0x06, 0x18, 0x00, // ## ## + 0x0C, 0x18, 0x00, // ## ## + 0x1F, 0xF8, 0x00, // ########## + 0x1F, 0xF8, 0x00, // ########## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @6552 '{' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0xE0, 0x00, // ### + 0x01, 0xE0, 0x00, // #### + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x03, 0x80, 0x00, // ### + 0x07, 0x00, 0x00, // ### + 0x03, 0x80, 0x00, // ### + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0xE0, 0x00, // #### + 0x00, 0xE0, 0x00, // ### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @6624 '|' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @6696 '}' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x07, 0x00, 0x00, // ### + 0x07, 0x80, 0x00, // #### + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0xC0, 0x00, // ### + 0x00, 0xE0, 0x00, // ### + 0x01, 0xC0, 0x00, // ### + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x01, 0x80, 0x00, // ## + 0x07, 0x80, 0x00, // #### + 0x07, 0x00, 0x00, // ### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + + // @6768 '~' (17 pixels wide) + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x0E, 0x00, 0x00, // ### + 0x1F, 0x18, 0x00, // ##### ## + 0x3B, 0xB8, 0x00, // ### ### ### + 0x31, 0xF0, 0x00, // ## ##### + 0x00, 0xE0, 0x00, // ### + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // + 0x00, 0x00, 0x00, // +}; + +sFONT Font24 = { + Font24_Table, + 17, /* Width */ + 24, /* Height */ +}; + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Arduino/epd2in13_V3/font8.c b/Arduino/epd2in13_V3/font8.c new file mode 100644 index 0000000..1b0d2ab --- /dev/null +++ b/Arduino/epd2in13_V3/font8.c @@ -0,0 +1,1005 @@ +/** + ****************************************************************************** + * @file Font8.c + * @author MCD Application Team + * @version V1.0.0 + * @date 18-February-2014 + * @brief This file provides text Font8 for STM32xx-EVAL's LCD driver. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2014 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "fonts.h" +#include + +// +// Font data for Courier New 12pt +// + +const uint8_t Font8_Table[] PROGMEM = +{ + // @0 ' ' (5 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + + // @8 '!' (5 pixels wide) + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x00, // + 0x20, // # + 0x00, // + 0x00, // + + // @16 '"' (5 pixels wide) + 0x50, // # # + 0x50, // # # + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + + // @24 '#' (5 pixels wide) + 0x28, // # # + 0x50, // # # + 0xF8, // ##### + 0x50, // # # + 0xF8, // ##### + 0x50, // # # + 0xA0, // # # + 0x00, // + + // @32 '$' (5 pixels wide) + 0x20, // # + 0x30, // ## + 0x60, // ## + 0x30, // ## + 0x10, // # + 0x60, // ## + 0x20, // # + 0x00, // + + // @40 '%' (5 pixels wide) + 0x20, // # + 0x20, // # + 0x18, // ## + 0x60, // ## + 0x10, // # + 0x10, // # + 0x00, // + 0x00, // + + // @48 '&' (5 pixels wide) + 0x00, // + 0x38, // ### + 0x20, // # + 0x60, // ## + 0x50, // # # + 0x78, // #### + 0x00, // + 0x00, // + + // @56 ''' (5 pixels wide) + 0x20, // # + 0x20, // # + 0x20, // # + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + + // @64 '(' (5 pixels wide) + 0x10, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x10, // # + 0x00, // + + // @72 ')' (5 pixels wide) + 0x40, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x40, // # + 0x00, // + + // @80 '*' (5 pixels wide) + 0x20, // # + 0x70, // ### + 0x20, // # + 0x50, // # # + 0x00, // + 0x00, // + 0x00, // + 0x00, // + + // @88 '+' (5 pixels wide) + 0x00, // + 0x20, // # + 0x20, // # + 0xF8, // ##### + 0x20, // # + 0x20, // # + 0x00, // + 0x00, // + + // @96 ',' (5 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x10, // # + 0x20, // # + 0x20, // # + 0x00, // + + // @104 '-' (5 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x70, // ### + 0x00, // + 0x00, // + 0x00, // + 0x00, // + + // @112 '.' (5 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x20, // # + 0x00, // + 0x00, // + + // @120 '/' (5 pixels wide) + 0x10, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x40, // # + 0x40, // # + 0x80, // # + 0x00, // + + // @128 '0' (5 pixels wide) + 0x20, // # + 0x50, // # # + 0x50, // # # + 0x50, // # # + 0x50, // # # + 0x20, // # + 0x00, // + 0x00, // + + // @136 '1' (5 pixels wide) + 0x60, // ## + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0xF8, // ##### + 0x00, // + 0x00, // + + // @144 '2' (5 pixels wide) + 0x20, // # + 0x50, // # # + 0x20, // # + 0x20, // # + 0x40, // # + 0x70, // ### + 0x00, // + 0x00, // + + // @152 '3' (5 pixels wide) + 0x20, // # + 0x50, // # # + 0x10, // # + 0x20, // # + 0x10, // # + 0x60, // ## + 0x00, // + 0x00, // + + // @160 '4' (5 pixels wide) + 0x10, // # + 0x30, // ## + 0x50, // # # + 0x78, // #### + 0x10, // # + 0x38, // ### + 0x00, // + 0x00, // + + // @168 '5' (5 pixels wide) + 0x70, // ### + 0x40, // # + 0x60, // ## + 0x10, // # + 0x50, // # # + 0x20, // # + 0x00, // + 0x00, // + + // @176 '6' (5 pixels wide) + 0x30, // ## + 0x40, // # + 0x60, // ## + 0x50, // # # + 0x50, // # # + 0x60, // ## + 0x00, // + 0x00, // + + // @184 '7' (5 pixels wide) + 0x70, // ### + 0x50, // # # + 0x10, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x00, // + 0x00, // + + // @192 '8' (5 pixels wide) + 0x20, // # + 0x50, // # # + 0x20, // # + 0x50, // # # + 0x50, // # # + 0x20, // # + 0x00, // + 0x00, // + + // @200 '9' (5 pixels wide) + 0x30, // ## + 0x50, // # # + 0x50, // # # + 0x30, // ## + 0x10, // # + 0x60, // ## + 0x00, // + 0x00, // + + // @208 ':' (5 pixels wide) + 0x00, // + 0x00, // + 0x20, // # + 0x00, // + 0x00, // + 0x20, // # + 0x00, // + 0x00, // + + // @216 ';' (5 pixels wide) + 0x00, // + 0x00, // + 0x10, // # + 0x00, // + 0x10, // # + 0x20, // # + 0x00, // + 0x00, // + + // @224 '<' (5 pixels wide) + 0x00, // + 0x10, // # + 0x20, // # + 0xC0, // ## + 0x20, // # + 0x10, // # + 0x00, // + 0x00, // + + // @232 '=' (5 pixels wide) + 0x00, // + 0x70, // ### + 0x00, // + 0x70, // ### + 0x00, // + 0x00, // + 0x00, // + 0x00, // + + // @240 '>' (5 pixels wide) + 0x00, // + 0x40, // # + 0x20, // # + 0x18, // ## + 0x20, // # + 0x40, // # + 0x00, // + 0x00, // + + // @248 '?' (5 pixels wide) + 0x20, // # + 0x50, // # # + 0x10, // # + 0x20, // # + 0x00, // + 0x20, // # + 0x00, // + 0x00, // + + // @256 '@' (5 pixels wide) + 0x30, // ## + 0x48, // # # + 0x48, // # # + 0x58, // # ## + 0x48, // # # + 0x40, // # + 0x38, // ### + 0x00, // + + // @264 'A' (5 pixels wide) + 0x60, // ## + 0x20, // # + 0x50, // # # + 0x70, // ### + 0x88, // # # + 0xD8, // ## ## + 0x00, // + 0x00, // + + // @272 'B' (5 pixels wide) + 0xF0, // #### + 0x48, // # # + 0x70, // ### + 0x48, // # # + 0x48, // # # + 0xF0, // #### + 0x00, // + 0x00, // + + // @280 'C' (5 pixels wide) + 0x70, // ### + 0x50, // # # + 0x40, // # + 0x40, // # + 0x40, // # + 0x30, // ## + 0x00, // + 0x00, // + + // @288 'D' (5 pixels wide) + 0xF0, // #### + 0x48, // # # + 0x48, // # # + 0x48, // # # + 0x48, // # # + 0xF0, // #### + 0x00, // + 0x00, // + + // @296 'E' (5 pixels wide) + 0xF8, // ##### + 0x48, // # # + 0x60, // ## + 0x40, // # + 0x48, // # # + 0xF8, // ##### + 0x00, // + 0x00, // + + // @304 'F' (5 pixels wide) + 0xF8, // ##### + 0x48, // # # + 0x60, // ## + 0x40, // # + 0x40, // # + 0xE0, // ### + 0x00, // + 0x00, // + + // @312 'G' (5 pixels wide) + 0x70, // ### + 0x40, // # + 0x40, // # + 0x58, // # ## + 0x50, // # # + 0x30, // ## + 0x00, // + 0x00, // + + // @320 'H' (5 pixels wide) + 0xE8, // ### # + 0x48, // # # + 0x78, // #### + 0x48, // # # + 0x48, // # # + 0xE8, // ### # + 0x00, // + 0x00, // + + // @328 'I' (5 pixels wide) + 0x70, // ### + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x70, // ### + 0x00, // + 0x00, // + + // @336 'J' (5 pixels wide) + 0x38, // ### + 0x10, // # + 0x10, // # + 0x50, // # # + 0x50, // # # + 0x20, // # + 0x00, // + 0x00, // + + // @344 'K' (5 pixels wide) + 0xD8, // ## ## + 0x50, // # # + 0x60, // ## + 0x70, // ### + 0x50, // # # + 0xD8, // ## ## + 0x00, // + 0x00, // + + // @352 'L' (5 pixels wide) + 0xE0, // ### + 0x40, // # + 0x40, // # + 0x40, // # + 0x48, // # # + 0xF8, // ##### + 0x00, // + 0x00, // + + // @360 'M' (5 pixels wide) + 0xD8, // ## ## + 0xD8, // ## ## + 0xD8, // ## ## + 0xA8, // # # # + 0x88, // # # + 0xD8, // ## ## + 0x00, // + 0x00, // + + // @368 'N' (5 pixels wide) + 0xD8, // ## ## + 0x68, // ## # + 0x68, // ## # + 0x58, // # ## + 0x58, // # ## + 0xE8, // ### # + 0x00, // + 0x00, // + + // @376 'O' (5 pixels wide) + 0x30, // ## + 0x48, // # # + 0x48, // # # + 0x48, // # # + 0x48, // # # + 0x30, // ## + 0x00, // + 0x00, // + + // @384 'P' (5 pixels wide) + 0xF0, // #### + 0x48, // # # + 0x48, // # # + 0x70, // ### + 0x40, // # + 0xE0, // ### + 0x00, // + 0x00, // + + // @392 'Q' (5 pixels wide) + 0x30, // ## + 0x48, // # # + 0x48, // # # + 0x48, // # # + 0x48, // # # + 0x30, // ## + 0x18, // ## + 0x00, // + + // @400 'R' (5 pixels wide) + 0xF0, // #### + 0x48, // # # + 0x48, // # # + 0x70, // ### + 0x48, // # # + 0xE8, // ### # + 0x00, // + 0x00, // + + // @408 'S' (5 pixels wide) + 0x70, // ### + 0x50, // # # + 0x20, // # + 0x10, // # + 0x50, // # # + 0x70, // ### + 0x00, // + 0x00, // + + // @416 'T' (5 pixels wide) + 0xF8, // ##### + 0xA8, // # # # + 0x20, // # + 0x20, // # + 0x20, // # + 0x70, // ### + 0x00, // + 0x00, // + + // @424 'U' (5 pixels wide) + 0xD8, // ## ## + 0x48, // # # + 0x48, // # # + 0x48, // # # + 0x48, // # # + 0x30, // ## + 0x00, // + 0x00, // + + // @432 'V' (5 pixels wide) + 0xD8, // ## ## + 0x88, // # # + 0x48, // # # + 0x50, // # # + 0x50, // # # + 0x30, // ## + 0x00, // + 0x00, // + + // @440 'W' (5 pixels wide) + 0xD8, // ## ## + 0x88, // # # + 0xA8, // # # # + 0xA8, // # # # + 0xA8, // # # # + 0x50, // # # + 0x00, // + 0x00, // + + // @448 'X' (5 pixels wide) + 0xD8, // ## ## + 0x50, // # # + 0x20, // # + 0x20, // # + 0x50, // # # + 0xD8, // ## ## + 0x00, // + 0x00, // + + // @456 'Y' (5 pixels wide) + 0xD8, // ## ## + 0x88, // # # + 0x50, // # # + 0x20, // # + 0x20, // # + 0x70, // ### + 0x00, // + 0x00, // + + // @464 'Z' (5 pixels wide) + 0x78, // #### + 0x48, // # # + 0x10, // # + 0x20, // # + 0x48, // # # + 0x78, // #### + 0x00, // + 0x00, // + + // @472 '[' (5 pixels wide) + 0x30, // ## + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x30, // ## + 0x00, // + + // @480 '\' (5 pixels wide) + 0x80, // # + 0x40, // # + 0x40, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x10, // # + 0x00, // + + // @488 ']' (5 pixels wide) + 0x60, // ## + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x60, // ## + 0x00, // + + // @496 '^' (5 pixels wide) + 0x20, // # + 0x20, // # + 0x50, // # # + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + + // @504 '_' (5 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0xF8, // ##### + + // @512 '`' (5 pixels wide) + 0x20, // # + 0x10, // # + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + 0x00, // + + // @520 'a' (5 pixels wide) + 0x00, // + 0x00, // + 0x30, // ## + 0x10, // # + 0x70, // ### + 0x78, // #### + 0x00, // + 0x00, // + + // @528 'b' (5 pixels wide) + 0xC0, // ## + 0x40, // # + 0x70, // ### + 0x48, // # # + 0x48, // # # + 0xF0, // #### + 0x00, // + 0x00, // + + // @536 'c' (5 pixels wide) + 0x00, // + 0x00, // + 0x70, // ### + 0x40, // # + 0x40, // # + 0x70, // ### + 0x00, // + 0x00, // + + // @544 'd' (5 pixels wide) + 0x18, // ## + 0x08, // # + 0x38, // ### + 0x48, // # # + 0x48, // # # + 0x38, // ### + 0x00, // + 0x00, // + + // @552 'e' (5 pixels wide) + 0x00, // + 0x00, // + 0x70, // ### + 0x70, // ### + 0x40, // # + 0x30, // ## + 0x00, // + 0x00, // + + // @560 'f' (5 pixels wide) + 0x10, // # + 0x20, // # + 0x70, // ### + 0x20, // # + 0x20, // # + 0x70, // ### + 0x00, // + 0x00, // + + // @568 'g' (5 pixels wide) + 0x00, // + 0x00, // + 0x38, // ### + 0x48, // # # + 0x48, // # # + 0x38, // ### + 0x08, // # + 0x30, // ## + + // @576 'h' (5 pixels wide) + 0xC0, // ## + 0x40, // # + 0x70, // ### + 0x48, // # # + 0x48, // # # + 0xE8, // ### # + 0x00, // + 0x00, // + + // @584 'i' (5 pixels wide) + 0x20, // # + 0x00, // + 0x60, // ## + 0x20, // # + 0x20, // # + 0x70, // ### + 0x00, // + 0x00, // + + // @592 'j' (5 pixels wide) + 0x20, // # + 0x00, // + 0x70, // ### + 0x10, // # + 0x10, // # + 0x10, // # + 0x10, // # + 0x70, // ### + + // @600 'k' (5 pixels wide) + 0xC0, // ## + 0x40, // # + 0x58, // # ## + 0x70, // ### + 0x50, // # # + 0xD8, // ## ## + 0x00, // + 0x00, // + + // @608 'l' (5 pixels wide) + 0x60, // ## + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x70, // ### + 0x00, // + 0x00, // + + // @616 'm' (5 pixels wide) + 0x00, // + 0x00, // + 0xD0, // ## # + 0xA8, // # # # + 0xA8, // # # # + 0xA8, // # # # + 0x00, // + 0x00, // + + // @624 'n' (5 pixels wide) + 0x00, // + 0x00, // + 0xF0, // #### + 0x48, // # # + 0x48, // # # + 0xC8, // ## # + 0x00, // + 0x00, // + + // @632 'o' (5 pixels wide) + 0x00, // + 0x00, // + 0x30, // ## + 0x48, // # # + 0x48, // # # + 0x30, // ## + 0x00, // + 0x00, // + + // @640 'p' (5 pixels wide) + 0x00, // + 0x00, // + 0xF0, // #### + 0x48, // # # + 0x48, // # # + 0x70, // ### + 0x40, // # + 0xE0, // ### + + // @648 'q' (5 pixels wide) + 0x00, // + 0x00, // + 0x38, // ### + 0x48, // # # + 0x48, // # # + 0x38, // ### + 0x08, // # + 0x18, // ## + + // @656 'r' (5 pixels wide) + 0x00, // + 0x00, // + 0x78, // #### + 0x20, // # + 0x20, // # + 0x70, // ### + 0x00, // + 0x00, // + + // @664 's' (5 pixels wide) + 0x00, // + 0x00, // + 0x30, // ## + 0x20, // # + 0x10, // # + 0x60, // ## + 0x00, // + 0x00, // + + // @672 't' (5 pixels wide) + 0x00, // + 0x40, // # + 0xF0, // #### + 0x40, // # + 0x48, // # # + 0x30, // ## + 0x00, // + 0x00, // + + // @680 'u' (5 pixels wide) + 0x00, // + 0x00, // + 0xD8, // ## ## + 0x48, // # # + 0x48, // # # + 0x38, // ### + 0x00, // + 0x00, // + + // @688 'v' (5 pixels wide) + 0x00, // + 0x00, // + 0xC8, // ## # + 0x48, // # # + 0x30, // ## + 0x30, // ## + 0x00, // + 0x00, // + + // @696 'w' (5 pixels wide) + 0x00, // + 0x00, // + 0xD8, // ## ## + 0xA8, // # # # + 0xA8, // # # # + 0x50, // # # + 0x00, // + 0x00, // + + // @704 'x' (5 pixels wide) + 0x00, // + 0x00, // + 0x48, // # # + 0x30, // ## + 0x30, // ## + 0x48, // # # + 0x00, // + 0x00, // + + // @712 'y' (5 pixels wide) + 0x00, // + 0x00, // + 0xD8, // ## ## + 0x50, // # # + 0x50, // # # + 0x20, // # + 0x20, // # + 0x60, // ## + + // @720 'z' (5 pixels wide) + 0x00, // + 0x00, // + 0x78, // #### + 0x50, // # # + 0x28, // # # + 0x78, // #### + 0x00, // + 0x00, // + + // @728 '{' (5 pixels wide) + 0x10, // # + 0x20, // # + 0x20, // # + 0x60, // ## + 0x20, // # + 0x20, // # + 0x10, // # + 0x00, // + + // @736 '|' (5 pixels wide) + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x20, // # + 0x00, // + + // @744 '}' (5 pixels wide) + 0x40, // # + 0x20, // # + 0x20, // # + 0x30, // ## + 0x20, // # + 0x20, // # + 0x40, // # + 0x00, // + + // @752 '~' (5 pixels wide) + 0x00, // + 0x00, // + 0x00, // + 0x28, // # # + 0x50, // # # + 0x00, // + 0x00, // + 0x00, // +}; + +sFONT Font8 = { + Font8_Table, + 5, /* Width */ + 8, /* Height */ +}; + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Arduino/epd2in13_V3/fonts.h b/Arduino/epd2in13_V3/fonts.h new file mode 100644 index 0000000..4530308 --- /dev/null +++ b/Arduino/epd2in13_V3/fonts.h @@ -0,0 +1,75 @@ +/** + ****************************************************************************** + * @file fonts.h + * @author MCD Application Team + * @version V1.0.0 + * @date 18-February-2014 + * @brief Header for fonts.c file + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2014 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __FONTS_H +#define __FONTS_H + +/* Max size of bitmap will based on a font24 (17x24) */ +#define MAX_HEIGHT_FONT 24 +#define MAX_WIDTH_FONT 17 +#define OFFSET_BITMAP 54 + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include + +typedef struct _tFont +{ + const uint8_t *table; + uint16_t Width; + uint16_t Height; + +} sFONT; + +extern sFONT Font24; +extern sFONT Font20; +extern sFONT Font16; +extern sFONT Font12; +extern sFONT Font8; + +#ifdef __cplusplus +} +#endif + +#endif /* __FONTS_H */ + + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Arduino/epd2in13_V3/imagedata.cpp b/Arduino/epd2in13_V3/imagedata.cpp new file mode 100644 index 0000000..9a43d67 --- /dev/null +++ b/Arduino/epd2in13_V3/imagedata.cpp @@ -0,0 +1,281 @@ +/** + * @filename : imagedata.cpp + * @brief : data file for epd demo + * + * Copyright (C) Waveshare September 5 2017 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documnetation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "imagedata.h" +#include + +const unsigned char IMAGE_DATA[] PROGMEM = { +/* 0X00,0X01,0X80,0X00,0XFA,0X00, */ +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X38,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X00,0X00,0X78,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0X80,0X00,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XC0,0X03,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X01,0X00,0X00,0X00,0X00,0X01,0XFF,0XE0,0X1F,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0XC0,0X00,0X00,0X00,0X03,0XFF,0X70,0X1F,0XF0,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X7E,0X00,0X00,0X00,0X03,0XFF,0X78,0X38,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X3F,0X00,0X00,0X00,0X03,0XFF,0XF8,0XF0,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X0F,0XC0,0X00,0X00,0X03,0XF0,0XF8,0XC1,0XF8,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X03,0XF0,0X00,0X00,0X03,0XF3,0XF3,0X8F,0XFE,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X01,0XF8,0X00,0X00,0X03,0XFF,0XF3,0XBF,0XFF,0XC0,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X3E,0X00,0X00,0X03,0XFF,0XFA,0X7F,0XFF,0XF0,0X00,0X00, +0X00,0X0F,0X00,0X00,0X00,0X3F,0XE0,0X00,0X00,0XE7,0XFB,0XFF,0XFF,0XF0,0X00,0X00, +0X00,0X07,0X00,0X00,0X00,0X3F,0XF0,0X00,0X00,0XE7,0XFB,0XFF,0XFF,0XE0,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X1F,0XFC,0X00,0X00,0XFF,0XFB,0XFF,0XFF,0XE0,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X0F,0XFE,0X00,0X00,0X7F,0XFB,0XCF,0XFF,0XE0,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X03,0XFE,0X00,0X00,0X3F,0XF9,0XCF,0XFF,0XE0,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X01,0XFF,0X80,0X00,0X0F,0XF1,0XFF,0XFF,0XE0,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X00,0XFF,0XC0,0X00,0X00,0X3D,0XEF,0XFF,0XE0,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X00,0X7F,0XE0,0X00,0X03,0XFF,0XF7,0XFF,0XC0,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X00,0X3F,0XE0,0X00,0X3F,0XFF,0XFF,0XFF,0X80,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X00,0X1F,0XE0,0X00,0X7E,0XFF,0XFF,0XFF,0X00,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X00,0X0F,0XE0,0X00,0X3E,0XFF,0XF1,0XFF,0X00,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X00,0X0F,0XE0,0X00,0X3F,0XFF,0XBF,0XFC,0X00,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X00,0X07,0XF0,0X00,0X3E,0X7F,0X3F,0XF8,0X38,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X00,0X07,0XF0,0X00,0X7E,0X7F,0XC0,0X00,0X7C,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X00,0X07,0XF0,0X00,0X7E,0X3F,0XC0,0X01,0XFE,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X00,0X07,0XF0,0X00,0X7F,0X1F,0XDF,0XFF,0XFF,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X00,0X7F,0X87,0XEF,0XFF,0XFF,0X80,0X00, +0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X00,0X7F,0XE3,0XF1,0XFF,0XFF,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X01,0X87,0XFC,0X78,0XFE,0X00,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X03,0X01,0XF8,0XFF,0X00,0X00,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X0E,0X00,0X01,0XFF,0X80,0X00,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X0C,0X00,0X03,0XFF,0X80,0X00,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X1C,0X00,0X0F,0X98,0X00,0X00,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X38,0X00,0X7F,0X9C,0X00,0X00,0X00,0X00, +0X00,0X03,0X00,0X00,0X00,0X00,0X03,0XF0,0X30,0X00,0X3F,0XDC,0X00,0X00,0X00,0X00, +0X00,0X03,0X00,0X00,0X07,0XFE,0X07,0XE0,0X30,0X00,0X1F,0XFE,0X00,0X00,0X00,0X00, +0X00,0X03,0X00,0X00,0X0F,0XFF,0X87,0XF0,0X70,0X00,0X1F,0XFC,0X00,0X00,0X00,0X00, +0X00,0X03,0X00,0X00,0X1F,0XFF,0XC7,0XF0,0X00,0X00,0X0F,0XFE,0X00,0X00,0X00,0X00, +0X00,0X03,0X00,0X00,0X3F,0XFF,0XE7,0XE0,0X00,0X00,0X0F,0XF0,0X00,0X00,0X00,0X00, +0X00,0X03,0X00,0X00,0X7F,0XFF,0XF3,0XE0,0X7F,0XFF,0XEF,0XE0,0X00,0X00,0X00,0X00, +0X00,0X03,0X00,0X00,0XFF,0X9F,0XFB,0XCF,0XFF,0XFF,0XC6,0X18,0X00,0X00,0X00,0X00, +0X00,0X03,0X00,0X03,0XFF,0XCF,0XF9,0XDF,0XFF,0XFF,0XC0,0X08,0X00,0X00,0X00,0X00, +0X00,0X03,0X00,0X0E,0XFF,0XDF,0XFD,0XFF,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X03,0X01,0XF0,0XFF,0XFF,0XFD,0XFF,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X03,0X03,0XF8,0XFF,0XFF,0XFD,0XFF,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X03,0X07,0XFC,0XFF,0XDF,0XFD,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X03,0X0F,0XFE,0XC7,0XDF,0XFD,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X03,0X3E,0X7F,0XF7,0XDF,0XFF,0XFE,0X30,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X03,0X3E,0X7F,0XF7,0XDF,0XCF,0XF0,0X38,0X00,0X06,0X00,0X00,0X00,0X00,0X00, +0X00,0X03,0X7E,0X7F,0XFF,0XFF,0X9F,0XE0,0X38,0X00,0X1F,0XC0,0X00,0X00,0X00,0X00, +0X00,0X03,0X7F,0X1F,0XFF,0XFE,0X3E,0X00,0X3C,0X00,0X3B,0XE0,0X00,0X00,0X00,0X00, +0X00,0X03,0X7F,0X8F,0XFF,0XFE,0X7C,0X00,0X3C,0X00,0X3B,0XE0,0X00,0X00,0X00,0X00, +0X00,0X03,0X7F,0X87,0XFE,0X3F,0XF8,0X00,0X3C,0X00,0X7F,0XF0,0X00,0X00,0X00,0X00, +0X00,0X03,0X7F,0XA1,0XF8,0X1F,0XFC,0X00,0X1C,0X00,0X7C,0XF0,0X00,0X00,0X00,0X00, +0X00,0X03,0X3F,0XFF,0XF0,0X0F,0XFC,0X00,0X0C,0X00,0X7E,0X7C,0X00,0X00,0X00,0X00, +0X00,0X03,0X3F,0XFF,0XF0,0X0F,0XFE,0X00,0X0C,0X00,0X7F,0X3C,0X00,0X00,0X00,0X00, +0X00,0X03,0X1F,0XFF,0XF0,0X0F,0XFF,0X00,0X0C,0X00,0X3F,0X80,0X00,0X00,0X00,0X00, +0X00,0X03,0X0F,0XFF,0XF0,0X0E,0X7F,0X80,0X0C,0X00,0X3F,0XC0,0X00,0X00,0X00,0X00, +0X00,0X03,0X07,0XFF,0XF8,0X0E,0X3F,0XC0,0X0C,0X00,0X1F,0XF0,0X00,0X00,0X00,0X00, +0X00,0X03,0X03,0XFF,0XF8,0X1E,0X1F,0XE0,0X0C,0X00,0X0F,0XF0,0X00,0X00,0X00,0X00, +0X00,0X03,0X00,0X3F,0XFE,0X3F,0X87,0XE0,0X3C,0X00,0X0F,0XBE,0X00,0X00,0X00,0X00, +0X00,0X03,0X00,0X47,0XFF,0XFF,0XF0,0X60,0X3C,0X00,0X0F,0XBF,0X00,0X00,0X00,0X00, +0X00,0X03,0X00,0X31,0XFF,0XFF,0XF8,0XE0,0X38,0X00,0X0F,0XBF,0X80,0X00,0X00,0X00, +0X00,0X03,0X06,0X11,0XFF,0XFD,0XFF,0XE0,0X38,0X00,0X0F,0X1F,0X80,0X00,0X00,0X00, +0X00,0X03,0X0E,0X13,0XFF,0XF9,0XFF,0XE0,0X30,0X00,0X0E,0X07,0X80,0X00,0X00,0X00, +0X00,0X03,0X3C,0XD7,0XFD,0XFD,0XFF,0XE0,0X30,0X00,0X1C,0XC7,0X80,0X00,0X00,0X00, +0X00,0X03,0X39,0XEF,0XFB,0XFF,0XFF,0XE0,0X30,0X00,0X3D,0XFF,0X80,0X00,0X00,0X00, +0X00,0X03,0X73,0XEF,0XFB,0XFF,0XFF,0XE0,0X60,0X00,0X3D,0XFF,0X80,0X00,0X00,0X00, +0X00,0X03,0X67,0XEF,0XFB,0XFF,0XFF,0XC0,0XC0,0X00,0X3F,0XFF,0X80,0X00,0X00,0X00, +0X00,0X03,0X8F,0XF7,0XE3,0XFF,0XFF,0X80,0XE0,0X00,0X1B,0XFF,0X80,0X00,0X00,0X00, +0X00,0X03,0X9F,0XF3,0XE1,0XFF,0XE0,0X01,0XC0,0X00,0X3B,0XFF,0XC0,0X00,0X00,0X00, +0X00,0X03,0X3F,0XF1,0XF9,0XFF,0XC0,0X03,0X80,0X00,0X7F,0XFF,0XE0,0X00,0X00,0X00, +0X00,0X03,0X7F,0XF1,0XFD,0XFF,0X80,0X07,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X00, +0X00,0X03,0XFF,0XF1,0XFF,0XFF,0X80,0X0F,0X00,0X00,0X3F,0XFF,0XFC,0X00,0X00,0X00, +0X00,0X03,0XFF,0XE0,0XFF,0XFF,0X00,0X0E,0X00,0X00,0X3F,0XFF,0X9C,0X00,0X00,0X00, +0X00,0X03,0XFF,0X80,0X0F,0XFF,0X00,0X06,0X00,0X00,0X03,0XF6,0X7C,0X00,0X00,0X00, +0X00,0X03,0XFF,0X00,0X1F,0X7C,0X00,0XF8,0X00,0X00,0X09,0XF0,0X3C,0X00,0X00,0X00, +0X00,0X03,0XFE,0X00,0X3F,0X38,0X01,0XFC,0X00,0X00,0X1C,0XF8,0X1C,0X00,0X00,0X00, +0X00,0X03,0XFC,0X00,0XFF,0X90,0X03,0XFE,0X00,0X00,0X3D,0XFF,0X9C,0X00,0X00,0X00, +0X00,0X03,0XF8,0X00,0XFF,0XC0,0X0F,0XFF,0X00,0X00,0X73,0XFF,0XCC,0X00,0X00,0X00, +0X00,0X03,0XF0,0X00,0XFF,0XE0,0X0F,0XFF,0X00,0X00,0X61,0XFF,0XFC,0X60,0X00,0X00, +0X00,0X03,0XF0,0X01,0XFF,0XF0,0X1F,0XFF,0X00,0X00,0XC0,0XFF,0XFF,0XF0,0X00,0X00, +0X00,0X07,0XE0,0X01,0XFF,0XBF,0XFF,0XFF,0X80,0X00,0XE0,0X00,0X7F,0XF0,0X00,0X00, +0X00,0X03,0XC0,0X01,0XFF,0X3F,0XFF,0XFF,0X80,0X00,0XC0,0X00,0X3F,0XF8,0X00,0X00, +0X00,0X01,0X80,0X01,0XFE,0X7F,0XFF,0XFF,0X80,0X00,0X80,0X00,0X1F,0XFC,0X00,0X00, +0X00,0X07,0X00,0X00,0XFE,0X7F,0XFF,0XFF,0X80,0X00,0X80,0X00,0X0C,0XFC,0X00,0X00, +0X00,0X03,0X00,0X00,0XF0,0X7F,0XFF,0XFF,0X00,0X00,0X80,0X00,0X04,0X7C,0X00,0X00, +0X00,0X03,0X00,0X00,0X7E,0X3F,0XFF,0XFC,0X00,0X01,0X80,0X00,0X03,0XFC,0X00,0X00, +0X00,0X03,0X00,0X00,0X7E,0X3F,0XFF,0XFE,0X00,0X01,0X80,0X00,0X01,0XF0,0X00,0X00, +0X00,0X03,0X00,0X00,0X3F,0XDF,0XBF,0XFF,0X80,0X01,0X80,0X00,0X00,0X00,0X00,0X00, +0X00,0X03,0X00,0X00,0X3F,0XCF,0XBF,0XFF,0XC0,0X01,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X03,0X00,0X00,0X7F,0XCF,0XFF,0XFF,0XE0,0X01,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X03,0X00,0X00,0XFF,0XCF,0XCF,0XFF,0XC0,0X01,0X80,0X00,0X00,0X00,0X00,0X00, +0X00,0X03,0X00,0X1E,0XFF,0XEF,0XC7,0XFF,0XC0,0X01,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X03,0X01,0XFC,0XFF,0XE7,0XF0,0X7F,0X80,0X03,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X07,0X07,0XC0,0XFF,0XF3,0XF8,0XFF,0X00,0X0F,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X03,0X0F,0X80,0X7F,0XF3,0XF9,0XFE,0X00,0X0E,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X01,0X1F,0X00,0X3F,0XF3,0XFB,0XFE,0X00,0X0C,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X01,0X38,0X00,0X03,0XF9,0XFB,0XF3,0XE0,0X18,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X01,0XF0,0X00,0X3C,0XF9,0XFB,0XEF,0XF0,0X30,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X01,0XC0,0X00,0X7D,0XF9,0XFB,0XCF,0XF0,0X70,0X00,0X00,0X18,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0XFF,0XF8,0XFB,0XCF,0XFC,0XC0,0X00,0X03,0XF8,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0XFF,0XFC,0XFB,0XFF,0XFC,0X00,0X00,0X07,0XF8,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0XFF,0XDE,0XFB,0XFF,0X7C,0X00,0X00,0X3F,0XFC,0X00,0X00,0X00, +0X00,0X01,0X00,0X00,0XFF,0XDE,0XF3,0XFF,0X3C,0X00,0X00,0X7F,0XFE,0X00,0X00,0X00, +0X00,0X01,0X00,0X00,0XFF,0XC2,0XF3,0XFF,0X1C,0X00,0X00,0XFF,0XFE,0X00,0X00,0X00, +0X00,0X01,0X00,0X00,0XFB,0XE3,0XFF,0XFF,0X3C,0X00,0X00,0XFF,0XFF,0X00,0X00,0X00, +0X00,0X01,0X00,0X00,0XF9,0XEF,0XFF,0XFE,0X3C,0X00,0X00,0XFF,0XFF,0X00,0X00,0X00, +0X00,0X01,0X00,0X00,0XFC,0XFF,0XFF,0XF9,0XFC,0X00,0X00,0XDC,0X7F,0X00,0X00,0X00, +0X00,0X01,0X00,0X01,0XFE,0X7F,0XFF,0XE3,0XFE,0X00,0X00,0XFF,0XBF,0X00,0X00,0X00, +0X00,0X01,0X00,0X01,0XFE,0X3F,0XFF,0XC7,0XFE,0X00,0X00,0XFF,0X9F,0X00,0X00,0X00, +0X00,0X01,0X00,0X03,0XFF,0X3F,0XFF,0XCF,0XFF,0X00,0X00,0XFF,0XBF,0X00,0X00,0X00, +0X00,0X01,0X00,0XFF,0XFF,0XCF,0XFF,0XFF,0XFF,0X80,0X00,0XFF,0XFE,0X00,0X00,0X00, +0X00,0X01,0X0F,0XE0,0X7F,0XFF,0X87,0XFF,0XFF,0X80,0X00,0XFF,0XC0,0X00,0X00,0X00, +0X00,0X01,0X1F,0X80,0X3F,0XFF,0X03,0XFF,0XCE,0X00,0X00,0XFF,0X00,0X00,0X00,0X00, +0X00,0X01,0XF0,0X00,0X0F,0XFE,0X01,0XFC,0X1E,0X00,0X00,0XF0,0X00,0X00,0X00,0X00, +0X00,0X01,0XE0,0X7F,0XC7,0XFC,0X01,0XFC,0X3E,0X00,0X00,0XC1,0XFF,0XE0,0X00,0X00, +0X00,0X01,0XC1,0XFF,0XF7,0XF8,0X01,0XFF,0XFC,0X00,0X01,0X8D,0XFF,0XF0,0X00,0X00, +0X00,0X01,0X87,0XFF,0XFB,0XFC,0X01,0XFF,0XF8,0X00,0X0F,0X1E,0XFF,0XF8,0X00,0X00, +0X00,0X01,0X3F,0X80,0X03,0XFC,0X01,0XFF,0XF0,0X00,0X0E,0X7E,0X7F,0XFE,0X00,0X00, +0X00,0X01,0XF8,0X00,0X07,0XFE,0X01,0XFF,0XE2,0X00,0X1E,0X7F,0X3F,0XFC,0X00,0X00, +0X00,0X01,0XE0,0XFF,0X9F,0XDF,0X03,0XFF,0XC6,0X60,0X1C,0XFF,0X8F,0XFE,0X00,0X00, +0X00,0X01,0X8F,0XC0,0XFF,0X3F,0XC7,0XEF,0XE3,0X78,0X3E,0X1F,0XCF,0XFF,0X00,0X00, +0X00,0X01,0XDF,0X80,0XFE,0X7F,0XEF,0XE7,0XF1,0XBC,0X7F,0X0F,0XCF,0XFF,0XC0,0X00, +0X00,0X01,0XFC,0X00,0XFD,0XFF,0XFF,0XE3,0XF1,0X9E,0X3F,0XC3,0XE7,0XFF,0X00,0X00, +0X00,0X01,0XF8,0X01,0XF1,0XF9,0XFF,0XF1,0XFD,0XCF,0X9F,0XE1,0XFF,0XFF,0X00,0X00, +0X00,0X01,0X80,0X01,0XF3,0XF1,0XFF,0XF9,0XFD,0XC1,0X9F,0XF8,0XFF,0XE0,0X00,0X00, +0X00,0X01,0X00,0X01,0XFF,0XE3,0XFD,0XFE,0XFF,0XC0,0X3F,0XF0,0X00,0X03,0X80,0X00, +0X00,0X01,0X00,0X00,0XFF,0XE3,0XFD,0XFF,0X7F,0XC0,0X7F,0XC0,0X00,0X07,0X80,0X00, +0X00,0X01,0X00,0X00,0XFF,0XE7,0XFC,0XFF,0X07,0X80,0XFF,0XCF,0XFF,0XFF,0X00,0X00, +0X00,0X01,0X00,0X00,0XFF,0XEF,0XCE,0X7F,0X07,0X00,0X7E,0X7F,0XFF,0XFE,0X00,0X00, +0X00,0X01,0X1F,0XFE,0XFF,0XFF,0XCE,0X7F,0X3E,0X00,0X3E,0X7F,0XFF,0XFC,0X00,0X00, +0X00,0X01,0XFF,0XFF,0XFF,0XF1,0XCE,0X3F,0X3E,0X00,0X3F,0XFC,0X07,0XF8,0X00,0X00, +0X00,0X01,0XFF,0XFF,0X3F,0XE1,0X8E,0X3F,0X3E,0X00,0X1F,0XFC,0X07,0XF0,0X00,0X00, +0X00,0X01,0XE0,0X00,0X0E,0X03,0X8E,0X3F,0X3E,0X00,0X0F,0XFF,0XF8,0X00,0X00,0X00, +0X00,0X01,0XFF,0XFF,0X87,0XFF,0X8E,0X3F,0X1E,0X00,0X04,0XFE,0X3E,0X00,0X00,0X00, +0X00,0X01,0XFF,0XFF,0XC7,0XFF,0X8F,0X3F,0XBE,0X00,0X00,0XFE,0X1E,0X00,0X00,0X00, +0X00,0X01,0XFF,0XFF,0XC7,0XFF,0X8F,0X9F,0XFE,0X00,0X00,0XFC,0X3F,0X80,0X00,0X00, +0X00,0X01,0X87,0XFF,0X8F,0XFF,0X8F,0X9F,0XFE,0X00,0X00,0X79,0XFF,0XC0,0X00,0X00, +0X00,0X01,0X00,0X06,0X3F,0XFF,0X8F,0XDF,0XFE,0X00,0X00,0X7F,0XFF,0XC0,0X00,0X00, +0X00,0X01,0X00,0X00,0X7F,0XFF,0X8F,0X8F,0XFC,0X00,0X00,0X1F,0XFF,0XE0,0X00,0X00, +0X00,0X01,0X80,0X00,0XFF,0XFF,0X8F,0X1F,0X00,0X00,0X00,0X0F,0XFF,0XF0,0X00,0X00, +0X00,0X01,0XC0,0X01,0XFF,0XFF,0X8E,0X3F,0X81,0X00,0X00,0X01,0XFF,0XE0,0X00,0X00, +0X00,0X01,0XE0,0X01,0XFF,0XFF,0X8E,0X7F,0XC3,0X80,0X00,0X00,0XFF,0X80,0X00,0X00, +0X00,0X01,0XF8,0X00,0XFF,0XF3,0X8E,0X7F,0XE7,0XC0,0X00,0X00,0X7F,0X00,0X00,0X00, +0X00,0X01,0XFF,0X80,0XFF,0XE7,0X8F,0XFF,0XC4,0XE0,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X01,0X87,0XE1,0XFF,0XDF,0X8F,0XFF,0XCE,0X1C,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X01,0XF1,0XF8,0XFF,0XFF,0X8F,0XFF,0XCF,0XCF,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X01,0XFE,0X1C,0XFF,0XBE,0X43,0XE0,0X1F,0XF3,0X80,0X00,0X00,0X00,0X00,0X00, +0X00,0X01,0XFF,0X06,0X7F,0X3E,0X63,0XC1,0X3F,0XF1,0XE0,0X00,0X00,0X00,0X00,0X00, +0X00,0X01,0XFF,0X83,0X3E,0X3C,0XF3,0X81,0X1F,0XF8,0XF0,0X00,0X00,0X00,0X00,0X00, +0X00,0X01,0XFF,0XE1,0X80,0X39,0XFF,0X00,0X07,0XFE,0X78,0X00,0X00,0X00,0X00,0X00, +0X00,0X01,0XFF,0XFE,0X60,0X1F,0XFE,0X1C,0X03,0XFF,0X1C,0X00,0X00,0X00,0X00,0X00, +0X00,0X01,0X0F,0XFF,0X3C,0X1F,0XFE,0X60,0X01,0XFF,0X8E,0X00,0X00,0X00,0X00,0X00, +0X00,0X01,0X01,0XFF,0X9E,0X0F,0XFF,0XC0,0X00,0X3F,0XC3,0X00,0X00,0X00,0X00,0X00, +0X00,0X01,0X00,0X7F,0XC3,0X8F,0XFD,0X80,0X00,0X3F,0XE3,0X80,0X00,0X00,0X00,0X00, +0X00,0X01,0X00,0X3F,0XE1,0XC7,0XFC,0X00,0X00,0X3F,0XF1,0XC0,0X00,0X00,0X00,0X00, +0X00,0X01,0X00,0X1F,0XF1,0XE3,0XF8,0X00,0X00,0X07,0XF0,0X60,0X00,0X00,0X00,0X00, +0X00,0X01,0X80,0X0F,0XF1,0XE1,0XF0,0X00,0X00,0X03,0XF8,0X30,0X00,0X00,0X00,0X00, +0X00,0X01,0X80,0X01,0XF8,0X30,0X00,0X00,0X00,0X01,0XFC,0X3C,0X00,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0XF8,0X18,0X00,0X00,0X00,0X00,0XFC,0X0E,0X00,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0XFC,0X0C,0X00,0X00,0X00,0X00,0XFE,0X0F,0X00,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X7C,0X0C,0X00,0X00,0X00,0X00,0X7E,0X07,0X80,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X7C,0X06,0X00,0X00,0X00,0X00,0X3F,0X03,0X80,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X7E,0X06,0X00,0X00,0X00,0X00,0X1F,0X81,0X80,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X1E,0X03,0X00,0X00,0X00,0X00,0X0F,0X80,0XC0,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X0E,0X01,0X00,0X00,0X00,0X00,0X07,0X80,0X60,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X0F,0X01,0X80,0X00,0X00,0X00,0X03,0XC0,0X30,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X07,0X81,0XC0,0X00,0X00,0X00,0X01,0XC0,0X38,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X07,0X81,0XC0,0X00,0X00,0X00,0X00,0XC0,0X18,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X07,0XC0,0XE0,0X00,0X00,0X00,0X00,0X40,0X08,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X03,0XC0,0XF0,0X00,0X00,0X00,0X00,0X00,0X04,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X03,0XC0,0X70,0X00,0X00,0X00,0X00,0X00,0X06,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X01,0XC0,0X70,0X00,0XF8,0X00,0X00,0X00,0X02,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X03,0XC0,0X30,0X00,0XFF,0XF0,0X00,0X00,0X07,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X03,0XC0,0X30,0X01,0XFF,0XF8,0X00,0X00,0X03,0X80,0X00,0X00, +0X00,0X01,0X80,0X00,0X01,0XC0,0X30,0X01,0XFF,0XFC,0X00,0X00,0X03,0X80,0X00,0X00, +0X00,0X01,0X80,0X00,0X01,0XC0,0X18,0X01,0XFF,0XFE,0X00,0X00,0X03,0X80,0X00,0X00, +0X00,0X01,0X80,0X00,0X01,0XC0,0X08,0X00,0XFF,0XFF,0X00,0X00,0X01,0XC0,0X00,0X00, +0X00,0X01,0X80,0X00,0X01,0XC0,0X08,0X00,0X67,0XFF,0X00,0X00,0X01,0XC0,0X00,0X00, +0X00,0X01,0X80,0X00,0X01,0XC0,0X08,0X00,0XFF,0XFF,0X00,0X00,0X00,0XC0,0X00,0X00, +0X00,0X01,0X80,0X00,0X01,0X80,0X08,0X03,0XFF,0XBF,0X80,0X00,0X00,0X40,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X07,0XFF,0X3F,0X80,0X00,0X00,0X40,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X03,0XFF,0XBF,0XC0,0X00,0X00,0X40,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X03,0XFF,0X3F,0XC0,0X00,0X00,0X40,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X03,0XF0,0X1F,0XC0,0X00,0X00,0X40,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X03,0XFF,0XCF,0XF0,0X00,0X00,0X40,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X01,0XFF,0XE7,0XFC,0X00,0X00,0XC0,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X01,0XFF,0XF3,0XFF,0XF0,0X01,0XC0,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X01,0XFF,0XF8,0XFF,0XF8,0X01,0X80,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X7F,0XFC,0X7F,0XFF,0X03,0X80,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X1F,0XFF,0X00,0X7F,0X83,0X80,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X3F,0XFF,0X80,0X1F,0XC7,0X80,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X3F,0XFF,0XFF,0XFF,0XC3,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X3F,0XFF,0XFF,0XFF,0XC4,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X3F,0XFF,0XFF,0XFF,0XC4,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X18,0X00,0X1F,0XFF,0XFF,0XFF,0XC4,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X38,0X00,0X0F,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X78,0X00,0X03,0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0XF8,0X00,0X00,0X7F,0XFF,0XFF,0XFC,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X01,0XF8,0X00,0X00,0X3F,0XFF,0XFF,0XFC,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X38,0X00,0X00,0X3F,0XFF,0XF9,0XFC,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X18,0X00,0X00,0X3F,0XFF,0XF3,0XFC,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X00,0X3F,0XFF,0XE7,0XFC,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X08,0X00,0X00,0X3C,0XFC,0X1F,0XF8,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X00,0X8C,0X00,0X00,0X7E,0X00,0X7F,0X98,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0X79,0X8C,0X00,0X07,0XFF,0X0F,0XFF,0X9C,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X00,0XFC,0XC6,0X00,0X0F,0XFF,0X7F,0XFF,0X78,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X01,0XF8,0X46,0X00,0X0F,0XFF,0X7F,0XFE,0X78,0X00,0X00,0X00, +0X00,0X01,0X80,0X00,0X03,0XFC,0X07,0X00,0X0F,0XFF,0X7F,0XFE,0X78,0X00,0X00,0X00, +0X00,0X00,0X80,0X00,0X07,0XFE,0X07,0XC0,0X0F,0XFF,0X7F,0XFE,0X60,0X00,0X00,0X00, +0X00,0X00,0X80,0X00,0X07,0XF9,0XE7,0XE0,0X07,0XFF,0X7F,0XF8,0XC0,0X00,0X00,0X00, +0X00,0X00,0X80,0X00,0X03,0XE3,0XF3,0XF0,0X03,0XFF,0XFF,0XF1,0XC0,0X00,0X00,0X00, +0X00,0X00,0X80,0X00,0X7F,0XC3,0XF3,0X38,0X01,0XFF,0XFF,0XF1,0X80,0X00,0X00,0X00, +0X00,0X00,0X80,0X00,0XFF,0XDF,0XF3,0X1C,0X00,0X7F,0XFF,0XE3,0X80,0X00,0X00,0X00, +0X00,0X00,0X80,0X00,0XFF,0X9F,0XF3,0X8E,0X00,0X3F,0XFF,0XE7,0X80,0X00,0X00,0X00, +0X00,0X00,0X80,0X00,0XFE,0X33,0XFB,0XCF,0X00,0X1F,0XFF,0XCF,0X00,0X00,0X00,0X00, +0X00,0X00,0X80,0X01,0XFE,0X3F,0XF1,0XCF,0X00,0X0F,0XFF,0XCF,0X00,0X00,0X00,0X00, +0X00,0X00,0X80,0X00,0X0C,0X7F,0XCD,0XE3,0X80,0X0F,0XFF,0XDF,0X00,0X00,0X00,0X00, +0X00,0X00,0X80,0X01,0X01,0XFC,0X8E,0X7F,0X80,0X0F,0XFF,0X9F,0X00,0X00,0X00,0X00, +0X00,0X00,0X80,0X0F,0XF9,0XFC,0X1E,0X3F,0X80,0X0F,0XF3,0XBF,0X00,0X00,0X00,0X00, +0X00,0X00,0X80,0X0F,0XFD,0XFC,0X3E,0X3F,0X80,0X0F,0XE1,0XBF,0X00,0X00,0X00,0X00, +0X00,0X00,0X80,0X0F,0XFC,0XFC,0X3F,0X3F,0X80,0X0F,0XC1,0X3F,0X00,0X00,0X00,0X00, +0X00,0X00,0X80,0X1F,0XE5,0XF8,0X3B,0X9F,0X80,0X0F,0XC2,0X3F,0X80,0X00,0X00,0X00, +0X00,0X00,0X80,0X1F,0XCF,0XF0,0X33,0XDF,0XC0,0X03,0X9C,0X0F,0X80,0X00,0X00,0X00, +0X00,0X00,0X80,0X00,0X0E,0X00,0X39,0XD9,0XC0,0X00,0X38,0X63,0XC0,0X00,0X00,0X00, +0X00,0X00,0X80,0X0F,0XFE,0X00,0X0F,0XEE,0XF0,0X00,0XFF,0XF3,0XF0,0X00,0X00,0X00, +0X00,0X00,0X80,0X1F,0XFE,0X00,0X07,0XEE,0X78,0X01,0XFF,0XFF,0XF0,0X00,0X00,0X00, +0X00,0X00,0X00,0X1F,0XFE,0X00,0X07,0XEE,0X3C,0X01,0XFF,0XFF,0XF0,0X00,0X00,0X00, +0X00,0X00,0X00,0X1F,0XFE,0X00,0X07,0XEF,0X3C,0X01,0XFF,0XFF,0XF0,0X00,0X00,0X00, +0X00,0X00,0X00,0X1F,0X7C,0X00,0X00,0XEF,0XFC,0X01,0XFF,0XFF,0XF0,0X00,0X00,0X00, +0X00,0X00,0X00,0X1E,0X1C,0X00,0X00,0X6F,0XFC,0X01,0XFF,0XFF,0XC0,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X33,0XFE,0X00,0XFF,0XFF,0XC0,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFE,0X00,0XFF,0XFF,0X80,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFE,0X00,0X3F,0XFF,0X80,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XFE,0X00,0X1F,0XFF,0X80,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFC,0X00,0X03,0XFF,0X80,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFE,0X00,0X03,0XFF,0X80,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7E,0X00,0X03,0XFF,0X80,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFE,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X78,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X30,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, +}; diff --git a/Arduino/epd2in13_V3/imagedata.h b/Arduino/epd2in13_V3/imagedata.h new file mode 100644 index 0000000..2234ead --- /dev/null +++ b/Arduino/epd2in13_V3/imagedata.h @@ -0,0 +1,30 @@ +/** + * @filename : imagedata.h + * @brief : head file for imagedata.cpp + * + * Copyright (C) Waveshare September 5 2017 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documnetation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +extern const unsigned char IMAGE_DATA[]; + +/* FILE END */ + + diff --git a/Arduino/epd2in13d/epd2in13d.cpp b/Arduino/epd2in13d/epd2in13d.cpp index 46d5f93..b27b19a 100644 --- a/Arduino/epd2in13d/epd2in13d.cpp +++ b/Arduino/epd2in13d/epd2in13d.cpp @@ -286,7 +286,7 @@ void Epd::TurnOnDisplay(void) function : Initialize the e-Paper register parameter: ******************************************************************************/ -void Epd::Init() +int Epd::Init() { /* this calls the peripheral hardware interface, see epdif */ if (IfInit() != 0) { @@ -323,6 +323,8 @@ void Epd::Init() SendCommand(0x82); //vcom_DC setting SendData(0x28); + + return 0; } void Epd::Clear(void) diff --git a/Arduino/epd2in13d/epd2in13d.h b/Arduino/epd2in13d/epd2in13d.h index 0b844c6..971195f 100644 --- a/Arduino/epd2in13d/epd2in13d.h +++ b/Arduino/epd2in13d/epd2in13d.h @@ -43,7 +43,7 @@ public: Epd(); ~Epd(); - void Init(void); + int Init(void); void SendCommand(unsigned char command); void SendData(unsigned char data); void ReadBusy(void); diff --git a/Arduino/epd3in7/epd3in7.cpp b/Arduino/epd3in7/epd3in7.cpp index fa9f9de..762f387 100644 --- a/Arduino/epd3in7/epd3in7.cpp +++ b/Arduino/epd3in7/epd3in7.cpp @@ -30,49 +30,63 @@ static const UBYTE lut_4Gray_GC[] = { -0x2A,0x06,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//1 -0x28,0x06,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//2 -0x20,0x06,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//3 -0x14,0x06,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//4 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//5 -0x00,0x02,0x02,0x0A,0x00,0x00,0x00,0x08,0x08,0x02,//6 -0x00,0x02,0x02,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,//7 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//8 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//9 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//10 -0x22,0x22,0x22,0x22,0x22 + 0x2A,0x06,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//1 + 0x28,0x06,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//2 + 0x20,0x06,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//3 + 0x14,0x06,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//4 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//5 + 0x00,0x02,0x02,0x0A,0x00,0x00,0x00,0x08,0x08,0x02,//6 + 0x00,0x02,0x02,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,//7 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//8 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//9 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//10 + 0x22,0x22,0x22,0x22,0x22 }; static const UBYTE lut_1Gray_GC[] = { -0x2A,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//1 -0x05,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//2 -0x2A,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//3 -0x05,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//4 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//5 -0x00,0x02,0x03,0x0A,0x00,0x02,0x06,0x0A,0x05,0x00,//6 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//7 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//8 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//9 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//10 -0x22,0x22,0x22,0x22,0x22 + 0x2A,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//1 + 0x05,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//2 + 0x2A,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//3 + 0x05,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//4 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//5 + 0x00,0x02,0x03,0x0A,0x00,0x02,0x06,0x0A,0x05,0x00,//6 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//7 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//8 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//9 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//10 + 0x22,0x22,0x22,0x22,0x22 }; static const UBYTE lut_1Gray_DU[] = { -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//1 -0x01,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x0A,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//3 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//5 -0x00,0x00,0x05,0x05,0x00,0x05,0x03,0x05,0x05,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//7 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//9 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x22,0x22,0x22,0x22,0x22 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//1 + 0x01,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0A,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//3 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//5 + 0x00,0x00,0x05,0x05,0x00,0x05,0x03,0x05,0x05,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//7 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//9 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x22,0x22,0x22,0x22,0x22 }; +static const UBYTE lut_1Gray_A2[] = +{ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //1 +0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //2 +0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //3 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //4 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //5 +0x00,0x00,0x03,0x05,0x00,0x00,0x00,0x00,0x00,0x00, //6 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //7 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //8 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //9 +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //10 +0x22,0x22,0x22,0x22,0x22 +}; Epd::~Epd() { }; @@ -87,80 +101,80 @@ Epd::Epd() { }; int Epd::Init(void) { - if (IfInit() != 0) { - return -1; - } - Reset(); + if (IfInit() != 0) { + return -1; + } + Reset(); - SendCommand(0x12); - DelayMs(300); - - SendCommand(0x46); - SendData(0xF7); - WaitUntilIdle(); - SendCommand(0x47); - SendData(0xF7); - WaitUntilIdle(); - - SendCommand(0x01); // setting gaet number - SendData(0xDF); - SendData(0x01); - SendData(0x00); + SendCommand(0x12); + DelayMs(300); - SendCommand(0x03); // set gate voltage - SendData(0x00); + SendCommand(0x46); + SendData(0xF7); + WaitUntilIdle(); + SendCommand(0x47); + SendData(0xF7); + WaitUntilIdle(); - SendCommand(0x04); // set source voltage - SendData(0x41); - SendData(0xA8); - SendData(0x32); + SendCommand(0x01); // setting gaet number + SendData(0xDF); + SendData(0x01); + SendData(0x00); - SendCommand(0x11); // set data entry sequence - SendData(0x03); + SendCommand(0x03); // set gate voltage + SendData(0x00); - SendCommand(0x3C); // set border - SendData(0x00); + SendCommand(0x04); // set source voltage + SendData(0x41); + SendData(0xA8); + SendData(0x32); - SendCommand(0x0C); // set booster strength - SendData(0xAE); - SendData(0xC7); - SendData(0xC3); - SendData(0xC0); - SendData(0xC0); + SendCommand(0x11); // set data entry sequence + SendData(0x03); - SendCommand(0x18); // set internal sensor on - SendData(0x80); - - SendCommand(0x2C); // set vcom value - SendData(0x44); - - SendCommand(0x37); // set display option, these setting turn on previous function - SendData(0x00); - SendData(0xff); - SendData(0xff); - SendData(0xff); - SendData(0xff); - SendData(0x4f); - SendData(0xff); - SendData(0xff); - SendData(0xff); - SendData(0xff); + SendCommand(0x3C); // set border + SendData(0x00); - SendCommand(0x44); // setting X direction start/end position of RAM - SendData(0x00); - SendData(0x00); - SendData(0x17); - SendData(0x01); + SendCommand(0x0C); // set booster strength + SendData(0xAE); + SendData(0xC7); + SendData(0xC3); + SendData(0xC0); + SendData(0xC0); - SendCommand(0x45); // setting Y direction start/end position of RAM - SendData(0x00); - SendData(0x00); - SendData(0xDF); - SendData(0x01); + SendCommand(0x18); // set internal sensor on + SendData(0x80); - SendCommand(0x22); // Display Update Control 2 - SendData(0xCF); - return 0; + SendCommand(0x2C); // set vcom value + SendData(0x44); + + SendCommand(0x37); // set display option, these setting turn on previous function + SendData(0x00); + SendData(0xff); + SendData(0xff); + SendData(0xff); + SendData(0xff); + SendData(0x4f); + SendData(0xff); + SendData(0xff); + SendData(0xff); + SendData(0xff); + + SendCommand(0x44); // setting X direction start/end position of RAM + SendData(0x00); + SendData(0x00); + SendData(0x17); + SendData(0x01); + + SendCommand(0x45); // setting Y direction start/end position of RAM + SendData(0x00); + SendData(0x00); + SendData(0xDF); + SendData(0x01); + + SendCommand(0x22); // Display Update Control 2 + SendData(0xCF); + return 0; } /** @@ -183,15 +197,13 @@ void Epd::SendData(unsigned char data) { * @brief: Wait until the busy_pin goes HIGH */ void Epd::WaitUntilIdle(void) { - Serial.print("e-Paper busy \r\n "); - UBYTE busy; - do - { - busy = DigitalRead(busy_pin); - } - while(busy); - DelayMs(200); - Serial.print("e-Paper busy release \r\n "); + Serial.print("e-Paper busy \r\n "); + UBYTE busy; + do { + busy = DigitalRead(busy_pin); + } while(busy); + DelayMs(200); + Serial.print("e-Paper busy release \r\n "); } /** @@ -200,78 +212,136 @@ void Epd::WaitUntilIdle(void) { * see Epd::Sleep(); */ void Epd::Reset(void) { - DigitalWrite(reset_pin, LOW); //module reset - DelayMs(1); DigitalWrite(reset_pin, HIGH); - DelayMs(200); + DelayMs(20); + DigitalWrite(reset_pin, LOW); //module reset + DelayMs(2); + DigitalWrite(reset_pin, HIGH); + DelayMs(20); } /****************************************************************************** function : Display ******************************************************************************/ -void Epd::DisplayFrame(const UBYTE *Image) { - UWORD i; - UWORD IMAGE_COUNTER = width * height / 8; +void Epd::DisplayFrame(const UBYTE *Image, bool isBase) { + UWORD i; + UWORD IMAGE_COUNTER = width * height / 8; - SendCommand(0x4E); - SendData(0x00); - SendData(0x00); - SendCommand(0x4F); - SendData(0x00); - SendData(0x00); + SendCommand(0x4E); + SendData(0x00); + SendData(0x00); + SendCommand(0x4F); + SendData(0x00); + SendData(0x00); - SendCommand(0x24); - for (i = 0; i < IMAGE_COUNTER; i++) - { - SendData(pgm_read_byte(&Image[i])); - } + SendCommand(0x24); + for (i = 0; i < IMAGE_COUNTER; i++) { + SendData(pgm_read_byte(&Image[i])); + } + if(isBase) { + SendCommand(0x26); + for (i = 0; i < IMAGE_COUNTER; i++) { + SendData(pgm_read_byte(&Image[i])); + } + } - Load_LUT(1); - SendCommand(0x20); - WaitUntilIdle(); + Load_LUT(1); + SendCommand(0x20); + WaitUntilIdle(); } /****************************************************************************** function : Partial Display +note: + 1. iwidth must be a multiple of 8 + 2. The update will clear other parts of the image data ******************************************************************************/ void Epd::DisplayFrame_Partial(const UBYTE *Image, UWORD Xstart, UWORD Ystart, UWORD iwidth, UWORD iheight) { - UWORD i, j; - SendCommand(0x4E); - SendData(0x00); - SendData(0x00); - SendCommand(0x4F); - SendData(0x00); - SendData(0x00); + UWORD i, j; + SendCommand(0x4E); + SendData(0x00); + SendData(0x00); + SendCommand(0x4F); + SendData(0x00); + SendData(0x00); - SendCommand(0x24); - for(i=0; i=Ystart && i=Xstart/8 && j<(Xstart+iwidth)/8) - SendData(Image[(j-Xstart/8) + (i-Ystart)*iwidth/8]); - else - SendData(0xff); + SendCommand(0x24); + for(i=0; i=Ystart && i=Xstart/8 && j<(Xstart+iwidth)/8) + SendData(Image[(j-Xstart/8) + (i-Ystart)*iwidth/8]); + else + SendData(0xff); + } } - } - - Load_LUT(0); - SendCommand(0x20); - WaitUntilIdle(); + + Load_LUT(0); + SendCommand(0x20); + WaitUntilIdle(); } +/****************************************************************************** +function : Sends part the image buffer in RAM to e-Paper and displays +notes: + 1. Xstart must be a multiple of 8 + 1. isGC: use GC mode to clear base-image +******************************************************************************/ +void Epd::DisplayFrame_Part(const UBYTE *Image, UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, bool isGC) +{ + UWORD i, Width; + Width = (Xend-Xstart)%8 == 0 ? (Xend-Xstart)/8 : (Xend-Xstart)/8+1; + UWORD IMAGE_COUNTER = Width * (Yend-Ystart); + + Xend -= 1; + Yend -= 1; + + SendCommand(0x44); + SendData(Xstart & 0xff); + SendData((Xstart>>8) & 0x03); + SendData(Xend & 0xff); + SendData((Xend>>8) & 0x03); + SendCommand(0x45); + SendData(Ystart & 0xff); + SendData((Ystart>>8) & 0x03); + SendData(Yend & 0xff); + SendData((Yend>>8) & 0x03); + + SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER + SendData(Xstart & 0xFF); + + SendCommand(0x4F); // SET_RAM_Y_ADDRESS_COUNTER + SendData(Ystart & 0xFF); + SendData((Ystart >> 8) & 0xFF); + + SendCommand(0x24); + for (i = 0; i < IMAGE_COUNTER; i++) + { + SendData(Image[i]); + } + if(isGC) + Load_LUT(1); + else + Load_LUT(0); +} + +void Epd::TurnOnDisplay(void) { + SendCommand(0x20); + WaitUntilIdle(); +} /****************************************************************************** function : set the look-up tables parameter: ******************************************************************************/ void Epd::Load_LUT(UBYTE mode) { - UWORD i; - SendCommand(0x32); - for (i = 0; i < 105; i++) { - if(mode == 1) - SendData(lut_1Gray_GC[i]); - else if(mode == 0) - SendData(lut_1Gray_DU[i]); - } + UWORD i; + SendCommand(0x32); + for (i = 0; i < 105; i++) { + if(mode == 1) + SendData(lut_1Gray_GC[i]); + else if(mode == 0) + SendData(lut_1Gray_A2[i]); + } } /****************************************************************************** @@ -281,28 +351,27 @@ parameter: 1:clear all ******************************************************************************/ void Epd::Clear(UBYTE mode) { - UWORD i; - UWORD IMAGE_COUNTER = width * height / 8; + UWORD i; + UWORD IMAGE_COUNTER = width * height / 8; - SendCommand(0x4E); - SendData(0x00); - SendData(0x00); - SendCommand(0x4F); - SendData(0x00); - SendData(0x00); - - SendCommand(0x24); - for (i = 0; i < IMAGE_COUNTER; i++) - { - SendData(0xff); - } - if(mode) - Load_LUT(1); - else - Load_LUT(0); - SendCommand(0x20); - WaitUntilIdle(); + SendCommand(0x4E); + SendData(0x00); + SendData(0x00); + SendCommand(0x4F); + SendData(0x00); + SendData(0x00); + SendCommand(0x24); + for (i = 0; i < IMAGE_COUNTER; i++) + { + SendData(0xff); + } + if(mode) + Load_LUT(1); + else + Load_LUT(0); + SendCommand(0x20); + WaitUntilIdle(); } /** @@ -319,7 +388,4 @@ void Epd::Sleep(void) { SendCommand(0X07); //deep sleep SendData(0xA5); } - - - /* END OF FILE */ diff --git a/Arduino/epd3in7/epd3in7.h b/Arduino/epd3in7/epd3in7.h index 16d0568..d0e9145 100644 --- a/Arduino/epd3in7/epd3in7.h +++ b/Arduino/epd3in7/epd3in7.h @@ -44,9 +44,11 @@ public: int Init(void); void WaitUntilIdle(void); void Reset(void); - void DisplayFrame(const UBYTE *Image); + void DisplayFrame(const UBYTE *Image, bool isBase); void SendCommand(unsigned char command); void DisplayFrame_Partial(const UBYTE *Image, UWORD Xstart, UWORD Ystart, UWORD iwidth, UWORD iheight); + void DisplayFrame_Part(const UBYTE *Image, UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, bool isGC); + void TurnOnDisplay(void); void SendData(unsigned char data); void Sleep(void); void Clear(UBYTE mode); diff --git a/Arduino/epd3in7/epd3in7.ino b/Arduino/epd3in7/epd3in7.ino index 235a2d9..41eb5ef 100644 --- a/Arduino/epd3in7/epd3in7.ino +++ b/Arduino/epd3in7/epd3in7.ino @@ -32,51 +32,61 @@ #define COLORED 0 #define UNCOLORED 1 -UBYTE image[800]; +UBYTE image[700]; Paint paint(image, 0, 0); // width should be the multiple of 8 UDOUBLE time_start_ms; UDOUBLE time_now_s; void setup() { - // put your setup code here, to run once: - Serial.begin(115200); - Epd epd; - if (epd.Init() != 0) { - Serial.print("e-Paper init failed"); - return; - } - Serial.print("3.7inch e-paper demo\r\n "); - Serial.print("e-Paper Clear\r\n "); - epd.Clear(1); - Serial.print("draw image\r\n "); - epd.DisplayFrame(IMAGE_DATA); - delay(4000); - epd.Clear(0); - - UBYTE i; - time_start_ms = millis(); - for(i=0; i<10; i++) { - time_now_s = (millis() - time_start_ms) / 1000; - char time_string[] = {'0', '0', ':', '0', '0', '\0'}; - time_string[0] = time_now_s / 60 / 10 + '0'; - time_string[1] = time_now_s / 60 % 10 + '0'; - time_string[3] = time_now_s % 60 / 10 + '0'; - time_string[4] = time_now_s % 60 % 10 + '0'; - paint.SetWidth(48); - paint.SetHeight(100); + // put your setup code here, to run once: + Serial.begin(115200); + Epd epd; + if (epd.Init() != 0) { + Serial.print("e-Paper init failed"); + return; + } + Serial.print("3.7inch e-paper demo\r\n "); + Serial.print("e-Paper Clear\r\n "); + epd.Clear(1); + Serial.print("draw image\r\n "); + epd.DisplayFrame(IMAGE_DATA, true); // Set base image + delay(3000); + + paint.SetWidth(40); + paint.SetHeight(120); paint.SetRotate(ROTATE_270); paint.Clear(UNCOLORED); - paint.DrawStringAt(20, 10, time_string, &Font16, COLORED); - Serial.print("refresh------\r\n "); - epd.DisplayFrame_Partial(paint.GetImage(), 20, 100, 48, 100); - } - - Serial.print("clear and sleep......\r\n "); - epd.Clear(1); - epd.Sleep(); + + UBYTE i; + time_start_ms = millis(); + for(i=0; i<5; i++) { + time_now_s = (millis() - time_start_ms) / 1000; + char time_string[] = {'0', '0', ':', '0', '0', '\0'}; + time_string[0] = time_now_s / 60 / 10 + '0'; + time_string[1] = time_now_s / 60 % 10 + '0'; + time_string[3] = time_now_s % 60 / 10 + '0'; + time_string[4] = time_now_s % 60 % 10 + '0'; + + paint.Clear(UNCOLORED); + paint.DrawStringAt(20, 10, time_string, &Font16, COLORED); + Serial.print("refresh------\r\n "); + // epd.DisplayFrame_Partial(paint.GetImage(), 20, 100, 40, 120); // Width must be a multiple of 8 + /* Writes new data to RAM */ + epd.DisplayFrame_Part(paint.GetImage(), 40+i*40, 30, 80+i*40, 140, false); // Xstart must be a multiple of 8 + /* Displays and toggles the RAM currently in use */ + epd.TurnOnDisplay(); + /* Writes the last data to another RAM */ + epd.DisplayFrame_Part(paint.GetImage(), 40+i*40, 30, 80+i*40, 140, false); // Xstart must be a multiple of 8 + delay(500); + } + + Serial.print("clear and sleep......\r\n "); + epd.Init(); + epd.Clear(1); + epd.Sleep(); } void loop() { - // put your main code here, to run repeatedly: + // put your main code here, to run repeatedly: } diff --git a/Arduino/epd4in01f/epd4in01f.cpp b/Arduino/epd4in01f/epd4in01f.cpp index f7b55f1..55866ff 100644 --- a/Arduino/epd4in01f/epd4in01f.cpp +++ b/Arduino/epd4in01f/epd4in01f.cpp @@ -82,6 +82,7 @@ int Epd::Init(void) { SendData(0x90); SendCommand(0xE3); SendData(0xAA); + return 0; } /** diff --git a/Arduino/epd4in2/epd4in2.cpp b/Arduino/epd4in2/epd4in2.cpp index 3394d2d..f9e10ca 100644 --- a/Arduino/epd4in2/epd4in2.cpp +++ b/Arduino/epd4in2/epd4in2.cpp @@ -39,7 +39,6 @@ Epd::Epd() { height = EPD_HEIGHT; }; - int Epd::Init(void) { /* this calls the peripheral hardware interface, see epdif */ if (IfInit() != 0) { @@ -47,23 +46,38 @@ int Epd::Init(void) { } /* EPD hardware init start */ Reset(); - SendCommand(POWER_SETTING); + SendCommand(0x01); SendData(0x03); // VDS_EN, VDG_EN SendData(0x00); // VCOM_HV, VGHL_LV[1], VGHL_LV[0] SendData(0x2b); // VDH SendData(0x2b); // VDL - SendData(0xff); // VDHR - SendCommand(BOOSTER_SOFT_START); + + SendCommand(0x06); SendData(0x17); SendData(0x17); SendData(0x17); //07 0f 17 1f 27 2F 37 2f - SendCommand(POWER_ON); + SendCommand(0x04); WaitUntilIdle(); - SendCommand(PANEL_SETTING); + SendCommand(0x00); SendData(0xbf); // KW-BF KWR-AF BWROTP 0f - SendData(0x0b); - SendCommand(PLL_CONTROL); + + SendCommand(0x30); SendData(0x3c); // 3A 100HZ 29 150Hz 39 200HZ 31 171HZ + + SendCommand(0x61); // resolution setting + SendData(0x01); + SendData(0x90); //128 + SendData(0x01); // + SendData(0x2c); + + SendCommand(0x82); // vcom_DC setting + SendData(0x12); + + SendCommand(0X50); // VCOM AND DATA INTERVAL SETTING + SendData(0x97); // 97white border 77black border VBDF 17|D7 VBDW 97 VBDB 57 VBDF F7 VBDW 77 VBDB 37 VBDR B7 + + SetLut(); + /* EPD hardware init end */ return 0; } @@ -132,10 +146,8 @@ void Epd::SendData(unsigned char data) { * @brief: Wait until the busy_pin goes HIGH */ void Epd::WaitUntilIdle(void) { - SendCommand(0x71); while(DigitalRead(busy_pin) == 0) { //0: busy, 1: idle - DelayMs(100); - SendCommand(0x71); + // Wait } } @@ -306,27 +318,27 @@ void Epd::Set_4GrayDisplay(const char *Image, int x, int y, int w, int l) void Epd::SetLut(void) { unsigned int count; SendCommand(LUT_FOR_VCOM); //vcom - for(count = 0; count < 44; count++) { + for(count = 0; count < 36; count++) { SendData(lut_vcom0[count]); } SendCommand(LUT_WHITE_TO_WHITE); //ww -- - for(count = 0; count < 42; count++) { + for(count = 0; count < 36; count++) { SendData(lut_ww[count]); } SendCommand(LUT_BLACK_TO_WHITE); //bw r - for(count = 0; count < 42; count++) { + for(count = 0; count < 36; count++) { SendData(lut_bw[count]); } SendCommand(LUT_WHITE_TO_BLACK); //wb w - for(count = 0; count < 42; count++) { + for(count = 0; count < 36; count++) { SendData(lut_bb[count]); } SendCommand(LUT_BLACK_TO_BLACK); //bb b - for(count = 0; count < 42; count++) { + for(count = 0; count < 36; count++) { SendData(lut_wb[count]); } } @@ -389,9 +401,7 @@ void Epd::DisplayFrame(const unsigned char* frame_buffer) { DelayMs(2); } - SetLut(); - - SendCommand(DISPLAY_REFRESH); + SendCommand(0x12); DelayMs(100); WaitUntilIdle(); } @@ -418,10 +428,6 @@ void Epd::ClearFrame(void) { SendData(0xFF); } DelayMs(2); - SetLut(); - SendCommand(DISPLAY_REFRESH); - DelayMs(100); - WaitUntilIdle(); } /** @@ -463,55 +469,56 @@ void Epd::Sleep() { const unsigned char lut_vcom0[] = { -0x00, 0x17, 0x00, 0x00, 0x00, 0x02, -0x00, 0x17, 0x17, 0x00, 0x00, 0x02, -0x00, 0x0A, 0x01, 0x00, 0x00, 0x01, -0x00, 0x0E, 0x0E, 0x00, 0x00, 0x02, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x01, + 0x00, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x00, 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 lut_ww[] ={ -0x40, 0x17, 0x00, 0x00, 0x00, 0x02, -0x90, 0x17, 0x17, 0x00, 0x00, 0x02, -0x40, 0x0A, 0x01, 0x00, 0x00, 0x01, -0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x90, 0x0F, 0x0F, 0x00, 0x00, 0x01, + 0xA0, 0x08, 0x08, 0x00, 0x00, 0x02, + 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 lut_bw[] ={ -0x40, 0x17, 0x00, 0x00, 0x00, 0x02, -0x90, 0x17, 0x17, 0x00, 0x00, 0x02, -0x40, 0x0A, 0x01, 0x00, 0x00, 0x01, -0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x90, 0x0F, 0x0F, 0x00, 0x00, 0x01, + 0xA0, 0x08, 0x08, 0x00, 0x00, 0x02, + 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 lut_bb[] ={ -0x80, 0x17, 0x00, 0x00, 0x00, 0x02, -0x90, 0x17, 0x17, 0x00, 0x00, 0x02, -0x80, 0x0A, 0x01, 0x00, 0x00, 0x01, -0x50, 0x0E, 0x0E, 0x00, 0x00, 0x02, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xA0, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x90, 0x0F, 0x0F, 0x00, 0x00, 0x01, + 0x50, 0x08, 0x08, 0x00, 0x00, 0x02, + 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 lut_wb[] ={ -0x80, 0x17, 0x00, 0x00, 0x00, 0x02, -0x90, 0x17, 0x17, 0x00, 0x00, 0x02, -0x80, 0x0A, 0x01, 0x00, 0x00, 0x01, -0x50, 0x0E, 0x0E, 0x00, 0x00, 0x02, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x90, 0x0F, 0x0F, 0x00, 0x00, 0x01, + 0x10, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; diff --git a/Arduino/epd7in5_V2/epd7in5_V2.cpp b/Arduino/epd7in5_V2/epd7in5_V2.cpp index c129e90..242ed00 100644 --- a/Arduino/epd7in5_V2/epd7in5_V2.cpp +++ b/Arduino/epd7in5_V2/epd7in5_V2.cpp @@ -229,8 +229,8 @@ void Epd::DisplayFrame(const unsigned char* frame_buffer) { SendCommand(0x13); for (unsigned long j = 0; j < height; j++) { - for (unsigned long i = 0; i < width; i++) { - SendData(~frame_buffer[i + j * width]); + for (unsigned long i = 0; i < width/8; i++) { + SendData(~frame_buffer[i + j * width/8]); } } SendCommand(0x12); @@ -240,7 +240,6 @@ void Epd::DisplayFrame(const unsigned char* frame_buffer) { void Epd::Displaypart(const unsigned char* pbuffer, unsigned long xStart, unsigned long yStart,unsigned long Picture_Width,unsigned long Picture_Height) { SendCommand(0x13); - int * padd; // xStart = xStart/8; // xStart = xStart*8; for (unsigned long j = 0; j < height; j++) { diff --git a/Arduino/epd7in5bc/epdif.cpp b/Arduino/epd7in5bc/epdif.cpp index 997f422..4c5c674 100644 --- a/Arduino/epd7in5bc/epdif.cpp +++ b/Arduino/epd7in5bc/epdif.cpp @@ -26,7 +26,7 @@ */ #include "epdif.h" -#include +#include EpdIf::EpdIf() { }; diff --git a/Arduino/epd7in5bc/epdif.h b/Arduino/epd7in5bc/epdif.h index 3c55313..c195910 100644 --- a/Arduino/epd7in5bc/epdif.h +++ b/Arduino/epd7in5bc/epdif.h @@ -28,7 +28,7 @@ #ifndef EPDIF_H #define EPDIF_H -#include +#include // Pin definition #define RST_PIN 8 diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_1in54b_V2_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_1in54b_V2_test.c index 369cc84..74503d7 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_1in54b_V2_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_1in54b_V2_test.c @@ -29,6 +29,7 @@ ******************************************************************************/ #include "EPD_Test.h" #include "EPD_1in54b_V2.h" +#include "time.h" int EPD_1in54b_V2_test(void) { @@ -37,9 +38,13 @@ int EPD_1in54b_V2_test(void) return -1; } EPD_1IN54B_V2_Init(); + struct timespec start={0,0}, finish={0,0}; + clock_gettime(CLOCK_REALTIME,&start); EPD_1IN54B_V2_Clear(); + clock_gettime(CLOCK_REALTIME,&finish); + printf("%ld S\r\n",finish.tv_sec-start.tv_sec); DEV_Delay_ms(200); - + UBYTE *BlackImage, *RedImage; UWORD Imagesize = ((EPD_1IN54B_V2_WIDTH % 8 == 0)? (EPD_1IN54B_V2_WIDTH / 8 ): (EPD_1IN54B_V2_WIDTH / 8 + 1)) * EPD_1IN54B_V2_HEIGHT; if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_2in13_V3_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_2in13_V3_test.c index 06dd6f1..fd8212e 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_2in13_V3_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_2in13_V3_test.c @@ -4,8 +4,8 @@ * | Function : 2.13inch e-paper V3 test demo * | Info : *---------------- -* | This version: V1.0 -* | Date : 2020-12-22 +* | This version: V1.1 +* | Date : 2021-10-30 * | Info : # # Permission is hereby granted, free of charge, to any person obtaining a copy @@ -33,40 +33,40 @@ int EPD_2in13_V3_test(void) { - printf("EPD_2in13_V3_test Demo\r\n"); + Debug("EPD_2in13_V3_test Demo\r\n"); if(DEV_Module_Init()!=0){ return -1; } - printf("e-Paper Init and Clear...\r\n"); + Debug("e-Paper Init and Clear...\r\n"); EPD_2in13_V3_Init(); struct timespec start={0,0}, finish={0,0}; clock_gettime(CLOCK_REALTIME,&start); EPD_2in13_V3_Clear(); clock_gettime(CLOCK_REALTIME,&finish); - printf("%ld S\r\n",finish.tv_sec-start.tv_sec); + Debug("%ld S\r\n",finish.tv_sec-start.tv_sec); //Create a new image cache UBYTE *BlackImage; UWORD Imagesize = ((EPD_2in13_V3_WIDTH % 8 == 0)? (EPD_2in13_V3_WIDTH / 8 ): (EPD_2in13_V3_WIDTH / 8 + 1)) * EPD_2in13_V3_HEIGHT; if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { - printf("Failed to apply for black memory...\r\n"); + Debug("Failed to apply for black memory...\r\n"); return -1; } - printf("Paint_NewImage\r\n"); + Debug("Paint_NewImage\r\n"); Paint_NewImage(BlackImage, EPD_2in13_V3_WIDTH, EPD_2in13_V3_HEIGHT, 90, WHITE); Paint_Clear(WHITE); #if 1 // show bmp Paint_NewImage(BlackImage, EPD_2in13_V3_WIDTH, EPD_2in13_V3_HEIGHT, 90, WHITE); - printf("show window BMP-----------------\r\n"); + Debug("show window BMP-----------------\r\n"); Paint_SelectImage(BlackImage); - GUI_ReadBmp("./pic/100x100.bmp", 0, 0); + GUI_ReadBmp("./pic/100x100.bmp", 10, 10); EPD_2in13_V3_Display(BlackImage); DEV_Delay_ms(3000); - printf("show bmp------------------------\r\n"); + Debug("show bmp------------------------\r\n"); Paint_SelectImage(BlackImage); GUI_ReadBmp("./pic/2in13_1.bmp", 0, 0); EPD_2in13_V3_Display(BlackImage); @@ -74,7 +74,7 @@ int EPD_2in13_V3_test(void) #endif #if 1 //show image for array - printf("show image for array\r\n"); + Debug("show image for array\r\n"); Paint_SelectImage(BlackImage); Paint_Clear(WHITE); Paint_DrawBitMap(gImage_2in13_2); @@ -85,7 +85,7 @@ int EPD_2in13_V3_test(void) #if 1 // Drawing on the image Paint_NewImage(BlackImage, EPD_2in13_V3_WIDTH, EPD_2in13_V3_HEIGHT, 90, WHITE); - printf("Drawing\r\n"); + Debug("Drawing\r\n"); //1.Select Image Paint_SelectImage(BlackImage); Paint_Clear(WHITE); @@ -109,8 +109,8 @@ int EPD_2in13_V3_test(void) Paint_DrawString_EN(140, 15, "waveshare", &Font16, BLACK, WHITE); Paint_DrawNum(140, 40, 123456789, &Font16, BLACK, WHITE); - Paint_DrawString_CN(140, 60, "你好abc", &Font12CN, BLACK, WHITE); - Paint_DrawString_CN(5, 65, "微雪电å­", &Font24CN, WHITE, BLACK); + Paint_DrawString_CN(140, 60, "ÄãºÃabc", &Font12CN, BLACK, WHITE); + Paint_DrawString_CN(5, 65, "΢ѩµç×Ó", &Font24CN, WHITE, BLACK); EPD_2in13_V3_Display_Base(BlackImage); DEV_Delay_ms(3000); @@ -118,7 +118,7 @@ int EPD_2in13_V3_test(void) #if 1 //Partial refresh, example shows time Paint_NewImage(BlackImage, EPD_2in13_V3_WIDTH, EPD_2in13_V3_HEIGHT, 90, WHITE); - printf("Partial refresh\r\n"); + Debug("Partial refresh\r\n"); Paint_SelectImage(BlackImage); PAINT_TIME sPaint_time; @@ -153,17 +153,17 @@ int EPD_2in13_V3_test(void) } #endif - printf("Clear...\r\n"); + Debug("Clear...\r\n"); EPD_2in13_V3_Init(); EPD_2in13_V3_Clear(); - printf("Goto Sleep...\r\n"); + Debug("Goto Sleep...\r\n"); EPD_2in13_V3_Sleep(); free(BlackImage); BlackImage = NULL; DEV_Delay_ms(2000);//important, at least 2s // close 5V - printf("close 5V, Module enters 0 power consumption ...\r\n"); + Debug("close 5V, Module enters 0 power consumption ...\r\n"); DEV_Module_Exit(); return 0; } diff --git a/RaspberryPi_JetsonNano/c/examples/EPD_4in2_test.c b/RaspberryPi_JetsonNano/c/examples/EPD_4in2_test.c index b3facae..9e06e13 100644 --- a/RaspberryPi_JetsonNano/c/examples/EPD_4in2_test.c +++ b/RaspberryPi_JetsonNano/c/examples/EPD_4in2_test.c @@ -30,6 +30,7 @@ #include "EPD_Test.h" #include "EPD_4in2.h" #include +#include int EPD_4in2_test(void) { @@ -39,9 +40,14 @@ int EPD_4in2_test(void) } printf("e-Paper Init and Clear...\r\n"); - EPD_4IN2_Init(); + EPD_4IN2_Init_Fast(); + + struct timespec start={0,0}, finish={0,0}; + clock_gettime(CLOCK_REALTIME,&start); EPD_4IN2_Clear(); DEV_Delay_ms(500); + clock_gettime(CLOCK_REALTIME,&finish); + Debug("%ld S\r\n",finish.tv_sec-start.tv_sec); //Create a new image cache UBYTE *BlackImage; @@ -56,6 +62,9 @@ int EPD_4in2_test(void) #if 1 // show bmp + + EPD_4IN2_Init_Fast(); + printf("show window BMP-----------------\r\n"); Paint_SelectImage(BlackImage); Paint_Clear(WHITE); @@ -68,9 +77,10 @@ int EPD_4in2_test(void) GUI_ReadBmp("./pic/4in2.bmp", 0, 0); EPD_4IN2_Display(BlackImage); DEV_Delay_ms(2000); + #endif -#if 0 // show image for array +#if 1 // show image for array printf("show image for array\r\n"); Paint_SelectImage(BlackImage); Paint_Clear(WHITE); @@ -79,7 +89,7 @@ int EPD_4in2_test(void) DEV_Delay_ms(500); #endif -#if 1 // Drawing on the image +#if 1 // Drawing on the image //1.Select Image printf("SelectImage:BlackImage\r\n"); Paint_SelectImage(BlackImage); @@ -102,15 +112,18 @@ int EPD_4in2_test(void) Paint_DrawString_EN(10, 20, "hello world", &Font12, WHITE, BLACK); 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); printf("EPD_Display\r\n"); EPD_4IN2_Display(BlackImage); DEV_Delay_ms(2000); + #endif - printf("Support for partial refresh, but the refresh effect is not good, but it is not recommended\r\n"); + #if 0 + printf("Support for partial refresh, but the refresh effect is not good, but it is not recommended\r\n"); + EPD_4IN2_Init_Partial(); printf("Partial refresh\r\n"); PAINT_TIME sPaint_time; sPaint_time.Hour = 12; @@ -142,6 +155,8 @@ int EPD_4in2_test(void) } } #endif +#if 1 + EPD_4IN2_Init_Fast(); EPD_4IN2_Clear(); EPD_4IN2_Init_4Gray(); printf("show Gray------------------------\r\n"); @@ -155,7 +170,7 @@ int EPD_4in2_test(void) Paint_NewImage(BlackImage, EPD_4IN2_WIDTH, EPD_4IN2_HEIGHT, 0, WHITE); Paint_SetScale(4); Paint_Clear(WHITE); -#if 0 + Paint_DrawPoint(10, 80, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); Paint_DrawPoint(10, 90, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT); Paint_DrawPoint(10, 100, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); @@ -171,24 +186,23 @@ int EPD_4in2_test(void) Paint_DrawString_EN(10, 20, "hello world", &Font12, WHITE, BLACK); Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE); Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK); - Paint_DrawString_CN(140, 0, "ÄãºÃabc", &Font12CN, GRAY1, GRAY4); - Paint_DrawString_CN(140, 40, "ÄãºÃabc", &Font12CN, GRAY2, GRAY3); - Paint_DrawString_CN(140, 80, "ÄãºÃabc", &Font12CN, GRAY3, GRAY2); - Paint_DrawString_CN(140, 120, "ÄãºÃabc", &Font12CN, GRAY4, GRAY1); + Paint_DrawString_CN(140, 0, "���abc", &Font12CN, GRAY1, GRAY4); + Paint_DrawString_CN(140, 40, "���abc", &Font12CN, GRAY2, GRAY3); + Paint_DrawString_CN(140, 80, "���abc", &Font12CN, GRAY3, GRAY2); + Paint_DrawString_CN(140, 120, "���abc", &Font12CN, GRAY4, GRAY1); - Paint_DrawString_CN(220, 0, "΢ѩµç×Ó", &Font24CN, GRAY1, GRAY4); - Paint_DrawString_CN(220, 40, "΢ѩµç×Ó", &Font24CN, GRAY2, GRAY3); - Paint_DrawString_CN(220, 80, "΢ѩµç×Ó", &Font24CN, GRAY3, GRAY2); - Paint_DrawString_CN(220, 120, "΢ѩµç×Ó", &Font24CN, GRAY4, GRAY1); + Paint_DrawString_CN(220, 0, "΢ѩ����", &Font24CN, GRAY1, GRAY4); + Paint_DrawString_CN(220, 40, "΢ѩ����", &Font24CN, GRAY2, GRAY3); + Paint_DrawString_CN(220, 80, "΢ѩ����", &Font24CN, GRAY3, GRAY2); + Paint_DrawString_CN(220, 120, "΢ѩ����", &Font24CN, GRAY4, GRAY1); EPD_4IN2_4GrayDisplay(BlackImage); DEV_Delay_ms(2000); -#endif -#if 1 + Paint_Clear(WHITE); EPD_4IN2_4GrayDisplay(gImage_4in2_4Gray1); DEV_Delay_ms(2000); - + GUI_ReadBmp_4Gray("./pic/4in2_Scale.bmp",0 , 0); EPD_4IN2_4GrayDisplay(BlackImage); DEV_Delay_ms(2000); @@ -198,8 +212,7 @@ int EPD_4in2_test(void) EPD_4IN2_4GrayDisplay(BlackImage); DEV_Delay_ms(2000); #endif - EPD_4IN2_Clear(); - EPD_4IN2_Init(); + EPD_4IN2_Init_Fast(); EPD_4IN2_Clear(); printf("Goto Sleep...\r\n"); EPD_4IN2_Sleep(); diff --git a/RaspberryPi_JetsonNano/c/examples/main.c b/RaspberryPi_JetsonNano/c/examples/main.c index 57523b2..55b5c31 100644 --- a/RaspberryPi_JetsonNano/c/examples/main.c +++ b/RaspberryPi_JetsonNano/c/examples/main.c @@ -25,7 +25,7 @@ int main(void) // EPD_1in54_test(); // EPD_1in54_V2_test(); // EPD_1in54b_test(); - // EPD_1in54b_V2_test(); + // EPD_1in54b_V2_test(); // EPD_1in54c_test(); // EPD_2in66_test(); @@ -43,7 +43,7 @@ int main(void) // EPD_2in9d_test(); // EPD_2in13_test(); - // EPD_2in13_V2_test(); + // EPD_2in13_V2_test(); // EPD_2in13_V3_test(); // EPD_2in13bc_test(); // EPD_2in13b_V3_test(); @@ -53,7 +53,7 @@ int main(void) // EPD_4in01f_test(); - // EPD_4in2_test(); + EPD_4in2_test(); // EPD_4in2_V2_test(); // EPD_4in2bc_test(); // EPD_4in2b_V2_test(); @@ -63,14 +63,14 @@ int main(void) // EPD_5in65f_test(); // EPD_5in83_test(); - // EPD_5in83_V2_test(); + // EPD_5in83_V2_test(); // EPD_5in83bc_test(); // EPD_5in83b_V2_test(); // EPD_5in84_test(); // EPD_7in5_test(); - // EPD_7in5_V2_test(); + // EPD_7in5_V2_test(); // EPD_7in5bc_test(); // EPD_7in5b_V2_test(); diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_1in54_V2.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_1in54_V2.c index c448037..928e368 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_1in54_V2.c +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_1in54_V2.c @@ -78,30 +78,6 @@ unsigned char WF_PARTIAL_1IN54_0[159] = 0x02,0x17,0x41,0xB0,0x32,0x28, }; -// waveform partial refresh(quality) -unsigned char WF_PARTIAL_1IN54_1[159] = -{ -0x0,0x00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0xA,0x0,0x0,0x0,0x0,0x0,0x1, -0x1,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0, -0x22,0x17,0x41,0x0,0x32,0x20, -}; - /****************************************************************************** function : Software reset parameter: @@ -109,11 +85,11 @@ parameter: static void EPD_1IN54_V2_Reset(void) { DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(200); + DEV_Delay_ms(20); DEV_Digital_Write(EPD_RST_PIN, 0); DEV_Delay_ms(2); DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(200); + DEV_Delay_ms(20); } /****************************************************************************** @@ -276,7 +252,7 @@ void EPD_1IN54_V2_Init_Partial(void) EPD_1IN54_V2_Reset(); EPD_1IN54_V2_ReadBusy(); - EPD_1IN54_V2_SetLut(WF_PARTIAL_1IN54_1); + EPD_1IN54_V2_SetLut(WF_PARTIAL_1IN54_0); EPD_1IN54_V2_SendCommand(0x37); EPD_1IN54_V2_SendData(0x00); EPD_1IN54_V2_SendData(0x00); @@ -382,7 +358,7 @@ void EPD_1IN54_V2_DisplayPart(UBYTE *Image) UWORD Width, Height; Width = (EPD_1IN54_V2_WIDTH % 8 == 0)? (EPD_1IN54_V2_WIDTH / 8 ): (EPD_1IN54_V2_WIDTH / 8 + 1); Height = EPD_1IN54_V2_HEIGHT; - + UDOUBLE Addr = 0; EPD_1IN54_V2_SendCommand(0x24); for (UWORD j = 0; j < Height; j++) { diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in13_V3.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in13_V3.c index 7680251..4729390 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in13_V3.c +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in13_V3.c @@ -4,8 +4,8 @@ * | Function : 2.13inch e-paper V3 * | Info : *---------------- -* | This version: V1.0 -* | Date : 2020-12-22 +* | This version: V1.1 +* | Date : 2021-10-30 * | Info : * ----------------------------------------------------------------------------- # @@ -31,51 +31,51 @@ #include "EPD_2in13_V3.h" #include "Debug.h" -UBYTE WF_PARTIAL_2IN13_V2[159] = +UBYTE WF_PARTIAL_2IN13_V3[159] = { -0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x14,0x0,0x0,0x0,0x0,0x0,0x0, -0x1,0x0,0x0,0x0,0x0,0x0,0x0, -0x1,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0, -0x22,0x17,0x41,0x00,0x32,0x36, -}; + 0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x14,0x0,0x0,0x0,0x0,0x0,0x0, + 0x1,0x0,0x0,0x0,0x0,0x0,0x0, + 0x1,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0, + 0x22,0x17,0x41,0x00,0x32,0x36, +}; -UBYTE WS_20_30_2IN13_V2[159] = +UBYTE WS_20_30_2IN13_V3[159] = { -0x80, 0x4A, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, -0x40, 0x4A, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, -0x80, 0x4A, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, -0x40, 0x4A, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, -0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, -0xF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, -0xF, 0x0, 0x0, 0xF, 0x0, 0x0, 0x2, -0xF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, -0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, -0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, -0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, -0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, -0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, -0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, -0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, -0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, -0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, -0x22, 0x17, 0x41, 0x0, 0x32, 0x36 -}; + 0x80, 0x4A, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x40, 0x4A, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x80, 0x4A, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x40, 0x4A, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF, 0x0, 0x0, 0xF, 0x0, 0x0, 0x2, + 0xF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, + 0x22, 0x17, 0x41, 0x0, 0x32, 0x36 +}; /****************************************************************************** function : Software reset @@ -84,11 +84,11 @@ parameter: static void EPD_2in13_V3_Reset(void) { DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(100); + DEV_Delay_ms(20); DEV_Digital_Write(EPD_RST_PIN, 0); DEV_Delay_ms(2); DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(100); + DEV_Delay_ms(20); } /****************************************************************************** @@ -140,20 +140,29 @@ parameter: ******************************************************************************/ static void EPD_2in13_V3_TurnOnDisplay(void) { - EPD_2in13_V3_SendCommand(0x22); //Display Update Control + EPD_2in13_V3_SendCommand(0x22); // Display Update Control EPD_2in13_V3_SendData(0xc7); - EPD_2in13_V3_SendCommand(0x20); //Activate Display Update Sequence + EPD_2in13_V3_SendCommand(0x20); // Activate Display Update Sequence EPD_2in13_V3_ReadBusy(); } +/****************************************************************************** +function : Turn On Display +parameter: +******************************************************************************/ static void EPD_2in13_V3_TurnOnDisplay_Partial(void) { - EPD_2in13_V3_SendCommand(0x22); //Display Update Control - EPD_2in13_V3_SendData(0x0f); // c0/ff - EPD_2in13_V3_SendCommand(0x20); //Activate Display Update Sequence + EPD_2in13_V3_SendCommand(0x22); // Display Update Control + EPD_2in13_V3_SendData(0x0f); // fast:0x0c, quality:0x0f, 0xcf + EPD_2in13_V3_SendCommand(0x20); // Activate Display Update Sequence EPD_2in13_V3_ReadBusy(); } +/****************************************************************************** +function : Set lut +parameter: + lut : lut data +******************************************************************************/ static void EPD_2IN13_V3_LUT(UBYTE *lut) { UBYTE count; @@ -163,6 +172,11 @@ static void EPD_2IN13_V3_LUT(UBYTE *lut) EPD_2in13_V3_ReadBusy(); } +/****************************************************************************** +function : Send lut data and configuration +parameter: + lut : lut data +******************************************************************************/ static void EPD_2IN13_V2_LUT_by_host(UBYTE *lut) { EPD_2IN13_V3_LUT((UBYTE *)lut); //lut @@ -176,36 +190,37 @@ static void EPD_2IN13_V2_LUT_by_host(UBYTE *lut) EPD_2in13_V3_SendData(*(lut+157)); // VSL EPD_2in13_V3_SendCommand(0x2c); // VCOM EPD_2in13_V3_SendData(*(lut+158)); - } /****************************************************************************** function : Setting the display window parameter: + Xstart : X-axis starting position + Ystart : Y-axis starting position + Xend : End position of X-axis + Yend : End position of Y-axis ******************************************************************************/ static void EPD_2in13_V3_SetWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend) { - // Ystart = 295 - Ystart; - EPD_2in13_V3_SendCommand(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION EPD_2in13_V3_SendData((Xstart>>3) & 0xFF); EPD_2in13_V3_SendData((Xend>>3) & 0xFF); EPD_2in13_V3_SendCommand(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION - EPD_2in13_V3_SendData(Yend & 0xFF); - EPD_2in13_V3_SendData((Yend >> 8) & 0xFF); EPD_2in13_V3_SendData(Ystart & 0xFF); EPD_2in13_V3_SendData((Ystart >> 8) & 0xFF); + EPD_2in13_V3_SendData(Yend & 0xFF); + EPD_2in13_V3_SendData((Yend >> 8) & 0xFF); } /****************************************************************************** function : Set Cursor parameter: + Xstart : X-axis starting position + Ystart : Y-axis starting position ******************************************************************************/ static void EPD_2in13_V3_SetCursor(UWORD Xstart, UWORD Ystart) { - Ystart = 295 - Ystart; - EPD_2in13_V3_SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER EPD_2in13_V3_SendData(Xstart & 0xFF); @@ -228,14 +243,15 @@ void EPD_2in13_V3_Init(void) EPD_2in13_V3_ReadBusy(); EPD_2in13_V3_SendCommand(0x01); //Driver output control - EPD_2in13_V3_SendData(0x27); - EPD_2in13_V3_SendData(0x01); - EPD_2in13_V3_SendData(0x01); + EPD_2in13_V3_SendData(0xf9); + EPD_2in13_V3_SendData(0x00); + EPD_2in13_V3_SendData(0x00); EPD_2in13_V3_SendCommand(0x11); //data entry mode - EPD_2in13_V3_SendData(0x01); + EPD_2in13_V3_SendData(0x03); - EPD_2in13_V3_SetWindows(0, 0, EPD_2in13_V3_WIDTH-1, 296-1); + EPD_2in13_V3_SetWindows(0, 0, EPD_2in13_V3_WIDTH-1, EPD_2in13_V3_HEIGHT-1); + EPD_2in13_V3_SetCursor(0, 0); EPD_2in13_V3_SendCommand(0x3C); //BorderWavefrom EPD_2in13_V3_SendData(0x05); @@ -246,11 +262,9 @@ void EPD_2in13_V3_Init(void) EPD_2in13_V3_SendCommand(0x18); //Read built-in temperature sensor EPD_2in13_V3_SendData(0x80); - - EPD_2in13_V3_SetCursor(0, 0); + EPD_2in13_V3_ReadBusy(); - - EPD_2IN13_V2_LUT_by_host(WS_20_30_2IN13_V2); + EPD_2IN13_V2_LUT_by_host(WS_20_30_2IN13_V3); } /****************************************************************************** @@ -259,58 +273,85 @@ parameter: ******************************************************************************/ void EPD_2in13_V3_Clear(void) { - UWORD i; - EPD_2in13_V3_SendCommand(0x24); //write RAM for black(0)/white (1) - for(i=0;i<4736;i++) - { - EPD_2in13_V3_SendData(0xff); - } + UWORD Width, Height; + Width = (EPD_2in13_V3_WIDTH % 8 == 0)? (EPD_2in13_V3_WIDTH / 8 ): (EPD_2in13_V3_WIDTH / 8 + 1); + Height = EPD_2in13_V3_HEIGHT; + + EPD_2in13_V3_SendCommand(0x24); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_2in13_V3_SendData(0XFF); + } + } + EPD_2in13_V3_TurnOnDisplay(); } /****************************************************************************** function : Sends the image buffer in RAM to e-Paper and displays parameter: + Image : Image data ******************************************************************************/ void EPD_2in13_V3_Display(UBYTE *Image) { - UWORD i; - EPD_2in13_V3_SendCommand(0x24); //write RAM for black(0)/white (1) - for(i=0;i<4736;i++) - { - EPD_2in13_V3_SendData(Image[i]); - } + UWORD Width, Height; + Width = (EPD_2in13_V3_WIDTH % 8 == 0)? (EPD_2in13_V3_WIDTH / 8 ): (EPD_2in13_V3_WIDTH / 8 + 1); + Height = EPD_2in13_V3_HEIGHT; + + EPD_2in13_V3_SendCommand(0x24); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_2in13_V3_SendData(Image[i + j * Width]); + } + } + EPD_2in13_V3_TurnOnDisplay(); } -void EPD_2in13_V3_Display_Base(UBYTE *Image) -{ - UWORD i; +/****************************************************************************** +function : Refresh a base image +parameter: + Image : Image data +******************************************************************************/ +void EPD_2in13_V3_Display_Base(UBYTE *Image) +{ + UWORD Width, Height; + Width = (EPD_2in13_V3_WIDTH % 8 == 0)? (EPD_2in13_V3_WIDTH / 8 ): (EPD_2in13_V3_WIDTH / 8 + 1); + Height = EPD_2in13_V3_HEIGHT; + EPD_2in13_V3_SendCommand(0x24); //Write Black and White image to RAM - for(i=0;i<4736;i++) - { - EPD_2in13_V3_SendData(Image[i]); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_2in13_V3_SendData(Image[i + j * Width]); + } } EPD_2in13_V3_SendCommand(0x26); //Write Black and White image to RAM - for(i=0;i<4736;i++) - { - EPD_2in13_V3_SendData(Image[i]); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_2in13_V3_SendData(Image[i + j * Width]); + } } EPD_2in13_V3_TurnOnDisplay(); } +/****************************************************************************** +function : Sends the image buffer in RAM to e-Paper and partial refresh +parameter: + Image : Image data +******************************************************************************/ void EPD_2in13_V3_Display_Partial(UBYTE *Image) { - UWORD i; + UWORD Width, Height; + Width = (EPD_2in13_V3_WIDTH % 8 == 0)? (EPD_2in13_V3_WIDTH / 8 ): (EPD_2in13_V3_WIDTH / 8 + 1); + Height = EPD_2in13_V3_HEIGHT; //Reset DEV_Digital_Write(EPD_RST_PIN, 0); - DEV_Delay_ms(2); + DEV_Delay_ms(1); DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(3); - EPD_2IN13_V2_LUT_by_host(WF_PARTIAL_2IN13_V2); + EPD_2IN13_V2_LUT_by_host(WF_PARTIAL_2IN13_V3); EPD_2in13_V3_SendCommand(0x37); EPD_2in13_V3_SendData(0x00); @@ -332,13 +373,14 @@ void EPD_2in13_V3_Display_Partial(UBYTE *Image) EPD_2in13_V3_SendCommand(0x20); //Activate Display Update Sequence EPD_2in13_V3_ReadBusy(); - EPD_2in13_V3_SetWindows(0, 0, EPD_2in13_V3_WIDTH-1, 296-1); + EPD_2in13_V3_SetWindows(0, 0, EPD_2in13_V3_WIDTH-1, EPD_2in13_V3_HEIGHT-1); EPD_2in13_V3_SetCursor(0, 0); EPD_2in13_V3_SendCommand(0x24); //Write Black and White image to RAM - for(i=0;i<4736;i++) - { - EPD_2in13_V3_SendData(Image[i]); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_2in13_V3_SendData(Image[i + j * Width]); + } } EPD_2in13_V3_TurnOnDisplay_Partial(); } diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in13_V3.h b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in13_V3.h index 92e1ae9..3915ea4 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in13_V3.h +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_2in13_V3.h @@ -4,8 +4,8 @@ * | Function : 2.13inch e-paper V3 * | Info : *---------------- -* | This version: V1.0 -* | Date : 2020-12-22 +* | This version: V1.1 +* | Date : 2021-10-30 * | Info : * ----------------------------------------------------------------------------- # diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_3in7.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_3in7.c index e8086e5..673d9b1 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_3in7.c +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_3in7.c @@ -33,62 +33,62 @@ static const UBYTE lut_4Gray_GC[] = { -0x2A,0x06,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//1 -0x28,0x06,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//2 -0x20,0x06,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//3 -0x14,0x06,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//4 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//5 -0x00,0x02,0x02,0x0A,0x00,0x00,0x00,0x08,0x08,0x02,//6 -0x00,0x02,0x02,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,//7 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//8 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//9 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//10 -0x22,0x22,0x22,0x22,0x22 + 0x2A,0x06,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//1 + 0x28,0x06,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//2 + 0x20,0x06,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//3 + 0x14,0x06,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//4 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//5 + 0x00,0x02,0x02,0x0A,0x00,0x00,0x00,0x08,0x08,0x02,//6 + 0x00,0x02,0x02,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,//7 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//8 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//9 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//10 + 0x22,0x22,0x22,0x22,0x22 }; static const UBYTE lut_1Gray_GC[] = { -0x2A,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//1 -0x05,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//2 -0x2A,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//3 -0x05,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//4 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//5 -0x00,0x02,0x03,0x0A,0x00,0x02,0x06,0x0A,0x05,0x00,//6 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//7 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//8 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//9 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//10 -0x22,0x22,0x22,0x22,0x22 + 0x2A,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//1 + 0x05,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//2 + 0x2A,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//3 + 0x05,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//4 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//5 + 0x00,0x02,0x03,0x0A,0x00,0x02,0x06,0x0A,0x05,0x00,//6 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//7 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//8 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//9 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//10 + 0x22,0x22,0x22,0x22,0x22 }; static const UBYTE lut_1Gray_DU[] = { -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//1 -0x01,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x0A,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//3 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//5 -0x00,0x00,0x05,0x05,0x00,0x05,0x03,0x05,0x05,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//7 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//9 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x22,0x22,0x22,0x22,0x22 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//1 + 0x01,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0A,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//3 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//5 + 0x00,0x00,0x05,0x05,0x00,0x05,0x03,0x05,0x05,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//7 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//9 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x22,0x22,0x22,0x22,0x22 }; static const UBYTE lut_1Gray_A2[] = { -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //1 -0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //2 -0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //3 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //4 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //5 -0x00,0x00,0x03,0x05,0x00,0x00,0x00,0x00,0x00,0x00, //6 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //7 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //8 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //9 -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //10 -0x22,0x22,0x22,0x22,0x22 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //1 + 0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //2 + 0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //3 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //4 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //5 + 0x00,0x00,0x03,0x05,0x00,0x00,0x00,0x00,0x00,0x00, //6 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //7 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //8 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //9 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //10 + 0x22,0x22,0x22,0x22,0x22 }; /****************************************************************************** @@ -150,8 +150,7 @@ void EPD_3IN7_Load_LUT(UBYTE lut) { UWORD i; EPD_3IN7_SendCommand(0x32); - for (i = 0; i < 105; i++) - { + for (i = 0; i < 105; i++) { if(lut == 0) EPD_3IN7_SendData(lut_4Gray_GC[i]); else if(lut == 1) @@ -376,26 +375,25 @@ parameter: ******************************************************************************/ void EPD_3IN7_1Gray_Clear(void) { - UWORD i; - UWORD IMAGE_COUNTER = EPD_3IN7_WIDTH * EPD_3IN7_HEIGHT / 8; + UWORD i; + UWORD IMAGE_COUNTER = EPD_3IN7_WIDTH * EPD_3IN7_HEIGHT / 8; - EPD_3IN7_SendCommand(0x4E); - EPD_3IN7_SendData(0x00); - EPD_3IN7_SendData(0x00); - EPD_3IN7_SendCommand(0x4F); - EPD_3IN7_SendData(0x00); - EPD_3IN7_SendData(0x00); + EPD_3IN7_SendCommand(0x4E); + EPD_3IN7_SendData(0x00); + EPD_3IN7_SendData(0x00); + EPD_3IN7_SendCommand(0x4F); + EPD_3IN7_SendData(0x00); + EPD_3IN7_SendData(0x00); - EPD_3IN7_SendCommand(0x24); - for (i = 0; i < IMAGE_COUNTER; i++) - { - EPD_3IN7_SendData(0xff); - } - - EPD_3IN7_Load_LUT(2); - - EPD_3IN7_SendCommand(0x20); - EPD_3IN7_ReadBusy_HIGH(); + EPD_3IN7_SendCommand(0x24); + for (i = 0; i < IMAGE_COUNTER; i++) { + EPD_3IN7_SendData(0xff); + } + + EPD_3IN7_Load_LUT(2); + + EPD_3IN7_SendCommand(0x20); + EPD_3IN7_ReadBusy_HIGH(); } /****************************************************************************** @@ -518,33 +516,30 @@ parameter: ******************************************************************************/ void EPD_3IN7_1Gray_Display(const UBYTE *Image) { - UWORD i; - UWORD IMAGE_COUNTER = EPD_3IN7_WIDTH * EPD_3IN7_HEIGHT / 8; + UWORD i; + UWORD IMAGE_COUNTER = EPD_3IN7_WIDTH * EPD_3IN7_HEIGHT / 8; - EPD_3IN7_SendCommand(0x4E); - EPD_3IN7_SendData(0x00); - EPD_3IN7_SendData(0x00); - EPD_3IN7_SendCommand(0x4F); - EPD_3IN7_SendData(0x00); - EPD_3IN7_SendData(0x00); + EPD_3IN7_SendCommand(0x4E); + EPD_3IN7_SendData(0x00); + EPD_3IN7_SendData(0x00); + EPD_3IN7_SendCommand(0x4F); + EPD_3IN7_SendData(0x00); + EPD_3IN7_SendData(0x00); - EPD_3IN7_SendCommand(0x24); - for (i = 0; i < IMAGE_COUNTER; i++) - { - EPD_3IN7_SendData(Image[i]); - } + EPD_3IN7_SendCommand(0x24); + for (i = 0; i < IMAGE_COUNTER; i++) { + EPD_3IN7_SendData(Image[i]); + } - EPD_3IN7_Load_LUT(2); - EPD_3IN7_SendCommand(0x20); - EPD_3IN7_ReadBusy_HIGH(); + EPD_3IN7_Load_LUT(2); + EPD_3IN7_SendCommand(0x20); + EPD_3IN7_ReadBusy_HIGH(); } /****************************************************************************** function : Sends part the image buffer in RAM to e-Paper and displays notes: - You can send a part of data to e-Paper,But this function is not recommended - 1.Xsize must be as big as EPD_3IN7_WIDTH - 2.Ypointer must be start at 0 + Xstart must be a multiple of 8 ******************************************************************************/ void EPD_3IN7_1Gray_Display_Part(const UBYTE *Image, UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend) { @@ -574,9 +569,8 @@ void EPD_3IN7_1Gray_Display_Part(const UBYTE *Image, UWORD Xstart, UWORD Ystart, EPD_3IN7_SendData((Ystart >> 8) & 0xFF); EPD_3IN7_SendCommand(0x24); - for (i = 0; i < IMAGE_COUNTER; i++) - { - EPD_3IN7_SendData(Image[i]); + for (i = 0; i < IMAGE_COUNTER; i++) { + EPD_3IN7_SendData(Image[i]); } EPD_3IN7_Load_LUT(3); diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in2.c b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in2.c index 7ff7337..351f93a 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in2.c +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in2.c @@ -113,173 +113,184 @@ #include "Debug.h" static const unsigned char EPD_4IN2_lut_vcom0[] = { - 0x00, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x17, 0x17, 0x00, 0x00, 0x02, - 0x00, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; + 0x00, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x01, + 0x00, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + }; static const unsigned char EPD_4IN2_lut_ww[] = { - 0x40, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x17, 0x17, 0x00, 0x00, 0x02, - 0x40, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; + 0x50, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x90, 0x0F, 0x0F, 0x00, 0x00, 0x01, + 0xA0, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; static const unsigned char EPD_4IN2_lut_bw[] = { - 0x40, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x17, 0x17, 0x00, 0x00, 0x02, - 0x40, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; + 0x50, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x90, 0x0F, 0x0F, 0x00, 0x00, 0x01, + 0xA0, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; static const unsigned char EPD_4IN2_lut_wb[] = { - 0x80, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x17, 0x17, 0x00, 0x00, 0x02, - 0x80, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0x50, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; + 0xA0, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x90, 0x0F, 0x0F, 0x00, 0x00, 0x01, + 0x50, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; static const unsigned char EPD_4IN2_lut_bb[] = { - 0x80, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x17, 0x17, 0x00, 0x00, 0x02, - 0x80, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0x50, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; + 0x20, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x90, 0x0F, 0x0F, 0x00, 0x00, 0x01, + 0x10, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; /******************************partial screen update LUT*********************************/ const unsigned char EPD_4IN2_Partial_lut_vcom1[] ={ -0x00 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00, }; + 0x00, 0x01, 0x20, 0x01, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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 EPD_4IN2_Partial_lut_ww1[] ={ -0x00 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00,}; + 0x00, 0x01, 0x20, 0x01, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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 EPD_4IN2_Partial_lut_bw1[] ={ -0x80 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, }; + 0x20, 0x01, 0x20, 0x01, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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 EPD_4IN2_Partial_lut_wb1[] ={ -0x40 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, }; + 0x10, 0x01, 0x20, 0x01, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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 EPD_4IN2_Partial_lut_bb1[] ={ -0x00 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, }; + 0x00, 0x01,0x20, 0x01, 0x00, 0x01, + 0x00, 0x00,0x00, 0x00, 0x00, 0x00, + 0x00, 0x00,0x00, 0x00, 0x00, 0x00, + 0x00, 0x00,0x00, 0x00, 0x00, 0x00, + 0x00, 0x00,0x00, 0x00, 0x00, 0x00, + 0x00, 0x00,0x00, 0x00, 0x00, 0x00, + 0x00, 0x00,0x00, 0x00, 0x00, 0x00, +}; + /******************************gray*********************************/ //0~3 gray const unsigned char EPD_4IN2_4Gray_lut_vcom[] = { -0x00 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, -0x60 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, -0x00 ,0x14 ,0x00 ,0x00 ,0x00 ,0x01, -0x00 ,0x13 ,0x0A ,0x01 ,0x00 ,0x01, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 + 0x00 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, + 0x60 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, + 0x00 ,0x14 ,0x00 ,0x00 ,0x00 ,0x01, + 0x00 ,0x13 ,0x0A ,0x01 ,0x00 ,0x01, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 }; //R21 const unsigned char EPD_4IN2_4Gray_lut_ww[] ={ -0x40 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, -0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, -0x10 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, -0xA0 ,0x13 ,0x01 ,0x00 ,0x00 ,0x01, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x40 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, + 0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, + 0x10 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, + 0xA0 ,0x13 ,0x01 ,0x00 ,0x00 ,0x01, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, }; //R22H r const unsigned char EPD_4IN2_4Gray_lut_bw[] ={ -0x40 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, -0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, -0x00 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, -0x99 ,0x0C ,0x01 ,0x03 ,0x04 ,0x01, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x40 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, + 0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, + 0x00 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, + 0x99 ,0x0C ,0x01 ,0x03 ,0x04 ,0x01, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, }; //R23H w const unsigned char EPD_4IN2_4Gray_lut_wb[] ={ -0x40 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, -0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, -0x00 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, -0x99 ,0x0B ,0x04 ,0x04 ,0x01 ,0x01, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x40 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, + 0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, + 0x00 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, + 0x99 ,0x0B ,0x04 ,0x04 ,0x01 ,0x01, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, }; //R24H b const unsigned char EPD_4IN2_4Gray_lut_bb[] ={ -0x80 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, -0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, -0x20 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, -0x50 ,0x13 ,0x01 ,0x00 ,0x00 ,0x01, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, -0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x80 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, + 0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, + 0x20 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, + 0x50 ,0x13 ,0x01 ,0x00 ,0x00 ,0x01, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, }; - /****************************************************************************** function : Software reset parameter: ******************************************************************************/ static void EPD_4IN2_Reset(void) { - DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(20); DEV_Digital_Write(EPD_RST_PIN, 0); - DEV_Delay_ms(2); + DEV_Delay_ms(10); DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(20); + DEV_Delay_ms(10); + DEV_Digital_Write(EPD_RST_PIN, 0); - DEV_Delay_ms(2); + DEV_Delay_ms(10); DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(20); + DEV_Delay_ms(10); + DEV_Digital_Write(EPD_RST_PIN, 0); - DEV_Delay_ms(2); + DEV_Delay_ms(10); DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(20); + DEV_Delay_ms(10); } /****************************************************************************** @@ -338,35 +349,6 @@ static void EPD_4IN2_TurnOnDisplay(void) function : set the look-up tables parameter: ******************************************************************************/ -static void EPD_4IN2_SetLut(void) -{ - UWORD count; - EPD_4IN2_SendCommand(0x20); //g vcom - for(count=0; count<44; count++) { - EPD_4IN2_SendData(EPD_4IN2_lut_vcom0[count]); - } - - EPD_4IN2_SendCommand(0x21); - for(count=0; count<42; count++) { - EPD_4IN2_SendData(EPD_4IN2_lut_ww[count]); - } - - EPD_4IN2_SendCommand(0x22); - for(count=0; count<42; count++) { - EPD_4IN2_SendData(EPD_4IN2_lut_bw[count]); - } - - EPD_4IN2_SendCommand(0x23); - for(count=0; count<42; count++) { - EPD_4IN2_SendData(EPD_4IN2_lut_wb[count]); - } - - EPD_4IN2_SendCommand(0x24); - for(count=0; count<42; count++) { - EPD_4IN2_SendData(EPD_4IN2_lut_bb[count]); - } -} - static void EPD_4IN2_Partial_SetLut(void) { unsigned int count; @@ -388,7 +370,31 @@ static void EPD_4IN2_Partial_SetLut(void) EPD_4IN2_SendCommand(0x24); for(count=0;count<42;count++) - {EPD_4IN2_SendData(EPD_4IN2_Partial_lut_bb1[count]);} + {EPD_4IN2_SendData(EPD_4IN2_Partial_lut_bb1[count]);} +} + +static void EPD_4IN2_SetLut(void) +{ + unsigned int count; + EPD_4IN2_SendCommand(0x20); + for(count=0;count<36;count++) + {EPD_4IN2_SendData(EPD_4IN2_lut_vcom0[count]);} + + EPD_4IN2_SendCommand(0x21); + for(count=0;count<36;count++) + {EPD_4IN2_SendData(EPD_4IN2_lut_ww[count]);} + + EPD_4IN2_SendCommand(0x22); + for(count=0;count<36;count++) + {EPD_4IN2_SendData(EPD_4IN2_lut_bw[count]);} + + EPD_4IN2_SendCommand(0x23); + for(count=0;count<36;count++) + {EPD_4IN2_SendData(EPD_4IN2_lut_wb[count]);} + + EPD_4IN2_SendCommand(0x24); + for(count=0;count<36;count++) + {EPD_4IN2_SendData(EPD_4IN2_lut_bb[count]);} } //LUT download @@ -425,7 +431,8 @@ static void EPD_4IN2_4Gray_lut(void) function : Initialize the e-Paper register parameter: ******************************************************************************/ -void EPD_4IN2_Init(void) + +void EPD_4IN2_Init_Partial(void) { EPD_4IN2_Reset(); @@ -445,7 +452,6 @@ void EPD_4IN2_Init(void) EPD_4IN2_SendCommand(0x00); // panel setting EPD_4IN2_SendData(0xbf); // KW-BF KWR-AF BWROTP 0f BWOTP 1f - EPD_4IN2_SendData(0x0d); EPD_4IN2_SendCommand(0x30); // PLL setting EPD_4IN2_SendData(0x3C); // 3A 100HZ 29 150Hz 39 200HZ 31 171HZ @@ -457,14 +463,56 @@ void EPD_4IN2_Init(void) EPD_4IN2_SendData(0x2c); EPD_4IN2_SendCommand(0x82); // vcom_DC setting - EPD_4IN2_SendData(0x28); + EPD_4IN2_SendData(0x12); EPD_4IN2_SendCommand(0X50); // VCOM AND DATA INTERVAL SETTING - EPD_4IN2_SendData(0x97); // 97white border 77black border VBDF 17|D7 VBDW 97 VBDB 57 VBDF F7 VBDW 77 VBDB 37 VBDR B7 + EPD_4IN2_SendData(0x07); // 97white border 77black border VBDF 17|D7 VBDW 97 VBDB 57 VBDF F7 VBDW 77 VBDB 37 VBDR B7 - EPD_4IN2_SetLut(); + EPD_4IN2_Partial_SetLut(); } +//UC8176C +void EPD_4IN2_Init_Fast(void) +{ + EPD_4IN2_Reset(); + EPD_4IN2_SendCommand(0x01); //POWER SETTING + EPD_4IN2_SendData (0x03); + EPD_4IN2_SendData (0x00); + EPD_4IN2_SendData (0x2b); + EPD_4IN2_SendData (0x2b); + + EPD_4IN2_SendCommand(0x06); //boost soft start + EPD_4IN2_SendData (0x17); //A + EPD_4IN2_SendData (0x17); //B + EPD_4IN2_SendData (0x17); //C + + EPD_4IN2_SendCommand(0x04); + EPD_4IN2_ReadBusy(); + + EPD_4IN2_SendCommand(0x00); //panel setting + EPD_4IN2_SendData(0xbf); //KW-bf KWR-2F BWROTP 0f BWOTP 1f + + + EPD_4IN2_SendCommand(0x30); + EPD_4IN2_SendData (0x3c); // 3A 100HZ 29 150Hz 39 200HZ 31 171HZ + + EPD_4IN2_SendCommand(0x61); //resolution setting + EPD_4IN2_SendData (0x01); + EPD_4IN2_SendData (0x90); //400 + EPD_4IN2_SendData (0x01); //300 + EPD_4IN2_SendData (0x2c); + + + EPD_4IN2_SendCommand(0x82); //vcom_DC setting + EPD_4IN2_SendData (0x12); + + EPD_4IN2_SendCommand(0X50); + EPD_4IN2_SendData(0x97); + + EPD_4IN2_SetLut(); + +} + void EPD_4IN2_Init_4Gray(void) { EPD_4IN2_Reset(); @@ -524,8 +572,9 @@ void EPD_4IN2_Clear(void) EPD_4IN2_SendData(0xFF); } } + EPD_4IN2_SendCommand(0x12); //DISPLAY REFRESH - DEV_Delay_ms(10); + DEV_Delay_ms(1); EPD_4IN2_TurnOnDisplay(); } @@ -539,34 +588,37 @@ void EPD_4IN2_Display(UBYTE *Image) Width = (EPD_4IN2_WIDTH % 8 == 0)? (EPD_4IN2_WIDTH / 8 ): (EPD_4IN2_WIDTH / 8 + 1); Height = EPD_4IN2_HEIGHT; + EPD_4IN2_SendCommand(0x10); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_4IN2_SendData(0x00); + } + } + EPD_4IN2_SendCommand(0x13); for (UWORD j = 0; j < Height; j++) { for (UWORD i = 0; i < Width; i++) { EPD_4IN2_SendData(Image[i + j * Width]); } } - + + EPD_4IN2_SendCommand(0x12); //DISPLAY REFRESH + DEV_Delay_ms(10); EPD_4IN2_TurnOnDisplay(); } void EPD_4IN2_PartialDisplay(UWORD X_start,UWORD Y_start,UWORD X_end,UWORD Y_end, UBYTE *Image) { UWORD Width, Height; + static UBYTE DATA[EPD_4IN2_WIDTH * EPD_4IN2_HEIGHT / 8] = {0x00}; + Width = (EPD_4IN2_WIDTH % 8 == 0)? (EPD_4IN2_WIDTH / 8 ): (EPD_4IN2_WIDTH / 8 + 1); Height = EPD_4IN2_HEIGHT; X_start = (X_start % 8 == 0)? (X_start): (X_start/8*8+8); X_end = (X_end % 8 == 0)? (X_end): (X_end/8*8+8); - EPD_4IN2_SendCommand(0X50); - EPD_4IN2_SendData(0xf7); - DEV_Delay_ms(100); - - EPD_4IN2_SendCommand(0x82); //vcom_DC setting - EPD_4IN2_SendData (0x08); - EPD_4IN2_SendCommand(0X50); - EPD_4IN2_SendData(0x47); - EPD_4IN2_Partial_SetLut(); + EPD_4IN2_SendCommand(0x91); //This command makes the display enter partial mode EPD_4IN2_SendCommand(0x90); //resolution setting EPD_4IN2_SendData ((X_start)/256); @@ -585,13 +637,14 @@ void EPD_4IN2_PartialDisplay(UWORD X_start,UWORD Y_start,UWORD X_end,UWORD Y_end EPD_4IN2_SendCommand(0x10); //writes Old data to SRAM for programming for (UWORD j = 0; j < Y_end - Y_start; j++) { for (UWORD i = 0; i < (X_end - X_start)/8; i++) { - EPD_4IN2_SendData(Image[(Y_start + j)*Width + X_start/8 + i]); + EPD_4IN2_SendData(DATA[(Y_start + j)*Width + X_start/8 + i]); } } EPD_4IN2_SendCommand(0x13); //writes New data to SRAM. for (UWORD j = 0; j < Y_end - Y_start; j++) { for (UWORD i = 0; i < (X_end - X_start)/8; i++) { EPD_4IN2_SendData(~Image[(Y_start + j)*Width + X_start/8 + i]); + DATA[(Y_start + j)*Width + X_start/8 + i] = ~Image[(Y_start + j)*Width + X_start/8 + i]; } } @@ -703,8 +756,12 @@ parameter: ******************************************************************************/ void EPD_4IN2_Sleep(void) { - // EPD_4IN2_SendCommand(0x02); // POWER_OFF - // EPD_4IN2_ReadBusy(); + EPD_4IN2_SendCommand(0x50); // DEEP_SLEEP + EPD_4IN2_SendData(0XF7); + + EPD_4IN2_SendCommand(0x02); // POWER_OFF + EPD_4IN2_ReadBusy(); + EPD_4IN2_SendCommand(0x07); // DEEP_SLEEP EPD_4IN2_SendData(0XA5); } diff --git a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in2.h b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in2.h index befdc5b..4feb2b1 100644 --- a/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in2.h +++ b/RaspberryPi_JetsonNano/c/lib/e-Paper/EPD_4in2.h @@ -118,7 +118,8 @@ #define EPD_4IN2_WIDTH 400 #define EPD_4IN2_HEIGHT 300 -void EPD_4IN2_Init(void); +void EPD_4IN2_Init_Fast(void); +void EPD_4IN2_Init_Partial(void); void EPD_4IN2_Clear(void); void EPD_4IN2_Display(UBYTE *Image); void EPD_4IN2_Sleep(void); diff --git a/RaspberryPi_JetsonNano/python/examples/epd_2in13_V3_test.py b/RaspberryPi_JetsonNano/python/examples/epd_2in13_V3_test.py new file mode 100644 index 0000000..b9c9a96 --- /dev/null +++ b/RaspberryPi_JetsonNano/python/examples/epd_2in13_V3_test.py @@ -0,0 +1,93 @@ +#!/usr/bin/python +# -*- coding:utf-8 -*- +import sys +import os +picdir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'pic') +libdir = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'lib') +if os.path.exists(libdir): + sys.path.append(libdir) + +import logging +from waveshare_epd import epd2in13_V3 +import time +from PIL import Image,ImageDraw,ImageFont +import traceback + +logging.basicConfig(level=logging.DEBUG) + +try: + logging.info("epd2in13_V3 Demo") + + epd = epd2in13_V3.EPD() + logging.info("init and Clear") + epd.init() + epd.Clear(0xFF) + + # Drawing on the image + font15 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 15) + font24 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 24) + + logging.info("1.Drawing on the image...") + image = Image.new('1', (epd.height, epd.width), 255) # 255: clear the frame + draw = ImageDraw.Draw(image) + + draw.rectangle([(0,0),(50,50)],outline = 0) + draw.rectangle([(55,0),(100,50)],fill = 0) + draw.line([(0,0),(50,50)], fill = 0,width = 1) + draw.line([(0,50),(50,0)], fill = 0,width = 1) + draw.chord((10, 60, 50, 100), 0, 360, fill = 0) + draw.ellipse((55, 60, 95, 100), outline = 0) + draw.pieslice((55, 60, 95, 100), 90, 180, outline = 0) + draw.pieslice((55, 60, 95, 100), 270, 360, fill = 0) + draw.polygon([(110,0),(110,50),(150,25)],outline = 0) + draw.polygon([(190,0),(190,50),(150,25)],fill = 0) + draw.text((120, 60), 'e-Paper demo', font = font15, fill = 0) + draw.text((110, 90), u'微雪电å­', font = font24, fill = 0) + # image = image.rotate(180) # rotate + epd.display(epd.getbuffer(image)) + time.sleep(2) + + # read bmp file + logging.info("2.read bmp file...") + image = Image.open(os.path.join(picdir, '2in13.bmp')) + epd.display(epd.getbuffer(image)) + time.sleep(2) + + # read bmp file on window + logging.info("3.read bmp file on window...") + # epd.Clear(0xFF) + image1 = Image.new('1', (epd.height, epd.width), 255) # 255: clear the frame + bmp = Image.open(os.path.join(picdir, '100x100.bmp')) + image1.paste(bmp, (2,2)) + epd.display(epd.getbuffer(image1)) + time.sleep(2) + + # # partial update + logging.info("4.show time...") + time_image = Image.new('1', (epd.height, epd.width), 255) + time_draw = ImageDraw.Draw(time_image) + + epd.displayPartBaseImage(epd.getbuffer(time_image)) + num = 0 + while (True): + time_draw.rectangle((120, 80, 220, 105), fill = 255) + time_draw.text((120, 80), time.strftime('%H:%M:%S'), font = font24, fill = 0) + epd.displayPartial(epd.getbuffer(time_image)) + num = num + 1 + if(num == 10): + break + + logging.info("Clear...") + epd.init() + epd.Clear(0xFF) + + logging.info("Goto Sleep...") + epd.sleep() + +except IOError as e: + logging.info(e) + +except KeyboardInterrupt: + logging.info("ctrl + c:") + epd2in13_V3.epdconfig.module_exit() + exit() diff --git a/RaspberryPi_JetsonNano/python/examples/epd_4in2_test.py b/RaspberryPi_JetsonNano/python/examples/epd_4in2_test.py index 2bf5a03..0e70de9 100644 --- a/RaspberryPi_JetsonNano/python/examples/epd_4in2_test.py +++ b/RaspberryPi_JetsonNano/python/examples/epd_4in2_test.py @@ -78,18 +78,20 @@ try: logging.info("Clear...") epd.Clear() - Himage3 = Image.new('1', (epd.width, epd.height), 0) # 255: clear the frame - draw = ImageDraw.Draw(Himage3) - print("Support for partial refresh, but the refresh effect is not good, but it is not recommended") - print("Local refresh is off by default and is not recommended.") if(0): + print("Support for partial refresh, but the refresh effect is not good, but it is not recommended") + print("Local refresh is off by default and is not recommended.") + Himage3 = Image.new('1', (epd.width, epd.height), 0) # 255: clear the frame + draw = ImageDraw.Draw(Himage3) + epd.init_Partial() for j in range(0, int(20)): - draw.rectangle((8, 80, 44, 155), fill = 0) - draw.text((8, 80), str(j) , font = font35, fill = 1) - draw.text((8, 120), str(20-j) , font = font35, fill = 1) + draw.rectangle((8, 80, 48, 155), fill = 255) + draw.text((8, 80), str(j) , font = font35, fill = 0) + draw.text((8, 120), str(20-j) , font = font35, fill = 0) epd.EPD_4IN2_PartialDisplay(8, 80, 42, 155, epd.getbuffer(Himage3)) time.sleep(2); - + + '''4Gray display''' logging.info("5.4Gray display--------------------------------") epd.Init_4Gray() diff --git a/RaspberryPi_JetsonNano/python/examples/epd_7in5_V2_test.py b/RaspberryPi_JetsonNano/python/examples/epd_7in5_V2_test.py index d884510..38b0c78 100644 --- a/RaspberryPi_JetsonNano/python/examples/epd_7in5_V2_test.py +++ b/RaspberryPi_JetsonNano/python/examples/epd_7in5_V2_test.py @@ -32,7 +32,7 @@ try: draw = ImageDraw.Draw(Himage) draw.text((10, 0), 'hello world', font = font24, fill = 0) draw.text((10, 20), '7.5inch e-Paper', font = font24, fill = 0) - draw.text((150, 0), u'微雪电å­', font = font24, fill = 0) + draw.text((150, 0), u'微雪电å­', font = font24, fill = 0) draw.line((20, 50, 70, 100), fill = 0) draw.line((70, 50, 20, 100), fill = 0) draw.rectangle((20, 50, 70, 100), outline = 0) diff --git a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd1in54_V2.py b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd1in54_V2.py index 9719d7e..b489d9a 100644 --- a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd1in54_V2.py +++ b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd1in54_V2.py @@ -90,29 +90,6 @@ class EPD: 0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0, 0x02,0x17,0x41,0xB0,0x32,0x28, ] - - # waveform partial refresh(quality) - WF_PARTIAL_1IN54_1 = [ - 0x0,0x00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0xA,0x0,0x0,0x0,0x0,0x0,0x1, - 0x1,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0, - 0x22,0x17,0x41,0x0,0x32,0x20, - ] # Hardware reset def reset(self): @@ -176,24 +153,24 @@ class EPD: self.send_data(lut[158]) def SetWindows(self, Xstart, Ystart, Xend, Yend): - self.send_command(0x44) # SET_RAM_X_ADDRESS_START_END_POSITION - self.send_data((Xstart>>3) & 0xFF) - self.send_data((Xend>>3) & 0xFF) + self.send_command(0x44); # SET_RAM_X_ADDRESS_START_END_POSITION + self.send_data((Xstart>>3) & 0xFF); + self.send_data((Xend>>3) & 0xFF); - self.send_command(0x45) # SET_RAM_Y_ADDRESS_START_END_POSITION - self.send_data(Ystart & 0xFF) - self.send_data((Ystart >> 8) & 0xFF) - self.send_data(Yend & 0xFF) - self.send_data((Yend >> 8) & 0xFF) + self.send_command(0x45); # SET_RAM_Y_ADDRESS_START_END_POSITION + self.send_data(Ystart & 0xFF); + self.send_data((Ystart >> 8) & 0xFF); + self.send_data(Yend & 0xFF); + self.send_data((Yend >> 8) & 0xFF); def SetCursor(self, Xstart, Ystart): - self.send_command(0x4E) # SET_RAM_X_ADDRESS_COUNTER - self.send_data(Xstart & 0xFF) + self.send_command(0x4E); # SET_RAM_X_ADDRESS_COUNTER + self.send_data(Xstart & 0xFF); - self.send_command(0x4F) # SET_RAM_Y_ADDRESS_COUNTER - self.send_data(Ystart & 0xFF) - self.send_data((Ystart >> 8) & 0xFF) + self.send_command(0x4F); # SET_RAM_Y_ADDRESS_COUNTER + self.send_data(Ystart & 0xFF); + self.send_data((Ystart >> 8) & 0xFF); def init(self, isPartial): if (epdconfig.module_init() != 0): @@ -315,7 +292,7 @@ class EPD: for i in range(0, int(self.width / 8)): self.send_data(image[i + j * int(self.width / 8)]) - self.TurnOnDisplayPart() + self.TurnOnDisplay() def displayPart(self, image): if (image == None): diff --git a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in13_V3.py b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in13_V3.py new file mode 100644 index 0000000..3812190 --- /dev/null +++ b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in13_V3.py @@ -0,0 +1,397 @@ +# ***************************************************************************** +# * | File : epd2in13_V3.py +# * | Author : Waveshare team +# * | Function : Electronic paper driver +# * | Info : +# *---------------- +# * | This version: V1.1 +# * | Date : 2021-10-30 +# # | Info : python demo +# ----------------------------------------------------------------------------- +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# + + +import logging +from . import epdconfig +import numpy as np + +# Display resolution +EPD_WIDTH = 122 +EPD_HEIGHT = 250 + +logger = logging.getLogger(__name__) + +class EPD: + def __init__(self): + self.reset_pin = epdconfig.RST_PIN + self.dc_pin = epdconfig.DC_PIN + self.busy_pin = epdconfig.BUSY_PIN + self.cs_pin = epdconfig.CS_PIN + self.width = EPD_WIDTH + self.height = EPD_HEIGHT + + lut_partial_update= [ + 0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x14,0x0,0x0,0x0,0x0,0x0,0x0, + 0x1,0x0,0x0,0x0,0x0,0x0,0x0, + 0x1,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0, + 0x22,0x17,0x41,0x00,0x32,0x36, + ] + + lut_full_update = [ + 0x80,0x4A,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x40,0x4A,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x80,0x4A,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x40,0x4A,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0xF,0x0,0x0,0x0,0x0,0x0,0x0, + 0xF,0x0,0x0,0xF,0x0,0x0,0x2, + 0xF,0x0,0x0,0x0,0x0,0x0,0x0, + 0x1,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0, + 0x22,0x17,0x41,0x0,0x32,0x36, + ] + + ''' + function :Hardware reset + parameter: + ''' + def reset(self): + epdconfig.digital_write(self.reset_pin, 1) + epdconfig.delay_ms(20) + epdconfig.digital_write(self.reset_pin, 0) + epdconfig.delay_ms(2) + epdconfig.digital_write(self.reset_pin, 1) + epdconfig.delay_ms(20) + + ''' + function :send command + parameter: + command : Command register + ''' + def send_command(self, command): + epdconfig.digital_write(self.dc_pin, 0) + epdconfig.digital_write(self.cs_pin, 0) + epdconfig.spi_writebyte([command]) + epdconfig.digital_write(self.cs_pin, 1) + + ''' + function :send data + parameter: + data : Write data + ''' + def send_data(self, data): + epdconfig.digital_write(self.dc_pin, 1) + epdconfig.digital_write(self.cs_pin, 0) + epdconfig.spi_writebyte([data]) + epdconfig.digital_write(self.cs_pin, 1) + + ''' + function :Wait until the busy_pin goes LOW + parameter: + ''' + def ReadBusy(self): + logger.debug("e-Paper busy") + while(epdconfig.digital_read(self.busy_pin) == 1): # 0: idle, 1: busy + epdconfig.delay_ms(10) + logger.debug("e-Paper busy release") + + ''' + function : Turn On Display + parameter: + ''' + def TurnOnDisplay(self): + self.send_command(0x22) # Display Update Control + self.send_data(0xC7) + self.send_command(0x20) # Activate Display Update Sequence + self.ReadBusy() + + ''' + function : Turn On Display Part + parameter: + ''' + def TurnOnDisplayPart(self): + self.send_command(0x22) # Display Update Control + self.send_data(0x0f) # fast:0x0c, quality:0x0f, 0xcf + self.send_command(0x20) # Activate Display Update Sequence + self.ReadBusy() + + ''' + function : Set lut + parameter: + lut : lut data + ''' + def Lut(self, lut): + self.send_command(0x32) + for i in range(0, 153): + self.send_data(lut[i]) + self.ReadBusy() + + ''' + function : Send lut data and configuration + parameter: + lut : lut data + ''' + def SetLut(self, lut): + self.Lut(lut) + self.send_command(0x3f) + self.send_data(lut[153]) + self.send_command(0x03) # gate voltage + self.send_data(lut[154]) + self.send_command(0x04) # source voltage + self.send_data(lut[155]) # VSH + self.send_data(lut[156]) # VSH2 + self.send_data(lut[157]) # VSL + self.send_command(0x2c) # VCOM + self.send_data(lut[158]) + + ''' + function : Setting the display window + parameter: + xstart : X-axis starting position + ystart : Y-axis starting position + xend : End position of X-axis + yend : End position of Y-axis + ''' + def SetWindow(self, x_start, y_start, x_end, y_end): + self.send_command(0x44) # SET_RAM_X_ADDRESS_START_END_POSITION + # x point must be the multiple of 8 or the last 3 bits will be ignored + self.send_data((x_start>>3) & 0xFF) + self.send_data((x_end>>3) & 0xFF) + + self.send_command(0x45) # SET_RAM_Y_ADDRESS_START_END_POSITION + self.send_data(y_start & 0xFF) + self.send_data((y_start >> 8) & 0xFF) + self.send_data(y_end & 0xFF) + self.send_data((y_end >> 8) & 0xFF) + + ''' + function : Set Cursor + parameter: + x : X-axis starting position + y : Y-axis starting position + ''' + def SetCursor(self, x, y): + self.send_command(0x4E) # SET_RAM_X_ADDRESS_COUNTER + # x point must be the multiple of 8 or the last 3 bits will be ignored + self.send_data(x & 0xFF) + + self.send_command(0x4F) # SET_RAM_Y_ADDRESS_COUNTER + self.send_data(y & 0xFF) + self.send_data((y >> 8) & 0xFF) + + ''' + function : Initialize the e-Paper register + parameter: + ''' + def init(self): + if (epdconfig.module_init() != 0): + return -1 + # EPD hardware init start + self.reset() + + self.ReadBusy() + self.send_command(0x12) #SWRESET + self.ReadBusy() + + self.send_command(0x01) #Driver output control + self.send_data(0xf9) + self.send_data(0x00) + self.send_data(0x00) + + self.send_command(0x11) #data entry mode + self.send_data(0x03) + + self.SetWindow(0, 0, self.width-1, self.height-1) + self.SetCursor(0, 0) + + self.send_command(0x3c) + self.send_data(0x05) + + self.send_command(0x21) # Display update control + self.send_data(0x00) + self.send_data(0x80) + + self.send_command(0x18) + self.send_data(0x80) + + self.ReadBusy() + + self.SetLut(self.lut_full_update) + return 0 + + ''' + function : Display images + parameter: + image : Image data + ''' + def getbuffer(self, image): + img = image + imwidth, imheight = img.size + if(imwidth == self.width and imheight == self.height): + img = img.convert('1') + elif(imwidth == self.height and imheight == self.width): + # image has correct dimensions, but needs to be rotated + img = img.rotate(90, expand=True).convert('1') + else: + logger.warning("Wrong image dimensions: must be " + str(self.width) + "x" + str(self.height)) + # return a blank buffer + return [0x00] * (int(self.width/8) * self.height) + + buf = bytearray(img.tobytes('raw')) + return buf + + ''' + function : Sends the image buffer in RAM to e-Paper and displays + parameter: + image : Image data + ''' + def display(self, image): + if self.width%8 == 0: + linewidth = int(self.width/8) + else: + linewidth = int(self.width/8) + 1 + + self.send_command(0x24) + for j in range(0, self.height): + for i in range(0, linewidth): + self.send_data(image[i + j * linewidth]) + self.TurnOnDisplay() + + ''' + function : Sends the image buffer in RAM to e-Paper and partial refresh + parameter: + image : Image data + ''' + def displayPartial(self, image): + if self.width%8 == 0: + linewidth = int(self.width/8) + else: + linewidth = int(self.width/8) + 1 + + epdconfig.digital_write(self.reset_pin, 0) + epdconfig.delay_ms(1) + epdconfig.digital_write(self.reset_pin, 1) + + self.SetLut(self.lut_partial_update) + self.send_command(0x37) + self.send_data(0x00) + self.send_data(0x00) + self.send_data(0x00) + self.send_data(0x00) + self.send_data(0x00) + self.send_data(0x40) + self.send_data(0x00) + self.send_data(0x00) + self.send_data(0x00) + self.send_data(0x00) + + self.send_command(0x3C) #BorderWavefrom + self.send_data(0x80) + + self.send_command(0x22) + self.send_data(0xC0) + self.send_command(0x20) + self.ReadBusy() + + self.SetWindow(0, 0, self.width - 1, self.height - 1) + self.SetCursor(0, 0) + + self.send_command(0x24) # WRITE_RAM + for j in range(0, self.height): + for i in range(0, linewidth): + self.send_data(image[i + j * linewidth]) + self.TurnOnDisplayPart() + + ''' + function : Refresh a base image + parameter: + image : Image data + ''' + def displayPartBaseImage(self, image): + if self.width%8 == 0: + linewidth = int(self.width/8) + else: + linewidth = int(self.width/8) + 1 + + self.send_command(0x24) + for j in range(0, self.height): + for i in range(0, linewidth): + self.send_data(image[i + j * linewidth]) + + self.send_command(0x26) + for j in range(0, self.height): + for i in range(0, linewidth): + self.send_data(image[i + j * linewidth]) + self.TurnOnDisplay() + + ''' + function : Clear screen + parameter: + ''' + def Clear(self, color): + if self.width%8 == 0: + linewidth = int(self.width/8) + else: + linewidth = int(self.width/8) + 1 + # logger.debug(linewidth) + + self.send_command(0x24) + for j in range(0, self.height): + for i in range(0, linewidth): + self.send_data(color) + + self.TurnOnDisplay() + + ''' + function : Enter sleep mode + parameter: + ''' + def sleep(self): + self.send_command(0x10) #enter deep sleep + self.send_data(0x01) + + epdconfig.delay_ms(2000) + epdconfig.module_exit() + +### END OF FILE ### + diff --git a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in9_V2.py b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in9_V2.py index d736c64..76d630e 100644 --- a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in9_V2.py +++ b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in9_V2.py @@ -51,7 +51,7 @@ class EPD: 0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - 0x0A,0x0,0x0,0x0,0x0,0x0,0x2, + 0x0A,0x0,0x0,0x0,0x0,0x0,0x1, 0x1,0x0,0x0,0x0,0x0,0x0,0x0, 0x1,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0, diff --git a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd4in2.py b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd4in2.py index 6fabd7f..08ce91f 100644 --- a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd4in2.py +++ b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd4in2.py @@ -1,5 +1,5 @@ # ***************************************************************************** -# * | File : epd4in2.py +# * | File : epd4in2.py # * | Author : Waveshare team # * | Function : Electronic paper driver # * | Info : @@ -56,167 +56,179 @@ class EPD: self.GRAY2 = GRAY2 self.GRAY3 = GRAY3 #gray self.GRAY4 = GRAY4 #Blackest + self.DATA = [0x00] * 15000 lut_vcom0 = [ - 0x00, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x17, 0x17, 0x00, 0x00, 0x02, - 0x00, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x01, + 0x00, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, ] lut_ww = [ - 0x40, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x17, 0x17, 0x00, 0x00, 0x02, - 0x40, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x90, 0x0F, 0x0F, 0x00, 0x00, 0x01, + 0xA0, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ] lut_bw = [ - 0x40, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x17, 0x17, 0x00, 0x00, 0x02, - 0x40, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x90, 0x0F, 0x0F, 0x00, 0x00, 0x01, + 0xA0, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ] lut_wb = [ - 0x80, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x17, 0x17, 0x00, 0x00, 0x02, - 0x80, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0x50, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xA0, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x90, 0x0F, 0x0F, 0x00, 0x00, 0x01, + 0x50, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ] lut_bb = [ - 0x80, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x17, 0x17, 0x00, 0x00, 0x02, - 0x80, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0x50, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x90, 0x0F, 0x0F, 0x00, 0x00, 0x01, + 0x10, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ] #******************************partial screen update LUT*********************************/ EPD_4IN2_Partial_lut_vcom1 =[ - 0x00 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00, ] + 0x00, 0x01, 0x20, 0x01, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + ] EPD_4IN2_Partial_lut_ww1 =[ - 0x00 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00,] + 0x00, 0x01, 0x20, 0x01, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + ] EPD_4IN2_Partial_lut_bw1 =[ - 0x80 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, ] + 0x20, 0x01, 0x20, 0x01, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + ] EPD_4IN2_Partial_lut_wb1 =[ - 0x40 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, ] + 0x10, 0x01, 0x20, 0x01, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + ] EPD_4IN2_Partial_lut_bb1 =[ - 0x00 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, ] + 0x00, 0x01,0x20, 0x01, 0x00, 0x01, + 0x00, 0x00,0x00, 0x00, 0x00, 0x00, + 0x00, 0x00,0x00, 0x00, 0x00, 0x00, + 0x00, 0x00,0x00, 0x00, 0x00, 0x00, + 0x00, 0x00,0x00, 0x00, 0x00, 0x00, + 0x00, 0x00,0x00, 0x00, 0x00, 0x00, + 0x00, 0x00,0x00, 0x00, 0x00, 0x00, + ] #******************************gray*********************************/ #0~3 gray EPD_4IN2_4Gray_lut_vcom =[ - 0x00 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, - 0x60 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, - 0x00 ,0x14 ,0x00 ,0x00 ,0x00 ,0x01, - 0x00 ,0x13 ,0x0A ,0x01 ,0x00 ,0x01, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 + 0x00 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, + 0x60 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, + 0x00 ,0x14 ,0x00 ,0x00 ,0x00 ,0x01, + 0x00 ,0x13 ,0x0A ,0x01 ,0x00 ,0x01, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ] #R21 EPD_4IN2_4Gray_lut_ww =[ - 0x40 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, - 0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, - 0x10 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, - 0xA0 ,0x13 ,0x01 ,0x00 ,0x00 ,0x01, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x40 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, + 0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, + 0x10 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, + 0xA0 ,0x13 ,0x01 ,0x00 ,0x00 ,0x01, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, ] - #R22H r + #R22H r EPD_4IN2_4Gray_lut_bw =[ - 0x40 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, - 0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, - 0x00 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, - 0x99 ,0x0C ,0x01 ,0x03 ,0x04 ,0x01, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x40 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, + 0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, + 0x00 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, + 0x99 ,0x0C ,0x01 ,0x03 ,0x04 ,0x01, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, ] - #R23H w + #R23H w EPD_4IN2_4Gray_lut_wb =[ - 0x40 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, - 0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, - 0x00 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, - 0x99 ,0x0B ,0x04 ,0x04 ,0x01 ,0x01, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x40 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, + 0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, + 0x00 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, + 0x99 ,0x0B ,0x04 ,0x04 ,0x01 ,0x01, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, ] - #R24H b + #R24H b EPD_4IN2_4Gray_lut_bb =[ - 0x80 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, - 0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, - 0x20 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, - 0x50 ,0x13 ,0x01 ,0x00 ,0x00 ,0x01, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x80 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, + 0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, + 0x20 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, + 0x50 ,0x13 ,0x01 ,0x00 ,0x00 ,0x01, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, ] # Hardware reset def reset(self): epdconfig.digital_write(self.reset_pin, 1) - epdconfig.delay_ms(20) + epdconfig.delay_ms(10) epdconfig.digital_write(self.reset_pin, 0) - epdconfig.delay_ms(5) + epdconfig.delay_ms(10) epdconfig.digital_write(self.reset_pin, 1) - epdconfig.delay_ms(20) + epdconfig.delay_ms(10) epdconfig.digital_write(self.reset_pin, 0) - epdconfig.delay_ms(5) + epdconfig.delay_ms(10) epdconfig.digital_write(self.reset_pin, 1) - epdconfig.delay_ms(20) + epdconfig.delay_ms(10) epdconfig.digital_write(self.reset_pin, 0) - epdconfig.delay_ms(5) + epdconfig.delay_ms(10) epdconfig.digital_write(self.reset_pin, 1) - epdconfig.delay_ms(20) + epdconfig.delay_ms(10) def send_command(self, command): epdconfig.digital_write(self.dc_pin, 0) @@ -238,33 +250,33 @@ class EPD: def set_lut(self): self.send_command(0x20) # vcom - for count in range(0, 44): + for count in range(0, 36): self.send_data(self.lut_vcom0[count]) self.send_command(0x21) # ww -- - for count in range(0, 42): + for count in range(0, 36): self.send_data(self.lut_ww[count]) self.send_command(0x22) # bw r - for count in range(0, 42): + for count in range(0, 36): self.send_data(self.lut_bw[count]) self.send_command(0x23) # wb w - for count in range(0, 42): + for count in range(0, 36): self.send_data(self.lut_bb[count]) self.send_command(0x24) # bb b - for count in range(0, 42): + for count in range(0, 36): self.send_data(self.lut_wb[count]) def Partial_SetLut(self): self.send_command(0x20); - for count in range(0, 44): + for count in range(0, 44): self.send_data(self.EPD_4IN2_Partial_lut_vcom1[count]) self.send_command(0x21); - for count in range(0, 42): + for count in range(0, 42): self.send_data(self.EPD_4IN2_Partial_lut_ww1[count]) self.send_command(0x22); @@ -272,29 +284,29 @@ class EPD: self.send_data(self.EPD_4IN2_Partial_lut_bw1[count]) self.send_command(0x23); - for count in range(0, 42): + for count in range(0, 42): self.send_data(self.EPD_4IN2_Partial_lut_wb1[count]) self.send_command(0x24); - for count in range(0, 42): + for count in range(0, 42): self.send_data(self.EPD_4IN2_Partial_lut_bb1[count]) def Gray_SetLut(self): - self.send_command(0x20) #vcom + self.send_command(0x20) #vcom for count in range(0, 42): self.send_data(self.EPD_4IN2_4Gray_lut_vcom[count]) - self.send_command(0x21) #red not use + self.send_command(0x21) #red not use for count in range(0, 42): self.send_data(self.EPD_4IN2_4Gray_lut_ww[count]) - self.send_command(0x22) #bw r + self.send_command(0x22) #bw r for count in range(0, 42): self.send_data(self.EPD_4IN2_4Gray_lut_bw[count]) - self.send_command(0x23) #wb w + self.send_command(0x23) #wb w for count in range(0, 42): self.send_data(self.EPD_4IN2_4Gray_lut_wb[count]) @@ -302,7 +314,7 @@ class EPD: for count in range(0, 42): self.send_data(self.EPD_4IN2_4Gray_lut_bb[count]) - self.send_command(0x25) #vcom + self.send_command(0x25) #vcom for count in range(0, 42): self.send_data(self.EPD_4IN2_4Gray_lut_ww[count]) @@ -329,64 +341,105 @@ class EPD: self.send_command(0x00) # panel setting self.send_data(0xbf) # KW-BF KWR-AF BWROTP 0f - self.send_data(0x0d) self.send_command(0x30) # PLL setting self.send_data(0x3c) # 3A 100HZ 29 150Hz 39 200HZ 31 171HZ - self.send_command(0x61) # resolution setting + self.send_command(0x61) # resolution setting self.send_data(0x01) self.send_data(0x90) # 128 - self.send_data(0x01) + self.send_data(0x01) self.send_data(0x2c) - self.send_command(0x82) # vcom_DC setting - self.send_data(0x28) + self.send_command(0x82) # vcom_DC setting + self.send_data(0x12) - self.send_command(0X50) # VCOM AND DATA INTERVAL SETTING - self.send_data(0x97) # 97white border 77black border VBDF 17|D7 VBDW 97 VBDB 57 VBDF F7 VBDW 77 VBDB 37 VBDR B7 + self.send_command(0X50) # VCOM AND DATA INTERVAL SETTING + self.send_data(0x97) # 97white border 77black border VBDF 17|D7 VBDW 97 VBDB 57 VBDF F7 VBDW 77 VBDB 37 VBDR B7 self.set_lut() # EPD hardware init end return 0 + def init_Partial(self): + if (epdconfig.module_init() != 0): + return -1 + # EPD hardware init start + self.reset() + + self.send_command(0x01) # POWER SETTING + self.send_data(0x03) # VDS_EN, VDG_EN + self.send_data(0x00) # VCOM_HV, VGHL_LV[1], VGHL_LV[0] + self.send_data(0x2b) # VDH + self.send_data(0x2b) # VDL + + self.send_command(0x06) # boost soft start + self.send_data(0x17) + self.send_data(0x17) + self.send_data(0x17) + + self.send_command(0x04) # POWER_ON + self.ReadBusy() + + self.send_command(0x00) # panel setting + self.send_data(0xbf) # KW-BF KWR-AF BWROTP 0f + + self.send_command(0x30) # PLL setting + self.send_data(0x3c) # 3A 100HZ 29 150Hz 39 200HZ 31 171HZ + + self.send_command(0x61) # resolution setting + self.send_data(0x01) + self.send_data(0x90) # 128 + self.send_data(0x01) + self.send_data(0x2c) + + self.send_command(0x82) # vcom_DC setting + self.send_data(0x12) + + self.send_command(0X50) # VCOM AND DATA INTERVAL SETTING + self.send_data(0x07) # 97white border 77black border VBDF 17|D7 VBDW 97 VBDB 57 VBDF F7 VBDW 77 VBDB 37 VBDR B7 + + self.Partial_SetLut(); + # EPD hardware init end + return 0 + def Init_4Gray(self): if (epdconfig.module_init() != 0): return -1 # EPD hardware init start self.reset() - self.send_command(0x01) #POWER SETTING + self.send_command(0x01) #POWER SETTING self.send_data (0x03) self.send_data (0x00) #VGH=20V,VGL=-20V - self.send_data (0x2b) #VDH=15V - self.send_data (0x2b) #VDL=-15V + self.send_data (0x2b) #VDH=15V + self.send_data (0x2b) #VDL=-15V self.send_data (0x13) self.send_command(0x06) #booster soft start - self.send_data (0x17) #A - self.send_data (0x17) #B - self.send_data (0x17) #C + self.send_data (0x17) #A + self.send_data (0x17) #B + self.send_data (0x17) #C self.send_command(0x04) self.ReadBusy() - self.send_command(0x00) #panel setting - self.send_data(0x3f) #KW-3f KWR-2F BWROTP 0f BWOTP 1f + self.send_command(0x00) #panel setting + self.send_data(0x3f) #KW-3f KWR-2F BWROTP 0f BWOTP 1f - self.send_command(0x30) #PLL setting - self.send_data (0x3c) #100hz + self.send_command(0x30) #PLL setting + self.send_data (0x3c) #100hz - self.send_command(0x61) #resolution setting - self.send_data (0x01) #400 - self.send_data (0x90) - self.send_data (0x01) #300 + self.send_command(0x61) #resolution setting + self.send_data (0x01) #400 + self.send_data (0x90) + self.send_data (0x01) #300 self.send_data (0x2c) - self.send_command(0x82) #vcom_DC setting + self.send_command(0x82) #vcom_DC setting self.send_data (0x12) - self.send_command(0X50) #VCOM AND DATA INTERVAL SETTING + self.send_command(0X50) #VCOM AND DATA INTERVAL SETTING self.send_data(0x97) def getbuffer(self, image): @@ -451,7 +504,7 @@ class EPD: return buf def display(self, image): - self.send_command(0x92); + self.send_command(0x92); self.set_lut(); self.send_command(0x10) for i in range(0, int(self.width * self.height / 8)): @@ -478,40 +531,41 @@ class EPD: if(X_end % 8 != 0): X_end = int(X_end/8)*8+8 - self.Partial_SetLut(); - self.send_command(0x91); #This command makes the display enter partial mode - self.send_command(0x90); #resolution setting + + self.send_command(0x91); #This command makes the display enter partial mode + self.send_command(0x90); #resolution setting self.send_data (int(X_start/256)); self.send_data (int(X_start%256)); #x-start - self.send_data (int(X_end /256)); + self.send_data (int(X_end /256)); self.send_data (int(X_end %256)-1); #x-end self.send_data (int(Y_start/256)); self.send_data (int(Y_start%256)); #y-start - self.send_data (int(Y_end/256)); + self.send_data (int(Y_end/256)); self.send_data (int(Y_end%256)-1); #y-end - self.send_data (0x28); + self.send_data (0x28); - self.send_command(0x10); #writes Old data to SRAM for programming + self.send_command(0x10); #writes Old data to SRAM for programming for j in range(0, int(Y_end - Y_start)): for i in range(0, int(X_end/8) - int(X_start/8)): - self.send_data(Image[(Y_start + j)*Width + int(X_start/8) + i]); + self.send_data(self.DATA[(Y_start + j)*Width + int(X_start/8) + i]); - self.send_command(0x13); #writes New data to SRAM. + self.send_command(0x13); #writes New data to SRAM. for j in range(0, int(Y_end - Y_start)): for i in range(0, int(X_end/8) - int(X_start/8)): self.send_data(~Image[(Y_start + j)*Width + int(X_start/8) + i]); + self.DATA[(Y_start + j)*Width + int(X_start/8) + i] = ~Image[(Y_start + j)*Width + int(X_start/8) + i] - self.send_command(0x12); #DISPLAY REFRESH + self.send_command(0x12); #DISPLAY REFRESH epdconfig.delay_ms(200) #The delay here is necessary, 200uS at least!!! self.ReadBusy() def display_4Gray(self, image): - self.send_command(0x92); + self.send_command(0x92); self.set_lut(); self.send_command(0x10) for i in range(0, int(EPD_WIDTH * EPD_HEIGHT / 8)): # EPD_WIDTH * EPD_HEIGHT / 4 @@ -528,7 +582,7 @@ class EPD: temp3 |= 0x01 #gray1 else: #0x40 temp3 |= 0x00 #gray2 - temp3 <<= 1 + temp3 <<= 1 temp1 <<= 2 temp2 = temp1&0xC0 @@ -539,13 +593,13 @@ class EPD: elif(temp2 == 0x80): temp3 |= 0x01 #gray1 else : #0x40 - temp3 |= 0x00 #gray2 - if(j!=1 or k!=1): + temp3 |= 0x00 #gray2 + if(j!=1 or k!=1): temp3 <<= 1 temp1 <<= 2 self.send_data(temp3) - self.send_command(0x13) + self.send_command(0x13) for i in range(0, int(EPD_WIDTH * EPD_HEIGHT / 8)): #5808*4 46464 temp3=0 @@ -561,7 +615,7 @@ class EPD: temp3 |= 0x00 #gray1 else: #0x40 temp3 |= 0x01 #gray2 - temp3 <<= 1 + temp3 <<= 1 temp1 <<= 2 temp2 = temp1&0xC0 @@ -572,8 +626,8 @@ class EPD: elif(temp2 == 0x80): temp3 |= 0x00 #gray1 else: #0x40 - temp3 |= 0x01 #gray2 - if(j!=1 or k!=1): + temp3 |= 0x01 #gray2 + if(j!=1 or k!=1): temp3 <<= 1 temp1 <<= 2 self.send_data(temp3) diff --git a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd7in5_V2.py b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd7in5_V2.py index 32625fa..b1495ca 100644 --- a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd7in5_V2.py +++ b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd7in5_V2.py @@ -176,24 +176,24 @@ class EPD: # self.send_data(0x3f) #VDH=15V # self.send_data(0x3f) #VDL=-15V - self.send_command(0x01) # power setting - self.send_data(0x17) # 1-0=11: internal power - self.send_data(self.Voltage_Frame_7IN5_V2[6]) # VGH&VGL - self.send_data(self.Voltage_Frame_7IN5_V2[1]) # VSH - self.send_data(self.Voltage_Frame_7IN5_V2[2]) # VSL - self.send_data(self.Voltage_Frame_7IN5_V2[3]) # VSHR + self.send_command(0x01); # power setting + self.send_data(0x17); # 1-0=11: internal power + self.send_data(self.Voltage_Frame_7IN5_V2[6]); # VGH&VGL + self.send_data(self.Voltage_Frame_7IN5_V2[1]); # VSH + self.send_data(self.Voltage_Frame_7IN5_V2[2]); # VSL + self.send_data(self.Voltage_Frame_7IN5_V2[3]); # VSHR - self.send_command(0x82) # VCOM DC Setting - self.send_data(self.Voltage_Frame_7IN5_V2[4]) # VCOM + self.send_command(0x82); # VCOM DC Setting + self.send_data(self.Voltage_Frame_7IN5_V2[4]); # VCOM - self.send_command(0x06) # Booster Setting - self.send_data(0x27) - self.send_data(0x27) - self.send_data(0x2F) - self.send_data(0x17) + self.send_command(0x06); # Booster Setting + self.send_data(0x27); + self.send_data(0x27); + self.send_data(0x2F); + self.send_data(0x17); - self.send_command(0x30) # OSC Setting - self.send_data(self.Voltage_Frame_7IN5_V2[0]) # 2-0=100: N=4 5-3=111: M=7 3C=50Hz 3A=100HZ + self.send_command(0x30); # OSC Setting + self.send_data(self.Voltage_Frame_7IN5_V2[0]); # 2-0=100: N=4 ; 5-3=111: M=7 ; 3C=50Hz 3A=100HZ self.send_command(0x04) #POWER ON epdconfig.delay_ms(100) @@ -218,11 +218,11 @@ class EPD: self.send_command(0X60) #TCON SETTING self.send_data(0x22) - self.send_command(0x65) # Resolution setting - self.send_data(0x00) - self.send_data(0x00) # 800*480 - self.send_data(0x00) - self.send_data(0x00) + self.send_command(0x65); # Resolution setting + self.send_data(0x00); + self.send_data(0x00); # 800*480 + self.send_data(0x00); + self.send_data(0x00); self.SetLut(self.LUT_VCOM_7IN5_V2, self.LUT_WW_7IN5_V2, self.LUT_BW_7IN5_V2, self.LUT_WB_7IN5_V2, self.LUT_BB_7IN5_V2) # EPD hardware init end diff --git a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd7in5b_V2.py b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd7in5b_V2.py index bdbd7c5..df09ae3 100644 --- a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd7in5b_V2.py +++ b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd7in5b_V2.py @@ -4,8 +4,8 @@ # * | Function : Electronic paper driver # * | Info : # *---------------- -# * | This version: V4.1 -# * | Date : 2020-11-30 +# * | This version: V4.2 +# * | Date : 2022-01-08 # # | Info : python demo # ----------------------------------------------------------------------------- # Permission is hereby granted, free of charge, to any person obtaining a copy @@ -66,7 +66,13 @@ class EPD: epdconfig.digital_write(self.cs_pin, 0) epdconfig.spi_writebyte([data]) epdconfig.digital_write(self.cs_pin, 1) - + + def send_data2(self, data): #faster + epdconfig.digital_write(self.dc_pin, 1) + epdconfig.digital_write(self.cs_pin, 0) + epdconfig.SPI.writebytes2(data) + epdconfig.digital_write(self.cs_pin, 1) + def ReadBusy(self): logger.debug("e-Paper busy") self.send_command(0x71) @@ -127,50 +133,47 @@ class EPD: return 0 def getbuffer(self, image): - # logger.debug("bufsiz = ",int(self.width/8) * self.height) - buf = [0xFF] * (int(self.width/8) * self.height) - image_monocolor = image.convert('1') - imwidth, imheight = image_monocolor.size - pixels = image_monocolor.load() - logger.debug('imwidth = %d imheight = %d ',imwidth, imheight) + img = image + imwidth, imheight = img.size if(imwidth == self.width and imheight == self.height): - logger.debug("Horizontal") - for y in range(imheight): - for x in range(imwidth): - # Set the bits for the column of pixels at the current position. - if pixels[x, y] == 0: - buf[int((x + y * self.width) / 8)] &= ~(0x80 >> (x % 8)) + img = img.convert('1') elif(imwidth == self.height and imheight == self.width): - logger.debug("Vertical") - for y in range(imheight): - for x in range(imwidth): - newx = y - newy = self.height - x - 1 - if pixels[x, y] == 0: - buf[int((newx + newy*self.width) / 8)] &= ~(0x80 >> (y % 8)) + # image has correct dimensions, but needs to be rotated + img = img.rotate(90, expand=True).convert('1') + else: + logger.warning("Wrong image dimensions: must be " + str(self.width) + "x" + str(self.height)) + # return a blank buffer + return [0x00] * (int(self.width/8) * self.height) + + buf = bytearray(img.tobytes('raw')) + # The bytes need to be inverted, because in the PIL world 0=black and 1=white, but + # in the e-paper world 0=white and 1=black. + for i in range(len(buf)): + buf[i] ^= 0xFF return buf def display(self, imageblack, imagered): self.send_command(0x10) - for i in range(0, int(self.width * self.height / 8)): - self.send_data(imageblack[i]); - + # The black bytes need to be inverted back from what getbuffer did + for i in range(len(imageblack)): + imageblack[i] ^= 0xFF + self.send_data2(imageblack) + self.send_command(0x13) - for i in range(0, int(self.width * self.height / 8)): - self.send_data(~imagered[i]); + self.send_data2(imagered) self.send_command(0x12) epdconfig.delay_ms(100) self.ReadBusy() def Clear(self): + buf = [0x00] * (int(self.width/8) * self.height) + buf2 = [0xff] * (int(self.width/8) * self.height) self.send_command(0x10) - for i in range(0, int(self.width * self.height / 8)): - self.send_data(0xff) + self.send_data2(buf2) self.send_command(0x13) - for i in range(0, int(self.width * self.height / 8)): - self.send_data(0x00) + self.send_data2(buf) self.send_command(0x12) epdconfig.delay_ms(100) diff --git a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epdconfig.py b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epdconfig.py index 37fedd3..93efbaf 100644 --- a/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epdconfig.py +++ b/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epdconfig.py @@ -81,6 +81,6 @@ def module_exit(): GPIO.output(RST_PIN, 0) GPIO.output(DC_PIN, 0) - GPIO.cleanup() + GPIO.cleanup([RST_PIN, DC_PIN, CS_PIN, BUSY_PIN]) ### END OF FILE ### \ No newline at end of file diff --git a/RaspberryPi_JetsonNano/python/pic/01.bmp b/RaspberryPi_JetsonNano/python/pic/01.bmp new file mode 100644 index 0000000..de70694 Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/01.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/4.2-B.bmp b/RaspberryPi_JetsonNano/python/pic/4.2-B.bmp new file mode 100644 index 0000000..4b4d4c2 Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/4.2-B.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/4.2-R.bmp b/RaspberryPi_JetsonNano/python/pic/4.2-R.bmp new file mode 100644 index 0000000..bb39bf4 Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/4.2-R.bmp differ diff --git a/RaspberryPi_JetsonNano/python/pic/42.bmp b/RaspberryPi_JetsonNano/python/pic/42.bmp new file mode 100644 index 0000000..301685d Binary files /dev/null and b/RaspberryPi_JetsonNano/python/pic/42.bmp differ diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.liuyujian b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.liuyujian new file mode 100644 index 0000000..9eefeab --- /dev/null +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.liuyujian @@ -0,0 +1,1910 @@ + + + + -6.1 + +
### uVision Project, (C) Keil Software
+ + + + + + 38003 + Registers + 188 122 + + + 346 + Code Coverage + 1410 160 + + + 204 + Performance Analyzer + 1570 + + + + + + 35141 + Event Statistics + + 200 50 700 + + + 1506 + Symbols + + 106 106 106 + + + 1936 + Watch 1 + + 200 133 133 + + + 1937 + Watch 2 + + 200 133 133 + + + 1935 + Call Stack + Locals + + 200 133 133 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser + 500 + 300 + + + + + + + + 1 + 1 + 0 + 0 + -1 + + + + + + + 44 + 2 + 3 + + -32000 + -32000 + + + -1 + -1 + + + 304 + 1292 + 2330 + 1046 + + + + 0 + + 731 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000005000000010000000100000048453A5CCFEEC4BF5C652D50617065725C436F64655C342E325C624B5C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF5B453A5CCFEEC4BF5C652D50617065725C436F64655C342E325C624B5C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C557365725C4578616D706C65735C4550445F34696E325F746573742E63000000000F4550445F34696E325F746573742E6300000000FFDC7800FFFFFFFF55453A5CCFEEC4BF5C652D50617065725C436F64655C342E325C624B5C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C557365725C652D50617065725C4550445F34696E322E68000000000A4550445F34696E322E68000000009CC1B600FFFFFFFF55453A5CCFEEC4BF5C652D50617065725C436F64655C342E325C624B5C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C557365725C652D50617065725C4550445F34696E322E63000000000A4550445F34696E322E6300000000BCA8E100FFFFFFFF55453A5CCFEEC4BF5C652D50617065725C436F64655C342E325C624B5C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C557365725C652D50617065725C4550445F37696E352E63000000000A4550445F37696E352E63000000009CC1B600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000004401000066000000000A00009B040000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 440100004F0000007007000015010000 + + + 16 + 5A010000710100001205000037020000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000003D0100006B040000 + + + 16 + 5A010000710100009A02000084020000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000003D0100006B040000 + + + 16 + 5A01000071010000D602000089040000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000000503000070070000CB030000 + + + 16 + 5A010000710100001205000037020000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000080300006D0700009E030000 + + + 16 + 5A010000710100001205000037020000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000080300006D0700009E030000 + + + 16 + 5A010000710100001205000037020000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000080300006D0700009E030000 + + + 16 + 5A010000710100001205000037020000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 33060000660000006D07000049010000 + + + 16 + 5A010000710100009A02000084020000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 47010000660000006D070000FC000000 + + + 16 + 5A010000710100001205000037020000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000080300006D070000B2030000 + + + 16 + 5A010000710100009A02000084020000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000080300006D0700009E030000 + + + 16 + 5A010000710100009A02000084020000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000080300006D0700009E030000 + + + 16 + 5A010000710100009A02000084020000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000080300006D0700009E030000 + + + 16 + 5A010000710100001205000037020000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000080300006D0700009E030000 + + + 16 + 5A010000710100001205000037020000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000080300006D0700009E030000 + + + 16 + 5A010000710100001205000037020000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000080300006D0700009E030000 + + + 16 + 5A010000710100001205000037020000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000003D0100006B040000 + + + 16 + 5A01000071010000D602000089040000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000003D0100006B040000 + + + 16 + 5A01000071010000D602000089040000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000009C040000000A00004E050000 + + + 16 + 5A010000710100001205000037020000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 00000000F102000070070000CB030000 + + + 16 + 5A010000710100001205000037020000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000009F0400006D07000035050000 + + + 16 + 5A010000710100001205000037020000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 44010000630000007007000015010000 + + + 16 + 5A010000710100001205000037020000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 47010000660000006D070000FC000000 + + + 16 + 5A010000710100001205000037020000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 30060000630000007007000001030000 + + + 16 + 5A010000710100009A02000084020000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000000503000070070000B7030000 + + + 16 + 5A010000710100001205000037020000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 47010000660000006D070000FC000000 + + + 16 + 5A010000710100001205000037020000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 47010000660000006D070000FC000000 + + + 16 + 5A010000710100001205000037020000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 44010000630000007007000015010000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 47010000660000006D070000FC000000 + + + 16 + 5A010000710100001205000037020000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000660000003D010000B2030000 + + + 16 + 5A01000071010000D602000089040000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000009C040000700700004E050000 + + + 16 + 5A010000710100001205000037020000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000009F0400006D07000035050000 + + + 16 + 5A01000071010000D602000089040000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000080300006D0700009E030000 + + + 16 + 5A010000710100009A02000084020000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000080300006D0700009E030000 + + + 16 + 5A010000710100009A02000084020000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000009F0400006D07000035050000 + + + 16 + 5A01000071010000D602000089040000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000009F0400006D07000035050000 + + + 16 + 5A01000071010000D602000089040000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 47010000660000006D070000FC000000 + + + 16 + 5A010000710100001205000037020000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 33060000660000006D0700001E020000 + + + 16 + 5A010000710100009A02000084020000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 0000000000000000C40300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000004E050000000A000061050000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000080300006D0700009E030000 + + + 16 + 5A010000710100009A02000084020000 + + + + 3312 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF44010000150100007007000019010000000000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E6500200000000000005A010000710100001205000037020000440100004F00000070070000150100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF2C0600004F0000003006000001030000000000000200001004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000005A010000710100009A02000084020000300600004F000000700700000103000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF400100004F0000004401000084040000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000005A010000710100009A02000084020000000000004F00000040010000840400000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000ED02000070070000F102000000000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000800000000000005A010000710100009A0200008402000000000000F102000070070000CB03000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFB8030000F1020000BC030000CB03000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000084040000000A000088040000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000005A0100007101000012050000370200000000000088040000000A00004E0500000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2529 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000076F6C644461746196000000000000001400076F6C6444617461076C75745F626231036C75740B4550445F7374616E646279046C7574310D6C63645F63686B737461747573054465627567114153373334315F436F6E74726F6C4C656411434D445F55505F494D4147455F434F44450C525053444F574E494D41474511525053474554454E524F4C4C434F554E540D525053474554454D505459494409525053564552494659095250535345415243480A52505344454C434841520B52505347454E4552415445085250534D455247450C52505353544F5245434841520C52707353746F7265436865720C434D445F47454E45524154450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000000000000010000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65FF7F0000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 976 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000086570642D64656D6F96000000000000000100086570642D64656D6F000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64FF7F0000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000000000000100000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000000000000100000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000000000000100000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000000000000100000001000000000000000000000001000000000000000000054465627567FF7F0000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 2560 + 1440 + + + + + + 1 + 0 + + 100 + 1 + + ../Src/main.c + 26 + 100 + 112 + 1 + + 0 + + + ..\User\Examples\EPD_4in2_test.c + 5 + 51 + 97 + 1 + + 0 + + + ..\User\e-Paper\EPD_4in2.h + 22 + 69 + 118 + 1 + + 0 + + + ..\User\e-Paper\EPD_4in2.c + 25 + 430 + 469 + 1 + + 0 + + + ..\User\e-Paper\EPD_7in5.c + 0 + 46 + 1 + 1 + + 0 + + + + +
diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.qiumingsong b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.qiumingsong index 6ae885d..57e68da 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.qiumingsong +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvguix.qiumingsong @@ -80,8 +80,8 @@ 44 - 0 - 1 + 2 + 3 -1 -1 @@ -91,17 +91,17 @@ -1 - 139 - 609 - 2298 - 1304 + 123 + 2976 + 4866 + 1257 0 - 250 - 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000001000000000000000100000036453A5C6769746875625C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C5372635C6D61696E2E6300000000066D61696E2E6300000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD50001000000000000000200000085030000FA000000F2080000BC030000 + 358 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000002000000010000000100000036453A5C6769746875625C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C5372635C6D61696E2E6300000000066D61696E2E6300000000FFDC7800FFFFFFFF4A453A5C6769746875625C452D50617065725F636F64655C53544D33325C53544D33322D463130335A4554365C557365725C4578616D706C65735C4550445F32696E36365F746573742E6300000000104550445F32696E36365F746573742E6300000000F0A0A100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000001C0B0000670000000014000024040000 @@ -124,7 +124,7 @@ 16 - AD030000FA000000D9090000C0010000 + 440B000067000000701100002D010000 @@ -140,7 +140,7 @@ 0 16 - 030000006D00000015010000F6020000 + 030000006D00000015010000F1030000 16 @@ -160,7 +160,7 @@ 0 16 - 030000006D00000015010000F6020000 + 030000006D00000015010000F1030000 16 @@ -440,7 +440,7 @@ 0 16 - 030000006D00000015010000F6020000 + 030000006D00000015010000F1030000 16 @@ -460,7 +460,7 @@ 0 16 - 030000006D00000015010000F6020000 + 030000006D00000015010000F1030000 16 @@ -480,7 +480,7 @@ 0 16 - 00000000300300008906000050040000 + 000000002B040000000A00004B050000 16 @@ -520,7 +520,7 @@ 0 16 - 03000000330300008606000034040000 + 030000002E040000FD0900002F050000 16 @@ -1140,7 +1140,7 @@ 0 16 - 030000006D00000015010000F6020000 + 030000006D00000015010000F1030000 16 @@ -1160,7 +1160,7 @@ 0 16 - 03000000330300008606000034040000 + 030000002E040000FD0900002F050000 16 @@ -1180,7 +1180,7 @@ 0 16 - 03000000330300008606000034040000 + 030000002E040000FD0900002F050000 16 @@ -1240,7 +1240,7 @@ 0 16 - 03000000330300008606000034040000 + 030000002E040000FD0900002F050000 16 @@ -1260,7 +1260,7 @@ 0 16 - 03000000330300008606000034040000 + 030000002E040000FD0900002F050000 16 @@ -1720,7 +1720,7 @@ 0 16 - 00000000500400008906000066040000 + 000000004B050000000A000061050000 16 @@ -1789,14 +1789,14 @@ 3312 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF4401000016010000700700001A010000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000AD030000FA000000D9090000C0010000440100005000000070070000160100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF2C0600005000000030060000FE020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C300000180004000000000000099080000FA000000D9090000A8030000300600005000000070070000FE02000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF18010000500000001C0100001203000001000000020000100400000001000000C2FEFFFFB5030000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000069020000FA00000081030000BC030000000000005000000018010000120300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000E402000070070000E802000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000800000000000006902000092030000D90900007204000000000000E802000070070000C803000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFB8030000E8020000BC030000C803000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000012030000890600001603000001000000010000100400000001000000DDFBFFFFC4000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000069020000C0030000F2080000FA040000000000001603000089060000500400000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF4401000016010000700700001A010000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000440B000067000000701100002D010000440100005000000070070000160100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF2C0600005000000030060000FE020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C300000180004000000000000030100000670000007011000015030000300600005000000070070000FE02000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF18010000500000001C0100000D04000001000000020000100400000001000000C2FEFFFFB5030000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000000A000067000000180B0000240400000000000050000000180100000D0400000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000E402000070070000E802000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000A0000FF02000070110000DF03000000000000E802000070070000C803000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFB8030000E8020000BC030000C803000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000000D040000000A00001104000001000000010000100400000001000000DDFBFFFFC4000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000A00002804000000140000620500000000000011040000000A00004B0500000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File - 2844 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000972657475726E20353B960000000000000012000972657475726E20353B0D67756C496D67427566416464720B4954383935315F3842505008486F7374496E69740A67704672616D654275660554427974650A4550445F35494E3635460C4550445F32696E37625F5632094550445F32494E3742036C7574115049435F646973706C61795F436C65616E0B7069635F646973706C61790C4550445F696E69745F4F5450104550445F3132696E34385F5265736574144550445F4D314D325F53656E64436F6D6D616E64184550445F4D3153314D3253325F53656E64436F6D6D616E64094550445F52657365740943545F5344415F494E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + 2560 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000094E46435254585F696496000000000000000100094E46435254585F696400000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 1423 @@ -1828,7 +1828,7 @@ Debug 2373 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 898 @@ -3593,12 +3593,21 @@ 0 100 - 0 + 1 ../Src/main.c - 2 - 91 - 100 + 13 + 88 + 122 + 1 + + 0 + + + ..\User\Examples\EPD_2in66_test.c + 34 + 39 + 56 1 0 diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx index d2c4958..c02549a 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvoptx @@ -145,7 +145,7 @@ 0 ST-LINKIII-KEIL_SWO - -U38FF6D064246373030270457 -O2254 -SF1800 -C0 -A0 -I0 -HNlocalhost -HP7184 -P2 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F10x_512 -FS08000000 -FL080000 -FP0($$Device:STM32F103ZE$Flash\STM32F10x_512.FLM) + -U50FF6E066675545724371487 -O2254 -SF1800 -C0 -A0 -I0 -HNlocalhost -HP7184 -P2 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103ZE$Flash\STM32F10x_512.FLM) @@ -234,6 +234,7 @@ 1 + 0 0 2 10000000 @@ -243,7 +244,7 @@ Application/MDK-ARM - 1 + 0 0 0 0 @@ -343,7 +344,7 @@ Examples - 1 + 0 0 0 0 @@ -546,6 +547,18 @@ 0 0 0 + ..\User\Examples\EPD_2in13_V3_test.c + EPD_2in13_V3_test.c + 0 + 0 + + + 3 + 25 + 1 + 0 + 0 + 0 ..\User\Examples\EPD_2in13b_V3_test.c EPD_2in13b_V3_test.c 0 @@ -553,7 +566,7 @@ 3 - 25 + 26 1 0 0 @@ -565,7 +578,7 @@ 3 - 26 + 27 1 0 0 @@ -577,7 +590,7 @@ 3 - 27 + 28 1 0 0 @@ -589,7 +602,7 @@ 3 - 28 + 29 1 0 0 @@ -601,7 +614,7 @@ 3 - 29 + 30 1 0 0 @@ -613,7 +626,7 @@ 3 - 30 + 31 1 0 0 @@ -625,7 +638,7 @@ 3 - 31 + 32 1 0 0 @@ -637,7 +650,7 @@ 3 - 32 + 33 1 0 0 @@ -649,7 +662,7 @@ 3 - 33 + 34 1 0 0 @@ -661,7 +674,7 @@ 3 - 34 + 35 1 0 0 @@ -673,7 +686,7 @@ 3 - 35 + 36 1 0 0 @@ -685,7 +698,7 @@ 3 - 36 + 37 1 0 0 @@ -697,7 +710,7 @@ 3 - 37 + 38 1 0 0 @@ -709,7 +722,7 @@ 3 - 38 + 39 1 0 0 @@ -721,7 +734,7 @@ 3 - 39 + 40 1 0 0 @@ -733,7 +746,7 @@ 3 - 40 + 41 1 0 0 @@ -745,7 +758,7 @@ 3 - 41 + 42 1 0 0 @@ -757,7 +770,7 @@ 3 - 42 + 43 1 0 0 @@ -769,7 +782,7 @@ 3 - 43 + 44 1 0 0 @@ -781,7 +794,7 @@ 3 - 44 + 45 1 0 0 @@ -793,7 +806,7 @@ 3 - 45 + 46 1 0 0 @@ -813,7 +826,7 @@ 0 4 - 46 + 47 1 0 0 @@ -825,7 +838,7 @@ 4 - 47 + 48 1 0 0 @@ -837,7 +850,7 @@ 4 - 48 + 49 1 0 0 @@ -849,7 +862,7 @@ 4 - 49 + 50 1 0 0 @@ -861,7 +874,7 @@ 4 - 50 + 51 1 0 0 @@ -873,7 +886,7 @@ 4 - 51 + 52 1 0 0 @@ -885,7 +898,7 @@ 4 - 52 + 53 1 0 0 @@ -897,7 +910,7 @@ 4 - 53 + 54 1 0 0 @@ -909,7 +922,7 @@ 4 - 54 + 55 1 0 0 @@ -921,7 +934,7 @@ 4 - 55 + 56 1 0 0 @@ -933,7 +946,7 @@ 4 - 56 + 57 1 0 0 @@ -945,7 +958,7 @@ 4 - 57 + 58 1 0 0 @@ -957,7 +970,7 @@ 4 - 58 + 59 1 0 0 @@ -969,7 +982,7 @@ 4 - 59 + 60 1 0 0 @@ -981,7 +994,7 @@ 4 - 60 + 61 1 0 0 @@ -993,7 +1006,7 @@ 4 - 61 + 62 1 0 0 @@ -1005,7 +1018,19 @@ 4 - 62 + 63 + 1 + 0 + 0 + 0 + ..\User\e-Paper\EPD_2in13_V3.c + EPD_2in13_V3.c + 0 + 0 + + + 4 + 64 1 0 0 @@ -1017,7 +1042,7 @@ 4 - 63 + 65 1 0 0 @@ -1029,7 +1054,7 @@ 4 - 64 + 66 1 0 0 @@ -1041,7 +1066,7 @@ 4 - 65 + 67 1 0 0 @@ -1053,7 +1078,7 @@ 4 - 66 + 68 1 0 0 @@ -1065,7 +1090,7 @@ 4 - 67 + 69 1 0 0 @@ -1077,7 +1102,7 @@ 4 - 68 + 70 1 0 0 @@ -1089,7 +1114,7 @@ 4 - 69 + 71 1 0 0 @@ -1101,7 +1126,7 @@ 4 - 70 + 72 1 0 0 @@ -1113,7 +1138,7 @@ 4 - 71 + 73 1 0 0 @@ -1125,7 +1150,7 @@ 4 - 72 + 74 1 0 0 @@ -1137,7 +1162,7 @@ 4 - 73 + 75 1 0 0 @@ -1149,7 +1174,7 @@ 4 - 74 + 76 1 0 0 @@ -1161,7 +1186,7 @@ 4 - 75 + 77 1 0 0 @@ -1173,7 +1198,7 @@ 4 - 76 + 78 1 0 0 @@ -1185,7 +1210,7 @@ 4 - 77 + 79 1 0 0 @@ -1197,7 +1222,7 @@ 4 - 78 + 80 1 0 0 @@ -1209,7 +1234,7 @@ 4 - 79 + 81 1 0 0 @@ -1221,7 +1246,7 @@ 4 - 80 + 82 1 0 0 @@ -1233,7 +1258,7 @@ 4 - 81 + 83 1 0 0 @@ -1245,7 +1270,7 @@ 4 - 82 + 84 1 0 0 @@ -1265,7 +1290,7 @@ 0 5 - 83 + 85 1 0 0 @@ -1285,7 +1310,7 @@ 0 6 - 84 + 86 1 0 0 @@ -1305,7 +1330,7 @@ 0 7 - 85 + 87 1 0 0 @@ -1317,7 +1342,7 @@ 7 - 86 + 88 1 0 0 @@ -1329,7 +1354,7 @@ 7 - 87 + 89 1 0 0 @@ -1341,7 +1366,7 @@ 7 - 88 + 90 1 0 0 @@ -1353,7 +1378,7 @@ 7 - 89 + 91 1 0 0 @@ -1365,7 +1390,7 @@ 7 - 90 + 92 1 0 0 @@ -1377,7 +1402,7 @@ 7 - 91 + 93 1 0 0 @@ -1397,7 +1422,7 @@ 0 8 - 92 + 94 5 0 0 @@ -1409,7 +1434,7 @@ 8 - 93 + 95 5 0 0 @@ -1429,7 +1454,7 @@ 0 9 - 94 + 96 1 0 0 @@ -1449,7 +1474,7 @@ 0 10 - 95 + 97 1 0 0 @@ -1461,7 +1486,7 @@ 10 - 96 + 98 1 0 0 @@ -1473,7 +1498,7 @@ 10 - 97 + 99 1 0 0 @@ -1485,7 +1510,7 @@ 10 - 98 + 100 1 0 0 @@ -1497,7 +1522,7 @@ 10 - 99 + 101 1 0 0 @@ -1509,7 +1534,7 @@ 10 - 100 + 102 1 0 0 @@ -1521,7 +1546,7 @@ 10 - 101 + 103 1 0 0 @@ -1533,7 +1558,7 @@ 10 - 102 + 104 1 0 0 @@ -1545,7 +1570,7 @@ 10 - 103 + 105 1 0 0 @@ -1557,7 +1582,7 @@ 10 - 104 + 106 1 0 0 @@ -1569,7 +1594,7 @@ 10 - 105 + 107 1 0 0 @@ -1581,7 +1606,7 @@ 10 - 106 + 108 1 0 0 @@ -1593,7 +1618,7 @@ 10 - 107 + 109 1 0 0 @@ -1605,7 +1630,7 @@ 10 - 108 + 110 1 0 0 @@ -1617,7 +1642,7 @@ 10 - 109 + 111 1 0 0 diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvprojx b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvprojx index 149f786..2609c26 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvprojx +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo.uvprojx @@ -16,7 +16,7 @@ STM32F103ZE STMicroelectronics - Keil.STM32F1xx_DFP.2.3.0 + Keil.STM32F1xx_DFP.2.1.0 http://www.keil.com/pack/ IRAM(0x20000000-0x2000FFFF) IROM(0x8000000-0x807FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") @@ -184,6 +184,7 @@ 0 0 0 + 0 0 0 8 @@ -506,6 +507,11 @@ 1 ..\User\Examples\EPD_2in13_V2_test.c + + EPD_2in13_V3_test.c + 1 + ..\User\Examples\EPD_2in13_V3_test.c + EPD_2in13b_V3_test.c 1 @@ -701,6 +707,11 @@ 1 ..\User\e-Paper\EPD_2in13_V2.c + + EPD_2in13_V3.c + 1 + ..\User\e-Paper\EPD_2in13_V3.c + EPD_2in13bc.c 1 diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm index d6a39b6..537d1e6 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.build_log.htm @@ -3,57 +3,61 @@
 

µVision Build Log

Tool Versions:

-IDE-Version: ¦ÌVision V5.25.2.0 +IDE-Version: ¦ÌVision V5.26.2.0 Copyright (C) 2018 ARM Ltd and ARM Germany GmbH. All rights reserved. -License Information: ass ass, ass, LIC=JL2UH-W872P-CJR6Z-JYZTW-ESB48-R6YF4 +License Information: , , LIC=RC93N-YLJYL-JJH6S-LI3Z1-D1AV2-99PL8 Tool Versions: -Toolchain: MDK-ARM Plus Version: 5.25.2.0 -Toolchain Path: D:\Program Files\keil5\ARM\ARMCC\Bin +Toolchain: MDK-ARM Plus Version: 5.26.2.0 +Toolchain Path: D:\KEIL\azwz\ARM\ARMCC\Bin C Compiler: Armcc.exe V5.06 update 6 (build 750) Assembler: Armasm.exe V5.06 update 6 (build 750) Linker/Locator: ArmLink.exe V5.06 update 6 (build 750) Library Manager: ArmAr.exe V5.06 update 6 (build 750) Hex Converter: FromElf.exe V5.06 update 6 (build 750) -CPU DLL: SARMCM3.DLL V5.25.2.0 -Dialog DLL: DCM.DLL V1.17.1.0 -Target DLL: STLink\ST-LINKIII-KEIL_SWO.dll V3.0.1.0 -Dialog DLL: TCM.DLL V1.35.1.0 +CPU DLL: SARMCM3.DLL V5.26.2.0 +Dialog DLL: DCM.DLL V1.17.2.0 +Target DLL: STLink\ST-LINKIII-KEIL_SWO.dll V3.0.5.0 +Dialog DLL: TCM.DLL V1.36.1.0

Project:

-E:\github\E-Paper_code\STM32\STM32-F103ZET6\MDK-ARM\epd-demo.uvprojx -Project File Date: 07/19/2021 +E:\ÏîÄ¿\e-Paper\Code\4.2\bK\E-Paper_code\STM32\STM32-F103ZET6\MDK-ARM\epd-demo.uvprojx +Project File Date: 01/19/2022

Output:

-*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\Program Files\keil5\ARM\ARMCC\Bin' +*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\KEIL\azwz\ARM\ARMCC\Bin' Build target 'epd-demo' -compiling main.c... +compiling EPD_4in2_test.c... +compiling EPD_4in2.c... +..\User\e-Paper\EPD_4in2.c(612): warning: #550-D: variable "Height" was set but never used + UWORD Width, Height; +..\User\e-Paper\EPD_4in2.c: 1 warning, 0 errors linking... -Program Size: Code=18544 RO-data=360 RW-data=20 ZI-data=4252 +Program Size: Code=25928 RO-data=56420 RW-data=68 ZI-data=56140 FromELF: creating hex file... -"epd-demo\epd-demo.axf" - 0 Error(s), 0 Warning(s). +"epd-demo\epd-demo.axf" - 0 Error(s), 1 Warning(s).

Software Packages used:

Package Vendor: ARM - http://www.keil.com/pack/ARM.CMSIS.5.7.0.pack - ARM.CMSIS.5.7.0 + http://www.keil.com/pack/ARM.CMSIS.5.4.0.pack + ARM.CMSIS.5.4.0 CMSIS (Cortex Microcontroller Software Interface Standard) - * Component: CORE Version: 5.4.0 + * Component: CORE Version: 5.1.2 Package Vendor: Keil - http://www.keil.com/pack/Keil.STM32F1xx_DFP.2.3.0.pack - Keil.STM32F1xx_DFP.2.3.0 + http://www.keil.com/pack/Keil.STM32F1xx_DFP.2.1.0.pack + Keil.STM32F1xx_DFP.2.1.0 STMicroelectronics STM32F1 Series Device Support, Drivers and Examples

Collection of Component include folders:

.\RTE\_epd-demo - D:\Program Files\keil5\ARM\PACK\ARM\CMSIS\5.7.0\CMSIS\Core\Include - D:\Program Files\keil5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include + D:\KEIL\azwz\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include + D:\KEIL\azwz\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include

Collection of Component Files used:

- * Component: ARM::CMSIS:CORE:5.4.0 + * Component: ARM::CMSIS:CORE:5.1.2 Build Time Elapsed: 00:00:03
diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm index 04e31f0..a116a73 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm +++ b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.htm @@ -3,11 +3,11 @@ Static Call Graph - [epd-demo\epd-demo.axf]

Static Call Graph for image epd-demo\epd-demo.axf


-

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Mon Jul 19 11:44:54 2021 +

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Wed Jan 19 17:15:55 2022

-

Maximum Stack Usage = 124 bytes + Unknown(Cycles, Untraceable Function Pointers)

+

Maximum Stack Usage = 752 bytes + Unknown(Cycles, Untraceable Function Pointers)

Call chain for Maximum Stack Depth:

-main ⇒ SystemClock_Config ⇒ HAL_RCC_ClockConfig ⇒ HAL_InitTick ⇒ HAL_NVIC_SetPriority +main ⇒ EPD_4in2_test ⇒ Paint_DrawNum ⇒ Paint_DrawString_EN ⇒ Paint_DrawChar ⇒ Paint_SetPixel ⇒ __2printf

Mutually Recursive functions @@ -133,25 +133,25 @@ Global Symbols

__main (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000))
[Address Reference Count : 1]

  • startup_stm32f103xe.o(.text)
-

_main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001)) +

_main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))

_main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))

[Calls]

  • >>   __scatterload
-

__main_after_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) +

__main_after_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))

[Called By]

  • >>   __scatterload
-

_main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) +

_main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) -

_main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) +

_main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) -

_main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) +

_main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) -

__rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D)) +

__rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D)) -

__rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F)) +

__rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F))

Reset_Handler (Thumb, 8 bytes, Stack size 0 bytes, startup_stm32f103xe.o(.text))
[Address Reference Count : 1]

  • startup_stm32f103xe.o(RESET) @@ -354,7 +354,7 @@ Global Symbols

SystemClock_Config (Thumb, 88 bytes, Stack size 72 bytes, main.o(.text)) -

[Stack]

  • Max Depth = 124
  • Call Chain = SystemClock_Config ⇒ HAL_RCC_ClockConfig ⇒ HAL_InitTick ⇒ HAL_NVIC_SetPriority +

    [Stack]
    • Max Depth = 124
    • Call Chain = SystemClock_Config ⇒ HAL_RCC_ClockConfig ⇒ HAL_RCC_GetSysClockFreq

    [Calls]
    • >>   HAL_RCC_OscConfig
    • >>   HAL_RCC_ClockConfig @@ -364,14 +364,15 @@ Global Symbols
      [Called By]
      • >>   main
      -

      main (Thumb, 32 bytes, Stack size 0 bytes, main.o(.text)) -

      [Stack]

      • Max Depth = 124
      • Call Chain = main ⇒ SystemClock_Config ⇒ HAL_RCC_ClockConfig ⇒ HAL_InitTick ⇒ HAL_NVIC_SetPriority +

        main (Thumb, 36 bytes, Stack size 0 bytes, main.o(.text)) +

        [Stack]

        • Max Depth = 752
        • Call Chain = main ⇒ EPD_4in2_test ⇒ Paint_DrawNum ⇒ Paint_DrawString_EN ⇒ Paint_DrawChar ⇒ Paint_SetPixel ⇒ __2printf

        [Calls]
        • >>   MX_USART1_UART_Init
        • >>   MX_SPI1_Init
        • >>   MX_GPIO_Init
        • >>   HAL_Init -
        • >>   HAL_Delay +
        • >>   HAL_Delay +
        • >>   EPD_4in2_test
        • >>   SystemClock_Config

        [Address Reference Count : 1]
        • entry9a.o(.ARM.Collect$$$$0000000B) @@ -379,8 +380,8 @@ Global Symbols

          MX_GPIO_Init (Thumb, 86 bytes, Stack size 32 bytes, gpio.o(.text))

          [Stack]

          • Max Depth = 72
          • Call Chain = MX_GPIO_Init ⇒ HAL_GPIO_Init
          -
          [Calls]
          • >>   HAL_GPIO_WritePin -
          • >>   HAL_GPIO_Init +
            [Calls]
            • >>   HAL_GPIO_WritePin +
            • >>   HAL_GPIO_Init

            [Called By]
            • >>   main
            @@ -388,56 +389,56 @@ Global Symbols

            MX_SPI1_Init (Thumb, 62 bytes, Stack size 8 bytes, spi.o(.text))

            [Stack]

            • Max Depth = 88
            • Call Chain = MX_SPI1_Init ⇒ HAL_SPI_Init ⇒ HAL_SPI_MspInit ⇒ HAL_GPIO_Init
            -
            [Calls]
            • >>   HAL_SPI_Init +
              [Calls]
              • >>   HAL_SPI_Init
              • >>   Error_Handler

              [Called By]
              • >>   main
              -

              HAL_SPI_MspInit (Thumb, 80 bytes, Stack size 24 bytes, spi.o(.text)) +

              HAL_SPI_MspInit (Thumb, 80 bytes, Stack size 24 bytes, spi.o(.text))

              [Stack]

              • Max Depth = 64
              • Call Chain = HAL_SPI_MspInit ⇒ HAL_GPIO_Init
              -
              [Calls]
              • >>   HAL_GPIO_Init +
                [Calls]
                • >>   HAL_GPIO_Init
                -
                [Called By]
                • >>   HAL_SPI_Init +
                  [Called By]
                  • >>   HAL_SPI_Init
                  -

                  HAL_SPI_MspDeInit (Thumb, 28 bytes, Stack size 0 bytes, spi.o(.text), UNUSED) -

                  [Calls]

                  • >>   HAL_GPIO_DeInit +

                    HAL_SPI_MspDeInit (Thumb, 28 bytes, Stack size 0 bytes, spi.o(.text), UNUSED) +

                    [Calls]

                    • >>   HAL_GPIO_DeInit
                    -
                    [Called By]
                    • >>   HAL_SPI_DeInit +
                      [Called By]
                      • >>   HAL_SPI_DeInit

                      MX_USART1_UART_Init (Thumb, 48 bytes, Stack size 8 bytes, usart.o(.text))

                      [Stack]

                      • Max Depth = 96
                      • Call Chain = MX_USART1_UART_Init ⇒ HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_GPIO_Init
                      -
                      [Calls]
                      • >>   HAL_UART_Init +
                        [Calls]
                        • >>   HAL_UART_Init
                        • >>   Error_Handler

                        [Called By]
                        • >>   main
                        -

                        HAL_UART_MspInit (Thumb, 100 bytes, Stack size 32 bytes, usart.o(.text)) +

                        HAL_UART_MspInit (Thumb, 100 bytes, Stack size 32 bytes, usart.o(.text))

                        [Stack]

                        • Max Depth = 72
                        • Call Chain = HAL_UART_MspInit ⇒ HAL_GPIO_Init
                        -
                        [Calls]
                        • >>   HAL_GPIO_Init +
                          [Calls]
                          • >>   HAL_GPIO_Init
                          -
                          [Called By]
                          • >>   HAL_UART_Init -
                          • >>   HAL_MultiProcessor_Init -
                          • >>   HAL_LIN_Init -
                          • >>   HAL_HalfDuplex_Init +
                            [Called By]
                            • >>   HAL_UART_Init +
                            • >>   HAL_MultiProcessor_Init +
                            • >>   HAL_LIN_Init +
                            • >>   HAL_HalfDuplex_Init
                            -

                            HAL_UART_MspDeInit (Thumb, 30 bytes, Stack size 0 bytes, usart.o(.text), UNUSED) -

                            [Calls]

                            • >>   HAL_GPIO_DeInit +

                              HAL_UART_MspDeInit (Thumb, 30 bytes, Stack size 0 bytes, usart.o(.text), UNUSED) +

                              [Calls]

                              • >>   HAL_GPIO_DeInit
                              -
                              [Called By]
                              • >>   HAL_UART_DeInit +
                                [Called By]
                                • >>   HAL_UART_DeInit

                                fputc (Thumb, 20 bytes, Stack size 16 bytes, usart.o(.text))

                                [Stack]

                                • Max Depth = 72
                                • Call Chain = fputc ⇒ HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                -
                                [Calls]
                                • >>   HAL_UART_Transmit +
                                  [Calls]
                                  • >>   HAL_UART_Transmit

                                  [Address Reference Count : 1]
                                  • printf3.o(i.__0printf$3)
                                  @@ -482,703 +483,1129 @@ Global Symbols
                                  [Address Reference Count : 1]
                                  • startup_stm32f103xe.o(RESET)

                                  SysTick_Handler (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(.text)) -

                                  [Calls]

                                  • >>   HAL_IncTick +

                                    [Calls]
                                    • >>   HAL_IncTick

                                    [Address Reference Count : 1]
                                    • startup_stm32f103xe.o(RESET)
                                    -

                                    HAL_MspInit (Thumb, 52 bytes, Stack size 8 bytes, stm32f1xx_hal_msp.o(.text)) +

                                    HAL_MspInit (Thumb, 52 bytes, Stack size 8 bytes, stm32f1xx_hal_msp.o(.text))

                                    [Stack]

                                    • Max Depth = 8
                                    • Call Chain = HAL_MspInit

                                    [Called By]
                                    • >>   HAL_Init
                                    +

                                    EPD_4in2_test (Thumb, 978 bytes, Stack size 48 bytes, epd_4in2_test.o(.text)) +

                                    [Stack]

                                    • Max Depth = 752
                                    • Call Chain = EPD_4in2_test ⇒ Paint_DrawNum ⇒ Paint_DrawString_EN ⇒ Paint_DrawChar ⇒ Paint_SetPixel ⇒ __2printf +
                                    +
                                    [Calls]
                                    • >>   Paint_SetScale +
                                    • >>   Paint_DrawBitMap +
                                    • >>   Paint_SelectImage +
                                    • >>   Paint_NewImage +
                                    • >>   Paint_DrawString_EN +
                                    • >>   Paint_DrawString_CN +
                                    • >>   Paint_DrawRectangle +
                                    • >>   Paint_DrawPoint +
                                    • >>   Paint_DrawNum +
                                    • >>   Paint_DrawLine +
                                    • >>   Paint_DrawCircle +
                                    • >>   Paint_Clear +
                                    • >>   DEV_Module_Init +
                                    • >>   DEV_Module_Exit +
                                    • >>   HAL_Delay +
                                    • >>   EPD_4IN2_init_LUT_Fast +
                                    • >>   EPD_4IN2_Sleep +
                                    • >>   EPD_4IN2_Init_4Gray +
                                    • >>   EPD_4IN2_Display +
                                    • >>   EPD_4IN2_Clear +
                                    • >>   EPD_4IN2_4GrayDisplay +
                                    • >>   __2printf +
                                    • >>   malloc +
                                    • >>   free +
                                    +
                                    [Called By]
                                    • >>   main +
                                    + +

                                    EPD_4IN2_ReadBusy (Thumb, 52 bytes, Stack size 8 bytes, epd_4in2.o(.text)) +

                                    [Stack]

                                    • Max Depth = 120
                                    • Call Chain = EPD_4IN2_ReadBusy ⇒ EPD_4IN2_SendCommand ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                    +
                                    [Calls]
                                    • >>   HAL_Delay +
                                    • >>   HAL_GPIO_ReadPin +
                                    • >>   EPD_4IN2_SendCommand +
                                    • >>   __2printf +
                                    +
                                    [Called By]
                                    • >>   EPD_4IN2_init_LUT_Fast +
                                    • >>   EPD_4IN2_Sleep +
                                    • >>   EPD_4IN2_Init_4Gray +
                                    • >>   EPD_4IN2_Init_LUT_Partia +
                                    • >>   EPD_4IN2_TurnOnDisplay +
                                    + +

                                    EPD_4IN2_Init_LUT_Partia (Thumb, 156 bytes, Stack size 8 bytes, epd_4in2.o(.text), UNUSED) +

                                    [Calls]

                                    • >>   EPD_4IN2_ReadBusy +
                                    • >>   EPD_4IN2_Partial_SetLut +
                                    • >>   EPD_4IN2_SendData +
                                    • >>   EPD_4IN2_SendCommand +
                                    • >>   EPD_4IN2_Reset +
                                    + +

                                    EPD_4IN2_init_LUT_Fast (Thumb, 156 bytes, Stack size 8 bytes, epd_4in2.o(.text)) +

                                    [Stack]

                                    • Max Depth = 136
                                    • Call Chain = EPD_4IN2_init_LUT_Fast ⇒ EPD_4IN2_SetLut ⇒ EPD_4IN2_SendData ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                    +
                                    [Calls]
                                    • >>   EPD_4IN2_ReadBusy +
                                    • >>   EPD_4IN2_SetLut +
                                    • >>   EPD_4IN2_SendData +
                                    • >>   EPD_4IN2_SendCommand +
                                    • >>   EPD_4IN2_Reset +
                                    +
                                    [Called By]
                                    • >>   EPD_4in2_test +
                                    + +

                                    EPD_4IN2_Init_4Gray (Thumb, 158 bytes, Stack size 8 bytes, epd_4in2.o(.text)) +

                                    [Stack]

                                    • Max Depth = 128
                                    • Call Chain = EPD_4IN2_Init_4Gray ⇒ EPD_4IN2_ReadBusy ⇒ EPD_4IN2_SendCommand ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                    +
                                    [Calls]
                                    • >>   EPD_4IN2_ReadBusy +
                                    • >>   EPD_4IN2_SendData +
                                    • >>   EPD_4IN2_SendCommand +
                                    • >>   EPD_4IN2_Reset +
                                    +
                                    [Called By]
                                    • >>   EPD_4in2_test +
                                    + +

                                    EPD_4IN2_Clear (Thumb, 94 bytes, Stack size 24 bytes, epd_4in2.o(.text)) +

                                    [Stack]

                                    • Max Depth = 152
                                    • Call Chain = EPD_4IN2_Clear ⇒ EPD_4IN2_TurnOnDisplay ⇒ EPD_4IN2_ReadBusy ⇒ EPD_4IN2_SendCommand ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                    +
                                    [Calls]
                                    • >>   HAL_Delay +
                                    • >>   EPD_4IN2_TurnOnDisplay +
                                    • >>   EPD_4IN2_SendData +
                                    • >>   EPD_4IN2_SendCommand +
                                    +
                                    [Called By]
                                    • >>   EPD_4in2_test +
                                    + +

                                    EPD_4IN2_Display (Thumb, 106 bytes, Stack size 32 bytes, epd_4in2.o(.text)) +

                                    [Stack]

                                    • Max Depth = 160
                                    • Call Chain = EPD_4IN2_Display ⇒ EPD_4IN2_TurnOnDisplay ⇒ EPD_4IN2_ReadBusy ⇒ EPD_4IN2_SendCommand ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                    +
                                    [Calls]
                                    • >>   HAL_Delay +
                                    • >>   EPD_4IN2_TurnOnDisplay +
                                    • >>   EPD_4IN2_SendData +
                                    • >>   EPD_4IN2_SendCommand +
                                    +
                                    [Called By]
                                    • >>   EPD_4in2_test +
                                    + +

                                    EPD_4IN2_PartialDisplay (Thumb, 342 bytes, Stack size 48 bytes, epd_4in2.o(.text), UNUSED) +

                                    [Calls]

                                    • >>   HAL_Delay +
                                    • >>   EPD_4IN2_TurnOnDisplay +
                                    • >>   EPD_4IN2_SendData +
                                    • >>   EPD_4IN2_SendCommand +
                                    + +

                                    EPD_4IN2_4GrayDisplay (Thumb, 292 bytes, Stack size 32 bytes, epd_4in2.o(.text)) +

                                    [Stack]

                                    • Max Depth = 160
                                    • Call Chain = EPD_4IN2_4GrayDisplay ⇒ EPD_4IN2_4Gray_lut ⇒ EPD_4IN2_SendData ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                    +
                                    [Calls]
                                    • >>   EPD_4IN2_4Gray_lut +
                                    • >>   EPD_4IN2_TurnOnDisplay +
                                    • >>   EPD_4IN2_SendData +
                                    • >>   EPD_4IN2_SendCommand +
                                    +
                                    [Called By]
                                    • >>   EPD_4in2_test +
                                    + +

                                    EPD_4IN2_Sleep (Thumb, 40 bytes, Stack size 8 bytes, epd_4in2.o(.text)) +

                                    [Stack]

                                    • Max Depth = 128
                                    • Call Chain = EPD_4IN2_Sleep ⇒ EPD_4IN2_ReadBusy ⇒ EPD_4IN2_SendCommand ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                    +
                                    [Calls]
                                    • >>   EPD_4IN2_ReadBusy +
                                    • >>   EPD_4IN2_SendData +
                                    • >>   EPD_4IN2_SendCommand +
                                    +
                                    [Called By]
                                    • >>   EPD_4in2_test +
                                    + +

                                    DEV_SPI_WriteByte (Thumb, 18 bytes, Stack size 8 bytes, dev_config.o(.text)) +

                                    [Stack]

                                    • Max Depth = 96
                                    • Call Chain = DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                    +
                                    [Calls]
                                    • >>   HAL_SPI_Transmit +
                                    +
                                    [Called By]
                                    • >>   EPD_4IN2_SendData +
                                    • >>   EPD_4IN2_SendCommand +
                                    + +

                                    DEV_Module_Init (Thumb, 38 bytes, Stack size 8 bytes, dev_config.o(.text)) +

                                    [Stack]

                                    • Max Depth = 8
                                    • Call Chain = DEV_Module_Init +
                                    +
                                    [Calls]
                                    • >>   HAL_GPIO_WritePin +
                                    +
                                    [Called By]
                                    • >>   EPD_4in2_test +
                                    + +

                                    DEV_Module_Exit (Thumb, 38 bytes, Stack size 8 bytes, dev_config.o(.text)) +

                                    [Stack]

                                    • Max Depth = 8
                                    • Call Chain = DEV_Module_Exit +
                                    +
                                    [Calls]
                                    • >>   HAL_GPIO_WritePin +
                                    +
                                    [Called By]
                                    • >>   EPD_4in2_test +
                                    + +

                                    Paint_NewImage (Thumb, 56 bytes, Stack size 16 bytes, gui_paint.o(.text)) +

                                    [Stack]

                                    • Max Depth = 16
                                    • Call Chain = Paint_NewImage +
                                    +
                                    [Called By]
                                    • >>   EPD_4in2_test +
                                    + +

                                    Paint_SelectImage (Thumb, 6 bytes, Stack size 0 bytes, gui_paint.o(.text)) +

                                    [Called By]

                                    • >>   EPD_4in2_test +
                                    + +

                                    Paint_SetRotate (Thumb, 44 bytes, Stack size 8 bytes, gui_paint.o(.text), UNUSED) +

                                    [Calls]

                                    • >>   __2printf +
                                    + +

                                    Paint_SetScale (Thumb, 80 bytes, Stack size 8 bytes, gui_paint.o(.text)) +

                                    [Stack]

                                    • Max Depth = 32
                                    • Call Chain = Paint_SetScale ⇒ __2printf +
                                    +
                                    [Calls]
                                    • >>   __2printf +
                                    +
                                    [Called By]
                                    • >>   EPD_4in2_test +
                                    + +

                                    Paint_SetMirroring (Thumb, 62 bytes, Stack size 8 bytes, gui_paint.o(.text), UNUSED) +

                                    [Calls]

                                    • >>   __2printf +
                                    + +

                                    Paint_SetPixel (Thumb, 238 bytes, Stack size 16 bytes, gui_paint.o(.text)) +

                                    [Stack]

                                    • Max Depth = 40
                                    • Call Chain = Paint_SetPixel ⇒ __2printf +
                                    +
                                    [Calls]
                                    • >>   __2printf +
                                    +
                                    [Called By]
                                    • >>   Paint_DrawString_CN +
                                    • >>   Paint_DrawPoint +
                                    • >>   Paint_ClearWindows +
                                    • >>   Paint_DrawBitMap_Paste +
                                    • >>   Paint_DrawChar +
                                    + +

                                    Paint_Clear (Thumb, 104 bytes, Stack size 12 bytes, gui_paint.o(.text)) +

                                    [Stack]

                                    • Max Depth = 12
                                    • Call Chain = Paint_Clear +
                                    +
                                    [Called By]
                                    • >>   EPD_4in2_test +
                                    + +

                                    Paint_ClearWindows (Thumb, 52 bytes, Stack size 32 bytes, gui_paint.o(.text), UNUSED) +

                                    [Calls]

                                    • >>   Paint_SetPixel +
                                    + +

                                    Paint_DrawPoint (Thumb, 180 bytes, Stack size 40 bytes, gui_paint.o(.text)) +

                                    [Stack]

                                    • Max Depth = 80
                                    • Call Chain = Paint_DrawPoint ⇒ Paint_SetPixel ⇒ __2printf +
                                    +
                                    [Calls]
                                    • >>   Paint_SetPixel +
                                    • >>   __2printf +
                                    +
                                    [Called By]
                                    • >>   Paint_DrawLine +
                                    • >>   Paint_DrawCircle +
                                    • >>   EPD_4in2_test +
                                    + +

                                    Paint_DrawLine (Thumb, 654 bytes, Stack size 48 bytes, gui_paint.o(.text)) +

                                    [Stack]

                                    • Max Depth = 128
                                    • Call Chain = Paint_DrawLine ⇒ Paint_DrawPoint ⇒ Paint_SetPixel ⇒ __2printf +
                                    +
                                    [Calls]
                                    • >>   Paint_DrawPoint +
                                    • >>   __2printf +
                                    +
                                    [Called By]
                                    • >>   Paint_DrawRectangle +
                                    • >>   EPD_4in2_test +
                                    + +

                                    Paint_DrawRectangle (Thumb, 170 bytes, Stack size 48 bytes, gui_paint.o(.text)) +

                                    [Stack]

                                    • Max Depth = 176
                                    • Call Chain = Paint_DrawRectangle ⇒ Paint_DrawLine ⇒ Paint_DrawPoint ⇒ Paint_SetPixel ⇒ __2printf +
                                    +
                                    [Calls]
                                    • >>   Paint_DrawLine +
                                    • >>   __2printf +
                                    +
                                    [Called By]
                                    • >>   EPD_4in2_test +
                                    + +

                                    Paint_DrawCircle (Thumb, 528 bytes, Stack size 72 bytes, gui_paint.o(.text)) +

                                    [Stack]

                                    • Max Depth = 152
                                    • Call Chain = Paint_DrawCircle ⇒ Paint_DrawPoint ⇒ Paint_SetPixel ⇒ __2printf +
                                    +
                                    [Calls]
                                    • >>   Paint_DrawPoint +
                                    • >>   __2printf +
                                    +
                                    [Called By]
                                    • >>   EPD_4in2_test +
                                    + +

                                    Paint_DrawChar (Thumb, 172 bytes, Stack size 40 bytes, gui_paint.o(.text)) +

                                    [Stack]

                                    • Max Depth = 80
                                    • Call Chain = Paint_DrawChar ⇒ Paint_SetPixel ⇒ __2printf +
                                    +
                                    [Calls]
                                    • >>   Paint_SetPixel +
                                    • >>   __2printf +
                                    +
                                    [Called By]
                                    • >>   Paint_DrawTime +
                                    • >>   Paint_DrawString_EN +
                                    + +

                                    Paint_DrawString_EN (Thumb, 116 bytes, Stack size 48 bytes, gui_paint.o(.text)) +

                                    [Stack]

                                    • Max Depth = 128
                                    • Call Chain = Paint_DrawString_EN ⇒ Paint_DrawChar ⇒ Paint_SetPixel ⇒ __2printf +
                                    +
                                    [Calls]
                                    • >>   Paint_DrawChar +
                                    • >>   __2printf +
                                    +
                                    [Called By]
                                    • >>   Paint_DrawNum +
                                    • >>   EPD_4in2_test +
                                    + +

                                    Paint_DrawString_CN (Thumb, 518 bytes, Stack size 40 bytes, gui_paint.o(.text)) +

                                    [Stack]

                                    • Max Depth = 80
                                    • Call Chain = Paint_DrawString_CN ⇒ Paint_SetPixel ⇒ __2printf +
                                    +
                                    [Calls]
                                    • >>   Paint_SetPixel +
                                    +
                                    [Called By]
                                    • >>   EPD_4in2_test +
                                    + +

                                    Paint_DrawNum (Thumb, 140 bytes, Stack size 576 bytes, gui_paint.o(.text)) +

                                    [Stack]

                                    • Max Depth = 704
                                    • Call Chain = Paint_DrawNum ⇒ Paint_DrawString_EN ⇒ Paint_DrawChar ⇒ Paint_SetPixel ⇒ __2printf +
                                    +
                                    [Calls]
                                    • >>   Paint_DrawString_EN +
                                    • >>   __2printf +
                                    • >>   __aeabi_memclr4 +
                                    +
                                    [Called By]
                                    • >>   EPD_4in2_test +
                                    + +

                                    Paint_DrawTime (Thumb, 282 bytes, Stack size 72 bytes, gui_paint.o(.text), UNUSED) +

                                    [Calls]

                                    • >>   Paint_DrawChar +
                                    + +

                                    Paint_DrawBitMap (Thumb, 46 bytes, Stack size 16 bytes, gui_paint.o(.text)) +

                                    [Stack]

                                    • Max Depth = 16
                                    • Call Chain = Paint_DrawBitMap +
                                    +
                                    [Called By]
                                    • >>   EPD_4in2_test +
                                    + +

                                    Paint_DrawBitMap_Paste (Thumb, 110 bytes, Stack size 56 bytes, gui_paint.o(.text), UNUSED) +

                                    [Calls]

                                    • >>   Paint_SetPixel +
                                    + +

                                    Paint_DrawBitMap_Block (Thumb, 54 bytes, Stack size 20 bytes, gui_paint.o(.text), UNUSED) +

                                    SystemInit (Thumb, 60 bytes, Stack size 0 bytes, system_stm32f1xx.o(.text))
                                    [Address Reference Count : 1]

                                    • startup_stm32f103xe.o(.text)
                                    -

                                    SystemCoreClockUpdate (Thumb, 108 bytes, Stack size 0 bytes, system_stm32f1xx.o(.text), UNUSED) +

                                    SystemCoreClockUpdate (Thumb, 108 bytes, Stack size 0 bytes, system_stm32f1xx.o(.text), UNUSED) -

                                    HAL_SPI_Init (Thumb, 180 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text)) +

                                    HAL_SPI_Init (Thumb, 180 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text))

                                    [Stack]

                                    • Max Depth = 80
                                    • Call Chain = HAL_SPI_Init ⇒ HAL_SPI_MspInit ⇒ HAL_GPIO_Init
                                    -
                                    [Calls]
                                    • >>   HAL_SPI_MspInit +
                                      [Calls]
                                      • >>   HAL_SPI_MspInit

                                      [Called By]
                                      • >>   MX_SPI1_Init
                                      -

                                      HAL_SPI_DeInit (Thumb, 48 bytes, Stack size 8 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) -

                                      [Calls]

                                      • >>   HAL_SPI_MspDeInit +

                                        HAL_SPI_DeInit (Thumb, 48 bytes, Stack size 8 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) +

                                        [Calls]

                                        • >>   HAL_SPI_MspDeInit
                                        -

                                        HAL_SPI_Transmit (Thumb, 412 bytes, Stack size 40 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) -

                                        [Calls]

                                        • >>   HAL_GetTick -
                                        • >>   SPI_EndRxTxTransaction +

                                          HAL_SPI_Transmit (Thumb, 412 bytes, Stack size 40 bytes, stm32f1xx_hal_spi.o(.text)) +

                                          [Stack]

                                          • Max Depth = 88
                                          • Call Chain = HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                          +
                                          [Calls]
                                          • >>   HAL_GetTick +
                                          • >>   SPI_EndRxTxTransaction +
                                          +
                                          [Called By]
                                          • >>   DEV_SPI_WriteByte
                                          -

                                          HAL_SPI_TransmitReceive (Thumb, 510 bytes, Stack size 40 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) -

                                          [Calls]

                                          • >>   HAL_GetTick -
                                          • >>   SPI_EndRxTxTransaction +

                                            HAL_SPI_TransmitReceive (Thumb, 510 bytes, Stack size 40 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) +

                                            [Calls]

                                            • >>   HAL_GetTick +
                                            • >>   SPI_EndRxTxTransaction
                                            -
                                            [Called By]
                                            • >>   HAL_SPI_Receive +
                                              [Called By]
                                              • >>   HAL_SPI_Receive
                                              -

                                              HAL_SPI_Receive (Thumb, 366 bytes, Stack size 40 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) -

                                              [Calls]

                                              • >>   HAL_GetTick -
                                              • >>   HAL_SPI_TransmitReceive -
                                              • >>   SPI_EndRxTransaction +

                                                HAL_SPI_Receive (Thumb, 366 bytes, Stack size 40 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) +

                                                [Calls]

                                                • >>   HAL_GetTick +
                                                • >>   HAL_SPI_TransmitReceive +
                                                • >>   SPI_EndRxTransaction
                                                -

                                                HAL_SPI_TxCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text)) +

                                                HAL_SPI_TxCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text))

                                                [Called By]

                                                • >>   SPI_DMATransmitCplt -
                                                • >>   SPI_CloseTx_ISR +
                                                • >>   SPI_CloseTx_ISR
                                                -

                                                HAL_SPI_ErrorCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text)) -

                                                [Called By]

                                                • >>   HAL_SPI_IRQHandler +

                                                  HAL_SPI_ErrorCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text)) +

                                                  [Called By]

                                                  • >>   HAL_SPI_IRQHandler
                                                  • >>   SPI_DMAAbortOnError
                                                  • >>   SPI_DMATransmitReceiveCplt
                                                  • >>   SPI_DMAReceiveCplt
                                                  • >>   SPI_DMATransmitCplt
                                                  • >>   SPI_DMAError -
                                                  • >>   SPI_CloseRxTx_ISR -
                                                  • >>   SPI_CloseRx_ISR -
                                                  • >>   SPI_CloseTx_ISR +
                                                  • >>   SPI_CloseRxTx_ISR +
                                                  • >>   SPI_CloseRx_ISR +
                                                  • >>   SPI_CloseTx_ISR
                                                  -

                                                  HAL_SPI_Transmit_IT (Thumb, 162 bytes, Stack size 4 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) +

                                                  HAL_SPI_Transmit_IT (Thumb, 162 bytes, Stack size 4 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) -

                                                  HAL_SPI_RxCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text)) +

                                                  HAL_SPI_RxCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text))

                                                  [Called By]

                                                  • >>   SPI_DMAReceiveCplt -
                                                  • >>   SPI_CloseRxTx_ISR -
                                                  • >>   SPI_CloseRx_ISR +
                                                  • >>   SPI_CloseRxTx_ISR +
                                                  • >>   SPI_CloseRx_ISR
                                                  -

                                                  HAL_SPI_TxRxCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text)) +

                                                  HAL_SPI_TxRxCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text))

                                                  [Called By]

                                                  • >>   SPI_DMATransmitReceiveCplt -
                                                  • >>   SPI_CloseRxTx_ISR +
                                                  • >>   SPI_CloseRxTx_ISR
                                                  -

                                                  HAL_SPI_TransmitReceive_IT (Thumb, 188 bytes, Stack size 12 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) -

                                                  [Called By]

                                                  • >>   HAL_SPI_Receive_IT +

                                                    HAL_SPI_TransmitReceive_IT (Thumb, 188 bytes, Stack size 12 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) +

                                                    [Called By]

                                                    • >>   HAL_SPI_Receive_IT
                                                    -

                                                    HAL_SPI_Receive_IT (Thumb, 176 bytes, Stack size 12 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) -

                                                    [Calls]

                                                    • >>   HAL_SPI_TransmitReceive_IT +

                                                      HAL_SPI_Receive_IT (Thumb, 176 bytes, Stack size 12 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) +

                                                      [Calls]

                                                      • >>   HAL_SPI_TransmitReceive_IT
                                                      -

                                                      HAL_SPI_TxHalfCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text)) +

                                                      HAL_SPI_TxHalfCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text))

                                                      [Called By]

                                                      • >>   SPI_DMAHalfTransmitCplt
                                                      -

                                                      HAL_SPI_Transmit_DMA (Thumb, 208 bytes, Stack size 24 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) -

                                                      [Calls]

                                                      • >>   HAL_DMA_Start_IT +

                                                        HAL_SPI_Transmit_DMA (Thumb, 208 bytes, Stack size 24 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) +

                                                        [Calls]

                                                        • >>   HAL_DMA_Start_IT
                                                        -

                                                        HAL_SPI_RxHalfCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text)) +

                                                        HAL_SPI_RxHalfCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text))

                                                        [Called By]

                                                        • >>   SPI_DMAHalfReceiveCplt
                                                        -

                                                        HAL_SPI_TxRxHalfCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text)) +

                                                        HAL_SPI_TxRxHalfCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text))

                                                        [Called By]

                                                        • >>   SPI_DMAHalfTransmitReceiveCplt
                                                        -

                                                        HAL_SPI_TransmitReceive_DMA (Thumb, 302 bytes, Stack size 24 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) -

                                                        [Calls]

                                                        • >>   HAL_DMA_Start_IT +

                                                          HAL_SPI_TransmitReceive_DMA (Thumb, 302 bytes, Stack size 24 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) +

                                                          [Calls]

                                                          • >>   HAL_DMA_Start_IT
                                                          -
                                                          [Called By]
                                                          • >>   HAL_SPI_Receive_DMA +
                                                            [Called By]
                                                            • >>   HAL_SPI_Receive_DMA
                                                            -

                                                            HAL_SPI_Receive_DMA (Thumb, 278 bytes, Stack size 24 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) -

                                                            [Calls]

                                                            • >>   HAL_DMA_Start_IT -
                                                            • >>   HAL_SPI_TransmitReceive_DMA +

                                                              HAL_SPI_Receive_DMA (Thumb, 278 bytes, Stack size 24 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) +

                                                              [Calls]

                                                              • >>   HAL_DMA_Start_IT +
                                                              • >>   HAL_SPI_TransmitReceive_DMA
                                                              -

                                                              HAL_SPI_Abort (Thumb, 290 bytes, Stack size 32 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) -

                                                              [Calls]

                                                              • >>   HAL_DMA_Abort +

                                                                HAL_SPI_Abort (Thumb, 290 bytes, Stack size 32 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) +

                                                                [Calls]

                                                                • >>   HAL_DMA_Abort
                                                                -

                                                                HAL_SPI_AbortCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text)) -

                                                                [Called By]

                                                                • >>   HAL_SPI_Abort_IT +

                                                                  HAL_SPI_AbortCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text)) +

                                                                  [Called By]

                                                                  • >>   HAL_SPI_Abort_IT
                                                                  • >>   SPI_DMATxAbortCallback
                                                                  • >>   SPI_DMARxAbortCallback
                                                                  -

                                                                  HAL_SPI_Abort_IT (Thumb, 328 bytes, Stack size 40 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) -

                                                                  [Calls]

                                                                  • >>   HAL_SPI_AbortCpltCallback -
                                                                  • >>   HAL_DMA_Abort_IT +

                                                                    HAL_SPI_Abort_IT (Thumb, 328 bytes, Stack size 40 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) +

                                                                    [Calls]

                                                                    • >>   HAL_DMA_Abort_IT +
                                                                    • >>   HAL_SPI_AbortCpltCallback
                                                                    -

                                                                    HAL_SPI_DMAPause (Thumb, 38 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) +

                                                                    HAL_SPI_DMAPause (Thumb, 38 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) -

                                                                    HAL_SPI_DMAResume (Thumb, 38 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) +

                                                                    HAL_SPI_DMAResume (Thumb, 38 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) -

                                                                    HAL_SPI_DMAStop (Thumb, 68 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) -

                                                                    [Calls]

                                                                    • >>   HAL_DMA_Abort +

                                                                      HAL_SPI_DMAStop (Thumb, 68 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) +

                                                                      [Calls]

                                                                      • >>   HAL_DMA_Abort
                                                                      -

                                                                      HAL_SPI_IRQHandler (Thumb, 250 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) -

                                                                      [Calls]

                                                                      • >>   HAL_SPI_ErrorCallback -
                                                                      • >>   HAL_DMA_Abort_IT +

                                                                        HAL_SPI_IRQHandler (Thumb, 250 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) +

                                                                        [Calls]

                                                                        • >>   HAL_SPI_ErrorCallback +
                                                                        • >>   HAL_DMA_Abort_IT
                                                                        -

                                                                        HAL_SPI_GetState (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) +

                                                                        HAL_SPI_GetState (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) -

                                                                        HAL_SPI_GetError (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) +

                                                                        HAL_SPI_GetError (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text), UNUSED) -

                                                                        HAL_InitTick (Thumb, 58 bytes, Stack size 16 bytes, stm32f1xx_hal.o(.text)) +

                                                                        HAL_InitTick (Thumb, 58 bytes, Stack size 16 bytes, stm32f1xx_hal.o(.text))

                                                                        [Stack]

                                                                        • Max Depth = 20
                                                                        • Call Chain = HAL_InitTick ⇒ HAL_NVIC_SetPriority
                                                                        -
                                                                        [Calls]
                                                                        • >>   HAL_SYSTICK_Config -
                                                                        • >>   HAL_NVIC_SetPriority +
                                                                          [Calls]
                                                                          • >>   HAL_SYSTICK_Config +
                                                                          • >>   HAL_NVIC_SetPriority

                                                                          [Called By]
                                                                          • >>   HAL_RCC_ClockConfig
                                                                          • >>   HAL_Init -
                                                                          • >>   HAL_SetTickFreq -
                                                                          • >>   HAL_RCC_DeInit +
                                                                          • >>   HAL_RCC_DeInit +
                                                                          • >>   HAL_SetTickFreq

                                                                          HAL_Init (Thumb, 32 bytes, Stack size 8 bytes, stm32f1xx_hal.o(.text))

                                                                          [Stack]

                                                                          • Max Depth = 28
                                                                          • Call Chain = HAL_Init ⇒ HAL_InitTick ⇒ HAL_NVIC_SetPriority
                                                                          -
                                                                          [Calls]
                                                                          • >>   HAL_MspInit -
                                                                          • >>   HAL_InitTick -
                                                                          • >>   HAL_NVIC_SetPriorityGrouping +
                                                                            [Calls]
                                                                            • >>   HAL_MspInit +
                                                                            • >>   HAL_InitTick +
                                                                            • >>   HAL_NVIC_SetPriorityGrouping

                                                                            [Called By]
                                                                            • >>   main
                                                                            -

                                                                            HAL_MspDeInit (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) -

                                                                            [Called By]

                                                                            • >>   HAL_DeInit +

                                                                              HAL_MspDeInit (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) +

                                                                              [Called By]

                                                                              • >>   HAL_DeInit
                                                                              -

                                                                              HAL_DeInit (Thumb, 26 bytes, Stack size 8 bytes, stm32f1xx_hal.o(.text), UNUSED) -

                                                                              [Calls]

                                                                              • >>   HAL_MspDeInit +

                                                                                HAL_DeInit (Thumb, 26 bytes, Stack size 8 bytes, stm32f1xx_hal.o(.text), UNUSED) +

                                                                                [Calls]

                                                                                • >>   HAL_MspDeInit
                                                                                -

                                                                                HAL_IncTick (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text)) +

                                                                                HAL_IncTick (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text))

                                                                                [Called By]

                                                                                • >>   SysTick_Handler
                                                                                -

                                                                                HAL_GetTick (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text)) -

                                                                                [Called By]

                                                                                • >>   HAL_UART_Transmit +

                                                                                  HAL_GetTick (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text)) +

                                                                                  [Called By]

                                                                                  • >>   HAL_UART_Transmit
                                                                                  • >>   HAL_RCC_OscConfig
                                                                                  • >>   HAL_RCC_ClockConfig -
                                                                                  • >>   HAL_Delay -
                                                                                  • >>   HAL_SPI_Receive -
                                                                                  • >>   HAL_SPI_TransmitReceive +
                                                                                  • >>   HAL_Delay +
                                                                                  • >>   HAL_SPI_Receive +
                                                                                  • >>   HAL_SPI_TransmitReceive
                                                                                  • >>   SPI_DMARxAbortCallback
                                                                                  • >>   SPI_DMATransmitReceiveCplt
                                                                                  • >>   SPI_DMAReceiveCplt
                                                                                  • >>   SPI_DMATransmitCplt -
                                                                                  • >>   SPI_CloseRxTx_ISR -
                                                                                  • >>   SPI_CloseRx_ISR -
                                                                                  • >>   SPI_CloseTx_ISR -
                                                                                  • >>   SPI_WaitFlagStateUntilTimeout -
                                                                                  • >>   HAL_SPI_Transmit -
                                                                                  • >>   HAL_UART_Receive -
                                                                                  • >>   UART_WaitOnFlagUntilTimeout -
                                                                                  • >>   HAL_DMA_PollForTransfer -
                                                                                  • >>   HAL_RCC_DeInit +
                                                                                  • >>   SPI_CloseRxTx_ISR +
                                                                                  • >>   SPI_CloseRx_ISR +
                                                                                  • >>   SPI_CloseTx_ISR +
                                                                                  • >>   SPI_WaitFlagStateUntilTimeout +
                                                                                  • >>   HAL_SPI_Transmit +
                                                                                  • >>   HAL_UART_Receive +
                                                                                  • >>   UART_WaitOnFlagUntilTimeout +
                                                                                  • >>   HAL_DMA_PollForTransfer +
                                                                                  • >>   HAL_RCC_DeInit
                                                                                  -

                                                                                  HAL_GetTickPrio (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) +

                                                                                  HAL_GetTickPrio (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) -

                                                                                  HAL_SetTickFreq (Thumb, 30 bytes, Stack size 16 bytes, stm32f1xx_hal.o(.text), UNUSED) -

                                                                                  [Calls]

                                                                                  • >>   HAL_InitTick +

                                                                                    HAL_SetTickFreq (Thumb, 30 bytes, Stack size 16 bytes, stm32f1xx_hal.o(.text), UNUSED) +

                                                                                    [Calls]

                                                                                    • >>   HAL_InitTick
                                                                                    -

                                                                                    HAL_GetTickFreq (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) +

                                                                                    HAL_GetTickFreq (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) -

                                                                                    HAL_Delay (Thumb, 34 bytes, Stack size 16 bytes, stm32f1xx_hal.o(.text)) +

                                                                                    HAL_Delay (Thumb, 34 bytes, Stack size 16 bytes, stm32f1xx_hal.o(.text))

                                                                                    [Stack]

                                                                                    • Max Depth = 16
                                                                                    • Call Chain = HAL_Delay
                                                                                    -
                                                                                    [Calls]
                                                                                    • >>   HAL_GetTick +
                                                                                      [Calls]
                                                                                      • >>   HAL_GetTick
                                                                                      -
                                                                                      [Called By]
                                                                                      • >>   main +
                                                                                        [Called By]
                                                                                        • >>   EPD_4in2_test +
                                                                                        • >>   main +
                                                                                        • >>   EPD_4IN2_Display +
                                                                                        • >>   EPD_4IN2_Clear +
                                                                                        • >>   EPD_4IN2_PartialDisplay +
                                                                                        • >>   EPD_4IN2_ReadBusy +
                                                                                        • >>   EPD_4IN2_TurnOnDisplay +
                                                                                        • >>   EPD_4IN2_Reset
                                                                                        -

                                                                                        HAL_SuspendTick (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) +

                                                                                        HAL_SuspendTick (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) -

                                                                                        HAL_ResumeTick (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) +

                                                                                        HAL_ResumeTick (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) -

                                                                                        HAL_GetHalVersion (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) +

                                                                                        HAL_GetHalVersion (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) -

                                                                                        HAL_GetREVID (Thumb, 8 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) +

                                                                                        HAL_GetREVID (Thumb, 8 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) -

                                                                                        HAL_GetDEVID (Thumb, 10 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) +

                                                                                        HAL_GetDEVID (Thumb, 10 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) -

                                                                                        HAL_GetUIDw0 (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) +

                                                                                        HAL_GetUIDw0 (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) -

                                                                                        HAL_GetUIDw1 (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) +

                                                                                        HAL_GetUIDw1 (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) -

                                                                                        HAL_GetUIDw2 (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) +

                                                                                        HAL_GetUIDw2 (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) -

                                                                                        HAL_DBGMCU_EnableDBGSleepMode (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) +

                                                                                        HAL_DBGMCU_EnableDBGSleepMode (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) -

                                                                                        HAL_DBGMCU_DisableDBGSleepMode (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) +

                                                                                        HAL_DBGMCU_DisableDBGSleepMode (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) -

                                                                                        HAL_DBGMCU_EnableDBGStopMode (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) +

                                                                                        HAL_DBGMCU_EnableDBGStopMode (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) -

                                                                                        HAL_DBGMCU_DisableDBGStopMode (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) +

                                                                                        HAL_DBGMCU_DisableDBGStopMode (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) -

                                                                                        HAL_DBGMCU_EnableDBGStandbyMode (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) +

                                                                                        HAL_DBGMCU_EnableDBGStandbyMode (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) -

                                                                                        HAL_DBGMCU_DisableDBGStandbyMode (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) +

                                                                                        HAL_DBGMCU_DisableDBGStandbyMode (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text), UNUSED) -

                                                                                        HAL_RCC_DeInit (Thumb, 250 bytes, Stack size 24 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED) -

                                                                                        [Calls]

                                                                                        • >>   HAL_InitTick -
                                                                                        • >>   HAL_GetTick +

                                                                                          HAL_RCC_DeInit (Thumb, 250 bytes, Stack size 24 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED) +

                                                                                          [Calls]

                                                                                          • >>   HAL_GetTick +
                                                                                          • >>   HAL_InitTick

                                                                                          HAL_RCC_OscConfig (Thumb, 1080 bytes, Stack size 40 bytes, stm32f1xx_hal_rcc.o(.text))

                                                                                          [Stack]

                                                                                          • Max Depth = 44
                                                                                          • Call Chain = HAL_RCC_OscConfig ⇒ RCC_Delay
                                                                                          -
                                                                                          [Calls]
                                                                                          • >>   RCC_Delay -
                                                                                          • >>   HAL_GetTick +
                                                                                            [Calls]
                                                                                            • >>   HAL_GetTick +
                                                                                            • >>   RCC_Delay

                                                                                            [Called By]
                                                                                            • >>   SystemClock_Config
                                                                                            -

                                                                                            HAL_RCC_GetSysClockFreq (Thumb, 88 bytes, Stack size 20 bytes, stm32f1xx_hal_rcc.o(.text)) +

                                                                                            HAL_RCC_GetSysClockFreq (Thumb, 88 bytes, Stack size 20 bytes, stm32f1xx_hal_rcc.o(.text))

                                                                                            [Stack]

                                                                                            • Max Depth = 20
                                                                                            • Call Chain = HAL_RCC_GetSysClockFreq

                                                                                            [Called By]
                                                                                            • >>   HAL_RCC_ClockConfig

                                                                                            HAL_RCC_ClockConfig (Thumb, 364 bytes, Stack size 32 bytes, stm32f1xx_hal_rcc.o(.text)) -

                                                                                            [Stack]

                                                                                            • Max Depth = 52
                                                                                            • Call Chain = HAL_RCC_ClockConfig ⇒ HAL_InitTick ⇒ HAL_NVIC_SetPriority +

                                                                                              [Stack]
                                                                                              • Max Depth = 52
                                                                                              • Call Chain = HAL_RCC_ClockConfig ⇒ HAL_RCC_GetSysClockFreq
                                                                                              -
                                                                                              [Calls]
                                                                                              • >>   HAL_InitTick -
                                                                                              • >>   HAL_GetTick -
                                                                                              • >>   HAL_RCC_GetSysClockFreq +
                                                                                                [Calls]
                                                                                                • >>   HAL_GetTick +
                                                                                                • >>   HAL_RCC_GetSysClockFreq +
                                                                                                • >>   HAL_InitTick

                                                                                                [Called By]
                                                                                                • >>   SystemClock_Config
                                                                                                -

                                                                                                HAL_RCC_MCOConfig (Thumb, 64 bytes, Stack size 40 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED) -

                                                                                                [Calls]

                                                                                                • >>   HAL_GPIO_Init +

                                                                                                  HAL_RCC_MCOConfig (Thumb, 64 bytes, Stack size 40 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED) +

                                                                                                  [Calls]

                                                                                                  • >>   HAL_GPIO_Init
                                                                                                  -

                                                                                                  HAL_RCC_EnableCSS (Thumb, 8 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED) +

                                                                                                  HAL_RCC_EnableCSS (Thumb, 8 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED) -

                                                                                                  HAL_RCC_DisableCSS (Thumb, 8 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED) +

                                                                                                  HAL_RCC_DisableCSS (Thumb, 8 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED) -

                                                                                                  HAL_RCC_GetHCLKFreq (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text)) -

                                                                                                  [Called By]

                                                                                                  • >>   HAL_RCC_GetPCLK2Freq -
                                                                                                  • >>   HAL_RCC_GetPCLK1Freq +

                                                                                                    HAL_RCC_GetHCLKFreq (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text)) +

                                                                                                    [Called By]

                                                                                                    • >>   HAL_RCC_GetPCLK2Freq +
                                                                                                    • >>   HAL_RCC_GetPCLK1Freq
                                                                                                    -

                                                                                                    HAL_RCC_GetPCLK1Freq (Thumb, 22 bytes, Stack size 4 bytes, stm32f1xx_hal_rcc.o(.text)) +

                                                                                                    HAL_RCC_GetPCLK1Freq (Thumb, 22 bytes, Stack size 4 bytes, stm32f1xx_hal_rcc.o(.text))

                                                                                                    [Stack]

                                                                                                    • Max Depth = 4
                                                                                                    • Call Chain = HAL_RCC_GetPCLK1Freq
                                                                                                    -
                                                                                                    [Calls]
                                                                                                    • >>   HAL_RCC_GetHCLKFreq +
                                                                                                      [Calls]
                                                                                                      • >>   HAL_RCC_GetHCLKFreq
                                                                                                      -
                                                                                                      [Called By]
                                                                                                      • >>   UART_SetConfig +
                                                                                                        [Called By]
                                                                                                        • >>   UART_SetConfig
                                                                                                        -

                                                                                                        HAL_RCC_GetPCLK2Freq (Thumb, 22 bytes, Stack size 4 bytes, stm32f1xx_hal_rcc.o(.text)) +

                                                                                                        HAL_RCC_GetPCLK2Freq (Thumb, 22 bytes, Stack size 4 bytes, stm32f1xx_hal_rcc.o(.text))

                                                                                                        [Stack]

                                                                                                        • Max Depth = 4
                                                                                                        • Call Chain = HAL_RCC_GetPCLK2Freq
                                                                                                        -
                                                                                                        [Calls]
                                                                                                        • >>   HAL_RCC_GetHCLKFreq +
                                                                                                          [Calls]
                                                                                                          • >>   HAL_RCC_GetHCLKFreq
                                                                                                          -
                                                                                                          [Called By]
                                                                                                          • >>   UART_SetConfig +
                                                                                                            [Called By]
                                                                                                            • >>   UART_SetConfig
                                                                                                            -

                                                                                                            HAL_RCC_GetOscConfig (Thumb, 168 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED) +

                                                                                                            HAL_RCC_GetOscConfig (Thumb, 168 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED) -

                                                                                                            HAL_RCC_GetClockConfig (Thumb, 52 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED) +

                                                                                                            HAL_RCC_GetClockConfig (Thumb, 52 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED) -

                                                                                                            HAL_RCC_CSSCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED) -

                                                                                                            [Called By]

                                                                                                            • >>   HAL_RCC_NMI_IRQHandler +

                                                                                                              HAL_RCC_CSSCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED) +

                                                                                                              [Called By]

                                                                                                              • >>   HAL_RCC_NMI_IRQHandler
                                                                                                              -

                                                                                                              HAL_RCC_NMI_IRQHandler (Thumb, 22 bytes, Stack size 8 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED) -

                                                                                                              [Calls]

                                                                                                              • >>   HAL_RCC_CSSCallback +

                                                                                                                HAL_RCC_NMI_IRQHandler (Thumb, 22 bytes, Stack size 8 bytes, stm32f1xx_hal_rcc.o(.text), UNUSED) +

                                                                                                                [Calls]

                                                                                                                • >>   HAL_RCC_CSSCallback
                                                                                                                -

                                                                                                                HAL_GPIO_Init (Thumb, 524 bytes, Stack size 40 bytes, stm32f1xx_hal_gpio.o(.text)) +

                                                                                                                HAL_GPIO_Init (Thumb, 524 bytes, Stack size 40 bytes, stm32f1xx_hal_gpio.o(.text))

                                                                                                                [Stack]

                                                                                                                • Max Depth = 40
                                                                                                                • Call Chain = HAL_GPIO_Init
                                                                                                                -
                                                                                                                [Called By]
                                                                                                                • >>   HAL_UART_MspInit -
                                                                                                                • >>   HAL_SPI_MspInit +
                                                                                                                  [Called By]
                                                                                                                  • >>   HAL_UART_MspInit +
                                                                                                                  • >>   HAL_SPI_MspInit
                                                                                                                  • >>   MX_GPIO_Init -
                                                                                                                  • >>   HAL_RCC_MCOConfig +
                                                                                                                  • >>   HAL_RCC_MCOConfig
                                                                                                                  -

                                                                                                                  HAL_GPIO_DeInit (Thumb, 320 bytes, Stack size 36 bytes, stm32f1xx_hal_gpio.o(.text), UNUSED) -

                                                                                                                  [Called By]

                                                                                                                  • >>   HAL_UART_MspDeInit -
                                                                                                                  • >>   HAL_SPI_MspDeInit +

                                                                                                                    HAL_GPIO_DeInit (Thumb, 320 bytes, Stack size 36 bytes, stm32f1xx_hal_gpio.o(.text), UNUSED) +

                                                                                                                    [Called By]

                                                                                                                    • >>   HAL_UART_MspDeInit +
                                                                                                                    • >>   HAL_SPI_MspDeInit
                                                                                                                    -

                                                                                                                    HAL_GPIO_ReadPin (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text), UNUSED) - -

                                                                                                                    HAL_GPIO_WritePin (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text)) -

                                                                                                                    [Called By]

                                                                                                                    • >>   MX_GPIO_Init +

                                                                                                                      HAL_GPIO_ReadPin (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text)) +

                                                                                                                      [Called By]

                                                                                                                      • >>   EPD_4IN2_ReadBusy
                                                                                                                      -

                                                                                                                      HAL_GPIO_TogglePin (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text), UNUSED) - -

                                                                                                                      HAL_GPIO_LockPin (Thumb, 42 bytes, Stack size 4 bytes, stm32f1xx_hal_gpio.o(.text), UNUSED) - -

                                                                                                                      HAL_GPIO_EXTI_Callback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text), UNUSED) -

                                                                                                                      [Called By]

                                                                                                                      • >>   HAL_GPIO_EXTI_IRQHandler +

                                                                                                                        HAL_GPIO_WritePin (Thumb, 14 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text)) +

                                                                                                                        [Called By]

                                                                                                                        • >>   DEV_Module_Init +
                                                                                                                        • >>   DEV_Module_Exit +
                                                                                                                        • >>   MX_GPIO_Init +
                                                                                                                        • >>   EPD_4IN2_SendData +
                                                                                                                        • >>   EPD_4IN2_SendCommand +
                                                                                                                        • >>   EPD_4IN2_Reset
                                                                                                                        -

                                                                                                                        HAL_GPIO_EXTI_IRQHandler (Thumb, 18 bytes, Stack size 8 bytes, stm32f1xx_hal_gpio.o(.text), UNUSED) -

                                                                                                                        [Calls]

                                                                                                                        • >>   HAL_GPIO_EXTI_Callback +

                                                                                                                          HAL_GPIO_TogglePin (Thumb, 16 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text), UNUSED) + +

                                                                                                                          HAL_GPIO_LockPin (Thumb, 42 bytes, Stack size 4 bytes, stm32f1xx_hal_gpio.o(.text), UNUSED) + +

                                                                                                                          HAL_GPIO_EXTI_Callback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(.text), UNUSED) +

                                                                                                                          [Called By]

                                                                                                                          • >>   HAL_GPIO_EXTI_IRQHandler
                                                                                                                          -

                                                                                                                          HAL_DMA_Init (Thumb, 144 bytes, Stack size 4 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) - -

                                                                                                                          HAL_DMA_DeInit (Thumb, 126 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) - -

                                                                                                                          HAL_DMA_Start (Thumb, 88 bytes, Stack size 16 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) -

                                                                                                                          [Calls]

                                                                                                                          • >>   DMA_SetConfig +

                                                                                                                            HAL_GPIO_EXTI_IRQHandler (Thumb, 18 bytes, Stack size 8 bytes, stm32f1xx_hal_gpio.o(.text), UNUSED) +

                                                                                                                            [Calls]

                                                                                                                            • >>   HAL_GPIO_EXTI_Callback
                                                                                                                            -

                                                                                                                            HAL_DMA_Start_IT (Thumb, 124 bytes, Stack size 16 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) -

                                                                                                                            [Calls]

                                                                                                                            • >>   DMA_SetConfig -
                                                                                                                            -
                                                                                                                            [Called By]
                                                                                                                            • >>   HAL_SPI_Receive_DMA -
                                                                                                                            • >>   HAL_SPI_TransmitReceive_DMA -
                                                                                                                            • >>   HAL_SPI_Transmit_DMA -
                                                                                                                            • >>   HAL_UART_Receive_DMA -
                                                                                                                            • >>   HAL_UART_Transmit_DMA +

                                                                                                                              HAL_DMA_Init (Thumb, 144 bytes, Stack size 4 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) + +

                                                                                                                              HAL_DMA_DeInit (Thumb, 126 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) + +

                                                                                                                              HAL_DMA_Start (Thumb, 88 bytes, Stack size 16 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) +

                                                                                                                              [Calls]

                                                                                                                              • >>   DMA_SetConfig
                                                                                                                              -

                                                                                                                              HAL_DMA_Abort (Thumb, 72 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) -

                                                                                                                              [Called By]

                                                                                                                              • >>   HAL_SPI_DMAStop -
                                                                                                                              • >>   HAL_SPI_Abort -
                                                                                                                              • >>   HAL_UART_AbortReceive -
                                                                                                                              • >>   HAL_UART_AbortTransmit -
                                                                                                                              • >>   HAL_UART_Abort -
                                                                                                                              • >>   HAL_UART_DMAStop +

                                                                                                                                HAL_DMA_Start_IT (Thumb, 124 bytes, Stack size 16 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) +

                                                                                                                                [Calls]

                                                                                                                                • >>   DMA_SetConfig +
                                                                                                                                +
                                                                                                                                [Called By]
                                                                                                                                • >>   HAL_SPI_Receive_DMA +
                                                                                                                                • >>   HAL_SPI_TransmitReceive_DMA +
                                                                                                                                • >>   HAL_SPI_Transmit_DMA +
                                                                                                                                • >>   HAL_UART_Receive_DMA +
                                                                                                                                • >>   HAL_UART_Transmit_DMA
                                                                                                                                -

                                                                                                                                HAL_DMA_Abort_IT (Thumb, 318 bytes, Stack size 40 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) -

                                                                                                                                [Called By]

                                                                                                                                • >>   HAL_SPI_IRQHandler -
                                                                                                                                • >>   HAL_SPI_Abort_IT -
                                                                                                                                • >>   HAL_UART_IRQHandler -
                                                                                                                                • >>   HAL_UART_AbortReceive_IT -
                                                                                                                                • >>   HAL_UART_AbortTransmit_IT -
                                                                                                                                • >>   HAL_UART_Abort_IT +

                                                                                                                                  HAL_DMA_Abort (Thumb, 72 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) +

                                                                                                                                  [Called By]

                                                                                                                                  • >>   HAL_SPI_DMAStop +
                                                                                                                                  • >>   HAL_SPI_Abort +
                                                                                                                                  • >>   HAL_UART_AbortReceive +
                                                                                                                                  • >>   HAL_UART_AbortTransmit +
                                                                                                                                  • >>   HAL_UART_Abort +
                                                                                                                                  • >>   HAL_UART_DMAStop
                                                                                                                                  -

                                                                                                                                  HAL_DMA_PollForTransfer (Thumb, 1316 bytes, Stack size 56 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) -

                                                                                                                                  [Calls]

                                                                                                                                  • >>   HAL_GetTick +

                                                                                                                                    HAL_DMA_Abort_IT (Thumb, 318 bytes, Stack size 40 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) +

                                                                                                                                    [Called By]

                                                                                                                                    • >>   HAL_SPI_IRQHandler +
                                                                                                                                    • >>   HAL_SPI_Abort_IT +
                                                                                                                                    • >>   HAL_UART_IRQHandler +
                                                                                                                                    • >>   HAL_UART_AbortReceive_IT +
                                                                                                                                    • >>   HAL_UART_AbortTransmit_IT +
                                                                                                                                    • >>   HAL_UART_Abort_IT
                                                                                                                                    -

                                                                                                                                    HAL_DMA_IRQHandler (Thumb, 672 bytes, Stack size 40 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) - -

                                                                                                                                    HAL_DMA_RegisterCallback (Thumb, 80 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) - -

                                                                                                                                    HAL_DMA_UnRegisterCallback (Thumb, 86 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) - -

                                                                                                                                    HAL_DMA_GetState (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) - -

                                                                                                                                    HAL_DMA_GetError (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) -

                                                                                                                                    [Called By]

                                                                                                                                    • >>   HAL_UART_AbortReceive -
                                                                                                                                    • >>   HAL_UART_AbortTransmit -
                                                                                                                                    • >>   HAL_UART_Abort +

                                                                                                                                      HAL_DMA_PollForTransfer (Thumb, 1316 bytes, Stack size 56 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) +

                                                                                                                                      [Calls]

                                                                                                                                      • >>   HAL_GetTick
                                                                                                                                      -

                                                                                                                                      HAL_NVIC_SetPriorityGrouping (Thumb, 30 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text)) +

                                                                                                                                      HAL_DMA_IRQHandler (Thumb, 672 bytes, Stack size 40 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) + +

                                                                                                                                      HAL_DMA_RegisterCallback (Thumb, 80 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) + +

                                                                                                                                      HAL_DMA_UnRegisterCallback (Thumb, 86 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) + +

                                                                                                                                      HAL_DMA_GetState (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) + +

                                                                                                                                      HAL_DMA_GetError (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) +

                                                                                                                                      [Called By]

                                                                                                                                      • >>   HAL_UART_AbortReceive +
                                                                                                                                      • >>   HAL_UART_AbortTransmit +
                                                                                                                                      • >>   HAL_UART_Abort +
                                                                                                                                      + +

                                                                                                                                      HAL_NVIC_SetPriorityGrouping (Thumb, 30 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text))

                                                                                                                                      [Called By]

                                                                                                                                      • >>   HAL_Init
                                                                                                                                      -

                                                                                                                                      HAL_NVIC_SetPriority (Thumb, 98 bytes, Stack size 4 bytes, stm32f1xx_hal_cortex.o(.text)) +

                                                                                                                                      HAL_NVIC_SetPriority (Thumb, 98 bytes, Stack size 4 bytes, stm32f1xx_hal_cortex.o(.text))

                                                                                                                                      [Stack]

                                                                                                                                      • Max Depth = 4
                                                                                                                                      • Call Chain = HAL_NVIC_SetPriority
                                                                                                                                      -
                                                                                                                                      [Called By]
                                                                                                                                      • >>   HAL_InitTick +
                                                                                                                                        [Called By]
                                                                                                                                        • >>   HAL_InitTick
                                                                                                                                        -

                                                                                                                                        HAL_NVIC_EnableIRQ (Thumb, 28 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) +

                                                                                                                                        HAL_NVIC_EnableIRQ (Thumb, 28 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) -

                                                                                                                                        HAL_NVIC_DisableIRQ (Thumb, 36 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) +

                                                                                                                                        HAL_NVIC_DisableIRQ (Thumb, 36 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) -

                                                                                                                                        HAL_NVIC_SystemReset (Thumb, 26 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) +

                                                                                                                                        HAL_NVIC_SystemReset (Thumb, 26 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) -

                                                                                                                                        HAL_SYSTICK_Config (Thumb, 36 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text)) -

                                                                                                                                        [Called By]

                                                                                                                                        • >>   HAL_InitTick +

                                                                                                                                          HAL_SYSTICK_Config (Thumb, 36 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text)) +

                                                                                                                                          [Called By]

                                                                                                                                          • >>   HAL_InitTick
                                                                                                                                          -

                                                                                                                                          HAL_NVIC_GetPriorityGrouping (Thumb, 10 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) +

                                                                                                                                          HAL_NVIC_GetPriorityGrouping (Thumb, 10 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) -

                                                                                                                                          HAL_NVIC_GetPriority (Thumb, 94 bytes, Stack size 8 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) +

                                                                                                                                          HAL_NVIC_GetPriority (Thumb, 94 bytes, Stack size 8 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) -

                                                                                                                                          HAL_NVIC_SetPendingIRQ (Thumb, 28 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) +

                                                                                                                                          HAL_NVIC_SetPendingIRQ (Thumb, 28 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) -

                                                                                                                                          HAL_NVIC_GetPendingIRQ (Thumb, 42 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) +

                                                                                                                                          HAL_NVIC_GetPendingIRQ (Thumb, 42 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) -

                                                                                                                                          HAL_NVIC_ClearPendingIRQ (Thumb, 28 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) +

                                                                                                                                          HAL_NVIC_ClearPendingIRQ (Thumb, 28 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) -

                                                                                                                                          HAL_NVIC_GetActive (Thumb, 42 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) +

                                                                                                                                          HAL_NVIC_GetActive (Thumb, 42 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) -

                                                                                                                                          HAL_SYSTICK_CLKSourceConfig (Thumb, 28 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) +

                                                                                                                                          HAL_SYSTICK_CLKSourceConfig (Thumb, 28 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) -

                                                                                                                                          HAL_SYSTICK_Callback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) -

                                                                                                                                          [Called By]

                                                                                                                                          • >>   HAL_SYSTICK_IRQHandler +

                                                                                                                                            HAL_SYSTICK_Callback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) +

                                                                                                                                            [Called By]

                                                                                                                                            • >>   HAL_SYSTICK_IRQHandler
                                                                                                                                            -

                                                                                                                                            HAL_SYSTICK_IRQHandler (Thumb, 8 bytes, Stack size 8 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) -

                                                                                                                                            [Calls]

                                                                                                                                            • >>   HAL_SYSTICK_Callback +

                                                                                                                                              HAL_SYSTICK_IRQHandler (Thumb, 8 bytes, Stack size 8 bytes, stm32f1xx_hal_cortex.o(.text), UNUSED) +

                                                                                                                                              [Calls]

                                                                                                                                              • >>   HAL_SYSTICK_Callback
                                                                                                                                              -

                                                                                                                                              HAL_UART_Init (Thumb, 100 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(.text)) +

                                                                                                                                              HAL_UART_Init (Thumb, 100 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(.text))

                                                                                                                                              [Stack]

                                                                                                                                              • Max Depth = 88
                                                                                                                                              • Call Chain = HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_GPIO_Init
                                                                                                                                              -
                                                                                                                                              [Calls]
                                                                                                                                              • >>   HAL_UART_MspInit -
                                                                                                                                              • >>   UART_SetConfig +
                                                                                                                                                [Calls]
                                                                                                                                                • >>   HAL_UART_MspInit +
                                                                                                                                                • >>   UART_SetConfig

                                                                                                                                                [Called By]
                                                                                                                                                • >>   MX_USART1_UART_Init
                                                                                                                                                -

                                                                                                                                                HAL_HalfDuplex_Init (Thumb, 110 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                [Calls]

                                                                                                                                                • >>   HAL_UART_MspInit -
                                                                                                                                                • >>   UART_SetConfig +

                                                                                                                                                  HAL_HalfDuplex_Init (Thumb, 110 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                  [Calls]

                                                                                                                                                  • >>   HAL_UART_MspInit +
                                                                                                                                                  • >>   UART_SetConfig
                                                                                                                                                  -

                                                                                                                                                  HAL_LIN_Init (Thumb, 130 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                  [Calls]

                                                                                                                                                  • >>   HAL_UART_MspInit -
                                                                                                                                                  • >>   UART_SetConfig +

                                                                                                                                                    HAL_LIN_Init (Thumb, 130 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                    [Calls]

                                                                                                                                                    • >>   HAL_UART_MspInit +
                                                                                                                                                    • >>   UART_SetConfig
                                                                                                                                                    -

                                                                                                                                                    HAL_MultiProcessor_Init (Thumb, 146 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                    [Calls]

                                                                                                                                                    • >>   HAL_UART_MspInit -
                                                                                                                                                    • >>   UART_SetConfig +

                                                                                                                                                      HAL_MultiProcessor_Init (Thumb, 146 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                      [Calls]

                                                                                                                                                      • >>   HAL_UART_MspInit +
                                                                                                                                                      • >>   UART_SetConfig
                                                                                                                                                      -

                                                                                                                                                      HAL_UART_DeInit (Thumb, 52 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                      [Calls]

                                                                                                                                                      • >>   HAL_UART_MspDeInit +

                                                                                                                                                        HAL_UART_DeInit (Thumb, 52 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                        [Calls]

                                                                                                                                                        • >>   HAL_UART_MspDeInit
                                                                                                                                                        -

                                                                                                                                                        HAL_UART_Transmit (Thumb, 202 bytes, Stack size 32 bytes, stm32f1xx_hal_uart.o(.text)) +

                                                                                                                                                        HAL_UART_Transmit (Thumb, 202 bytes, Stack size 32 bytes, stm32f1xx_hal_uart.o(.text))

                                                                                                                                                        [Stack]

                                                                                                                                                        • Max Depth = 56
                                                                                                                                                        • Call Chain = HAL_UART_Transmit ⇒ UART_WaitOnFlagUntilTimeout
                                                                                                                                                        -
                                                                                                                                                        [Calls]
                                                                                                                                                        • >>   HAL_GetTick -
                                                                                                                                                        • >>   UART_WaitOnFlagUntilTimeout +
                                                                                                                                                          [Calls]
                                                                                                                                                          • >>   HAL_GetTick +
                                                                                                                                                          • >>   UART_WaitOnFlagUntilTimeout

                                                                                                                                                          [Called By]
                                                                                                                                                          • >>   fputc
                                                                                                                                                          -

                                                                                                                                                          HAL_UART_Receive (Thumb, 212 bytes, Stack size 32 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                          [Calls]

                                                                                                                                                          • >>   HAL_GetTick -
                                                                                                                                                          • >>   UART_WaitOnFlagUntilTimeout +

                                                                                                                                                            HAL_UART_Receive (Thumb, 212 bytes, Stack size 32 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                            [Calls]

                                                                                                                                                            • >>   HAL_GetTick +
                                                                                                                                                            • >>   UART_WaitOnFlagUntilTimeout
                                                                                                                                                            -

                                                                                                                                                            HAL_UART_Transmit_IT (Thumb, 66 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                            HAL_UART_Transmit_IT (Thumb, 66 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                            HAL_UART_Receive_IT (Thumb, 86 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                            HAL_UART_Receive_IT (Thumb, 86 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                            HAL_UART_ErrorCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text)) -

                                                                                                                                                            [Called By]

                                                                                                                                                            • >>   HAL_UART_IRQHandler +

                                                                                                                                                              HAL_UART_ErrorCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text)) +

                                                                                                                                                              [Called By]

                                                                                                                                                              • >>   HAL_UART_IRQHandler
                                                                                                                                                              • >>   UART_DMAAbortOnError
                                                                                                                                                              • >>   UART_DMAError
                                                                                                                                                              -

                                                                                                                                                              HAL_UART_TxHalfCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text)) +

                                                                                                                                                              HAL_UART_TxHalfCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text))

                                                                                                                                                              [Called By]

                                                                                                                                                              • >>   UART_DMATxHalfCplt
                                                                                                                                                              -

                                                                                                                                                              HAL_UART_TxCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text)) -

                                                                                                                                                              [Called By]

                                                                                                                                                              • >>   UART_EndTransmit_IT +

                                                                                                                                                                HAL_UART_TxCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text)) +

                                                                                                                                                                [Called By]

                                                                                                                                                                • >>   UART_EndTransmit_IT
                                                                                                                                                                • >>   UART_DMATransmitCplt
                                                                                                                                                                -

                                                                                                                                                                HAL_UART_Transmit_DMA (Thumb, 138 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                [Calls]

                                                                                                                                                                • >>   HAL_DMA_Start_IT +

                                                                                                                                                                  HAL_UART_Transmit_DMA (Thumb, 138 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                  [Calls]

                                                                                                                                                                  • >>   HAL_DMA_Start_IT
                                                                                                                                                                  -

                                                                                                                                                                  HAL_UART_RxHalfCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text)) +

                                                                                                                                                                  HAL_UART_RxHalfCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text))

                                                                                                                                                                  [Called By]

                                                                                                                                                                  • >>   UART_DMARxHalfCplt
                                                                                                                                                                  -

                                                                                                                                                                  HAL_UART_RxCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text)) -

                                                                                                                                                                  [Called By]

                                                                                                                                                                  • >>   UART_Receive_IT +

                                                                                                                                                                    HAL_UART_RxCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text)) +

                                                                                                                                                                    [Called By]

                                                                                                                                                                    • >>   UART_Receive_IT
                                                                                                                                                                    • >>   UART_DMAReceiveCplt
                                                                                                                                                                    -

                                                                                                                                                                    HAL_UART_Receive_DMA (Thumb, 150 bytes, Stack size 32 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                    [Calls]

                                                                                                                                                                    • >>   HAL_DMA_Start_IT +

                                                                                                                                                                      HAL_UART_Receive_DMA (Thumb, 150 bytes, Stack size 32 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                      [Calls]

                                                                                                                                                                      • >>   HAL_DMA_Start_IT
                                                                                                                                                                      -

                                                                                                                                                                      HAL_UART_DMAPause (Thumb, 102 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                      HAL_UART_DMAPause (Thumb, 102 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                      HAL_UART_DMAResume (Thumb, 98 bytes, Stack size 4 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                      HAL_UART_DMAResume (Thumb, 98 bytes, Stack size 4 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                      HAL_UART_DMAStop (Thumb, 88 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                      [Calls]

                                                                                                                                                                      • >>   HAL_DMA_Abort -
                                                                                                                                                                      • >>   UART_EndTxTransfer -
                                                                                                                                                                      • >>   UART_EndRxTransfer +

                                                                                                                                                                        HAL_UART_DMAStop (Thumb, 88 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                        [Calls]

                                                                                                                                                                        • >>   HAL_DMA_Abort +
                                                                                                                                                                        • >>   UART_EndTxTransfer +
                                                                                                                                                                        • >>   UART_EndRxTransfer
                                                                                                                                                                        -

                                                                                                                                                                        HAL_UART_Abort (Thumb, 148 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                        [Calls]

                                                                                                                                                                        • >>   HAL_DMA_Abort -
                                                                                                                                                                        • >>   HAL_DMA_GetError +

                                                                                                                                                                          HAL_UART_Abort (Thumb, 148 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                          [Calls]

                                                                                                                                                                          • >>   HAL_DMA_Abort +
                                                                                                                                                                          • >>   HAL_DMA_GetError
                                                                                                                                                                          -

                                                                                                                                                                          HAL_UART_AbortTransmit (Thumb, 80 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                          [Calls]

                                                                                                                                                                          • >>   HAL_DMA_Abort -
                                                                                                                                                                          • >>   HAL_DMA_GetError +

                                                                                                                                                                            HAL_UART_AbortTransmit (Thumb, 80 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                            [Calls]

                                                                                                                                                                            • >>   HAL_DMA_Abort +
                                                                                                                                                                            • >>   HAL_DMA_GetError
                                                                                                                                                                            -

                                                                                                                                                                            HAL_UART_AbortReceive (Thumb, 90 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                            [Calls]

                                                                                                                                                                            • >>   HAL_DMA_Abort -
                                                                                                                                                                            • >>   HAL_DMA_GetError +

                                                                                                                                                                              HAL_UART_AbortReceive (Thumb, 90 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                              [Calls]

                                                                                                                                                                              • >>   HAL_DMA_Abort +
                                                                                                                                                                              • >>   HAL_DMA_GetError
                                                                                                                                                                              -

                                                                                                                                                                              HAL_UART_AbortCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text)) -

                                                                                                                                                                              [Called By]

                                                                                                                                                                              • >>   HAL_UART_Abort_IT +

                                                                                                                                                                                HAL_UART_AbortCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text)) +

                                                                                                                                                                                [Called By]

                                                                                                                                                                                • >>   HAL_UART_Abort_IT
                                                                                                                                                                                • >>   UART_DMATxAbortCallback
                                                                                                                                                                                • >>   UART_DMARxAbortCallback
                                                                                                                                                                                -

                                                                                                                                                                                HAL_UART_Abort_IT (Thumb, 178 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                                [Calls]

                                                                                                                                                                                • >>   HAL_DMA_Abort_IT -
                                                                                                                                                                                • >>   HAL_UART_AbortCpltCallback +

                                                                                                                                                                                  HAL_UART_Abort_IT (Thumb, 178 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                                  [Calls]

                                                                                                                                                                                  • >>   HAL_DMA_Abort_IT +
                                                                                                                                                                                  • >>   HAL_UART_AbortCpltCallback
                                                                                                                                                                                  -

                                                                                                                                                                                  HAL_UART_AbortTransmitCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text)) -

                                                                                                                                                                                  [Called By]

                                                                                                                                                                                  • >>   HAL_UART_AbortTransmit_IT +

                                                                                                                                                                                    HAL_UART_AbortTransmitCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text)) +

                                                                                                                                                                                    [Called By]

                                                                                                                                                                                    • >>   HAL_UART_AbortTransmit_IT
                                                                                                                                                                                    • >>   UART_DMATxOnlyAbortCallback
                                                                                                                                                                                    -

                                                                                                                                                                                    HAL_UART_AbortTransmit_IT (Thumb, 94 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                                    [Calls]

                                                                                                                                                                                    • >>   HAL_DMA_Abort_IT -
                                                                                                                                                                                    • >>   HAL_UART_AbortTransmitCpltCallback +

                                                                                                                                                                                      HAL_UART_AbortTransmit_IT (Thumb, 94 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                                      [Calls]

                                                                                                                                                                                      • >>   HAL_DMA_Abort_IT +
                                                                                                                                                                                      • >>   HAL_UART_AbortTransmitCpltCallback
                                                                                                                                                                                      -

                                                                                                                                                                                      HAL_UART_AbortReceiveCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text)) -

                                                                                                                                                                                      [Called By]

                                                                                                                                                                                      • >>   HAL_UART_AbortReceive_IT +

                                                                                                                                                                                        HAL_UART_AbortReceiveCpltCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text)) +

                                                                                                                                                                                        [Called By]

                                                                                                                                                                                        • >>   HAL_UART_AbortReceive_IT
                                                                                                                                                                                        • >>   UART_DMARxOnlyAbortCallback
                                                                                                                                                                                        -

                                                                                                                                                                                        HAL_UART_AbortReceive_IT (Thumb, 104 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                                        [Calls]

                                                                                                                                                                                        • >>   HAL_DMA_Abort_IT -
                                                                                                                                                                                        • >>   HAL_UART_AbortReceiveCpltCallback +

                                                                                                                                                                                          HAL_UART_AbortReceive_IT (Thumb, 104 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                                          [Calls]

                                                                                                                                                                                          • >>   HAL_DMA_Abort_IT +
                                                                                                                                                                                          • >>   HAL_UART_AbortReceiveCpltCallback
                                                                                                                                                                                          -

                                                                                                                                                                                          HAL_UART_IRQHandler (Thumb, 312 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                                          [Calls]

                                                                                                                                                                                          • >>   HAL_DMA_Abort_IT -
                                                                                                                                                                                          • >>   HAL_UART_ErrorCallback -
                                                                                                                                                                                          • >>   UART_Receive_IT -
                                                                                                                                                                                          • >>   UART_Transmit_IT -
                                                                                                                                                                                          • >>   UART_EndTransmit_IT -
                                                                                                                                                                                          • >>   UART_EndRxTransfer +

                                                                                                                                                                                            HAL_UART_IRQHandler (Thumb, 312 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                                            [Calls]

                                                                                                                                                                                            • >>   HAL_DMA_Abort_IT +
                                                                                                                                                                                            • >>   HAL_UART_ErrorCallback +
                                                                                                                                                                                            • >>   UART_Receive_IT +
                                                                                                                                                                                            • >>   UART_Transmit_IT +
                                                                                                                                                                                            • >>   UART_EndTransmit_IT +
                                                                                                                                                                                            • >>   UART_EndRxTransfer
                                                                                                                                                                                            -

                                                                                                                                                                                            HAL_LIN_SendBreak (Thumb, 70 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                                            HAL_LIN_SendBreak (Thumb, 70 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                                            HAL_MultiProcessor_EnterMuteMode (Thumb, 50 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                                            HAL_MultiProcessor_EnterMuteMode (Thumb, 50 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                                            HAL_MultiProcessor_ExitMuteMode (Thumb, 50 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                                            HAL_MultiProcessor_ExitMuteMode (Thumb, 50 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                                            HAL_HalfDuplex_EnableTransmitter (Thumb, 54 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                                            HAL_HalfDuplex_EnableTransmitter (Thumb, 54 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                                            HAL_HalfDuplex_EnableReceiver (Thumb, 54 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                                            HAL_HalfDuplex_EnableReceiver (Thumb, 54 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                                            HAL_UART_GetState (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                                            HAL_UART_GetState (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                                            HAL_UART_GetError (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                                            HAL_UART_GetError (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                                            __aeabi_memset (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) -

                                                                                                                                                                                            [Called By]

                                                                                                                                                                                            • >>   _memset$wrapper -
                                                                                                                                                                                            • >>   __aeabi_memclr +

                                                                                                                                                                                              __aeabi_memset (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

                                                                                                                                                                                              [Called By]

                                                                                                                                                                                              • >>   _memset$wrapper +
                                                                                                                                                                                              • >>   __aeabi_memclr
                                                                                                                                                                                              -

                                                                                                                                                                                              __aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

                                                                                                                                                                                              __aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) -

                                                                                                                                                                                              __aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

                                                                                                                                                                                              __aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) -

                                                                                                                                                                                              __aeabi_memclr (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) -

                                                                                                                                                                                              [Calls]

                                                                                                                                                                                              • >>   __aeabi_memset +

                                                                                                                                                                                                __aeabi_memclr (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

                                                                                                                                                                                                [Calls]

                                                                                                                                                                                                • >>   __aeabi_memset

                                                                                                                                                                                                __aeabi_memclr4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text)) -

                                                                                                                                                                                                [Called By]

                                                                                                                                                                                                • >>   SystemClock_Config +

                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                  • >>   Paint_DrawNum +
                                                                                                                                                                                                  • >>   SystemClock_Config
                                                                                                                                                                                                  -

                                                                                                                                                                                                  __aeabi_memclr8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

                                                                                                                                                                                                  __aeabi_memclr8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) -

                                                                                                                                                                                                  _memset$wrapper (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED) -

                                                                                                                                                                                                  [Calls]

                                                                                                                                                                                                  • >>   __aeabi_memset +

                                                                                                                                                                                                    _memset$wrapper (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED) +

                                                                                                                                                                                                    [Calls]

                                                                                                                                                                                                    • >>   __aeabi_memset
                                                                                                                                                                                                    -

                                                                                                                                                                                                    __aeabi_uidiv (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED) +

                                                                                                                                                                                                    __aeabi_uidiv (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED) -

                                                                                                                                                                                                    __aeabi_uidivmod (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED) -

                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                    • >>   _printf_core +

                                                                                                                                                                                                      __aeabi_uidivmod (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED) +

                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                      • >>   _printf_core

                                                                                                                                                                                                      __scatterload (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text)) -

                                                                                                                                                                                                      [Calls]

                                                                                                                                                                                                      • >>   __main_after_scatterload +

                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                        • >>   __main_after_scatterload

                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                        • >>   _main_scatterload
                                                                                                                                                                                                        -

                                                                                                                                                                                                        __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED) +

                                                                                                                                                                                                        __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED) -

                                                                                                                                                                                                        __0printf$3 (Thumb, 22 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3), UNUSED) -

                                                                                                                                                                                                        [Calls]

                                                                                                                                                                                                        • >>   _printf_core +

                                                                                                                                                                                                          __0printf$3 (Thumb, 22 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3), UNUSED) +

                                                                                                                                                                                                          [Calls]

                                                                                                                                                                                                          • >>   _printf_core
                                                                                                                                                                                                          -

                                                                                                                                                                                                          __1printf$3 (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3), UNUSED) +

                                                                                                                                                                                                          __1printf$3 (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3), UNUSED)

                                                                                                                                                                                                          __2printf (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3))

                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                          • Max Depth = 24
                                                                                                                                                                                                          • Call Chain = __2printf
                                                                                                                                                                                                          -
                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                          • >>   HardFault_Handler +
                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                            • >>   Paint_SetScale +
                                                                                                                                                                                                            • >>   Paint_DrawString_EN +
                                                                                                                                                                                                            • >>   Paint_DrawRectangle +
                                                                                                                                                                                                            • >>   Paint_DrawPoint +
                                                                                                                                                                                                            • >>   Paint_DrawNum +
                                                                                                                                                                                                            • >>   Paint_DrawLine +
                                                                                                                                                                                                            • >>   Paint_DrawCircle +
                                                                                                                                                                                                            • >>   HardFault_Handler +
                                                                                                                                                                                                            • >>   EPD_4in2_test
                                                                                                                                                                                                            • >>   Error_Handler +
                                                                                                                                                                                                            • >>   Paint_SetMirroring +
                                                                                                                                                                                                            • >>   Paint_DrawChar +
                                                                                                                                                                                                            • >>   Paint_SetPixel +
                                                                                                                                                                                                            • >>   Paint_SetRotate +
                                                                                                                                                                                                            • >>   EPD_4IN2_ReadBusy
                                                                                                                                                                                                            -

                                                                                                                                                                                                            __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) +

                                                                                                                                                                                                            __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) -

                                                                                                                                                                                                            __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) +

                                                                                                                                                                                                            __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) -

                                                                                                                                                                                                            __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) +

                                                                                                                                                                                                            __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) + +

                                                                                                                                                                                                            free (Thumb, 76 bytes, Stack size 8 bytes, malloc.o(i.free)) +

                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                            • Max Depth = 8
                                                                                                                                                                                                            • Call Chain = free +
                                                                                                                                                                                                            +
                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                            • >>   EPD_4in2_test +
                                                                                                                                                                                                            + +

                                                                                                                                                                                                            malloc (Thumb, 92 bytes, Stack size 20 bytes, malloc.o(i.malloc)) +

                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                            • Max Depth = 20
                                                                                                                                                                                                            • Call Chain = malloc +
                                                                                                                                                                                                            +
                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                            • >>   EPD_4in2_test +

                                                                                                                                                                                                            Local Symbols

                                                                                                                                                                                                            -

                                                                                                                                                                                                            SPI_WaitFlagStateUntilTimeout (Thumb, 210 bytes, Stack size 32 bytes, stm32f1xx_hal_spi.o(.text)) -

                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                            • Max Depth = 32
                                                                                                                                                                                                            • Call Chain = SPI_WaitFlagStateUntilTimeout +

                                                                                                                                                                                                              EPD_4IN2_Reset (Thumb, 104 bytes, Stack size 8 bytes, epd_4in2.o(.text)) +

                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                              • Max Depth = 24
                                                                                                                                                                                                              • Call Chain = EPD_4IN2_Reset ⇒ HAL_Delay
                                                                                                                                                                                                              -
                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                              • >>   HAL_GetTick +
                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                • >>   HAL_Delay
                                                                                                                                                                                                                -
                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                • >>   SPI_EndRxTransaction -
                                                                                                                                                                                                                • >>   SPI_EndRxTxTransaction +
                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                  • >>   EPD_4IN2_init_LUT_Fast +
                                                                                                                                                                                                                  • >>   EPD_4IN2_Init_4Gray +
                                                                                                                                                                                                                  • >>   EPD_4IN2_Init_LUT_Partia
                                                                                                                                                                                                                  -

                                                                                                                                                                                                                  SPI_EndRxTxTransaction (Thumb, 36 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text)) +

                                                                                                                                                                                                                  EPD_4IN2_SendCommand (Thumb, 46 bytes, Stack size 16 bytes, epd_4in2.o(.text)) +

                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                  • Max Depth = 112
                                                                                                                                                                                                                  • Call Chain = EPD_4IN2_SendCommand ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                                                  +
                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                  • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                  • >>   DEV_SPI_WriteByte +
                                                                                                                                                                                                                  +
                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                  • >>   EPD_4IN2_init_LUT_Fast +
                                                                                                                                                                                                                  • >>   EPD_4IN2_Sleep +
                                                                                                                                                                                                                  • >>   EPD_4IN2_Init_4Gray +
                                                                                                                                                                                                                  • >>   EPD_4IN2_Display +
                                                                                                                                                                                                                  • >>   EPD_4IN2_Clear +
                                                                                                                                                                                                                  • >>   EPD_4IN2_4GrayDisplay +
                                                                                                                                                                                                                  • >>   EPD_4IN2_PartialDisplay +
                                                                                                                                                                                                                  • >>   EPD_4IN2_Init_LUT_Partia +
                                                                                                                                                                                                                  • >>   EPD_4IN2_ReadBusy +
                                                                                                                                                                                                                  • >>   EPD_4IN2_4Gray_lut +
                                                                                                                                                                                                                  • >>   EPD_4IN2_SetLut +
                                                                                                                                                                                                                  • >>   EPD_4IN2_Partial_SetLut +
                                                                                                                                                                                                                  • >>   EPD_4IN2_TurnOnDisplay +
                                                                                                                                                                                                                  + +

                                                                                                                                                                                                                  EPD_4IN2_SendData (Thumb, 46 bytes, Stack size 16 bytes, epd_4in2.o(.text)) +

                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                  • Max Depth = 112
                                                                                                                                                                                                                  • Call Chain = EPD_4IN2_SendData ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                                                  +
                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                  • >>   HAL_GPIO_WritePin +
                                                                                                                                                                                                                  • >>   DEV_SPI_WriteByte +
                                                                                                                                                                                                                  +
                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                  • >>   EPD_4IN2_init_LUT_Fast +
                                                                                                                                                                                                                  • >>   EPD_4IN2_Sleep +
                                                                                                                                                                                                                  • >>   EPD_4IN2_Init_4Gray +
                                                                                                                                                                                                                  • >>   EPD_4IN2_Display +
                                                                                                                                                                                                                  • >>   EPD_4IN2_Clear +
                                                                                                                                                                                                                  • >>   EPD_4IN2_4GrayDisplay +
                                                                                                                                                                                                                  • >>   EPD_4IN2_PartialDisplay +
                                                                                                                                                                                                                  • >>   EPD_4IN2_Init_LUT_Partia +
                                                                                                                                                                                                                  • >>   EPD_4IN2_4Gray_lut +
                                                                                                                                                                                                                  • >>   EPD_4IN2_SetLut +
                                                                                                                                                                                                                  • >>   EPD_4IN2_Partial_SetLut +
                                                                                                                                                                                                                  + +

                                                                                                                                                                                                                  EPD_4IN2_TurnOnDisplay (Thumb, 20 bytes, Stack size 8 bytes, epd_4in2.o(.text)) +

                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                  • Max Depth = 128
                                                                                                                                                                                                                  • Call Chain = EPD_4IN2_TurnOnDisplay ⇒ EPD_4IN2_ReadBusy ⇒ EPD_4IN2_SendCommand ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                                                  +
                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                  • >>   HAL_Delay +
                                                                                                                                                                                                                  • >>   EPD_4IN2_ReadBusy +
                                                                                                                                                                                                                  • >>   EPD_4IN2_SendCommand +
                                                                                                                                                                                                                  +
                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                  • >>   EPD_4IN2_Display +
                                                                                                                                                                                                                  • >>   EPD_4IN2_Clear +
                                                                                                                                                                                                                  • >>   EPD_4IN2_4GrayDisplay +
                                                                                                                                                                                                                  • >>   EPD_4IN2_PartialDisplay +
                                                                                                                                                                                                                  + +

                                                                                                                                                                                                                  EPD_4IN2_Partial_SetLut (Thumb, 122 bytes, Stack size 16 bytes, epd_4in2.o(.text), UNUSED) +

                                                                                                                                                                                                                  [Calls]

                                                                                                                                                                                                                  • >>   EPD_4IN2_SendData +
                                                                                                                                                                                                                  • >>   EPD_4IN2_SendCommand +
                                                                                                                                                                                                                  +
                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                  • >>   EPD_4IN2_Init_LUT_Partia +
                                                                                                                                                                                                                  + +

                                                                                                                                                                                                                  EPD_4IN2_SetLut (Thumb, 124 bytes, Stack size 16 bytes, epd_4in2.o(.text)) +

                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                  • Max Depth = 128
                                                                                                                                                                                                                  • Call Chain = EPD_4IN2_SetLut ⇒ EPD_4IN2_SendData ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                                                  +
                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                  • >>   EPD_4IN2_SendData +
                                                                                                                                                                                                                  • >>   EPD_4IN2_SendCommand +
                                                                                                                                                                                                                  +
                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                  • >>   EPD_4IN2_init_LUT_Fast +
                                                                                                                                                                                                                  + +

                                                                                                                                                                                                                  EPD_4IN2_4Gray_lut (Thumb, 142 bytes, Stack size 16 bytes, epd_4in2.o(.text)) +

                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                  • Max Depth = 128
                                                                                                                                                                                                                  • Call Chain = EPD_4IN2_4Gray_lut ⇒ EPD_4IN2_SendData ⇒ DEV_SPI_WriteByte ⇒ HAL_SPI_Transmit ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                                                  +
                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                  • >>   EPD_4IN2_SendData +
                                                                                                                                                                                                                  • >>   EPD_4IN2_SendCommand +
                                                                                                                                                                                                                  +
                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                  • >>   EPD_4IN2_4GrayDisplay +
                                                                                                                                                                                                                  + +

                                                                                                                                                                                                                  SPI_WaitFlagStateUntilTimeout (Thumb, 210 bytes, Stack size 32 bytes, stm32f1xx_hal_spi.o(.text)) +

                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                  • Max Depth = 32
                                                                                                                                                                                                                  • Call Chain = SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                                                  +
                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                  • >>   HAL_GetTick +
                                                                                                                                                                                                                  +
                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                  • >>   SPI_EndRxTransaction +
                                                                                                                                                                                                                  • >>   SPI_EndRxTxTransaction +
                                                                                                                                                                                                                  + +

                                                                                                                                                                                                                  SPI_EndRxTxTransaction (Thumb, 36 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                  • Max Depth = 48
                                                                                                                                                                                                                  • Call Chain = SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                                                                                                                                                                                                                  -
                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                  • >>   SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                    • >>   SPI_WaitFlagStateUntilTimeout
                                                                                                                                                                                                                    -
                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                    • >>   HAL_SPI_TransmitReceive +
                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                      • >>   HAL_SPI_TransmitReceive
                                                                                                                                                                                                                      • >>   SPI_DMARxAbortCallback
                                                                                                                                                                                                                      • >>   SPI_DMATransmitReceiveCplt
                                                                                                                                                                                                                      • >>   SPI_DMATransmitCplt -
                                                                                                                                                                                                                      • >>   SPI_CloseRxTx_ISR -
                                                                                                                                                                                                                      • >>   SPI_CloseTx_ISR -
                                                                                                                                                                                                                      • >>   HAL_SPI_Transmit +
                                                                                                                                                                                                                      • >>   SPI_CloseRxTx_ISR +
                                                                                                                                                                                                                      • >>   SPI_CloseTx_ISR +
                                                                                                                                                                                                                      • >>   HAL_SPI_Transmit
                                                                                                                                                                                                                      -

                                                                                                                                                                                                                      SPI_EndRxTransaction (Thumb, 112 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text)) +

                                                                                                                                                                                                                      SPI_EndRxTransaction (Thumb, 112 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                      • Max Depth = 48
                                                                                                                                                                                                                      • Call Chain = SPI_EndRxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                                                                                                                                                                                                                      -
                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                      • >>   SPI_WaitFlagStateUntilTimeout +
                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                        • >>   SPI_WaitFlagStateUntilTimeout
                                                                                                                                                                                                                        -
                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                        • >>   HAL_SPI_Receive +
                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                          • >>   HAL_SPI_Receive
                                                                                                                                                                                                                          • >>   SPI_DMAReceiveCplt -
                                                                                                                                                                                                                          • >>   SPI_CloseRx_ISR +
                                                                                                                                                                                                                          • >>   SPI_CloseRx_ISR
                                                                                                                                                                                                                          -

                                                                                                                                                                                                                          SPI_CloseTx_ISR (Thumb, 130 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text)) +

                                                                                                                                                                                                                          SPI_CloseTx_ISR (Thumb, 130 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                          • Max Depth = 64
                                                                                                                                                                                                                          • Call Chain = SPI_CloseTx_ISR ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                                                                                                                                                                                                                          -
                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                          • >>   HAL_SPI_ErrorCallback -
                                                                                                                                                                                                                          • >>   HAL_SPI_TxCpltCallback -
                                                                                                                                                                                                                          • >>   HAL_GetTick -
                                                                                                                                                                                                                          • >>   SPI_EndRxTxTransaction +
                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                            • >>   HAL_SPI_ErrorCallback +
                                                                                                                                                                                                                            • >>   HAL_SPI_TxCpltCallback +
                                                                                                                                                                                                                            • >>   HAL_GetTick +
                                                                                                                                                                                                                            • >>   SPI_EndRxTxTransaction

                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                            • >>   SPI_TxISR_16BIT
                                                                                                                                                                                                                            • >>   SPI_TxISR_8BIT @@ -1187,24 +1614,24 @@ Local Symbols

                                                                                                                                                                                                                              SPI_TxISR_8BIT (Thumb, 30 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                              • Max Depth = 64
                                                                                                                                                                                                                              • Call Chain = SPI_TxISR_8BIT ⇒ SPI_CloseTx_ISR ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                                                                                                                                                                                                                              -
                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                              • >>   SPI_CloseTx_ISR +
                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                • >>   SPI_CloseTx_ISR

                                                                                                                                                                                                                                [Address Reference Count : 1]
                                                                                                                                                                                                                                • stm32f1xx_hal_spi.o(.text)

                                                                                                                                                                                                                                SPI_TxISR_16BIT (Thumb, 30 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                • Max Depth = 64
                                                                                                                                                                                                                                • Call Chain = SPI_TxISR_16BIT ⇒ SPI_CloseTx_ISR ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                • >>   SPI_CloseTx_ISR +
                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                  • >>   SPI_CloseTx_ISR

                                                                                                                                                                                                                                  [Address Reference Count : 1]
                                                                                                                                                                                                                                  • stm32f1xx_hal_spi.o(.text)
                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                  SPI_CloseRx_ISR (Thumb, 76 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text)) +

                                                                                                                                                                                                                                  SPI_CloseRx_ISR (Thumb, 76 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                  • Max Depth = 64
                                                                                                                                                                                                                                  • Call Chain = SPI_CloseRx_ISR ⇒ SPI_EndRxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                  • >>   HAL_SPI_RxCpltCallback -
                                                                                                                                                                                                                                  • >>   HAL_SPI_ErrorCallback -
                                                                                                                                                                                                                                  • >>   HAL_GetTick -
                                                                                                                                                                                                                                  • >>   SPI_EndRxTransaction +
                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                    • >>   HAL_SPI_RxCpltCallback +
                                                                                                                                                                                                                                    • >>   HAL_SPI_ErrorCallback +
                                                                                                                                                                                                                                    • >>   HAL_GetTick +
                                                                                                                                                                                                                                    • >>   SPI_EndRxTransaction

                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                    • >>   SPI_RxISR_16BIT
                                                                                                                                                                                                                                    • >>   SPI_RxISR_8BIT @@ -1213,25 +1640,25 @@ Local Symbols

                                                                                                                                                                                                                                      SPI_RxISR_8BIT (Thumb, 30 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                      • Max Depth = 64
                                                                                                                                                                                                                                      • Call Chain = SPI_RxISR_8BIT ⇒ SPI_CloseRx_ISR ⇒ SPI_EndRxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                      • >>   SPI_CloseRx_ISR +
                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                        • >>   SPI_CloseRx_ISR

                                                                                                                                                                                                                                        [Address Reference Count : 1]
                                                                                                                                                                                                                                        • stm32f1xx_hal_spi.o(.text)

                                                                                                                                                                                                                                        SPI_RxISR_16BIT (Thumb, 30 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                        • Max Depth = 64
                                                                                                                                                                                                                                        • Call Chain = SPI_RxISR_16BIT ⇒ SPI_CloseRx_ISR ⇒ SPI_EndRxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                        • >>   SPI_CloseRx_ISR +
                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                          • >>   SPI_CloseRx_ISR

                                                                                                                                                                                                                                          [Address Reference Count : 1]
                                                                                                                                                                                                                                          • stm32f1xx_hal_spi.o(.text)
                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                          SPI_CloseRxTx_ISR (Thumb, 158 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text)) +

                                                                                                                                                                                                                                          SPI_CloseRxTx_ISR (Thumb, 158 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                          • Max Depth = 64
                                                                                                                                                                                                                                          • Call Chain = SPI_CloseRxTx_ISR ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                          • >>   HAL_SPI_TxRxCpltCallback -
                                                                                                                                                                                                                                          • >>   HAL_SPI_RxCpltCallback -
                                                                                                                                                                                                                                          • >>   HAL_SPI_ErrorCallback -
                                                                                                                                                                                                                                          • >>   HAL_GetTick -
                                                                                                                                                                                                                                          • >>   SPI_EndRxTxTransaction +
                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                            • >>   HAL_SPI_TxRxCpltCallback +
                                                                                                                                                                                                                                            • >>   HAL_SPI_RxCpltCallback +
                                                                                                                                                                                                                                            • >>   HAL_SPI_ErrorCallback +
                                                                                                                                                                                                                                            • >>   HAL_GetTick +
                                                                                                                                                                                                                                            • >>   SPI_EndRxTxTransaction

                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                            • >>   SPI_2linesRxISR_16BIT
                                                                                                                                                                                                                                            • >>   SPI_2linesTxISR_16BIT @@ -1242,86 +1669,86 @@ Local Symbols

                                                                                                                                                                                                                                              SPI_2linesTxISR_8BIT (Thumb, 46 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                              • Max Depth = 64
                                                                                                                                                                                                                                              • Call Chain = SPI_2linesTxISR_8BIT ⇒ SPI_CloseRxTx_ISR ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                              • >>   SPI_CloseRxTx_ISR +
                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                • >>   SPI_CloseRxTx_ISR

                                                                                                                                                                                                                                                [Address Reference Count : 1]
                                                                                                                                                                                                                                                • stm32f1xx_hal_spi.o(.text)

                                                                                                                                                                                                                                                SPI_2linesRxISR_8BIT (Thumb, 46 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                • Max Depth = 64
                                                                                                                                                                                                                                                • Call Chain = SPI_2linesRxISR_8BIT ⇒ SPI_CloseRxTx_ISR ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                • >>   SPI_CloseRxTx_ISR +
                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                  • >>   SPI_CloseRxTx_ISR

                                                                                                                                                                                                                                                  [Address Reference Count : 1]
                                                                                                                                                                                                                                                  • stm32f1xx_hal_spi.o(.text)

                                                                                                                                                                                                                                                  SPI_2linesTxISR_16BIT (Thumb, 46 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                  • Max Depth = 64
                                                                                                                                                                                                                                                  • Call Chain = SPI_2linesTxISR_16BIT ⇒ SPI_CloseRxTx_ISR ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                  • >>   SPI_CloseRxTx_ISR +
                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                    • >>   SPI_CloseRxTx_ISR

                                                                                                                                                                                                                                                    [Address Reference Count : 1]
                                                                                                                                                                                                                                                    • stm32f1xx_hal_spi.o(.text)

                                                                                                                                                                                                                                                    SPI_2linesRxISR_16BIT (Thumb, 46 bytes, Stack size 0 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                    • Max Depth = 64
                                                                                                                                                                                                                                                    • Call Chain = SPI_2linesRxISR_16BIT ⇒ SPI_CloseRxTx_ISR ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                    • >>   SPI_CloseRxTx_ISR +
                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                      • >>   SPI_CloseRxTx_ISR

                                                                                                                                                                                                                                                      [Address Reference Count : 1]
                                                                                                                                                                                                                                                      • stm32f1xx_hal_spi.o(.text)

                                                                                                                                                                                                                                                      SPI_DMAError (Thumb, 34 bytes, Stack size 8 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                      • Max Depth = 8
                                                                                                                                                                                                                                                      • Call Chain = SPI_DMAError
                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                      • >>   HAL_SPI_ErrorCallback +
                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                        • >>   HAL_SPI_ErrorCallback

                                                                                                                                                                                                                                                        [Address Reference Count : 1]
                                                                                                                                                                                                                                                        • stm32f1xx_hal_spi.o(.text)

                                                                                                                                                                                                                                                        SPI_DMATransmitCplt (Thumb, 102 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                        • Max Depth = 64
                                                                                                                                                                                                                                                        • Call Chain = SPI_DMATransmitCplt ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                        • >>   HAL_SPI_ErrorCallback -
                                                                                                                                                                                                                                                        • >>   HAL_SPI_TxCpltCallback -
                                                                                                                                                                                                                                                        • >>   HAL_GetTick -
                                                                                                                                                                                                                                                        • >>   SPI_EndRxTxTransaction +
                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                          • >>   HAL_SPI_ErrorCallback +
                                                                                                                                                                                                                                                          • >>   HAL_SPI_TxCpltCallback +
                                                                                                                                                                                                                                                          • >>   HAL_GetTick +
                                                                                                                                                                                                                                                          • >>   SPI_EndRxTxTransaction

                                                                                                                                                                                                                                                          [Address Reference Count : 1]
                                                                                                                                                                                                                                                          • stm32f1xx_hal_spi.o(.text)

                                                                                                                                                                                                                                                          SPI_DMAHalfTransmitCplt (Thumb, 10 bytes, Stack size 8 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                          • Max Depth = 8
                                                                                                                                                                                                                                                          • Call Chain = SPI_DMAHalfTransmitCplt
                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                          • >>   HAL_SPI_TxHalfCpltCallback +
                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                            • >>   HAL_SPI_TxHalfCpltCallback

                                                                                                                                                                                                                                                            [Address Reference Count : 1]
                                                                                                                                                                                                                                                            • stm32f1xx_hal_spi.o(.text)

                                                                                                                                                                                                                                                            SPI_DMAReceiveCplt (Thumb, 110 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                            • Max Depth = 64
                                                                                                                                                                                                                                                            • Call Chain = SPI_DMAReceiveCplt ⇒ SPI_EndRxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                            • >>   HAL_SPI_RxCpltCallback -
                                                                                                                                                                                                                                                            • >>   HAL_SPI_ErrorCallback -
                                                                                                                                                                                                                                                            • >>   HAL_GetTick -
                                                                                                                                                                                                                                                            • >>   SPI_EndRxTransaction +
                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                              • >>   HAL_SPI_RxCpltCallback +
                                                                                                                                                                                                                                                              • >>   HAL_SPI_ErrorCallback +
                                                                                                                                                                                                                                                              • >>   HAL_GetTick +
                                                                                                                                                                                                                                                              • >>   SPI_EndRxTransaction

                                                                                                                                                                                                                                                              [Address Reference Count : 1]
                                                                                                                                                                                                                                                              • stm32f1xx_hal_spi.o(.text)

                                                                                                                                                                                                                                                              SPI_DMAHalfReceiveCplt (Thumb, 10 bytes, Stack size 8 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                              • Max Depth = 8
                                                                                                                                                                                                                                                              • Call Chain = SPI_DMAHalfReceiveCplt
                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                              • >>   HAL_SPI_RxHalfCpltCallback +
                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                • >>   HAL_SPI_RxHalfCpltCallback

                                                                                                                                                                                                                                                                [Address Reference Count : 1]
                                                                                                                                                                                                                                                                • stm32f1xx_hal_spi.o(.text)

                                                                                                                                                                                                                                                                SPI_DMATransmitReceiveCplt (Thumb, 92 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                • Max Depth = 64
                                                                                                                                                                                                                                                                • Call Chain = SPI_DMATransmitReceiveCplt ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                • >>   HAL_SPI_TxRxCpltCallback -
                                                                                                                                                                                                                                                                • >>   HAL_SPI_ErrorCallback -
                                                                                                                                                                                                                                                                • >>   HAL_GetTick -
                                                                                                                                                                                                                                                                • >>   SPI_EndRxTxTransaction +
                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                  • >>   HAL_SPI_TxRxCpltCallback +
                                                                                                                                                                                                                                                                  • >>   HAL_SPI_ErrorCallback +
                                                                                                                                                                                                                                                                  • >>   HAL_GetTick +
                                                                                                                                                                                                                                                                  • >>   SPI_EndRxTxTransaction

                                                                                                                                                                                                                                                                  [Address Reference Count : 1]
                                                                                                                                                                                                                                                                  • stm32f1xx_hal_spi.o(.text)

                                                                                                                                                                                                                                                                  SPI_DMAHalfTransmitReceiveCplt (Thumb, 10 bytes, Stack size 8 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                  • Max Depth = 8
                                                                                                                                                                                                                                                                  • Call Chain = SPI_DMAHalfTransmitReceiveCplt
                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                  • >>   HAL_SPI_TxRxHalfCpltCallback +
                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                    • >>   HAL_SPI_TxRxHalfCpltCallback

                                                                                                                                                                                                                                                                    [Address Reference Count : 1]
                                                                                                                                                                                                                                                                    • stm32f1xx_hal_spi.o(.text)
                                                                                                                                                                                                                                                                    @@ -1336,161 +1763,161 @@ Local Symbols

                                                                                                                                                                                                                                                                    SPI_DMARxAbortCallback (Thumb, 98 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                    • Max Depth = 64
                                                                                                                                                                                                                                                                    • Call Chain = SPI_DMARxAbortCallback ⇒ SPI_EndRxTxTransaction ⇒ SPI_WaitFlagStateUntilTimeout
                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                    • >>   HAL_SPI_AbortCpltCallback -
                                                                                                                                                                                                                                                                    • >>   HAL_GetTick -
                                                                                                                                                                                                                                                                    • >>   SPI_EndRxTxTransaction +
                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                      • >>   HAL_GetTick +
                                                                                                                                                                                                                                                                      • >>   SPI_EndRxTxTransaction +
                                                                                                                                                                                                                                                                      • >>   HAL_SPI_AbortCpltCallback

                                                                                                                                                                                                                                                                      [Address Reference Count : 1]
                                                                                                                                                                                                                                                                      • stm32f1xx_hal_spi.o(.text)

                                                                                                                                                                                                                                                                      SPI_DMATxAbortCallback (Thumb, 114 bytes, Stack size 16 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                      • Max Depth = 16
                                                                                                                                                                                                                                                                      • Call Chain = SPI_DMATxAbortCallback
                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                      • >>   HAL_SPI_AbortCpltCallback +
                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                        • >>   HAL_SPI_AbortCpltCallback

                                                                                                                                                                                                                                                                        [Address Reference Count : 1]
                                                                                                                                                                                                                                                                        • stm32f1xx_hal_spi.o(.text)

                                                                                                                                                                                                                                                                        SPI_DMAAbortOnError (Thumb, 16 bytes, Stack size 8 bytes, stm32f1xx_hal_spi.o(.text))

                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                        • Max Depth = 8
                                                                                                                                                                                                                                                                        • Call Chain = SPI_DMAAbortOnError
                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                        • >>   HAL_SPI_ErrorCallback +
                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                          • >>   HAL_SPI_ErrorCallback

                                                                                                                                                                                                                                                                          [Address Reference Count : 1]
                                                                                                                                                                                                                                                                          • stm32f1xx_hal_spi.o(.text)
                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                          RCC_Delay (Thumb, 32 bytes, Stack size 4 bytes, stm32f1xx_hal_rcc.o(.text)) +

                                                                                                                                                                                                                                                                          RCC_Delay (Thumb, 32 bytes, Stack size 4 bytes, stm32f1xx_hal_rcc.o(.text))

                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                          • Max Depth = 4
                                                                                                                                                                                                                                                                          • Call Chain = RCC_Delay

                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                          • >>   HAL_RCC_OscConfig
                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                          DMA_SetConfig (Thumb, 56 bytes, Stack size 4 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) -

                                                                                                                                                                                                                                                                          [Called By]

                                                                                                                                                                                                                                                                          • >>   HAL_DMA_Start_IT -
                                                                                                                                                                                                                                                                          • >>   HAL_DMA_Start +

                                                                                                                                                                                                                                                                            DMA_SetConfig (Thumb, 56 bytes, Stack size 4 bytes, stm32f1xx_hal_dma.o(.text), UNUSED) +

                                                                                                                                                                                                                                                                            [Called By]

                                                                                                                                                                                                                                                                            • >>   HAL_DMA_Start_IT +
                                                                                                                                                                                                                                                                            • >>   HAL_DMA_Start
                                                                                                                                                                                                                                                                            -

                                                                                                                                                                                                                                                                            UART_SetConfig (Thumb, 194 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(.text)) +

                                                                                                                                                                                                                                                                            UART_SetConfig (Thumb, 194 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(.text))

                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                            • Max Depth = 20
                                                                                                                                                                                                                                                                            • Call Chain = UART_SetConfig ⇒ HAL_RCC_GetPCLK2Freq
                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                            • >>   HAL_RCC_GetPCLK2Freq -
                                                                                                                                                                                                                                                                            • >>   HAL_RCC_GetPCLK1Freq +
                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                              • >>   HAL_RCC_GetPCLK2Freq +
                                                                                                                                                                                                                                                                              • >>   HAL_RCC_GetPCLK1Freq
                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                              • >>   HAL_UART_Init -
                                                                                                                                                                                                                                                                              • >>   HAL_MultiProcessor_Init -
                                                                                                                                                                                                                                                                              • >>   HAL_LIN_Init -
                                                                                                                                                                                                                                                                              • >>   HAL_HalfDuplex_Init +
                                                                                                                                                                                                                                                                                [Called By]
                                                                                                                                                                                                                                                                                • >>   HAL_UART_Init +
                                                                                                                                                                                                                                                                                • >>   HAL_MultiProcessor_Init +
                                                                                                                                                                                                                                                                                • >>   HAL_LIN_Init +
                                                                                                                                                                                                                                                                                • >>   HAL_HalfDuplex_Init
                                                                                                                                                                                                                                                                                -

                                                                                                                                                                                                                                                                                UART_WaitOnFlagUntilTimeout (Thumb, 120 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(.text)) +

                                                                                                                                                                                                                                                                                UART_WaitOnFlagUntilTimeout (Thumb, 120 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(.text))

                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                • Max Depth = 24
                                                                                                                                                                                                                                                                                • Call Chain = UART_WaitOnFlagUntilTimeout
                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                • >>   HAL_GetTick +
                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                  • >>   HAL_GetTick
                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                  [Called By]
                                                                                                                                                                                                                                                                                  • >>   HAL_UART_Transmit -
                                                                                                                                                                                                                                                                                  • >>   HAL_UART_Receive +
                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                    • >>   HAL_UART_Transmit +
                                                                                                                                                                                                                                                                                    • >>   HAL_UART_Receive
                                                                                                                                                                                                                                                                                    -

                                                                                                                                                                                                                                                                                    UART_EndRxTransfer (Thumb, 28 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text)) -

                                                                                                                                                                                                                                                                                    [Called By]

                                                                                                                                                                                                                                                                                    • >>   HAL_UART_IRQHandler -
                                                                                                                                                                                                                                                                                    • >>   HAL_UART_DMAStop +

                                                                                                                                                                                                                                                                                      UART_EndRxTransfer (Thumb, 28 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text)) +

                                                                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                                                                      • >>   HAL_UART_IRQHandler +
                                                                                                                                                                                                                                                                                      • >>   HAL_UART_DMAStop
                                                                                                                                                                                                                                                                                      • >>   UART_DMAError
                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                      UART_EndTxTransfer (Thumb, 18 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text)) -

                                                                                                                                                                                                                                                                                      [Called By]

                                                                                                                                                                                                                                                                                      • >>   HAL_UART_DMAStop +

                                                                                                                                                                                                                                                                                        UART_EndTxTransfer (Thumb, 18 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text)) +

                                                                                                                                                                                                                                                                                        [Called By]

                                                                                                                                                                                                                                                                                        • >>   HAL_UART_DMAStop
                                                                                                                                                                                                                                                                                        • >>   UART_DMAError

                                                                                                                                                                                                                                                                                        UART_DMAError (Thumb, 74 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(.text))

                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                        • Max Depth = 16
                                                                                                                                                                                                                                                                                        • Call Chain = UART_DMAError
                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                        • >>   HAL_UART_ErrorCallback -
                                                                                                                                                                                                                                                                                        • >>   UART_EndTxTransfer -
                                                                                                                                                                                                                                                                                        • >>   UART_EndRxTransfer +
                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                          • >>   HAL_UART_ErrorCallback +
                                                                                                                                                                                                                                                                                          • >>   UART_EndTxTransfer +
                                                                                                                                                                                                                                                                                          • >>   UART_EndRxTransfer

                                                                                                                                                                                                                                                                                          [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                          • stm32f1xx_hal_uart.o(.text)

                                                                                                                                                                                                                                                                                          UART_DMATxHalfCplt (Thumb, 10 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text))

                                                                                                                                                                                                                                                                                          [Stack]

                                                                                                                                                                                                                                                                                          • Max Depth = 8
                                                                                                                                                                                                                                                                                          • Call Chain = UART_DMATxHalfCplt
                                                                                                                                                                                                                                                                                          -
                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                          • >>   HAL_UART_TxHalfCpltCallback +
                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                            • >>   HAL_UART_TxHalfCpltCallback

                                                                                                                                                                                                                                                                                            [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                            • stm32f1xx_hal_uart.o(.text)

                                                                                                                                                                                                                                                                                            UART_DMATransmitCplt (Thumb, 48 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text))

                                                                                                                                                                                                                                                                                            [Stack]

                                                                                                                                                                                                                                                                                            • Max Depth = 8
                                                                                                                                                                                                                                                                                            • Call Chain = UART_DMATransmitCplt
                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                            [Calls]
                                                                                                                                                                                                                                                                                            • >>   HAL_UART_TxCpltCallback +
                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                              • >>   HAL_UART_TxCpltCallback

                                                                                                                                                                                                                                                                                              [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                              • stm32f1xx_hal_uart.o(.text)

                                                                                                                                                                                                                                                                                              UART_DMARxHalfCplt (Thumb, 10 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text))

                                                                                                                                                                                                                                                                                              [Stack]

                                                                                                                                                                                                                                                                                              • Max Depth = 8
                                                                                                                                                                                                                                                                                              • Call Chain = UART_DMARxHalfCplt
                                                                                                                                                                                                                                                                                              -
                                                                                                                                                                                                                                                                                              [Calls]
                                                                                                                                                                                                                                                                                              • >>   HAL_UART_RxHalfCpltCallback +
                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                • >>   HAL_UART_RxHalfCpltCallback

                                                                                                                                                                                                                                                                                                [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                • stm32f1xx_hal_uart.o(.text)

                                                                                                                                                                                                                                                                                                UART_DMAReceiveCplt (Thumb, 62 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text))

                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                • Max Depth = 8
                                                                                                                                                                                                                                                                                                • Call Chain = UART_DMAReceiveCplt
                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                • >>   HAL_UART_RxCpltCallback +
                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                  • >>   HAL_UART_RxCpltCallback

                                                                                                                                                                                                                                                                                                  [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                  • stm32f1xx_hal_uart.o(.text)

                                                                                                                                                                                                                                                                                                  UART_DMARxAbortCallback (Thumb, 44 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text))

                                                                                                                                                                                                                                                                                                  [Stack]

                                                                                                                                                                                                                                                                                                  • Max Depth = 8
                                                                                                                                                                                                                                                                                                  • Call Chain = UART_DMARxAbortCallback
                                                                                                                                                                                                                                                                                                  -
                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                  • >>   HAL_UART_AbortCpltCallback +
                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                    • >>   HAL_UART_AbortCpltCallback

                                                                                                                                                                                                                                                                                                    [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                    • stm32f1xx_hal_uart.o(.text)

                                                                                                                                                                                                                                                                                                    UART_DMATxAbortCallback (Thumb, 66 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text))

                                                                                                                                                                                                                                                                                                    [Stack]

                                                                                                                                                                                                                                                                                                    • Max Depth = 8
                                                                                                                                                                                                                                                                                                    • Call Chain = UART_DMATxAbortCallback
                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                    [Calls]
                                                                                                                                                                                                                                                                                                    • >>   HAL_UART_AbortCpltCallback +
                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                      • >>   HAL_UART_AbortCpltCallback

                                                                                                                                                                                                                                                                                                      [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                      • stm32f1xx_hal_uart.o(.text)

                                                                                                                                                                                                                                                                                                      UART_DMATxOnlyAbortCallback (Thumb, 20 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text))

                                                                                                                                                                                                                                                                                                      [Stack]

                                                                                                                                                                                                                                                                                                      • Max Depth = 8
                                                                                                                                                                                                                                                                                                      • Call Chain = UART_DMATxOnlyAbortCallback
                                                                                                                                                                                                                                                                                                      -
                                                                                                                                                                                                                                                                                                      [Calls]
                                                                                                                                                                                                                                                                                                      • >>   HAL_UART_AbortTransmitCpltCallback +
                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                        • >>   HAL_UART_AbortTransmitCpltCallback

                                                                                                                                                                                                                                                                                                        [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                        • stm32f1xx_hal_uart.o(.text)

                                                                                                                                                                                                                                                                                                        UART_DMARxOnlyAbortCallback (Thumb, 20 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text))

                                                                                                                                                                                                                                                                                                        [Stack]

                                                                                                                                                                                                                                                                                                        • Max Depth = 8
                                                                                                                                                                                                                                                                                                        • Call Chain = UART_DMARxOnlyAbortCallback
                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                        [Calls]
                                                                                                                                                                                                                                                                                                        • >>   HAL_UART_AbortReceiveCpltCallback +
                                                                                                                                                                                                                                                                                                          [Calls]
                                                                                                                                                                                                                                                                                                          • >>   HAL_UART_AbortReceiveCpltCallback

                                                                                                                                                                                                                                                                                                          [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                          • stm32f1xx_hal_uart.o(.text)
                                                                                                                                                                                                                                                                                                          -

                                                                                                                                                                                                                                                                                                          UART_EndTransmit_IT (Thumb, 26 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                                                                                                                                                          [Calls]

                                                                                                                                                                                                                                                                                                          • >>   HAL_UART_TxCpltCallback +

                                                                                                                                                                                                                                                                                                            UART_EndTransmit_IT (Thumb, 26 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                                                                                                                                                            [Calls]

                                                                                                                                                                                                                                                                                                            • >>   HAL_UART_TxCpltCallback
                                                                                                                                                                                                                                                                                                            -
                                                                                                                                                                                                                                                                                                            [Called By]
                                                                                                                                                                                                                                                                                                            • >>   HAL_UART_IRQHandler +
                                                                                                                                                                                                                                                                                                              [Called By]
                                                                                                                                                                                                                                                                                                              • >>   HAL_UART_IRQHandler
                                                                                                                                                                                                                                                                                                              -

                                                                                                                                                                                                                                                                                                              UART_Transmit_IT (Thumb, 94 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                                                                                                                                                              [Called By]

                                                                                                                                                                                                                                                                                                              • >>   HAL_UART_IRQHandler +

                                                                                                                                                                                                                                                                                                                UART_Transmit_IT (Thumb, 94 bytes, Stack size 0 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                                                                                                                                                                [Called By]

                                                                                                                                                                                                                                                                                                                • >>   HAL_UART_IRQHandler

                                                                                                                                                                                                                                                                                                                UART_DMAAbortOnError (Thumb, 16 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text))

                                                                                                                                                                                                                                                                                                                [Stack]

                                                                                                                                                                                                                                                                                                                • Max Depth = 8
                                                                                                                                                                                                                                                                                                                • Call Chain = UART_DMAAbortOnError
                                                                                                                                                                                                                                                                                                                -
                                                                                                                                                                                                                                                                                                                [Calls]
                                                                                                                                                                                                                                                                                                                • >>   HAL_UART_ErrorCallback +
                                                                                                                                                                                                                                                                                                                  [Calls]
                                                                                                                                                                                                                                                                                                                  • >>   HAL_UART_ErrorCallback

                                                                                                                                                                                                                                                                                                                  [Address Reference Count : 1]
                                                                                                                                                                                                                                                                                                                  • stm32f1xx_hal_uart.o(.text)
                                                                                                                                                                                                                                                                                                                  -

                                                                                                                                                                                                                                                                                                                  UART_Receive_IT (Thumb, 146 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) -

                                                                                                                                                                                                                                                                                                                  [Calls]

                                                                                                                                                                                                                                                                                                                  • >>   HAL_UART_RxCpltCallback +

                                                                                                                                                                                                                                                                                                                    UART_Receive_IT (Thumb, 146 bytes, Stack size 8 bytes, stm32f1xx_hal_uart.o(.text), UNUSED) +

                                                                                                                                                                                                                                                                                                                    [Calls]

                                                                                                                                                                                                                                                                                                                    • >>   HAL_UART_RxCpltCallback
                                                                                                                                                                                                                                                                                                                    -
                                                                                                                                                                                                                                                                                                                    [Called By]
                                                                                                                                                                                                                                                                                                                    • >>   HAL_UART_IRQHandler +
                                                                                                                                                                                                                                                                                                                      [Called By]
                                                                                                                                                                                                                                                                                                                      • >>   HAL_UART_IRQHandler
                                                                                                                                                                                                                                                                                                                      -

                                                                                                                                                                                                                                                                                                                      _printf_core (Thumb, 436 bytes, Stack size 96 bytes, printf3.o(i._printf_core), UNUSED) -

                                                                                                                                                                                                                                                                                                                      [Calls]

                                                                                                                                                                                                                                                                                                                      • >>   __aeabi_uidivmod +

                                                                                                                                                                                                                                                                                                                        _printf_core (Thumb, 436 bytes, Stack size 96 bytes, printf3.o(i._printf_core), UNUSED) +

                                                                                                                                                                                                                                                                                                                        [Calls]

                                                                                                                                                                                                                                                                                                                        • >>   __aeabi_uidivmod
                                                                                                                                                                                                                                                                                                                        -
                                                                                                                                                                                                                                                                                                                        [Called By]
                                                                                                                                                                                                                                                                                                                        • >>   __0printf$3 +
                                                                                                                                                                                                                                                                                                                          [Called By]
                                                                                                                                                                                                                                                                                                                          • >>   __0printf$3

                                                                                                                                                                                                                                                                                                                          diff --git a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map b/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map index ae79e14..232a36f 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/epd-demo/epd-demo.map +++ b/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_4in2_test.o(.text) for EPD_4in2_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 @@ -214,6 +215,18 @@ Section Cross References epd_2in13_v2_test.o(.text) refers to font12cn.o(.data) for Font12CN epd_2in13_v2_test.o(.text) refers to font24cn.o(.data) for Font24CN epd_2in13_v2_test.o(.text) refers to font20.o(.data) for Font20 + epd_2in13_v3_test.o(.text) refers to printf3.o(i.__0printf$3) for __2printf + epd_2in13_v3_test.o(.text) refers to dev_config.o(.text) for DEV_Module_Init + epd_2in13_v3_test.o(.text) refers to epd_2in13_v3.o(.text) for EPD_2in13_V3_Init + epd_2in13_v3_test.o(.text) refers to malloc.o(i.malloc) for malloc + epd_2in13_v3_test.o(.text) refers to gui_paint.o(.text) for Paint_NewImage + epd_2in13_v3_test.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay + epd_2in13_v3_test.o(.text) refers to malloc.o(i.free) for free + epd_2in13_v3_test.o(.text) refers to imagedata.o(.constdata) for gImage_2in13 + epd_2in13_v3_test.o(.text) refers to font16.o(.data) for Font16 + epd_2in13_v3_test.o(.text) refers to font12cn.o(.data) for Font12CN + epd_2in13_v3_test.o(.text) refers to font24cn.o(.data) for Font24CN + epd_2in13_v3_test.o(.text) refers to font20.o(.data) for Font20 epd_2in13b_v3_test.o(.text) refers to printf3.o(i.__0printf$3) for __2printf epd_2in13b_v3_test.o(.text) refers to dev_config.o(.text) for DEV_Module_Init epd_2in13b_v3_test.o(.text) refers to epd_2in13b_v3.o(.text) for EPD_2IN13B_V3_Init @@ -258,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 @@ -302,7 +316,7 @@ Section Cross References epd_4in01f_test.o(.text) refers to font24cn.o(.data) for Font24CN epd_4in2_test.o(.text) refers to printf3.o(i.__0printf$3) for __2printf epd_4in2_test.o(.text) refers to dev_config.o(.text) for DEV_Module_Init - epd_4in2_test.o(.text) refers to epd_4in2.o(.text) for EPD_4IN2_Init + epd_4in2_test.o(.text) refers to epd_4in2.o(.text) for EPD_4IN2_init_LUT_Fast epd_4in2_test.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay epd_4in2_test.o(.text) refers to malloc.o(i.malloc) for malloc epd_4in2_test.o(.text) refers to gui_paint.o(.text) for Paint_NewImage @@ -312,7 +326,6 @@ Section Cross References epd_4in2_test.o(.text) refers to font12.o(.data) for Font12 epd_4in2_test.o(.text) refers to font12cn.o(.data) for Font12CN epd_4in2_test.o(.text) refers to font24cn.o(.data) for Font24CN - epd_4in2_test.o(.text) refers to epd_4in2_test.o(.conststring) for .conststring epd_4in2_test.o(.text) refers to imagedata.o(.constdata) for gImage_4in2_4Gray epd_4in2bc_test.o(.text) refers to printf3.o(i.__0printf$3) for __2printf epd_4in2bc_test.o(.text) refers to dev_config.o(.text) for DEV_Module_Init @@ -563,6 +576,11 @@ Section Cross References epd_2in13_v2.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_ReadPin epd_2in13_v2.o(.text) refers to dev_config.o(.text) for DEV_SPI_WriteByte epd_2in13_v2.o(.text) refers to epd_2in13_v2.o(.constdata) for .constdata + epd_2in13_v3.o(.text) refers to printf3.o(i.__0printf$3) for __2printf + epd_2in13_v3.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_ReadPin + epd_2in13_v3.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay + epd_2in13_v3.o(.text) refers to dev_config.o(.text) for DEV_SPI_WriteByte + epd_2in13_v3.o(.text) refers to epd_2in13_v3.o(.data) for .data epd_2in13bc.o(.text) refers to printf3.o(i.__0printf$3) for __2printf epd_2in13bc.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay epd_2in13bc.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_ReadPin @@ -596,6 +614,7 @@ Section Cross References epd_4in2.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin epd_4in2.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay epd_4in2.o(.text) refers to printf3.o(i.__0printf$3) for __2printf + epd_4in2.o(.text) refers to epd_4in2.o(.bss) for .bss epd_4in2.o(.text) refers to dev_config.o(.text) for DEV_SPI_WriteByte epd_4in2.o(.text) refers to epd_4in2.o(.constdata) for .constdata epd_4in2bc.o(.text) refers to printf3.o(i.__0printf$3) for __2printf @@ -994,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). @@ -1013,6 +1031,7 @@ Removing Unused input sections from the image. Removing stm32f1xx_hal_msp.o(.rev16_text), (4 bytes). Removing stm32f1xx_hal_msp.o(.revsh_text), (4 bytes). Removing stm32f1xx_hal_msp.o(.rrx_text), (6 bytes). + Removing imagedata.o(.constdata), (656 bytes). Removing imagedata.o(.constdata), (2560 bytes). Removing imagedata.o(.constdata), (5000 bytes). Removing imagedata.o(.constdata), (5000 bytes). @@ -1040,8 +1059,6 @@ Removing Unused input sections from the image. Removing imagedata.o(.constdata), (33606 bytes). Removing imagedata.o(.constdata), (128000 bytes). Removing imagedata.o(.constdata), (15000 bytes). - Removing imagedata.o(.constdata), (30000 bytes). - Removing imagedata.o(.constdata), (15000 bytes). Removing imagedata.o(.constdata), (15000 bytes). Removing imagedata.o(.constdata), (13728 bytes). Removing imagedata.o(.constdata), (33600 bytes). @@ -1116,6 +1133,10 @@ Removing Unused input sections from the image. Removing epd_2in13_v2_test.o(.revsh_text), (4 bytes). Removing epd_2in13_v2_test.o(.rrx_text), (6 bytes). Removing epd_2in13_v2_test.o(.text), (1012 bytes). + Removing epd_2in13_v3_test.o(.rev16_text), (4 bytes). + Removing epd_2in13_v3_test.o(.revsh_text), (4 bytes). + Removing epd_2in13_v3_test.o(.rrx_text), (6 bytes). + Removing epd_2in13_v3_test.o(.text), (1064 bytes). Removing epd_2in13b_v3_test.o(.rev16_text), (4 bytes). Removing epd_2in13b_v3_test.o(.revsh_text), (4 bytes). Removing epd_2in13b_v3_test.o(.rrx_text), (6 bytes). @@ -1131,7 +1152,7 @@ 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_2in66_test.o(.text), (1072 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). @@ -1147,8 +1168,6 @@ Removing Unused input sections from the image. Removing epd_4in2_test.o(.rev16_text), (4 bytes). Removing epd_4in2_test.o(.revsh_text), (4 bytes). Removing epd_4in2_test.o(.rrx_text), (6 bytes). - Removing epd_4in2_test.o(.text), (1380 bytes). - Removing epd_4in2_test.o(.conststring), (93 bytes). Removing epd_4in2bc_test.o(.rev16_text), (4 bytes). Removing epd_4in2bc_test.o(.revsh_text), (4 bytes). Removing epd_4in2bc_test.o(.rrx_text), (6 bytes). @@ -1220,7 +1239,6 @@ Removing Unused input sections from the image. Removing epd_1in54_v2.o(.rrx_text), (6 bytes). Removing epd_1in54_v2.o(.text), (1024 bytes). Removing epd_1in54_v2.o(.data), (318 bytes). - Removing epd_1in54_v2.o(.data), (159 bytes). Removing epd_1in54b.o(.rev16_text), (4 bytes). Removing epd_1in54b.o(.revsh_text), (4 bytes). Removing epd_1in54b.o(.rrx_text), (6 bytes). @@ -1281,6 +1299,11 @@ Removing Unused input sections from the image. Removing epd_2in13_v2.o(.rrx_text), (6 bytes). Removing epd_2in13_v2.o(.text), (1072 bytes). Removing epd_2in13_v2.o(.constdata), (152 bytes). + Removing epd_2in13_v3.o(.rev16_text), (4 bytes). + Removing epd_2in13_v3.o(.revsh_text), (4 bytes). + Removing epd_2in13_v3.o(.rrx_text), (6 bytes). + Removing epd_2in13_v3.o(.text), (1078 bytes). + Removing epd_2in13_v3.o(.data), (318 bytes). Removing epd_2in13bc.o(.rev16_text), (4 bytes). Removing epd_2in13bc.o(.revsh_text), (4 bytes). Removing epd_2in13bc.o(.rrx_text), (6 bytes). @@ -1315,8 +1338,6 @@ Removing Unused input sections from the image. Removing epd_4in2.o(.rev16_text), (4 bytes). Removing epd_4in2.o(.revsh_text), (4 bytes). Removing epd_4in2.o(.rrx_text), (6 bytes). - Removing epd_4in2.o(.text), (1796 bytes). - Removing epd_4in2.o(.constdata), (634 bytes). Removing epd_4in2bc.o(.rev16_text), (4 bytes). Removing epd_4in2bc.o(.revsh_text), (4 bytes). Removing epd_4in2bc.o(.rrx_text), (6 bytes). @@ -1373,27 +1394,15 @@ 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). @@ -1456,7 +1465,7 @@ Removing Unused input sections from the image. Removing cdrcmple.o(.text), (48 bytes). Removing depilogue.o(.text), (186 bytes). -461 unused section(s) (total 958922 bytes) removed from the image. +451 unused section(s) (total 862032 bytes) removed from the image. ============================================================================== @@ -1490,42 +1499,42 @@ Image Symbol Table ../Src/usart.c 0x00000000 Number 0 usart.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 uldiv.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.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 entry7b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.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 entry7a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE + ../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE - ../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE - ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocra.o ABSOLUTE ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloc.o ABSOLUTE ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocr.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/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 printf2.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.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 printf0.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.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 printf5.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/printf.c 0x00000000 Number 0 printf2.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 ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE + ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE ../clib/microlib/string/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE ../clib/microlib/stubs.s 0x00000000 Number 0 iusefp.o ABSOLUTE ../fplib/microlib/fpadd.c 0x00000000 Number 0 dadd.o ABSOLUTE @@ -1563,6 +1572,7 @@ Image Symbol Table ..\User\Examples\EPD_1in54b_test.c 0x00000000 Number 0 epd_1in54b_test.o ABSOLUTE ..\User\Examples\EPD_1in54c_test.c 0x00000000 Number 0 epd_1in54c_test.o ABSOLUTE ..\User\Examples\EPD_2in13_V2_test.c 0x00000000 Number 0 epd_2in13_v2_test.o ABSOLUTE + ..\User\Examples\EPD_2in13_V3_test.c 0x00000000 Number 0 epd_2in13_v3_test.o ABSOLUTE ..\User\Examples\EPD_2in13_test.c 0x00000000 Number 0 epd_2in13_test.o ABSOLUTE ..\User\Examples\EPD_2in13b_V3_test.c 0x00000000 Number 0 epd_2in13b_v3_test.o ABSOLUTE ..\User\Examples\EPD_2in13bc_test.c 0x00000000 Number 0 epd_2in13bc_test.o ABSOLUTE @@ -1610,6 +1620,7 @@ Image Symbol Table ..\User\e-Paper\EPD_1in54c.c 0x00000000 Number 0 epd_1in54c.o ABSOLUTE ..\User\e-Paper\EPD_2in13.c 0x00000000 Number 0 epd_2in13.o ABSOLUTE ..\User\e-Paper\EPD_2in13_V2.c 0x00000000 Number 0 epd_2in13_v2.o ABSOLUTE + ..\User\e-Paper\EPD_2in13_V3.c 0x00000000 Number 0 epd_2in13_v3.o ABSOLUTE ..\User\e-Paper\EPD_2in13b_V3.c 0x00000000 Number 0 epd_2in13b_v3.o ABSOLUTE ..\User\e-Paper\EPD_2in13bc.c 0x00000000 Number 0 epd_2in13bc.o ABSOLUTE ..\User\e-Paper\EPD_2in13d.c 0x00000000 Number 0 epd_2in13d.o ABSOLUTE @@ -1647,6 +1658,7 @@ Image Symbol Table ..\\User\\Examples\\EPD_1in54b_test.c 0x00000000 Number 0 epd_1in54b_test.o ABSOLUTE ..\\User\\Examples\\EPD_1in54c_test.c 0x00000000 Number 0 epd_1in54c_test.o ABSOLUTE ..\\User\\Examples\\EPD_2in13_V2_test.c 0x00000000 Number 0 epd_2in13_v2_test.o ABSOLUTE + ..\\User\\Examples\\EPD_2in13_V3_test.c 0x00000000 Number 0 epd_2in13_v3_test.o ABSOLUTE ..\\User\\Examples\\EPD_2in13_test.c 0x00000000 Number 0 epd_2in13_test.o ABSOLUTE ..\\User\\Examples\\EPD_2in13b_V3_test.c 0x00000000 Number 0 epd_2in13b_v3_test.o ABSOLUTE ..\\User\\Examples\\EPD_2in13bc_test.c 0x00000000 Number 0 epd_2in13bc_test.o ABSOLUTE @@ -1686,6 +1698,7 @@ Image Symbol Table ..\\User\\e-Paper\\EPD_1in54c.c 0x00000000 Number 0 epd_1in54c.o ABSOLUTE ..\\User\\e-Paper\\EPD_2in13.c 0x00000000 Number 0 epd_2in13.o ABSOLUTE ..\\User\\e-Paper\\EPD_2in13_V2.c 0x00000000 Number 0 epd_2in13_v2.o ABSOLUTE + ..\\User\\e-Paper\\EPD_2in13_V3.c 0x00000000 Number 0 epd_2in13_v3.o ABSOLUTE ..\\User\\e-Paper\\EPD_2in13b_V3.c 0x00000000 Number 0 epd_2in13b_v3.o ABSOLUTE ..\\User\\e-Paper\\EPD_2in13bc.c 0x00000000 Number 0 epd_2in13bc.o ABSOLUTE ..\\User\\e-Paper\\EPD_2in13d.c 0x00000000 Number 0 epd_2in13d.o ABSOLUTE @@ -1733,81 +1746,117 @@ 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_4in2_test.o(.text) + .text 0x080009c0 Section 0 epd_4in2.o(.text) + EPD_4IN2_Reset 0x080009c1 Thumb Code 104 epd_4in2.o(.text) + EPD_4IN2_SendCommand 0x08000f9d Thumb Code 46 epd_4in2.o(.text) + EPD_4IN2_SendData 0x08000fcb Thumb Code 46 epd_4in2.o(.text) + EPD_4IN2_TurnOnDisplay 0x08000ff9 Thumb Code 20 epd_4in2.o(.text) + EPD_4IN2_Partial_SetLut 0x0800100d Thumb Code 122 epd_4in2.o(.text) + EPD_4IN2_SetLut 0x08001087 Thumb Code 124 epd_4in2.o(.text) + EPD_4IN2_4Gray_lut 0x08001103 Thumb Code 142 epd_4in2.o(.text) + .text 0x080011a0 Section 0 dev_config.o(.text) + .text 0x08001208 Section 0 gui_paint.o(.text) + .text 0x08002078 Section 0 system_stm32f1xx.o(.text) + .text 0x0800213c Section 0 stm32f1xx_hal_spi.o(.text) + SPI_WaitFlagStateUntilTimeout 0x08002225 Thumb Code 210 stm32f1xx_hal_spi.o(.text) + SPI_EndRxTxTransaction 0x080022f7 Thumb Code 36 stm32f1xx_hal_spi.o(.text) + SPI_EndRxTransaction 0x080024b7 Thumb Code 112 stm32f1xx_hal_spi.o(.text) + SPI_CloseTx_ISR 0x08002897 Thumb Code 130 stm32f1xx_hal_spi.o(.text) + SPI_TxISR_8BIT 0x08002919 Thumb Code 30 stm32f1xx_hal_spi.o(.text) + SPI_TxISR_16BIT 0x08002937 Thumb Code 30 stm32f1xx_hal_spi.o(.text) + SPI_CloseRx_ISR 0x080029f9 Thumb Code 76 stm32f1xx_hal_spi.o(.text) + SPI_RxISR_8BIT 0x08002a45 Thumb Code 30 stm32f1xx_hal_spi.o(.text) + SPI_RxISR_16BIT 0x08002a63 Thumb Code 30 stm32f1xx_hal_spi.o(.text) + SPI_CloseRxTx_ISR 0x08002a83 Thumb Code 158 stm32f1xx_hal_spi.o(.text) + SPI_2linesTxISR_8BIT 0x08002b21 Thumb Code 46 stm32f1xx_hal_spi.o(.text) + SPI_2linesRxISR_8BIT 0x08002b4f Thumb Code 46 stm32f1xx_hal_spi.o(.text) + SPI_2linesTxISR_16BIT 0x08002b7d Thumb Code 46 stm32f1xx_hal_spi.o(.text) + SPI_2linesRxISR_16BIT 0x08002bab Thumb Code 46 stm32f1xx_hal_spi.o(.text) + SPI_DMAError 0x08002d45 Thumb Code 34 stm32f1xx_hal_spi.o(.text) + SPI_DMATransmitCplt 0x08002d67 Thumb Code 102 stm32f1xx_hal_spi.o(.text) + SPI_DMAHalfTransmitCplt 0x08002dcf Thumb Code 10 stm32f1xx_hal_spi.o(.text) + SPI_DMAReceiveCplt 0x08002ea9 Thumb Code 110 stm32f1xx_hal_spi.o(.text) + SPI_DMAHalfReceiveCplt 0x08002f19 Thumb Code 10 stm32f1xx_hal_spi.o(.text) + SPI_DMATransmitReceiveCplt 0x08002f23 Thumb Code 92 stm32f1xx_hal_spi.o(.text) + SPI_DMAHalfTransmitReceiveCplt 0x08002f81 Thumb Code 10 stm32f1xx_hal_spi.o(.text) + SPI_AbortRx_ISR 0x080031cf Thumb Code 82 stm32f1xx_hal_spi.o(.text) + SPI_AbortTx_ISR 0x08003221 Thumb Code 28 stm32f1xx_hal_spi.o(.text) + SPI_DMARxAbortCallback 0x08003361 Thumb Code 98 stm32f1xx_hal_spi.o(.text) + SPI_DMATxAbortCallback 0x080033c3 Thumb Code 114 stm32f1xx_hal_spi.o(.text) + SPI_DMAAbortOnError 0x0800360d Thumb Code 16 stm32f1xx_hal_spi.o(.text) + .text 0x08003724 Section 0 stm32f1xx_hal.o(.text) + .text 0x080038ac Section 0 stm32f1xx_hal_rcc.o(.text) + RCC_Delay 0x080039a7 Thumb Code 32 stm32f1xx_hal_rcc.o(.text) + .text 0x08004174 Section 0 stm32f1xx_hal_gpio.o(.text) + .text 0x08004548 Section 0 stm32f1xx_hal_dma.o(.text) + DMA_SetConfig 0x08004657 Thumb Code 56 stm32f1xx_hal_dma.o(.text) + .text 0x08005190 Section 0 stm32f1xx_hal_cortex.o(.text) + .text 0x080053b4 Section 0 stm32f1xx_hal_uart.o(.text) + UART_SetConfig 0x080053b5 Thumb Code 194 stm32f1xx_hal_uart.o(.text) + UART_WaitOnFlagUntilTimeout 0x08005695 Thumb Code 120 stm32f1xx_hal_uart.o(.text) + UART_EndRxTransfer 0x08005945 Thumb Code 28 stm32f1xx_hal_uart.o(.text) + UART_EndTxTransfer 0x08005961 Thumb Code 18 stm32f1xx_hal_uart.o(.text) + UART_DMAError 0x08005973 Thumb Code 74 stm32f1xx_hal_uart.o(.text) + UART_DMATxHalfCplt 0x080059bf Thumb Code 10 stm32f1xx_hal_uart.o(.text) + UART_DMATransmitCplt 0x080059cb Thumb Code 48 stm32f1xx_hal_uart.o(.text) + UART_DMARxHalfCplt 0x08005a87 Thumb Code 10 stm32f1xx_hal_uart.o(.text) + UART_DMAReceiveCplt 0x08005a93 Thumb Code 62 stm32f1xx_hal_uart.o(.text) + UART_DMARxAbortCallback 0x08005dc7 Thumb Code 44 stm32f1xx_hal_uart.o(.text) + UART_DMATxAbortCallback 0x08005df3 Thumb Code 66 stm32f1xx_hal_uart.o(.text) + UART_DMATxOnlyAbortCallback 0x08005ee9 Thumb Code 20 stm32f1xx_hal_uart.o(.text) + UART_DMARxOnlyAbortCallback 0x08005f5d Thumb Code 20 stm32f1xx_hal_uart.o(.text) + UART_EndTransmit_IT 0x08005fd9 Thumb Code 26 stm32f1xx_hal_uart.o(.text) + UART_Transmit_IT 0x08005ff3 Thumb Code 94 stm32f1xx_hal_uart.o(.text) + UART_DMAAbortOnError 0x08006051 Thumb Code 16 stm32f1xx_hal_uart.o(.text) + UART_Receive_IT 0x08006061 Thumb Code 146 stm32f1xx_hal_uart.o(.text) + .text 0x08006350 Section 0 memseta.o(.text) + .text 0x08006374 Section 0 uidiv.o(.text) + .text 0x080063a0 Section 36 init.o(.text) + i.__0printf$3 0x080063c4 Section 0 printf3.o(i.__0printf$3) + i.__scatterload_copy 0x080063e4 Section 14 handlers.o(i.__scatterload_copy) + i.__scatterload_null 0x080063f2 Section 2 handlers.o(i.__scatterload_null) + i.__scatterload_zeroinit 0x080063f4 Section 14 handlers.o(i.__scatterload_zeroinit) + i._printf_core 0x08006404 Section 0 printf3.o(i._printf_core) + _printf_core 0x08006405 Thumb Code 436 printf3.o(i._printf_core) + i.free 0x080065bc Section 0 malloc.o(i.free) + i.malloc 0x0800660c Section 0 malloc.o(i.malloc) + .constdata 0x08006678 Section 15000 imagedata.o(.constdata) + .constdata 0x0800a110 Section 30000 imagedata.o(.constdata) + .constdata 0x08011640 Section 668 epd_4in2.o(.constdata) + EPD_4IN2_lut_vcom0 0x08011640 Data 44 epd_4in2.o(.constdata) + EPD_4IN2_lut_ww 0x0801166c Data 42 epd_4in2.o(.constdata) + EPD_4IN2_lut_bw 0x08011696 Data 42 epd_4in2.o(.constdata) + EPD_4IN2_lut_wb 0x080116c0 Data 42 epd_4in2.o(.constdata) + EPD_4IN2_lut_bb 0x080116ea Data 42 epd_4in2.o(.constdata) + .constdata 0x080118dc Section 1140 font12.o(.constdata) + .constdata 0x08011d50 Section 1494 font12cn.o(.constdata) + .constdata 0x08012326 Section 3040 font16.o(.constdata) + .constdata 0x08012f06 Section 4482 font24cn.o(.constdata) + .constdata 0x08014088 Section 16 system_stm32f1xx.o(.constdata) + .constdata 0x08014098 Section 8 system_stm32f1xx.o(.constdata) + .conststring 0x080140a0 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 12 font24cn.o(.data) + .data 0x20000028 Section 4 system_stm32f1xx.o(.data) + .data 0x2000002c Section 12 stm32f1xx_hal.o(.data) + .data 0x20000038 Section 4 stdout.o(.data) + .data 0x2000003c Section 4 mvars.o(.data) + .data 0x20000040 Section 4 mvars.o(.data) + .bss 0x20000044 Section 88 spi.o(.bss) + .bss 0x2000009c Section 64 usart.o(.bss) + .bss 0x200000dc Section 15000 epd_4in2.o(.bss) + DATA 0x200000dc Data 15000 epd_4in2.o(.bss) + .bss 0x20003b74 Section 24 gui_paint.o(.bss) + HEAP 0x20003b90 Section 36864 startup_stm32f103xe.o(HEAP) + STACK 0x2000cb90 Section 4096 startup_stm32f103xe.o(STACK) Global Symbols @@ -1936,192 +1985,252 @@ 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_4in2_test 0x08000461 Thumb Code 978 epd_4in2_test.o(.text) + EPD_4IN2_ReadBusy 0x08000a29 Thumb Code 52 epd_4in2.o(.text) + EPD_4IN2_Init_LUT_Partia 0x08000a5d Thumb Code 156 epd_4in2.o(.text) + EPD_4IN2_init_LUT_Fast 0x08000af9 Thumb Code 156 epd_4in2.o(.text) + EPD_4IN2_Init_4Gray 0x08000b95 Thumb Code 158 epd_4in2.o(.text) + EPD_4IN2_Clear 0x08000c33 Thumb Code 94 epd_4in2.o(.text) + EPD_4IN2_Display 0x08000c91 Thumb Code 106 epd_4in2.o(.text) + EPD_4IN2_PartialDisplay 0x08000cfb Thumb Code 342 epd_4in2.o(.text) + EPD_4IN2_4GrayDisplay 0x08000e51 Thumb Code 292 epd_4in2.o(.text) + EPD_4IN2_Sleep 0x08000f75 Thumb Code 40 epd_4in2.o(.text) + DEV_SPI_WriteByte 0x080011a1 Thumb Code 18 dev_config.o(.text) + DEV_Module_Init 0x080011b3 Thumb Code 38 dev_config.o(.text) + DEV_Module_Exit 0x080011d9 Thumb Code 38 dev_config.o(.text) + Paint_NewImage 0x08001209 Thumb Code 56 gui_paint.o(.text) + Paint_SelectImage 0x08001241 Thumb Code 6 gui_paint.o(.text) + Paint_SetRotate 0x08001247 Thumb Code 44 gui_paint.o(.text) + Paint_SetScale 0x08001273 Thumb Code 80 gui_paint.o(.text) + Paint_SetMirroring 0x080012c3 Thumb Code 62 gui_paint.o(.text) + Paint_SetPixel 0x08001301 Thumb Code 238 gui_paint.o(.text) + Paint_Clear 0x080013ef Thumb Code 104 gui_paint.o(.text) + Paint_ClearWindows 0x08001457 Thumb Code 52 gui_paint.o(.text) + Paint_DrawPoint 0x0800148b Thumb Code 180 gui_paint.o(.text) + Paint_DrawLine 0x0800153f Thumb Code 654 gui_paint.o(.text) + Paint_DrawRectangle 0x080017cd Thumb Code 170 gui_paint.o(.text) + Paint_DrawCircle 0x08001877 Thumb Code 528 gui_paint.o(.text) + Paint_DrawChar 0x08001a87 Thumb Code 172 gui_paint.o(.text) + Paint_DrawString_EN 0x08001b33 Thumb Code 116 gui_paint.o(.text) + Paint_DrawString_CN 0x08001ba7 Thumb Code 518 gui_paint.o(.text) + Paint_DrawNum 0x08001dad Thumb Code 140 gui_paint.o(.text) + Paint_DrawTime 0x08001e39 Thumb Code 282 gui_paint.o(.text) + Paint_DrawBitMap 0x08001f53 Thumb Code 46 gui_paint.o(.text) + Paint_DrawBitMap_Paste 0x08001f81 Thumb Code 110 gui_paint.o(.text) + Paint_DrawBitMap_Block 0x08001fef Thumb Code 54 gui_paint.o(.text) + SystemInit 0x08002079 Thumb Code 60 system_stm32f1xx.o(.text) + SystemCoreClockUpdate 0x080020b5 Thumb Code 108 system_stm32f1xx.o(.text) + HAL_SPI_Init 0x0800213f Thumb Code 180 stm32f1xx_hal_spi.o(.text) + HAL_SPI_DeInit 0x080021f5 Thumb Code 48 stm32f1xx_hal_spi.o(.text) + HAL_SPI_Transmit 0x0800231b Thumb Code 412 stm32f1xx_hal_spi.o(.text) + HAL_SPI_TransmitReceive 0x08002527 Thumb Code 510 stm32f1xx_hal_spi.o(.text) + HAL_SPI_Receive 0x08002725 Thumb Code 366 stm32f1xx_hal_spi.o(.text) + HAL_SPI_TxCpltCallback 0x08002893 Thumb Code 2 stm32f1xx_hal_spi.o(.text) + HAL_SPI_ErrorCallback 0x08002895 Thumb Code 2 stm32f1xx_hal_spi.o(.text) + HAL_SPI_Transmit_IT 0x08002955 Thumb Code 162 stm32f1xx_hal_spi.o(.text) + HAL_SPI_RxCpltCallback 0x080029f7 Thumb Code 2 stm32f1xx_hal_spi.o(.text) + HAL_SPI_TxRxCpltCallback 0x08002a81 Thumb Code 2 stm32f1xx_hal_spi.o(.text) + HAL_SPI_TransmitReceive_IT 0x08002bd9 Thumb Code 188 stm32f1xx_hal_spi.o(.text) + HAL_SPI_Receive_IT 0x08002c95 Thumb Code 176 stm32f1xx_hal_spi.o(.text) + HAL_SPI_TxHalfCpltCallback 0x08002dcd Thumb Code 2 stm32f1xx_hal_spi.o(.text) + HAL_SPI_Transmit_DMA 0x08002dd9 Thumb Code 208 stm32f1xx_hal_spi.o(.text) + HAL_SPI_RxHalfCpltCallback 0x08002f17 Thumb Code 2 stm32f1xx_hal_spi.o(.text) + HAL_SPI_TxRxHalfCpltCallback 0x08002f7f Thumb Code 2 stm32f1xx_hal_spi.o(.text) + HAL_SPI_TransmitReceive_DMA 0x08002f8b Thumb Code 302 stm32f1xx_hal_spi.o(.text) + HAL_SPI_Receive_DMA 0x080030b9 Thumb Code 278 stm32f1xx_hal_spi.o(.text) + HAL_SPI_Abort 0x0800323d Thumb Code 290 stm32f1xx_hal_spi.o(.text) + HAL_SPI_AbortCpltCallback 0x0800335f Thumb Code 2 stm32f1xx_hal_spi.o(.text) + HAL_SPI_Abort_IT 0x08003435 Thumb Code 328 stm32f1xx_hal_spi.o(.text) + HAL_SPI_DMAPause 0x0800357d Thumb Code 38 stm32f1xx_hal_spi.o(.text) + HAL_SPI_DMAResume 0x080035a3 Thumb Code 38 stm32f1xx_hal_spi.o(.text) + HAL_SPI_DMAStop 0x080035c9 Thumb Code 68 stm32f1xx_hal_spi.o(.text) + HAL_SPI_IRQHandler 0x0800361d Thumb Code 250 stm32f1xx_hal_spi.o(.text) + HAL_SPI_GetState 0x08003717 Thumb Code 6 stm32f1xx_hal_spi.o(.text) + HAL_SPI_GetError 0x0800371d Thumb Code 4 stm32f1xx_hal_spi.o(.text) + HAL_InitTick 0x08003727 Thumb Code 58 stm32f1xx_hal.o(.text) + HAL_Init 0x08003761 Thumb Code 32 stm32f1xx_hal.o(.text) + HAL_MspDeInit 0x08003781 Thumb Code 2 stm32f1xx_hal.o(.text) + HAL_DeInit 0x08003783 Thumb Code 26 stm32f1xx_hal.o(.text) + HAL_IncTick 0x0800379d Thumb Code 12 stm32f1xx_hal.o(.text) + HAL_GetTick 0x080037a9 Thumb Code 6 stm32f1xx_hal.o(.text) + HAL_GetTickPrio 0x080037af Thumb Code 6 stm32f1xx_hal.o(.text) + HAL_SetTickFreq 0x080037b5 Thumb Code 30 stm32f1xx_hal.o(.text) + HAL_GetTickFreq 0x080037d3 Thumb Code 6 stm32f1xx_hal.o(.text) + HAL_Delay 0x080037d9 Thumb Code 34 stm32f1xx_hal.o(.text) + HAL_SuspendTick 0x080037fb Thumb Code 14 stm32f1xx_hal.o(.text) + HAL_ResumeTick 0x08003809 Thumb Code 14 stm32f1xx_hal.o(.text) + HAL_GetHalVersion 0x08003817 Thumb Code 4 stm32f1xx_hal.o(.text) + HAL_GetREVID 0x0800381b Thumb Code 8 stm32f1xx_hal.o(.text) + HAL_GetDEVID 0x08003823 Thumb Code 10 stm32f1xx_hal.o(.text) + HAL_GetUIDw0 0x0800382d Thumb Code 6 stm32f1xx_hal.o(.text) + HAL_GetUIDw1 0x08003833 Thumb Code 6 stm32f1xx_hal.o(.text) + HAL_GetUIDw2 0x08003839 Thumb Code 6 stm32f1xx_hal.o(.text) + HAL_DBGMCU_EnableDBGSleepMode 0x0800383f Thumb Code 12 stm32f1xx_hal.o(.text) + HAL_DBGMCU_DisableDBGSleepMode 0x0800384b Thumb Code 12 stm32f1xx_hal.o(.text) + HAL_DBGMCU_EnableDBGStopMode 0x08003857 Thumb Code 12 stm32f1xx_hal.o(.text) + HAL_DBGMCU_DisableDBGStopMode 0x08003863 Thumb Code 12 stm32f1xx_hal.o(.text) + HAL_DBGMCU_EnableDBGStandbyMode 0x0800386f Thumb Code 12 stm32f1xx_hal.o(.text) + HAL_DBGMCU_DisableDBGStandbyMode 0x0800387b Thumb Code 12 stm32f1xx_hal.o(.text) + HAL_RCC_DeInit 0x080038ad Thumb Code 250 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_OscConfig 0x080039c7 Thumb Code 1080 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_GetSysClockFreq 0x08003dff Thumb Code 88 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_ClockConfig 0x08003e57 Thumb Code 364 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_MCOConfig 0x08003fc3 Thumb Code 64 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_EnableCSS 0x08004003 Thumb Code 8 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_DisableCSS 0x0800400b Thumb Code 8 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_GetHCLKFreq 0x08004013 Thumb Code 6 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_GetPCLK1Freq 0x08004019 Thumb Code 22 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_GetPCLK2Freq 0x0800402f Thumb Code 22 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_GetOscConfig 0x08004045 Thumb Code 168 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_GetClockConfig 0x080040ed Thumb Code 52 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_CSSCallback 0x08004121 Thumb Code 2 stm32f1xx_hal_rcc.o(.text) + HAL_RCC_NMI_IRQHandler 0x08004123 Thumb Code 22 stm32f1xx_hal_rcc.o(.text) + HAL_GPIO_Init 0x08004175 Thumb Code 524 stm32f1xx_hal_gpio.o(.text) + HAL_GPIO_DeInit 0x08004381 Thumb Code 320 stm32f1xx_hal_gpio.o(.text) + HAL_GPIO_ReadPin 0x080044c1 Thumb Code 14 stm32f1xx_hal_gpio.o(.text) + HAL_GPIO_WritePin 0x080044cf Thumb Code 14 stm32f1xx_hal_gpio.o(.text) + HAL_GPIO_TogglePin 0x080044dd Thumb Code 16 stm32f1xx_hal_gpio.o(.text) + HAL_GPIO_LockPin 0x080044ed Thumb Code 42 stm32f1xx_hal_gpio.o(.text) + HAL_GPIO_EXTI_Callback 0x08004517 Thumb Code 2 stm32f1xx_hal_gpio.o(.text) + HAL_GPIO_EXTI_IRQHandler 0x08004519 Thumb Code 18 stm32f1xx_hal_gpio.o(.text) + HAL_DMA_Init 0x08004549 Thumb Code 144 stm32f1xx_hal_dma.o(.text) + HAL_DMA_DeInit 0x080045d9 Thumb Code 126 stm32f1xx_hal_dma.o(.text) + HAL_DMA_Start 0x0800468f Thumb Code 88 stm32f1xx_hal_dma.o(.text) + HAL_DMA_Start_IT 0x080046e7 Thumb Code 124 stm32f1xx_hal_dma.o(.text) + HAL_DMA_Abort 0x08004763 Thumb Code 72 stm32f1xx_hal_dma.o(.text) + HAL_DMA_Abort_IT 0x080047ab Thumb Code 318 stm32f1xx_hal_dma.o(.text) + HAL_DMA_PollForTransfer 0x080048e9 Thumb Code 1316 stm32f1xx_hal_dma.o(.text) + HAL_DMA_IRQHandler 0x08004e0d Thumb Code 672 stm32f1xx_hal_dma.o(.text) + HAL_DMA_RegisterCallback 0x080050ad Thumb Code 80 stm32f1xx_hal_dma.o(.text) + HAL_DMA_UnRegisterCallback 0x080050fd Thumb Code 86 stm32f1xx_hal_dma.o(.text) + HAL_DMA_GetState 0x08005153 Thumb Code 6 stm32f1xx_hal_dma.o(.text) + HAL_DMA_GetError 0x08005159 Thumb Code 4 stm32f1xx_hal_dma.o(.text) + HAL_NVIC_SetPriorityGrouping 0x08005191 Thumb Code 30 stm32f1xx_hal_cortex.o(.text) + HAL_NVIC_SetPriority 0x080051af Thumb Code 98 stm32f1xx_hal_cortex.o(.text) + HAL_NVIC_EnableIRQ 0x08005211 Thumb Code 28 stm32f1xx_hal_cortex.o(.text) + HAL_NVIC_DisableIRQ 0x0800522d Thumb Code 36 stm32f1xx_hal_cortex.o(.text) + HAL_NVIC_SystemReset 0x08005251 Thumb Code 26 stm32f1xx_hal_cortex.o(.text) + HAL_SYSTICK_Config 0x0800526b Thumb Code 36 stm32f1xx_hal_cortex.o(.text) + HAL_NVIC_GetPriorityGrouping 0x0800528f Thumb Code 10 stm32f1xx_hal_cortex.o(.text) + HAL_NVIC_GetPriority 0x08005299 Thumb Code 94 stm32f1xx_hal_cortex.o(.text) + HAL_NVIC_SetPendingIRQ 0x080052f7 Thumb Code 28 stm32f1xx_hal_cortex.o(.text) + HAL_NVIC_GetPendingIRQ 0x08005313 Thumb Code 42 stm32f1xx_hal_cortex.o(.text) + HAL_NVIC_ClearPendingIRQ 0x0800533d Thumb Code 28 stm32f1xx_hal_cortex.o(.text) + HAL_NVIC_GetActive 0x08005359 Thumb Code 42 stm32f1xx_hal_cortex.o(.text) + HAL_SYSTICK_CLKSourceConfig 0x08005383 Thumb Code 28 stm32f1xx_hal_cortex.o(.text) + HAL_SYSTICK_Callback 0x0800539f Thumb Code 2 stm32f1xx_hal_cortex.o(.text) + HAL_SYSTICK_IRQHandler 0x080053a1 Thumb Code 8 stm32f1xx_hal_cortex.o(.text) + HAL_UART_Init 0x08005479 Thumb Code 100 stm32f1xx_hal_uart.o(.text) + HAL_HalfDuplex_Init 0x080054dd Thumb Code 110 stm32f1xx_hal_uart.o(.text) + HAL_LIN_Init 0x0800554b Thumb Code 130 stm32f1xx_hal_uart.o(.text) + HAL_MultiProcessor_Init 0x080055cd Thumb Code 146 stm32f1xx_hal_uart.o(.text) + HAL_UART_DeInit 0x08005661 Thumb Code 52 stm32f1xx_hal_uart.o(.text) + HAL_UART_Transmit 0x0800570d Thumb Code 202 stm32f1xx_hal_uart.o(.text) + HAL_UART_Receive 0x080057d7 Thumb Code 212 stm32f1xx_hal_uart.o(.text) + HAL_UART_Transmit_IT 0x080058ab Thumb Code 66 stm32f1xx_hal_uart.o(.text) + HAL_UART_Receive_IT 0x080058ed Thumb Code 86 stm32f1xx_hal_uart.o(.text) + HAL_UART_ErrorCallback 0x08005943 Thumb Code 2 stm32f1xx_hal_uart.o(.text) + HAL_UART_TxHalfCpltCallback 0x080059bd Thumb Code 2 stm32f1xx_hal_uart.o(.text) + HAL_UART_TxCpltCallback 0x080059c9 Thumb Code 2 stm32f1xx_hal_uart.o(.text) + HAL_UART_Transmit_DMA 0x080059fb Thumb Code 138 stm32f1xx_hal_uart.o(.text) + HAL_UART_RxHalfCpltCallback 0x08005a85 Thumb Code 2 stm32f1xx_hal_uart.o(.text) + HAL_UART_RxCpltCallback 0x08005a91 Thumb Code 2 stm32f1xx_hal_uart.o(.text) + HAL_UART_Receive_DMA 0x08005ad1 Thumb Code 150 stm32f1xx_hal_uart.o(.text) + HAL_UART_DMAPause 0x08005b67 Thumb Code 102 stm32f1xx_hal_uart.o(.text) + HAL_UART_DMAResume 0x08005bcd Thumb Code 98 stm32f1xx_hal_uart.o(.text) + HAL_UART_DMAStop 0x08005c2f Thumb Code 88 stm32f1xx_hal_uart.o(.text) + HAL_UART_Abort 0x08005c87 Thumb Code 148 stm32f1xx_hal_uart.o(.text) + HAL_UART_AbortTransmit 0x08005d1b Thumb Code 80 stm32f1xx_hal_uart.o(.text) + HAL_UART_AbortReceive 0x08005d6b Thumb Code 90 stm32f1xx_hal_uart.o(.text) + HAL_UART_AbortCpltCallback 0x08005dc5 Thumb Code 2 stm32f1xx_hal_uart.o(.text) + HAL_UART_Abort_IT 0x08005e35 Thumb Code 178 stm32f1xx_hal_uart.o(.text) + HAL_UART_AbortTransmitCpltCallback 0x08005ee7 Thumb Code 2 stm32f1xx_hal_uart.o(.text) + HAL_UART_AbortTransmit_IT 0x08005efd Thumb Code 94 stm32f1xx_hal_uart.o(.text) + HAL_UART_AbortReceiveCpltCallback 0x08005f5b Thumb Code 2 stm32f1xx_hal_uart.o(.text) + HAL_UART_AbortReceive_IT 0x08005f71 Thumb Code 104 stm32f1xx_hal_uart.o(.text) + HAL_UART_IRQHandler 0x080060f3 Thumb Code 312 stm32f1xx_hal_uart.o(.text) + HAL_LIN_SendBreak 0x0800622b Thumb Code 70 stm32f1xx_hal_uart.o(.text) + HAL_MultiProcessor_EnterMuteMode 0x08006271 Thumb Code 50 stm32f1xx_hal_uart.o(.text) + HAL_MultiProcessor_ExitMuteMode 0x080062a3 Thumb Code 50 stm32f1xx_hal_uart.o(.text) + HAL_HalfDuplex_EnableTransmitter 0x080062d5 Thumb Code 54 stm32f1xx_hal_uart.o(.text) + HAL_HalfDuplex_EnableReceiver 0x0800630b Thumb Code 54 stm32f1xx_hal_uart.o(.text) + HAL_UART_GetState 0x08006341 Thumb Code 12 stm32f1xx_hal_uart.o(.text) + HAL_UART_GetError 0x0800634d Thumb Code 4 stm32f1xx_hal_uart.o(.text) + __aeabi_memset 0x08006351 Thumb Code 14 memseta.o(.text) + __aeabi_memset4 0x08006351 Thumb Code 0 memseta.o(.text) + __aeabi_memset8 0x08006351 Thumb Code 0 memseta.o(.text) + __aeabi_memclr 0x0800635f Thumb Code 4 memseta.o(.text) + __aeabi_memclr4 0x0800635f Thumb Code 0 memseta.o(.text) + __aeabi_memclr8 0x0800635f Thumb Code 0 memseta.o(.text) + _memset$wrapper 0x08006363 Thumb Code 18 memseta.o(.text) + __aeabi_uidiv 0x08006375 Thumb Code 0 uidiv.o(.text) + __aeabi_uidivmod 0x08006375 Thumb Code 44 uidiv.o(.text) + __scatterload 0x080063a1 Thumb Code 28 init.o(.text) + __scatterload_rt2 0x080063a1 Thumb Code 0 init.o(.text) + __0printf$3 0x080063c5 Thumb Code 22 printf3.o(i.__0printf$3) + __1printf$3 0x080063c5 Thumb Code 0 printf3.o(i.__0printf$3) + __2printf 0x080063c5 Thumb Code 0 printf3.o(i.__0printf$3) + __scatterload_copy 0x080063e5 Thumb Code 14 handlers.o(i.__scatterload_copy) + __scatterload_null 0x080063f3 Thumb Code 2 handlers.o(i.__scatterload_null) + __scatterload_zeroinit 0x080063f5 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) + free 0x080065bd Thumb Code 76 malloc.o(i.free) + malloc 0x0800660d Thumb Code 92 malloc.o(i.malloc) + gImage_4in2 0x08006678 Data 15000 imagedata.o(.constdata) + gImage_4in2_4Gray 0x0800a110 Data 30000 imagedata.o(.constdata) + EPD_4IN2_Partial_lut_vcom1 0x08011714 Data 60 epd_4in2.o(.constdata) + EPD_4IN2_Partial_lut_ww1 0x08011750 Data 42 epd_4in2.o(.constdata) + EPD_4IN2_Partial_lut_bw1 0x0801177a Data 60 epd_4in2.o(.constdata) + EPD_4IN2_Partial_lut_wb1 0x080117b6 Data 42 epd_4in2.o(.constdata) + EPD_4IN2_Partial_lut_bb1 0x080117e0 Data 42 epd_4in2.o(.constdata) + EPD_4IN2_4Gray_lut_vcom 0x0801180a Data 42 epd_4in2.o(.constdata) + EPD_4IN2_4Gray_lut_ww 0x08011834 Data 42 epd_4in2.o(.constdata) + EPD_4IN2_4Gray_lut_bw 0x0801185e Data 42 epd_4in2.o(.constdata) + EPD_4IN2_4Gray_lut_wb 0x08011888 Data 42 epd_4in2.o(.constdata) + EPD_4IN2_4Gray_lut_bb 0x080118b2 Data 42 epd_4in2.o(.constdata) + Font12_Table 0x080118dc Data 1140 font12.o(.constdata) + Font12CN_Table 0x08011d50 Data 1494 font12cn.o(.constdata) + Font16_Table 0x08012326 Data 3040 font16.o(.constdata) + Font24CN_Table 0x08012f06 Data 4482 font24cn.o(.constdata) + AHBPrescTable 0x08014088 Data 16 system_stm32f1xx.o(.constdata) + APBPrescTable 0x08014098 Data 8 system_stm32f1xx.o(.constdata) + Region$$Table$$Base 0x0801418c Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x080141ac 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) + Font24CN 0x2000001c Data 12 font24cn.o(.data) + SystemCoreClock 0x20000028 Data 4 system_stm32f1xx.o(.data) + uwTickFreq 0x2000002c Data 1 stm32f1xx_hal.o(.data) + uwTickPrio 0x20000030 Data 4 stm32f1xx_hal.o(.data) + uwTick 0x20000034 Data 4 stm32f1xx_hal.o(.data) + __stdout 0x20000038 Data 4 stdout.o(.data) + __microlib_freelist 0x2000003c Data 4 mvars.o(.data) + __microlib_freelist_initialised 0x20000040 Data 4 mvars.o(.data) + hspi1 0x20000044 Data 88 spi.o(.bss) + huart1 0x2000009c Data 64 usart.o(.bss) + Paint 0x20003b74 Data 24 gui_paint.o(.bss) + __heap_base 0x20003b90 Data 0 startup_stm32f103xe.o(HEAP) + __heap_limit 0x2000cb90 Data 0 startup_stm32f103xe.o(HEAP) + __initial_sp 0x2000db90 Data 0 startup_stm32f103xe.o(STACK) @@ -2131,62 +2240,86 @@ 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: 0x000141f0, 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: 0x000141ac, 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 2861 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) - 0x08000130 0x08000130 0x00000004 Code RO 3161 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) - 0x08000134 0x08000134 0x00000004 Code RO 3164 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) - 0x08000138 0x08000138 0x00000000 Code RO 3166 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) - 0x08000138 0x08000138 0x00000000 Code RO 3168 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) - 0x08000138 0x08000138 0x00000008 Code RO 3169 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) - 0x08000140 0x08000140 0x00000000 Code RO 3171 .ARM.Collect$$$$0000000D mc_w.l(entry10a.o) - 0x08000140 0x08000140 0x00000000 Code RO 3173 .ARM.Collect$$$$0000000F mc_w.l(entry11a.o) - 0x08000140 0x08000140 0x00000004 Code RO 3162 .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 2470 .text system_stm32f1xx.o - 0x08000520 0x08000520 0x000015e8 Code RO 2526 .text stm32f1xx_hal_spi.o - 0x08001b08 0x08001b08 0x00000188 Code RO 2550 .text stm32f1xx_hal.o - 0x08001c90 0x08001c90 0x000008c8 Code RO 2580 .text stm32f1xx_hal_rcc.o - 0x08002558 0x08002558 0x000003d4 Code RO 2628 .text stm32f1xx_hal_gpio.o - 0x0800292c 0x0800292c 0x00000c48 Code RO 2652 .text stm32f1xx_hal_dma.o - 0x08003574 0x08003574 0x00000224 Code RO 2676 .text stm32f1xx_hal_cortex.o - 0x08003798 0x08003798 0x00000f9c Code RO 2840 .text stm32f1xx_hal_uart.o - 0x08004734 0x08004734 0x00000024 Code RO 2868 .text mc_w.l(memseta.o) - 0x08004758 0x08004758 0x0000002c Code RO 3176 .text mc_w.l(uidiv.o) - 0x08004784 0x08004784 0x00000024 Code RO 3193 .text mc_w.l(init.o) - 0x080047a8 0x080047a8 0x00000020 Code RO 2961 i.__0printf$3 mc_w.l(printf3.o) - 0x080047c8 0x080047c8 0x0000000e Code RO 3203 i.__scatterload_copy mc_w.l(handlers.o) - 0x080047d6 0x080047d6 0x00000002 Code RO 3204 i.__scatterload_null mc_w.l(handlers.o) - 0x080047d8 0x080047d8 0x0000000e Code RO 3205 i.__scatterload_zeroinit mc_w.l(handlers.o) - 0x080047e6 0x080047e6 0x00000002 PAD - 0x080047e8 0x080047e8 0x000001b8 Code RO 2968 i._printf_core mc_w.l(printf3.o) - 0x080049a0 0x080049a0 0x00000010 Data RO 2471 .constdata system_stm32f1xx.o - 0x080049b0 0x080049b0 0x00000008 Data RO 2472 .constdata system_stm32f1xx.o - 0x080049b8 0x080049b8 0x00000020 Data RO 3201 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 0x00000560 Code RO 976 .text epd_4in2_test.o + 0x080009c0 0x080009c0 0x000007e0 Code RO 2022 .text epd_4in2.o + 0x080011a0 0x080011a0 0x00000068 Code RO 2365 .text dev_config.o + 0x08001208 0x08001208 0x00000e70 Code RO 2390 .text gui_paint.o + 0x08002078 0x08002078 0x000000c4 Code RO 2524 .text system_stm32f1xx.o + 0x0800213c 0x0800213c 0x000015e8 Code RO 2580 .text stm32f1xx_hal_spi.o + 0x08003724 0x08003724 0x00000188 Code RO 2604 .text stm32f1xx_hal.o + 0x080038ac 0x080038ac 0x000008c8 Code RO 2634 .text stm32f1xx_hal_rcc.o + 0x08004174 0x08004174 0x000003d4 Code RO 2682 .text stm32f1xx_hal_gpio.o + 0x08004548 0x08004548 0x00000c48 Code RO 2706 .text stm32f1xx_hal_dma.o + 0x08005190 0x08005190 0x00000224 Code RO 2730 .text stm32f1xx_hal_cortex.o + 0x080053b4 0x080053b4 0x00000f9c Code RO 2894 .text stm32f1xx_hal_uart.o + 0x08006350 0x08006350 0x00000024 Code RO 2922 .text mc_w.l(memseta.o) + 0x08006374 0x08006374 0x0000002c Code RO 3230 .text mc_w.l(uidiv.o) + 0x080063a0 0x080063a0 0x00000024 Code RO 3247 .text mc_w.l(init.o) + 0x080063c4 0x080063c4 0x00000020 Code RO 3015 i.__0printf$3 mc_w.l(printf3.o) + 0x080063e4 0x080063e4 0x0000000e Code RO 3257 i.__scatterload_copy mc_w.l(handlers.o) + 0x080063f2 0x080063f2 0x00000002 Code RO 3258 i.__scatterload_null mc_w.l(handlers.o) + 0x080063f4 0x080063f4 0x0000000e Code RO 3259 i.__scatterload_zeroinit mc_w.l(handlers.o) + 0x08006402 0x08006402 0x00000002 PAD + 0x08006404 0x08006404 0x000001b8 Code RO 3022 i._printf_core mc_w.l(printf3.o) + 0x080065bc 0x080065bc 0x00000050 Code RO 3187 i.free mc_w.l(malloc.o) + 0x0800660c 0x0800660c 0x0000006c Code RO 3188 i.malloc mc_w.l(malloc.o) + 0x08006678 0x08006678 0x00003a98 Data RO 321 .constdata imagedata.o + 0x0800a110 0x0800a110 0x00007530 Data RO 322 .constdata imagedata.o + 0x08011640 0x08011640 0x0000029c Data RO 2024 .constdata epd_4in2.o + 0x080118dc 0x080118dc 0x00000474 Data RO 2437 .constdata font12.o + 0x08011d50 0x08011d50 0x000005d6 Data RO 2451 .constdata font12cn.o + 0x08012326 0x08012326 0x00000be0 Data RO 2465 .constdata font16.o + 0x08012f06 0x08012f06 0x00001182 Data RO 2507 .constdata font24cn.o + 0x08014088 0x08014088 0x00000010 Data RO 2525 .constdata system_stm32f1xx.o + 0x08014098 0x08014098 0x00000008 Data RO 2526 .constdata system_stm32f1xx.o + 0x080140a0 0x080140a0 0x000000e9 Data RO 2392 .conststring gui_paint.o + 0x08014189 0x08014189 0x00000003 PAD + 0x0801418c 0x0801418c 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: 0x080141ac, Size: 0x0000db90, Max: 0x00010000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x20000000 0x080049d8 0x00000004 Data RW 2473 .data system_stm32f1xx.o - 0x20000004 0x080049dc 0x0000000c Data RW 2551 .data stm32f1xx_hal.o - 0x20000010 0x080049e8 0x00000004 Data RW 3175 .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 0x080141ac 0x00000008 Data RW 2438 .data font12.o + 0x20000008 0x080141b4 0x0000000c Data RW 2452 .data font12cn.o + 0x20000014 0x080141c0 0x00000008 Data RW 2466 .data font16.o + 0x2000001c 0x080141c8 0x0000000c Data RW 2508 .data font24cn.o + 0x20000028 0x080141d4 0x00000004 Data RW 2527 .data system_stm32f1xx.o + 0x2000002c 0x080141d8 0x0000000c Data RW 2605 .data stm32f1xx_hal.o + 0x20000038 0x080141e4 0x00000004 Data RW 3229 .data mc_w.l(stdout.o) + 0x2000003c 0x080141e8 0x00000004 Data RW 3234 .data mc_w.l(mvars.o) + 0x20000040 0x080141ec 0x00000004 Data RW 3235 .data mc_w.l(mvars.o) + 0x20000044 - 0x00000058 Zero RW 187 .bss spi.o + 0x2000009c - 0x00000040 Zero RW 217 .bss usart.o + 0x200000dc - 0x00003a98 Zero RW 2023 .bss epd_4in2.o + 0x20003b74 - 0x00000018 Zero RW 2391 .bss gui_paint.o + 0x20003b8c 0x080141f0 0x00000004 PAD + 0x20003b90 - 0x00009000 Zero RW 2 HEAP startup_stm32f103xe.o + 0x2000cb90 - 0x00001000 Zero RW 1 STACK startup_stm32f103xe.o ============================================================================== @@ -2196,26 +2329,35 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug Object Name - 96 10 0 0 0 803 gpio.o - 148 20 0 0 0 461070 main.o - 188 18 0 0 88 1429 spi.o - 36 8 304 0 4096 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 - 980 30 0 0 0 4391 stm32f1xx_hal_gpio.o - 60 8 0 0 0 826 stm32f1xx_hal_msp.o - 2248 88 0 0 0 6559 stm32f1xx_hal_rcc.o - 5608 106 0 0 0 19625 stm32f1xx_hal_spi.o - 3996 46 0 0 0 17432 stm32f1xx_hal_uart.o - 48 22 0 0 0 1246 stm32f1xx_it.o - 196 28 24 4 0 1509 system_stm32f1xx.o - 216 18 0 0 64 1753 usart.o + 104 10 0 0 0 800 dev_config.o + 2016 80 668 0 15000 6882 epd_4in2.o + 1376 398 0 0 0 1444 epd_4in2_test.o + 0 0 1140 8 0 1405 font12.o + 0 0 1494 12 0 1415 font12cn.o + 0 0 3040 8 0 1405 font16.o + 0 0 4482 12 0 1415 font24cn.o + 96 10 0 0 0 843 gpio.o + 3696 660 233 0 24 14452 gui_paint.o + 0 0 45000 0 0 3152 imagedata.o + 152 20 0 0 0 462096 main.o + 188 18 0 0 88 1489 spi.o + 36 8 304 0 40960 812 startup_stm32f103xe.o + 392 38 0 12 0 7729 stm32f1xx_hal.o + 548 12 0 0 0 30726 stm32f1xx_hal_cortex.o + 3144 164 0 0 0 7149 stm32f1xx_hal_dma.o + 980 30 0 0 0 4431 stm32f1xx_hal_gpio.o + 60 8 0 0 0 866 stm32f1xx_hal_msp.o + 2248 88 0 0 0 6599 stm32f1xx_hal_rcc.o + 5608 106 0 0 0 19665 stm32f1xx_hal_spi.o + 3996 46 0 0 0 17472 stm32f1xx_hal_uart.o + 48 22 0 0 0 1266 stm32f1xx_it.o + 196 28 24 4 0 1569 system_stm32f1xx.o + 216 18 0 0 64 1801 usart.o ---------------------------------------------------------------------- - 17904 616 360 16 4252 562871 Object Totals + 25100 1764 56420 56 56140 596883 Object Totals 0 0 32 0 0 0 (incl. Generated) - 0 0 0 0 4 0 (incl. Padding) + 0 0 3 0 4 0 (incl. Padding) ---------------------------------------------------------------------- @@ -2231,23 +2373,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 ---------------------------------------------------------------------- @@ -2256,15 +2400,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 + 25928 1814 56420 68 56140 595763 Grand Totals + 25928 1814 56420 68 56140 595763 ELF Image Totals + 25928 1814 56420 68 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) 82348 ( 80.42kB) + Total RW Size (RW Data + ZI Data) 56208 ( 54.89kB) + Total ROM Size (Code + RO Data + RW Data) 82416 ( 80.48kB) ============================================================================== diff --git a/STM32/STM32-F103ZET6/MDK-ARM/startup_stm32f103xe.lst b/STM32/STM32-F103ZET6/MDK-ARM/startup_stm32f103xe.lst index e357224..18fbec1 100644 --- a/STM32/STM32-F103ZET6/MDK-ARM/startup_stm32f103xe.lst +++ b/STM32/STM32-F103ZET6/MDK-ARM/startup_stm32f103xe.lst @@ -580,17 +580,17 @@ ARM Macro Assembler Page 9 00000000 Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M3 --apcs=interw ork --depend=epd-demo\startup_stm32f103xe.d -oepd-demo\startup_stm32f103xe.o -I -.\RTE\_epd-demo -I"D:\Program Files\keil5\ARM\PACK\ARM\CMSIS\5.7.0\CMSIS\Core\I -nclude" -I"D:\Program Files\keil5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Incl -ude" --predefine="__MICROLIB SETA 1" --predefine="__UVISION_VERSION SETA 525" - +.\RTE\_epd-demo -ID:\KEIL\azwz\ARM\PACK\ARM\CMSIS\5.4.0\CMSIS\Core\Include -ID: +\KEIL\azwz\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include --predefine="__MICR +OLIB SETA 1" --predefine="__UVISION_VERSION SETA 526" --predefine="_RTE_ SETA 1 ARM Macro Assembler Page 10 --predefine="_RTE_ SETA 1" --predefine="STM32F10X_HD SETA 1" --list=startup_stm3 -2f103xe.lst startup_stm32f103xe.s +" --predefine="STM32F10X_HD SETA 1" --list=startup_stm32f103xe.lst startup_stm3 +2f103xe.s diff --git a/STM32/STM32-F103ZET6/Src/main.c b/STM32/STM32-F103ZET6/Src/main.c index d29d027..330e924 100644 --- a/STM32/STM32-F103ZET6/Src/main.c +++ b/STM32/STM32-F103ZET6/Src/main.c @@ -114,6 +114,7 @@ int main(void) // EPD_2in13_test(); // EPD_2in13_V2_test(); +// EPD_2in13_V3_test(); // EPD_2in13bc_test(); // EPD_2in13b_V3_test(); // EPD_2in13d_test(); @@ -125,7 +126,7 @@ int main(void) // EPD_4in01f_test(); -// EPD_4in2_test(); + EPD_4in2_test(); // EPD_4in2bc_test(); // EPD_4in2b_V2_test(); // EPD_5in65f_test(); diff --git a/STM32/STM32-F103ZET6/User/Examples/EPD_2in13_V3_test.c b/STM32/STM32-F103ZET6/User/Examples/EPD_2in13_V3_test.c new file mode 100644 index 0000000..fce9c34 --- /dev/null +++ b/STM32/STM32-F103ZET6/User/Examples/EPD_2in13_V3_test.c @@ -0,0 +1,149 @@ +/***************************************************************************** +* | File : EPD_2in13_V3_test.c +* | Author : Waveshare team +* | Function : 2.13inch e-paper V3 test demo +* | Info : +*---------------- +* | This version: V1.1 +* | Date : 2021-10-30 +* | Info : +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_Test.h" +#include "EPD_2in13_V3.h" + +int EPD_2in13_V3_test(void) +{ + Debug("EPD_2in13_V3_test Demo\r\n"); + if(DEV_Module_Init()!=0){ + return -1; + } + + Debug("e-Paper Init and Clear...\r\n"); + EPD_2in13_V3_Init(); + EPD_2in13_V3_Clear(); + + //Create a new image cache + UBYTE *BlackImage; + UWORD Imagesize = ((EPD_2in13_V3_WIDTH % 8 == 0)? (EPD_2in13_V3_WIDTH / 8 ): (EPD_2in13_V3_WIDTH / 8 + 1)) * EPD_2in13_V3_HEIGHT; + if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { + Debug("Failed to apply for black memory...\r\n"); + return -1; + } + Debug("Paint_NewImage\r\n"); + Paint_NewImage(BlackImage, EPD_2in13_V3_WIDTH, EPD_2in13_V3_HEIGHT, 90, WHITE); + Paint_Clear(WHITE); + +#if 1 //show image for array + Debug("show image for array\r\n"); + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + Paint_DrawBitMap(gImage_2in13); + + EPD_2in13_V3_Display(BlackImage); + DEV_Delay_ms(2000); +#endif + +#if 1 // Drawing on the image + Paint_NewImage(BlackImage, EPD_2in13_V3_WIDTH, EPD_2in13_V3_HEIGHT, 90, WHITE); + Debug("Drawing\r\n"); + //1.Select Image + Paint_SelectImage(BlackImage); + Paint_Clear(WHITE); + + // 2.Drawing on the image + Paint_DrawPoint(5, 10, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); + Paint_DrawPoint(5, 25, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT); + Paint_DrawPoint(5, 40, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); + Paint_DrawPoint(5, 55, BLACK, DOT_PIXEL_4X4, DOT_STYLE_DFT); + + Paint_DrawLine(20, 10, 70, 60, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(70, 10, 20, 60, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawRectangle(20, 10, 70, 60, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(85, 10, 135, 60, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawLine(45, 15, 45, 55, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawLine(25, 35, 70, 35, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawCircle(45, 35, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(110, 35, 20, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + + Paint_DrawString_EN(140, 15, "waveshare", &Font16, BLACK, WHITE); + Paint_DrawNum(140, 40, 123456789, &Font16, BLACK, WHITE); + + Paint_DrawString_CN(140, 60, "ÄãºÃabc", &Font12CN, BLACK, WHITE); + Paint_DrawString_CN(5, 65, "΢ѩµç×Ó", &Font24CN, WHITE, BLACK); + + EPD_2in13_V3_Display_Base(BlackImage); + DEV_Delay_ms(3000); +#endif + +#if 1 //Partial refresh, example shows time + Paint_NewImage(BlackImage, EPD_2in13_V3_WIDTH, EPD_2in13_V3_HEIGHT, 90, WHITE); + Debug("Partial refresh\r\n"); + Paint_SelectImage(BlackImage); + + PAINT_TIME sPaint_time; + sPaint_time.Hour = 12; + sPaint_time.Min = 34; + sPaint_time.Sec = 56; + UBYTE num = 10; + for (;;) { + sPaint_time.Sec = sPaint_time.Sec + 1; + if (sPaint_time.Sec == 60) { + sPaint_time.Min = sPaint_time.Min + 1; + sPaint_time.Sec = 0; + if (sPaint_time.Min == 60) { + sPaint_time.Hour = sPaint_time.Hour + 1; + sPaint_time.Min = 0; + if (sPaint_time.Hour == 24) { + sPaint_time.Hour = 0; + sPaint_time.Min = 0; + sPaint_time.Sec = 0; + } + } + } + Paint_ClearWindows(150, 80, 150 + Font20.Width * 7, 80 + Font20.Height, WHITE); + Paint_DrawTime(150, 80, &sPaint_time, &Font20, WHITE, BLACK); + + num = num - 1; + if(num == 0) { + break; + } + EPD_2in13_V3_Display_Partial(BlackImage); + DEV_Delay_ms(500);//Analog clock 1s + } +#endif + + Debug("Clear...\r\n"); + EPD_2in13_V3_Init(); + EPD_2in13_V3_Clear(); + + Debug("Goto Sleep...\r\n"); + EPD_2in13_V3_Sleep(); + free(BlackImage); + BlackImage = NULL; + DEV_Delay_ms(2000);//important, at least 2s + // close 5V + Debug("close 5V, Module enters 0 power consumption ...\r\n"); + DEV_Module_Exit(); + return 0; +} + diff --git a/STM32/STM32-F103ZET6/User/Examples/EPD_2in66_test.c b/STM32/STM32-F103ZET6/User/Examples/EPD_2in66_test.c index ef35275..7e88972 100644 --- a/STM32/STM32-F103ZET6/User/Examples/EPD_2in66_test.c +++ b/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); diff --git a/STM32/STM32-F103ZET6/User/Examples/EPD_4in2_test.c b/STM32/STM32-F103ZET6/User/Examples/EPD_4in2_test.c index b6ac446..ab1a164 100644 --- a/STM32/STM32-F103ZET6/User/Examples/EPD_4in2_test.c +++ b/STM32/STM32-F103ZET6/User/Examples/EPD_4in2_test.c @@ -39,7 +39,7 @@ int EPD_4in2_test(void) } printf("e-Paper Init and Clear...\r\n"); - EPD_4IN2_Init(); + EPD_4IN2_Init_Fast(); EPD_4IN2_Clear(); DEV_Delay_ms(500); @@ -86,8 +86,8 @@ int EPD_4in2_test(void) Paint_DrawString_EN(10, 20, "hello world", &Font12, WHITE, BLACK); 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); printf("EPD_Display\r\n"); EPD_4IN2_Display(BlackImage); @@ -95,12 +95,13 @@ int EPD_4in2_test(void) #endif printf("Support for partial refresh, but the refresh effect is not good, but it is not recommended\r\n"); #if 0 + EPD_4IN2_Init_Partial(); printf("Partial refresh\r\n"); - PAINT_TIME sPaint_time; - sPaint_time.Hour = 12; - sPaint_time.Min = 34; - sPaint_time.Sec = 56; - UBYTE num = 20; + PAINT_TIME sPaint_time; + sPaint_time.Hour = 12; + sPaint_time.Min = 34; + sPaint_time.Sec = 56; + UBYTE num = 20; for (;;) { sPaint_time.Sec = sPaint_time.Sec + 1; if (sPaint_time.Sec == 60) { @@ -132,39 +133,39 @@ int EPD_4in2_test(void) free(BlackImage); BlackImage = NULL; Imagesize = ((EPD_4IN2_WIDTH % 8 == 0)? (EPD_4IN2_WIDTH / 4 ): (EPD_4IN2_WIDTH / 4 + 1)) * EPD_4IN2_HEIGHT; - if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { - printf("Failed to apply for black memory...\r\n"); - return -1; - } + if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) { + printf("Failed to apply for black memory...\r\n"); + return -1; + } Paint_NewImage(BlackImage, EPD_4IN2_WIDTH, EPD_4IN2_HEIGHT, 0, WHITE); Paint_SetScale(4); Paint_Clear(WHITE); Paint_DrawPoint(10, 80, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT); - Paint_DrawPoint(10, 90, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT); - Paint_DrawPoint(10, 100, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); - Paint_DrawLine(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); - Paint_DrawLine(70, 70, 20, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); - Paint_DrawRectangle(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); - Paint_DrawRectangle(80, 70, 130, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); - Paint_DrawCircle(45, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); - Paint_DrawCircle(105, 95, 20, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); - Paint_DrawLine(85, 95, 125, 95, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); - Paint_DrawLine(105, 75, 105, 115, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); - Paint_DrawString_EN(10, 0, "waveshare", &Font16, BLACK, WHITE); - Paint_DrawString_EN(10, 20, "hello world", &Font12, WHITE, BLACK); - Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE); - Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK); - Paint_DrawString_CN(140, 0, "ÄãºÃabc", &Font12CN, GRAY1, GRAY4); - Paint_DrawString_CN(140, 40, "ÄãºÃabc", &Font12CN, GRAY2, GRAY3); - Paint_DrawString_CN(140, 80, "ÄãºÃabc", &Font12CN, GRAY3, GRAY2); - Paint_DrawString_CN(140, 120, "ÄãºÃabc", &Font12CN, GRAY4, GRAY1); - - Paint_DrawString_CN(220, 0, "΢ѩµç×Ó", &Font24CN, GRAY1, GRAY4); - Paint_DrawString_CN(220, 40, "΢ѩµç×Ó", &Font24CN, GRAY2, GRAY3); - Paint_DrawString_CN(220, 80, "΢ѩµç×Ó", &Font24CN, GRAY3, GRAY2); - Paint_DrawString_CN(220, 120, "΢ѩµç×Ó", &Font24CN, GRAY4, GRAY1); - + Paint_DrawPoint(10, 90, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT); + Paint_DrawPoint(10, 100, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT); + Paint_DrawLine(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawLine(70, 70, 20, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID); + Paint_DrawRectangle(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawRectangle(80, 70, 130, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawCircle(45, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY); + Paint_DrawCircle(105, 95, 20, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL); + Paint_DrawLine(85, 95, 125, 95, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawLine(105, 75, 105, 115, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED); + Paint_DrawString_EN(10, 0, "waveshare", &Font16, BLACK, WHITE); + Paint_DrawString_EN(10, 20, "hello world", &Font12, WHITE, BLACK); + Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE); + Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK); + Paint_DrawString_CN(140, 0, "���abc", &Font12CN, GRAY1, GRAY4); + Paint_DrawString_CN(140, 40, "���abc", &Font12CN, GRAY2, GRAY3); + Paint_DrawString_CN(140, 80, "���abc", &Font12CN, GRAY3, GRAY2); + Paint_DrawString_CN(140, 120, "���abc", &Font12CN, GRAY4, GRAY1); + + Paint_DrawString_CN(220, 0, "΢ѩ����", &Font24CN, GRAY1, GRAY4); + Paint_DrawString_CN(220, 40, "΢ѩ����", &Font24CN, GRAY2, GRAY3); + Paint_DrawString_CN(220, 80, "΢ѩ����", &Font24CN, GRAY3, GRAY2); + Paint_DrawString_CN(220, 120, "΢ѩ����", &Font24CN, GRAY4, GRAY1); + EPD_4IN2_4GrayDisplay(BlackImage); DEV_Delay_ms(500); @@ -172,18 +173,19 @@ int EPD_4in2_test(void) EPD_4IN2_4GrayDisplay(gImage_4in2_4Gray); DEV_Delay_ms(2000); - + EPD_4IN2_Clear(); - printf("Goto Sleep...\r\n"); - EPD_4IN2_Sleep(); - free(BlackImage); - BlackImage = NULL; + EPD_4IN2_Init_Fast(); + printf("Goto Sleep...\r\n"); + EPD_4IN2_Sleep(); + free(BlackImage); + BlackImage = NULL; + + // close 5V + printf("close 5V, Module enters 0 power consumption ...\r\n"); + DEV_Module_Exit(); - // close 5V - printf("close 5V, Module enters 0 power consumption ...\r\n"); - DEV_Module_Exit(); - - return 0; + return 0; } diff --git a/STM32/STM32-F103ZET6/User/Examples/EPD_Test.h b/STM32/STM32-F103ZET6/User/Examples/EPD_Test.h index b758218..e48f54d 100644 --- a/STM32/STM32-F103ZET6/User/Examples/EPD_Test.h +++ b/STM32/STM32-F103ZET6/User/Examples/EPD_Test.h @@ -56,6 +56,7 @@ int EPD_2in9d_test(void); int EPD_2in13_test(void); int EPD_2in13_V2_test(void); +int EPD_2in13_V3_test(void); int EPD_2in13bc_test(void); int EPD_2in13b_V3_test(void); int EPD_2in13d_test(void); diff --git a/STM32/STM32-F103ZET6/User/Examples/ImageData.c b/STM32/STM32-F103ZET6/User/Examples/ImageData.c index dd44ec7..dcd9444 100644 --- a/STM32/STM32-F103ZET6/User/Examples/ImageData.c +++ b/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, diff --git a/STM32/STM32-F103ZET6/User/Examples/ImageData.h b/STM32/STM32-F103ZET6/User/Examples/ImageData.h index 741a70d..e9d9dc6 100644 --- a/STM32/STM32-F103ZET6/User/Examples/ImageData.h +++ b/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[]; diff --git a/STM32/STM32-F103ZET6/User/GUI/GUI_Paint.c b/STM32/STM32-F103ZET6/User/GUI/GUI_Paint.c index 3cfc244..3e3d049 100644 --- a/STM32/STM32-F103ZET6/User/GUI/GUI_Paint.c +++ b/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: diff --git a/STM32/STM32-F103ZET6/User/GUI/GUI_Paint.h b/STM32/STM32-F103ZET6/User/GUI/GUI_Paint.h index 8a3902c..7b5c191 100644 --- a/STM32/STM32-F103ZET6/User/GUI/GUI_Paint.h +++ b/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); diff --git a/STM32/STM32-F103ZET6/User/e-Paper/EPD_1in54_V2.c b/STM32/STM32-F103ZET6/User/e-Paper/EPD_1in54_V2.c index b674cd9..0350066 100644 --- a/STM32/STM32-F103ZET6/User/e-Paper/EPD_1in54_V2.c +++ b/STM32/STM32-F103ZET6/User/e-Paper/EPD_1in54_V2.c @@ -78,30 +78,6 @@ unsigned char WF_PARTIAL_1IN54_0[159] = 0x02,0x17,0x41,0xB0,0x32,0x28, }; -// waveform partial refresh(quality) -unsigned char WF_PARTIAL_1IN54_1[159] = -{ -0x0,0x00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0xA,0x0,0x0,0x0,0x0,0x0,0x1, -0x1,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x0,0x0,0x0,0x0,0x0,0x0,0x0, -0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0, -0x22,0x17,0x41,0x0,0x32,0x20, -}; - /****************************************************************************** function : Software reset parameter: @@ -276,21 +252,21 @@ void EPD_1IN54_V2_Init_Partial(void) EPD_1IN54_V2_Reset(); EPD_1IN54_V2_ReadBusy(); - EPD_1IN54_V2_SetLut(WF_PARTIAL_1IN54_1); - EPD_1IN54_V2_SendCommand(0x37); - EPD_1IN54_V2_SendData(0x00); - EPD_1IN54_V2_SendData(0x00); - EPD_1IN54_V2_SendData(0x00); - EPD_1IN54_V2_SendData(0x00); - EPD_1IN54_V2_SendData(0x00); - EPD_1IN54_V2_SendData(0x40); - EPD_1IN54_V2_SendData(0x00); - EPD_1IN54_V2_SendData(0x00); - EPD_1IN54_V2_SendData(0x00); - EPD_1IN54_V2_SendData(0x00); - - EPD_1IN54_V2_SendCommand(0x3C); //BorderWavefrom - EPD_1IN54_V2_SendData(0x80); + EPD_1IN54_V2_SetLut(WF_PARTIAL_1IN54_0); + EPD_1IN54_V2_SendCommand(0x37); + EPD_1IN54_V2_SendData(0x00); + EPD_1IN54_V2_SendData(0x00); + EPD_1IN54_V2_SendData(0x00); + EPD_1IN54_V2_SendData(0x00); + EPD_1IN54_V2_SendData(0x00); + EPD_1IN54_V2_SendData(0x40); + EPD_1IN54_V2_SendData(0x00); + EPD_1IN54_V2_SendData(0x00); + EPD_1IN54_V2_SendData(0x00); + EPD_1IN54_V2_SendData(0x00); + + EPD_1IN54_V2_SendCommand(0x3C); //BorderWavefrom + EPD_1IN54_V2_SendData(0x80); EPD_1IN54_V2_SendCommand(0x22); EPD_1IN54_V2_SendData(0xc0); diff --git a/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in13_V3.c b/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in13_V3.c new file mode 100644 index 0000000..efe2898 --- /dev/null +++ b/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in13_V3.c @@ -0,0 +1,396 @@ +/***************************************************************************** +* | File : EPD_2in13_V3.c +* | Author : Waveshare team +* | Function : 2.13inch e-paper V3 +* | Info : +*---------------- +* | This version: V1.1 +* | Date : 2021-10-30 +* | Info : +* ----------------------------------------------------------------------------- +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#include "EPD_2in13_V3.h" +#include "Debug.h" + +UBYTE WF_PARTIAL_2IN13_V3[159] = +{ + 0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x14,0x0,0x0,0x0,0x0,0x0,0x0, + 0x1,0x0,0x0,0x0,0x0,0x0,0x0, + 0x1,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0, + 0x22,0x17,0x41,0x00,0x32,0x36, +}; + +UBYTE WS_20_30_2IN13_V3[159] = +{ + 0x80, 0x4A, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x40, 0x4A, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x80, 0x4A, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x40, 0x4A, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0xF, 0x0, 0x0, 0xF, 0x0, 0x0, 0x2, + 0xF, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, + 0x22, 0x17, 0x41, 0x0, 0x32, 0x36 +}; + +/****************************************************************************** +function : Software reset +parameter: +******************************************************************************/ +static void EPD_2in13_V3_Reset(void) +{ + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(20); + DEV_Digital_Write(EPD_RST_PIN, 0); + DEV_Delay_ms(2); + DEV_Digital_Write(EPD_RST_PIN, 1); + DEV_Delay_ms(20); +} + +/****************************************************************************** +function : send command +parameter: + Reg : Command register +******************************************************************************/ +static void EPD_2in13_V3_SendCommand(UBYTE Reg) +{ + DEV_Digital_Write(EPD_DC_PIN, 0); + DEV_Digital_Write(EPD_CS_PIN, 0); + DEV_SPI_WriteByte(Reg); + DEV_Digital_Write(EPD_CS_PIN, 1); +} + +/****************************************************************************** +function : send data +parameter: + Data : Write data +******************************************************************************/ +static void EPD_2in13_V3_SendData(UBYTE Data) +{ + DEV_Digital_Write(EPD_DC_PIN, 1); + DEV_Digital_Write(EPD_CS_PIN, 0); + DEV_SPI_WriteByte(Data); + DEV_Digital_Write(EPD_CS_PIN, 1); +} + +/****************************************************************************** +function : Wait until the busy_pin goes LOW +parameter: +******************************************************************************/ +void EPD_2in13_V3_ReadBusy(void) +{ + Debug("e-Paper busy\r\n"); + while(1) + { //=1 BUSY + if(DEV_Digital_Read(EPD_BUSY_PIN)==0) + break; + DEV_Delay_ms(10); + } + DEV_Delay_ms(10); + Debug("e-Paper busy release\r\n"); +} + +/****************************************************************************** +function : Turn On Display +parameter: +******************************************************************************/ +static void EPD_2in13_V3_TurnOnDisplay(void) +{ + EPD_2in13_V3_SendCommand(0x22); // Display Update Control + EPD_2in13_V3_SendData(0xc7); + EPD_2in13_V3_SendCommand(0x20); // Activate Display Update Sequence + EPD_2in13_V3_ReadBusy(); +} + +/****************************************************************************** +function : Turn On Display +parameter: +******************************************************************************/ +static void EPD_2in13_V3_TurnOnDisplay_Partial(void) +{ + EPD_2in13_V3_SendCommand(0x22); // Display Update Control + EPD_2in13_V3_SendData(0x0f); // fast:0x0c, quality:0x0f, 0xcf + EPD_2in13_V3_SendCommand(0x20); // Activate Display Update Sequence + EPD_2in13_V3_ReadBusy(); +} + +/****************************************************************************** +function : Set lut +parameter: + lut : lut data +******************************************************************************/ +static void EPD_2IN13_V3_LUT(UBYTE *lut) +{ + UBYTE count; + EPD_2in13_V3_SendCommand(0x32); + for(count=0; count<153; count++) + EPD_2in13_V3_SendData(lut[count]); + EPD_2in13_V3_ReadBusy(); +} + +/****************************************************************************** +function : Send lut data and configuration +parameter: + lut : lut data +******************************************************************************/ +static void EPD_2IN13_V2_LUT_by_host(UBYTE *lut) +{ + EPD_2IN13_V3_LUT((UBYTE *)lut); //lut + EPD_2in13_V3_SendCommand(0x3f); + EPD_2in13_V3_SendData(*(lut+153)); + EPD_2in13_V3_SendCommand(0x03); // gate voltage + EPD_2in13_V3_SendData(*(lut+154)); + EPD_2in13_V3_SendCommand(0x04); // source voltage + EPD_2in13_V3_SendData(*(lut+155)); // VSH + EPD_2in13_V3_SendData(*(lut+156)); // VSH2 + EPD_2in13_V3_SendData(*(lut+157)); // VSL + EPD_2in13_V3_SendCommand(0x2c); // VCOM + EPD_2in13_V3_SendData(*(lut+158)); +} + +/****************************************************************************** +function : Setting the display window +parameter: + Xstart : X-axis starting position + Ystart : Y-axis starting position + Xend : End position of X-axis + Yend : End position of Y-axis +******************************************************************************/ +static void EPD_2in13_V3_SetWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend) +{ + EPD_2in13_V3_SendCommand(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION + EPD_2in13_V3_SendData((Xstart>>3) & 0xFF); + EPD_2in13_V3_SendData((Xend>>3) & 0xFF); + + EPD_2in13_V3_SendCommand(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION + EPD_2in13_V3_SendData(Ystart & 0xFF); + EPD_2in13_V3_SendData((Ystart >> 8) & 0xFF); + EPD_2in13_V3_SendData(Yend & 0xFF); + EPD_2in13_V3_SendData((Yend >> 8) & 0xFF); +} + +/****************************************************************************** +function : Set Cursor +parameter: + Xstart : X-axis starting position + Ystart : Y-axis starting position +******************************************************************************/ +static void EPD_2in13_V3_SetCursor(UWORD Xstart, UWORD Ystart) +{ + EPD_2in13_V3_SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER + EPD_2in13_V3_SendData(Xstart & 0xFF); + + EPD_2in13_V3_SendCommand(0x4F); // SET_RAM_Y_ADDRESS_COUNTER + EPD_2in13_V3_SendData(Ystart & 0xFF); + EPD_2in13_V3_SendData((Ystart >> 8) & 0xFF); +} + +/****************************************************************************** +function : Initialize the e-Paper register +parameter: +******************************************************************************/ +void EPD_2in13_V3_Init(void) +{ + EPD_2in13_V3_Reset(); + DEV_Delay_ms(100); + + EPD_2in13_V3_ReadBusy(); + EPD_2in13_V3_SendCommand(0x12); //SWRESET + EPD_2in13_V3_ReadBusy(); + + EPD_2in13_V3_SendCommand(0x01); //Driver output control + EPD_2in13_V3_SendData(0xf9); + EPD_2in13_V3_SendData(0x00); + EPD_2in13_V3_SendData(0x00); + + EPD_2in13_V3_SendCommand(0x11); //data entry mode + EPD_2in13_V3_SendData(0x03); + + EPD_2in13_V3_SetWindows(0, 0, EPD_2in13_V3_WIDTH-1, EPD_2in13_V3_HEIGHT-1); + EPD_2in13_V3_SetCursor(0, 0); + + EPD_2in13_V3_SendCommand(0x3C); //BorderWavefrom + EPD_2in13_V3_SendData(0x05); + + EPD_2in13_V3_SendCommand(0x21); // Display update control + EPD_2in13_V3_SendData(0x00); + EPD_2in13_V3_SendData(0x80); + + EPD_2in13_V3_SendCommand(0x18); //Read built-in temperature sensor + EPD_2in13_V3_SendData(0x80); + + EPD_2in13_V3_ReadBusy(); + EPD_2IN13_V2_LUT_by_host(WS_20_30_2IN13_V3); +} + +/****************************************************************************** +function : Clear screen +parameter: +******************************************************************************/ +void EPD_2in13_V3_Clear(void) +{ + UWORD Width, Height; + Width = (EPD_2in13_V3_WIDTH % 8 == 0)? (EPD_2in13_V3_WIDTH / 8 ): (EPD_2in13_V3_WIDTH / 8 + 1); + Height = EPD_2in13_V3_HEIGHT; + + EPD_2in13_V3_SendCommand(0x24); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_2in13_V3_SendData(0XFF); + } + } + + EPD_2in13_V3_TurnOnDisplay(); +} + +/****************************************************************************** +function : Sends the image buffer in RAM to e-Paper and displays +parameter: + image : Image data +******************************************************************************/ +void EPD_2in13_V3_Display(UBYTE *Image) +{ + UWORD Width, Height; + Width = (EPD_2in13_V3_WIDTH % 8 == 0)? (EPD_2in13_V3_WIDTH / 8 ): (EPD_2in13_V3_WIDTH / 8 + 1); + Height = EPD_2in13_V3_HEIGHT; + + EPD_2in13_V3_SendCommand(0x24); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_2in13_V3_SendData(Image[i + j * Width]); + } + } + + EPD_2in13_V3_TurnOnDisplay(); +} + +/****************************************************************************** +function : Refresh a base image +parameter: + image : Image data +******************************************************************************/ +void EPD_2in13_V3_Display_Base(UBYTE *Image) +{ + UWORD Width, Height; + Width = (EPD_2in13_V3_WIDTH % 8 == 0)? (EPD_2in13_V3_WIDTH / 8 ): (EPD_2in13_V3_WIDTH / 8 + 1); + Height = EPD_2in13_V3_HEIGHT; + + EPD_2in13_V3_SendCommand(0x24); //Write Black and White image to RAM + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_2in13_V3_SendData(Image[i + j * Width]); + } + } + EPD_2in13_V3_SendCommand(0x26); //Write Black and White image to RAM + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_2in13_V3_SendData(Image[i + j * Width]); + } + } + EPD_2in13_V3_TurnOnDisplay(); +} + +/****************************************************************************** +function : Sends the image buffer in RAM to e-Paper and partial refresh +parameter: + image : Image data +******************************************************************************/ +void EPD_2in13_V3_Display_Partial(UBYTE *Image) +{ + UWORD Width, Height; + Width = (EPD_2in13_V3_WIDTH % 8 == 0)? (EPD_2in13_V3_WIDTH / 8 ): (EPD_2in13_V3_WIDTH / 8 + 1); + Height = EPD_2in13_V3_HEIGHT; + + //Reset + DEV_Digital_Write(EPD_RST_PIN, 0); + DEV_Delay_ms(1); + DEV_Digital_Write(EPD_RST_PIN, 1); + + EPD_2IN13_V2_LUT_by_host(WF_PARTIAL_2IN13_V3); + + EPD_2in13_V3_SendCommand(0x37); + EPD_2in13_V3_SendData(0x00); + EPD_2in13_V3_SendData(0x00); + EPD_2in13_V3_SendData(0x00); + EPD_2in13_V3_SendData(0x00); + EPD_2in13_V3_SendData(0x00); + EPD_2in13_V3_SendData(0x40); ///RAM Ping-Pong enable + EPD_2in13_V3_SendData(0x00); + EPD_2in13_V3_SendData(0x00); + EPD_2in13_V3_SendData(0x00); + EPD_2in13_V3_SendData(0x00); + + EPD_2in13_V3_SendCommand(0x3C); //BorderWavefrom + EPD_2in13_V3_SendData(0x80); + + EPD_2in13_V3_SendCommand(0x22); //Display Update Sequence Option + EPD_2in13_V3_SendData(0xC0); // Enable clock and Enable analog + EPD_2in13_V3_SendCommand(0x20); //Activate Display Update Sequence + EPD_2in13_V3_ReadBusy(); + + EPD_2in13_V3_SetWindows(0, 0, EPD_2in13_V3_WIDTH-1, EPD_2in13_V3_HEIGHT-1); + EPD_2in13_V3_SetCursor(0, 0); + + EPD_2in13_V3_SendCommand(0x24); //Write Black and White image to RAM + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_2in13_V3_SendData(Image[i + j * Width]); + } + } + EPD_2in13_V3_TurnOnDisplay_Partial(); +} + +/****************************************************************************** +function : Enter sleep mode +parameter: +******************************************************************************/ +void EPD_2in13_V3_Sleep(void) +{ + EPD_2in13_V3_SendCommand(0x10); //enter deep sleep + EPD_2in13_V3_SendData(0x01); + DEV_Delay_ms(100); +} diff --git a/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in13_V3.h b/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in13_V3.h new file mode 100644 index 0000000..3915ea4 --- /dev/null +++ b/STM32/STM32-F103ZET6/User/e-Paper/EPD_2in13_V3.h @@ -0,0 +1,47 @@ +/***************************************************************************** +* | File : EPD_2Iin13_V3.h +* | Author : Waveshare team +* | Function : 2.13inch e-paper V3 +* | Info : +*---------------- +* | This version: V1.1 +* | Date : 2021-10-30 +* | Info : +* ----------------------------------------------------------------------------- +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documnetation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +******************************************************************************/ +#ifndef __EPD_2in13_V3_H_ +#define __EPD_2in13_V3_H_ + +#include "DEV_Config.h" + +// Display resolution +#define EPD_2in13_V3_WIDTH 122 +#define EPD_2in13_V3_HEIGHT 250 + +void EPD_2in13_V3_Init(void); +void EPD_2in13_V3_Clear(void); +void EPD_2in13_V3_Display(UBYTE *Image); +void EPD_2in13_V3_Display_Base(UBYTE *Image); +void EPD_2in13_V3_Display_Partial(UBYTE *Image); +void EPD_2in13_V3_Sleep(void); + +#endif diff --git a/STM32/STM32-F103ZET6/User/e-Paper/EPD_4in2.c b/STM32/STM32-F103ZET6/User/e-Paper/EPD_4in2.c index 34761fa..f7919d9 100644 --- a/STM32/STM32-F103ZET6/User/e-Paper/EPD_4in2.c +++ b/STM32/STM32-F103ZET6/User/e-Paper/EPD_4in2.c @@ -113,177 +113,184 @@ #include "Debug.h" static const unsigned char EPD_4IN2_lut_vcom0[] = { - 0x00, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x17, 0x17, 0x00, 0x00, 0x02, - 0x00, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; + 0x00, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x01, + 0x00, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, + }; static const unsigned char EPD_4IN2_lut_ww[] = { - 0x40, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x17, 0x17, 0x00, 0x00, 0x02, - 0x40, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; + 0x50, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x90, 0x0F, 0x0F, 0x00, 0x00, 0x01, + 0xA0, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; static const unsigned char EPD_4IN2_lut_bw[] = { - 0x40, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x17, 0x17, 0x00, 0x00, 0x02, - 0x40, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; + 0x50, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x90, 0x0F, 0x0F, 0x00, 0x00, 0x01, + 0xA0, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; static const unsigned char EPD_4IN2_lut_wb[] = { - 0x80, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x17, 0x17, 0x00, 0x00, 0x02, - 0x80, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0x50, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; + 0xA0, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x90, 0x0F, 0x0F, 0x00, 0x00, 0x01, + 0x50, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; static const unsigned char EPD_4IN2_lut_bb[] = { - 0x80, 0x17, 0x00, 0x00, 0x00, 0x02, - 0x90, 0x17, 0x17, 0x00, 0x00, 0x02, - 0x80, 0x0A, 0x01, 0x00, 0x00, 0x01, - 0x50, 0x0E, 0x0E, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; + 0x20, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x90, 0x0F, 0x0F, 0x00, 0x00, 0x01, + 0x10, 0x08, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }; /******************************partial screen update LUT*********************************/ -const unsigned char EPD_4IN2_Partial_lut_vcom1[] = { - 0x00 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,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 EPD_4IN2_Partial_lut_vcom1[] ={ + 0x00, 0x01, 0x20, 0x01, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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 EPD_4IN2_Partial_lut_ww1[] = { - 0x00 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 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 EPD_4IN2_Partial_lut_ww1[] ={ + 0x00, 0x01, 0x20, 0x01, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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 EPD_4IN2_Partial_lut_bw1[] = { - 0x80 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 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 EPD_4IN2_Partial_lut_bw1[] ={ + 0x20, 0x01, 0x20, 0x01, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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 EPD_4IN2_Partial_lut_wb1[] = { - 0x40 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 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 EPD_4IN2_Partial_lut_wb1[] ={ + 0x10, 0x01, 0x20, 0x01, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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 EPD_4IN2_Partial_lut_bb1[] = { - 0x00 ,0x19 ,0x01 ,0x00 ,0x00 ,0x01, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 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 EPD_4IN2_Partial_lut_bb1[] ={ + 0x00, 0x01,0x20, 0x01, 0x00, 0x01, + 0x00, 0x00,0x00, 0x00, 0x00, 0x00, + 0x00, 0x00,0x00, 0x00, 0x00, 0x00, + 0x00, 0x00,0x00, 0x00, 0x00, 0x00, + 0x00, 0x00,0x00, 0x00, 0x00, 0x00, + 0x00, 0x00,0x00, 0x00, 0x00, 0x00, + 0x00, 0x00,0x00, 0x00, 0x00, 0x00, }; + /******************************gray*********************************/ //0~3 gray -const unsigned char EPD_4IN2_4Gray_lut_vcom[] = { - 0x00 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, - 0x60 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, - 0x00 ,0x14 ,0x00 ,0x00 ,0x00 ,0x01, - 0x00 ,0x13 ,0x0A ,0x01 ,0x00 ,0x01, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 - +const unsigned char EPD_4IN2_4Gray_lut_vcom[] = +{ + 0x00 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, + 0x60 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, + 0x00 ,0x14 ,0x00 ,0x00 ,0x00 ,0x01, + 0x00 ,0x13 ,0x0A ,0x01 ,0x00 ,0x01, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 + }; //R21 -const unsigned char EPD_4IN2_4Gray_lut_ww[] = { - 0x40 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, - 0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, - 0x10 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, - 0xA0 ,0x13 ,0x01 ,0x00 ,0x00 ,0x01, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, +const unsigned char EPD_4IN2_4Gray_lut_ww[] ={ + 0x40 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, + 0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, + 0x10 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, + 0xA0 ,0x13 ,0x01 ,0x00 ,0x00 ,0x01, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, }; //R22H r -const unsigned char EPD_4IN2_4Gray_lut_bw[] = { - 0x40 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, - 0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, - 0x00 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, - 0x99 ,0x0C ,0x01 ,0x03 ,0x04 ,0x01, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, +const unsigned char EPD_4IN2_4Gray_lut_bw[] ={ + 0x40 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, + 0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, + 0x00 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, + 0x99 ,0x0C ,0x01 ,0x03 ,0x04 ,0x01, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, }; //R23H w -const unsigned char EPD_4IN2_4Gray_lut_wb[] = { - 0x40 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, - 0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, - 0x00 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, - 0x99 ,0x0B ,0x04 ,0x04 ,0x01 ,0x01, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, +const unsigned char EPD_4IN2_4Gray_lut_wb[] ={ + 0x40 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, + 0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, + 0x00 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, + 0x99 ,0x0B ,0x04 ,0x04 ,0x01 ,0x01, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, }; //R24H b -const unsigned char EPD_4IN2_4Gray_lut_bb[] = { - 0x80 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, - 0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, - 0x20 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, - 0x50 ,0x13 ,0x01 ,0x00 ,0x00 ,0x01, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, - 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, +const unsigned char EPD_4IN2_4Gray_lut_bb[] ={ + 0x80 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01, + 0x90 ,0x14 ,0x14 ,0x00 ,0x00 ,0x01, + 0x20 ,0x14 ,0x0A ,0x00 ,0x00 ,0x01, + 0x50 ,0x13 ,0x01 ,0x00 ,0x00 ,0x01, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00, }; - /****************************************************************************** function : Software reset parameter: ******************************************************************************/ static void EPD_4IN2_Reset(void) { - DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(20); DEV_Digital_Write(EPD_RST_PIN, 0); - DEV_Delay_ms(2); + DEV_Delay_ms(10); DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(20); + DEV_Delay_ms(10); + DEV_Digital_Write(EPD_RST_PIN, 0); - DEV_Delay_ms(2); + DEV_Delay_ms(10); DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(20); + DEV_Delay_ms(10); + DEV_Digital_Write(EPD_RST_PIN, 0); - DEV_Delay_ms(2); + DEV_Delay_ms(10); DEV_Digital_Write(EPD_RST_PIN, 1); - DEV_Delay_ms(20); + DEV_Delay_ms(10); } /****************************************************************************** @@ -319,9 +326,9 @@ parameter: void EPD_4IN2_ReadBusy(void) { Debug("e-Paper busy\r\n"); - EPD_4IN2_SendCommand(0x71); + EPD_4IN2_SendCommand(0x71); while(DEV_Digital_Read(EPD_BUSY_PIN) == 0) { //LOW: idle, HIGH: busy - EPD_4IN2_SendCommand(0x71); + EPD_4IN2_SendCommand(0x71); DEV_Delay_ms(100); } Debug("e-Paper busy release\r\n"); @@ -342,105 +349,90 @@ static void EPD_4IN2_TurnOnDisplay(void) function : set the look-up tables parameter: ******************************************************************************/ -static void EPD_4IN2_SetLut(void) -{ - UWORD count; - EPD_4IN2_SendCommand(0x20); //g vcom - for(count=0; count<44; count++) { - EPD_4IN2_SendData(EPD_4IN2_lut_vcom0[count]); - } - - EPD_4IN2_SendCommand(0x21); - for(count=0; count<42; count++) { - EPD_4IN2_SendData(EPD_4IN2_lut_ww[count]); - } - - EPD_4IN2_SendCommand(0x22); - for(count=0; count<42; count++) { - EPD_4IN2_SendData(EPD_4IN2_lut_bw[count]); - } - - EPD_4IN2_SendCommand(0x23); - for(count=0; count<42; count++) { - EPD_4IN2_SendData(EPD_4IN2_lut_wb[count]); - } - - EPD_4IN2_SendCommand(0x24); - for(count=0; count<42; count++) { - EPD_4IN2_SendData(EPD_4IN2_lut_bb[count]); - } -} - static void EPD_4IN2_Partial_SetLut(void) { - unsigned int count; - EPD_4IN2_SendCommand(0x20); - for(count=0; count<44; count++) { - EPD_4IN2_SendData(EPD_4IN2_Partial_lut_vcom1[count]); - } + unsigned int count; + EPD_4IN2_SendCommand(0x20); + for(count=0;count<44;count++) + {EPD_4IN2_SendData(EPD_4IN2_Partial_lut_vcom1[count]);} - EPD_4IN2_SendCommand(0x21); - for(count=0; count<42; count++) { - EPD_4IN2_SendData(EPD_4IN2_Partial_lut_ww1[count]); - } + EPD_4IN2_SendCommand(0x21); + for(count=0;count<42;count++) + {EPD_4IN2_SendData(EPD_4IN2_Partial_lut_ww1[count]);} + + EPD_4IN2_SendCommand(0x22); + for(count=0;count<42;count++) + {EPD_4IN2_SendData(EPD_4IN2_Partial_lut_bw1[count]);} - EPD_4IN2_SendCommand(0x22); - for(count=0; count<42; count++) { - EPD_4IN2_SendData(EPD_4IN2_Partial_lut_bw1[count]); - } + EPD_4IN2_SendCommand(0x23); + for(count=0;count<42;count++) + {EPD_4IN2_SendData(EPD_4IN2_Partial_lut_wb1[count]);} - EPD_4IN2_SendCommand(0x23); - for(count=0; count<42; count++) { - EPD_4IN2_SendData(EPD_4IN2_Partial_lut_wb1[count]); - } + EPD_4IN2_SendCommand(0x24); + for(count=0;count<42;count++) + {EPD_4IN2_SendData(EPD_4IN2_Partial_lut_bb1[count]);} +} - EPD_4IN2_SendCommand(0x24); - for(count=0; count<42; count++) { - EPD_4IN2_SendData(EPD_4IN2_Partial_lut_bb1[count]); - } +static void EPD_4IN2_SetLut(void) +{ + unsigned int count; + EPD_4IN2_SendCommand(0x20); + for(count=0;count<36;count++) + {EPD_4IN2_SendData(EPD_4IN2_lut_vcom0[count]);} + + EPD_4IN2_SendCommand(0x21); + for(count=0;count<36;count++) + {EPD_4IN2_SendData(EPD_4IN2_lut_ww[count]);} + + EPD_4IN2_SendCommand(0x22); + for(count=0;count<36;count++) + {EPD_4IN2_SendData(EPD_4IN2_lut_bw[count]);} + + EPD_4IN2_SendCommand(0x23); + for(count=0;count<36;count++) + {EPD_4IN2_SendData(EPD_4IN2_lut_wb[count]);} + + EPD_4IN2_SendCommand(0x24); + for(count=0;count<36;count++) + {EPD_4IN2_SendData(EPD_4IN2_lut_bb[count]);} } //LUT download static void EPD_4IN2_4Gray_lut(void) { - unsigned int count; - { - EPD_4IN2_SendCommand(0x20); //vcom - for(count=0; count<42; count++) { - EPD_4IN2_SendData(EPD_4IN2_4Gray_lut_vcom[count]); - } + unsigned int count; + { + EPD_4IN2_SendCommand(0x20); //vcom + for(count=0;count<42;count++) + {EPD_4IN2_SendData(EPD_4IN2_4Gray_lut_vcom[count]);} + + EPD_4IN2_SendCommand(0x21); //red not use + for(count=0;count<42;count++) + {EPD_4IN2_SendData(EPD_4IN2_4Gray_lut_ww[count]);} - EPD_4IN2_SendCommand(0x21); //red not use - for(count=0; count<42; count++) { - EPD_4IN2_SendData(EPD_4IN2_4Gray_lut_ww[count]); - } + EPD_4IN2_SendCommand(0x22); //bw r + for(count=0;count<42;count++) + {EPD_4IN2_SendData(EPD_4IN2_4Gray_lut_bw[count]);} - EPD_4IN2_SendCommand(0x22); //bw r - for(count=0; count<42; count++) { - EPD_4IN2_SendData(EPD_4IN2_4Gray_lut_bw[count]); - } + EPD_4IN2_SendCommand(0x23); //wb w + for(count=0;count<42;count++) + {EPD_4IN2_SendData(EPD_4IN2_4Gray_lut_wb[count]);} - EPD_4IN2_SendCommand(0x23); //wb w - for(count=0; count<42; count++) { - EPD_4IN2_SendData(EPD_4IN2_4Gray_lut_wb[count]); - } + EPD_4IN2_SendCommand(0x24); //bb b + for(count=0;count<42;count++) + {EPD_4IN2_SendData(EPD_4IN2_4Gray_lut_bb[count]);} - EPD_4IN2_SendCommand(0x24); //bb b - for(count=0; count<42; count++) { - EPD_4IN2_SendData(EPD_4IN2_4Gray_lut_bb[count]); - } - - EPD_4IN2_SendCommand(0x25); //vcom - for(count=0; count<42; count++) { - EPD_4IN2_SendData(EPD_4IN2_4Gray_lut_ww[count]); - } - } + EPD_4IN2_SendCommand(0x25); //vcom + for(count=0;count<42;count++) + {EPD_4IN2_SendData(EPD_4IN2_4Gray_lut_ww[count]);} + } } /****************************************************************************** function : Initialize the e-Paper register parameter: ******************************************************************************/ -void EPD_4IN2_Init(void) + +void EPD_4IN2_Init_Partial(void) { EPD_4IN2_Reset(); @@ -460,7 +452,6 @@ void EPD_4IN2_Init(void) EPD_4IN2_SendCommand(0x00); // panel setting EPD_4IN2_SendData(0xbf); // KW-BF KWR-AF BWROTP 0f BWOTP 1f - EPD_4IN2_SendData(0x0d); EPD_4IN2_SendCommand(0x30); // PLL setting EPD_4IN2_SendData(0x3C); // 3A 100HZ 29 150Hz 39 200HZ 31 171HZ @@ -472,49 +463,91 @@ void EPD_4IN2_Init(void) EPD_4IN2_SendData(0x2c); EPD_4IN2_SendCommand(0x82); // vcom_DC setting - EPD_4IN2_SendData(0x28); + EPD_4IN2_SendData(0x12); EPD_4IN2_SendCommand(0X50); // VCOM AND DATA INTERVAL SETTING - EPD_4IN2_SendData(0x97); // 97white border 77black border VBDF 17|D7 VBDW 97 VBDB 57 VBDF F7 VBDW 77 VBDB 37 VBDR B7 + EPD_4IN2_SendData(0x07); // 97white border 77black border VBDF 17|D7 VBDW 97 VBDB 57 VBDF F7 VBDW 77 VBDB 37 VBDR B7 - EPD_4IN2_SetLut(); + EPD_4IN2_Partial_SetLut(); } +//UC8176C +void EPD_4IN2_Init_Fast(void) +{ + EPD_4IN2_Reset(); + EPD_4IN2_SendCommand(0x01); //POWER SETTING + EPD_4IN2_SendData (0x03); + EPD_4IN2_SendData (0x00); + EPD_4IN2_SendData (0x2b); + EPD_4IN2_SendData (0x2b); + + EPD_4IN2_SendCommand(0x06); //boost soft start + EPD_4IN2_SendData (0x17); //A + EPD_4IN2_SendData (0x17); //B + EPD_4IN2_SendData (0x17); //C + + EPD_4IN2_SendCommand(0x04); + EPD_4IN2_ReadBusy(); + + EPD_4IN2_SendCommand(0x00); //panel setting + EPD_4IN2_SendData(0xbf); //KW-bf KWR-2F BWROTP 0f BWOTP 1f + + + EPD_4IN2_SendCommand(0x30); + EPD_4IN2_SendData (0x3c); // 3A 100HZ 29 150Hz 39 200HZ 31 171HZ + + EPD_4IN2_SendCommand(0x61); //resolution setting + EPD_4IN2_SendData (0x01); + EPD_4IN2_SendData (0x90); //400 + EPD_4IN2_SendData (0x01); //300 + EPD_4IN2_SendData (0x2c); + + + EPD_4IN2_SendCommand(0x82); //vcom_DC setting + EPD_4IN2_SendData (0x12); + + EPD_4IN2_SendCommand(0X50); + EPD_4IN2_SendData(0x97); + + EPD_4IN2_SetLut(); + +} + void EPD_4IN2_Init_4Gray(void) { - EPD_4IN2_Reset(); - EPD_4IN2_SendCommand(0x01); //POWER SETTING - EPD_4IN2_SendData (0x03); - EPD_4IN2_SendData (0x00); //VGH=20V,VGL=-20V - EPD_4IN2_SendData (0x2b); //VDH=15V - EPD_4IN2_SendData (0x2b); //VDL=-15V - EPD_4IN2_SendData (0x13); + EPD_4IN2_Reset(); + EPD_4IN2_SendCommand(0x01); //POWER SETTING + EPD_4IN2_SendData (0x03); + EPD_4IN2_SendData (0x00); //VGH=20V,VGL=-20V + EPD_4IN2_SendData (0x2b); //VDH=15V + EPD_4IN2_SendData (0x2b); //VDL=-15V + EPD_4IN2_SendData (0x13); - EPD_4IN2_SendCommand(0x06); //booster soft start - EPD_4IN2_SendData (0x17); //A - EPD_4IN2_SendData (0x17); //B - EPD_4IN2_SendData (0x17); //C + EPD_4IN2_SendCommand(0x06); //booster soft start + EPD_4IN2_SendData (0x17); //A + EPD_4IN2_SendData (0x17); //B + EPD_4IN2_SendData (0x17); //C - EPD_4IN2_SendCommand(0x04); - EPD_4IN2_ReadBusy(); + EPD_4IN2_SendCommand(0x04); + EPD_4IN2_ReadBusy(); - EPD_4IN2_SendCommand(0x00); //panel setting - EPD_4IN2_SendData(0x3f); //KW-3f KWR-2F BWROTP 0f BWOTP 1f + EPD_4IN2_SendCommand(0x00); //panel setting + EPD_4IN2_SendData(0x3f); //KW-3f KWR-2F BWROTP 0f BWOTP 1f - EPD_4IN2_SendCommand(0x30); //PLL setting - EPD_4IN2_SendData (0x3c); //100hz + EPD_4IN2_SendCommand(0x30); //PLL setting + EPD_4IN2_SendData (0x3c); //100hz - EPD_4IN2_SendCommand(0x61); //resolution setting - EPD_4IN2_SendData (0x01); //400 - EPD_4IN2_SendData (0x90); - EPD_4IN2_SendData (0x01); //300 - EPD_4IN2_SendData (0x2c); + EPD_4IN2_SendCommand(0x61); //resolution setting + EPD_4IN2_SendData (0x01); //400 + EPD_4IN2_SendData (0x90); + EPD_4IN2_SendData (0x01); //300 + EPD_4IN2_SendData (0x2c); - EPD_4IN2_SendCommand(0x82); //vcom_DC setting - EPD_4IN2_SendData (0x12); + EPD_4IN2_SendCommand(0x82); //vcom_DC setting + EPD_4IN2_SendData (0x12); - EPD_4IN2_SendCommand(0X50); //VCOM AND DATA INTERVAL SETTING - EPD_4IN2_SendData(0x97); + EPD_4IN2_SendCommand(0X50); //VCOM AND DATA INTERVAL SETTING + EPD_4IN2_SendData(0x97); } /****************************************************************************** function : Clear screen @@ -539,8 +572,9 @@ void EPD_4IN2_Clear(void) EPD_4IN2_SendData(0xFF); } } - EPD_4IN2_SendCommand(0x12); //DISPLAY REFRESH - DEV_Delay_ms(10); + + EPD_4IN2_SendCommand(0x12); //DISPLAY REFRESH + DEV_Delay_ms(1); EPD_4IN2_TurnOnDisplay(); } @@ -554,6 +588,13 @@ void EPD_4IN2_Display(UBYTE *Image) Width = (EPD_4IN2_WIDTH % 8 == 0)? (EPD_4IN2_WIDTH / 8 ): (EPD_4IN2_WIDTH / 8 + 1); Height = EPD_4IN2_HEIGHT; + EPD_4IN2_SendCommand(0x10); + for (UWORD j = 0; j < Height; j++) { + for (UWORD i = 0; i < Width; i++) { + EPD_4IN2_SendData(0x00); + } + } + EPD_4IN2_SendCommand(0x13); for (UWORD j = 0; j < Height; j++) { for (UWORD i = 0; i < Width; i++) { @@ -561,143 +602,151 @@ void EPD_4IN2_Display(UBYTE *Image) } } + EPD_4IN2_SendCommand(0x12); //DISPLAY REFRESH + DEV_Delay_ms(10); EPD_4IN2_TurnOnDisplay(); } void EPD_4IN2_PartialDisplay(UWORD X_start,UWORD Y_start,UWORD X_end,UWORD Y_end, UBYTE *Image) { - UWORD Width; - Width = (EPD_4IN2_WIDTH % 8 == 0)? (EPD_4IN2_WIDTH / 8 ): (EPD_4IN2_WIDTH / 8 + 1); + UWORD Width, Height; + static UBYTE DATA[EPD_4IN2_WIDTH * EPD_4IN2_HEIGHT / 8] = {0x00}; - X_start = (X_start % 8 == 0)? (X_start): (X_start/8*8+8); - X_end = (X_end % 8 == 0)? (X_end): (X_end/8*8+8); + Width = (EPD_4IN2_WIDTH % 8 == 0)? (EPD_4IN2_WIDTH / 8 ): (EPD_4IN2_WIDTH / 8 + 1); + Height = EPD_4IN2_HEIGHT; + + X_start = (X_start % 8 == 0)? (X_start): (X_start/8*8+8); + X_end = (X_end % 8 == 0)? (X_end): (X_end/8*8+8); + - EPD_4IN2_SendCommand(0X50); - EPD_4IN2_SendData(0xf7); - DEV_Delay_ms(100); + EPD_4IN2_SendCommand(0x91); //This command makes the display enter partial mode + EPD_4IN2_SendCommand(0x90); //resolution setting + EPD_4IN2_SendData ((X_start)/256); + EPD_4IN2_SendData ((X_start)%256); //x-start - EPD_4IN2_SendCommand(0x82); //vcom_DC setting - EPD_4IN2_SendData (0x08); - EPD_4IN2_SendCommand(0X50); - EPD_4IN2_SendData(0x47); - EPD_4IN2_Partial_SetLut(); - EPD_4IN2_SendCommand(0x91); //This command makes the display enter partial mode - EPD_4IN2_SendCommand(0x90); //resolution setting - EPD_4IN2_SendData ((X_start)/256); - EPD_4IN2_SendData ((X_start)%256); //x-start + EPD_4IN2_SendData ((X_end )/256); + EPD_4IN2_SendData ((X_end )%256-1); //x-end - EPD_4IN2_SendData ((X_end )/256); - EPD_4IN2_SendData ((X_end )%256-1); //x-end + EPD_4IN2_SendData (Y_start/256); + EPD_4IN2_SendData (Y_start%256); //y-start - EPD_4IN2_SendData (Y_start/256); - EPD_4IN2_SendData (Y_start%256); //y-start + EPD_4IN2_SendData (Y_end/256); + EPD_4IN2_SendData (Y_end%256-1); //y-end + EPD_4IN2_SendData (0x28); - EPD_4IN2_SendData (Y_end/256); - EPD_4IN2_SendData (Y_end%256-1); //y-end - EPD_4IN2_SendData (0x28); + EPD_4IN2_SendCommand(0x10); //writes Old data to SRAM for programming + for (UWORD j = 0; j < Y_end - Y_start; j++) { + for (UWORD i = 0; i < (X_end - X_start)/8; i++) { + EPD_4IN2_SendData(DATA[(Y_start + j)*Width + X_start/8 + i]); + } + } + EPD_4IN2_SendCommand(0x13); //writes New data to SRAM. + for (UWORD j = 0; j < Y_end - Y_start; j++) { + for (UWORD i = 0; i < (X_end - X_start)/8; i++) { + EPD_4IN2_SendData(~Image[(Y_start + j)*Width + X_start/8 + i]); + DATA[(Y_start + j)*Width + X_start/8 + i] = ~Image[(Y_start + j)*Width + X_start/8 + i]; + } + } - EPD_4IN2_SendCommand(0x10); //writes Old data to SRAM for programming - for (UWORD j = 0; j < Y_end - Y_start; j++) { - for (UWORD i = 0; i < (X_end - X_start)/8; i++) { - EPD_4IN2_SendData(Image[(Y_start + j)*Width + X_start/8 + i]); - } - } - EPD_4IN2_SendCommand(0x13); //writes New data to SRAM. - for (UWORD j = 0; j < Y_end - Y_start; j++) { - for (UWORD i = 0; i < (X_end - X_start)/8; i++) { - EPD_4IN2_SendData(~Image[(Y_start + j)*Width + X_start/8 + i]); - } - } - - EPD_4IN2_SendCommand(0x12); //DISPLAY REFRESH - DEV_Delay_ms(10); //The delay here is necessary, 200uS at least!!! - EPD_4IN2_TurnOnDisplay(); + EPD_4IN2_SendCommand(0x12); //DISPLAY REFRESH + DEV_Delay_ms(10); //The delay here is necessary, 200uS at least!!! + EPD_4IN2_TurnOnDisplay(); } void EPD_4IN2_4GrayDisplay(const UBYTE *Image) { - UDOUBLE i,j,k; + UDOUBLE i,j,k,m; UBYTE temp1,temp2,temp3; - /****Color display description**** - white gray1 gray2 black - 0x10| 01 01 00 00 - 0x13| 01 00 01 00 - *********************************/ - EPD_4IN2_SendCommand(0x10); - - for(i=0; i<15000; i++) { //5808*4 46464 - temp3=0; - for(j=0; j<2; j++) { - temp1 = Image[i*2+j]; - for(k=0; k<2; k++) { - temp2 = temp1&0xC0 ; - if(temp2 == 0xC0) - temp3 |= 0x01;//white - else if(temp2 == 0x00) - temp3 |= 0x00; //black - else if(temp2 == 0x80) - temp3 |= 0x01; //gray1 - else //0x40 - temp3 |= 0x00; //gray2 - temp3 <<= 1; - - temp1 <<= 2; - temp2 = temp1&0xC0 ; - if(temp2 == 0xC0) //white - temp3 |= 0x01; - else if(temp2 == 0x00) //black - temp3 |= 0x00; - else if(temp2 == 0x80) - temp3 |= 0x01; //gray1 - else //0x40 - temp3 |= 0x00; //gray2 - if(j!=1 || k!=1) - temp3 <<= 1; - - temp1 <<= 2; - } - - } - EPD_4IN2_SendData(temp3); - } +/****Color display description**** + white gray1 gray2 black +0x10| 01 01 00 00 +0x13| 01 00 01 00 +*********************************/ + EPD_4IN2_SendCommand(0x10); + // EPD_4IN2_HEIGHT + // EPD_4IN2_WIDTH + for(m = 0; m