From 368f32622f76580553d96c39914a5beeb57299aa Mon Sep 17 00:00:00 2001 From: kevin Date: Fri, 15 Apr 2022 22:56:01 +0800 Subject: [PATCH] Signed-off-by: kevin --- f103c8t6_keil/MDK-ARM/MYDEIVERS/mymain.c | 21 +- f103c8t6_keil/MDK-ARM/MYDEIVERS/oled.c | 50 ++- f103c8t6_keil/MDK-ARM/MYDEIVERS/oled.h | 3 + .../MDK-ARM/f103c8t6_KEIL.uvguix.wuwen | 50 +-- .../MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.axf | Bin 507992 -> 508360 bytes .../f103c8t6_KEIL/f103c8t6_KEIL.build_log.htm | 2 +- .../MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.hex | 114 +++---- .../MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.htm | 68 ++--- .../MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.map | 285 +++++++++--------- .../f103c8t6_KEIL_f103c8t6_KEIL.dep | 10 +- f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/main.crf | Bin 529281 -> 529536 bytes f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/main.o | Bin 592568 -> 592568 bytes .../MDK-ARM/f103c8t6_KEIL/mymain.crf | Bin 527611 -> 527897 bytes f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/mymain.o | Bin 587184 -> 588020 bytes f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/oled.crf | Bin 528620 -> 529255 bytes f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/oled.o | Bin 600896 -> 603976 bytes 16 files changed, 342 insertions(+), 261 deletions(-) diff --git a/f103c8t6_keil/MDK-ARM/MYDEIVERS/mymain.c b/f103c8t6_keil/MDK-ARM/MYDEIVERS/mymain.c index 837446c..686ce67 100644 --- a/f103c8t6_keil/MDK-ARM/MYDEIVERS/mymain.c +++ b/f103c8t6_keil/MDK-ARM/MYDEIVERS/mymain.c @@ -7,19 +7,34 @@ #include "mymain.h" #include "hread_interface.h" + +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 +}; + + void mymain() { uint32_t run_tick=0; OLED_Init(); - - + + OLED_Pix(0,0,36,32,testbmp); 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 94cacb3..e7bec80 100644 --- a/f103c8t6_keil/MDK-ARM/MYDEIVERS/oled.c +++ b/f103c8t6_keil/MDK-ARM/MYDEIVERS/oled.c @@ -65,6 +65,12 @@ void OLED_Setting_luminance(unsigned char a) } /* 初始化OLED + +硬件扫描方式 + +从左到右从上到下 +纵向8点上高位 + */ void OLED_Init(void) { @@ -131,7 +137,7 @@ void OLED_Cache_to_hardware() //16*16 ASCII字符集点阵 -const unsigned char asc2_1608[95][16]={ +const char asc2_1608[95][16]={ {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/ {0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xCC,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",1*/ {0x00,0x00,0x08,0x00,0x30,0x00,0x60,0x00,0x08,0x00,0x30,0x00,0x60,0x00,0x00,0x00},/*""",2*/ @@ -228,6 +234,48 @@ const unsigned char asc2_1608[95][16]={ {0x00,0x00,0x40,0x02,0x40,0x02,0x3E,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"}",93*/ {0x00,0x00,0x60,0x00,0x80,0x00,0x80,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00},/*"~",94*/ }; + +/* +打点函数 +打点类型 +dot_type=0 清除点 + =1 打点 + =2 取反点 +*/ +void OLED_set_dot(unsigned char x,unsigned char y,unsigned char dot_type) +{ + if(x>=X_WIDTH||y>=Y_WIDTH) + { + return ; + } + uint8_t y1=y/8; + switch(dot_type) + { + case 0: + OLED_buff[y1][x] &= ~(1<<(y%8)); + break; + case 1: + OLED_buff[y1][x] |= (1<<(y%8)); + break; + case 2: + OLED_buff[y1][x] ^= (1<<(y%8)); + break; + case 3:break; + } + +} +/* +绘图函数 + +*/ +void OLED_Pix(unsigned char x,unsigned char y,unsigned char w,unsigned char h,const char *p) +{ + OLED_Set_Pos(0,0); + for(int a=0;a<36;a++) + { + OLED_WrDat(p[a]); + } +} void OLED_ShowChar(unsigned char x,unsigned char y,unsigned char chr) { OLED_Set_Pos(x,y); diff --git a/f103c8t6_keil/MDK-ARM/MYDEIVERS/oled.h b/f103c8t6_keil/MDK-ARM/MYDEIVERS/oled.h index 105f866..2585420 100644 --- a/f103c8t6_keil/MDK-ARM/MYDEIVERS/oled.h +++ b/f103c8t6_keil/MDK-ARM/MYDEIVERS/oled.h @@ -21,6 +21,9 @@ 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_ShowStr(unsigned char x,unsigned char y,char *str); #endif /* OLED_H_ */ diff --git a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL.uvguix.wuwen b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL.uvguix.wuwen index 5235c3f..5e9d274 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 - -32000 - -32000 + -1 + -1 -1 -1 - 212 - 490 - 3070 - 1241 + 304 + 1449 + 4029 + 1333 0 1049 - 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000008000000030000000100000047433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF52433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C6D796D61696E2E6300000000086D796D61696E2E6300000000FFDC7800FFFFFFFF52433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C6D796D61696E2E6800000000086D796D61696E2E6800000000BECEA100FFFFFFFF50433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C6F6C65642E6300000000066F6C65642E6300000000F0A0A100FFFFFFFF5B433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C68726561645F696E746572666163652E63000000001168726561645F696E746572666163652E6300000000BCA8E100FFFFFFFF5B433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C68726561645F696E746572666163652E68000000001168726561645F696E746572666163652E68000000009CC1B600FFFFFFFF50433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C6F6C65642E6800000000066F6C65642E6800000000F7B88600FFFFFFFF51433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C666F6E74732E630000000007666F6E74732E6300000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000A403000042010000F60B0000F4030000 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000008000000030000000100000047433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF52433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C6D796D61696E2E6300000000086D796D61696E2E6300000000FFDC7800FFFFFFFF52433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C6D796D61696E2E6800000000086D796D61696E2E6800000000BECEA100FFFFFFFF50433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C6F6C65642E6300000000066F6C65642E6300000000F0A0A100FFFFFFFF5B433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C68726561645F696E746572666163652E63000000001168726561645F696E746572666163652E6300000000BCA8E100FFFFFFFF5B433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C68726561645F696E746572666163652E68000000001168726561645F696E746572666163652E68000000009CC1B600FFFFFFFF50433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C6F6C65642E6800000000066F6C65642E6800000000F7B88600FFFFFFFF51433A5C55736572735C777577656E5C4465736B746F705C6D6F7273655F636F64655F747261696E65725C66313033633874365F6B65696C5C4D444B2D41524D5C4D59444549564552535C666F6E74732E630000000007666F6E74732E6300000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000630700009E010000B50F000050040000 @@ -134,7 +134,7 @@ 16 - A403000042010000F60B000008020000 + 8404000094010000D60C00005A020000 @@ -530,7 +530,7 @@ 0 16 - 030000001C030000010A0000B2030000 + 030000001C030000B3060000B2030000 16 @@ -1150,7 +1150,7 @@ 0 16 - 0300000066000000AB010000E8020000 + 0300000066000000AB01000062040000 16 @@ -1170,7 +1170,7 @@ 0 16 - 030000001C030000010A0000B2030000 + 030000001C030000B3060000B2030000 16 @@ -1190,7 +1190,7 @@ 0 16 - 030000001C030000010A0000B2030000 + 030000001C030000B3060000B2030000 16 @@ -1250,7 +1250,7 @@ 0 16 - 030000001C030000010A0000B2030000 + 030000001C030000B3060000B2030000 16 @@ -1270,7 +1270,7 @@ 0 16 - 030000001C030000010A0000B2030000 + 030000001C030000B3060000B2030000 16 @@ -1799,7 +1799,7 @@ 3312 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFB201000015010000040A000019010000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000A403000042010000F60B000008020000B20100004F000000040A0000150100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF520800004F0000005608000001030000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000480A000042010000F60B0000F4030000560800004F000000040A00000103000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFAE0100004F000000B201000001030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000F201000042010000A0030000F4030000000000004F000000AE010000010300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000ED020000040A0000F102000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000F2010000E4030000F60B0000BE04000000000000F1020000040A0000CB03000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF02050000F102000006050000CB03000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000001030000040A000005030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000F2010000F8030000F60B0000BE0400000000000005030000040A0000CB0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFB201000015010000040A000019010000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E6500200000000000008404000094010000D60C00005A020000B20100004F000000040A0000150100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF520800004F0000005608000001030000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000280B000094010000D60C000046040000560800004F000000040A00000103000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFAE0100004F000000B201000001030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000D20200009401000080040000C0050000000000004F000000AE010000010300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000ED020000040A0000F102000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000D202000036040000D60C00001005000000000000F1020000040A0000CB03000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF02050000F102000006050000CB03000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000001030000040A000005030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000D2020000C4050000880900008A0600000000000005030000040A0000CB0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 @@ -1838,7 +1838,7 @@ Debug 2373 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 898 @@ -1865,8 +1865,8 @@ 3 ../Core/Src/main.c - 3 - 67 + 4 + 52 91 1 @@ -1874,9 +1874,9 @@ .\MYDEIVERS\mymain.c - 29 + 79 1 - 22 + 21 1 0 @@ -1892,9 +1892,9 @@ .\MYDEIVERS\oled.c - 8 - 89 - 115 + 7 + 60 + 72 1 0 @@ -1919,9 +1919,9 @@ ./MYDEIVERS/oled.h - 30 + 13 1 - 22 + 25 1 0 diff --git a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.axf b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.axf index 27aeba2f4658d410871da6df2d0fea8f2da83f50..ca939701b61a08a06973f378cf89a90e5a57c280 100644 GIT binary patch delta 10726 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 delta 10524 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%0A+JrQf16SC^c*%8?`_1CkNR)OhBq z`43%t@57Yv6KvJ@rC-(znOe#^L*zz0O4%q4N0-$W=2cCn$z55MEr-!6pLIc!*h*Y; zE9~}aH9h_wOvbc9A+gPwN`RLf+PkYtzBzb1NA5kO)_1wXpw?G70PBDxu^Tx`PcON> z#ir8f;Yx*<94$FVC@a0>Na;$hvd2r#lJXLipS|QL>AR6igty$;Cl#;y$Kl=;#*{r- zatNLmjP+2fFe=l$A2~rsY}C0}%D=``hMUpZE~P@_b(lWp9n zJl#%?lWx^2JakD`zNQwnOpy`n7%#kDIA<_Jg~rvy@!=jh(H` z@Pk>(P-VRzx;tR5a@bGqAf?PxF8QHYtzF^%a-33qL^d`i`peg(k+kWdx`{_F9wm%! zB8{!c(A=Rh>FL(dnDq3*tuaP`g)0LC<)k$1ydwA!!v^)j&`vBd2UDEU?ktreMyxT~ zvBe;%_RpxS>jT^uXjdz0N zNQ1iDr^(Y{@ru&v3HfdmO=y~U41$T?#i?)9DsiIHEmW>Dsa;q0gvx#Fp?LIbBSluR zVA_n)Y8ecs?G=qjfN38@Kd(E@ja$vK)t)Tf0rM!b2 z$+s%6;K$ym)1C)^hmCP+kKFxIr@y6Rr;aUj<=qFl6A7M-ZCDafeS_QT?aiaw3YyDw ztgoN z$QPj14zm7l{F2UoDR=^Er&*fZOHsyllw<7(>ItgE@R&c_QDT-y34M*Hpf84=yrLR! z>R6^_gonPfjx)h_PlHK1gC#oNrsGpOzNupwH;8BbopqdPW%f1(lXM14bi7T+r*wQ% z$8vzq0Uc)s*j)zNMbU@EBovtAF@z0n)?#cccs}%6$Q%c22L*|qKiBDRDlpV4nH1$GG{aMr4iUKXG4r(?o_u~Z39ExtaWb^SUdig4z%r{{qY{_$7|OAtAWSsZ{vXde;D#M1z`WG z&Y^d}_c2)~V;Jbx->K7|0w>@Sh5ZLTrks1tU%((82DCh*3jXR*fmOQKydYQ`U@U6D z0*t4FdJw5e#!XBf)vMAQ2Mc>#YVVKLQ)v zK}Pz3_E>njdqf-y9_sD@aer`;W{(bKgG)4qenJc5mZt)BEdm!W*YVprKA_`2>G+0@ z|E1#~tmajR(7x&bZRdD;I7G+ebX>1vq2u4^_+uSkax=BBI&ep4V0@yjLt#383S6cQ zDTX)`JV|4WXrYelb-dceb~Q-o5`3UDIH}|7I{sP5VR%z2_i!Li$0<6_09SEkP>k$t z&sX!VNsN4%44&>$SG|sxgJ)}cbbc*(uEr?;j*j<(7kKE8gI@tt=c6V3VfrZq@3;*h zU^jH^)Uhw#hCJ=#bUaAMztnMc8@6-yN*e)ZZ|nF&9iP$hbsc}NV*@51Pltm&*^VB^ zc?!TOI?mSdI2~8%c%hEh==fa^w$qS1JOsq2b^N7{Z|eAgj=egz?Qtg^C$+Mjf`DbU z3RHex$5V7XTgR{Jc$1EI>G)U+V-g?-zGxA+xJk!8cs_Vu!;avs9#NeP{=|dRJsEdN zzMDtTlmjjXpCx;B5`>@vf+z5Q4?WuHHe3wupfU8Dz#TpK0Jsx)n7hKW;7MStAk+pv z1`sLs?;NRgDlj{2wxX#Gz>dPYuK7in5{M&_{bk*PpRRE?XC0(LFf;WNbuYR(> z1dcOfqt(rS13!y@Yx3OXAAGh1t(|>!%z&5wuAN+r^9ox8WgK!Aqu%(;qHb?*$ zfd{yGAb1NH!LB+`06qZ@bvsZAzK6fz@W58}i@*Wi?n?v*Hh|}Xz47mW+F|e}JGN01 z+y#z8K;L$0L-r~7DQx`V@uU{G2Bz=6H2wEr`W{Ta=jX`B?Z@EX~h2HYv!2h6Jk}Y>pew!`7 zt&|Lt$9c7E2`axECiiOm$1wS<(fCxa(iG+Tc=_YTg?aMoVq?!=^h|Q`RflXf8k5V4 zN*eDq%9*kmpMkOP2xZU_IYY`1Qg$AZLzIn2WM64%kn-yza=dvR3=VoLUmU?^*t#I) zA!K}<5_MGWY|4p3f0f}!L`2ZkN9Fh*+kiSZW7uEA{v{ D?n>Qd diff --git a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.build_log.htm b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.build_log.htm index a5524f9..f303362 100644 --- a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.build_log.htm +++ b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.build_log.htm @@ -32,7 +32,7 @@ MYDEIVERS\oled.h(22): warning: #1295-D: Deprecated declaration OLED_Cache_to_ha void OLED_Cache_to_hardware(); MYDEIVERS\oled.c: 1 warning, 0 errors linking... -Program Size: Code=4656 RO-data=292 RW-data=16 ZI-data=2744 +Program Size: Code=4652 RO-data=436 RW-data=16 ZI-data=1720 FromELF: creating hex file... "f103c8t6_KEIL\f103c8t6_KEIL.axf" - 0 Error(s), 1 Warning(s). diff --git a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.hex b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.hex index 5bb1158..36b38cc 100644 --- a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.hex +++ b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.hex @@ -1,8 +1,8 @@ :020000040800F2 -:10000000C80A002089010008F3100008C50D000887 -:10001000F11000088F02000887120008000000009D -:100020000000000000000000000000002112000895 -:1000300091020008000000001F12000823120008AF +:10000000C806002089010008F3100008C50D00088B +:10001000F11000088F0200086F12000800000000B5 +:1000200000000000000000000000000009120008AD +:100030009102000800000000071200080B120008DF :10004000A3010008A3010008A3010008A301000800 :10005000A3010008A3010008A3010008A3010008F0 :10006000A3010008A3010008A3010008A3010008E0 @@ -17,17 +17,17 @@ :1000F00000F03AF80AA090E8000C82448344AAF188 :100100000107DA4501D100F02FF8AFF2090EBAE885 :100110000F0013F0010F18BFFB1A43F0010318473B -:100120001412000034120000103A24BF78C878C1BD +:10012000A0120000C0120000103A24BF78C878C1A5 :10013000FAD8520724BF30C830C144BF04680C60ED :10014000704700000023002400250026103A28BF35 :1001500078C1FBD8520728BF30C148BF0B60704739 :100160001FB51FBD10B510BD00F058F81146FFF7C0 -:10017000F7FF01F099F800F076F803B4FFF7F2FF0B +:10017000F7FF01F08DF800F076F803B4FFF7F2FF17 :1001800003BC00F07DF8000009488047094800479B :10019000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE737 :1001A000FEE7FEE704480549054A064B7047000094 -:1001B00085120008ED000008C8040020C80A0020CD -:1001C000C8060020C80600204FF0000200B5134604 +:1001B0006D120008ED000008C8000020C8060020ED +:1001C000C8020020C80200204FF0000200B513460C :1001D00094469646203922BFA0E80C50A0E80C5067 :1001E000B1F12001BFF4F7AF090728BFA0E80C5018 :1001F00048BF0CC05DF804EB890028BF40F8042B11 @@ -38,7 +38,7 @@ :100240004FF000074FF000084FF0000B21F00701BE :10025000AC46ACE8C009ACE8C009ACE8C009ACE801 :10026000C0098D46704710B50446AFF300802046A4 -:10027000BDE81040FFF781BF0048704764040020CC +:10027000BDE81040FFF781BF0048704764000020D0 :1002800001491820ABBEFEE7260002007047FEE7DA :10029000704700002DE9F84FDFF8B891002409F10C :1002A000040A0AF1040B23460F270BF1040EC9E0E0 @@ -136,7 +136,7 @@ :10086000F0B40E4B1B680C46C3F30223C3F107051B :10087000042D00D90425191D072901D2002300E009 :10088000DB1E012606FA05F1491E214099409E40D3 -:10089000761E16403143F0BC00F0F6BC0CED00E0D3 +:10089000761E16403143F0BC00F0EABC0CED00E0DF :1008A000064900F0070208684FF6FF03184040EAC7 :1008B0000220034A10430860704700000CED00E07E :1008C0000000FA052DE9F0470F46050061D0434EC0 @@ -157,9 +157,9 @@ :1009B000296920F4605040EAC100606000F028F826 :1009C0006168084AC1F30311515CC84006490860D8 :1009D00006480068FFF706FF0020C2E7002002403B -:1009E000001002401C1300080C000020040000202E +:1009E00000100240181300080C0000200400002032 :1009F0000448054900684968044AC1F30221515C72 -:100A0000C84070470C000020001002402C13000862 +:100A0000C84070470C000020001002402813000866 :100A100012A185B00FC98DE80F0014A0144A006818 :100A200004905168134801F00C03042B10D0082BDC :100A30000ED1C1F38343C9031DF803000AD55168E1 @@ -218,7 +218,7 @@ :100D8000EAE70020E8E700000010024000004242CD :100D9000800442420C0000200070004010B5401E4C :100DA000B0F1807F01D3012010BD4FF0E0246061DD -:100DB0000F21601700F068FA0020A0610720206171 +:100DB0000F21601700F05CFA0020A061072020617D :100DC000002010BDFEE701684A69D24352050FD4E6 :100DD0006FF480624A61002140F8301F2022427384 :100DE0008173026942F004020261017301207047BD @@ -270,45 +270,53 @@ :1010C000025000940124694601943846FFF7E2F883 :1010D0000320CDE90240CDE9006469463846FFF7B8 :1010E000D9F805B0F0BD000000100240000C01402E -:1010F000FEE7FEE72DE9F0410A4F002421460020DB -:1011000000F06BF8002507EBC416705D00F07FF867 -:101110006D1CEDB2802DF8D3641CE4B2082CEDD325 -:10112000BDE8F0816400002010B5AE2000F067F843 -:10113000D52000F064F8502000F061F8A82000F0FD -:101140005EF83F2000F05BF8D32000F058F8002054 -:1011500000F055F8402000F052F88D2000F04FF8D4 -:10116000142000F04CF8202000F049F8022000F094 -:1011700046F8A12000F043F8C02000F040F8D92044 -:1011800000F03DF8F12000F03AF8DB2000F037F8ED -:10119000302000F034F8A42000F031F8A62000F050 -:1011A0002EF8AF2000F02BF8BDE810400020AFF380 -:1011B000008070B5064600242146002000F00DF89E -:1011C0000025304600F023F86D1CEDB2802DF8D3D9 -:1011D000641CE4B2082CEFD370BD10B50446C1F115 -:1011E000B700C0B200F00BF8102040EA141000F075 -:1011F00006F804F00F00BDE81040AFF3008001B521 -:101200006A46012300217820FFF714FF08BD01B5CD -:101210006A46012340217820FFF70CFF08BD704784 -:101220007047FFF7C5BA30B58FB028216846FEF782 -:10123000CBFF14210AA8FEF7C7FF01210804CDE95E -:1012400000100024029402250491CDE907504FF4C8 -:10125000E01009906846FFF711FC08B172B6FEE78E -:101260000F20CDE90A054FF48060CDE90C40022142 -:101270000AA80E94FFF726FB002801D072B6FEE7FD -:101280000FB030BD7047FEE70907090E002804DBE8 -:1012900000F1E02080F80014704700F00F0000F12A -:1012A000E02080F8141D7047FFF78AFAFFF7BBFFB4 -:1012B000FFF7CEFE0C480B494FF4804201600B490A -:1012C000416000218160C0E9031241618161C16117 -:1012D0000162FFF7E3F808B172B6FEE700F008F824 -:1012E000FEE700000054004010000020A08601002E -:1012F0000024FFF719FF4FF40045074EFFF7FAFEF1 -:10130000FFF7C6F8A042F9D92946304604F5FA7429 -:10131000FFF7B0F8F2E70000000C01400000000009 -:101320000000000001020304060708090000000095 -:101330000102030454130008000000201000000004 -:10134000280100086413000810000020B80A0000FB -:10135000440100080100000010000000000000002F -:041360000024F40071 +:1010F000FEE7FEE710B5AE2000F075F8D52000F051 +:1011000072F8502000F06FF8A82000F06CF83F2033 +:1011100000F069F8D32000F066F8002000F063F8D2 +:10112000402000F060F88D2000F05DF8142000F001 +:101130005AF8202000F057F8022000F054F8A120BF +:1011400000F051F8C02000F04EF8D92000F04BF824 +:10115000F12000F048F8DB2000F045F8302000F0E6 +:1011600042F8A42000F03FF8A62000F03CF8AF20A1 +:1011700000F039F8BDE810400020AFF3008070B5F2 +:10118000064600242146002000F01BF800253046CA +:1011900000F031F86D1CEDB2802DF8D3641CE4B280 +:1011A000082CEFD370BD70B500210846049D00F0F7 +:1011B00008F80024285D00F01EF8641C242CF9DBDC +:1011C00070BD10B50446C1F1B700C0B200F00BF815 +:1011D000102040EA141000F006F804F00F00BDE8FB +:1011E0001040AFF3008001B56A460123002178204A +:1011F000FFF720FF08BD01B56A4601234021782092 +:10120000FFF718FF08BD70477047FFF7D1BA30B538 +:101210008FB028216846FEF7D7FF14210AA8FEF7F1 +:10122000D3FF01210804CDE9001000240294022517 +:101230000491CDE907504FF4E01009906846FFF79C +:101240001DFC08B172B6FEE70F20CDE90A054FF488 +:101250008060CDE90C4002210AA80E94FFF732FB12 +:10126000002801D072B6FEE70FB030BD7047FEE730 +:101270000907090E002804DB00F1E02080F80014C3 +:10128000704700F00F0000F1E02080F8141D704757 +:10129000FFF796FAFFF7BBFFFFF7DAFE0C480B49A2 +:1012A0004FF4804201600B49416000218160C0E938 +:1012B000031241618161C1610162FFF7EFF808B17A +:1012C00072B6FEE700F008F8FEE7000000540040A8 +:1012D00010000020A086010008B50024FFF70AFFD7 +:1012E0000B4800210090202324220846FFF75BFFD3 +:1012F000084E4FF4004500BFFFF7CAF8A042FBD9E3 +:101300002946304604F5FA74FFF7B4F8F4E7000014 +:1013100030130008000C0140000000000000000035 +:10132000010203040607080900000000010203048B +:1013300000000000161D1018080C06070203020228 +:101340000605050D7951C1731D0703030000000058 +:10135000000000000000000093FF2C19113322262A +:1013600064444CC8C858901190B03020302060C000 +:10137000E63F1F030100000000011F7EFFC08080C8 +:101380000000000000000000000000E0E00000009D +:1013900000203070517D57F1E17B0F077BE307BFE1 +:1013A000FF03030303030303030303030303030311 +:1013B00003036343C3C38B9FBB23B3236343C303B1 +:1013C000E0130008000000201000000028010008C1 +:1013D000F013000810000020B806000044010008C7 +:1013E0000100000010000000000000000024F400D4 :04000005080000ED02 :00000001FF diff --git a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.htm b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.htm index 3384d70..734254b 100644 --- a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.htm +++ b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.htm @@ -3,11 +3,11 @@ Static 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 17:38:20 2022 +

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

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

Call chain for Maximum Stack Depth:

-__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 +__rt_entry_main ⇒ main ⇒ mymain ⇒ OLED_Pix ⇒ OLED_Set_Pos ⇒ OLED_WrCmd ⇒ IIC_SAND_DATE ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnMasterAddressFlagUntilTimeout

Functions with no stack information @@ -202,7 +202,7 @@ Global Symbols

__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_Cache_to_hardware ⇒ OLED_Set_Pos ⇒ OLED_WrCmd ⇒ IIC_SAND_DATE ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnMasterAddressFlagUntilTimeout +
  • 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

[Calls]
  • >>   main
  • >>   exit @@ -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,53 @@ Global Symbols


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

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)) +

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
    -

    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_Set_Pos (Thumb, 36 bytes, Stack size 8 bytes, oled.o(i.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 +
      +
      [Calls]
      • >>   OLED_WrDat +
      • >>   OLED_Set_Pos +
      +
      [Called By]
      • >>   mymain +
      + +

      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_Cache_to_hardware +
          [Called By]
          • >>   OLED_Init_Display_Buffer +
          • >>   OLED_Pix
          -

          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_Cache_to_hardware +
              [Called By]
              • >>   OLED_Init_Display_Buffer +
              • >>   OLED_Pix

              PendSV_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(i.PendSV_Handler)) @@ -673,7 +673,7 @@ 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_Cache_to_hardware ⇒ OLED_Set_Pos ⇒ OLED_WrCmd ⇒ IIC_SAND_DATE ⇒ HAL_I2C_Mem_Write ⇒ I2C_RequestMemoryWrite ⇒ I2C_WaitOnMasterAddressFlagUntilTimeout +

                [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

                [Calls]
                • >>   mymain
                • >>   HAL_Init @@ -684,13 +684,13 @@ Global Symbols
                  [Called By]
                  • >>   __rt_entry_main
                  -

                  mymain (Thumb, 38 bytes, Stack size 0 bytes, mymain.o(i.mymain)) -

                  [Stack]

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

                    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

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

                    [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 6af853b..3d019a0 100644 --- a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.map +++ b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/f103c8t6_KEIL.map @@ -285,9 +285,10 @@ Section Cross References hread_interface.o(i.IIC_SAND_DATE) refers to stm32f1xx_hal_i2c.o(i.HAL_I2C_Mem_Write) for HAL_I2C_Mem_Write 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_Cache_to_hardware) for OLED_Cache_to_hardware + mymain.o(i.mymain) refers to oled.o(i.OLED_Pix) for OLED_Pix 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 oled.o(i.OLED_Cache_to_hardware) refers to oled.o(i.OLED_Set_Pos) for OLED_Set_Pos oled.o(i.OLED_Cache_to_hardware) refers to oled.o(i.OLED_WrDat) for OLED_WrDat oled.o(i.OLED_Cache_to_hardware) refers to oled.o(.bss) for .bss @@ -295,6 +296,8 @@ 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_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 @@ -306,6 +309,7 @@ Section Cross References oled.o(i.OLED_ShowStr) refers to oled.o(i.OLED_ShowChar) for OLED_ShowChar oled.o(i.OLED_WrCmd) refers to hread_interface.o(i.IIC_SAND_DATE) for IIC_SAND_DATE oled.o(i.OLED_WrDat) refers to hread_interface.o(i.IIC_SAND_DATE) for IIC_SAND_DATE + oled.o(i.OLED_set_dot) refers to oled.o(.bss) for .bss __main.o(!!!main) refers to __rtentry.o(.ARM.Collect$$rtentry$$00000000) for __rt_entry dfixu.o(x$fpl$dfixu) refers (Special) to usenofp.o(x$fpl$usenofp) for __I$use$fp dfixu.o(x$fpl$dfixu) refers to dnaninf.o(x$fpl$dnaninf) for __fpl_dnaninf @@ -676,12 +680,15 @@ 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). -257 unused section(s) (total 21742 bytes) removed from the image. +260 unused section(s) (total 22878 bytes) removed from the image. ============================================================================== @@ -886,34 +893,34 @@ 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_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_Set_Pos 0x080011da Section 0 oled.o(i.OLED_Set_Pos) - i.OLED_WrCmd 0x080011fe Section 0 oled.o(i.OLED_WrCmd) - i.OLED_WrDat 0x0800120e Section 0 oled.o(i.OLED_WrDat) - i.PendSV_Handler 0x0800121e Section 0 stm32f1xx_it.o(i.PendSV_Handler) - i.SVC_Handler 0x08001220 Section 0 stm32f1xx_it.o(i.SVC_Handler) - i.SysTick_Handler 0x08001222 Section 0 stm32f1xx_it.o(i.SysTick_Handler) - i.SystemClock_Config 0x08001226 Section 0 main.o(i.SystemClock_Config) - i.SystemInit 0x08001284 Section 0 system_stm32f1xx.o(i.SystemInit) - i.UsageFault_Handler 0x08001286 Section 0 stm32f1xx_it.o(i.UsageFault_Handler) - i.__NVIC_SetPriority 0x08001288 Section 0 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) - __NVIC_SetPriority 0x08001289 Thumb Code 32 stm32f1xx_hal_cortex.o(i.__NVIC_SetPriority) - i.main 0x080012a8 Section 0 main.o(i.main) - i.mymain 0x080012f0 Section 0 mymain.o(i.mymain) - .constdata 0x0800131c Section 16 system_stm32f1xx.o(.constdata) - .constdata 0x0800132c Section 8 system_stm32f1xx.o(.constdata) + 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) .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 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) + .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) Global Symbols @@ -1087,32 +1094,32 @@ 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_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_Set_Pos 0x080011db Thumb Code 36 oled.o(i.OLED_Set_Pos) - OLED_WrCmd 0x080011ff Thumb Code 16 oled.o(i.OLED_WrCmd) - OLED_WrDat 0x0800120f Thumb Code 16 oled.o(i.OLED_WrDat) - PendSV_Handler 0x0800121f Thumb Code 2 stm32f1xx_it.o(i.PendSV_Handler) - SVC_Handler 0x08001221 Thumb Code 2 stm32f1xx_it.o(i.SVC_Handler) - SysTick_Handler 0x08001223 Thumb Code 4 stm32f1xx_it.o(i.SysTick_Handler) - SystemClock_Config 0x08001227 Thumb Code 94 main.o(i.SystemClock_Config) - SystemInit 0x08001285 Thumb Code 2 system_stm32f1xx.o(i.SystemInit) - UsageFault_Handler 0x08001287 Thumb Code 2 stm32f1xx_it.o(i.UsageFault_Handler) - main 0x080012a9 Thumb Code 58 main.o(i.main) - mymain 0x080012f1 Thumb Code 38 mymain.o(i.mymain) - AHBPrescTable 0x0800131c Data 16 system_stm32f1xx.o(.constdata) - APBPrescTable 0x0800132c Data 8 system_stm32f1xx.o(.constdata) - Region$$Table$$Base 0x08001334 Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x08001354 Number 0 anon$$obj.o(Region$$Table) + 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) 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) - 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) + __libspace_start 0x20000064 Data 96 libspace.o(.bss) + __temporary_stack_top$libspace 0x200000c4 Data 0 libspace.o(.bss) @@ -1122,70 +1129,70 @@ Memory Map of the image Image Entry point : 0x080000ed - Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00001364, Max: 0x00010000, ABSOLUTE) + Load Region LR_IROM1 (Base: 0x08000000, Size: 0x000013f0, Max: 0x00010000, ABSOLUTE) - Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00001354, Max: 0x00010000, ABSOLUTE) + Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x000013e0, Max: 0x00010000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object 0x08000000 0x08000000 0x000000ec Data RO 3 RESET startup_stm32f103xb.o - 0x080000ec 0x080000ec 0x00000008 Code RO 1921 * !!!main c_w.l(__main.o) - 0x080000f4 0x080000f4 0x00000034 Code RO 2097 !!!scatter c_w.l(__scatter.o) - 0x08000128 0x08000128 0x0000001a Code RO 2099 !!handler_copy c_w.l(__scatter_copy.o) + 0x080000ec 0x080000ec 0x00000008 Code RO 1936 * !!!main c_w.l(__main.o) + 0x080000f4 0x080000f4 0x00000034 Code RO 2112 !!!scatter c_w.l(__scatter.o) + 0x08000128 0x08000128 0x0000001a Code RO 2114 !!handler_copy c_w.l(__scatter_copy.o) 0x08000142 0x08000142 0x00000002 PAD - 0x08000144 0x08000144 0x0000001c Code RO 2101 !!handler_zi c_w.l(__scatter_zi.o) - 0x08000160 0x08000160 0x00000002 Code RO 1965 .ARM.Collect$$libinit$$00000000 c_w.l(libinit.o) - 0x08000162 0x08000162 0x00000000 Code RO 1972 .ARM.Collect$$libinit$$00000002 c_w.l(libinit2.o) - 0x08000162 0x08000162 0x00000000 Code RO 1974 .ARM.Collect$$libinit$$00000004 c_w.l(libinit2.o) - 0x08000162 0x08000162 0x00000000 Code RO 1977 .ARM.Collect$$libinit$$0000000A c_w.l(libinit2.o) - 0x08000162 0x08000162 0x00000000 Code RO 1979 .ARM.Collect$$libinit$$0000000C c_w.l(libinit2.o) - 0x08000162 0x08000162 0x00000000 Code RO 1981 .ARM.Collect$$libinit$$0000000E c_w.l(libinit2.o) - 0x08000162 0x08000162 0x00000000 Code RO 1984 .ARM.Collect$$libinit$$00000011 c_w.l(libinit2.o) - 0x08000162 0x08000162 0x00000000 Code RO 1986 .ARM.Collect$$libinit$$00000013 c_w.l(libinit2.o) - 0x08000162 0x08000162 0x00000000 Code RO 1988 .ARM.Collect$$libinit$$00000015 c_w.l(libinit2.o) - 0x08000162 0x08000162 0x00000000 Code RO 1990 .ARM.Collect$$libinit$$00000017 c_w.l(libinit2.o) - 0x08000162 0x08000162 0x00000000 Code RO 1992 .ARM.Collect$$libinit$$00000019 c_w.l(libinit2.o) - 0x08000162 0x08000162 0x00000000 Code RO 1994 .ARM.Collect$$libinit$$0000001B c_w.l(libinit2.o) - 0x08000162 0x08000162 0x00000000 Code RO 1996 .ARM.Collect$$libinit$$0000001D c_w.l(libinit2.o) - 0x08000162 0x08000162 0x00000000 Code RO 1998 .ARM.Collect$$libinit$$0000001F c_w.l(libinit2.o) - 0x08000162 0x08000162 0x00000000 Code RO 2000 .ARM.Collect$$libinit$$00000021 c_w.l(libinit2.o) - 0x08000162 0x08000162 0x00000000 Code RO 2002 .ARM.Collect$$libinit$$00000023 c_w.l(libinit2.o) - 0x08000162 0x08000162 0x00000000 Code RO 2004 .ARM.Collect$$libinit$$00000025 c_w.l(libinit2.o) - 0x08000162 0x08000162 0x00000000 Code RO 2008 .ARM.Collect$$libinit$$0000002C c_w.l(libinit2.o) - 0x08000162 0x08000162 0x00000000 Code RO 2010 .ARM.Collect$$libinit$$0000002E c_w.l(libinit2.o) - 0x08000162 0x08000162 0x00000000 Code RO 2012 .ARM.Collect$$libinit$$00000030 c_w.l(libinit2.o) - 0x08000162 0x08000162 0x00000000 Code RO 2014 .ARM.Collect$$libinit$$00000032 c_w.l(libinit2.o) - 0x08000162 0x08000162 0x00000002 Code RO 2015 .ARM.Collect$$libinit$$00000033 c_w.l(libinit2.o) - 0x08000164 0x08000164 0x00000002 Code RO 2035 .ARM.Collect$$libshutdown$$00000000 c_w.l(libshutdown.o) - 0x08000166 0x08000166 0x00000000 Code RO 2048 .ARM.Collect$$libshutdown$$00000002 c_w.l(libshutdown2.o) - 0x08000166 0x08000166 0x00000000 Code RO 2050 .ARM.Collect$$libshutdown$$00000004 c_w.l(libshutdown2.o) - 0x08000166 0x08000166 0x00000000 Code RO 2052 .ARM.Collect$$libshutdown$$00000006 c_w.l(libshutdown2.o) - 0x08000166 0x08000166 0x00000000 Code RO 2055 .ARM.Collect$$libshutdown$$00000009 c_w.l(libshutdown2.o) - 0x08000166 0x08000166 0x00000000 Code RO 2058 .ARM.Collect$$libshutdown$$0000000C c_w.l(libshutdown2.o) - 0x08000166 0x08000166 0x00000000 Code RO 2060 .ARM.Collect$$libshutdown$$0000000E c_w.l(libshutdown2.o) - 0x08000166 0x08000166 0x00000000 Code RO 2063 .ARM.Collect$$libshutdown$$00000011 c_w.l(libshutdown2.o) - 0x08000166 0x08000166 0x00000002 Code RO 2064 .ARM.Collect$$libshutdown$$00000012 c_w.l(libshutdown2.o) - 0x08000168 0x08000168 0x00000000 Code RO 1935 .ARM.Collect$$rtentry$$00000000 c_w.l(__rtentry.o) - 0x08000168 0x08000168 0x00000000 Code RO 1942 .ARM.Collect$$rtentry$$00000002 c_w.l(__rtentry2.o) - 0x08000168 0x08000168 0x00000006 Code RO 1954 .ARM.Collect$$rtentry$$00000004 c_w.l(__rtentry4.o) - 0x0800016e 0x0800016e 0x00000000 Code RO 1944 .ARM.Collect$$rtentry$$00000009 c_w.l(__rtentry2.o) - 0x0800016e 0x0800016e 0x00000004 Code RO 1945 .ARM.Collect$$rtentry$$0000000A c_w.l(__rtentry2.o) - 0x08000172 0x08000172 0x00000000 Code RO 1947 .ARM.Collect$$rtentry$$0000000C c_w.l(__rtentry2.o) - 0x08000172 0x08000172 0x00000008 Code RO 1948 .ARM.Collect$$rtentry$$0000000D c_w.l(__rtentry2.o) - 0x0800017a 0x0800017a 0x00000002 Code RO 1969 .ARM.Collect$$rtexit$$00000000 c_w.l(rtexit.o) - 0x0800017c 0x0800017c 0x00000000 Code RO 2017 .ARM.Collect$$rtexit$$00000002 c_w.l(rtexit2.o) - 0x0800017c 0x0800017c 0x00000004 Code RO 2018 .ARM.Collect$$rtexit$$00000003 c_w.l(rtexit2.o) - 0x08000180 0x08000180 0x00000006 Code RO 2019 .ARM.Collect$$rtexit$$00000004 c_w.l(rtexit2.o) + 0x08000144 0x08000144 0x0000001c Code RO 2116 !!handler_zi c_w.l(__scatter_zi.o) + 0x08000160 0x08000160 0x00000002 Code RO 1980 .ARM.Collect$$libinit$$00000000 c_w.l(libinit.o) + 0x08000162 0x08000162 0x00000000 Code RO 1987 .ARM.Collect$$libinit$$00000002 c_w.l(libinit2.o) + 0x08000162 0x08000162 0x00000000 Code RO 1989 .ARM.Collect$$libinit$$00000004 c_w.l(libinit2.o) + 0x08000162 0x08000162 0x00000000 Code RO 1992 .ARM.Collect$$libinit$$0000000A c_w.l(libinit2.o) + 0x08000162 0x08000162 0x00000000 Code RO 1994 .ARM.Collect$$libinit$$0000000C c_w.l(libinit2.o) + 0x08000162 0x08000162 0x00000000 Code RO 1996 .ARM.Collect$$libinit$$0000000E c_w.l(libinit2.o) + 0x08000162 0x08000162 0x00000000 Code RO 1999 .ARM.Collect$$libinit$$00000011 c_w.l(libinit2.o) + 0x08000162 0x08000162 0x00000000 Code RO 2001 .ARM.Collect$$libinit$$00000013 c_w.l(libinit2.o) + 0x08000162 0x08000162 0x00000000 Code RO 2003 .ARM.Collect$$libinit$$00000015 c_w.l(libinit2.o) + 0x08000162 0x08000162 0x00000000 Code RO 2005 .ARM.Collect$$libinit$$00000017 c_w.l(libinit2.o) + 0x08000162 0x08000162 0x00000000 Code RO 2007 .ARM.Collect$$libinit$$00000019 c_w.l(libinit2.o) + 0x08000162 0x08000162 0x00000000 Code RO 2009 .ARM.Collect$$libinit$$0000001B c_w.l(libinit2.o) + 0x08000162 0x08000162 0x00000000 Code RO 2011 .ARM.Collect$$libinit$$0000001D c_w.l(libinit2.o) + 0x08000162 0x08000162 0x00000000 Code RO 2013 .ARM.Collect$$libinit$$0000001F c_w.l(libinit2.o) + 0x08000162 0x08000162 0x00000000 Code RO 2015 .ARM.Collect$$libinit$$00000021 c_w.l(libinit2.o) + 0x08000162 0x08000162 0x00000000 Code RO 2017 .ARM.Collect$$libinit$$00000023 c_w.l(libinit2.o) + 0x08000162 0x08000162 0x00000000 Code RO 2019 .ARM.Collect$$libinit$$00000025 c_w.l(libinit2.o) + 0x08000162 0x08000162 0x00000000 Code RO 2023 .ARM.Collect$$libinit$$0000002C c_w.l(libinit2.o) + 0x08000162 0x08000162 0x00000000 Code RO 2025 .ARM.Collect$$libinit$$0000002E c_w.l(libinit2.o) + 0x08000162 0x08000162 0x00000000 Code RO 2027 .ARM.Collect$$libinit$$00000030 c_w.l(libinit2.o) + 0x08000162 0x08000162 0x00000000 Code RO 2029 .ARM.Collect$$libinit$$00000032 c_w.l(libinit2.o) + 0x08000162 0x08000162 0x00000002 Code RO 2030 .ARM.Collect$$libinit$$00000033 c_w.l(libinit2.o) + 0x08000164 0x08000164 0x00000002 Code RO 2050 .ARM.Collect$$libshutdown$$00000000 c_w.l(libshutdown.o) + 0x08000166 0x08000166 0x00000000 Code RO 2063 .ARM.Collect$$libshutdown$$00000002 c_w.l(libshutdown2.o) + 0x08000166 0x08000166 0x00000000 Code RO 2065 .ARM.Collect$$libshutdown$$00000004 c_w.l(libshutdown2.o) + 0x08000166 0x08000166 0x00000000 Code RO 2067 .ARM.Collect$$libshutdown$$00000006 c_w.l(libshutdown2.o) + 0x08000166 0x08000166 0x00000000 Code RO 2070 .ARM.Collect$$libshutdown$$00000009 c_w.l(libshutdown2.o) + 0x08000166 0x08000166 0x00000000 Code RO 2073 .ARM.Collect$$libshutdown$$0000000C c_w.l(libshutdown2.o) + 0x08000166 0x08000166 0x00000000 Code RO 2075 .ARM.Collect$$libshutdown$$0000000E c_w.l(libshutdown2.o) + 0x08000166 0x08000166 0x00000000 Code RO 2078 .ARM.Collect$$libshutdown$$00000011 c_w.l(libshutdown2.o) + 0x08000166 0x08000166 0x00000002 Code RO 2079 .ARM.Collect$$libshutdown$$00000012 c_w.l(libshutdown2.o) + 0x08000168 0x08000168 0x00000000 Code RO 1950 .ARM.Collect$$rtentry$$00000000 c_w.l(__rtentry.o) + 0x08000168 0x08000168 0x00000000 Code RO 1957 .ARM.Collect$$rtentry$$00000002 c_w.l(__rtentry2.o) + 0x08000168 0x08000168 0x00000006 Code RO 1969 .ARM.Collect$$rtentry$$00000004 c_w.l(__rtentry4.o) + 0x0800016e 0x0800016e 0x00000000 Code RO 1959 .ARM.Collect$$rtentry$$00000009 c_w.l(__rtentry2.o) + 0x0800016e 0x0800016e 0x00000004 Code RO 1960 .ARM.Collect$$rtentry$$0000000A c_w.l(__rtentry2.o) + 0x08000172 0x08000172 0x00000000 Code RO 1962 .ARM.Collect$$rtentry$$0000000C c_w.l(__rtentry2.o) + 0x08000172 0x08000172 0x00000008 Code RO 1963 .ARM.Collect$$rtentry$$0000000D c_w.l(__rtentry2.o) + 0x0800017a 0x0800017a 0x00000002 Code RO 1984 .ARM.Collect$$rtexit$$00000000 c_w.l(rtexit.o) + 0x0800017c 0x0800017c 0x00000000 Code RO 2032 .ARM.Collect$$rtexit$$00000002 c_w.l(rtexit2.o) + 0x0800017c 0x0800017c 0x00000004 Code RO 2033 .ARM.Collect$$rtexit$$00000003 c_w.l(rtexit2.o) + 0x08000180 0x08000180 0x00000006 Code RO 2034 .ARM.Collect$$rtexit$$00000004 c_w.l(rtexit2.o) 0x08000186 0x08000186 0x00000002 PAD 0x08000188 0x08000188 0x00000040 Code RO 4 .text startup_stm32f103xb.o - 0x080001c8 0x080001c8 0x0000004e Code RO 1917 .text c_w.l(rt_memclr_w.o) - 0x08000216 0x08000216 0x00000006 Code RO 1919 .text c_w.l(heapauxi.o) - 0x0800021c 0x0800021c 0x0000004a Code RO 1956 .text c_w.l(sys_stackheap_outer.o) - 0x08000266 0x08000266 0x00000012 Code RO 1958 .text c_w.l(exit.o) - 0x08000278 0x08000278 0x00000008 Code RO 1966 .text c_w.l(libspace.o) - 0x08000280 0x08000280 0x0000000c Code RO 2027 .text c_w.l(sys_exit.o) - 0x0800028c 0x0800028c 0x00000002 Code RO 2038 .text c_w.l(use_no_semi.o) - 0x0800028e 0x0800028e 0x00000000 Code RO 2040 .text c_w.l(indicate_semi.o) + 0x080001c8 0x080001c8 0x0000004e Code RO 1932 .text c_w.l(rt_memclr_w.o) + 0x08000216 0x08000216 0x00000006 Code RO 1934 .text c_w.l(heapauxi.o) + 0x0800021c 0x0800021c 0x0000004a Code RO 1971 .text c_w.l(sys_stackheap_outer.o) + 0x08000266 0x08000266 0x00000012 Code RO 1973 .text c_w.l(exit.o) + 0x08000278 0x08000278 0x00000008 Code RO 1981 .text c_w.l(libspace.o) + 0x08000280 0x08000280 0x0000000c Code RO 2042 .text c_w.l(sys_exit.o) + 0x0800028c 0x0800028c 0x00000002 Code RO 2053 .text c_w.l(use_no_semi.o) + 0x0800028e 0x0800028e 0x00000000 Code RO 2055 .text c_w.l(indicate_semi.o) 0x0800028e 0x0800028e 0x00000002 Code RO 148 i.BusFault_Handler stm32f1xx_it.o 0x08000290 0x08000290 0x00000002 Code RO 149 i.DebugMon_Handler stm32f1xx_it.o 0x08000292 0x08000292 0x00000002 PAD @@ -1220,38 +1227,38 @@ 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 0x00000034 Code RO 1840 i.OLED_Cache_to_hardware oled.o - 0x08001128 0x08001128 0x0000008a Code RO 1841 i.OLED_Init oled.o - 0x080011b2 0x080011b2 0x00000028 Code RO 1842 i.OLED_Init_Display_Buffer oled.o - 0x080011da 0x080011da 0x00000024 Code RO 1843 i.OLED_Set_Pos oled.o - 0x080011fe 0x080011fe 0x00000010 Code RO 1847 i.OLED_WrCmd oled.o - 0x0800120e 0x0800120e 0x00000010 Code RO 1848 i.OLED_WrDat oled.o - 0x0800121e 0x0800121e 0x00000002 Code RO 153 i.PendSV_Handler stm32f1xx_it.o - 0x08001220 0x08001220 0x00000002 Code RO 154 i.SVC_Handler stm32f1xx_it.o - 0x08001222 0x08001222 0x00000004 Code RO 155 i.SysTick_Handler stm32f1xx_it.o - 0x08001226 0x08001226 0x0000005e Code RO 15 i.SystemClock_Config main.o - 0x08001284 0x08001284 0x00000002 Code RO 1739 i.SystemInit system_stm32f1xx.o - 0x08001286 0x08001286 0x00000002 Code RO 156 i.UsageFault_Handler stm32f1xx_it.o - 0x08001288 0x08001288 0x00000020 Code RO 1215 i.__NVIC_SetPriority stm32f1xx_hal_cortex.o - 0x080012a8 0x080012a8 0x00000048 Code RO 16 i.main main.o - 0x080012f0 0x080012f0 0x0000002c Code RO 1810 i.mymain mymain.o - 0x0800131c 0x0800131c 0x00000010 Data RO 1740 .constdata system_stm32f1xx.o - 0x0800132c 0x0800132c 0x00000008 Data RO 1741 .constdata system_stm32f1xx.o - 0x08001334 0x08001334 0x00000020 Data RO 2095 Region$$Table anon$$obj.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 - Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08001354, Size: 0x00000ac8, Max: 0x00005000, ABSOLUTE) + Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x080013e0, Size: 0x000006c8, Max: 0x00005000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x20000000 0x08001354 0x0000000c Data RW 752 .data stm32f1xx_hal.o - 0x2000000c 0x08001360 0x00000004 Data RW 1742 .data system_stm32f1xx.o + 0x20000000 0x080013e0 0x0000000c Data RW 752 .data stm32f1xx_hal.o + 0x2000000c 0x080013ec 0x00000004 Data RW 1742 .data system_stm32f1xx.o 0x20000010 - 0x00000054 Zero RW 17 .bss main.o - 0x20000064 - 0x00000400 Zero RW 1849 .bss oled.o - 0x20000464 - 0x00000060 Zero RW 1967 .bss c_w.l(libspace.o) - 0x200004c4 0x08001364 0x00000004 PAD - 0x200004c8 - 0x00000200 Zero RW 2 HEAP startup_stm32f103xb.o - 0x200006c8 - 0x00000400 Zero RW 1 STACK startup_stm32f103xb.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 ============================================================================== @@ -1263,8 +1270,8 @@ Image component sizes 28 6 0 0 0 920 hread_interface.o 326 24 0 0 84 395176 main.o - 44 6 0 0 0 473 mymain.o - 298 4 0 0 1024 3917 oled.o + 64 10 144 0 0 1027 mymain.o + 274 0 0 0 0 3653 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 @@ -1276,7 +1283,7 @@ Image component sizes 2 0 24 4 0 1131 system_stm32f1xx.o ---------------------------------------------------------------------- - 4302 278 292 16 2644 458899 Object Totals + 4298 278 436 16 1620 459189 Object Totals 0 0 32 0 0 0 (incl. Generated) 6 0 0 0 0 0 (incl. Padding) @@ -1326,15 +1333,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 4656 294 292 16 2744 457167 Grand Totals - 4656 294 292 16 2744 457167 ELF Image Totals - 4656 294 292 16 0 0 ROM Totals + 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 ============================================================================== - Total RO Size (Code + RO Data) 4948 ( 4.83kB) - Total RW Size (RW Data + ZI Data) 2760 ( 2.70kB) - Total ROM Size (Code + RO Data + RW Data) 4964 ( 4.85kB) + 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) ============================================================================== 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 d0748d6..7a84082 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)(0x62593CA4) +I (./MYDEIVERS/oled.h)(0x62598616) 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)(0x62593CD5)(--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)(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) 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)(0x62593CA4) +I (MYDEIVERS\oled.h)(0x62598616) I (MYDEIVERS\hread_interface.h)(0x625910E8) -F (.\MYDEIVERS\oled.c)(0x62593D0B)(--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)(0x62593CA4) +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) 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 7eb8518bfea78c2e8dd6c3004ae717926c21966d..2bd68ce4a06e229b0c996329409ef94fc57f632a 100644 GIT binary patch delta 694 zcma))&1(};6vgj-&SWOB)-)*ik@gPJg$0XLapg+VSgO^;ilEG57HyuEG;L@nHqk;x zEOz5c(EJJF($8q^O#HSxS3;OsxKM1iUApsj45S;u2M2!Vocr$EyxWfq=dsb#iUJ4( zT9@$kNl!+LJ-qkpegyb@yJKoAriLuR+QCv9rlz*P*ZSaSgfC%qYR0ZyXHD9ZJB+%UlAp+{JzfOXt+2xT>(5? zKeC~&)?AsGNT;pr!sOWOw0+5*FHhRA=_f%?rV#dY>hw%uTOIcg{H^1jjF0BVvevfJ z=g0II-&H)R*~QX){u-qInH~C%!IkB<%8E3W+uF~;ng&m0|9%Ivfdc12EkXh!9A0@4!!4fPy$;l^4E+;N0F5=d!pCx&mc$|2M dL!5k()a0beNfU7}&|zKD4|K55Quv=j>JRI4z#9Mn delta 486 zcma)(OG`pQ6vxk*u3j@Kd#pq{L#=`$szr+y5hCHr9-Hb4E~JU*iD_@pkTP0D5H8yU z(XzDcq1UfbUZ_Pv^$m(Pov1~dpn)IE|Mx$`3{3J=Zk;;Fn1)=Gu z_RY@xsy$`TckRw8_ux<<82(jO%JtxI@>wmX^w`{DbaD#X|8%YY7);Zvjj`wHRj;%q zYT#UXYm-Pu5<^xkWEFLB8fNC?zEuY~Mco|6m^{ipHW!L|IE^!hC?_mCTq+unDXSUs ziWVfr1uY9&5wt33P0+fa4MCgQJP%wcT9lMRLEFp@HV8`dW|!GR&2M$Wb>^+n(P1R` zq8mj8l#F1opUthJBAX(cBI4I$3W`iNCL0s6mrYSoiA{-339-j=fT`#SlNi6#_+O#r E6BTca0RR91 diff --git a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/main.o b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/main.o index fa62e02ddb4a6cabc58f8de4dd9e3c501a393497..d0c8b6783337c09a231e5369d333f809e2f1aeaa 100644 GIT binary patch delta 77 zcmdlnRb|Iil?{vn97aY~CYDyF7R{Uj?VJLPK+FWh%s|Wn#H>Kf2E^>!IR!YRJJ}2^ Y%nWpmr+=KuVKwBdhlMepa;bsycR*d_+|)X;lc0!=Ivt^_Fp}yKMnjX7r-FE zS{%N-@=sFl@x7l9ZNSHUG)Yf+oA*2M&q{-?HYmX|uu@p2Y*4HIZ8-~vY}`TID_5g1 zTB=rHzP%eV`z->{Gd?yt5-wDt5D(#E+w064i!j>_OEA+7HJIy$DY&V^KHP5_RS4VJ z&SFAB484&qxYod^W%rP7TC#oz&m*%Rl+1>??m&Z5PxqI#Ud>Bn%o`JHwyKQB9 z%%PY>^7)Q++c*1T(v$)z1KRMq(N%2ASQRP-{d*` zx-+N`TBlJTwMJ2ES|fO`bxwL?!uo=2;=%@J>3{|1-r2;57H9nd8ziidN^hC?w?O_s D55SqS delta 309 zcmbO^N8$HO1)dw63=B++4Dy@P7@ln8ab)LO^7F|gHU=P=Fgcvvnd>TyTh+XTy?qHg zBM>tIF*6XeY+u68I`jVY8_!uSMTHqSxRe+fST?0`7M143mt-bqGem8-e8DQf%Ocgl z*u35MD{CVU3r_>%@$Huw*&NJ4qH){BEZLM?av+9wm)}Z-#ZV)ZQZ`&K6?lYh`DUr6ZUd-7V!o~pXt@y9Ipj|Vyw5h7^bH& z*(=BcIn2|`c{t2KN(H8G455wj(c^(CMaYlJbX6G9$z+hrf0ssqKSzG`B diff --git a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/mymain.o b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/mymain.o index 9044bfca21f86d8e1045f3e96027dcc710829127..df44e6e46aca30ae568b8e248613bab382a5eeb4 100644 GIT binary patch delta 15771 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 a^tcAK;m*eOgLQsPYDbB=P8RUnpML{LA_Or2 diff --git a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/oled.crf b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/oled.crf index 0d2f73a066ea02a3bafe28842b7d3daeb734d045..c7fec428964804a03d5a8222c3dc00e41915179a 100644 GIT binary patch delta 1703 zcmY*aZA_JA7{2fKd?OM^1VqNu>w&Gr0~EHJt&dHhMwXhIrMA(L!{gCFm@whY*!zw$ z{oE z%SZH?H}v3?k4R$@7bK0ID#54s6|zT?41JQ>Gc zO3CZbo1Sjd!+-`j0OyG5alLSUg`a|Mn6fY2+*a2XZE2w0iCoGSE+$&I?$Mg+y4Hra zIwWaZ?9#NW@ZOA6gVs(>iL{8&b4o0Ml~Ze>x`aRF;j=x~@9dxw)&ETKxXi4rt*WbP zZfXkc4pVO;o4iW`Xd9RAmg-Pjh$doCKCLQO#_DHXYm7OkA!U45 z+88oQD-$`XeTL+Xf!&>0nA&1UI-++{NxErRd6dtWQ7W4++o@u{jL-u@X?q@MZlPt6 zUauMtWQfACw`W}eV@mmEraK{{v>=g{I@^?V)<^ctyDIV_dRRHxgGkHd$i|deY1#}j zO3Rg*eTp&ZY;D^^cUV4R_L|H-eaFb!ORh5+Ier>o(P^?U8Ot>+uXdMSaRKg;(kq_J z1)(B(Q*yR0Dv;khS9n!b4`?R;Wi6lq$$nj^&}u86-jcjX7r|7uvW}y!%gUfZ$%`S^ z=zl}RCFeox(??^CS>7_kL&qf-nA~W2=v|vV3wFY0yTIPF*-o&NHj7~6VVjAUHT@9c zBa#bE4ug%_tRC!rn{7w!n9amdP4BQ))3_8_x(MI^#XyP4v3Qo(XRL)-2doDk2Q~m3 zfla^@z-Hh{ligN@a(D`A3$PW~25blFfiTbj>;NLbE|bq<^dH!J`kni%O!`m?jMT4* zMf{K@XhMp7T~rz5lu>=>!KXR zs{a+$)uWcfSpGrzCw9IV*W@fXeQL`9Z^B17CB<@GG@5K6@tHJ~s^nGHE%dn*L3~9P zL5C>k*J1O86cu;{EGirqEjOK(;y%3{ZC@%P9^_mrkG_&(uZ}CQ_>Uc;OLK_*nxoLl zp|7Rr)I}$rnnM`sk{n0$8;NJ91M2yq-eA5Tdw(m%0fhTBb$#x^oBB?Qe-XKA8>1bW z{Tkn971Eg-nQJ#^J^1L~C$ra?4`I6>Bp$eqqoo~I;feex)dR{0J8Rf95A-LS<%0ce zv&As`#b)?6ycK4@N^wxr0R|i@I*lPsNfATz1V%rEo19C^9uytcxEqngO_3K7v62yW zTLafM;QgBvy>RJ8s2AQyO(Occ6#aQ8Ep)+s0cFKHC`A9#YnKL7v# delta 1078 zcmZ9MS!_&U6vxlGckWDErHiFSoPJs_V%jEs6cla6pwu3*WvCB{rLm-@n)Hh8!2^+S z<4Fi&t0-lxwbfp)LT|#0q|<6N9vUek{`XEbnB;de|NlAX|K;3oG9Bks_bC;Amr7(X zNt>p&_hZP&s$5oH5m{2PVBw0bo7PnqZJ;xKpN<9zpCe7-S)sH;-}~j2y>{rJ9b#Yr z69nRR$lCYOIoV-V6g27dNTh6a+1AaQqg$%!OnWA!QP$$pLAw+ zT6vk6@wdCG1KW3Oqlxj|U6z|Rco1D+skK?^Y@T*-W3L5*@r}Kq?vYD!=)C4kCB-P$ zBwM79ZJz1|>4N4g^})@di<+~Qg!@~(q@QRhb<^mQ=3$T(>MO)$%_AUosut&FMoMAB zbZXKvL`go(0x%9t0i|Fjh=5sOHkbn{!CWv8RDt<6&vA>rkOfc+!6L92tN<&)DzF+v z!5UC)bDo<@*ZgA}vI6_vbh@qu`(+uD%~ftLHEYRHQiA4s(2YIhD;~!%cEc}?3e;fg zrk0UPMj0}iOE4AJqLdV&IR-ktsV{gON9QfSRDkt37a_NOna``-hBUgPWxNt?^I=r( z`l5u(+zh&>C5$)95;moX&m!i&mSS83OR@PG@4iLLB((=q54hJYXOO29xZgjKh zk(OE|wYXSQVpxXXBKEPCIwf_uX;bPOcs;BqS`M(nqTZf72q(2_>43A>uyJq(Jx$6^ zG<;#c0_WL3P9vP>NvA*LoI8|WXz4;o7pA({^x{vzeW|4fZV%iZUTS(L?!)irm6l%E ueXwoAz{xBJ4D&Q9ualJ@i1>->FZQdAh-yn#zQOhS_Zw#9T>$?Rl>ZxN4KR-Y diff --git a/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/oled.o b/f103c8t6_keil/MDK-ARM/f103c8t6_KEIL/oled.o index 67f68be70f7b7062f592ea5b18669d858b2368b9..951c639afa29f449407dc0ad8e5bc36a036dcf90 100644 GIT binary patch delta 22947 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