From 0cd9f67310c89ef7143bea4ea326a6d2dedf4be6 Mon Sep 17 00:00:00 2001 From: kevin Date: Sat, 16 Apr 2022 21:54:47 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=98=E5=9B=BE=E5=87=BD=E6=95=B0=20Signed-o?= =?UTF-8?q?ff-by:=20kevin=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- f103c8t6_keil/MDK-ARM/MYDEIVERS/mymain.c | 25 +- f103c8t6_keil/MDK-ARM/MYDEIVERS/oled.c | 76 +++++- f103c8t6_keil/MDK-ARM/MYDEIVERS/oled.h | 2 +- .../MDK-ARM/f103c8t6_KEIL.uvguix.wuwen | 58 ++--- .../MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.axf | Bin 508360 -> 510844 bytes .../f103c8t6_KEIL/f103c8t6_KEIL.build_log.htm | 2 +- .../MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.hex | 140 ++++++----- .../MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.htm | 203 ++++++++-------- .../MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.map | 222 +++++++++--------- .../f103c8t6_KEIL_f103c8t6_KEIL.dep | 10 +- f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/main.crf | Bin 529536 -> 529562 bytes f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/main.o | Bin 592568 -> 592568 bytes .../MDK-ARM/f103c8t6_KEIL/mymain.crf | Bin 527897 -> 527941 bytes f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/mymain.o | Bin 588020 -> 588148 bytes f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/oled.crf | Bin 529255 -> 529676 bytes f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/oled.o | Bin 603976 -> 604764 bytes 16 files changed, 421 insertions(+), 317 deletions(-) diff --git a/f103c8t6_keil/MDK-ARM/MYDEIVERS/mymain.c b/f103c8t6_keil/MDK-ARM/MYDEIVERS/mymain.c index 686ce67..a367715 100644 --- a/f103c8t6_keil/MDK-ARM/MYDEIVERS/mymain.c +++ b/f103c8t6_keil/MDK-ARM/MYDEIVERS/mymain.c @@ -10,15 +10,16 @@ const char testbmp[]= { -0x00,0x00,0x00,0x00,0x16,0x1D,0x10,0x18,0x08,0x0C,0x06,0x07,0x02,0x03,0x02,0x02, -0x06,0x05,0x05,0x0D,0x79,0x51,0xC1,0x73,0x1D,0x07,0x03,0x03,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x93,0xFF,0x2C,0x19,0x11,0x33,0x22,0x26, -0x64,0x44,0x4C,0xC8,0xC8,0x58,0x90,0x11,0x90,0xB0,0x30,0x20,0x30,0x20,0x60,0xC0, -0xE6,0x3F,0x1F,0x03,0x01,0x00,0x00,0x00,0x00,0x01,0x1F,0x7E,0xFF,0xC0,0x80,0x80, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00, -0x00,0x20,0x30,0x70,0x51,0x7D,0x57,0xF1,0xE1,0x7B,0x0F,0x07,0x7B,0xE3,0x07,0xBF, -0xFF,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03, -0x03,0x03,0x63,0x43,0xC3,0xC3,0x8B,0x9F,0xBB,0x23,0xB3,0x23,0x63,0x43,0xC3,0x03 +0x00,0x00,0x02,0x00,0x0F,0x00,0x00,0x0F,0x00,0x0F,0x00,0x00,0x09,0x00,0x0F,0x0F, +0x00,0x0D,0x80,0x0F,0x05,0xC0,0x18,0x80,0x0F,0x0C,0x70,0xF0,0xC0,0x0F,0x08,0x3F, +0x81,0x70,0x0F,0x04,0x14,0x7F,0xF0,0x0F,0x0C,0x01,0xAC,0x18,0x0F,0x04,0x0F,0xC0, +0x38,0x0F,0x06,0x78,0x07,0xEC,0x0F,0x0D,0xC0,0x7E,0x86,0x0F,0x07,0x03,0xC0,0x06, +0x0F,0x06,0x1E,0x00,0x0E,0x0F,0x0C,0x70,0x00,0x0F,0x0F,0x0D,0xC0,0x10,0x07,0x8F, +0x0F,0x00,0x18,0x01,0x8F,0x1C,0x00,0x18,0x1F,0xCF,0x18,0x00,0x18,0x75,0xCF,0x38, +0x00,0x00,0x3F,0x4F,0x38,0x00,0x00,0x04,0x6F,0x38,0x00,0x00,0x06,0x3F,0x38,0x00, +0x00,0x02,0x7F,0x68,0x00,0x00,0x0F,0xFF,0x58,0x00,0x00,0xFA,0x2F,0xC8,0x00,0x03, +0xC0,0xEF,0xD8,0x00,0x02,0x0F,0x8F,0x98,0x00,0x00,0x1A,0x0F,0x98,0x00,0x00,0x38, +0x0F,0x38,0x00,0x00,0x10,0x0F }; @@ -29,12 +30,14 @@ uint32_t run_tick=0; OLED_Init(); - OLED_Pix(0,0,36,32,testbmp); + OLED_Pix(0,0,36,30,testbmp,1); + OLED_Pix(50,0,36,30,testbmp,2); + OLED_Pix(0,30,36,30,testbmp,4); while(1) { - //OLED_Cache_to_hardware(); + OLED_Cache_to_hardware(); if(HAL_GetTick()>run_tick) { run_tick+=500; diff --git a/f103c8t6_keil/MDK-ARM/MYDEIVERS/oled.c b/f103c8t6_keil/MDK-ARM/MYDEIVERS/oled.c index e7bec80..630a367 100644 --- a/f103c8t6_keil/MDK-ARM/MYDEIVERS/oled.c +++ b/f103c8t6_keil/MDK-ARM/MYDEIVERS/oled.c @@ -249,16 +249,18 @@ void OLED_set_dot(unsigned char x,unsigned char y,unsigned char dot_type) return ; } uint8_t y1=y/8; + uint8_t y2=y%8; + uint8_t y3=(0x80>>y2); switch(dot_type) { case 0: - OLED_buff[y1][x] &= ~(1<<(y%8)); + OLED_buff[y1][x] &= ~y3; break; case 1: - OLED_buff[y1][x] |= (1<<(y%8)); + OLED_buff[y1][x] |= y3; break; case 2: - OLED_buff[y1][x] ^= (1<<(y%8)); + OLED_buff[y1][x] ^= y3; break; case 3:break; } @@ -266,15 +268,73 @@ void OLED_set_dot(unsigned char x,unsigned char y,unsigned char dot_type) } /* 绘图函数 - +数据格式 从左到右,从上到下,横向8点右高位 +type=0 清空区域 + =1 区域图层 + =2 正片叠底 + =3 正片清空 + =4 负片 */ -void OLED_Pix(unsigned char x,unsigned char y,unsigned char w,unsigned char h,const char *p) +void OLED_Pix(unsigned char x,unsigned char y,unsigned char w,unsigned char h,const char *p,unsigned char type) { - OLED_Set_Pos(0,0); - for(int a=0;a<36;a++) + + unsigned char b=0; + unsigned int c=0; + + for(uint8_t h1=0;h1>b) + { + switch(type) + { + case 0: + OLED_set_dot(w1+x,h1+y,0); + break; + case 1: + OLED_set_dot(w1+x,h1+y,1); + break; + case 2: + OLED_set_dot(w1+x,h1+y,1); + break; + case 3: + OLED_set_dot(w1+x,h1+y,0); + break; + case 4: + OLED_set_dot(w1+x,h1+y,0); + break; + } + + }else + { + switch(type) + { + case 0: + OLED_set_dot(w1+x,h1+y,0); + break; + case 1: + OLED_set_dot(w1+x,h1+y,0); + break; + case 2: + + break; + case 4: + OLED_set_dot(w1+x,h1+y,1); + break; + } + } + b++; + if(b==8) + { + b=0;c++; + } + } + b=0;c++; } + + + } void OLED_ShowChar(unsigned char x,unsigned char y,unsigned char chr) { diff --git a/f103c8t6_keil/MDK-ARM/MYDEIVERS/oled.h b/f103c8t6_keil/MDK-ARM/MYDEIVERS/oled.h index 2585420..4584cc5 100644 --- a/f103c8t6_keil/MDK-ARM/MYDEIVERS/oled.h +++ b/f103c8t6_keil/MDK-ARM/MYDEIVERS/oled.h @@ -22,7 +22,7 @@ void OLED_Init(void); void OLED_Cache_to_hardware(); void OLED_set_dot(unsigned char x,unsigned char y,unsigned char dot_type); -void OLED_Pix(unsigned char x,unsigned char y,unsigned char w,unsigned char h,const char *p); +void OLED_Pix(unsigned char x,unsigned char y,unsigned char w,unsigned char h,const char *p,unsigned char type); void OLED_ShowStr(unsigned char x,unsigned char y,char *str); diff --git a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL.uvguix.wuwen b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL.uvguix.wuwen index 5e9d274..c47cc73 100644 --- a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL.uvguix.wuwen +++ b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL.uvguix.wuwen @@ -93,25 +93,25 @@ 0 1 - -1 - -1 + -32000 + -32000 -1 -1 - 304 - 1449 - 4029 - 1333 + 288 + 600 + 3180 + 1317 0 1049 - 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000008000000030000000100000047433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF52433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C6D796D61696E2E6300000000086D796D61696E2E6300000000FFDC7800FFFFFFFF52433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C6D796D61696E2E6800000000086D796D61696E2E6800000000BECEA100FFFFFFFF50433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C6F6C65642E6300000000066F6C65642E6300000000F0A0A100FFFFFFFF5B433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C68726561645F696E746572666163652E63000000001168726561645F696E746572666163652E6300000000BCA8E100FFFFFFFF5B433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C68726561645F696E746572666163652E68000000001168726561645F696E746572666163652E68000000009CC1B600FFFFFFFF50433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C6F6C65642E6800000000066F6C65642E6800000000F7B88600FFFFFFFF51433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C666F6E74732E630000000007666F6E74732E6300000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000630700009E010000B50F000050040000 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000008000000030000000100000047433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF52433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C6D796D61696E2E6300000000086D796D61696E2E6300000000FFDC7800FFFFFFFF52433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C6D796D61696E2E6800000000086D796D61696E2E6800000000BECEA100FFFFFFFF50433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C6F6C65642E6300000000066F6C65642E6300000000F0A0A100FFFFFFFF5B433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C68726561645F696E746572666163652E63000000001168726561645F696E746572666163652E6300000000BCA8E100FFFFFFFF5B433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C68726561645F696E746572666163652E68000000001168726561645F696E746572666163652E68000000009CC1B600FFFFFFFF50433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C6F6C65642E6800000000066F6C65642E6800000000F7B88600FFFFFFFF51433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C666F6E74732E630000000007666F6E74732E6300000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000006B0800006E0000006F0D00009A040000 @@ -134,7 +134,7 @@ 16 - 8404000094010000D60C00005A020000 + B201000066000000040A00002C010000 @@ -150,7 +150,7 @@ 0 16 - 0300000066000000AB010000E8020000 + 0300000066000000AB01000062040000 16 @@ -170,7 +170,7 @@ 0 16 - 0300000066000000AB010000E8020000 + 0300000066000000AB01000062040000 16 @@ -450,7 +450,7 @@ 0 16 - 0300000066000000AB010000E8020000 + 0300000066000000AB01000062040000 16 @@ -470,7 +470,7 @@ 0 16 - 0300000066000000AB010000E8020000 + 0300000066000000AB01000062040000 16 @@ -490,7 +490,7 @@ 0 16 - 0000000019030000040A0000CB030000 + 0000000093040000B606000045050000 16 @@ -530,7 +530,7 @@ 0 16 - 030000001C030000B3060000B2030000 + 03000000960400006D0D00002C050000 16 @@ -1150,7 +1150,7 @@ 0 16 - 0300000066000000AB01000062040000 + 0300000066000000AB0100006B040000 16 @@ -1170,7 +1170,7 @@ 0 16 - 030000001C030000B3060000B2030000 + 03000000960400006D0D00002C050000 16 @@ -1190,7 +1190,7 @@ 0 16 - 030000001C030000B3060000B2030000 + 03000000960400006D0D00002C050000 16 @@ -1250,7 +1250,7 @@ 0 16 - 030000001C030000B3060000B2030000 + 03000000960400006D0D00002C050000 16 @@ -1270,7 +1270,7 @@ 0 16 - 030000001C030000B3060000B2030000 + 03000000960400006D0D00002C050000 16 @@ -1730,7 +1730,7 @@ 0 16 - 00000000CB030000040A0000DE030000 + 0000000045050000B606000058050000 16 @@ -1799,7 +1799,7 @@ 3312 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFB201000015010000040A000019010000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E6500200000000000008404000094010000D60C00005A020000B20100004F000000040A0000150100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF520800004F0000005608000001030000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000280B000094010000D60C000046040000560800004F000000040A00000103000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFAE0100004F000000B201000001030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000D20200009401000080040000C0050000000000004F000000AE010000010300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000ED020000040A0000F102000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000D202000036040000D60C00001005000000000000F1020000040A0000CB03000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF02050000F102000006050000CB03000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000001030000040A000005030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000D2020000C4050000880900008A0600000000000005030000040A0000CB0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFB201000015010000040A000019010000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000B201000066000000040A00002C010000B20100004F000000040A0000150100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF520800004F0000005608000001030000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000005608000066000000040A000018030000560800004F000000040A00000103000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFAE0100004F000000B20100007B040000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000AE0100009B040000000000004F000000AE0100007B0400000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000ED020000040A0000F102000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000800000000000000000000008030000040A0000E203000000000000F1020000040A0000CB03000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF02050000F102000006050000CB03000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000007B040000B60600007F040000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000009F040000700D000065050000000000007F040000B6060000450500000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 @@ -1838,7 +1838,7 @@ Debug 2373 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 898 @@ -1865,7 +1865,7 @@ 3 ../Core/Src/main.c - 4 + 5 52 91 1 @@ -1874,9 +1874,9 @@ .\MYDEIVERS\mymain.c - 79 + 31 1 - 21 + 35 1 0 @@ -1892,9 +1892,9 @@ .\MYDEIVERS\oled.c - 7 - 60 - 72 + 22 + 263 + 271 1 0 @@ -1919,7 +1919,7 @@ ./MYDEIVERS/oled.h - 13 + 110 1 25 1 diff --git a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.axf b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.axf index ca939701b61a08a06973f378cf89a90e5a57c280..ece32bf0c58d9ff0f413fca4f3fbd968715e0164 100644 GIT binary patch delta 12442 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 delta 10516 zcmbuF2~<=^y2q=kp>GQay|4??K#NF7#C=WN5WxjpFj1mGHWg(P8iN{aG#X8!5mUw+ zqeha^g!tTIYcLs&Yi2;RY7#YzQO9H)pJwpIgihjw_pk20(tUmB%$)O@Q@8K$UtfLo zRo%LE>sE7jV@&hYG4)YX6OT$H9f>jG+n1OLC5c2&f=IKLn4hIY_miIJKIlwzxADD> z5nZ{F=!ojm3EFz(30cCq|M~@g(>53hIcDTJG?T4$@SSvUXeqL85u$4*#4Ox5Gm-dj zw22b?eio%=HxAoB)umGwZsL)C2`tfMAL-Yqp)>6N-T7gSO@DBYnY30rzQD24F%idd zM)a+krN;7C46EILomX$C-{`9CI9I93OKq9J3v-;W){04985zMI6UD zZsVBl_!`I2juae6I=16D%<%?}Lmhi@9F*laa$P^1nD_of>M9Ou(}*QDO;py!LAs@+ zk=9<0(x_Ye>mGERD~!6fUzhyPa}`G_4w6`1n$K3!s&f!a;!M)o)lnE_N&fZgiX*(i zn9|eSt~){x&P${5!((gA?QP-UiZK;q+S@*RFXiC6eTlJi)Bb2X-yR(6*Z4=apu_fIFWq~08F ziPNREw>{pj%gnk%Mw6rMZKoX#BY(fxBP}J(=jY$7?QI7fcm7UDiizh0n{9-IM(e|M z0a}S^7}NUtc3w2;cvZBd(Rf~Z-kuy`=o6Pvm^!|>d0M@peqV|?#XRfS55rO9I^zAV6;QZcFavD;Uc1W8N&CLL|ps6IV31*1-$e16-X~z6jC^uzQtu0p`$HaKTKa-$NidQq^@G7#@qPL)2EHdYH2MUxEv{lK*b6kv zL{5Di?k>8NUy1F)?&$d+v7wz6@eLG+;)WQLy(TV=vKa~XWAW28Y)vm*{!%HYz5pREJWKYIs#oBXIFKXyvJ}ABUVc+61 zE76>%#yy1Eh~_dieoUxD3}DSIYP?Kn5YhZXjn@c$g2d?uqg`=OThlIbYnNcH7xFh30^fC0j z57iaS&8tL(`-tW*)Od){b)plGaXL1HUmClOtS;dqU8u?@SU$Hwzd!K^IlvzXUs|xq~u)|S& zNbwQoF!SGvchVF-sXBz0mDX!T=bkX|iSuJ~on2xuo8M7r2qDWR)mN!6n4=0gzOz7K% zIi!NOaClSb?Q{*aEl7KXz8{ATgtso((^HJcACNv2t}oD;$Wf#V!gVEtNaU5*;6$SQ z_JZ9H{Q`S&vzT!uGtSfA$Wf$$FfAJmfvvA8n2hh~R8%uSR3U6CTt$44qevy9NSM1w zcYLpf;QCzVBPv38=-3wrh`TKix3mSb%do4IMrcbHmF5+f5vt@gpj1v}by=>pxL`if zPX`{S{CR7W?y2sC_-Zh1jjcY)Zfdyy!kDnnkzJfR`q7M0qjN{3rV@Pyga;WPu`o0) z5-}F1j>sM{h3H2lqSb=OXJw9YS>2(8PuObawNGyDQG&3=dpP4WpS&I)*h2&oj%Lt`5fevFtSqW3$j-|zDI)qXXI7$#&#k%8Q_MK^NQW@$ zGnTWwfrKbhHexBSg-|O_R^wzIIKWqq|gb8*s`dJ$_jdY~$^x-{R_4WB{F&CNw^ z)g@M!WQRo4K4FgzCZqw6?h{D#@6@NP3IZvz@uQ2c`0FJ!>V$^wpj!F%5Gj}+UE(+5 zny4US@}x4NPeA@#xE{r5NKt8pbz)_4d1bM6k*kW0B4nR(F5N*TA0=P;gJAvlMpz5-#DK+CBpuPU|{mm@53 z+hqFkWy?&VcTqa0xV)gcva$$I3uo3PAHH*0WS4HDP(gXw?BY3Ht_t(6#LL%wM<3-`YagHye979YOc%;?U+7^Q2;<_p z#k~tKs7K&t>;z0LS~#Mx5Hn7dYoyN-;)J47FVWf|PAOiD5iIVB7ll}nnrF=;`YgCR zE4+7Pw+hTIE-fmrc3;Y*K$K7gTL-KAuK8O!-fP`AY-kt{s(;9~Pt@ZPwI5I&^;99M zqn_I#c7*ke5WT|sUHErS#2uq90#@!w(a_zRv4KRl0qNeoGL>Jd|BfYx z^P}r~+qMh;9nntq2d0(e;g%AEwXZ-i3sj@K#Rv)&f>$^WSAbqO!S@~EDAD{C5*&(; z72mG;&BvElyx78ShVvnOSV4vG-4RN=cPLlxtNEl$@v3sp{Hxbn{YefewlVHdvn zWlIJg%%1kW1Mjo{0v0r9c4g6m%Dl2UxP!!Kz_T2)R6)u7UM~KrGuLhUfQ3i%Pd3FG zo`M&55SlbX4hC}iO3$wU8ZG9U3KDvX)nl$`K)N>&|23LtzVcVLE1HLGj*e_b`Ov#G z0guG~NM2T(BN>e6Z9e;uA674cNQrnR4ZA||`YzT*;&#YQ&nqh|!SjMDHrE4r=GJ!} z6bninQjI8rrPNNUomf;>IOWlf5{k*)KrFzHvgWQl@YQ&oKFB#JW5YO6r(C-u$RewR6X6DOZkJni};^Z^_r0daW zMs43vI$E1KA)}*~|G`Uwco$gh4w3Zb$9KGGn+WL#q+icj|KkNaS)R#HC1mL`HvCMpqKKnF;X)q>&j#?a^%_((;ebR@de zm!utHLMjB#HQH~#QA=4xqP?QAgwh#2Z&%-B@&4pXHF&F|zARX4^7Ypy_-aCM5~x|K zjlnn7hB2xols1S0;ywJQ|9YJ+8m z1db!%*BI=};87b2Z@!vN+5y@KUyY^~3Rs(H-?V2LW!OK6+UH;uMtkVnh2hkXFKNl5 zT7ITw8`bgor?Xg@(SG>!4M}WPG@f0Kor?#~9T|#cH}N60WaCD07KOw}t=Q~ve#8kL zCYaf>U4k%nnNc#8&$=4E|I6vrfHkWqhNq+JJJKw-pZg8Yd=>cXy1kZ&5KDAt%M`x&J;b|FiC$SB3I!xQB!qm)i9 z^2ZD0L4oqq(P0$2V}|d`H3Dhfhx=My^ej^(Lto>-(5I$|QAXCDY^*la#<3 zr^_2mQXE|&H<_d!%=)-|RebN7A$Jaz5?R0#@_=9|nSGcm7X`z7O`g0qSTeIM`SM=z zy`ezqM{^M&d17Ve~8sH_3y$NIgejCsvFp4gN&;ik(@(6pR-x=Vq`dCK&f2X(q_W zP!;y$oGkC`B9$4%Z7l3Gux!G2y-`kzl3wU7=5|G&je5mIt*}^%h)G@HXTW8~rW;XG zSB-OfPRU4x$pWJsX_kJB6EljUPs8FuympKBiHZd$n&hNdsVqckzoMtWu3p|9D-E#u zPXLQe4~28U%EyP?ZZA>s0&iyRE995rq!=p8 z2k~Wl%R9UMIQS-dO86Jix2W>JQt=HH|E6LChQnNJor(~Jzh17J$r&-iwY8^u3+<1o zSnY70%Heb1GLH&&x>-zBqQcYQN{{>-Zgw>=o)UEheprl%h_!A9N%GI}=&wiQ5Q`Ku zDGRyEM|AhUYD53WFF7op|8hBB~ zzp6MwJlH+#2Z3##!gQ6vA{B2^@w+O%sN!E$9DzH=v%W!kV)GKFs|*&Yc$13XRq;g? z|El5$gDL<6`d>t(Tomn{A}UTOhYoY%qCO(9g}vb(#)VKL1Gryc=k{zs2hQD*1m^aKC@A0Brw3mwOd} zeXS~>m%w*0UH3&di0Pz3mH#eS{Bjlff8^Ulmo>v66$WDcBpiI<;Xu!Bw^s!#9ZZPe zmEfChN$>_&zE0c<21d!Nu6*a15WEX~%l$ktg6-g+!7#TGAslxL$xsBJ>o9O~D;U4( zIUS08O$Z@9+$|Cu3LfolfZzwgd5S$6Gz46rF!CqgW8Czjz?^%6iFc$r83JK$%NA&3a#P~a4VKe-JAf2rad z^7qM@vBU6U<7t+n;tUn%t9XfuH>h~Gir@EU8#(7KkZUUbS;bmRJe~oEsW?f+LsXpU z#WqUvyaY~IZD*NmM2p~Yh`_xEJn3~6r86w?bh8~l-C z4}Jn1hF@{SQ(R2I3&9ZzBYz#Ziw8G?qrqeG#Be%13SkZetQMSn3cLvHyqVzOb2lR! zKax{&Q^ne7+>LH~5uhHt7A)*VKo&PE0X_^C|AWMo89UQ0CB($7z2SEdKRN$-f5vNsk#@5n3Vq41?#~1%3nD@LH@?V2Z(iDS&b5oerbGC&3ms z_W=JLtXz`5;5H8)1{VKQrqq`S?qu^2av=DF#llCla2_}a{Dhlp!Qwy96bGxp;-AaHFcsjMpubq}m^34`W zue}h9E?O?L(^8!F&~`#TO_YStatic Call Graph - [f103c8t6_KEIL\f103c8t6_KEIL.axf]

Static Call Graph for image f103c8t6_KEIL\f103c8t6_KEIL.axf


-

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Fri Apr 15 22:54:34 2022 +

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Sat Apr 16 21:54:25 2022

-

Maximum Stack Usage = 192 bytes + Unknown(Functions without stacksize, Cycles, Untraceable Function Pointers)

+

Maximum Stack Usage = 208 bytes + Unknown(Functions without stacksize, Cycles, Untraceable Function Pointers)

Call chain for Maximum Stack Depth:

-__rt_entry_main ⇒ main ⇒ mymain ⇒ OLED_Pix ⇒ OLED_Set_Pos ⇒ OLED_WrCmd ⇒ IIC_SAND_DATE ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnMasterAddressFlagUntilTimeout +__rt_entry_main ⇒ main ⇒ mymain ⇒ OLED_Cache_to_hardware ⇒ OLED_Set_Pos ⇒ OLED_WrCmd ⇒ IIC_SAND_DATE ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnMasterAddressFlagUntilTimeout

Functions with no stack information @@ -102,9 +102,9 @@ Global Symbols

[Calls]
  • >>   __rt_entry
-

__scatterload_rt2_thumb_only (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED) +

__scatterload_rt2_thumb_only (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED) -

__scatterload_null (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED) +

__scatterload_null (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED)

__scatterload_copy (Thumb, 26 bytes, Stack size unknown bytes, __scatter_copy.o(!!handler_copy), UNUSED)

[Calls]

  • >>   __scatterload_copy @@ -112,80 +112,80 @@ Global Symbols
    [Called By]
    • >>   __scatterload_copy
    -

    __scatterload_zeroinit (Thumb, 28 bytes, Stack size unknown bytes, __scatter_zi.o(!!handler_zi), UNUSED) +

    __scatterload_zeroinit (Thumb, 28 bytes, Stack size unknown bytes, __scatter_zi.o(!!handler_zi), UNUSED)

    __rt_lib_init (Thumb, 0 bytes, Stack size unknown bytes, libinit.o(.ARM.Collect$$libinit$$00000000))

    [Called By]

    • >>   __rt_entry_li
    -

    __rt_lib_init_alloca_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000002E)) +

    __rt_lib_init_alloca_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000002E)) -

    __rt_lib_init_argv_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000002C)) +

    __rt_lib_init_argv_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000002C)) -

    __rt_lib_init_atexit_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001B)) +

    __rt_lib_init_atexit_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001B)) -

    __rt_lib_init_clock_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000021)) +

    __rt_lib_init_clock_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000021)) -

    __rt_lib_init_cpp_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000032)) +

    __rt_lib_init_cpp_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000032)) -

    __rt_lib_init_exceptions_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000030)) +

    __rt_lib_init_exceptions_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000030)) -

    __rt_lib_init_fp_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000002)) +

    __rt_lib_init_fp_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000002)) -

    __rt_lib_init_fp_trap_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001F)) +

    __rt_lib_init_fp_trap_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001F)) -

    __rt_lib_init_getenv_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000023)) +

    __rt_lib_init_getenv_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000023)) -

    __rt_lib_init_heap_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000A)) +

    __rt_lib_init_heap_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000A)) -

    __rt_lib_init_lc_collate_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000011)) +

    __rt_lib_init_lc_collate_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000011)) -

    __rt_lib_init_lc_ctype_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000013)) +

    __rt_lib_init_lc_ctype_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000013)) -

    __rt_lib_init_lc_monetary_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000015)) +

    __rt_lib_init_lc_monetary_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000015)) -

    __rt_lib_init_lc_numeric_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000017)) +

    __rt_lib_init_lc_numeric_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000017)) -

    __rt_lib_init_lc_time_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000019)) +

    __rt_lib_init_lc_time_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000019)) -

    __rt_lib_init_preinit_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000004)) +

    __rt_lib_init_preinit_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000004)) -

    __rt_lib_init_rand_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000E)) +

    __rt_lib_init_rand_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000E)) -

    __rt_lib_init_return (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000033)) +

    __rt_lib_init_return (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000033)) -

    __rt_lib_init_signal_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001D)) +

    __rt_lib_init_signal_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001D)) -

    __rt_lib_init_stdio_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000025)) +

    __rt_lib_init_stdio_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000025)) -

    __rt_lib_init_user_alloc_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000C)) +

    __rt_lib_init_user_alloc_1 (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000C))

    __rt_lib_shutdown (Thumb, 0 bytes, Stack size unknown bytes, libshutdown.o(.ARM.Collect$$libshutdown$$00000000))

    [Called By]

    • >>   __rt_exit_ls
    -

    __rt_lib_shutdown_cpp_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000004)) +

    __rt_lib_shutdown_cpp_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000004)) -

    __rt_lib_shutdown_fini_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000002)) +

    __rt_lib_shutdown_fini_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000002)) -

    __rt_lib_shutdown_fp_trap_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000009)) +

    __rt_lib_shutdown_fp_trap_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000009)) -

    __rt_lib_shutdown_heap_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000011)) +

    __rt_lib_shutdown_heap_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000011)) -

    __rt_lib_shutdown_return (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000012)) +

    __rt_lib_shutdown_return (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000012)) -

    __rt_lib_shutdown_signal_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000C)) +

    __rt_lib_shutdown_signal_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000C)) -

    __rt_lib_shutdown_stdio_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000006)) +

    __rt_lib_shutdown_stdio_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000006)) -

    __rt_lib_shutdown_user_alloc_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000E)) +

    __rt_lib_shutdown_user_alloc_1 (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000E))

    __rt_entry (Thumb, 0 bytes, Stack size unknown bytes, __rtentry.o(.ARM.Collect$$rtentry$$00000000))

    [Called By]

    • >>   __scatterload_rt2
    • >>   __main
    -

    __rt_entry_presh_1 (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$00000002)) +

    __rt_entry_presh_1 (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$00000002))

    __rt_entry_sh (Thumb, 0 bytes, Stack size unknown bytes, __rtentry4.o(.ARM.Collect$$rtentry$$00000004))

    [Stack]

    • Max Depth = 8 + Unknown Stack Size @@ -198,17 +198,17 @@ Global Symbols

      [Calls]
      • >>   __rt_lib_init
      -

      __rt_entry_postsh_1 (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$00000009)) +

      __rt_entry_postsh_1 (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$00000009))

      __rt_entry_main (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$0000000D)) -

      [Stack]

      • Max Depth = 192 + Unknown Stack Size -
      • Call Chain = __rt_entry_main ⇒ main ⇒ mymain ⇒ OLED_Pix ⇒ OLED_Set_Pos ⇒ OLED_WrCmd ⇒ IIC_SAND_DATE ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnMasterAddressFlagUntilTimeout +

        [Stack]
        • Max Depth = 208 + Unknown Stack Size +
        • Call Chain = __rt_entry_main ⇒ main ⇒ mymain ⇒ OLED_Cache_to_hardware ⇒ OLED_Set_Pos ⇒ OLED_WrCmd ⇒ IIC_SAND_DATE ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnMasterAddressFlagUntilTimeout

        [Calls]
        • >>   main
        • >>   exit
        -

        __rt_entry_postli_1 (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$0000000C)) +

        __rt_entry_postli_1 (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$0000000C))

        __rt_exit (Thumb, 0 bytes, Stack size unknown bytes, rtexit.o(.ARM.Collect$$rtexit$$00000000))

        [Called By]

        • >>   exit @@ -218,7 +218,7 @@ Global Symbols

          [Calls]
          • >>   __rt_lib_shutdown
          -

          __rt_exit_prels_1 (Thumb, 0 bytes, Stack size unknown bytes, rtexit2.o(.ARM.Collect$$rtexit$$00000002)) +

          __rt_exit_prels_1 (Thumb, 0 bytes, Stack size unknown bytes, rtexit2.o(.ARM.Collect$$rtexit$$00000002))

          __rt_exit_exit (Thumb, 0 bytes, Stack size unknown bytes, rtexit2.o(.ARM.Collect$$rtexit$$00000004))

          [Calls]

          • >>   _sys_exit @@ -364,23 +364,23 @@ Global Symbols

            [Called By]
            • >>   __user_setup_stackheap
            -

            __aeabi_memclr4 (Thumb, 0 bytes, Stack size 4 bytes, rt_memclr_w.o(.text)) +

            __aeabi_memclr4 (Thumb, 0 bytes, Stack size 4 bytes, rt_memclr_w.o(.text))

            [Stack]

            • Max Depth = 4
            • Call Chain = __aeabi_memclr4
            -
            [Called By]
            • >>   SystemClock_Config +
              [Called By]
              • >>   SystemClock_Config
              -

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

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

              __rt_memclr_w (Thumb, 78 bytes, Stack size 4 bytes, rt_memclr_w.o(.text), UNUSED) +

              __rt_memclr_w (Thumb, 78 bytes, Stack size 4 bytes, rt_memclr_w.o(.text), UNUSED) -

              _memset_w (Thumb, 0 bytes, Stack size unknown bytes, rt_memclr_w.o(.text), UNUSED) +

              _memset_w (Thumb, 0 bytes, Stack size unknown bytes, rt_memclr_w.o(.text), UNUSED) -

              __use_two_region_memory (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED) +

              __use_two_region_memory (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED) -

              __rt_heap_escrow$2region (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED) +

              __rt_heap_escrow$2region (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED) -

              __rt_heap_expand$2region (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED) +

              __rt_heap_expand$2region (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED)

              __user_setup_stackheap (Thumb, 74 bytes, Stack size 8 bytes, sys_stackheap_outer.o(.text))

              [Stack]

              • Max Depth = 8 + Unknown Stack Size @@ -401,21 +401,21 @@ Global Symbols
                [Called By]
                • >>   __rt_entry_main
                -

                __user_libspace (Thumb, 8 bytes, Stack size 0 bytes, libspace.o(.text), UNUSED) +

                __user_libspace (Thumb, 8 bytes, Stack size 0 bytes, libspace.o(.text), UNUSED)

                __user_perproc_libspace (Thumb, 0 bytes, Stack size 0 bytes, libspace.o(.text))

                [Called By]

                • >>   __user_setup_stackheap
                -

                __user_perthread_libspace (Thumb, 0 bytes, Stack size 0 bytes, libspace.o(.text), UNUSED) +

                __user_perthread_libspace (Thumb, 0 bytes, Stack size 0 bytes, libspace.o(.text), UNUSED)

                _sys_exit (Thumb, 8 bytes, Stack size 0 bytes, sys_exit.o(.text))

                [Called By]

                • >>   __rt_exit_exit
                -

                __I$use$semihosting (Thumb, 0 bytes, Stack size 0 bytes, use_no_semi.o(.text), UNUSED) +

                __I$use$semihosting (Thumb, 0 bytes, Stack size 0 bytes, use_no_semi.o(.text), UNUSED) -

                __use_no_semihosting_swi (Thumb, 2 bytes, Stack size 0 bytes, use_no_semi.o(.text), UNUSED) +

                __use_no_semihosting_swi (Thumb, 2 bytes, Stack size 0 bytes, use_no_semi.o(.text), UNUSED)

                BusFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.BusFault_Handler))

                [Calls]

                • >>   BusFault_Handler @@ -424,7 +424,7 @@ Global Symbols

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

                __semihosting_library_function (Thumb, 0 bytes, Stack size 0 bytes, indicate_semi.o(.text), UNUSED) +

                __semihosting_library_function (Thumb, 0 bytes, Stack size 0 bytes, indicate_semi.o(.text), UNUSED)

                DebugMon_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.DebugMon_Handler))
                [Address Reference Count : 1]

                • startup_stm32f103xb.o(RESET) @@ -436,8 +436,8 @@ Global Symbols
                • >>   MX_GPIO_Init
                -

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

                [Called By]

                • >>   mymain +

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

                  [Called By]

                  • >>   mymain

                  HAL_GPIO_WritePin (Thumb, 10 bytes, Stack size 0 bytes, stm32f1xx_hal_gpio.o(i.HAL_GPIO_WritePin)) @@ -450,7 +450,7 @@ Global Symbols

                • >>   I2C_WaitOnMasterAddressFlagUntilTimeout
                • >>   I2C_WaitOnFlagUntilTimeout
                • >>   I2C_WaitOnBTFFlagUntilTimeout -
                • >>   mymain +
                • >>   mymain
                • >>   HAL_RCC_OscConfig
                • >>   HAL_RCC_ClockConfig
                @@ -484,7 +484,7 @@ Global Symbols
                [Called By]
                • >>   HAL_I2C_Init
                -

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

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

                [Called By]

                • >>   SysTick_Handler
                @@ -533,7 +533,7 @@ Global Symbols
              • >>   HAL_RCC_GetSysClockFreq
              • >>   HAL_InitTick
              -
              [Called By]
              • >>   SystemClock_Config +
                [Called By]
                • >>   SystemClock_Config

                HAL_RCC_GetPCLK1Freq (Thumb, 20 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq)) @@ -551,7 +551,7 @@ Global Symbols


              [Calls]
              • >>   HAL_GetTick
              -
              [Called By]
              • >>   SystemClock_Config +
                [Called By]
                • >>   SystemClock_Config

                HAL_SYSTICK_Config (Thumb, 40 bytes, Stack size 8 bytes, stm32f1xx_hal_cortex.o(i.HAL_SYSTICK_Config)) @@ -574,8 +574,8 @@ Global Symbols


              [Calls]
              • >>   HAL_I2C_Mem_Write
              -
              [Called By]
              • >>   OLED_WrDat -
              • >>   OLED_WrCmd +
                [Called By]
                • >>   OLED_WrDat +
                • >>   OLED_WrCmd

                MemManage_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.MemManage_Handler)) @@ -592,53 +592,67 @@ Global Symbols


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

              OLED_Init (Thumb, 138 bytes, Stack size 8 bytes, oled.o(i.OLED_Init)) +

              OLED_Cache_to_hardware (Thumb, 48 bytes, Stack size 24 bytes, oled.o(i.OLED_Cache_to_hardware)) +

              [Stack]

              • Max Depth = 192
              • Call Chain = OLED_Cache_to_hardware ⇒ OLED_Set_Pos ⇒ OLED_WrCmd ⇒ IIC_SAND_DATE ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnMasterAddressFlagUntilTimeout +
              +
              [Calls]
              • >>   OLED_WrDat +
              • >>   OLED_Set_Pos +
              +
              [Called By]
              • >>   mymain +
              + +

              OLED_Init (Thumb, 138 bytes, Stack size 8 bytes, oled.o(i.OLED_Init))

              [Stack]

              • Max Depth = 168
              • Call Chain = OLED_Init ⇒ OLED_WrCmd ⇒ IIC_SAND_DATE ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnMasterAddressFlagUntilTimeout
              -
              [Calls]
              • >>   OLED_WrCmd +
                [Calls]
                • >>   OLED_WrCmd
                -
                [Called By]
                • >>   mymain +
                  [Called By]
                  • >>   mymain
                  -

                  OLED_Init_Display_Buffer (Thumb, 40 bytes, Stack size 16 bytes, oled.o(i.OLED_Init_Display_Buffer), UNUSED) -

                  [Calls]

                  • >>   OLED_WrDat -
                  • >>   OLED_Set_Pos +

                    OLED_Init_Display_Buffer (Thumb, 40 bytes, Stack size 16 bytes, oled.o(i.OLED_Init_Display_Buffer), UNUSED) +

                    [Calls]

                    • >>   OLED_WrDat +
                    • >>   OLED_Set_Pos
                    -

                    OLED_Pix (Thumb, 28 bytes, Stack size 16 bytes, oled.o(i.OLED_Pix)) -

                    [Stack]

                    • Max Depth = 184
                    • Call Chain = OLED_Pix ⇒ OLED_Set_Pos ⇒ OLED_WrCmd ⇒ IIC_SAND_DATE ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnMasterAddressFlagUntilTimeout +

                      OLED_Pix (Thumb, 146 bytes, Stack size 52 bytes, oled.o(i.OLED_Pix)) +

                      [Stack]

                      • Max Depth = 60
                      • Call Chain = OLED_Pix ⇒ OLED_set_dot
                      -
                      [Calls]
                      • >>   OLED_WrDat -
                      • >>   OLED_Set_Pos +
                        [Calls]
                        • >>   OLED_set_dot
                        -
                        [Called By]
                        • >>   mymain +
                          [Called By]
                          • >>   mymain
                          -

                          OLED_Set_Pos (Thumb, 36 bytes, Stack size 8 bytes, oled.o(i.OLED_Set_Pos)) +

                          OLED_Set_Pos (Thumb, 36 bytes, Stack size 8 bytes, oled.o(i.OLED_Set_Pos))

                          [Stack]

                          • Max Depth = 168
                          • Call Chain = OLED_Set_Pos ⇒ OLED_WrCmd ⇒ IIC_SAND_DATE ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnMasterAddressFlagUntilTimeout
                          -
                          [Calls]
                          • >>   OLED_WrCmd +
                            [Calls]
                            • >>   OLED_WrCmd
                            -
                            [Called By]
                            • >>   OLED_Init_Display_Buffer -
                            • >>   OLED_Pix +
                              [Called By]
                              • >>   OLED_Init_Display_Buffer +
                              • >>   OLED_Cache_to_hardware
                              -

                              OLED_WrCmd (Thumb, 16 bytes, Stack size 8 bytes, oled.o(i.OLED_WrCmd)) +

                              OLED_WrCmd (Thumb, 16 bytes, Stack size 8 bytes, oled.o(i.OLED_WrCmd))

                              [Stack]

                              • Max Depth = 160
                              • Call Chain = OLED_WrCmd ⇒ IIC_SAND_DATE ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnMasterAddressFlagUntilTimeout

                              [Calls]
                              • >>   IIC_SAND_DATE
                              -
                              [Called By]
                              • >>   OLED_Set_Pos -
                              • >>   OLED_Init +
                                [Called By]
                                • >>   OLED_Set_Pos +
                                • >>   OLED_Init
                                -

                                OLED_WrDat (Thumb, 16 bytes, Stack size 8 bytes, oled.o(i.OLED_WrDat)) +

                                OLED_WrDat (Thumb, 16 bytes, Stack size 8 bytes, oled.o(i.OLED_WrDat))

                                [Stack]

                                • Max Depth = 160
                                • Call Chain = OLED_WrDat ⇒ IIC_SAND_DATE ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnMasterAddressFlagUntilTimeout

                                [Calls]
                                • >>   IIC_SAND_DATE
                                -
                                [Called By]
                                • >>   OLED_Init_Display_Buffer -
                                • >>   OLED_Pix +
                                  [Called By]
                                  • >>   OLED_Init_Display_Buffer +
                                  • >>   OLED_Cache_to_hardware +
                                  + +

                                  OLED_set_dot (Thumb, 56 bytes, Stack size 8 bytes, oled.o(i.OLED_set_dot)) +

                                  [Stack]

                                  • Max Depth = 8
                                  • Call Chain = OLED_set_dot +
                                  +
                                  [Called By]
                                  • >>   OLED_Pix

                                  PendSV_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.PendSV_Handler)) @@ -648,16 +662,16 @@ Global Symbols
                                  [Address Reference Count : 1]

                                  • startup_stm32f103xb.o(RESET)

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

                                  [Calls]

                                  • >>   HAL_IncTick +

                                    [Calls]
                                    • >>   HAL_IncTick

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

                                    SystemClock_Config (Thumb, 94 bytes, Stack size 72 bytes, main.o(i.SystemClock_Config)) +

                                    SystemClock_Config (Thumb, 94 bytes, Stack size 72 bytes, main.o(i.SystemClock_Config))

                                    [Stack]

                                    • Max Depth = 136
                                    • Call Chain = SystemClock_Config ⇒ HAL_RCC_ClockConfig ⇒ HAL_InitTick ⇒ HAL_NVIC_SetPriority

                                    [Calls]
                                    • >>   HAL_RCC_OscConfig
                                    • >>   HAL_RCC_ClockConfig -
                                    • >>   __aeabi_memclr4 +
                                    • >>   __aeabi_memclr4

                                    [Called By]
                                    • >>   main
                                    @@ -673,24 +687,25 @@ Global Symbols
                                    [Address Reference Count : 1]
                                    • startup_stm32f103xb.o(RESET)

                                    main (Thumb, 58 bytes, Stack size 0 bytes, main.o(i.main)) -

                                    [Stack]

                                    • Max Depth = 192
                                    • Call Chain = main ⇒ mymain ⇒ OLED_Pix ⇒ OLED_Set_Pos ⇒ OLED_WrCmd ⇒ IIC_SAND_DATE ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnMasterAddressFlagUntilTimeout +

                                      [Stack]
                                      • Max Depth = 208
                                      • Call Chain = main ⇒ mymain ⇒ OLED_Cache_to_hardware ⇒ OLED_Set_Pos ⇒ OLED_WrCmd ⇒ IIC_SAND_DATE ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnMasterAddressFlagUntilTimeout
                                      -
                                      [Calls]
                                      • >>   mymain +
                                        [Calls]
                                        • >>   mymain
                                        • >>   HAL_Init
                                        • >>   HAL_I2C_Init -
                                        • >>   SystemClock_Config +
                                        • >>   SystemClock_Config
                                        • >>   MX_GPIO_Init

                                        [Called By]
                                        • >>   __rt_entry_main
                                        -

                                        mymain (Thumb, 54 bytes, Stack size 8 bytes, mymain.o(i.mymain)) -

                                        [Stack]

                                        • Max Depth = 192
                                        • Call Chain = mymain ⇒ OLED_Pix ⇒ OLED_Set_Pos ⇒ OLED_WrCmd ⇒ IIC_SAND_DATE ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnMasterAddressFlagUntilTimeout +

                                          mymain (Thumb, 98 bytes, Stack size 16 bytes, mymain.o(i.mymain)) +

                                          [Stack]

                                          • Max Depth = 208
                                          • Call Chain = mymain ⇒ OLED_Cache_to_hardware ⇒ OLED_Set_Pos ⇒ OLED_WrCmd ⇒ IIC_SAND_DATE ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnMasterAddressFlagUntilTimeout

                                          [Calls]
                                          • >>   HAL_GetTick -
                                          • >>   HAL_GPIO_TogglePin -
                                          • >>   OLED_Pix -
                                          • >>   OLED_Init +
                                          • >>   HAL_GPIO_TogglePin +
                                          • >>   OLED_Pix +
                                          • >>   OLED_Init +
                                          • >>   OLED_Cache_to_hardware

                                          [Called By]
                                          • >>   main
                                          diff --git a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.map b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.map index 3d019a0..e925ecc 100644 --- a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.map +++ b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.map @@ -286,6 +286,7 @@ Section Cross References hread_interface.o(i.IIC_SAND_DATE) refers to main.o(.bss) for hi2c1 mymain.o(i.mymain) refers to oled.o(i.OLED_Init) for OLED_Init mymain.o(i.mymain) refers to oled.o(i.OLED_Pix) for OLED_Pix + mymain.o(i.mymain) refers to oled.o(i.OLED_Cache_to_hardware) for OLED_Cache_to_hardware mymain.o(i.mymain) refers to stm32f1xx_hal.o(i.HAL_GetTick) for HAL_GetTick mymain.o(i.mymain) refers to stm32f1xx_hal_gpio.o(i.HAL_GPIO_TogglePin) for HAL_GPIO_TogglePin mymain.o(i.mymain) refers to mymain.o(.constdata) for .constdata @@ -296,8 +297,7 @@ Section Cross References oled.o(i.OLED_Init) refers to oled.o(i.OLED_Init_Display_Buffer) for OLED_Init_Display_Buffer oled.o(i.OLED_Init_Display_Buffer) refers to oled.o(i.OLED_Set_Pos) for OLED_Set_Pos oled.o(i.OLED_Init_Display_Buffer) refers to oled.o(i.OLED_WrDat) for OLED_WrDat - oled.o(i.OLED_Pix) refers to oled.o(i.OLED_Set_Pos) for OLED_Set_Pos - oled.o(i.OLED_Pix) refers to oled.o(i.OLED_WrDat) for OLED_WrDat + oled.o(i.OLED_Pix) refers to oled.o(i.OLED_set_dot) for OLED_set_dot oled.o(i.OLED_Set_Pos) refers to oled.o(i.OLED_WrCmd) for OLED_WrCmd oled.o(i.OLED_Setting_luminance) refers to oled.o(i.OLED_WrCmd) for OLED_WrCmd oled.o(i.OLED_Setting_luminance) refers to dflt_clz.o(x$fpl$dfltu) for __aeabi_ui2d @@ -680,15 +680,12 @@ Removing Unused input sections from the image. Removing oled.o(.rev16_text), (4 bytes). Removing oled.o(.revsh_text), (4 bytes). Removing oled.o(.rrx_text), (6 bytes). - Removing oled.o(i.OLED_Cache_to_hardware), (52 bytes). Removing oled.o(i.OLED_Setting_luminance), (44 bytes). Removing oled.o(i.OLED_ShowChar), (92 bytes). Removing oled.o(i.OLED_ShowStr), (48 bytes). - Removing oled.o(i.OLED_set_dot), (60 bytes). - Removing oled.o(.bss), (1024 bytes). Removing oled.o(.constdata), (1520 bytes). -260 unused section(s) (total 22878 bytes) removed from the image. +257 unused section(s) (total 21742 bytes) removed from the image. ============================================================================== @@ -720,49 +717,49 @@ Image Symbol Table ../clib/angel/boardlib.s 0x00000000 Number 0 boardinit2.o ABSOLUTE ../clib/angel/boardlib.s 0x00000000 Number 0 boardinit3.o ABSOLUTE ../clib/angel/boardlib.s 0x00000000 Number 0 boardshut.o ABSOLUTE - ../clib/angel/handlers.s 0x00000000 Number 0 __scatter_zi.o ABSOLUTE ../clib/angel/handlers.s 0x00000000 Number 0 __scatter_copy.o ABSOLUTE - ../clib/angel/kernel.s 0x00000000 Number 0 __rtentry.o ABSOLUTE + ../clib/angel/handlers.s 0x00000000 Number 0 __scatter_zi.o ABSOLUTE ../clib/angel/kernel.s 0x00000000 Number 0 __rtentry2.o ABSOLUTE ../clib/angel/kernel.s 0x00000000 Number 0 __rtentry4.o ABSOLUTE ../clib/angel/kernel.s 0x00000000 Number 0 rtexit.o ABSOLUTE ../clib/angel/kernel.s 0x00000000 Number 0 rtexit2.o ABSOLUTE + ../clib/angel/kernel.s 0x00000000 Number 0 __rtentry.o ABSOLUTE ../clib/angel/rt.s 0x00000000 Number 0 rt_raise.o ABSOLUTE ../clib/angel/scatter.s 0x00000000 Number 0 __scatter.o ABSOLUTE ../clib/angel/startup.s 0x00000000 Number 0 __main.o ABSOLUTE - ../clib/angel/sys.s 0x00000000 Number 0 sys_stackheap_outer.o ABSOLUTE - ../clib/angel/sys.s 0x00000000 Number 0 libspace.o ABSOLUTE ../clib/angel/sys.s 0x00000000 Number 0 indicate_semi.o ABSOLUTE + ../clib/angel/sys.s 0x00000000 Number 0 libspace.o ABSOLUTE + ../clib/angel/sys.s 0x00000000 Number 0 sys_stackheap_outer.o ABSOLUTE ../clib/angel/sys.s 0x00000000 Number 0 use_no_semi.o ABSOLUTE + ../clib/angel/sysapp.c 0x00000000 Number 0 sys_command.o ABSOLUTE ../clib/angel/sysapp.c 0x00000000 Number 0 sys_wrch.o ABSOLUTE ../clib/angel/sysapp.c 0x00000000 Number 0 sys_exit.o ABSOLUTE - ../clib/angel/sysapp.c 0x00000000 Number 0 sys_command.o ABSOLUTE - ../clib/armsys.c 0x00000000 Number 0 argv_veneer.o ABSOLUTE + ../clib/armsys.c 0x00000000 Number 0 _get_argv_nomalloc.o ABSOLUTE ../clib/armsys.c 0x00000000 Number 0 no_argv.o ABSOLUTE ../clib/armsys.c 0x00000000 Number 0 argv_veneer.o ABSOLUTE - ../clib/armsys.c 0x00000000 Number 0 _get_argv_nomalloc.o ABSOLUTE + ../clib/armsys.c 0x00000000 Number 0 argv_veneer.o ABSOLUTE ../clib/heapalloc.c 0x00000000 Number 0 hrguard.o ABSOLUTE ../clib/heapaux.c 0x00000000 Number 0 heapauxi.o ABSOLUTE ../clib/libinit.s 0x00000000 Number 0 libinit.o ABSOLUTE - ../clib/libinit.s 0x00000000 Number 0 libinit2.o ABSOLUTE - ../clib/libinit.s 0x00000000 Number 0 libshutdown2.o ABSOLUTE ../clib/libinit.s 0x00000000 Number 0 libshutdown.o ABSOLUTE + ../clib/libinit.s 0x00000000 Number 0 libshutdown2.o ABSOLUTE + ../clib/libinit.s 0x00000000 Number 0 libinit2.o ABSOLUTE ../clib/longlong.s 0x00000000 Number 0 llushr.o ABSOLUTE ../clib/memcpset.s 0x00000000 Number 0 rt_memclr_w.o ABSOLUTE - ../clib/signal.c 0x00000000 Number 0 defsig_rtmem_inner.o ABSOLUTE - ../clib/signal.c 0x00000000 Number 0 defsig_cppl_inner.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_exit.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_rtred_inner.o ABSOLUTE ../clib/signal.c 0x00000000 Number 0 defsig_rtmem_outer.o ABSOLUTE ../clib/signal.c 0x00000000 Number 0 defsig_rtmem_formal.o ABSOLUTE - ../clib/signal.c 0x00000000 Number 0 defsig_other.o ABSOLUTE - ../clib/signal.c 0x00000000 Number 0 defsig_exit.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_rtmem_inner.o ABSOLUTE ../clib/signal.c 0x00000000 Number 0 __raise.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_other.o ABSOLUTE ../clib/signal.c 0x00000000 Number 0 defsig_general.o ABSOLUTE - ../clib/signal.c 0x00000000 Number 0 defsig_fpe_inner.o ABSOLUTE ../clib/signal.c 0x00000000 Number 0 defsig_segv_inner.o ABSOLUTE - ../clib/signal.c 0x00000000 Number 0 defsig_rtred_inner.o ABSOLUTE - ../clib/signal.c 0x00000000 Number 0 defsig_stak_inner.o ABSOLUTE - ../clib/signal.c 0x00000000 Number 0 defsig_pvfn_inner.o ABSOLUTE ../clib/signal.c 0x00000000 Number 0 defsig_abrt_inner.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_fpe_inner.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_cppl_inner.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_pvfn_inner.o ABSOLUTE + ../clib/signal.c 0x00000000 Number 0 defsig_stak_inner.o ABSOLUTE ../clib/signal.s 0x00000000 Number 0 defsig.o ABSOLUTE ../clib/stdlib.c 0x00000000 Number 0 exit.o ABSOLUTE ../fplib/dfixu.s 0x00000000 Number 0 dfixu.o ABSOLUTE @@ -893,34 +890,37 @@ Image Symbol Table MX_GPIO_Init 0x08001051 Thumb Code 150 main.o(i.MX_GPIO_Init) i.MemManage_Handler 0x080010f0 Section 0 stm32f1xx_it.o(i.MemManage_Handler) i.NMI_Handler 0x080010f2 Section 0 stm32f1xx_it.o(i.NMI_Handler) - i.OLED_Init 0x080010f4 Section 0 oled.o(i.OLED_Init) - i.OLED_Init_Display_Buffer 0x0800117e Section 0 oled.o(i.OLED_Init_Display_Buffer) - i.OLED_Pix 0x080011a6 Section 0 oled.o(i.OLED_Pix) - i.OLED_Set_Pos 0x080011c2 Section 0 oled.o(i.OLED_Set_Pos) - i.OLED_WrCmd 0x080011e6 Section 0 oled.o(i.OLED_WrCmd) - i.OLED_WrDat 0x080011f6 Section 0 oled.o(i.OLED_WrDat) - i.PendSV_Handler 0x08001206 Section 0 stm32f1xx_it.o(i.PendSV_Handler) - i.SVC_Handler 0x08001208 Section 0 stm32f1xx_it.o(i.SVC_Handler) - i.SysTick_Handler 0x0800120a Section 0 stm32f1xx_it.o(i.SysTick_Handler) - i.SystemClock_Config 0x0800120e Section 0 main.o(i.SystemClock_Config) - i.SystemInit 0x0800126c Section 0 system_stm32f1xx.o(i.SystemInit) - i.UsageFault_Handler 0x0800126e Section 0 stm32f1xx_it.o(i.UsageFault_Handler) - i.__NVIC_SetPriority 0x08001270 Section 0 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) - __NVIC_SetPriority 0x08001271 Thumb Code 32 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) - i.main 0x08001290 Section 0 main.o(i.main) - i.mymain 0x080012d8 Section 0 mymain.o(i.mymain) - .constdata 0x08001318 Section 16 system_stm32f1xx.o(.constdata) - .constdata 0x08001328 Section 8 system_stm32f1xx.o(.constdata) - .constdata 0x08001330 Section 144 mymain.o(.constdata) + i.OLED_Cache_to_hardware 0x080010f4 Section 0 oled.o(i.OLED_Cache_to_hardware) + i.OLED_Init 0x08001128 Section 0 oled.o(i.OLED_Init) + i.OLED_Init_Display_Buffer 0x080011b2 Section 0 oled.o(i.OLED_Init_Display_Buffer) + i.OLED_Pix 0x080011da Section 0 oled.o(i.OLED_Pix) + i.OLED_Set_Pos 0x0800126c Section 0 oled.o(i.OLED_Set_Pos) + i.OLED_WrCmd 0x08001290 Section 0 oled.o(i.OLED_WrCmd) + i.OLED_WrDat 0x080012a0 Section 0 oled.o(i.OLED_WrDat) + i.OLED_set_dot 0x080012b0 Section 0 oled.o(i.OLED_set_dot) + i.PendSV_Handler 0x080012ec Section 0 stm32f1xx_it.o(i.PendSV_Handler) + i.SVC_Handler 0x080012ee Section 0 stm32f1xx_it.o(i.SVC_Handler) + i.SysTick_Handler 0x080012f0 Section 0 stm32f1xx_it.o(i.SysTick_Handler) + i.SystemClock_Config 0x080012f4 Section 0 main.o(i.SystemClock_Config) + i.SystemInit 0x08001352 Section 0 system_stm32f1xx.o(i.SystemInit) + i.UsageFault_Handler 0x08001354 Section 0 stm32f1xx_it.o(i.UsageFault_Handler) + i.__NVIC_SetPriority 0x08001356 Section 0 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) + __NVIC_SetPriority 0x08001357 Thumb Code 32 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) + i.main 0x08001378 Section 0 main.o(i.main) + i.mymain 0x080013c0 Section 0 mymain.o(i.mymain) + .constdata 0x0800142c Section 16 system_stm32f1xx.o(.constdata) + .constdata 0x0800143c Section 8 system_stm32f1xx.o(.constdata) + .constdata 0x08001444 Section 150 mymain.o(.constdata) .data 0x20000000 Section 12 stm32f1xx_hal.o(.data) .data 0x2000000c Section 4 system_stm32f1xx.o(.data) .bss 0x20000010 Section 84 main.o(.bss) - .bss 0x20000064 Section 96 libspace.o(.bss) - HEAP 0x200000c8 Section 512 startup_stm32f103xb.o(HEAP) - Heap_Mem 0x200000c8 Data 512 startup_stm32f103xb.o(HEAP) - STACK 0x200002c8 Section 1024 startup_stm32f103xb.o(STACK) - Stack_Mem 0x200002c8 Data 1024 startup_stm32f103xb.o(STACK) - __initial_sp 0x200006c8 Data 0 startup_stm32f103xb.o(STACK) + .bss 0x20000064 Section 1024 oled.o(.bss) + .bss 0x20000464 Section 96 libspace.o(.bss) + HEAP 0x200004c8 Section 512 startup_stm32f103xb.o(HEAP) + Heap_Mem 0x200004c8 Data 512 startup_stm32f103xb.o(HEAP) + STACK 0x200006c8 Section 1024 startup_stm32f103xb.o(STACK) + Stack_Mem 0x200006c8 Data 1024 startup_stm32f103xb.o(STACK) + __initial_sp 0x20000ac8 Data 0 startup_stm32f103xb.o(STACK) Global Symbols @@ -1094,32 +1094,35 @@ Image Symbol Table IIC_SAND_DATE 0x08001035 Thumb Code 22 hread_interface.o(i.IIC_SAND_DATE) MemManage_Handler 0x080010f1 Thumb Code 2 stm32f1xx_it.o(i.MemManage_Handler) NMI_Handler 0x080010f3 Thumb Code 2 stm32f1xx_it.o(i.NMI_Handler) - OLED_Init 0x080010f5 Thumb Code 138 oled.o(i.OLED_Init) - OLED_Init_Display_Buffer 0x0800117f Thumb Code 40 oled.o(i.OLED_Init_Display_Buffer) - OLED_Pix 0x080011a7 Thumb Code 28 oled.o(i.OLED_Pix) - OLED_Set_Pos 0x080011c3 Thumb Code 36 oled.o(i.OLED_Set_Pos) - OLED_WrCmd 0x080011e7 Thumb Code 16 oled.o(i.OLED_WrCmd) - OLED_WrDat 0x080011f7 Thumb Code 16 oled.o(i.OLED_WrDat) - PendSV_Handler 0x08001207 Thumb Code 2 stm32f1xx_it.o(i.PendSV_Handler) - SVC_Handler 0x08001209 Thumb Code 2 stm32f1xx_it.o(i.SVC_Handler) - SysTick_Handler 0x0800120b Thumb Code 4 stm32f1xx_it.o(i.SysTick_Handler) - SystemClock_Config 0x0800120f Thumb Code 94 main.o(i.SystemClock_Config) - SystemInit 0x0800126d Thumb Code 2 system_stm32f1xx.o(i.SystemInit) - UsageFault_Handler 0x0800126f Thumb Code 2 stm32f1xx_it.o(i.UsageFault_Handler) - main 0x08001291 Thumb Code 58 main.o(i.main) - mymain 0x080012d9 Thumb Code 54 mymain.o(i.mymain) - AHBPrescTable 0x08001318 Data 16 system_stm32f1xx.o(.constdata) - APBPrescTable 0x08001328 Data 8 system_stm32f1xx.o(.constdata) - testbmp 0x08001330 Data 144 mymain.o(.constdata) - Region$$Table$$Base 0x080013c0 Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x080013e0 Number 0 anon$$obj.o(Region$$Table) + OLED_Cache_to_hardware 0x080010f5 Thumb Code 48 oled.o(i.OLED_Cache_to_hardware) + OLED_Init 0x08001129 Thumb Code 138 oled.o(i.OLED_Init) + OLED_Init_Display_Buffer 0x080011b3 Thumb Code 40 oled.o(i.OLED_Init_Display_Buffer) + OLED_Pix 0x080011db Thumb Code 146 oled.o(i.OLED_Pix) + OLED_Set_Pos 0x0800126d Thumb Code 36 oled.o(i.OLED_Set_Pos) + OLED_WrCmd 0x08001291 Thumb Code 16 oled.o(i.OLED_WrCmd) + OLED_WrDat 0x080012a1 Thumb Code 16 oled.o(i.OLED_WrDat) + OLED_set_dot 0x080012b1 Thumb Code 56 oled.o(i.OLED_set_dot) + PendSV_Handler 0x080012ed Thumb Code 2 stm32f1xx_it.o(i.PendSV_Handler) + SVC_Handler 0x080012ef Thumb Code 2 stm32f1xx_it.o(i.SVC_Handler) + SysTick_Handler 0x080012f1 Thumb Code 4 stm32f1xx_it.o(i.SysTick_Handler) + SystemClock_Config 0x080012f5 Thumb Code 94 main.o(i.SystemClock_Config) + SystemInit 0x08001353 Thumb Code 2 system_stm32f1xx.o(i.SystemInit) + UsageFault_Handler 0x08001355 Thumb Code 2 stm32f1xx_it.o(i.UsageFault_Handler) + main 0x08001379 Thumb Code 58 main.o(i.main) + mymain 0x080013c1 Thumb Code 98 mymain.o(i.mymain) + AHBPrescTable 0x0800142c Data 16 system_stm32f1xx.o(.constdata) + APBPrescTable 0x0800143c Data 8 system_stm32f1xx.o(.constdata) + testbmp 0x08001444 Data 150 mymain.o(.constdata) + Region$$Table$$Base 0x080014dc Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x080014fc Number 0 anon$$obj.o(Region$$Table) uwTickFreq 0x20000000 Data 1 stm32f1xx_hal.o(.data) uwTickPrio 0x20000004 Data 4 stm32f1xx_hal.o(.data) uwTick 0x20000008 Data 4 stm32f1xx_hal.o(.data) SystemCoreClock 0x2000000c Data 4 system_stm32f1xx.o(.data) hi2c1 0x20000010 Data 84 main.o(.bss) - __libspace_start 0x20000064 Data 96 libspace.o(.bss) - __temporary_stack_top$libspace 0x200000c4 Data 0 libspace.o(.bss) + OLED_buff 0x20000064 Data 1024 oled.o(.bss) + __libspace_start 0x20000464 Data 96 libspace.o(.bss) + __temporary_stack_top$libspace 0x200004c4 Data 0 libspace.o(.bss) @@ -1129,9 +1132,9 @@ Memory Map of the image Image Entry point : 0x080000ed - Load Region LR_IROM1 (Base: 0x08000000, Size: 0x000013f0, Max: 0x00010000, ABSOLUTE) + Load Region LR_IROM1 (Base: 0x08000000, Size: 0x0000150c, Max: 0x00010000, ABSOLUTE) - Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x000013e0, Max: 0x00010000, ABSOLUTE) + Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x000014fc, Max: 0x00010000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object @@ -1227,38 +1230,43 @@ Memory Map of the image 0x08001050 0x08001050 0x000000a0 Code RO 14 i.MX_GPIO_Init main.o 0x080010f0 0x080010f0 0x00000002 Code RO 151 i.MemManage_Handler stm32f1xx_it.o 0x080010f2 0x080010f2 0x00000002 Code RO 152 i.NMI_Handler stm32f1xx_it.o - 0x080010f4 0x080010f4 0x0000008a Code RO 1844 i.OLED_Init oled.o - 0x0800117e 0x0800117e 0x00000028 Code RO 1845 i.OLED_Init_Display_Buffer oled.o - 0x080011a6 0x080011a6 0x0000001c Code RO 1846 i.OLED_Pix oled.o - 0x080011c2 0x080011c2 0x00000024 Code RO 1847 i.OLED_Set_Pos oled.o - 0x080011e6 0x080011e6 0x00000010 Code RO 1851 i.OLED_WrCmd oled.o - 0x080011f6 0x080011f6 0x00000010 Code RO 1852 i.OLED_WrDat oled.o - 0x08001206 0x08001206 0x00000002 Code RO 153 i.PendSV_Handler stm32f1xx_it.o - 0x08001208 0x08001208 0x00000002 Code RO 154 i.SVC_Handler stm32f1xx_it.o - 0x0800120a 0x0800120a 0x00000004 Code RO 155 i.SysTick_Handler stm32f1xx_it.o - 0x0800120e 0x0800120e 0x0000005e Code RO 15 i.SystemClock_Config main.o - 0x0800126c 0x0800126c 0x00000002 Code RO 1739 i.SystemInit system_stm32f1xx.o - 0x0800126e 0x0800126e 0x00000002 Code RO 156 i.UsageFault_Handler stm32f1xx_it.o - 0x08001270 0x08001270 0x00000020 Code RO 1215 i.__NVIC_SetPriority stm32f1xx_hal_cortex.o - 0x08001290 0x08001290 0x00000048 Code RO 16 i.main main.o - 0x080012d8 0x080012d8 0x00000040 Code RO 1810 i.mymain mymain.o - 0x08001318 0x08001318 0x00000010 Data RO 1740 .constdata system_stm32f1xx.o - 0x08001328 0x08001328 0x00000008 Data RO 1741 .constdata system_stm32f1xx.o - 0x08001330 0x08001330 0x00000090 Data RO 1811 .constdata mymain.o - 0x080013c0 0x080013c0 0x00000020 Data RO 2110 Region$$Table anon$$obj.o + 0x080010f4 0x080010f4 0x00000034 Code RO 1843 i.OLED_Cache_to_hardware oled.o + 0x08001128 0x08001128 0x0000008a Code RO 1844 i.OLED_Init oled.o + 0x080011b2 0x080011b2 0x00000028 Code RO 1845 i.OLED_Init_Display_Buffer oled.o + 0x080011da 0x080011da 0x00000092 Code RO 1846 i.OLED_Pix oled.o + 0x0800126c 0x0800126c 0x00000024 Code RO 1847 i.OLED_Set_Pos oled.o + 0x08001290 0x08001290 0x00000010 Code RO 1851 i.OLED_WrCmd oled.o + 0x080012a0 0x080012a0 0x00000010 Code RO 1852 i.OLED_WrDat oled.o + 0x080012b0 0x080012b0 0x0000003c Code RO 1853 i.OLED_set_dot oled.o + 0x080012ec 0x080012ec 0x00000002 Code RO 153 i.PendSV_Handler stm32f1xx_it.o + 0x080012ee 0x080012ee 0x00000002 Code RO 154 i.SVC_Handler stm32f1xx_it.o + 0x080012f0 0x080012f0 0x00000004 Code RO 155 i.SysTick_Handler stm32f1xx_it.o + 0x080012f4 0x080012f4 0x0000005e Code RO 15 i.SystemClock_Config main.o + 0x08001352 0x08001352 0x00000002 Code RO 1739 i.SystemInit system_stm32f1xx.o + 0x08001354 0x08001354 0x00000002 Code RO 156 i.UsageFault_Handler stm32f1xx_it.o + 0x08001356 0x08001356 0x00000020 Code RO 1215 i.__NVIC_SetPriority stm32f1xx_hal_cortex.o + 0x08001376 0x08001376 0x00000002 PAD + 0x08001378 0x08001378 0x00000048 Code RO 16 i.main main.o + 0x080013c0 0x080013c0 0x0000006c Code RO 1810 i.mymain mymain.o + 0x0800142c 0x0800142c 0x00000010 Data RO 1740 .constdata system_stm32f1xx.o + 0x0800143c 0x0800143c 0x00000008 Data RO 1741 .constdata system_stm32f1xx.o + 0x08001444 0x08001444 0x00000096 Data RO 1811 .constdata mymain.o + 0x080014da 0x080014da 0x00000002 PAD + 0x080014dc 0x080014dc 0x00000020 Data RO 2110 Region$$Table anon$$obj.o - Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x080013e0, Size: 0x000006c8, Max: 0x00005000, ABSOLUTE) + Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x080014fc, Size: 0x00000ac8, Max: 0x00005000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x20000000 0x080013e0 0x0000000c Data RW 752 .data stm32f1xx_hal.o - 0x2000000c 0x080013ec 0x00000004 Data RW 1742 .data system_stm32f1xx.o + 0x20000000 0x080014fc 0x0000000c Data RW 752 .data stm32f1xx_hal.o + 0x2000000c 0x08001508 0x00000004 Data RW 1742 .data system_stm32f1xx.o 0x20000010 - 0x00000054 Zero RW 17 .bss main.o - 0x20000064 - 0x00000060 Zero RW 1982 .bss c_w.l(libspace.o) - 0x200000c4 0x080013f0 0x00000004 PAD - 0x200000c8 - 0x00000200 Zero RW 2 HEAP startup_stm32f103xb.o - 0x200002c8 - 0x00000400 Zero RW 1 STACK startup_stm32f103xb.o + 0x20000064 - 0x00000400 Zero RW 1854 .bss oled.o + 0x20000464 - 0x00000060 Zero RW 1982 .bss c_w.l(libspace.o) + 0x200004c4 0x0800150c 0x00000004 PAD + 0x200004c8 - 0x00000200 Zero RW 2 HEAP startup_stm32f103xb.o + 0x200006c8 - 0x00000400 Zero RW 1 STACK startup_stm32f103xb.o ============================================================================== @@ -1270,8 +1278,8 @@ Image component sizes 28 6 0 0 0 920 hread_interface.o 326 24 0 0 84 395176 main.o - 64 10 144 0 0 1027 mymain.o - 274 0 0 0 0 3653 oled.o + 108 10 150 0 0 1039 mymain.o + 504 14 0 0 1024 5667 oled.o 64 26 236 0 1536 816 startup_stm32f103xb.o 128 24 0 12 0 5325 stm32f1xx_hal.o 172 14 0 0 0 28298 stm32f1xx_hal_cortex.o @@ -1283,9 +1291,9 @@ Image component sizes 2 0 24 4 0 1131 system_stm32f1xx.o ---------------------------------------------------------------------- - 4298 278 436 16 1620 459189 Object Totals + 4574 292 444 16 2644 461215 Object Totals 0 0 32 0 0 0 (incl. Generated) - 6 0 0 0 0 0 (incl. Padding) + 8 0 2 0 0 0 (incl. Padding) ---------------------------------------------------------------------- @@ -1333,15 +1341,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 4652 294 436 16 1720 457457 Grand Totals - 4652 294 436 16 1720 457457 ELF Image Totals - 4652 294 436 16 0 0 ROM Totals + 4928 308 444 16 2744 459379 Grand Totals + 4928 308 444 16 2744 459379 ELF Image Totals + 4928 308 444 16 0 0 ROM Totals ============================================================================== - Total RO Size (Code + RO Data) 5088 ( 4.97kB) - Total RW Size (RW Data + ZI Data) 1736 ( 1.70kB) - Total ROM Size (Code + RO Data + RW Data) 5104 ( 4.98kB) + Total RO Size (Code + RO Data) 5372 ( 5.25kB) + Total RW Size (RW Data + ZI Data) 2760 ( 2.70kB) + Total ROM Size (Code + RO Data + RW Data) 5388 ( 5.26kB) ============================================================================== diff --git a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL_f103c8t6_KEIL.dep b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL_f103c8t6_KEIL.dep index 7a84082..7a9b747 100644 --- a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL_f103c8t6_KEIL.dep +++ b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL_f103c8t6_KEIL.dep @@ -29,7 +29,7 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x6224463D) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h)(0x6224463D) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6224463D) I (./MYDEIVERS/mymain.h)(0x62590E47) -I (./MYDEIVERS/oled.h)(0x62598616) +I (./MYDEIVERS/oled.h)(0x625AA8DF) I (./MYDEIVERS/hread_interface.h)(0x625910E8) F (../Core/Src/stm32f1xx_it.c)(0x62590B1B)(--c99 -c --cpu Cortex-M3 -D__EVAL -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ./MYDEIVERS -I.\RTE\_f103c8t6_KEIL -IC:\Users\wuwen\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -IC:\Users\wuwen\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.0\Device\Include -D__UVISION_VERSION="536" -D_RTE_ -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o f103c8t6_keil\stm32f1xx_it.o --omf_browse f103c8t6_keil\stm32f1xx_it.crf --depend f103c8t6_keil\stm32f1xx_it.d) I (../Core/Inc/main.h)(0x62590B1B) @@ -504,7 +504,7 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x6224463D) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x6224463D) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h)(0x6224463D) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6224463D) -F (.\MYDEIVERS\mymain.c)(0x625986C0)(--c99 -c --cpu Cortex-M3 -D__EVAL -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ./MYDEIVERS -I.\RTE\_f103c8t6_KEIL -IC:\Users\wuwen\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -IC:\Users\wuwen\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.0\Device\Include -D__UVISION_VERSION="536" -D_RTE_ -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o f103c8t6_keil\mymain.o --omf_browse f103c8t6_keil\mymain.crf --depend f103c8t6_keil\mymain.d) +F (.\MYDEIVERS\mymain.c)(0x625ACA3F)(--c99 -c --cpu Cortex-M3 -D__EVAL -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ./MYDEIVERS -I.\RTE\_f103c8t6_KEIL -IC:\Users\wuwen\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -IC:\Users\wuwen\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.0\Device\Include -D__UVISION_VERSION="536" -D_RTE_ -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o f103c8t6_keil\mymain.o --omf_browse f103c8t6_keil\mymain.crf --depend f103c8t6_keil\mymain.d) I (MYDEIVERS\mymain.h)(0x62590E47) I (../Core/Inc/main.h)(0x62590B1B) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6224463D) @@ -532,10 +532,10 @@ I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h)(0x6224463D) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h)(0x6224463D) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h)(0x6224463D) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h)(0x6224463D) -I (MYDEIVERS\oled.h)(0x62598616) +I (MYDEIVERS\oled.h)(0x625AA8DF) I (MYDEIVERS\hread_interface.h)(0x625910E8) -F (.\MYDEIVERS\oled.c)(0x62598727)(--c99 -c --cpu Cortex-M3 -D__EVAL -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ./MYDEIVERS -I.\RTE\_f103c8t6_KEIL -IC:\Users\wuwen\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -IC:\Users\wuwen\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.0\Device\Include -D__UVISION_VERSION="536" -D_RTE_ -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o f103c8t6_keil\oled.o --omf_browse f103c8t6_keil\oled.crf --depend f103c8t6_keil\oled.d) -I (MYDEIVERS\oled.h)(0x62598616) +F (.\MYDEIVERS\oled.c)(0x625ACA90)(--c99 -c --cpu Cortex-M3 -D__EVAL -g -O3 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc -I ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I ../Drivers/CMSIS/Include -I ./MYDEIVERS -I.\RTE\_f103c8t6_KEIL -IC:\Users\wuwen\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -IC:\Users\wuwen\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.0\Device\Include -D__UVISION_VERSION="536" -D_RTE_ -DSTM32F10X_MD -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F103xB -o f103c8t6_keil\oled.o --omf_browse f103c8t6_keil\oled.crf --depend f103c8t6_keil\oled.d) +I (MYDEIVERS\oled.h)(0x625AA8DF) I (../Core/Inc/main.h)(0x62590B1B) I (../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h)(0x6224463D) I (../Core/Inc/stm32f1xx_hal_conf.h)(0x62590DE4) diff --git a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/main.crf b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/main.crf index 2bd68ce4a06e229b0c996329409ef94fc57f632a..ed6196b1c476222682ad30f48a083811d0256376 100644 GIT binary patch delta 522 zcma)(yGtBV6o=2bncbQAS|4dN6VKHkh^%O$RXQ1h*=jWsP^Pe0JYsZp(ODl!zyUEE zQU=08{sSwq+QyyHyln(K-6<3-#8j4+9?`-k;DxXFeZO6N^Sz|;^tXwe>LF7*N!uu zUdW_or@RqwKA-X6qGE$(wA8eap@h0u%nnnZq%q+u>U0!`U8VuO9JRuCra4V{MT?4-6fG-SQS?sH zdqp3Nj12r>%4xFKP|>>ZQ78zXgwJTah@v_P4c0IZ17t=OsK?&F|<~LJWOj%4B n@%k};m;y0@m;f;;<}XtyCKMAQc19NLF`c51Zx0RmduYD`N1c)j delta 451 zcma)(ze@sP7{{N-?!3#yOr7fJJ&c9|5sRj#kPs)$2#gyXtT)1pFddpY2y$r(>Y)F? zvB|}|v)?XJOCWbk5EPF72R%}QOVA4+c)p+S`@GA0)ll_@>hF#Mco0~J!^^dQRq|b) zeV%)P&fAG5)intT4>3XrO-&Lv-i`K`_};8 hk+H~Fh%quxoY`b-GB)CzD?^8~57e>L73k9-`VD*rgm3@= diff --git a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/main.o b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/main.o index d0c8b6783337c09a231e5369d333f809e2f1aeaa..bd0dbc88372f0626a9a1df3ad0dea1e7785a9e8d 100644 GIT binary patch delta 97 zcmdlnRb|Iil?`wCWy}K9APyaZR!)o$-MuF`mGdWxe0lDB9$N&HU diff --git a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/mymain.crf b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/mymain.crf index bf00bc2e2de0fdc97375ca16ba44faf58ced3aed..a2bc1c3ed24cd34511a25745d036cf8d09b2b420 100644 GIT binary patch delta 382 zcmbO^N8#uk1)dw63=B++4D$Qa7;bFjab)MZfAQ5MHU=OlpB&Ea%(Z{YYY6vU^Ah&< zCG3nq%ml>DK+Ljz2|Fv>1Ablx9X6mDjI1S<1*r@&(^o!cZRXvZ##vOF7hjT@oXz0B z-SP#i056M917qQK->MWWKj8@aDxj9}7 z0>wVx=3M`59EBDUe3c|22%QO`bHj(*+Oy+j5BU?GptRM6>DIW*Jxnuo*u=^ z5iQTousuyyvVqa-wlKpEFiTz$s6Yvbl^YnpPd~%UA#caduqRDcx`ELdXvN+%Mn0gV vlmh>4eujN%^4tpYiY)R`#-IQIOYUl-FivzQF)M`7k11)dw63=B++4D$QZ7;bLlab)M3*7Ix<8v_tXJvaZeb;l=Cf+@1oJFO1@gFqomW+1hU(+~1+%;uAAV4QiIondX7tXKnM`1Cwpj%aaihV5yxk`0XV3Jr{HK*=3x zvOu@GPk+J7A+N{9uqTa?4=5?AAb6XTVQ-o|w}QL^OU`W`hJ9)B(hBlwjPe@H+&5T& Ifykf)0Oks0i~s-t diff --git a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/mymain.o b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/mymain.o index df44e6e46aca30ae568b8e248613bab382a5eeb4..4c713e1ece089ffc644914d019fda928eb32388f 100644 GIT binary patch delta 11620 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 delta 11495 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 diff --git a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/oled.o b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/oled.o index 951c639afa29f449407dc0ad8e5bc36a036dcf90..e79a2f124ab302fc9b08158994338d64d2438217 100644 GIT binary patch delta 20793 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 G^nU?cy%Hk;