reduced gpio write time

This commit is contained in:
dekunukem
2022-08-18 02:41:17 +01:00
parent ca947cee79
commit ee8751d682
11 changed files with 661 additions and 631 deletions

View File

File diff suppressed because one or more lines are too long

View File

Binary file not shown.

View File

@@ -29,7 +29,7 @@ Project File Date: 08/17/2022
Build target 'bbc'
compiling main.c...
linking...
Program Size: Code=7420 RO-data=248 RW-data=32 ZI-data=2176
Program Size: Code=7288 RO-data=248 RW-data=32 ZI-data=2176
FromELF: creating hex file...
"bbc\bbc.axf" - 0 Error(s), 0 Warning(s).
@@ -54,7 +54,7 @@ Package Vendor: Keil
<h2>Collection of Component Files used:</h2>
* Component: ARM::CMSIS:CORE:5.3.0
Build Time Elapsed: 00:00:02
Build Time Elapsed: 00:00:01
</pre>
</body>
</html>

View File

@@ -11,7 +11,7 @@
:10009000E7000008E7000008E7000008E7000008A4
:1000A000E700000851130008E7000008E700000817
:1000B000E7000008E7000008E7000008E700000884
:1000C0000348854600F04EF8004800477D1C0008B4
:1000C0000348854600F04EF800480047291C000808
:1000D000A00800200448804704480047FEE7FEE7E8
:1000E000FEE7FEE7FEE7FEE7BD160008C1000008D8
:1000F00030B50B46014600202022012409E00D46C0
@@ -23,40 +23,40 @@
:10015000F6E710B513460A4604461946FFF7F0FFC6
:10016000204610BD064C0125064E05E0E36807CC8D
:100170002B430C3C98471034B442F7D3FFF7A4FF4D
:10018000D41D0008F41D000810B5042000F044F848
:10018000501D0008701D000810B5042000F04AF84A
:1001900010BD70B50024014620314A78022A03D0F0
:1001A00004218163012416E0026813680E25AB4325
:1001B0001360026813685B085B0013600122056C22
:1001C0001346AB40C56B6B604A7000220A70416BEE
:1001D000002900D08847204670BD000010B50D4CA6
:1001E00001210022C903204600F0D3F8FF21092095
:1001F00000220131C00600F0CCF801E001F0BAFCA9
:100200000421204600F0C0F80028F7D001F0D6FC09
:1002100010BD00000004004810B504494A690242BC
:1002200002D04861FFF7DAFF10BD00000004014072
:10023000F8B5002393E0224601249C40A4462240C6
:100240007ED04C68022C01D0122C0CD1DC08A4000A
:1002500027183C6A5D07ED0E0F26AE40B4430E69C9
:10026000AE4026433E6205685E000324B4400F7929
:10027000A543BF07BF0FB7402F4307604D68012D4F
:1002800005D0022D03D0112D01D0122D0ED185687D
:10029000CF68A543B7402F43876047686546AF43A3
:1002A0000D79ED06ED0F9D403D434560C568A543C2
:1002B0008C68B4402C43C4604C68E4004ED52B4C91
:1002C000A56901263543A561A4699D0834400094C1
:1002D000274CAD002F19BC689D072E0F0F25B54088
:1002E000AC430925ED06A84201D1002514E0214DBB
:1002F000A84201D101250FE01F4DA84201D10225DE
:100300000AE01E4DA84201D1032505E01C4DA8427C
:1003100001D1042500E00525B5402543BD60194CF9
:1003200025684E689543F60300D51543256065683A
:100330004E689543B60300D515436560A56800E097
:100340000CE04E689543F60200D51543A560E568BC
:100350004E689543B60200D51543E5605B1C0A68FC
:100360001446DA4000D066E7F8BD000000100240F5
:10037000000001400004004800080048000C00484C
:1003800000100048000401400069084000D001202E
:100390007047002A01D08161704781627047000078
:1001D000002900D08847204670BD00001049012644
:1001E00009220E48F603D2068C034F050B695B0407
:1001F0005B0E5D0783606D0F5B061B0FC57003719F
:10020000012B01D08F6102E08E61042D01D0946139
:10021000ECE7FF2301339361E8E7000004000020CE
:100220000004004810B504494A69024202D04861FE
:10023000FFF7D4FF10BD000000040140F8B5002313
:1002400093E0224601249C40A44622407ED04C6884
:10025000022C01D0122C0CD1DC08A40027183C6A17
:100260005D07ED0E0F26AE40B4430E69AE40264347
:100270003E6205685E000324B4400F79A543BF07C2
:10028000BF0FB7402F4307604D68012D05D0022DE9
:1002900003D0112D01D0122D0ED18568CF68A54352
:1002A000B7402F43876047686546AF430D79ED0639
:1002B000ED0F9D403D434560C568A5438C68B44043
:1002C0002C43C4604C68E4004ED52B4CA569012634
:1002D0003543A561A4699D0834400094274CAD00C6
:1002E0002F19BC689D072E0F0F25B540AC4309257B
:1002F000ED06A84201D1002514E0214DA84201D10C
:1003000001250FE01F4DA84201D102250AE01E4D34
:10031000A84201D1032505E01C4DA84201D10425C6
:1003200000E00525B5402543BD60194C25684E68A1
:100330009543F60300D51543256065684E689543DF
:10034000B60300D515436560A56800E00CE04E6873
:100350009543F60200D51543A560E5684E689543C0
:10036000B60200D51543E5605B1C0A681446DA4006
:1003700000D066E7F8BD0000001002400000014018
:100380000004004800080048000C00480010004825
:1003900000040140002A01D08161704781627047EA
:1003A00001480068704700001000002070B504008C
:1003B00005D025466035687A002802D006E0012085
:1003C00070BD00202872204600F096FE242068723E
@@ -115,10 +115,10 @@
:1007100009028843E9680843606000F02DF86168C9
:10072000084A0906090F515CC840074908600020C3
:10073000FFF790FE0020F8BD0020024000100240AC
:1007400088130000BC1D0008140000200148006848
:1007400088130000381D00081400002001480068CC
:1007500070470000140000200448054900684968FB
:10076000044A4905490F515CC840704714000020F5
:1007700000100240CC1D000830B516A30FCB89B085
:1007700000100240481D000830B516A30FCB89B009
:100780006C460FC417A30FCB0FC41A494A680C203C
:10079000144604401848042C05D0184B082C04D0EB
:1007A0000C2C00D1184609B030BD9402240F6D46C0
@@ -216,7 +216,7 @@
:100D6000012068770020F8BD00B50068114987B000
:100D700088421DD11048826981140A4382618069CA
:100D800008400590F02000900220019000210320EF
:100D900003900291049109206946C006FFF748FAC2
:100D900003900291049109206946C006FFF74EFABC
:100DA000002211461920FFF793FB1920FFF786FB5D
:100DB00007B000BD00300140001002407047000045
:100DC000F0B504468C464034217F0025C76896461E
@@ -233,11 +233,11 @@
:100E7000490603D401684022114301600020207715
:100E80002846F0BD61130008F51300089713000809
:100E90002914000870B5012209251403ED06214626
:100EA0002846FFF776FA12492022881AFFF736F90A
:100EA0002846FFF777FA12492022881AFFF736F909
:100EB0000F4B203B1878DE2803D00E490120087024
:100EC00008E09878082805D109489A7919792030DE
:100ED00000F07EFE064A2023114640390648FFF7FF
:100EE0006FFF002221462846FFF753FA70BD00002D
:100ED00000F054FE064A2023114640390648FFF729
:100EE0006FFF002221462846FFF754FA70BD00002C
:100EF0007401002004000020200000200422044986
:100F00000428086902D09043086170471043FBE74A
:100F100000E000E070470000094910B5401E88421B
@@ -274,21 +274,21 @@
:10110000884216D10D488269012189030A43826110
:10111000806908400590481100901220019001213B
:10112000032003900291049109206946C006FFF74D
:101130007FF807B000BD00000038014000100240F9
:1011300085F807B000BD00000038014000100240F3
:10114000FEE70000F0B5384887B042690121890503
:101150000A43426142690A400592426949110A43C1
:10116000426142690A400592426949000A4342616C
:1011700040692E4F08400590002202213846FFF7B3
:1011800008F90126F603002231462948FFF701F944
:101190001D21092000220902C006FFF7FAF80220EB
:1011800009F90126F603002231462948FFF702F942
:101190001D21092000220902C006FFF7FBF80220EA
:1011A0000024012500900294694601950394384675
:1011B000FFF73EF81F4800900194694602941C48CE
:1011C000FFF736F8042000901B480190694602940E
:1011D0001748FFF72DF80096112602946946144827
:1011E00001960394FFF724F8280200900920029446
:1011F000694601960394C006FFF71AF8072080029B
:1011B000FFF744F81F4800900194694602941C48C8
:1011C000FFF73CF8042000901B4801906946029408
:1011D0001748FFF733F80096112602946946144821
:1011E00001960394FFF72AF8280200900920029440
:1011F000694601960394C006FFF720F80720800295
:10120000009009200294694601950394C006FFF7F7
:101210000FF8002201210620FFF75AF90620FFF7F8
:1012100015F8002201210620FFF75AF90620FFF7F2
:101220004DF907B0F0BD0000001002400014004866
:1012300000040048027F00000000211010B50D4896
:101240000B49016000214160816001614161816160
@@ -434,52 +434,43 @@
:101B0000C1693046884304D00020B842D9D00020B3
:101B1000F3E70120F9E702E008C8121F08C1002A14
:101B2000FAD170477047002001E001C1121F002A5E
:101B3000FBD17047054900200A5C002A01D0012032
:101B40007047401CFF28F7DD00207047A0010020EF
:101B500000B5014600F02AF9411800F027F9884243
:101B6000FBD300BD10B502490860FFF741FA10BD74
:101B70000000002010B50F4801690F4C4904490EC0
:101B80004A07A160520F4906090FE270217101292D
:101B900002D000F013F810BD0122D103FEF7F9FBCB
:101BA000E0780428F7D1810109200122C006FEF760
:101BB000F0FB10BD000400480400002010B5012116
:101BC0000022C9030148FEF7E4FB10BD00040048F1
:101BD00010B50C46034600F01FF8002801D0012084
:101BE00010BD197858684454197898684254187888
:101BF000401C4007400F1870002010BD10B504466F
:101C0000082000F09DF86060082000F099F8A060BE
:101C1000204600F025F810BD41780078401C4007B0
:101C2000400F814201D1012070470020704710B55C
:101C300043780478A34201D1012010BD4468E35CDD
:101C40000B7081684078085C1070002010BD4178EE
:101C50000278914203D0491C4907490F41707047EF
:101C600010B5044600202070607008216068FEF7FF
:101C70006EFA0821A068FEF76AFA10BDFEF7DAFBDB
:101C8000FFF7E6FCFFF75EFAFFF7D8FAFFF71EFB57
:101C9000FFF7F2FA2548FFF7B1FF2548FFF762FF8B
:101CA0000125ED03002229462248FEF772FB092098
:101CB0000022E911C006FEF76CFB1C4820216038A9
:101CC000FEF745FA194A1A48203A114620234039AE
:101CD0006438FFF775F80126174C0027164A134899
:101CE000921C511EFFF7A3FF00280AD1A07861784B
:101CF0000028124801D0465400E047540B48FFF733
:101D0000A6FFFFF717FF002809D0667101222946B8
:101D10000848FEF73EFB0120FFF71AFF00E067715D
:101D2000002229460348FEF734FBD7E79401002040
:101D3000840000200004004804000020A0010020CE
:101D4000F0B50B30C108C900144F0026144A0FE04B
:101D500003688B420BD38B4205D95C1A4318456844
:101D600030C3083B00E04368136002C004E0021D7A
:101D700010680028ECD13046002803D138680028CC
:101D800001D00020F0BD064A06481060064A121A2B
:101D9000D208D20044C001203860D7E71C000020E0
:101DA00018000020A4020020A004002002480068BF
:101DB0000068406A7047000000000020000000003A
:101DC00000000000010203040607080900000000EB
:101DD00001020304F41D00080000002020000000A0
:101DE000161B0008141E00082000002080080000B8
:101DF000261B00080000000000000000000000009A
:101E0000000000000000000000127A000000000046
:041E100000000000CE
:101B3000FBD1704700B5014600F0F6F8411800F0FF
:101B4000F3F88842FBD300BD10B502490860FFF7E7
:101B50004FFA10BD0000002010B501210022C9037A
:101B60000548FEF717FCFF21092000220131C006BD
:101B7000FEF710FC10BD00000004004810B50C4634
:101B8000034600F01FF8002801D0012010BD19788D
:101B9000586844541978986842541878401C400793
:101BA000400F1870002010BD10B50446082000F04A
:101BB00085F86060082000F081F8A060204600F001
:101BC00025F810BD41780078401C4007400F814245
:101BD00001D1012070470020704710B54378047888
:101BE000A34201D1012010BD4468E35C0B70816801
:101BF0004078085C1070002010BD41780278914256
:101C000003D0491C4907490F4170704710B504467D
:101C100000202070607008216068FEF798FA0821A3
:101C2000A068FEF794FA10BDFEF704FCFFF710FD64
:101C3000FFF788FAFFF702FBFFF748FBFFF71CFBF3
:101C40001A48FFF7B1FF1A48FFF77EFFFFF784FF3E
:101C5000164820216038FEF77AFA144A1448203AD0
:101C60001146202340396438FFF7AAF8114E0124A9
:101C7000114DE4030F4A0D48921C511EFFF7ADFFB2
:101C80000028F7D1B07801280CD10122214628463E
:101C9000FEF780FB0120FFF74DFF0022214628467A
:101CA000FEF778FB0148FFF7A8FFE3E79401002067
:101CB000840000200400002000040048F0B50B3030
:101CC000C108C900144F0026144A0FE003688B4274
:101CD0000BD38B4205D95C1A4318456830C3083BC7
:101CE00000E04368136002C004E0021D1068002891
:101CF000ECD13046002803D13868002801D00020FC
:101D0000F0BD064A06481060064A121AD208D200F0
:101D100044C001203860D7E71C00002018000020D4
:101D2000A4020020A0040020024800680068406A65
:101D300070470000000000200000000000000000CC
:101D40000102030406070809000000000102030461
:101D5000701D00080000002020000000161B000875
:101D6000901D00082000002080080000261B0008AD
:101D70000000000000000000000000000000000063
:101D80000000000000127A000000000000000000C7
:04000005080000C12E
:00000001FF

View File

@@ -3,7 +3,7 @@
<title>Static Call Graph - [bbc\bbc.axf]</title></head>
<body><HR>
<H1>Static Call Graph for image bbc\bbc.axf</H1><HR>
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Wed Aug 17 03:01:12 2022
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Thu Aug 18 02:39:48 2022
<BR><P>
<H3>Maximum Stack Usage = 196 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
Call chain for Maximum Stack Depth:</H3>
@@ -72,7 +72,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="[7c]"></a>_main_stk</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))
<P><STRONG><a name="[79]"></a>_main_stk</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))
<P><STRONG><a name="[2e]"></a>_main_scatterload</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
<BR><BR>[Calls]<UL><LI><a href="#[2f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__scatterload
@@ -82,15 +82,15 @@ Global Symbols
<BR><BR>[Called By]<UL><LI><a href="#[2f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__scatterload
</UL>
<P><STRONG><a name="[7d]"></a>_main_clock</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008))
<P><STRONG><a name="[7a]"></a>_main_clock</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008))
<P><STRONG><a name="[7e]"></a>_main_cpp_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A))
<P><STRONG><a name="[7b]"></a>_main_cpp_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A))
<P><STRONG><a name="[7f]"></a>_main_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B))
<P><STRONG><a name="[7c]"></a>_main_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B))
<P><STRONG><a name="[80]"></a>__rt_final_cpp</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D))
<P><STRONG><a name="[7d]"></a>__rt_final_cpp</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D))
<P><STRONG><a name="[81]"></a>__rt_final_exit</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F))
<P><STRONG><a name="[7e]"></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)
@@ -189,45 +189,45 @@ 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="[82]"></a>__aeabi_uidiv</STRONG> (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)
<P><STRONG><a name="[7f]"></a>__aeabi_uidiv</STRONG> (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)
<P><STRONG><a name="[43]"></a>__aeabi_uidivmod</STRONG> (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text))
<P><STRONG><a name="[3f]"></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="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<LI><a href="#[40]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
<LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetSysClockFreq
<LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_SetConfig
<BR>[Called By]<UL><LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
<LI><a href="#[46]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetSysClockFreq
<LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_SetConfig
</UL>
<P><STRONG><a name="[83]"></a>__aeabi_memcpy</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED)
<P><STRONG><a name="[80]"></a>__aeabi_memcpy</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED)
<P><STRONG><a name="[54]"></a>__aeabi_memcpy4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[53]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
<P><STRONG><a name="[51]"></a>__aeabi_memcpy4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[4f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
</UL>
<P><STRONG><a name="[84]"></a>__aeabi_memcpy8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED)
<P><STRONG><a name="[81]"></a>__aeabi_memcpy8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED)
<P><STRONG><a name="[31]"></a>__aeabi_memset</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[32]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_memset$wrapper
<LI><a href="#[30]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
</UL>
<P><STRONG><a name="[85]"></a>__aeabi_memset4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[82]"></a>__aeabi_memset4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[86]"></a>__aeabi_memset8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[83]"></a>__aeabi_memset8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[30]"></a>__aeabi_memclr</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[31]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memset
</UL>
<BR>[Called By]<UL><LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_reset
<BR>[Called By]<UL><LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_reset
</UL>
<P><STRONG><a name="[78]"></a>__aeabi_memclr4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text))
<P><STRONG><a name="[76]"></a>__aeabi_memclr4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[87]"></a>__aeabi_memclr8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[84]"></a>__aeabi_memclr8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[32]"></a>_memset$wrapper</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[31]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memset
@@ -239,299 +239,286 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[2e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_main_scatterload
</UL>
<P><STRONG><a name="[88]"></a>__scatterload_rt2</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)
<P><STRONG><a name="[85]"></a>__scatterload_rt2</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)
<P><STRONG><a name="[c]"></a>EXTI2_3_IRQHandler</STRONG> (Thumb, 10 bytes, Stack size 8 bytes, stm32f0xx_it.o(i.EXTI2_3_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = EXTI2_3_IRQHandler &rArr; HAL_GPIO_EXTI_IRQHandler &rArr; HAL_GPIO_EXTI_Callback &rArr; handle_kb_en &rArr; idle_kb_line
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = EXTI2_3_IRQHandler &rArr; HAL_GPIO_EXTI_IRQHandler
</UL>
<BR>[Calls]<UL><LI><a href="#[34]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_EXTI_IRQHandler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f072xb.o(RESET)
</UL>
<P><STRONG><a name="[4d]"></a>HAL_DMA_Abort_IT</STRONG> (Thumb, 72 bytes, Stack size 16 bytes, stm32f0xx_hal_dma.o(i.HAL_DMA_Abort_IT))
<P><STRONG><a name="[49]"></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
</UL>
<BR>[Called By]<UL><LI><a href="#[4c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_IRQHandler
<BR>[Called By]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_IRQHandler
</UL>
<P><STRONG><a name="[35]"></a>HAL_GPIO_EXTI_Callback</STRONG> (Thumb, 54 bytes, Stack size 8 bytes, main.o(i.HAL_GPIO_EXTI_Callback))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = HAL_GPIO_EXTI_Callback &rArr; handle_kb_en &rArr; idle_kb_line
</UL>
<BR>[Calls]<UL><LI><a href="#[36]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[39]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;idle_kb_line
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;handle_kb_en
</UL>
<BR>[Called By]<UL><LI><a href="#[34]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_EXTI_IRQHandler
<P><STRONG><a name="[35]"></a>HAL_GPIO_EXTI_Callback</STRONG> (Thumb, 62 bytes, Stack size 0 bytes, main.o(i.HAL_GPIO_EXTI_Callback))
<BR><BR>[Called By]<UL><LI><a href="#[34]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_EXTI_IRQHandler
</UL>
<P><STRONG><a name="[34]"></a>HAL_GPIO_EXTI_IRQHandler</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_EXTI_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = HAL_GPIO_EXTI_IRQHandler &rArr; HAL_GPIO_EXTI_Callback &rArr; handle_kb_en &rArr; idle_kb_line
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = HAL_GPIO_EXTI_IRQHandler
</UL>
<BR>[Calls]<UL><LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_EXTI_Callback
</UL>
<BR>[Called By]<UL><LI><a href="#[c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;EXTI2_3_IRQHandler
</UL>
<P><STRONG><a name="[51]"></a>HAL_GPIO_Init</STRONG> (Thumb, 314 bytes, Stack size 24 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_Init))
<P><STRONG><a name="[4d]"></a>HAL_GPIO_Init</STRONG> (Thumb, 314 bytes, Stack size 24 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_Init))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = HAL_GPIO_Init
</UL>
<BR>[Called By]<UL><LI><a href="#[3b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_MspInit
<LI><a href="#[50]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_MspInit
<LI><a href="#[61]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
<BR>[Called By]<UL><LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_MspInit
<LI><a href="#[4c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_MspInit
<LI><a href="#[5e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
</UL>
<P><STRONG><a name="[38]"></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="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_EXTI_Callback
</UL>
<P><STRONG><a name="[36]"></a>HAL_GPIO_WritePin</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin))
<P><STRONG><a name="[50]"></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="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<LI><a href="#[39]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;idle_kb_line
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;handle_kb_en
<LI><a href="#[53]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
<LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_EXTI_Callback
<LI><a href="#[61]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
<LI><a href="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;idle_kb_line
<LI><a href="#[4f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
<LI><a href="#[5e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
</UL>
<P><STRONG><a name="[48]"></a>HAL_GetTick</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f0xx_hal.o(i.HAL_GetTick))
<BR><BR>[Called By]<UL><LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_WaitFlagStateUntilTimeout
<LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_WaitFifoStateUntilTimeout
<LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
<LI><a href="#[4b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_OscConfig
<LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
<LI><a href="#[47]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCCEx_PeriphCLKConfig
<LI><a href="#[6e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_WaitOnFlagUntilTimeout
<LI><a href="#[3e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_CheckIdleState
<P><STRONG><a name="[44]"></a>HAL_GetTick</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f0xx_hal.o(i.HAL_GetTick))
<BR><BR>[Called By]<UL><LI><a href="#[67]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_WaitFlagStateUntilTimeout
<LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_WaitFifoStateUntilTimeout
<LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
<LI><a href="#[47]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_OscConfig
<LI><a href="#[45]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
<LI><a href="#[43]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCCEx_PeriphCLKConfig
<LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_WaitOnFlagUntilTimeout
<LI><a href="#[3a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_CheckIdleState
</UL>
<P><STRONG><a name="[3a]"></a>HAL_HalfDuplex_Init</STRONG> (Thumb, 118 bytes, Stack size 16 bytes, stm32f0xx_hal_uart.o(i.HAL_HalfDuplex_Init))
<P><STRONG><a name="[36]"></a>HAL_HalfDuplex_Init</STRONG> (Thumb, 118 bytes, Stack size 16 bytes, stm32f0xx_hal_uart.o(i.HAL_HalfDuplex_Init))
<BR><BR>[Stack]<UL><LI>Max Depth = 100<LI>Call Chain = HAL_HalfDuplex_Init &rArr; UART_SetConfig &rArr; HAL_RCC_GetSysClockFreq &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[3b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_MspInit
<LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_SetConfig
<LI><a href="#[3e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_CheckIdleState
<LI><a href="#[3d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_AdvFeatureConfig
<BR>[Calls]<UL><LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_MspInit
<LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_SetConfig
<LI><a href="#[3a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_CheckIdleState
<LI><a href="#[39]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_AdvFeatureConfig
</UL>
<BR>[Called By]<UL><LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART1_UART_Init
<BR>[Called By]<UL><LI><a href="#[62]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART1_UART_Init
</UL>
<P><STRONG><a name="[6b]"></a>HAL_IncTick</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, stm32f0xx_hal.o(i.HAL_IncTick))
<P><STRONG><a name="[68]"></a>HAL_IncTick</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, stm32f0xx_hal.o(i.HAL_IncTick))
<BR><BR>[Called By]<UL><LI><a href="#[5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SysTick_Handler
</UL>
<P><STRONG><a name="[3f]"></a>HAL_Init</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, stm32f0xx_hal.o(i.HAL_Init))
<P><STRONG><a name="[3b]"></a>HAL_Init</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, stm32f0xx_hal.o(i.HAL_Init))
<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = HAL_Init &rArr; HAL_InitTick &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[41]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_MspInit
<LI><a href="#[40]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
<BR>[Calls]<UL><LI><a href="#[3d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_MspInit
<LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[40]"></a>HAL_InitTick</STRONG> (Thumb, 34 bytes, Stack size 8 bytes, stm32f0xx_hal.o(i.HAL_InitTick))
<P><STRONG><a name="[3c]"></a>HAL_InitTick</STRONG> (Thumb, 34 bytes, Stack size 8 bytes, stm32f0xx_hal.o(i.HAL_InitTick))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = HAL_InitTick &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[44]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SYSTICK_Config
<LI><a href="#[42]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetHCLKFreq
<LI><a href="#[45]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
<LI><a href="#[43]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
<BR>[Calls]<UL><LI><a href="#[40]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SYSTICK_Config
<LI><a href="#[3e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetHCLKFreq
<LI><a href="#[41]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
<LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
<LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
<BR>[Called By]<UL><LI><a href="#[45]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
<LI><a href="#[3b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
</UL>
<P><STRONG><a name="[41]"></a>HAL_MspInit</STRONG> (Thumb, 64 bytes, Stack size 8 bytes, stm32f0xx_hal_msp.o(i.HAL_MspInit))
<P><STRONG><a name="[3d]"></a>HAL_MspInit</STRONG> (Thumb, 64 bytes, Stack size 8 bytes, stm32f0xx_hal_msp.o(i.HAL_MspInit))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = HAL_MspInit &rArr; HAL_NVIC_SetPriority
</UL>
<BR>[Calls]<UL><LI><a href="#[45]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
<BR>[Calls]<UL><LI><a href="#[41]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
</UL>
<BR>[Called By]<UL><LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
<BR>[Called By]<UL><LI><a href="#[3b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
</UL>
<P><STRONG><a name="[52]"></a>HAL_NVIC_EnableIRQ</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, stm32f0xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ))
<BR><BR>[Called By]<UL><LI><a href="#[50]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_MspInit
<LI><a href="#[61]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
<P><STRONG><a name="[4e]"></a>HAL_NVIC_EnableIRQ</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, stm32f0xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ))
<BR><BR>[Called By]<UL><LI><a href="#[4c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_MspInit
<LI><a href="#[5e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
</UL>
<P><STRONG><a name="[45]"></a>HAL_NVIC_SetPriority</STRONG> (Thumb, 8 bytes, Stack size 8 bytes, stm32f0xx_hal_cortex.o(i.HAL_NVIC_SetPriority))
<P><STRONG><a name="[41]"></a>HAL_NVIC_SetPriority</STRONG> (Thumb, 8 bytes, Stack size 8 bytes, stm32f0xx_hal_cortex.o(i.HAL_NVIC_SetPriority))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = HAL_NVIC_SetPriority
</UL>
<BR>[Calls]<UL><LI><a href="#[46]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;NVIC_SetPriority
<BR>[Calls]<UL><LI><a href="#[42]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;NVIC_SetPriority
</UL>
<BR>[Called By]<UL><LI><a href="#[50]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_MspInit
<LI><a href="#[41]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_MspInit
<LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<LI><a href="#[61]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
<LI><a href="#[40]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
<BR>[Called By]<UL><LI><a href="#[4c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_MspInit
<LI><a href="#[3d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_MspInit
<LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<LI><a href="#[5e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
<LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
</UL>
<P><STRONG><a name="[47]"></a>HAL_RCCEx_PeriphCLKConfig</STRONG> (Thumb, 274 bytes, Stack size 24 bytes, stm32f0xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig))
<P><STRONG><a name="[43]"></a>HAL_RCCEx_PeriphCLKConfig</STRONG> (Thumb, 274 bytes, Stack size 24 bytes, stm32f0xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = HAL_RCCEx_PeriphCLKConfig
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<BR>[Calls]<UL><LI><a href="#[44]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
</UL>
<BR>[Called By]<UL><LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<BR>[Called By]<UL><LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
</UL>
<P><STRONG><a name="[49]"></a>HAL_RCC_ClockConfig</STRONG> (Thumb, 320 bytes, Stack size 24 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_ClockConfig))
<P><STRONG><a name="[45]"></a>HAL_RCC_ClockConfig</STRONG> (Thumb, 320 bytes, Stack size 24 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_ClockConfig))
<BR><BR>[Stack]<UL><LI>Max Depth = 84<LI>Call Chain = HAL_RCC_ClockConfig &rArr; HAL_RCC_GetSysClockFreq &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[40]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
<LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetSysClockFreq
<BR>[Calls]<UL><LI><a href="#[44]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
<LI><a href="#[46]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetSysClockFreq
</UL>
<BR>[Called By]<UL><LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<BR>[Called By]<UL><LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
</UL>
<P><STRONG><a name="[42]"></a>HAL_RCC_GetHCLKFreq</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq))
<BR><BR>[Called By]<UL><LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<LI><a href="#[40]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
<P><STRONG><a name="[3e]"></a>HAL_RCC_GetHCLKFreq</STRONG> (Thumb, 6 bytes, Stack size 0 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq))
<BR><BR>[Called By]<UL><LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
</UL>
<P><STRONG><a name="[6f]"></a>HAL_RCC_GetPCLK1Freq</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq))
<BR><BR>[Called By]<UL><LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_SetConfig
<P><STRONG><a name="[6c]"></a>HAL_RCC_GetPCLK1Freq</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq))
<BR><BR>[Called By]<UL><LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_SetConfig
</UL>
<P><STRONG><a name="[4a]"></a>HAL_RCC_GetSysClockFreq</STRONG> (Thumb, 90 bytes, Stack size 48 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq))
<P><STRONG><a name="[46]"></a>HAL_RCC_GetSysClockFreq</STRONG> (Thumb, 90 bytes, Stack size 48 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq))
<BR><BR>[Stack]<UL><LI>Max Depth = 60<LI>Call Chain = HAL_RCC_GetSysClockFreq &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[43]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
<BR>[Calls]<UL><LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
<LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_SetConfig
<BR>[Called By]<UL><LI><a href="#[45]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
<LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_SetConfig
</UL>
<P><STRONG><a name="[4b]"></a>HAL_RCC_OscConfig</STRONG> (Thumb, 966 bytes, Stack size 32 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_OscConfig))
<P><STRONG><a name="[47]"></a>HAL_RCC_OscConfig</STRONG> (Thumb, 966 bytes, Stack size 32 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_OscConfig))
<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = HAL_RCC_OscConfig
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<BR>[Calls]<UL><LI><a href="#[44]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
</UL>
<BR>[Called By]<UL><LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<BR>[Called By]<UL><LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
</UL>
<P><STRONG><a name="[4e]"></a>HAL_SPI_ErrorCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_ErrorCallback))
<P><STRONG><a name="[4a]"></a>HAL_SPI_ErrorCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_ErrorCallback))
<BR><BR>[Called By]<UL><LI><a href="#[29]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_DMAAbortOnError
<LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
<LI><a href="#[4c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_IRQHandler
<LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
<LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_IRQHandler
</UL>
<P><STRONG><a name="[4c]"></a>HAL_SPI_IRQHandler</STRONG> (Thumb, 208 bytes, Stack size 24 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_IRQHandler))
<P><STRONG><a name="[48]"></a>HAL_SPI_IRQHandler</STRONG> (Thumb, 208 bytes, Stack size 24 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = HAL_SPI_IRQHandler &rArr; HAL_DMA_Abort_IT
</UL>
<BR>[Calls]<UL><LI><a href="#[4e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_ErrorCallback
<LI><a href="#[4d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Abort_IT
<BR>[Calls]<UL><LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_ErrorCallback
<LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_DMA_Abort_IT
</UL>
<BR>[Called By]<UL><LI><a href="#[1f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI1_IRQHandler
</UL>
<P><STRONG><a name="[4f]"></a>HAL_SPI_Init</STRONG> (Thumb, 184 bytes, Stack size 24 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_Init))
<P><STRONG><a name="[4b]"></a>HAL_SPI_Init</STRONG> (Thumb, 184 bytes, Stack size 24 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_Init))
<BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = HAL_SPI_Init &rArr; HAL_SPI_MspInit &rArr; HAL_GPIO_Init
</UL>
<BR>[Calls]<UL><LI><a href="#[50]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_MspInit
<BR>[Calls]<UL><LI><a href="#[4c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_MspInit
</UL>
<BR>[Called By]<UL><LI><a href="#[62]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_SPI1_Init
<BR>[Called By]<UL><LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_SPI1_Init
</UL>
<P><STRONG><a name="[50]"></a>HAL_SPI_MspInit</STRONG> (Thumb, 76 bytes, Stack size 32 bytes, stm32f0xx_hal_msp.o(i.HAL_SPI_MspInit))
<P><STRONG><a name="[4c]"></a>HAL_SPI_MspInit</STRONG> (Thumb, 76 bytes, Stack size 32 bytes, stm32f0xx_hal_msp.o(i.HAL_SPI_MspInit))
<BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = HAL_SPI_MspInit &rArr; HAL_GPIO_Init
</UL>
<BR>[Calls]<UL><LI><a href="#[45]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
<LI><a href="#[52]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_EnableIRQ
<LI><a href="#[51]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_Init
<BR>[Calls]<UL><LI><a href="#[41]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
<LI><a href="#[4e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_EnableIRQ
<LI><a href="#[4d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_Init
</UL>
<BR>[Called By]<UL><LI><a href="#[4f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_Init
<BR>[Called By]<UL><LI><a href="#[4b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_Init
</UL>
<P><STRONG><a name="[68]"></a>HAL_SPI_RxCpltCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_RxCpltCallback))
<BR><BR>[Called By]<UL><LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
<P><STRONG><a name="[65]"></a>HAL_SPI_RxCpltCallback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_RxCpltCallback))
<BR><BR>[Called By]<UL><LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
</UL>
<P><STRONG><a name="[56]"></a>HAL_SPI_TransmitReceive_IT</STRONG> (Thumb, 196 bytes, Stack size 20 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT))
<P><STRONG><a name="[53]"></a>HAL_SPI_TransmitReceive_IT</STRONG> (Thumb, 196 bytes, Stack size 20 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = HAL_SPI_TransmitReceive_IT
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<LI><a href="#[53]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
<LI><a href="#[4f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
</UL>
<P><STRONG><a name="[53]"></a>HAL_SPI_TxRxCpltCallback</STRONG> (Thumb, 90 bytes, Stack size 16 bytes, main.o(i.HAL_SPI_TxRxCpltCallback))
<P><STRONG><a name="[4f]"></a>HAL_SPI_TxRxCpltCallback</STRONG> (Thumb, 90 bytes, Stack size 16 bytes, main.o(i.HAL_SPI_TxRxCpltCallback))
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = HAL_SPI_TxRxCpltCallback &rArr; HAL_SPI_TransmitReceive_IT
</UL>
<BR>[Calls]<UL><LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TransmitReceive_IT
<LI><a href="#[36]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[55]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_add
<LI><a href="#[54]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy4
<BR>[Calls]<UL><LI><a href="#[53]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TransmitReceive_IT
<LI><a href="#[50]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[52]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_add
<LI><a href="#[51]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy4
</UL>
<BR>[Called By]<UL><LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
<BR>[Called By]<UL><LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
</UL>
<P><STRONG><a name="[6d]"></a>HAL_SYSTICK_CLKSourceConfig</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig))
<BR><BR>[Called By]<UL><LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<P><STRONG><a name="[6a]"></a>HAL_SYSTICK_CLKSourceConfig</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig))
<BR><BR>[Called By]<UL><LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
</UL>
<P><STRONG><a name="[58]"></a>HAL_SYSTICK_Callback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Callback))
<BR><BR>[Called By]<UL><LI><a href="#[57]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SYSTICK_IRQHandler
<P><STRONG><a name="[55]"></a>HAL_SYSTICK_Callback</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Callback))
<BR><BR>[Called By]<UL><LI><a href="#[54]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SYSTICK_IRQHandler
</UL>
<P><STRONG><a name="[44]"></a>HAL_SYSTICK_Config</STRONG> (Thumb, 38 bytes, Stack size 8 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Config))
<P><STRONG><a name="[40]"></a>HAL_SYSTICK_Config</STRONG> (Thumb, 38 bytes, Stack size 8 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Config))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = HAL_SYSTICK_Config
</UL>
<BR>[Calls]<UL><LI><a href="#[46]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;NVIC_SetPriority
<BR>[Calls]<UL><LI><a href="#[42]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;NVIC_SetPriority
</UL>
<BR>[Called By]<UL><LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<LI><a href="#[40]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
<BR>[Called By]<UL><LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
</UL>
<P><STRONG><a name="[57]"></a>HAL_SYSTICK_IRQHandler</STRONG> (Thumb, 8 bytes, Stack size 8 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_IRQHandler))
<P><STRONG><a name="[54]"></a>HAL_SYSTICK_IRQHandler</STRONG> (Thumb, 8 bytes, Stack size 8 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = HAL_SYSTICK_IRQHandler
</UL>
<BR>[Calls]<UL><LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SYSTICK_Callback
<BR>[Calls]<UL><LI><a href="#[55]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SYSTICK_Callback
</UL>
<BR>[Called By]<UL><LI><a href="#[5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SysTick_Handler
</UL>
<P><STRONG><a name="[64]"></a>HAL_TIMEx_MasterConfigSynchronization</STRONG> (Thumb, 72 bytes, Stack size 16 bytes, stm32f0xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization))
<P><STRONG><a name="[61]"></a>HAL_TIMEx_MasterConfigSynchronization</STRONG> (Thumb, 72 bytes, Stack size 16 bytes, stm32f0xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = HAL_TIMEx_MasterConfigSynchronization
</UL>
<BR>[Called By]<UL><LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM2_Init
<BR>[Called By]<UL><LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM2_Init
</UL>
<P><STRONG><a name="[59]"></a>HAL_TIM_Base_Init</STRONG> (Thumb, 52 bytes, Stack size 16 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Init))
<P><STRONG><a name="[56]"></a>HAL_TIM_Base_Init</STRONG> (Thumb, 52 bytes, Stack size 16 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Init))
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = HAL_TIM_Base_Init &rArr; TIM_Base_SetConfig
</UL>
<BR>[Calls]<UL><LI><a href="#[5a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_MspInit
<LI><a href="#[5b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_Base_SetConfig
<BR>[Calls]<UL><LI><a href="#[57]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_MspInit
<LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_Base_SetConfig
</UL>
<BR>[Called By]<UL><LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM2_Init
<BR>[Called By]<UL><LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM2_Init
</UL>
<P><STRONG><a name="[5a]"></a>HAL_TIM_Base_MspInit</STRONG> (Thumb, 30 bytes, Stack size 8 bytes, stm32f0xx_hal_msp.o(i.HAL_TIM_Base_MspInit))
<P><STRONG><a name="[57]"></a>HAL_TIM_Base_MspInit</STRONG> (Thumb, 30 bytes, Stack size 8 bytes, stm32f0xx_hal_msp.o(i.HAL_TIM_Base_MspInit))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = HAL_TIM_Base_MspInit
</UL>
<BR>[Called By]<UL><LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Init
<BR>[Called By]<UL><LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Init
</UL>
<P><STRONG><a name="[73]"></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="#[72]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us_init
<P><STRONG><a name="[70]"></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="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us_init
</UL>
<P><STRONG><a name="[5c]"></a>HAL_TIM_ConfigClockSource</STRONG> (Thumb, 238 bytes, Stack size 24 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_ConfigClockSource))
<P><STRONG><a name="[59]"></a>HAL_TIM_ConfigClockSource</STRONG> (Thumb, 238 bytes, Stack size 24 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_ConfigClockSource))
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = HAL_TIM_ConfigClockSource &rArr; TIM_ETR_SetConfig
</UL>
<BR>[Calls]<UL><LI><a href="#[5d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_ETR_SetConfig
<LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_TI2_ConfigInputStage
<LI><a href="#[5e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_TI1_ConfigInputStage
<LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_ITRx_SetConfig
<BR>[Calls]<UL><LI><a href="#[5a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_ETR_SetConfig
<LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_TI2_ConfigInputStage
<LI><a href="#[5b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_TI1_ConfigInputStage
<LI><a href="#[5d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;TIM_ITRx_SetConfig
</UL>
<BR>[Called By]<UL><LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM2_Init
<BR>[Called By]<UL><LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM2_Init
</UL>
<P><STRONG><a name="[3b]"></a>HAL_UART_MspInit</STRONG> (Thumb, 62 bytes, Stack size 32 bytes, stm32f0xx_hal_msp.o(i.HAL_UART_MspInit))
<P><STRONG><a name="[37]"></a>HAL_UART_MspInit</STRONG> (Thumb, 62 bytes, Stack size 32 bytes, stm32f0xx_hal_msp.o(i.HAL_UART_MspInit))
<BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = HAL_UART_MspInit &rArr; HAL_GPIO_Init
</UL>
<BR>[Calls]<UL><LI><a href="#[51]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_Init
<BR>[Calls]<UL><LI><a href="#[4d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_Init
</UL>
<BR>[Called By]<UL><LI><a href="#[3a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_HalfDuplex_Init
<BR>[Called By]<UL><LI><a href="#[36]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_HalfDuplex_Init
</UL>
<P><STRONG><a name="[2]"></a>HardFault_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_it.o(i.HardFault_Handler))
@@ -550,7 +537,7 @@ Global Symbols
<P><STRONG><a name="[1f]"></a>SPI1_IRQHandler</STRONG> (Thumb, 10 bytes, Stack size 8 bytes, stm32f0xx_it.o(i.SPI1_IRQHandler))
<BR><BR>[Stack]<UL><LI>Max Depth = 48<LI>Call Chain = SPI1_IRQHandler &rArr; HAL_SPI_IRQHandler &rArr; HAL_DMA_Abort_IT
</UL>
<BR>[Calls]<UL><LI><a href="#[4c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_IRQHandler
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_IRQHandler
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f072xb.o(RESET)
</UL>
@@ -560,22 +547,22 @@ Global Symbols
<P><STRONG><a name="[5]"></a>SysTick_Handler</STRONG> (Thumb, 12 bytes, Stack size 8 bytes, stm32f0xx_it.o(i.SysTick_Handler))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = SysTick_Handler &rArr; HAL_SYSTICK_IRQHandler
</UL>
<BR>[Calls]<UL><LI><a href="#[57]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SYSTICK_IRQHandler
<LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_IncTick
<BR>[Calls]<UL><LI><a href="#[54]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SYSTICK_IRQHandler
<LI><a href="#[68]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_IncTick
</UL>
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f072xb.o(RESET)
</UL>
<P><STRONG><a name="[6c]"></a>SystemClock_Config</STRONG> (Thumb, 106 bytes, Stack size 112 bytes, main.o(i.SystemClock_Config))
<P><STRONG><a name="[69]"></a>SystemClock_Config</STRONG> (Thumb, 106 bytes, Stack size 112 bytes, main.o(i.SystemClock_Config))
<BR><BR>[Stack]<UL><LI>Max Depth = 196<LI>Call Chain = SystemClock_Config &rArr; HAL_RCC_ClockConfig &rArr; HAL_RCC_GetSysClockFreq &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[44]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SYSTICK_Config
<LI><a href="#[6d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SYSTICK_CLKSourceConfig
<LI><a href="#[4b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_OscConfig
<LI><a href="#[42]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetHCLKFreq
<LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
<LI><a href="#[47]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCCEx_PeriphCLKConfig
<LI><a href="#[45]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
<LI><a href="#[43]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
<BR>[Calls]<UL><LI><a href="#[40]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SYSTICK_Config
<LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SYSTICK_CLKSourceConfig
<LI><a href="#[47]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_OscConfig
<LI><a href="#[3e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetHCLKFreq
<LI><a href="#[45]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
<LI><a href="#[43]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCCEx_PeriphCLKConfig
<LI><a href="#[41]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
<LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
@@ -583,201 +570,187 @@ Global Symbols
<P><STRONG><a name="[27]"></a>SystemInit</STRONG> (Thumb, 76 bytes, Stack size 0 bytes, system_stm32f0xx.o(i.SystemInit))
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f072xb.o(.text)
</UL>
<P><STRONG><a name="[5b]"></a>TIM_Base_SetConfig</STRONG> (Thumb, 124 bytes, Stack size 20 bytes, stm32f0xx_hal_tim.o(i.TIM_Base_SetConfig))
<P><STRONG><a name="[58]"></a>TIM_Base_SetConfig</STRONG> (Thumb, 124 bytes, Stack size 20 bytes, stm32f0xx_hal_tim.o(i.TIM_Base_SetConfig))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = TIM_Base_SetConfig
</UL>
<BR>[Called By]<UL><LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Init
<BR>[Called By]<UL><LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Init
</UL>
<P><STRONG><a name="[5d]"></a>TIM_ETR_SetConfig</STRONG> (Thumb, 22 bytes, Stack size 12 bytes, stm32f0xx_hal_tim.o(i.TIM_ETR_SetConfig))
<P><STRONG><a name="[5a]"></a>TIM_ETR_SetConfig</STRONG> (Thumb, 22 bytes, Stack size 12 bytes, stm32f0xx_hal_tim.o(i.TIM_ETR_SetConfig))
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = TIM_ETR_SetConfig
</UL>
<BR>[Called By]<UL><LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
<BR>[Called By]<UL><LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
</UL>
<P><STRONG><a name="[3d]"></a>UART_AdvFeatureConfig</STRONG> (Thumb, 202 bytes, Stack size 8 bytes, stm32f0xx_hal_uart.o(i.UART_AdvFeatureConfig))
<P><STRONG><a name="[39]"></a>UART_AdvFeatureConfig</STRONG> (Thumb, 202 bytes, Stack size 8 bytes, stm32f0xx_hal_uart.o(i.UART_AdvFeatureConfig))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = UART_AdvFeatureConfig
</UL>
<BR>[Called By]<UL><LI><a href="#[3a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_HalfDuplex_Init
<BR>[Called By]<UL><LI><a href="#[36]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_HalfDuplex_Init
</UL>
<P><STRONG><a name="[3e]"></a>UART_CheckIdleState</STRONG> (Thumb, 102 bytes, Stack size 24 bytes, stm32f0xx_hal_uart.o(i.UART_CheckIdleState))
<P><STRONG><a name="[3a]"></a>UART_CheckIdleState</STRONG> (Thumb, 102 bytes, Stack size 24 bytes, stm32f0xx_hal_uart.o(i.UART_CheckIdleState))
<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = UART_CheckIdleState &rArr; UART_WaitOnFlagUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[6e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_WaitOnFlagUntilTimeout
<BR>[Calls]<UL><LI><a href="#[44]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[6b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_WaitOnFlagUntilTimeout
</UL>
<BR>[Called By]<UL><LI><a href="#[3a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_HalfDuplex_Init
<BR>[Called By]<UL><LI><a href="#[36]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_HalfDuplex_Init
</UL>
<P><STRONG><a name="[3c]"></a>UART_SetConfig</STRONG> (Thumb, 316 bytes, Stack size 24 bytes, stm32f0xx_hal_uart.o(i.UART_SetConfig))
<P><STRONG><a name="[38]"></a>UART_SetConfig</STRONG> (Thumb, 316 bytes, Stack size 24 bytes, stm32f0xx_hal_uart.o(i.UART_SetConfig))
<BR><BR>[Stack]<UL><LI>Max Depth = 84<LI>Call Chain = UART_SetConfig &rArr; HAL_RCC_GetSysClockFreq &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetSysClockFreq
<LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetPCLK1Freq
<LI><a href="#[43]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
<BR>[Calls]<UL><LI><a href="#[46]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetSysClockFreq
<LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetPCLK1Freq
<LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[3a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_HalfDuplex_Init
<BR>[Called By]<UL><LI><a href="#[36]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_HalfDuplex_Init
</UL>
<P><STRONG><a name="[6e]"></a>UART_WaitOnFlagUntilTimeout</STRONG> (Thumb, 98 bytes, Stack size 40 bytes, stm32f0xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout))
<P><STRONG><a name="[6b]"></a>UART_WaitOnFlagUntilTimeout</STRONG> (Thumb, 98 bytes, Stack size 40 bytes, stm32f0xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout))
<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = UART_WaitOnFlagUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<BR>[Calls]<UL><LI><a href="#[44]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
</UL>
<BR>[Called By]<UL><LI><a href="#[3e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_CheckIdleState
<BR>[Called By]<UL><LI><a href="#[3a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_CheckIdleState
</UL>
<P><STRONG><a name="[89]"></a>__scatterload_copy</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)
<P><STRONG><a name="[86]"></a>__scatterload_copy</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)
<P><STRONG><a name="[8a]"></a>__scatterload_null</STRONG> (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED)
<P><STRONG><a name="[87]"></a>__scatterload_null</STRONG> (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED)
<P><STRONG><a name="[8b]"></a>__scatterload_zeroinit</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED)
<P><STRONG><a name="[88]"></a>__scatterload_zeroinit</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED)
<P><STRONG><a name="[7b]"></a>check_active_keys</STRONG> (Thumb, 24 bytes, Stack size 0 bytes, main.o(i.check_active_keys))
<BR><BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[70]"></a>delay_us</STRONG> (Thumb, 20 bytes, Stack size 4 bytes, delay_us.o(i.delay_us))
<P><STRONG><a name="[6d]"></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="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;micros
<BR>[Calls]<UL><LI><a href="#[6e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;micros
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[72]"></a>delay_us_init</STRONG> (Thumb, 12 bytes, Stack size 8 bytes, delay_us.o(i.delay_us_init))
<P><STRONG><a name="[6f]"></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="#[73]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Start
<BR>[Calls]<UL><LI><a href="#[70]">&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>
<P><STRONG><a name="[37]"></a>handle_kb_en</STRONG> (Thumb, 64 bytes, Stack size 8 bytes, main.o(i.handle_kb_en))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = handle_kb_en &rArr; idle_kb_line
</UL>
<BR>[Calls]<UL><LI><a href="#[36]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[39]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;idle_kb_line
</UL>
<BR>[Called By]<UL><LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_EXTI_Callback
</UL>
<P><STRONG><a name="[39]"></a>idle_kb_line</STRONG> (Thumb, 16 bytes, Stack size 8 bytes, main.o(i.idle_kb_line))
<P><STRONG><a name="[71]"></a>idle_kb_line</STRONG> (Thumb, 30 bytes, Stack size 8 bytes, main.o(i.idle_kb_line))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = idle_kb_line
</UL>
<BR>[Calls]<UL><LI><a href="#[36]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
</UL>
<BR>[Called By]<UL><LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;handle_kb_en
<LI><a href="#[35]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_EXTI_Callback
</UL>
<P><STRONG><a name="[55]"></a>kb_buf_add</STRONG> (Thumb, 44 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_add))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = kb_buf_add
</UL>
<BR>[Calls]<UL><LI><a href="#[74]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_is_full
</UL>
<BR>[Called By]<UL><LI><a href="#[53]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
</UL>
<P><STRONG><a name="[75]"></a>kb_buf_init</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_init))
<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = kb_buf_init &rArr; malloc
</UL>
<BR>[Calls]<UL><LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_reset
<LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;malloc
<BR>[Calls]<UL><LI><a href="#[50]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[74]"></a>kb_buf_is_full</STRONG> (Thumb, 22 bytes, Stack size 0 bytes, helpers.o(i.kb_buf_is_full))
<BR><BR>[Called By]<UL><LI><a href="#[55]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_add
<P><STRONG><a name="[52]"></a>kb_buf_add</STRONG> (Thumb, 44 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_add))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = kb_buf_add
</UL>
<BR>[Calls]<UL><LI><a href="#[72]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_is_full
</UL>
<BR>[Called By]<UL><LI><a href="#[4f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
</UL>
<P><STRONG><a name="[79]"></a>kb_buf_peek</STRONG> (Thumb, 32 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_peek))
<P><STRONG><a name="[73]"></a>kb_buf_init</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_init))
<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = kb_buf_init &rArr; malloc
</UL>
<BR>[Calls]<UL><LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_reset
<LI><a href="#[74]">&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="[72]"></a>kb_buf_is_full</STRONG> (Thumb, 22 bytes, Stack size 0 bytes, helpers.o(i.kb_buf_is_full))
<BR><BR>[Called By]<UL><LI><a href="#[52]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_add
</UL>
<P><STRONG><a name="[77]"></a>kb_buf_peek</STRONG> (Thumb, 32 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_peek))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = kb_buf_peek
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[7a]"></a>kb_buf_pop</STRONG> (Thumb, 18 bytes, Stack size 0 bytes, helpers.o(i.kb_buf_pop))
<P><STRONG><a name="[78]"></a>kb_buf_pop</STRONG> (Thumb, 18 bytes, Stack size 0 bytes, helpers.o(i.kb_buf_pop))
<BR><BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[77]"></a>kb_buf_reset</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_reset))
<P><STRONG><a name="[75]"></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="#[30]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
</UL>
<BR>[Called By]<UL><LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
<BR>[Called By]<UL><LI><a href="#[73]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
</UL>
<P><STRONG><a name="[26]"></a>main</STRONG> (Thumb, 176 bytes, Stack size 0 bytes, main.o(i.main))
<P><STRONG><a name="[26]"></a>main</STRONG> (Thumb, 132 bytes, Stack size 0 bytes, main.o(i.main))
<BR><BR>[Stack]<UL><LI>Max Depth = 196<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="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TransmitReceive_IT
<LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
<LI><a href="#[36]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[7b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;check_active_keys
<LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART1_UART_Init
<LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM2_Init
<LI><a href="#[62]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_SPI1_Init
<LI><a href="#[61]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
<LI><a href="#[7a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_pop
<LI><a href="#[79]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_peek
<LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
<LI><a href="#[72]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us_init
<LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
<LI><a href="#[78]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
<BR>[Calls]<UL><LI><a href="#[53]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TransmitReceive_IT
<LI><a href="#[3b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
<LI><a href="#[50]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;idle_kb_line
<LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<LI><a href="#[62]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART1_UART_Init
<LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM2_Init
<LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_SPI1_Init
<LI><a href="#[5e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
<LI><a href="#[78]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_pop
<LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_peek
<LI><a href="#[73]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
<LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us_init
<LI><a href="#[6d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
<LI><a href="#[76]">&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="[76]"></a>malloc</STRONG> (Thumb, 92 bytes, Stack size 20 bytes, malloc.o(i.malloc))
<P><STRONG><a name="[74]"></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="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
<BR>[Called By]<UL><LI><a href="#[73]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
</UL>
<P><STRONG><a name="[71]"></a>micros</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, delay_us.o(i.micros))
<BR><BR>[Called By]<UL><LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
<P><STRONG><a name="[6e]"></a>micros</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, delay_us.o(i.micros))
<BR><BR>[Called By]<UL><LI><a href="#[6d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<P>
<H3>
Local Symbols
</H3>
<P><STRONG><a name="[61]"></a>MX_GPIO_Init</STRONG> (Thumb, 226 bytes, Stack size 48 bytes, main.o(i.MX_GPIO_Init))
<P><STRONG><a name="[5e]"></a>MX_GPIO_Init</STRONG> (Thumb, 226 bytes, Stack size 48 bytes, main.o(i.MX_GPIO_Init))
<BR><BR>[Stack]<UL><LI>Max Depth = 72<LI>Call Chain = MX_GPIO_Init &rArr; HAL_GPIO_Init
</UL>
<BR>[Calls]<UL><LI><a href="#[45]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
<LI><a href="#[52]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_EnableIRQ
<LI><a href="#[36]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[51]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_Init
<BR>[Calls]<UL><LI><a href="#[41]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
<LI><a href="#[4e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_EnableIRQ
<LI><a href="#[50]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[4d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_Init
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[62]"></a>MX_SPI1_Init</STRONG> (Thumb, 52 bytes, Stack size 8 bytes, main.o(i.MX_SPI1_Init))
<P><STRONG><a name="[5f]"></a>MX_SPI1_Init</STRONG> (Thumb, 52 bytes, Stack size 8 bytes, main.o(i.MX_SPI1_Init))
<BR><BR>[Stack]<UL><LI>Max Depth = 88<LI>Call Chain = MX_SPI1_Init &rArr; HAL_SPI_Init &rArr; HAL_SPI_MspInit &rArr; HAL_GPIO_Init
</UL>
<BR>[Calls]<UL><LI><a href="#[4f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_Init
<BR>[Calls]<UL><LI><a href="#[4b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_Init
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[63]"></a>MX_TIM2_Init</STRONG> (Thumb, 80 bytes, Stack size 32 bytes, main.o(i.MX_TIM2_Init))
<P><STRONG><a name="[60]"></a>MX_TIM2_Init</STRONG> (Thumb, 80 bytes, Stack size 32 bytes, main.o(i.MX_TIM2_Init))
<BR><BR>[Stack]<UL><LI>Max Depth = 68<LI>Call Chain = MX_TIM2_Init &rArr; HAL_TIM_ConfigClockSource &rArr; TIM_ETR_SetConfig
</UL>
<BR>[Calls]<UL><LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Init
<LI><a href="#[64]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIMEx_MasterConfigSynchronization
<BR>[Calls]<UL><LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
<LI><a href="#[56]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_Base_Init
<LI><a href="#[61]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIMEx_MasterConfigSynchronization
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[65]"></a>MX_USART1_UART_Init</STRONG> (Thumb, 46 bytes, Stack size 8 bytes, main.o(i.MX_USART1_UART_Init))
<P><STRONG><a name="[62]"></a>MX_USART1_UART_Init</STRONG> (Thumb, 46 bytes, Stack size 8 bytes, main.o(i.MX_USART1_UART_Init))
<BR><BR>[Stack]<UL><LI>Max Depth = 108<LI>Call Chain = MX_USART1_UART_Init &rArr; HAL_HalfDuplex_Init &rArr; UART_SetConfig &rArr; HAL_RCC_GetSysClockFreq &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[3a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_HalfDuplex_Init
<BR>[Calls]<UL><LI><a href="#[36]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_HalfDuplex_Init
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
@@ -785,39 +758,39 @@ Local Symbols
<P><STRONG><a name="[2a]"></a>SPI_2linesRxISR_16BIT</STRONG> (Thumb, 54 bytes, Stack size 8 bytes, stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_16BIT))
<BR><BR>[Stack]<UL><LI>Max Depth = 72<LI>Call Chain = SPI_2linesRxISR_16BIT &rArr; SPI_CloseRxTx_ISR &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
<BR>[Calls]<UL><LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
</UL>
<BR>[Address Reference Count : 1]<UL><LI> stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT)
</UL>
<P><STRONG><a name="[2c]"></a>SPI_2linesRxISR_8BIT</STRONG> (Thumb, 94 bytes, Stack size 8 bytes, stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_8BIT))
<BR><BR>[Stack]<UL><LI>Max Depth = 72<LI>Call Chain = SPI_2linesRxISR_8BIT &rArr; SPI_CloseRxTx_ISR &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
<BR>[Calls]<UL><LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
</UL>
<BR>[Address Reference Count : 1]<UL><LI> stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT)
</UL>
<P><STRONG><a name="[2b]"></a>SPI_2linesTxISR_16BIT</STRONG> (Thumb, 52 bytes, Stack size 8 bytes, stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_16BIT))
<BR><BR>[Stack]<UL><LI>Max Depth = 72<LI>Call Chain = SPI_2linesTxISR_16BIT &rArr; SPI_CloseRxTx_ISR &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
<BR>[Calls]<UL><LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
</UL>
<BR>[Address Reference Count : 1]<UL><LI> stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT)
</UL>
<P><STRONG><a name="[2d]"></a>SPI_2linesTxISR_8BIT</STRONG> (Thumb, 72 bytes, Stack size 8 bytes, stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_8BIT))
<BR><BR>[Stack]<UL><LI>Max Depth = 72<LI>Call Chain = SPI_2linesTxISR_8BIT &rArr; SPI_CloseRxTx_ISR &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
<BR>[Calls]<UL><LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
</UL>
<BR>[Address Reference Count : 1]<UL><LI> stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT)
</UL>
<P><STRONG><a name="[66]"></a>SPI_CloseRxTx_ISR</STRONG> (Thumb, 82 bytes, Stack size 16 bytes, stm32f0xx_hal_spi.o(i.SPI_CloseRxTx_ISR))
<P><STRONG><a name="[63]"></a>SPI_CloseRxTx_ISR</STRONG> (Thumb, 82 bytes, Stack size 16 bytes, stm32f0xx_hal_spi.o(i.SPI_CloseRxTx_ISR))
<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = SPI_CloseRxTx_ISR &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[67]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_EndRxTxTransaction
<LI><a href="#[53]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
<LI><a href="#[68]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_RxCpltCallback
<LI><a href="#[4e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_ErrorCallback
<LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<BR>[Calls]<UL><LI><a href="#[64]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_EndRxTxTransaction
<LI><a href="#[4f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
<LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_RxCpltCallback
<LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_ErrorCallback
<LI><a href="#[44]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
</UL>
<BR>[Called By]<UL><LI><a href="#[2d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_2linesTxISR_8BIT
<LI><a href="#[2b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_2linesTxISR_16BIT
@@ -828,54 +801,54 @@ Local Symbols
<P><STRONG><a name="[29]"></a>SPI_DMAAbortOnError</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, stm32f0xx_hal_spi.o(i.SPI_DMAAbortOnError))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = SPI_DMAAbortOnError
</UL>
<BR>[Calls]<UL><LI><a href="#[4e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_ErrorCallback
<BR>[Calls]<UL><LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_ErrorCallback
</UL>
<BR>[Address Reference Count : 1]<UL><LI> stm32f0xx_hal_spi.o(i.HAL_SPI_IRQHandler)
</UL>
<P><STRONG><a name="[67]"></a>SPI_EndRxTxTransaction</STRONG> (Thumb, 76 bytes, Stack size 24 bytes, stm32f0xx_hal_spi.o(i.SPI_EndRxTxTransaction))
<P><STRONG><a name="[64]"></a>SPI_EndRxTxTransaction</STRONG> (Thumb, 76 bytes, Stack size 24 bytes, stm32f0xx_hal_spi.o(i.SPI_EndRxTxTransaction))
<BR><BR>[Stack]<UL><LI>Max Depth = 48<LI>Call Chain = SPI_EndRxTxTransaction &rArr; SPI_WaitFlagStateUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_WaitFlagStateUntilTimeout
<LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_WaitFifoStateUntilTimeout
<BR>[Calls]<UL><LI><a href="#[67]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_WaitFlagStateUntilTimeout
<LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_WaitFifoStateUntilTimeout
</UL>
<BR>[Called By]<UL><LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
<BR>[Called By]<UL><LI><a href="#[63]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
</UL>
<P><STRONG><a name="[69]"></a>SPI_WaitFifoStateUntilTimeout</STRONG> (Thumb, 150 bytes, Stack size 24 bytes, stm32f0xx_hal_spi.o(i.SPI_WaitFifoStateUntilTimeout))
<P><STRONG><a name="[66]"></a>SPI_WaitFifoStateUntilTimeout</STRONG> (Thumb, 150 bytes, Stack size 24 bytes, stm32f0xx_hal_spi.o(i.SPI_WaitFifoStateUntilTimeout))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = SPI_WaitFifoStateUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<BR>[Calls]<UL><LI><a href="#[44]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
</UL>
<BR>[Called By]<UL><LI><a href="#[67]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_EndRxTxTransaction
<BR>[Called By]<UL><LI><a href="#[64]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_EndRxTxTransaction
</UL>
<P><STRONG><a name="[6a]"></a>SPI_WaitFlagStateUntilTimeout</STRONG> (Thumb, 140 bytes, Stack size 24 bytes, stm32f0xx_hal_spi.o(i.SPI_WaitFlagStateUntilTimeout))
<P><STRONG><a name="[67]"></a>SPI_WaitFlagStateUntilTimeout</STRONG> (Thumb, 140 bytes, Stack size 24 bytes, stm32f0xx_hal_spi.o(i.SPI_WaitFlagStateUntilTimeout))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = SPI_WaitFlagStateUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[48]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<BR>[Calls]<UL><LI><a href="#[44]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
</UL>
<BR>[Called By]<UL><LI><a href="#[67]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_EndRxTxTransaction
<BR>[Called By]<UL><LI><a href="#[64]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_EndRxTxTransaction
</UL>
<P><STRONG><a name="[60]"></a>TIM_ITRx_SetConfig</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, stm32f0xx_hal_tim.o(i.TIM_ITRx_SetConfig))
<BR><BR>[Called By]<UL><LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
<P><STRONG><a name="[5d]"></a>TIM_ITRx_SetConfig</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, stm32f0xx_hal_tim.o(i.TIM_ITRx_SetConfig))
<BR><BR>[Called By]<UL><LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
</UL>
<P><STRONG><a name="[5e]"></a>TIM_TI1_ConfigInputStage</STRONG> (Thumb, 34 bytes, Stack size 12 bytes, stm32f0xx_hal_tim.o(i.TIM_TI1_ConfigInputStage))
<P><STRONG><a name="[5b]"></a>TIM_TI1_ConfigInputStage</STRONG> (Thumb, 34 bytes, Stack size 12 bytes, stm32f0xx_hal_tim.o(i.TIM_TI1_ConfigInputStage))
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = TIM_TI1_ConfigInputStage
</UL>
<BR>[Called By]<UL><LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
<BR>[Called By]<UL><LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
</UL>
<P><STRONG><a name="[5f]"></a>TIM_TI2_ConfigInputStage</STRONG> (Thumb, 38 bytes, Stack size 12 bytes, stm32f0xx_hal_tim.o(i.TIM_TI2_ConfigInputStage))
<P><STRONG><a name="[5c]"></a>TIM_TI2_ConfigInputStage</STRONG> (Thumb, 38 bytes, Stack size 12 bytes, stm32f0xx_hal_tim.o(i.TIM_TI2_ConfigInputStage))
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = TIM_TI2_ConfigInputStage
</UL>
<BR>[Called By]<UL><LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
<BR>[Called By]<UL><LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
</UL>
<P><STRONG><a name="[46]"></a>NVIC_SetPriority</STRONG> (Thumb, 60 bytes, Stack size 0 bytes, stm32f0xx_hal_cortex.o(i.NVIC_SetPriority))
<BR><BR>[Called By]<UL><LI><a href="#[44]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SYSTICK_Config
<LI><a href="#[45]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
<P><STRONG><a name="[42]"></a>NVIC_SetPriority</STRONG> (Thumb, 60 bytes, Stack size 0 bytes, stm32f0xx_hal_cortex.o(i.NVIC_SetPriority))
<BR><BR>[Called By]<UL><LI><a href="#[40]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SYSTICK_Config
<LI><a href="#[41]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SetPriority
</UL>
<P>
<H3>

View File

@@ -32,10 +32,7 @@ Section Cross References
helpers.o(i.mouse_buf_init) refers to malloc.o(i.malloc) for malloc
helpers.o(i.mouse_buf_init) refers to helpers.o(i.mouse_buf_reset) for mouse_buf_reset
helpers.o(i.mouse_buf_reset) refers to memseta.o(.text) for __aeabi_memclr4
main.o(i.HAL_GPIO_EXTI_Callback) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin
main.o(i.HAL_GPIO_EXTI_Callback) refers to main.o(i.handle_kb_en) for handle_kb_en
main.o(i.HAL_GPIO_EXTI_Callback) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin) for HAL_GPIO_ReadPin
main.o(i.HAL_GPIO_EXTI_Callback) refers to main.o(i.idle_kb_line) for idle_kb_line
main.o(i.HAL_GPIO_EXTI_Callback) refers to main.o(.data) for .data
main.o(i.HAL_SPI_TxRxCpltCallback) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin
main.o(i.HAL_SPI_TxRxCpltCallback) refers to memcpya.o(.text) for __aeabi_memcpy4
main.o(i.HAL_SPI_TxRxCpltCallback) refers to helpers.o(i.kb_buf_add) for kb_buf_add
@@ -65,9 +62,6 @@ Section Cross References
main.o(i.check_active_keys) refers to main.o(.bss) for .bss
main.o(i.fputc) refers to stm32f0xx_hal_uart.o(i.HAL_UART_Transmit) for HAL_UART_Transmit
main.o(i.fputc) refers to main.o(.bss) for .bss
main.o(i.handle_kb_en) refers to main.o(i.idle_kb_line) for idle_kb_line
main.o(i.handle_kb_en) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin
main.o(i.handle_kb_en) refers to main.o(.data) for .data
main.o(i.idle_kb_line) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin
main.o(i.main) refers to stm32f0xx_hal.o(i.HAL_Init) for HAL_Init
main.o(i.main) refers to main.o(i.SystemClock_Config) for SystemClock_Config
@@ -77,13 +71,13 @@ Section Cross References
main.o(i.main) refers to main.o(i.MX_TIM2_Init) for MX_TIM2_Init
main.o(i.main) refers to helpers.o(i.kb_buf_init) for kb_buf_init
main.o(i.main) refers to delay_us.o(i.delay_us_init) for delay_us_init
main.o(i.main) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin
main.o(i.main) refers to main.o(i.idle_kb_line) for idle_kb_line
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 helpers.o(i.kb_buf_peek) for kb_buf_peek
main.o(i.main) refers to helpers.o(i.kb_buf_pop) for kb_buf_pop
main.o(i.main) refers to main.o(i.check_active_keys) for check_active_keys
main.o(i.main) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin
main.o(i.main) refers to delay_us.o(i.delay_us) for delay_us
main.o(i.main) refers to helpers.o(i.kb_buf_pop) for kb_buf_pop
main.o(i.main) refers to main.o(.bss) for .bss
main.o(i.main) refers to main.o(.data) for .data
stm32f0xx_it.o(i.EXTI2_3_IRQHandler) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_EXTI_IRQHandler) for HAL_GPIO_EXTI_IRQHandler
@@ -801,6 +795,7 @@ Removing Unused input sections from the image.
Removing main.o(.rev16_text), (4 bytes).
Removing main.o(.revsh_text), (4 bytes).
Removing main.o(i._Error_Handler), (2 bytes).
Removing main.o(i.check_active_keys), (28 bytes).
Removing main.o(i.fputc), (24 bytes).
Removing main.o(.constdata), (1 bytes).
Removing main.o(.constdata), (1 bytes).
@@ -809,6 +804,8 @@ Removing Unused input sections from the image.
Removing main.o(.data), (1 bytes).
Removing main.o(.data), (8 bytes).
Removing main.o(.data), (8 bytes).
Removing main.o(.data), (1 bytes).
Removing main.o(.data), (4 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).
@@ -1194,6 +1191,7 @@ Removing Unused input sections from the image.
Removing stm32f0xx_hal_gpio.o(i.HAL_GPIO_DeInit), (228 bytes).
Removing stm32f0xx_hal_gpio.o(i.HAL_GPIO_EXTI_Callback), (2 bytes).
Removing stm32f0xx_hal_gpio.o(i.HAL_GPIO_LockPin), (36 bytes).
Removing stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin), (10 bytes).
Removing stm32f0xx_hal_gpio.o(i.HAL_GPIO_TogglePin), (8 bytes).
Removing stm32f0xx_hal_dma.o(.rev16_text), (4 bytes).
Removing stm32f0xx_hal_dma.o(.revsh_text), (4 bytes).
@@ -1279,7 +1277,7 @@ Removing Unused input sections from the image.
Removing system_stm32f0xx.o(i.SystemCoreClockUpdate), (112 bytes).
Removing stm32f0xx_hal_tim.o(i.__ARM_common_switch8), (26 bytes).
499 unused section(s) (total 34571 bytes) removed from the image.
503 unused section(s) (total 34614 bytes) removed from the image.
==============================================================================
@@ -1312,24 +1310,24 @@ Image Symbol Table
../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/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE
../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloc.o ABSOLUTE
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocr.o ABSOLUTE
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloca.o ABSOLUTE
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocra.o ABSOLUTE
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloca.o ABSOLUTE
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocr.o ABSOLUTE
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloc.o ABSOLUTE
../clib/microlib/malloc/mvars.c 0x00000000 Number 0 mvars.o ABSOLUTE
../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE
../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE
@@ -1383,10 +1381,9 @@ Image Symbol Table
i.EXTI2_3_IRQHandler 0x08000188 Section 0 stm32f0xx_it.o(i.EXTI2_3_IRQHandler)
i.HAL_DMA_Abort_IT 0x08000192 Section 0 stm32f0xx_hal_dma.o(i.HAL_DMA_Abort_IT)
i.HAL_GPIO_EXTI_Callback 0x080001dc Section 0 main.o(i.HAL_GPIO_EXTI_Callback)
i.HAL_GPIO_EXTI_IRQHandler 0x08000218 Section 0 stm32f0xx_hal_gpio.o(i.HAL_GPIO_EXTI_IRQHandler)
i.HAL_GPIO_Init 0x08000230 Section 0 stm32f0xx_hal_gpio.o(i.HAL_GPIO_Init)
i.HAL_GPIO_ReadPin 0x08000388 Section 0 stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin)
i.HAL_GPIO_WritePin 0x08000392 Section 0 stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin)
i.HAL_GPIO_EXTI_IRQHandler 0x08000224 Section 0 stm32f0xx_hal_gpio.o(i.HAL_GPIO_EXTI_IRQHandler)
i.HAL_GPIO_Init 0x0800023c Section 0 stm32f0xx_hal_gpio.o(i.HAL_GPIO_Init)
i.HAL_GPIO_WritePin 0x08000394 Section 0 stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin)
i.HAL_GetTick 0x080003a0 Section 0 stm32f0xx_hal.o(i.HAL_GetTick)
i.HAL_HalfDuplex_Init 0x080003ac Section 0 stm32f0xx_hal_uart.o(i.HAL_HalfDuplex_Init)
i.HAL_IncTick 0x08000424 Section 0 stm32f0xx_hal.o(i.HAL_IncTick)
@@ -1469,22 +1466,20 @@ Image Symbol Table
i.__scatterload_copy 0x08001b16 Section 14 handlers.o(i.__scatterload_copy)
i.__scatterload_null 0x08001b24 Section 2 handlers.o(i.__scatterload_null)
i.__scatterload_zeroinit 0x08001b26 Section 14 handlers.o(i.__scatterload_zeroinit)
i.check_active_keys 0x08001b34 Section 0 main.o(i.check_active_keys)
i.delay_us 0x08001b50 Section 0 delay_us.o(i.delay_us)
i.delay_us_init 0x08001b64 Section 0 delay_us.o(i.delay_us_init)
i.handle_kb_en 0x08001b74 Section 0 main.o(i.handle_kb_en)
i.idle_kb_line 0x08001bbc Section 0 main.o(i.idle_kb_line)
i.kb_buf_add 0x08001bd0 Section 0 helpers.o(i.kb_buf_add)
i.kb_buf_init 0x08001bfc Section 0 helpers.o(i.kb_buf_init)
i.kb_buf_is_full 0x08001c18 Section 0 helpers.o(i.kb_buf_is_full)
i.kb_buf_peek 0x08001c2e Section 0 helpers.o(i.kb_buf_peek)
i.kb_buf_pop 0x08001c4e Section 0 helpers.o(i.kb_buf_pop)
i.kb_buf_reset 0x08001c60 Section 0 helpers.o(i.kb_buf_reset)
i.main 0x08001c7c Section 0 main.o(i.main)
i.malloc 0x08001d40 Section 0 malloc.o(i.malloc)
i.micros 0x08001dac Section 0 delay_us.o(i.micros)
.constdata 0x08001dbc Section 16 system_stm32f0xx.o(.constdata)
.constdata 0x08001dcc Section 8 system_stm32f0xx.o(.constdata)
i.delay_us 0x08001b34 Section 0 delay_us.o(i.delay_us)
i.delay_us_init 0x08001b48 Section 0 delay_us.o(i.delay_us_init)
i.idle_kb_line 0x08001b58 Section 0 main.o(i.idle_kb_line)
i.kb_buf_add 0x08001b7c Section 0 helpers.o(i.kb_buf_add)
i.kb_buf_init 0x08001ba8 Section 0 helpers.o(i.kb_buf_init)
i.kb_buf_is_full 0x08001bc4 Section 0 helpers.o(i.kb_buf_is_full)
i.kb_buf_peek 0x08001bda Section 0 helpers.o(i.kb_buf_peek)
i.kb_buf_pop 0x08001bfa Section 0 helpers.o(i.kb_buf_pop)
i.kb_buf_reset 0x08001c0c Section 0 helpers.o(i.kb_buf_reset)
i.main 0x08001c28 Section 0 main.o(i.main)
i.malloc 0x08001cbc Section 0 malloc.o(i.malloc)
i.micros 0x08001d28 Section 0 delay_us.o(i.micros)
.constdata 0x08001d38 Section 16 system_stm32f0xx.o(.constdata)
.constdata 0x08001d48 Section 8 system_stm32f0xx.o(.constdata)
.data 0x20000000 Section 4 delay_us.o(.data)
.data 0x20000004 Section 12 main.o(.data)
.data 0x20000010 Section 4 stm32f0xx_hal.o(.data)
@@ -1565,11 +1560,10 @@ Image Symbol Table
__scatterload_rt2 0x08000165 Thumb Code 0 init.o(.text)
EXTI2_3_IRQHandler 0x08000189 Thumb Code 10 stm32f0xx_it.o(i.EXTI2_3_IRQHandler)
HAL_DMA_Abort_IT 0x08000193 Thumb Code 72 stm32f0xx_hal_dma.o(i.HAL_DMA_Abort_IT)
HAL_GPIO_EXTI_Callback 0x080001dd Thumb Code 54 main.o(i.HAL_GPIO_EXTI_Callback)
HAL_GPIO_EXTI_IRQHandler 0x08000219 Thumb Code 18 stm32f0xx_hal_gpio.o(i.HAL_GPIO_EXTI_IRQHandler)
HAL_GPIO_Init 0x08000231 Thumb Code 314 stm32f0xx_hal_gpio.o(i.HAL_GPIO_Init)
HAL_GPIO_ReadPin 0x08000389 Thumb Code 10 stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin)
HAL_GPIO_WritePin 0x08000393 Thumb Code 12 stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin)
HAL_GPIO_EXTI_Callback 0x080001dd Thumb Code 62 main.o(i.HAL_GPIO_EXTI_Callback)
HAL_GPIO_EXTI_IRQHandler 0x08000225 Thumb Code 18 stm32f0xx_hal_gpio.o(i.HAL_GPIO_EXTI_IRQHandler)
HAL_GPIO_Init 0x0800023d Thumb Code 314 stm32f0xx_hal_gpio.o(i.HAL_GPIO_Init)
HAL_GPIO_WritePin 0x08000395 Thumb Code 12 stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin)
HAL_GetTick 0x080003a1 Thumb Code 6 stm32f0xx_hal.o(i.HAL_GetTick)
HAL_HalfDuplex_Init 0x080003ad Thumb Code 118 stm32f0xx_hal_uart.o(i.HAL_HalfDuplex_Init)
HAL_IncTick 0x08000425 Thumb Code 10 stm32f0xx_hal.o(i.HAL_IncTick)
@@ -1618,31 +1612,28 @@ Image Symbol Table
__scatterload_copy 0x08001b17 Thumb Code 14 handlers.o(i.__scatterload_copy)
__scatterload_null 0x08001b25 Thumb Code 2 handlers.o(i.__scatterload_null)
__scatterload_zeroinit 0x08001b27 Thumb Code 14 handlers.o(i.__scatterload_zeroinit)
check_active_keys 0x08001b35 Thumb Code 24 main.o(i.check_active_keys)
delay_us 0x08001b51 Thumb Code 20 delay_us.o(i.delay_us)
delay_us_init 0x08001b65 Thumb Code 12 delay_us.o(i.delay_us_init)
handle_kb_en 0x08001b75 Thumb Code 64 main.o(i.handle_kb_en)
idle_kb_line 0x08001bbd Thumb Code 16 main.o(i.idle_kb_line)
kb_buf_add 0x08001bd1 Thumb Code 44 helpers.o(i.kb_buf_add)
kb_buf_init 0x08001bfd Thumb Code 28 helpers.o(i.kb_buf_init)
kb_buf_is_full 0x08001c19 Thumb Code 22 helpers.o(i.kb_buf_is_full)
kb_buf_peek 0x08001c2f Thumb Code 32 helpers.o(i.kb_buf_peek)
kb_buf_pop 0x08001c4f Thumb Code 18 helpers.o(i.kb_buf_pop)
kb_buf_reset 0x08001c61 Thumb Code 28 helpers.o(i.kb_buf_reset)
main 0x08001c7d Thumb Code 176 main.o(i.main)
malloc 0x08001d41 Thumb Code 92 malloc.o(i.malloc)
micros 0x08001dad Thumb Code 10 delay_us.o(i.micros)
AHBPrescTable 0x08001dbc Data 16 system_stm32f0xx.o(.constdata)
APBPrescTable 0x08001dcc Data 8 system_stm32f0xx.o(.constdata)
Region$$Table$$Base 0x08001dd4 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x08001df4 Number 0 anon$$obj.o(Region$$Table)
delay_us 0x08001b35 Thumb Code 20 delay_us.o(i.delay_us)
delay_us_init 0x08001b49 Thumb Code 12 delay_us.o(i.delay_us_init)
idle_kb_line 0x08001b59 Thumb Code 30 main.o(i.idle_kb_line)
kb_buf_add 0x08001b7d Thumb Code 44 helpers.o(i.kb_buf_add)
kb_buf_init 0x08001ba9 Thumb Code 28 helpers.o(i.kb_buf_init)
kb_buf_is_full 0x08001bc5 Thumb Code 22 helpers.o(i.kb_buf_is_full)
kb_buf_peek 0x08001bdb Thumb Code 32 helpers.o(i.kb_buf_peek)
kb_buf_pop 0x08001bfb Thumb Code 18 helpers.o(i.kb_buf_pop)
kb_buf_reset 0x08001c0d Thumb Code 28 helpers.o(i.kb_buf_reset)
main 0x08001c29 Thumb Code 132 main.o(i.main)
malloc 0x08001cbd Thumb Code 92 malloc.o(i.malloc)
micros 0x08001d29 Thumb Code 10 delay_us.o(i.micros)
AHBPrescTable 0x08001d38 Data 16 system_stm32f0xx.o(.constdata)
APBPrescTable 0x08001d48 Data 8 system_stm32f0xx.o(.constdata)
Region$$Table$$Base 0x08001d50 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x08001d70 Number 0 anon$$obj.o(Region$$Table)
us_timer 0x20000000 Data 4 delay_us.o(.data)
spi_error_occured 0x20000004 Data 1 main.o(.data)
buffered_code 0x20000005 Data 1 main.o(.data)
buffered_value 0x20000006 Data 1 main.o(.data)
kb_row 0x20000007 Data 1 main.o(.data)
kb_col 0x20000008 Data 1 main.o(.data)
has_active_keys 0x20000009 Data 1 main.o(.data)
kb_data 0x2000000c Data 4 main.o(.data)
uwTick 0x20000010 Data 4 stm32f0xx_hal.o(.data)
SystemCoreClock 0x20000014 Data 4 system_stm32f0xx.o(.data)
@@ -1668,141 +1659,137 @@ Memory Map of the image
Image Entry point : 0x080000c1
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00001e14, Max: 0x00010000, ABSOLUTE)
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00001d90, Max: 0x00010000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00001df4, Max: 0x00010000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00001d70, 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 3546 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
0x080000c0 0x080000c0 0x00000004 Code RO 3587 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
0x080000c4 0x080000c4 0x00000004 Code RO 3590 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
0x080000c8 0x080000c8 0x00000000 Code RO 3592 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
0x080000c8 0x080000c8 0x00000000 Code RO 3594 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
0x080000c8 0x080000c8 0x00000008 Code RO 3595 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
0x080000d0 0x080000d0 0x00000000 Code RO 3597 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
0x080000d0 0x080000d0 0x00000000 Code RO 3599 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
0x080000d0 0x080000d0 0x00000004 Code RO 3588 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
0x080000c0 0x080000c0 0x00000000 Code RO 3543 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
0x080000c0 0x080000c0 0x00000004 Code RO 3584 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
0x080000c4 0x080000c4 0x00000004 Code RO 3587 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
0x080000c8 0x080000c8 0x00000000 Code RO 3589 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
0x080000c8 0x080000c8 0x00000000 Code RO 3591 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
0x080000c8 0x080000c8 0x00000008 Code RO 3592 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
0x080000d0 0x080000d0 0x00000000 Code RO 3594 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
0x080000d0 0x080000d0 0x00000000 Code RO 3596 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
0x080000d0 0x080000d0 0x00000004 Code RO 3585 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
0x080000d4 0x080000d4 0x0000001c Code RO 4 .text startup_stm32f072xb.o
0x080000f0 0x080000f0 0x0000002c Code RO 3549 .text mc_p.l(uidiv.o)
0x0800011c 0x0800011c 0x00000024 Code RO 3553 .text mc_p.l(memcpya.o)
0x08000140 0x08000140 0x00000024 Code RO 3555 .text mc_p.l(memseta.o)
0x08000164 0x08000164 0x00000024 Code RO 3603 .text mc_p.l(init.o)
0x08000188 0x08000188 0x0000000a Code RO 398 i.EXTI2_3_IRQHandler stm32f0xx_it.o
0x08000192 0x08000192 0x00000048 Code RO 2993 i.HAL_DMA_Abort_IT stm32f0xx_hal_dma.o
0x080000f0 0x080000f0 0x0000002c Code RO 3546 .text mc_p.l(uidiv.o)
0x0800011c 0x0800011c 0x00000024 Code RO 3550 .text mc_p.l(memcpya.o)
0x08000140 0x08000140 0x00000024 Code RO 3552 .text mc_p.l(memseta.o)
0x08000164 0x08000164 0x00000024 Code RO 3600 .text mc_p.l(init.o)
0x08000188 0x08000188 0x0000000a Code RO 395 i.EXTI2_3_IRQHandler stm32f0xx_it.o
0x08000192 0x08000192 0x00000048 Code RO 2990 i.HAL_DMA_Abort_IT stm32f0xx_hal_dma.o
0x080001da 0x080001da 0x00000002 PAD
0x080001dc 0x080001dc 0x0000003c Code RO 297 i.HAL_GPIO_EXTI_Callback main.o
0x08000218 0x08000218 0x00000018 Code RO 2930 i.HAL_GPIO_EXTI_IRQHandler stm32f0xx_hal_gpio.o
0x08000230 0x08000230 0x00000158 Code RO 2931 i.HAL_GPIO_Init stm32f0xx_hal_gpio.o
0x08000388 0x08000388 0x0000000a Code RO 2933 i.HAL_GPIO_ReadPin stm32f0xx_hal_gpio.o
0x08000392 0x08000392 0x0000000c Code RO 2935 i.HAL_GPIO_WritePin stm32f0xx_hal_gpio.o
0x0800039e 0x0800039e 0x00000002 PAD
0x080003a0 0x080003a0 0x0000000c Code RO 2326 i.HAL_GetTick stm32f0xx_hal.o
0x080003ac 0x080003ac 0x00000076 Code RO 1741 i.HAL_HalfDuplex_Init stm32f0xx_hal_uart.o
0x080001dc 0x080001dc 0x00000048 Code RO 297 i.HAL_GPIO_EXTI_Callback main.o
0x08000224 0x08000224 0x00000018 Code RO 2927 i.HAL_GPIO_EXTI_IRQHandler stm32f0xx_hal_gpio.o
0x0800023c 0x0800023c 0x00000158 Code RO 2928 i.HAL_GPIO_Init stm32f0xx_hal_gpio.o
0x08000394 0x08000394 0x0000000c Code RO 2932 i.HAL_GPIO_WritePin stm32f0xx_hal_gpio.o
0x080003a0 0x080003a0 0x0000000c Code RO 2323 i.HAL_GetTick stm32f0xx_hal.o
0x080003ac 0x080003ac 0x00000076 Code RO 1738 i.HAL_HalfDuplex_Init stm32f0xx_hal_uart.o
0x08000422 0x08000422 0x00000002 PAD
0x08000424 0x08000424 0x00000010 Code RO 2330 i.HAL_IncTick stm32f0xx_hal.o
0x08000434 0x08000434 0x00000020 Code RO 2331 i.HAL_Init stm32f0xx_hal.o
0x08000454 0x08000454 0x00000022 Code RO 2332 i.HAL_InitTick stm32f0xx_hal.o
0x08000424 0x08000424 0x00000010 Code RO 2327 i.HAL_IncTick stm32f0xx_hal.o
0x08000434 0x08000434 0x00000020 Code RO 2328 i.HAL_Init stm32f0xx_hal.o
0x08000454 0x08000454 0x00000022 Code RO 2329 i.HAL_InitTick stm32f0xx_hal.o
0x08000476 0x08000476 0x00000002 PAD
0x08000478 0x08000478 0x00000044 Code RO 458 i.HAL_MspInit stm32f0xx_hal_msp.o
0x080004bc 0x080004bc 0x00000014 Code RO 3088 i.HAL_NVIC_EnableIRQ stm32f0xx_hal_cortex.o
0x080004d0 0x080004d0 0x00000008 Code RO 3092 i.HAL_NVIC_SetPriority stm32f0xx_hal_cortex.o
0x080004d8 0x080004d8 0x00000120 Code RO 2242 i.HAL_RCCEx_PeriphCLKConfig stm32f0xx_hal_rcc_ex.o
0x080005f8 0x080005f8 0x00000154 Code RO 2140 i.HAL_RCC_ClockConfig stm32f0xx_hal_rcc.o
0x0800074c 0x0800074c 0x0000000c Code RO 2145 i.HAL_RCC_GetHCLKFreq stm32f0xx_hal_rcc.o
0x08000758 0x08000758 0x00000020 Code RO 2147 i.HAL_RCC_GetPCLK1Freq stm32f0xx_hal_rcc.o
0x08000778 0x08000778 0x00000088 Code RO 2148 i.HAL_RCC_GetSysClockFreq stm32f0xx_hal_rcc.o
0x08000800 0x08000800 0x000003d8 Code RO 2151 i.HAL_RCC_OscConfig stm32f0xx_hal_rcc.o
0x08000bd8 0x08000bd8 0x00000002 Code RO 521 i.HAL_SPI_ErrorCallback stm32f0xx_hal_spi.o
0x08000478 0x08000478 0x00000044 Code RO 455 i.HAL_MspInit stm32f0xx_hal_msp.o
0x080004bc 0x080004bc 0x00000014 Code RO 3085 i.HAL_NVIC_EnableIRQ stm32f0xx_hal_cortex.o
0x080004d0 0x080004d0 0x00000008 Code RO 3089 i.HAL_NVIC_SetPriority stm32f0xx_hal_cortex.o
0x080004d8 0x080004d8 0x00000120 Code RO 2239 i.HAL_RCCEx_PeriphCLKConfig stm32f0xx_hal_rcc_ex.o
0x080005f8 0x080005f8 0x00000154 Code RO 2137 i.HAL_RCC_ClockConfig stm32f0xx_hal_rcc.o
0x0800074c 0x0800074c 0x0000000c Code RO 2142 i.HAL_RCC_GetHCLKFreq stm32f0xx_hal_rcc.o
0x08000758 0x08000758 0x00000020 Code RO 2144 i.HAL_RCC_GetPCLK1Freq stm32f0xx_hal_rcc.o
0x08000778 0x08000778 0x00000088 Code RO 2145 i.HAL_RCC_GetSysClockFreq stm32f0xx_hal_rcc.o
0x08000800 0x08000800 0x000003d8 Code RO 2148 i.HAL_RCC_OscConfig stm32f0xx_hal_rcc.o
0x08000bd8 0x08000bd8 0x00000002 Code RO 518 i.HAL_SPI_ErrorCallback stm32f0xx_hal_spi.o
0x08000bda 0x08000bda 0x00000002 PAD
0x08000bdc 0x08000bdc 0x000000d4 Code RO 524 i.HAL_SPI_IRQHandler stm32f0xx_hal_spi.o
0x08000cb0 0x08000cb0 0x000000b8 Code RO 525 i.HAL_SPI_Init stm32f0xx_hal_spi.o
0x08000d68 0x08000d68 0x00000054 Code RO 460 i.HAL_SPI_MspInit stm32f0xx_hal_msp.o
0x08000dbc 0x08000dbc 0x00000002 Code RO 531 i.HAL_SPI_RxCpltCallback stm32f0xx_hal_spi.o
0x08000bdc 0x08000bdc 0x000000d4 Code RO 521 i.HAL_SPI_IRQHandler stm32f0xx_hal_spi.o
0x08000cb0 0x08000cb0 0x000000b8 Code RO 522 i.HAL_SPI_Init stm32f0xx_hal_spi.o
0x08000d68 0x08000d68 0x00000054 Code RO 457 i.HAL_SPI_MspInit stm32f0xx_hal_msp.o
0x08000dbc 0x08000dbc 0x00000002 Code RO 528 i.HAL_SPI_RxCpltCallback stm32f0xx_hal_spi.o
0x08000dbe 0x08000dbe 0x00000002 PAD
0x08000dc0 0x08000dc0 0x000000d4 Code RO 536 i.HAL_SPI_TransmitReceive_IT stm32f0xx_hal_spi.o
0x08000dc0 0x08000dc0 0x000000d4 Code RO 533 i.HAL_SPI_TransmitReceive_IT stm32f0xx_hal_spi.o
0x08000e94 0x08000e94 0x00000068 Code RO 298 i.HAL_SPI_TxRxCpltCallback main.o
0x08000efc 0x08000efc 0x00000018 Code RO 3094 i.HAL_SYSTICK_CLKSourceConfig stm32f0xx_hal_cortex.o
0x08000f14 0x08000f14 0x00000002 Code RO 3095 i.HAL_SYSTICK_Callback stm32f0xx_hal_cortex.o
0x08000efc 0x08000efc 0x00000018 Code RO 3091 i.HAL_SYSTICK_CLKSourceConfig stm32f0xx_hal_cortex.o
0x08000f14 0x08000f14 0x00000002 Code RO 3092 i.HAL_SYSTICK_Callback stm32f0xx_hal_cortex.o
0x08000f16 0x08000f16 0x00000002 PAD
0x08000f18 0x08000f18 0x00000030 Code RO 3096 i.HAL_SYSTICK_Config stm32f0xx_hal_cortex.o
0x08000f48 0x08000f48 0x00000008 Code RO 3097 i.HAL_SYSTICK_IRQHandler stm32f0xx_hal_cortex.o
0x08000f50 0x08000f50 0x00000048 Code RO 1515 i.HAL_TIMEx_MasterConfigSynchronization stm32f0xx_hal_tim_ex.o
0x08000f98 0x08000f98 0x00000034 Code RO 859 i.HAL_TIM_Base_Init stm32f0xx_hal_tim.o
0x08000fcc 0x08000fcc 0x00000024 Code RO 462 i.HAL_TIM_Base_MspInit stm32f0xx_hal_msp.o
0x08000ff0 0x08000ff0 0x00000018 Code RO 862 i.HAL_TIM_Base_Start stm32f0xx_hal_tim.o
0x08001008 0x08001008 0x000000ee Code RO 868 i.HAL_TIM_ConfigClockSource stm32f0xx_hal_tim.o
0x08000f18 0x08000f18 0x00000030 Code RO 3093 i.HAL_SYSTICK_Config stm32f0xx_hal_cortex.o
0x08000f48 0x08000f48 0x00000008 Code RO 3094 i.HAL_SYSTICK_IRQHandler stm32f0xx_hal_cortex.o
0x08000f50 0x08000f50 0x00000048 Code RO 1512 i.HAL_TIMEx_MasterConfigSynchronization stm32f0xx_hal_tim_ex.o
0x08000f98 0x08000f98 0x00000034 Code RO 856 i.HAL_TIM_Base_Init stm32f0xx_hal_tim.o
0x08000fcc 0x08000fcc 0x00000024 Code RO 459 i.HAL_TIM_Base_MspInit stm32f0xx_hal_msp.o
0x08000ff0 0x08000ff0 0x00000018 Code RO 859 i.HAL_TIM_Base_Start stm32f0xx_hal_tim.o
0x08001008 0x08001008 0x000000ee Code RO 865 i.HAL_TIM_ConfigClockSource stm32f0xx_hal_tim.o
0x080010f6 0x080010f6 0x00000002 PAD
0x080010f8 0x080010f8 0x00000048 Code RO 464 i.HAL_UART_MspInit stm32f0xx_hal_msp.o
0x08001140 0x08001140 0x00000002 Code RO 399 i.HardFault_Handler stm32f0xx_it.o
0x080010f8 0x080010f8 0x00000048 Code RO 461 i.HAL_UART_MspInit stm32f0xx_hal_msp.o
0x08001140 0x08001140 0x00000002 Code RO 396 i.HardFault_Handler stm32f0xx_it.o
0x08001142 0x08001142 0x00000002 PAD
0x08001144 0x08001144 0x000000f8 Code RO 299 i.MX_GPIO_Init main.o
0x0800123c 0x0800123c 0x0000003c Code RO 300 i.MX_SPI1_Init main.o
0x08001278 0x08001278 0x00000054 Code RO 301 i.MX_TIM2_Init main.o
0x080012cc 0x080012cc 0x00000038 Code RO 302 i.MX_USART1_UART_Init main.o
0x08001304 0x08001304 0x00000002 Code RO 400 i.NMI_Handler stm32f0xx_it.o
0x08001304 0x08001304 0x00000002 Code RO 397 i.NMI_Handler stm32f0xx_it.o
0x08001306 0x08001306 0x00000002 PAD
0x08001308 0x08001308 0x00000044 Code RO 3098 i.NVIC_SetPriority stm32f0xx_hal_cortex.o
0x0800134c 0x0800134c 0x00000002 Code RO 401 i.PendSV_Handler stm32f0xx_it.o
0x08001308 0x08001308 0x00000044 Code RO 3095 i.NVIC_SetPriority stm32f0xx_hal_cortex.o
0x0800134c 0x0800134c 0x00000002 Code RO 398 i.PendSV_Handler stm32f0xx_it.o
0x0800134e 0x0800134e 0x00000002 PAD
0x08001350 0x08001350 0x00000010 Code RO 402 i.SPI1_IRQHandler stm32f0xx_it.o
0x08001360 0x08001360 0x00000036 Code RO 543 i.SPI_2linesRxISR_16BIT stm32f0xx_hal_spi.o
0x08001396 0x08001396 0x0000005e Code RO 544 i.SPI_2linesRxISR_8BIT stm32f0xx_hal_spi.o
0x080013f4 0x080013f4 0x00000034 Code RO 545 i.SPI_2linesTxISR_16BIT stm32f0xx_hal_spi.o
0x08001428 0x08001428 0x00000048 Code RO 546 i.SPI_2linesTxISR_8BIT stm32f0xx_hal_spi.o
0x08001470 0x08001470 0x00000052 Code RO 549 i.SPI_CloseRxTx_ISR stm32f0xx_hal_spi.o
0x080014c2 0x080014c2 0x00000012 Code RO 552 i.SPI_DMAAbortOnError stm32f0xx_hal_spi.o
0x080014d4 0x080014d4 0x0000004c Code RO 563 i.SPI_EndRxTxTransaction stm32f0xx_hal_spi.o
0x08001520 0x08001520 0x00000096 Code RO 568 i.SPI_WaitFifoStateUntilTimeout stm32f0xx_hal_spi.o
0x080015b6 0x080015b6 0x0000008c Code RO 569 i.SPI_WaitFlagStateUntilTimeout stm32f0xx_hal_spi.o
0x08001642 0x08001642 0x00000002 Code RO 403 i.SVC_Handler stm32f0xx_it.o
0x08001644 0x08001644 0x0000000c Code RO 404 i.SysTick_Handler stm32f0xx_it.o
0x08001350 0x08001350 0x00000010 Code RO 399 i.SPI1_IRQHandler stm32f0xx_it.o
0x08001360 0x08001360 0x00000036 Code RO 540 i.SPI_2linesRxISR_16BIT stm32f0xx_hal_spi.o
0x08001396 0x08001396 0x0000005e Code RO 541 i.SPI_2linesRxISR_8BIT stm32f0xx_hal_spi.o
0x080013f4 0x080013f4 0x00000034 Code RO 542 i.SPI_2linesTxISR_16BIT stm32f0xx_hal_spi.o
0x08001428 0x08001428 0x00000048 Code RO 543 i.SPI_2linesTxISR_8BIT stm32f0xx_hal_spi.o
0x08001470 0x08001470 0x00000052 Code RO 546 i.SPI_CloseRxTx_ISR stm32f0xx_hal_spi.o
0x080014c2 0x080014c2 0x00000012 Code RO 549 i.SPI_DMAAbortOnError stm32f0xx_hal_spi.o
0x080014d4 0x080014d4 0x0000004c Code RO 560 i.SPI_EndRxTxTransaction stm32f0xx_hal_spi.o
0x08001520 0x08001520 0x00000096 Code RO 565 i.SPI_WaitFifoStateUntilTimeout stm32f0xx_hal_spi.o
0x080015b6 0x080015b6 0x0000008c Code RO 566 i.SPI_WaitFlagStateUntilTimeout stm32f0xx_hal_spi.o
0x08001642 0x08001642 0x00000002 Code RO 400 i.SVC_Handler stm32f0xx_it.o
0x08001644 0x08001644 0x0000000c Code RO 401 i.SysTick_Handler stm32f0xx_it.o
0x08001650 0x08001650 0x0000006a Code RO 303 i.SystemClock_Config main.o
0x080016ba 0x080016ba 0x00000002 PAD
0x080016bc 0x080016bc 0x0000005c Code RO 3515 i.SystemInit system_stm32f0xx.o
0x08001718 0x08001718 0x00000094 Code RO 945 i.TIM_Base_SetConfig stm32f0xx_hal_tim.o
0x080017ac 0x080017ac 0x00000016 Code RO 952 i.TIM_ETR_SetConfig stm32f0xx_hal_tim.o
0x080017c2 0x080017c2 0x00000010 Code RO 953 i.TIM_ITRx_SetConfig stm32f0xx_hal_tim.o
0x080017d2 0x080017d2 0x00000022 Code RO 959 i.TIM_TI1_ConfigInputStage stm32f0xx_hal_tim.o
0x080017f4 0x080017f4 0x00000026 Code RO 961 i.TIM_TI2_ConfigInputStage stm32f0xx_hal_tim.o
0x0800181a 0x0800181a 0x000000ca Code RO 1776 i.UART_AdvFeatureConfig stm32f0xx_hal_uart.o
0x080018e4 0x080018e4 0x00000074 Code RO 1777 i.UART_CheckIdleState stm32f0xx_hal_uart.o
0x08001958 0x08001958 0x0000015c Code RO 1792 i.UART_SetConfig stm32f0xx_hal_uart.o
0x08001ab4 0x08001ab4 0x00000062 Code RO 1794 i.UART_WaitOnFlagUntilTimeout stm32f0xx_hal_uart.o
0x08001b16 0x08001b16 0x0000000e Code RO 3607 i.__scatterload_copy mc_p.l(handlers.o)
0x08001b24 0x08001b24 0x00000002 Code RO 3608 i.__scatterload_null mc_p.l(handlers.o)
0x08001b26 0x08001b26 0x0000000e Code RO 3609 i.__scatterload_zeroinit mc_p.l(handlers.o)
0x08001b34 0x08001b34 0x0000001c Code RO 305 i.check_active_keys main.o
0x08001b50 0x08001b50 0x00000014 Code RO 12 i.delay_us delay_us.o
0x08001b64 0x08001b64 0x00000010 Code RO 13 i.delay_us_init delay_us.o
0x08001b74 0x08001b74 0x00000048 Code RO 307 i.handle_kb_en main.o
0x08001bbc 0x08001bbc 0x00000014 Code RO 308 i.idle_kb_line main.o
0x08001bd0 0x08001bd0 0x0000002c Code RO 156 i.kb_buf_add helpers.o
0x08001bfc 0x08001bfc 0x0000001c Code RO 157 i.kb_buf_init helpers.o
0x08001c18 0x08001c18 0x00000016 Code RO 159 i.kb_buf_is_full helpers.o
0x08001c2e 0x08001c2e 0x00000020 Code RO 160 i.kb_buf_peek helpers.o
0x08001c4e 0x08001c4e 0x00000012 Code RO 161 i.kb_buf_pop helpers.o
0x08001c60 0x08001c60 0x0000001c Code RO 162 i.kb_buf_reset helpers.o
0x08001c7c 0x08001c7c 0x000000c4 Code RO 309 i.main main.o
0x08001d40 0x08001d40 0x0000006c Code RO 3560 i.malloc mc_p.l(malloc.o)
0x08001dac 0x08001dac 0x00000010 Code RO 14 i.micros delay_us.o
0x08001dbc 0x08001dbc 0x00000010 Data RO 3516 .constdata system_stm32f0xx.o
0x08001dcc 0x08001dcc 0x00000008 Data RO 3517 .constdata system_stm32f0xx.o
0x08001dd4 0x08001dd4 0x00000020 Data RO 3605 Region$$Table anon$$obj.o
0x080016bc 0x080016bc 0x0000005c Code RO 3512 i.SystemInit system_stm32f0xx.o
0x08001718 0x08001718 0x00000094 Code RO 942 i.TIM_Base_SetConfig stm32f0xx_hal_tim.o
0x080017ac 0x080017ac 0x00000016 Code RO 949 i.TIM_ETR_SetConfig stm32f0xx_hal_tim.o
0x080017c2 0x080017c2 0x00000010 Code RO 950 i.TIM_ITRx_SetConfig stm32f0xx_hal_tim.o
0x080017d2 0x080017d2 0x00000022 Code RO 956 i.TIM_TI1_ConfigInputStage stm32f0xx_hal_tim.o
0x080017f4 0x080017f4 0x00000026 Code RO 958 i.TIM_TI2_ConfigInputStage stm32f0xx_hal_tim.o
0x0800181a 0x0800181a 0x000000ca Code RO 1773 i.UART_AdvFeatureConfig stm32f0xx_hal_uart.o
0x080018e4 0x080018e4 0x00000074 Code RO 1774 i.UART_CheckIdleState stm32f0xx_hal_uart.o
0x08001958 0x08001958 0x0000015c Code RO 1789 i.UART_SetConfig stm32f0xx_hal_uart.o
0x08001ab4 0x08001ab4 0x00000062 Code RO 1791 i.UART_WaitOnFlagUntilTimeout stm32f0xx_hal_uart.o
0x08001b16 0x08001b16 0x0000000e Code RO 3604 i.__scatterload_copy mc_p.l(handlers.o)
0x08001b24 0x08001b24 0x00000002 Code RO 3605 i.__scatterload_null mc_p.l(handlers.o)
0x08001b26 0x08001b26 0x0000000e Code RO 3606 i.__scatterload_zeroinit mc_p.l(handlers.o)
0x08001b34 0x08001b34 0x00000014 Code RO 12 i.delay_us delay_us.o
0x08001b48 0x08001b48 0x00000010 Code RO 13 i.delay_us_init delay_us.o
0x08001b58 0x08001b58 0x00000024 Code RO 307 i.idle_kb_line main.o
0x08001b7c 0x08001b7c 0x0000002c Code RO 156 i.kb_buf_add helpers.o
0x08001ba8 0x08001ba8 0x0000001c Code RO 157 i.kb_buf_init helpers.o
0x08001bc4 0x08001bc4 0x00000016 Code RO 159 i.kb_buf_is_full helpers.o
0x08001bda 0x08001bda 0x00000020 Code RO 160 i.kb_buf_peek helpers.o
0x08001bfa 0x08001bfa 0x00000012 Code RO 161 i.kb_buf_pop helpers.o
0x08001c0c 0x08001c0c 0x0000001c Code RO 162 i.kb_buf_reset helpers.o
0x08001c28 0x08001c28 0x00000094 Code RO 308 i.main main.o
0x08001cbc 0x08001cbc 0x0000006c Code RO 3557 i.malloc mc_p.l(malloc.o)
0x08001d28 0x08001d28 0x00000010 Code RO 14 i.micros delay_us.o
0x08001d38 0x08001d38 0x00000010 Data RO 3513 .constdata system_stm32f0xx.o
0x08001d48 0x08001d48 0x00000008 Data RO 3514 .constdata system_stm32f0xx.o
0x08001d50 0x08001d50 0x00000020 Data RO 3602 Region$$Table anon$$obj.o
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08001df4, Size: 0x000008a0, Max: 0x00004000, ABSOLUTE)
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08001d70, Size: 0x000008a0, Max: 0x00004000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x20000000 0x08001df4 0x00000004 Data RW 15 .data delay_us.o
0x20000004 0x08001df8 0x0000000c Data RW 318 .data main.o
0x20000010 0x08001e04 0x00000004 Data RW 2337 .data stm32f0xx_hal.o
0x20000014 0x08001e08 0x00000004 Data RW 3518 .data system_stm32f0xx.o
0x20000018 0x08001e0c 0x00000004 Data RW 3601 .data mc_p.l(mvars.o)
0x2000001c 0x08001e10 0x00000004 Data RW 3602 .data mc_p.l(mvars.o)
0x20000020 - 0x00000280 Zero RW 310 .bss main.o
0x20000000 0x08001d70 0x00000004 Data RW 15 .data delay_us.o
0x20000004 0x08001d74 0x0000000c Data RW 317 .data main.o
0x20000010 0x08001d80 0x00000004 Data RW 2334 .data stm32f0xx_hal.o
0x20000014 0x08001d84 0x00000004 Data RW 3515 .data system_stm32f0xx.o
0x20000018 0x08001d88 0x00000004 Data RW 3598 .data mc_p.l(mvars.o)
0x2000001c 0x08001d8c 0x00000004 Data RW 3599 .data mc_p.l(mvars.o)
0x20000020 - 0x00000280 Zero RW 309 .bss main.o
0x200002a0 - 0x00000200 Zero RW 2 HEAP startup_stm32f072xb.o
0x200004a0 - 0x00000400 Zero RW 1 STACK startup_stm32f072xb.o
@@ -1816,12 +1803,12 @@ Image component sizes
52 10 0 4 0 490455 delay_us.o
172 0 0 0 0 5560 helpers.o
1034 100 0 12 640 7793 main.o
914 90 0 12 640 6956 main.o
28 8 192 0 1536 632 startup_stm32f072xb.o
94 18 0 4 0 3067 stm32f0xx_hal.o
178 28 0 0 0 10531 stm32f0xx_hal_cortex.o
72 0 0 0 0 1103 stm32f0xx_hal_dma.o
390 36 0 0 0 3470 stm32f0xx_hal_gpio.o
380 36 0 0 0 2847 stm32f0xx_hal_gpio.o
260 28 0 0 0 2682 stm32f0xx_hal_msp.o
1504 102 0 0 0 5173 stm32f0xx_hal_rcc.o
288 14 0 0 0 1508 stm32f0xx_hal_rcc_ex.o
@@ -1833,9 +1820,9 @@ Image component sizes
92 16 24 4 0 1143 system_stm32f0xx.o
----------------------------------------------------------------------
7110 456 248 24 2176 559182 Object Totals
6978 446 248 24 2176 557722 Object Totals
0 0 32 0 0 0 (incl. Generated)
24 0 0 0 0 0 (incl. Padding)
22 0 0 0 0 0 (incl. Padding)
----------------------------------------------------------------------
@@ -1877,15 +1864,15 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug
7420 488 248 32 2176 556234 Grand Totals
7420 488 248 32 2176 556234 ELF Image Totals
7420 488 248 32 0 0 ROM Totals
7288 478 248 32 2176 554906 Grand Totals
7288 478 248 32 2176 554906 ELF Image Totals
7288 478 248 32 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 7668 ( 7.49kB)
Total RO Size (Code + RO Data) 7536 ( 7.36kB)
Total RW Size (RW Data + ZI Data) 2208 ( 2.16kB)
Total ROM Size (Code + RO Data + RW Data) 7700 ( 7.52kB)
Total ROM Size (Code + RO Data + RW Data) 7568 ( 7.39kB)
==============================================================================

View File

@@ -75,7 +75,7 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x5DFA0893)
I (../Inc/helpers.h)(0x62FB81F0)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5DFA0893)
I (../Inc/stm32f0xx_hal_conf.h)(0x62FC44B9)
I (../Inc/main.h)(0x62FC44B9)
I (../Inc/main.h)(0x62FC44B9)
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)

View File

Binary file not shown.

View File

Binary file not shown.

View File

@@ -131,43 +131,42 @@ uint8_t check_active_keys(void)
void idle_kb_line(void)
{
HAL_GPIO_WritePin(KB_CA2_GPIO_Port, KB_CA2_Pin, GPIO_PIN_RESET);
// HAL_GPIO_WritePin(W_GPIO_Port, W_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(W_GPIO_Port, W_Pin, GPIO_PIN_RESET);
}
#define DEBUG_HI() HAL_GPIO_WritePin(DEBUG_GPIO_Port, DEBUG_Pin, GPIO_PIN_SET)
#define DEBUG_LOW() HAL_GPIO_WritePin(DEBUG_GPIO_Port, DEBUG_Pin, GPIO_PIN_RESET)
void handle_kb_en(void)
{
kb_data = (GPIOB->IDR >> 8) & 0x7f;
kb_row = kb_data & 0x7;
kb_col = (kb_data >> 3) & 0xf;
#define CA2_SET() (GPIOB->BSRR = 0x00008000)
#define CA2_RESET() (GPIOB->BSRR = 0x80000000)
#define W_SET() (GPIOA->BSRR = 0x00000100)
#define W_RESET() (GPIOA->BSRR = 0x01000000)
if(kb_col == 1)
{
HAL_GPIO_WritePin(KB_CA2_GPIO_Port, KB_CA2_Pin, GPIO_PIN_SET);
if(kb_row == 4)
HAL_GPIO_WritePin(W_GPIO_Port, W_Pin, GPIO_PIN_SET);
// else
// HAL_GPIO_WritePin(W_GPIO_Port, W_Pin, GPIO_PIN_RESET);
}
else
{
idle_kb_line();
}
}
uint32_t event_start;
// falling edge, KB_EN is low
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
// if(has_active_keys == 0)
// return;
while(1)
{
kb_data = (GPIOB->IDR >> 8) & 0x7f;
kb_row = kb_data & 0x7;
kb_col = (kb_data >> 3) & 0xf;
HAL_GPIO_WritePin(KB_CA2_GPIO_Port, KB_CA2_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(W_GPIO_Port, W_Pin, GPIO_PIN_RESET);
while(HAL_GPIO_ReadPin(KB_EN_GPIO_Port, KB_EN_Pin) == GPIO_PIN_RESET)
handle_kb_en();
idle_kb_line();
if(kb_col == 1)
{
CA2_SET();
if(kb_row == 4)
W_SET();
else
W_RESET();
}
else
{
CA2_RESET();
W_RESET();
}
}
}
/* USER CODE END 0 */
@@ -214,8 +213,7 @@ int main(void)
/* Infinite loop */
/* USER CODE BEGIN WHILE */
HAL_GPIO_WritePin(KB_CA2_GPIO_Port, KB_CA2_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(W_GPIO_Port, W_Pin, GPIO_PIN_RESET);
idle_kb_line();
memset(spi_transmit_buf, 0, SPI_BUF_SIZE);
HAL_SPI_TransmitReceive_IT(&hspi1, spi_transmit_buf, spi_recv_buf, SPI_BUF_SIZE);
@@ -238,29 +236,19 @@ int main(void)
{
if(kb_buf_peek(&my_kb_buf, &buffered_code, &buffered_value) == 0)
{
if(buffered_value)
active_keys[buffered_code] = 1;
else
active_keys[buffered_code] = 0;
if(buffered_value == 1)
{
// event_start = HAL_GetTick();
HAL_GPIO_WritePin(KB_CA2_GPIO_Port, KB_CA2_Pin, GPIO_PIN_SET);
delay_us(1);
HAL_GPIO_WritePin(KB_CA2_GPIO_Port, KB_CA2_Pin, GPIO_PIN_RESET);
// DEBUG_HI();
}
kb_buf_pop(&my_kb_buf);
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
if(check_active_keys())
{
has_active_keys = 1;
HAL_GPIO_WritePin(KB_CA2_GPIO_Port, KB_CA2_Pin, GPIO_PIN_SET);
delay_us(1);
HAL_GPIO_WritePin(KB_CA2_GPIO_Port, KB_CA2_Pin, GPIO_PIN_RESET);
}
else
{
has_active_keys = 0;
HAL_GPIO_WritePin(KB_CA2_GPIO_Port, KB_CA2_Pin, GPIO_PIN_RESET);
}
}
/* USER CODE END 3 */

View File

@@ -180,3 +180,94 @@ HAL_GPIO_WritePin(DEBUG_GPIO_Port, DEBUG_Pin, has_active_keys());
return;
}
HAL_GPIO_WritePin(DEBUG_GPIO_Port, DEBUG_Pin, has_active_keys);
------------
while (1)
{
if(kb_buf_peek(&my_kb_buf, &buffered_code, &buffered_value) == 0)
{
if(buffered_value)
active_keys[buffered_code] = 1;
else
active_keys[buffered_code] = 0;
kb_buf_pop(&my_kb_buf);
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
if(check_active_keys())
{
has_active_keys = 1;
HAL_GPIO_WritePin(KB_CA2_GPIO_Port, KB_CA2_Pin, GPIO_PIN_SET);
delay_us(1);
HAL_GPIO_WritePin(KB_CA2_GPIO_Port, KB_CA2_Pin, GPIO_PIN_RESET);
}
else
{
has_active_keys = 0;
HAL_GPIO_WritePin(KB_CA2_GPIO_Port, KB_CA2_Pin, GPIO_PIN_RESET);
}
}
------------
if(kb_col == 1)
{
HAL_GPIO_WritePin(KB_CA2_GPIO_Port, KB_CA2_Pin, GPIO_PIN_SET);
if(kb_row == 3)
{
delay_us(10);
HAL_GPIO_WritePin(W_GPIO_Port, W_Pin, GPIO_PIN_SET);
}
else if(kb_row == 4)
{
HAL_GPIO_WritePin(W_GPIO_Port, W_Pin, GPIO_PIN_SET);
}
else
{
HAL_GPIO_WritePin(W_GPIO_Port, W_Pin, GPIO_PIN_RESET);
}
// HAL_GPIO_WritePin(W_GPIO_Port, W_Pin, kb_row == 4);
}
-----------
void handle_kb_en(void)
{
// if(HAL_GetTick() - event_start > 20)
// {
// DEBUG_LOW();
// return;
// }
// bit 0-2: ROW A-C
// bit 3-6: COL A-D
/*
7 6 5 4 3 2 1 0
CD CC CB CA RC RB RA
*/
kb_data = (GPIOB->IDR >> 8) & 0x7f;
kb_row = kb_data & 0x7;
kb_col = (kb_data >> 3) & 0xf;
if(kb_col == 1)
{
HAL_GPIO_WritePin(KB_CA2_GPIO_Port, KB_CA2_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(W_GPIO_Port, W_Pin, kb_row == 4);
}
else
{
HAL_GPIO_WritePin(KB_CA2_GPIO_Port, KB_CA2_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(W_GPIO_Port, W_Pin, GPIO_PIN_RESET);
}
}
-------
// HAL_GPIO_WritePin(W_GPIO_Port, W_Pin, kb_row == 4);