Merge pull request #269 from SSYYL/master

Add 7.3inch e-Paper (F) code.
This commit is contained in:
Wilson 2022-10-22 15:30:57 +08:00 committed by GitHub
commit 833d3a86be
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
53 changed files with 26994 additions and 1156 deletions

View file

@ -0,0 +1,300 @@
/*****************************************************************************
* | File : EPD_7in3f.c
* | Author : Waveshare team
* | Function : 7.3inch e-Paper (F)
* | Info :
*----------------
* | This version: V1.0
* | Date : 2022-10-21
* | 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 <stdlib.h>
#include "epd7in3f.h"
#include "imagedata.h"
Epd::~Epd() {
};
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 : Initialize the e-Paper register
parameter:
******************************************************************************/
int Epd::Init(void) {
if (IfInit() != 0) {
return -1;
}
Reset();
DelayMs(20);
EPD_7IN3F_BusyHigh();
SendCommand(0xAA); // CMDH
SendData(0x49);
SendData(0x55);
SendData(0x20);
SendData(0x08);
SendData(0x09);
SendData(0x18);
SendCommand(0x01);
SendData(0x3F);
SendData(0x00);
SendData(0x32);
SendData(0x2A);
SendData(0x0E);
SendData(0x2A);
SendCommand(0x00);
SendData(0x5F);
SendData(0x69);
SendCommand(0x03);
SendData(0x00);
SendData(0x54);
SendData(0x00);
SendData(0x44);
SendCommand(0x05);
SendData(0x40);
SendData(0x1F);
SendData(0x1F);
SendData(0x2C);
SendCommand(0x06);
SendData(0x6F);
SendData(0x1F);
SendData(0x16);
SendData(0x25);
SendCommand(0x08);
SendData(0x6F);
SendData(0x1F);
SendData(0x1F);
SendData(0x22);
SendCommand(0x13); // IPC
SendData(0x00);
SendData(0x04);
SendCommand(0x30);
SendData(0x02);
SendCommand(0x41); // TSE
SendData(0x00);
SendCommand(0x50);
SendData(0x3F);
SendCommand(0x60);
SendData(0x02);
SendData(0x00);
SendCommand(0x61);
SendData(0x03);
SendData(0x20);
SendData(0x01);
SendData(0xE0);
SendCommand(0x82);
SendData(0x1E);
SendCommand(0x84);
SendData(0x00);
SendCommand(0x86); // AGID
SendData(0x00);
SendCommand(0xE3);
SendData(0x2F);
SendCommand(0xE0); // CCSET
SendData(0x00);
SendCommand(0xE6); // TSSET
SendData(0x00);
return 0;
}
/**
* @brief: basic function for sending commands
*/
void Epd::SendCommand(unsigned char command) {
DigitalWrite(dc_pin, LOW);
SpiTransfer(command);
}
/**
* @brief: basic function for sending data
*/
void Epd::SendData(unsigned char data) {
DigitalWrite(dc_pin, HIGH);
SpiTransfer(data);
}
void Epd::EPD_7IN3F_BusyHigh(void)// If BUSYN=0 then waiting
{
while(!DigitalRead(BUSY_PIN)) {
DelayMs(1);
}
}
/**
* @brief: module reset.
* often used to awaken the module in deep sleep,
* see Epd::Sleep();
*/
void Epd::Reset(void) {
DigitalWrite(reset_pin, HIGH);
DelayMs(20);
DigitalWrite(reset_pin, LOW); //module reset
DelayMs(1);
DigitalWrite(reset_pin, HIGH);
DelayMs(20);
}
void Epd::TurnOnDisplay(void) {
SendCommand(0x04); // POWER_ON
EPD_7IN3F_BusyHigh();
SendCommand(0x12); // DISPLAY_REFRESH
SendData(0x00);
EPD_7IN3F_BusyHigh();
SendCommand(0x02); // POWER_OFF
SendData(0x00);
EPD_7IN3F_BusyHigh();
}
/******************************************************************************
function : Sends the image buffer in RAM to e-Paper and displays
parameter:
******************************************************************************/
void Epd::EPD_7IN3F_Display(const UBYTE *image) {
unsigned long i,j;
SendCommand(0x10);
for(i=0; i<height; i++) {
for(j=0; j<width/2; j++) {
SendData(image[j + width*i]);
}
}
TurnOnDisplay();
}
/******************************************************************************
function : Sends the part image buffer in RAM to e-Paper and displays
parameter:
******************************************************************************/
void Epd::EPD_7IN3F_Display_part(const UBYTE *image, UWORD xstart, UWORD ystart,
UWORD image_width, UWORD image_heigh)
{
unsigned long i,j;
SendCommand(0x10);
for(i=0; i<height; i++) {
for(j=0; j< width/2; j++) {
if(i<image_heigh+ystart && i>=ystart && j<(image_width+xstart)/2 && j>=xstart/2) {
SendData(pgm_read_byte(&image[(j-xstart/2) + (image_width/2*(i-ystart))]));
}
else {
SendData(0x11);
}
}
}
TurnOnDisplay();
}
/******************************************************************************
function : show 7 kind of color block
parameter:
******************************************************************************/
void Epd::EPD_7IN3F_Show7Block(void)
{
unsigned long i, j, k;
unsigned char const Color_seven[8] =
{EPD_7IN3F_BLACK, EPD_7IN3F_BLUE, EPD_7IN3F_GREEN, EPD_7IN3F_ORANGE,
EPD_7IN3F_RED, EPD_7IN3F_YELLOW, EPD_7IN3F_WHITE, EPD_7IN3F_WHITE};
SendCommand(0x10);
for(i=0; i<240; i++) {
for(k = 0 ; k < 4; k ++) {
for(j = 0 ; j < 100; j ++) {
SendData((Color_seven[k]<<4) |Color_seven[k]);
}
}
}
for(i=0; i<240; i++) {
for(k = 4 ; k < 8; k ++) {
for(j = 0 ; j < 100; j ++) {
SendData((Color_seven[k]<<4) |Color_seven[k]);
}
}
}
TurnOnDisplay();
}
/******************************************************************************
function :
Clear screen
******************************************************************************/
void Epd::Clear(UBYTE color) {
SendCommand(0x10);
for(int i=0; i<width/2; i++) {
for(int j=0; j<height; j++) {
SendData((color<<4)|color);
}
}
TurnOnDisplay();
}
/**
* @brief: After this command is transmitted, the chip would enter the
* deep-sleep mode to save power.
* The deep sleep mode would return to standby by hardware reset.
* The only one parameter is a check code, the command would be
* You can use EPD_Reset() to awaken
*/
void Epd::Sleep(void) {
SendCommand(0x07);
SendData(0xA5);
DelayMs(10);
DigitalWrite(RST_PIN, 0); // Reset
}
/* END OF FILE */

View file

@ -0,0 +1,85 @@
/*****************************************************************************
* | File : EPD_7in3f.h
* | Author : Waveshare team
* | Function : 7.3inch e-paper F
* | Info :
*----------------
* | This version: V1.0
* | Date : 2022-10-21
* | 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_7IN3F_H__
#define __EPD_7IN3F_H__
#include "epdif.h"
// Display resolution
#define EPD_WIDTH 800
#define EPD_HEIGHT 480
#define UWORD unsigned int
#define UBYTE unsigned char
#define UDOUBLE unsigned long
/**********************************
Color Index
**********************************/
#define EPD_7IN3F_BLACK 0x0 /// 000
#define EPD_7IN3F_WHITE 0x1 /// 001
#define EPD_7IN3F_GREEN 0x2 /// 010
#define EPD_7IN3F_BLUE 0x3 /// 011
#define EPD_7IN3F_RED 0x4 /// 100
#define EPD_7IN3F_YELLOW 0x5 /// 101
#define EPD_7IN3F_ORANGE 0x6 /// 110
#define EPD_7IN3F_CLEAN 0x7 /// 111 unavailable Afterimage
class Epd : EpdIf {
public:
Epd();
~Epd();
int Init(void);
void EPD_7IN3F_BusyHigh(void);
void TurnOnDisplay(void);
void Reset(void);
void EPD_7IN3F_Display(const UBYTE *image);
void EPD_7IN3F_Display_part(const UBYTE *image, UWORD xstart, UWORD ystart,
UWORD image_width, UWORD image_heigh);
void EPD_7IN3F_Show7Block(void);
void SendCommand(unsigned char command);
void SendData(unsigned char data);
void Sleep(void);
void Clear(UBYTE color);
private:
unsigned int reset_pin;
unsigned int dc_pin;
unsigned int cs_pin;
unsigned int busy_pin;
unsigned long width;
unsigned long height;
};
#endif /* EPD5IN83B_HD_H */
/* END OF FILE */

View file

@ -0,0 +1,57 @@
/**
@filename : EPD_7in3f.ino
@brief : EPD_7in3 e-paper F display demo
@author : Waveshare
Copyright (C) Waveshare 10 21 2022
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 <SPI.h>
#include "imagedata.h"
#include "epd7in3f.h"
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("e-Paper Clear\r\n ");
epd.Clear(EPD_7IN3F_WHITE);
Serial.print("Show pic\r\n ");
epd.EPD_7IN3F_Display_part(gImage_7in3f, 250, 150, 300, 180);
delay(2000);
Serial.print("draw 7 color block\r\n ");
epd.EPD_7IN3F_Show7Block();
delay(2000);
epd.Sleep();
}
void loop() {
// put your main code here, to run repeatedly:
}

View file

@ -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 <spi.h>
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;
}

51
Arduino/epd7in3f/epdif.h Normal file
View file

@ -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 <arduino.h>
// 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

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,28 @@
/**
* @filename : imagedata.h
* @brief : head file for imagedata.cpp
*
* Copyright (C) Waveshare July 8 2020
*
* 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 gImage_7in3f[];
/* FILE END */

View file

@ -144,6 +144,9 @@ else ifeq ($(EPD), epd5in83bV2)
else ifeq ($(EPD), epd5in84)
OBJ_C_EPD = ${DIR_EPD}/EPD_5in84.c
OBJ_C_Examples = ${DIR_Examples}/EPD_5in84_test.c
else ifeq ($(EPD), epd7in3f)
OBJ_C_EPD = ${DIR_EPD}/EPD_7in3f.c
OBJ_C_Examples = ${DIR_Examples}/EPD_7in3f_test.c
else ifeq ($(EPD), epd7in5)
OBJ_C_EPD = ${DIR_EPD}/EPD_7in5.c
OBJ_C_Examples = ${DIR_Examples}/EPD_7in5_test.c

View file

@ -0,0 +1,162 @@
/*****************************************************************************
* | File : EPD_7in3f_test.c
* | Author : Waveshare team
* | Function : 7.3inch e-Paper (F) Demo
* | Info :
*----------------
* | This version: V1.0
* | Date : 2022-10-20
* | 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_7in3f.h"
#include "time.h"
int EPD_7in3f_test(void)
{
printf("EPD_7IN3F_test Demo\r\n");
if(DEV_Module_Init()!=0){
return -1;
}
printf("e-Paper Init and Clear...\r\n");
EPD_7IN3F_Init();
struct timespec start={0,0}, finish={0,0};
clock_gettime(CLOCK_REALTIME, &start);
EPD_7IN3F_Clear(EPD_7IN3F_WHITE); // WHITE
clock_gettime(CLOCK_REALTIME, &finish);
printf("%ld S\r\n", finish.tv_sec-start.tv_sec);
DEV_Delay_ms(1000);
//Create a new image cache
UBYTE *BlackImage;
UDOUBLE Imagesize = ((EPD_7IN3F_WIDTH % 2 == 0)? (EPD_7IN3F_WIDTH / 2 ): (EPD_7IN3F_WIDTH / 2 + 1)) * EPD_7IN3F_HEIGHT;
if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) {
printf("Failed to apply for black memory...\r\n");
return -1;
}
printf("Paint_NewImage\r\n");
Paint_NewImage(BlackImage, EPD_7IN3F_WIDTH, EPD_7IN3F_HEIGHT, 0, EPD_7IN3F_WHITE);
Paint_SetScale(7);
#if 1 // show bmp
printf("show bmp1-----------------\r\n");
Paint_SelectImage(BlackImage);
Paint_Clear(EPD_7IN3F_WHITE);
GUI_ReadBmp_RGB_7Color("./pic/7in3f3.bmp", 0, 0);
EPD_7IN3F_Display(BlackImage);
DEV_Delay_ms(3000);
printf("show bmp2------------------------\r\n");
Paint_SelectImage(BlackImage);
GUI_ReadBmp_RGB_7Color("./pic/7in3f1.bmp", 0, 0);
EPD_7IN3F_Display(BlackImage);
DEV_Delay_ms(3000);
#endif
#if 1 // Drawing on the image
// 1.Select Image
printf("SelectImage:BlackImage\r\n");
Paint_SelectImage(BlackImage);
Paint_Clear(EPD_7IN3F_WHITE);
// 2.Drawing on the image
printf("Drawing:BlackImage\r\n");
Paint_DrawPoint(10, 80, EPD_7IN3F_RED, DOT_PIXEL_1X1, DOT_STYLE_DFT);
Paint_DrawPoint(10, 90, EPD_7IN3F_BLUE, DOT_PIXEL_2X2, DOT_STYLE_DFT);
Paint_DrawPoint(10, 100, EPD_7IN3F_GREEN, DOT_PIXEL_3X3, DOT_STYLE_DFT);
Paint_DrawLine(20, 70, 70, 120, EPD_7IN3F_ORANGE, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
Paint_DrawLine(70, 70, 20, 120, EPD_7IN3F_ORANGE, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
Paint_DrawRectangle(20, 70, 70, 120, EPD_7IN3F_BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
Paint_DrawRectangle(80, 70, 130, 120, EPD_7IN3F_BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawCircle(45, 95, 20, EPD_7IN3F_BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
Paint_DrawCircle(105, 95, 20, EPD_7IN3F_WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawLine(85, 95, 125, 95, EPD_7IN3F_YELLOW, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
Paint_DrawLine(105, 75, 105, 115, EPD_7IN3F_YELLOW, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
Paint_DrawString_CN(10, 160, "ÄãºÃAbc", &Font12CN, EPD_7IN3F_BLACK, EPD_7IN3F_WHITE);
Paint_DrawString_CN(10, 180, "΢ѩµç×Ó", &Font24CN, EPD_7IN3F_WHITE, EPD_7IN3F_BLACK);
Paint_DrawNum(10, 33, 123456789, &Font12, EPD_7IN3F_BLACK, EPD_7IN3F_WHITE);
Paint_DrawNum(10, 50, 987654321, &Font16, EPD_7IN3F_WHITE, EPD_7IN3F_BLACK);
Paint_DrawString_EN(400, 0, "waveshare", &Font16, EPD_7IN3F_BLACK, EPD_7IN3F_WHITE);
Paint_DrawString_EN(400, 20, "waveshare", &Font16, EPD_7IN3F_GREEN, EPD_7IN3F_WHITE);
Paint_DrawString_EN(400, 40, "waveshare", &Font16, EPD_7IN3F_BLUE, EPD_7IN3F_WHITE);
Paint_DrawString_EN(400, 60, "waveshare", &Font16, EPD_7IN3F_RED, EPD_7IN3F_WHITE);
Paint_DrawString_EN(400, 80, "waveshare", &Font16, EPD_7IN3F_YELLOW, EPD_7IN3F_WHITE);
Paint_DrawString_EN(400, 100, "waveshare", &Font16, EPD_7IN3F_ORANGE, EPD_7IN3F_WHITE);
Paint_DrawString_EN(150, 0, "hello world", &Font24, EPD_7IN3F_WHITE, EPD_7IN3F_BLACK);
Paint_DrawString_EN(150, 30, "hello world", &Font24, EPD_7IN3F_GREEN, EPD_7IN3F_BLACK);
Paint_DrawString_EN(150, 60, "hello world", &Font24, EPD_7IN3F_BLUE, EPD_7IN3F_BLACK);
Paint_DrawString_EN(150, 90, "hello world", &Font24, EPD_7IN3F_RED, EPD_7IN3F_BLACK);
Paint_DrawString_EN(150, 120, "hello world", &Font24, EPD_7IN3F_YELLOW, EPD_7IN3F_BLACK);
Paint_DrawString_EN(150, 150, "hello world", &Font24, EPD_7IN3F_ORANGE, EPD_7IN3F_BLACK);
Paint_DrawString_EN(150, 180, "hello world", &Font24, EPD_7IN3F_BLACK, EPD_7IN3F_YELLOW);
printf("EPD_Display\r\n");
EPD_7IN3F_Display(BlackImage);
DEV_Delay_ms(3000);
#endif
#if 1 // Drawing on the image
//1.Select Image
printf("SelectImage:BlackImage\r\n");
Paint_SelectImage(BlackImage);
Paint_Clear(EPD_7IN3F_WHITE);
int hNumber, hWidth, vNumber, vWidth;
hNumber = 10;
hWidth = EPD_7IN3F_HEIGHT/hNumber; // 480/10=48
vNumber = 20;
vWidth = EPD_7IN3F_WIDTH/vNumber; // 800/20=40
// 2.Drawing on the image
printf("Drawing:BlackImage\r\n");
for(int i=0; i<hNumber; i++) { // horizontal
Paint_DrawRectangle(1, 1+i*hWidth, EPD_7IN3F_WIDTH, hWidth*(1+i), EPD_7IN3F_BLACK + (i % 2), DOT_PIXEL_1X1, DRAW_FILL_FULL);
}
for(int i=0; i<vNumber; i++) { // vertical
if(i%2) {
Paint_DrawRectangle(1+i*vWidth, 1, vWidth*(i+1), EPD_7IN3F_HEIGHT, EPD_7IN3F_GREEN + (i%5), DOT_PIXEL_1X1, DRAW_FILL_FULL);
}
}
printf("EPD_Display\r\n");
EPD_7IN3F_Display(BlackImage);
DEV_Delay_ms(3000);
#endif
printf("Clear...\r\n");
EPD_7IN3F_Clear(EPD_7IN3F_WHITE);
printf("Goto Sleep...\r\n");
EPD_7IN3F_Sleep();
free(BlackImage);
BlackImage = NULL;
DEV_Delay_ms(2000); // important, at least 2s
// close 5V
printf("close 5V, Module enters 0 power consumption ...\r\n");
DEV_Module_Exit();
return 0;
}

View file

@ -98,6 +98,8 @@ int EPD_5in83b_V2_test(void);
int EPD_5in84_test(void);
int EPD_7in3f_test(void);
int EPD_7in5_test(void);
int EPD_7in5_HD_test(void);
int EPD_7in5_V2_test(void);

View file

@ -154,6 +154,9 @@ int main(void)
#elif epd5in84
EPD_5in84_test();
#elif epd7in3f
EPD_7in3f_test();
#elif epd7in5
EPD_7in5_test();

View file

@ -0,0 +1,280 @@
/*****************************************************************************
* | File : EPD_7in3f.c
* | Author : Waveshare team
* | Function : 7.3inch e-Paper (F) Driver
* | Info :
*----------------
* | This version: V1.0
* | Date : 2022-10-20
* | 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_7in3f.h"
#include "Debug.h"
/******************************************************************************
function : Software reset
parameter:
******************************************************************************/
static void EPD_7IN3F_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_7IN3F_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_7IN3F_SendData(UBYTE Data)
{
DEV_Digital_Write(EPD_DC_PIN, 1);
DEV_Digital_Write(EPD_CS_PIN, 0);
DEV_SPI_WriteByte(Data);
DEV_Digital_Write(EPD_CS_PIN, 1);
}
/******************************************************************************
function : Wait until the busy_pin goes LOW
parameter:
******************************************************************************/
static void EPD_7IN3F_ReadBusyH(void)
{
Debug("e-Paper busy H\r\n");
while(!DEV_Digital_Read(EPD_BUSY_PIN)) { //LOW: busy, HIGH: idle
DEV_Delay_ms(1);
}
Debug("e-Paper busy H release\r\n");
}
/******************************************************************************
function : Turn On Display
parameter:
******************************************************************************/
static void EPD_7IN3F_TurnOnDisplay(void)
{
EPD_7IN3F_SendCommand(0x04); // POWER_ON
EPD_7IN3F_ReadBusyH();
EPD_7IN3F_SendCommand(0x12); // DISPLAY_REFRESH
EPD_7IN3F_SendData(0x00);
EPD_7IN3F_ReadBusyH();
EPD_7IN3F_SendCommand(0x02); // POWER_OFF
EPD_7IN3F_SendData(0X00);
EPD_7IN3F_ReadBusyH();
}
/******************************************************************************
function : Initialize the e-Paper register
parameter:
******************************************************************************/
void EPD_7IN3F_Init(void)
{
EPD_7IN3F_Reset();
EPD_7IN3F_ReadBusyH();
DEV_Delay_ms(30);
EPD_7IN3F_SendCommand(0xAA); // CMDH
EPD_7IN3F_SendData(0x49);
EPD_7IN3F_SendData(0x55);
EPD_7IN3F_SendData(0x20);
EPD_7IN3F_SendData(0x08);
EPD_7IN3F_SendData(0x09);
EPD_7IN3F_SendData(0x18);
EPD_7IN3F_SendCommand(0x01);
EPD_7IN3F_SendData(0x3F);
EPD_7IN3F_SendData(0x00);
EPD_7IN3F_SendData(0x32);
EPD_7IN3F_SendData(0x2A);
EPD_7IN3F_SendData(0x0E);
EPD_7IN3F_SendData(0x2A);
EPD_7IN3F_SendCommand(0x00);
EPD_7IN3F_SendData(0x5F);
EPD_7IN3F_SendData(0x69);
EPD_7IN3F_SendCommand(0x03);
EPD_7IN3F_SendData(0x00);
EPD_7IN3F_SendData(0x54);
EPD_7IN3F_SendData(0x00);
EPD_7IN3F_SendData(0x44);
EPD_7IN3F_SendCommand(0x05);
EPD_7IN3F_SendData(0x40);
EPD_7IN3F_SendData(0x1F);
EPD_7IN3F_SendData(0x1F);
EPD_7IN3F_SendData(0x2C);
EPD_7IN3F_SendCommand(0x06);
EPD_7IN3F_SendData(0x6F);
EPD_7IN3F_SendData(0x1F);
EPD_7IN3F_SendData(0x16);
EPD_7IN3F_SendData(0x25);
EPD_7IN3F_SendCommand(0x08);
EPD_7IN3F_SendData(0x6F);
EPD_7IN3F_SendData(0x1F);
EPD_7IN3F_SendData(0x1F);
EPD_7IN3F_SendData(0x22);
EPD_7IN3F_SendCommand(0x13); // IPC
EPD_7IN3F_SendData(0x00);
EPD_7IN3F_SendData(0x04);
EPD_7IN3F_SendCommand(0x30);
EPD_7IN3F_SendData(0x02);
EPD_7IN3F_SendCommand(0x41); // TSE
EPD_7IN3F_SendData(0x00);
EPD_7IN3F_SendCommand(0x50);
EPD_7IN3F_SendData(0x3F);
EPD_7IN3F_SendCommand(0x60);
EPD_7IN3F_SendData(0x02);
EPD_7IN3F_SendData(0x00);
EPD_7IN3F_SendCommand(0x61);
EPD_7IN3F_SendData(0x03);
EPD_7IN3F_SendData(0x20);
EPD_7IN3F_SendData(0x01);
EPD_7IN3F_SendData(0xE0);
EPD_7IN3F_SendCommand(0x82);
EPD_7IN3F_SendData(0x1E);
EPD_7IN3F_SendCommand(0x84);
EPD_7IN3F_SendData(0x00);
EPD_7IN3F_SendCommand(0x86); // AGID
EPD_7IN3F_SendData(0x00);
EPD_7IN3F_SendCommand(0xE3);
EPD_7IN3F_SendData(0x2F);
EPD_7IN3F_SendCommand(0xE0); // CCSET
EPD_7IN3F_SendData(0x00);
EPD_7IN3F_SendCommand(0xE6); // TSSET
EPD_7IN3F_SendData(0x00);
}
/******************************************************************************
function : Clear screen
parameter:
******************************************************************************/
void EPD_7IN3F_Clear(UBYTE color)
{
UWORD Width, Height;
Width = (EPD_7IN3F_WIDTH % 2 == 0)? (EPD_7IN3F_WIDTH / 2 ): (EPD_7IN3F_WIDTH / 2 + 1);
Height = EPD_7IN3F_HEIGHT;
EPD_7IN3F_SendCommand(0x10);
for (UWORD j = 0; j < Height; j++) {
for (UWORD i = 0; i < Width; i++) {
EPD_7IN3F_SendData((color<<4)|color);
}
}
EPD_7IN3F_TurnOnDisplay();
}
/******************************************************************************
function : show 7 kind of color block
parameter:
******************************************************************************/
void EPD_7IN3F_Show7Block(void)
{
unsigned long i, j, k;
unsigned char const Color_seven[8] =
{EPD_7IN3F_BLACK, EPD_7IN3F_BLUE, EPD_7IN3F_GREEN, EPD_7IN3F_ORANGE,
EPD_7IN3F_RED, EPD_7IN3F_YELLOW, EPD_7IN3F_WHITE, EPD_7IN3F_WHITE};
EPD_7IN3F_SendCommand(0x10);
for(i=0; i<240; i++) {
for(k = 0 ; k < 4; k ++) {
for(j = 0 ; j < 100; j ++) {
EPD_7IN3F_SendData((Color_seven[k]<<4) |Color_seven[k]);
}
}
}
for(i=0; i<240; i++) {
for(k = 4 ; k < 8; k ++) {
for(j = 0 ; j < 100; j ++) {
EPD_7IN3F_SendData((Color_seven[k]<<4) |Color_seven[k]);
}
}
}
EPD_7IN3F_TurnOnDisplay();
}
/******************************************************************************
function : Sends the image buffer in RAM to e-Paper and displays
parameter:
******************************************************************************/
void EPD_7IN3F_Display(UBYTE *Image)
{
UWORD Width, Height;
Width = (EPD_7IN3F_WIDTH % 2 == 0)? (EPD_7IN3F_WIDTH / 2 ): (EPD_7IN3F_WIDTH / 2 + 1);
Height = EPD_7IN3F_HEIGHT;
EPD_7IN3F_SendCommand(0x10);
for (UWORD j = 0; j < Height; j++) {
for (UWORD i = 0; i < Width; i++) {
EPD_7IN3F_SendData(Image[i + j * Width]);
}
}
EPD_7IN3F_TurnOnDisplay();
}
/******************************************************************************
function : Enter sleep mode
parameter:
******************************************************************************/
void EPD_7IN3F_Sleep(void)
{
EPD_7IN3F_SendCommand(0x07); // DEEP_SLEEP
EPD_7IN3F_SendData(0XA5);
}

View file

@ -0,0 +1,58 @@
/*****************************************************************************
* | File : EPD_7in3f.h
* | Author : Waveshare team
* | Function : 7.3inch e-Paper (F) Driver
* | Info :
*----------------
* | This version: V1.0
* | Date : 2022-10-20
* | 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_7IN3F_H_
#define __EPD_7IN3F_H_
#include "DEV_Config.h"
// Display resolution
#define EPD_7IN3F_WIDTH 800
#define EPD_7IN3F_HEIGHT 480
/**********************************
Color Index
**********************************/
#define EPD_7IN3F_BLACK 0x0 /// 000
#define EPD_7IN3F_WHITE 0x1 /// 001
#define EPD_7IN3F_GREEN 0x2 /// 010
#define EPD_7IN3F_BLUE 0x3 /// 011
#define EPD_7IN3F_RED 0x4 /// 100
#define EPD_7IN3F_YELLOW 0x5 /// 101
#define EPD_7IN3F_ORANGE 0x6 /// 110
#define EPD_7IN3F_CLEAN 0x7 /// 111 unavailable Afterimage
void EPD_7IN3F_Init(void);
void EPD_7IN3F_Clear(UBYTE color);
void EPD_7IN3F_Show7Block(void);
void EPD_7IN3F_Display(UBYTE *Image);
void EPD_7IN3F_Sleep(void);
#endif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

View file

@ -0,0 +1,71 @@
#!/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 epd7in3f
import time
from PIL import Image,ImageDraw,ImageFont
import traceback
logging.basicConfig(level=logging.DEBUG)
try:
logging.info("epd7in3f Demo")
epd = epd7in3f.EPD()
logging.info("init and Clear")
epd.init()
epd.Clear()
font24 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 24)
font18 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 18)
font40 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 40)
# Drawing on the image
logging.info("1.Drawing on the image...")
Himage = Image.new('RGB', (epd.width, epd.height), epd.WHITE) # 255: clear the frame
draw = ImageDraw.Draw(Himage)
draw.text((5, 0), 'hello world', font = font18, fill = epd.RED)
draw.text((5, 20), '7.3inch e-Paper (F)', font = font24, fill = epd.YELLOW)
draw.text((5, 45), u'微雪电子', font = font40, fill = epd.GREEN)
draw.text((5, 85), u'微雪电子', font = font40, fill = epd.BLUE)
draw.text((5, 125), u'微雪电子', font = font40, fill = epd.ORANGE)
draw.line((5, 170, 80, 245), fill = epd.BLUE)
draw.line((80, 170, 5, 245), fill = epd.ORANGE)
draw.rectangle((5, 170, 80, 245), outline = epd.BLACK)
draw.rectangle((90, 170, 165, 245), fill = epd.GREEN)
draw.arc((5, 250, 80, 325), 0, 360, fill = epd.RED)
draw.chord((90, 250, 165, 325), 0, 360, fill = epd.YELLOW)
epd.display(epd.getbuffer(Himage))
time.sleep(3)
# read bmp file
logging.info("2.read bmp file")
Himage = Image.open(os.path.join(picdir, '7in3f1.bmp'))
epd.display(epd.getbuffer(Himage))
time.sleep(3)
logging.info("3.read bmp file")
Himage = Image.open(os.path.join(picdir, '7in3f3.bmp'))
epd.display(epd.getbuffer(Himage))
time.sleep(3)
logging.info("Clear...")
epd.Clear()
logging.info("Goto Sleep...")
epd.sleep()
except IOError as e:
logging.info(e)
except KeyboardInterrupt:
logging.info("ctrl + c:")
epd7in3f.epdconfig.module_exit()
exit()

View file

@ -0,0 +1,247 @@
# *****************************************************************************
# * | File : epd7in3f.py
# * | Author : Waveshare team
# * | Function : Electronic paper driver
# * | Info :
# *----------------
# * | This version: V1.0
# * | Date : 2022-10-20
# # | 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 PIL
from PIL import Image
import io
# Display resolution
EPD_WIDTH = 800
EPD_HEIGHT = 480
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
self.BLACK = 0x000000 # 0000 BGR
self.WHITE = 0xffffff # 0001
self.GREEN = 0x00ff00 # 0010
self.BLUE = 0xff0000 # 0011
self.RED = 0x0000ff # 0100
self.YELLOW = 0x00ffff # 0101
self.ORANGE = 0x0080ff # 0110
# Hardware reset
def reset(self):
epdconfig.digital_write(self.reset_pin, 1)
epdconfig.delay_ms(20)
epdconfig.digital_write(self.reset_pin, 0) # module reset
epdconfig.delay_ms(2)
epdconfig.digital_write(self.reset_pin, 1)
epdconfig.delay_ms(20)
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)
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)
# send a lot of data
def send_data2(self, data):
epdconfig.digital_write(self.dc_pin, 1)
epdconfig.digital_write(self.cs_pin, 0)
epdconfig.spi_writebyte2(data)
epdconfig.digital_write(self.cs_pin, 1)
def ReadBusyH(self):
logger.debug("e-Paper busy H")
while(epdconfig.digital_read(self.busy_pin) == 0): # 0: busy, 1: idle
epdconfig.delay_ms(5)
logger.debug("e-Paper busy H release")
def TurnOnDisplay(self):
self.send_command(0x04) # POWER_ON
self.ReadBusyH()
self.send_command(0x12) # DISPLAY_REFRESH
self.send_data(0X00)
self.ReadBusyH()
self.send_command(0x02) # POWER_OFF
self.send_data(0X00)
self.ReadBusyH()
def init(self):
if (epdconfig.module_init() != 0):
return -1
# EPD hardware init start
self.reset()
self.ReadBusyH()
epdconfig.delay_ms(30)
self.send_command(0xAA) # CMDH
self.send_data(0x49)
self.send_data(0x55)
self.send_data(0x20)
self.send_data(0x08)
self.send_data(0x09)
self.send_data(0x18)
self.send_command(0x01)
self.send_data(0x3F)
self.send_data(0x00)
self.send_data(0x32)
self.send_data(0x2A)
self.send_data(0x0E)
self.send_data(0x2A)
self.send_command(0x00)
self.send_data(0x5F)
self.send_data(0x69)
self.send_command(0x03)
self.send_data(0x00)
self.send_data(0x54)
self.send_data(0x00)
self.send_data(0x44)
self.send_command(0x05)
self.send_data(0x40)
self.send_data(0x1F)
self.send_data(0x1F)
self.send_data(0x2C)
self.send_command(0x06)
self.send_data(0x6F)
self.send_data(0x1F)
self.send_data(0x16)
self.send_data(0x25)
self.send_command(0x08)
self.send_data(0x6F)
self.send_data(0x1F)
self.send_data(0x1F)
self.send_data(0x22)
self.send_command(0x13) # IPC
self.send_data(0x00)
self.send_data(0x04)
self.send_command(0x30)
self.send_data(0x02)
self.send_command(0x41) # TSE
self.send_data(0x00)
self.send_command(0x50)
self.send_data(0x3F)
self.send_command(0x60)
self.send_data(0x02)
self.send_data(0x00)
self.send_command(0x61)
self.send_data(0x03)
self.send_data(0x20)
self.send_data(0x01)
self.send_data(0xE0)
self.send_command(0x82)
self.send_data(0x1E)
self.send_command(0x84)
self.send_data(0x00)
self.send_command(0x86) # AGID
self.send_data(0x00)
self.send_command(0xE3)
self.send_data(0x2F)
self.send_command(0xE0) # CCSET
self.send_data(0x00)
self.send_command(0xE6) # TSSET
self.send_data(0x00)
return 0
def getbuffer(self, image):
# Create a pallette with the 7 colors supported by the panel
pal_image = Image.new("P", (1,1))
pal_image.putpalette( (0,0,0, 255,255,255, 0,255,0, 0,0,255, 255,0,0, 255,255,0, 255,128,0) + (0,0,0)*249)
# Check if we need to rotate the image
imwidth, imheight = image.size
if(imwidth == self.width and imheight == self.height):
image_temp = image
elif(imwidth == self.height and imheight == self.width):
image_temp = image.rotate(90, expand=True)
else:
logger.warning("Invalid image dimensions: %d x %d, expected %d x %d" % (imwidth, imheight, self.width, self.height))
# Convert the soruce image to the 7 colors, dithering if needed
image_7color = image_temp.convert("RGB").quantize(palette=pal_image)
buf_7color = bytearray(image_7color.tobytes('raw'))
# PIL does not support 4 bit color, so pack the 4 bits of color
# into a single byte to transfer to the panel
buf = [0x00] * int(self.width * self.height / 2)
idx = 0
for i in range(0, len(buf_7color), 2):
buf[idx] = (buf_7color[i] << 4) + buf_7color[i+1]
idx += 1
return buf
def display(self, image):
self.send_command(0x10)
self.send_data2(image)
self.TurnOnDisplay()
def Clear(self, color=0x11):
self.send_command(0x10)
self.send_data2([color] * int(self.height) * int(self.width/2))
self.TurnOnDisplay()
def sleep(self):
self.send_command(0x07) # DEEP_SLEEP
self.send_data(0XA5)
epdconfig.delay_ms(2000)
epdconfig.module_exit()
### END OF FILE ###

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 788 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

View file

@ -0,0 +1,36 @@
// File: STM32F101_102_103_105_107.dbgconf
// Version: 1.0.0
// Note: refer to STM32F101xx STM32F102xx STM32F103xx STM32F105xx STM32F107xx Reference manual (RM0008)
// STM32F101xx STM32F102xx STM32F103xx STM32F105xx STM32F107xx datasheets
// <<< Use Configuration Wizard in Context Menu >>>
// <h> Debug MCU configuration register (DBGMCU_CR)
// <i> Reserved bits must be kept at reset value
// <o.30> DBG_TIM11_STOP <i> TIM11 counter stopped when core is halted
// <o.29> DBG_TIM10_STOP <i> TIM10 counter stopped when core is halted
// <o.28> DBG_TIM9_STOP <i> TIM9 counter stopped when core is halted
// <o.27> DBG_TIM14_STOP <i> TIM14 counter stopped when core is halted
// <o.26> DBG_TIM13_STOP <i> TIM13 counter stopped when core is halted
// <o.25> DBG_TIM12_STOP <i> TIM12 counter stopped when core is halted
// <o.21> DBG_CAN2_STOP <i> Debug CAN2 stopped when core is halted
// <o.20> DBG_TIM7_STOP <i> TIM7 counter stopped when core is halted
// <o.19> DBG_TIM6_STOP <i> TIM6 counter stopped when core is halted
// <o.18> DBG_TIM5_STOP <i> TIM5 counter stopped when core is halted
// <o.17> DBG_TIM8_STOP <i> TIM8 counter stopped when core is halted
// <o.16> DBG_I2C2_SMBUS_TIMEOUT <i> SMBUS timeout mode stopped when core is halted
// <o.15> DBG_I2C1_SMBUS_TIMEOUT <i> SMBUS timeout mode stopped when core is halted
// <o.14> DBG_CAN1_STOP <i> Debug CAN1 stopped when Core is halted
// <o.13> DBG_TIM4_STOP <i> TIM4 counter stopped when core is halted
// <o.12> DBG_TIM3_STOP <i> TIM3 counter stopped when core is halted
// <o.11> DBG_TIM2_STOP <i> TIM2 counter stopped when core is halted
// <o.10> DBG_TIM1_STOP <i> TIM1 counter stopped when core is halted
// <o.9> DBG_WWDG_STOP <i> Debug window watchdog stopped when core is halted
// <o.8> DBG_IWDG_STOP <i> Debug independent watchdog stopped when core is halted
// <o.2> DBG_STANDBY <i> Debug standby mode
// <o.1> DBG_STOP <i> Debug stop mode
// <o.0> DBG_SLEEP <i> Debug sleep mode
// </h>
DbgMCU_CR = 0x00000007;
// <<< end of configuration section >>>

View file

@ -0,0 +1,36 @@
// File: STM32F101_102_103_105_107.dbgconf
// Version: 1.0.0
// Note: refer to STM32F101xx STM32F102xx STM32F103xx STM32F105xx STM32F107xx Reference manual (RM0008)
// STM32F101xx STM32F102xx STM32F103xx STM32F105xx STM32F107xx datasheets
// <<< Use Configuration Wizard in Context Menu >>>
// <h> Debug MCU configuration register (DBGMCU_CR)
// <i> Reserved bits must be kept at reset value
// <o.30> DBG_TIM11_STOP <i> TIM11 counter stopped when core is halted
// <o.29> DBG_TIM10_STOP <i> TIM10 counter stopped when core is halted
// <o.28> DBG_TIM9_STOP <i> TIM9 counter stopped when core is halted
// <o.27> DBG_TIM14_STOP <i> TIM14 counter stopped when core is halted
// <o.26> DBG_TIM13_STOP <i> TIM13 counter stopped when core is halted
// <o.25> DBG_TIM12_STOP <i> TIM12 counter stopped when core is halted
// <o.21> DBG_CAN2_STOP <i> Debug CAN2 stopped when core is halted
// <o.20> DBG_TIM7_STOP <i> TIM7 counter stopped when core is halted
// <o.19> DBG_TIM6_STOP <i> TIM6 counter stopped when core is halted
// <o.18> DBG_TIM5_STOP <i> TIM5 counter stopped when core is halted
// <o.17> DBG_TIM8_STOP <i> TIM8 counter stopped when core is halted
// <o.16> DBG_I2C2_SMBUS_TIMEOUT <i> SMBUS timeout mode stopped when core is halted
// <o.15> DBG_I2C1_SMBUS_TIMEOUT <i> SMBUS timeout mode stopped when core is halted
// <o.14> DBG_CAN1_STOP <i> Debug CAN1 stopped when Core is halted
// <o.13> DBG_TIM4_STOP <i> TIM4 counter stopped when core is halted
// <o.12> DBG_TIM3_STOP <i> TIM3 counter stopped when core is halted
// <o.11> DBG_TIM2_STOP <i> TIM2 counter stopped when core is halted
// <o.10> DBG_TIM1_STOP <i> TIM1 counter stopped when core is halted
// <o.9> DBG_WWDG_STOP <i> Debug window watchdog stopped when core is halted
// <o.8> DBG_IWDG_STOP <i> Debug independent watchdog stopped when core is halted
// <o.2> DBG_STANDBY <i> Debug standby mode
// <o.1> DBG_STOP <i> Debug stop mode
// <o.0> DBG_SLEEP <i> Debug sleep mode
// </h>
DbgMCU_CR = 0x00000007;
// <<< end of configuration section >>>

View file

@ -0,0 +1,36 @@
// File: STM32F101_102_103_105_107.dbgconf
// Version: 1.0.0
// Note: refer to STM32F101xx STM32F102xx STM32F103xx STM32F105xx STM32F107xx Reference manual (RM0008)
// STM32F101xx STM32F102xx STM32F103xx STM32F105xx STM32F107xx datasheets
// <<< Use Configuration Wizard in Context Menu >>>
// <h> Debug MCU configuration register (DBGMCU_CR)
// <i> Reserved bits must be kept at reset value
// <o.30> DBG_TIM11_STOP <i> TIM11 counter stopped when core is halted
// <o.29> DBG_TIM10_STOP <i> TIM10 counter stopped when core is halted
// <o.28> DBG_TIM9_STOP <i> TIM9 counter stopped when core is halted
// <o.27> DBG_TIM14_STOP <i> TIM14 counter stopped when core is halted
// <o.26> DBG_TIM13_STOP <i> TIM13 counter stopped when core is halted
// <o.25> DBG_TIM12_STOP <i> TIM12 counter stopped when core is halted
// <o.21> DBG_CAN2_STOP <i> Debug CAN2 stopped when core is halted
// <o.20> DBG_TIM7_STOP <i> TIM7 counter stopped when core is halted
// <o.19> DBG_TIM6_STOP <i> TIM6 counter stopped when core is halted
// <o.18> DBG_TIM5_STOP <i> TIM5 counter stopped when core is halted
// <o.17> DBG_TIM8_STOP <i> TIM8 counter stopped when core is halted
// <o.16> DBG_I2C2_SMBUS_TIMEOUT <i> SMBUS timeout mode stopped when core is halted
// <o.15> DBG_I2C1_SMBUS_TIMEOUT <i> SMBUS timeout mode stopped when core is halted
// <o.14> DBG_CAN1_STOP <i> Debug CAN1 stopped when Core is halted
// <o.13> DBG_TIM4_STOP <i> TIM4 counter stopped when core is halted
// <o.12> DBG_TIM3_STOP <i> TIM3 counter stopped when core is halted
// <o.11> DBG_TIM2_STOP <i> TIM2 counter stopped when core is halted
// <o.10> DBG_TIM1_STOP <i> TIM1 counter stopped when core is halted
// <o.9> DBG_WWDG_STOP <i> Debug window watchdog stopped when core is halted
// <o.8> DBG_IWDG_STOP <i> Debug independent watchdog stopped when core is halted
// <o.2> DBG_STANDBY <i> Debug standby mode
// <o.1> DBG_STOP <i> Debug stop mode
// <o.0> DBG_SLEEP <i> Debug sleep mode
// </h>
DbgMCU_CR = 0x00000007;
// <<< end of configuration section >>>

View file

@ -0,0 +1,20 @@
/*
* Auto generated Run-Time-Environment Component Configuration File
* *** Do not modify ! ***
*
* Project: 'epd-demo'
* Target: 'EPD_7in3f_test'
*/
#ifndef RTE_COMPONENTS_H
#define RTE_COMPONENTS_H
/*
* Define the Device Header File:
*/
#define CMSIS_device_header "stm32f10x.h"
#endif /* RTE_COMPONENTS_H */

File diff suppressed because one or more lines are too long

View file

@ -8568,6 +8568,193 @@
</TargetOption>
</Target>
<Target>
<TargetName>EPD_7in3f_test</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<TargetOption>
<CLKADS>72000000</CLKADS>
<OPTTT>
<gFlags>1</gFlags>
<BeepAtEnd>1</BeepAtEnd>
<RunSim>0</RunSim>
<RunTarget>1</RunTarget>
<RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>1</HexSelection>
<FlashByte>65535</FlashByte>
<HexRangeLowAddress>0</HexRangeLowAddress>
<HexRangeHighAddress>0</HexRangeHighAddress>
<HexOffset>0</HexOffset>
</OPTHX>
<OPTLEX>
<PageWidth>79</PageWidth>
<PageLength>66</PageLength>
<TabStop>8</TabStop>
<ListingPath></ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
<CreateAListing>1</CreateAListing>
<CreateLListing>1</CreateLListing>
<CreateIListing>0</CreateIListing>
<AsmCond>1</AsmCond>
<AsmSymb>1</AsmSymb>
<AsmXref>0</AsmXref>
<CCond>1</CCond>
<CCode>0</CCode>
<CListInc>0</CListInc>
<CSymb>0</CSymb>
<LinkerCodeListing>0</LinkerCodeListing>
</ListingPage>
<OPTXL>
<LMap>1</LMap>
<LComments>1</LComments>
<LGenerateSymbols>1</LGenerateSymbols>
<LLibSym>1</LLibSym>
<LLines>1</LLines>
<LLocSym>1</LLocSym>
<LPubSym>1</LPubSym>
<LXref>0</LXref>
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>0</IsCurrentTarget>
</OPTFL>
<CpuCode>18</CpuCode>
<DebugOpt>
<uSim>0</uSim>
<uTrg>1</uTrg>
<sLdApp>1</sLdApp>
<sGomain>1</sGomain>
<sRbreak>1</sRbreak>
<sRwatch>1</sRwatch>
<sRmem>1</sRmem>
<sRfunc>1</sRfunc>
<sRbox>1</sRbox>
<tLdApp>1</tLdApp>
<tGomain>1</tGomain>
<tRbreak>1</tRbreak>
<tRwatch>1</tRwatch>
<tRmem>1</tRmem>
<tRfunc>1</tRfunc>
<tRbox>1</tRbox>
<tRtrace>1</tRtrace>
<sRSysVw>1</sRSysVw>
<tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
<nTsel>6</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
<sDlgPa></sDlgPa>
<sIfile></sIfile>
<tDll></tDll>
<tDllPa></tDllPa>
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
<pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
</DebugOpt>
<TargetDriverDllRegistry>
<SetRegEntry>
<Number>0</Number>
<Key>ARMRTXEVENTFLAGS</Key>
<Name>-L70 -Z18 -C0 -M0 -T1</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>DLGTARM</Key>
<Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>ARMDBGFLAGS</Key>
<Name></Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>DLGUARM</Key>
<Name>(105=-1,-1,-1,-1,0)</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>UL2CM3</Key>
<Name>-UAny -O206 -S8 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103ZE$Flash\STM32F10x_512.FLM)</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>ST-LINKIII-KEIL_SWO</Key>
<Name>-U49FF6F066572485414310687 -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)</Name>
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint/>
<MemoryWindow1>
<Mm>
<WinNumber>1</WinNumber>
<SubType>0</SubType>
<ItemText>0x2000A09C</ItemText>
<AccSizeX>0</AccSizeX>
</Mm>
</MemoryWindow1>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
<aLwin>1</aLwin>
<aCover>0</aCover>
<aSer1>0</aSer1>
<aSer2>0</aSer2>
<aPa>0</aPa>
<viewmode>1</viewmode>
<vrSel>0</vrSel>
<aSym>0</aSym>
<aTbox>0</aTbox>
<AscS1>0</AscS1>
<AscS2>0</AscS2>
<AscS3>0</AscS3>
<aSer3>0</aSer3>
<eProf>0</eProf>
<aLa>0</aLa>
<aPa1>0</aPa1>
<AscS4>0</AscS4>
<aSer4>0</aSer4>
<StkLoc>0</StkLoc>
<TrcWin>0</TrcWin>
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
<LintExecutable></LintExecutable>
<LintConfigFile></LintConfigFile>
<bLintAuto>0</bLintAuto>
<bAutoGenD>0</bAutoGenD>
<LntExFlags>0</LntExFlags>
<pMisraName></pMisraName>
<pszMrule></pszMrule>
<pSingCmds></pSingCmds>
<pMultCmds></pMultCmds>
<pMisraNamep></pMisraNamep>
<pszMrulep></pszMrulep>
<pSingCmdsp></pSingCmdsp>
<pMultCmdsp></pMultCmdsp>
<DebugDescription>
<Enable>1</Enable>
<EnableLog>0</EnableLog>
<Protocol>2</Protocol>
<DbgClock>10000000</DbgClock>
</DebugDescription>
</TargetOption>
</Target>
<Target>
<TargetName>EPD_7in3g_test</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
@ -10701,6 +10888,18 @@
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\User\Examples\EPD_7in3f_test.c</PathWithFileName>
<FilenameWithoutPath>EPD_7in3f_test.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>49</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\User\Examples\EPD_7in3g_test.c</PathWithFileName>
<FilenameWithoutPath>EPD_7in3g_test.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
@ -10708,7 +10907,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>49</FileNumber>
<FileNumber>50</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10720,7 +10919,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>50</FileNumber>
<FileNumber>51</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10732,7 +10931,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>51</FileNumber>
<FileNumber>52</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10744,7 +10943,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>52</FileNumber>
<FileNumber>53</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10756,7 +10955,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>53</FileNumber>
<FileNumber>54</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10768,7 +10967,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>54</FileNumber>
<FileNumber>55</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10788,7 +10987,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>55</FileNumber>
<FileNumber>56</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10800,7 +10999,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>56</FileNumber>
<FileNumber>57</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10812,7 +11011,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>57</FileNumber>
<FileNumber>58</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10824,7 +11023,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>58</FileNumber>
<FileNumber>59</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10836,7 +11035,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>59</FileNumber>
<FileNumber>60</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10848,7 +11047,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>60</FileNumber>
<FileNumber>61</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10860,7 +11059,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>61</FileNumber>
<FileNumber>62</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10872,7 +11071,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>62</FileNumber>
<FileNumber>63</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10884,7 +11083,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>63</FileNumber>
<FileNumber>64</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10896,7 +11095,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>64</FileNumber>
<FileNumber>65</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10908,7 +11107,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>65</FileNumber>
<FileNumber>66</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10920,7 +11119,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>66</FileNumber>
<FileNumber>67</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10932,7 +11131,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>67</FileNumber>
<FileNumber>68</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10944,7 +11143,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>68</FileNumber>
<FileNumber>69</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10956,7 +11155,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>69</FileNumber>
<FileNumber>70</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10968,7 +11167,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>70</FileNumber>
<FileNumber>71</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10980,7 +11179,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>71</FileNumber>
<FileNumber>72</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -10992,7 +11191,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>72</FileNumber>
<FileNumber>73</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11004,7 +11203,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>73</FileNumber>
<FileNumber>74</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11016,7 +11215,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>74</FileNumber>
<FileNumber>75</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11028,7 +11227,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>75</FileNumber>
<FileNumber>76</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11040,7 +11239,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>76</FileNumber>
<FileNumber>77</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11052,7 +11251,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>77</FileNumber>
<FileNumber>78</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11064,7 +11263,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>78</FileNumber>
<FileNumber>79</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11076,7 +11275,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>79</FileNumber>
<FileNumber>80</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11088,7 +11287,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>80</FileNumber>
<FileNumber>81</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11100,7 +11299,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>81</FileNumber>
<FileNumber>82</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11112,7 +11311,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>82</FileNumber>
<FileNumber>83</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11124,7 +11323,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>83</FileNumber>
<FileNumber>84</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11136,7 +11335,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>84</FileNumber>
<FileNumber>85</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11148,7 +11347,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>85</FileNumber>
<FileNumber>86</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11160,7 +11359,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>86</FileNumber>
<FileNumber>87</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11172,7 +11371,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>87</FileNumber>
<FileNumber>88</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11184,7 +11383,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>88</FileNumber>
<FileNumber>89</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11196,7 +11395,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>89</FileNumber>
<FileNumber>90</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11208,7 +11407,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>90</FileNumber>
<FileNumber>91</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11220,7 +11419,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>91</FileNumber>
<FileNumber>92</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11232,7 +11431,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>92</FileNumber>
<FileNumber>93</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11244,7 +11443,19 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>93</FileNumber>
<FileNumber>94</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\User\e-Paper\EPD_7in3f.c</PathWithFileName>
<FilenameWithoutPath>EPD_7in3f.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>95</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11256,7 +11467,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>94</FileNumber>
<FileNumber>96</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11268,7 +11479,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>95</FileNumber>
<FileNumber>97</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11280,7 +11491,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>96</FileNumber>
<FileNumber>98</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11292,7 +11503,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>97</FileNumber>
<FileNumber>99</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11304,7 +11515,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>98</FileNumber>
<FileNumber>100</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11316,7 +11527,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>99</FileNumber>
<FileNumber>101</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11336,7 +11547,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>5</GroupNumber>
<FileNumber>100</FileNumber>
<FileNumber>102</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11356,7 +11567,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>101</FileNumber>
<FileNumber>103</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11376,7 +11587,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>102</FileNumber>
<FileNumber>104</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11388,7 +11599,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>103</FileNumber>
<FileNumber>105</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11400,7 +11611,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>104</FileNumber>
<FileNumber>106</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11412,7 +11623,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>105</FileNumber>
<FileNumber>107</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11424,7 +11635,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>106</FileNumber>
<FileNumber>108</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11436,7 +11647,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>107</FileNumber>
<FileNumber>109</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11448,7 +11659,7 @@
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>108</FileNumber>
<FileNumber>110</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11468,7 +11679,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>109</FileNumber>
<FileNumber>111</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11480,7 +11691,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>110</FileNumber>
<FileNumber>112</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11500,7 +11711,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>9</GroupNumber>
<FileNumber>111</FileNumber>
<FileNumber>113</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11520,7 +11731,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>112</FileNumber>
<FileNumber>114</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11532,7 +11743,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>113</FileNumber>
<FileNumber>115</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11544,7 +11755,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>114</FileNumber>
<FileNumber>116</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11556,7 +11767,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>115</FileNumber>
<FileNumber>117</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11568,7 +11779,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>116</FileNumber>
<FileNumber>118</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11580,7 +11791,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>117</FileNumber>
<FileNumber>119</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11592,7 +11803,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>118</FileNumber>
<FileNumber>120</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11604,7 +11815,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>119</FileNumber>
<FileNumber>121</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11616,7 +11827,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>120</FileNumber>
<FileNumber>122</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11628,7 +11839,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>121</FileNumber>
<FileNumber>123</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11640,7 +11851,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>122</FileNumber>
<FileNumber>124</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11652,7 +11863,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>123</FileNumber>
<FileNumber>125</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11664,7 +11875,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>124</FileNumber>
<FileNumber>126</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11676,7 +11887,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>125</FileNumber>
<FileNumber>127</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11688,7 +11899,7 @@
</File>
<File>
<GroupNumber>10</GroupNumber>
<FileNumber>126</FileNumber>
<FileNumber>128</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -11700,14 +11911,6 @@
</File>
</Group>
<Group>
<GroupName>New Group</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
</Group>
<Group>
<GroupName>::CMSIS</GroupName>
<tvExp>0</tvExp>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,94 @@
<html>
<body>
<pre>
<h1>µVision Build Log</h1>
<h2>Tool Versions:</h2>
IDE-Version: ¦ÌVision V5.25.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
Tool Versions:
Toolchain: MDK-ARM Plus Version: 5.25.2.0
Toolchain Path: D:\Program Files\keil5\ARM\ARMCC\Bin
C Compiler: Armcc.exe V5.06 update 6 (build 750)
Assembler: Armasm.exe V5.06 update 6 (build 750)
Linker/Locator: ArmLink.exe V5.06 update 6 (build 750)
Library Manager: ArmAr.exe V5.06 update 6 (build 750)
Hex Converter: FromElf.exe V5.06 update 6 (build 750)
CPU DLL: SARMCM3.DLL V5.25.2.0
Dialog DLL: DCM.DLL V1.17.1.0
Target DLL: STLink\ST-LINKIII-KEIL_SWO.dll V3.0.1.0
Dialog DLL: TCM.DLL V1.35.1.0
<h2>Project:</h2>
E:\github\E-Paper_code\STM32\STM32-F103ZET6\MDK-ARM\epd-demo.uvprojx
Project File Date: 10/20/2022
<h2>Output:</h2>
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\Program Files\keil5\ARM\ARMCC\Bin'
Build target 'epd-demo'
assembling startup_stm32f103xe.s...
compiling spi.c...
compiling usart.c...
compiling gpio.c...
compiling stm32f1xx_hal_msp.c...
compiling DEV_Config.c...
compiling stm32f1xx_it.c...
compiling main.c...
compiling font8.c...
compiling font12.c...
compiling font12CN.c...
compiling font16.c...
compiling font24CN.c...
compiling font20.c...
compiling GUI_Paint.c...
compiling font24.c...
compiling system_stm32f1xx.c...
compiling stm32f1xx_hal_gpio.c...
compiling stm32f1xx_hal_gpio_ex.c...
compiling stm32f1xx_hal.c...
compiling stm32f1xx_hal_spi.c...
compiling stm32f1xx_hal_rcc_ex.c...
compiling stm32f1xx_hal_dma.c...
compiling stm32f1xx_hal_rcc.c...
compiling stm32f1xx_hal_flash.c...
compiling stm32f1xx_hal_tim.c...
compiling stm32f1xx_hal_exti.c...
compiling stm32f1xx_hal_tim_ex.c...
compiling stm32f1xx_hal_pwr.c...
compiling stm32f1xx_hal_cortex.c...
compiling stm32f1xx_hal_flash_ex.c...
compiling stm32f1xx_hal_uart.c...
linking...
epd-demo\epd-demo.axf: Error: L6218E: Undefined symbol EPD_test (referred from main.o).
Not enough information to list image symbols.
Not enough information to list load addresses in the image map.
Finished: 2 information, 0 warning and 1 error messages.
"epd-demo\epd-demo.axf" - 1 Error(s), 0 Warning(s).
<h2>Software Packages used:</h2>
Package Vendor: ARM
http://www.keil.com/pack/ARM.CMSIS.5.7.0.pack
ARM.CMSIS.5.7.0
CMSIS (Cortex Microcontroller Software Interface Standard)
* Component: CORE Version: 5.4.0
Package Vendor: Keil
http://www.keil.com/pack/Keil.STM32F1xx_DFP.2.3.0.pack
Keil.STM32F1xx_DFP.2.3.0
STMicroelectronics STM32F1 Series Device Support, Drivers and Examples
<h2>Collection of Component include folders:</h2>
.\RTE\_epd-demo
D:\Program Files\keil5\ARM\PACK\ARM\CMSIS\5.7.0\CMSIS\Core\Include
D:\Program Files\keil5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Device\Include
<h2>Collection of Component Files used:</h2>
* Component: ARM::CMSIS:CORE:5.4.0
Target not created.
Build Time Elapsed: 00:00:15
</pre>
</body>
</html>

File diff suppressed because it is too large Load diff

View file

@ -16,7 +16,6 @@ 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_3in52_test.o(.text) for EPD_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
@ -28,22 +27,6 @@ Section Cross References
usart.o(.text) refers to usart.o(.bss) for .bss
stm32f1xx_it.o(.text) refers to printf3.o(i.__0printf$3) for __2printf
stm32f1xx_it.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_IncTick
epd_3in52_test.o(.text) refers to printf3.o(i.__0printf$3) for __2printf
epd_3in52_test.o(.text) refers to dev_config.o(.text) for DEV_Module_Init
epd_3in52_test.o(.text) refers to epd_3in52.o(.text) for EPD_3IN52_Init
epd_3in52_test.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay
epd_3in52_test.o(.text) refers to malloc.o(i.malloc) for malloc
epd_3in52_test.o(.text) refers to gui_paint.o(.text) for Paint_NewImage
epd_3in52_test.o(.text) refers to malloc.o(i.free) for free
epd_3in52_test.o(.text) refers to imagedata.o(.constdata) for gImage_3in52
epd_3in52_test.o(.text) refers to font16.o(.data) for Font16
epd_3in52_test.o(.text) refers to font12.o(.data) for Font12
epd_3in52.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin
epd_3in52.o(.text) refers to stm32f1xx_hal.o(.text) for HAL_Delay
epd_3in52.o(.text) refers to dev_config.o(.text) for DEV_SPI_WriteByte
epd_3in52.o(.text) refers to printf3.o(i.__0printf$3) for __2printf
epd_3in52.o(.text) refers to epd_3in52.o(.constdata) for .constdata
epd_3in52.o(.text) refers to epd_3in52.o(.data) for .data
dev_config.o(.text) refers to stm32f1xx_hal_spi.o(.text) for HAL_SPI_Transmit
dev_config.o(.text) refers to stm32f1xx_hal_gpio.o(.text) for HAL_GPIO_WritePin
dev_config.o(.text) refers to spi.o(.bss) for hspi1
@ -51,6 +34,12 @@ Section Cross References
gui_paint.o(.text) refers to gui_paint.o(.bss) for .bss
gui_paint.o(.text) refers to gui_paint.o(.conststring) for .conststring
gui_paint.o(.text) refers to memseta.o(.text) for __aeabi_memclr4
gui_paint.o(.text) refers to dfixi.o(.text) for __aeabi_d2iz
gui_paint.o(.text) refers to dflti.o(.text) for __aeabi_i2d
gui_paint.o(.text) refers to dadd.o(.text) for __aeabi_drsub
gui_paint.o(.text) refers to d2f.o(.text) for __aeabi_d2f
gui_paint.o(.text) refers to fmul.o(.text) for __aeabi_fmul
gui_paint.o(.text) refers to ffixi.o(.text) for __aeabi_f2iz
font8.o(.data) refers to font8.o(.constdata) for Font8_Table
font12.o(.data) refers to font12.o(.constdata) for Font12_Table
font12cn.o(.data) refers to font12cn.o(.constdata) for Font12CN_Table
@ -331,38 +320,18 @@ Section Cross References
printfa.o(i._printf_pre_padding) refers (Special) to iusefp.o(.text) for __I$use$fp
printfa.o(i._snputc) refers (Special) to iusefp.o(.text) for __I$use$fp
printfa.o(i._sputc) refers (Special) to iusefp.o(.text) for __I$use$fp
malloc.o(i.free) refers to mvars.o(.data) for __microlib_freelist
malloc.o(i.malloc) refers to mvars.o(.data) for __microlib_freelist_initialised
malloc.o(i.malloc) refers to mvars.o(.data) for __microlib_freelist
malloc.o(i.malloc) refers to startup_stm32f103xe.o(HEAP) for __heap_base
mallocr.o(i.__free$realloc) refers to mvars.o(.data) for __microlib_freelist
mallocr.o(i.__malloc$realloc) refers to mallocr.o(i.internal_alloc) for internal_alloc
mallocr.o(i.__malloc$realloc) refers to mvars.o(.data) for __microlib_freelist_initialised
mallocr.o(i.__malloc$realloc) refers to startup_stm32f103xe.o(HEAP) for __heap_base
mallocr.o(i.__malloc$realloc) refers to mvars.o(.data) for __microlib_freelist
mallocr.o(i.internal_alloc) refers to memcpya.o(.text) for __aeabi_memcpy
mallocr.o(i.internal_alloc) refers to mvars.o(.data) for __microlib_freelist
mallocr.o(i.realloc) refers to mallocr.o(i.__free$realloc) for __free$realloc
mallocr.o(i.realloc) refers to mallocr.o(i.internal_alloc) for internal_alloc
mallocr.o(i.realloc) refers to mallocr.o(i.__malloc$realloc) for __malloc$realloc
mallocr.o(i.realloc) refers to mvars.o(.data) for __microlib_freelist
malloca.o(i.__aligned_malloc) refers to mvars.o(.data) for __microlib_freelist_initialised
malloca.o(i.__aligned_malloc) refers to mvars.o(.data) for __microlib_freelist
malloca.o(i.__aligned_malloc) refers to startup_stm32f103xe.o(HEAP) for __heap_base
malloca.o(i.__free$memalign) refers to mvars.o(.data) for __microlib_freelist
malloca.o(i.__malloc$memalign) refers to malloca.o(i.__aligned_malloc) for __aligned_malloc
mallocra.o(i.__aligned_malloc$realloc) refers to mallocra.o(i.internal_alloc) for internal_alloc
mallocra.o(i.__aligned_malloc$realloc) refers to mvars.o(.data) for __microlib_freelist_initialised
mallocra.o(i.__aligned_malloc$realloc) refers to startup_stm32f103xe.o(HEAP) for __heap_base
mallocra.o(i.__aligned_malloc$realloc) refers to mvars.o(.data) for __microlib_freelist
mallocra.o(i.__free$realloc$memalign) refers to mvars.o(.data) for __microlib_freelist
mallocra.o(i.__malloc$realloc$memalign) refers to mallocra.o(i.__aligned_malloc$realloc) for __aligned_malloc$realloc
mallocra.o(i.__realloc$memalign) refers to mallocra.o(i.__free$realloc$memalign) for __free$realloc$memalign
mallocra.o(i.__realloc$memalign) refers to mallocra.o(i.internal_alloc) for internal_alloc
mallocra.o(i.__realloc$memalign) refers to mallocra.o(i.__malloc$realloc$memalign) for __malloc$realloc$memalign
mallocra.o(i.__realloc$memalign) refers to mvars.o(.data) for __microlib_freelist
mallocra.o(i.internal_alloc) refers to memcpya.o(.text) for __aeabi_memcpy
mallocra.o(i.internal_alloc) refers to mvars.o(.data) for __microlib_freelist
fmul.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
dadd.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
dadd.o(.text) refers to llshl.o(.text) for __aeabi_llsl
dadd.o(.text) refers to llsshr.o(.text) for __aeabi_lasr
dadd.o(.text) refers to depilogue.o(.text) for _double_epilogue
dflti.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
dflti.o(.text) refers to depilogue.o(.text) for _double_epilogue
ffixi.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
dfixi.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
dfixi.o(.text) refers to llushr.o(.text) for __aeabi_llsr
d2f.o(.text) refers (Special) to iusefp.o(.text) for __I$use$fp
d2f.o(.text) refers to fepilogue.o(.text) for _float_round
entry2.o(.ARM.Collect$$$$00000001) refers to entry2.o(.ARM.Collect$$$$00002712) for __lit__00000000
entry2.o(.ARM.Collect$$$$00002712) refers to startup_stm32f103xe.o(STACK) for __initial_sp
entry2.o(__vectab_stack_and_reset_area) refers to startup_stm32f103xe.o(STACK) for __initial_sp
@ -372,22 +341,20 @@ Section Cross References
entry9b.o(.ARM.Collect$$$$0000000C) refers to main.o(.text) for main
uldiv.o(.text) refers to llushr.o(.text) for __aeabi_llsr
uldiv.o(.text) refers to llshl.o(.text) for __aeabi_llsl
dadd.o(.text) refers to llshl.o(.text) for __aeabi_llsl
dadd.o(.text) refers to llsshr.o(.text) for __aeabi_lasr
dadd.o(.text) refers to depilogue.o(.text) for _double_epilogue
depilogue.o(.text) refers to llshl.o(.text) for __aeabi_llsl
depilogue.o(.text) refers to llushr.o(.text) for __aeabi_llsr
dmul.o(.text) refers to depilogue.o(.text) for _double_epilogue
ddiv.o(.text) refers to depilogue.o(.text) for _double_round
dfixul.o(.text) refers to llushr.o(.text) for __aeabi_llsr
dfixul.o(.text) refers to llshl.o(.text) for __aeabi_llsl
init.o(.text) refers to entry5.o(.ARM.Collect$$$$00000004) for __main_after_scatterload
depilogue.o(.text) refers to llshl.o(.text) for __aeabi_llsl
depilogue.o(.text) refers to llushr.o(.text) for __aeabi_llsr
==============================================================================
Removing Unused input sections from the image.
Removing startup_stm32f103xe.o(HEAP), (49152 bytes).
Removing main.o(.rev16_text), (4 bytes).
Removing main.o(.revsh_text), (4 bytes).
Removing main.o(.rrx_text), (6 bytes).
@ -406,66 +373,24 @@ 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).
Removing imagedata.o(.constdata), (5000 bytes).
Removing imagedata.o(.constdata), (2888 bytes).
Removing imagedata.o(.constdata), (2888 bytes).
Removing imagedata.o(.constdata), (5808 bytes).
Removing imagedata.o(.constdata), (5808 bytes).
Removing imagedata.o(.constdata), (5808 bytes).
Removing imagedata.o(.constdata), (5808 bytes).
Removing imagedata.o(.constdata), (5808 bytes).
Removing imagedata.o(.constdata), (11616 bytes).
Removing imagedata.o(.constdata), (4736 bytes).
Removing imagedata.o(.constdata), (4736 bytes).
Removing imagedata.o(.constdata), (4736 bytes).
Removing imagedata.o(.constdata), (4000 bytes).
Removing imagedata.o(.constdata), (2756 bytes).
Removing imagedata.o(.constdata), (2756 bytes).
Removing imagedata.o(.constdata), (2756 bytes).
Removing imagedata.o(.constdata), (2756 bytes).
Removing imagedata.o(.constdata), (2756 bytes).
Removing imagedata.o(.constdata), (5630 bytes).
Removing imagedata.o(.constdata), (5630 bytes).
Removing imagedata.o(.constdata), (5630 bytes).
Removing imagedata.o(.constdata), (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).
Removing imagedata.o(.constdata), (38886 bytes).
Removing imagedata.o(.constdata), (33600 bytes).
Removing imagedata.o(.constdata), (33600 bytes).
Removing imagedata.o(.constdata), (38886 bytes).
Removing imagedata.o(.constdata), (38886 bytes).
Removing imagedata.o(.constdata), (30720 bytes).
Removing imagedata.o(.constdata), (48000 bytes).
Removing imagedata.o(.constdata), (30720 bytes).
Removing imagedata.o(.constdata), (30720 bytes).
Removing imagedata.o(.constdata), (48000 bytes).
Removing imagedata.o(.constdata), (48000 bytes).
Removing epd_3in52_test.o(.rev16_text), (4 bytes).
Removing epd_3in52_test.o(.revsh_text), (4 bytes).
Removing epd_3in52_test.o(.rrx_text), (6 bytes).
Removing epd_3in52.o(.rev16_text), (4 bytes).
Removing epd_3in52.o(.revsh_text), (4 bytes).
Removing epd_3in52.o(.rrx_text), (6 bytes).
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), (4020 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).
@ -527,790 +452,17 @@ Removing Unused input sections from the image.
Removing stm32f1xx_hal_uart.o(.rev16_text), (4 bytes).
Removing stm32f1xx_hal_uart.o(.revsh_text), (4 bytes).
Removing stm32f1xx_hal_uart.o(.rrx_text), (6 bytes).
Removing fmul.o(.text), (100 bytes).
Removing dadd.o(.text), (334 bytes).
Removing dflti.o(.text), (34 bytes).
Removing ffixi.o(.text), (50 bytes).
Removing dfixi.o(.text), (62 bytes).
Removing d2f.o(.text), (56 bytes).
Removing fepilogue.o(.text), (110 bytes).
Removing depilogue.o(.text), (186 bytes).
Removing dmul.o(.text), (228 bytes).
Removing ddiv.o(.text), (222 bytes).
Removing dfixul.o(.text), (48 bytes).
Removing cdrcmple.o(.text), (48 bytes).
Removing depilogue.o(.text), (186 bytes).
145 unused section(s) (total 840144 bytes) removed from the image.
==============================================================================
Image Symbol Table
Local Symbols
Symbol Name Value Ov Type Size Object(Section)
../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c 0x00000000 Number 0 stm32f1xx_hal.o ABSOLUTE
../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c 0x00000000 Number 0 stm32f1xx_hal_cortex.o ABSOLUTE
../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c 0x00000000 Number 0 stm32f1xx_hal_dma.o ABSOLUTE
../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c 0x00000000 Number 0 stm32f1xx_hal_exti.o ABSOLUTE
../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c 0x00000000 Number 0 stm32f1xx_hal_flash.o ABSOLUTE
../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c 0x00000000 Number 0 stm32f1xx_hal_flash_ex.o ABSOLUTE
../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c 0x00000000 Number 0 stm32f1xx_hal_gpio.o ABSOLUTE
../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c 0x00000000 Number 0 stm32f1xx_hal_gpio_ex.o ABSOLUTE
../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c 0x00000000 Number 0 stm32f1xx_hal_pwr.o ABSOLUTE
../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c 0x00000000 Number 0 stm32f1xx_hal_rcc.o ABSOLUTE
../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c 0x00000000 Number 0 stm32f1xx_hal_rcc_ex.o ABSOLUTE
../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c 0x00000000 Number 0 stm32f1xx_hal_spi.o ABSOLUTE
../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c 0x00000000 Number 0 stm32f1xx_hal_tim.o ABSOLUTE
../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c 0x00000000 Number 0 stm32f1xx_hal_tim_ex.o ABSOLUTE
../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c 0x00000000 Number 0 stm32f1xx_hal_uart.o ABSOLUTE
../Src/gpio.c 0x00000000 Number 0 gpio.o ABSOLUTE
../Src/main.c 0x00000000 Number 0 main.o ABSOLUTE
../Src/spi.c 0x00000000 Number 0 spi.o ABSOLUTE
../Src/stm32f1xx_hal_msp.c 0x00000000 Number 0 stm32f1xx_hal_msp.o ABSOLUTE
../Src/stm32f1xx_it.c 0x00000000 Number 0 stm32f1xx_it.o ABSOLUTE
../Src/system_stm32f1xx.c 0x00000000 Number 0 system_stm32f1xx.o ABSOLUTE
../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 entry11a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.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 entry8a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE
../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE
../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE
../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloca.o ABSOLUTE
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocr.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/mvars.c 0x00000000 Number 0 mvars.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE
../clib/microlib/printf/stubs.s 0x00000000 Number 0 stubs.o ABSOLUTE
../clib/microlib/stdio/streams.c 0x00000000 Number 0 stdout.o ABSOLUTE
../clib/microlib/string/memcpy.c 0x00000000 Number 0 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
../fplib/microlib/fpdiv.c 0x00000000 Number 0 ddiv.o ABSOLUTE
../fplib/microlib/fpepilogue.c 0x00000000 Number 0 depilogue.o ABSOLUTE
../fplib/microlib/fpfix.c 0x00000000 Number 0 dfixul.o ABSOLUTE
../fplib/microlib/fpmul.c 0x00000000 Number 0 dmul.o ABSOLUTE
..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c 0x00000000 Number 0 stm32f1xx_hal.o ABSOLUTE
..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c 0x00000000 Number 0 stm32f1xx_hal_cortex.o ABSOLUTE
..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c 0x00000000 Number 0 stm32f1xx_hal_dma.o ABSOLUTE
..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c 0x00000000 Number 0 stm32f1xx_hal_exti.o ABSOLUTE
..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c 0x00000000 Number 0 stm32f1xx_hal_flash.o ABSOLUTE
..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c 0x00000000 Number 0 stm32f1xx_hal_flash_ex.o ABSOLUTE
..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c 0x00000000 Number 0 stm32f1xx_hal_gpio.o ABSOLUTE
..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c 0x00000000 Number 0 stm32f1xx_hal_gpio_ex.o ABSOLUTE
..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c 0x00000000 Number 0 stm32f1xx_hal_pwr.o ABSOLUTE
..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c 0x00000000 Number 0 stm32f1xx_hal_rcc.o ABSOLUTE
..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c 0x00000000 Number 0 stm32f1xx_hal_rcc_ex.o ABSOLUTE
..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_spi.c 0x00000000 Number 0 stm32f1xx_hal_spi.o ABSOLUTE
..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c 0x00000000 Number 0 stm32f1xx_hal_tim.o ABSOLUTE
..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c 0x00000000 Number 0 stm32f1xx_hal_tim_ex.o ABSOLUTE
..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c 0x00000000 Number 0 stm32f1xx_hal_uart.o ABSOLUTE
..\Src\gpio.c 0x00000000 Number 0 gpio.o ABSOLUTE
..\Src\main.c 0x00000000 Number 0 main.o ABSOLUTE
..\Src\spi.c 0x00000000 Number 0 spi.o ABSOLUTE
..\Src\stm32f1xx_hal_msp.c 0x00000000 Number 0 stm32f1xx_hal_msp.o ABSOLUTE
..\Src\stm32f1xx_it.c 0x00000000 Number 0 stm32f1xx_it.o ABSOLUTE
..\Src\system_stm32f1xx.c 0x00000000 Number 0 system_stm32f1xx.o ABSOLUTE
..\Src\usart.c 0x00000000 Number 0 usart.o ABSOLUTE
..\User\Config\DEV_Config.c 0x00000000 Number 0 dev_config.o ABSOLUTE
..\User\Examples\EPD_3in52_test.c 0x00000000 Number 0 epd_3in52_test.o ABSOLUTE
..\User\Examples\ImageData.c 0x00000000 Number 0 imagedata.o ABSOLUTE
..\User\Fonts\font12.c 0x00000000 Number 0 font12.o ABSOLUTE
..\User\Fonts\font12CN.c 0x00000000 Number 0 font12cn.o ABSOLUTE
..\User\Fonts\font16.c 0x00000000 Number 0 font16.o ABSOLUTE
..\User\Fonts\font20.c 0x00000000 Number 0 font20.o ABSOLUTE
..\User\Fonts\font24.c 0x00000000 Number 0 font24.o ABSOLUTE
..\User\Fonts\font24CN.c 0x00000000 Number 0 font24cn.o ABSOLUTE
..\User\Fonts\font8.c 0x00000000 Number 0 font8.o ABSOLUTE
..\User\GUI\GUI_Paint.c 0x00000000 Number 0 gui_paint.o ABSOLUTE
..\User\e-Paper\EPD_3in52.c 0x00000000 Number 0 epd_3in52.o ABSOLUTE
..\\User\\Config\\DEV_Config.c 0x00000000 Number 0 dev_config.o ABSOLUTE
..\\User\\Examples\\EPD_3in52_test.c 0x00000000 Number 0 epd_3in52_test.o ABSOLUTE
..\\User\\GUI\\GUI_Paint.c 0x00000000 Number 0 gui_paint.o ABSOLUTE
..\\User\\e-Paper\\EPD_3in52.c 0x00000000 Number 0 epd_3in52.o ABSOLUTE
cdrcmple.s 0x00000000 Number 0 cdrcmple.o ABSOLUTE
dc.s 0x00000000 Number 0 dc.o ABSOLUTE
handlers.s 0x00000000 Number 0 handlers.o ABSOLUTE
init.s 0x00000000 Number 0 init.o ABSOLUTE
startup_stm32f103xe.s 0x00000000 Number 0 startup_stm32f103xe.o ABSOLUTE
RESET 0x08000000 Section 304 startup_stm32f103xe.o(RESET)
.ARM.Collect$$$$00000000 0x08000130 Section 0 entry.o(.ARM.Collect$$$$00000000)
.ARM.Collect$$$$00000001 0x08000130 Section 4 entry2.o(.ARM.Collect$$$$00000001)
.ARM.Collect$$$$00000004 0x08000134 Section 4 entry5.o(.ARM.Collect$$$$00000004)
.ARM.Collect$$$$00000008 0x08000138 Section 0 entry7b.o(.ARM.Collect$$$$00000008)
.ARM.Collect$$$$0000000A 0x08000138 Section 0 entry8b.o(.ARM.Collect$$$$0000000A)
.ARM.Collect$$$$0000000B 0x08000138 Section 8 entry9a.o(.ARM.Collect$$$$0000000B)
.ARM.Collect$$$$0000000D 0x08000140 Section 0 entry10a.o(.ARM.Collect$$$$0000000D)
.ARM.Collect$$$$0000000F 0x08000140 Section 0 entry11a.o(.ARM.Collect$$$$0000000F)
.ARM.Collect$$$$00002712 0x08000140 Section 4 entry2.o(.ARM.Collect$$$$00002712)
__lit__00000000 0x08000140 Data 4 entry2.o(.ARM.Collect$$$$00002712)
.text 0x08000144 Section 36 startup_stm32f103xe.o(.text)
.text 0x08000168 Section 0 main.o(.text)
.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_3in52_test.o(.text)
.text 0x08000794 Section 0 epd_3in52.o(.text)
.text 0x08000c60 Section 0 dev_config.o(.text)
.text 0x08000cc8 Section 0 gui_paint.o(.text)
.text 0x08001b74 Section 0 system_stm32f1xx.o(.text)
.text 0x08001c38 Section 0 stm32f1xx_hal_spi.o(.text)
SPI_WaitFlagStateUntilTimeout 0x08001d21 Thumb Code 210 stm32f1xx_hal_spi.o(.text)
SPI_EndRxTxTransaction 0x08001df3 Thumb Code 36 stm32f1xx_hal_spi.o(.text)
SPI_EndRxTransaction 0x08001fb3 Thumb Code 112 stm32f1xx_hal_spi.o(.text)
SPI_CloseTx_ISR 0x08002393 Thumb Code 130 stm32f1xx_hal_spi.o(.text)
SPI_TxISR_8BIT 0x08002415 Thumb Code 30 stm32f1xx_hal_spi.o(.text)
SPI_TxISR_16BIT 0x08002433 Thumb Code 30 stm32f1xx_hal_spi.o(.text)
SPI_CloseRx_ISR 0x080024f5 Thumb Code 76 stm32f1xx_hal_spi.o(.text)
SPI_RxISR_8BIT 0x08002541 Thumb Code 30 stm32f1xx_hal_spi.o(.text)
SPI_RxISR_16BIT 0x0800255f Thumb Code 30 stm32f1xx_hal_spi.o(.text)
SPI_CloseRxTx_ISR 0x0800257f Thumb Code 158 stm32f1xx_hal_spi.o(.text)
SPI_2linesTxISR_8BIT 0x0800261d Thumb Code 46 stm32f1xx_hal_spi.o(.text)
SPI_2linesRxISR_8BIT 0x0800264b Thumb Code 46 stm32f1xx_hal_spi.o(.text)
SPI_2linesTxISR_16BIT 0x08002679 Thumb Code 46 stm32f1xx_hal_spi.o(.text)
SPI_2linesRxISR_16BIT 0x080026a7 Thumb Code 46 stm32f1xx_hal_spi.o(.text)
SPI_DMAError 0x08002841 Thumb Code 34 stm32f1xx_hal_spi.o(.text)
SPI_DMATransmitCplt 0x08002863 Thumb Code 102 stm32f1xx_hal_spi.o(.text)
SPI_DMAHalfTransmitCplt 0x080028cb Thumb Code 10 stm32f1xx_hal_spi.o(.text)
SPI_DMAReceiveCplt 0x080029a5 Thumb Code 110 stm32f1xx_hal_spi.o(.text)
SPI_DMAHalfReceiveCplt 0x08002a15 Thumb Code 10 stm32f1xx_hal_spi.o(.text)
SPI_DMATransmitReceiveCplt 0x08002a1f Thumb Code 92 stm32f1xx_hal_spi.o(.text)
SPI_DMAHalfTransmitReceiveCplt 0x08002a7d Thumb Code 10 stm32f1xx_hal_spi.o(.text)
SPI_AbortRx_ISR 0x08002ccb Thumb Code 82 stm32f1xx_hal_spi.o(.text)
SPI_AbortTx_ISR 0x08002d1d Thumb Code 28 stm32f1xx_hal_spi.o(.text)
SPI_DMARxAbortCallback 0x08002e5d Thumb Code 98 stm32f1xx_hal_spi.o(.text)
SPI_DMATxAbortCallback 0x08002ebf Thumb Code 114 stm32f1xx_hal_spi.o(.text)
SPI_DMAAbortOnError 0x08003109 Thumb Code 16 stm32f1xx_hal_spi.o(.text)
.text 0x08003220 Section 0 stm32f1xx_hal.o(.text)
.text 0x080033a8 Section 0 stm32f1xx_hal_rcc.o(.text)
RCC_Delay 0x080034a3 Thumb Code 32 stm32f1xx_hal_rcc.o(.text)
.text 0x08003c70 Section 0 stm32f1xx_hal_gpio.o(.text)
.text 0x08004044 Section 0 stm32f1xx_hal_dma.o(.text)
DMA_SetConfig 0x08004153 Thumb Code 56 stm32f1xx_hal_dma.o(.text)
.text 0x08004c8c Section 0 stm32f1xx_hal_cortex.o(.text)
.text 0x08004eb0 Section 0 stm32f1xx_hal_uart.o(.text)
UART_SetConfig 0x08004eb1 Thumb Code 194 stm32f1xx_hal_uart.o(.text)
UART_WaitOnFlagUntilTimeout 0x08005191 Thumb Code 120 stm32f1xx_hal_uart.o(.text)
UART_EndRxTransfer 0x08005441 Thumb Code 28 stm32f1xx_hal_uart.o(.text)
UART_EndTxTransfer 0x0800545d Thumb Code 18 stm32f1xx_hal_uart.o(.text)
UART_DMAError 0x0800546f Thumb Code 74 stm32f1xx_hal_uart.o(.text)
UART_DMATxHalfCplt 0x080054bb Thumb Code 10 stm32f1xx_hal_uart.o(.text)
UART_DMATransmitCplt 0x080054c7 Thumb Code 48 stm32f1xx_hal_uart.o(.text)
UART_DMARxHalfCplt 0x08005583 Thumb Code 10 stm32f1xx_hal_uart.o(.text)
UART_DMAReceiveCplt 0x0800558f Thumb Code 62 stm32f1xx_hal_uart.o(.text)
UART_DMARxAbortCallback 0x080058c3 Thumb Code 44 stm32f1xx_hal_uart.o(.text)
UART_DMATxAbortCallback 0x080058ef Thumb Code 66 stm32f1xx_hal_uart.o(.text)
UART_DMATxOnlyAbortCallback 0x080059e5 Thumb Code 20 stm32f1xx_hal_uart.o(.text)
UART_DMARxOnlyAbortCallback 0x08005a59 Thumb Code 20 stm32f1xx_hal_uart.o(.text)
UART_EndTransmit_IT 0x08005ad5 Thumb Code 26 stm32f1xx_hal_uart.o(.text)
UART_Transmit_IT 0x08005aef Thumb Code 94 stm32f1xx_hal_uart.o(.text)
UART_DMAAbortOnError 0x08005b4d Thumb Code 16 stm32f1xx_hal_uart.o(.text)
UART_Receive_IT 0x08005b5d Thumb Code 146 stm32f1xx_hal_uart.o(.text)
.text 0x08005e4c Section 0 memseta.o(.text)
.text 0x08005e70 Section 0 uidiv.o(.text)
.text 0x08005e9c Section 36 init.o(.text)
i.__0printf$3 0x08005ec0 Section 0 printf3.o(i.__0printf$3)
i.__scatterload_copy 0x08005ee0 Section 14 handlers.o(i.__scatterload_copy)
i.__scatterload_null 0x08005eee Section 2 handlers.o(i.__scatterload_null)
i.__scatterload_zeroinit 0x08005ef0 Section 14 handlers.o(i.__scatterload_zeroinit)
i._printf_core 0x08005f00 Section 0 printf3.o(i._printf_core)
_printf_core 0x08005f01 Thumb Code 436 printf3.o(i._printf_core)
i.free 0x080060b8 Section 0 malloc.o(i.free)
i.malloc 0x08006108 Section 0 malloc.o(i.malloc)
.constdata 0x08006174 Section 10800 imagedata.o(.constdata)
.constdata 0x08008ba4 Section 714 epd_3in52.o(.constdata)
EPD_3IN52_lut_R20_GC 0x08008ba4 Data 56 epd_3in52.o(.constdata)
EPD_3IN52_lut_R21_GC 0x08008bdc Data 42 epd_3in52.o(.constdata)
EPD_3IN52_lut_R22_GC 0x08008c06 Data 56 epd_3in52.o(.constdata)
EPD_3IN52_lut_R23_GC 0x08008c3e Data 56 epd_3in52.o(.constdata)
EPD_3IN52_lut_R24_GC 0x08008c76 Data 42 epd_3in52.o(.constdata)
EPD_3IN52_lut_R20_DU 0x08008ca0 Data 56 epd_3in52.o(.constdata)
EPD_3IN52_lut_R21_DU 0x08008cd8 Data 42 epd_3in52.o(.constdata)
EPD_3IN52_lut_R22_DU 0x08008d02 Data 56 epd_3in52.o(.constdata)
EPD_3IN52_lut_R23_DU 0x08008d3a Data 56 epd_3in52.o(.constdata)
EPD_3IN52_lut_R24_DU 0x08008d72 Data 42 epd_3in52.o(.constdata)
EPD_3IN52_lut_vcom 0x08008d9c Data 42 epd_3in52.o(.constdata)
EPD_3IN52_lut_ww 0x08008dc6 Data 42 epd_3in52.o(.constdata)
EPD_3IN52_lut_bw 0x08008df0 Data 42 epd_3in52.o(.constdata)
EPD_3IN52_lut_wb 0x08008e1a Data 42 epd_3in52.o(.constdata)
EPD_3IN52_lut_bb 0x08008e44 Data 42 epd_3in52.o(.constdata)
.constdata 0x08008e6e Section 1140 font12.o(.constdata)
.constdata 0x080092e2 Section 3040 font16.o(.constdata)
.constdata 0x08009ec2 Section 16 system_stm32f1xx.o(.constdata)
.constdata 0x08009ed2 Section 8 system_stm32f1xx.o(.constdata)
.conststring 0x08009edc Section 233 gui_paint.o(.conststring)
.data 0x20000000 Section 1 epd_3in52.o(.data)
.data 0x20000004 Section 8 font12.o(.data)
.data 0x2000000c Section 8 font16.o(.data)
.data 0x20000014 Section 4 system_stm32f1xx.o(.data)
.data 0x20000018 Section 12 stm32f1xx_hal.o(.data)
.data 0x20000024 Section 4 stdout.o(.data)
.data 0x20000028 Section 4 mvars.o(.data)
.data 0x2000002c Section 4 mvars.o(.data)
.bss 0x20000030 Section 88 spi.o(.bss)
.bss 0x20000088 Section 64 usart.o(.bss)
.bss 0x200000c8 Section 24 gui_paint.o(.bss)
HEAP 0x200000e0 Section 49152 startup_stm32f103xe.o(HEAP)
STACK 0x2000c0e0 Section 4096 startup_stm32f103xe.o(STACK)
Global Symbols
Symbol Name Value Ov Type Size Object(Section)
BuildAttributes$$THM_ISAv4$P$D$K$B$S$PE$A:L22UL41UL21$X:L11$S22US41US21$IEEE1$IW$USESV6$~STKCKD$USESV7$~SHL$OTIME$ROPI$EBA8$MICROLIB$REQ8$PRES8$EABIv2 0x00000000 Number 0 anon$$obj.o ABSOLUTE
__ARM_use_no_argv 0x00000000 Number 0 main.o ABSOLUTE
_printf_a 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_c 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_charcount 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_d 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_e 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_f 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_flags 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_fp_dec 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_fp_hex 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_g 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_i 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_int_dec 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_l 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_lc 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_ll 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_lld 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_lli 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_llo 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_llu 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_llx 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_longlong_dec 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_longlong_hex 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_longlong_oct 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_ls 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_mbtowc 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_n 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_o 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_p 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_percent 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_pre_padding 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_return_value 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_s 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_sizespec 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_str 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_truncate_signed 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_truncate_unsigned 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_u 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_wc 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_wctomb 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_widthprec 0x00000000 Number 0 stubs.o ABSOLUTE
_printf_x 0x00000000 Number 0 stubs.o ABSOLUTE
__cpp_initialize__aeabi_ - Undefined Weak Reference
__cxa_finalize - Undefined Weak Reference
__decompress - Undefined Weak Reference
_clock_init - Undefined Weak Reference
_microlib_exit - Undefined Weak Reference
__Vectors_Size 0x00000130 Number 0 startup_stm32f103xe.o ABSOLUTE
__Vectors 0x08000000 Data 4 startup_stm32f103xe.o(RESET)
__Vectors_End 0x08000130 Data 0 startup_stm32f103xe.o(RESET)
__main 0x08000131 Thumb Code 0 entry.o(.ARM.Collect$$$$00000000)
_main_stk 0x08000131 Thumb Code 0 entry2.o(.ARM.Collect$$$$00000001)
_main_scatterload 0x08000135 Thumb Code 0 entry5.o(.ARM.Collect$$$$00000004)
__main_after_scatterload 0x08000139 Thumb Code 0 entry5.o(.ARM.Collect$$$$00000004)
_main_clock 0x08000139 Thumb Code 0 entry7b.o(.ARM.Collect$$$$00000008)
_main_cpp_init 0x08000139 Thumb Code 0 entry8b.o(.ARM.Collect$$$$0000000A)
_main_init 0x08000139 Thumb Code 0 entry9a.o(.ARM.Collect$$$$0000000B)
__rt_final_cpp 0x08000141 Thumb Code 0 entry10a.o(.ARM.Collect$$$$0000000D)
__rt_final_exit 0x08000141 Thumb Code 0 entry11a.o(.ARM.Collect$$$$0000000F)
Reset_Handler 0x08000145 Thumb Code 8 startup_stm32f103xe.o(.text)
ADC1_2_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
ADC3_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
CAN1_RX1_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
CAN1_SCE_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
DMA1_Channel1_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
DMA1_Channel2_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
DMA1_Channel3_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
DMA1_Channel4_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
DMA1_Channel5_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
DMA1_Channel6_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
DMA1_Channel7_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
DMA2_Channel1_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
DMA2_Channel2_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
DMA2_Channel3_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
DMA2_Channel4_5_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
EXTI0_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
EXTI15_10_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
EXTI1_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
EXTI2_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
EXTI3_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
EXTI4_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
EXTI9_5_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
FLASH_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
FSMC_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
I2C1_ER_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
I2C1_EV_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
I2C2_ER_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
I2C2_EV_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
PVD_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
RCC_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
RTC_Alarm_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
RTC_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
SDIO_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
SPI1_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
SPI2_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
SPI3_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
TAMPER_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
TIM1_BRK_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
TIM1_CC_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
TIM1_TRG_COM_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
TIM1_UP_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
TIM2_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
TIM3_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
TIM4_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
TIM5_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
TIM6_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
TIM7_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
TIM8_BRK_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
TIM8_CC_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
TIM8_TRG_COM_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
TIM8_UP_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
UART4_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
UART5_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
USART1_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
USART2_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
USART3_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
USBWakeUp_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
USB_HP_CAN1_TX_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
USB_LP_CAN1_RX0_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
WWDG_IRQHandler 0x0800015f Thumb Code 0 startup_stm32f103xe.o(.text)
Error_Handler 0x08000169 Thumb Code 8 main.o(.text)
SystemClock_Config 0x08000171 Thumb Code 88 main.o(.text)
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_test 0x08000461 Thumb Code 514 epd_3in52_test.o(.text)
EPD_3IN52_Reset 0x08000795 Thumb Code 56 epd_3in52.o(.text)
EPD_3IN52_SendCommand 0x080007cd Thumb Code 46 epd_3in52.o(.text)
EPD_3IN52_SendData 0x080007fb Thumb Code 46 epd_3in52.o(.text)
EPD_3IN52_ReadBusy 0x08000829 Thumb Code 38 epd_3in52.o(.text)
EPD_3IN52_lut 0x0800084f Thumb Code 132 epd_3in52.o(.text)
EPD_3IN52_refresh 0x080008d3 Thumb Code 28 epd_3in52.o(.text)
EPD_3IN52_lut_GC 0x080008ef Thumb Code 196 epd_3in52.o(.text)
EPD_3IN52_lut_DU 0x080009b3 Thumb Code 196 epd_3in52.o(.text)
EPD_3IN52_Init 0x08000a77 Thumb Code 176 epd_3in52.o(.text)
EPD_3IN52_display 0x08000b27 Thumb Code 34 epd_3in52.o(.text)
EPD_3IN52_display_NUM 0x08000b49 Thumb Code 226 epd_3in52.o(.text)
EPD_3IN52_Clear 0x08000c2b Thumb Code 38 epd_3in52.o(.text)
EPD_3IN52_sleep 0x08000c51 Thumb Code 16 epd_3in52.o(.text)
DEV_SPI_WriteByte 0x08000c61 Thumb Code 18 dev_config.o(.text)
DEV_Module_Init 0x08000c73 Thumb Code 38 dev_config.o(.text)
DEV_Module_Exit 0x08000c99 Thumb Code 38 dev_config.o(.text)
Paint_NewImage 0x08000cc9 Thumb Code 56 gui_paint.o(.text)
Paint_SelectImage 0x08000d01 Thumb Code 6 gui_paint.o(.text)
Paint_SetRotate 0x08000d07 Thumb Code 44 gui_paint.o(.text)
Paint_SetScale 0x08000d33 Thumb Code 80 gui_paint.o(.text)
Paint_SetMirroring 0x08000d83 Thumb Code 62 gui_paint.o(.text)
Paint_SetPixel 0x08000dc1 Thumb Code 238 gui_paint.o(.text)
Paint_Clear 0x08000eaf Thumb Code 156 gui_paint.o(.text)
Paint_ClearWindows 0x08000f4b Thumb Code 52 gui_paint.o(.text)
Paint_DrawPoint 0x08000f7f Thumb Code 180 gui_paint.o(.text)
Paint_DrawLine 0x08001033 Thumb Code 662 gui_paint.o(.text)
Paint_DrawRectangle 0x080012c9 Thumb Code 170 gui_paint.o(.text)
Paint_DrawCircle 0x08001373 Thumb Code 528 gui_paint.o(.text)
Paint_DrawChar 0x08001583 Thumb Code 172 gui_paint.o(.text)
Paint_DrawString_EN 0x0800162f Thumb Code 116 gui_paint.o(.text)
Paint_DrawString_CN 0x080016a3 Thumb Code 518 gui_paint.o(.text)
Paint_DrawNum 0x080018a9 Thumb Code 140 gui_paint.o(.text)
Paint_DrawTime 0x08001935 Thumb Code 282 gui_paint.o(.text)
Paint_DrawBitMap 0x08001a4f Thumb Code 46 gui_paint.o(.text)
Paint_DrawBitMap_Paste 0x08001a7d Thumb Code 110 gui_paint.o(.text)
Paint_DrawBitMap_Block 0x08001aeb Thumb Code 54 gui_paint.o(.text)
SystemInit 0x08001b75 Thumb Code 60 system_stm32f1xx.o(.text)
SystemCoreClockUpdate 0x08001bb1 Thumb Code 108 system_stm32f1xx.o(.text)
HAL_SPI_Init 0x08001c3b Thumb Code 180 stm32f1xx_hal_spi.o(.text)
HAL_SPI_DeInit 0x08001cf1 Thumb Code 48 stm32f1xx_hal_spi.o(.text)
HAL_SPI_Transmit 0x08001e17 Thumb Code 412 stm32f1xx_hal_spi.o(.text)
HAL_SPI_TransmitReceive 0x08002023 Thumb Code 510 stm32f1xx_hal_spi.o(.text)
HAL_SPI_Receive 0x08002221 Thumb Code 366 stm32f1xx_hal_spi.o(.text)
HAL_SPI_TxCpltCallback 0x0800238f Thumb Code 2 stm32f1xx_hal_spi.o(.text)
HAL_SPI_ErrorCallback 0x08002391 Thumb Code 2 stm32f1xx_hal_spi.o(.text)
HAL_SPI_Transmit_IT 0x08002451 Thumb Code 162 stm32f1xx_hal_spi.o(.text)
HAL_SPI_RxCpltCallback 0x080024f3 Thumb Code 2 stm32f1xx_hal_spi.o(.text)
HAL_SPI_TxRxCpltCallback 0x0800257d Thumb Code 2 stm32f1xx_hal_spi.o(.text)
HAL_SPI_TransmitReceive_IT 0x080026d5 Thumb Code 188 stm32f1xx_hal_spi.o(.text)
HAL_SPI_Receive_IT 0x08002791 Thumb Code 176 stm32f1xx_hal_spi.o(.text)
HAL_SPI_TxHalfCpltCallback 0x080028c9 Thumb Code 2 stm32f1xx_hal_spi.o(.text)
HAL_SPI_Transmit_DMA 0x080028d5 Thumb Code 208 stm32f1xx_hal_spi.o(.text)
HAL_SPI_RxHalfCpltCallback 0x08002a13 Thumb Code 2 stm32f1xx_hal_spi.o(.text)
HAL_SPI_TxRxHalfCpltCallback 0x08002a7b Thumb Code 2 stm32f1xx_hal_spi.o(.text)
HAL_SPI_TransmitReceive_DMA 0x08002a87 Thumb Code 302 stm32f1xx_hal_spi.o(.text)
HAL_SPI_Receive_DMA 0x08002bb5 Thumb Code 278 stm32f1xx_hal_spi.o(.text)
HAL_SPI_Abort 0x08002d39 Thumb Code 290 stm32f1xx_hal_spi.o(.text)
HAL_SPI_AbortCpltCallback 0x08002e5b Thumb Code 2 stm32f1xx_hal_spi.o(.text)
HAL_SPI_Abort_IT 0x08002f31 Thumb Code 328 stm32f1xx_hal_spi.o(.text)
HAL_SPI_DMAPause 0x08003079 Thumb Code 38 stm32f1xx_hal_spi.o(.text)
HAL_SPI_DMAResume 0x0800309f Thumb Code 38 stm32f1xx_hal_spi.o(.text)
HAL_SPI_DMAStop 0x080030c5 Thumb Code 68 stm32f1xx_hal_spi.o(.text)
HAL_SPI_IRQHandler 0x08003119 Thumb Code 250 stm32f1xx_hal_spi.o(.text)
HAL_SPI_GetState 0x08003213 Thumb Code 6 stm32f1xx_hal_spi.o(.text)
HAL_SPI_GetError 0x08003219 Thumb Code 4 stm32f1xx_hal_spi.o(.text)
HAL_InitTick 0x08003223 Thumb Code 58 stm32f1xx_hal.o(.text)
HAL_Init 0x0800325d Thumb Code 32 stm32f1xx_hal.o(.text)
HAL_MspDeInit 0x0800327d Thumb Code 2 stm32f1xx_hal.o(.text)
HAL_DeInit 0x0800327f Thumb Code 26 stm32f1xx_hal.o(.text)
HAL_IncTick 0x08003299 Thumb Code 12 stm32f1xx_hal.o(.text)
HAL_GetTick 0x080032a5 Thumb Code 6 stm32f1xx_hal.o(.text)
HAL_GetTickPrio 0x080032ab Thumb Code 6 stm32f1xx_hal.o(.text)
HAL_SetTickFreq 0x080032b1 Thumb Code 30 stm32f1xx_hal.o(.text)
HAL_GetTickFreq 0x080032cf Thumb Code 6 stm32f1xx_hal.o(.text)
HAL_Delay 0x080032d5 Thumb Code 34 stm32f1xx_hal.o(.text)
HAL_SuspendTick 0x080032f7 Thumb Code 14 stm32f1xx_hal.o(.text)
HAL_ResumeTick 0x08003305 Thumb Code 14 stm32f1xx_hal.o(.text)
HAL_GetHalVersion 0x08003313 Thumb Code 4 stm32f1xx_hal.o(.text)
HAL_GetREVID 0x08003317 Thumb Code 8 stm32f1xx_hal.o(.text)
HAL_GetDEVID 0x0800331f Thumb Code 10 stm32f1xx_hal.o(.text)
HAL_GetUIDw0 0x08003329 Thumb Code 6 stm32f1xx_hal.o(.text)
HAL_GetUIDw1 0x0800332f Thumb Code 6 stm32f1xx_hal.o(.text)
HAL_GetUIDw2 0x08003335 Thumb Code 6 stm32f1xx_hal.o(.text)
HAL_DBGMCU_EnableDBGSleepMode 0x0800333b Thumb Code 12 stm32f1xx_hal.o(.text)
HAL_DBGMCU_DisableDBGSleepMode 0x08003347 Thumb Code 12 stm32f1xx_hal.o(.text)
HAL_DBGMCU_EnableDBGStopMode 0x08003353 Thumb Code 12 stm32f1xx_hal.o(.text)
HAL_DBGMCU_DisableDBGStopMode 0x0800335f Thumb Code 12 stm32f1xx_hal.o(.text)
HAL_DBGMCU_EnableDBGStandbyMode 0x0800336b Thumb Code 12 stm32f1xx_hal.o(.text)
HAL_DBGMCU_DisableDBGStandbyMode 0x08003377 Thumb Code 12 stm32f1xx_hal.o(.text)
HAL_RCC_DeInit 0x080033a9 Thumb Code 250 stm32f1xx_hal_rcc.o(.text)
HAL_RCC_OscConfig 0x080034c3 Thumb Code 1080 stm32f1xx_hal_rcc.o(.text)
HAL_RCC_GetSysClockFreq 0x080038fb Thumb Code 88 stm32f1xx_hal_rcc.o(.text)
HAL_RCC_ClockConfig 0x08003953 Thumb Code 364 stm32f1xx_hal_rcc.o(.text)
HAL_RCC_MCOConfig 0x08003abf Thumb Code 64 stm32f1xx_hal_rcc.o(.text)
HAL_RCC_EnableCSS 0x08003aff Thumb Code 8 stm32f1xx_hal_rcc.o(.text)
HAL_RCC_DisableCSS 0x08003b07 Thumb Code 8 stm32f1xx_hal_rcc.o(.text)
HAL_RCC_GetHCLKFreq 0x08003b0f Thumb Code 6 stm32f1xx_hal_rcc.o(.text)
HAL_RCC_GetPCLK1Freq 0x08003b15 Thumb Code 22 stm32f1xx_hal_rcc.o(.text)
HAL_RCC_GetPCLK2Freq 0x08003b2b Thumb Code 22 stm32f1xx_hal_rcc.o(.text)
HAL_RCC_GetOscConfig 0x08003b41 Thumb Code 168 stm32f1xx_hal_rcc.o(.text)
HAL_RCC_GetClockConfig 0x08003be9 Thumb Code 52 stm32f1xx_hal_rcc.o(.text)
HAL_RCC_CSSCallback 0x08003c1d Thumb Code 2 stm32f1xx_hal_rcc.o(.text)
HAL_RCC_NMI_IRQHandler 0x08003c1f Thumb Code 22 stm32f1xx_hal_rcc.o(.text)
HAL_GPIO_Init 0x08003c71 Thumb Code 524 stm32f1xx_hal_gpio.o(.text)
HAL_GPIO_DeInit 0x08003e7d Thumb Code 320 stm32f1xx_hal_gpio.o(.text)
HAL_GPIO_ReadPin 0x08003fbd Thumb Code 14 stm32f1xx_hal_gpio.o(.text)
HAL_GPIO_WritePin 0x08003fcb Thumb Code 14 stm32f1xx_hal_gpio.o(.text)
HAL_GPIO_TogglePin 0x08003fd9 Thumb Code 16 stm32f1xx_hal_gpio.o(.text)
HAL_GPIO_LockPin 0x08003fe9 Thumb Code 42 stm32f1xx_hal_gpio.o(.text)
HAL_GPIO_EXTI_Callback 0x08004013 Thumb Code 2 stm32f1xx_hal_gpio.o(.text)
HAL_GPIO_EXTI_IRQHandler 0x08004015 Thumb Code 18 stm32f1xx_hal_gpio.o(.text)
HAL_DMA_Init 0x08004045 Thumb Code 144 stm32f1xx_hal_dma.o(.text)
HAL_DMA_DeInit 0x080040d5 Thumb Code 126 stm32f1xx_hal_dma.o(.text)
HAL_DMA_Start 0x0800418b Thumb Code 88 stm32f1xx_hal_dma.o(.text)
HAL_DMA_Start_IT 0x080041e3 Thumb Code 124 stm32f1xx_hal_dma.o(.text)
HAL_DMA_Abort 0x0800425f Thumb Code 72 stm32f1xx_hal_dma.o(.text)
HAL_DMA_Abort_IT 0x080042a7 Thumb Code 318 stm32f1xx_hal_dma.o(.text)
HAL_DMA_PollForTransfer 0x080043e5 Thumb Code 1316 stm32f1xx_hal_dma.o(.text)
HAL_DMA_IRQHandler 0x08004909 Thumb Code 672 stm32f1xx_hal_dma.o(.text)
HAL_DMA_RegisterCallback 0x08004ba9 Thumb Code 80 stm32f1xx_hal_dma.o(.text)
HAL_DMA_UnRegisterCallback 0x08004bf9 Thumb Code 86 stm32f1xx_hal_dma.o(.text)
HAL_DMA_GetState 0x08004c4f Thumb Code 6 stm32f1xx_hal_dma.o(.text)
HAL_DMA_GetError 0x08004c55 Thumb Code 4 stm32f1xx_hal_dma.o(.text)
HAL_NVIC_SetPriorityGrouping 0x08004c8d Thumb Code 30 stm32f1xx_hal_cortex.o(.text)
HAL_NVIC_SetPriority 0x08004cab Thumb Code 98 stm32f1xx_hal_cortex.o(.text)
HAL_NVIC_EnableIRQ 0x08004d0d Thumb Code 28 stm32f1xx_hal_cortex.o(.text)
HAL_NVIC_DisableIRQ 0x08004d29 Thumb Code 36 stm32f1xx_hal_cortex.o(.text)
HAL_NVIC_SystemReset 0x08004d4d Thumb Code 26 stm32f1xx_hal_cortex.o(.text)
HAL_SYSTICK_Config 0x08004d67 Thumb Code 36 stm32f1xx_hal_cortex.o(.text)
HAL_NVIC_GetPriorityGrouping 0x08004d8b Thumb Code 10 stm32f1xx_hal_cortex.o(.text)
HAL_NVIC_GetPriority 0x08004d95 Thumb Code 94 stm32f1xx_hal_cortex.o(.text)
HAL_NVIC_SetPendingIRQ 0x08004df3 Thumb Code 28 stm32f1xx_hal_cortex.o(.text)
HAL_NVIC_GetPendingIRQ 0x08004e0f Thumb Code 42 stm32f1xx_hal_cortex.o(.text)
HAL_NVIC_ClearPendingIRQ 0x08004e39 Thumb Code 28 stm32f1xx_hal_cortex.o(.text)
HAL_NVIC_GetActive 0x08004e55 Thumb Code 42 stm32f1xx_hal_cortex.o(.text)
HAL_SYSTICK_CLKSourceConfig 0x08004e7f Thumb Code 28 stm32f1xx_hal_cortex.o(.text)
HAL_SYSTICK_Callback 0x08004e9b Thumb Code 2 stm32f1xx_hal_cortex.o(.text)
HAL_SYSTICK_IRQHandler 0x08004e9d Thumb Code 8 stm32f1xx_hal_cortex.o(.text)
HAL_UART_Init 0x08004f75 Thumb Code 100 stm32f1xx_hal_uart.o(.text)
HAL_HalfDuplex_Init 0x08004fd9 Thumb Code 110 stm32f1xx_hal_uart.o(.text)
HAL_LIN_Init 0x08005047 Thumb Code 130 stm32f1xx_hal_uart.o(.text)
HAL_MultiProcessor_Init 0x080050c9 Thumb Code 146 stm32f1xx_hal_uart.o(.text)
HAL_UART_DeInit 0x0800515d Thumb Code 52 stm32f1xx_hal_uart.o(.text)
HAL_UART_Transmit 0x08005209 Thumb Code 202 stm32f1xx_hal_uart.o(.text)
HAL_UART_Receive 0x080052d3 Thumb Code 212 stm32f1xx_hal_uart.o(.text)
HAL_UART_Transmit_IT 0x080053a7 Thumb Code 66 stm32f1xx_hal_uart.o(.text)
HAL_UART_Receive_IT 0x080053e9 Thumb Code 86 stm32f1xx_hal_uart.o(.text)
HAL_UART_ErrorCallback 0x0800543f Thumb Code 2 stm32f1xx_hal_uart.o(.text)
HAL_UART_TxHalfCpltCallback 0x080054b9 Thumb Code 2 stm32f1xx_hal_uart.o(.text)
HAL_UART_TxCpltCallback 0x080054c5 Thumb Code 2 stm32f1xx_hal_uart.o(.text)
HAL_UART_Transmit_DMA 0x080054f7 Thumb Code 138 stm32f1xx_hal_uart.o(.text)
HAL_UART_RxHalfCpltCallback 0x08005581 Thumb Code 2 stm32f1xx_hal_uart.o(.text)
HAL_UART_RxCpltCallback 0x0800558d Thumb Code 2 stm32f1xx_hal_uart.o(.text)
HAL_UART_Receive_DMA 0x080055cd Thumb Code 150 stm32f1xx_hal_uart.o(.text)
HAL_UART_DMAPause 0x08005663 Thumb Code 102 stm32f1xx_hal_uart.o(.text)
HAL_UART_DMAResume 0x080056c9 Thumb Code 98 stm32f1xx_hal_uart.o(.text)
HAL_UART_DMAStop 0x0800572b Thumb Code 88 stm32f1xx_hal_uart.o(.text)
HAL_UART_Abort 0x08005783 Thumb Code 148 stm32f1xx_hal_uart.o(.text)
HAL_UART_AbortTransmit 0x08005817 Thumb Code 80 stm32f1xx_hal_uart.o(.text)
HAL_UART_AbortReceive 0x08005867 Thumb Code 90 stm32f1xx_hal_uart.o(.text)
HAL_UART_AbortCpltCallback 0x080058c1 Thumb Code 2 stm32f1xx_hal_uart.o(.text)
HAL_UART_Abort_IT 0x08005931 Thumb Code 178 stm32f1xx_hal_uart.o(.text)
HAL_UART_AbortTransmitCpltCallback 0x080059e3 Thumb Code 2 stm32f1xx_hal_uart.o(.text)
HAL_UART_AbortTransmit_IT 0x080059f9 Thumb Code 94 stm32f1xx_hal_uart.o(.text)
HAL_UART_AbortReceiveCpltCallback 0x08005a57 Thumb Code 2 stm32f1xx_hal_uart.o(.text)
HAL_UART_AbortReceive_IT 0x08005a6d Thumb Code 104 stm32f1xx_hal_uart.o(.text)
HAL_UART_IRQHandler 0x08005bef Thumb Code 312 stm32f1xx_hal_uart.o(.text)
HAL_LIN_SendBreak 0x08005d27 Thumb Code 70 stm32f1xx_hal_uart.o(.text)
HAL_MultiProcessor_EnterMuteMode 0x08005d6d Thumb Code 50 stm32f1xx_hal_uart.o(.text)
HAL_MultiProcessor_ExitMuteMode 0x08005d9f Thumb Code 50 stm32f1xx_hal_uart.o(.text)
HAL_HalfDuplex_EnableTransmitter 0x08005dd1 Thumb Code 54 stm32f1xx_hal_uart.o(.text)
HAL_HalfDuplex_EnableReceiver 0x08005e07 Thumb Code 54 stm32f1xx_hal_uart.o(.text)
HAL_UART_GetState 0x08005e3d Thumb Code 12 stm32f1xx_hal_uart.o(.text)
HAL_UART_GetError 0x08005e49 Thumb Code 4 stm32f1xx_hal_uart.o(.text)
__aeabi_memset 0x08005e4d Thumb Code 14 memseta.o(.text)
__aeabi_memset4 0x08005e4d Thumb Code 0 memseta.o(.text)
__aeabi_memset8 0x08005e4d Thumb Code 0 memseta.o(.text)
__aeabi_memclr 0x08005e5b Thumb Code 4 memseta.o(.text)
__aeabi_memclr4 0x08005e5b Thumb Code 0 memseta.o(.text)
__aeabi_memclr8 0x08005e5b Thumb Code 0 memseta.o(.text)
_memset$wrapper 0x08005e5f Thumb Code 18 memseta.o(.text)
__aeabi_uidiv 0x08005e71 Thumb Code 0 uidiv.o(.text)
__aeabi_uidivmod 0x08005e71 Thumb Code 44 uidiv.o(.text)
__scatterload 0x08005e9d Thumb Code 28 init.o(.text)
__scatterload_rt2 0x08005e9d Thumb Code 0 init.o(.text)
__0printf$3 0x08005ec1 Thumb Code 22 printf3.o(i.__0printf$3)
__1printf$3 0x08005ec1 Thumb Code 0 printf3.o(i.__0printf$3)
__2printf 0x08005ec1 Thumb Code 0 printf3.o(i.__0printf$3)
__scatterload_copy 0x08005ee1 Thumb Code 14 handlers.o(i.__scatterload_copy)
__scatterload_null 0x08005eef Thumb Code 2 handlers.o(i.__scatterload_null)
__scatterload_zeroinit 0x08005ef1 Thumb Code 14 handlers.o(i.__scatterload_zeroinit)
free 0x080060b9 Thumb Code 76 malloc.o(i.free)
malloc 0x08006109 Thumb Code 92 malloc.o(i.malloc)
gImage_3in52 0x08006174 Data 10800 imagedata.o(.constdata)
Font12_Table 0x08008e6e Data 1140 font12.o(.constdata)
Font16_Table 0x080092e2 Data 3040 font16.o(.constdata)
AHBPrescTable 0x08009ec2 Data 16 system_stm32f1xx.o(.constdata)
APBPrescTable 0x08009ed2 Data 8 system_stm32f1xx.o(.constdata)
Region$$Table$$Base 0x08009fc8 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x08009fe8 Number 0 anon$$obj.o(Region$$Table)
EPD_3IN52_Flag 0x20000000 Data 1 epd_3in52.o(.data)
Font12 0x20000004 Data 8 font12.o(.data)
Font16 0x2000000c Data 8 font16.o(.data)
SystemCoreClock 0x20000014 Data 4 system_stm32f1xx.o(.data)
uwTickFreq 0x20000018 Data 1 stm32f1xx_hal.o(.data)
uwTickPrio 0x2000001c Data 4 stm32f1xx_hal.o(.data)
uwTick 0x20000020 Data 4 stm32f1xx_hal.o(.data)
__stdout 0x20000024 Data 4 stdout.o(.data)
__microlib_freelist 0x20000028 Data 4 mvars.o(.data)
__microlib_freelist_initialised 0x2000002c Data 4 mvars.o(.data)
hspi1 0x20000030 Data 88 spi.o(.bss)
huart1 0x20000088 Data 64 usart.o(.bss)
Paint 0x200000c8 Data 24 gui_paint.o(.bss)
__heap_base 0x200000e0 Data 0 startup_stm32f103xe.o(HEAP)
__heap_limit 0x2000c0e0 Data 0 startup_stm32f103xe.o(HEAP)
__initial_sp 0x2000d0e0 Data 0 startup_stm32f103xe.o(STACK)
==============================================================================
Memory Map of the image
Image Entry point : 0x08000131
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x0000a018, Max: 0x00080000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00009fe8, 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 970 * .ARM.Collect$$$$00000000 mc_w.l(entry.o)
0x08000130 0x08000130 0x00000004 Code RO 1266 .ARM.Collect$$$$00000001 mc_w.l(entry2.o)
0x08000134 0x08000134 0x00000004 Code RO 1269 .ARM.Collect$$$$00000004 mc_w.l(entry5.o)
0x08000138 0x08000138 0x00000000 Code RO 1271 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o)
0x08000138 0x08000138 0x00000000 Code RO 1273 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o)
0x08000138 0x08000138 0x00000008 Code RO 1274 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o)
0x08000140 0x08000140 0x00000000 Code RO 1276 .ARM.Collect$$$$0000000D mc_w.l(entry10a.o)
0x08000140 0x08000140 0x00000000 Code RO 1278 .ARM.Collect$$$$0000000F mc_w.l(entry11a.o)
0x08000140 0x08000140 0x00000004 Code RO 1267 .ARM.Collect$$$$00002712 mc_w.l(entry2.o)
0x08000144 0x08000144 0x00000024 Code RO 4 .text startup_stm32f103xe.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 0x00000334 Code RO 354 .text epd_3in52_test.o
0x08000794 0x08000794 0x000004cc Code RO 385 .text epd_3in52.o
0x08000c60 0x08000c60 0x00000068 Code RO 417 .text dev_config.o
0x08000cc8 0x08000cc8 0x00000eac Code RO 442 .text gui_paint.o
0x08001b74 0x08001b74 0x000000c4 Code RO 579 .text system_stm32f1xx.o
0x08001c38 0x08001c38 0x000015e8 Code RO 635 .text stm32f1xx_hal_spi.o
0x08003220 0x08003220 0x00000188 Code RO 659 .text stm32f1xx_hal.o
0x080033a8 0x080033a8 0x000008c8 Code RO 689 .text stm32f1xx_hal_rcc.o
0x08003c70 0x08003c70 0x000003d4 Code RO 737 .text stm32f1xx_hal_gpio.o
0x08004044 0x08004044 0x00000c48 Code RO 761 .text stm32f1xx_hal_dma.o
0x08004c8c 0x08004c8c 0x00000224 Code RO 785 .text stm32f1xx_hal_cortex.o
0x08004eb0 0x08004eb0 0x00000f9c Code RO 949 .text stm32f1xx_hal_uart.o
0x08005e4c 0x08005e4c 0x00000024 Code RO 975 .text mc_w.l(memseta.o)
0x08005e70 0x08005e70 0x0000002c Code RO 1281 .text mc_w.l(uidiv.o)
0x08005e9c 0x08005e9c 0x00000024 Code RO 1302 .text mc_w.l(init.o)
0x08005ec0 0x08005ec0 0x00000020 Code RO 1066 i.__0printf$3 mc_w.l(printf3.o)
0x08005ee0 0x08005ee0 0x0000000e Code RO 1312 i.__scatterload_copy mc_w.l(handlers.o)
0x08005eee 0x08005eee 0x00000002 Code RO 1313 i.__scatterload_null mc_w.l(handlers.o)
0x08005ef0 0x08005ef0 0x0000000e Code RO 1314 i.__scatterload_zeroinit mc_w.l(handlers.o)
0x08005efe 0x08005efe 0x00000002 PAD
0x08005f00 0x08005f00 0x000001b8 Code RO 1073 i._printf_core mc_w.l(printf3.o)
0x080060b8 0x080060b8 0x00000050 Code RO 1238 i.free mc_w.l(malloc.o)
0x08006108 0x08006108 0x0000006c Code RO 1239 i.malloc mc_w.l(malloc.o)
0x08006174 0x08006174 0x00002a30 Data RO 319 .constdata imagedata.o
0x08008ba4 0x08008ba4 0x000002ca Data RO 386 .constdata epd_3in52.o
0x08008e6e 0x08008e6e 0x00000474 Data RO 492 .constdata font12.o
0x080092e2 0x080092e2 0x00000be0 Data RO 520 .constdata font16.o
0x08009ec2 0x08009ec2 0x00000010 Data RO 580 .constdata system_stm32f1xx.o
0x08009ed2 0x08009ed2 0x00000008 Data RO 581 .constdata system_stm32f1xx.o
0x08009eda 0x08009eda 0x00000002 PAD
0x08009edc 0x08009edc 0x000000e9 Data RO 444 .conststring gui_paint.o
0x08009fc5 0x08009fc5 0x00000003 PAD
0x08009fc8 0x08009fc8 0x00000020 Data RO 1310 Region$$Table anon$$obj.o
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08009fe8, Size: 0x0000d0e0, Max: 0x00010000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x20000000 0x08009fe8 0x00000001 Data RW 387 .data epd_3in52.o
0x20000001 0x08009fe9 0x00000003 PAD
0x20000004 0x08009fec 0x00000008 Data RW 493 .data font12.o
0x2000000c 0x08009ff4 0x00000008 Data RW 521 .data font16.o
0x20000014 0x08009ffc 0x00000004 Data RW 582 .data system_stm32f1xx.o
0x20000018 0x0800a000 0x0000000c Data RW 660 .data stm32f1xx_hal.o
0x20000024 0x0800a00c 0x00000004 Data RW 1280 .data mc_w.l(stdout.o)
0x20000028 0x0800a010 0x00000004 Data RW 1289 .data mc_w.l(mvars.o)
0x2000002c 0x0800a014 0x00000004 Data RW 1290 .data mc_w.l(mvars.o)
0x20000030 - 0x00000058 Zero RW 187 .bss spi.o
0x20000088 - 0x00000040 Zero RW 217 .bss usart.o
0x200000c8 - 0x00000018 Zero RW 443 .bss gui_paint.o
0x200000e0 - 0x0000c000 Zero RW 2 HEAP startup_stm32f103xe.o
0x2000c0e0 - 0x00001000 Zero RW 1 STACK startup_stm32f103xe.o
==============================================================================
Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug Object Name
104 10 0 0 0 792 dev_config.o
1228 76 714 1 0 4838 epd_3in52.o
820 306 0 0 0 1259 epd_3in52_test.o
0 0 1140 8 0 1389 font12.o
0 0 3040 8 0 1389 font16.o
96 10 0 0 0 827 gpio.o
3756 662 233 0 24 14644 gui_paint.o
0 0 10800 0 0 3193 imagedata.o
152 20 0 0 0 462016 main.o
188 18 0 0 88 1473 spi.o
36 8 304 0 53248 804 startup_stm32f103xe.o
392 38 0 12 0 7697 stm32f1xx_hal.o
548 12 0 0 0 30706 stm32f1xx_hal_cortex.o
3144 164 0 0 0 7133 stm32f1xx_hal_dma.o
980 30 0 0 0 4415 stm32f1xx_hal_gpio.o
60 8 0 0 0 854 stm32f1xx_hal_msp.o
2248 88 0 0 0 6583 stm32f1xx_hal_rcc.o
5608 106 0 0 0 19649 stm32f1xx_hal_spi.o
3996 46 0 0 0 17460 stm32f1xx_hal_uart.o
48 22 0 0 0 1258 stm32f1xx_it.o
196 28 24 4 0 1553 system_stm32f1xx.o
216 18 0 0 64 1777 usart.o
----------------------------------------------------------------------
23816 1670 16292 36 53424 591709 Object Totals
0 0 32 0 0 0 (incl. Generated)
0 0 5 3 0 0 (incl. Padding)
----------------------------------------------------------------------
Code (inc. data) RO Data RW Data ZI Data Debug Library Member Name
0 0 0 0 0 0 entry.o
0 0 0 0 0 0 entry10a.o
0 0 0 0 0 0 entry11a.o
8 4 0 0 0 0 entry2.o
4 0 0 0 0 0 entry5.o
0 0 0 0 0 0 entry7b.o
0 0 0 0 0 0 entry8b.o
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
----------------------------------------------------------------------
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
826 50 0 12 0 600 mc_w.l
----------------------------------------------------------------------
828 50 0 12 0 600 Library Totals
----------------------------------------------------------------------
==============================================================================
Code (inc. data) RO Data RW Data ZI Data Debug
24644 1720 16292 48 53424 590589 Grand Totals
24644 1720 16292 48 53424 590589 ELF Image Totals
24644 1720 16292 48 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 40936 ( 39.98kB)
Total RW Size (RW Data + ZI Data) 53472 ( 52.22kB)
Total ROM Size (Code + RO Data + RW Data) 40984 ( 40.02kB)
==============================================================================
110 unused section(s) (total 80782 bytes) removed from the image.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,147 @@
/*****************************************************************************
* | File : EPD_7in3f_test.c
* | Author : Waveshare team
* | Function : 7.3inch e-Paper (F) Demo
* | Info :
*----------------
* | This version: V1.0
* | Date : 2022-10-20
* | 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_7in3f.h"
int EPD_test(void)
{
printf("EPD_7IN3F_test Demo\r\n");
if(DEV_Module_Init()!=0){
return -1;
}
printf("e-Paper Init and Clear...\r\n");
EPD_7IN3F_Init();
EPD_7IN3F_Clear(EPD_7IN3F_WHITE); // WHITE
DEV_Delay_ms(1000);
//Create a new image cache
UBYTE *BlackImage;
UDOUBLE Imagesize = ((EPD_7IN3F_WIDTH % 2 == 0)? (EPD_7IN3F_WIDTH / 2 ): (EPD_7IN3F_WIDTH / 2 + 1)) * EPD_7IN3F_HEIGHT;
if((BlackImage = (UBYTE *)malloc(Imagesize/4)) == NULL) {
printf("Failed to apply for black memory...\r\n");
return -1;
}
printf("Paint_NewImage\r\n");
Paint_NewImage(BlackImage, EPD_7IN3F_WIDTH/2, EPD_7IN3F_HEIGHT/2, 0, EPD_7IN3F_WHITE);
Paint_SetScale(7);
#if 1
EPD_7IN3F_Display(gImage_7in3f);
DEV_Delay_ms(5000);
#endif
#if 1 // Drawing on the image
// 1.Select Image
printf("SelectImage:BlackImage\r\n");
Paint_SelectImage(BlackImage);
Paint_Clear(EPD_7IN3F_WHITE);
// 2.Drawing on the image
printf("Drawing:BlackImage\r\n");
Paint_DrawPoint(10, 80, EPD_7IN3F_RED, DOT_PIXEL_1X1, DOT_STYLE_DFT);
Paint_DrawPoint(10, 90, EPD_7IN3F_BLUE, DOT_PIXEL_2X2, DOT_STYLE_DFT);
Paint_DrawPoint(10, 100, EPD_7IN3F_GREEN, DOT_PIXEL_3X3, DOT_STYLE_DFT);
Paint_DrawLine(20, 70, 70, 120, EPD_7IN3F_ORANGE, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
Paint_DrawLine(70, 70, 20, 120, EPD_7IN3F_ORANGE, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
Paint_DrawRectangle(20, 70, 70, 120, EPD_7IN3F_BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
Paint_DrawRectangle(80, 70, 130, 120, EPD_7IN3F_BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawCircle(45, 95, 20, EPD_7IN3F_BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
Paint_DrawCircle(105, 95, 20, EPD_7IN3F_WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL);
Paint_DrawLine(85, 95, 125, 95, EPD_7IN3F_YELLOW, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
Paint_DrawLine(105, 75, 105, 115, EPD_7IN3F_YELLOW, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
Paint_DrawString_CN(10, 160, "ÄãºÃAbc", &Font12CN, EPD_7IN3F_BLACK, EPD_7IN3F_WHITE);
Paint_DrawString_CN(10, 180, "΢ѩµç×Ó", &Font24CN, EPD_7IN3F_WHITE, EPD_7IN3F_BLACK);
Paint_DrawNum(10, 33, 123456789, &Font12, EPD_7IN3F_BLACK, EPD_7IN3F_WHITE);
Paint_DrawNum(10, 50, 987654321, &Font16, EPD_7IN3F_WHITE, EPD_7IN3F_BLACK);
Paint_DrawString_EN(300, 0, "Waveshare", &Font16, EPD_7IN3F_BLACK, EPD_7IN3F_WHITE);
Paint_DrawString_EN(300, 20, "Waveshare", &Font16, EPD_7IN3F_GREEN, EPD_7IN3F_WHITE);
Paint_DrawString_EN(300, 40, "Waveshare", &Font16, EPD_7IN3F_BLUE, EPD_7IN3F_WHITE);
Paint_DrawString_EN(300, 60, "Waveshare", &Font16, EPD_7IN3F_RED, EPD_7IN3F_WHITE);
Paint_DrawString_EN(300, 80, "Waveshare", &Font16, EPD_7IN3F_YELLOW, EPD_7IN3F_WHITE);
Paint_DrawString_EN(300, 100, "Waveshare", &Font16, EPD_7IN3F_ORANGE, EPD_7IN3F_WHITE);
Paint_DrawString_EN(160, 0, "hello world", &Font12, EPD_7IN3F_WHITE, EPD_7IN3F_BLACK);
Paint_DrawString_EN(160, 30, "hello world", &Font12, EPD_7IN3F_GREEN, EPD_7IN3F_BLACK);
Paint_DrawString_EN(160, 60, "hello world", &Font12, EPD_7IN3F_BLUE, EPD_7IN3F_BLACK);
Paint_DrawString_EN(160, 90, "hello world", &Font12, EPD_7IN3F_RED, EPD_7IN3F_BLACK);
Paint_DrawString_EN(160, 120, "hello world", &Font12, EPD_7IN3F_YELLOW, EPD_7IN3F_BLACK);
Paint_DrawString_EN(160, 150, "hello world", &Font12, EPD_7IN3F_ORANGE, EPD_7IN3F_BLACK);
Paint_DrawString_EN(160, 180, "hello world", &Font12, EPD_7IN3F_BLACK, EPD_7IN3F_YELLOW);
printf("EPD_Display\r\n");
EPD_7IN3F_DisplayPart(BlackImage, 200, 120, 400, 240);
DEV_Delay_ms(3000);
#endif
#if 1 // Drawing on the image
//1.Select Image
printf("SelectImage:BlackImage\r\n");
Paint_SelectImage(BlackImage);
Paint_Clear(EPD_7IN3F_WHITE);
int hNumber, hWidth, vNumber, vWidth;
hNumber = 10;
hWidth = EPD_7IN3F_HEIGHT/2/hNumber; // 480/2/10=24
vNumber = 20;
vWidth = EPD_7IN3F_WIDTH/2/vNumber; // 800/2/20=20
// 2.Drawing on the image
printf("Drawing:BlackImage\r\n");
for(int i=0; i<hNumber; i++) { // horizontal
Paint_DrawRectangle(1, 1+i*hWidth, EPD_7IN3F_WIDTH/2, hWidth*(1+i), EPD_7IN3F_BLACK + (i % 2), DOT_PIXEL_1X1, DRAW_FILL_FULL);
}
for(int i=0; i<vNumber; i++) { // vertical
if(i%2) {
Paint_DrawRectangle(1+i*vWidth, 1, vWidth*(i+1), EPD_7IN3F_HEIGHT/2, EPD_7IN3F_GREEN + (i%5), DOT_PIXEL_1X1, DRAW_FILL_FULL);
}
}
printf("EPD_Display\r\n");
EPD_7IN3F_DisplayPart(BlackImage, 200, 120, 400, 240);
DEV_Delay_ms(3000);
#endif
printf("Clear...\r\n");
EPD_7IN3F_Clear(EPD_7IN3F_WHITE);
printf("Goto Sleep...\r\n");
EPD_7IN3F_Sleep();
free(BlackImage);
BlackImage = NULL;
DEV_Delay_ms(2000); // important, at least 2s
// close 5V
printf("close 5V, Module enters 0 power consumption ...\r\n");
DEV_Module_Exit();
return 0;
}

View file

@ -41,6 +41,7 @@ extern const unsigned char gImage_1in64g[];
extern const unsigned char gImage_2in36g[];
extern const unsigned char gImage_3in0g[];
extern const unsigned char gImage_4in37g[];
extern const unsigned char gImage_7in3f[];
extern const unsigned char gImage_7in3g[];
/* --------------------------------------- */

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,300 @@
/*****************************************************************************
* | File : EPD_7in3f.c
* | Author : Waveshare team
* | Function : 7.3inch e-Paper (F) Driver
* | Info :
*----------------
* | This version: V1.0
* | Date : 2022-10-20
* | 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_7in3f.h"
#include "Debug.h"
/******************************************************************************
function : Software reset
parameter:
******************************************************************************/
static void EPD_7IN3F_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_7IN3F_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_7IN3F_SendData(UBYTE Data)
{
DEV_Digital_Write(EPD_DC_PIN, 1);
DEV_Digital_Write(EPD_CS_PIN, 0);
DEV_SPI_WriteByte(Data);
DEV_Digital_Write(EPD_CS_PIN, 1);
}
/******************************************************************************
function : Wait until the busy_pin goes LOW
parameter:
******************************************************************************/
static void EPD_7IN3F_ReadBusyH(void)
{
Debug("e-Paper busy H\r\n");
while(!DEV_Digital_Read(EPD_BUSY_PIN)) { //LOW: busy, HIGH: idle
DEV_Delay_ms(1);
}
Debug("e-Paper busy H release\r\n");
}
/******************************************************************************
function : Turn On Display
parameter:
******************************************************************************/
static void EPD_7IN3F_TurnOnDisplay(void)
{
EPD_7IN3F_SendCommand(0x04); // POWER_ON
EPD_7IN3F_ReadBusyH();
EPD_7IN3F_SendCommand(0x12); // DISPLAY_REFRESH
EPD_7IN3F_SendData(0x00);
EPD_7IN3F_ReadBusyH();
EPD_7IN3F_SendCommand(0x02); // POWER_OFF
EPD_7IN3F_SendData(0X00);
EPD_7IN3F_ReadBusyH();
}
/******************************************************************************
function : Initialize the e-Paper register
parameter:
******************************************************************************/
void EPD_7IN3F_Init(void)
{
EPD_7IN3F_Reset();
EPD_7IN3F_ReadBusyH();
DEV_Delay_ms(30);
EPD_7IN3F_SendCommand(0xAA); // CMDH
EPD_7IN3F_SendData(0x49);
EPD_7IN3F_SendData(0x55);
EPD_7IN3F_SendData(0x20);
EPD_7IN3F_SendData(0x08);
EPD_7IN3F_SendData(0x09);
EPD_7IN3F_SendData(0x18);
EPD_7IN3F_SendCommand(0x01);
EPD_7IN3F_SendData(0x3F);
EPD_7IN3F_SendData(0x00);
EPD_7IN3F_SendData(0x32);
EPD_7IN3F_SendData(0x2A);
EPD_7IN3F_SendData(0x0E);
EPD_7IN3F_SendData(0x2A);
EPD_7IN3F_SendCommand(0x00);
EPD_7IN3F_SendData(0x5F);
EPD_7IN3F_SendData(0x69);
EPD_7IN3F_SendCommand(0x03);
EPD_7IN3F_SendData(0x00);
EPD_7IN3F_SendData(0x54);
EPD_7IN3F_SendData(0x00);
EPD_7IN3F_SendData(0x44);
EPD_7IN3F_SendCommand(0x05);
EPD_7IN3F_SendData(0x40);
EPD_7IN3F_SendData(0x1F);
EPD_7IN3F_SendData(0x1F);
EPD_7IN3F_SendData(0x2C);
EPD_7IN3F_SendCommand(0x06);
EPD_7IN3F_SendData(0x6F);
EPD_7IN3F_SendData(0x1F);
EPD_7IN3F_SendData(0x16);
EPD_7IN3F_SendData(0x25);
EPD_7IN3F_SendCommand(0x08);
EPD_7IN3F_SendData(0x6F);
EPD_7IN3F_SendData(0x1F);
EPD_7IN3F_SendData(0x1F);
EPD_7IN3F_SendData(0x22);
EPD_7IN3F_SendCommand(0x13); // IPC
EPD_7IN3F_SendData(0x00);
EPD_7IN3F_SendData(0x04);
EPD_7IN3F_SendCommand(0x30);
EPD_7IN3F_SendData(0x02);
EPD_7IN3F_SendCommand(0x41); // TSE
EPD_7IN3F_SendData(0x00);
EPD_7IN3F_SendCommand(0x50);
EPD_7IN3F_SendData(0x3F);
EPD_7IN3F_SendCommand(0x60);
EPD_7IN3F_SendData(0x02);
EPD_7IN3F_SendData(0x00);
EPD_7IN3F_SendCommand(0x61);
EPD_7IN3F_SendData(0x03);
EPD_7IN3F_SendData(0x20);
EPD_7IN3F_SendData(0x01);
EPD_7IN3F_SendData(0xE0);
EPD_7IN3F_SendCommand(0x82);
EPD_7IN3F_SendData(0x1E);
EPD_7IN3F_SendCommand(0x84);
EPD_7IN3F_SendData(0x00);
EPD_7IN3F_SendCommand(0x86); // AGID
EPD_7IN3F_SendData(0x00);
EPD_7IN3F_SendCommand(0xE3);
EPD_7IN3F_SendData(0x2F);
EPD_7IN3F_SendCommand(0xE0); // CCSET
EPD_7IN3F_SendData(0x00);
EPD_7IN3F_SendCommand(0xE6); // TSSET
EPD_7IN3F_SendData(0x00);
}
/******************************************************************************
function : Clear screen
parameter:
******************************************************************************/
void EPD_7IN3F_Clear(UBYTE color)
{
UWORD Width, Height;
Width = (EPD_7IN3F_WIDTH % 2 == 0)? (EPD_7IN3F_WIDTH / 2 ): (EPD_7IN3F_WIDTH / 2 + 1);
Height = EPD_7IN3F_HEIGHT;
EPD_7IN3F_SendCommand(0x10);
for (UWORD j = 0; j < Height; j++) {
for (UWORD i = 0; i < Width; i++) {
EPD_7IN3F_SendData((color<<4)|color);
}
}
EPD_7IN3F_TurnOnDisplay();
}
/******************************************************************************
function : show 7 kind of color block
parameter:
******************************************************************************/
void EPD_7IN3F_Show7Block(void)
{
unsigned long i, j, k;
unsigned char const Color_seven[8] =
{EPD_7IN3F_BLACK, EPD_7IN3F_BLUE, EPD_7IN3F_GREEN, EPD_7IN3F_ORANGE,
EPD_7IN3F_RED, EPD_7IN3F_YELLOW, EPD_7IN3F_WHITE, EPD_7IN3F_WHITE};
EPD_7IN3F_SendCommand(0x10);
for(i=0; i<240; i++) {
for(k = 0 ; k < 4; k ++) {
for(j = 0 ; j < 100; j ++) {
EPD_7IN3F_SendData((Color_seven[k]<<4) |Color_seven[k]);
}
}
}
for(i=0; i<240; i++) {
for(k = 4 ; k < 8; k ++) {
for(j = 0 ; j < 100; j ++) {
EPD_7IN3F_SendData((Color_seven[k]<<4) |Color_seven[k]);
}
}
}
EPD_7IN3F_TurnOnDisplay();
}
/******************************************************************************
function : Sends the image buffer in RAM to e-Paper and displays
parameter:
******************************************************************************/
void EPD_7IN3F_Display(const UBYTE *Image)
{
UWORD Width, Height;
Width = (EPD_7IN3F_WIDTH % 2 == 0)? (EPD_7IN3F_WIDTH / 2 ): (EPD_7IN3F_WIDTH / 2 + 1);
Height = EPD_7IN3F_HEIGHT;
EPD_7IN3F_SendCommand(0x10);
for (UWORD j = 0; j < Height; j++) {
for (UWORD i = 0; i < Width; i++) {
EPD_7IN3F_SendData(Image[i + j * Width]);
}
}
EPD_7IN3F_TurnOnDisplay();
}
void EPD_7IN3F_DisplayPart(const UBYTE *Image, UWORD xstart, UWORD ystart, UWORD image_width, UWORD image_heigh)
{
unsigned long i, j;
UWORD Width, Height;
Width = (EPD_7IN3F_WIDTH % 2 == 0)? (EPD_7IN3F_WIDTH / 2 ): (EPD_7IN3F_WIDTH / 2 + 1);
Height = EPD_7IN3F_HEIGHT;
EPD_7IN3F_SendCommand(0x10);
for(i=0; i<Height; i++) {
for(j=0; j<Width; j++) {
if(i<image_heigh+ystart && i>=ystart && j<(image_width+xstart)/2 && j>=xstart/2) {
EPD_7IN3F_SendData(Image[(j-xstart/2) + (image_width/2*(i-ystart))]);
}
else {
EPD_7IN3F_SendData(0x11);
}
}
}
EPD_7IN3F_TurnOnDisplay();
}
/******************************************************************************
function : Enter sleep mode
parameter:
******************************************************************************/
void EPD_7IN3F_Sleep(void)
{
EPD_7IN3F_SendCommand(0x07); // DEEP_SLEEP
EPD_7IN3F_SendData(0XA5);
}

View file

@ -0,0 +1,59 @@
/*****************************************************************************
* | File : EPD_7in3f.h
* | Author : Waveshare team
* | Function : 7.3inch e-Paper (F) Driver
* | Info :
*----------------
* | This version: V1.0
* | Date : 2022-10-20
* | 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_7IN3F_H_
#define __EPD_7IN3F_H_
#include "DEV_Config.h"
// Display resolution
#define EPD_7IN3F_WIDTH 800
#define EPD_7IN3F_HEIGHT 480
/**********************************
Color Index
**********************************/
#define EPD_7IN3F_BLACK 0x0 /// 000
#define EPD_7IN3F_WHITE 0x1 /// 001
#define EPD_7IN3F_GREEN 0x2 /// 010
#define EPD_7IN3F_BLUE 0x3 /// 011
#define EPD_7IN3F_RED 0x4 /// 100
#define EPD_7IN3F_YELLOW 0x5 /// 101
#define EPD_7IN3F_ORANGE 0x6 /// 110
#define EPD_7IN3F_CLEAN 0x7 /// 111 unavailable Afterimage
void EPD_7IN3F_Init(void);
void EPD_7IN3F_Clear(UBYTE color);
void EPD_7IN3F_Show7Block(void);
void EPD_7IN3F_Display(const UBYTE *Image);
void EPD_7IN3F_DisplayPart(const UBYTE *Image, UWORD xstart, UWORD ystart, UWORD image_width, UWORD image_heigh);
void EPD_7IN3F_Sleep(void);
#endif

View file

@ -32,4 +32,5 @@
2022-07-22添加新程序7.3inch e-Paper (G)例程。
2022-07-22添加新程序3.52inch e-Paper例程。
2022-08-16添加新程序4.37inch e-Paper (G)例程。
2022-08-17添加新程序2.36inch e-Paper (G)例程。
2022-08-17添加新程序2.36inch e-Paper (G)例程。
2022-10-22添加新程序7.3inch e-Paper (F)例程。

View file

@ -31,4 +31,5 @@
2022-07-22: Added new programs 7.3inch e-Paper (G) routine.
2022-07-22: Added new programs 3.52inch e-Paper routine.
2022-08-16: Added new programs 4.37inch e-Paper (G) routine.
2022-08-17: Added new programs 2.36inch e-Paper (G) routine.
2022-08-17: Added new programs 2.36inch e-Paper (G) routine.
2022-10-22: Added new programs 7.3inch e-Paper (F) routine.