keyboard done, turns out it skips input on real keyboard too

This commit is contained in:
dekunukem
2022-08-19 00:30:33 +01:00
parent f9f104c770
commit 0320ee355a
13 changed files with 184 additions and 145 deletions

View File

@@ -3606,9 +3606,9 @@
<ActiveTab>0</ActiveTab>
<Doc>
<Name>../Src/main.c</Name>
<ColumnNumber>22</ColumnNumber>
<TopLine>365</TopLine>
<CurrentLine>403</CurrentLine>
<ColumnNumber>31</ColumnNumber>
<TopLine>368</TopLine>
<CurrentLine>401</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>

View File

Binary file not shown.

View File

@@ -29,7 +29,7 @@ Project File Date: 08/18/2022
Build target 'bbc'
compiling main.c...
linking...
Program Size: Code=8360 RO-data=376 RW-data=32 ZI-data=2064
Program Size: Code=8300 RO-data=376 RW-data=32 ZI-data=2064
FromELF: creating hex file...
"bbc\bbc.axf" - 0 Error(s), 0 Warning(s).

View File

@@ -20,8 +20,8 @@
:100120000270401C491EFBD270470022F6E710B552
:1001300013460A4604461946FFF7F0FF204610BD55
:10014000064C0125064E05E0E36807CC2B430C3C2A
:1001500098471034B442F7D3FFF7B6FF00220008E7
:100160002022000810B5042000F068F810BD70B51A
:1001500098471034B442F7D3FFF7B6FFC421000824
:10016000E421000810B5042000F068F810BD70B557
:100170000024014620314A78022A03D004218163F9
:10018000012416E0026813680E25AB431360026871
:1001900013685B085B0013600122056C1346AB40DB
@@ -132,10 +132,10 @@
:10082000C8400C4908600020FFF724FE002009B0F2
:10083000F0BD0000002002400010024088130000BC
:10084000EC080008FC08000800127A00006CDC02CA
:10085000E8210008100000200148006870470000EF
:10085000AC2100081000002001480068704700002B
:10086000100000200448054900684968044A490509
:10087000490F515CC8407047100000200010024032
:10088000F821000830B519A30FCB89B06C460FC40E
:10088000BC21000830B519A30FCB89B06C460FC44A
:100890001AA30FCB0FC41D494A680C20144604400C
:1008A0001B48042C05D01B4B082C04D00C2C00D169
:1008B000184609B030BD9402240F6D462C5DC96AFC
@@ -464,8 +464,8 @@
:101CE00030B4037845785C1C6407640FA54202D1C8
:101CF00030BC012070474468E15403788168CA54BD
:101D00000178491C4907490F017030BC0020704719
:101D100010B50446082000F0E9F96060082000F0E2
:101D2000E5F9A0600020207060706068FFF790FF08
:101D100010B50446082000F0CBF96060082000F000
:101D2000C7F9A0600020207060706068FFF790FF26
:101D3000A068FFF78DFF10BD10B443780478A3426C
:101D400002D110BC012070474468E35C0B708168CD
:101D50004078085C107010BC002070474178027811
@@ -477,75 +477,72 @@
:101DB000002800D0FEE7129512A81495FEF7BAFB92
:101DC000002800D0FEE7FEF747FD7D21C900FEF7A1
:101DD0008FF9FFF779F90420FFF768F9002211461F
:101DE000501EFEF785FBAB48406901218905084379
:101DF000A849486148690121890508400590A5481E
:101E0000416901204004A34A0143516151690140E5
:101DE000501EFEF785FB9C48406901218905084388
:101DF000994948614869012189050840059096483C
:101E0000416901204004944A0143516151690140F4
:101E1000059151694000014351615169002201401F
:101E2000059102219C48FEF7C7FA01210022C9034F
:101E30009A48FEF7C1FA09261D21F606002209027A
:101E40003046FEF7B9FA0294694693480097019527
:101E50000394FEF7FFF992480090019469460294BA
:101E60008E48FEF7F7F9042000908E4801906946ED
:101E700002948A48FEF7EEF90120C0031127009072
:101E800002946946019703948448FEF7E3F9FF2022
:101E90000130009002946946019703943046FEF7A2
:101EA000D9F90720800200900294694601950394B5
:101EB0003046FEF7CFF9002201210620FEF718FB7D
:101EC0000620FEF70BFB7948774944608460016087
:101ED00004614461846104620721446209028462EE
:101EE000C160046307214463C162FEF7ADFF0028AF
:101EF00000D0FEE76F486E4901608460E121C46054
:101F00004902046141608461C46104620C2144623D
:101F10004161FEF75DFA002800D0FEE70121664826
:101F2000890701603F218460416000210461C94349
:101F30008461C160FFF70FF9002800D0FEE701209F
:101F40000003009069465C48FFF73CF9002800D088
:101F5000FEE7049404A958480594FFF7D7F8002831
:101F600000D0FEE75548FFF7D3FE5348FFF7A4FE25
:101F700053A0FFF763FE0120484FC007B861C009B6
:101F8000B0615148202344618461C46104624462A9
:101F90008462C46204634D4A4D494448FEF7DCFF45
:101FA00080214C48FEF7C1F84B48046044608460CF
:101FB000C460FEF707FA484E484C494A49493F4831
:101FC000FFF7BAFE002846D1FEF7FCF9002263783D
:101FD00010461146802B0AD24348C15C0809090704
:101FE000090F102800D31046082900D31146A37802
:101FF000002B18D001223254C30036480927181884
:1020000042549502FF0629463846FEF7D5F91420BA
:10201000FEF7D1F8002229463846FEF7CDF92748C9
:10202000FFF79CFE17E03254C3002A480925181810
:10203000425401229702ED0639462846FEF7BCF9C4
:102040001420FEF7B8F8002239462846FEF7B4F906
:102050001A48FFF783FE00F07FF805460021705C08
:10206000002803D17018407800280ED06068281A24
:102070001428A2D90120094FC003B8610120FFF73D
:102080000FFE7805B861656097E7891C1029E6DBCB
:1020900093E70000001002400014004800040048CC
:1020A000027F0000000021100030014020000020CD
:1020B00000380140C400002084000020940100206A
:1020C00068656C6C6F0A000020010020740100201C
:1020D00034010020B0010020A001002004000020F5
:1020E000060000200500002068210008F0B50B3034
:1020F000C108C900144F0026144A0FE003688B4240
:102100000BD38B4205D95C1A4318456830C3083B92
:1021100000E04368136002C004E0021D106800285C
:10212000ECD13046002803D13868002801D00020C7
:10213000F0BD064A06481060064A121AD208D200BC
:1021400044C001203860D7E71C00002018000020A0
:102150003402002030040020024800680068406A11
:1021600070470000000000200007031311213143D5
:1021700042516272000095060112223332445352DA
:102180006373838594101415233435455464658432
:1021900000000087162425364655566676860000D0
:1021A0000026041727374147576167770200000070
:1021B000000000000000000000000000000000001F
:1021C000000000000000000000100000000000936C
:1021D0000091970092000000000000000000000045
:1021E00000000000000000000000000000000000EF
:1021F00001020304060708090000000001020304AD
:10220000202200080000002020000000641C0008BC
:10221000402200082000002010080000741C000864
:1022200000000000000000000000000000000000AE
:1022300000127A0000000000000000000000000012
:101E2000059102218D48FEF7C7FA002231468C4801
:101E3000FEF7C2FA1D21092000220902C006FEF7A2
:101E4000BBFA029469468548009701950394FEF712
:101E500001FA844800900194694602948048FEF794
:101E6000F9F90420009080480190694602947C486A
:101E7000FEF7F0F911270294694679480197009618
:101E80000394FEF7E7F9FF20013000900920029447
:101E9000694601970394C006FEF7DCF9072080022B
:101EA000009009200294694601950394C006FEF74C
:101EB000D1F9002201210620FEF71AFB0620FEF7C9
:101EC0000DFB6B48694944608460016004614461B2
:101ED000846104620721446209028462C160046370
:101EE00007214463C162FEF7AFFF002800D0FEE780
:101EF0006148604901608460E121C4604902046175
:101F000041608461C46104620C2144624161FEF756
:101F10005FFA002800D0FEE70121584889070160D8
:101F20003F218460416000210461C9438461C16034
:101F3000FFF711F9002800D0FEE701200003009010
:101F400069464E48FFF73EF9002800D0FEE70494AA
:101F500004A94A480594FFF7D9F8002800D0FEE705
:101F60004748FFF7D5FE4548FFF7A6FE45A0FFF717
:101F700065FE01203A4FC007B861C1090920C006BB
:101F800081614248202344618461C46104624462E7
:101F90008462C46204633E4A3E493548FEF7DCFF72
:101FA00080213D48FEF7C1F83C48046044608460ED
:101FB000C46000F0B3F80546394A3A493048FFF7A3
:101FC000BBFE00282AD13849264648783746802863
:101FD0000AD2364A105C070706093F0F102E00D3BD
:101FE0002646082F00D32746887800280AD02B4998
:101FF00001208855F20010315118C8552048FFF7CC
:10200000ADFE0BE00F20FEF7D6F82448F100845512
:1020100010300818C4551A48FFF7A0FE1F4A0021C7
:10202000505C002803D15018407800280FD01E4E75
:102030007068281A1428BCD90120094FC003B86160
:102040000120FFF72DFE7805B8617560B1E7891CA6
:102050001029E5DBADE70000001002400014004845
:1020600000040048027F0000000021100030014001
:102070002000002000380140C4000020840000201F
:102080009401002068656C6C6F0A0000200100203C
:102090007401002034010020B0010020A0010020C4
:1020A0000600002005000020040000202C2100086C
:1020B000F0B50B30C108C900144F0026144A0FE0D8
:1020C00003688B420BD38B4205D95C1A43184568D1
:1020D00030C3083B00E04368136002C004E0021D07
:1020E00010680028ECD13046002803D13868002859
:1020F00001D00020F0BD064A06481060064A121AB8
:10210000D208D20044C001203860D7E71C0000206C
:10211000180000203402002030040020024800682B
:102120000068406A704700000000002000070313A9
:10213000112131434251627200009506011222338F
:1021400032445352637383859410141523343545F8
:10215000546465840000008716242536465556666B
:1021600076860000002604172737414757616777B6
:10217000020000000000000000000000000000005D
:10218000000000000000000000000000001000003F
:1021900000000093009197009200000000000000F2
:1021A000000000000000000000000000000000002F
:1021B00000000000010203040607080900000000F7
:1021C00001020304E42100080000002020000000B8
:1021D000641C0008042200082000002010080000F1
:1021E000741C000800000000000000000000000057
:1021F0000000000000127A00000000000000000053
:0422000000000000DA
: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: Thu Aug 18 23:34:15 2022
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Fri Aug 19 00:19:15 2022
<BR><P>
<H3>Maximum Stack Usage = 204 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
Call chain for Maximum Stack Depth:</H3>
@@ -290,7 +290,6 @@ Global Symbols
<LI><a href="#[46]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
<LI><a href="#[45]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCCEx_PeriphCLKConfig
<LI><a href="#[36]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<LI><a href="#[5a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_WaitOnFlagUntilTimeout
<LI><a href="#[3d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_CheckIdleState
</UL>
@@ -649,17 +648,17 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[6e]"></a>kb_buf_peek</STRONG> (Thumb, 36 bytes, Stack size 4 bytes, helpers.o(i.kb_buf_peek))
<P><STRONG><a name="[6f]"></a>kb_buf_peek</STRONG> (Thumb, 36 bytes, Stack size 4 bytes, helpers.o(i.kb_buf_peek))
<BR><BR>[Stack]<UL><LI>Max Depth = 4<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="[6f]"></a>kb_buf_pop</STRONG> (Thumb, 18 bytes, Stack size 0 bytes, helpers.o(i.kb_buf_pop))
<P><STRONG><a name="[70]"></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="[26]"></a>main</STRONG> (Thumb, 802 bytes, Stack size 104 bytes, main.o(i.main))
<P><STRONG><a name="[26]"></a>main</STRONG> (Thumb, 742 bytes, Stack size 104 bytes, main.o(i.main))
<BR><BR>[Stack]<UL><LI>Max Depth = 204<LI>Call Chain = main &rArr; HAL_HalfDuplex_Init &rArr; UART_SetConfig &rArr; HAL_RCC_GetSysClockFreq &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[6a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_TIM_ConfigClockSource
@@ -677,14 +676,13 @@ Global Symbols
<LI><a href="#[4f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_EnableIRQ
<LI><a href="#[3e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
<LI><a href="#[39]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_HalfDuplex_Init
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[51]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[4e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_Init
<LI><a href="#[36]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_pop
<LI><a href="#[6e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_peek
<LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_pop
<LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_peek
<LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
<LI><a href="#[70]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;micros
<LI><a href="#[6e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;micros
<LI><a href="#[64]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us_init
<LI><a href="#[71]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
<LI><a href="#[6c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
@@ -699,7 +697,7 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[66]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
</UL>
<P><STRONG><a name="[70]"></a>micros</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, delay_us.o(i.micros))
<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="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P>
@@ -738,10 +736,10 @@ Local Symbols
<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = SPI_CloseRxTx_ISR &rArr; SPI_EndRxTxTransaction &rArr; SPI_WaitFifoStateUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_EndRxTxTransaction
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[50]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
<LI><a href="#[5d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_RxCpltCallback
<LI><a href="#[4b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_ErrorCallback
<LI><a href="#[37]">&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

View File

@@ -69,11 +69,10 @@ Section Cross References
main.o(i.main) refers to printfb.o(i.__0printf$bare) for __2printf
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 memseta.o(.text) for __aeabi_memclr4
main.o(i.main) refers to stm32f0xx_hal.o(i.HAL_GetTick) for HAL_GetTick
main.o(i.main) refers to helpers.o(i.kb_buf_peek) for kb_buf_peek
main.o(i.main) refers to stm32f0xx_hal.o(i.HAL_Delay) for HAL_Delay
main.o(i.main) refers to helpers.o(i.kb_buf_pop) for kb_buf_pop
main.o(i.main) refers to delay_us.o(i.micros) for micros
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 stm32f0xx_hal.o(i.HAL_Delay) for HAL_Delay
main.o(i.main) refers to delay_us.o(i.delay_us) for delay_us
main.o(i.main) refers to main.o(.bss) for .bss
main.o(i.main) refers to main.o(.data) for .data
@@ -1578,11 +1577,11 @@ Image Symbol Table
i.kb_buf_peek 0x08001d38 Section 0 helpers.o(i.kb_buf_peek)
i.kb_buf_pop 0x08001d5c Section 0 helpers.o(i.kb_buf_pop)
i.main 0x08001d70 Section 0 main.o(i.main)
i.malloc 0x080020ec Section 0 malloc.o(i.malloc)
i.micros 0x08002158 Section 0 delay_us.o(i.micros)
.constdata 0x08002168 Section 128 main.o(.constdata)
.constdata 0x080021e8 Section 16 system_stm32f0xx.o(.constdata)
.constdata 0x080021f8 Section 8 system_stm32f0xx.o(.constdata)
i.malloc 0x080020b0 Section 0 malloc.o(i.malloc)
i.micros 0x0800211c Section 0 delay_us.o(i.micros)
.constdata 0x0800212c Section 128 main.o(.constdata)
.constdata 0x080021ac Section 16 system_stm32f0xx.o(.constdata)
.constdata 0x080021bc Section 8 system_stm32f0xx.o(.constdata)
.data 0x20000000 Section 4 delay_us.o(.data)
.data 0x20000004 Section 8 main.o(.data)
.data 0x2000000c Section 4 stm32f0xx_hal.o(.data)
@@ -1724,14 +1723,14 @@ Image Symbol Table
kb_buf_init 0x08001d11 Thumb Code 40 helpers.o(i.kb_buf_init)
kb_buf_peek 0x08001d39 Thumb Code 36 helpers.o(i.kb_buf_peek)
kb_buf_pop 0x08001d5d Thumb Code 18 helpers.o(i.kb_buf_pop)
main 0x08001d71 Thumb Code 802 main.o(i.main)
malloc 0x080020ed Thumb Code 92 malloc.o(i.malloc)
micros 0x08002159 Thumb Code 10 delay_us.o(i.micros)
linux_keycode_to_bbc_matrix_lookup 0x08002168 Data 128 main.o(.constdata)
AHBPrescTable 0x080021e8 Data 16 system_stm32f0xx.o(.constdata)
APBPrescTable 0x080021f8 Data 8 system_stm32f0xx.o(.constdata)
Region$$Table$$Base 0x08002200 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x08002220 Number 0 anon$$obj.o(Region$$Table)
main 0x08001d71 Thumb Code 742 main.o(i.main)
malloc 0x080020b1 Thumb Code 92 malloc.o(i.malloc)
micros 0x0800211d Thumb Code 10 delay_us.o(i.micros)
linux_keycode_to_bbc_matrix_lookup 0x0800212c Data 128 main.o(.constdata)
AHBPrescTable 0x080021ac Data 16 system_stm32f0xx.o(.constdata)
APBPrescTable 0x080021bc Data 8 system_stm32f0xx.o(.constdata)
Region$$Table$$Base 0x080021c4 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x080021e4 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)
@@ -1763,9 +1762,9 @@ Memory Map of the image
Image Entry point : 0x080000c1
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00002240, Max: 0x00010000, ABSOLUTE)
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00002204, Max: 0x00010000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00002220, Max: 0x00010000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x000021e4, Max: 0x00010000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
@@ -1864,26 +1863,26 @@ Memory Map of the image
0x08001d38 0x08001d38 0x00000024 Code RO 160 i.kb_buf_peek helpers.o
0x08001d5c 0x08001d5c 0x00000012 Code RO 161 i.kb_buf_pop helpers.o
0x08001d6e 0x08001d6e 0x00000002 PAD
0x08001d70 0x08001d70 0x0000037c Code RO 306 i.main main.o
0x080020ec 0x080020ec 0x0000006c Code RO 3642 i.malloc mc_p.l(malloc.o)
0x08002158 0x08002158 0x00000010 Code RO 14 i.micros delay_us.o
0x08002168 0x08002168 0x00000080 Data RO 312 .constdata main.o
0x080021e8 0x080021e8 0x00000010 Data RO 3338 .constdata system_stm32f0xx.o
0x080021f8 0x080021f8 0x00000008 Data RO 3339 .constdata system_stm32f0xx.o
0x08002200 0x08002200 0x00000020 Data RO 3709 Region$$Table anon$$obj.o
0x08001d70 0x08001d70 0x00000340 Code RO 306 i.main main.o
0x080020b0 0x080020b0 0x0000006c Code RO 3642 i.malloc mc_p.l(malloc.o)
0x0800211c 0x0800211c 0x00000010 Code RO 14 i.micros delay_us.o
0x0800212c 0x0800212c 0x00000080 Data RO 312 .constdata main.o
0x080021ac 0x080021ac 0x00000010 Data RO 3338 .constdata system_stm32f0xx.o
0x080021bc 0x080021bc 0x00000008 Data RO 3339 .constdata system_stm32f0xx.o
0x080021c4 0x080021c4 0x00000020 Data RO 3709 Region$$Table anon$$obj.o
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08002220, Size: 0x00000830, Max: 0x00004000, ABSOLUTE)
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x080021e4, Size: 0x00000830, Max: 0x00004000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x20000000 0x08002220 0x00000004 Data RW 15 .data delay_us.o
0x20000004 0x08002224 0x00000008 Data RW 316 .data main.o
0x2000000c 0x0800222c 0x00000004 Data RW 2250 .data stm32f0xx_hal.o
0x20000010 0x08002230 0x00000004 Data RW 3340 .data system_stm32f0xx.o
0x20000014 0x08002234 0x00000004 Data RW 3683 .data mc_p.l(stdout.o)
0x20000018 0x08002238 0x00000004 Data RW 3686 .data mc_p.l(mvars.o)
0x2000001c 0x0800223c 0x00000004 Data RW 3687 .data mc_p.l(mvars.o)
0x20000000 0x080021e4 0x00000004 Data RW 15 .data delay_us.o
0x20000004 0x080021e8 0x00000008 Data RW 316 .data main.o
0x2000000c 0x080021f0 0x00000004 Data RW 2250 .data stm32f0xx_hal.o
0x20000010 0x080021f4 0x00000004 Data RW 3340 .data system_stm32f0xx.o
0x20000014 0x080021f8 0x00000004 Data RW 3683 .data mc_p.l(stdout.o)
0x20000018 0x080021fc 0x00000004 Data RW 3686 .data mc_p.l(mvars.o)
0x2000001c 0x08002200 0x00000004 Data RW 3687 .data mc_p.l(mvars.o)
0x20000020 - 0x00000210 Zero RW 307 .bss main.o
0x20000230 - 0x00000200 Zero RW 2 HEAP startup_stm32f072xb.o
0x20000430 - 0x00000400 Zero RW 1 STACK startup_stm32f072xb.o
@@ -1898,7 +1897,7 @@ Image component sizes
56 16 0 4 0 491703 delay_us.o
162 0 0 0 0 4932 helpers.o
1148 136 128 8 528 6165 main.o
1088 136 128 8 528 6025 main.o
28 8 192 0 1536 632 startup_stm32f072xb.o
122 18 0 4 0 3631 stm32f0xx_hal.o
182 32 0 0 0 10259 stm32f0xx_hal_cortex.o
@@ -1915,7 +1914,7 @@ Image component sizes
92 16 24 4 0 1143 system_stm32f0xx.o
----------------------------------------------------------------------
8036 512 376 20 2064 559864 Object Totals
7976 512 376 20 2064 559724 Object Totals
0 0 32 0 0 0 (incl. Generated)
16 0 0 0 0 0 (incl. Padding)
@@ -1960,15 +1959,15 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug
8360 552 376 32 2064 557440 Grand Totals
8360 552 376 32 2064 557440 ELF Image Totals
8360 552 376 32 0 0 ROM Totals
8300 552 376 32 2064 557300 Grand Totals
8300 552 376 32 2064 557300 ELF Image Totals
8300 552 376 32 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 8736 ( 8.53kB)
Total RO Size (Code + RO Data) 8676 ( 8.47kB)
Total RW Size (RW Data + ZI Data) 2096 ( 2.05kB)
Total ROM Size (Code + RO Data + RW Data) 8768 ( 8.56kB)
Total ROM Size (Code + RO Data + RW Data) 8708 ( 8.50kB)
==============================================================================

View File

@@ -2,7 +2,7 @@ Dependencies for Project 'bbc', Target 'bbc': (DO NOT MODIFY !)
CompilerVersion: 5060750::V5.06 update 6 (build 750)::ARMCC
F (startup_stm32f072xb.s)(0x62FE2787)(--cpu Cortex-M0 -g --apcs=interwork --pd "__MICROLIB SETA 1"
-I.\RTE\_bbc
-I.\RTE\_bbc
-IC:\Users\allen\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include
@@ -38,11 +38,11 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x5DFA0893)
I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x5DFA0892)
I (../Drivers/CMSIS/Include/core_cmFunc.h)(0x5DFA0892)
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h)(0x5DFA0880)
I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5D9B429A)
I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5D9B429A)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_cortex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_flash.h)(0x5DFA0893)
@@ -75,7 +75,7 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x5DFA0893)
I (../Inc/helpers.h)(0x62FEC853)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5DFA0893)
I (../Inc/stm32f0xx_hal_conf.h)(0x62FE2786)
I (../Inc/main.h)(0x62FE2786)
I (../Inc/main.h)(0x62FE2786)
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)
@@ -110,7 +110,7 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart.h)(0x5DFA0893)
-I.\RTE\_bbc
-IC:\Users\allen\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include
-IC:\Users\allen\AppData\Local\Arm\Packs\Keil\STM32F0xx_DFP\2.0.0\Drivers\CMSIS\Device\ST\STM32F0xx\Include
-D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

@@ -374,7 +374,6 @@ int main(void)
uint8_t this_col, this_row;
memset(matrix_status, 0, COL_SIZE * ROW_SIZE);
memset(col_status, 0, COL_SIZE);
uint32_t last_keypress_pop = HAL_GetTick();
/*
the IC3 is a BCD decoder that takes 3 bits input and select one of the 10 lines
the output ACTIVE LOW, meaning selected line is LOW while others are high
@@ -391,33 +390,26 @@ int main(void)
while (1)
{
uint32_t micros_now = micros();
if(kb_buf_peek(&my_kb_buf, &buffered_code, &buffered_value) == 0)
{
uint32_t ms_now = HAL_GetTick();
get_bbc_code(buffered_code, &this_col, &this_row);
if(buffered_value)
{
col_status[this_col] = 1;
matrix_status[this_col][this_row] = 1;
DEBUG_HI();
HAL_Delay(20);
DEBUG_LOW();
kb_buf_pop(&my_kb_buf);
}
else
{
col_status[this_col] = 0;
matrix_status[this_col][this_row] = 0;
DEBUG_HI();
HAL_Delay(20);
DEBUG_LOW();
kb_buf_pop(&my_kb_buf);
}
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
uint32_t micros_now = micros();
if(has_active_keys() && micros_now - last_ca2 > 20)
{
CA2_HI();

View File

@@ -435,4 +435,57 @@ if(kb_buf_peek(&my_kb_buf, &buffered_code, &buffered_value) == 0)
matrix_status[this_col][this_row] = 0;
kb_buf_pop(&my_kb_buf);
}
}
if(kb_buf_peek(&my_kb_buf, &buffered_code, &buffered_value) == 0)
{
get_bbc_code(buffered_code, &this_col, &this_row);
if(buffered_value)
{
col_status[this_col] = 1;
matrix_status[this_col][this_row] = 1;
DEBUG_HI();
CA2_HI();
delay_us(1);
CA2_LOW();
last_ca2 = micros_now;
HAL_Delay(20);
DEBUG_LOW();
kb_buf_pop(&my_kb_buf);
}
else
{
col_status[this_col] = 0;
matrix_status[this_col][this_row] = 0;
// DEBUG_HI();
// HAL_Delay(20);
// DEBUG_LOW();
kb_buf_pop(&my_kb_buf);
}
}
////
if(kb_buf_peek(&my_kb_buf, &buffered_code, &buffered_value) == 0)
{
get_bbc_code(buffered_code, &this_col, &this_row);
if(buffered_value)
{
col_status[this_col] = 1;
matrix_status[this_col][this_row] = 1;
kb_buf_pop(&my_kb_buf);
DEBUG_HI();
delay_us(1);
DEBUG_LOW();
}
else
{
col_status[this_col] = 0;
matrix_status[this_col][this_row] = 0;
kb_buf_pop(&my_kb_buf);
DEBUG_HI();
delay_us(5);
DEBUG_LOW();
}
}