m0110a read seems to be working

This commit is contained in:
dekunukem
2022-06-24 17:17:27 +01:00
parent 955394624a
commit 2be99bbb07
16 changed files with 635 additions and 446 deletions

View File

@@ -10,8 +10,11 @@
#define M0110A_OK 0
#define M0110A_LINE_IDLE 1
#define M0110A_LINE_HOST_REQ 2
#define M0110A_TIMEOUT 3
uint8_t m0110a_get_line_status(void);
uint8_t m0110a_get_update(uint8_t* result, uint16_t timeout_ms);
#ifdef __cplusplus
}

View File

@@ -3660,9 +3660,9 @@
</Doc>
<Doc>
<Name>..\Src\m0110a.c</Name>
<ColumnNumber>17</ColumnNumber>
<TopLine>35</TopLine>
<CurrentLine>49</CurrentLine>
<ColumnNumber>24</ColumnNumber>
<TopLine>29</TopLine>
<CurrentLine>52</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>

View File

Binary file not shown.

View File

@@ -28,8 +28,9 @@ Project File Date: 06/24/2022
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
Build target 'apple_all'
compiling m0110a.c...
compiling main.c...
linking...
Program Size: Code=9432 RO-data=392 RW-data=52 ZI-data=2164
Program Size: Code=9648 RO-data=392 RW-data=52 ZI-data=2164
FromELF: creating hex file...
"apple_all\apple_all.axf" - 0 Error(s), 0 Warning(s).
@@ -54,7 +55,7 @@ Package Vendor: Keil
<h2>Collection of Component Files used:</h2>
* Component: ARM::CMSIS:CORE:5.3.0
Build Time Elapsed: 00:00:01
Build Time Elapsed: 00:00:02
</pre>
</body>
</html>

View File

@@ -11,7 +11,7 @@
:10009000E7000008691A0008791A0008E70000085C
:1000A000E700000891160008E7000008E7000008D4
:1000B000E7000008E7000008E7000008E700000884
:1000C0000348854600F04EF800480047D921000853
:1000C0000348854600F04EF80048004759220008D2
:1000D000A80800200448804704480047FEE7FEE7E0
:1000E000FEE7FEE7FEE7FEE7FD190008C100000895
:1000F00030B50B46014600202022012409E00D46C0
@@ -23,7 +23,7 @@
:10015000F6E710B513460A4604461946FFF7F0FFC6
:10016000204610BD064C0125064E05E0E36807CC8D
:100170002B430C3C98471034B442F7D3FFF7A4FF4D
:10018000402600086026000870B500240146203192
:10018000182700083827000870B5002401462031E0
:100190004A78022A03D004218163012416E0026810
:1001A00013680E25AB431360026813685B085B009D
:1001B00013600122056C1346AB40C56B6B604A703F
@@ -104,10 +104,10 @@
:10066000E9680843606000F02DF86168084A0906EF
:10067000090F515CC840074908600020FFF790FE51
:100680000020F8BD00200240001002408813000046
:100690002726000824000020014800687047000059
:10069000FF26000824000020014800687047000081
:1006A000240000200448054900684968044A4905B7
:1006B000490F515CC84070472400002000100240E0
:1006C0003726000830B516A30FCB89B06C460FC48F
:1006C0000F27000830B516A30FCB89B06C460FC4B6
:1006D00017A30FCB0FC41A494A680C2014460440D4
:1006E0001848042C05D0184B082C04D00C2C00D131
:1006F000184609B030BD9402240F6D462C5DC96ABE
@@ -223,7 +223,7 @@
:100DD000A116000835170008D71600086917000883
:100DE00070B501220926D503F60629463046FFF7DD
:100DF000B2FA0F4C2078DE2802D00E49012048704C
:100E00000B4801F003FBA078032805D10121002243
:100E00000B4801F057FBA078032805D101210022EF
:100E100049030948FFF79FFA054A2023D11A0748DA
:100E2000FFF774FF002229463046FFF794FA70BDA1
:100E30006002002014000020000800486C00002020
@@ -290,19 +290,19 @@
:10120000890609D4C168C943890605D42021C94388
:1012100001612046FFF73FFE70BD70477047000038
:10122000F8B5344C07462068334E874245D1E06814
:1012300001F0C9F805002ED00021695E304600F0AB
:1012300001F01DF905002ED00021695E304600F056
:1012400029FF02213046695E1C3000F023FFE06870
:1012500001F0C4F8284800F053FFB06126481C3064
:1012600000F04EFF244A1C329061B06900F024FF68
:1012500001F018F9284800F05DFFB06126481C3005
:1012600000F058FF244A1C329061B06900F024FF5E
:1012700061680968C862906900F01EFFA16809688A
:10128000C862002D19D0AA79FF2109200131C006BA
:10129000002A0DD109E00021174800F0FBFE164896
:1012A00000211C3000F0F6FED4E72A7A002A01D093
:1012B000002200E00122FFF74EF86068874209D162
:1012C000B069002806D00C4802DD01F008F901E001
:1012D00001F0FCF8A068874208D107481C308069FB
:1012E000002803D0054802DD01F0F9F8F8BD01F04F
:1012F000EDF8F8BD0400002034000020500000206C
:1012C000B069002806D00C4802DD01F05CF901E0AD
:1012D00001F050F9A068874208D107481C308069A6
:1012E000002803D0054802DD01F04DF9F8BD01F0FA
:1012F00041F9F8BD04000020340000205000002017
:10130000704770B5040005D025466035687A00281E
:1013100002D006E0012070BD00202872204600F0B7
:1013200027F8242068722068016849084900016094
@@ -335,8 +335,8 @@
:1014D00042FF0122170209203946C006FEF73BFFF2
:1014E00009200022A100C006FEF735FF00220821D6
:1014F0002148FEF730FF0094002401250195029455
:1015000069461B480394FEF771FE00961126694652
:101510001948019602950394FEF768FE8120800029
:1015000069461B480394FEF771FE0096112602946B
:101510006946194801960394FEF768FE8120800011
:10152000009002200290019469461348FEF75EFE87
:10153000092002946946C006009701960394FEF7BD
:1015400055FEE80300900920029469460195039432
@@ -489,7 +489,7 @@
:101E7000C1693046884304D00020B842D9D0002040
:101E8000F3E70120F9E700000FB410B503A9044BF4
:101E9000044A029800F018F810BC08BC04B01847B7
:101EA000E92000082800002002E008C8121F08C12D
:101EA000FD2000082800002002E008C8121F08C119
:101EB000002AFAD170477047002001E001C1121FCB
:101EC000002AFBD170470000FFB58DB00F460546D4
:101ED000002606E025280AD0109A0F9990476D1C1D
@@ -524,98 +524,111 @@
:1020A000C9B20175022901D30021017570470902E7
:1020B000014308B270470000002800DA40420028BF
:1020C00001DD282802DBFF20F53070470149400080
:1020D000085A70479C25000810B502490860FEF7B1
:1020E00067FF10BD0000002013B50A2301226946D6
:1020F0000248FFF763F900981CBD0000D0010020E2
:1021000010B500210A4653001C181023E35E521C30
:102110005918022AF7DBC80F4018401010BD70B5DF
:1021200015460E46044600F022F8002801D0012092
:1021300070BD2178606846542178A06845542078A5
:10214000A178401CFDF7D4FF2170002070BD70B550
:102150000D4604468170284600F0CCF860602846A1
:1021600000F0C8F8A060204600F00FF870BD10B570
:10217000044681780078401CFDF7BAFF6078814200
:1021800001D1012010BD002010BD10B50446002073
:1021900020706070A1786068FDF7D9FFA178A06811
:1021A000FDF7D5FF10BD000070B5FEF7DBF8044663
:1021B000084D07E002212846FEF7C4F8002801D0A8
:1021C000012070BDFEF7CEF8001B0A28F2D30220D2
:1021D00070BD0000000400481CB5FEF7D1F8FFF701
:1021E000D7FBFFF751F9FFF7C9F9FFF70FFAFFF730
:1021F000E3F931480024314E84602E49C6602F2512
:10220000046122C080270C3090C01C38FEF768FEA5
:10221000002800D0FEE7284829494030846022C0C9
:102220008460C4602749046141600838FEF758FEA5
:10223000002800D0FEE720482349403884608761A9
:10224000C660046122C00838FEF74AFE002800D0AC
:10225000FEE70120009401901C4C002322781C49C9
:102260001CA0FFF711FE14488038FFF735FF10213E
:102270001D48FFF76CFF1021201D00F08AF81A4856
:1022800020214038FDF763FF174A0B482023203AEE
:10229000D11AE438FEF73AFD6078002801D000F04A
:1022A0003FF9FFF781FF0228F6D110A0FFF7ECFD00
:1022B000F2E700000044014050010020FFFF000051
:1022C00000480140102700000020004014000020BA
:1022D000EC25000825730A7265762564207625644E
:1022E0002E25642E25640A008002002068656C6C2F
:1022F0006F210A00F0B50B30C108C900144F002649
:10230000144A0FE003688B420BD38B4205D95C1A49
:102310004318456830C3083B00E04368136002C0BF
:1023200004E0021D10680028ECD13046002803D1DB
:102330003868002801D00020F0BD064A0648106029
:10234000064A121AD208D20044C001203860D7E7EA
:10235000300000202C000020AC020020A804002047
:1023600070B50D46044600F020F8002801D0012089
:1023700070BD20780C226168504308182946FDF78B
:10238000CDFE2078A178401CFDF7B2FE2170002020
:1023900070BD10B5044681700C204843FFF7AAFFBA
:1023A0006060204600F026F810BD10B50446817824
:1023B0000078401CFDF79CFE6078814201D101202D
:1023C00010BD002010BD41780278914201D100205B
:1023D000704740680C2251434018704710B50446BE
:1023E00040782178884204D0A178401CFDF780FE17
:1023F000617010BD10B500210170417081780C2210
:1024000051434068FDF7A3FE10BD000070B50446BF
:102410008078092824D0082842D001283FD12021E3
:102420002848FDF794FE2748CD210170617841705E
:10243000802585700321C170234908220978017124
:102440000021417181710121C1710021044658347C
:10245000635C002B32D0022B29D0012B29D02BE03A
:1024600061792079FFF723FE164A4C321080E1791A
:10247000A079FFF71CFE5080207A124940429080DC
:10248000607B9071A07B1072E07BD071207C5072D9
:10249000607C90720C484C31001DFFF761FF70BDED
:1024A0000848A27921794030FFF739FE70BD815488
:1024B00002E00B462B438354521CD2B2491C102914
:1024C000C6DB70BD400200201400002010B5817BE7
:1024D000491E8907890F817300F00AF810BD10B5F5
:1024E000817B491C8907890F817300F001F810BDB9
:1024F00070B50446807B09490D5CA1882068EA0715
:1025000000D00122FDF727FFA807A189A06801D507
:10251000012200E00022FDF71EFF70BD9825000893
:1025200011A0FFF7B1FC134D0024295D12A0FFF7A5
:10253000ABFC641C202CF8DB10A0FFF7A5FC134DAE
:10254000002408212846FDF702FF6420FDF740FE25
:10255000641C642CF5DBBFF34F8F0E490C48C86038
:10256000BFF34F8F00BFFDE7535049204552524FF4
:10257000520A000060020020256420000A72656291
:102580006F6F74696E672E2E2E0A000000040048DB
:102590000400FA0500ED00E000010302F401D4306C
:1025A0000528DE22361F601C0F1A1A186716E81459
:1025B00092135B1240113C104B0F6B0E990DD30C14
:1025C0001A0C6A0BC30A240A8D09FC087208ED076D
:1025D0006D07F3067C060A069C053105CA046604ED
:1025E0000504A6034B03F2029B02460255534234F4
:1025F00056432050726F746F636F6C20426F61722C
:10260000640A4170706C65204C6973612C204D61C7
:10261000632026204144420A64656B754E756B65E4
:102620006D20323032320000000000000000000156
:102630000203040607080900000000010203040069
:10264000602600080000002034000000A81E0008DA
:10265000942600083400002074080000B81E00080A
:10266000000000000000000000000000000000006A
:10267000000000000000000000000000000000005A
:102680000000000000127A000000000000000000BE
:042690000000000046
:1020D000085A70477426000800B5014600F08CF9D4
:1020E000411800F089F98842FBD300BD10B50249C0
:1020F0000860FEF75DFF10BD0000002013B50A2345
:10210000012269460248FFF759F900981CBD0000FA
:10211000D001002010B500210A4653001C181023DE
:10212000E35E521C5918022AF7DBC80F4018401012
:1021300010BD70B515460E46044600F022F8002882
:1021400001D0012070BD2178606846542178A068D4
:1021500045542078A178401CFDF7CAFF217000206B
:1021600070BD70B50D4604468170284600F00EF92A
:102170006060284600F00AF9A060204600F00FF8E1
:1021800070BD10B5044681780078401CFDF7B0FFA3
:102190006078814201D1012010BD002010BD10B532
:1021A0000446002020706070A1786068FDF7CFFFC2
:1021B000A178A068FDF7CBFF10BD000070B5FEF759
:1021C000D1F80446084D07E002212846FEF7BAF888
:1021D000002801D0012070BDFEF7C4F8001B0A28BA
:1021E000F2D3022070BD00000004004870B50C4618
:1021F0000546FFF7E3FF012805D0284600F004F864
:10220000204600F01DFA70BDF8B50025114E0746B6
:102210008024002201213046FEF79DF8B420FFF70C
:102220005BFF012211463046FEF795F85020FFF77C
:1022300053FF02213046FEF785F8012800D12543DF
:1022400064088C20FFF748FF002CE2D13D7000208D
:10225000F8BD0000000400480EB5FEF791F8FFF746
:1022600097FBFFF711F9FFF789F9FFF7CFF9FFF7B0
:10227000A3F937480024374E84603449C6602F25BF
:10228000046122C080270C3090C01C38FEF728FE65
:10229000002800D0FEE72E482F494030846022C03D
:1022A0008460C4602D49046141600838FEF718FE5F
:1022B000002800D0FEE7264829494038846087611D
:1022C000C660046122C00838FEF70AFE002800D06C
:1022D000FEE7012000940190224C0023227822493D
:1022E00022A0FFF7D1FD1A488038FFF7FFFE10212A
:1022F0002348FFF736FF1021201D00F09EF82048EC
:1023000020214038FDF723FF1D4A11482023203AA1
:10231000D11AE438FEF7FAFC1A4D4B26F600607825
:10232000002801D000F050F901212846FEF70AF8F4
:102330000028F4D0314602A8FFF758FF0128EED05C
:102340006846017A10A0FFF79FFDE8E700440140CE
:1023500050010020FFFF000000480140102700004E
:102360000020004014000020C426000825730A72D3
:1023700065762564207625642E25642E25640A0062
:10238000800200200004004825640000F0B50B30F6
:10239000C108C900144F0026144A0FE003688B429D
:1023A0000BD38B4205D95C1A4318456830C3083BF0
:1023B00000E04368136002C004E0021D10680028BA
:1023C000ECD13046002803D13868002801D0002025
:1023D000F0BD064A06481060064A121AD208D2001A
:1023E00044C001203860D7E7300000202C000020D6
:1023F000AC020020A8040020024800680068406A7F
:10240000704700000000002070B50D46044600F043
:1024100020F8002801D0012070BD20780C226168CE
:10242000504308182946FDF779FE2078A178401C12
:10243000FDF75EFE2170002070BD10B5044681706E
:102440000C204843FFF7A2FF6060204600F026F80A
:1024500010BD10B5044681780078401CFDF748FE99
:102460006078814201D1012010BD002010BD41786B
:102470000278914201D10020704740680C225143FC
:102480004018704710B5044640782178884204D03F
:10249000A178401CFDF72CFE617010BD10B5002125
:1024A0000170417081780C2251434068FDF74FFE66
:1024B00010BD000070B504468078092824D0082893
:1024C00042D001283FD120212848FDF740FE27486F
:1024D000CD21017061784170802585700321C17024
:1024E000234908220978017100214171817101217C
:1024F000C171002104465834635C002B32D0022B9A
:1025000029D0012B29D02BE061792079FFF7CFFD6D
:10251000164A4C321080E179A079FFF7C8FD50804F
:10252000207A124940429080607B9071A07B1072AB
:10253000E07BD071207C5072607C90720C484C31F2
:10254000001DFFF761FF70BD0848A2792179403076
:10255000FFF7EFFD70BD815402E00B462B4383541F
:10256000521CD2B2491C1029C6DB70BD40020020AB
:102570001400002010B5817B491E8907890F8173E3
:1025800000F00AF810BD10B5817B491C8907890F3E
:10259000817300F001F810BD70B50446807B0949D5
:1025A0000D5CA1882068EA0700D00122FDF7D3FE68
:1025B000A807A189A06801D5012200E00022FDF74B
:1025C000CAFE70BD7026000811A0FFF75DFC134D18
:1025D0000024295D12A0FFF757FC641C202CF8DBB7
:1025E00010A0FFF751FC134D002408212846FDF7E9
:1025F000AEFE6420FDF7ECFD641C642CF5DBBFF33C
:102600004F8F0E490C48C860BFF34F8F00BFFDE7E6
:10261000535049204552524F520A00006002002098
:10262000256420000A7265626F6F74696E672E2ED2
:102630002E0A0000000400480400FA0500ED00E046
:1026400070B50546FDF78EFE0446084EFDF78AFE7E
:10265000001BA84201D9032070BD02213046FDF7BE
:1026600071FE0128F2D1002070BD00000004004876
:1026700000010302F401D4300528DE22361F601C5D
:102680000F1A1A186716E81492135B1240113C10C7
:102690004B0F6B0E990DD30C1A0C6A0BC30A240A4C
:1026A0008D09FC087208ED076D07F3067C060A0623
:1026B0009C053105CA0466040504A6034B03F20217
:1026C0009B0246025553423456432050726F746F3A
:1026D000636F6C20426F6172640A4170706C652098
:1026E0004C6973612C204D61632026204144420ACD
:1026F00064656B754E756B656D203230323200004B
:1027000000000000000000010203040607080900A1
:102710000000000102030400382700080000002028
:1027200034000000A81E00086C27000834000020B8
:1027300074080000B81E000800000000000000003F
:102740000000000000000000000000000000000089
:1027500000000000000000000000000000127A00ED
:0C2760000000000000000000000000006D
:04000005080000C12E
:00000001FF

View File

@@ -3,7 +3,7 @@
<title>Static Call Graph - [apple_all\apple_all.axf]</title></head>
<body><HR>
<H1>Static Call Graph for image apple_all\apple_all.axf</H1><HR>
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Fri Jun 24 13:22:08 2022
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Fri Jun 24 17:14:41 2022
<BR><P>
<H3>Maximum Stack Usage = 212 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
Call chain for Maximum Stack Depth:</H3>
@@ -73,7 +73,7 @@ Global Symbols
<P><STRONG><a name="[28]"></a>__main</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000))
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f072xb.o(.text)
</UL>
<P><STRONG><a name="[92]"></a>_main_stk</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))
<P><STRONG><a name="[97]"></a>_main_stk</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))
<P><STRONG><a name="[2f]"></a>_main_scatterload</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
<BR><BR>[Calls]<UL><LI><a href="#[30]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__scatterload
@@ -83,15 +83,15 @@ Global Symbols
<BR><BR>[Called By]<UL><LI><a href="#[30]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__scatterload
</UL>
<P><STRONG><a name="[93]"></a>_main_clock</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008))
<P><STRONG><a name="[98]"></a>_main_clock</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008))
<P><STRONG><a name="[94]"></a>_main_cpp_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A))
<P><STRONG><a name="[99]"></a>_main_cpp_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A))
<P><STRONG><a name="[95]"></a>_main_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B))
<P><STRONG><a name="[9a]"></a>_main_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B))
<P><STRONG><a name="[96]"></a>__rt_final_cpp</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D))
<P><STRONG><a name="[9b]"></a>__rt_final_cpp</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D))
<P><STRONG><a name="[97]"></a>__rt_final_exit</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F))
<P><STRONG><a name="[9c]"></a>__rt_final_exit</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F))
<P><STRONG><a name="[0]"></a>Reset_Handler</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, startup_stm32f072xb.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f072xb.o(RESET)
@@ -184,16 +184,16 @@ Global Symbols
<P><STRONG><a name="[6]"></a>WWDG_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f072xb.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f072xb.o(RESET)
</UL>
<P><STRONG><a name="[98]"></a>__aeabi_uidiv</STRONG> (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)
<P><STRONG><a name="[9d]"></a>__aeabi_uidiv</STRONG> (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)
<P><STRONG><a name="[3b]"></a>__aeabi_uidivmod</STRONG> (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = __aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[79]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_is_full
<LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_add
<LI><a href="#[81]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_is_full
<LI><a href="#[80]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_add
<LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_is_full
<LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_add
<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_is_full
<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_add
<LI><a href="#[62]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_pop
<LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
<LI><a href="#[41]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetSysClockFreq
@@ -201,36 +201,36 @@ Global Symbols
<LI><a href="#[7d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_core
</UL>
<P><STRONG><a name="[8d]"></a>__aeabi_memcpy</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_add
<P><STRONG><a name="[92]"></a>__aeabi_memcpy</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_add
</UL>
<P><STRONG><a name="[99]"></a>__aeabi_memcpy4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED)
<P><STRONG><a name="[9e]"></a>__aeabi_memcpy4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED)
<P><STRONG><a name="[9a]"></a>__aeabi_memcpy8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED)
<P><STRONG><a name="[9f]"></a>__aeabi_memcpy8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED)
<P><STRONG><a name="[32]"></a>__aeabi_memset</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[33]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_memset$wrapper
<LI><a href="#[31]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
</UL>
<P><STRONG><a name="[9b]"></a>__aeabi_memset4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[a0]"></a>__aeabi_memset4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[9c]"></a>__aeabi_memset8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[a1]"></a>__aeabi_memset8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[31]"></a>__aeabi_memclr</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[32]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memset
</UL>
<BR>[Called By]<UL><LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_reset
<LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_reset
<BR>[Called By]<UL><LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_reset
<LI><a href="#[86]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_reset
</UL>
<P><STRONG><a name="[89]"></a>__aeabi_memclr4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text))
<P><STRONG><a name="[8e]"></a>__aeabi_memclr4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[4c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_spi_buf
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[9d]"></a>__aeabi_memclr8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[a2]"></a>__aeabi_memclr8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[33]"></a>_memset$wrapper</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[32]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memset
@@ -242,7 +242,7 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[2f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_main_scatterload
</UL>
<P><STRONG><a name="[9e]"></a>__scatterload_rt2</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)
<P><STRONG><a name="[a3]"></a>__scatterload_rt2</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)
<P><STRONG><a name="[44]"></a>HAL_DMA_Abort_IT</STRONG> (Thumb, 72 bytes, Stack size 16 bytes, stm32f0xx_hal_dma.o(i.HAL_DMA_Abort_IT))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = HAL_DMA_Abort_IT
@@ -255,7 +255,7 @@ Global Symbols
</UL>
<BR>[Calls]<UL><LI><a href="#[36]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
</UL>
<BR>[Called By]<UL><LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<BR>[Called By]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
</UL>
<P><STRONG><a name="[48]"></a>HAL_GPIO_Init</STRONG> (Thumb, 314 bytes, Stack size 24 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_Init))
@@ -266,18 +266,22 @@ Global Symbols
<LI><a href="#[6e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
</UL>
<P><STRONG><a name="[86]"></a>HAL_GPIO_ReadPin</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin))
<BR><BR>[Called By]<UL><LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_get_line_status
<P><STRONG><a name="[88]"></a>HAL_GPIO_ReadPin</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin))
<BR><BR>[Called By]<UL><LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;wait_for_data_idle
<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_read
<LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_get_line_status
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[91]"></a>HAL_GPIO_TogglePin</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_TogglePin))
<BR><BR>[Called By]<UL><LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<P><STRONG><a name="[96]"></a>HAL_GPIO_TogglePin</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_TogglePin))
<BR><BR>[Called By]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
</UL>
<P><STRONG><a name="[4b]"></a>HAL_GPIO_WritePin</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin))
<BR><BR>[Called By]<UL><LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
<BR><BR>[Called By]<UL><LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_read
<LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
<LI><a href="#[6e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
<LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;quad_write
<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;quad_write
<LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PeriodElapsedCallback
</UL>
@@ -285,7 +289,8 @@ Global Symbols
<BR><BR>[Called By]<UL><LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_WaitFlagStateUntilTimeout
<LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_WaitFifoStateUntilTimeout
<LI><a href="#[73]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
<LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_get_line_status
<LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;wait_for_data_idle
<LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_get_line_status
<LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Transmit
<LI><a href="#[42]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_OscConfig
<LI><a href="#[40]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
@@ -501,8 +506,8 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[50]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Init
</UL>
<P><STRONG><a name="[7f]"></a>HAL_TIM_Base_Start</STRONG> (Thumb, 24 bytes, Stack size 0 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Start))
<BR><BR>[Called By]<UL><LI><a href="#[7e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us_init
<P><STRONG><a name="[81]"></a>HAL_TIM_Base_Start</STRONG> (Thumb, 24 bytes, Stack size 0 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Start))
<BR><BR>[Called By]<UL><LI><a href="#[80]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us_init
</UL>
<P><STRONG><a name="[53]"></a>HAL_TIM_ConfigClockSource</STRONG> (Thumb, 238 bytes, Stack size 24 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_ConfigClockSource))
@@ -524,12 +529,12 @@ Global Symbols
<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = HAL_TIM_IRQHandler &rArr; HAL_TIM_PeriodElapsedCallback &rArr; quad_increment &rArr; quad_write
</UL>
<BR>[Calls]<UL><LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PeriodElapsedCallback
<LI><a href="#[5e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_TriggerCallback
<LI><a href="#[5b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_PulseFinishedCallback
<LI><a href="#[5a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_OC_DelayElapsedCallback
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_IC_CaptureCallback
<LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIMEx_CommutationCallback
<LI><a href="#[5d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIMEx_BreakCallback
<LI><a href="#[5e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_TriggerCallback
<LI><a href="#[5b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PWM_PulseFinishedCallback
</UL>
<BR>[Called By]<UL><LI><a href="#[1c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM17_IRQHandler
<LI><a href="#[1b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM16_IRQHandler
@@ -711,26 +716,26 @@ Global Symbols
<BR><BR>[Calls]<UL><LI><a href="#[7d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_core
</UL>
<P><STRONG><a name="[9f]"></a>__1printf$3</STRONG> (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3), UNUSED)
<P><STRONG><a name="[a4]"></a>__1printf$3</STRONG> (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3), UNUSED)
<P><STRONG><a name="[87]"></a>__2printf</STRONG> (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3))
<P><STRONG><a name="[8c]"></a>__2printf</STRONG> (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = __2printf
</UL>
<BR>[Called By]<UL><LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<BR>[Called By]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[a0]"></a>__scatterload_copy</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)
<P><STRONG><a name="[a5]"></a>__scatterload_copy</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)
<P><STRONG><a name="[a1]"></a>__scatterload_null</STRONG> (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED)
<P><STRONG><a name="[a6]"></a>__scatterload_null</STRONG> (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED)
<P><STRONG><a name="[a2]"></a>__scatterload_zeroinit</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED)
<P><STRONG><a name="[a7]"></a>__scatterload_zeroinit</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED)
<P><STRONG><a name="[61]"></a>avg_buf_add</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, quad_encoder.o(i.avg_buf_add))
<BR><BR>[Called By]<UL><LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PeriodElapsedCallback
</UL>
<P><STRONG><a name="[8f]"></a>byte_to_int16_t</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, main.o(i.byte_to_int16_t))
<P><STRONG><a name="[94]"></a>byte_to_int16_t</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, main.o(i.byte_to_int16_t))
<BR><BR>[Called By]<UL><LI><a href="#[4c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_spi_buf
</UL>
@@ -738,10 +743,18 @@ Global Symbols
<BR><BR>[Called By]<UL><LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PeriodElapsedCallback
</UL>
<P><STRONG><a name="[7e]"></a>delay_us_init</STRONG> (Thumb, 12 bytes, Stack size 8 bytes, delay_us.o(i.delay_us_init))
<P><STRONG><a name="[7e]"></a>delay_us</STRONG> (Thumb, 20 bytes, Stack size 4 bytes, delay_us.o(i.delay_us))
<BR><BR>[Stack]<UL><LI>Max Depth = 4<LI>Call Chain = delay_us
</UL>
<BR>[Calls]<UL><LI><a href="#[7f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;micros
</UL>
<BR>[Called By]<UL><LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_read
</UL>
<P><STRONG><a name="[80]"></a>delay_us_init</STRONG> (Thumb, 12 bytes, Stack size 8 bytes, delay_us.o(i.delay_us_init))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = delay_us_init
</UL>
<BR>[Calls]<UL><LI><a href="#[7f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Start
<BR>[Calls]<UL><LI><a href="#[81]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Start
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
@@ -759,102 +772,127 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PeriodElapsedCallback
</UL>
<P><STRONG><a name="[80]"></a>kb_buf_add</STRONG> (Thumb, 48 bytes, Stack size 16 bytes, helpers.o(i.kb_buf_add))
<P><STRONG><a name="[82]"></a>kb_buf_add</STRONG> (Thumb, 48 bytes, Stack size 16 bytes, helpers.o(i.kb_buf_add))
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = kb_buf_add &rArr; kb_buf_is_full &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[81]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_is_full
<BR>[Calls]<UL><LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_is_full
<LI><a href="#[3b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[4c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_spi_buf
</UL>
<P><STRONG><a name="[82]"></a>kb_buf_init</STRONG> (Thumb, 32 bytes, Stack size 16 bytes, helpers.o(i.kb_buf_init))
<P><STRONG><a name="[84]"></a>kb_buf_init</STRONG> (Thumb, 32 bytes, Stack size 16 bytes, helpers.o(i.kb_buf_init))
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = kb_buf_init &rArr; malloc
</UL>
<BR>[Calls]<UL><LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_reset
<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;malloc
<BR>[Calls]<UL><LI><a href="#[86]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_reset
<LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;malloc
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[81]"></a>kb_buf_is_full</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_is_full))
<P><STRONG><a name="[83]"></a>kb_buf_is_full</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_is_full))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = kb_buf_is_full &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[3b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[80]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_add
<BR>[Called By]<UL><LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_add
</UL>
<P><STRONG><a name="[84]"></a>kb_buf_reset</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_reset))
<P><STRONG><a name="[86]"></a>kb_buf_reset</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_reset))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = kb_buf_reset
</UL>
<BR>[Calls]<UL><LI><a href="#[31]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
</UL>
<BR>[Called By]<UL><LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
<BR>[Called By]<UL><LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
</UL>
<P><STRONG><a name="[85]"></a>m0110a_get_line_status</STRONG> (Thumb, 42 bytes, Stack size 16 bytes, m0110a.o(i.m0110a_get_line_status))
<P><STRONG><a name="[87]"></a>m0110a_get_line_status</STRONG> (Thumb, 42 bytes, Stack size 16 bytes, m0110a.o(i.m0110a_get_line_status))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = m0110a_get_line_status
</UL>
<BR>[Calls]<UL><LI><a href="#[36]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[86]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
</UL>
<BR>[Called By]<UL><LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_get_update
</UL>
<P><STRONG><a name="[89]"></a>m0110a_get_update</STRONG> (Thumb, 28 bytes, Stack size 16 bytes, m0110a.o(i.m0110a_get_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 44<LI>Call Chain = m0110a_get_update &rArr; m0110a_read &rArr; delay_us
</UL>
<BR>[Calls]<UL><LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;wait_for_data_idle
<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_read
<LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_get_line_status
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[26]"></a>main</STRONG> (Thumb, 218 bytes, Stack size 16 bytes, main.o(i.main))
<P><STRONG><a name="[8a]"></a>m0110a_read</STRONG> (Thumb, 74 bytes, Stack size 24 bytes, m0110a.o(i.m0110a_read))
<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = m0110a_read &rArr; delay_us
</UL>
<BR>[Calls]<UL><LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[4b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[7e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<BR>[Called By]<UL><LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_get_update
</UL>
<P><STRONG><a name="[26]"></a>main</STRONG> (Thumb, 244 bytes, Stack size 16 bytes, main.o(i.main))
<BR><BR>[Stack]<UL><LI>Max Depth = 212<LI>Call Chain = main &rArr; SystemClock_Config &rArr; HAL_RCC_ClockConfig &rArr; HAL_RCC_GetSysClockFreq &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_get_line_status
<BR>[Calls]<UL><LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_get_update
<LI><a href="#[50]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Init
<LI><a href="#[4d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TransmitReceive_IT
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<LI><a href="#[79]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<LI><a href="#[72]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART1_UART_Init
<LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM2_Init
<LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_SPI1_Init
<LI><a href="#[6e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
<LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_init
<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
<LI><a href="#[7e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us_init
<LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
<LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_init
<LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
<LI><a href="#[80]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us_init
<LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
<LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
</UL>
<BR>[Address Reference Count : 1]<UL><LI> entry9a.o(.ARM.Collect$$$$0000000B)
</UL>
<P><STRONG><a name="[83]"></a>malloc</STRONG> (Thumb, 92 bytes, Stack size 20 bytes, malloc.o(i.malloc))
<P><STRONG><a name="[85]"></a>malloc</STRONG> (Thumb, 92 bytes, Stack size 20 bytes, malloc.o(i.malloc))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = malloc
</UL>
<BR>[Called By]<UL><LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_init
<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
<BR>[Called By]<UL><LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_init
<LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
</UL>
<P><STRONG><a name="[8b]"></a>mouse_buf_add</STRONG> (Thumb, 50 bytes, Stack size 16 bytes, helpers.o(i.mouse_buf_add))
<P><STRONG><a name="[7f]"></a>micros</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, delay_us.o(i.micros))
<BR><BR>[Called By]<UL><LI><a href="#[7e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<P><STRONG><a name="[90]"></a>mouse_buf_add</STRONG> (Thumb, 50 bytes, Stack size 16 bytes, helpers.o(i.mouse_buf_add))
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = mouse_buf_add &rArr; mouse_buf_is_full &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_is_full
<LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy
<BR>[Calls]<UL><LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_is_full
<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy
<LI><a href="#[3b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[4c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;parse_spi_buf
</UL>
<P><STRONG><a name="[88]"></a>mouse_buf_init</STRONG> (Thumb, 24 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_init))
<P><STRONG><a name="[8d]"></a>mouse_buf_init</STRONG> (Thumb, 24 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_init))
<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = mouse_buf_init &rArr; malloc
</UL>
<BR>[Calls]<UL><LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_reset
<LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;malloc
<BR>[Calls]<UL><LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_reset
<LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;malloc
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[8c]"></a>mouse_buf_is_full</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_is_full))
<P><STRONG><a name="[91]"></a>mouse_buf_is_full</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_is_full))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = mouse_buf_is_full &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[3b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_add
<BR>[Called By]<UL><LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_add
</UL>
<P><STRONG><a name="[60]"></a>mouse_buf_peek</STRONG> (Thumb, 22 bytes, Stack size 0 bytes, helpers.o(i.mouse_buf_peek))
@@ -869,21 +907,21 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PeriodElapsedCallback
</UL>
<P><STRONG><a name="[8e]"></a>mouse_buf_reset</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_reset))
<P><STRONG><a name="[93]"></a>mouse_buf_reset</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_reset))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = mouse_buf_reset
</UL>
<BR>[Calls]<UL><LI><a href="#[31]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
</UL>
<BR>[Called By]<UL><LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_init
<BR>[Called By]<UL><LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_init
</UL>
<P><STRONG><a name="[4c]"></a>parse_spi_buf</STRONG> (Thumb, 184 bytes, Stack size 16 bytes, main.o(i.parse_spi_buf))
<BR><BR>[Stack]<UL><LI>Max Depth = 52<LI>Call Chain = parse_spi_buf &rArr; mouse_buf_add &rArr; mouse_buf_is_full &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;byte_to_int16_t
<LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_add
<LI><a href="#[80]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_add
<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
<BR>[Calls]<UL><LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;byte_to_int16_t
<LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_add
<LI><a href="#[82]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_add
<LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
</UL>
<BR>[Called By]<UL><LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
</UL>
@@ -891,7 +929,7 @@ Global Symbols
<P><STRONG><a name="[66]"></a>quad_decrement</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, quad_encoder.o(i.quad_decrement))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = quad_decrement &rArr; quad_write
</UL>
<BR>[Calls]<UL><LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;quad_write
<BR>[Calls]<UL><LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;quad_write
</UL>
<BR>[Called By]<UL><LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PeriodElapsedCallback
</UL>
@@ -899,12 +937,12 @@ Global Symbols
<P><STRONG><a name="[65]"></a>quad_increment</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, quad_encoder.o(i.quad_increment))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = quad_increment &rArr; quad_write
</UL>
<BR>[Calls]<UL><LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;quad_write
<BR>[Calls]<UL><LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;quad_write
</UL>
<BR>[Called By]<UL><LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_PeriodElapsedCallback
</UL>
<P><STRONG><a name="[90]"></a>quad_write</STRONG> (Thumb, 44 bytes, Stack size 16 bytes, quad_encoder.o(i.quad_write))
<P><STRONG><a name="[95]"></a>quad_write</STRONG> (Thumb, 44 bytes, Stack size 16 bytes, quad_encoder.o(i.quad_write))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = quad_write
</UL>
<BR>[Calls]<UL><LI><a href="#[4b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
@@ -913,15 +951,24 @@ Global Symbols
<LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;quad_decrement
</UL>
<P><STRONG><a name="[8a]"></a>spi_error_dump_reboot</STRONG> (Thumb, 72 bytes, Stack size 0 bytes, main.o(i.spi_error_dump_reboot))
<P><STRONG><a name="[8f]"></a>spi_error_dump_reboot</STRONG> (Thumb, 72 bytes, Stack size 0 bytes, main.o(i.spi_error_dump_reboot))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = spi_error_dump_reboot &rArr; __2printf
</UL>
<BR>[Calls]<UL><LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_TogglePin
<BR>[Calls]<UL><LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_TogglePin
<LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
<LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[8b]"></a>wait_for_data_idle</STRONG> (Thumb, 42 bytes, Stack size 16 bytes, m0110a.o(i.wait_for_data_idle))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = wait_for_data_idle
</UL>
<BR>[Calls]<UL><LI><a href="#[36]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
</UL>
<BR>[Called By]<UL><LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_get_update
</UL>
<P>
<H3>
Local Symbols

View File

@@ -95,7 +95,8 @@ Section Cross References
main.o(i.main) refers to memseta.o(.text) for __aeabi_memclr4
main.o(i.main) refers to stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT) for HAL_SPI_TransmitReceive_IT
main.o(i.main) refers to main.o(i.spi_error_dump_reboot) for spi_error_dump_reboot
main.o(i.main) refers to m0110a.o(i.m0110a_get_line_status) for m0110a_get_line_status
main.o(i.main) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin) for HAL_GPIO_ReadPin
main.o(i.main) refers to m0110a.o(i.m0110a_get_update) for m0110a_get_update
main.o(i.main) refers to main.o(.bss) for .bss
main.o(i.main) refers to main.o(.data) for .data
main.o(i.main) refers to main.o(.constdata) for .constdata
@@ -132,6 +133,14 @@ Section Cross References
stm32f0xx_hal_msp.o(i.HAL_UART_MspInit) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_Init) for HAL_GPIO_Init
m0110a.o(i.m0110a_get_line_status) refers to stm32f0xx_hal.o(i.HAL_GetTick) for HAL_GetTick
m0110a.o(i.m0110a_get_line_status) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin) for HAL_GPIO_ReadPin
m0110a.o(i.m0110a_get_update) refers to m0110a.o(i.m0110a_get_line_status) for m0110a_get_line_status
m0110a.o(i.m0110a_get_update) refers to m0110a.o(i.m0110a_read) for m0110a_read
m0110a.o(i.m0110a_get_update) refers to m0110a.o(i.wait_for_data_idle) for wait_for_data_idle
m0110a.o(i.m0110a_read) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin
m0110a.o(i.m0110a_read) refers to delay_us.o(i.delay_us) for delay_us
m0110a.o(i.m0110a_read) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin) for HAL_GPIO_ReadPin
m0110a.o(i.wait_for_data_idle) refers to stm32f0xx_hal.o(i.HAL_GetTick) for HAL_GetTick
m0110a.o(i.wait_for_data_idle) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin) for HAL_GPIO_ReadPin
stm32f0xx_hal_spi.o(i.HAL_SPI_Abort) refers to uidiv.o(.text) for __aeabi_uidivmod
stm32f0xx_hal_spi.o(i.HAL_SPI_Abort) refers to stm32f0xx_hal_dma.o(i.HAL_DMA_Abort) for HAL_DMA_Abort
stm32f0xx_hal_spi.o(i.HAL_SPI_Abort) refers to stm32f0xx_hal.o(i.HAL_GetTick) for HAL_GetTick
@@ -1062,8 +1071,6 @@ Removing Unused input sections from the image.
Removing delay_us.o(.rev16_text), (4 bytes).
Removing delay_us.o(.revsh_text), (4 bytes).
Removing delay_us.o(i.delay_us), (20 bytes).
Removing delay_us.o(i.micros), (16 bytes).
Removing quad_encoder.o(.rev16_text), (4 bytes).
Removing quad_encoder.o(.revsh_text), (4 bytes).
Removing quad_encoder.o(i.quad_init), (80 bytes).
@@ -1081,7 +1088,6 @@ Removing Unused input sections from the image.
Removing main.o(.constdata), (1 bytes).
Removing main.o(.constdata), (1 bytes).
Removing main.o(.constdata), (1 bytes).
Removing main.o(.data), (1 bytes).
Removing stm32f0xx_it.o(.rev16_text), (4 bytes).
Removing stm32f0xx_it.o(.revsh_text), (4 bytes).
Removing stm32f0xx_hal_msp.o(.rev16_text), (4 bytes).
@@ -1552,7 +1558,7 @@ Removing Unused input sections from the image.
Removing stm32f0xx_hal_tim.o(i.__ARM_common_switch8), (26 bytes).
Removing depilogue.o(i.__ARM_clz), (46 bytes).
491 unused section(s) (total 35079 bytes) removed from the image.
488 unused section(s) (total 35042 bytes) removed from the image.
==============================================================================
@@ -1584,40 +1590,40 @@ Image Symbol Table
../Src/main.c 0x00000000 Number 0 main.o ABSOLUTE
../Src/stm32f0xx_hal_msp.c 0x00000000 Number 0 stm32f0xx_hal_msp.o ABSOLUTE
../Src/stm32f0xx_it.c 0x00000000 Number 0 stm32f0xx_it.o ABSOLUTE
../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE
../clib/microlib/division.c 0x00000000 Number 0 uldiv.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE
../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE
../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE
../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE
../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE
../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE
../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloca.o ABSOLUTE
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloc.o ABSOLUTE
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocr.o ABSOLUTE
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloc.o ABSOLUTE
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocra.o ABSOLUTE
../clib/microlib/malloc/mvars.c 0x00000000 Number 0 mvars.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE
../clib/microlib/printf/stubs.s 0x00000000 Number 0 stubs.o ABSOLUTE
../clib/microlib/stdio/streams.c 0x00000000 Number 0 stdout.o ABSOLUTE
../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE
@@ -1786,31 +1792,36 @@ Image Symbol Table
i.avg_buf_add 0x08002094 Section 0 quad_encoder.o(i.avg_buf_add)
i.byte_to_int16_t 0x080020ae Section 0 main.o(i.byte_to_int16_t)
i.calc_arr 0x080020b8 Section 0 quad_encoder.o(i.calc_arr)
i.delay_us_init 0x080020d8 Section 0 delay_us.o(i.delay_us_init)
i.fputc 0x080020e8 Section 0 main.o(i.fputc)
i.get_buf_avg 0x08002100 Section 0 quad_encoder.o(i.get_buf_avg)
i.kb_buf_add 0x0800211e Section 0 helpers.o(i.kb_buf_add)
i.kb_buf_init 0x0800214e Section 0 helpers.o(i.kb_buf_init)
i.kb_buf_is_full 0x0800216e Section 0 helpers.o(i.kb_buf_is_full)
i.kb_buf_reset 0x0800218a Section 0 helpers.o(i.kb_buf_reset)
i.m0110a_get_line_status 0x080021a8 Section 0 m0110a.o(i.m0110a_get_line_status)
i.main 0x080021d8 Section 0 main.o(i.main)
i.malloc 0x080022f4 Section 0 malloc.o(i.malloc)
i.mouse_buf_add 0x08002360 Section 0 helpers.o(i.mouse_buf_add)
i.mouse_buf_init 0x08002392 Section 0 helpers.o(i.mouse_buf_init)
i.mouse_buf_is_full 0x080023aa Section 0 helpers.o(i.mouse_buf_is_full)
i.mouse_buf_peek 0x080023c6 Section 0 helpers.o(i.mouse_buf_peek)
i.mouse_buf_pop 0x080023dc Section 0 helpers.o(i.mouse_buf_pop)
i.mouse_buf_reset 0x080023f4 Section 0 helpers.o(i.mouse_buf_reset)
i.parse_spi_buf 0x0800240c Section 0 main.o(i.parse_spi_buf)
i.quad_decrement 0x080024cc Section 0 quad_encoder.o(i.quad_decrement)
i.quad_increment 0x080024de Section 0 quad_encoder.o(i.quad_increment)
i.quad_write 0x080024f0 Section 0 quad_encoder.o(i.quad_write)
i.spi_error_dump_reboot 0x08002520 Section 0 main.o(i.spi_error_dump_reboot)
.constdata 0x08002598 Section 84 quad_encoder.o(.constdata)
.constdata 0x080025ec Section 59 main.o(.constdata)
.constdata 0x08002627 Section 16 system_stm32f0xx.o(.constdata)
.constdata 0x08002637 Section 8 system_stm32f0xx.o(.constdata)
i.delay_us 0x080020d8 Section 0 delay_us.o(i.delay_us)
i.delay_us_init 0x080020ec Section 0 delay_us.o(i.delay_us_init)
i.fputc 0x080020fc Section 0 main.o(i.fputc)
i.get_buf_avg 0x08002114 Section 0 quad_encoder.o(i.get_buf_avg)
i.kb_buf_add 0x08002132 Section 0 helpers.o(i.kb_buf_add)
i.kb_buf_init 0x08002162 Section 0 helpers.o(i.kb_buf_init)
i.kb_buf_is_full 0x08002182 Section 0 helpers.o(i.kb_buf_is_full)
i.kb_buf_reset 0x0800219e Section 0 helpers.o(i.kb_buf_reset)
i.m0110a_get_line_status 0x080021bc Section 0 m0110a.o(i.m0110a_get_line_status)
i.m0110a_get_update 0x080021ec Section 0 m0110a.o(i.m0110a_get_update)
i.m0110a_read 0x08002208 Section 0 m0110a.o(i.m0110a_read)
i.main 0x08002258 Section 0 main.o(i.main)
i.malloc 0x0800238c Section 0 malloc.o(i.malloc)
i.micros 0x080023f8 Section 0 delay_us.o(i.micros)
i.mouse_buf_add 0x08002408 Section 0 helpers.o(i.mouse_buf_add)
i.mouse_buf_init 0x0800243a Section 0 helpers.o(i.mouse_buf_init)
i.mouse_buf_is_full 0x08002452 Section 0 helpers.o(i.mouse_buf_is_full)
i.mouse_buf_peek 0x0800246e Section 0 helpers.o(i.mouse_buf_peek)
i.mouse_buf_pop 0x08002484 Section 0 helpers.o(i.mouse_buf_pop)
i.mouse_buf_reset 0x0800249c Section 0 helpers.o(i.mouse_buf_reset)
i.parse_spi_buf 0x080024b4 Section 0 main.o(i.parse_spi_buf)
i.quad_decrement 0x08002574 Section 0 quad_encoder.o(i.quad_decrement)
i.quad_increment 0x08002586 Section 0 quad_encoder.o(i.quad_increment)
i.quad_write 0x08002598 Section 0 quad_encoder.o(i.quad_write)
i.spi_error_dump_reboot 0x080025c8 Section 0 main.o(i.spi_error_dump_reboot)
i.wait_for_data_idle 0x08002640 Section 0 m0110a.o(i.wait_for_data_idle)
.constdata 0x08002670 Section 84 quad_encoder.o(.constdata)
.constdata 0x080026c4 Section 59 main.o(.constdata)
.constdata 0x080026ff Section 16 system_stm32f0xx.o(.constdata)
.constdata 0x0800270f Section 8 system_stm32f0xx.o(.constdata)
.data 0x20000000 Section 4 delay_us.o(.data)
.data 0x20000004 Section 16 quad_encoder.o(.data)
.data 0x20000014 Section 12 main.o(.data)
@@ -2003,34 +2014,39 @@ Image Symbol Table
avg_buf_add 0x08002095 Thumb Code 26 quad_encoder.o(i.avg_buf_add)
byte_to_int16_t 0x080020af Thumb Code 8 main.o(i.byte_to_int16_t)
calc_arr 0x080020b9 Thumb Code 28 quad_encoder.o(i.calc_arr)
delay_us_init 0x080020d9 Thumb Code 12 delay_us.o(i.delay_us_init)
fputc 0x080020e9 Thumb Code 18 main.o(i.fputc)
get_buf_avg 0x08002101 Thumb Code 30 quad_encoder.o(i.get_buf_avg)
kb_buf_add 0x0800211f Thumb Code 48 helpers.o(i.kb_buf_add)
kb_buf_init 0x0800214f Thumb Code 32 helpers.o(i.kb_buf_init)
kb_buf_is_full 0x0800216f Thumb Code 28 helpers.o(i.kb_buf_is_full)
kb_buf_reset 0x0800218b Thumb Code 28 helpers.o(i.kb_buf_reset)
m0110a_get_line_status 0x080021a9 Thumb Code 42 m0110a.o(i.m0110a_get_line_status)
main 0x080021d9 Thumb Code 218 main.o(i.main)
malloc 0x080022f5 Thumb Code 92 malloc.o(i.malloc)
mouse_buf_add 0x08002361 Thumb Code 50 helpers.o(i.mouse_buf_add)
mouse_buf_init 0x08002393 Thumb Code 24 helpers.o(i.mouse_buf_init)
mouse_buf_is_full 0x080023ab Thumb Code 28 helpers.o(i.mouse_buf_is_full)
mouse_buf_peek 0x080023c7 Thumb Code 22 helpers.o(i.mouse_buf_peek)
mouse_buf_pop 0x080023dd Thumb Code 24 helpers.o(i.mouse_buf_pop)
mouse_buf_reset 0x080023f5 Thumb Code 22 helpers.o(i.mouse_buf_reset)
parse_spi_buf 0x0800240d Thumb Code 184 main.o(i.parse_spi_buf)
quad_decrement 0x080024cd Thumb Code 18 quad_encoder.o(i.quad_decrement)
quad_increment 0x080024df Thumb Code 18 quad_encoder.o(i.quad_increment)
quad_write 0x080024f1 Thumb Code 44 quad_encoder.o(i.quad_write)
spi_error_dump_reboot 0x08002521 Thumb Code 72 main.o(i.spi_error_dump_reboot)
grey_code_lookup 0x08002598 Data 4 quad_encoder.o(.constdata)
arr_lookup 0x0800259c Data 80 quad_encoder.o(.constdata)
boot_message 0x080025ec Data 59 main.o(.constdata)
AHBPrescTable 0x08002627 Data 16 system_stm32f0xx.o(.constdata)
APBPrescTable 0x08002637 Data 8 system_stm32f0xx.o(.constdata)
Region$$Table$$Base 0x08002640 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x08002660 Number 0 anon$$obj.o(Region$$Table)
delay_us 0x080020d9 Thumb Code 20 delay_us.o(i.delay_us)
delay_us_init 0x080020ed Thumb Code 12 delay_us.o(i.delay_us_init)
fputc 0x080020fd Thumb Code 18 main.o(i.fputc)
get_buf_avg 0x08002115 Thumb Code 30 quad_encoder.o(i.get_buf_avg)
kb_buf_add 0x08002133 Thumb Code 48 helpers.o(i.kb_buf_add)
kb_buf_init 0x08002163 Thumb Code 32 helpers.o(i.kb_buf_init)
kb_buf_is_full 0x08002183 Thumb Code 28 helpers.o(i.kb_buf_is_full)
kb_buf_reset 0x0800219f Thumb Code 28 helpers.o(i.kb_buf_reset)
m0110a_get_line_status 0x080021bd Thumb Code 42 m0110a.o(i.m0110a_get_line_status)
m0110a_get_update 0x080021ed Thumb Code 28 m0110a.o(i.m0110a_get_update)
m0110a_read 0x08002209 Thumb Code 74 m0110a.o(i.m0110a_read)
main 0x08002259 Thumb Code 244 main.o(i.main)
malloc 0x0800238d Thumb Code 92 malloc.o(i.malloc)
micros 0x080023f9 Thumb Code 10 delay_us.o(i.micros)
mouse_buf_add 0x08002409 Thumb Code 50 helpers.o(i.mouse_buf_add)
mouse_buf_init 0x0800243b Thumb Code 24 helpers.o(i.mouse_buf_init)
mouse_buf_is_full 0x08002453 Thumb Code 28 helpers.o(i.mouse_buf_is_full)
mouse_buf_peek 0x0800246f Thumb Code 22 helpers.o(i.mouse_buf_peek)
mouse_buf_pop 0x08002485 Thumb Code 24 helpers.o(i.mouse_buf_pop)
mouse_buf_reset 0x0800249d Thumb Code 22 helpers.o(i.mouse_buf_reset)
parse_spi_buf 0x080024b5 Thumb Code 184 main.o(i.parse_spi_buf)
quad_decrement 0x08002575 Thumb Code 18 quad_encoder.o(i.quad_decrement)
quad_increment 0x08002587 Thumb Code 18 quad_encoder.o(i.quad_increment)
quad_write 0x08002599 Thumb Code 44 quad_encoder.o(i.quad_write)
spi_error_dump_reboot 0x080025c9 Thumb Code 72 main.o(i.spi_error_dump_reboot)
wait_for_data_idle 0x08002641 Thumb Code 42 m0110a.o(i.wait_for_data_idle)
grey_code_lookup 0x08002670 Data 4 quad_encoder.o(.constdata)
arr_lookup 0x08002674 Data 80 quad_encoder.o(.constdata)
boot_message 0x080026c4 Data 59 main.o(.constdata)
AHBPrescTable 0x080026ff Data 16 system_stm32f0xx.o(.constdata)
APBPrescTable 0x0800270f Data 8 system_stm32f0xx.o(.constdata)
Region$$Table$$Base 0x08002718 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x08002738 Number 0 anon$$obj.o(Region$$Table)
us_timer 0x20000000 Data 4 delay_us.o(.data)
avg_timer 0x20000004 Data 4 quad_encoder.o(.data)
arr_timer_x 0x20000008 Data 4 quad_encoder.o(.data)
@@ -2069,172 +2085,177 @@ Memory Map of the image
Image Entry point : 0x080000c1
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00002694, Max: 0x00010000, ABSOLUTE)
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x0000276c, Max: 0x00010000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00002660, Max: 0x00010000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00002738, Max: 0x00010000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x08000000 0x08000000 0x000000c0 Data RO 3 RESET startup_stm32f072xb.o
0x080000c0 0x080000c0 0x00000000 Code RO 3608 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
0x080000c0 0x080000c0 0x00000004 Code RO 3910 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
0x080000c4 0x080000c4 0x00000004 Code RO 3913 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
0x080000c8 0x080000c8 0x00000000 Code RO 3915 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
0x080000c8 0x080000c8 0x00000000 Code RO 3917 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
0x080000c8 0x080000c8 0x00000008 Code RO 3918 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
0x080000d0 0x080000d0 0x00000000 Code RO 3920 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
0x080000d0 0x080000d0 0x00000000 Code RO 3922 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
0x080000d0 0x080000d0 0x00000004 Code RO 3911 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
0x080000c0 0x080000c0 0x00000000 Code RO 3624 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
0x080000c0 0x080000c0 0x00000004 Code RO 3926 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
0x080000c4 0x080000c4 0x00000004 Code RO 3929 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
0x080000c8 0x080000c8 0x00000000 Code RO 3931 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
0x080000c8 0x080000c8 0x00000000 Code RO 3933 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
0x080000c8 0x080000c8 0x00000008 Code RO 3934 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
0x080000d0 0x080000d0 0x00000000 Code RO 3936 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
0x080000d0 0x080000d0 0x00000000 Code RO 3938 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
0x080000d0 0x080000d0 0x00000004 Code RO 3927 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
0x080000d4 0x080000d4 0x0000001c Code RO 4 .text startup_stm32f072xb.o
0x080000f0 0x080000f0 0x0000002c Code RO 3611 .text mc_p.l(uidiv.o)
0x0800011c 0x0800011c 0x00000024 Code RO 3615 .text mc_p.l(memcpya.o)
0x08000140 0x08000140 0x00000024 Code RO 3617 .text mc_p.l(memseta.o)
0x08000164 0x08000164 0x00000024 Code RO 3940 .text mc_p.l(init.o)
0x08000188 0x08000188 0x00000048 Code RO 3055 i.HAL_DMA_Abort_IT stm32f0xx_hal_dma.o
0x080001d0 0x080001d0 0x0000001c Code RO 2384 i.HAL_Delay stm32f0xx_hal.o
0x080001ec 0x080001ec 0x00000158 Code RO 2993 i.HAL_GPIO_Init stm32f0xx_hal_gpio.o
0x08000344 0x08000344 0x0000000a Code RO 2995 i.HAL_GPIO_ReadPin stm32f0xx_hal_gpio.o
0x0800034e 0x0800034e 0x00000008 Code RO 2996 i.HAL_GPIO_TogglePin stm32f0xx_hal_gpio.o
0x08000356 0x08000356 0x0000000c Code RO 2997 i.HAL_GPIO_WritePin stm32f0xx_hal_gpio.o
0x080000f0 0x080000f0 0x0000002c Code RO 3627 .text mc_p.l(uidiv.o)
0x0800011c 0x0800011c 0x00000024 Code RO 3631 .text mc_p.l(memcpya.o)
0x08000140 0x08000140 0x00000024 Code RO 3633 .text mc_p.l(memseta.o)
0x08000164 0x08000164 0x00000024 Code RO 3956 .text mc_p.l(init.o)
0x08000188 0x08000188 0x00000048 Code RO 3071 i.HAL_DMA_Abort_IT stm32f0xx_hal_dma.o
0x080001d0 0x080001d0 0x0000001c Code RO 2400 i.HAL_Delay stm32f0xx_hal.o
0x080001ec 0x080001ec 0x00000158 Code RO 3009 i.HAL_GPIO_Init stm32f0xx_hal_gpio.o
0x08000344 0x08000344 0x0000000a Code RO 3011 i.HAL_GPIO_ReadPin stm32f0xx_hal_gpio.o
0x0800034e 0x0800034e 0x00000008 Code RO 3012 i.HAL_GPIO_TogglePin stm32f0xx_hal_gpio.o
0x08000356 0x08000356 0x0000000c Code RO 3013 i.HAL_GPIO_WritePin stm32f0xx_hal_gpio.o
0x08000362 0x08000362 0x00000002 PAD
0x08000364 0x08000364 0x0000000c Code RO 2388 i.HAL_GetTick stm32f0xx_hal.o
0x08000370 0x08000370 0x00000010 Code RO 2392 i.HAL_IncTick stm32f0xx_hal.o
0x08000380 0x08000380 0x00000020 Code RO 2393 i.HAL_Init stm32f0xx_hal.o
0x080003a0 0x080003a0 0x00000022 Code RO 2394 i.HAL_InitTick stm32f0xx_hal.o
0x08000364 0x08000364 0x0000000c Code RO 2404 i.HAL_GetTick stm32f0xx_hal.o
0x08000370 0x08000370 0x00000010 Code RO 2408 i.HAL_IncTick stm32f0xx_hal.o
0x08000380 0x08000380 0x00000020 Code RO 2409 i.HAL_Init stm32f0xx_hal.o
0x080003a0 0x080003a0 0x00000022 Code RO 2410 i.HAL_InitTick stm32f0xx_hal.o
0x080003c2 0x080003c2 0x00000002 PAD
0x080003c4 0x080003c4 0x00000044 Code RO 500 i.HAL_MspInit stm32f0xx_hal_msp.o
0x08000408 0x08000408 0x00000014 Code RO 3150 i.HAL_NVIC_EnableIRQ stm32f0xx_hal_cortex.o
0x0800041c 0x0800041c 0x00000008 Code RO 3154 i.HAL_NVIC_SetPriority stm32f0xx_hal_cortex.o
0x08000424 0x08000424 0x00000120 Code RO 2304 i.HAL_RCCEx_PeriphCLKConfig stm32f0xx_hal_rcc_ex.o
0x08000544 0x08000544 0x00000154 Code RO 2202 i.HAL_RCC_ClockConfig stm32f0xx_hal_rcc.o
0x08000698 0x08000698 0x0000000c Code RO 2207 i.HAL_RCC_GetHCLKFreq stm32f0xx_hal_rcc.o
0x080006a4 0x080006a4 0x00000020 Code RO 2209 i.HAL_RCC_GetPCLK1Freq stm32f0xx_hal_rcc.o
0x080006c4 0x080006c4 0x00000088 Code RO 2210 i.HAL_RCC_GetSysClockFreq stm32f0xx_hal_rcc.o
0x0800074c 0x0800074c 0x000003d8 Code RO 2213 i.HAL_RCC_OscConfig stm32f0xx_hal_rcc.o
0x08000b24 0x08000b24 0x00000002 Code RO 583 i.HAL_SPI_ErrorCallback stm32f0xx_hal_spi.o
0x080003c4 0x080003c4 0x00000044 Code RO 499 i.HAL_MspInit stm32f0xx_hal_msp.o
0x08000408 0x08000408 0x00000014 Code RO 3166 i.HAL_NVIC_EnableIRQ stm32f0xx_hal_cortex.o
0x0800041c 0x0800041c 0x00000008 Code RO 3170 i.HAL_NVIC_SetPriority stm32f0xx_hal_cortex.o
0x08000424 0x08000424 0x00000120 Code RO 2320 i.HAL_RCCEx_PeriphCLKConfig stm32f0xx_hal_rcc_ex.o
0x08000544 0x08000544 0x00000154 Code RO 2218 i.HAL_RCC_ClockConfig stm32f0xx_hal_rcc.o
0x08000698 0x08000698 0x0000000c Code RO 2223 i.HAL_RCC_GetHCLKFreq stm32f0xx_hal_rcc.o
0x080006a4 0x080006a4 0x00000020 Code RO 2225 i.HAL_RCC_GetPCLK1Freq stm32f0xx_hal_rcc.o
0x080006c4 0x080006c4 0x00000088 Code RO 2226 i.HAL_RCC_GetSysClockFreq stm32f0xx_hal_rcc.o
0x0800074c 0x0800074c 0x000003d8 Code RO 2229 i.HAL_RCC_OscConfig stm32f0xx_hal_rcc.o
0x08000b24 0x08000b24 0x00000002 Code RO 599 i.HAL_SPI_ErrorCallback stm32f0xx_hal_spi.o
0x08000b26 0x08000b26 0x00000002 PAD
0x08000b28 0x08000b28 0x000000d4 Code RO 586 i.HAL_SPI_IRQHandler stm32f0xx_hal_spi.o
0x08000bfc 0x08000bfc 0x000000b8 Code RO 587 i.HAL_SPI_Init stm32f0xx_hal_spi.o
0x08000cb4 0x08000cb4 0x00000054 Code RO 502 i.HAL_SPI_MspInit stm32f0xx_hal_msp.o
0x08000d08 0x08000d08 0x00000002 Code RO 593 i.HAL_SPI_RxCpltCallback stm32f0xx_hal_spi.o
0x08000b28 0x08000b28 0x000000d4 Code RO 602 i.HAL_SPI_IRQHandler stm32f0xx_hal_spi.o
0x08000bfc 0x08000bfc 0x000000b8 Code RO 603 i.HAL_SPI_Init stm32f0xx_hal_spi.o
0x08000cb4 0x08000cb4 0x00000054 Code RO 501 i.HAL_SPI_MspInit stm32f0xx_hal_msp.o
0x08000d08 0x08000d08 0x00000002 Code RO 609 i.HAL_SPI_RxCpltCallback stm32f0xx_hal_spi.o
0x08000d0a 0x08000d0a 0x00000002 PAD
0x08000d0c 0x08000d0c 0x000000d4 Code RO 598 i.HAL_SPI_TransmitReceive_IT stm32f0xx_hal_spi.o
0x08000d0c 0x08000d0c 0x000000d4 Code RO 614 i.HAL_SPI_TransmitReceive_IT stm32f0xx_hal_spi.o
0x08000de0 0x08000de0 0x00000060 Code RO 328 i.HAL_SPI_TxRxCpltCallback main.o
0x08000e40 0x08000e40 0x00000018 Code RO 3156 i.HAL_SYSTICK_CLKSourceConfig stm32f0xx_hal_cortex.o
0x08000e58 0x08000e58 0x00000002 Code RO 3157 i.HAL_SYSTICK_Callback stm32f0xx_hal_cortex.o
0x08000e40 0x08000e40 0x00000018 Code RO 3172 i.HAL_SYSTICK_CLKSourceConfig stm32f0xx_hal_cortex.o
0x08000e58 0x08000e58 0x00000002 Code RO 3173 i.HAL_SYSTICK_Callback stm32f0xx_hal_cortex.o
0x08000e5a 0x08000e5a 0x00000002 PAD
0x08000e5c 0x08000e5c 0x00000030 Code RO 3158 i.HAL_SYSTICK_Config stm32f0xx_hal_cortex.o
0x08000e8c 0x08000e8c 0x00000008 Code RO 3159 i.HAL_SYSTICK_IRQHandler stm32f0xx_hal_cortex.o
0x08000e94 0x08000e94 0x00000002 Code RO 1560 i.HAL_TIMEx_BreakCallback stm32f0xx_hal_tim_ex.o
0x08000e96 0x08000e96 0x00000002 Code RO 1561 i.HAL_TIMEx_CommutationCallback stm32f0xx_hal_tim_ex.o
0x08000e98 0x08000e98 0x00000048 Code RO 1577 i.HAL_TIMEx_MasterConfigSynchronization stm32f0xx_hal_tim_ex.o
0x08000ee0 0x08000ee0 0x00000034 Code RO 921 i.HAL_TIM_Base_Init stm32f0xx_hal_tim.o
0x08000f14 0x08000f14 0x0000009c Code RO 504 i.HAL_TIM_Base_MspInit stm32f0xx_hal_msp.o
0x08000fb0 0x08000fb0 0x00000018 Code RO 924 i.HAL_TIM_Base_Start stm32f0xx_hal_tim.o
0x08000fc8 0x08000fc8 0x000000ee Code RO 930 i.HAL_TIM_ConfigClockSource stm32f0xx_hal_tim.o
0x080010b6 0x080010b6 0x00000002 Code RO 952 i.HAL_TIM_IC_CaptureCallback stm32f0xx_hal_tim.o
0x080010b8 0x080010b8 0x00000162 Code RO 965 i.HAL_TIM_IRQHandler stm32f0xx_hal_tim.o
0x0800121a 0x0800121a 0x00000002 Code RO 968 i.HAL_TIM_OC_DelayElapsedCallback stm32f0xx_hal_tim.o
0x0800121c 0x0800121c 0x00000002 Code RO 995 i.HAL_TIM_PWM_PulseFinishedCallback stm32f0xx_hal_tim.o
0x08000e5c 0x08000e5c 0x00000030 Code RO 3174 i.HAL_SYSTICK_Config stm32f0xx_hal_cortex.o
0x08000e8c 0x08000e8c 0x00000008 Code RO 3175 i.HAL_SYSTICK_IRQHandler stm32f0xx_hal_cortex.o
0x08000e94 0x08000e94 0x00000002 Code RO 1576 i.HAL_TIMEx_BreakCallback stm32f0xx_hal_tim_ex.o
0x08000e96 0x08000e96 0x00000002 Code RO 1577 i.HAL_TIMEx_CommutationCallback stm32f0xx_hal_tim_ex.o
0x08000e98 0x08000e98 0x00000048 Code RO 1593 i.HAL_TIMEx_MasterConfigSynchronization stm32f0xx_hal_tim_ex.o
0x08000ee0 0x08000ee0 0x00000034 Code RO 937 i.HAL_TIM_Base_Init stm32f0xx_hal_tim.o
0x08000f14 0x08000f14 0x0000009c Code RO 503 i.HAL_TIM_Base_MspInit stm32f0xx_hal_msp.o
0x08000fb0 0x08000fb0 0x00000018 Code RO 940 i.HAL_TIM_Base_Start stm32f0xx_hal_tim.o
0x08000fc8 0x08000fc8 0x000000ee Code RO 946 i.HAL_TIM_ConfigClockSource stm32f0xx_hal_tim.o
0x080010b6 0x080010b6 0x00000002 Code RO 968 i.HAL_TIM_IC_CaptureCallback stm32f0xx_hal_tim.o
0x080010b8 0x080010b8 0x00000162 Code RO 981 i.HAL_TIM_IRQHandler stm32f0xx_hal_tim.o
0x0800121a 0x0800121a 0x00000002 Code RO 984 i.HAL_TIM_OC_DelayElapsedCallback stm32f0xx_hal_tim.o
0x0800121c 0x0800121c 0x00000002 Code RO 1011 i.HAL_TIM_PWM_PulseFinishedCallback stm32f0xx_hal_tim.o
0x0800121e 0x0800121e 0x00000002 PAD
0x08001220 0x08001220 0x000000e0 Code RO 149 i.HAL_TIM_PeriodElapsedCallback quad_encoder.o
0x08001300 0x08001300 0x00000002 Code RO 1006 i.HAL_TIM_TriggerCallback stm32f0xx_hal_tim.o
0x08001302 0x08001302 0x0000006c Code RO 1825 i.HAL_UART_Init stm32f0xx_hal_uart.o
0x08001300 0x08001300 0x00000002 Code RO 1022 i.HAL_TIM_TriggerCallback stm32f0xx_hal_tim.o
0x08001302 0x08001302 0x0000006c Code RO 1841 i.HAL_UART_Init stm32f0xx_hal_uart.o
0x0800136e 0x0800136e 0x00000002 PAD
0x08001370 0x08001370 0x0000004c Code RO 506 i.HAL_UART_MspInit stm32f0xx_hal_msp.o
0x080013bc 0x080013bc 0x000000c8 Code RO 1833 i.HAL_UART_Transmit stm32f0xx_hal_uart.o
0x08001484 0x08001484 0x00000002 Code RO 428 i.HardFault_Handler stm32f0xx_it.o
0x08001370 0x08001370 0x0000004c Code RO 505 i.HAL_UART_MspInit stm32f0xx_hal_msp.o
0x080013bc 0x080013bc 0x000000c8 Code RO 1849 i.HAL_UART_Transmit stm32f0xx_hal_uart.o
0x08001484 0x08001484 0x00000002 Code RO 427 i.HardFault_Handler stm32f0xx_it.o
0x08001486 0x08001486 0x00000002 PAD
0x08001488 0x08001488 0x000000f4 Code RO 329 i.MX_GPIO_Init main.o
0x0800157c 0x0800157c 0x0000003c Code RO 330 i.MX_SPI1_Init main.o
0x080015b8 0x080015b8 0x00000054 Code RO 331 i.MX_TIM2_Init main.o
0x0800160c 0x0800160c 0x00000038 Code RO 332 i.MX_USART1_UART_Init main.o
0x08001644 0x08001644 0x00000002 Code RO 429 i.NMI_Handler stm32f0xx_it.o
0x08001644 0x08001644 0x00000002 Code RO 428 i.NMI_Handler stm32f0xx_it.o
0x08001646 0x08001646 0x00000002 PAD
0x08001648 0x08001648 0x00000044 Code RO 3160 i.NVIC_SetPriority stm32f0xx_hal_cortex.o
0x0800168c 0x0800168c 0x00000002 Code RO 430 i.PendSV_Handler stm32f0xx_it.o
0x08001648 0x08001648 0x00000044 Code RO 3176 i.NVIC_SetPriority stm32f0xx_hal_cortex.o
0x0800168c 0x0800168c 0x00000002 Code RO 429 i.PendSV_Handler stm32f0xx_it.o
0x0800168e 0x0800168e 0x00000002 PAD
0x08001690 0x08001690 0x00000010 Code RO 431 i.SPI1_IRQHandler stm32f0xx_it.o
0x080016a0 0x080016a0 0x00000036 Code RO 605 i.SPI_2linesRxISR_16BIT stm32f0xx_hal_spi.o
0x080016d6 0x080016d6 0x0000005e Code RO 606 i.SPI_2linesRxISR_8BIT stm32f0xx_hal_spi.o
0x08001734 0x08001734 0x00000034 Code RO 607 i.SPI_2linesTxISR_16BIT stm32f0xx_hal_spi.o
0x08001768 0x08001768 0x00000048 Code RO 608 i.SPI_2linesTxISR_8BIT stm32f0xx_hal_spi.o
0x080017b0 0x080017b0 0x00000052 Code RO 611 i.SPI_CloseRxTx_ISR stm32f0xx_hal_spi.o
0x08001802 0x08001802 0x00000012 Code RO 614 i.SPI_DMAAbortOnError stm32f0xx_hal_spi.o
0x08001814 0x08001814 0x0000004c Code RO 625 i.SPI_EndRxTxTransaction stm32f0xx_hal_spi.o
0x08001860 0x08001860 0x00000096 Code RO 630 i.SPI_WaitFifoStateUntilTimeout stm32f0xx_hal_spi.o
0x080018f6 0x080018f6 0x0000008c Code RO 631 i.SPI_WaitFlagStateUntilTimeout stm32f0xx_hal_spi.o
0x08001982 0x08001982 0x00000002 Code RO 432 i.SVC_Handler stm32f0xx_it.o
0x08001984 0x08001984 0x0000000c Code RO 433 i.SysTick_Handler stm32f0xx_it.o
0x08001690 0x08001690 0x00000010 Code RO 430 i.SPI1_IRQHandler stm32f0xx_it.o
0x080016a0 0x080016a0 0x00000036 Code RO 621 i.SPI_2linesRxISR_16BIT stm32f0xx_hal_spi.o
0x080016d6 0x080016d6 0x0000005e Code RO 622 i.SPI_2linesRxISR_8BIT stm32f0xx_hal_spi.o
0x08001734 0x08001734 0x00000034 Code RO 623 i.SPI_2linesTxISR_16BIT stm32f0xx_hal_spi.o
0x08001768 0x08001768 0x00000048 Code RO 624 i.SPI_2linesTxISR_8BIT stm32f0xx_hal_spi.o
0x080017b0 0x080017b0 0x00000052 Code RO 627 i.SPI_CloseRxTx_ISR stm32f0xx_hal_spi.o
0x08001802 0x08001802 0x00000012 Code RO 630 i.SPI_DMAAbortOnError stm32f0xx_hal_spi.o
0x08001814 0x08001814 0x0000004c Code RO 641 i.SPI_EndRxTxTransaction stm32f0xx_hal_spi.o
0x08001860 0x08001860 0x00000096 Code RO 646 i.SPI_WaitFifoStateUntilTimeout stm32f0xx_hal_spi.o
0x080018f6 0x080018f6 0x0000008c Code RO 647 i.SPI_WaitFlagStateUntilTimeout stm32f0xx_hal_spi.o
0x08001982 0x08001982 0x00000002 Code RO 431 i.SVC_Handler stm32f0xx_it.o
0x08001984 0x08001984 0x0000000c Code RO 432 i.SysTick_Handler stm32f0xx_it.o
0x08001990 0x08001990 0x0000006a Code RO 333 i.SystemClock_Config main.o
0x080019fa 0x080019fa 0x00000002 PAD
0x080019fc 0x080019fc 0x0000005c Code RO 3577 i.SystemInit system_stm32f0xx.o
0x08001a58 0x08001a58 0x00000010 Code RO 434 i.TIM14_IRQHandler stm32f0xx_it.o
0x08001a68 0x08001a68 0x00000010 Code RO 435 i.TIM16_IRQHandler stm32f0xx_it.o
0x08001a78 0x08001a78 0x00000010 Code RO 436 i.TIM17_IRQHandler stm32f0xx_it.o
0x08001a88 0x08001a88 0x00000094 Code RO 1007 i.TIM_Base_SetConfig stm32f0xx_hal_tim.o
0x08001b1c 0x08001b1c 0x00000016 Code RO 1014 i.TIM_ETR_SetConfig stm32f0xx_hal_tim.o
0x08001b32 0x08001b32 0x00000010 Code RO 1015 i.TIM_ITRx_SetConfig stm32f0xx_hal_tim.o
0x08001b42 0x08001b42 0x00000022 Code RO 1021 i.TIM_TI1_ConfigInputStage stm32f0xx_hal_tim.o
0x08001b64 0x08001b64 0x00000026 Code RO 1023 i.TIM_TI2_ConfigInputStage stm32f0xx_hal_tim.o
0x08001b8a 0x08001b8a 0x000000ca Code RO 1838 i.UART_AdvFeatureConfig stm32f0xx_hal_uart.o
0x08001c54 0x08001c54 0x00000074 Code RO 1839 i.UART_CheckIdleState stm32f0xx_hal_uart.o
0x08001cc8 0x08001cc8 0x0000015c Code RO 1854 i.UART_SetConfig stm32f0xx_hal_uart.o
0x08001e24 0x08001e24 0x00000062 Code RO 1856 i.UART_WaitOnFlagUntilTimeout stm32f0xx_hal_uart.o
0x080019fc 0x080019fc 0x0000005c Code RO 3593 i.SystemInit system_stm32f0xx.o
0x08001a58 0x08001a58 0x00000010 Code RO 433 i.TIM14_IRQHandler stm32f0xx_it.o
0x08001a68 0x08001a68 0x00000010 Code RO 434 i.TIM16_IRQHandler stm32f0xx_it.o
0x08001a78 0x08001a78 0x00000010 Code RO 435 i.TIM17_IRQHandler stm32f0xx_it.o
0x08001a88 0x08001a88 0x00000094 Code RO 1023 i.TIM_Base_SetConfig stm32f0xx_hal_tim.o
0x08001b1c 0x08001b1c 0x00000016 Code RO 1030 i.TIM_ETR_SetConfig stm32f0xx_hal_tim.o
0x08001b32 0x08001b32 0x00000010 Code RO 1031 i.TIM_ITRx_SetConfig stm32f0xx_hal_tim.o
0x08001b42 0x08001b42 0x00000022 Code RO 1037 i.TIM_TI1_ConfigInputStage stm32f0xx_hal_tim.o
0x08001b64 0x08001b64 0x00000026 Code RO 1039 i.TIM_TI2_ConfigInputStage stm32f0xx_hal_tim.o
0x08001b8a 0x08001b8a 0x000000ca Code RO 1854 i.UART_AdvFeatureConfig stm32f0xx_hal_uart.o
0x08001c54 0x08001c54 0x00000074 Code RO 1855 i.UART_CheckIdleState stm32f0xx_hal_uart.o
0x08001cc8 0x08001cc8 0x0000015c Code RO 1870 i.UART_SetConfig stm32f0xx_hal_uart.o
0x08001e24 0x08001e24 0x00000062 Code RO 1872 i.UART_WaitOnFlagUntilTimeout stm32f0xx_hal_uart.o
0x08001e86 0x08001e86 0x00000002 PAD
0x08001e88 0x08001e88 0x00000020 Code RO 3710 i.__0printf$3 mc_p.l(printf3.o)
0x08001ea8 0x08001ea8 0x0000000e Code RO 3952 i.__scatterload_copy mc_p.l(handlers.o)
0x08001eb6 0x08001eb6 0x00000002 Code RO 3953 i.__scatterload_null mc_p.l(handlers.o)
0x08001eb8 0x08001eb8 0x0000000e Code RO 3954 i.__scatterload_zeroinit mc_p.l(handlers.o)
0x08001e88 0x08001e88 0x00000020 Code RO 3726 i.__0printf$3 mc_p.l(printf3.o)
0x08001ea8 0x08001ea8 0x0000000e Code RO 3968 i.__scatterload_copy mc_p.l(handlers.o)
0x08001eb6 0x08001eb6 0x00000002 Code RO 3969 i.__scatterload_null mc_p.l(handlers.o)
0x08001eb8 0x08001eb8 0x0000000e Code RO 3970 i.__scatterload_zeroinit mc_p.l(handlers.o)
0x08001ec6 0x08001ec6 0x00000002 PAD
0x08001ec8 0x08001ec8 0x000001cc Code RO 3717 i._printf_core mc_p.l(printf3.o)
0x08001ec8 0x08001ec8 0x000001cc Code RO 3733 i._printf_core mc_p.l(printf3.o)
0x08002094 0x08002094 0x0000001a Code RO 150 i.avg_buf_add quad_encoder.o
0x080020ae 0x080020ae 0x00000008 Code RO 335 i.byte_to_int16_t main.o
0x080020b6 0x080020b6 0x00000002 PAD
0x080020b8 0x080020b8 0x00000020 Code RO 151 i.calc_arr quad_encoder.o
0x080020d8 0x080020d8 0x00000010 Code RO 13 i.delay_us_init delay_us.o
0x080020e8 0x080020e8 0x00000018 Code RO 336 i.fputc main.o
0x08002100 0x08002100 0x0000001e Code RO 152 i.get_buf_avg quad_encoder.o
0x0800211e 0x0800211e 0x00000030 Code RO 233 i.kb_buf_add helpers.o
0x0800214e 0x0800214e 0x00000020 Code RO 234 i.kb_buf_init helpers.o
0x0800216e 0x0800216e 0x0000001c Code RO 236 i.kb_buf_is_full helpers.o
0x0800218a 0x0800218a 0x0000001c Code RO 239 i.kb_buf_reset helpers.o
0x080021a6 0x080021a6 0x00000002 PAD
0x080021a8 0x080021a8 0x00000030 Code RO 556 i.m0110a_get_line_status m0110a.o
0x080021d8 0x080021d8 0x0000011c Code RO 337 i.main main.o
0x080022f4 0x080022f4 0x0000006c Code RO 3883 i.malloc mc_p.l(malloc.o)
0x08002360 0x08002360 0x00000032 Code RO 240 i.mouse_buf_add helpers.o
0x08002392 0x08002392 0x00000018 Code RO 241 i.mouse_buf_init helpers.o
0x080023aa 0x080023aa 0x0000001c Code RO 243 i.mouse_buf_is_full helpers.o
0x080023c6 0x080023c6 0x00000016 Code RO 244 i.mouse_buf_peek helpers.o
0x080023dc 0x080023dc 0x00000018 Code RO 245 i.mouse_buf_pop helpers.o
0x080023f4 0x080023f4 0x00000016 Code RO 246 i.mouse_buf_reset helpers.o
0x0800240a 0x0800240a 0x00000002 PAD
0x0800240c 0x0800240c 0x000000c0 Code RO 338 i.parse_spi_buf main.o
0x080024cc 0x080024cc 0x00000012 Code RO 153 i.quad_decrement quad_encoder.o
0x080024de 0x080024de 0x00000012 Code RO 154 i.quad_increment quad_encoder.o
0x080024f0 0x080024f0 0x00000030 Code RO 157 i.quad_write quad_encoder.o
0x08002520 0x08002520 0x00000078 Code RO 339 i.spi_error_dump_reboot main.o
0x08002598 0x08002598 0x00000054 Data RO 159 .constdata quad_encoder.o
0x080025ec 0x080025ec 0x0000003b Data RO 345 .constdata main.o
0x08002627 0x08002627 0x00000010 Data RO 3578 .constdata system_stm32f0xx.o
0x08002637 0x08002637 0x00000008 Data RO 3579 .constdata system_stm32f0xx.o
0x0800263f 0x0800263f 0x00000001 PAD
0x08002640 0x08002640 0x00000020 Data RO 3950 Region$$Table anon$$obj.o
0x080020d8 0x080020d8 0x00000014 Code RO 12 i.delay_us delay_us.o
0x080020ec 0x080020ec 0x00000010 Code RO 13 i.delay_us_init delay_us.o
0x080020fc 0x080020fc 0x00000018 Code RO 336 i.fputc main.o
0x08002114 0x08002114 0x0000001e Code RO 152 i.get_buf_avg quad_encoder.o
0x08002132 0x08002132 0x00000030 Code RO 233 i.kb_buf_add helpers.o
0x08002162 0x08002162 0x00000020 Code RO 234 i.kb_buf_init helpers.o
0x08002182 0x08002182 0x0000001c Code RO 236 i.kb_buf_is_full helpers.o
0x0800219e 0x0800219e 0x0000001c Code RO 239 i.kb_buf_reset helpers.o
0x080021ba 0x080021ba 0x00000002 PAD
0x080021bc 0x080021bc 0x00000030 Code RO 555 i.m0110a_get_line_status m0110a.o
0x080021ec 0x080021ec 0x0000001c Code RO 556 i.m0110a_get_update m0110a.o
0x08002208 0x08002208 0x00000050 Code RO 557 i.m0110a_read m0110a.o
0x08002258 0x08002258 0x00000134 Code RO 337 i.main main.o
0x0800238c 0x0800238c 0x0000006c Code RO 3899 i.malloc mc_p.l(malloc.o)
0x080023f8 0x080023f8 0x00000010 Code RO 14 i.micros delay_us.o
0x08002408 0x08002408 0x00000032 Code RO 240 i.mouse_buf_add helpers.o
0x0800243a 0x0800243a 0x00000018 Code RO 241 i.mouse_buf_init helpers.o
0x08002452 0x08002452 0x0000001c Code RO 243 i.mouse_buf_is_full helpers.o
0x0800246e 0x0800246e 0x00000016 Code RO 244 i.mouse_buf_peek helpers.o
0x08002484 0x08002484 0x00000018 Code RO 245 i.mouse_buf_pop helpers.o
0x0800249c 0x0800249c 0x00000016 Code RO 246 i.mouse_buf_reset helpers.o
0x080024b2 0x080024b2 0x00000002 PAD
0x080024b4 0x080024b4 0x000000c0 Code RO 338 i.parse_spi_buf main.o
0x08002574 0x08002574 0x00000012 Code RO 153 i.quad_decrement quad_encoder.o
0x08002586 0x08002586 0x00000012 Code RO 154 i.quad_increment quad_encoder.o
0x08002598 0x08002598 0x00000030 Code RO 157 i.quad_write quad_encoder.o
0x080025c8 0x080025c8 0x00000078 Code RO 339 i.spi_error_dump_reboot main.o
0x08002640 0x08002640 0x00000030 Code RO 558 i.wait_for_data_idle m0110a.o
0x08002670 0x08002670 0x00000054 Data RO 159 .constdata quad_encoder.o
0x080026c4 0x080026c4 0x0000003b Data RO 345 .constdata main.o
0x080026ff 0x080026ff 0x00000010 Data RO 3594 .constdata system_stm32f0xx.o
0x0800270f 0x0800270f 0x00000008 Data RO 3595 .constdata system_stm32f0xx.o
0x08002717 0x08002717 0x00000001 PAD
0x08002718 0x08002718 0x00000020 Data RO 3966 Region$$Table anon$$obj.o
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08002660, Size: 0x000008a8, Max: 0x00004000, ABSOLUTE)
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08002738, Size: 0x000008a8, Max: 0x00004000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x20000000 0x08002660 0x00000004 Data RW 15 .data delay_us.o
0x20000004 0x08002664 0x00000010 Data RW 160 .data quad_encoder.o
0x20000014 0x08002674 0x0000000c Data RW 346 .data main.o
0x20000020 0x08002680 0x00000004 Data RW 2399 .data stm32f0xx_hal.o
0x20000024 0x08002684 0x00000004 Data RW 3580 .data system_stm32f0xx.o
0x20000028 0x08002688 0x00000004 Data RW 3924 .data mc_p.l(stdout.o)
0x2000002c 0x0800268c 0x00000004 Data RW 3927 .data mc_p.l(mvars.o)
0x20000030 0x08002690 0x00000004 Data RW 3928 .data mc_p.l(mvars.o)
0x20000000 0x08002738 0x00000004 Data RW 15 .data delay_us.o
0x20000004 0x0800273c 0x00000010 Data RW 160 .data quad_encoder.o
0x20000014 0x0800274c 0x0000000c Data RW 346 .data main.o
0x20000020 0x08002758 0x00000004 Data RW 2415 .data stm32f0xx_hal.o
0x20000024 0x0800275c 0x00000004 Data RW 3596 .data system_stm32f0xx.o
0x20000028 0x08002760 0x00000004 Data RW 3940 .data mc_p.l(stdout.o)
0x2000002c 0x08002764 0x00000004 Data RW 3943 .data mc_p.l(mvars.o)
0x20000030 0x08002768 0x00000004 Data RW 3944 .data mc_p.l(mvars.o)
0x20000034 - 0x00000038 Zero RW 158 .bss quad_encoder.o
0x2000006c - 0x0000023c Zero RW 340 .bss main.o
0x200002a8 - 0x00000200 Zero RW 2 HEAP startup_stm32f072xb.o
@@ -2248,10 +2269,10 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug Object Name
16 4 0 4 0 490820 delay_us.o
52 10 0 4 0 491683 delay_us.o
306 0 0 0 0 5713 helpers.o
48 6 0 0 0 577 m0110a.o
1274 182 59 12 572 14879 main.o
204 18 0 0 0 3554 m0110a.o
1298 180 59 12 572 14891 main.o
396 20 84 16 56 7108 quad_encoder.o
28 8 192 0 1536 632 startup_stm32f072xb.o
122 18 0 4 0 3631 stm32f0xx_hal.o
@@ -2269,7 +2290,7 @@ Image component sizes
92 16 24 4 0 1143 system_stm32f0xx.o
----------------------------------------------------------------------
8628 580 392 40 2164 581287 Object Totals
8844 596 392 40 2164 585139 Object Totals
0 0 32 0 0 0 (incl. Generated)
30 0 1 0 0 0 (incl. Padding)
@@ -2315,15 +2336,15 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug
9432 624 392 52 2164 577451 Grand Totals
9432 624 392 52 2164 577451 ELF Image Totals
9432 624 392 52 0 0 ROM Totals
9648 640 392 52 2164 581127 Grand Totals
9648 640 392 52 2164 581127 ELF Image Totals
9648 640 392 52 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 9824 ( 9.59kB)
Total RO Size (Code + RO Data) 10040 ( 9.80kB)
Total RW Size (RW Data + ZI Data) 2216 ( 2.16kB)
Total ROM Size (Code + RO Data + RW Data) 9876 ( 9.64kB)
Total ROM Size (Code + RO Data + RW Data) 10092 ( 9.86kB)
==============================================================================

View File

@@ -114,7 +114,7 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x5DFA0893)
-IC:\Users\allen\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include
-IC:\Users\allen\AppData\Local\Arm\Packs\Keil\STM32F0xx_DFP\2.0.0\Drivers\CMSIS\Device\ST\STM32F0xx\Include
-D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB
-o apple_all\helpers.o --omf_browse apple_all\helpers.crf --depend apple_all\helpers.d)
@@ -153,7 +153,7 @@ I (../Inc/delay_us.h)(0x617487C7)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart_ex.h)(0x5DFA0893)
I (../Inc/shared.h)(0x617487BD)
I (../Inc/shared.h)(0x617487BD)
F (../Src/main.c)(0x62B5E2ED)(--c99 -c --cpu Cortex-M0 -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ../Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F0xx/Include -I ../Drivers/CMSIS/Include
-I.\RTE\_apple_all
@@ -221,7 +221,7 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_def.h)(0x5DFA0893)
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h)(0x5DFA0880)
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f072xb.h)(0x5DFA0880)
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f072xb.h)(0x5DFA0880)
I (../Drivers/CMSIS/Include/core_cm0.h)(0x5DFA0892)
I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5D9B4298)
I (../Drivers/CMSIS/Include/core_cmInstr.h)(0x5DFA0892)
@@ -258,7 +258,8 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x5DFA0893)
-D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB
-o apple_all\stm32f0xx_hal_msp.o --omf_browse apple_all\stm32f0xx_hal_msp.crf --depend apple_all\stm32f0xx_hal_msp.d)
-o apple_all\stm32f0xx_hal_msp.o --omf_browse apple_all\stm32f0xx_hal_msp.crf --depend apple_all\stm32f0xx_hal_msp.d)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5DFA0893)
I (../Inc/stm32f0xx_hal_conf.h)(0x626D7BBD)
I (../Inc/main.h)(0x626D7BBE)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc.h)(0x5DFA0893)

View File

Binary file not shown.

View File

@@ -37,3 +37,4 @@ apple_all\m0110a.o: ../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart.h
apple_all\m0110a.o: ../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart_ex.h
apple_all\m0110a.o: ../Inc/shared.h
apple_all\m0110a.o: ../Inc/m0110a.h
apple_all\m0110a.o: ../Inc/delay_us.h

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

@@ -4,12 +4,17 @@
#include "helpers.h"
#include "shared.h"
#include "m0110a.h"
#include "delay_us.h"
#define CLK_HIGH_HOST_TO_KB 220
#define CLK_LOW_HOST_TO_KB 180
#define CLK_READ_DELAY_HOST_TO_KB 80
#define CLK_HIGH_KB_TO_HOST 170
#define CLK_LOW_KB_TO_HOST 160
#define CLK_HIGH_FULL_KB_TO_HOST 170
#define CLK_LOW_FULL_KB_TO_HOST 160
#define CLK_HIGH_HALF_KB_TO_HOST (CLK_HIGH_KB_TO_HOST/2)
#define CLK_LOW_HALF_KB_TO_HOST (CLK_LOW_KB_TO_HOST/2)
#define M0110A_CLK_HI() HAL_GPIO_WritePin(MAC_KB_CLK_GPIO_Port, MAC_KB_CLK_Pin, GPIO_PIN_SET)
#define M0110A_CLK_LOW() HAL_GPIO_WritePin(MAC_KB_CLK_GPIO_Port, MAC_KB_CLK_Pin, GPIO_PIN_RESET)
@@ -32,46 +37,99 @@ uint8_t m0110a_get_line_status(void)
return M0110A_LINE_HOST_REQ;
}
uint8_t m0110a_read(uint8_t* result, uint8_t timeout_ms)
uint8_t m0110a_read(uint8_t* result)
{
uint8_t data = 0x00;
uint8_t bit = 0x80;
while(bit)
{
M0110A_CLK_LOW();
delay_us(CLK_LOW_HOST_TO_KB);
M0110A_CLK_HI();
delay_us(CLK_READ_DELAY_HOST_TO_KB); // "The keyboard reads the data bit 80 µs after the rising edge of the Keyboard Clock signal." page 282, Guide to Macintosh Family Hardware 2nd edition.
if(M0110A_READ_DATA_PIN() == GPIO_PIN_SET)
data = data | bit;
bit = bit >> 1;
delay_us(CLK_HIGH_HOST_TO_KB - CLK_READ_DELAY_HOST_TO_KB);
}
*result = data;
return M0110A_OK;
}
uint8_t wait_for_data_idle(uint16_t timeout_ms)
{
uint32_t entry_time = HAL_GetTick();
while(1)
{
if(HAL_GetTick() - entry_time > timeout_ms)
return M0110A_TIMEOUT;
if(HAL_GPIO_ReadPin(MAC_KB_DATA_GPIO_Port, MAC_KB_DATA_Pin) == GPIO_PIN_SET)
break;
}
return M0110A_OK;
}
uint8_t m0110a_get_update(uint8_t* result, uint16_t timeout_ms)
{
if(m0110a_get_line_status() == M0110A_LINE_IDLE)
return M0110A_LINE_IDLE;
m0110a_read(result);
return wait_for_data_idle(timeout_ms);
}
/*
uint8_t ps2kb_read(uint8_t* result, uint8_t timeout_ms)
{
uint16_t data = 0x00;
uint16_t bit = 0x01;
ps2kb_wait_start = HAL_GetTick();
while(ps2kb_get_bus_status() != PS2_BUS_REQ_TO_SEND)
{
if(HAL_GetTick() - ps2kb_wait_start >= timeout_ms)
return PS2_ERROR_TIMEOUT;
}
delay_us(CLKHALF);
M0110A_CLK_LOW();
PS2KB_CLK_LOW();
delay_us(CLKFULL);
M0110A_CLK_HI();
PS2KB_CLK_HI();
delay_us(CLKHALF);
while(bit < 0x0100)
while (bit < 0x0100)
{
if (M0110A_READ_DATA_PIN() == GPIO_PIN_SET)
data = data | bit;
if (PS2KB_READ_DATA_PIN() == GPIO_PIN_SET)
data = data | bit;
bit = bit << 1;
delay_us(CLKHALF);
M0110A_CLK_LOW();
PS2KB_CLK_LOW();
delay_us(CLKFULL);
M0110A_CLK_HI();
PS2KB_CLK_HI();
delay_us(CLKHALF);
}
// stop bit
delay_us(CLKHALF);
M0110A_CLK_LOW();
PS2KB_CLK_LOW();
delay_us(CLKFULL);
M0110A_CLK_HI();
PS2KB_CLK_HI();
delay_us(CLKHALF);
delay_us(CLKHALF);
M0110A_DATA_LOW();
M0110A_CLK_LOW();
PS2KB_DATA_LOW();
PS2KB_CLK_LOW();
delay_us(CLKFULL);
M0110A_CLK_HI();
PS2KB_CLK_HI();
delay_us(CLKHALF);
M0110A_DATA_HI();
PS2KB_DATA_HI();
*result = data & 0x00FF;
return PS2_OK;
}
*/

View File

@@ -198,9 +198,9 @@ REMEMBER TO ENABLE ARR PRELOAD ON TIMER 16
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
*/
Configure GPIO pins : MAC_KB_CLK_Pin
uint8_t m0110a_host_cmd;
*/
/* USER CODE END 0 */
@@ -252,7 +252,7 @@ int main(void)
/* Infinite loop */
/* USER CODE BEGIN WHILE */
uint8_t m0110a_host_cmd, m0110a_status;
while (1)
{
if(spi_error_occured)
@@ -260,11 +260,12 @@ int main(void)
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
// printf("%d\n", HAL_GPIO_ReadPin(MAC_KB_DATA_GPIO_Port, MAC_KB_DATA_Pin));
// HAL_Delay(5);
// HAL_GPIO_TogglePin(MAC_KB_CLK_GPIO_Port, MAC_KB_CLK_Pin);
if(m0110a_get_line_status() == M0110A_LINE_HOST_REQ)
printf("hello!\n");
if(HAL_GPIO_ReadPin(MAC_KB_CLK_GPIO_Port, MAC_KB_CLK_Pin) == GPIO_PIN_RESET)
continue;
m0110a_status = m0110a_get_update(&m0110a_host_cmd, 600);
if(m0110a_status != M0110A_LINE_IDLE)
printf("%d", m0110a_host_cmd);
}
/* USER CODE END 3 */
@@ -500,7 +501,7 @@ static void MX_GPIO_Init(void)
GPIO_InitStruct.Pin = MAC_KB_CLK_Pin|MAC_KB_DATA_Pin|GPIO_PIN_12|GPIO_PIN_13
|GPIO_PIN_14|GPIO_PIN_15|ADB_PWR_Pin|ADB_DATA_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Pull = GPIO_NOPULL; // GPIO_PULLUP GPIO_NOPULL
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

View File

@@ -1,3 +1,7 @@
// printf("%d\n", HAL_GPIO_ReadPin(MAC_KB_DATA_GPIO_Port, MAC_KB_DATA_Pin));
// HAL_Delay(5);
// HAL_GPIO_TogglePin(MAC_KB_CLK_GPIO_Port, MAC_KB_CLK_Pin);
// int32_t ddd = calc_arr(avg_speed);
// if(ddd != 65535)
// printf("%d\n", calc_arr(avg_speed));
@@ -34,3 +38,42 @@ uint16_t calc_arr(int32_t speed_val)
return 500;
return arr_lookup[speed_val];
}
uint8_t bit = 0x80;
while(bit)
{
printf("%x", bit);
bit = bit >> 1;
HAL_Delay(1);
}
while(1);
if(m0110a_get_line_status() == M0110A_LINE_HOST_REQ)
{
m0110a_read(&m0110a_host_cmd);
printf("%d\n", m0110a_host_cmd);
// while(m0110a_get_line_status() != M0110A_LINE_IDLE) // wait for computer to release data line to indicate it is ready
// ;
// HAL_Delay(1);
}
uint8_t m0110a_read(uint8_t* result)
{
uint8_t data = 0x00;
uint16_t bit = 0x01;
while (bit < 0x0100)
{
M0110A_CLK_LOW();
delay_us(CLK_LOW_HOST_TO_KB);
M0110A_CLK_HI();
delay_us(CLK_READ_DELAY_HOST_TO_KB); // "The keyboard reads the data bit 80 µs after the rising edge of the Keyboard Clock signal." page 282, Guide to Macintosh Family Hardware 2nd edition.
if(M0110A_READ_DATA_PIN() == GPIO_PIN_SET)
data = data | bit;
bit = bit << 1;
delay_us(CLK_HIGH_HOST_TO_KB - CLK_READ_DELAY_HOST_TO_KB);
}
*result = data;
return M0110A_OK;
}