diff --git a/Morse_code_PCB/Morse_code_PCB.kicad_pcb b/Morse_code_PCB/Morse_code_PCB.kicad_pcb index 7bfbf49..fd48a71 100644 --- a/Morse_code_PCB/Morse_code_PCB.kicad_pcb +++ b/Morse_code_PCB/Morse_code_PCB.kicad_pcb @@ -91,129 +91,91 @@ (net 0 "") (net 1 "Net-(BZ1-Pad1)") (net 2 "Net-(BZ1-Pad2)") - (net 3 "Net-(C1-Pad1)") - (net 4 "GND") - (net 5 "Net-(C2-Pad1)") - (net 6 "Net-(C3-Pad1)") - (net 7 "Net-(C4-Pad1)") - (net 8 "USB_VCC") - (net 9 "BAT_IN") - (net 10 "Net-(C8-Pad1)") - (net 11 "VCC") - (net 12 "Net-(C12-Pad1)") - (net 13 "PWM") - (net 14 "Net-(C13-Pad1)") - (net 15 "PWR_EN") - (net 16 "Net-(D1-Pad1)") - (net 17 "Net-(D2-Pad2)") - (net 18 "Net-(D3-Pad1)") - (net 19 "Net-(D4-Pad2)") - (net 20 "K1") - (net 21 "K1_DET") - (net 22 "Net-(D6-Pad2)") - (net 23 "Net-(J1-PadA6)") - (net 24 "unconnected-(J1-PadB5)") - (net 25 "unconnected-(J1-PadA8)") - (net 26 "Net-(J1-PadA7)") - (net 27 "unconnected-(J1-PadA5)") - (net 28 "unconnected-(J1-PadB8)") - (net 29 "unconnected-(J2-PadS)") - (net 30 "TICK_B") - (net 31 "TICK_A") - (net 32 "unconnected-(J3-PadS)") - (net 33 "Net-(L1-Pad2)") - (net 34 "Net-(Q3-Pad1)") - (net 35 "Net-(Q4-Pad1)") - (net 36 "Net-(R1-Pad2)") - (net 37 "Net-(R5-Pad2)") - (net 38 "BAT_ADC") - (net 39 "BAT_CHG_DET") - (net 40 "Net-(R11-Pad1)") - (net 41 "Net-(R12-Pad1)") - (net 42 "Net-(R14-Pad1)") - (net 43 "IIC_SDL") - (net 44 "IIC_SCL") - (net 45 "MUTE") - (net 46 "RUN_LED") - (net 47 "RXD") - (net 48 "TXD") - (net 49 "unconnected-(U4-Pad4)") - (net 50 "unconnected-(U4-Pad5)") - (net 51 "unconnected-(U5-Pad4)") - (net 52 "unconnected-(U6-Pad5)") - (net 53 "unconnected-(BT1-Pad1)") - (net 54 "unconnected-(BT1-Pad2)") - (net 55 "unconnected-(U7-Pad1)") - (net 56 "unconnected-(U7-Pad2)") - (net 57 "unconnected-(U7-Pad3)") - (net 58 "unconnected-(U7-Pad4)") - (net 59 "unconnected-(U7-Pad5)") - (net 60 "unconnected-(U7-Pad6)") - (net 61 "unconnected-(U7-Pad7)") - (net 62 "unconnected-(U7-Pad8)") - (net 63 "unconnected-(U7-Pad9)") - (net 64 "unconnected-(U7-Pad10)") - (net 65 "unconnected-(U7-Pad11)") - (net 66 "unconnected-(U7-Pad12)") - (net 67 "unconnected-(U7-Pad13)") - (net 68 "unconnected-(U7-Pad14)") - (net 69 "unconnected-(U7-Pad15)") - (net 70 "unconnected-(U7-Pad16)") - (net 71 "unconnected-(U7-Pad17)") - (net 72 "unconnected-(U7-Pad18)") - (net 73 "unconnected-(U7-Pad19)") - (net 74 "unconnected-(U7-Pad20)") - (net 75 "unconnected-(U7-Pad21)") - (net 76 "unconnected-(U7-Pad22)") - (net 77 "unconnected-(U7-Pad23)") - (net 78 "unconnected-(U7-Pad24)") - (net 79 "unconnected-(U7-Pad25)") - (net 80 "unconnected-(U7-Pad26)") - (net 81 "unconnected-(U7-Pad27)") - (net 82 "unconnected-(U7-Pad28)") - (net 83 "unconnected-(U7-Pad29)") - (net 84 "unconnected-(U7-Pad30)") - (net 85 "unconnected-(U7-Pad31)") - (net 86 "unconnected-(U7-Pad32)") - (net 87 "unconnected-(U7-Pad33)") - (net 88 "unconnected-(U7-Pad34)") - (net 89 "unconnected-(U7-Pad35)") - (net 90 "unconnected-(U7-Pad36)") - (net 91 "unconnected-(U7-Pad37)") - (net 92 "unconnected-(U7-Pad38)") - (net 93 "unconnected-(U7-Pad39)") - (net 94 "unconnected-(U7-Pad40)") - (net 95 "unconnected-(U7-Pad41)") - (net 96 "unconnected-(U7-Pad42)") - (net 97 "unconnected-(U7-Pad43)") - (net 98 "unconnected-(U7-Pad44)") - (net 99 "unconnected-(U7-Pad45)") - (net 100 "unconnected-(U7-Pad46)") - (net 101 "unconnected-(U7-Pad47)") - (net 102 "unconnected-(U7-Pad48)") - (net 103 "unconnected-(Y1-Pad1)") - (net 104 "unconnected-(Y1-Pad2)") - (net 105 "unconnected-(Y2-Pad1)") - (net 106 "unconnected-(Y2-Pad2)") + (net 3 "GND") + (net 4 "Net-(BT1-Pad1)") + (net 5 "Net-(U7-Pad5)") + (net 6 "USB_VCC") + (net 7 "BAT_IN") + (net 8 "Net-(C8-Pad1)") + (net 9 "VCC") + (net 10 "Net-(C12-Pad1)") + (net 11 "PWM") + (net 12 "Net-(C13-Pad1)") + (net 13 "PWR_EN") + (net 14 "Net-(D1-Pad1)") + (net 15 "Net-(D3-Pad1)") + (net 16 "Net-(D4-Pad2)") + (net 17 "K1") + (net 18 "K1_DET") + (net 19 "Net-(D6-Pad2)") + (net 20 "unconnected-(J1-PadB5)") + (net 21 "unconnected-(J1-PadA8)") + (net 22 "unconnected-(J1-PadA5)") + (net 23 "unconnected-(J1-PadB8)") + (net 24 "unconnected-(J2-PadS)") + (net 25 "TICK_B") + (net 26 "TICK_A") + (net 27 "unconnected-(J3-PadS)") + (net 28 "EN_A") + (net 29 "Net-(Q3-Pad1)") + (net 30 "Net-(Q4-Pad1)") + (net 31 "EN_B") + (net 32 "Net-(R5-Pad2)") + (net 33 "BAT_ADC") + (net 34 "BAT_CHG_DET") + (net 35 "IIC_SDL") + (net 36 "IIC_SCL") + (net 37 "MUTE") + (net 38 "RUN_LED") + (net 39 "RXD") + (net 40 "TXD") + (net 41 "unconnected-(U5-Pad4)") + (net 42 "unconnected-(U6-Pad5)") + (net 43 "Net-(U7-Pad6)") + (net 44 "Net-(U7-Pad3)") + (net 45 "Net-(U7-Pad4)") + (net 46 "unconnected-(U7-Pad2)") + (net 47 "Net-(U7-Pad7)") + (net 48 "SW_D") + (net 49 "SW_L") + (net 50 "Net-(U7-Pad9)") + (net 51 "Net-(U7-Pad44)") + (net 52 "Net-(R13-Pad1)") + (net 53 "Net-(R11-Pad2)") + (net 54 "USB_DN") + (net 55 "USB_DP") + (net 56 "unconnected-(U7-Pad17)") + (net 57 "unconnected-(U7-Pad14)") + (net 58 "unconnected-(U7-Pad15)") + (net 59 "unconnected-(U7-Pad16)") + (net 60 "unconnected-(U7-Pad20)") + (net 61 "unconnected-(U7-Pad21)") + (net 62 "unconnected-(U7-Pad22)") + (net 63 "unconnected-(U7-Pad25)") + (net 64 "unconnected-(U7-Pad26)") + (net 65 "unconnected-(U7-Pad27)") + (net 66 "unconnected-(U7-Pad38)") + (net 67 "unconnected-(U7-Pad45)") + (net 68 "unconnected-(U7-Pad46)") (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "F.Cu") (tedit 5F68FEEE) (tstamp 0013ae5a-6b13-491b-83e1-6fe165e71981) - (at 104.2 146.1 180) + (at 112.3 149.9 -90) (descr "Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") (tags "capacitor") (property "Sheetfile" "Morse_code_PCB.kicad_sch") (property "Sheetname" "") (path "/1605f7b8-4cf5-422e-8edc-f3b2b476c1c1") (attr smd) - (fp_text reference "C2" (at 0 1.4) (layer "F.SilkS") + (fp_text reference "C2" (at 0 1.2 -270) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp f750b89a-6e6b-4d07-847d-c0551bec44ba) ) - (fp_text value "10nF" (at 0 1.43) (layer "F.Fab") + (fp_text value "10nF" (at 0 1.43 -270) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 527f3c91-95f0-4b0d-b126-85c3de1e0a0e) ) - (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (fp_text user "${REFERENCE}" (at 0 0 -270) (layer "F.Fab") (effects (font (size 0.4 0.4) (thickness 0.06))) (tstamp 7c8d2f28-70e0-4d09-928e-f0dced190bae) ) @@ -227,10 +189,10 @@ (fp_line (start -0.8 -0.4) (end 0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp 6d0c1974-6515-412e-8e18-513465bbe537)) (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp a8880393-5834-4dc2-bf36-03f93425a274)) (fp_line (start 0.8 0.4) (end -0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp e4912833-6a5a-4c11-ad08-e8951fecc674)) - (pad "1" smd roundrect locked (at -0.775 0 180) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 5 "Net-(C2-Pad1)") (pintype "passive") (tstamp 56e249b0-5f8f-4e93-8344-b755160032fa)) - (pad "2" smd roundrect locked (at 0.775 0 180) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 4 "GND") (pintype "passive") (tstamp 663c97a3-e325-40b0-b958-69e3a96d96b2)) + (pad "1" smd roundrect locked (at -0.775 0 270) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 28 "EN_A") (pintype "passive") (tstamp 56e249b0-5f8f-4e93-8344-b755160032fa)) + (pad "2" smd roundrect locked (at 0.775 0 270) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 3 "GND") (pintype "passive") (tstamp 663c97a3-e325-40b0-b958-69e3a96d96b2)) (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -238,6 +200,48 @@ ) ) + (footprint "Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder" (layer "F.Cu") + (tedit 5F6BB22C) (tstamp 02b59e3b-0b48-42a3-b20f-cf55afc4a498) + (at 91.85 135.72) + (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (property "Sheetfile" "Morse_code_PCB.kicad_sch") + (property "Sheetname" "") + (path "/5c64e8e8-6c2d-483f-aafc-e21e16486282") + (attr smd) + (fp_text reference "C16" (at 1.95 -0.02) (layer "F.SilkS") + (effects (font (size 0.5 0.5) (thickness 0.125))) + (tstamp 6af26b9e-6400-444e-8527-15e02169770e) + ) + (fp_text value "C" (at 0 1.16) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 311e7d6b-1a77-47ea-8ccb-30ee5d54793d) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.25 0.25) (thickness 0.04))) + (tstamp 684e3ce4-c618-4e88-b5d6-0d1ed8811c2a) + ) + (fp_line (start -0.115835 0.36) (end 0.115835 0.36) (layer "F.SilkS") (width 0.12) (tstamp 2bc25db2-f44e-42f0-9b80-76e31e41df78)) + (fp_line (start -0.115835 -0.36) (end 0.115835 -0.36) (layer "F.SilkS") (width 0.12) (tstamp 579e2e1b-a36a-4e8d-bded-52641f77f452)) + (fp_line (start 1.08 0.46) (end -1.08 0.46) (layer "F.CrtYd") (width 0.05) (tstamp 5efa460e-37f8-4da4-9dd0-46078e47c7b2)) + (fp_line (start -1.08 0.46) (end -1.08 -0.46) (layer "F.CrtYd") (width 0.05) (tstamp 6105d40b-7881-487a-b226-cc4a8d723fd7)) + (fp_line (start -1.08 -0.46) (end 1.08 -0.46) (layer "F.CrtYd") (width 0.05) (tstamp bcdb28f4-e7c3-4c59-88e8-cec27f1b2ca0)) + (fp_line (start 1.08 -0.46) (end 1.08 0.46) (layer "F.CrtYd") (width 0.05) (tstamp ed8554ed-ef04-4f3d-a301-df5e2389907f)) + (fp_line (start 0.5 -0.25) (end 0.5 0.25) (layer "F.Fab") (width 0.1) (tstamp 14ae0d04-7351-4b74-914e-ee80835af948)) + (fp_line (start 0.5 0.25) (end -0.5 0.25) (layer "F.Fab") (width 0.1) (tstamp 59b8bf0d-c185-40df-bb16-20ea960e1493)) + (fp_line (start -0.5 0.25) (end -0.5 -0.25) (layer "F.Fab") (width 0.1) (tstamp 7ffdf580-675e-46da-93c4-08319bf8426a)) + (fp_line (start -0.5 -0.25) (end 0.5 -0.25) (layer "F.Fab") (width 0.1) (tstamp ffc2fbf2-a3f5-4e45-9446-b4ee1f75b08e)) + (pad "1" smd roundrect (at -0.5675 0) (size 0.735 0.62) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 3 "GND") (pintype "passive") (tstamp e77b9723-376d-4560-be0d-26563be50d83)) + (pad "2" smd roundrect (at 0.5675 0) (size 0.735 0.62) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 45 "Net-(U7-Pad4)") (pintype "passive") (tstamp c4f3ee90-5c8e-4b82-9da9-0376d9763529)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") (tedit 5F68FEEE) (tstamp 0481ae54-85dc-4c8f-ace8-8b00b4191c14) (at 110.6 134.5 -90) @@ -270,9 +274,9 @@ (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp bc46e0d7-5a64-4f57-b94e-3cf197f104c0)) (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp d5106b60-b56c-4f88-b55e-53548875bdb0)) (pad "1" smd roundrect locked (at -0.825 0 270) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 44 "IIC_SCL") (pintype "passive") (tstamp 92a7f17c-e636-41ae-8d3e-5637a0eab505)) + (net 36 "IIC_SCL") (pintype "passive") (tstamp 92a7f17c-e636-41ae-8d3e-5637a0eab505)) (pad "2" smd roundrect locked (at 0.825 0 270) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 11 "VCC") (pintype "passive") (tstamp a2330042-3cca-4de3-a01c-eee8e0897098)) + (net 9 "VCC") (pintype "passive") (tstamp a2330042-3cca-4de3-a01c-eee8e0897098)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -289,7 +293,7 @@ (property "Sheetname" "") (path "/24690760-2269-4e12-a914-4a79ca256393") (attr smd) - (fp_text reference "R21" (at -3.9 -0.1) (layer "F.SilkS") + (fp_text reference "R21" (at -2.9 -0.1) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp 0f3c1f1f-bc5c-40a5-8d11-b338ec9f5c1a) ) @@ -312,9 +316,9 @@ (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp b8c3d89b-1d8d-4522-b91c-1df34f6c9bf1)) (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp c3aa655f-9a6d-45a1-bed4-a713137df7ca)) (pad "1" smd roundrect locked (at -0.825 0 180) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 45 "MUTE") (pintype "passive") (tstamp 99efd9c9-3c0d-4270-a27f-8664f64e1b81)) + (net 37 "MUTE") (pintype "passive") (tstamp 99efd9c9-3c0d-4270-a27f-8664f64e1b81)) (pad "2" smd roundrect locked (at 0.825 0 180) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 35 "Net-(Q4-Pad1)") (pintype "passive") (tstamp 69d06453-87b1-47cc-a62c-a599f560277b)) + (net 30 "Net-(Q4-Pad1)") (pintype "passive") (tstamp 69d06453-87b1-47cc-a62c-a599f560277b)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -322,48 +326,6 @@ ) ) - (footprint "Capacitor_SMD:C_0805_2012Metric" (layer "F.Cu") - (tedit 5F68FEEE) (tstamp 07dda897-b3e5-48e9-9d64-5128b51da11a) - (at 108.82 153.7 -90) - (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") - (tags "capacitor") - (property "Sheetfile" "Morse_code_PCB.kicad_sch") - (property "Sheetname" "") - (path "/5dd32f3d-960d-444f-be85-96d5b718d202") - (attr smd) - (fp_text reference "C4" (at 0 -0.08 180) (layer "F.SilkS") - (effects (font (size 0.5 0.5) (thickness 0.125))) - (tstamp 2d97daf5-8313-4876-b8d6-0e364fe2f148) - ) - (fp_text value "104" (at 0 1.68 90) (layer "F.Fab") - (effects (font (size 1 1) (thickness 0.15))) - (tstamp 9a744607-d61d-4f17-b3bc-8c366b63de19) - ) - (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") - (effects (font (size 0.5 0.5) (thickness 0.08))) - (tstamp f8cf072c-c4fc-4d55-b98b-7c6c391e32de) - ) - (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer "F.SilkS") (width 0.12) (tstamp 5c6445f2-55d2-4158-9cae-a532a6f47f3c)) - (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer "F.SilkS") (width 0.12) (tstamp 720bbb24-9924-4a02-9dbf-a7fbaed0aefc)) - (fp_line (start -1.7 -0.98) (end 1.7 -0.98) (layer "F.CrtYd") (width 0.05) (tstamp 54f83d66-d17d-4991-ae54-0b7e54a802b4)) - (fp_line (start 1.7 -0.98) (end 1.7 0.98) (layer "F.CrtYd") (width 0.05) (tstamp 6df6b11d-ad92-420c-803d-b7655c958175)) - (fp_line (start -1.7 0.98) (end -1.7 -0.98) (layer "F.CrtYd") (width 0.05) (tstamp 8a5ff09f-7252-4a5d-bcb9-7621274b5a31)) - (fp_line (start 1.7 0.98) (end -1.7 0.98) (layer "F.CrtYd") (width 0.05) (tstamp fe2655a8-13d8-4039-aba4-1bba81ac6fee)) - (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp 14d192b0-885c-455a-b2a6-3fdf6a32d351)) - (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 1b7f84f8-1316-4230-98de-13f85760a252)) - (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 75b9c91b-0604-4669-a4db-6d5324694214)) - (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp f98aefbe-1069-4ca1-858e-dbbdbc56769e)) - (pad "1" smd roundrect locked (at -0.95 0 270) (size 1 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 7 "Net-(C4-Pad1)") (pintype "passive") (tstamp e59a45f7-0f09-4246-896d-98146d3ce6bd)) - (pad "2" smd roundrect locked (at 0.95 0 270) (size 1 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 4 "GND") (pintype "passive") (tstamp c8ebcf56-ab51-4286-a3b5-56505a1e9990)) - (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl" - (offset (xyz 0 0 0)) - (scale (xyz 1 1 1)) - (rotate (xyz 0 0 0)) - ) - ) - (footprint "Package_TO_SOT_SMD:SOT-23" (layer "F.Cu") (tedit 5FA16958) (tstamp 0c029347-f6a0-49a4-96c0-0365a0ed1131) (at 86.2 142.4 180) @@ -399,9 +361,9 @@ (fp_line (start -0.65 1.45) (end -0.65 -1.125) (layer "F.Fab") (width 0.1) (tstamp 4e47e4af-bbb8-4836-acf7-ed8caa23763c)) (fp_line (start 0.65 -1.45) (end 0.65 1.45) (layer "F.Fab") (width 0.1) (tstamp 5427ddc0-d96f-43bd-a5d9-b8b11c7e0a97)) (pad "1" smd roundrect locked (at -0.9375 -0.95 180) (size 1.475 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 34 "Net-(Q3-Pad1)") (pinfunction "G") (pintype "input") (tstamp 07bb4810-d4e8-4e11-aede-2cf469f26b8a)) + (net 29 "Net-(Q3-Pad1)") (pinfunction "G") (pintype "input") (tstamp 07bb4810-d4e8-4e11-aede-2cf469f26b8a)) (pad "2" smd roundrect locked (at -0.9375 0.95 180) (size 1.475 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 4 "GND") (pinfunction "S") (pintype "passive") (tstamp 4548ad24-3854-4916-8586-10e817dd1efb)) + (net 3 "GND") (pinfunction "S") (pintype "passive") (tstamp 4548ad24-3854-4916-8586-10e817dd1efb)) (pad "3" smd roundrect locked (at 0.9375 0 180) (size 1.475 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (net 2 "Net-(BZ1-Pad2)") (pinfunction "D") (pintype "passive") (tstamp e1317347-9d56-410c-919e-b3874fc7384d)) (model "${KICAD6_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23.wrl" @@ -420,7 +382,7 @@ (property "Sheetname" "") (path "/972eb069-8d6d-41f6-83d3-1d7e45627208") (attr through_hole) - (fp_text reference "BZ1" (at 2.5 -4.3) (layer "F.SilkS") + (fp_text reference "BZ1" (at 2.470785 -2.4) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp 1081cebc-8caa-46c9-b438-2af5f67fb199) ) @@ -458,7 +420,7 @@ (property "Sheetname" "") (path "/826abb1f-2fe3-453e-845f-518a2402a58a") (attr smd) - (fp_text reference "R20" (at 3.8 0.1) (layer "F.SilkS") + (fp_text reference "R20" (at 2.9 0.1) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp 2a3652ef-ce36-4ad0-96bd-d8ba92ea81fa) ) @@ -481,9 +443,9 @@ (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 1dd7c82f-3603-4684-b0f4-3140da18ccb8)) (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp b2849f68-fe47-4de0-b285-7371cb755c79)) (pad "1" smd roundrect locked (at -0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 35 "Net-(Q4-Pad1)") (pintype "passive") (tstamp 9f4e0dc6-c949-435b-b299-71bdf5db5a1d)) + (net 30 "Net-(Q4-Pad1)") (pintype "passive") (tstamp 9f4e0dc6-c949-435b-b299-71bdf5db5a1d)) (pad "2" smd roundrect locked (at 0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 11 "VCC") (pintype "passive") (tstamp 8192d00b-2688-4217-9445-b8f20cd73889)) + (net 9 "VCC") (pintype "passive") (tstamp 8192d00b-2688-4217-9445-b8f20cd73889)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -493,15 +455,15 @@ (footprint "Crystal:Crystal_SMD_3215-2Pin_3.2x1.5mm" (layer "F.Cu") (tedit 5A0FD1B2) (tstamp 0f9d7c27-bba7-4456-9c56-2e54a0e1cfc7) - (at 83.55 129.15) + (at 95.08 137.64 180) (descr "SMD Crystal FC-135 https://support.epson.biz/td/api/doc_check.php?dl=brief_FC-135R_en.pdf") (tags "SMD SMT Crystal") (property "Sheetfile" "Morse_code_PCB.kicad_sch") (property "Sheetname" "") (path "/313df197-02c6-46f5-9c77-acf80bf7847c") (attr smd) - (fp_text reference "Y2" (at 0 -2) (layer "F.SilkS") - (effects (font (size 1 1) (thickness 0.15))) + (fp_text reference "Y2" (at 0 -0.06) (layer "F.SilkS") + (effects (font (size 0.8 0.8) (thickness 0.15))) (tstamp 71c8be64-72dc-4fdb-89ed-c87b8f3c7fb2) ) (fp_text value "32.768k" (at 0 2) (layer "F.Fab") @@ -522,10 +484,10 @@ (fp_line (start -1.6 0.75) (end 1.6 0.75) (layer "F.Fab") (width 0.1) (tstamp 3ed125be-9ebb-4587-81a9-90fd817cc522)) (fp_line (start -1.6 -0.75) (end 1.6 -0.75) (layer "F.Fab") (width 0.1) (tstamp 82287f6b-0ca6-4089-b453-d8160d1dcf88)) (fp_line (start -1.6 -0.75) (end -1.6 0.75) (layer "F.Fab") (width 0.1) (tstamp e30122e4-ea88-4b02-a384-8ad6e83b047b)) - (pad "1" smd rect (at 1.25 0) (size 1 1.8) (layers "F.Cu" "F.Paste" "F.Mask") - (net 105 "unconnected-(Y2-Pad1)") (pinfunction "1") (pintype "passive") (tstamp f6476aad-a9c9-480d-bee2-e9e81c828d98)) - (pad "2" smd rect (at -1.25 0) (size 1 1.8) (layers "F.Cu" "F.Paste" "F.Mask") - (net 106 "unconnected-(Y2-Pad2)") (pinfunction "2") (pintype "passive") (tstamp 923a80bf-d2d9-401a-af43-22072c8805be)) + (pad "1" smd rect (at 1.25 0 180) (size 1 1.8) (layers "F.Cu" "F.Paste" "F.Mask") + (net 45 "Net-(U7-Pad4)") (pinfunction "1") (pintype "passive") (tstamp f6476aad-a9c9-480d-bee2-e9e81c828d98)) + (pad "2" smd rect (at -1.25 0 180) (size 1 1.8) (layers "F.Cu" "F.Paste" "F.Mask") + (net 44 "Net-(U7-Pad3)") (pinfunction "2") (pintype "passive") (tstamp 923a80bf-d2d9-401a-af43-22072c8805be)) (model "${KICAD6_3DMODEL_DIR}/Crystal.3dshapes/Crystal_SMD_3215-2Pin_3.2x1.5mm.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -535,14 +497,14 @@ (footprint "Package_QFP:LQFP-48_7x7mm_P0.5mm" (layer "F.Cu") (tedit 5D9F72AF) (tstamp 122444aa-37c6-4f37-8a96-e042b19da1f1) - (at 107.65 116.6) + (at 103.5 143.3) (descr "LQFP, 48 Pin (https://www.analog.com/media/en/technical-documentation/data-sheets/ltc2358-16.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py") (tags "LQFP QFP") (property "Sheetfile" "Morse_code_PCB.kicad_sch") (property "Sheetname" "") (path "/0677197f-925d-49ae-b672-407868493e87") (attr smd) - (fp_text reference "U7" (at 0 -5.85) (layer "F.SilkS") + (fp_text reference "U7" (at -2.1 -2.2) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp 1b161928-e34e-4737-a937-0395bfcf9fbe) ) @@ -593,101 +555,101 @@ (fp_line (start -3.5 -2.5) (end -2.5 -3.5) (layer "F.Fab") (width 0.1) (tstamp a4a64aca-ac00-4dd1-9280-1a7cf317ce60)) (fp_line (start 3.5 -3.5) (end 3.5 3.5) (layer "F.Fab") (width 0.1) (tstamp ac71f9aa-af9e-43a4-9e2b-a0a862fda3dc)) (pad "1" smd roundrect (at -4.1625 -2.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 55 "unconnected-(U7-Pad1)") (pinfunction "VBAT") (pintype "power_in") (tstamp b6a5d44f-6a3f-47b5-8508-3bc4b928843c)) + (net 4 "Net-(BT1-Pad1)") (pinfunction "VBAT") (pintype "power_in") (tstamp b6a5d44f-6a3f-47b5-8508-3bc4b928843c)) (pad "2" smd roundrect (at -4.1625 -2.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 56 "unconnected-(U7-Pad2)") (pinfunction "PC13") (pintype "bidirectional") (tstamp 26743561-71ab-4333-a952-cbbad998daa2)) + (net 46 "unconnected-(U7-Pad2)") (pinfunction "PC13") (pintype "bidirectional") (tstamp 26743561-71ab-4333-a952-cbbad998daa2)) (pad "3" smd roundrect (at -4.1625 -1.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 57 "unconnected-(U7-Pad3)") (pinfunction "PC14") (pintype "bidirectional") (tstamp 00d94c85-99b6-437a-8110-5c4787b5e47f)) + (net 44 "Net-(U7-Pad3)") (pinfunction "PC14") (pintype "bidirectional") (tstamp 00d94c85-99b6-437a-8110-5c4787b5e47f)) (pad "4" smd roundrect (at -4.1625 -1.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 58 "unconnected-(U7-Pad4)") (pinfunction "PC15") (pintype "bidirectional") (tstamp e5d4867e-1252-43ed-888d-959904cd4ed6)) + (net 45 "Net-(U7-Pad4)") (pinfunction "PC15") (pintype "bidirectional") (tstamp e5d4867e-1252-43ed-888d-959904cd4ed6)) (pad "5" smd roundrect (at -4.1625 -0.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 59 "unconnected-(U7-Pad5)") (pinfunction "PD0") (pintype "input") (tstamp 518a24d0-27c5-426e-940c-a357429cad49)) + (net 5 "Net-(U7-Pad5)") (pinfunction "PD0") (pintype "input") (tstamp 518a24d0-27c5-426e-940c-a357429cad49)) (pad "6" smd roundrect (at -4.1625 -0.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 60 "unconnected-(U7-Pad6)") (pinfunction "PD1") (pintype "input") (tstamp 73012b44-10f4-4156-88ea-762159928756)) + (net 43 "Net-(U7-Pad6)") (pinfunction "PD1") (pintype "input") (tstamp 73012b44-10f4-4156-88ea-762159928756)) (pad "7" smd roundrect (at -4.1625 0.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 61 "unconnected-(U7-Pad7)") (pinfunction "NRST") (pintype "input") (tstamp f85406ac-c9ab-4ea6-b644-1931d9defc76)) + (net 47 "Net-(U7-Pad7)") (pinfunction "NRST") (pintype "input") (tstamp f85406ac-c9ab-4ea6-b644-1931d9defc76)) (pad "8" smd roundrect (at -4.1625 0.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 62 "unconnected-(U7-Pad8)") (pinfunction "VSSA") (pintype "power_in") (tstamp 906c1893-3897-4e24-9fdd-c90c7fb9242c)) + (net 3 "GND") (pinfunction "VSSA") (pintype "power_in") (tstamp 906c1893-3897-4e24-9fdd-c90c7fb9242c)) (pad "9" smd roundrect (at -4.1625 1.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 63 "unconnected-(U7-Pad9)") (pinfunction "VDDA") (pintype "power_in") (tstamp bc88214e-07aa-453d-a4d6-d40e0ac901ec)) + (net 50 "Net-(U7-Pad9)") (pinfunction "VDDA") (pintype "power_in") (tstamp bc88214e-07aa-453d-a4d6-d40e0ac901ec)) (pad "10" smd roundrect (at -4.1625 1.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 64 "unconnected-(U7-Pad10)") (pinfunction "PA0") (pintype "bidirectional") (tstamp 3f3bf656-03bd-4dd1-beca-d711dd5b0a6d)) + (net 33 "BAT_ADC") (pinfunction "PA0") (pintype "bidirectional") (tstamp 3f3bf656-03bd-4dd1-beca-d711dd5b0a6d)) (pad "11" smd roundrect (at -4.1625 2.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 65 "unconnected-(U7-Pad11)") (pinfunction "PA1") (pintype "bidirectional") (tstamp 415bdf11-b2b2-493b-8465-3679eb2ae03b)) + (net 34 "BAT_CHG_DET") (pinfunction "PA1") (pintype "bidirectional") (tstamp 415bdf11-b2b2-493b-8465-3679eb2ae03b)) (pad "12" smd roundrect (at -4.1625 2.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 66 "unconnected-(U7-Pad12)") (pinfunction "PA2") (pintype "bidirectional") (tstamp cce62e03-9252-440e-8cc0-1d19c69f3336)) + (net 11 "PWM") (pinfunction "PA2") (pintype "bidirectional") (tstamp cce62e03-9252-440e-8cc0-1d19c69f3336)) (pad "13" smd roundrect (at -2.75 4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 67 "unconnected-(U7-Pad13)") (pinfunction "PA3") (pintype "bidirectional") (tstamp 9fbcf246-9897-43b2-ba86-188b08b53625)) + (net 37 "MUTE") (pinfunction "PA3") (pintype "bidirectional") (tstamp 9fbcf246-9897-43b2-ba86-188b08b53625)) (pad "14" smd roundrect (at -2.25 4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 68 "unconnected-(U7-Pad14)") (pinfunction "PA4") (pintype "bidirectional") (tstamp ae8d8d2b-c447-4644-b62b-812c88c9dedf)) + (net 57 "unconnected-(U7-Pad14)") (pinfunction "PA4") (pintype "bidirectional") (tstamp ae8d8d2b-c447-4644-b62b-812c88c9dedf)) (pad "15" smd roundrect (at -1.75 4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 69 "unconnected-(U7-Pad15)") (pinfunction "PA5") (pintype "bidirectional") (tstamp 23b9fc96-07a3-433d-87f2-28a7e7efde76)) + (net 58 "unconnected-(U7-Pad15)") (pinfunction "PA5") (pintype "bidirectional") (tstamp 23b9fc96-07a3-433d-87f2-28a7e7efde76)) (pad "16" smd roundrect (at -1.25 4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 70 "unconnected-(U7-Pad16)") (pinfunction "PA6") (pintype "bidirectional") (tstamp 7731a98b-5434-4e9a-b600-6cbd5203683d)) + (net 59 "unconnected-(U7-Pad16)") (pinfunction "PA6") (pintype "bidirectional") (tstamp 7731a98b-5434-4e9a-b600-6cbd5203683d)) (pad "17" smd roundrect (at -0.75 4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 71 "unconnected-(U7-Pad17)") (pinfunction "PA7") (pintype "bidirectional") (tstamp 5f8bae37-8864-4571-979d-5c4cc19fdec8)) + (net 56 "unconnected-(U7-Pad17)") (pinfunction "PA7") (pintype "bidirectional") (tstamp 5f8bae37-8864-4571-979d-5c4cc19fdec8)) (pad "18" smd roundrect (at -0.25 4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 72 "unconnected-(U7-Pad18)") (pinfunction "PB0") (pintype "bidirectional") (tstamp 385944b7-b92f-48d1-aba2-2e2851ac8880)) + (net 26 "TICK_A") (pinfunction "PB0") (pintype "bidirectional") (tstamp 385944b7-b92f-48d1-aba2-2e2851ac8880)) (pad "19" smd roundrect (at 0.25 4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 73 "unconnected-(U7-Pad19)") (pinfunction "PB1") (pintype "bidirectional") (tstamp 4ce5c795-ab4e-40a8-897d-6e10399489fd)) + (net 25 "TICK_B") (pinfunction "PB1") (pintype "bidirectional") (tstamp 4ce5c795-ab4e-40a8-897d-6e10399489fd)) (pad "20" smd roundrect (at 0.75 4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 74 "unconnected-(U7-Pad20)") (pinfunction "PB2") (pintype "bidirectional") (tstamp 2d62d068-7f95-4aff-bc8f-565e860267a9)) + (net 60 "unconnected-(U7-Pad20)") (pinfunction "PB2") (pintype "bidirectional") (tstamp 2d62d068-7f95-4aff-bc8f-565e860267a9)) (pad "21" smd roundrect (at 1.25 4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 75 "unconnected-(U7-Pad21)") (pinfunction "PB10") (pintype "bidirectional") (tstamp d6240d91-86de-4b6a-806d-e6e8f0a0dc34)) + (net 61 "unconnected-(U7-Pad21)") (pinfunction "PB10") (pintype "bidirectional") (tstamp d6240d91-86de-4b6a-806d-e6e8f0a0dc34)) (pad "22" smd roundrect (at 1.75 4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 76 "unconnected-(U7-Pad22)") (pinfunction "PB11") (pintype "bidirectional") (tstamp 303c868c-1254-475f-b38d-55ba250287e9)) + (net 62 "unconnected-(U7-Pad22)") (pinfunction "PB11") (pintype "bidirectional") (tstamp 303c868c-1254-475f-b38d-55ba250287e9)) (pad "23" smd roundrect (at 2.25 4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 77 "unconnected-(U7-Pad23)") (pinfunction "VSS") (pintype "power_in") (tstamp 17d04311-4724-4d4c-89c0-09bc6b70331f)) + (net 3 "GND") (pinfunction "VSS") (pintype "power_in") (tstamp 17d04311-4724-4d4c-89c0-09bc6b70331f)) (pad "24" smd roundrect (at 2.75 4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 78 "unconnected-(U7-Pad24)") (pinfunction "VDD") (pintype "power_in") (tstamp 54d2a5a5-945e-4128-81a0-01cbf07192d0)) + (net 9 "VCC") (pinfunction "VDD") (pintype "power_in") (tstamp 54d2a5a5-945e-4128-81a0-01cbf07192d0)) (pad "25" smd roundrect (at 4.1625 2.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 79 "unconnected-(U7-Pad25)") (pinfunction "PB12") (pintype "bidirectional") (tstamp b59e27bb-244d-4f1c-a3de-44fff5adb249)) + (net 63 "unconnected-(U7-Pad25)") (pinfunction "PB12") (pintype "bidirectional") (tstamp b59e27bb-244d-4f1c-a3de-44fff5adb249)) (pad "26" smd roundrect (at 4.1625 2.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 80 "unconnected-(U7-Pad26)") (pinfunction "PB13") (pintype "bidirectional") (tstamp 059c88fc-4f58-4a76-95c2-c05d80536981)) + (net 64 "unconnected-(U7-Pad26)") (pinfunction "PB13") (pintype "bidirectional") (tstamp 059c88fc-4f58-4a76-95c2-c05d80536981)) (pad "27" smd roundrect (at 4.1625 1.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 81 "unconnected-(U7-Pad27)") (pinfunction "PB14") (pintype "bidirectional") (tstamp bf70f41d-bbc5-4e5a-8e43-a8508213f819)) + (net 65 "unconnected-(U7-Pad27)") (pinfunction "PB14") (pintype "bidirectional") (tstamp bf70f41d-bbc5-4e5a-8e43-a8508213f819)) (pad "28" smd roundrect (at 4.1625 1.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 82 "unconnected-(U7-Pad28)") (pinfunction "PB15") (pintype "bidirectional") (tstamp 914507c3-ce29-4dbb-96fc-983ec662129a)) + (net 38 "RUN_LED") (pinfunction "PB15") (pintype "bidirectional") (tstamp 914507c3-ce29-4dbb-96fc-983ec662129a)) (pad "29" smd roundrect (at 4.1625 0.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 83 "unconnected-(U7-Pad29)") (pinfunction "PA8") (pintype "bidirectional") (tstamp e30328f3-3947-4517-b659-02fbb9cd86da)) + (net 13 "PWR_EN") (pinfunction "PA8") (pintype "bidirectional") (tstamp e30328f3-3947-4517-b659-02fbb9cd86da)) (pad "30" smd roundrect (at 4.1625 0.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 84 "unconnected-(U7-Pad30)") (pinfunction "PA9") (pintype "bidirectional") (tstamp e7ee6de5-1053-40ed-9c11-f97464fc0a39)) + (net 39 "RXD") (pinfunction "PA9") (pintype "bidirectional") (tstamp e7ee6de5-1053-40ed-9c11-f97464fc0a39)) (pad "31" smd roundrect (at 4.1625 -0.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 85 "unconnected-(U7-Pad31)") (pinfunction "PA10") (pintype "bidirectional") (tstamp bbfa10e6-7a03-4de4-931d-d8de35be2327)) + (net 40 "TXD") (pinfunction "PA10") (pintype "bidirectional") (tstamp bbfa10e6-7a03-4de4-931d-d8de35be2327)) (pad "32" smd roundrect (at 4.1625 -0.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 86 "unconnected-(U7-Pad32)") (pinfunction "PA11") (pintype "bidirectional") (tstamp 06048be5-3da1-4e96-a8de-b8dc57c3882a)) + (net 54 "USB_DN") (pinfunction "PA11") (pintype "bidirectional") (tstamp 06048be5-3da1-4e96-a8de-b8dc57c3882a)) (pad "33" smd roundrect (at 4.1625 -1.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 87 "unconnected-(U7-Pad33)") (pinfunction "PA12") (pintype "bidirectional") (tstamp 6645415c-654e-4474-b18d-e48b4aa9de43)) + (net 55 "USB_DP") (pinfunction "PA12") (pintype "bidirectional") (tstamp 6645415c-654e-4474-b18d-e48b4aa9de43)) (pad "34" smd roundrect (at 4.1625 -1.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 88 "unconnected-(U7-Pad34)") (pinfunction "PA13") (pintype "bidirectional") (tstamp 321c7489-5824-42bb-a487-7b2dc041d03d)) + (net 48 "SW_D") (pinfunction "PA13") (pintype "bidirectional") (tstamp 321c7489-5824-42bb-a487-7b2dc041d03d)) (pad "35" smd roundrect (at 4.1625 -2.25) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 89 "unconnected-(U7-Pad35)") (pinfunction "VSS") (pintype "power_in") (tstamp 562efb31-209f-48d8-beb6-8e3e7b978fd1)) + (net 3 "GND") (pinfunction "VSS") (pintype "power_in") (tstamp 562efb31-209f-48d8-beb6-8e3e7b978fd1)) (pad "36" smd roundrect (at 4.1625 -2.75) (size 1.475 0.3) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 90 "unconnected-(U7-Pad36)") (pinfunction "VDD") (pintype "power_in") (tstamp 9baee288-d38d-44e5-a987-20caa6639b87)) + (net 9 "VCC") (pinfunction "VDD") (pintype "power_in") (tstamp 9baee288-d38d-44e5-a987-20caa6639b87)) (pad "37" smd roundrect (at 2.75 -4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 91 "unconnected-(U7-Pad37)") (pinfunction "PA14") (pintype "bidirectional") (tstamp 7b8d40e1-c7d3-4097-b2a0-23ef1a8c892a)) + (net 49 "SW_L") (pinfunction "PA14") (pintype "bidirectional") (tstamp 7b8d40e1-c7d3-4097-b2a0-23ef1a8c892a)) (pad "38" smd roundrect (at 2.25 -4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 92 "unconnected-(U7-Pad38)") (pinfunction "PA15") (pintype "bidirectional") (tstamp 94bad641-dafb-4737-835c-61dceeda5b51)) + (net 66 "unconnected-(U7-Pad38)") (pinfunction "PA15") (pintype "bidirectional") (tstamp 94bad641-dafb-4737-835c-61dceeda5b51)) (pad "39" smd roundrect (at 1.75 -4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 93 "unconnected-(U7-Pad39)") (pinfunction "PB3") (pintype "bidirectional") (tstamp 94ee5b09-e11e-41ef-960b-b3649a1898d3)) + (net 18 "K1_DET") (pinfunction "PB3") (pintype "bidirectional") (tstamp 94ee5b09-e11e-41ef-960b-b3649a1898d3)) (pad "40" smd roundrect (at 1.25 -4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 94 "unconnected-(U7-Pad40)") (pinfunction "PB4") (pintype "bidirectional") (tstamp 8e88eec9-6a3b-417c-8c14-b1e5ad41ffe9)) + (net 28 "EN_A") (pinfunction "PB4") (pintype "bidirectional") (tstamp 8e88eec9-6a3b-417c-8c14-b1e5ad41ffe9)) (pad "41" smd roundrect (at 0.75 -4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 95 "unconnected-(U7-Pad41)") (pinfunction "PB5") (pintype "bidirectional") (tstamp 01229798-804b-4f54-b150-c0a0135b4a26)) + (net 31 "EN_B") (pinfunction "PB5") (pintype "bidirectional") (tstamp 01229798-804b-4f54-b150-c0a0135b4a26)) (pad "42" smd roundrect (at 0.25 -4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 96 "unconnected-(U7-Pad42)") (pinfunction "PB6") (pintype "bidirectional") (tstamp 7d07a960-c044-440f-b4fc-f82dab89c834)) + (net 36 "IIC_SCL") (pinfunction "PB6") (pintype "bidirectional") (tstamp 7d07a960-c044-440f-b4fc-f82dab89c834)) (pad "43" smd roundrect (at -0.25 -4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 97 "unconnected-(U7-Pad43)") (pinfunction "PB7") (pintype "bidirectional") (tstamp bb71b2bd-0f78-481e-8753-efc6bbc589b1)) + (net 35 "IIC_SDL") (pinfunction "PB7") (pintype "bidirectional") (tstamp bb71b2bd-0f78-481e-8753-efc6bbc589b1)) (pad "44" smd roundrect (at -0.75 -4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 98 "unconnected-(U7-Pad44)") (pinfunction "BOOT0") (pintype "input") (tstamp ca43fb8d-7115-422d-b6e2-f4d8a7ae9a35)) + (net 51 "Net-(U7-Pad44)") (pinfunction "BOOT0") (pintype "input") (tstamp ca43fb8d-7115-422d-b6e2-f4d8a7ae9a35)) (pad "45" smd roundrect (at -1.25 -4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 99 "unconnected-(U7-Pad45)") (pinfunction "PB8") (pintype "bidirectional") (tstamp e177f58d-f90d-46a2-8fe6-edc99f7c70d3)) + (net 67 "unconnected-(U7-Pad45)") (pinfunction "PB8") (pintype "bidirectional") (tstamp e177f58d-f90d-46a2-8fe6-edc99f7c70d3)) (pad "46" smd roundrect (at -1.75 -4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 100 "unconnected-(U7-Pad46)") (pinfunction "PB9") (pintype "bidirectional") (tstamp f63b9842-8ea3-4324-8fa9-05b811cf01a9)) + (net 68 "unconnected-(U7-Pad46)") (pinfunction "PB9") (pintype "bidirectional") (tstamp f63b9842-8ea3-4324-8fa9-05b811cf01a9)) (pad "47" smd roundrect (at -2.25 -4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 101 "unconnected-(U7-Pad47)") (pinfunction "VSS") (pintype "power_in") (tstamp ddb4ce85-7371-410f-95b3-f8ae6ad3c1aa)) + (net 3 "GND") (pinfunction "VSS") (pintype "power_in") (tstamp ddb4ce85-7371-410f-95b3-f8ae6ad3c1aa)) (pad "48" smd roundrect (at -2.75 -4.1625) (size 0.3 1.475) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 102 "unconnected-(U7-Pad48)") (pinfunction "VDD") (pintype "power_in") (tstamp 2ab16679-030c-4500-9313-4ba67d431f36)) + (net 9 "VCC") (pinfunction "VDD") (pintype "power_in") (tstamp 2ab16679-030c-4500-9313-4ba67d431f36)) (model "${KICAD6_3DMODEL_DIR}/Package_QFP.3dshapes/LQFP-48_7x7mm_P0.5mm.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -697,7 +659,7 @@ (footprint "MY:SIP-2" (layer "F.Cu") (tedit 0) (tstamp 13ad680e-d208-40a6-b403-ef202122bcc4) - (at 127.56 155.23 90) + (at 127.8 155.23 90) (property "Sheetfile" "Morse_code_PCB.kicad_sch") (property "Sheetname" "") (path "/13d1db83-c817-49c7-a180-de3dec8b3297") @@ -719,9 +681,9 @@ (fp_line (start 2.12 1.25) (end -2.12 1.25) (layer "F.CrtYd") (width 0.05) (tstamp 7ce289fc-e82b-47dd-826c-86264ba6dd0d)) (fp_line (start -2.12 -1.25) (end 2.12 -1.25) (layer "F.CrtYd") (width 0.05) (tstamp bb8bc7b4-b8fe-4ee9-91e8-18bd60dc4d45)) (pad "1" thru_hole oval (at -1.27 0 90) (size 1.2 2) (drill 0.8) (layers *.Cu *.Mask) - (net 9 "BAT_IN") (pinfunction "Pin_1") (pintype "passive") (tstamp c00c7071-f76e-4e9c-af7a-43aa1fd940d5)) + (net 7 "BAT_IN") (pinfunction "Pin_1") (pintype "passive") (tstamp c00c7071-f76e-4e9c-af7a-43aa1fd940d5)) (pad "2" thru_hole oval (at 1.27 0 90) (size 1.2 2) (drill 0.8) (layers *.Cu *.Mask) - (net 4 "GND") (pinfunction "Pin_2") (pintype "passive") (tstamp c7ae6a5e-8238-4a87-a23c-93a79f4d242e)) + (net 3 "GND") (pinfunction "Pin_2") (pintype "passive") (tstamp c7ae6a5e-8238-4a87-a23c-93a79f4d242e)) ) (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") @@ -733,8 +695,8 @@ (property "Sheetname" "") (path "/5fe77581-e082-411e-b0a9-d3ca1deb21c8") (attr smd) - (fp_text reference "R18" (at -0.2 1.6) (layer "F.SilkS") - (effects (font (size 1 1) (thickness 0.15))) + (fp_text reference "R18" (at -2.6 0) (layer "F.SilkS") + (effects (font (size 0.8 0.8) (thickness 0.15))) (tstamp 5215e55b-0b9f-4775-bad9-a5a13a7b1b56) ) (fp_text value "10K" (at 0 1.43) (layer "F.Fab") @@ -756,9 +718,9 @@ (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 69818b61-38f1-4c0a-9c59-f8bf38abedb4)) (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp ab502924-2cbd-49d5-b615-0b2b97faa268)) (pad "1" smd roundrect locked (at -0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 43 "IIC_SDL") (pintype "passive") (tstamp d72465aa-aacc-4de2-a79a-3a3f1f51029f)) + (net 35 "IIC_SDL") (pintype "passive") (tstamp d72465aa-aacc-4de2-a79a-3a3f1f51029f)) (pad "2" smd roundrect locked (at 0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 11 "VCC") (pintype "passive") (tstamp 45d0be27-92b3-4bdb-8caf-0545fa02b1bd)) + (net 9 "VCC") (pintype "passive") (tstamp 45d0be27-92b3-4bdb-8caf-0545fa02b1bd)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -766,6 +728,48 @@ ) ) + (footprint "Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder" (layer "F.Cu") + (tedit 5F6BB22C) (tstamp 1f4f382b-33fa-48ed-8275-67996b02a002) + (at 91.84 138.33) + (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "capacitor handsolder") + (property "Sheetfile" "Morse_code_PCB.kicad_sch") + (property "Sheetname" "") + (path "/c46704c8-86a9-4f34-9da9-6591a57c007e") + (attr smd) + (fp_text reference "C14" (at -1.44 -0.03 90) (layer "F.SilkS") + (effects (font (size 0.5 0.5) (thickness 0.125))) + (tstamp b39cd62a-05d5-45b8-b3a1-d2f855a03f9e) + ) + (fp_text value "C" (at 0 1.16) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp a6293838-577d-4da9-a5a7-ca09d375fd6d) + ) + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (effects (font (size 0.25 0.25) (thickness 0.04))) + (tstamp 43fc1e82-5e3e-4778-97d5-5aab5f5cda80) + ) + (fp_line (start -0.115835 0.36) (end 0.115835 0.36) (layer "F.SilkS") (width 0.12) (tstamp 1b29494c-5043-406d-bf79-c0615c997c7d)) + (fp_line (start -0.115835 -0.36) (end 0.115835 -0.36) (layer "F.SilkS") (width 0.12) (tstamp ced23a17-cc8a-4c5d-95f6-018b51394a9f)) + (fp_line (start 1.08 0.46) (end -1.08 0.46) (layer "F.CrtYd") (width 0.05) (tstamp 6bc9a906-3e2d-4011-8199-3846424d52ba)) + (fp_line (start -1.08 0.46) (end -1.08 -0.46) (layer "F.CrtYd") (width 0.05) (tstamp 8acaac88-7019-4252-84c9-306dcfcc2788)) + (fp_line (start 1.08 -0.46) (end 1.08 0.46) (layer "F.CrtYd") (width 0.05) (tstamp ef7ac9b1-db97-468d-83bd-7a544b867249)) + (fp_line (start -1.08 -0.46) (end 1.08 -0.46) (layer "F.CrtYd") (width 0.05) (tstamp efb7663b-478f-437d-8e78-460792d39854)) + (fp_line (start -0.5 0.25) (end -0.5 -0.25) (layer "F.Fab") (width 0.1) (tstamp 1df7d795-7db4-4143-a50f-46eb18061ee1)) + (fp_line (start 0.5 0.25) (end -0.5 0.25) (layer "F.Fab") (width 0.1) (tstamp 1e5e66ba-c1fb-429d-8298-15aaf7561e0e)) + (fp_line (start -0.5 -0.25) (end 0.5 -0.25) (layer "F.Fab") (width 0.1) (tstamp 5406c20d-7637-4803-8080-5c028aedcec5)) + (fp_line (start 0.5 -0.25) (end 0.5 0.25) (layer "F.Fab") (width 0.1) (tstamp 9c0c20c0-f8b4-4d6b-9edd-afcb84c71847)) + (pad "1" smd roundrect (at -0.5675 0) (size 0.735 0.62) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 3 "GND") (pintype "passive") (tstamp 1a289dcf-69c9-49a0-bec6-52d900eb2efb)) + (pad "2" smd roundrect (at 0.5675 0) (size 0.735 0.62) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 43 "Net-(U7-Pad6)") (pintype "passive") (tstamp d10143d8-9195-4117-b528-293ccad4be7a)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + (footprint "Diode_SMD:D_SOD-523" (layer "F.Cu") (tedit 586419F0) (tstamp 201f2701-cc61-42d9-86cf-3a7042359134) (at 96.57 159.87 90) @@ -805,9 +809,9 @@ (fp_line (start -0.2 0) (end -0.35 0) (layer "F.Fab") (width 0.1) (tstamp e87b51ca-b98c-42a3-901e-17da6ae311d5)) (fp_line (start 0.65 -0.45) (end 0.65 0.45) (layer "F.Fab") (width 0.1) (tstamp f3b0ce1d-124c-4f29-bdb7-2cc6214745df)) (pad "1" smd rect locked (at -0.7 0 270) (size 0.6 0.7) (layers "F.Cu" "F.Paste" "F.Mask") - (net 16 "Net-(D1-Pad1)") (pinfunction "K") (pintype "passive") (tstamp 189e31e7-938a-40df-aa1d-b90389315e6e)) + (net 14 "Net-(D1-Pad1)") (pinfunction "K") (pintype "passive") (tstamp 189e31e7-938a-40df-aa1d-b90389315e6e)) (pad "2" smd rect locked (at 0.7 0 270) (size 0.6 0.7) (layers "F.Cu" "F.Paste" "F.Mask") - (net 15 "PWR_EN") (pinfunction "A") (pintype "passive") (tstamp 960654b4-29a3-4176-bd1f-b4393dae5e89)) + (net 13 "PWR_EN") (pinfunction "A") (pintype "passive") (tstamp 960654b4-29a3-4176-bd1f-b4393dae5e89)) (model "${KICAD6_3DMODEL_DIR}/Diode_SMD.3dshapes/D_SOD-523.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -815,50 +819,6 @@ ) ) - (footprint "LED_SMD:LED_0603_1608Metric" (layer "F.Cu") - (tedit 5F68FEF1) (tstamp 27355ce5-095e-496b-a1e0-4af9bf47c0e5) - (at 127.7 150.3 180) - (descr "LED SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") - (tags "LED") - (property "Sheetfile" "Morse_code_PCB.kicad_sch") - (property "Sheetname" "") - (path "/a9669e73-0978-4947-a094-689a18b0faaf") - (attr smd) - (fp_text reference "D2" (at 4.2 0) (layer "F.SilkS") - (effects (font (size 1 1) (thickness 0.15))) - (tstamp ba62e86b-1647-49c3-8dda-80e71f6632de) - ) - (fp_text value "LED" (at 0 1.43) (layer "F.Fab") - (effects (font (size 1 1) (thickness 0.15))) - (tstamp 000193ae-88c8-4515-a3a9-4e9c5b9342a9) - ) - (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") - (effects (font (size 0.4 0.4) (thickness 0.06))) - (tstamp 611ec67d-8761-4d78-87b0-b34fcca38a4e) - ) - (fp_line (start -1.485 0.735) (end 0.8 0.735) (layer "F.SilkS") (width 0.12) (tstamp 05e9ef89-9155-44fd-8508-5e0c3fb064ae)) - (fp_line (start -1.485 -0.735) (end -1.485 0.735) (layer "F.SilkS") (width 0.12) (tstamp 241bf6e5-b807-4be6-8723-239c3119409a)) - (fp_line (start 0.8 -0.735) (end -1.485 -0.735) (layer "F.SilkS") (width 0.12) (tstamp 6dede76f-159d-4d1b-a386-f27058b26217)) - (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 444f3f09-60a6-483a-aa87-1b462ef9232f)) - (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 9ff5177b-4bfb-4aae-a415-94e6368c412a)) - (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp af33b692-45d2-4586-8e95-e4c4b30ce752)) - (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp b7e119a2-ad93-47d3-819a-a67bb40df091)) - (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp 391d3cd7-cfd2-4dc7-af8f-00bfa6475b6a)) - (fp_line (start -0.5 -0.4) (end -0.8 -0.1) (layer "F.Fab") (width 0.1) (tstamp 6c8fe295-edaf-40ef-a7c0-a1be02503047)) - (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp a76511db-8373-41c6-828a-552bedb8be3a)) - (fp_line (start -0.8 -0.1) (end -0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp aaeea228-b0e2-40c9-873f-7e415426120a)) - (fp_line (start 0.8 -0.4) (end -0.5 -0.4) (layer "F.Fab") (width 0.1) (tstamp d9f2cfc8-d883-4942-b0f7-7f5925afaaa3)) - (pad "1" smd roundrect locked (at -0.7875 0 180) (size 0.875 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 4 "GND") (pinfunction "K") (pintype "passive") (tstamp 0e901f3b-09b8-485a-beb9-642f9b4574d4)) - (pad "2" smd roundrect locked (at 0.7875 0 180) (size 0.875 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 17 "Net-(D2-Pad2)") (pinfunction "A") (pintype "passive") (tstamp e36ef450-2540-4ce7-a736-370356ff4a60)) - (model "${KICAD6_3DMODEL_DIR}/LED_SMD.3dshapes/LED_0603_1608Metric.wrl" - (offset (xyz 0 0 0)) - (scale (xyz 1 1 1)) - (rotate (xyz 0 0 0)) - ) - ) - (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") (tedit 5F68FEEE) (tstamp 2d8fea3e-b347-4547-82bf-81e11b815f72) (at 102.79 156.92 180) @@ -891,9 +851,9 @@ (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp b5a3c615-b612-4891-9fb6-d728a6036735)) (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp e1f3c0ae-45bb-4793-a105-b7d02e1c0ad2)) (pad "1" smd roundrect locked (at -0.825 0 180) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 10 "Net-(C8-Pad1)") (pintype "passive") (tstamp a1c622cd-4fb4-4e53-83e7-417a0ab6ebcd)) + (net 8 "Net-(C8-Pad1)") (pintype "passive") (tstamp a1c622cd-4fb4-4e53-83e7-417a0ab6ebcd)) (pad "2" smd roundrect locked (at 0.825 0 180) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 38 "BAT_ADC") (pintype "passive") (tstamp e0b72a8b-67fb-4e7a-aded-f100d8af0ab6)) + (net 33 "BAT_ADC") (pintype "passive") (tstamp e0b72a8b-67fb-4e7a-aded-f100d8af0ab6)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -910,7 +870,7 @@ (property "Sheetname" "") (path "/a1097a92-cef9-42d6-b9c8-a5124e584eca") (attr smd) - (fp_text reference "R17" (at 3.7 0.1) (layer "F.SilkS") + (fp_text reference "R17" (at 2.9 0) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp 31e895e5-7b36-4827-b794-b5b947f2801b) ) @@ -933,9 +893,9 @@ (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp af0b7ede-9db5-4358-b16c-eb69570a85f6)) (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp c0d111ea-a885-4705-8833-2cd6470de271)) (pad "1" smd roundrect locked (at -0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 4 "GND") (pintype "passive") (tstamp 9cd9abde-e9b7-4426-897c-0eba8ae2cfa8)) + (net 3 "GND") (pintype "passive") (tstamp 9cd9abde-e9b7-4426-897c-0eba8ae2cfa8)) (pad "2" smd roundrect locked (at 0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 34 "Net-(Q3-Pad1)") (pintype "passive") (tstamp a0011ec6-4d36-453b-93f5-a22b73efef67)) + (net 29 "Net-(Q3-Pad1)") (pintype "passive") (tstamp a0011ec6-4d36-453b-93f5-a22b73efef67)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -945,22 +905,22 @@ (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "F.Cu") (tedit 5F68FEEE) (tstamp 315f1b74-d9bf-4f55-98af-0ca623e522f6) - (at 107.3 145.6 180) + (at 109.8 149.9 -90) (descr "Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") (tags "capacitor") (property "Sheetfile" "Morse_code_PCB.kicad_sch") (property "Sheetname" "") (path "/8d79db4c-3394-4ced-8c77-c4047f4038f6") (attr smd) - (fp_text reference "C3" (at -0.1 1.4) (layer "F.SilkS") + (fp_text reference "C3" (at 0 1.3 -270) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp ea0c23f3-3436-4bd1-9549-88d209a079e7) ) - (fp_text value "10nF" (at 0 1.43) (layer "F.Fab") + (fp_text value "10nF" (at 0 1.43 -270) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 0ed54a9f-cef2-4aad-aa09-bf9da4b2b979) ) - (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (fp_text user "${REFERENCE}" (at 0 0 -270) (layer "F.Fab") (effects (font (size 0.4 0.4) (thickness 0.06))) (tstamp f44755e3-5528-40e7-b654-c7ee94b81b7b) ) @@ -974,10 +934,10 @@ (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp 8ebbd1d9-0c96-49ea-aefd-e5785f478386)) (fp_line (start -0.8 0.4) (end -0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp 975221fe-566a-411e-935c-accb7e9c5d9c)) (fp_line (start 0.8 0.4) (end -0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp abff7dc0-05c1-476c-910f-e2dccec38564)) - (pad "1" smd roundrect locked (at -0.775 0 180) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 6 "Net-(C3-Pad1)") (pintype "passive") (tstamp 9eb3404f-5aea-4d1c-a15d-d2a4654e0dc2)) - (pad "2" smd roundrect locked (at 0.775 0 180) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 4 "GND") (pintype "passive") (tstamp 0464a5ce-8145-4fa4-a9c7-909a76bfd5b8)) + (pad "1" smd roundrect locked (at -0.775 0 270) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 31 "EN_B") (pintype "passive") (tstamp 9eb3404f-5aea-4d1c-a15d-d2a4654e0dc2)) + (pad "2" smd roundrect locked (at 0.775 0 270) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 3 "GND") (pintype "passive") (tstamp 0464a5ce-8145-4fa4-a9c7-909a76bfd5b8)) (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -987,22 +947,22 @@ (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") (tedit 5F68FEEE) (tstamp 31aad1ff-f8eb-44a2-b0e6-6f2533cadd8a) - (at 94.25 148.3 -90) + (at 93.68 146.28 180) (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") (tags "resistor") (property "Sheetfile" "Morse_code_PCB.kicad_sch") (property "Sheetname" "") - (path "/bbfeaf9e-cf9d-4e58-8dff-a248ece1de43") + (path "/33ada24f-a0d9-4b83-b4c9-3e94e63b878f") (attr smd) - (fp_text reference "R2" (at 2.4 2.85 180) (layer "F.SilkS") - (effects (font (size 1 1) (thickness 0.15))) + (fp_text reference "R2" (at -2.42 -0.02) (layer "F.SilkS") + (effects (font (size 1 1) (thickness 0.125))) (tstamp 0a9744e5-cf0b-4d68-a1b2-02bef642f6c7) ) - (fp_text value "10K" (at 0 1.43 90) (layer "F.Fab") + (fp_text value "10K" (at 0 1.43) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 614b43f8-c98f-4e86-92df-f43bd5a0a0fe) ) - (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") + (fp_text user "${REFERENCE}" (at 0.2675 0.1) (layer "F.Fab") (effects (font (size 0.4 0.4) (thickness 0.06))) (tstamp 329abfeb-e90a-48d1-aa93-d33fbb034f52) ) @@ -1016,10 +976,10 @@ (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 5828e2b1-6c83-4929-88ca-4d736ceaf660)) (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 86b01ef4-965c-4060-a9de-b3e20d6f4e09)) (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp ace74cf6-fd28-4884-9baa-d9f2aa9480dc)) - (pad "1" smd roundrect locked (at -0.825 0 270) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 3 "Net-(C1-Pad1)") (pintype "passive") (tstamp 08278bf4-f6e9-44ff-9adf-6e32e38a8a34)) - (pad "2" smd roundrect locked (at 0.825 0 270) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 11 "VCC") (pintype "passive") (tstamp 2a66cc3a-c090-4ce0-a61f-f7e30ae6a985)) + (pad "1" smd roundrect locked (at -0.825 0 180) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 47 "Net-(U7-Pad7)") (pintype "passive") (tstamp 08278bf4-f6e9-44ff-9adf-6e32e38a8a34)) + (pad "2" smd roundrect locked (at 0.825 0 180) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 9 "VCC") (pintype "passive") (tstamp 2a66cc3a-c090-4ce0-a61f-f7e30ae6a985)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -1029,22 +989,22 @@ (footprint "Inductor_SMD:L_0805_2012Metric" (layer "F.Cu") (tedit 5F68FEF0) (tstamp 3275017f-79af-4711-ab80-c58ed52f4b73) - (at 98.05 148.15 90) + (at 93.82 148.04) (descr "Inductor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 80, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") (tags "inductor") (property "Sheetfile" "Morse_code_PCB.kicad_sch") (property "Sheetname" "") - (path "/a6e73968-bfeb-49ba-b5d0-6a71117f7ee3") + (path "/94979294-58f1-45cf-861c-a1d9abf6b6a1") (attr smd) - (fp_text reference "L1" (at -2.75 -1.95 180) (layer "F.SilkS") + (fp_text reference "L1" (at 2.68 0.16 180) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp 753c13cd-d88e-42c5-87b3-44a0bda007f4) ) - (fp_text value "100mH" (at 0 1.55 90) (layer "F.Fab") + (fp_text value "100mH" (at 0 1.55) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp e7029678-9312-4a7c-85b7-ad83f8178652) ) - (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") + (fp_text user "${REFERENCE}" (at -3.9 -0.2) (layer "F.Fab") (effects (font (size 0.5 0.5) (thickness 0.08))) (tstamp c2aff66a-62a8-4aa1-b4d9-790546e6099d) ) @@ -1058,10 +1018,10 @@ (fp_line (start 1 -0.45) (end 1 0.45) (layer "F.Fab") (width 0.1) (tstamp 81159ac3-7921-42b2-a3a5-0c2fe60432d9)) (fp_line (start -1 0.45) (end -1 -0.45) (layer "F.Fab") (width 0.1) (tstamp f917d6d0-234e-4961-85b0-ecc42951988a)) (fp_line (start 1 0.45) (end -1 0.45) (layer "F.Fab") (width 0.1) (tstamp fb261cc0-bc3a-4384-8aa6-b331b82227fe)) - (pad "1" smd roundrect locked (at -1.0625 0 90) (size 0.875 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 11 "VCC") (pinfunction "1") (pintype "passive") (tstamp 610945fc-9efc-4817-8112-800396c8b577)) - (pad "2" smd roundrect locked (at 1.0625 0 90) (size 0.875 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 33 "Net-(L1-Pad2)") (pinfunction "2") (pintype "passive") (tstamp e44ebcdd-421a-4d0e-a6a9-b5a8694a3c1c)) + (pad "1" smd roundrect locked (at -1.0625 0) (size 0.875 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 9 "VCC") (pinfunction "1") (pintype "passive") (tstamp 610945fc-9efc-4817-8112-800396c8b577)) + (pad "2" smd roundrect locked (at 1.0625 0) (size 0.875 1.2) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 50 "Net-(U7-Pad9)") (pinfunction "2") (pintype "passive") (tstamp e44ebcdd-421a-4d0e-a6a9-b5a8694a3c1c)) (model "${KICAD6_3DMODEL_DIR}/Inductor_SMD.3dshapes/L_0805_2012Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -1095,15 +1055,15 @@ (pad "6" thru_hole rect (at -6.25 0) (size 1.5 2.5) (drill oval 1 2.2) (layers *.Cu *.Mask) (tstamp a2c5b768-9c13-43b5-a00f-122b7f97e9a1)) (pad "7" thru_hole rect (at 6.25 0) (size 1.5 2.5) (drill oval 1 2.2) (layers *.Cu *.Mask) (tstamp 0e1dff80-5beb-4f26-bd8b-beb7d6138194)) (pad "A" thru_hole circle (at -2.5 7.5) (size 2 2) (drill 1.2) (layers *.Cu *.Mask) - (net 5 "Net-(C2-Pad1)") (pinfunction "A") (pintype "passive") (tstamp 2003b036-8b3c-4aca-b184-4e1151380b3d)) + (net 28 "EN_A") (pinfunction "A") (pintype "passive") (tstamp 2003b036-8b3c-4aca-b184-4e1151380b3d)) (pad "B" thru_hole circle (at 2.5 7.5) (size 2 2) (drill 1.2) (layers *.Cu *.Mask) - (net 6 "Net-(C3-Pad1)") (pinfunction "B") (pintype "passive") (tstamp 5b34b011-d722-453c-956e-3018c966e116)) + (net 31 "EN_B") (pinfunction "B") (pintype "passive") (tstamp 5b34b011-d722-453c-956e-3018c966e116)) (pad "C" thru_hole circle (at 0 7.5) (size 2 2) (drill 1.2) (layers *.Cu *.Mask) - (net 4 "GND") (pinfunction "C") (pintype "passive") (tstamp 38245fc1-692f-48ac-9b95-5dcdd53bb2cc)) + (net 3 "GND") (pinfunction "C") (pintype "passive") (tstamp 38245fc1-692f-48ac-9b95-5dcdd53bb2cc)) (pad "S1" thru_hole rect (at -2.5 -7) (size 2 2) (drill 1.2) (layers *.Cu *.Mask) - (net 20 "K1") (pinfunction "S1") (pintype "passive") (tstamp 09021c9d-fb5f-49e1-ba7c-c21435e561a6)) + (net 17 "K1") (pinfunction "S1") (pintype "passive") (tstamp 09021c9d-fb5f-49e1-ba7c-c21435e561a6)) (pad "S2" thru_hole circle (at 2.5 -7) (size 2 2) (drill 1.2) (layers *.Cu *.Mask) - (net 4 "GND") (pinfunction "S2") (pintype "passive") (tstamp 2b838b29-91e5-4403-94ec-fc802981d71e)) + (net 3 "GND") (pinfunction "S2") (pintype "passive") (tstamp 2b838b29-91e5-4403-94ec-fc802981d71e)) ) (footprint "Capacitor_SMD:C_1206_3216Metric" (layer "F.Cu") @@ -1138,9 +1098,9 @@ (fp_line (start -1.6 -0.8) (end 1.6 -0.8) (layer "F.Fab") (width 0.1) (tstamp 978c7904-18d8-450a-b68c-631fe47f63cd)) (fp_line (start 1.6 -0.8) (end 1.6 0.8) (layer "F.Fab") (width 0.1) (tstamp e614e1da-5910-48a1-9b36-eec68bdac8c3)) (pad "1" smd roundrect locked (at -1.475 0 180) (size 1.15 1.8) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2173913043) - (net 10 "Net-(C8-Pad1)") (pintype "passive") (tstamp 668b02e0-6d65-4bd5-abac-2463b7559f01)) + (net 8 "Net-(C8-Pad1)") (pintype "passive") (tstamp 668b02e0-6d65-4bd5-abac-2463b7559f01)) (pad "2" smd roundrect locked (at 1.475 0 180) (size 1.15 1.8) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2173913043) - (net 4 "GND") (pintype "passive") (tstamp e6ff74fb-7895-4055-8f07-ecd44566f2b2)) + (net 3 "GND") (pintype "passive") (tstamp e6ff74fb-7895-4055-8f07-ecd44566f2b2)) (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_1206_3216Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -1180,9 +1140,9 @@ (fp_line (start 1.6 0.8) (end -1.6 0.8) (layer "F.Fab") (width 0.1) (tstamp 2975209e-3763-46ad-980b-cd183a8d2958)) (fp_line (start -1.6 -0.8) (end 1.6 -0.8) (layer "F.Fab") (width 0.1) (tstamp bb17f2c7-9ad2-4e77-a4ae-a4cc19a87a5d)) (pad "1" smd roundrect locked (at -1.475 0 270) (size 1.15 1.8) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2173913043) - (net 8 "USB_VCC") (pintype "passive") (tstamp d9ffaf3d-3fc5-4a41-a15b-35f838708be6)) + (net 6 "USB_VCC") (pintype "passive") (tstamp d9ffaf3d-3fc5-4a41-a15b-35f838708be6)) (pad "2" smd roundrect locked (at 1.475 0 270) (size 1.15 1.8) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2173913043) - (net 4 "GND") (pintype "passive") (tstamp e0e76ed8-e923-45fd-9a2e-ed6cbced51b3)) + (net 3 "GND") (pintype "passive") (tstamp e0e76ed8-e923-45fd-9a2e-ed6cbced51b3)) (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_1206_3216Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -1199,7 +1159,7 @@ (property "Sheetname" "") (path "/6c5bad07-6597-499a-bbb1-65b5ba4a8e58") (attr smd) - (fp_text reference "C13" (at 3.1 0.15 90) (layer "F.SilkS") + (fp_text reference "C13" (at 3.8 0.15 180) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp 2a138c15-b5ba-42d5-b3a6-5ed7c2526e0a) ) @@ -1222,9 +1182,9 @@ (fp_line (start -1.6 -0.8) (end 1.6 -0.8) (layer "F.Fab") (width 0.1) (tstamp bf3377ce-92eb-435f-aeed-d28c36d72737)) (fp_line (start 1.6 0.8) (end -1.6 0.8) (layer "F.Fab") (width 0.1) (tstamp e949520c-ed55-4426-950d-6672da5ea1c3)) (pad "1" smd roundrect locked (at -1.475 0) (size 1.15 1.8) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2173913043) - (net 14 "Net-(C13-Pad1)") (pintype "passive") (tstamp 381ca88e-c25f-4661-bc09-16c51b36a2d9)) + (net 12 "Net-(C13-Pad1)") (pintype "passive") (tstamp 381ca88e-c25f-4661-bc09-16c51b36a2d9)) (pad "2" smd roundrect locked (at 1.475 0) (size 1.15 1.8) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2173913043) - (net 13 "PWM") (pintype "passive") (tstamp 178bb273-5a55-4b3d-8fce-d62581bd2b81)) + (net 11 "PWM") (pintype "passive") (tstamp 178bb273-5a55-4b3d-8fce-d62581bd2b81)) (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_1206_3216Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -1264,9 +1224,9 @@ (fp_line (start -1.6 -0.8) (end 1.6 -0.8) (layer "F.Fab") (width 0.1) (tstamp 7d663b6d-0b70-443a-86ee-8d4b801b2530)) (fp_line (start -1.6 0.8) (end -1.6 -0.8) (layer "F.Fab") (width 0.1) (tstamp f1ea9629-0db9-4218-8ce7-dd9e9c262b5b)) (pad "1" smd roundrect locked (at -1.475 0 180) (size 1.15 1.8) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2173913043) - (net 9 "BAT_IN") (pintype "passive") (tstamp 70232c01-7fc0-4126-82cc-0623442915e7)) + (net 7 "BAT_IN") (pintype "passive") (tstamp 70232c01-7fc0-4126-82cc-0623442915e7)) (pad "2" smd roundrect locked (at 1.475 0 180) (size 1.15 1.8) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2173913043) - (net 4 "GND") (pintype "passive") (tstamp 5047408e-8153-4ca8-8606-252773d7aac6)) + (net 3 "GND") (pintype "passive") (tstamp 5047408e-8153-4ca8-8606-252773d7aac6)) (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_1206_3216Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -1313,9 +1273,9 @@ (fp_line (start -0.65 0.45) (end -0.65 -0.45) (layer "F.Fab") (width 0.1) (tstamp f1af136d-fc23-40d6-9ece-115c567a709f)) (fp_line (start 0.65 0.45) (end -0.65 0.45) (layer "F.Fab") (width 0.1) (tstamp ff7046de-b1bb-4567-9f8a-b88a2390cfe9)) (pad "1" smd rect locked (at -0.7 0 270) (size 0.6 0.7) (layers "F.Cu" "F.Paste" "F.Mask") - (net 20 "K1") (pinfunction "K") (pintype "passive") (tstamp b139b84f-c3af-4879-bcf4-dc1250c4be79)) + (net 17 "K1") (pinfunction "K") (pintype "passive") (tstamp b139b84f-c3af-4879-bcf4-dc1250c4be79)) (pad "2" smd rect locked (at 0.7 0 270) (size 0.6 0.7) (layers "F.Cu" "F.Paste" "F.Mask") - (net 21 "K1_DET") (pinfunction "A") (pintype "passive") (tstamp c78dbc5c-fbc9-42b0-819d-4b9e5bf239a3)) + (net 18 "K1_DET") (pinfunction "A") (pintype "passive") (tstamp c78dbc5c-fbc9-42b0-819d-4b9e5bf239a3)) (model "${KICAD6_3DMODEL_DIR}/Diode_SMD.3dshapes/D_SOD-523.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -1325,14 +1285,14 @@ (footprint "LED_SMD:LED_0603_1608Metric" (layer "F.Cu") (tedit 5F68FEF1) (tstamp 61e5a202-a13e-4bb5-8e35-ddf8016a78f6) - (at 127.7 151.94 180) + (at 127.6 151 180) (descr "LED SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") (tags "LED") (property "Sheetfile" "Morse_code_PCB.kicad_sch") (property "Sheetname" "") (path "/afbb71ae-8838-4abe-bedc-bb552b7b1c7d") (attr smd) - (fp_text reference "D3" (at 4.2 0.44) (layer "F.SilkS") + (fp_text reference "D3" (at 2.5 -0.1) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp 16b539e2-6442-4fdd-94ea-e25262a3b780) ) @@ -1357,9 +1317,9 @@ (fp_line (start -0.8 0.4) (end 0.8 0.4) (layer "F.Fab") (width 0.1) (tstamp cc7706d2-d0f2-4471-bfc3-c2269134e19b)) (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp f237d9fc-f580-4ea3-9608-ea1fa5e8032f)) (pad "1" smd roundrect locked (at -0.7875 0 180) (size 0.875 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 18 "Net-(D3-Pad1)") (pinfunction "K") (pintype "passive") (tstamp e62bbaf5-3d83-408f-924a-11d0ff8233cf)) + (net 15 "Net-(D3-Pad1)") (pinfunction "K") (pintype "passive") (tstamp e62bbaf5-3d83-408f-924a-11d0ff8233cf)) (pad "2" smd roundrect locked (at 0.7875 0 180) (size 0.875 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 8 "USB_VCC") (pinfunction "A") (pintype "passive") (tstamp b9c9b069-fc15-4b4b-97c4-dce63c1ac3fc)) + (net 6 "USB_VCC") (pinfunction "A") (pintype "passive") (tstamp b9c9b069-fc15-4b4b-97c4-dce63c1ac3fc)) (model "${KICAD6_3DMODEL_DIR}/LED_SMD.3dshapes/LED_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -1369,14 +1329,14 @@ (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") (tedit 5F68FEEE) (tstamp 678bd163-b45c-498e-b459-e97dc3e94029) - (at 115.2 146.7 -90) + (at 115.2 146.7 90) (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") (tags "resistor") (property "Sheetfile" "Morse_code_PCB.kicad_sch") (property "Sheetname" "") (path "/b97012cc-0f92-42c4-98d4-804fadb5b954") (attr smd) - (fp_text reference "R13" (at -1.9 0 180) (layer "F.SilkS") + (fp_text reference "R13" (at 2 -0.2) (layer "F.SilkS") (effects (font (size 0.5 0.5) (thickness 0.125))) (tstamp 8a539dc2-f476-48de-9eae-7d7ce05370cf) ) @@ -1398,10 +1358,10 @@ (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 706b8b7e-33b7-4969-a0a6-d35601c9e6e8)) (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp aea18c8f-da69-49ff-bccc-e326c38e9829)) (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp eb49195a-f9b0-43e3-b552-e477ecff063d)) - (pad "1" smd roundrect locked (at -0.825 0 270) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 11 "VCC") (pintype "passive") (tstamp 0aa11e74-55a0-43d9-8aee-547d1e70b18e)) - (pad "2" smd roundrect locked (at 0.825 0 270) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 40 "Net-(R11-Pad1)") (pintype "passive") (tstamp 9370a49a-7963-4b2a-af2c-c2cd9c12366b)) + (pad "1" smd roundrect locked (at -0.825 0 90) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 52 "Net-(R13-Pad1)") (pintype "passive") (tstamp 0aa11e74-55a0-43d9-8aee-547d1e70b18e)) + (pad "2" smd roundrect locked (at 0.825 0 90) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 9 "VCC") (pintype "passive") (tstamp 9370a49a-7963-4b2a-af2c-c2cd9c12366b)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -1411,7 +1371,7 @@ (footprint "Package_TO_SOT_SMD:SOT-23-5" (layer "F.Cu") (tedit 5F6F9B37) (tstamp 6a4c2658-5121-4e98-b0b1-07bc4ad71508) - (at 110.6 157.2) + (at 110.3 155.2) (descr "SOT, 5 Pin (https://www.jedec.org/sites/default/files/docs/Mo-178c.PDF variant AA), generated with kicad-footprint-generator ipc_gullwing_generator.py") (tags "SOT TO_SOT_SMD") (property "Sheetfile" "Morse_code_PCB.kicad_sch") @@ -1444,15 +1404,15 @@ (fp_line (start 0.8 1.45) (end -0.8 1.45) (layer "F.Fab") (width 0.1) (tstamp b804539b-f332-4fb6-ba31-c6ce38852fa4)) (fp_line (start -0.8 1.45) (end -0.8 -1.05) (layer "F.Fab") (width 0.1) (tstamp cab56c20-83e3-4b15-9b9e-dddad99af599)) (pad "1" smd roundrect locked (at -1.1375 -0.95) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 39 "BAT_CHG_DET") (pinfunction "STAT") (pintype "output") (tstamp 68b54b1d-cdde-4b82-9310-a1f173db2fc9)) + (net 34 "BAT_CHG_DET") (pinfunction "STAT") (pintype "output") (tstamp 68b54b1d-cdde-4b82-9310-a1f173db2fc9)) (pad "2" smd roundrect locked (at -1.1375 0) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 4 "GND") (pinfunction "VSS") (pintype "power_in") (tstamp d1879f91-d844-41e9-b1b8-81204a5923b8)) + (net 3 "GND") (pinfunction "VSS") (pintype "power_in") (tstamp d1879f91-d844-41e9-b1b8-81204a5923b8)) (pad "3" smd roundrect locked (at -1.1375 0.95) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 9 "BAT_IN") (pinfunction "VBAT") (pintype "power_out") (tstamp 013ce4b5-6cea-42a0-b756-fb3622ea63ae)) + (net 7 "BAT_IN") (pinfunction "VBAT") (pintype "power_out") (tstamp 013ce4b5-6cea-42a0-b756-fb3622ea63ae)) (pad "4" smd roundrect locked (at 1.1375 0.95) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 8 "USB_VCC") (pinfunction "VDD") (pintype "power_in") (tstamp ef675639-040d-45ae-b8a0-e36c11996d2d)) + (net 6 "USB_VCC") (pinfunction "VDD") (pintype "power_in") (tstamp ef675639-040d-45ae-b8a0-e36c11996d2d)) (pad "5" smd roundrect locked (at 1.1375 -0.95) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 37 "Net-(R5-Pad2)") (pinfunction "PROG") (pintype "input") (tstamp 1f1d3169-d0f7-4be4-805d-5f44fcce76d5)) + (net 32 "Net-(R5-Pad2)") (pinfunction "PROG") (pintype "input") (tstamp 1f1d3169-d0f7-4be4-805d-5f44fcce76d5)) (model "${KICAD6_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23-5.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -1485,13 +1445,13 @@ (fp_line (start 0 0) (end 0 28) (layer "F.SilkS") (width 0.12) (tstamp dccfd5a0-cc29-408a-828c-ae13728c8284)) (fp_line (start 2 20) (end 2 3) (layer "F.SilkS") (width 0.12) (tstamp fb674e3e-1e32-4e15-a7c6-2c5ed41c1093)) (pad "1" thru_hole rect (at 10.2 0.9) (size 1.524 1.524) (drill 1) (layers *.Cu *.Mask) - (net 4 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 34bdffb9-6c86-4b25-859c-f287b3da1495)) + (net 3 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 34bdffb9-6c86-4b25-859c-f287b3da1495)) (pad "2" thru_hole circle (at 12.74 0.9) (size 1.524 1.524) (drill 1) (layers *.Cu *.Mask) - (net 11 "VCC") (pinfunction "VCC") (pintype "power_in") (tstamp d27f57f7-5104-4725-9d61-0bb79163cd02)) + (net 9 "VCC") (pinfunction "VCC") (pintype "power_in") (tstamp d27f57f7-5104-4725-9d61-0bb79163cd02)) (pad "3" thru_hole circle (at 15.28 0.9) (size 1.524 1.524) (drill 1) (layers *.Cu *.Mask) - (net 44 "IIC_SCL") (pinfunction "SCL") (pintype "input") (tstamp 3dde78c2-2e53-4d0e-a734-7b95897f7f64)) + (net 36 "IIC_SCL") (pinfunction "SCL") (pintype "input") (tstamp 3dde78c2-2e53-4d0e-a734-7b95897f7f64)) (pad "4" thru_hole circle (at 17.82 0.9) (size 1.524 1.524) (drill 1) (layers *.Cu *.Mask) - (net 43 "IIC_SDL") (pinfunction "SDL") (pintype "input") (tstamp 13173f3b-3e2a-47c8-991c-e30d60da5f0f)) + (net 35 "IIC_SDL") (pinfunction "SDL") (pintype "input") (tstamp 13173f3b-3e2a-47c8-991c-e30d60da5f0f)) ) (footprint "Capacitor_SMD:C_0805_2012Metric" (layer "F.Cu") @@ -1526,9 +1486,9 @@ (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp b2e64346-2240-41fc-8a8b-2450f998ed11)) (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp f499cbd6-6be5-4b96-9064-133f1dfd9ad3)) (pad "1" smd roundrect locked (at -0.95 0 90) (size 1 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 10 "Net-(C8-Pad1)") (pintype "passive") (tstamp cd274adc-f096-42c6-b43f-9b19a671badd)) + (net 8 "Net-(C8-Pad1)") (pintype "passive") (tstamp cd274adc-f096-42c6-b43f-9b19a671badd)) (pad "2" smd roundrect locked (at 0.95 0 90) (size 1 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 4 "GND") (pintype "passive") (tstamp ba399cf3-6213-4233-9b2e-a844344c3329)) + (net 3 "GND") (pintype "passive") (tstamp ba399cf3-6213-4233-9b2e-a844344c3329)) (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -1545,7 +1505,7 @@ (property "Sheetname" "") (path "/cba80511-2d97-4527-bf5e-8b6b0c65757a") (attr smd) - (fp_text reference "R16" (at 3.8 0.3) (layer "F.SilkS") + (fp_text reference "R16" (at 3 0.1) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp 7bb456e2-7bbc-4e01-ac2e-b307b9041d17) ) @@ -1568,9 +1528,9 @@ (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 9ec871c1-4e05-4164-b89f-2e9855186b95)) (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp f78f7e9f-0e0b-412d-a7ca-bf99bb245daf)) (pad "1" smd roundrect locked (at -0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 34 "Net-(Q3-Pad1)") (pintype "passive") (tstamp 695f18e1-feb0-4476-8953-d739b81820a0)) + (net 29 "Net-(Q3-Pad1)") (pintype "passive") (tstamp 695f18e1-feb0-4476-8953-d739b81820a0)) (pad "2" smd roundrect locked (at 0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 13 "PWM") (pintype "passive") (tstamp 4543630c-1c76-4945-8061-0f093dca1b27)) + (net 11 "PWM") (pintype "passive") (tstamp 4543630c-1c76-4945-8061-0f093dca1b27)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -1610,9 +1570,9 @@ (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 96a5c046-2bb8-4223-addc-0967a661f4f5)) (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp f74d16ce-07bc-40a1-9379-7e7fa809b111)) (pad "1" smd roundrect locked (at -0.825 0 270) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 19 "Net-(D4-Pad2)") (pintype "passive") (tstamp af34f5bd-9c3b-44b4-99ba-829473dbca73)) + (net 16 "Net-(D4-Pad2)") (pintype "passive") (tstamp af34f5bd-9c3b-44b4-99ba-829473dbca73)) (pad "2" smd roundrect locked (at 0.825 0 270) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 9 "BAT_IN") (pintype "passive") (tstamp 07dd891f-9b97-4653-b99a-854fc7239a79)) + (net 7 "BAT_IN") (pintype "passive") (tstamp 07dd891f-9b97-4653-b99a-854fc7239a79)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -1657,45 +1617,45 @@ (pad "" np_thru_hole circle locked (at 2.89 -2.6) (size 0.65 0.65) (drill 0.65) (layers *.Cu *.Mask) (tstamp d475b65c-8aff-4afb-97e1-c54e2ac8b8df)) (pad "" np_thru_hole circle locked (at -2.89 -2.6) (size 0.65 0.65) (drill 0.65) (layers *.Cu *.Mask) (tstamp fc3cefba-b5a8-4781-91cd-bb2492cf8ab6)) (pad "A1" smd rect locked (at -3.25 -4.045) (size 0.6 1.45) (layers "F.Cu" "F.Paste" "F.Mask") - (net 4 "GND") (pinfunction "GND") (pintype "passive") (tstamp 49339521-16b8-463d-be4d-2afce06e238b)) + (net 3 "GND") (pinfunction "GND") (pintype "passive") (tstamp 49339521-16b8-463d-be4d-2afce06e238b)) (pad "A4" smd rect locked (at -2.45 -4.045) (size 0.6 1.45) (layers "F.Cu" "F.Paste" "F.Mask") - (net 8 "USB_VCC") (pinfunction "VBUS") (pintype "passive") (tstamp a90e599f-c2fb-475b-92c6-fbc7b041f04b)) + (net 6 "USB_VCC") (pinfunction "VBUS") (pintype "passive") (tstamp a90e599f-c2fb-475b-92c6-fbc7b041f04b)) (pad "A5" smd rect locked (at -1.25 -4.045) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") - (net 27 "unconnected-(J1-PadA5)") (pinfunction "CC1") (pintype "bidirectional") (tstamp 81b704e3-ad79-4155-bf9f-926a6d6c3a72)) + (net 22 "unconnected-(J1-PadA5)") (pinfunction "CC1") (pintype "bidirectional") (tstamp 81b704e3-ad79-4155-bf9f-926a6d6c3a72)) (pad "A6" smd rect locked (at -0.25 -4.045) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") - (net 23 "Net-(J1-PadA6)") (pinfunction "D+") (pintype "bidirectional") (tstamp 1b9e0624-2feb-4d8b-9181-d73925756ba3)) + (net 52 "Net-(R13-Pad1)") (pinfunction "D+") (pintype "bidirectional") (tstamp 1b9e0624-2feb-4d8b-9181-d73925756ba3)) (pad "A7" smd rect locked (at 0.25 -4.045) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") - (net 26 "Net-(J1-PadA7)") (pinfunction "D-") (pintype "bidirectional") (tstamp 2da13d6f-05be-455d-b411-4e9c5197856e)) + (net 53 "Net-(R11-Pad2)") (pinfunction "D-") (pintype "bidirectional") (tstamp 2da13d6f-05be-455d-b411-4e9c5197856e)) (pad "A8" smd rect locked (at 1.25 -4.045) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") - (net 25 "unconnected-(J1-PadA8)") (pinfunction "SBU1") (pintype "bidirectional") (tstamp 78e288f6-3219-43f5-b222-0b33e0a0eac8)) + (net 21 "unconnected-(J1-PadA8)") (pinfunction "SBU1") (pintype "bidirectional") (tstamp 78e288f6-3219-43f5-b222-0b33e0a0eac8)) (pad "A9" smd rect locked (at 2.45 -4.045) (size 0.6 1.45) (layers "F.Cu" "F.Paste" "F.Mask") - (net 8 "USB_VCC") (pinfunction "VBUS") (pintype "passive") (tstamp 193d007f-8099-4c51-b9f0-e58141240683)) + (net 6 "USB_VCC") (pinfunction "VBUS") (pintype "passive") (tstamp 193d007f-8099-4c51-b9f0-e58141240683)) (pad "A12" smd rect locked (at 3.25 -4.045) (size 0.6 1.45) (layers "F.Cu" "F.Paste" "F.Mask") - (net 4 "GND") (pinfunction "GND") (pintype "passive") (tstamp 8f87def2-8b5f-4cdc-b76b-7f23b04c3f1e)) + (net 3 "GND") (pinfunction "GND") (pintype "passive") (tstamp 8f87def2-8b5f-4cdc-b76b-7f23b04c3f1e)) (pad "B1" smd rect locked (at 3.25 -4.045) (size 0.6 1.45) (layers "F.Cu" "F.Paste" "F.Mask") - (net 4 "GND") (pinfunction "GND") (pintype "passive") (tstamp 7b689663-d4e3-40ba-9abb-cfd73a59d416)) + (net 3 "GND") (pinfunction "GND") (pintype "passive") (tstamp 7b689663-d4e3-40ba-9abb-cfd73a59d416)) (pad "B4" smd rect locked (at 2.45 -4.045) (size 0.6 1.45) (layers "F.Cu" "F.Paste" "F.Mask") - (net 8 "USB_VCC") (pinfunction "VBUS") (pintype "passive") (tstamp 3ef4ab53-e075-473a-a75f-e14427f3de70)) + (net 6 "USB_VCC") (pinfunction "VBUS") (pintype "passive") (tstamp 3ef4ab53-e075-473a-a75f-e14427f3de70)) (pad "B5" smd rect locked (at 1.75 -4.045) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") - (net 24 "unconnected-(J1-PadB5)") (pinfunction "CC2") (pintype "bidirectional") (tstamp 1de85031-9810-4511-a8e5-8fc28f5bb9bb)) + (net 20 "unconnected-(J1-PadB5)") (pinfunction "CC2") (pintype "bidirectional") (tstamp 1de85031-9810-4511-a8e5-8fc28f5bb9bb)) (pad "B6" smd rect locked (at 0.75 -4.045) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") - (net 23 "Net-(J1-PadA6)") (pinfunction "D+") (pintype "bidirectional") (tstamp c39ea287-ed92-42cf-a42f-0a058487a5d7)) + (net 52 "Net-(R13-Pad1)") (pinfunction "D+") (pintype "bidirectional") (tstamp c39ea287-ed92-42cf-a42f-0a058487a5d7)) (pad "B7" smd rect locked (at -0.75 -4.045) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") - (net 26 "Net-(J1-PadA7)") (pinfunction "D-") (pintype "bidirectional") (tstamp fc2e6937-75ad-4c5e-862d-3bdf44129aa7)) + (net 53 "Net-(R11-Pad2)") (pinfunction "D-") (pintype "bidirectional") (tstamp fc2e6937-75ad-4c5e-862d-3bdf44129aa7)) (pad "B8" smd rect locked (at -1.75 -4.045) (size 0.3 1.45) (layers "F.Cu" "F.Paste" "F.Mask") - (net 28 "unconnected-(J1-PadB8)") (pinfunction "SBU2") (pintype "bidirectional") (tstamp 2bd656cc-07a1-4b36-bd3d-1849c60a6f25)) + (net 23 "unconnected-(J1-PadB8)") (pinfunction "SBU2") (pintype "bidirectional") (tstamp 2bd656cc-07a1-4b36-bd3d-1849c60a6f25)) (pad "B9" smd rect locked (at -2.45 -4.045) (size 0.6 1.45) (layers "F.Cu" "F.Paste" "F.Mask") - (net 8 "USB_VCC") (pinfunction "VBUS") (pintype "passive") (tstamp 12266219-a8e8-40d0-abb2-e6437ea461f1)) + (net 6 "USB_VCC") (pinfunction "VBUS") (pintype "passive") (tstamp 12266219-a8e8-40d0-abb2-e6437ea461f1)) (pad "B12" smd rect locked (at -3.25 -4.045) (size 0.6 1.45) (layers "F.Cu" "F.Paste" "F.Mask") - (net 4 "GND") (pinfunction "GND") (pintype "passive") (tstamp fa1ede9f-dc7a-4921-bc9c-469518fa5f97)) + (net 3 "GND") (pinfunction "GND") (pintype "passive") (tstamp fa1ede9f-dc7a-4921-bc9c-469518fa5f97)) (pad "S1" thru_hole oval locked (at -4.32 -3.13) (size 1 2.1) (drill oval 0.6 1.7) (layers *.Cu *.Mask) - (net 4 "GND") (pinfunction "SHIELD") (pintype "passive") (tstamp 4216af48-181c-4ad6-9c60-e90f53b26cc9)) + (net 3 "GND") (pinfunction "SHIELD") (pintype "passive") (tstamp 4216af48-181c-4ad6-9c60-e90f53b26cc9)) (pad "S1" thru_hole oval locked (at 4.32 -3.13) (size 1 2.1) (drill oval 0.6 1.7) (layers *.Cu *.Mask) - (net 4 "GND") (pinfunction "SHIELD") (pintype "passive") (tstamp 4ab5e19c-47cf-42ae-9678-1e36abeeae59)) + (net 3 "GND") (pinfunction "SHIELD") (pintype "passive") (tstamp 4ab5e19c-47cf-42ae-9678-1e36abeeae59)) (pad "S1" thru_hole oval locked (at 4.32 1.05) (size 1 1.6) (drill oval 0.6 1.2) (layers *.Cu *.Mask) - (net 4 "GND") (pinfunction "SHIELD") (pintype "passive") (tstamp bad21ca4-e111-4760-8d01-3fcfa3d4e59b)) + (net 3 "GND") (pinfunction "SHIELD") (pintype "passive") (tstamp bad21ca4-e111-4760-8d01-3fcfa3d4e59b)) (pad "S1" thru_hole oval locked (at -4.32 1.05) (size 1 1.6) (drill oval 0.6 1.2) (layers *.Cu *.Mask) - (net 4 "GND") (pinfunction "SHIELD") (pintype "passive") (tstamp c0f508b1-bb7f-459a-8ab7-eb7d375e6239)) + (net 3 "GND") (pinfunction "SHIELD") (pintype "passive") (tstamp c0f508b1-bb7f-459a-8ab7-eb7d375e6239)) (model "${KICAD6_3DMODEL_DIR}/Connector_USB.3dshapes/USB_C_Receptacle_HRO_TYPE-C-31-M-12.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -1735,9 +1695,9 @@ (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 72736ef0-440f-445e-90eb-c81ae8522fbc)) (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp a66ae5a0-1026-4e58-8b7d-a865e1e240b4)) (pad "1" smd roundrect locked (at -0.825 0 270) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 16 "Net-(D1-Pad1)") (pintype "passive") (tstamp 743faa0d-9458-49ff-804f-08ea0d7c26e5)) + (net 14 "Net-(D1-Pad1)") (pintype "passive") (tstamp 743faa0d-9458-49ff-804f-08ea0d7c26e5)) (pad "2" smd roundrect locked (at 0.825 0 270) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 4 "GND") (pintype "passive") (tstamp 8e583f97-15ba-4914-92f3-b244f09eb9dd)) + (net 3 "GND") (pintype "passive") (tstamp 8e583f97-15ba-4914-92f3-b244f09eb9dd)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -1777,51 +1737,9 @@ (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp ba92c38f-30a9-42e1-92e4-52962b9ac58d)) (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp f0c0ad3a-f62e-41d4-92aa-8ad7562c7c87)) (pad "1" smd roundrect locked (at -0.825 0 270) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 46 "RUN_LED") (pintype "passive") (tstamp f4a761ee-9250-47cd-a9f5-0a22091937ac)) + (net 38 "RUN_LED") (pintype "passive") (tstamp f4a761ee-9250-47cd-a9f5-0a22091937ac)) (pad "2" smd roundrect locked (at 0.825 0 270) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 22 "Net-(D6-Pad2)") (pintype "passive") (tstamp b869203c-fdc4-444a-aea1-443e8e3fc45e)) - (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" - (offset (xyz 0 0 0)) - (scale (xyz 1 1 1)) - (rotate (xyz 0 0 0)) - ) - ) - - (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") - (tedit 5F68FEEE) (tstamp 8b12d6ca-96bc-4894-ae10-3b779e7695b2) - (at 109.7 147.3) - (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") - (tags "resistor") - (property "Sheetfile" "Morse_code_PCB.kicad_sch") - (property "Sheetname" "") - (path "/5bf4db13-f95c-4510-aa5f-610b83763fd1") - (attr smd) - (fp_text reference "R14" (at 0.5 -1.5) (layer "F.SilkS") - (effects (font (size 1 1) (thickness 0.15))) - (tstamp 3e93a0f3-64ae-4ace-8112-ca0fdafa3766) - ) - (fp_text value "510" (at 0 1.43) (layer "F.Fab") - (effects (font (size 1 1) (thickness 0.15))) - (tstamp fcd7587b-250b-43ce-aec7-cf368d21a790) - ) - (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") - (effects (font (size 0.4 0.4) (thickness 0.06))) - (tstamp cdec5554-e5bc-48fd-a006-a11106ad8ace) - ) - (fp_line (start -0.237258 0.5225) (end 0.237258 0.5225) (layer "F.SilkS") (width 0.12) (tstamp 55eff66c-f607-4843-9f40-d64a3628cddb)) - (fp_line (start -0.237258 -0.5225) (end 0.237258 -0.5225) (layer "F.SilkS") (width 0.12) (tstamp e5c8db7e-a584-4c9a-99c5-abdff2b2a1d1)) - (fp_line (start -1.48 0.73) (end -1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 81a06844-82b9-490f-a008-d12a7e53e709)) - (fp_line (start 1.48 0.73) (end -1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp 857f8b63-861b-4606-a453-4a0c1a3dfbd6)) - (fp_line (start -1.48 -0.73) (end 1.48 -0.73) (layer "F.CrtYd") (width 0.05) (tstamp 911e3d6b-cf86-4464-87b7-5a8ce01698ac)) - (fp_line (start 1.48 -0.73) (end 1.48 0.73) (layer "F.CrtYd") (width 0.05) (tstamp f3f8e943-4a7f-41e4-aa49-89560822c912)) - (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 2d984774-10c5-4a20-8f63-2c34b15b3e99)) - (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 3b288875-2ce0-47d9-83ab-a1573d82ddd3)) - (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 83cc00d5-9476-491d-b7fa-1ceb05aadf02)) - (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp c45cd6e9-669a-4092-b2ea-69846c598647)) - (pad "1" smd roundrect locked (at -0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 42 "Net-(R14-Pad1)") (pintype "passive") (tstamp 1e40aa64-be02-4113-a49d-9bae7a5331ad)) - (pad "2" smd roundrect locked (at 0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 17 "Net-(D2-Pad2)") (pintype "passive") (tstamp 7480a88e-72b6-46f0-9b17-d6bc2596d47d)) + (net 19 "Net-(D6-Pad2)") (pintype "passive") (tstamp b869203c-fdc4-444a-aea1-443e8e3fc45e)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -1838,7 +1756,7 @@ (property "Sheetname" "") (path "/0cf16b66-fa86-4758-8947-9bf5f29220f6") (attr smd) - (fp_text reference "J3" (at -1.23 0) (layer "F.SilkS") + (fp_text reference "J3" (at -5.63 -3.9) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp 6a2a9055-b7a0-4475-ae90-6830aeae6af2) ) @@ -1879,13 +1797,13 @@ (pad "" np_thru_hole circle locked (at -4.775 0) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask) (tstamp aada76e4-0d7c-47c4-9c7e-35d8df0791ca)) (pad "" np_thru_hole circle locked (at 2.225 0) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask) (tstamp b63cf49d-ce07-465a-aab3-e2d4a195530e)) (pad "R1" smd rect locked (at -0.175 -3.25) (size 1.2 2.5) (layers "F.Cu" "F.Paste" "F.Mask") - (net 12 "Net-(C12-Pad1)") (pintype "passive") (tstamp dfa6d6bf-7c05-47a7-8bd2-c0e61991c5a3)) + (net 10 "Net-(C12-Pad1)") (pintype "passive") (tstamp dfa6d6bf-7c05-47a7-8bd2-c0e61991c5a3)) (pad "R2" smd rect locked (at -3.175 -3.25) (size 1.2 2.5) (layers "F.Cu" "F.Paste" "F.Mask") - (net 4 "GND") (pintype "passive") (tstamp 10b7a7e3-d9dd-4fc6-b9a1-925f489e94d0)) + (net 3 "GND") (pintype "passive") (tstamp 10b7a7e3-d9dd-4fc6-b9a1-925f489e94d0)) (pad "S" smd rect locked (at 4.925 3.25) (size 1.2 2.5) (layers "F.Cu" "F.Paste" "F.Mask") - (net 32 "unconnected-(J3-PadS)") (pintype "passive") (tstamp ea824684-2e9f-4e36-a8a1-62ab66a70f9a)) + (net 27 "unconnected-(J3-PadS)") (pintype "passive") (tstamp ea824684-2e9f-4e36-a8a1-62ab66a70f9a)) (pad "T" smd rect locked (at 3.825 -3.25) (size 1.2 2.5) (layers "F.Cu" "F.Paste" "F.Mask") - (net 14 "Net-(C13-Pad1)") (pintype "passive") (tstamp e49a1fc6-e358-4f79-bd57-ad07a0a04c0a)) + (net 12 "Net-(C13-Pad1)") (pintype "passive") (tstamp e49a1fc6-e358-4f79-bd57-ad07a0a04c0a)) (model "${KICAD6_3DMODEL_DIR}/Connector_Audio.3dshapes/Jack_3.5mm_PJ320D_Horizontal.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -1893,106 +1811,84 @@ ) ) - (footprint "Capacitor_SMD:C_0805_2012Metric" (layer "F.Cu") - (tedit 5F68FEEE) (tstamp 8e99b9b4-928e-4520-97fe-abf10b937ad8) - (at 96.15 148.5 -90) - (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") - (tags "capacitor") + (footprint "Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder" (layer "F.Cu") + (tedit 5F6BB22C) (tstamp 8e99b9b4-928e-4520-97fe-abf10b937ad8) + (at 91.85 136.96) + (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "capacitor handsolder") (property "Sheetfile" "Morse_code_PCB.kicad_sch") (property "Sheetname" "") - (path "/f8dea8cf-a10c-43e1-a39f-f07ef45cfa96") + (path "/5bdd29cb-8f55-4095-af05-9d35ec92d17e") (attr smd) - (fp_text reference "C1" (at 2.2 -1.95 180) (layer "F.SilkS") + (fp_text reference "C1" (at -1.45 -0.06 90) (layer "F.SilkS") + (effects (font (size 0.5 0.5) (thickness 0.125))) + (tstamp 59739e5e-6177-4c9f-b020-cdc056197113) + ) + (fp_text value "C" (at 0 1.16) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) - (tstamp 6bbf1b9d-0f47-4388-94e2-4c15e1b28ae4) + (tstamp ad78a59c-c953-4e79-a106-393d7ce34cb7) ) - (fp_text value "100nF" (at 0 1.68 90) (layer "F.Fab") - (effects (font (size 1 1) (thickness 0.15))) - (tstamp 35e7459f-3015-4ae0-9485-99bac4455b07) + (fp_text user "${REFERENCE}" (at 0.7675 1.6) (layer "F.Fab") + (effects (font (size 0.25 0.25) (thickness 0.04))) + (tstamp 0ef56b98-f633-4377-a32d-4e908908bbdd) ) - (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") - (effects (font (size 0.5 0.5) (thickness 0.08))) - (tstamp 38a92ea4-dcb4-4dc3-bb9d-175eb17f7640) - ) - (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer "F.SilkS") (width 0.12) (tstamp d1318a53-b3cc-4c2b-a7c2-bc0e43d13914)) - (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer "F.SilkS") (width 0.12) (tstamp dea90e56-45b9-4ba4-8611-0ad6fd74b7ce)) - (fp_line (start 1.7 -0.98) (end 1.7 0.98) (layer "F.CrtYd") (width 0.05) (tstamp 20acf63d-8155-441b-99f1-aa553e9e9d3d)) - (fp_line (start -1.7 0.98) (end -1.7 -0.98) (layer "F.CrtYd") (width 0.05) (tstamp 2db8df86-1062-446b-9531-cb2985ffef06)) - (fp_line (start -1.7 -0.98) (end 1.7 -0.98) (layer "F.CrtYd") (width 0.05) (tstamp 77a38863-9e91-443b-bd99-2106dfc479ce)) - (fp_line (start 1.7 0.98) (end -1.7 0.98) (layer "F.CrtYd") (width 0.05) (tstamp e5f139e5-97bc-47bb-b471-319a359a6376)) - (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp 34b0d0e8-c9b6-476c-a931-b3dcfb5987a1)) - (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 69ce9cff-8751-44e9-b0dc-cc3015cf7444)) - (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp a6700b7f-25ec-45ac-8b59-fabdd382c122)) - (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp c4728826-0c41-4a50-b26e-aee6567cefd9)) - (pad "1" smd roundrect locked (at -0.95 0 270) (size 1 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 3 "Net-(C1-Pad1)") (pintype "passive") (tstamp ae700de5-667d-40ae-8885-0b9b8d11de92)) - (pad "2" smd roundrect locked (at 0.95 0 270) (size 1 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 4 "GND") (pintype "passive") (tstamp 29c8a56e-f858-4995-97a1-6154dffe4743)) - (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl" + (fp_line (start -0.115835 -0.36) (end 0.115835 -0.36) (layer "F.SilkS") (width 0.12) (tstamp 3492ce37-1494-4852-8154-fd63a95fbc2b)) + (fp_line (start -0.115835 0.36) (end 0.115835 0.36) (layer "F.SilkS") (width 0.12) (tstamp 353d8f56-c879-4848-ac81-f1be0cc16cb5)) + (fp_line (start 1.08 0.46) (end -1.08 0.46) (layer "F.CrtYd") (width 0.05) (tstamp 37e25b07-cf59-45fe-844f-5417bc730cd4)) + (fp_line (start -1.08 0.46) (end -1.08 -0.46) (layer "F.CrtYd") (width 0.05) (tstamp 4366765e-6f2c-4b1b-bc2c-586c12e15a4f)) + (fp_line (start -1.08 -0.46) (end 1.08 -0.46) (layer "F.CrtYd") (width 0.05) (tstamp b2954992-4006-4aa7-a40c-8f96617211bc)) + (fp_line (start 1.08 -0.46) (end 1.08 0.46) (layer "F.CrtYd") (width 0.05) (tstamp eced4280-6cc0-4d49-a29f-12ebbeb71445)) + (fp_line (start -0.5 0.25) (end -0.5 -0.25) (layer "F.Fab") (width 0.1) (tstamp 0e4fe764-47ff-46fb-a357-7161a110fc25)) + (fp_line (start 0.5 0.25) (end -0.5 0.25) (layer "F.Fab") (width 0.1) (tstamp 3e942485-4fed-40e5-834c-00a79e2bbdec)) + (fp_line (start -0.5 -0.25) (end 0.5 -0.25) (layer "F.Fab") (width 0.1) (tstamp 9b28b110-ff08-4a97-acb1-2e048d2695da)) + (fp_line (start 0.5 -0.25) (end 0.5 0.25) (layer "F.Fab") (width 0.1) (tstamp dfc3633f-55bc-4e6d-bdf0-26a787b4081c)) + (pad "1" smd roundrect (at -0.5675 0) (size 0.735 0.62) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 3 "GND") (pintype "passive") (tstamp 5dfebc01-82bd-47aa-889f-df4a888075f2)) + (pad "2" smd roundrect (at 0.5675 0) (size 0.735 0.62) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 5 "Net-(U7-Pad5)") (pintype "passive") (tstamp 55b7b837-6ec7-48fe-8372-494d9537ee18)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) (rotate (xyz 0 0 0)) ) ) - (footprint "Package_SO:MSOP-10_3x3mm_P0.5mm" (layer "F.Cu") - (tedit 5A02F25C) (tstamp 90e44778-8980-48d9-9125-9a04f8acfa37) - (at 111 150 180) - (descr "10-Lead Plastic Micro Small Outline Package (MS) [MSOP] (see Microchip Packaging Specification 00000049BS.pdf)") - (tags "SSOP 0.5") + (footprint "Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder" (layer "F.Cu") + (tedit 5F6BB22C) (tstamp 927a06dd-851f-48af-8a3b-cc054f4d78b0) + (at 91.83 134.52) + (descr "Capacitor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") + (tags "capacitor handsolder") (property "Sheetfile" "Morse_code_PCB.kicad_sch") (property "Sheetname" "") - (path "/d1649c49-73bf-461b-85a3-76adaec8115c") + (path "/c5449947-3eb6-438a-a259-9adb710c7987") (attr smd) - (fp_text reference "U4" (at -2.1 2.5) (layer "F.SilkS") - (effects (font (size 1 1) (thickness 0.15))) - (tstamp 2bf44e15-598f-4f45-bcc8-7bcaa951b97f) + (fp_text reference "C15" (at 1.97 -0.02) (layer "F.SilkS") + (effects (font (size 0.5 0.5) (thickness 0.125))) + (tstamp d55803bb-9466-4e20-b4f0-f5bb6827c207) ) - (fp_text value "CH340E" (at 0 2.6) (layer "F.Fab") + (fp_text value "C" (at 0 1.16) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) - (tstamp 418cc7f0-30b0-4e01-af82-68accc6aac81) + (tstamp 6ad83ab5-dcd8-494c-b884-9f355d90844c) ) (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") - (effects (font (size 0.6 0.6) (thickness 0.15))) - (tstamp ebd99cd4-89c3-400d-910e-95a7fd5c0e2d) + (effects (font (size 0.25 0.25) (thickness 0.04))) + (tstamp 63a5166e-d5d7-400d-8cd8-a44cd76b5051) ) - (fp_line (start -1.675 1.675) (end -1.675 1.375) (layer "F.SilkS") (width 0.15) (tstamp 40658cfe-bf52-4f86-907a-4ed9fcb23420)) - (fp_line (start -1.675 -1.675) (end -1.675 -1.45) (layer "F.SilkS") (width 0.15) (tstamp 976bfe27-925f-4657-aa11-b4229e3f6f7a)) - (fp_line (start 1.675 1.675) (end 1.675 1.375) (layer "F.SilkS") (width 0.15) (tstamp 9fba504a-b1db-4d30-85fe-76ef2ce57ef7)) - (fp_line (start 1.675 -1.675) (end 1.675 -1.375) (layer "F.SilkS") (width 0.15) (tstamp a466700c-2c13-41a6-b33a-e257968ca6f9)) - (fp_line (start -1.675 -1.675) (end 1.675 -1.675) (layer "F.SilkS") (width 0.15) (tstamp a7f00276-dba7-49e6-ad21-69e702383de7)) - (fp_line (start -1.675 -1.45) (end -2.9 -1.45) (layer "F.SilkS") (width 0.15) (tstamp eabd40f7-5a20-4d26-9497-003d78a7930b)) - (fp_line (start -1.675 1.675) (end 1.675 1.675) (layer "F.SilkS") (width 0.15) (tstamp ecdb1b4d-1827-4133-9e16-4fc9c5ce50b9)) - (fp_line (start -3.15 1.85) (end 3.15 1.85) (layer "F.CrtYd") (width 0.05) (tstamp 88df5292-0e3c-47cf-9847-b4d927f7609d)) - (fp_line (start 3.15 -1.85) (end 3.15 1.85) (layer "F.CrtYd") (width 0.05) (tstamp 9080afda-a395-433f-a96e-639b5adc1ae4)) - (fp_line (start -3.15 -1.85) (end -3.15 1.85) (layer "F.CrtYd") (width 0.05) (tstamp 992e4699-0acd-4c4d-bcc6-e9a5dad735b2)) - (fp_line (start -3.15 -1.85) (end 3.15 -1.85) (layer "F.CrtYd") (width 0.05) (tstamp f9eb81c0-445b-4ece-ab76-5ae53f65d31e)) - (fp_line (start -1.5 -0.5) (end -0.5 -1.5) (layer "F.Fab") (width 0.15) (tstamp 2ad1acf9-46a2-4a39-a22a-cf4eb0501274)) - (fp_line (start -0.5 -1.5) (end 1.5 -1.5) (layer "F.Fab") (width 0.15) (tstamp 3a6c0efe-1549-4b24-97bb-d1b767d40da3)) - (fp_line (start -1.5 1.5) (end -1.5 -0.5) (layer "F.Fab") (width 0.15) (tstamp 4396aeb6-d46a-44af-b64d-943878eeb0bc)) - (fp_line (start 1.5 -1.5) (end 1.5 1.5) (layer "F.Fab") (width 0.15) (tstamp 5cae74f7-3cde-4587-993f-0ee8d98402c4)) - (fp_line (start 1.5 1.5) (end -1.5 1.5) (layer "F.Fab") (width 0.15) (tstamp e3ebdaaf-a0fc-4058-9995-4e1ada7385ff)) - (pad "1" smd rect locked (at -2.2 -1 180) (size 1.4 0.3) (layers "F.Cu" "F.Paste" "F.Mask") - (net 40 "Net-(R11-Pad1)") (pinfunction "UD+") (pintype "bidirectional") (tstamp e90e38a8-0b49-403c-a738-d4ff340ea362)) - (pad "2" smd rect locked (at -2.2 -0.5 180) (size 1.4 0.3) (layers "F.Cu" "F.Paste" "F.Mask") - (net 41 "Net-(R12-Pad1)") (pinfunction "UD-") (pintype "bidirectional") (tstamp ca6fd445-25fc-4651-83d7-97f98c16de03)) - (pad "3" smd rect locked (at -2.2 0 180) (size 1.4 0.3) (layers "F.Cu" "F.Paste" "F.Mask") - (net 4 "GND") (pinfunction "GND") (pintype "power_in") (tstamp fa150752-dda1-4ad9-938d-2645bdaa3185)) - (pad "4" smd rect locked (at -2.2 0.5 180) (size 1.4 0.3) (layers "F.Cu" "F.Paste" "F.Mask") - (net 49 "unconnected-(U4-Pad4)") (pinfunction "~{RTS}") (pintype "output") (tstamp 3129c8ba-0edc-46a2-bccc-30dba913a0f0)) - (pad "5" smd rect locked (at -2.2 1 180) (size 1.4 0.3) (layers "F.Cu" "F.Paste" "F.Mask") - (net 50 "unconnected-(U4-Pad5)") (pinfunction "~{CTS}") (pintype "input") (tstamp c94bd379-2f2a-417e-9bae-0089216fe3a4)) - (pad "6" smd rect locked (at 2.2 1 180) (size 1.4 0.3) (layers "F.Cu" "F.Paste" "F.Mask") - (net 42 "Net-(R14-Pad1)") (pinfunction "TNOW") (pintype "output") (tstamp 3b9de530-563f-4388-93ef-ac49f73efc16)) - (pad "7" smd rect locked (at 2.2 0.5 180) (size 1.4 0.3) (layers "F.Cu" "F.Paste" "F.Mask") - (net 11 "VCC") (pinfunction "VCC") (pintype "power_in") (tstamp 3e3166cb-4f6a-4bd0-a061-1a928506ebe4)) - (pad "8" smd rect locked (at 2.2 0 180) (size 1.4 0.3) (layers "F.Cu" "F.Paste" "F.Mask") - (net 48 "TXD") (pinfunction "TXD") (pintype "output") (tstamp 049b8f77-7833-4bfa-9bb6-3b036f5b8e80)) - (pad "9" smd rect locked (at 2.2 -0.5 180) (size 1.4 0.3) (layers "F.Cu" "F.Paste" "F.Mask") - (net 47 "RXD") (pinfunction "RXD") (pintype "input") (tstamp 5323cce3-cd8e-4aa4-a273-38170fab5b8c)) - (pad "10" smd rect locked (at 2.2 -1 180) (size 1.4 0.3) (layers "F.Cu" "F.Paste" "F.Mask") - (net 7 "Net-(C4-Pad1)") (pinfunction "V3") (pintype "passive") (tstamp 6e3e8d69-7aeb-48ea-9524-2dee9d808d78)) - (model "${KICAD6_3DMODEL_DIR}/Package_SO.3dshapes/MSOP-10_3x3mm_P0.5mm.wrl" + (fp_line (start -0.115835 -0.36) (end 0.115835 -0.36) (layer "F.SilkS") (width 0.12) (tstamp 7a57c193-8053-4916-9ab0-4158f2cee9c7)) + (fp_line (start -0.115835 0.36) (end 0.115835 0.36) (layer "F.SilkS") (width 0.12) (tstamp ce1565db-6500-4f31-a794-5c49cde70b8a)) + (fp_line (start -1.08 0.46) (end -1.08 -0.46) (layer "F.CrtYd") (width 0.05) (tstamp 4155e270-926a-40e7-8335-32c4492be238)) + (fp_line (start 1.08 0.46) (end -1.08 0.46) (layer "F.CrtYd") (width 0.05) (tstamp 6b6fd764-d949-4699-8423-22321ed8ba1e)) + (fp_line (start -1.08 -0.46) (end 1.08 -0.46) (layer "F.CrtYd") (width 0.05) (tstamp 743c0d62-edfe-49df-bf40-223d4f0a2aa7)) + (fp_line (start 1.08 -0.46) (end 1.08 0.46) (layer "F.CrtYd") (width 0.05) (tstamp 86ced170-a793-43d2-8b82-4f9e31885135)) + (fp_line (start 0.5 -0.25) (end 0.5 0.25) (layer "F.Fab") (width 0.1) (tstamp 10df5a3b-5f9f-486b-b03f-16dfd5ab6d31)) + (fp_line (start -0.5 0.25) (end -0.5 -0.25) (layer "F.Fab") (width 0.1) (tstamp 234d0cad-2342-477d-8b48-ac499d315f22)) + (fp_line (start -0.5 -0.25) (end 0.5 -0.25) (layer "F.Fab") (width 0.1) (tstamp cf573ebb-4e77-4a7c-822b-e8512bd3ac37)) + (fp_line (start 0.5 0.25) (end -0.5 0.25) (layer "F.Fab") (width 0.1) (tstamp e697d0cf-5a89-4209-8b91-7775fd3169ca)) + (pad "1" smd roundrect (at -0.5675 0) (size 0.735 0.62) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 3 "GND") (pintype "passive") (tstamp 1920b526-be50-4044-921e-738679d05aad)) + (pad "2" smd roundrect (at 0.5675 0) (size 0.735 0.62) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 44 "Net-(U7-Pad3)") (pintype "passive") (tstamp 0822003a-4943-41d2-9c41-77d7bd200eaa)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0402_1005Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) (rotate (xyz 0 0 0)) @@ -2008,7 +1904,7 @@ (property "Sheetname" "") (path "/d2468d57-d43f-4e6d-8441-67b6bc660c99") (attr smd) - (fp_text reference "R23" (at 0 1.45 90) (layer "F.SilkS") + (fp_text reference "R23" (at 0 1.35 -90) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp 0fa50f25-2088-41a0-bcf9-363465cb9c86) ) @@ -2031,9 +1927,9 @@ (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 8a43c00c-b58b-4e0c-be1c-85a198cd9078)) (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp dc2ae10b-7309-4ed2-baee-9111e5e1cbc9)) (pad "1" smd roundrect locked (at -0.825 0 270) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 11 "VCC") (pintype "passive") (tstamp 69c6456e-c599-4b41-a38f-692094f26f60)) + (net 9 "VCC") (pintype "passive") (tstamp 69c6456e-c599-4b41-a38f-692094f26f60)) (pad "2" smd roundrect locked (at 0.825 0 270) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 30 "TICK_B") (pintype "passive") (tstamp a0695738-7af6-419e-8116-01442839aacb)) + (net 25 "TICK_B") (pintype "passive") (tstamp a0695738-7af6-419e-8116-01442839aacb)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -2043,14 +1939,14 @@ (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") (tedit 5F68FEEE) (tstamp 9b712c8b-80c9-40c1-b2c0-b449d4092371) - (at 116.1 150.9) + (at 116.2 149.3) (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") (tags "resistor") (property "Sheetfile" "Morse_code_PCB.kicad_sch") (property "Sheetname" "") (path "/4cc19d91-a625-48b1-8ed0-545300f18c5e") (attr smd) - (fp_text reference "R12" (at 2.3 0.4) (layer "F.SilkS") + (fp_text reference "R12" (at 2.4 0.9) (layer "F.SilkS") (effects (font (size 0.5 0.5) (thickness 0.125))) (tstamp 86b22f09-59ca-4a8d-81ce-f44eea393466) ) @@ -2073,9 +1969,9 @@ (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 4442bbd3-d8c0-4204-a455-7ee1bc0d1e7f)) (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp 83867fb3-6ba0-43af-96e8-c8471ca3061a)) (pad "1" smd roundrect locked (at -0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 41 "Net-(R12-Pad1)") (pintype "passive") (tstamp df422a13-79b7-4c3f-8840-775e7ac0c613)) + (net 55 "USB_DP") (pintype "passive") (tstamp df422a13-79b7-4c3f-8840-775e7ac0c613)) (pad "2" smd roundrect locked (at 0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 26 "Net-(J1-PadA7)") (pintype "passive") (tstamp c8dabb23-f18a-46f5-a87c-c4207f24d549)) + (net 52 "Net-(R13-Pad1)") (pintype "passive") (tstamp c8dabb23-f18a-46f5-a87c-c4207f24d549)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -2083,73 +1979,58 @@ ) ) - (footprint "MY:BAT_BC501SM" (layer "F.Cu") - (tedit 62482965) (tstamp 9bab43ec-e08b-4c64-a633-e90056394cd5) - (at 91.2 119.2) + (footprint "Capacitor_SMD:C_0805_2012Metric" (layer "F.Cu") + (tedit 5F68FEEE) (tstamp 9bb1ef3c-118b-4827-bd75-538a6c260d81) + (at 93.88 144.37 180) + (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf, https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") + (tags "capacitor") (property "Sheetfile" "Morse_code_PCB.kicad_sch") (property "Sheetname" "") - (path "/88d8a17c-0ee1-405b-b7c6-a4e8fee4260e") - (attr through_hole) - (fp_text reference "BT1" (at -5.555 -8.889) (layer "F.SilkS") - (effects (font (size 1.4 1.4) (thickness 0.15))) - (tstamp 48b0a357-e06c-49e8-baf7-64cf2e727c8a) + (path "/b5b14a72-6174-4e0d-a89b-0052cd50bb4f") + (attr smd) + (fp_text reference "C17" (at -2.92 -0.03) (layer "F.SilkS") + (effects (font (size 0.8 0.8) (thickness 0.125))) + (tstamp 3fc25901-854c-4f60-b126-f2c1c0360263) ) - (fp_text value "Battery_Cell" (at -0.221 9.111) (layer "F.Fab") - (effects (font (size 1.4 1.4) (thickness 0.15))) - (tstamp 8a0cd3d6-fdb0-4a75-9479-59e3b8072343) + (fp_text value "100nF" (at 0 1.68) (layer "F.Fab") + (effects (font (size 1 1) (thickness 0.15))) + (tstamp 08db8083-9999-4857-95a1-20712bd9a372) ) - (fp_text user "-" (at -11.684 0.635) (layer "F.SilkS") - (effects (font (size 1.4 1.4) (thickness 0.15))) - (tstamp 9ba24b1f-aa4f-4999-8575-54b076dee292) + (fp_text user "${REFERENCE}" (at -0.02 -0.03) (layer "F.Fab") + (effects (font (size 0.5 0.5) (thickness 0.08))) + (tstamp 4c8f85b7-738f-47cd-a8f5-b5d7783c6b06) ) - (fp_text user "+" (at 11.049 0.762) (layer "F.SilkS") - (effects (font (size 1.4 1.4) (thickness 0.15))) - (tstamp e1abddf7-c374-4a4d-adab-cd19b6ff9743) + (fp_line (start -0.261252 -0.735) (end 0.261252 -0.735) (layer "F.SilkS") (width 0.12) (tstamp 9870e85c-b122-4e1e-9057-f39d0568ed82)) + (fp_line (start -0.261252 0.735) (end 0.261252 0.735) (layer "F.SilkS") (width 0.12) (tstamp b2cd0c43-0c71-49a7-a6aa-1676af95b692)) + (fp_line (start -1.7 -0.98) (end 1.7 -0.98) (layer "F.CrtYd") (width 0.05) (tstamp 5faf5d32-c69b-4ea5-8598-1d698eb87d58)) + (fp_line (start 1.7 -0.98) (end 1.7 0.98) (layer "F.CrtYd") (width 0.05) (tstamp 8754c8ad-8208-4779-a399-e236a119fdb3)) + (fp_line (start 1.7 0.98) (end -1.7 0.98) (layer "F.CrtYd") (width 0.05) (tstamp ea17384f-96f5-440c-89c7-f5a1bb809037)) + (fp_line (start -1.7 0.98) (end -1.7 -0.98) (layer "F.CrtYd") (width 0.05) (tstamp eb0370c7-231d-49c7-b578-56e3cc7d1cd6)) + (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp 06450730-5a99-4eb4-9240-f0dbc0523d91)) + (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 63e758c4-280b-423e-9922-65c98852e728)) + (fp_line (start -1 0.625) (end -1 -0.625) (layer "F.Fab") (width 0.1) (tstamp aa187f99-5abf-4aaf-99c2-f9281d13fd98)) + (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp b1dbea83-cbb9-410a-9d6f-0f78a5b53585)) + (pad "1" smd roundrect (at -0.95 0 180) (size 1 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 47 "Net-(U7-Pad7)") (pintype "passive") (tstamp 6c319460-254f-4764-8594-04a29186b80e)) + (pad "2" smd roundrect (at 0.95 0 180) (size 1 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 3 "GND") (pintype "passive") (tstamp 6644d3fc-2dc3-4b6f-a4e4-e4c6d7749bea)) + (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl" + (offset (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) ) - (fp_text user "+" (at 11.049 0.762) (layer "F.Fab") - (effects (font (size 1.4 1.4) (thickness 0.15))) - (tstamp 344ad158-627a-4fe8-8f32-ea03d1a00181) - ) - (fp_text user "-" (at -11.684 0.635) (layer "F.Fab") - (effects (font (size 1.4 1.4) (thickness 0.15))) - (tstamp 7e53d23b-d00c-4d0c-a421-7ca4d3e1f660) - ) - (fp_line (start 7.185 -7.2) (end 7.185 -1.62) (layer "F.SilkS") (width 0.127) (tstamp 0211a684-15d1-4fd8-98a1-9d2eea82cffc)) - (fp_line (start 7.185 -7.2) (end 4.67 -7.2) (layer "F.SilkS") (width 0.127) (tstamp 2f27dbab-c089-4457-a2fa-190dc3cf92cc)) - (fp_line (start 4.67 7.2) (end 3.7 6.5) (layer "F.SilkS") (width 0.127) (tstamp 60c40d58-2aa2-424b-bd30-c9e22aec6136)) - (fp_line (start 4.67 -7.2) (end 3.7 -6.5) (layer "F.SilkS") (width 0.127) (tstamp 87c412bd-e547-4419-99e9-f510a3deb9db)) - (fp_line (start 7.185 1.62) (end 7.185 7.2) (layer "F.SilkS") (width 0.127) (tstamp 8a4a3f49-1920-4c4c-a71d-0fd1686376d6)) - (fp_line (start 7.185 7.2) (end 4.67 7.2) (layer "F.SilkS") (width 0.127) (tstamp e337d184-4fe2-4112-8c63-ce52ef60dd48)) - (fp_arc (start 3.700001 6.5) (mid -3.042265 6.842698) (end -7.32 1.62) (layer "F.SilkS") (width 0.127) (tstamp e006ec8d-cc48-42c7-8039-cc5d68ebcb59)) - (fp_arc (start -7.319999 -1.62) (mid -3.042265 -6.842697) (end 3.7 -6.5) (layer "F.SilkS") (width 0.127) (tstamp f5a20633-45e2-4754-934b-91b1aef6bd0b)) - (fp_line (start -9.65 7.75) (end -9.65 -7.75) (layer "F.CrtYd") (width 0.05) (tstamp a210fe35-e048-48c0-955b-1b4847f7fa1f)) - (fp_line (start -9.65 -7.75) (end 10.25 -7.75) (layer "F.CrtYd") (width 0.05) (tstamp a81e9870-896f-440c-98c3-a71f4fc9b3c9)) - (fp_line (start 10.25 7.75) (end -9.65 7.75) (layer "F.CrtYd") (width 0.05) (tstamp e1341a4d-89a3-451f-9240-dd68e2a3b4eb)) - (fp_line (start 10.25 -7.75) (end 10.25 7.75) (layer "F.CrtYd") (width 0.05) (tstamp e75cdfd5-20cf-43c2-a6d1-75d3536b1529)) - (fp_line (start 4.67 -7.2) (end 3.7 -6.5) (layer "F.Fab") (width 0.127) (tstamp 35a5dc45-7e4c-488a-b74b-6eac3edef64a)) - (fp_line (start 4.67 7.2) (end 3.7 6.5) (layer "F.Fab") (width 0.127) (tstamp 75638845-368f-4f2a-bc33-f68bdce2531a)) - (fp_line (start 7.185 -7.2) (end 4.67 -7.2) (layer "F.Fab") (width 0.127) (tstamp a4c639f5-5f1f-49ff-9f4b-33f83fe5d62d)) - (fp_line (start 7.185 7.2) (end 4.67 7.2) (layer "F.Fab") (width 0.127) (tstamp d7f4faf1-e29d-4b15-9022-6da62674d57b)) - (fp_line (start 7.185 -7.2) (end 7.185 7.2) (layer "F.Fab") (width 0.127) (tstamp e34f1c24-1183-4266-942c-fcb14ff686e5)) - (fp_arc (start 3.699999 6.5) (mid -7.479336 0) (end 3.7 -6.5) (layer "F.Fab") (width 0.127) (tstamp 8115b231-27fb-4147-991e-6053708af8f5)) - (pad "" np_thru_hole circle (at 4 0) (size 1.3 1.3) (drill 1.3) (layers *.Cu *.Mask) (tstamp 23339218-9abd-4783-86ac-fda51e39da5b)) - (pad "" np_thru_hole circle (at -3.5 0) (size 1 1) (drill 1) (layers *.Cu *.Mask) (tstamp 959c00ce-5199-4b1a-8889-4b82d8ac4c85)) - (pad "1" smd rect (at 8.23 0 180) (size 3.54 2.6) (layers "F.Cu" "F.Paste" "F.Mask") - (net 53 "unconnected-(BT1-Pad1)") (pinfunction "+") (pintype "passive") (tstamp 288888a6-4ba4-4710-a5b9-fc5848f2604b)) - (pad "2" smd rect (at -7.57 0) (size 3.66 2.6) (layers "F.Cu" "F.Paste" "F.Mask") - (net 54 "unconnected-(BT1-Pad2)") (pinfunction "-") (pintype "passive") (tstamp 7b0c0c85-45e8-4eac-9a5f-fa4386fd7839)) ) (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") (tedit 5F68FEEE) (tstamp 9d7fcd45-455f-4fd8-bf85-82863fd70975) - (at 116.1 149.3) + (at 116.2 151.1) (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") (tags "resistor") (property "Sheetfile" "Morse_code_PCB.kicad_sch") (property "Sheetname" "") (path "/160da0f8-ffc1-4521-b663-985be0e35229") (attr smd) - (fp_text reference "R11" (at 2.3 0.6) (layer "F.SilkS") + (fp_text reference "R11" (at 2.4 0.1) (layer "F.SilkS") (effects (font (size 0.5 0.5) (thickness 0.125))) (tstamp 2db22596-7756-409b-877c-a2ae72fcb010) ) @@ -2172,9 +2053,9 @@ (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 8e27167b-bfd1-4762-bf73-25e300f92208)) (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp fbb41880-c385-43eb-a8b7-bab884dd9161)) (pad "1" smd roundrect locked (at -0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 40 "Net-(R11-Pad1)") (pintype "passive") (tstamp da285362-0966-45a7-b270-8494f2359e56)) + (net 54 "USB_DN") (pintype "passive") (tstamp da285362-0966-45a7-b270-8494f2359e56)) (pad "2" smd roundrect locked (at 0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 23 "Net-(J1-PadA6)") (pintype "passive") (tstamp e088e136-162b-4e55-9397-52a31b91d4c3)) + (net 53 "Net-(R11-Pad2)") (pintype "passive") (tstamp e088e136-162b-4e55-9397-52a31b91d4c3)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -2184,7 +2065,7 @@ (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") (tedit 5F68FEEE) (tstamp a3e8945e-4a0d-4498-a558-bc33c66da063) - (at 111.5 152.7 180) + (at 110.275 158 180) (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") (tags "resistor") (property "Sheetfile" "Morse_code_PCB.kicad_sch") @@ -2214,9 +2095,9 @@ (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 44105186-101d-4b5c-b911-2b008155ec0a)) (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp f4d1b110-55bd-41b0-a39c-5dabf4472eb2)) (pad "1" smd roundrect locked (at -0.825 0 180) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 18 "Net-(D3-Pad1)") (pintype "passive") (tstamp 984a4be6-5afa-41c2-88e2-c05a0c036b5c)) + (net 15 "Net-(D3-Pad1)") (pintype "passive") (tstamp 984a4be6-5afa-41c2-88e2-c05a0c036b5c)) (pad "2" smd roundrect locked (at 0.825 0 180) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 39 "BAT_CHG_DET") (pintype "passive") (tstamp 6be62b24-ff30-4777-8cad-48f110239c02)) + (net 34 "BAT_CHG_DET") (pintype "passive") (tstamp 6be62b24-ff30-4777-8cad-48f110239c02)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -2226,22 +2107,22 @@ (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") (tedit 5F68FEEE) (tstamp a719c4b4-e195-436e-bb36-11336adf330b) - (at 92.6 148.3 90) + (at 101.83 137.19) (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") (tags "resistor") (property "Sheetfile" "Morse_code_PCB.kicad_sch") (property "Sheetname" "") - (path "/8969f576-03fa-4e04-b345-8d7fcf6d78ae") + (path "/28dce972-fafd-4ac8-b8d0-ff3e3e001c2c") (attr smd) - (fp_text reference "R1" (at -0.6 -1.4 270) (layer "F.SilkS") + (fp_text reference "R1" (at -2.43 0.11) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp bee0e1c1-b842-441d-85d5-538540a63a14) ) - (fp_text value "1K" (at 0 1.43 90) (layer "F.Fab") + (fp_text value "1K" (at 0 1.43) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp 2e484963-b269-42b3-9486-24df28465ede) ) - (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") + (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") (effects (font (size 0.4 0.4) (thickness 0.06))) (tstamp 51b2997d-b40d-4e0c-81eb-c728c8350e74) ) @@ -2255,10 +2136,10 @@ (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp ac5bf277-3416-495c-afc2-55995107a595)) (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp cf8be8e8-fba6-419a-9f21-3be1ca8645c2)) (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp f18c02a5-5547-491a-88ba-3ae46155e175)) - (pad "1" smd roundrect locked (at -0.825 0 90) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 4 "GND") (pintype "passive") (tstamp e6645d7c-8aa7-428c-9047-b9994c003579)) - (pad "2" smd roundrect locked (at 0.825 0 90) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 36 "Net-(R1-Pad2)") (pintype "passive") (tstamp 656203b8-2496-463d-a564-4049bc862a59)) + (pad "1" smd roundrect locked (at -0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 3 "GND") (pintype "passive") (tstamp e6645d7c-8aa7-428c-9047-b9994c003579)) + (pad "2" smd roundrect locked (at 0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 51 "Net-(U7-Pad44)") (pintype "passive") (tstamp 656203b8-2496-463d-a564-4049bc862a59)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -2266,87 +2147,6 @@ ) ) - (footprint "Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm" (layer "F.Cu") - (tedit 5E476F32) (tstamp acf269a3-b5b4-4d37-bc63-9866c651db89) - (at 95.35 142.45 90) - (descr "TSSOP, 20 Pin (JEDEC MO-153 Var AC https://www.jedec.org/document_search?search_api_views_fulltext=MO-153), generated with kicad-footprint-generator ipc_gullwing_generator.py") - (tags "TSSOP SO") - (property "Sheetfile" "Morse_code_PCB.kicad_sch") - (property "Sheetname" "") - (path "/4632212f-13ce-4392-bc68-ccb9ba333770") - (attr smd) - (fp_text reference "U1" (at 0 -4.2 90) (layer "F.SilkS") - (effects (font (size 1 1) (thickness 0.15))) - (tstamp 89e41919-24bd-413d-a718-92932ead7e0b) - ) - (fp_text value "STM32F030F4Px" (at 0 4.2 90) (layer "F.Fab") - (effects (font (size 1 1) (thickness 0.15))) - (tstamp f96be58a-42a0-48c0-a9fc-69734e6fddd0) - ) - (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") - (effects (font (size 1 1) (thickness 0.15))) - (tstamp 67db433c-cafa-4490-8c28-fa8bd27a74bf) - ) - (fp_line (start 0 -3.385) (end 2.2 -3.385) (layer "F.SilkS") (width 0.12) (tstamp 248d2bb7-0a12-4e59-85b1-0bf7fa5607bf)) - (fp_line (start 0 3.385) (end 2.2 3.385) (layer "F.SilkS") (width 0.12) (tstamp 3fc9111e-aea6-4e80-84b2-851df4cde034)) - (fp_line (start 0 3.385) (end -2.2 3.385) (layer "F.SilkS") (width 0.12) (tstamp 42276c9d-039a-402b-bf0d-f7de11626166)) - (fp_line (start 0 -3.385) (end -3.6 -3.385) (layer "F.SilkS") (width 0.12) (tstamp 6603d0d6-46aa-4c82-9af7-d2593864023f)) - (fp_line (start -3.85 3.5) (end 3.85 3.5) (layer "F.CrtYd") (width 0.05) (tstamp 4c80a14e-8d5c-4146-b6ab-0852de006ce2)) - (fp_line (start 3.85 -3.5) (end -3.85 -3.5) (layer "F.CrtYd") (width 0.05) (tstamp 66c614dc-9384-43e6-ab64-ba9e422cd3ed)) - (fp_line (start 3.85 3.5) (end 3.85 -3.5) (layer "F.CrtYd") (width 0.05) (tstamp 6af80696-59f4-4732-982d-daaad9d8f2a6)) - (fp_line (start -3.85 -3.5) (end -3.85 3.5) (layer "F.CrtYd") (width 0.05) (tstamp 79275a29-6f59-4b9a-b0ab-e99f7870580b)) - (fp_line (start 2.2 -3.25) (end 2.2 3.25) (layer "F.Fab") (width 0.1) (tstamp 2c6bda5a-527a-4a7e-a329-1a3c5247a7fd)) - (fp_line (start -1.2 -3.25) (end 2.2 -3.25) (layer "F.Fab") (width 0.1) (tstamp 2d99624c-eea0-4021-a743-3979b717b79b)) - (fp_line (start -2.2 -2.25) (end -1.2 -3.25) (layer "F.Fab") (width 0.1) (tstamp 4004288d-bf7f-41fb-ab8f-dbd688fa294e)) - (fp_line (start 2.2 3.25) (end -2.2 3.25) (layer "F.Fab") (width 0.1) (tstamp 68f747fa-d6af-4bd7-bff6-c024b4003b38)) - (fp_line (start -2.2 3.25) (end -2.2 -2.25) (layer "F.Fab") (width 0.1) (tstamp cc523813-234e-4103-b400-475f6a03fb3d)) - (pad "1" smd roundrect locked (at -2.8625 -2.925 90) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 36 "Net-(R1-Pad2)") (pinfunction "BOOT0") (pintype "input") (tstamp 36c39291-9b68-46d8-a0e3-acfa6ced1e66)) - (pad "2" smd roundrect locked (at -2.8625 -2.275 90) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 31 "TICK_A") (pinfunction "PF0") (pintype "input") (tstamp 50d5a33d-196c-4902-9dbb-6aa4f73f9342)) - (pad "3" smd roundrect locked (at -2.8625 -1.625 90) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 30 "TICK_B") (pinfunction "PF1") (pintype "input") (tstamp a8058df3-2a46-4298-91a9-36db43163bc2)) - (pad "4" smd roundrect locked (at -2.8625 -0.975 90) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 3 "Net-(C1-Pad1)") (pinfunction "NRST") (pintype "input") (tstamp 91e1fe48-20e0-431a-be39-5538170ff19e)) - (pad "5" smd roundrect locked (at -2.8625 -0.325 90) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 33 "Net-(L1-Pad2)") (pinfunction "VDDA") (pintype "power_in") (tstamp 50cd863d-e08f-4a7d-b7cb-34d95154af3a)) - (pad "6" smd roundrect locked (at -2.8625 0.325 90) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 38 "BAT_ADC") (pinfunction "PA0") (pintype "bidirectional") (tstamp 67199e20-af93-42e8-8ef6-fe0067df0a1c)) - (pad "7" smd roundrect locked (at -2.8625 0.975 90) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 39 "BAT_CHG_DET") (pinfunction "PA1") (pintype "bidirectional") (tstamp bbeaf466-56ab-41d4-b876-4bf406740d8a)) - (pad "8" smd roundrect locked (at -2.8625 1.625 90) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 47 "RXD") (pinfunction "PA2") (pintype "bidirectional") (tstamp 77b5f244-6b82-446a-a40a-e9729d77c73a)) - (pad "9" smd roundrect locked (at -2.8625 2.275 90) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 48 "TXD") (pinfunction "PA3") (pintype "bidirectional") (tstamp 31c1d00b-e169-4bf0-ab7d-c5f8745cf311)) - (pad "10" smd roundrect locked (at -2.8625 2.925 90) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 13 "PWM") (pinfunction "PA4") (pintype "bidirectional") (tstamp ac7c9c4d-a948-4040-a402-3d8f47c5f10e)) - (pad "11" smd roundrect locked (at 2.8625 2.925 90) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 45 "MUTE") (pinfunction "PA5") (pintype "bidirectional") (tstamp 47d8ec12-9085-4ddc-89f4-8291e89238ea)) - (pad "12" smd roundrect locked (at 2.8625 2.275 90) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 5 "Net-(C2-Pad1)") (pinfunction "PA6") (pintype "bidirectional") (tstamp fcaf9128-c7e6-49f1-b252-1e3b3379f1f3)) - (pad "13" smd roundrect locked (at 2.8625 1.625 90) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 6 "Net-(C3-Pad1)") (pinfunction "PA7") (pintype "bidirectional") (tstamp 0bbd5ac6-3dd0-473d-9d4c-28ccbfbbe9ae)) - (pad "14" smd roundrect locked (at 2.8625 0.975 90) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 21 "K1_DET") (pinfunction "PB1") (pintype "bidirectional") (tstamp 393f9f69-f5f3-4c72-84fe-70c2b3bf7c49)) - (pad "15" smd roundrect locked (at 2.8625 0.325 90) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 4 "GND") (pinfunction "VSS") (pintype "power_in") (tstamp 0daecdde-c7bb-438a-af7a-81cb9557ce6b)) - (pad "16" smd roundrect locked (at 2.8625 -0.325 90) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 11 "VCC") (pinfunction "VDD") (pintype "power_in") (tstamp cb031a77-9b7a-4ffa-ac78-be0cf9b1a671)) - (pad "17" smd roundrect locked (at 2.8625 -0.975 90) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 44 "IIC_SCL") (pinfunction "PA9") (pintype "bidirectional") (tstamp 234fdc89-06ae-4c45-b9fd-3fdff4270ab6)) - (pad "18" smd roundrect locked (at 2.8625 -1.625 90) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 43 "IIC_SDL") (pinfunction "PA10") (pintype "bidirectional") (tstamp c20c34dc-0c8a-47c9-82f1-fe8a3533aa64)) - (pad "19" smd roundrect locked (at 2.8625 -2.275 90) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 15 "PWR_EN") (pinfunction "PA13") (pintype "bidirectional") (tstamp 80000a89-87b5-4e6a-92e9-64ba20dbcc58)) - (pad "20" smd roundrect locked (at 2.8625 -2.925 90) (size 1.475 0.4) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 46 "RUN_LED") (pinfunction "PA14") (pintype "bidirectional") (tstamp cf552897-0011-4482-b05c-c69686e77d50)) - (model "${KICAD6_3DMODEL_DIR}/Package_SO.3dshapes/TSSOP-20_4.4x6.5mm_P0.65mm.wrl" - (offset (xyz 0 0 0)) - (scale (xyz 1 1 1)) - (rotate (xyz 0 0 0)) - ) - ) - (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") (tedit 5F68FEEE) (tstamp b2fcc79a-db1f-4688-be2b-7c1638ddbd6a) (at 76.85 148.425 -90) @@ -2356,7 +2156,7 @@ (property "Sheetname" "") (path "/218ed971-d675-41ad-847e-13d54caf0dde") (attr smd) - (fp_text reference "R22" (at 0 1.55 90) (layer "F.SilkS") + (fp_text reference "R22" (at -0.025 1.35 -90) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp 15723ae3-a6e2-4dde-8176-00b27e81d19c) ) @@ -2379,9 +2179,9 @@ (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp e7924a74-61c5-465c-9374-9305fd541a11)) (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp e8158edc-20a3-40c7-babc-1f71692cea6b)) (pad "1" smd roundrect locked (at -0.825 0 270) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 11 "VCC") (pintype "passive") (tstamp b921797f-b1b0-4926-9198-54f72b17f13c)) + (net 9 "VCC") (pintype "passive") (tstamp b921797f-b1b0-4926-9198-54f72b17f13c)) (pad "2" smd roundrect locked (at 0.825 0 270) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 31 "TICK_A") (pintype "passive") (tstamp 4ebc68e2-7dcd-40ae-b738-07fafd7083eb)) + (net 26 "TICK_A") (pintype "passive") (tstamp 4ebc68e2-7dcd-40ae-b738-07fafd7083eb)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -2428,9 +2228,9 @@ (fp_line (start -0.2 0.2) (end -0.2 -0.2) (layer "F.Fab") (width 0.1) (tstamp eb0627ea-4705-4e2d-904f-1e06af050957)) (fp_line (start 0.1 0.2) (end 0.1 -0.2) (layer "F.Fab") (width 0.1) (tstamp f6248e18-9694-4940-9f52-e9013acaf5de)) (pad "1" smd rect locked (at -0.7 0 90) (size 0.6 0.7) (layers "F.Cu" "F.Paste" "F.Mask") - (net 20 "K1") (pinfunction "K") (pintype "passive") (tstamp d7f4784a-38a5-47f1-bce1-82f15295dd02)) + (net 17 "K1") (pinfunction "K") (pintype "passive") (tstamp d7f4784a-38a5-47f1-bce1-82f15295dd02)) (pad "2" smd rect locked (at 0.7 0 90) (size 0.6 0.7) (layers "F.Cu" "F.Paste" "F.Mask") - (net 19 "Net-(D4-Pad2)") (pinfunction "A") (pintype "passive") (tstamp ff2cca04-7dcf-44e6-b570-048a1f9b5bb5)) + (net 16 "Net-(D4-Pad2)") (pinfunction "A") (pintype "passive") (tstamp ff2cca04-7dcf-44e6-b570-048a1f9b5bb5)) (model "${KICAD6_3DMODEL_DIR}/Diode_SMD.3dshapes/D_SOD-523.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -2473,9 +2273,9 @@ (fp_line (start 0.65 1.45) (end -0.65 1.45) (layer "F.Fab") (width 0.1) (tstamp 8990791b-000f-4111-b559-4220d588528a)) (fp_line (start 0.65 -1.45) (end 0.65 1.45) (layer "F.Fab") (width 0.1) (tstamp d1f174fe-a19e-485a-9ff6-832f3ca08f22)) (pad "1" smd roundrect locked (at -0.9375 -0.95 90) (size 1.475 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 35 "Net-(Q4-Pad1)") (pinfunction "G") (pintype "input") (tstamp f9c9da1f-0e0d-4e35-9865-f07faa925b0f)) + (net 30 "Net-(Q4-Pad1)") (pinfunction "G") (pintype "input") (tstamp f9c9da1f-0e0d-4e35-9865-f07faa925b0f)) (pad "2" smd roundrect locked (at -0.9375 0.95 90) (size 1.475 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 11 "VCC") (pinfunction "S") (pintype "passive") (tstamp 87a2bf4a-6de2-4857-a6f4-86a3b5a9deca)) + (net 9 "VCC") (pinfunction "S") (pintype "passive") (tstamp 87a2bf4a-6de2-4857-a6f4-86a3b5a9deca)) (pad "3" smd roundrect locked (at 0.9375 0 90) (size 1.475 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) (net 1 "Net-(BZ1-Pad1)") (pinfunction "D") (pintype "passive") (tstamp f76eb4d9-b3e9-4a24-8a13-8f5b348d5556)) (model "${KICAD6_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23.wrl" @@ -2494,8 +2294,8 @@ (property "Sheetname" "") (path "/86071cfe-1543-479d-bd7a-9553562bc5e9") (attr smd) - (fp_text reference "U6" (at -3.1 0.8) (layer "F.SilkS") - (effects (font (size 1 1) (thickness 0.15))) + (fp_text reference "U6" (at 0.8 0) (layer "F.SilkS") + (effects (font (size 0.8 0.8) (thickness 0.15))) (tstamp ede979f9-e3f4-4c45-a156-a41efd4b8e93) ) (fp_text value "24AA02-OT" (at 0 2.4) (layer "F.Fab") @@ -2520,15 +2320,15 @@ (fp_line (start -0.8 1.45) (end -0.8 -1.05) (layer "F.Fab") (width 0.1) (tstamp e6dddb00-25a5-4938-892c-9e4ca78f12e4)) (fp_line (start -0.4 -1.45) (end 0.8 -1.45) (layer "F.Fab") (width 0.1) (tstamp f7f6b9e9-7b95-436d-b2df-a0cd07d20244)) (pad "1" smd roundrect locked (at -1.1375 -0.95) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 44 "IIC_SCL") (pinfunction "SCL") (pintype "input") (tstamp 1712e413-65f7-49cd-85de-71850fe8ac3b)) + (net 36 "IIC_SCL") (pinfunction "SCL") (pintype "input") (tstamp 1712e413-65f7-49cd-85de-71850fe8ac3b)) (pad "2" smd roundrect locked (at -1.1375 0) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 4 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 90de7d85-9562-4dd5-9dbe-d21cb9daab43)) + (net 3 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 90de7d85-9562-4dd5-9dbe-d21cb9daab43)) (pad "3" smd roundrect locked (at -1.1375 0.95) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 43 "IIC_SDL") (pinfunction "SDA") (pintype "bidirectional") (tstamp f2542dd4-b1a8-4179-a350-22601297de2a)) + (net 35 "IIC_SDL") (pinfunction "SDA") (pintype "bidirectional") (tstamp f2542dd4-b1a8-4179-a350-22601297de2a)) (pad "4" smd roundrect locked (at 1.1375 0.95) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 11 "VCC") (pinfunction "VCC") (pintype "power_in") (tstamp a937b888-b53d-4097-92d2-22e1039dfcf5)) + (net 9 "VCC") (pinfunction "VCC") (pintype "power_in") (tstamp a937b888-b53d-4097-92d2-22e1039dfcf5)) (pad "5" smd roundrect locked (at 1.1375 -0.95) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 52 "unconnected-(U6-Pad5)") (pinfunction "NC") (pintype "no_connect") (tstamp f6be77ac-afb8-452c-b4ae-26e9d46f1d58)) + (net 42 "unconnected-(U6-Pad5)") (pinfunction "NC") (pintype "no_connect") (tstamp f6be77ac-afb8-452c-b4ae-26e9d46f1d58)) (model "${KICAD6_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23-5.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -2538,22 +2338,22 @@ (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") (tedit 5F68FEEE) (tstamp c7439e90-c6b8-47b2-9d17-a06c395fe26e) - (at 104.23 147.71 180) + (at 112.3 146.7 90) (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") (tags "resistor") (property "Sheetfile" "Morse_code_PCB.kicad_sch") (property "Sheetname" "") (path "/89f59fa2-3d49-44cc-bb2f-0edc891f14dd") (attr smd) - (fp_text reference "R3" (at 2.53 -0.09) (layer "F.SilkS") + (fp_text reference "R3" (at 2.53 -0.09 90) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp 5ffe0a63-1ea9-40af-83d8-b3d2717da57e) ) - (fp_text value "10K" (at 0 1.43) (layer "F.Fab") + (fp_text value "10K" (at 0 1.43 90) (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))) (tstamp cbc1633b-2edb-4841-a64c-00ea63fa9a87) ) - (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") + (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") (effects (font (size 0.4 0.4) (thickness 0.06))) (tstamp 039b5e6d-01aa-4a6d-ae69-1ff629b7ab9d) ) @@ -2567,10 +2367,10 @@ (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 54b4b40d-a786-41e6-9f87-4dcc19fce6d5)) (fp_line (start -0.8 0.4125) (end -0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp aadf8ee5-3a49-4003-ad80-644b5101f2a4)) (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp bbbff0c8-2027-4667-b47f-a4c5832ff320)) - (pad "1" smd roundrect locked (at -0.825 0 180) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 5 "Net-(C2-Pad1)") (pintype "passive") (tstamp ad09ce9c-7766-4f5c-b537-2abf9551f61d)) - (pad "2" smd roundrect locked (at 0.825 0 180) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 11 "VCC") (pintype "passive") (tstamp 0bfad6c9-9df6-4e45-b18a-5f16528a1f0c)) + (pad "1" smd roundrect locked (at -0.825 0 90) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 28 "EN_A") (pintype "passive") (tstamp ad09ce9c-7766-4f5c-b537-2abf9551f61d)) + (pad "2" smd roundrect locked (at 0.825 0 90) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 9 "VCC") (pintype "passive") (tstamp 0bfad6c9-9df6-4e45-b18a-5f16528a1f0c)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -2580,14 +2380,14 @@ (footprint "Crystal:Crystal_SMD_5032-2Pin_5.0x3.2mm" (layer "F.Cu") (tedit 5A0FD1B2) (tstamp c86669e0-9a5b-4074-ad71-542d3ac6afa4) - (at 105.6 124.7) + (at 93.98 141.07) (descr "SMD Crystal SERIES SMD2520/2 http://www.icbase.com/File/PDF/HKC/HKC00061008.pdf, 5.0x3.2mm^2 package") (tags "SMD SMT crystal") (property "Sheetfile" "Morse_code_PCB.kicad_sch") (property "Sheetname" "") (path "/98a4e67b-a902-425f-8239-d37d3d9798fa") (attr smd) - (fp_text reference "Y1" (at 0 -2.8) (layer "F.SilkS") + (fp_text reference "Y1" (at 0.02 0.03) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp 195e15fb-2b4d-481e-a736-39af3c7c8f2f) ) @@ -2620,9 +2420,9 @@ (fp_line (start 2.5 -1.4) (end 2.5 1.4) (layer "F.Fab") (width 0.1) (tstamp abeeb399-e833-404f-822c-03fa13e8856e)) (fp_line (start 2.3 1.6) (end -2.3 1.6) (layer "F.Fab") (width 0.1) (tstamp f38d21ab-af91-4946-935e-343342f461c6)) (pad "1" smd rect (at -1.85 0) (size 2 2.4) (layers "F.Cu" "F.Paste" "F.Mask") - (net 103 "unconnected-(Y1-Pad1)") (pinfunction "1") (pintype "passive") (tstamp b2b229f3-c7e7-46a3-8b49-1cad8c141d01)) + (net 43 "Net-(U7-Pad6)") (pinfunction "1") (pintype "passive") (tstamp b2b229f3-c7e7-46a3-8b49-1cad8c141d01)) (pad "2" smd rect (at 1.85 0) (size 2 2.4) (layers "F.Cu" "F.Paste" "F.Mask") - (net 104 "unconnected-(Y1-Pad2)") (pinfunction "2") (pintype "passive") (tstamp 1bf58e82-dc89-4a0d-a335-54b9b8dccff2)) + (net 5 "Net-(U7-Pad5)") (pinfunction "2") (pintype "passive") (tstamp 1bf58e82-dc89-4a0d-a335-54b9b8dccff2)) (model "${KICAD6_3DMODEL_DIR}/Crystal.3dshapes/Crystal_SMD_5032-2Pin_5.0x3.2mm.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -2665,15 +2465,15 @@ (fp_line (start -0.8 -1.05) (end -0.4 -1.45) (layer "F.Fab") (width 0.1) (tstamp 97629ee0-b29a-47c0-9b93-4ff44e2d7125)) (fp_line (start 0.8 -1.45) (end 0.8 1.45) (layer "F.Fab") (width 0.1) (tstamp e42b14cb-32d1-468c-abd0-1b273d931dbe)) (pad "1" smd roundrect locked (at -1.1375 -0.95) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 10 "Net-(C8-Pad1)") (pinfunction "IN") (pintype "power_in") (tstamp 83c87b14-bb83-4d72-9eb6-c7abb537372b)) + (net 8 "Net-(C8-Pad1)") (pinfunction "IN") (pintype "power_in") (tstamp 83c87b14-bb83-4d72-9eb6-c7abb537372b)) (pad "2" smd roundrect locked (at -1.1375 0) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 4 "GND") (pinfunction "GND") (pintype "power_in") (tstamp c53809d5-acda-4d9b-9aed-95bb6d340195)) + (net 3 "GND") (pinfunction "GND") (pintype "power_in") (tstamp c53809d5-acda-4d9b-9aed-95bb6d340195)) (pad "3" smd roundrect locked (at -1.1375 0.95) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 10 "Net-(C8-Pad1)") (pinfunction "EN") (pintype "input") (tstamp fbe6b1d9-806f-4340-9324-f603a54663f8)) + (net 8 "Net-(C8-Pad1)") (pinfunction "EN") (pintype "input") (tstamp fbe6b1d9-806f-4340-9324-f603a54663f8)) (pad "4" smd roundrect locked (at 1.1375 0.95) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 51 "unconnected-(U5-Pad4)") (pinfunction "NC") (pintype "no_connect") (tstamp 1a1f9b02-3833-4a4b-b683-1da3385aa353)) + (net 41 "unconnected-(U5-Pad4)") (pinfunction "NC") (pintype "no_connect") (tstamp 1a1f9b02-3833-4a4b-b683-1da3385aa353)) (pad "5" smd roundrect locked (at 1.1375 -0.95) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 11 "VCC") (pinfunction "OUT") (pintype "power_out") (tstamp 6da82e35-641a-4658-8ed5-a14e62142d0a)) + (net 9 "VCC") (pinfunction "OUT") (pintype "power_out") (tstamp 6da82e35-641a-4658-8ed5-a14e62142d0a)) (model "${KICAD6_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23-5.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -2713,9 +2513,9 @@ (fp_line (start -1 -0.625) (end 1 -0.625) (layer "F.Fab") (width 0.1) (tstamp 74ae0038-0133-4cb9-bb45-74ec7afdfbd3)) (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp bc1c6757-8d7f-44c5-a88b-fd87e79051f1)) (pad "1" smd roundrect locked (at -0.95 0 90) (size 1 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 9 "BAT_IN") (pintype "passive") (tstamp ed293712-8d5a-435a-961e-9b57346df3e2)) + (net 7 "BAT_IN") (pintype "passive") (tstamp ed293712-8d5a-435a-961e-9b57346df3e2)) (pad "2" smd roundrect locked (at 0.95 0 90) (size 1 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 4 "GND") (pintype "passive") (tstamp 06b68aba-7f6c-4f40-9f07-1c2834f87c18)) + (net 3 "GND") (pintype "passive") (tstamp 06b68aba-7f6c-4f40-9f07-1c2834f87c18)) (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -2725,15 +2525,15 @@ (footprint "LED_SMD:LED_0603_1608Metric" (layer "F.Cu") (tedit 5F68FEF1) (tstamp d62acfcd-78e9-48e2-8cfb-4057b64de403) - (at 127.7 148.65 180) + (at 127.6 149.2 180) (descr "LED SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator") (tags "LED") (property "Sheetfile" "Morse_code_PCB.kicad_sch") (property "Sheetname" "") (path "/1dddec04-52a9-4495-a50c-a84d2ad1f820") (attr smd) - (fp_text reference "D6" (at 2.5 -1.85) (layer "F.SilkS") - (effects (font (size 1 1) (thickness 0.15))) + (fp_text reference "D6" (at 0.8 1.2) (layer "F.SilkS") + (effects (font (size 0.8 0.8) (thickness 0.15))) (tstamp 5c8ced3e-af16-492a-b4c1-54592b3edb5b) ) (fp_text value "LED" (at 0 1.43) (layer "F.Fab") @@ -2757,9 +2557,9 @@ (fp_line (start -0.5 -0.4) (end -0.8 -0.1) (layer "F.Fab") (width 0.1) (tstamp bd2a7dda-c141-4b7e-97c4-ea82c9252861)) (fp_line (start 0.8 0.4) (end 0.8 -0.4) (layer "F.Fab") (width 0.1) (tstamp c003efba-12d7-497c-b176-7e1cae7c7c43)) (pad "1" smd roundrect locked (at -0.7875 0 180) (size 0.875 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 4 "GND") (pinfunction "K") (pintype "passive") (tstamp 7b48a524-2ba6-4975-a1d9-6b9e727bbab1)) + (net 3 "GND") (pinfunction "K") (pintype "passive") (tstamp 7b48a524-2ba6-4975-a1d9-6b9e727bbab1)) (pad "2" smd roundrect locked (at 0.7875 0 180) (size 0.875 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 22 "Net-(D6-Pad2)") (pinfunction "A") (pintype "passive") (tstamp 613f5c37-6166-4d0d-8387-9370b92bf8af)) + (net 19 "Net-(D6-Pad2)") (pinfunction "A") (pintype "passive") (tstamp 613f5c37-6166-4d0d-8387-9370b92bf8af)) (model "${KICAD6_3DMODEL_DIR}/LED_SMD.3dshapes/LED_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -2799,9 +2599,9 @@ (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 82eb6b3d-b2d3-40f2-9b62-2ac01a9ee8f6)) (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 84d30c7c-ae2b-4c37-9d27-90854957c862)) (pad "1" smd roundrect locked (at -0.825 0 90) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 38 "BAT_ADC") (pintype "passive") (tstamp 64b07081-1844-451b-b501-e3bd1f51abf0)) + (net 33 "BAT_ADC") (pintype "passive") (tstamp 64b07081-1844-451b-b501-e3bd1f51abf0)) (pad "2" smd roundrect locked (at 0.825 0 90) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 4 "GND") (pintype "passive") (tstamp 683cac2d-900f-4223-9b97-626936d46f27)) + (net 3 "GND") (pintype "passive") (tstamp 683cac2d-900f-4223-9b97-626936d46f27)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -2811,14 +2611,14 @@ (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") (tedit 5F68FEEE) (tstamp e0620f9d-14ab-44ef-b2d9-f963a77b47d1) - (at 106.85 148 -90) + (at 109.8 146.7 90) (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") (tags "resistor") (property "Sheetfile" "Morse_code_PCB.kicad_sch") (property "Sheetname" "") (path "/14aab3dc-cbb7-4b00-bd5f-734b79ce6c0c") (attr smd) - (fp_text reference "R4" (at 0 -0.05 180) (layer "F.SilkS") + (fp_text reference "R4" (at 0 -0.05) (layer "F.SilkS") (effects (font (size 0.5 0.5) (thickness 0.125))) (tstamp df8137f9-cfc2-4445-b4e0-d274c8a52d43) ) @@ -2840,10 +2640,10 @@ (fp_line (start 0.8 0.4125) (end -0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp 120f23c7-4d4a-4621-8913-08ec35a41e2c)) (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp e8c159b3-92e3-4fbe-ae06-275d58e02f50)) (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp f8b96a20-62d9-4886-8891-9a6b088b00fc)) - (pad "1" smd roundrect locked (at -0.825 0 270) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 6 "Net-(C3-Pad1)") (pintype "passive") (tstamp 2992f162-3bfb-436e-88d2-ef9157d22121)) - (pad "2" smd roundrect locked (at 0.825 0 270) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 11 "VCC") (pintype "passive") (tstamp d1457e9e-cd6f-4eac-a387-b31614edcffe)) + (pad "1" smd roundrect locked (at -0.825 0 90) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 31 "EN_B") (pintype "passive") (tstamp 2992f162-3bfb-436e-88d2-ef9157d22121)) + (pad "2" smd roundrect locked (at 0.825 0 90) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) + (net 9 "VCC") (pintype "passive") (tstamp d1457e9e-cd6f-4eac-a387-b31614edcffe)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -2886,11 +2686,11 @@ (fp_line (start -0.325 -1.45) (end 0.65 -1.45) (layer "F.Fab") (width 0.1) (tstamp bd36270e-185a-4152-8e18-763b43a8d6da)) (fp_line (start -0.65 1.45) (end -0.65 -1.125) (layer "F.Fab") (width 0.1) (tstamp e82faff1-b691-4551-94bb-116aeaab8477)) (pad "1" smd roundrect locked (at -0.9375 -0.95 90) (size 1.475 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 19 "Net-(D4-Pad2)") (pinfunction "G") (pintype "input") (tstamp 85efdcf2-b2af-4074-a8ec-46a9b78ab437)) + (net 16 "Net-(D4-Pad2)") (pinfunction "G") (pintype "input") (tstamp 85efdcf2-b2af-4074-a8ec-46a9b78ab437)) (pad "2" smd roundrect locked (at -0.9375 0.95 90) (size 1.475 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 9 "BAT_IN") (pinfunction "S") (pintype "passive") (tstamp be3610cd-c4e5-4eef-a19b-2490be584221)) + (net 7 "BAT_IN") (pinfunction "S") (pintype "passive") (tstamp be3610cd-c4e5-4eef-a19b-2490be584221)) (pad "3" smd roundrect locked (at 0.9375 0 90) (size 1.475 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 10 "Net-(C8-Pad1)") (pinfunction "D") (pintype "passive") (tstamp bf813ca6-c9b0-496b-a4b2-6cd15e7fa5b4)) + (net 8 "Net-(C8-Pad1)") (pinfunction "D") (pintype "passive") (tstamp bf813ca6-c9b0-496b-a4b2-6cd15e7fa5b4)) (model "${KICAD6_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -2907,7 +2707,7 @@ (property "Sheetname" "") (path "/380da292-0013-443d-ba49-fb4f1b7f982a") (attr smd) - (fp_text reference "C12" (at 3.1 0 90) (layer "F.SilkS") + (fp_text reference "C12" (at 3.8 0.1 180) (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))) (tstamp 33a4f64c-08f7-427f-a216-67593d49afd9) ) @@ -2930,9 +2730,9 @@ (fp_line (start 1.6 -0.8) (end 1.6 0.8) (layer "F.Fab") (width 0.1) (tstamp a51da19e-9a50-4dca-8d6f-5dbd75fb204b)) (fp_line (start -1.6 -0.8) (end 1.6 -0.8) (layer "F.Fab") (width 0.1) (tstamp f952a120-8a7d-4bab-ac3d-fa08f8c6fed8)) (pad "1" smd roundrect locked (at -1.475 0) (size 1.15 1.8) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2173913043) - (net 12 "Net-(C12-Pad1)") (pintype "passive") (tstamp 2bf65490-bdce-49a7-b615-e71bdc3e6432)) + (net 10 "Net-(C12-Pad1)") (pintype "passive") (tstamp 2bf65490-bdce-49a7-b615-e71bdc3e6432)) (pad "2" smd roundrect locked (at 1.475 0) (size 1.15 1.8) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2173913043) - (net 13 "PWM") (pintype "passive") (tstamp 333ef941-3534-4d43-a8e7-2454a8895d4a)) + (net 11 "PWM") (pintype "passive") (tstamp 333ef941-3534-4d43-a8e7-2454a8895d4a)) (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_1206_3216Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -2975,11 +2775,11 @@ (fp_line (start -0.325 -1.45) (end 0.65 -1.45) (layer "F.Fab") (width 0.1) (tstamp e1a2236e-9438-4cf8-9628-4a2edf553390)) (fp_line (start 0.65 1.45) (end -0.65 1.45) (layer "F.Fab") (width 0.1) (tstamp faf566ba-c43b-4302-9588-1cec7b4ca24b)) (pad "1" smd roundrect locked (at -0.9375 -0.95) (size 1.475 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 16 "Net-(D1-Pad1)") (pinfunction "G") (pintype "input") (tstamp be08acd7-a864-4f45-92a0-9002e4167f37)) + (net 14 "Net-(D1-Pad1)") (pinfunction "G") (pintype "input") (tstamp be08acd7-a864-4f45-92a0-9002e4167f37)) (pad "2" smd roundrect locked (at -0.9375 0.95) (size 1.475 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 4 "GND") (pinfunction "S") (pintype "passive") (tstamp 76926de7-4e2d-46c2-94e3-06e636e68fe8)) + (net 3 "GND") (pinfunction "S") (pintype "passive") (tstamp 76926de7-4e2d-46c2-94e3-06e636e68fe8)) (pad "3" smd roundrect locked (at 0.9375 0) (size 1.475 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 19 "Net-(D4-Pad2)") (pinfunction "D") (pintype "passive") (tstamp 687376ad-5699-4b83-a0f3-7beeae7f0dfc)) + (net 16 "Net-(D4-Pad2)") (pinfunction "D") (pintype "passive") (tstamp 687376ad-5699-4b83-a0f3-7beeae7f0dfc)) (model "${KICAD6_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -3019,9 +2819,9 @@ (fp_line (start -1.6 -0.8) (end 1.6 -0.8) (layer "F.Fab") (width 0.1) (tstamp 979cb235-e50e-410a-b85f-545dcd71f86a)) (fp_line (start 1.6 0.8) (end -1.6 0.8) (layer "F.Fab") (width 0.1) (tstamp cd523462-966c-42a1-a83b-36f0c40e4d09)) (pad "1" smd roundrect locked (at -1.475 0 270) (size 1.15 1.8) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2173913043) - (net 11 "VCC") (pintype "passive") (tstamp 8129d831-cd27-4847-abcd-664194cf1819)) + (net 9 "VCC") (pintype "passive") (tstamp 8129d831-cd27-4847-abcd-664194cf1819)) (pad "2" smd roundrect locked (at 1.475 0 270) (size 1.15 1.8) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.2173913043) - (net 4 "GND") (pintype "passive") (tstamp 110c646a-5ec6-4203-8722-d47c66b9bc09)) + (net 3 "GND") (pintype "passive") (tstamp 110c646a-5ec6-4203-8722-d47c66b9bc09)) (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_1206_3216Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -3061,9 +2861,9 @@ (fp_line (start 1 0.625) (end -1 0.625) (layer "F.Fab") (width 0.1) (tstamp 8a43a549-7c53-4159-9079-e3706117cb9f)) (fp_line (start 1 -0.625) (end 1 0.625) (layer "F.Fab") (width 0.1) (tstamp b26f05c6-45b4-4835-b8be-d2c660fd83ad)) (pad "1" smd roundrect locked (at -0.95 0 270) (size 1 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 11 "VCC") (pintype "passive") (tstamp 302b35e4-6670-451d-a393-9bd0d52c33af)) + (net 9 "VCC") (pintype "passive") (tstamp 302b35e4-6670-451d-a393-9bd0d52c33af)) (pad "2" smd roundrect locked (at 0.95 0 270) (size 1 1.45) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 4 "GND") (pintype "passive") (tstamp 6f15beb2-0106-4fbf-8adb-ccdb5a75c0e0)) + (net 3 "GND") (pintype "passive") (tstamp 6f15beb2-0106-4fbf-8adb-ccdb5a75c0e0)) (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -3073,7 +2873,7 @@ (footprint "Resistor_SMD:R_0603_1608Metric" (layer "F.Cu") (tedit 5F68FEEE) (tstamp f23846e4-2eec-4ea1-b180-1e6aeaf1a3f8) - (at 111.5 154.4) + (at 110.175 152.4) (descr "Resistor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") (tags "resistor") (property "Sheetfile" "Morse_code_PCB.kicad_sch") @@ -3103,9 +2903,9 @@ (fp_line (start 0.8 -0.4125) (end 0.8 0.4125) (layer "F.Fab") (width 0.1) (tstamp b4182176-94b4-4042-a047-ced8894735c1)) (fp_line (start -0.8 -0.4125) (end 0.8 -0.4125) (layer "F.Fab") (width 0.1) (tstamp dfc6c58b-b2d7-478a-8280-348471912cc8)) (pad "1" smd roundrect locked (at -0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 4 "GND") (pintype "passive") (tstamp be72c358-d1dc-4ba1-9e65-85305850a94e)) + (net 3 "GND") (pintype "passive") (tstamp be72c358-d1dc-4ba1-9e65-85305850a94e)) (pad "2" smd roundrect locked (at 0.825 0) (size 0.8 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) - (net 37 "Net-(R5-Pad2)") (pintype "passive") (tstamp faecffa1-e510-4609-90b1-ec816da7b5c8)) + (net 32 "Net-(R5-Pad2)") (pintype "passive") (tstamp faecffa1-e510-4609-90b1-ec816da7b5c8)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0603_1608Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -3115,22 +2915,22 @@ (footprint "Resistor_SMD:R_0402_1005Metric" (layer "B.Cu") (tedit 5F68FEEE) (tstamp 1b4ddb93-8b89-4cee-8edf-377cf41d0c0a) - (at 91.2 145.35 90) + (at 101.95 137.17) (descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") (tags "resistor") (property "Sheetfile" "Morse_code_PCB.kicad_sch") (property "Sheetname" "") - (path "/bfaf6174-0339-4ea1-ba70-73a95cf9aacd") + (path "/d7341a7c-138e-4958-94b9-6d075160a22d") (attr smd) - (fp_text reference "R15" (at 3.05 0 270) (layer "B.SilkS") + (fp_text reference "R15" (at 3.05 0) (layer "B.SilkS") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp baae70b6-0dd8-49ae-afd1-a7595ef75074) ) - (fp_text value "*R0" (at 0 -1.17 90) (layer "B.Fab") + (fp_text value "*R0" (at 0 -1.17) (layer "B.Fab") (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) (tstamp 87dd3f0d-60ab-4c46-961b-49546bc57d04) ) - (fp_text user "${REFERENCE}" (at 0 0 90) (layer "B.Fab") + (fp_text user "${REFERENCE}" (at 0 0) (layer "B.Fab") (effects (font (size 0.26 0.26) (thickness 0.04)) (justify mirror)) (tstamp c96e7a55-b8eb-44d6-be3d-c0744c75107b) ) @@ -3144,10 +2944,10 @@ (fp_line (start -0.525 -0.27) (end -0.525 0.27) (layer "B.Fab") (width 0.1) (tstamp 4dcf95d2-8f09-4bdb-8a06-5c371d680091)) (fp_line (start -0.525 0.27) (end 0.525 0.27) (layer "B.Fab") (width 0.1) (tstamp 6ff726eb-39ac-4f14-9931-29153036cf12)) (fp_line (start 0.525 0.27) (end 0.525 -0.27) (layer "B.Fab") (width 0.1) (tstamp f3ee1261-d1e2-46db-8b55-a0658d91b6f0)) - (pad "1" smd roundrect locked (at -0.51 0 90) (size 0.54 0.64) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) - (net 11 "VCC") (pintype "passive") (tstamp 06223826-442d-48ae-af5b-7e727ec15539)) - (pad "2" smd roundrect locked (at 0.51 0 90) (size 0.54 0.64) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) - (net 36 "Net-(R1-Pad2)") (pintype "passive") (tstamp 00d7bdb8-e5cc-4c48-a1a8-da005ded2e3f)) + (pad "1" smd roundrect locked (at -0.51 0) (size 0.54 0.64) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 9 "VCC") (pintype "passive") (tstamp 06223826-442d-48ae-af5b-7e727ec15539)) + (pad "2" smd roundrect locked (at 0.51 0) (size 0.54 0.64) (layers "B.Cu" "B.Paste" "B.Mask") (roundrect_rratio 0.25) + (net 51 "Net-(U7-Pad44)") (pintype "passive") (tstamp 00d7bdb8-e5cc-4c48-a1a8-da005ded2e3f)) (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_0402_1005Metric.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -3179,884 +2979,70 @@ (fp_line (start -4.66 1.25) (end 4.66 1.25) (layer "B.CrtYd") (width 0.05) (tstamp f1d150fa-601f-4e88-aba5-0b40b615fcd4)) (fp_line (start -4.66 -1.25) (end -4.66 1.25) (layer "B.CrtYd") (width 0.05) (tstamp f601d668-2ddf-4081-8071-92512e795414)) (pad "1" thru_hole oval (at -3.81 0) (size 1.2 2) (drill 0.8) (layers *.Cu *.Mask) - (net 11 "VCC") (pinfunction "Pin_1") (pintype "passive") (tstamp 9bc96448-1b46-48e5-9891-87273243f5c8)) + (net 9 "VCC") (pinfunction "Pin_1") (pintype "passive") (tstamp 9bc96448-1b46-48e5-9891-87273243f5c8)) (pad "2" thru_hole oval (at -1.27 0) (size 1.2 2) (drill 0.8) (layers *.Cu *.Mask) - (net 4 "GND") (pinfunction "Pin_2") (pintype "passive") (tstamp 098a2091-ab1c-4980-bf45-10455c11a84d)) + (net 3 "GND") (pinfunction "Pin_2") (pintype "passive") (tstamp 098a2091-ab1c-4980-bf45-10455c11a84d)) (pad "3" thru_hole oval (at 1.27 0) (size 1.2 2) (drill 0.8) (layers *.Cu *.Mask) - (net 15 "PWR_EN") (pinfunction "Pin_3") (pintype "passive") (tstamp ca3d6438-ebb3-412e-8474-a5cde42af2d5)) + (net 48 "SW_D") (pinfunction "Pin_3") (pintype "passive") (tstamp ca3d6438-ebb3-412e-8474-a5cde42af2d5)) (pad "4" thru_hole oval (at 3.81 0) (size 1.2 2) (drill 0.8) (layers *.Cu *.Mask) - (net 46 "RUN_LED") (pinfunction "Pin_4") (pintype "passive") (tstamp d011305d-15f4-4feb-a7a1-082240db5d3d)) + (net 49 "SW_L") (pinfunction "Pin_4") (pintype "passive") (tstamp d011305d-15f4-4feb-a7a1-082240db5d3d)) ) - (footprint "MY:code" (layer "B.Cu") - (tedit 0) (tstamp b4450c83-6da6-4393-a892-92bf8cbec8aa) - (at 104 147.1 180) - (attr board_only exclude_from_pos_files exclude_from_bom) - (fp_text reference "https://git.lmve.net/summary/~kevin%2FMorse_code_trainer.git" (at 3.5 -13.5 180) (layer "B.SilkS") - (effects (font (size 1 1) (thickness 0.2)) (justify mirror)) - (tstamp e5abcaa8-c89a-49d4-9e47-28a25f37d322) + (footprint "MY:BAT_BC501SM" (layer "B.Cu") + (tedit 62482965) (tstamp 9bab43ec-e08b-4c64-a633-e90056394cd5) + (at 91.04 152.04 90) + (property "Sheetfile" "Morse_code_PCB.kicad_sch") + (property "Sheetname" "") + (path "/88d8a17c-0ee1-405b-b7c6-a4e8fee4260e") + (attr through_hole) + (fp_text reference "BT1" (at 0.54 -0.34 180) (layer "B.SilkS") + (effects (font (size 1.4 1.4) (thickness 0.15)) (justify mirror)) + (tstamp 48b0a357-e06c-49e8-baf7-64cf2e727c8a) ) - (fp_text value "LOGO" (at 0.75 0) (layer "B.SilkS") hide - (effects (font (size 1.524 1.524) (thickness 0.3)) (justify mirror)) - (tstamp 15f86f86-6612-462a-a1d2-f730a8788a9a) + (fp_text value "Battery_Cell" (at -0.221 -9.111 90) (layer "B.Fab") + (effects (font (size 1.4 1.4) (thickness 0.15)) (justify mirror)) + (tstamp 8a0cd3d6-fdb0-4a75-9479-59e3b8072343) ) - (fp_poly (pts - (xy -6.773334 -3.302) - (xy -7.535334 -3.302) - (xy -7.535334 -2.54) - (xy -6.773334 -2.54) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp 05fda319-28dc-4877-8331-02cb10501361)) - (fp_poly (pts - (xy -8.212667 8.212667) - (xy -10.414 8.212667) - (xy -10.414 10.414) - (xy -8.212667 10.414) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp 1330eb77-c16f-4a58-a897-f5af49736826)) - (fp_poly (pts - (xy 10.498666 8.212667) - (xy 8.297333 8.212667) - (xy 8.297333 10.414) - (xy 10.498666 10.414) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp 163cdeae-7841-4f2c-b738-e36b081d5e19)) - (fp_poly (pts - (xy 6.858 -11.938) - (xy 5.418666 -11.938) - (xy 5.418666 -11.176) - (xy 6.858 -11.176) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp 20d6997e-64c7-454b-9573-baf26e1ad11b)) - (fp_poly (pts - (xy 4.741333 -11.938) - (xy 3.979333 -11.938) - (xy 3.979333 -11.176) - (xy 4.741333 -11.176) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp 240fde71-00e0-458d-bf75-b4d973cb180b)) - (fp_poly (pts - (xy -6.773334 6.773334) - (xy -11.853334 6.773334) - (xy -11.853334 7.535334) - (xy -11.091334 7.535334) - (xy -7.535334 7.535334) - (xy -7.535334 11.091334) - (xy -11.091334 11.091334) - (xy -11.091334 7.535334) - (xy -11.853334 7.535334) - (xy -11.853334 11.853334) - (xy -6.773334 11.853334) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp 2415334a-b998-4d19-a8b5-e60e8af2aff4)) - (fp_poly (pts - (xy -6.773334 4.656667) - (xy -6.773334 3.979334) - (xy -6.096 3.979334) - (xy -6.096 3.217334) - (xy -3.894667 3.217334) - (xy -3.894667 1.778) - (xy -4.656667 1.778) - (xy -4.656667 2.455334) - (xy -5.334 2.455334) - (xy -5.334 1.778) - (xy -6.096 1.778) - (xy -6.096 1.016) - (xy -7.535334 1.016) - (xy -7.535334 1.778) - (xy -6.858 1.778) - (xy -6.858 2.455334) - (xy -8.212667 2.455334) - (xy -8.212667 1.778) - (xy -8.974667 1.778) - (xy -8.974667 1.016) - (xy -9.652 1.016) - (xy -9.652 -0.423333) - (xy -11.176 -0.423333) - (xy -11.176 0.338667) - (xy -10.414 0.338667) - (xy -10.414 1.016) - (xy -11.853334 1.016) - (xy -11.853334 1.100667) - (xy -10.414 1.100667) - (xy -9.736667 1.100667) - (xy -9.736667 1.778) - (xy -10.414 1.778) - (xy -10.414 1.100667) - (xy -11.853334 1.100667) - (xy -11.853334 1.778) - (xy -11.176 1.778) - (xy -11.176 3.217334) - (xy -10.414 3.217334) - (xy -9.736667 3.217334) - (xy -8.974667 3.217334) - (xy -8.297334 3.217334) - (xy -7.535334 3.217334) - (xy -6.858 3.217334) - (xy -6.858 3.894667) - (xy -7.535334 3.894667) - (xy -7.535334 3.217334) - (xy -8.297334 3.217334) - (xy -8.297334 3.894667) - (xy -8.974667 3.894667) - (xy -8.974667 3.217334) - (xy -9.736667 3.217334) - (xy -9.736667 3.894667) - (xy -10.414 3.894667) - (xy -10.414 3.217334) - (xy -11.176 3.217334) - (xy -11.853334 3.217334) - (xy -11.853334 3.979334) - (xy -10.414 3.979334) - (xy -10.414 4.656667) - (xy -9.652 4.656667) - (xy -9.652 3.979334) - (xy -8.974667 3.979334) - (xy -8.212667 3.979334) - (xy -7.535334 3.979334) - (xy -7.535334 4.656667) - (xy -8.212667 4.656667) - (xy -8.212667 3.979334) - (xy -8.974667 3.979334) - (xy -8.974667 4.656667) - (xy -8.297334 4.656667) - (xy -8.297334 5.334) - (xy -9.736667 5.334) - (xy -9.736667 6.096) - (xy -8.212667 6.096) - (xy -8.212667 5.418667) - (xy -7.535334 5.418667) - (xy -7.535334 6.096) - (xy -6.773334 6.096) - (xy -6.773334 5.334) - (xy -7.535334 5.334) - (xy -7.535334 4.656667) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp 345a9ac1-be31-400b-9c5d-4af388112d4b)) - (fp_poly (pts - (xy -4.656667 3.894667) - (xy -5.418667 3.894667) - (xy -5.418667 4.656667) - (xy -4.656667 4.656667) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp 4b1dbc88-c8c5-476c-80ac-830e56684be9)) - (fp_poly (pts - (xy 1.100666 -9.736666) - (xy 0.338666 -9.736666) - (xy 0.338666 -8.974666) - (xy 1.100666 -8.974666) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp 511ddebd-9f54-463b-bc54-5ebdd708d33d)) - (fp_poly (pts - (xy -5.334 -9.736666) - (xy -3.979334 -9.736666) - (xy -3.979334 -8.974666) - (xy -1.778 -8.974666) - (xy -1.778 -8.297333) - (xy -1.016 -8.297333) - (xy -1.016 -8.974666) - (xy -0.338667 -8.974666) - (xy -0.338667 -10.498666) - (xy -1.016 -10.498666) - (xy -1.016 -11.176) - (xy 1.100666 -11.176) - (xy 1.100666 -11.938) - (xy -3.217334 -11.938) - (xy -3.217334 -10.498666) - (xy -3.894667 -10.498666) - (xy -3.894667 -11.176) - (xy -4.656667 -11.176) - (xy -4.656667 -11.938) - (xy -6.096 -11.938) - (xy -6.096 -10.414) - (xy -5.418667 -10.414) - (xy -3.217334 -10.414) - (xy -2.455334 -10.414) - (xy -2.455334 -11.176) - (xy -1.778 -11.176) - (xy -1.778 -10.414) - (xy -1.100667 -10.414) - (xy -1.100667 -9.736666) - (xy -3.217334 -9.736666) - (xy -3.217334 -10.414) - (xy -5.418667 -10.414) - (xy -5.418667 -9.736666) - (xy -6.096 -9.736666) - (xy -6.096 -8.297333) - (xy -5.334 -8.297333) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp 764ce9a2-c363-448f-a68c-a7dbf5cd80c1)) - (fp_poly (pts - (xy -10.414 4.656667) - (xy -11.176 4.656667) - (xy -11.176 5.334) - (xy -11.853334 5.334) - (xy -11.853334 6.096) - (xy -10.414 6.096) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp 835ada2e-dc88-46f5-b472-12f6a1e8c9f4)) - (fp_poly (pts - (xy 11.938 6.773334) - (xy 6.858 6.773334) - (xy 6.858 7.535334) - (xy 7.62 7.535334) - (xy 11.176 7.535334) - (xy 11.176 11.091334) - (xy 7.62 11.091334) - (xy 7.62 7.535334) - (xy 6.858 7.535334) - (xy 6.858 11.853334) - (xy 11.938 11.853334) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp 88ec470b-1595-4040-bc2a-91476c84ca2e)) - (fp_poly (pts - (xy -2.455334 3.894667) - (xy -3.217334 3.894667) - (xy -3.217334 4.656667) - (xy -2.455334 4.656667) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp 9421d8ab-ec24-4783-b746-a12fbd00100e)) - (fp_poly (pts - (xy 10.498666 0.338667) - (xy 11.176 0.338667) - (xy 11.176 1.100667) - (xy 11.938 1.100667) - (xy 11.938 -2.54) - (xy 9.736666 -2.54) - (xy 9.736666 -1.778) - (xy 11.176 -1.778) - (xy 11.176 -1.100666) - (xy 10.414 -1.100666) - (xy 10.414 0.338667) - (xy 9.736666 0.338667) - (xy 9.736666 1.100667) - (xy 10.498666 1.100667) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp 9a7ade3c-a81d-4038-a57c-b220b9c3cd90)) - (fp_poly (pts - (xy 7.62 -7.62) - (xy 6.858 -7.62) - (xy 6.858 -6.858) - (xy 7.62 -6.858) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp 9cdc04e7-a7c1-410b-8dd7-1b5a287afb98)) - (fp_poly (pts - (xy -8.212667 -10.498666) - (xy -10.414 -10.498666) - (xy -10.414 -8.297333) - (xy -8.212667 -8.297333) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp a5e5a32b-d259-4833-9676-56ada82e83c2)) - (fp_poly (pts - (xy 2.54 -11.938) - (xy 1.778 -11.938) - (xy 1.778 -11.176) - (xy 1.100666 -11.176) - (xy 1.100666 -9.736666) - (xy 1.778 -9.736666) - (xy 1.778 -8.974666) - (xy 2.54 -8.974666) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp adfaccc9-bb80-495a-9038-d58935037d76)) - (fp_poly (pts - (xy -6.773334 -11.938) - (xy -11.853334 -11.938) - (xy -11.853334 -11.176) - (xy -11.091334 -11.176) - (xy -7.535334 -11.176) - (xy -7.535334 -7.62) - (xy -11.091334 -7.62) - (xy -11.091334 -11.176) - (xy -11.853334 -11.176) - (xy -11.853334 -6.858) - (xy -6.773334 -6.858) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp b08a146a-6e43-46ac-8c31-9d5442623eb3)) - (fp_poly (pts - (xy 9.059333 1.778) - (xy 9.059333 1.016) - (xy 8.297333 1.016) - (xy 8.297333 0.338667) - (xy 9.736666 0.338667) - (xy 9.736666 -0.423333) - (xy 9.059333 -0.423333) - (xy 9.059333 -2.54) - (xy 8.297333 -2.54) - (xy 8.297333 -3.217333) - (xy 9.736666 -3.217333) - (xy 9.736666 -3.979333) - (xy 9.059333 -3.979333) - (xy 9.059333 -4.741333) - (xy 8.297333 -4.741333) - (xy 8.297333 -5.418666) - (xy 9.736666 -5.418666) - (xy 9.736666 -4.656666) - (xy 10.414 -4.656666) - (xy 10.414 -3.217333) - (xy 11.176 -3.217333) - (xy 11.176 -3.979333) - (xy 11.938 -3.979333) - (xy 11.938 -4.741333) - (xy 10.498666 -4.741333) - (xy 10.498666 -5.418666) - (xy 11.176 -5.418666) - (xy 11.176 -6.858) - (xy 9.736666 -6.858) - (xy 9.736666 -7.535333) - (xy 10.498666 -7.535333) - (xy 10.498666 -8.297333) - (xy 11.176 -8.297333) - (xy 11.176 -8.974666) - (xy 11.938 -8.974666) - (xy 11.938 -11.176) - (xy 9.736666 -11.176) - (xy 9.736666 -11.938) - (xy 8.297333 -11.938) - (xy 8.297333 -11.176) - (xy 8.974666 -11.176) - (xy 8.974666 -10.498666) - (xy 7.62 -10.498666) - (xy 7.62 -11.176) - (xy 6.858 -11.176) - (xy 6.858 -10.414) - (xy 7.535333 -10.414) - (xy 9.059333 -10.414) - (xy 9.736666 -10.414) - (xy 9.736666 -9.736666) - (xy 10.414 -9.736666) - (xy 10.414 -8.297333) - (xy 9.736666 -8.297333) - (xy 9.736666 -9.736666) - (xy 9.059333 -9.736666) - (xy 9.059333 -10.414) - (xy 7.535333 -10.414) - (xy 7.535333 -9.736666) - (xy 8.974666 -9.736666) - (xy 8.974666 -9.059333) - (xy 6.858 -9.059333) - (xy 6.858 -9.736666) - (xy 6.096 -9.736666) - (xy 6.096 -9.059333) - (xy 4.741333 -9.059333) - (xy 4.741333 -9.736666) - (xy 3.217333 -9.736666) - (xy 3.217333 -8.974666) - (xy 3.979333 -8.974666) - (xy 3.979333 -8.297333) - (xy 4.656666 -8.297333) - (xy 6.180666 -8.297333) - (xy 8.297333 -8.297333) - (xy 8.297333 -6.180666) - (xy 6.180666 -6.180666) - (xy 6.180666 -8.297333) - (xy 4.656666 -8.297333) - (xy 4.656666 -7.62) - (xy 3.302 -7.62) - (xy 3.302 -8.297333) - (xy 1.100666 -8.297333) - (xy 1.100666 -7.535333) - (xy 1.778 -7.535333) - (xy 2.54 -7.535333) - (xy 3.217333 -7.535333) - (xy 3.217333 -6.180666) - (xy 2.54 -6.180666) - (xy 2.54 -7.535333) - (xy 1.778 -7.535333) - (xy 1.778 -4.656666) - (xy 2.54 -4.656666) - (xy 2.54 -3.979333) - (xy 3.302 -3.979333) - (xy 3.302 -6.096) - (xy 3.979333 -6.096) - (xy 3.979333 -6.858) - (xy 4.656666 -6.858) - (xy 4.656666 -6.096) - (xy 9.736666 -6.096) - (xy 10.414 -6.096) - (xy 10.414 -5.418666) - (xy 9.736666 -5.418666) - (xy 9.736666 -6.096) - (xy 4.656666 -6.096) - (xy 4.656666 -5.418666) - (xy 4.741333 -5.418666) - (xy 5.418666 -5.418666) - (xy 6.858 -5.418666) - (xy 7.535333 -5.418666) - (xy 7.535333 -4.741333) - (xy 6.858 -4.741333) - (xy 6.858 -5.418666) - (xy 5.418666 -5.418666) - (xy 5.418666 -4.741333) - (xy 4.741333 -4.741333) - (xy 4.741333 -5.418666) - (xy 4.656666 -5.418666) - (xy 3.979333 -5.418666) - (xy 3.979333 -3.979333) - (xy 4.656666 -3.979333) - (xy 4.656666 -3.217333) - (xy 5.418666 -3.217333) - (xy 5.418666 -4.656666) - (xy 6.096 -4.656666) - (xy 6.096 -3.979333) - (xy 7.535333 -3.979333) - (xy 7.535333 -1.100666) - (xy 6.858 -1.100666) - (xy 6.858 -0.423333) - (xy 5.418666 -0.423333) - (xy 5.418666 0.338667) - (xy 7.535333 0.338667) - (xy 7.535333 1.016) - (xy 6.858 1.016) - (xy 6.858 1.100667) - (xy 7.62 1.100667) - (xy 8.297333 1.100667) - (xy 8.297333 1.778) - (xy 7.62 1.778) - (xy 7.62 1.100667) - (xy 6.858 1.100667) - (xy 6.858 1.778) - (xy 7.535333 1.778) - (xy 7.535333 2.455334) - (xy 6.858 2.455334) - (xy 6.858 1.778) - (xy 6.096 1.778) - (xy 6.096 2.455334) - (xy 5.418666 2.455334) - (xy 5.418666 1.778) - (xy 4.741333 1.778) - (xy 4.741333 1.016) - (xy 3.979333 1.016) - (xy 3.979333 1.778) - (xy 3.302 1.778) - (xy 3.302 1.016) - (xy 2.54 1.016) - (xy 2.54 0.338667) - (xy 3.302 0.338667) - (xy 3.302 -1.100666) - (xy 3.979333 -1.100666) - (xy 3.979333 0.338667) - (xy 4.741333 0.338667) - (xy 4.741333 -1.100666) - (xy 5.418666 -1.100666) - (xy 5.418666 -1.862666) - (xy 4.741333 -1.862666) - (xy 4.741333 -2.54) - (xy 3.979333 -2.54) - (xy 3.979333 -1.862666) - (xy 3.217333 -1.862666) - (xy 3.217333 -1.778) - (xy 3.979333 -1.778) - (xy 4.656666 -1.778) - (xy 4.656666 -1.100666) - (xy 3.979333 -1.100666) - (xy 3.979333 -1.778) - (xy 3.217333 -1.778) - (xy 3.217333 -1.100666) - (xy 2.54 -1.100666) - (xy 2.54 -2.54) - (xy 1.778 -2.54) - (xy 1.778 -1.100666) - (xy 1.100666 -1.100666) - (xy 1.100666 -1.862666) - (xy 0.423333 -1.862666) - (xy 0.423333 -3.217333) - (xy 1.100666 -3.217333) - (xy 1.100666 -3.979333) - (xy 0.338666 -3.979333) - (xy 0.338666 -3.302) - (xy -0.338667 -3.302) - (xy -0.338667 -5.418666) - (xy 0.338666 -5.418666) - (xy 0.338666 -4.656666) - (xy 1.100666 -4.656666) - (xy 1.100666 -5.418666) - (xy 0.423333 -5.418666) - (xy 0.423333 -6.858) - (xy -0.338667 -6.858) - (xy -0.338667 -7.535333) - (xy 0.423333 -7.535333) - (xy 0.423333 -8.297333) - (xy -0.338667 -8.297333) - (xy -0.338667 -7.62) - (xy -1.100667 -7.62) - (xy -1.100667 -6.858) - (xy -1.778 -6.858) - (xy -1.778 -7.62) - (xy -3.217334 -7.62) - (xy -3.217334 -8.297333) - (xy -3.979334 -8.297333) - (xy -3.979334 -7.62) - (xy -4.656667 -7.62) - (xy -4.656667 -6.858) - (xy -3.894667 -6.858) - (xy -2.54 -6.858) - (xy -2.54 -6.180666) - (xy -3.894667 -6.180666) - (xy -3.894667 -6.858) - (xy -4.656667 -6.858) - (xy -4.656667 -6.096) - (xy -1.778 -6.096) - (xy -0.338667 -6.096) - (xy -0.338667 -5.418666) - (xy -1.100667 -5.418666) - (xy -1.100667 -2.54) - (xy -0.338667 -2.54) - (xy -0.338667 -1.862666) - (xy -1.778 -1.862666) - (xy -1.778 -6.096) - (xy -4.656667 -6.096) - (xy -4.656667 -5.418666) - (xy -6.096 -5.418666) - (xy -6.096 -6.096) - (xy -5.334 -6.096) - (xy -5.334 -6.858) - (xy -6.096 -6.858) - (xy -6.096 -6.180666) - (xy -7.535334 -6.180666) - (xy -7.535334 -5.418666) - (xy -6.858 -5.418666) - (xy -6.858 -4.741333) - (xy -7.535334 -4.741333) - (xy -7.535334 -5.418666) - (xy -8.974667 -5.418666) - (xy -8.974667 -6.180666) - (xy -11.853334 -6.180666) - (xy -11.853334 -5.418666) - (xy -11.091334 -5.418666) - (xy -8.974667 -5.418666) - (xy -8.974667 -4.741333) - (xy -9.736667 -4.741333) - (xy -9.736667 -2.54) - (xy -9.652 -2.54) - (xy -8.974667 -2.54) - (xy -8.974667 -4.656666) - (xy -8.297334 -4.656666) - (xy -6.096 -4.656666) - (xy -4.656667 -4.656666) - (xy -3.217334 -4.656666) - (xy -2.54 -4.656666) - (xy -2.54 -3.979333) - (xy -3.217334 -3.979333) - (xy -3.217334 -4.656666) - (xy -4.656667 -4.656666) - (xy -4.656667 -3.979333) - (xy -3.217334 -3.979333) - (xy -3.217334 -3.302) - (xy -4.656667 -3.302) - (xy -4.656667 -3.979333) - (xy -6.096 -3.979333) - (xy -6.096 -4.656666) - (xy -8.297334 -4.656666) - (xy -8.297334 -3.979333) - (xy -6.096 -3.979333) - (xy -6.096 -3.217333) - (xy -4.656667 -3.217333) - (xy -3.217334 -3.217333) - (xy -2.54 -3.217333) - (xy -2.54 -1.862666) - (xy -3.217334 -1.862666) - (xy -3.217334 -3.217333) - (xy -4.656667 -3.217333) - (xy -4.656667 -2.54) - (xy -6.096 -2.54) - (xy -6.096 -1.862666) - (xy -8.297334 -1.862666) - (xy -8.297334 -1.778) - (xy -3.894667 -1.778) - (xy -3.217334 -1.778) - (xy -0.338667 -1.778) - (xy 0.338666 -1.778) - (xy 0.338666 -0.423333) - (xy -0.338667 -0.423333) - (xy -0.338667 -1.778) - (xy -3.217334 -1.778) - (xy -3.217334 -1.100666) - (xy -1.100667 -1.100666) - (xy -1.100667 0.338667) - (xy -2.455334 0.338667) - (xy -2.455334 -0.423333) - (xy -3.217334 -0.423333) - (xy -3.217334 -1.100666) - (xy -3.894667 -1.100666) - (xy -3.894667 -1.778) - (xy -8.297334 -1.778) - (xy -8.297334 -1.100666) - (xy -7.535334 -1.100666) - (xy -6.858 -1.100666) - (xy -6.858 -0.423333) - (xy -7.535334 -0.423333) - (xy -7.535334 -1.100666) - (xy -8.297334 -1.100666) - (xy -8.974667 -1.100666) - (xy -8.974667 -1.862666) - (xy -9.652 -1.862666) - (xy -9.652 -2.54) - (xy -9.736667 -2.54) - (xy -10.414 -2.54) - (xy -10.414 -3.979333) - (xy -11.091334 -3.979333) - (xy -11.091334 -5.418666) - (xy -11.853334 -5.418666) - (xy -11.853334 -3.217333) - (xy -11.176 -3.217333) - (xy -11.176 -1.862666) - (xy -11.853334 -1.862666) - (xy -11.853334 -1.100666) - (xy -11.091334 -1.100666) - (xy -11.091334 -1.778) - (xy -10.414 -1.778) - (xy -10.414 -1.100666) - (xy -8.974667 -1.100666) - (xy -8.974667 0.338667) - (xy -6.096 0.338667) - (xy -6.096 -1.100666) - (xy -5.418667 -1.100666) - (xy -5.418667 -0.338666) - (xy -4.656667 -0.338666) - (xy -4.656667 1.100667) - (xy -3.894667 1.100667) - (xy -3.894667 0.338667) - (xy -3.217334 0.338667) - (xy -3.217334 1.100667) - (xy -1.778 1.100667) - (xy -1.778 1.778) - (xy -1.100667 1.778) - (xy -0.338667 1.778) - (xy 0.423333 1.778) - (xy 0.423333 -0.338666) - (xy 1.778 -0.338666) - (xy 1.778 0.338667) - (xy 1.100666 0.338667) - (xy 1.100666 1.100667) - (xy 1.778 1.100667) - (xy 1.778 1.778) - (xy 1.862666 1.778) - (xy 3.217333 1.778) - (xy 3.217333 2.54) - (xy 3.979333 2.54) - (xy 3.979333 1.778) - (xy 4.656666 1.778) - (xy 4.656666 2.54) - (xy 5.418666 2.54) - (xy 5.418666 3.217334) - (xy 3.979333 3.217334) - (xy 3.979333 4.656667) - (xy 3.302 4.656667) - (xy 3.302 3.894667) - (xy 2.54 3.894667) - (xy 2.54 2.455334) - (xy 1.862666 2.455334) - (xy 1.862666 1.778) - (xy 1.778 1.778) - (xy 1.100666 1.778) - (xy 1.100666 2.54) - (xy 1.778 2.54) - (xy 1.778 3.979334) - (xy 2.54 3.979334) - (xy 2.54 4.656667) - (xy 3.217333 4.656667) - (xy 3.217333 5.334) - (xy 2.54 5.334) - (xy 2.54 4.656667) - (xy 0.338666 4.656667) - (xy 0.338666 5.334) - (xy -0.338667 5.334) - (xy -0.338667 3.217334) - (xy 0.338666 3.217334) - (xy 0.338666 3.979334) - (xy 1.100666 3.979334) - (xy 1.100666 3.217334) - (xy 0.423333 3.217334) - (xy 0.423333 2.455334) - (xy -0.338667 2.455334) - (xy -0.338667 1.778) - (xy -1.100667 1.778) - (xy -1.100667 2.455334) - (xy -2.455334 2.455334) - (xy -2.455334 1.778) - (xy -3.217334 1.778) - (xy -3.217334 2.54) - (xy -2.54 2.54) - (xy -1.016 2.54) - (xy -0.338667 2.54) - (xy -0.338667 3.217334) - (xy -1.016 3.217334) - (xy -1.016 2.54) - (xy -2.54 2.54) - (xy -2.54 3.217334) - (xy -1.778 3.217334) - (xy -1.778 5.334) - (xy -3.217334 5.334) - (xy -3.217334 6.096) - (xy -2.455334 6.096) - (xy -1.778 6.096) - (xy -1.778 6.858) - (xy -1.016 6.858) - (xy -0.338667 6.858) - (xy -0.338667 7.535334) - (xy 0.423333 7.535334) - (xy 0.423333 6.096) - (xy 1.100666 6.096) - (xy 1.100666 5.418667) - (xy 1.778 5.418667) - (xy 3.302 5.418667) - (xy 3.979333 5.418667) - (xy 3.979333 4.656667) - (xy 4.656666 4.656667) - (xy 4.656666 5.418667) - (xy 5.418666 5.418667) - (xy 5.418666 7.535334) - (xy 4.741333 7.535334) - (xy 4.741333 6.096) - (xy 3.979333 6.096) - (xy 3.979333 7.535334) - (xy 3.302 7.535334) - (xy 3.302 5.418667) - (xy 1.778 5.418667) - (xy 1.778 6.096) - (xy 2.54 6.096) - (xy 2.54 8.212667) - (xy 1.862666 8.212667) - (xy 1.862666 6.773334) - (xy 1.100666 6.773334) - (xy 1.100666 8.212667) - (xy -0.338667 8.212667) - (xy -0.338667 8.974667) - (xy -1.016 8.974667) - (xy -1.016 6.858) - (xy -1.778 6.858) - (xy -1.778 7.535334) - (xy -2.455334 7.535334) - (xy -2.455334 6.096) - (xy -3.217334 6.096) - (xy -3.217334 7.535334) - (xy -2.54 7.535334) - (xy -2.54 8.212667) - (xy -3.217334 8.212667) - (xy -3.217334 7.535334) - (xy -3.894667 7.535334) - (xy -3.894667 6.773334) - (xy -4.656667 6.773334) - (xy -4.656667 5.418667) - (xy -3.894667 5.418667) - (xy -3.894667 4.656667) - (xy -4.656667 4.656667) - (xy -4.656667 5.334) - (xy -5.418667 5.334) - (xy -5.418667 6.096) - (xy -6.096 6.096) - (xy -6.096 6.858) - (xy -5.334 6.858) - (xy -4.656667 6.858) - (xy -4.656667 7.535334) - (xy -3.979334 7.535334) - (xy -3.979334 8.212667) - (xy -4.656667 8.212667) - (xy -4.656667 7.535334) - (xy -5.334 7.535334) - (xy -5.334 6.858) - (xy -6.096 6.858) - (xy -6.096 7.535334) - (xy -5.418667 7.535334) - (xy -5.418667 8.297334) - (xy -4.656667 8.297334) - (xy -4.656667 8.974667) - (xy -3.217334 8.974667) - (xy -1.778 8.974667) - (xy -1.778 9.652) - (xy -2.54 9.652) - (xy -2.54 10.414) - (xy -3.217334 10.414) - (xy -3.217334 8.974667) - (xy -4.656667 8.974667) - (xy -4.656667 9.652) - (xy -5.418667 9.652) - (xy -5.418667 10.414) - (xy -4.656667 10.414) - (xy -4.656667 9.736667) - (xy -3.979334 9.736667) - (xy -3.979334 11.091334) - (xy -6.096 11.091334) - (xy -6.096 11.853334) - (xy -3.217334 11.853334) - (xy -3.217334 11.176) - (xy -2.54 11.176) - (xy -2.54 11.853334) - (xy -1.778 11.853334) - (xy -1.778 9.736667) - (xy -1.100667 9.736667) - (xy -1.100667 10.414) - (xy -0.338667 10.414) - (xy -0.338667 11.176) - (xy 1.100666 11.176) - (xy 1.100666 10.414) - (xy 0.423333 10.414) - (xy 0.423333 9.736667) - (xy 1.100666 9.736667) - (xy 1.100666 8.974667) - (xy 2.54 8.974667) - (xy 2.54 8.297334) - (xy 3.979333 8.297334) - (xy 3.979333 7.535334) - (xy 4.656666 7.535334) - (xy 4.656666 8.297334) - (xy 5.418666 8.297334) - (xy 5.418666 7.535334) - (xy 6.180666 7.535334) - (xy 6.180666 5.334) - (xy 5.418666 5.334) - (xy 5.418666 3.217334) - (xy 6.096 3.217334) - (xy 6.858 3.217334) - (xy 7.535333 3.217334) - (xy 7.535333 3.894667) - (xy 6.858 3.894667) - (xy 6.858 3.217334) - (xy 6.096 3.217334) - (xy 6.096 4.656667) - (xy 7.535333 4.656667) - (xy 7.535333 5.334) - (xy 6.858 5.334) - (xy 6.858 6.096) - (xy 7.62 6.096) - (xy 7.62 5.418667) - (xy 9.059333 5.418667) - (xy 9.059333 3.979334) - (xy 10.414 3.979334) - (xy 10.414 4.656667) - (xy 9.736666 4.656667) - (xy 9.736666 5.418667) - (xy 11.176 5.418667) - (xy 11.176 6.096) - (xy 11.938 6.096) - (xy 11.938 5.334) - (xy 11.176 5.334) - (xy 11.176 4.656667) - (xy 11.938 4.656667) - (xy 11.938 3.894667) - (xy 10.498666 3.894667) - (xy 10.498666 3.217334) - (xy 11.938 3.217334) - (xy 11.938 2.455334) - (xy 10.414 2.455334) - (xy 10.414 3.217334) - (xy 7.62 3.217334) - (xy 7.62 2.54) - (xy 8.297333 2.54) - (xy 8.297333 1.778) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp c60ba6ae-e013-424d-bb59-f3de27f735b1)) - (fp_poly (pts - (xy 6.858 -2.54) - (xy 6.096 -2.54) - (xy 6.096 -1.778) - (xy 6.858 -1.778) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp c7a7077f-9289-4bb4-8f3b-a449cb499057)) - (fp_poly (pts - (xy 11.938 -8.297333) - (xy 11.176 -8.297333) - (xy 11.176 -7.535333) - (xy 11.938 -7.535333) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp d2d83bcc-f2f8-4838-be35-0f2248bff3b6)) - (fp_poly (pts - (xy 2.54 10.414) - (xy 3.979333 10.414) - (xy 3.979333 9.736667) - (xy 4.656666 9.736667) - (xy 4.656666 10.414) - (xy 5.418666 10.414) - (xy 5.418666 11.176) - (xy 6.180666 11.176) - (xy 6.180666 9.652) - (xy 4.741333 9.652) - (xy 4.741333 8.974667) - (xy 2.54 8.974667) - (xy 2.54 9.652) - (xy 1.778 9.652) - (xy 1.778 11.853334) - (xy 2.54 11.853334) - ) (layer "B.SilkS") (width 0) (fill solid) (tstamp f587f477-194d-41ae-8a6d-91fbd85f9d3f)) + (fp_text user "-" (at -1.36 -0.14 90) (layer "B.SilkS") + (effects (font (size 1.4 1.4) (thickness 0.15)) (justify mirror)) + (tstamp 9ba24b1f-aa4f-4999-8575-54b076dee292) + ) + (fp_text user "+" (at 11.049 -0.762 90) (layer "B.SilkS") + (effects (font (size 1.4 1.4) (thickness 0.15)) (justify mirror)) + (tstamp e1abddf7-c374-4a4d-adab-cd19b6ff9743) + ) + (fp_text user "+" (at 11.049 -0.762 90) (layer "B.Fab") + (effects (font (size 1.4 1.4) (thickness 0.15)) (justify mirror)) + (tstamp 344ad158-627a-4fe8-8f32-ea03d1a00181) + ) + (fp_text user "-" (at -4.66 1.65 90) (layer "B.Fab") + (effects (font (size 1.4 1.4) (thickness 0.15)) (justify mirror)) + (tstamp 7e53d23b-d00c-4d0c-a421-7ca4d3e1f660) + ) + (fp_line (start 7.185 7.2) (end 7.185 1.62) (layer "B.SilkS") (width 0.127) (tstamp 0211a684-15d1-4fd8-98a1-9d2eea82cffc)) + (fp_line (start 7.185 7.2) (end 4.67 7.2) (layer "B.SilkS") (width 0.127) (tstamp 2f27dbab-c089-4457-a2fa-190dc3cf92cc)) + (fp_line (start 4.67 -7.2) (end 3.7 -6.5) (layer "B.SilkS") (width 0.127) (tstamp 60c40d58-2aa2-424b-bd30-c9e22aec6136)) + (fp_line (start 4.67 7.2) (end 3.7 6.5) (layer "B.SilkS") (width 0.127) (tstamp 87c412bd-e547-4419-99e9-f510a3deb9db)) + (fp_line (start 7.185 -1.62) (end 7.185 -7.2) (layer "B.SilkS") (width 0.127) (tstamp 8a4a3f49-1920-4c4c-a71d-0fd1686376d6)) + (fp_line (start 7.185 -7.2) (end 4.67 -7.2) (layer "B.SilkS") (width 0.127) (tstamp e337d184-4fe2-4112-8c63-ce52ef60dd48)) + (fp_arc (start -7.32 -1.62) (mid -3.042265 -6.842698) (end 3.700001 -6.5) (layer "B.SilkS") (width 0.127) (tstamp e006ec8d-cc48-42c7-8039-cc5d68ebcb59)) + (fp_arc (start 3.7 6.5) (mid -3.042264 6.842697) (end -7.319999 1.62) (layer "B.SilkS") (width 0.127) (tstamp f5a20633-45e2-4754-934b-91b1aef6bd0b)) + (fp_line (start -9.65 -7.75) (end -9.65 7.75) (layer "B.CrtYd") (width 0.05) (tstamp a210fe35-e048-48c0-955b-1b4847f7fa1f)) + (fp_line (start -9.65 7.75) (end 10.25 7.75) (layer "B.CrtYd") (width 0.05) (tstamp a81e9870-896f-440c-98c3-a71f4fc9b3c9)) + (fp_line (start 10.25 -7.75) (end -9.65 -7.75) (layer "B.CrtYd") (width 0.05) (tstamp e1341a4d-89a3-451f-9240-dd68e2a3b4eb)) + (fp_line (start 10.25 7.75) (end 10.25 -7.75) (layer "B.CrtYd") (width 0.05) (tstamp e75cdfd5-20cf-43c2-a6d1-75d3536b1529)) + (fp_line (start 4.67 7.2) (end 3.7 6.5) (layer "B.Fab") (width 0.127) (tstamp 35a5dc45-7e4c-488a-b74b-6eac3edef64a)) + (fp_line (start 4.67 -7.2) (end 3.7 -6.5) (layer "B.Fab") (width 0.127) (tstamp 75638845-368f-4f2a-bc33-f68bdce2531a)) + (fp_line (start 7.185 7.2) (end 4.67 7.2) (layer "B.Fab") (width 0.127) (tstamp a4c639f5-5f1f-49ff-9f4b-33f83fe5d62d)) + (fp_line (start 7.185 -7.2) (end 4.67 -7.2) (layer "B.Fab") (width 0.127) (tstamp d7f4faf1-e29d-4b15-9022-6da62674d57b)) + (fp_line (start 7.185 7.2) (end 7.185 -7.2) (layer "B.Fab") (width 0.127) (tstamp e34f1c24-1183-4266-942c-fcb14ff686e5)) + (fp_arc (start 3.7 6.5) (mid -7.479336 0) (end 3.699999 -6.5) (layer "B.Fab") (width 0.127) (tstamp 8115b231-27fb-4147-991e-6053708af8f5)) + (pad "" np_thru_hole circle (at 4 0 90) (size 1.3 1.3) (drill 1.3) (layers *.Cu *.Mask) (tstamp 23339218-9abd-4783-86ac-fda51e39da5b)) + (pad "" np_thru_hole circle (at -3.5 0 90) (size 1 1) (drill 1) (layers *.Cu *.Mask) (tstamp 959c00ce-5199-4b1a-8889-4b82d8ac4c85)) + (pad "1" smd rect (at 8.23 0 270) (size 3.54 2.6) (layers "B.Cu" "B.Paste" "B.Mask") + (net 4 "Net-(BT1-Pad1)") (pinfunction "+") (pintype "passive") (tstamp 288888a6-4ba4-4710-a5b9-fc5848f2604b)) + (pad "2" smd rect (at -7.57 0 90) (size 3.66 2.6) (layers "B.Cu" "B.Paste" "B.Mask") + (net 3 "GND") (pinfunction "-") (pintype "passive") (tstamp 7b0c0c85-45e8-4eac-9a5f-fa4386fd7839)) ) (footprint "Connector_Audio:Jack_3.5mm_PJ320D_Horizontal" (layer "B.Cu") @@ -4109,13 +3095,13 @@ (pad "" np_thru_hole circle locked (at -4.775 0) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask) (tstamp 76b3b381-9e8c-4391-85c8-6b575e5f1cc1)) (pad "" np_thru_hole circle locked (at 2.225 0) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask) (tstamp 80b441e8-0b61-48f2-8a9d-b384578bce55)) (pad "R1" smd rect locked (at -0.175 3.25) (size 1.2 2.5) (layers "B.Cu" "B.Paste" "B.Mask") - (net 31 "TICK_A") (pintype "passive") (tstamp 4e7277b8-8a25-4181-95e8-e09bd3dcd4ba)) + (net 26 "TICK_A") (pintype "passive") (tstamp 4e7277b8-8a25-4181-95e8-e09bd3dcd4ba)) (pad "R2" smd rect locked (at -3.175 3.25) (size 1.2 2.5) (layers "B.Cu" "B.Paste" "B.Mask") - (net 4 "GND") (pintype "passive") (tstamp 727ed564-b946-4643-aabc-6b285113d570)) + (net 3 "GND") (pintype "passive") (tstamp 727ed564-b946-4643-aabc-6b285113d570)) (pad "S" smd rect locked (at 4.925 -3.25) (size 1.2 2.5) (layers "B.Cu" "B.Paste" "B.Mask") - (net 29 "unconnected-(J2-PadS)") (pintype "passive") (tstamp 6d6ba75b-1862-4e3b-9547-9c8624ed35d7)) + (net 24 "unconnected-(J2-PadS)") (pintype "passive") (tstamp 6d6ba75b-1862-4e3b-9547-9c8624ed35d7)) (pad "T" smd rect locked (at 3.825 3.25) (size 1.2 2.5) (layers "B.Cu" "B.Paste" "B.Mask") - (net 30 "TICK_B") (pintype "passive") (tstamp 0789c018-baf5-4a9a-94f8-ebb91f545f31)) + (net 25 "TICK_B") (pintype "passive") (tstamp 0789c018-baf5-4a9a-94f8-ebb91f545f31)) (model "${KICAD6_3DMODEL_DIR}/Connector_Audio.3dshapes/Jack_3.5mm_PJ320D_Horizontal.wrl" (offset (xyz 0 0 0)) (scale (xyz 1 1 1)) @@ -4131,593 +3117,604 @@ (gr_arc (start 70 133.7) (mid 70.497918 132.497918) (end 71.7 132) (layer "Edge.Cuts") (width 0.15) (tstamp ea466442-d4bb-48d0-84c0-677285170a72)) (gr_arc (start 130 160.3) (mid 129.502082 161.502082) (end 128.3 162) (layer "Edge.Cuts") (width 0.15) (tstamp eba70375-5329-4fa6-b977-2ee1e8cf4f2f)) (gr_arc (start 71.7 162) (mid 70.497918 161.502082) (end 70 160.3) (layer "Edge.Cuts") (width 0.15) (tstamp ffc085f0-5f24-4480-9762-f6a7564d320f)) + (gr_text "https://git.lmve.net/kevin/morse_code_trainer" (at 90.3 135.6) (layer "B.SilkS") (tstamp 2b1e0361-aca4-4c58-8fdb-ae96d6aa6efe) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) (gr_text "4.7V +" (at 123.6 156.5) (layer "B.SilkS") (tstamp 49a29ee1-40ea-453b-94ed-a286c6322655) (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) ) - (gr_text "BOOT_0 PUTUP" (at 89.4 145.6 90) (layer "B.SilkS") (tstamp 7a4998b5-68cf-4ec6-a467-0fce0a97f452) + (gr_text "BOOT_0 PUTUP" (at 104.9 138.7) (layer "B.SilkS") (tstamp 7a4998b5-68cf-4ec6-a467-0fce0a97f452) (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) ) (gr_text "X X G V" (at 122.1 139.9) (layer "B.SilkS") (tstamp cf6ceb34-85ec-4670-9485-b3cd0c69bb94) (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) ) - (gr_text "Morse code practice\nDesigned by Kevin\n2022-3-18" (at 85.8 146.3 90) (layer "B.SilkS") (tstamp d2d5f057-3d3f-4824-ba53-bea972f61938) + (gr_text "Morse code practice V2\nDesigned by Kevin\n2022-4-9" (at 105.8 159.1) (layer "B.SilkS") (tstamp d2d5f057-3d3f-4824-ba53-bea972f61938) (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) ) - (via (at 71.7 160.3) (size 3.1) (drill 3) (layers "F.Cu" "B.Cu") (free) (net 0) (tstamp 31cc3983-9b6f-4ec2-90d9-385882615acd)) - (via (at 128.3 133.7) (size 3.1) (drill 3) (layers "F.Cu" "B.Cu") (free) (net 0) (tstamp 3c70dee1-9664-4d68-9e46-2890a0d7d1e7)) - (via (at 128.3 160.3) (size 3.1) (drill 3) (layers "F.Cu" "B.Cu") (free) (net 0) (tstamp 4857f10d-18df-4643-8860-452001417f93)) - (via (at 71.7 133.7) (size 3.1) (drill 3) (layers "F.Cu" "B.Cu") (free) (net 0) (tstamp caa049f4-ce6f-4a24-93b2-13817f8fa4cb)) - (segment (start 80.070785 138.5) (end 84.508285 134.0625) (width 0.3) (layer "F.Cu") (net 1) (tstamp 4fd9e674-2ad2-416a-88e1-96faf6ee6272)) - (segment (start 84.508285 134.0625) (end 85.5 134.0625) (width 0.3) (layer "F.Cu") (net 1) (tstamp 67cdb4ca-77cb-407d-975e-203a01ba69ea)) - (segment (start 80.070785 139.8) (end 80.070785 138.5) (width 0.3) (layer "F.Cu") (net 1) (tstamp e86b4c64-a456-47a9-8289-19297159ba94)) - (segment (start 87.631427 142.4) (end 88.22452 141.806907) (width 0.3) (layer "F.Cu") (net 2) (tstamp 0b71f8d2-3097-4cea-abd6-6f18d197bcff)) - (segment (start 84.711677 140.80048) (end 84.311668 141.200489) (width 0.3) (layer "F.Cu") (net 2) (tstamp 570828c0-d606-41a0-b767-8b34cf9929e8)) - (segment (start 88.22452 141.806907) (end 88.22452 141.093093) (width 0.3) (layer "F.Cu") (net 2) (tstamp 6ebfd332-bb18-44c0-a209-381e0af5c58e)) - (segment (start 76.471274 141.200489) (end 75.070785 139.8) (width 0.3) (layer "F.Cu") (net 2) (tstamp b01ace97-d129-4975-aa97-dd7df51450f2)) - (segment (start 84.311668 141.200489) (end 76.471274 141.200489) (width 0.3) (layer "F.Cu") (net 2) (tstamp b7d484dc-2ae9-42cb-8bb2-ac486f5320bd)) - (segment (start 87.931907 140.80048) (end 84.711677 140.80048) (width 0.3) (layer "F.Cu") (net 2) (tstamp dd39d426-c8f6-4c16-9896-6098ce72f07f)) - (segment (start 85.2625 142.4) (end 87.631427 142.4) (width 0.3) (layer "F.Cu") (net 2) (tstamp e60e81d1-1a76-403b-a669-30d647249d6f)) - (segment (start 88.22452 141.093093) (end 87.931907 140.80048) (width 0.3) (layer "F.Cu") (net 2) (tstamp f5a68d4f-2b1a-436c-b0eb-626ff414d9d4)) - (segment (start 94.25 147.475) (end 96.075 147.475) (width 0.3) (layer "F.Cu") (net 3) (tstamp 0064326b-872e-4bb8-9e5d-82320b7d7ef0)) - (segment (start 94.375 147.35) (end 94.375 145.3125) (width 0.3) (layer "F.Cu") (net 3) (tstamp 63d1a0d2-68ea-40dc-80a7-f21c8f701589)) - (segment (start 96.075 147.475) (end 96.15 147.55) (width 0.3) (layer "F.Cu") (net 3) (tstamp e0bbb1c2-4c8a-4c7a-98de-c9f8ccf96396)) - (segment (start 94.25 147.475) (end 94.375 147.35) (width 0.3) (layer "F.Cu") (net 3) (tstamp f32fafa2-eb06-4752-82e2-cbe40ff5f694)) - (segment (start 106.7125 134.55) (end 115.55 134.55) (width 0.3) (layer "F.Cu") (net 4) (tstamp 04caf110-5176-47c6-bf24-f0703489b78d)) - (segment (start 108.5 154.95) (end 108.8 154.65) (width 0.3) (layer "F.Cu") (net 4) (tstamp 04d72f7c-cc6b-48b9-9380-7390b21fc91f)) - (segment (start 86 147.55) (end 86.5 148.05) (width 0.3) (layer "F.Cu") (net 4) (tstamp 053ff009-ed5f-4fa4-8809-dd47110de1f4)) - (segment (start 113.2 150) (end 111.94455 150) (width 0.3) (layer "F.Cu") (net 4) (tstamp 086d0b86-82bc-4f7b-8d31-c1ec72d3afc4)) - (segment (start 106.7 154.15) (end 106.7 152.55) (width 0.3) (layer "F.Cu") (net 4) (tstamp 0ace913d-24ea-4f3b-84ec-59f3ba233209)) - (segment (start 124.357818 161.38) (end 119.26 161.38) (width 0.3) (layer "F.Cu") (net 4) (tstamp 0b89cf1f-8019-4264-ba34-b4054dbb38e8)) - (segment (start 99.14096 152.5) (end 99.17048 152.47048) (width 0.3) (layer "F.Cu") (net 4) (tstamp 0cb01785-dd40-4a46-9360-2bc58e66f6ef)) - (segment (start 106.79 152.46) (end 104.625 152.46) (width 0.3) (layer "F.Cu") (net 4) (tstamp 0cbf418c-ff2a-446b-8902-a809af8af55d)) - (segment (start 114.65 158.85) (end 115.84 158.85) (width 0.3) (layer "F.Cu") (net 4) (tstamp 0ce16463-ab2a-4d2d-88fd-8638099099fa)) - (segment (start 107.4 136.872862) (end 107.7 136.572862) (width 0.3) (layer "F.Cu") (net 4) (tstamp 104404fd-358b-4a72-9c7d-7be74d74f7fd)) - (segment (start 128.5 150.673845) (end 129.27452 151.448365) (width 0.3) (layer "F.Cu") (net 4) (tstamp 15dea616-aa11-4fea-a254-38a1d01dbd9c)) - (segment (start 97.239283 137.3) (end 100.8 137.3) (width 0.3) (layer "F.Cu") (net 4) (tstamp 18ef9e7b-3249-46a0-805a-e6cbe3453959)) - (segment (start 116.28 158.41) (end 124.92 158.41) (width 0.3) (layer "F.Cu") (net 4) (tstamp 19c065a4-37d4-43e9-989c-ef86fb241629)) - (segment (start 99.17048 153.30548) (end 100.12 154.255) (width 0.3) (layer "F.Cu") (net 4) (tstamp 19fd896a-6194-4c4c-9945-4129ef92f19c)) - (segment (start 124.92 154.23) (end 127.29 154.23) (width 0.3) (layer "F.Cu") (net 4) (tstamp 1b255b53-1881-42cd-8622-de8e61f5e2f3)) - (segment (start 124.205 153.315) (end 125.12 154.23) (width 0.3) (layer "F.Cu") (net 4) (tstamp 1baf43b1-37df-454d-8699-c49539867d3c)) - (segment (start 93.425 148.3) (end 92.6 149.125) (width 0.3) (layer "F.Cu") (net 4) (tstamp 1f11bb36-c850-444c-ba7e-05183d56322e)) - (segment (start 99.483489 132.883489) (end 100.1 133.5) (width 0.3) (layer "F.Cu") (net 4) (tstamp 20a90bea-3a29-4dc3-84a1-b15ce2cb1d79)) - (segment (start 95.675 139.5875) (end 95.675 138.864283) (width 0.3) (layer "F.Cu") (net 4) (tstamp 24ada5c1-4f33-4db3-bd96-83d03ccf8292)) - (segment (start 96.15 149.45) (end 95 148.3) (width 0.3) (layer "F.Cu") (net 4) (tstamp 2e31c8c6-3e55-48a7-916e-256df1a36109)) - (segment (start 103.708085 137.908085) (end 104.4 138.6) (width 0.3) (layer "F.Cu") (net 4) (tstamp 2eb9b54f-c099-432a-ac1a-a5e2b2a41541)) - (segment (start 106.8 138.6) (end 107.4 138) (width 0.3) (layer "F.Cu") (net 4) (tstamp 30aeea4c-d11b-43be-a4bf-50dc3d86655a)) - (segment (start 115.55 134.55) (end 117.55 132.55) (width 0.3) (layer "F.Cu") (net 4) (tstamp 337b5fb3-b921-4e50-a6fc-8bba2eed233e)) - (segment (start 117.55 132.55) (end 123.1 132.55) (width 0.3) (layer "F.Cu") (net 4) (tstamp 33a1c44e-02eb-40a8-8537-fe6347cefea0)) - (segment (start 129.27452 151.448365) (end 129.27452 152.84548) (width 0.3) (layer "F.Cu") (net 4) (tstamp 34d95b19-4b25-4451-96d9-083c3c137323)) - (segment (start 116.28 154.23) (end 116.28 158.41) (width 0.3) (layer "F.Cu") (net 4) (tstamp 3569d4a9-a6b3-46b3-9197-434b0ccef56e)) - (segment (start 127.56 153.96) (end 128.90952 155.30952) (width 0.3) (layer "F.Cu") (net 4) (tstamp 372fe638-bb5c-43ec-a81e-24fddbed59b6)) - (segment (start 110.675 154.4) (end 110.9 154.625) (width 0.3) (layer "F.Cu") (net 4) (tstamp 3b69024e-289d-42c9-bfb3-57ebbe43e06b)) - (segment (start 100.3225 151.56) (end 99.5 151.56) (width 0.3) (layer "F.Cu") (net 4) (tstamp 3fd3d7da-4e1e-411a-9e60-9ca1374850c7)) - (segment (start 128.90952 155.30952) (end 128.90952 157.10048) (width 0.3) (layer "F.Cu") (net 4) (tstamp 46bd5f77-228f-4d9a-ad0c-a2bfe1a26ce7)) - (segment (start 118 143.15) (end 120.83 140.32) (width 0.3) (layer "F.Cu") (net 4) (tstamp 4700bd45-ac67-48ac-96d1-886ce78894c8)) - (segment (start 113.8 158.85) (end 111.068573 158.85) (width 0.3) (layer "F.Cu") (net 4) (tstamp 47f480c2-2202-410c-aa19-663605b84159)) - (segment (start 90.8 142.5) (end 91.600004 141.699996) (width 0.3) (layer "F.Cu") (net 4) (tstamp 49cdc9e8-ecd6-48f1-a797-ebb4b32a5bbc)) - (segment (start 100.615 154.75) (end 100.12 154.255) (width 0.3) (layer "F.Cu") (net 4) (tstamp 4a8af1df-09ba-4558-8565-58b65e621e09)) - (segment (start 107.7 136.572862) (end 107.7 135.418573) (width 0.3) (layer "F.Cu") (net 4) (tstamp 4e8a0394-739a-46a6-8171-35c520d4b59b)) - (segment (start 110.675 154.4) (end 110.6 154.475) (width 0.3) (layer "F.Cu") (net 4) (tstamp 51269fa6-3f58-4aed-863a-03cf2b1dc063)) - (segment (start 110.290713 157.609287) (end 109.881427 157.2) (width 0.3) (layer "F.Cu") (net 4) (tstamp 539fe9fe-8311-4356-98cf-e1749e2a6038)) - (segment (start 119.25952 161.37952) (end 110.39452 161.37952) (width 0.3) (layer "F.Cu") (net 4) (tstamp 58d4480b-6c6b-4c3f-96d0-4f9d486c0238)) - (segment (start 90.8 147.9) (end 90.8 142.5) (width 0.3) (layer "F.Cu") (net 4) (tstamp 5a7cc080-6adf-4962-9631-f79ca90575b7)) - (segment (start 110.6 158.381427) (end 110.6 157.918573) (width 0.3) (layer "F.Cu") (net 4) (tstamp 5ceea8a3-1c40-4228-bd23-3d24d07fe29a)) - (segment (start 115.84 158.85) (end 116.28 158.41) (width 0.3) (layer "F.Cu") (net 4) (tstamp 5e6235ce-a7be-47c2-a659-de0116b8ce40)) - (segment (start 123.1 132.55) (end 124.7 134.15) (width 0.3) (layer "F.Cu") (net 4) (tstamp 5eb7fe92-778e-4f34-9d3a-48e65b65adff)) - (segment (start 97.406511 132.883489) (end 99.483489 132.883489) (width 0.3) (layer "F.Cu") (net 4) (tstamp 5fc7946e-190c-407b-b8f5-91b9f37ec729)) - (segment (start 128.27 157.74) (end 127.997818 157.74) (width 0.3) (layer "F.Cu") (net 4) (tstamp 60ad1ea3-1501-4275-912d-d48248ce6e00)) - (segment (start 110.6 157.3) (end 110.290713 157.609287) (width 0.3) (layer "F.Cu") (net 4) (tstamp 60b6d1e9-7b40-4e53-98b1-7838cda145a0)) - (segment (start 124.92 158.41) (end 124.92 154.23) (width 0.3) (layer "F.Cu") (net 4) (tstamp 62058a53-81a6-4568-9205-b36600ee97ca)) - (segment (start 92.6 149.125) (end 92.025 149.125) (width 0.3) (layer "F.Cu") (net 4) (tstamp 623510fe-9117-4261-b694-8782146f502f)) - (segment (start 84.975 145) (end 84.17548 144.20048) (width 0.3) (layer "F.Cu") (net 4) (tstamp 63ca8f93-2a42-420d-afa8-da533b728050)) - (segment (start 95 148.3) (end 93.425 148.3) (width 0.3) (layer "F.Cu") (net 4) (tstamp 64cd6deb-e713-4118-a0bd-8704f3a9cc0e)) - (segment (start 86.45 161.35) (end 97.225 161.35) (width 0.3) (layer "F.Cu") (net 4) (tstamp 6743d0cb-f519-4c3f-8e0e-09f89d017e0d)) - (segment (start 106.525 145.6) (end 106.45 145.6) (width 0.3) (layer "F.Cu") (net 4) (tstamp 71ea740d-7727-48ba-9962-c3f3336e36fe)) - (segment (start 109.225 160.4) (end 108.255 161.37) (width 0.3) (layer "F.Cu") (net 4) (tstamp 75fad480-98a9-4f33-a2ea-7c67c787977e)) - (segment (start 111.5 153.575) (end 110.675 154.4) (width 0.3) (layer "F.Cu") (net 4) (tstamp 79a4814e-5975-44ad-8428-cfab60c856fe)) - (segment (start 114.26 158.39) (end 113.8 158.85) (width 0.3) (layer "F.Cu") (net 4) (tstamp 7c04835e-0f29-462c-86e2-00f4262f4f77)) - (segment (start 99.17048 151.88952) (end 99.17048 152.47048) (width 0.3) (layer "F.Cu") (net 4) (tstamp 7c17a8cb-3ee2-411d-9d98-aa657fbca83b)) - (segment (start 84.718573 141.5) (end 87.0875 141.5) (width 0.3) (layer "F.Cu") (net 4) (tstamp 805a568a-5c48-41c6-9705-9172c38bb893)) - (segment (start 84.17548 142.043093) (end 84.718573 141.5) (width 0.3) (layer "F.Cu") (net 4) (tstamp 80d2d739-0b77-4ff1-87b5-c585c1a753fb)) - (segment (start 108.255 161.37) (end 100.8725 161.37) (width 0.3) (layer "F.Cu") (net 4) (tstamp 818393f7-e711-4d7e-bab0-7e4e0a836a35)) - (segment (start 124.05 153.315) (end 124.205 153.315) (width 0.3) (layer "F.Cu") (net 4) (tstamp 83810c43-4d42-41a9-9f49-f765e3b56d13)) - (segment (start 106.7 152.55) (end 106.79 152.46) (width 0.3) (layer "F.Cu") (net 4) (tstamp 84b1ccd7-7358-4284-bc54-b10ff260fd1f)) - (segment (start 110.6 154.475) (end 110.6 157.3) (width 0.3) (layer "F.Cu") (net 4) (tstamp 85945ce7-2d6d-4788-8edf-51286302530b)) - (segment (start 73.755 152.05) (end 75.354511 153.649511) (width 0.3) (layer "F.Cu") (net 4) (tstamp 87c2dca5-cd1c-4237-879f-db22a19b800d)) - (segment (start 127.997818 157.74) (end 124.357818 161.38) (width 0.3) (layer "F.Cu") (net 4) (tstamp 89a48078-0ecb-486a-9b74-75d7f1ebbeb2)) - (segment (start 99.7875 160.475) (end 99.8825 160.38) (width 0.3) (layer "F.Cu") (net 4) (tstamp 8a1b5e31-a1d0-4ccd-96cf-0647c8ea12fe)) - (segment (start 100.1 133.5) (end 100.1 134.291915) (width 0.3) (layer "F.Cu") (net 4) (tstamp 8b9ae290-2ab3-439c-ac69-66d39bb64309)) - (segment (start 117.195 153.315) (end 116.28 154.23) (width 0.3) (layer "F.Cu") (net 4) (tstamp 9033e468-747c-4fd7-a324-da6d7dae4974)) - (segment (start 100.1 134.291915) (end 103.708085 137.9) (width 0.3) (layer "F.Cu") (net 4) (tstamp 906f9e27-6dc1-44d8-a7a1-a2c0b57d2fe3)) - (segment (start 110.39452 161.37952) (end 109.145 160.13) (width 0.3) (layer "F.Cu") (net 4) (tstamp 929a6b61-410e-4ab2-a7ff-ecef257c2241)) - (segment (start 127.29 154.23) (end 127.56 153.96) (width 0.3) (layer "F.Cu") (net 4) (tstamp 938faba3-85f6-439f-b020-b19602761b6c)) - (segment (start 111.94455 150) (end 111.5 150.44455) (width 0.3) (layer "F.Cu") (net 4) (tstamp 94a55620-463f-498d-900d-7ef4ee3a1c30)) - (segment (start 108.3 154.15) (end 108.8 154.65) (width 0.3) (layer "F.Cu") (net 4) (tstamp 972f569d-cd89-44b5-a8ee-30e99bf37dfa)) - (segment (start 108.5 156.9) (end 108.8 157.2) (width 0.3) (layer "F.Cu") (net 4) (tstamp 97cf1c4c-b032-4b5b-b093-e8b893fa3368)) - (segment (start 75.354511 153.649511) (end 75.354511 156.154511) (width 0.3) (layer "F.Cu") (net 4) (tstamp 9809da20-9f7a-4ed0-be8a-ded228043872)) - (segment (start 86.5 148.05) (end 86.5 161.3) (width 0.3) (layer "F.Cu") (net 4) (tstamp 98a81cc2-c726-4dc6-b47d-ed611f6636d8)) - (segment (start 114.26 158.39) (end 114.26 158.46) (width 0.3) (layer "F.Cu") (net 4) (tstamp 98bc1db3-4b17-49b1-8417-debd8b768838)) - (segment (start 129.27452 152.84548) (end 128.16 153.96) (width 0.3) (layer "F.Cu") (net 4) (tstamp 99536883-613b-4ac1-9d58-c399c49a6301)) - (segment (start 100.8725 161.37) (end 99.8825 160.38) (width 0.3) (layer "F.Cu") (net 4) (tstamp 9c1271c9-e753-442c-b01a-142fd4e024ff)) - (segment (start 84.17548 144.20048) (end 84.17548 142.043093) (width 0.3) (layer "F.Cu") (net 4) (tstamp 9f1d7db3-2382-40b5-8b9b-c7170e864a26)) - (segment (start 106.65 143.15) (end 118 143.15) (width 0.3) (layer "F.Cu") (net 4) (tstamp a2c4740f-3671-42a2-a8e1-2be1c38b6c26)) - (segment (start 128.16 153.96) (end 127.56 153.96) (width 0.3) (layer "F.Cu") (net 4) (tstamp a346c66f-ec99-40ce-94c3-da01d2bd19ff)) - (segment (start 107.7 135.418573) (end 106.981427 134.7) (width 0.3) (layer "F.Cu") (net 4) (tstamp a4886fc3-5d98-44aa-b8e8-348f4f4217e8)) - (segment (start 117.35 153.315) (end 117.195 153.315) (width 0.3) (layer "F.Cu") (net 4) (tstamp a6699854-5ed5-4428-b502-2118f14a251c)) - (segment (start 99.17048 152.47048) (end 99.17048 153.30548) (width 0.3) (layer "F.Cu") (net 4) (tstamp a72fab70-91a6-4fe3-a478-61302e7e34de)) - (segment (start 119.26 161.38) (end 119.25952 161.37952) (width 0.3) (layer "F.Cu") (net 4) (tstamp a86b9117-e039-4cce-9f04-85dc60279ad2)) - (segment (start 109.881427 157.2) (end 109.4625 157.2) (width 0.3) (layer "F.Cu") (net 4) (tstamp a8d1182e-5da3-4549-8377-4f798167c28e)) - (segment (start 80.55 161.35) (end 86.45 161.35) (width 0.3) (layer "F.Cu") (net 4) (tstamp ad87f89a-f6b3-43c9-9f38-d6a399109e15)) - (segment (start 106.78 154.15) (end 108.3 154.15) (width 0.3) (layer "F.Cu") (net 4) (tstamp ae34ca85-3607-4b02-a720-7f76e8d7e328)) - (segment (start 99.299996 141.699996) (end 103.425 145.825) (width 0.3) (layer "F.Cu") (net 4) (tstamp b0274fc1-290a-4c68-9dd6-54e6c04d8a20)) - (segment (start 103.425 145.825) (end 103.425 146.1) (width 0.3) (layer "F.Cu") (net 4) (tstamp b0ea9a99-3269-4a24-a1ee-2c43aabe3e9a)) - (segment (start 87.0875 141.5) (end 87.1375 141.45) (width 0.3) (layer "F.Cu") (net 4) (tstamp b1ed3026-e403-4a36-97f4-63b9341050e7)) - (segment (start 106.5625 134.7) (end 106.7125 134.55) (width 0.3) (layer "F.Cu") (net 4) (tstamp b635b519-9e58-436e-84d5-e1ce4b3f0a19)) - (segment (start 84.25 147.55) (end 86 147.55) (width 0.3) (layer "F.Cu") (net 4) (tstamp b8b25041-9533-475f-bd8d-b9918dca3c93)) - (segment (start 91.600004 141.699996) (end 99.299996 141.699996) (width 0.3) (layer "F.Cu") (net 4) (tstamp b8cd8e36-ee5a-4ef0-95da-560805ed7f20)) - (segment (start 86.5 161.3) (end 86.45 161.35) (width 0.3) (layer "F.Cu") (net 4) (tstamp bab29f5e-2c3d-4323-b2fe-5968dc148076)) - (segment (start 128.3375 148.65) (end 128.5 148.8125) (width 0.3) (layer "F.Cu") (net 4) (tstamp c4c127e8-c81f-4d4e-8e77-a91bb3dd7641)) - (segment (start 101.825 154.75) (end 100.615 154.75) (width 0.3) (layer "F.Cu") (net 4) (tstamp c4d2495e-8c17-4e56-97cf-7c0b0f1ab9f1)) - (segment (start 107.4 138) (end 107.4 136.872862) (width 0.3) (layer "F.Cu") (net 4) (tstamp c6787033-5966-44e5-8ae7-de6f11d613d3)) - (segment (start 128.5 148.8125) (end 128.5 150.673845) (width 0.3) (layer "F.Cu") (net 4) (tstamp c83fb78f-ce50-4a58-93ae-82c94e3b4966)) - (segment (start 97.225 161.35) (end 98.1 160.475) (width 0.3) (layer "F.Cu") (net 4) (tstamp c8d7acd2-df4f-4af0-a097-89592de4a3a2)) - (segment (start 104.4 138.6) (end 106.8 138.6) (width 0.3) (layer "F.Cu") (net 4) (tstamp c988a3c3-c5d9-4a10-98ee-8e81f33c2b1b)) - (segment (start 98.4 152.5) (end 99.14096 152.5) (width 0.3) (layer "F.Cu") (net 4) (tstamp ce048dda-5cb0-4435-a063-d97266282237)) - (segment (start 84.975 145) (end 83.9 146.075) (width 0.3) (layer "F.Cu") (net 4) (tstamp cffd0d0a-6f5a-4c24-89ef-191c15e80c89)) - (segment (start 99.5 151.56) (end 99.17048 151.88952) (width 0.3) (layer "F.Cu") (net 4) (tstamp d3153779-0b1b-48a1-90ae-41b7e27815b8)) - (segment (start 110.6 157.918573) (end 110.290713 157.609287) (width 0.3) (layer "F.Cu") (net 4) (tstamp d37c4b47-70cc-4578-b033-9ecf5ad459bc)) - (segment (start 106.981427 134.7) (end 106.5625 134.7) (width 0.3) (layer "F.Cu") (net 4) (tstamp d6e72d95-84ef-448e-a85d-f944d143afa9)) - (segment (start 103.425 146.1) (end 101.6 146.1) (width 0.3) (layer "F.Cu") (net 4) (tstamp d81d7582-aab0-4db9-98a5-3a9f4e753af4)) - (segment (start 103.708085 137.9) (end 103.708085 137.908085) (width 0.3) (layer "F.Cu") (net 4) (tstamp da11b0b1-01e0-4106-84f6-0c2e8b2aaabc)) - (segment (start 111.068573 158.85) (end 110.6 158.381427) (width 0.3) (layer "F.Cu") (net 4) (tstamp db45ddd5-0311-40f4-bed0-5cc84cb2be04)) - (segment (start 104.625 152.46) (end 104.58 152.415) (width 0.3) (layer "F.Cu") (net 4) (tstamp de7315fb-b81f-4199-8172-f0af65980118)) - (segment (start 120.83 140.32) (end 120.83 137.7) (width 0.3) (layer "F.Cu") (net 4) (tstamp dec6ba5c-92b4-475c-8d33-fec89af68185)) - (segment (start 83.9 147.2) (end 84.25 147.55) (width 0.3) (layer "F.Cu") (net 4) (tstamp dfd7af0b-3337-47d5-ba3b-b76b661aca07)) - (segment (start 92.025 149.125) (end 90.8 147.9) (width 0.3) (layer "F.Cu") (net 4) (tstamp e07b68dc-e35e-41fe-8d78-7e6e47c275c9)) - (segment (start 114.3 156.675) (end 114.3 158.65) (width 0.3) (layer "F.Cu") (net 4) (tstamp e2014141-f209-44f6-a180-b51af47b0d9d)) - (segment (start 106.45 145.6) (end 103.05 142.2) (width 0.3) (layer "F.Cu") (net 4) (tstamp e289d02c-f548-470d-be88-fda81dcfbde9)) - (segment (start 83.9 146.075) (end 83.9 147.2) (width 0.3) (layer "F.Cu") (net 4) (tstamp e338259e-16ce-422c-9f6f-8f485355241d)) - (segment (start 108.8 157.2) (end 109.7225 157.2) (width 0.3) (layer "F.Cu") (net 4) (tstamp e3803129-ad4d-4330-97fe-307c488e16d5)) - (segment (start 95.675 138.864283) (end 97.239283 137.3) (width 0.3) (layer "F.Cu") (net 4) (tstamp e3bb70e0-5ecc-41ce-96b8-72e29cccedeb)) - (segment (start 128.90952 157.10048) (end 128.27 157.74) (width 0.3) (layer "F.Cu") (net 4) (tstamp e4308807-ce7a-4506-943d-afe25bc9fc46)) - (segment (start 108.475 154.975) (end 108.8 154.65) (width 0.3) (layer "F.Cu") (net 4) (tstamp e607c523-b569-49ef-801c-887331107500)) - (segment (start 75.354511 156.154511) (end 80.55 161.35) (width 0.3) (layer "F.Cu") (net 4) (tstamp e786fec3-1200-400c-b5f8-f4d2ea091aac)) - (segment (start 100.8 137.3) (end 106.65 143.15) (width 0.3) (layer "F.Cu") (net 4) (tstamp e83dd16a-d660-4dea-bd8c-9786f6c0ba19)) - (segment (start 98.06 160.475) (end 99.7875 160.475) (width 0.3) (layer "F.Cu") (net 4) (tstamp ea81343b-71c9-4b08-ac66-d4cef5fb91f9)) - (segment (start 111.5 150.44455) (end 111.5 153.575) (width 0.3) (layer "F.Cu") (net 4) (tstamp ed767827-014e-479a-a91b-63486a2f2e65)) - (segment (start 108.5 156.9) (end 108.5 154.95) (width 0.3) (layer "F.Cu") (net 4) (tstamp eee4aaf0-7d52-4c27-868b-a55ecba42a3b)) - (segment (start 114.26 158.46) (end 114.65 158.85) (width 0.3) (layer "F.Cu") (net 4) (tstamp ef0a277e-3564-425c-bbfe-7e78c935c984)) - (segment (start 96.295 133.995) (end 97.406511 132.883489) (width 0.3) (layer "F.Cu") (net 4) (tstamp f1c6b485-5b94-4f5f-9f4f-cc0805c91252)) - (via (at 101.6 146.1) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 4) (tstamp 2fc4cead-afd0-433f-8652-892b66fb7633)) - (via (at 103.05 142.2) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 4) (tstamp a050b412-cfaf-4c64-9600-5633e86031cb)) - (via (at 98.4 152.5) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (free) (net 4) (tstamp ebf8de86-5857-44de-b118-09cc64b2fdd1)) - (segment (start 125.75 150.55) (end 127.56 152.36) (width 0.3) (layer "B.Cu") (net 4) (tstamp 0b58214c-3cab-421e-b9be-911e999a3937)) - (segment (start 73.755 143.416763) (end 83.176763 133.995) (width 0.3) (layer "B.Cu") (net 4) (tstamp 13bb666c-820d-4d5c-b795-d13db79fe746)) - (segment (start 83.176763 133.995) (end 96.295 133.995) (width 0.3) (layer "B.Cu") (net 4) (tstamp 31b2b1f9-38fc-4121-9ddb-ec1d9feac414)) - (segment (start 100.2 152.5) (end 98.4 152.5) (width 0.3) (layer "B.Cu") (net 4) (tstamp 5c816dc0-ec18-4b18-916c-ec8d20170d56)) - (segment (start 103.7 148.2) (end 103.7 149) (width 0.3) (layer "B.Cu") (net 4) (tstamp 75eb6144-e0bf-4ac9-b46e-50a3f9accef1)) - (segment (start 127.56 152.36) (end 127.56 153.96) (width 0.3) (layer "B.Cu") (net 4) (tstamp 7677c266-8273-4d7b-a049-35db70194eea)) - (segment (start 103.7 149) (end 100.2 152.5) (width 0.3) (layer "B.Cu") (net 4) (tstamp 785de4e4-39af-41e2-b88c-e43bb4cf1026)) - (segment (start 124.7 134.15) (end 127.2 136.65) (width 0.3) (layer "B.Cu") (net 4) (tstamp 8b7bbf4a-cea7-49d0-a723-e4e1c4c05054)) - (segment (start 121.15 137.7) (end 124.7 134.15) (width 0.3) (layer "B.Cu") (net 4) (tstamp 8ecac993-5a54-4f2b-86a4-a0aca4b0511a)) - (segment (start 122.2 148.65) (end 124.1 150.55) (width 0.3) (layer "B.Cu") (net 4) (tstamp 9ed0656d-94cb-47f8-bca9-8ee8973bda49)) - (segment (start 101.6 146.1) (end 103.7 148.2) (width 0.3) (layer "B.Cu") (net 4) (tstamp a736983c-e9dd-4dde-aae8-57b5053db4cc)) - (segment (start 127.2 136.65) (end 127.2 143.65) (width 0.3) (layer "B.Cu") (net 4) (tstamp ac266d05-bbee-4e77-a590-56d4653afbf6)) - (segment (start 73.755 152.05) (end 73.755 143.416763) (width 0.3) (layer "B.Cu") (net 4) (tstamp b86ace89-6f2c-4546-8cee-1ec0b1a1566b)) - (segment (start 98.4 152.5) (end 104.31 158.41) (width 0.3) (layer "B.Cu") (net 4) (tstamp ca1a3101-3709-4fdb-a0ba-788aa9558762)) - (segment (start 120.83 137.7) (end 121.15 137.7) (width 0.3) (layer "B.Cu") (net 4) (tstamp cf911a53-820c-4e25-8b0e-f51252106547)) - (segment (start 127.2 143.65) (end 122.2 148.65) (width 0.3) (layer "B.Cu") (net 4) (tstamp d012a9b8-6b08-44e1-8e8b-84961aaf78ae)) - (segment (start 116.299511 142.749511) (end 122.2 148.65) (width 0.3) (layer "B.Cu") (net 4) (tstamp d29bad53-0c25-4bd2-954c-899e56bc66a9)) - (segment (start 103.599511 142.749511) (end 116.299511 142.749511) (width 0.3) (layer "B.Cu") (net 4) (tstamp e6fa747a-d9bb-4378-84bb-f7789b210f70)) - (segment (start 103.05 142.2) (end 103.599511 142.749511) (width 0.3) (layer "B.Cu") (net 4) (tstamp ec0c22ce-d153-4b94-be3e-b7255e9f118c)) - (segment (start 124.1 150.55) (end 125.75 150.55) (width 0.3) (layer "B.Cu") (net 4) (tstamp f492cca2-130d-4cef-9e2f-450f9286ee94)) - (segment (start 104.31 158.41) (end 116.28 158.41) (width 0.3) (layer "B.Cu") (net 4) (tstamp f81315a4-ad4e-4adb-981c-568cab5a5252)) - (segment (start 105.055 147.71) (end 105.355 148.01) (width 0.3) (layer "F.Cu") (net 5) (tstamp 05d1bc14-1946-484a-88c1-8bf91931ce19)) - (segment (start 108.12548 147.674511) (end 108.12548 146.797382) (width 0.3) (layer "F.Cu") (net 5) (tstamp 0d5dbc0b-2c15-478c-af69-8299f13895fa)) - (segment (start 116.864694 144.400481) (end 119.7 147.235787) (width 0.3) (layer "F.Cu") (net 5) (tstamp 1326ef29-178a-46dc-abbb-bb296d744ace)) - (segment (start 104.975 146.1) (end 100.075485 141.200485) (width 0.3) (layer "F.Cu") (net 5) (tstamp 51463675-11a2-4c6b-b5d9-32643f822a2e)) - (segment (start 108.12548 146.797382) (end 108.522862 146.4) (width 0.3) (layer "F.Cu") (net 5) (tstamp 54d7a360-a615-4d67-8321-24bbf7ff7747)) - (segment (start 105.055 147.71) (end 105.055 146.18) (width 0.3) (layer "F.Cu") (net 5) (tstamp 62407508-bb21-42cb-bd3a-94209a9d3e5e)) - (segment (start 100.075485 141.200485) (end 98.514768 141.200485) (width 0.3) (layer "F.Cu") (net 5) (tstamp 7acf9bb7-6737-41c1-b381-88083e9939f9)) - (segment (start 108.522862 146.4) (end 111.399988 146.4) (width 0.3) (layer "F.Cu") (net 5) (tstamp 842ec6d7-9a1c-4371-82ee-1136e0bb1038)) - (segment (start 97.625 140.310717) (end 97.625 139.5875) (width 0.3) (layer "F.Cu") (net 5) (tstamp 87f771e8-c8d9-453e-b894-b90acf307e66)) - (segment (start 105.355 148.01) (end 107.789991 148.01) (width 0.3) (layer "F.Cu") (net 5) (tstamp 8d0760ce-ba3a-42dd-b7c2-572fd3153aa2)) - (segment (start 119.7 147.235787) (end 119.7 148.65) (width 0.3) (layer "F.Cu") (net 5) (tstamp 94d8e5f3-3a02-4685-971b-c3a6f7dc3a78)) - (segment (start 98.514768 141.200485) (end 97.625 140.310717) (width 0.3) (layer "F.Cu") (net 5) (tstamp 9ae266f1-11d8-46c5-a621-c88999f6dfe0)) - (segment (start 113.399507 144.400481) (end 116.864694 144.400481) (width 0.3) (layer "F.Cu") (net 5) (tstamp b11df38c-0641-401a-8fe8-5d38e62fd54b)) - (segment (start 107.789991 148.01) (end 108.12548 147.674511) (width 0.3) (layer "F.Cu") (net 5) (tstamp d79b8955-4541-4ed0-9f8d-35f57deddb19)) - (segment (start 111.399988 146.4) (end 113.399507 144.400481) (width 0.3) (layer "F.Cu") (net 5) (tstamp e1a63c69-5778-4d3a-9257-4ceec610f307)) - (segment (start 105.055 146.18) (end 104.975 146.1) (width 0.3) (layer "F.Cu") (net 5) (tstamp e55acb71-6339-42bd-a747-433afa9ff653)) - (segment (start 106.85 147.175) (end 106.85 146.95) (width 0.3) (layer "F.Cu") (net 6) (tstamp 19723dcd-e23f-4378-a81d-ea5f033b113c)) - (segment (start 119.72 143.67) (end 124.7 148.65) (width 0.3) (layer "F.Cu") (net 6) (tstamp 1fd2cd95-535c-4bf1-8270-de6f107bde5f)) - (segment (start 97.539283 138.3) (end 100.775 138.3) (width 0.3) (layer "F.Cu") (net 6) (tstamp 25df4db2-28c5-4bbe-bfa9-683276124391)) - (segment (start 108.075 145.6) (end 108.075 145.675) (width 0.3) (layer "F.Cu") (net 6) (tstamp 4accffab-712c-445b-9107-199c75fb573c)) - (segment (start 100.775 138.3) (end 108.075 145.6) (width 0.3) (layer "F.Cu") (net 6) (tstamp 77a35448-4b43-4e05-bb7e-b572cd99bc5e)) - (segment (start 111.393572 145.7) (end 113.423572 143.67) (width 0.3) (layer "F.Cu") (net 6) (tstamp 809f19e5-adbf-43c9-ac69-4b9242bfc168)) - (segment (start 96.975 138.864283) (end 97.539283 138.3) (width 0.3) (layer "F.Cu") (net 6) (tstamp 99bce62d-28bc-410e-aaca-a79f656bf6c3)) - (segment (start 113.423572 143.67) (end 119.72 143.67) (width 0.3) (layer "F.Cu") (net 6) (tstamp ace13000-be2c-475a-9cd1-5a6fa0f334a1)) - (segment (start 96.975 139.5875) (end 96.975 138.864283) (width 0.3) (layer "F.Cu") (net 6) (tstamp b12b2c59-e824-4a69-8c4a-0cb48b6b1ce0)) - (segment (start 108.075 145.675) (end 108.1 145.7) (width 0.3) (layer "F.Cu") (net 6) (tstamp b529b540-fe90-4dff-80e3-7cc5a9ccbb66)) - (segment (start 106.85 146.95) (end 108.1 145.7) (width 0.3) (layer "F.Cu") (net 6) (tstamp caba90e3-9797-40a9-90ce-07aca275828c)) - (segment (start 108.1 145.7) (end 111.393572 145.7) (width 0.3) (layer "F.Cu") (net 6) (tstamp fd24ebf1-c26c-438c-bef4-ec5bf84d03d0)) - (segment (start 108.8 152.75) (end 108.8 151) (width 0.3) (layer "F.Cu") (net 7) (tstamp e9416a41-f2de-45e5-b6d9-c28814b8632c)) - (segment (start 118.35 152.590978) (end 118.35 153.315) (width 0.3) (layer "F.Cu") (net 8) (tstamp 00d330e8-bcad-4eaf-9270-c93b88dfa262)) - (segment (start 118.35 154.175371) (end 119.474629 155.3) (width 0.3) (layer "F.Cu") (net 8) (tstamp 05ac1b25-7140-4bcc-8b86-47acb91fc623)) - (segment (start 111.7375 157.8625) (end 112.95048 156.64952) (width 0.3) (layer "F.Cu") (net 8) (tstamp 0d9998c6-4886-486c-a9aa-aefb8f9d575f)) - (segment (start 111.7375 158.15) (end 111.7375 157.8625) (width 0.3) (layer "F.Cu") (net 8) (tstamp 0fc85b89-25bf-4ba5-bc95-cd5286dfb7cd)) - (segment (start 125.602011 150.799511) (end 124.300489 150.799511) (width 0.3) (layer "F.Cu") (net 8) (tstamp 1122bba8-8f6d-4116-b28c-fc4f16a64c8e)) - (segment (start 117.859022 152.1) (end 118.35 152.590978) (width 0.3) (layer "F.Cu") (net 8) (tstamp 1a3494e3-0bf9-4a0d-ad3a-ea8b878da830)) - (segment (start 119.474629 155.3) (end 122.125371 155.3) (width 0.3) (layer "F.Cu") (net 8) (tstamp 1d8cf7b1-0ce6-4d86-b411-451550e97f47)) - (segment (start 118.35 153.315) (end 118.35 154.175371) (width 0.3) (layer "F.Cu") (net 8) (tstamp 3f01845d-438e-48b4-aff4-03ef4199af4e)) - (segment (start 126.7425 151.94) (end 125.602011 150.799511) (width 0.3) (layer "F.Cu") (net 8) (tstamp 5618b419-6190-4dd2-a145-17baf07942ba)) - (segment (start 115.925 152.1) (end 117.859022 152.1) (width 0.3) (layer "F.Cu") (net 8) (tstamp 6fa601fc-0ad4-457e-879b-6d263e3ac66f)) - (segment (start 124.300489 150.799511) (end 123.25 151.85) (width 0.3) (layer "F.Cu") (net 8) (tstamp 78538213-470b-4403-afb7-43c6d9b401c0)) - (segment (start 123.25 151.85) (end 123.25 153.315) (width 0.3) (layer "F.Cu") (net 8) (tstamp 84d3dd2a-9e31-4b68-92da-7c9f88ac6cd3)) - (segment (start 112.95048 156.64952) (end 112.95048 155.07452) (width 0.3) (layer "F.Cu") (net 8) (tstamp 94c3257e-8898-49a5-ac00-4e9bd7a079ee)) - (segment (start 122.125371 155.3) (end 123.25 154.175371) (width 0.3) (layer "F.Cu") (net 8) (tstamp c212695a-a3ac-4ee7-b0cc-1dc0f01b6476)) - (segment (start 123.25 154.175371) (end 123.25 153.315) (width 0.3) (layer "F.Cu") (net 8) (tstamp dd46a290-1961-4f93-ae31-a939ec946f66)) - (segment (start 112.95048 155.07452) (end 115.925 152.1) (width 0.3) (layer "F.Cu") (net 8) (tstamp ea4c31f6-3d55-4373-a46b-8adb3eb892c1)) - (segment (start 114.1 160.13) (end 114.26 160.29) (width 0.3) (layer "F.Cu") (net 9) (tstamp 0665c844-75de-4413-85e3-8b98f0e71e4c)) - (segment (start 107.14 159.7775) (end 108.7675 158.15) (width 0.3) (layer "F.Cu") (net 9) (tstamp 07c4a991-c32d-4396-8b5f-f999aa56c4ca)) - (segment (start 103.55 160.105) (end 103.55 160.28) (width 0.3) (layer "F.Cu") (net 9) (tstamp 08db8083-9999-4857-95a1-20712bd9a372)) - (segment (start 109.7225 158.2625) (end 111.59 160.13) (width 0.3) (layer "F.Cu") (net 9) (tstamp 18d41fbc-424b-4168-a7f6-71cbb3a85f7f)) - (segment (start 127.56 157.471402) (end 127.56 156.5) (width 0.3) (layer "F.Cu") (net 9) (tstamp 28ee71c9-4030-43d9-8630-346612505113)) - (segment (start 111.59 160.13) (end 112.095 160.13) (width 0.3) (layer "F.Cu") (net 9) (tstamp 4bffad45-6dac-4f46-841f-20f54fb538c8)) - (segment (start 112.095 160.13) (end 114.1 160.13) (width 0.3) (layer "F.Cu") (net 9) (tstamp 65a16ee7-eda9-4794-8f31-73e4784361b4)) - (segment (start 106.05298 160.86452) (end 107.14 159.7775) (width 0.3) (layer "F.Cu") (net 9) (tstamp 82828ee3-2c3c-4dff-90c7-508fdff7951c)) - (segment (start 104.13452 160.86452) (end 106.05298 160.86452) (width 0.3) (layer "F.Cu") (net 9) (tstamp 9b779c32-8eea-43b7-a711-857ac7ebff5c)) - (segment (start 108.7675 158.15) (end 109.7225 158.15) (width 0.3) (layer "F.Cu") (net 9) (tstamp a22284ab-0384-40f8-8cd9-226cf9bafadb)) - (segment (start 109.7225 158.15) (end 109.7225 158.2625) (width 0.3) (layer "F.Cu") (net 9) (tstamp bca10256-15cd-4000-8dfb-fefa5c96eaea)) - (segment (start 124.741402 160.29) (end 127.56 157.471402) (width 0.3) (layer "F.Cu") (net 9) (tstamp ce42eb79-07be-4aa2-8ed0-ae6456667463)) - (segment (start 114.26 160.29) (end 124.741402 160.29) (width 0.3) (layer "F.Cu") (net 9) (tstamp db0287c8-4917-4632-9218-1052eaab055d)) - (segment (start 103.55 160.28) (end 104.13452 160.86452) (width 0.3) (layer "F.Cu") (net 9) (tstamp dcc475f9-932f-4368-80e8-ae594caf77b1)) - (segment (start 106.19 157.9025) (end 106.19 157.58) (width 0.3) (layer "F.Cu") (net 10) (tstamp 091e43cc-c3e3-4afe-8057-8c4dc7ae6328)) - (segment (start 106.4 156.05) (end 106.78 156.05) (width 0.3) (layer "F.Cu") (net 10) (tstamp 1dff74ec-b419-4e41-aa3e-04d43f7d763e)) - (segment (start 104.775 154.75) (end 104.11 154.75) (width 0.3) (layer "F.Cu") (net 10) (tstamp 3343f64c-5ca4-4207-8036-9f8a3b167c39)) - (segment (start 101.31 153.18) (end 101.36 153.23) (width 0.3) (layer "F.Cu") (net 10) (tstamp 3bef1f7a-0243-42e3-9078-45e954ef9cde)) - (segment (start 100.3225 152.8625) (end 100.3225 152.51) (width 0.3) (layer "F.Cu") (net 10) (tstamp 3ee73bd9-fda8-4385-8c35-853b202810cb)) - (segment (start 105.53 156.92) (end 103.615 156.92) (width 0.3) (layer "F.Cu") (net 10) (tstamp 4bbea830-0768-4ac6-8caa-3112b5e7b940)) - (segment (start 106.075 156.05) (end 104.775 154.75) (width 0.3) (layer "F.Cu") (net 10) (tstamp 51928cd3-54af-41c0-acdb-c2f9431950c3)) - (segment (start 106.19 157.58) (end 105.53 156.92) (width 0.3) (layer "F.Cu") (net 10) (tstamp 5b07872e-b27e-4988-a173-ade7c73f0525)) - (segment (start 101.62 153.23) (end 100.69 153.23) (width 0.3) (layer "F.Cu") (net 10) (tstamp 7f4aa110-46d7-4d81-baa4-2c3ec9bd5000)) - (segment (start 106.7 156.05) (end 106.075 156.05) (width 0.3) (layer "F.Cu") (net 10) (tstamp 812e253e-d1ca-49cb-abdc-059c0668ced1)) - (segment (start 104.11 154.75) (end 102.59 153.23) (width 0.3) (layer "F.Cu") (net 10) (tstamp 8fca17c9-6bc2-463d-88da-3badbc33f0cf)) - (segment (start 102.59 153.23) (end 101.62 153.23) (width 0.3) (layer "F.Cu") (net 10) (tstamp 91ee5573-c2d3-494c-8db4-f62dc873697f)) - (segment (start 101.36 153.23) (end 101.62 153.23) (width 0.3) (layer "F.Cu") (net 10) (tstamp a8aea28c-e417-4589-8240-7402f33e970f)) - (segment (start 105.53 156.92) (end 106.4 156.05) (width 0.3) (layer "F.Cu") (net 10) (tstamp be563e35-c363-494b-b934-cc67deffc33a)) - (segment (start 100.741427 150.61) (end 101.31 151.178573) (width 0.3) (layer "F.Cu") (net 10) (tstamp bfa701b4-849e-4f6c-8d1a-0d257bc85782)) - (segment (start 101.31 151.178573) (end 101.31 153.18) (width 0.3) (layer "F.Cu") (net 10) (tstamp c1ca22e6-0614-475e-b4fd-ecdb012bbcd0)) - (segment (start 100.3225 150.61) (end 100.741427 150.61) (width 0.3) (layer "F.Cu") (net 10) (tstamp c911f009-87c4-4c91-bd5a-3b0309dfe21b)) - (segment (start 100.69 153.23) (end 100.3225 152.8625) (width 0.3) (layer "F.Cu") (net 10) (tstamp ca19b3b1-baef-4b6d-ab52-cfccdddbf872)) - (segment (start 97.35 150.55) (end 98.05 149.85) (width 0.3) (layer "F.Cu") (net 11) (tstamp 03dc4619-c02f-4f36-a93f-2ada3fd9e6ae)) - (segment (start 86.27548 132.97548) (end 86.7 133.4) (width 0.3) (layer "F.Cu") (net 11) (tstamp 0bd98315-8f72-458f-a78d-18e90e7773ce)) - (segment (start 108.8 149.5) (end 110 149.5) (width 0.3) (layer "F.Cu") (net 11) (tstamp 0ef1ca04-9a93-4b12-aed6-7f87933f41b3)) - (segment (start 110.625 135.3) (end 110.6 135.325) (width 0.3) (layer "F.Cu") (net 11) (tstamp 1434ead1-6cad-4fe4-ac37-001a53412e12)) - (segment (start 80.95 147.575) (end 76.875 147.575) (width 0.3) (layer "F.Cu") (net 11) (tstamp 14bfcd91-83fd-4f2a-a8ff-c6ab2c68ffd6)) - (segment (start 94.4 150.15) (end 94.45 150.15) (width 0.3) (layer "F.Cu") (net 11) (tstamp 14ffa34e-d416-4b7f-b595-8c202f0261ac)) - (segment (start 95.025 139.5875) (end 95.025 138.175) (width 0.3) (layer "F.Cu") (net 11) (tstamp 1e58b5f3-8c9b-4bdd-bb53-aa7828ba5198)) - (segment (start 94.25 149.95) (end 94.45 150.15) (width 0.3) (layer "F.Cu") (net 11) (tstamp 25d17cf6-dc1e-4850-970c-d8f83fce3e5d)) - (segment (start 102.4575 150.59) (end 103.455 150.59) (width 0.3) (layer "F.Cu") (net 11) (tstamp 30a6fd4e-eb69-49a7-9855-4339eb51046d)) - (segment (start 94.25 149.125) (end 94.25 149.95) (width 0.3) (layer "F.Cu") (net 11) (tstamp 3603d0fb-3b5e-4b04-8bda-7e24e5da7437)) - (segment (start 103.405 148.29) (end 104.58 149.465) (width 0.3) (layer "F.Cu") (net 11) (tstamp 3c2821bf-6dc1-4070-8a95-29158c35cf2c)) - (segment (start 108.8375 135.65) (end 110.275 135.65) (width 0.3) (layer "F.Cu") (net 11) (tstamp 3c4a2239-495a-4a46-b2d6-dc31bc5c26fa)) - (segment (start 73.1 143.85) (end 73.1 138.75) (width 0.3) (layer "F.Cu") (net 11) (tstamp 3ef338c9-8d4d-4505-8425-b715490b8774)) - (segment (start 86.525 137.9) (end 89.05 137.9) (width 0.3) (layer "F.Cu") (net 11) (tstamp 419bcbc7-3d13-42f3-b700-5e798c7cecb1)) - (segment (start 89.05 137.9) (end 91.65 135.3) (width 0.3) (layer "F.Cu") (net 11) (tstamp 42df4cc1-c9d7-4175-aa97-7762ceb213d5)) - (segment (start 108.225 137.881416) (end 108.225 137.3) (width 0.3) (layer "F.Cu") (net 11) (tstamp 4511acdb-d9e9-4585-9b5c-678a5acd9596)) - (segment (start 105.665 150.55) (end 106.78 150.55) (width 0.3) (layer "F.Cu") (net 11) (tstamp 56a776f8-148b-473a-851d-f1ac7e6b3eea)) - (segment (start 104.58 149.465) (end 105.665 150.55) (width 0.3) (layer "F.Cu") (net 11) (tstamp 58b3efcc-b4fa-4c1f-be1c-7cf7f08a609f)) - (segment (start 86.7 133.4) (end 86.7 135.6875) (width 0.3) (layer "F.Cu") (net 11) (tstamp 5a1a8898-dd1d-4959-adca-935ed0f65b25)) - (segment (start 103.405 147.71) (end 103.405 148.29) (width 0.3) (layer "F.Cu") (net 11) (tstamp 5f69c962-8010-4fc8-a058-0969f2c52e4c)) - (segment (start 98.835 133.995) (end 103.939511 139.099511) (width 0.3) (layer "F.Cu") (net 11) (tstamp 60c6d961-7185-4558-8fbf-00529dd9373b)) - (segment (start 76.875 147.575) (end 76.85 147.6) (width 0.3) (layer "F.Cu") (net 11) (tstamp 623d9edb-07d3-4b25-bd88-d2f1f4328c8a)) - (segment (start 108.225 136.2625) (end 108.8375 135.65) (width 0.3) (layer "F.Cu") (net 11) (tstamp 66016de3-2f79-4cc1-a1e3-214d3590d03b)) - (segment (start 103.455 150.59) (end 104.58 149.465) (width 0.3) (layer "F.Cu") (net 11) (tstamp 685be168-f47b-4703-ad07-d65f6f71de8e)) - (segment (start 110.275 135.65) (end 110.6 135.325) (width 0.3) (layer "F.Cu") (net 11) (tstamp 6abc278a-7cdf-4a33-9881-a391c5444cf4)) - (segment (start 115.89 135.3) (end 110.625 135.3) (width 0.3) (layer "F.Cu") (net 11) (tstamp 7416dd80-3cd3-4255-a0ea-8b5c3d851557)) - (segment (start 106.78 150.55) (end 106.79 150.56) (width 0.3) (layer "F.Cu") (net 11) (tstamp 774732ba-e733-4260-bf98-e366d53d63b9)) - (segment (start 95.025 138.175) (end 97.1 136.1) (width 0.3) (layer "F.Cu") (net 11) (tstamp 7fea43e6-654f-4649-8733-3adf864083f6)) - (segment (start 103.939511 139.099511) (end 107.006905 139.099511) (width 0.3) (layer "F.Cu") (net 11) (tstamp 80b56359-2153-4dda-a86d-b03bcbcddd6e)) - (segment (start 94.85 150.55) (end 97.35 150.55) (width 0.3) (layer "F.Cu") (net 11) (tstamp 82399d6f-ebda-42fb-a483-b914fcfa4500)) - (segment (start 118.29 137.7) (end 115.89 135.3) (width 0.3) (layer "F.Cu") (net 11) (tstamp 8bf6a5df-796d-40e1-b440-821d04cc52ec)) - (segment (start 94 150.55) (end 94.4 150.15) (width 0.3) (layer "F.Cu") (net 11) (tstamp 8fbe468f-3599-413f-872b-2ce19602dd86)) - (segment (start 78.87452 132.97548) (end 86.27548 132.97548) (width 0.3) (layer "F.Cu") (net 11) (tstamp 9132c7b0-a174-44d0-81c2-0daa86bf2680)) - (segment (start 106.85 148.825) (end 106.85 150.5) (width 0.3) (layer "F.Cu") (net 11) (tstamp 966e35c2-212d-4851-84d4-785fe47a3762)) - (segment (start 102.4575 150.4575) (end 101.15 149.15) (width 0.3) (layer "F.Cu") (net 11) (tstamp 9c82de2a-4527-4764-ba0a-9dbaf00d90dd)) - (segment (start 73.1 138.75) (end 78.87452 132.97548) (width 0.3) (layer "F.Cu") (net 11) (tstamp 9ee1e9bf-ff2a-4847-956f-453c22e9e4fb)) - (segment (start 94.45 150.15) (end 94.85 150.55) (width 0.3) (layer "F.Cu") (net 11) (tstamp a2257db5-c60d-4995-b2c2-5631da7731d7)) - (segment (start 110 149.5) (end 113.625 145.875) (width 0.3) (layer "F.Cu") (net 11) (tstamp c23f1195-293e-4478-99ed-6db65ca552e0)) - (segment (start 108.8 149.5) (end 107.85 149.5) (width 0.3) (layer "F.Cu") (net 11) (tstamp c3e3fc16-534f-458f-90b6-7548da4fa10d)) - (segment (start 108.225 137.3) (end 108.225 136.2625) (width 0.3) (layer "F.Cu") (net 11) (tstamp c9390fa8-d0cf-4458-8340-fedaed89eed5)) - (segment (start 86.45 137.825) (end 86.525 137.9) (width 0.3) (layer "F.Cu") (net 11) (tstamp cc6802d7-29be-41f1-b8ff-7516dfb82166)) - (segment (start 86.7 135.6875) (end 86.45 135.9375) (width 0.3) (layer "F.Cu") (net 11) (tstamp d785f74a-5a80-44f1-9775-0b57842a83b8)) - (segment (start 102.4575 150.59) (end 102.4575 150.4575) (width 0.3) (layer "F.Cu") (net 11) (tstamp d93f692c-5253-4762-a4de-eb78ea3ff83c)) - (segment (start 106.85 150.5) (end 106.79 150.56) (width 0.3) (layer "F.Cu") (net 11) (tstamp dfda3c11-0f1e-4187-a169-8de713a5be36)) - (segment (start 107.85 149.5) (end 106.79 150.56) (width 0.3) (layer "F.Cu") (net 11) (tstamp e18a3ea4-d635-4ddd-89ef-87b14a795897)) - (segment (start 97.1 136.1) (end 97.1 135.73) (width 0.3) (layer "F.Cu") (net 11) (tstamp e9d0ffb6-faed-405e-a159-5035e3e01353)) - (segment (start 86.45 135.9375) (end 86.45 137.825) (width 0.3) (layer "F.Cu") (net 11) (tstamp e9e10a10-3e55-4414-b7ba-863bffa0df27)) - (segment (start 76.85 147.6) (end 73.1 143.85) (width 0.3) (layer "F.Cu") (net 11) (tstamp eb3d965b-ad41-450c-bfb5-234a28655231)) - (segment (start 98.05 149.85) (end 98.05 149.2125) (width 0.3) (layer "F.Cu") (net 11) (tstamp eb77a0c9-44d5-4f84-9554-e6c3ac0e2c28)) - (segment (start 113.625 145.875) (end 115.2 145.875) (width 0.3) (layer "F.Cu") (net 11) (tstamp ed29a612-6778-4599-97ce-6d72a467b0b7)) - (segment (start 97.1 135.73) (end 98.835 133.995) (width 0.3) (layer "F.Cu") (net 11) (tstamp f5ce3c81-75f4-47ed-ac11-104341eddd9d)) - (segment (start 107.006905 139.099511) (end 108.225 137.881416) (width 0.3) (layer "F.Cu") (net 11) (tstamp feb9e115-786a-4ae7-973b-faac11abc298)) - (via (at 91.65 135.3) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 11) (tstamp 457a3908-a26f-48a0-a36d-811af88bbe4f)) - (via (at 101.15 149.15) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 11) (tstamp 7839ba7b-4391-4d7b-aa49-af5c81aea66e)) - (via (at 94 150.55) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 11) (tstamp a4791353-7505-4e74-9cd4-64141948c143)) - (segment (start 88.4 135.3) (end 91.65 135.3) (width 0.3) (layer "B.Cu") (net 11) (tstamp 1126aa0e-a295-4898-a1d6-6ef4b412163b)) - (segment (start 75.2 145.75) (end 79 141.95) (width 0.3) (layer "B.Cu") (net 11) (tstamp 130289e7-0df8-4a60-9e83-04222bd607b1)) - (segment (start 77.9 156.7) (end 75.2 154) (width 0.3) (layer "B.Cu") (net 11) (tstamp 174c17b3-92bc-4302-b85c-6399097ccae7)) - (segment (start 94.05 152.35) (end 89.7 156.7) (width 0.3) (layer "B.Cu") (net 11) (tstamp 1b0c29a9-1531-4c79-826a-0e947ae6c280)) - (segment (start 79 141.95) (end 81.75 141.95) (width 0.3) (layer "B.Cu") (net 11) (tstamp 260fea2a-01e3-4e69-873e-d127ffa0c5e7)) - (segment (start 81.75 141.95) (end 88.4 135.3) (width 0.3) (layer "B.Cu") (net 11) (tstamp 51c6ce72-250b-4802-ae56-1be8d0f0c632)) - (segment (start 94.05 152.35) (end 94.05 150.6) (width 0.3) (layer "B.Cu") (net 11) (tstamp 52aad331-41dd-4fc5-85ca-43ed1bc199ab)) - (segment (start 99.8 149.15) (end 95.85 153.1) (width 0.3) (layer "B.Cu") (net 11) (tstamp 54eeeeb6-6d55-466e-acbf-57f24fd4861a)) - (segment (start 97.53 135.3) (end 98.835 133.995) (width 0.3) (layer "B.Cu") (net 11) (tstamp 73646bca-2f2d-408b-bb36-c9c4f985dc0c)) - (segment (start 89.7 156.7) (end 77.9 156.7) (width 0.3) (layer "B.Cu") (net 11) (tstamp 78cd4942-b441-41f0-a474-c64503344354)) - (segment (start 91.2 147.75) (end 91.2 145.86) (width 0.3) (layer "B.Cu") (net 11) (tstamp 7ed2443a-d74e-4c16-9eee-59b9193a966f)) - (segment (start 94.05 150.6) (end 94 150.55) (width 0.3) (layer "B.Cu") (net 11) (tstamp 9c8e5a8e-d825-4637-a357-f51aa087fcb3)) - (segment (start 95.85 153.1) (end 94.8 153.1) (width 0.3) (layer "B.Cu") (net 11) (tstamp 9dacd6eb-de6a-4d25-b9a4-7594fa54cc34)) - (segment (start 94.8 153.1) (end 94.05 152.35) (width 0.3) (layer "B.Cu") (net 11) (tstamp a1bcfee2-7ae2-46f6-a661-679f2148c3f5)) - (segment (start 101.15 149.15) (end 99.8 149.15) (width 0.3) (layer "B.Cu") (net 11) (tstamp c52ce128-4d59-4b38-8c1d-c21067e9be45)) - (segment (start 94 150.55) (end 91.2 147.75) (width 0.3) (layer "B.Cu") (net 11) (tstamp c94ec9cc-03a4-4fed-b674-0c0c4baf7838)) - (segment (start 75.2 154) (end 75.2 145.75) (width 0.3) (layer "B.Cu") (net 11) (tstamp dda5ed33-705a-44dd-a041-e7d7e81df129)) - (segment (start 91.65 135.3) (end 97.53 135.3) (width 0.3) (layer "B.Cu") (net 11) (tstamp ec75ba3b-b61f-4b6a-ae45-cb97a95397fc)) - (segment (start 76.755 152.05) (end 78.605 150.2) (width 0.3) (layer "F.Cu") (net 12) (tstamp 569eec56-192f-4f3d-85de-66112d72b628)) - (segment (start 78.605 150.2) (end 83.725 150.2) (width 0.3) (layer "F.Cu") (net 12) (tstamp ad72899c-b533-46a1-8239-65f328306fb3)) - (segment (start 83.725 150.2) (end 85.125 148.8) (width 0.3) (layer "F.Cu") (net 12) (tstamp adba39dc-c36c-4911-96fa-820a8d5661e5)) - (segment (start 99.2 146.2375) (end 99.2 149.466155) (width 0.3) (layer "F.Cu") (net 13) (tstamp 01d76e0a-8f18-4771-971c-3ab238cd03bb)) - (segment (start 98.275 145.3125) (end 99.2 146.2375) (width 0.3) (layer "F.Cu") (net 13) (tstamp 1f70bac1-810f-4dce-938f-c03a139ad31d)) - (segment (start 99.2 149.466155) (end 97.316155 151.35) (width 0.3) (layer "F.Cu") (net 13) (tstamp 5b416057-6327-4ce3-ba7c-adfaa70c12c7)) - (segment (start 88.075 148.8) (end 88.075 148.05) (width 0.3) (layer "F.Cu") (net 13) (tstamp 71220686-f1bf-4f6a-800f-8c1aba5505b0)) - (segment (start 97.316155 151.35) (end 93.05 151.35) (width 0.3) (layer "F.Cu") (net 13) (tstamp c5314694-0e70-4dfd-be2e-ad32962e4c58)) - (segment (start 88.075 153.625) (end 88.05 153.65) (width 0.3) (layer "F.Cu") (net 13) (tstamp dfbce6be-e854-4bed-9dba-93b478e79ec4)) - (segment (start 88.075 150.125) (end 88.075 148.8) (width 0.3) (layer "F.Cu") (net 13) (tstamp eb254564-4938-4190-b17a-0d6bb4e083c5)) - (segment (start 88.075 151.35) (end 88.075 150.125) (width 0.3) (layer "F.Cu") (net 13) (tstamp f226b9e4-0897-4361-9435-6254bb6f73a3)) - (segment (start 88.075 151.35) (end 88.075 153.625) (width 0.3) (layer "F.Cu") (net 13) (tstamp f98fd75f-1edb-4cc5-b260-d7cf7f86e870)) - (segment (start 88.075 148.05) (end 86.625 146.6) (width 0.3) (layer "F.Cu") (net 13) (tstamp fe64fa6d-0f4c-456d-8e7f-20a0f785c216)) - (via (at 88.05 153.65) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 13) (tstamp cb8a3168-eae2-43f5-bbb5-c053176ff684)) - (via (at 93.05 151.35) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 13) (tstamp e2aea518-b87e-4161-99ae-6d86ae3d4c47)) - (segment (start 90.75 153.65) (end 88.05 153.65) (width 0.3) (layer "B.Cu") (net 13) (tstamp a040464c-9091-4b23-81ec-c5dbd6e0c64d)) - (segment (start 93.05 151.35) (end 90.75 153.65) (width 0.3) (layer "B.Cu") (net 13) (tstamp f2a83a79-6264-49d8-a044-58063d639201)) - (segment (start 84.425 152.05) (end 85.125 151.35) (width 0.3) (layer "F.Cu") (net 14) (tstamp 327e0d7b-8172-4110-8962-c59e963cc266)) - (segment (start 80.755 152.05) (end 84.425 152.05) (width 0.3) (layer "F.Cu") (net 14) (tstamp ad9991f2-6e72-4dbd-8538-f01878f99d5b)) - (segment (start 91.04261 140.700974) (end 89.45 142.293584) (width 0.3) (layer "F.Cu") (net 15) (tstamp 02aec209-6796-4df5-b002-a83397ab1927)) - (segment (start 89.45 142.293584) (end 89.45 152.05) (width 0.3) (layer "F.Cu") (net 15) (tstamp 03f074db-5d52-4b86-be02-523bbc7c2102)) - (segment (start 89.45 152.05) (end 96.57 159.17) (width 0.3) (layer "F.Cu") (net 15) (tstamp 46c37f55-2fae-4b6b-bb18-ab05a0a7a271)) - (segment (start 93.075 139.5875) (end 93.075 137.625) (width 0.3) (layer "F.Cu") (net 15) (tstamp 4c8d1903-be0c-43de-8021-ed2bc6a0f612)) - (segment (start 93.075 140.310717) (end 92.684743 140.700974) (width 0.3) (layer "F.Cu") (net 15) (tstamp 4ede9511-3499-4d1e-a96c-3745952d5781)) - (segment (start 92.684743 140.700974) (end 91.04261 140.700974) (width 0.3) (layer "F.Cu") (net 15) (tstamp 9c62bac0-c5e4-440b-a301-7317d33a1fbf)) - (segment (start 93.075 139.5875) (end 93.075 140.310717) (width 0.3) (layer "F.Cu") (net 15) (tstamp 9e7471e3-9f2f-4b48-b263-a8b0686b3542)) - (segment (start 93.075 137.625) (end 92.9 137.45) (width 0.3) (layer "F.Cu") (net 15) (tstamp fe3739f5-0fff-4815-a3a9-9579e945788e)) - (via (at 92.9 137.45) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (free) (net 15) (tstamp aa714015-2b5e-4025-b411-18150b578d59)) - (segment (start 118.1 139.7) (end 121.8 139.7) (width 0.3) (layer "B.Cu") (net 15) (tstamp 03fcd901-5c98-4035-a591-17ad4ba852bf)) - (segment (start 123.37 138.13) (end 123.37 137.7) (width 0.3) (layer "B.Cu") (net 15) (tstamp 4c059d7e-c3b2-4945-8052-dda43aa6541c)) - (segment (start 92.9 137.45) (end 115.85 137.45) (width 0.3) (layer "B.Cu") (net 15) (tstamp 6626285d-c799-44d8-abce-c5edd3256265)) - (segment (start 121.8 139.7) (end 123.37 138.13) (width 0.3) (layer "B.Cu") (net 15) (tstamp 6cf283b5-983e-4014-b5cb-93318b3029bc)) - (segment (start 115.85 137.45) (end 118.1 139.7) (width 0.3) (layer "B.Cu") (net 15) (tstamp c1322407-c1b5-4653-a411-74b5d0092a21)) - (segment (start 98.1 158.825) (end 98.1 159.04) (width 0.3) (layer "F.Cu") (net 16) (tstamp 36647cdc-91e4-4cb5-b11c-084286092dcd)) - (segment (start 98.1 159.04) (end 96.57 160.57) (width 0.3) (layer "F.Cu") (net 16) (tstamp 63d07338-f3a9-4871-93c4-8982d8d96a2f)) - (segment (start 98.06 158.825) (end 99.5375 158.825) (width 0.3) (layer "F.Cu") (net 16) (tstamp af9644b1-d9af-4a30-8c5a-23d3fb410d40)) - (segment (start 99.5375 158.825) (end 99.8825 158.48) (width 0.3) (layer "F.Cu") (net 16) (tstamp e937392d-ae7b-4f1c-8d89-082abf856845)) - (segment (start 113.606416 144.9) (end 115.8 144.9) (width 0.3) (layer "F.Cu") (net 17) (tstamp 5cf6ad79-c1a0-4617-93d6-7ffe4debe0eb)) - (segment (start 110.525 147.3) (end 111.206416 147.3) (width 0.3) (layer "F.Cu") (net 17) (tstamp 5e4bde49-0171-4c4b-b57b-a7a43e570552)) - (segment (start 111.206416 147.3) (end 113.606416 144.9) (width 0.3) (layer "F.Cu") (net 17) (tstamp 70675a35-4387-4173-839b-3b48f37b1a6c)) - (segment (start 115.8 144.9) (end 116.4 145.5) (width 0.3) (layer "F.Cu") (net 17) (tstamp 71521d47-d3a3-467c-b9fc-ee021a2aa1a9)) - (segment (start 119.441502 150.3) (end 126.7425 150.3) (width 0.3) (layer "F.Cu") (net 17) (tstamp 9cc82dc6-f0dd-4b37-b901-d7cd3067e779)) - (segment (start 116.4 145.5) (end 116.4 147.258498) (width 0.3) (layer "F.Cu") (net 17) (tstamp cd904642-e0f6-4f4b-8373-f3f8d891019d)) - (segment (start 116.4 147.258498) (end 119.441502 150.3) (width 0.3) (layer "F.Cu") (net 17) (tstamp e1a67e08-d716-4090-9d77-2988065f85b5)) - (segment (start 112.325 152.7) (end 113.22 152.7) (width 0.3) (layer "F.Cu") (net 18) (tstamp 42d3893c-1f32-4beb-89fd-268da26c518e)) - (segment (start 113.22 152.7) (end 113.56 152.36) (width 0.3) (layer "F.Cu") (net 18) (tstamp 509afc4c-81df-4656-af23-7210dba371dc)) - (segment (start 128.3175 151.94) (end 127.4075 152.85) (width 0.3) (layer "F.Cu") (net 18) (tstamp 70ce0e8a-d5f5-40db-8e8a-63bec524e453)) - (segment (start 125.34 151.816155) (end 125.34 151.6995) (width 0.3) (layer "F.Cu") (net 18) (tstamp 808765ca-5cf6-4f6d-932f-47539a356247)) - (segment (start 126.373845 152.85) (end 125.34 151.816155) (width 0.3) (layer "F.Cu") (net 18) (tstamp 8dc913ef-3869-46db-a0f6-cb2f219eef5d)) - (segment (start 127.4075 152.85) (end 126.373845 152.85) (width 0.3) (layer "F.Cu") (net 18) (tstamp a1a718ab-b490-4940-9f2d-a9f3c0f8da23)) - (via (at 113.56 152.36) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 18) (tstamp 0c87e884-a22d-4e83-acb7-8a64f24b9e51)) - (via (at 125.34 151.6995) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 18) (tstamp 9ede3a09-be8d-48ce-8cc6-c17083f825f0)) - (segment (start 113.56 152.36) (end 124.6795 152.36) (width 0.3) (layer "B.Cu") (net 18) (tstamp 2a691223-e2e3-4d08-9368-119b7b393834)) - (segment (start 124.6795 152.36) (end 125.34 151.6995) (width 0.3) (layer "B.Cu") (net 18) (tstamp b5e3dceb-b9f5-4306-88a0-1be43f1fba87)) - (segment (start 103.55 158.455) (end 103.9175 158.455) (width 0.3) (layer "F.Cu") (net 19) (tstamp 047ad835-c24f-4b94-8c87-da79f6183cc4)) - (segment (start 101.7575 159.43) (end 101.7575 159.2425) (width 0.3) (layer "F.Cu") (net 19) (tstamp 12b6f06d-1535-4954-b697-a70e4b0c0ade)) - (segment (start 98.11 157.49) (end 100.93 157.49) (width 0.3) (layer "F.Cu") (net 19) (tstamp 237d3bb8-118d-45d2-93d0-57eb5ac8701a)) - (segment (start 101.7575 159.2425) (end 102.22 158.78) (width 0.3) (layer "F.Cu") (net 19) (tstamp 4f99bebe-74f2-4bec-8716-b0cc27fc4b1b)) - (segment (start 102.545 158.455) (end 103.55 158.455) (width 0.3) (layer "F.Cu") (net 19) (tstamp 562e0b92-6dea-4c50-a926-28b73dd99205)) - (segment (start 100.93 157.49) (end 102.22 158.78) (width 0.3) (layer "F.Cu") (net 19) (tstamp 7f7bdd35-81c9-4583-8125-34932fcb23bb)) - (segment (start 103.9175 158.455) (end 105.24 159.7775) (width 0.3) (layer "F.Cu") (net 19) (tstamp aec76fa7-ca3b-4002-827b-890c008964e6)) - (segment (start 102.22 158.78) (end 102.545 158.455) (width 0.3) (layer "F.Cu") (net 19) (tstamp c9871f6b-9c72-4b75-a42a-a5b6334526f5)) - (segment (start 109.8 138.85) (end 107.25 141.4) (width 0.3) (layer "F.Cu") (net 20) (tstamp 06fb6b00-cdd2-44b6-b0b2-b4b261c40b70)) - (segment (start 98.15 155.15) (end 95.2 152.2) (width 0.3) (layer "F.Cu") (net 20) (tstamp 16a06cac-74c6-4f9a-b55f-2c4992f652dd)) - (segment (start 118.85 139.65) (end 117.55 139.65) (width 0.3) (layer "F.Cu") (net 20) (tstamp 1e3d8a78-5827-4196-89c8-6018bb2a23ed)) - (segment (start 95.2 152.2) (end 95.2 152.15) (width 0.3) (layer "F.Cu") (net 20) (tstamp 2328e952-1372-425b-b4a1-16187ecbe41d)) - (segment (start 117.55 139.65) (end 116.75 138.85) (width 0.3) (layer "F.Cu") (net 20) (tstamp 32d8aca7-60c1-4dc9-ac0b-5224a2519778)) - (segment (start 98.01 156.09) (end 96.6 157.5) (width 0.3) (layer "F.Cu") (net 20) (tstamp 67e843fb-e836-4583-ab27-45c55fb1eabd)) - (segment (start 119.7 134.15) (end 119.7 135.45) (width 0.3) (layer "F.Cu") (net 20) (tstamp 7ff6226e-ba10-439c-930b-62c97fef4221)) - (segment (start 119.55 138.95) (end 118.85 139.65) (width 0.3) (layer "F.Cu") (net 20) (tstamp af5158ca-c153-4faf-a129-efd2d9e1c7aa)) - (segment (start 98.11 156.09) (end 98.01 156.09) (width 0.3) (layer "F.Cu") (net 20) (tstamp b8488f32-8b56-4665-839c-b39a83e1a83e)) - (segment (start 116.75 138.85) (end 109.8 138.85) (width 0.3) (layer "F.Cu") (net 20) (tstamp baba19b2-6043-4ace-a39e-2cd30a221c1c)) - (segment (start 119.7 135.45) (end 119.55 135.6) (width 0.3) (layer "F.Cu") (net 20) (tstamp bcbe294e-4110-4ea3-9373-ee35c2fd2320)) - (segment (start 119.55 135.6) (end 119.55 138.95) (width 0.3) (layer "F.Cu") (net 20) (tstamp c3077fbd-31a6-449c-955a-5c3f9fde00ed)) - (segment (start 98.11 156.09) (end 98.15 156.05) (width 0.3) (layer "F.Cu") (net 20) (tstamp e145ea3a-eece-4796-9740-e4b7a00c5f8f)) - (segment (start 98.15 156.05) (end 98.15 155.15) (width 0.3) (layer "F.Cu") (net 20) (tstamp f8e8d4dd-ae2a-42e9-b003-00b2a30936ea)) - (via (at 95.2 152.15) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 20) (tstamp b4e91820-df84-478b-8729-cf853724bf80)) - (via (at 107.25 141.4) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 20) (tstamp f1abaf82-fbac-4741-9e93-be5f027ca143)) - (segment (start 96.35 141.4) (end 95.15 142.6) (width 0.3) (layer "B.Cu") (net 20) (tstamp 40eaa045-7fe9-4c2d-a33f-f8bc2a7d8643)) - (segment (start 95.15 142.6) (end 95.15 152.15) (width 0.3) (layer "B.Cu") (net 20) (tstamp a95bc5fd-bf57-45d4-8054-97d2525b4dbb)) - (segment (start 107.25 141.4) (end 96.35 141.4) (width 0.3) (layer "B.Cu") (net 20) (tstamp b294fc15-9ff9-47af-895b-16b3082ab0c1)) - (segment (start 96.325 140.310717) (end 95.435232 141.200485) (width 0.3) (layer "F.Cu") (net 21) (tstamp 73820963-50d3-4f31-acbb-b24040d5c6cd)) - (segment (start 95.435232 141.200485) (end 91.249515 141.200485) (width 0.3) (layer "F.Cu") (net 21) (tstamp 757f8ba4-c4a6-4e02-b9bc-ffc892c44938)) - (segment (start 91.249515 141.200485) (end 90 142.45) (width 0.3) (layer "F.Cu") (net 21) (tstamp 81dcdc85-f3fe-4c57-8490-e0a471d28ddd)) - (segment (start 96.55 156.1) (end 96.6 156.1) (width 0.3) (layer "F.Cu") (net 21) (tstamp 8c1ec7a4-e5d5-4272-aeaa-1b67708de40a)) - (segment (start 90 142.45) (end 90 149.55) (width 0.3) (layer "F.Cu") (net 21) (tstamp a1c63358-9ac7-456e-b053-56d5c96ee1ca)) - (segment (start 90 149.55) (end 96.55 156.1) (width 0.3) (layer "F.Cu") (net 21) (tstamp fe3f7a85-d14e-4e76-917f-80451b0b02cf)) - (segment (start 96.325 139.5875) (end 96.325 140.310717) (width 0.3) (layer "F.Cu") (net 21) (tstamp ff8c8642-cf7c-4a4d-a893-b16f7e894db2)) - (segment (start 128.3875 147.025) (end 128.85 147.025) (width 0.3) (layer "F.Cu") (net 22) (tstamp 7338b5f3-afa6-48d6-9507-af0045d6880e)) - (segment (start 126.7625 148.65) (end 128.3875 147.025) (width 0.3) (layer "F.Cu") (net 22) (tstamp ebd3fbea-f6ce-4598-a1c7-e964595c775b)) - (segment (start 121.152606 151.843584) (end 120.55 151.843584) (width 0.3) (layer "F.Cu") (net 23) (tstamp 4c16cf67-a829-4d76-81d4-c24b11774705)) - (segment (start 120.249999 151.843584) (end 120.55 151.843584) (width 0.3) (layer "F.Cu") (net 23) (tstamp 4cf6bd47-c078-4346-a3d6-652843f16d67)) - (segment (start 116.925 149.3) (end 117.706415 149.3) (width 0.3) (layer "F.Cu") (net 23) (tstamp 5e2b2b1a-5095-41a7-ae90-19fde141eb0f)) - (segment (start 121.55 153.315) (end 121.55 152.240978) (width 0.3) (layer "F.Cu") (net 23) (tstamp 7e6f9875-b136-4e45-833e-6e56729cb686)) - (segment (start 120.55 151.843584) (end 120.55 153.315) (width 0.3) (layer "F.Cu") (net 23) (tstamp 95e1ab38-4357-4a58-aaee-533dc853a390)) - (segment (start 117.706415 149.3) (end 120.249999 151.843584) (width 0.3) (layer "F.Cu") (net 23) (tstamp c4323125-9eeb-4662-b8b1-26017eb59259)) - (segment (start 121.55 152.240978) (end 121.152606 151.843584) (width 0.3) (layer "F.Cu") (net 23) (tstamp f2ff4ac0-534f-45c6-8a68-e1492975df76)) - (segment (start 120.05 153.315) (end 120.05 152.440978) (width 0.3) (layer "F.Cu") (net 26) (tstamp 4ed556cd-80cf-47a5-bc03-8d5b619c9751)) - (segment (start 120.7 154.7) (end 120.3 154.7) (width 0.3) (layer "F.Cu") (net 26) (tstamp 5c5c796d-b6c7-4a3f-9f7c-46bfebf9470b)) - (segment (start 120.3 154.7) (end 120.05 154.45) (width 0.3) (layer "F.Cu") (net 26) (tstamp 871d94f7-90a3-4d18-8e28-532a07f0f3ec)) - (segment (start 121.05 153.315) (end 121.05 154.35) (width 0.3) (layer "F.Cu") (net 26) (tstamp 9e95a377-51b8-431f-99ea-f0f767f0b3fc)) - (segment (start 121.05 154.35) (end 120.7 154.7) (width 0.3) (layer "F.Cu") (net 26) (tstamp c175744d-84d9-4cbb-b366-d838929cfa72)) - (segment (start 120.05 154.45) (end 120.05 153.315) (width 0.3) (layer "F.Cu") (net 26) (tstamp d305afa5-787f-4d19-9297-5c27d708a515)) - (segment (start 118.509022 150.9) (end 116.925 150.9) (width 0.3) (layer "F.Cu") (net 26) (tstamp d4742987-a657-49c9-9854-0645016da56c)) - (segment (start 120.05 152.440978) (end 118.509022 150.9) (width 0.3) (layer "F.Cu") (net 26) (tstamp dbfff730-f053-44df-9e7a-e40160e16cc8)) - (segment (start 80.95 149.225) (end 82.175 149.225) (width 0.3) (layer "F.Cu") (net 30) (tstamp 4d242e54-2873-4b8a-a37d-86b2fef53770)) - (segment (start 82.175 149.225) (end 82.4 149.45) (width 0.3) (layer "F.Cu") (net 30) (tstamp c4085b92-55f1-4412-9a4c-ba972e45a9c9)) - (segment (start 93.725 144.10329) (end 94.309907 143.518383) (width 0.3) (layer "F.Cu") (net 30) (tstamp e80b252b-8fbe-4296-8baa-a17ba0bbccf5)) - (segment (start 93.725 145.3125) (end 93.725 144.10329) (width 0.3) (layer "F.Cu") (net 30) (tstamp eb6b767e-154e-46e9-9053-2d364f28b67f)) - (via (at 82.4 149.45) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 30) (tstamp 4f35b4f6-e51f-49fb-a576-8e518cc29804)) - (via (at 94.309907 143.518383) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (free) (net 30) (tstamp f07a4833-d64c-4f88-9a63-2b26dcabfaee)) - (segment (start 82.4 147.35) (end 86.35 143.4) (width 0.3) (layer "B.Cu") (net 30) (tstamp 15267add-e490-4a1f-856b-7db42b947033)) - (segment (start 94.02829 143.8) (end 94.309907 143.518383) (width 0.3) (layer "B.Cu") (net 30) (tstamp 27a29931-11eb-4d45-94c5-e37980410816)) - (segment (start 82.4 150.405) (end 82.4 149.45) (width 0.3) (layer "B.Cu") (net 30) (tstamp 31103dfa-76ff-4761-8dcd-eddece3e2bd1)) - (segment (start 80.755 152.05) (end 82.4 150.405) (width 0.3) (layer "B.Cu") (net 30) (tstamp 3a1e5409-ef10-417c-8bd9-9d753baf5752)) - (segment (start 92.5 143.4) (end 92.9 143.8) (width 0.3) (layer "B.Cu") (net 30) (tstamp 3ba8ca99-fc2d-4feb-96e5-efbf1cb3840e)) - (segment (start 82.4 149.45) (end 82.4 147.35) (width 0.3) (layer "B.Cu") (net 30) (tstamp 4a188914-fa13-4c81-a5ff-f9c6cbead594)) - (segment (start 86.35 143.4) (end 92.5 143.4) (width 0.3) (layer "B.Cu") (net 30) (tstamp 56a970fa-e0ce-49cb-a2de-12eef8133fe5)) - (segment (start 92.9 143.8) (end 94.02829 143.8) (width 0.3) (layer "B.Cu") (net 30) (tstamp d3105749-2ac4-415a-9bcc-489e693875c5)) - (segment (start 76.85 149.25) (end 77.55 149.25) (width 0.3) (layer "F.Cu") (net 31) (tstamp 50f099de-5d42-4cac-ba59-55dbe7d48e79)) - (segment (start 77.55 149.25) (end 78.05 149.75) (width 0.3) (layer "F.Cu") (net 31) (tstamp a57025f5-5f40-49b9-a268-10b07aad9400)) - (segment (start 93.075 142.975) (end 93.15 142.9) (width 0.3) (layer "F.Cu") (net 31) (tstamp bf65df41-c463-46a2-96d7-03f44aa23663)) - (segment (start 93.075 145.3125) (end 93.075 142.975) (width 0.3) (layer "F.Cu") (net 31) (tstamp d5621934-fcd8-4bce-8c80-00509ed9d2d5)) - (via (at 93.15 142.9) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (free) (net 31) (tstamp 101eaf97-1b0a-4f67-89b0-8cb533c6bcd0)) - (via (at 78.05 149.75) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (free) (net 31) (tstamp 2b671a5b-c639-4d97-8fe9-ebf349c6496c)) - (segment (start 93.15 142.9) (end 81.955978 142.9) (width 0.3) (layer "B.Cu") (net 31) (tstamp 0d0526ec-f5ac-4258-a068-9756491e05a0)) - (segment (start 78.1 149.8) (end 78.05 149.75) (width 0.3) (layer "B.Cu") (net 31) (tstamp 5d9e113f-8641-4c2d-8f67-127218322d06)) - (segment (start 78.005479 146.850499) (end 78.005479 149.705479) (width 0.3) (layer "B.Cu") (net 31) (tstamp 63ee2f0d-5346-46dc-8f00-05bf2eb2a468)) - (segment (start 78.1 150.705) (end 78.1 149.8) (width 0.3) (layer "B.Cu") (net 31) (tstamp b539d960-c5ab-42eb-97a0-7245d89d9298)) - (segment (start 78.005479 149.705479) (end 78.05 149.75) (width 0.3) (layer "B.Cu") (net 31) (tstamp c6a9a228-ee7e-487b-8e62-5cee9fea0f19)) - (segment (start 76.755 152.05) (end 78.1 150.705) (width 0.3) (layer "B.Cu") (net 31) (tstamp e66ae210-4797-4d34-805a-9546f5c364a9)) - (segment (start 81.955978 142.9) (end 78.005479 146.850499) (width 0.3) (layer "B.Cu") (net 31) (tstamp f57d0bd9-4400-4f8f-99f2-e5eca78ec54d)) - (segment (start 95.589283 146.6) (end 95.025 146.035717) (width 0.3) (layer "F.Cu") (net 33) (tstamp 1b3d7295-75a4-416b-9d35-243c8e3aff0d)) - (segment (start 97.25 146.6) (end 97.7375 147.0875) (width 0.3) (layer "F.Cu") (net 33) (tstamp 4f0cb3db-9f24-43cd-b622-2d6012fe3c60)) - (segment (start 97.7375 147.0875) (end 98.05 147.0875) (width 0.3) (layer "F.Cu") (net 33) (tstamp b12883ea-6100-4ae4-ae84-b2b50d46f24d)) - (segment (start 95.025 146.035717) (end 95.025 145.3125) (width 0.3) (layer "F.Cu") (net 33) (tstamp e3a0e9e0-7d04-4226-8e1e-d6698dac56c6)) - (segment (start 97.25 146.6) (end 95.589283 146.6) (width 0.3) (layer "F.Cu") (net 33) (tstamp e6f9bf2d-8092-4b69-a772-d30385d39354)) - (segment (start 86.625 143.8625) (end 87.1375 143.35) (width 0.3) (layer "F.Cu") (net 34) (tstamp 175adcd1-fdd9-44d7-acce-0fb9466cf415)) - (segment (start 86.625 145) (end 86.625 143.8625) (width 0.3) (layer "F.Cu") (net 34) (tstamp 2626c83f-9103-4336-bf91-cd1ff9cfbc20)) - (segment (start 85.025 146.6) (end 86.625 145) (width 0.3) (layer "F.Cu") (net 34) (tstamp 74177cbf-1da5-4ac8-bcde-3e5c3eac6db4)) - (segment (start 84.975 146.6) (end 85.025 146.6) (width 0.3) (layer "F.Cu") (net 34) (tstamp 8d502617-6466-460e-b2a8-3b6b91dc8a06)) - (segment (start 84.875 139.5) (end 84.975 139.6) (width 0.3) (layer "F.Cu") (net 35) (tstamp 3d1134d0-6c97-4810-8ed8-3e980e55edea)) - (segment (start 84.55 135.9375) (end 84.55 137.575) (width 0.3) (layer "F.Cu") (net 35) (tstamp 778ceb93-c219-4ce6-b9e7-a5723aecdf2a)) - (segment (start 84.875 137.9) (end 84.875 139.5) (width 0.3) (layer "F.Cu") (net 35) (tstamp 8a85d2eb-c89c-4495-8333-df877d219945)) - (segment (start 84.55 137.575) (end 84.875 137.9) (width 0.3) (layer "F.Cu") (net 35) (tstamp c6f68e7a-6c0e-4e5c-a066-1a168b540926)) - (segment (start 92.425 145.3125) (end 92.425 144.675) (width 0.3) (layer "F.Cu") (net 36) (tstamp 0521db9e-39b5-4c3a-bbdb-a6cb9e103bdf)) - (segment (start 92.425 147.3) (end 92.425 146.575) (width 0.3) (layer "F.Cu") (net 36) (tstamp 415ffa92-5385-41ae-9cce-35614ebe21cf)) - (segment (start 92.094815 144.344815) (end 92.094815 144.1995) (width 0.3) (layer "F.Cu") (net 36) (tstamp 5b41d09c-327d-4b6a-8111-1892a76eddfa)) - (segment (start 92.425 146.575) (end 92.425 145.3125) (width 0.3) (layer "F.Cu") (net 36) (tstamp c544c9a0-0c17-4649-817e-3be92d402157)) - (segment (start 92.6 147.475) (end 92.425 147.3) (width 0.3) (layer "F.Cu") (net 36) (tstamp d1c63f2b-09f5-4479-9c5a-184f48135f5b)) - (segment (start 92.425 144.675) (end 92.094815 144.344815) (width 0.3) (layer "F.Cu") (net 36) (tstamp fda07e9c-045c-476c-b0ad-aecbe10d063e)) - (via (at 92.094815 144.1995) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 36) (tstamp 4c553ad6-6859-4a86-b697-586a8e900a62)) - (segment (start 91.8405 144.1995) (end 92.094815 144.1995) (width 0.3) (layer "B.Cu") (net 36) (tstamp 6aa115a6-d581-44b8-9ceb-c33540adc8fa)) - (segment (start 91.2 144.84) (end 91.8405 144.1995) (width 0.3) (layer "B.Cu") (net 36) (tstamp 972776c4-4b54-4f63-af9d-e733e1e9dcd7)) - (segment (start 111.7375 154.9875) (end 112.325 154.4) (width 0.3) (layer "F.Cu") (net 37) (tstamp b47a05ab-a1e4-4ed7-ae6e-a480195b7322)) - (segment (start 111.7375 156.25) (end 111.7375 154.9875) (width 0.3) (layer "F.Cu") (net 37) (tstamp d7d029a0-8c1d-4986-896d-6519d6ec02b6)) - (segment (start 95.456904 142.299511) (end 95.2 142.556415) (width 0.3) (layer "F.Cu") (net 38) (tstamp 0169d028-461e-45a9-b316-3f883e2ece42)) - (segment (start 95.675 144.075) (end 95.675 145.3125) (width 0.3) (layer "F.Cu") (net 38) (tstamp 0f74d103-37ea-456d-b5a9-376e42aaf135)) - (segment (start 100.12 156.21) (end 100.83 156.92) (width 0.3) (layer "F.Cu") (net 38) (tstamp 4bfa3a25-cafa-49b4-a565-cf83b2258687)) - (segment (start 99.653573 149.75) (end 99.7 149.75) (width 0.3) (layer "F.Cu") (net 38) (tstamp 523ef5a9-9a01-4a05-97e1-8cd24a0653c9)) - (segment (start 99.7 149.75) (end 99.7 143.1) (width 0.3) (layer "F.Cu") (net 38) (tstamp 553912af-803f-492d-986d-f6e87ddaedb6)) - (segment (start 98.899511 142.299511) (end 95.456904 142.299511) (width 0.3) (layer "F.Cu") (net 38) (tstamp 6a394fe2-171c-4165-a710-0de1054fa4fe)) - (segment (start 100.12 155.905) (end 97.5 153.285) (width 0.3) (layer "F.Cu") (net 38) (tstamp 7575f500-230a-4a14-a431-33ef2b076d8b)) - (segment (start 100.83 156.92) (end 101.965 156.92) (width 0.3) (layer "F.Cu") (net 38) (tstamp acf14b80-d751-4e85-ad92-0773846d1233)) - (segment (start 97.5 153.285) (end 97.5 151.903573) (width 0.3) (layer "F.Cu") (net 38) (tstamp b9fbe66f-9d14-42e8-88e9-357b66a5def7)) - (segment (start 97.5 151.903573) (end 99.653573 149.75) (width 0.3) (layer "F.Cu") (net 38) (tstamp c8224fa0-7260-4121-86d6-4965d50a7180)) - (segment (start 95.2 142.556415) (end 95.2 143.6) (width 0.3) (layer "F.Cu") (net 38) (tstamp cfecf40c-80a4-418c-8bb1-aa14eadfac97)) - (segment (start 99.7 143.1) (end 98.899511 142.299511) (width 0.3) (layer "F.Cu") (net 38) (tstamp de11e32e-6fe1-4237-a4c7-c703c9feecbb)) - (segment (start 100.12 155.905) (end 100.12 156.21) (width 0.3) (layer "F.Cu") (net 38) (tstamp e2b04526-0be3-4cc0-80e8-55e0227583b5)) - (segment (start 95.2 143.6) (end 95.675 144.075) (width 0.3) (layer "F.Cu") (net 38) (tstamp efedd9f8-71fa-4314-8b32-0619ec0eb265)) - (segment (start 109.4625 155.7375) (end 109.9 155.3) (width 0.3) (layer "F.Cu") (net 39) (tstamp 0ee611d1-5ec8-4ef1-ab3b-e35de0311771)) - (segment (start 109.9 155.3) (end 109.9 153.475) (width 0.3) (layer "F.Cu") (net 39) (tstamp 3794c4c5-9e84-420e-a935-db29f188173e)) - (segment (start 96.325 145.3125) (end 96.325 143.4755) (width 0.3) (layer "F.Cu") (net 39) (tstamp 659b38ed-613c-4e61-9245-2dfa34f9af34)) - (segment (start 109.9 153.475) (end 110.675 152.7) (width 0.3) (layer "F.Cu") (net 39) (tstamp 972b4d65-002d-4cce-aae4-e05e509b2abe)) - (segment (start 110.675 152.225) (end 110.05 151.6) (width 0.3) (layer "F.Cu") (net 39) (tstamp caa8a524-7751-434e-832b-e5213c55056e)) - (segment (start 96.325 143.4755) (end 96.004727 143.155227) (width 0.3) (layer "F.Cu") (net 39) (tstamp f3443194-0d70-400a-8927-abaf84be7a67)) - (segment (start 110.675 152.7) (end 110.675 152.225) (width 0.3) (layer "F.Cu") (net 39) (tstamp f7c48f4a-ee75-4fbe-a1d2-183b0034c4a6)) - (segment (start 109.4625 156.25) (end 109.4625 155.7375) (width 0.3) (layer "F.Cu") (net 39) (tstamp fcfc58ca-7ed5-4480-83e2-a84b933c1cd1)) - (via (at 96.004727 143.155227) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (free) (net 39) (tstamp 056eadf0-b118-4088-9f2e-f6e1fc4ce734)) - (via (at 110.05 151.6) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (free) (net 39) (tstamp 8d7d787d-d73b-42d2-b661-57e62a3d584f)) - (segment (start 110.05 151.6) (end 103.05 144.6) (width 0.3) (layer "B.Cu") (net 39) (tstamp 2d689551-a330-4e59-bcea-d899416f7830)) - (segment (start 97.4495 144.6) (end 96.004727 143.155227) (width 0.3) (layer "B.Cu") (net 39) (tstamp ac90c2dc-4d74-4f46-8473-20c134382194)) - (segment (start 103.05 144.6) (end 97.4495 144.6) (width 0.3) (layer "B.Cu") (net 39) (tstamp fb1a4c4c-b74a-4ad7-a9cd-c52723baedf6)) - (segment (start 114.4 150.849022) (end 114.4 149.5) (width 0.3) (layer "F.Cu") (net 40) (tstamp 43bd26be-966d-4408-8762-dc6a69107da6)) - (segment (start 115.2 147.525) (end 115.2 149.225) (width 0.3) (layer "F.Cu") (net 40) (tstamp 4b948bf4-e56a-41d8-83df-18a7d32723f8)) - (segment (start 115.2 149.225) (end 115.275 149.3) (width 0.3) (layer "F.Cu") (net 40) (tstamp 4ddb167d-d963-45e5-9f4d-68960fd70d87)) - (segment (start 114.6 149.3) (end 115.275 149.3) (width 0.3) (layer "F.Cu") (net 40) (tstamp 98fe22bc-709d-4d3a-8873-4932cf5e0728)) - (segment (start 113.2 151) (end 114.249022 151) (width 0.3) (layer "F.Cu") (net 40) (tstamp 9cad68df-82e9-4e5b-b844-30ebb30dd94e)) - (segment (start 114.249022 151) (end 114.4 150.849022) (width 0.3) (layer "F.Cu") (net 40) (tstamp edf945a4-3541-4bff-b1f1-29c8c5425a44)) - (segment (start 114.4 149.5) (end 114.6 149.3) (width 0.3) (layer "F.Cu") (net 40) (tstamp fdff5fb3-c847-45e3-adb3-1a731d1afced)) - (segment (start 112.150978 151.5) (end 112 151.349022) (width 0.3) (layer "F.Cu") (net 41) (tstamp 0c14f384-65fd-4d87-bb72-842602c3434a)) - (segment (start 112 151.349022) (end 112 150.650978) (width 0.3) (layer "F.Cu") (net 41) (tstamp 5d6e084a-605f-4d05-bcd6-23a747bd3e0e)) - (segment (start 112.150978 150.5) (end 113.2 150.5) (width 0.3) (layer "F.Cu") (net 41) (tstamp 68de6991-e062-4bc8-a596-49c78ea4858f)) - (segment (start 112 150.650978) (end 112.150978 150.5) (width 0.3) (layer "F.Cu") (net 41) (tstamp 7fcb48a4-eaa0-40c8-9cea-403711b62488)) - (segment (start 114.6 151.5) (end 112.150978 151.5) (width 0.3) (layer "F.Cu") (net 41) (tstamp 9f3effa9-36c1-499e-8002-787a37d4e90a)) - (segment (start 115.2 150.9) (end 114.6 151.5) (width 0.3) (layer "F.Cu") (net 41) (tstamp ad95d373-439b-492e-a936-0258944cdd72)) - (segment (start 115.275 150.9) (end 115.2 150.9) (width 0.3) (layer "F.Cu") (net 41) (tstamp c32eaa5b-78c2-4826-b43f-df6d970efaf8)) - (segment (start 108.8 147.375) (end 108.875 147.3) (width 0.3) (layer "F.Cu") (net 42) (tstamp 65acbb9d-87e7-4279-8f28-8ac6e6400353)) - (segment (start 108.8 149) (end 108.8 147.375) (width 0.3) (layer "F.Cu") (net 42) (tstamp 9c6a8a87-a1a2-464c-aea5-94c74cbabf37)) - (segment (start 93.725 139.5875) (end 93.725 133.325) (width 0.3) (layer "F.Cu") (net 43) (tstamp 2c67fea8-c0b8-45e4-a39e-6234ef0f60cf)) - (segment (start 106.575 137.3) (end 106.575 135.6625) (width 0.3) (layer "F.Cu") (net 43) (tstamp 4ee90e5b-e384-48c4-ac78-a19a749a8e27)) - (segment (start 105.57 135.65) (end 106.5625 135.65) (width 0.3) (layer "F.Cu") (net 43) (tstamp 8208d08c-ec96-49c2-b035-10a14a4d6fdb)) - (segment (start 103.915 133.995) (end 105.57 135.65) (width 0.3) (layer "F.Cu") (net 43) (tstamp 8b3d7efc-42ca-4134-b4ba-0db14eb10d72)) - (segment (start 93.725 133.325) (end 93.4 133) (width 0.3) (layer "F.Cu") (net 43) (tstamp e0ec8e04-b61f-4709-af9e-60e150fcf574)) - (segment (start 106.575 135.6625) (end 106.5625 135.65) (width 0.3) (layer "F.Cu") (net 43) (tstamp fe008ef6-bd31-4c04-8583-52d97bf719ef)) - (via (at 93.4 133) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 43) (tstamp 9c03317b-1934-4d16-ba6f-a16ae65be2b2)) - (segment (start 93.516511 132.883489) (end 102.803489 132.883489) (width 0.3) (layer "B.Cu") (net 43) (tstamp 49f67dac-2e0b-4091-abe7-07c73b9d176f)) - (segment (start 102.803489 132.883489) (end 103.915 133.995) (width 0.3) (layer "B.Cu") (net 43) (tstamp c24a1ab9-55a7-42ad-8eb3-ef79c4cf846c)) - (segment (start 93.4 133) (end 93.516511 132.883489) (width 0.3) (layer "B.Cu") (net 43) (tstamp fc0a8c99-b5f0-411a-862f-c11f70d3d167)) - (segment (start 109.825 132.9) (end 107.4125 132.9) (width 0.3) (layer "F.Cu") (net 44) (tstamp 1a26e25f-4eac-4fc4-bc00-b07f311ad649)) - (segment (start 105.695989 132.883489) (end 102.486511 132.883489) (width 0.3) (layer "F.Cu") (net 44) (tstamp 3e78605f-1b35-4cc6-b099-381f851c8d35)) - (segment (start 95.716022 132.383978) (end 94.375 133.725) (width 0.3) (layer "F.Cu") (net 44) (tstamp 542ba5a9-c564-4511-9fcf-59d2290345d0)) - (segment (start 107.4125 132.9) (end 106.5625 133.75) (width 0.3) (layer "F.Cu") (net 44) (tstamp 683e4616-fa13-4097-bcc1-2376e72d1ccc)) - (segment (start 94.375 133.725) (end 94.375 139.5875) (width 0.3) (layer "F.Cu") (net 44) (tstamp 71998f9c-b685-4a81-b781-381b280fb004)) - (segment (start 110.6 133.675) (end 109.825 132.9) (width 0.3) (layer "F.Cu") (net 44) (tstamp 76f2d397-8f3c-4799-a9c5-6ee7cbb8d293)) - (segment (start 102.486511 132.883489) (end 101.375 133.995) (width 0.3) (layer "F.Cu") (net 44) (tstamp 7e17be0a-407e-471a-8d4b-2b97813e2626)) - (segment (start 101.375 133.995) (end 99.763978 132.383978) (width 0.3) (layer "F.Cu") (net 44) (tstamp 90477c09-ef67-4ea9-9d6a-1d3c9d88a2e9)) - (segment (start 106.5625 133.75) (end 105.695989 132.883489) (width 0.3) (layer "F.Cu") (net 44) (tstamp 96e49b1d-7038-44c4-9cca-9311fb531059)) - (segment (start 99.763978 132.383978) (end 95.716022 132.383978) (width 0.3) (layer "F.Cu") (net 44) (tstamp c2a225c5-fd9f-4278-a98f-30380696b18b)) - (segment (start 86.625 139.6) (end 87.9 139.6) (width 0.3) (layer "F.Cu") (net 45) (tstamp aadc4205-15b5-4e26-9da9-dbbb0236dc73)) - (segment (start 99.4375 139.5875) (end 99.45 139.6) (width 0.3) (layer "F.Cu") (net 45) (tstamp b62090a6-2a8d-462e-8a34-304a273f4176)) - (segment (start 98.275 139.5875) (end 99.4375 139.5875) (width 0.3) (layer "F.Cu") (net 45) (tstamp ead2d38c-00c3-4c93-9cc5-dde475ae6677)) - (via (at 87.9 139.6) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (free) (net 45) (tstamp 41b3d454-5073-4883-b70b-d22700591375)) - (via (at 99.45 139.6) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (free) (net 45) (tstamp fd283807-27a9-4bf4-a964-adb42b513994)) - (segment (start 87.9 139.6) (end 99.45 139.6) (width 0.3) (layer "B.Cu") (net 45) (tstamp f8acd27f-b779-46e3-ada3-c67b300f912a)) - (segment (start 92.425 139.5875) (end 92.425 138.375) (width 0.3) (layer "F.Cu") (net 46) (tstamp 00a14224-6a84-42a6-acfd-8669b73bd5de)) - (segment (start 92.425 138.375) (end 91.55 137.5) (width 0.3) (layer "F.Cu") (net 46) (tstamp 484395d5-eedd-4bea-913d-2edce5491505)) - (segment (start 125.91 142.435) (end 125.91 137.7) (width 0.3) (layer "F.Cu") (net 46) (tstamp 5c7c0650-19e5-4cc1-a567-02a37cb23166)) - (segment (start 128.85 145.375) (end 125.91 142.435) (width 0.3) (layer "F.Cu") (net 46) (tstamp 765dd297-dac3-45bb-83b9-0f43552837b1)) - (via (at 91.55 137.5) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (free) (net 46) (tstamp 0a19c6e8-9302-411c-bbf7-4aa9f1443acc)) - (segment (start 117.849022 140.35) (end 123.26 140.35) (width 0.3) (layer "B.Cu") (net 46) (tstamp 0d2585d6-0d32-4c2f-9bfd-16236273c76d)) - (segment (start 91.55 137.5) (end 92.35 138.3) (width 0.3) (layer "B.Cu") (net 46) (tstamp 7efe2f75-0d44-4670-a6fb-eba13df5ad21)) - (segment (start 115.799022 138.3) (end 117.849022 140.35) (width 0.3) (layer "B.Cu") (net 46) (tstamp 9e108825-5ee8-41b4-b31f-1ba35eb43d31)) - (segment (start 92.35 138.3) (end 115.799022 138.3) (width 0.3) (layer "B.Cu") (net 46) (tstamp b8e3ce14-a909-4580-a274-81a875984e79)) - (segment (start 123.26 140.35) (end 125.91 137.7) (width 0.3) (layer "B.Cu") (net 46) (tstamp bfca3d31-1aae-4c24-9e91-0116214253ed)) - (segment (start 108.8 150.5) (end 110.35 150.5) (width 0.3) (layer "F.Cu") (net 47) (tstamp 19aa8a0b-a9c8-4dfb-aeda-50bc89001bbd)) - (segment (start 96.975 143.074869) (end 96.998789 143.05108) (width 0.3) (layer "F.Cu") (net 47) (tstamp 3aa21f22-a112-4ead-a75c-a1ec7432cb26)) - (segment (start 96.975 145.3125) (end 96.975 143.074869) (width 0.3) (layer "F.Cu") (net 47) (tstamp 60582e37-12cd-424a-bb26-9419cc055411)) - (segment (start 110.35 150.5) (end 110.8 150.95) (width 0.3) (layer "F.Cu") (net 47) (tstamp 911efd83-c9a1-4b12-a0cb-2e269234ca47)) - (via (at 96.998789 143.05108) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (free) (net 47) (tstamp 3db438f0-3ec1-43f2-af25-6bead7e2a91b)) - (via (at 110.8 150.95) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (free) (net 47) (tstamp 831f1158-2f79-43a6-9af4-9b8d2c6d4b27)) - (segment (start 103.8 143.95) (end 97.897709 143.95) (width 0.3) (layer "B.Cu") (net 47) (tstamp 182b8a8c-0cb3-42ec-8e10-88c670a7f38d)) - (segment (start 110.8 150.95) (end 103.8 143.95) (width 0.3) (layer "B.Cu") (net 47) (tstamp 33c8b831-3126-46d3-b6ad-8262702cdf51)) - (segment (start 97.897709 143.95) (end 96.998789 143.05108) (width 0.3) (layer "B.Cu") (net 47) (tstamp d019df47-b049-46ec-883f-7a1b4193c2b6)) - (segment (start 108.8 150) (end 110.55 150) (width 0.3) (layer "F.Cu") (net 48) (tstamp 1fa93807-867f-4216-9445-4e55863ae779)) - (segment (start 97.625 143.575001) (end 98.103832 143.096169) (width 0.3) (layer "F.Cu") (net 48) (tstamp 8549212a-f36a-4b29-8b3a-a168befb1949)) - (segment (start 110.55 150) (end 110.8 149.75) (width 0.3) (layer "F.Cu") (net 48) (tstamp a1f07be6-1789-4c5e-b7b8-82007407321b)) - (segment (start 97.625 145.3125) (end 97.625 143.575001) (width 0.3) (layer "F.Cu") (net 48) (tstamp a664433c-8cb5-4705-9a5a-14f42816aa94)) - (via (at 110.8 149.75) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (free) (net 48) (tstamp 77f70c7b-a245-440f-9f69-66e785c0e3b5)) - (via (at 98.103832 143.096169) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (free) (net 48) (tstamp af24141c-0165-4894-9f79-f403b0f69b42)) - (segment (start 110.8 149.75) (end 104.299022 143.249022) (width 0.3) (layer "B.Cu") (net 48) (tstamp 115eea74-f973-4c1d-b593-fd5ad3bf73c1)) - (segment (start 104.299022 143.249022) (end 98.256685 143.249022) (width 0.3) (layer "B.Cu") (net 48) (tstamp 75e3421a-7441-459d-a1cc-8b7471260648)) - (segment (start 98.256685 143.249022) (end 98.103832 143.096169) (width 0.3) (layer "B.Cu") (net 48) (tstamp 955849c8-f93a-4f0a-8a7b-c684eaa45630)) + (segment (start 84.508285 134.0625) (end 85.5 134.0625) (width 0.3) (layer "F.Cu") (net 1) (tstamp 79628846-f9d6-493e-aecd-6bd4ffe4a9c1)) + (segment (start 80.070785 138.5) (end 84.508285 134.0625) (width 0.3) (layer "F.Cu") (net 1) (tstamp 996641f2-10b8-4baa-abe7-84418183ec3f)) + (segment (start 80.070785 139.8) (end 80.070785 138.5) (width 0.3) (layer "F.Cu") (net 1) (tstamp ecb91b11-8da7-4d03-bbf7-97d93b1073cf)) + (segment (start 77.670785 142.4) (end 75.070785 139.8) (width 0.3) (layer "F.Cu") (net 2) (tstamp 67d44136-eefe-4e77-bcd9-688d6b01b6b1)) + (segment (start 85.2625 142.4) (end 77.670785 142.4) (width 0.3) (layer "F.Cu") (net 2) (tstamp cbed0d78-abc4-4069-9dd1-8f28f609f7d0)) + (segment (start 113.46 149.515) (end 113.46 145.69) (width 0.3) (layer "F.Cu") (net 3) (tstamp 0018b609-0816-4e5a-889d-38df3bc0b2da)) + (segment (start 114.835986 139.2) (end 119.33 139.2) (width 0.3) (layer "F.Cu") (net 3) (tstamp 00b0b7fb-1d35-4371-a36b-55cba2328899)) + (segment (start 127.6 149.9875) (end 128.3875 149.2) (width 0.3) (layer "F.Cu") (net 3) (tstamp 02f7cd38-e80c-4cea-990c-b710e96f02a9)) + (segment (start 100.09 133.28) (end 99.66 132.85) (width 0.3) (layer "F.Cu") (net 3) (tstamp 03173d00-5a5d-4e7e-9bc1-cefb16369723)) + (segment (start 102.245 154.75) (end 104.58 152.415) (width 0.3) (layer "F.Cu") (net 3) (tstamp 038089f4-4802-4fbf-ac3f-696b5b2f5b3e)) + (segment (start 71.005479 138.844521) (end 71.005479 149.300479) (width 0.3) (layer "F.Cu") (net 3) (tstamp 03f1b7a4-f328-41f6-b746-bac991862fc5)) + (segment (start 71.005479 149.300479) (end 73.755 152.05) (width 0.3) (layer "F.Cu") (net 3) (tstamp 03f57925-6a73-4e02-8d47-579b9997b493)) + (segment (start 116.48 154.23) (end 116.48 154.78) (width 0.3) (layer "F.Cu") (net 3) (tstamp 03ffc0bb-61bd-4bcf-92b8-474057f1c181)) + (segment (start 100.78 151.54) (end 101.16 151.92) (width 0.3) (layer "F.Cu") (net 3) (tstamp 044659c8-4203-4e3e-8c75-274663f0d468)) + (segment (start 87.1375 141.9825) (end 84.975 144.145) (width 0.3) (layer "F.Cu") (net 3) (tstamp 046f3680-8618-49e8-8f88-5cf5a819f00c)) + (segment (start 96.295 133.975) (end 96.295 133.995) (width 0.3) (layer "F.Cu") (net 3) (tstamp 04fea811-fec4-47b2-83f3-faa82901eaf7)) + (segment (start 87.59 138.81) (end 86.304283 138.81) (width 0.3) (layer "F.Cu") (net 3) (tstamp 06a556d1-d51f-4a79-8708-332d6dbf7b29)) + (segment (start 92.93 144.37) (end 93.7 145.14) (width 0.3) (layer "F.Cu") (net 3) (tstamp 08812790-82e0-4006-a511-0c472eec73d0)) + (segment (start 100.9225 161.42) (end 99.8825 160.38) (width 0.3) (layer "F.Cu") (net 3) (tstamp 0c44f45a-4003-4ea0-9c55-63991fa28661)) + (segment (start 125.53 134.15) (end 124.7 134.15) (width 0.3) (layer "F.Cu") (net 3) (tstamp 0e85c7fb-8acb-48dd-9c40-1b4cf20bd54e)) + (segment (start 92.730978 144.37) (end 90.45 142.089022) (width 0.3) (layer "F.Cu") (net 3) (tstamp 1162e707-9e3f-4ba7-9ccd-bfa8328ae309)) + (segment (start 89.18 140.4) (end 87.59 138.81) (width 0.3) (layer "F.Cu") (net 3) (tstamp 11f785f3-aa75-4149-902d-1ce37d5bc60e)) + (segment (start 124.05 136.34) (end 124.73 137.02) (width 0.3) (layer "F.Cu") (net 3) (tstamp 12538caf-eb78-41c4-860e-1c8123c4d39b)) + (segment (start 78.154521 156.449521) (end 87.879521 156.449521) (width 0.3) (layer "F.Cu") (net 3) (tstamp 17df8fe3-40fb-404e-accd-6d8168ec26e0)) + (segment (start 120.68 150.17) (end 122.2 148.65) (width 0.3) (layer "F.Cu") (net 3) (tstamp 1dc7cdab-21a5-4deb-9eaa-6fe46eab1ff9)) + (segment (start 83.49 148.3) (end 83.49 146.485) (width 0.3) (layer "F.Cu") (net 3) (tstamp 1eebe99f-5066-4850-901d-35eaefa9ffc2)) + (segment (start 75.465 150.34) (end 81.45 150.34) (width 0.3) (layer "F.Cu") (net 3) (tstamp 21bc2424-bc87-4bab-a5bd-dc7fc3c4b839)) + (segment (start 100.09 135.04) (end 100.09 133.28) (width 0.3) (layer "F.Cu") (net 3) (tstamp 21bd2a9c-aba2-4129-b58c-53b237221751)) + (segment (start 127.01048 138.94952) (end 127.13 138.83) (width 0.3) (layer "F.Cu") (net 3) (tstamp 2487e5c5-8131-420a-9aba-4b813a357056)) + (segment (start 101.005 135.955) (end 101.005 137.19) (width 0.3) (layer "F.Cu") (net 3) (tstamp 2c9738f7-17df-4117-8fb7-7c0df6411348)) + (segment (start 121.79 136.34) (end 124.05 136.34) (width 0.3) (layer "F.Cu") (net 3) (tstamp 2e5f68e0-179b-40c1-867f-e430e7d212b6)) + (segment (start 129.33 159.15) (end 129.33 155.49) (width 0.3) (layer "F.Cu") (net 3) (tstamp 2ee1cfcf-6aeb-4b59-86f1-8d913ec3eee1)) + (segment (start 109.29 152.46) (end 109.35 152.4) (width 0.3) (layer "F.Cu") (net 3) (tstamp 34a456d8-994a-40a1-9886-624e39fa6a4a)) + (segment (start 73.755 152.05) (end 75.465 150.34) (width 0.3) (layer "F.Cu") (net 3) (tstamp 35b84dc7-1422-4b09-8d51-7f31423c9e3c)) + (segment (start 127.8 154.3) (end 127.8 153.96) (width 0.3) (layer "F.Cu") (net 3) (tstamp 361ff292-b32d-400f-a3be-cbd312d327b2)) + (segment (start 116.46 158.39) (end 116.48 158.41) (width 0.3) (layer "F.Cu") (net 3) (tstamp 365658c2-231a-4b09-a0e8-10185cd70364)) + (segment (start 100.03394 144.05) (end 101.25 142.83394) (width 0.3) (layer "F.Cu") (net 3) (tstamp 3935d73e-55d9-4606-8a4f-1a712b243297)) + (segment (start 81.45 150.34) (end 83.49 148.3) (width 0.3) (layer "F.Cu") (net 3) (tstamp 3b7ddfb7-7d56-449a-be58-3c76f7ac0c59)) + (segment (start 116.48 154.78) (end 117.184521 155.484521) (width 0.3) (layer "F.Cu") (net 3) (tstamp 3c43057a-1e5f-43b9-8de6-b02531931111)) + (segment (start 102.67 134.29) (end 101.005 135.955) (width 0.3) (layer "F.Cu") (net 3) (tstamp 3c81e350-765b-43f6-9ffa-6943b7a67e2e)) + (segment (start 93.7 148.359733) (end 92.529733 149.53) (width 0.3) (layer "F.Cu") (net 3) (tstamp 3ef6c4c7-ee29-412e-a4f1-6a5387edd7e6)) + (segment (start 120.83 137.7) (end 120.83 137.3) (width 0.3) (layer "F.Cu") (net 3) (tstamp 3f6b7f02-7856-484e-88ff-8189faa00612)) + (segment (start 109.1625 155.2) (end 107.75 155.2) (width 0.3) (layer "F.Cu") (net 3) (tstamp 410601ce-8685-40ea-9c6b-646e93eed4d3)) + (segment (start 114.26 158.39) (end 116.46 158.39) (width 0.3) (layer "F.Cu") (net 3) (tstamp 4285b1a7-0c16-48f6-b346-746b6ce99d09)) + (segment (start 101.25 139.1375) (end 101.25 137.435) (width 0.3) (layer "F.Cu") (net 3) (tstamp 433c802f-7ada-4b95-b129-6beeefd66fb6)) + (segment (start 119.33 139.2) (end 120.83 137.7) (width 0.3) (layer "F.Cu") (net 3) (tstamp 4521f21b-20bd-410a-b84c-d68f340f43cc)) + (segment (start 118.27 149.1) (end 119.34 150.17) (width 0.3) (layer "F.Cu") (net 3) (tstamp 4540f1f9-e9e1-4fc1-af24-f0bf442116df)) + (segment (start 101.25 142.83394) (end 101.25 139.1375) (width 0.3) (layer "F.Cu") (net 3) (tstamp 49e94c3b-7c28-431c-8ee6-84962e50f69d)) + (segment (start 108.835 150.675) (end 109.8 150.675) (width 0.3) (layer "F.Cu") (net 3) (tstamp 4c70e296-ce98-48ce-aac0-5889a325da57)) + (segment (start 116.48 158.41) (end 125.12 158.41) (width 0.3) (layer "F.Cu") (net 3) (tstamp 4dc668f7-cf9e-40c5-bd42-6fe81f9b9db3)) + (segment (start 114.070978 145.079022) (end 116.637556 145.079022) (width 0.3) (layer "F.Cu") (net 3) (tstamp 4e65a17c-e0a9-4a82-8619-0985aea0cdb3)) + (segment (start 112.3 150.675) (end 113.46 149.515) (width 0.3) (layer "F.Cu") (net 3) (tstamp 51c828e1-4463-47c4-befc-9ccb159f7c6a)) + (segment (start 127.6 151.5) (end 127.6 149.9875) (width 0.3) (layer "F.Cu") (net 3) (tstamp 526b2292-5837-45d3-baed-6ae1ddbf252c)) + (segment (start 92.83 161.4) (end 97.175 161.4) (width 0.3) (layer "F.Cu") (net 3) (tstamp 5469e390-2905-42ac-b724-5d4bcea8800e)) + (segment (start 101.16 154.085) (end 101.825 154.75) (width 0.3) (layer "F.Cu") (net 3) (tstamp 54e373e0-10c4-49e2-a602-c7b8591b1a86)) + (segment (start 124.73 137.02) (end 124.73 138.49) (width 0.3) (layer "F.Cu") (net 3) (tstamp 56171686-0f89-41df-9066-660110dcfb19)) + (segment (start 129.5 152.26) (end 129.5 150.3125) (width 0.3) (layer "F.Cu") (net 3) (tstamp 585fe33d-5719-45a4-ab59-32f0115573ff)) + (segment (start 112.3 150.675) (end 109.8 150.675) (width 0.3) (layer "F.Cu") (net 3) (tstamp 59cca405-751a-4b5f-a7f4-676eda825a5e)) + (segment (start 125.12 154.23) (end 125.12 153.98) (width 0.3) (layer "F.Cu") (net 3) (tstamp 5ce295f0-a4fe-4ff2-96af-f119f6b2127f)) + (segment (start 104.343489 132.983489) (end 103.096511 132.983489) (width 0.3) (layer "F.Cu") (net 3) (tstamp 5da1994f-7920-4cc8-93bb-a36ce2f5ee3d)) + (segment (start 105.75 148.3) (end 106.28 148.83) (width 0.3) (layer "F.Cu") (net 3) (tstamp 5f7e97d0-886d-44d0-9593-f62d58b70c2e)) + (segment (start 73.755 152.05) (end 78.154521 156.449521) (width 0.3) (layer "F.Cu") (net 3) (tstamp 60a356e0-3f61-4adf-a116-92ce818ad5bf)) + (segment (start 124.73 138.49) (end 125.18952 138.94952) (width 0.3) (layer "F.Cu") (net 3) (tstamp 61996362-1384-4305-8201-169b5e9dbeff)) + (segment (start 105.75 147.4625) (end 105.75 148.3) (width 0.3) (layer "F.Cu") (net 3) (tstamp 627ffa1b-db1c-4787-80c2-f7df1ae101e1)) + (segment (start 123.990108 155.484521) (end 125.12 154.354629) (width 0.3) (layer "F.Cu") (net 3) (tstamp 643e5e9d-e7cc-4400-9e5a-1bc880f2f0b1)) + (segment (start 99.3375 144.05) (end 100.03394 144.05) (width 0.3) (layer "F.Cu") (net 3) (tstamp 6527d5ff-38f3-4b86-82fc-aa4254b19bd6)) + (segment (start 86.304283 138.81) (end 85.84 139.274283) (width 0.3) (layer "F.Cu") (net 3) (tstamp 690c338a-1922-4103-bada-21b65357e30c)) + (segment (start 118.27 146.711466) (end 118.27 149.1) (width 0.3) (layer "F.Cu") (net 3) (tstamp 6a303332-ba92-4f02-bfe6-1377f26f5946)) + (segment (start 106.79 152.46) (end 104.625 152.46) (width 0.3) (layer "F.Cu") (net 3) (tstamp 6add2761-99c5-4f1d-981a-21ea55b11b14)) + (segment (start 106.06 134.7) (end 104.343489 132.983489) (width 0.3) (layer "F.Cu") (net 3) (tstamp 6be04492-22fc-4570-a532-fa8849c69cce)) + (segment (start 90.45 142.089022) (end 90.45 139.1525) (width 0.3) (layer "F.Cu") (net 3) (tstamp 70363717-a77f-4590-a59a-c3df6e13a8d9)) + (segment (start 109.8 150.675) (end 109.8 150.7) (width 0.3) (layer "F.Cu") (net 3) (tstamp 70e7eec5-cd5c-4b9e-ac83-e87d56507b16)) + (segment (start 101.825 154.75) (end 102.245 154.75) (width 0.3) (layer "F.Cu") (net 3) (tstamp 718f908a-de83-4848-9d4b-fe50a771870a)) + (segment (start 96.295 133.995) (end 94.975969 132.675969) (width 0.3) (layer "F.Cu") (net 3) (tstamp 72b6c924-7412-4559-8638-f8ecf9c2f312)) + (segment (start 106.5625 134.7) (end 106.06 134.7) (width 0.3) (layer "F.Cu") (net 3) (tstamp 75766ee8-39df-4e34-8db3-9dd9f8dda860)) + (segment (start 104.625 152.46) (end 104.58 152.415) (width 0.3) (layer "F.Cu") (net 3) (tstamp 757ab84b-ee11-4d4a-9dbd-66737c518cc8)) + (segment (start 125.12 154.354629) (end 125.12 154.23) (width 0.3) (layer "F.Cu") (net 3) (tstamp 758b3caf-6c44-4663-9462-b047905ec334)) + (segment (start 93.7 145.14) (end 93.7 148.359733) (width 0.3) (layer "F.Cu") (net 3) (tstamp 7621ae51-39eb-4c95-b6f7-5a85df998e22)) + (segment (start 117.395 153.315) (end 116.48 154.23) (width 0.3) (layer "F.Cu") (net 3) (tstamp 792d3805-df8e-4b2e-bcc2-36433d936628)) + (segment (start 101.25 137.435) (end 101.005 137.19) (width 0.3) (layer "F.Cu") (net 3) (tstamp 7a306159-915c-4c27-92c8-b7d313e819b4)) + (segment (start 109.145 160.13) (end 107.855 161.42) (width 0.3) (layer "F.Cu") (net 3) (tstamp 7a92d741-06d9-4c65-b06b-4aac1b9252db)) + (segment (start 117.184521 155.484521) (end 123.990108 155.484521) (width 0.3) (layer "F.Cu") (net 3) (tstamp 7e4983d2-ae67-4176-8657-952802e2bc33)) + (segment (start 106.99 148.83) (end 108.835 150.675) (width 0.3) (layer "F.Cu") (net 3) (tstamp 7f3a038d-a0f5-40a9-97a2-f0aa4ebd6a30)) + (segment (start 119.34 150.17) (end 120.68 150.17) (width 0.3) (layer "F.Cu") (net 3) (tstamp 8162dcb0-f5dc-4ae5-b235-2d9fa8abb426)) + (segment (start 106.79 152.46) (end 109.29 152.46) (width 0.3) (layer "F.Cu") (net 3) (tstamp 85716c88-af35-4166-9a9b-3ac64e137a64)) + (segment (start 117.55 153.315) (end 117.395 153.315) (width 0.3) (layer "F.Cu") (net 3) (tstamp 86f221e8-8b37-47be-a96d-552dcccb3411)) + (segment (start 106.7 154.15) (end 106.7 152.55) (width 0.3) (layer "F.Cu") (net 3) (tstamp 89883ae4-b96d-4e6e-b9d4-d5522f345e1a)) + (segment (start 90.255752 149.53) (end 89.18 148.454248) (width 0.3) (layer "F.Cu") (net 3) (tstamp 89e7241f-9b9e-4de2-80e5-9852c4082d42)) + (segment (start 86.48 141.45) (end 87.1375 141.45) (width 0.3) (layer "F.Cu") (net 3) (tstamp 8be99a3b-5280-4734-a049-bcc48a31649a)) + (segment (start 85.84 139.274283) (end 85.84 140.81) (width 0.3) (layer "F.Cu") (net 3) (tstamp 8edaebb1-5a25-4594-80ab-bc0080565cbb)) + (segment (start 94.975969 132.675969) (end 77.174031 132.675969) (width 0.3) (layer "F.Cu") (net 3) (tstamp 8fcc0c80-e1ef-412f-844e-8e69bdefc7aa)) + (segment (start 113.46 145.69) (end 114.070978 145.079022) (width 0.3) (layer "F.Cu") (net 3) (tstamp 9060a697-14e2-450f-a163-bbe09ae52cb1)) + (segment (start 114.2 158.33) (end 114.26 158.39) (width 0.3) (layer "F.Cu") (net 3) (tstamp 90b2ef03-de82-4d4c-b090-21d94a113072)) + (segment (start 102.67 133.41) (end 102.67 134.29) (width 0.3) (layer "F.Cu") (net 3) (tstamp 90c56621-9735-4176-8a2f-721860baaec0)) + (segment (start 107.75 155.2) (end 106.7 154.15) (width 0.3) (layer "F.Cu") (net 3) (tstamp 9225438f-945b-4a6c-98f4-260eed355a21)) + (segment (start 127.13 135.75) (end 125.53 134.15) (width 0.3) (layer "F.Cu") (net 3) (tstamp 92dff3e1-0ce4-4472-917a-c34b93bbb0bf)) + (segment (start 129.5 150.3125) (end 128.3875 149.2) (width 0.3) (layer "F.Cu") (net 3) (tstamp 936a0f18-2228-4af5-b0a5-3ddfd0652c50)) + (segment (start 107.855 161.42) (end 100.9225 161.42) (width 0.3) (layer "F.Cu") (net 3) (tstamp 94cf5dec-81dc-468e-839d-7e3b65d72464)) + (segment (start 87.879521 156.449521) (end 92.83 161.4) (width 0.3) (layer "F.Cu") (net 3) (tstamp 95cecef8-629f-4d55-963c-95fb843e96d6)) + (segment (start 126.99 161.49) (end 129.33 159.15) (width 0.3) (layer "F.Cu") (net 3) (tstamp 95e4439c-2d24-4d83-8d1a-b1edb680a4ad)) + (segment (start 124.205 153.315) (end 125.12 154.23) (width 0.3) (layer "F.Cu") (net 3) (tstamp 964f7e2a-dabd-4cb1-831c-da39b8429c50)) + (segment (start 77.174031 132.675969) (end 71.005479 138.844521) (width 0.3) (layer "F.Cu") (net 3) (tstamp 97ea0160-df4d-4502-b578-664032d34373)) + (segment (start 125.18952 138.94952) (end 127.01048 138.94952) (width 0.3) (layer "F.Cu") (net 3) (tstamp 986393fb-cb43-4481-ac3c-ac28d1d2cecb)) + (segment (start 125.12 158.41) (end 125.12 156.98) (width 0.3) (layer "F.Cu") (net 3) (tstamp 991c7d65-28f9-476c-aacb-06c07e301cb4)) + (segment (start 125.12 153.98) (end 127.6 151.5) (width 0.3) (layer "F.Cu") (net 3) (tstamp 992ed0c7-ddb4-4ee4-b7bf-07848b48a904)) + (segment (start 89.18 148.454248) (end 89.18 140.4) (width 0.3) (layer "F.Cu") (net 3) (tstamp 9a5a8ad2-354d-435d-9318-c7b323ddf285)) + (segment (start 120.83 137.3) (end 121.79 136.34) (width 0.3) (layer "F.Cu") (net 3) (tstamp 9b3efb79-66a1-40e7-893c-5b4d48f7d166)) + (segment (start 112.985986 141.05) (end 114.835986 139.2) (width 0.3) (layer "F.Cu") (net 3) (tstamp 9be5de4a-31ca-473c-b8e1-f9c9a634d719)) + (segment (start 127.13 138.83) (end 127.13 135.75) (width 0.3) (layer "F.Cu") (net 3) (tstamp 9e97aecb-7fd6-448e-a99d-60e2675858ae)) + (segment (start 107.6625 141.05) (end 112.985986 141.05) (width 0.3) (layer "F.Cu") (net 3) (tstamp a255a620-832f-4f5b-9304-5524136b033b)) + (segment (start 116.637556 145.079022) (end 118.27 146.711466) (width 0.3) (layer "F.Cu") (net 3) (tstamp a2cfe64b-f05a-453b-9f38-c5fe3b8b8c17)) + (segment (start 84.975 144.145) (end 84.975 145) (width 0.3) (layer "F.Cu") (net 3) (tstamp a37c1bce-f85b-4525-9e45-b57ec78dbbe8)) + (segment (start 98.195 160.38) (end 98.1 160.475) (width 0.3) (layer "F.Cu") (net 3) (tstamp a5591b66-435f-459c-ad76-d97ea989c101)) + (segment (start 101.005 135.955) (end 100.09 135.04) (width 0.3) (layer "F.Cu") (net 3) (tstamp a79f9dcd-3ec9-4308-a578-065e0121b68b)) + (segment (start 124.05 153.315) (end 124.205 153.315) (width 0.3) (layer "F.Cu") (net 3) (tstamp a99df81b-ab1a-463e-b131-eb064c558498)) + (segment (start 100.1825 151.54) (end 100.78 151.54) (width 0.3) (layer "F.Cu") (net 3) (tstamp abe3de97-ce8f-4489-ae67-d7404a4e0685)) + (segment (start 109.35 151.15) (end 109.35 152.4) (width 0.3) (layer "F.Cu") (net 3) (tstamp acfc1c48-8d25-4cd9-ae42-2355cde82a44)) + (segment (start 87.1375 141.45) (end 87.1375 141.9825) (width 0.3) (layer "F.Cu") (net 3) (tstamp b7f6cfe1-67ab-41b0-b750-90958f93e038)) + (segment (start 106.7 152.55) (end 106.79 152.46) (width 0.3) (layer "F.Cu") (net 3) (tstamp b88815ba-02d3-43f9-b7bd-31cae51d9cde)) + (segment (start 91.2825 135.72) (end 91.2825 136.96) (width 0.3) (layer "F.Cu") (net 3) (tstamp ba394278-5b14-4313-a119-4019a00a9f0f)) + (segment (start 129.33 155.49) (end 127.8 153.96) (width 0.3) (layer "F.Cu") (net 3) (tstamp ba9cc70f-5455-4fb9-88fa-1828f52b8389)) + (segment (start 97.175 161.4) (end 98.1 160.475) (width 0.3) (layer "F.Cu") (net 3) (tstamp bb04f962-0511-4f65-a3b0-49c9eb201394)) + (segment (start 92.93 144.37) (end 92.730978 144.37) (width 0.3) (layer "F.Cu") (net 3) (tstamp bcb3e8de-b886-4619-9383-05b2e619267d)) + (segment (start 109.8 150.7) (end 109.35 151.15) (width 0.3) (layer "F.Cu") (net 3) (tstamp bd746537-ef3c-4e16-997d-1e60f572527f)) + (segment (start 85.84 140.81) (end 86.48 141.45) (width 0.3) (layer "F.Cu") (net 3) (tstamp bfad2e7f-0fe0-4867-b874-f47cf363357e)) + (segment (start 127.6 149.9875) (end 123.5375 149.9875) (width 0.3) (layer "F.Cu") (net 3) (tstamp c305d5ed-fba5-4fc9-9c1a-d90ad85dfa83)) + (segment (start 90.45 139.1525) (end 91.2725 138.33) (width 0.3) (layer "F.Cu") (net 3) (tstamp c83dd982-74fe-44d6-8dc9-f5cf86df4c43)) + (segment (start 125.12 156.98) (end 127.8 154.3) (width 0.3) (layer "F.Cu") (net 3) (tstamp c8ae8493-b9fc-48d8-bb8e-7bf92d5d98dd)) + (segment (start 91.2825 136.96) (end 91.2825 138.32) (width 0.3) (layer "F.Cu") (net 3) (tstamp cb3b00a1-f2e7-4ffc-b935-76b34c731376)) + (segment (start 92.529733 149.53) (end 90.255752 149.53) (width 0.3) (layer "F.Cu") (net 3) (tstamp cb9f8801-b3a8-44d3-b31d-fef2cefede7a)) + (segment (start 99.8825 160.38) (end 98.195 160.38) (width 0.3) (layer "F.Cu") (net 3) (tstamp ccc35154-a4c4-42f1-8566-51da2b2dc374)) + (segment (start 110.505 161.49) (end 126.99 161.49) (width 0.3) (layer "F.Cu") (net 3) (tstamp d1816200-b2a6-4fd9-a840-53522c6fd93a)) + (segment (start 103.096511 132.983489) (end 102.67 133.41) (width 0.3) (layer "F.Cu") (net 3) (tstamp d1916a86-0c40-4adf-a6ce-9b8b7dd85bb8)) + (segment (start 106.28 148.83) (end 106.99 148.83) (width 0.3) (layer "F.Cu") (net 3) (tstamp d4ec80ed-b6f3-498e-a91e-9e95d6c6ae9a)) + (segment (start 123.5375 149.9875) (end 122.2 148.65) (width 0.3) (layer "F.Cu") (net 3) (tstamp d66ea7a6-3eb7-41bd-bfb0-1d946b5df56c)) + (segment (start 91.2625 135.7) (end 91.2825 135.72) (width 0.3) (layer "F.Cu") (net 3) (tstamp d67325a8-2261-4f54-b55e-496e8f4ef976)) + (segment (start 97.42 132.85) (end 96.295 133.975) (width 0.3) (layer "F.Cu") (net 3) (tstamp d957dd0e-9331-491a-b0db-14131dba2c26)) + (segment (start 99.66 132.85) (end 97.42 132.85) (width 0.3) (layer "F.Cu") (net 3) (tstamp dbbeda4c-b3d9-4c7b-b986-6cda899af60b)) + (segment (start 91.2825 138.32) (end 91.2725 138.33) (width 0.3) (layer "F.Cu") (net 3) (tstamp dda02d91-82b7-472b-8797-7f8b05daca11)) + (segment (start 91.2625 134.52) (end 91.2625 135.7) (width 0.3) (layer "F.Cu") (net 3) (tstamp e70a77ae-d53a-4e52-a53b-53a987f40ff1)) + (segment (start 127.8 153.96) (end 129.5 152.26) (width 0.3) (layer "F.Cu") (net 3) (tstamp e80cddbc-6d67-4904-82c5-428a2fb661e8)) + (segment (start 114.2 156.675) (end 114.2 158.33) (width 0.3) (layer "F.Cu") (net 3) (tstamp ecd1f38d-5704-46a3-8caa-fbc834646dfe)) + (segment (start 100.12 154.255) (end 101.33 154.255) (width 0.3) (layer "F.Cu") (net 3) (tstamp f1b55c38-c4b1-4259-82a8-d5b51f708b3d)) + (segment (start 109.145 160.13) (end 110.505 161.49) (width 0.3) (layer "F.Cu") (net 3) (tstamp f4d0ca3a-90aa-4800-a7b1-bfbd7d6604bf)) + (segment (start 83.49 146.485) (end 84.975 145) (width 0.3) (layer "F.Cu") (net 3) (tstamp f4eb2cc0-9556-48e1-980c-47f82e7cfa24)) + (segment (start 101.16 151.92) (end 101.16 154.085) (width 0.3) (layer "F.Cu") (net 3) (tstamp f8e75abb-90cd-470e-8b72-1c8914157ac4)) + (segment (start 73.755 152.05) (end 71.005479 149.300479) (width 0.3) (layer "B.Cu") (net 3) (tstamp 0fcb2934-3bf9-48c2-b9c9-d35a083e12ed)) + (segment (start 74.860479 154.150479) (end 73.755 153.045) (width 0.3) (layer "B.Cu") (net 3) (tstamp 2163c9ae-851a-4173-af3b-9b2d7cc08609)) + (segment (start 71.005479 149.300479) (end 71.005479 138.774521) (width 0.3) (layer "B.Cu") (net 3) (tstamp 260efc08-f554-4c79-8c3d-dc0cf08a1ed5)) + (segment (start 73.755 153.045) (end 73.755 152.05) (width 0.3) (layer "B.Cu") (net 3) (tstamp 2881cd3f-b895-430f-82b1-392459cce45c)) + (segment (start 94.95 132.65) (end 96.295 133.995) (width 0.3) (layer "B.Cu") (net 3) (tstamp 29be5fbe-5b85-40f8-9aca-02f2e0311721)) + (segment (start 123.53 147.32) (end 122.2 148.65) (width 0.3) (layer "B.Cu") (net 3) (tstamp 2c73c00c-b4ba-474c-aa45-1dd65e0bd148)) + (segment (start 71.005479 138.774521) (end 77.13 132.65) (width 0.3) (layer "B.Cu") (net 3) (tstamp 7751263a-8396-49cb-af8d-ccc3aa1d96a9)) + (segment (start 123.53 140.4) (end 123.53 147.32) (width 0.3) (layer "B.Cu") (net 3) (tstamp 8d138503-7440-4d27-a053-1ff061ff15cf)) + (segment (start 80.780479 154.150479) (end 74.860479 154.150479) (width 0.3) (layer "B.Cu") (net 3) (tstamp 97bebf63-0946-4fbe-8efa-c2b65d8f4585)) + (segment (start 86.18 159.55) (end 80.780479 154.150479) (width 0.3) (layer "B.Cu") (net 3) (tstamp 9946c19b-0b32-4849-976d-9acd5cae2927)) + (segment (start 77.13 132.65) (end 94.95 132.65) (width 0.3) (layer "B.Cu") (net 3) (tstamp c3ac118b-bbc0-48f4-bf8b-acc0d731cf02)) + (segment (start 120.83 137.7) (end 123.53 140.4) (width 0.3) (layer "B.Cu") (net 3) (tstamp c56655ee-b0a2-41b7-b2d7-32df75a44727)) + (segment (start 90.58 159.55) (end 86.18 159.55) (width 0.3) (layer "B.Cu") (net 3) (tstamp d01653ee-e205-47ec-aedc-a5039a8e42d7)) + (segment (start 98.55 139.7625) (end 99.3375 140.55) (width 0.3) (layer "F.Cu") (net 4) (tstamp 3c39ec60-f8d8-4b0a-8a43-3af570a82218)) + (segment (start 98.55 138.65) (end 98.55 139.7625) (width 0.3) (layer "F.Cu") (net 4) (tstamp 435f221a-8873-4ace-8db8-98e6f2ffc718)) + (via (at 98.55 138.65) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 4) (tstamp 7040ef75-4e6d-471d-a1f1-25acc1330705)) + (segment (start 93.45 143.75) (end 98.55 138.65) (width 0.3) (layer "B.Cu") (net 4) (tstamp adbd8080-aeb0-41b2-94c7-161bfc1d4a7f)) + (segment (start 90.58 143.75) (end 93.45 143.75) (width 0.3) (layer "B.Cu") (net 4) (tstamp dcc7b0a9-5a4c-4a1e-950d-bad49912b147)) + (segment (start 95.83 141.07) (end 97.31 142.55) (width 0.3) (layer "F.Cu") (net 5) (tstamp 13fb2014-ad2b-4fa5-bdd3-5f2c6983dc86)) + (segment (start 94.67 139.91) (end 95.83 141.07) (width 0.3) (layer "F.Cu") (net 5) (tstamp 64ebad1e-97f7-4730-bb47-d47271e6d24e)) + (segment (start 93.05 137.6) (end 93.05 138.759022) (width 0.3) (layer "F.Cu") (net 5) (tstamp 86d4cd9e-2a2b-47b8-85a0-2c1fe58937ae)) + (segment (start 92.4175 136.96) (end 92.4175 136.9675) (width 0.3) (layer "F.Cu") (net 5) (tstamp 88c87765-dd91-4022-9f6f-5b709763376a)) + (segment (start 97.31 142.55) (end 99.3375 142.55) (width 0.3) (layer "F.Cu") (net 5) (tstamp a89084d5-ef05-4e5c-8123-2add0a844977)) + (segment (start 94.200978 139.91) (end 94.67 139.91) (width 0.3) (layer "F.Cu") (net 5) (tstamp d69961c1-0cc4-468b-9205-813dd1433339)) + (segment (start 93.05 138.759022) (end 94.200978 139.91) (width 0.3) (layer "F.Cu") (net 5) (tstamp e87a4d7b-038b-4d6e-92c1-0da8bd9b51c1)) + (segment (start 92.4175 136.9675) (end 93.05 137.6) (width 0.3) (layer "F.Cu") (net 5) (tstamp fc6bb9fb-dc58-4fb2-a4aa-40e2a09aa44f)) + (segment (start 118.35 153.315) (end 118.35 154.05) (width 0.3) (layer "F.Cu") (net 6) (tstamp 0b8652f1-469c-4b8b-8256-d50df625da4e)) + (segment (start 124.840978 151) (end 126.8125 151) (width 0.3) (layer "F.Cu") (net 6) (tstamp 108d71e5-233b-4029-a9bc-259c4124e3da)) + (segment (start 111.4375 156.15) (end 111.775 156.15) (width 0.3) (layer "F.Cu") (net 6) (tstamp 1d190890-561a-4d1f-9562-55084656593a)) + (segment (start 117.9 152) (end 118.35 152.45) (width 0.3) (layer "F.Cu") (net 6) (tstamp 2ed7eb1a-7e7e-4013-a754-41fc54eb2207)) + (segment (start 111.775 156.15) (end 114.2 153.725) (width 0.3) (layer "F.Cu") (net 6) (tstamp 46a88792-c1ec-4856-a6ce-94898bfdc304)) + (segment (start 118.35 154.05) (end 119.3 155) (width 0.3) (layer "F.Cu") (net 6) (tstamp 480bc57c-8600-45c0-bb35-b40f86d4fe00)) + (segment (start 119.3 155) (end 122.4 155) (width 0.3) (layer "F.Cu") (net 6) (tstamp 5f48eb93-e424-4bc1-ad8c-c6ea2106718c)) + (segment (start 115.9 152) (end 117.9 152) (width 0.3) (layer "F.Cu") (net 6) (tstamp 630dd9b0-cb67-4fac-b74e-117bc032e9a7)) + (segment (start 114.2 153.725) (end 114.2 153.7) (width 0.3) (layer "F.Cu") (net 6) (tstamp 8438854e-39ec-4b1b-bc8e-daf8fba9160d)) + (segment (start 123.25 153.315) (end 123.25 152.590978) (width 0.3) (layer "F.Cu") (net 6) (tstamp 93f780d5-67f7-4459-9d0a-e9109b44eadf)) + (segment (start 123.25 154.15) (end 123.25 153.315) (width 0.3) (layer "F.Cu") (net 6) (tstamp af1f599d-73ba-4b33-9515-3024de0619d5)) + (segment (start 123.25 152.590978) (end 124.840978 151) (width 0.3) (layer "F.Cu") (net 6) (tstamp bfe2a81e-5b71-41f9-b16d-5e5da8ef4fa7)) + (segment (start 118.35 152.45) (end 118.35 153.315) (width 0.3) (layer "F.Cu") (net 6) (tstamp d5170e75-d9bc-49e3-bd92-f94f596ffa01)) + (segment (start 122.4 155) (end 123.25 154.15) (width 0.3) (layer "F.Cu") (net 6) (tstamp e43ff746-3f47-4a06-8cbc-a97e05fc91da)) + (segment (start 114.2 153.7) (end 115.9 152) (width 0.3) (layer "F.Cu") (net 6) (tstamp f6173929-82fe-4f42-a09f-38683d840ce0)) + (segment (start 109.1625 156.15) (end 108.6 156.7125) (width 0.3) (layer "F.Cu") (net 7) (tstamp 1d074b70-cfaa-4a59-a836-bb5f16d50d7d)) + (segment (start 114.26 160.29) (end 112.255 160.29) (width 0.3) (layer "F.Cu") (net 7) (tstamp 27ba8fec-3fb1-4520-94c3-98ff251a7dee)) + (segment (start 108.9 158.8) (end 110.765 158.8) (width 0.3) (layer "F.Cu") (net 7) (tstamp 3df85c73-7ed1-4bf0-9c0c-46e40f1d2444)) + (segment (start 106.6225 159.7775) (end 107.14 159.7775) (width 0.3) (layer "F.Cu") (net 7) (tstamp 48572e36-91ac-4081-b61c-5ec725079e0d)) + (segment (start 103.55 160.105) (end 104.345 160.9) (width 0.3) (layer "F.Cu") (net 7) (tstamp 650434c2-0fa4-4123-a989-4bcb096c485f)) + (segment (start 104.345 160.9) (end 105.5 160.9) (width 0.3) (layer "F.Cu") (net 7) (tstamp aa925816-5475-4e73-aa45-af326689d471)) + (segment (start 105.5 160.9) (end 106.6225 159.7775) (width 0.3) (layer "F.Cu") (net 7) (tstamp aad7ad6a-d084-4f4b-8d05-4909637fa916)) + (segment (start 112.255 160.29) (end 112.095 160.13) (width 0.3) (layer "F.Cu") (net 7) (tstamp c0fb60e5-dd62-4844-9bbf-66fca0584e8a)) + (segment (start 114.26 160.29) (end 126.31 160.29) (width 0.3) (layer "F.Cu") (net 7) (tstamp c3c94378-5ae7-4afc-8ce7-2cb19b5e9276)) + (segment (start 108.6 158.5) (end 108.9 158.8) (width 0.3) (layer "F.Cu") (net 7) (tstamp c573461b-cd55-4d40-99d9-77580c1981af)) + (segment (start 127.8 158.8) (end 127.8 156.5) (width 0.3) (layer "F.Cu") (net 7) (tstamp de28a905-7adf-474e-8880-cd72e85587e6)) + (segment (start 126.31 160.29) (end 127.8 158.8) (width 0.3) (layer "F.Cu") (net 7) (tstamp e0206585-4809-45ae-a00f-509eed76d9c5)) + (segment (start 108.6 156.7125) (end 108.6 158.5) (width 0.3) (layer "F.Cu") (net 7) (tstamp e32f0ede-7392-43f2-b121-2b8ddaeb1b94)) + (segment (start 110.765 158.8) (end 112.095 160.13) (width 0.3) (layer "F.Cu") (net 7) (tstamp e3de7fb4-3c01-4a20-a8c0-250a7b89838c)) + (segment (start 107.14 159.7775) (end 107.3225 159.7775) (width 0.3) (layer "F.Cu") (net 7) (tstamp f82d1f8c-8255-4108-a702-711e2cf9bedc)) + (segment (start 107.3225 159.7775) (end 108.6 158.5) (width 0.3) (layer "F.Cu") (net 7) (tstamp ff5dab5f-94d4-4c08-ae8a-035a6e7a39b1)) + (segment (start 99.1 152.6) (end 99.1 155.995717) (width 0.3) (layer "F.Cu") (net 8) (tstamp 0195acbd-a486-46a3-8a4b-701ccd6edacd)) + (segment (start 106.19 156.56) (end 106.7 156.05) (width 0.3) (layer "F.Cu") (net 8) (tstamp 12398a9e-13bb-44c5-a2bf-38e8db63b3f5)) + (segment (start 99.904994 150.59) (end 99.1 151.394994) (width 0.3) (layer "F.Cu") (net 8) (tstamp 309f6ee7-d24c-423e-848d-919d41991380)) + (segment (start 99.1 155.995717) (end 99.658803 156.55452) (width 0.3) (layer "F.Cu") (net 8) (tstamp 39a45756-d672-4337-8ad8-d7ca98ba8283)) + (segment (start 99.658803 156.55452) (end 100.15452 156.55452) (width 0.3) (layer "F.Cu") (net 8) (tstamp 4a47e150-0282-4344-9762-41f8e10755bb)) + (segment (start 103.615 156.92) (end 103.615 155.91) (width 0.3) (layer "F.Cu") (net 8) (tstamp 79c326dc-45ff-47fe-9248-fa30b8d3bfca)) + (segment (start 100.1825 152.49) (end 99.21 152.49) (width 0.3) (layer "F.Cu") (net 8) (tstamp 94f31e77-918e-4ad6-a5ca-384ec877217a)) + (segment (start 100.15452 156.55452) (end 101.5 157.9) (width 0.3) (layer "F.Cu") (net 8) (tstamp aac14e5c-ba43-48c0-9801-5b14e0d0490d)) + (segment (start 99.1 151.394994) (end 99.1 152.6) (width 0.3) (layer "F.Cu") (net 8) (tstamp b11ae0a6-bce7-4843-a49b-b8846c406063)) + (segment (start 101.5 157.9) (end 102.635 157.9) (width 0.3) (layer "F.Cu") (net 8) (tstamp c5bcf422-9b68-4bf7-a9e0-f46a0c6d7677)) + (segment (start 106.7 156.05) (end 106.075 156.05) (width 0.3) (layer "F.Cu") (net 8) (tstamp d3346441-d0f3-4f37-bd1e-4f10d7067bfd)) + (segment (start 102.635 157.9) (end 103.615 156.92) (width 0.3) (layer "F.Cu") (net 8) (tstamp e07b9429-926f-412c-826e-e50bde323226)) + (segment (start 99.21 152.49) (end 99.1 152.6) (width 0.3) (layer "F.Cu") (net 8) (tstamp e225afe9-542c-4746-a4d3-841c7c2464d1)) + (segment (start 106.075 156.05) (end 104.775 154.75) (width 0.3) (layer "F.Cu") (net 8) (tstamp e340e690-5e44-43ca-9990-c8f95be63f1b)) + (segment (start 100.1825 150.59) (end 99.904994 150.59) (width 0.3) (layer "F.Cu") (net 8) (tstamp ea86c8e5-8bf3-421c-ad85-035656b47052)) + (segment (start 103.615 155.91) (end 104.775 154.75) (width 0.3) (layer "F.Cu") (net 8) (tstamp ee5ed98a-9f1c-4318-9144-6bb54abf08c0)) + (segment (start 106.19 157.9025) (end 106.19 156.56) (width 0.3) (layer "F.Cu") (net 8) (tstamp fff0cdff-a999-4f24-8457-cbee82246ea0)) + (segment (start 98.835 137.2225) (end 98.835 133.995) (width 0.3) (layer "F.Cu") (net 9) (tstamp 0a22e73a-2038-458d-89df-58ef39cdcedd)) + (segment (start 109.8 145.875) (end 109.8 145.45) (width 0.3) (layer "F.Cu") (net 9) (tstamp 0ba30fb0-2935-4309-a872-e24903b912f0)) + (segment (start 109.95 137.3) (end 110.58 136.67) (width 0.3) (layer "F.Cu") (net 9) (tstamp 0d284b8b-66a0-4153-83d1-9c53e1e3a4a5)) + (segment (start 76.85 147.6) (end 80.925 147.6) (width 0.3) (layer "F.Cu") (net 9) (tstamp 1214d833-1cd0-46f9-baf4-d3f8d258c10c)) + (segment (start 86.45 135.9375) (end 89.0075 133.38) (width 0.3) (layer "F.Cu") (net 9) (tstamp 12cc4951-dbe7-4b39-9b77-4e97f169fa48)) + (segment (start 73.09 143.84) (end 76.85 147.6) (width 0.3) (layer "F.Cu") (net 9) (tstamp 14a1b6d1-6c54-4c88-b1ee-1c26ffd60b0e)) + (segment (start 121.3 143.15) (end 121.77 143.62) (width 0.3) (layer "F.Cu") (net 9) (tstamp 1c5a6180-2211-46e1-b102-57393c9cbf93)) + (segment (start 106.79 150.56) (end 107.35 150.56) (width 0.3) (layer "F.Cu") (net 9) (tstamp 1d9a7be8-81a1-4b51-b845-d496c403b66f)) + (segment (start 106.79 150.56) (end 106.79 150.045) (width 0.3) (layer "F.Cu") (net 9) (tstamp 267c9f1a-8028-4e0b-85d0-1b833d7195b1)) + (segment (start 112.3 145.19) (end 113.21 144.28) (width 0.3) (layer "F.Cu") (net 9) (tstamp 275ed8d3-2723-42c3-99ce-e27704de81ab)) + (segment (start 107.35 150.56) (end 108.14 151.35) (width 0.3) (layer "F.Cu") (net 9) (tstamp 2b279f8c-8827-451b-8aec-0f18bc88e4ee)) + (segment (start 112.1 143.15) (end 121.3 143.15) (width 0.3) (layer "F.Cu") (net 9) (tstamp 2d52f12f-3e83-4d79-8e96-b99809be9a32)) + (segment (start 116.515 145.875) (end 117.16 146.52) (width 0.3) (layer "F.Cu") (net 9) (tstamp 3285e7ed-59a1-4b99-8383-497ae96c8753)) + (segment (start 110.275 135.65) (end 110.6 135.325) (width 0.3) (layer "F.Cu") (net 9) (tstamp 337ab529-2190-4d23-bf76-c12a92299562)) + (segment (start 103.455 150.59) (end 104.58 149.465) (width 0.3) (layer "F.Cu") (net 9) (tstamp 3428d0df-b752-4ed3-a36c-9031df09561b)) + (segment (start 78.80452 133.07548) (end 73.09 138.79) (width 0.3) (layer "F.Cu") (net 9) (tstamp 3f626c65-92c5-4102-9dca-d44055cbdad4)) + (segment (start 92.07 146.28) (end 89.65 143.86) (width 0.3) (layer "F.Cu") (net 9) (tstamp 40f0a125-91a6-4136-a378-e8d47d28c080)) + (segment (start 120.06 145.05) (end 120.06 145.14) (width 0.3) (layer "F.Cu") (net 9) (tstamp 48b641e9-9857-46db-8e45-980e37a99858)) + (segment (start 89.0075 133.38) (end 93.674994 133.38) (width 0.3) (layer "F.Cu") (net 9) (tstamp 48f7a926-2b98-49ef-af75-580e36fd2808)) + (segment (start 113.21 144.28) (end 119.29 144.28) (width 0.3) (layer "F.Cu") (net 9) (tstamp 49642b1c-d0b6-4ae6-8d6d-d6c8e58c927c)) + (segment (start 89.0075 133.38) (end 88.70298 133.07548) (width 0.3) (layer "F.Cu") (net 9) (tstamp 5259679c-e945-4991-9136-04b927632334)) + (segment (start 80.925 147.6) (end 80.95 147.575) (width 0.3) (layer "F.Cu") (net 9) (tstamp 6e6a2c2a-b673-4159-baac-46de698c1239)) + (segment (start 121.77 143.62) (end 121.77 144.21) (width 0.3) (layer "F.Cu") (net 9) (tstamp 72c95963-ce77-4123-ade8-eae46b17745a)) + (segment (start 93.674994 133.38) (end 95.954994 135.66) (width 0.3) (layer "F.Cu") (net 9) (tstamp 7536c6e3-27e4-4b6d-832a-0c9c835a83ee)) + (segment (start 104.58 149.465) (end 106.21 149.465) (width 0.3) (layer "F.Cu") (net 9) (tstamp 78fd494a-7dcd-4290-b932-f39330146067)) + (segment (start 115.2 145.875) (end 116.515 145.875) (width 0.3) (layer "F.Cu") (net 9) (tstamp 7ec7266c-bf5d-4df8-97b4-09cf70693f2b)) + (segment (start 108.225 137.3) (end 108.225 136.2625) (width 0.3) (layer "F.Cu") (net 9) (tstamp 7f9e272f-ccb5-498e-87cf-2607311838a6)) + (segment (start 88.70298 133.07548) (end 78.80452 133.07548) (width 0.3) (layer "F.Cu") (net 9) (tstamp 84a73ee2-d9da-468d-924e-27afbcbcb2b1)) + (segment (start 86.525 137.9) (end 86.525 136.0125) (width 0.3) (layer "F.Cu") (net 9) (tstamp 85d6f9f4-67d4-4cbd-a8b8-1b42ac02f736)) + (segment (start 109.8 145.45) (end 112.1 143.15) (width 0.3) (layer "F.Cu") (net 9) (tstamp 8a95abce-4658-4842-83b5-b40d4f3600b6)) + (segment (start 92.7575 146.3775) (end 92.855 146.28) (width 0.3) (layer "F.Cu") (net 9) (tstamp 902912e9-2e2b-4884-a91d-317cc017a01f)) + (segment (start 106.25 147.4625) (end 107.9175 147.4625) (width 0.3) (layer "F.Cu") (net 9) (tstamp a13ad73f-21ae-4e52-8ebc-4b6291a85c7d)) + (segment (start 115.770993 137.7) (end 113.933981 139.537011) (width 0.3) (layer "F.Cu") (net 9) (tstamp aeb71fa2-73f9-4a3d-9092-b0ee2c9d258e)) + (segment (start 92.7575 148.04) (end 92.7575 146.3775) (width 0.3) (layer "F.Cu") (net 9) (tstamp b1f0a7e2-f46f-495a-85a7-6e75704cb9be)) + (segment (start 109.505 145.875) (end 109.8 145.875) (width 0.3) (layer "F.Cu") (net 9) (tstamp b945670a-f380-4680-9f7f-b475693ca47b)) + (segment (start 108.8375 135.65) (end 110.275 135.65) (width 0.3) (layer "F.Cu") (net 9) (tstamp bcdc1964-7c39-422a-b82b-7a80125efb47)) + (segment (start 87.59 137.9) (end 86.525 137.9) (width 0.3) (layer "F.Cu") (net 9) (tstamp c51d5837-500e-409d-8596-df1b3c189a01)) + (segment (start 108.225 136.2625) (end 108.8375 135.65) (width 0.3) (layer "F.Cu") (net 9) (tstamp c537ba8d-19e4-4721-abe8-21e9325e13bc)) + (segment (start 106.79 150.045) (end 106.21 149.465) (width 0.3) (layer "F.Cu") (net 9) (tstamp c5449541-dc46-477d-9859-9f109407781c)) + (segment (start 113.933981 139.537011) (end 108.675489 139.537011) (width 0.3) (layer "F.Cu") (net 9) (tstamp ced9675d-b18c-461b-8a7c-5d7b4e1cb516)) + (segment (start 73.09 138.79) (end 73.09 143.84) (width 0.3) (layer "F.Cu") (net 9) (tstamp cf66b8e7-4a80-4113-bfba-eeb40fd7f86b)) + (segment (start 100.75 139.1375) (end 98.835 137.2225) (width 0.3) (layer "F.Cu") (net 9) (tstamp cf8e0459-6561-483b-9edd-6172dadbeb64)) + (segment (start 97.17 135.66) (end 98.835 133.995) (width 0.3) (layer "F.Cu") (net 9) (tstamp d85f66e5-40bb-4669-96c5-1a31569cdb0b)) + (segment (start 89.65 139.96) (end 87.59 137.9) (width 0.3) (layer "F.Cu") (net 9) (tstamp d8af26dd-0859-499a-b3c0-9fa054bee837)) + (segment (start 86.525 136.0125) (end 86.45 135.9375) (width 0.3) (layer "F.Cu") (net 9) (tstamp dbfb5f8f-e680-4e4f-954d-9d90d509522a)) + (segment (start 92.855 146.28) (end 92.07 146.28) (width 0.3) (layer "F.Cu") (net 9) (tstamp de83f40d-a124-4642-85a1-c46851297941)) + (segment (start 119.29 144.28) (end 120.06 145.05) (width 0.3) (layer "F.Cu") (net 9) (tstamp e1589d8e-2fe3-427c-a9be-4fbe7cdd5b58)) + (segment (start 108.225 137.3) (end 109.95 137.3) (width 0.3) (layer "F.Cu") (net 9) (tstamp e1bae6c4-f402-4442-87b1-d5ca0fbce4e9)) + (segment (start 107.9175 147.4625) (end 109.505 145.875) (width 0.3) (layer "F.Cu") (net 9) (tstamp e6ad9de7-6acf-4d88-97b0-5869dd1049de)) + (segment (start 95.954994 135.66) (end 97.17 135.66) (width 0.3) (layer "F.Cu") (net 9) (tstamp e7192699-6b90-4901-b68e-163a0fe56650)) + (segment (start 102.4575 150.59) (end 103.455 150.59) (width 0.3) (layer "F.Cu") (net 9) (tstamp e760493f-c893-4606-9244-923df49ac161)) + (segment (start 108.675489 139.537011) (end 107.6625 140.55) (width 0.3) (layer "F.Cu") (net 9) (tstamp e974d07c-44db-43fc-8446-9fc16af455d9)) + (segment (start 118.29 137.7) (end 115.770993 137.7) (width 0.3) (layer "F.Cu") (net 9) (tstamp ee567551-e72a-4411-86c1-d9a3e93c118c)) + (segment (start 89.65 143.86) (end 89.65 139.96) (width 0.3) (layer "F.Cu") (net 9) (tstamp f30a751b-24de-4e7f-9863-69f9f3250db6)) + (segment (start 112.3 145.875) (end 112.3 145.19) (width 0.3) (layer "F.Cu") (net 9) (tstamp fdc311bc-6603-4fee-b0fa-ef3eda89d5ff)) + (via (at 108.14 151.35) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 9) (tstamp 140c40bb-8307-45da-834d-f3548b1ff943)) + (via (at 120.06 145.14) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 9) (tstamp 2ca301a5-b249-4d79-b5b0-1e2532651240)) + (via (at 121.77 144.21) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 9) (tstamp 4f4455ed-fad1-44a2-bc93-cc31954521d3)) + (via (at 117.16 146.52) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 9) (tstamp b2c0bc19-aeea-4fe9-aac4-fa4a45eff47a)) + (via (at 110.58 136.67) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 9) (tstamp f72a7f3f-cd55-4600-8078-4328e82d5adc)) + (segment (start 120.06 145.14) (end 120.84 145.14) (width 0.3) (layer "B.Cu") (net 9) (tstamp 14f2d93b-4692-4b20-b70f-47b967468742)) + (segment (start 117.16 146.52) (end 118.68 146.52) (width 0.3) (layer "B.Cu") (net 9) (tstamp 37ef0cb6-0ef7-4c15-8b18-df35674eef01)) + (segment (start 118.29 143.37) (end 120.06 145.14) (width 0.3) (layer "B.Cu") (net 9) (tstamp 5efc96a9-426f-46de-bcb9-52bcb62bdf2b)) + (segment (start 121.8 134.549022) (end 118.649022 137.7) (width 0.3) (layer "B.Cu") (net 9) (tstamp 6262d535-cf3a-41d7-8d36-4e958378d5f1)) + (segment (start 117.16 150.32) (end 117.16 146.52) (width 0.3) (layer "B.Cu") (net 9) (tstamp 81b8889b-5d18-444b-8e89-0be5b512a1f6)) + (segment (start 114.68 152.8) (end 117.16 150.32) (width 0.3) (layer "B.Cu") (net 9) (tstamp 87d55bda-98a2-4c68-8c54-aa7983060fbf)) + (segment (start 121.16 132.54) (end 121.8 133.18) (width 0.3) (layer "B.Cu") (net 9) (tstamp 8be9b503-2301-41b8-ba05-21c217b699e1)) + (segment (start 110.58 136.67) (end 106.89 132.98) (width 0.3) (layer "B.Cu") (net 9) (tstamp 8e4c7a6c-3b5a-4222-b70c-f3f5c72f87c0)) + (segment (start 110.49 151.35) (end 111.94 152.8) (width 0.3) (layer "B.Cu") (net 9) (tstamp 9be0e631-8261-48b6-9ef8-e876876cc6ab)) + (segment (start 118.68 146.52) (end 120.06 145.14) (width 0.3) (layer "B.Cu") (net 9) (tstamp a5725138-a5c0-4e7c-b789-a0ad7bd42241)) + (segment (start 108.14 151.35) (end 110.49 151.35) (width 0.3) (layer "B.Cu") (net 9) (tstamp a9af09c6-757e-43b5-8dea-280b4cc01e2d)) + (segment (start 118.33 132.54) (end 121.16 132.54) (width 0.3) (layer "B.Cu") (net 9) (tstamp ad953746-ce2d-4d2b-b713-08ec25ede59c)) + (segment (start 110.58 136.67) (end 114.2 136.67) (width 0.3) (layer "B.Cu") (net 9) (tstamp b04adb2a-8a9e-41e5-a536-65967034342e)) + (segment (start 121.8 133.18) (end 121.8 134.549022) (width 0.3) (layer "B.Cu") (net 9) (tstamp b3d5bea7-73de-4166-a921-d5b384654dde)) + (segment (start 120.84 145.14) (end 121.77 144.21) (width 0.3) (layer "B.Cu") (net 9) (tstamp bccc983d-f546-44b6-ab2c-ad80d4734d5d)) + (segment (start 118.29 137.7) (end 118.29 143.37) (width 0.3) (layer "B.Cu") (net 9) (tstamp c5e959e3-c5db-41c3-b62b-a12b5f2dbf0f)) + (segment (start 99.85 132.98) (end 98.835 133.995) (width 0.3) (layer "B.Cu") (net 9) (tstamp c7e63816-5aaf-4b6d-a862-d51dc529ccee)) + (segment (start 101.44 136.6) (end 98.835 133.995) (width 0.3) (layer "B.Cu") (net 9) (tstamp cb55dc63-e1cd-4b9a-ac31-5bd7c73e1363)) + (segment (start 118.649022 137.7) (end 118.29 137.7) (width 0.3) (layer "B.Cu") (net 9) (tstamp d390d73f-87d2-43f4-8cc4-091268dc1cee)) + (segment (start 114.2 136.67) (end 118.33 132.54) (width 0.3) (layer "B.Cu") (net 9) (tstamp e718aaa4-d744-4258-b823-4ef1b4baa78a)) + (segment (start 111.94 152.8) (end 114.68 152.8) (width 0.3) (layer "B.Cu") (net 9) (tstamp ea40d542-4ec5-4e77-9e19-fb368a51e7f9)) + (segment (start 106.89 132.98) (end 99.85 132.98) (width 0.3) (layer "B.Cu") (net 9) (tstamp fa84edba-c004-4eb1-848e-da03293956e5)) + (segment (start 101.44 137.17) (end 101.44 136.6) (width 0.3) (layer "B.Cu") (net 9) (tstamp fed01370-ae5b-47a7-ba42-66ddc0893df2)) + (segment (start 84.606916 153.549511) (end 85.94952 152.206907) (width 0.3) (layer "F.Cu") (net 10) (tstamp 018d67a1-8fd5-4ddc-bb35-1b4eb42d63b6)) + (segment (start 76.755 152.05) (end 78.254511 153.549511) (width 0.3) (layer "F.Cu") (net 10) (tstamp 66a72ab6-63fd-468a-a6fe-48dd22e66b37)) + (segment (start 78.254511 153.549511) (end 84.606916 153.549511) (width 0.3) (layer "F.Cu") (net 10) (tstamp 7905151d-4765-423c-b66b-12bc358afb90)) + (segment (start 85.94952 149.62452) (end 85.125 148.8) (width 0.3) (layer "F.Cu") (net 10) (tstamp c0ae9e42-57a2-4428-ba1f-5e0e5650a9eb)) + (segment (start 85.94952 152.206907) (end 85.94952 149.62452) (width 0.3) (layer "F.Cu") (net 10) (tstamp eac06b71-dbc2-4ad8-929e-1eb79d804427)) + (segment (start 86.625 146.6) (end 86.625 147.35) (width 0.3) (layer "F.Cu") (net 11) (tstamp 6a986286-f4db-4d01-a3de-79219ea9ab0d)) + (segment (start 88.075 148.8) (end 88.075 151.35) (width 0.3) (layer "F.Cu") (net 11) (tstamp 827600bf-3948-4431-a5a8-817a59a6bcab)) + (segment (start 93.11 151.35) (end 98.41 146.05) (width 0.3) (layer "F.Cu") (net 11) (tstamp 83a63d68-676f-4c7c-985d-cd0f08daa4f2)) + (segment (start 98.41 146.05) (end 99.3375 146.05) (width 0.3) (layer "F.Cu") (net 11) (tstamp 991f5f49-a4de-414b-99d6-2d3642663557)) + (segment (start 88.075 151.35) (end 93.11 151.35) (width 0.3) (layer "F.Cu") (net 11) (tstamp a50cf53d-faa2-412b-82a2-6a283f3019c9)) + (segment (start 86.625 147.35) (end 88.075 148.8) (width 0.3) (layer "F.Cu") (net 11) (tstamp e27b5a5a-5e5b-45ef-b932-b444c856d53f)) + (segment (start 80.755 152.05) (end 84.425 152.05) (width 0.3) (layer "F.Cu") (net 12) (tstamp 8e348cbc-1f9b-44a4-b9c4-eb8163c2fa61)) + (segment (start 84.425 152.05) (end 85.125 151.35) (width 0.3) (layer "F.Cu") (net 12) (tstamp dc84cc9a-a3e9-46ec-b221-0cefc8ec144d)) + (segment (start 105.03 144.05) (end 107.6625 144.05) (width 0.3) (layer "F.Cu") (net 13) (tstamp 081c444a-6233-4b29-aa85-7a5fb52a5773)) + (segment (start 95.32 159.17) (end 95.3 159.19) (width 0.3) (layer "F.Cu") (net 13) (tstamp 1e8d12c1-f04a-4c37-aef9-4c39eea77a55)) + (segment (start 96.57 159.17) (end 95.32 159.17) (width 0.3) (layer "F.Cu") (net 13) (tstamp 49e5192c-89c6-4047-8872-abf16e4510e0)) + (segment (start 104.57 144.51) (end 105.03 144.05) (width 0.3) (layer "F.Cu") (net 13) (tstamp fab65e91-9b59-495f-a02f-ba0eee71d05a)) + (via (at 104.57 144.51) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 13) (tstamp a6ca45ef-2c8b-4812-8e34-f8a9201fe663)) + (via (at 95.3 159.19) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 13) (tstamp fdcf2ae0-8e3f-48f8-a8ea-87971b7cfde9)) + (segment (start 100.93 143.46) (end 103.52 143.46) (width 0.3) (layer "B.Cu") (net 13) (tstamp 037afa3b-ed00-471b-a127-c9c31a3b48b0)) + (segment (start 95.3 159.19) (end 96.58 157.91) (width 0.3) (layer "B.Cu") (net 13) (tstamp 3f18b4a9-58ce-4caf-8ccd-c742352418d5)) + (segment (start 96.58 157.91) (end 96.58 147.81) (width 0.3) (layer "B.Cu") (net 13) (tstamp 43311539-5a43-40c9-955c-dd74c8d53d58)) + (segment (start 96.58 147.81) (end 100.93 143.46) (width 0.3) (layer "B.Cu") (net 13) (tstamp bc1bb85b-cbee-49fa-84d7-68fae86f753e)) + (segment (start 103.52 143.46) (end 104.57 144.51) (width 0.3) (layer "B.Cu") (net 13) (tstamp c583ff53-8b4e-4581-adb0-bae689eec913)) + (segment (start 98.1 158.825) (end 99.5375 158.825) (width 0.3) (layer "F.Cu") (net 14) (tstamp 2855016f-e424-4a0e-bc87-d6ccdbb74340)) + (segment (start 98.1 159.04) (end 96.57 160.57) (width 0.3) (layer "F.Cu") (net 14) (tstamp 3be89946-2075-4bc6-8d69-16a3b2ae8ee7)) + (segment (start 98.1 158.825) (end 98.1 159.04) (width 0.3) (layer "F.Cu") (net 14) (tstamp 51ba1310-7857-49f4-8486-1f56bbf21660)) + (segment (start 99.5375 158.825) (end 99.8825 158.48) (width 0.3) (layer "F.Cu") (net 14) (tstamp 5daebd42-c051-4bc3-b11b-c7fa084e1283)) + (segment (start 115.384032 155.884032) (end 125.075949 155.884032) (width 0.3) (layer "F.Cu") (net 15) (tstamp 0327ccf1-a12e-4560-b94b-11ab1e808be8)) + (segment (start 126.3 153.364994) (end 128.3875 151.277494) (width 0.3) (layer "F.Cu") (net 15) (tstamp 3983611c-21da-4b87-bc65-480b6b075f5a)) + (segment (start 125.075949 155.884032) (end 126.3 154.659981) (width 0.3) (layer "F.Cu") (net 15) (tstamp 8504bc50-f40b-40b6-8dc9-879745250797)) + (segment (start 114.8 155.3) (end 115.384032 155.884032) (width 0.3) (layer "F.Cu") (net 15) (tstamp 8af4165e-b0d1-4082-aec6-fc5227866bfe)) + (segment (start 113.8 155.3) (end 114.8 155.3) (width 0.3) (layer "F.Cu") (net 15) (tstamp 9b47d346-049e-4a9d-aeb6-21db75dd8761)) + (segment (start 111.1 158) (end 113.8 155.3) (width 0.3) (layer "F.Cu") (net 15) (tstamp 9eea1e32-1818-4fea-bebe-306c95709ca2)) + (segment (start 128.3875 151.277494) (end 128.3875 151) (width 0.3) (layer "F.Cu") (net 15) (tstamp c46a3c8b-35e0-4b6b-8c60-7b658a09b5c8)) + (segment (start 126.3 154.659981) (end 126.3 153.364994) (width 0.3) (layer "F.Cu") (net 15) (tstamp e7ac43f2-b37d-4a71-ba1f-0cf526594e32)) + (segment (start 105.24 159.7775) (end 104.8725 159.7775) (width 0.3) (layer "F.Cu") (net 16) (tstamp 025a9189-5854-4e97-bdbb-5cf58588a833)) + (segment (start 100.525006 157.49) (end 101.7575 158.722494) (width 0.3) (layer "F.Cu") (net 16) (tstamp 2f54ba00-a5c9-4abd-8ae8-cd4e10e18b0d)) + (segment (start 98.11 157.49) (end 100.525006 157.49) (width 0.3) (layer "F.Cu") (net 16) (tstamp 444e2151-9e23-4cfc-ba9e-4329b980429f)) + (segment (start 102.575 159.43) (end 103.55 158.455) (width 0.3) (layer "F.Cu") (net 16) (tstamp 77cbd24c-267e-4ed6-a69b-adc9e38e8165)) + (segment (start 101.7575 158.722494) (end 101.7575 159.43) (width 0.3) (layer "F.Cu") (net 16) (tstamp 7d76a890-8b44-4f26-9114-f8e6c37284ba)) + (segment (start 104.8725 159.7775) (end 103.55 158.455) (width 0.3) (layer "F.Cu") (net 16) (tstamp aed840b5-4462-4ec4-9197-64bef3ada318)) + (segment (start 101.7575 159.43) (end 102.575 159.43) (width 0.3) (layer "F.Cu") (net 16) (tstamp ed08da6e-6734-4f68-a2f7-5e4cf5f0aa1d)) + (segment (start 96.6 157.5) (end 96.7 157.5) (width 0.3) (layer "F.Cu") (net 17) (tstamp 402445d7-64ca-4f9e-92a7-c35433519b0a)) + (segment (start 96.21 154.19) (end 98.11 156.09) (width 0.3) (layer "F.Cu") (net 17) (tstamp 4a8445bb-0bc2-4695-95de-b7dbe7e7d9bc)) + (segment (start 96.7 157.5) (end 98.11 156.09) (width 0.3) (layer "F.Cu") (net 17) (tstamp a4478d06-76de-4886-a037-b53cf9e65c2f)) + (segment (start 94.37 154.19) (end 96.21 154.19) (width 0.3) (layer "F.Cu") (net 17) (tstamp de3e0f60-9f41-464d-88c2-171ceb07c4ed)) + (via (at 94.37 154.19) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 17) (tstamp f714d83b-bdd1-4039-939c-43ff032e8d9f)) + (segment (start 119.7 134.15) (end 116.11048 137.73952) (width 0.3) (layer "B.Cu") (net 17) (tstamp 0ecfc341-3b20-40b5-8422-bba0d2bf8318)) + (segment (start 94.37 147.1) (end 94.37 154.19) (width 0.3) (layer "B.Cu") (net 17) (tstamp 5c4da635-4807-437e-aab9-90d11bdddab2)) + (segment (start 103.73048 137.73952) (end 94.37 147.1) (width 0.3) (layer "B.Cu") (net 17) (tstamp 60dc2e56-616a-4a43-90dd-a6b987bf78d1)) + (segment (start 116.11048 137.73952) (end 103.73048 137.73952) (width 0.3) (layer "B.Cu") (net 17) (tstamp 79ee27d6-c777-47d4-984d-0d2bcf2efd27)) + (segment (start 105.25 140.53) (end 105.25 139.1375) (width 0.3) (layer "F.Cu") (net 18) (tstamp 1f68f932-6f6f-4383-9ce4-7d138f02d441)) + (segment (start 96.6 156.1) (end 95.37 156.1) (width 0.3) (layer "F.Cu") (net 18) (tstamp ac04db1c-2499-4b25-ae7a-61362f66d3ca)) + (segment (start 105.55 140.83) (end 105.25 140.53) (width 0.3) (layer "F.Cu") (net 18) (tstamp b280e00c-af5a-45a2-a20c-67aa5654df02)) + (via (at 95.37 156.1) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 18) (tstamp 4e211e35-5c27-430a-b954-e4ae80672ef0)) + (via (at 105.55 140.83) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 18) (tstamp a0c1fe5e-76af-4355-9403-ca69287eb129)) + (segment (start 102.2 140.83) (end 105.55 140.83) (width 0.3) (layer "B.Cu") (net 18) (tstamp 5a7e9ee1-d746-45da-a10c-474c564778c1)) + (segment (start 95.37 147.66) (end 102.2 140.83) (width 0.3) (layer "B.Cu") (net 18) (tstamp 651c1631-c505-4107-82eb-1a610dab0b8f)) + (segment (start 95.37 156.1) (end 95.37 147.66) (width 0.3) (layer "B.Cu") (net 18) (tstamp b1bf1578-8256-4ae6-9a2e-29667aef54a8)) + (segment (start 126.8125 149.0625) (end 128.85 147.025) (width 0.3) (layer "F.Cu") (net 19) (tstamp b1c09c46-70e5-42b3-a10e-1c4950054fe4)) + (segment (start 126.8125 149.2) (end 126.8125 149.0625) (width 0.3) (layer "F.Cu") (net 19) (tstamp cbd8a0fb-6c64-4f5f-a1eb-1c2c107a5d86)) + (segment (start 89.1 154.68) (end 84.83 154.68) (width 0.3) (layer "F.Cu") (net 25) (tstamp 0c0972e5-e607-4737-ad77-222673cf93ad)) + (segment (start 82.38 147.91) (end 82.265 147.91) (width 0.3) (layer "F.Cu") (net 25) (tstamp 11d82f2d-acbd-4162-86eb-6f959a256815)) + (segment (start 102.494422 149.479511) (end 97.925483 149.479511) (width 0.3) (layer "F.Cu") (net 25) (tstamp 37cd59bf-9f4b-4a73-b5d0-23ae6c6697ae)) + (segment (start 93.184994 154.22) (end 89.56 154.22) (width 0.3) (layer "F.Cu") (net 25) (tstamp 3bd71420-6f99-4cec-b7e5-a262589ee90d)) + (segment (start 97.925483 149.479511) (end 93.184994 154.22) (width 0.3) (layer "F.Cu") (net 25) (tstamp 772278a4-1e25-4f42-8441-a9b5a8e179f1)) + (segment (start 103.75 148.223933) (end 102.494422 149.479511) (width 0.3) (layer "F.Cu") (net 25) (tstamp 81719da3-d837-4f25-acf4-8513d84631f6)) + (segment (start 89.56 154.22) (end 89.1 154.68) (width 0.3) (layer "F.Cu") (net 25) (tstamp 8c74407d-4956-4af4-be00-db72950cb2a8)) + (segment (start 103.75 147.4625) (end 103.75 148.223933) (width 0.3) (layer "F.Cu") (net 25) (tstamp dbe07fec-6b78-4769-b699-926b04419813)) + (segment (start 82.265 147.91) (end 80.95 149.225) (width 0.3) (layer "F.Cu") (net 25) (tstamp dc125c91-ee13-4d5e-bfc6-571d52476f81)) + (via (at 84.83 154.68) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 25) (tstamp 991d76e4-6d53-4a99-814b-9aeee0279d09)) + (via (at 82.38 147.91) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 25) (tstamp ad67ed6f-9c3f-42f7-af95-8abd998df5b3)) + (segment (start 80.755 152.05) (end 80.755 149.535) (width 0.3) (layer "B.Cu") (net 25) (tstamp 04a98c24-e2ad-43e0-a4e1-306b67cf3438)) + (segment (start 82.2 152.05) (end 84.83 154.68) (width 0.3) (layer "B.Cu") (net 25) (tstamp 3114c6cf-149d-46b2-b634-825f792e49c5)) + (segment (start 80.755 149.535) (end 82.38 147.91) (width 0.3) (layer "B.Cu") (net 25) (tstamp 6596e73c-2509-4f33-be11-b363f1c6aadc)) + (segment (start 80.755 152.05) (end 82.2 152.05) (width 0.3) (layer "B.Cu") (net 25) (tstamp e07b5988-5fe3-4308-8ad8-fe752a3a67d7)) + (segment (start 97.76 149.08) (end 93.2695 153.5705) (width 0.3) (layer "F.Cu") (net 26) (tstamp 163c5269-a881-49e5-abc0-8b5719e961e6)) + (segment (start 103.25 147.4625) (end 103.25 148.15894) (width 0.3) (layer "F.Cu") (net 26) (tstamp 26f2fa9f-c511-4b6d-9232-8a5102de6596)) + (segment (start 103.25 148.15894) (end 102.32894 149.08) (width 0.3) (layer "F.Cu") (net 26) (tstamp 30b727ad-0e0d-4304-847e-e76713bddd06)) + (segment (start 93.2695 153.5705) (end 85.64 153.5705) (width 0.3) (layer "F.Cu") (net 26) (tstamp 3d4c7634-caec-4aaf-9389-1d904b8af3d8)) + (segment (start 102.32894 149.08) (end 97.76 149.08) (width 0.3) (layer "F.Cu") (net 26) (tstamp 4d16a13f-a899-4f0e-850d-1a6e1c33c7f4)) + (segment (start 74.32 149.21) (end 76.81 149.21) (width 0.3) (layer "F.Cu") (net 26) (tstamp 77ba4bb6-790e-4ed1-a2a5-c1d22926ff82)) + (segment (start 76.81 149.21) (end 76.85 149.25) (width 0.3) (layer "F.Cu") (net 26) (tstamp a1dc8a05-8278-49ef-9455-4e4db271afa1)) + (via (at 85.64 153.5705) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 26) (tstamp 1882b9fd-64e7-46b3-88ca-57aa9d0f38c1)) + (via (at 74.32 149.21) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 26) (tstamp aed7010e-2e13-4be4-b643-d1aa9c1f78a5)) + (segment (start 85.11 155.89) (end 85.64 155.36) (width 0.3) (layer "B.Cu") (net 26) (tstamp 071039cc-dd68-46d9-88f8-17b74bc09238)) + (segment (start 80.945962 153.750968) (end 83.084994 155.89) (width 0.3) (layer "B.Cu") (net 26) (tstamp 3b01baf6-7cc8-4639-8aa9-cc9c2f8d9147)) + (segment (start 85.64 155.36) (end 85.64 153.5705) (width 0.3) (layer "B.Cu") (net 26) (tstamp 483ffe64-52de-4ccc-9791-99d506168416)) + (segment (start 77.805968 153.750968) (end 80.945962 153.750968) (width 0.3) (layer "B.Cu") (net 26) (tstamp 5e910b67-2491-4d4c-81f9-e76d73dab769)) + (segment (start 76.755 152.05) (end 76.755 152.7) (width 0.3) (layer "B.Cu") (net 26) (tstamp 6bad0199-ecb1-41f3-bb82-428213edf6a2)) + (segment (start 76.755 152.7) (end 77.805968 153.750968) (width 0.3) (layer "B.Cu") (net 26) (tstamp 7158e6e4-da58-4d36-947f-0c7fadd8dc8b)) + (segment (start 83.084994 155.89) (end 85.11 155.89) (width 0.3) (layer "B.Cu") (net 26) (tstamp b3ea22c1-325b-465e-bb11-ec39be0e60be)) + (segment (start 76.755 151.645) (end 74.32 149.21) (width 0.3) (layer "B.Cu") (net 26) (tstamp cffcf78f-a5db-43d7-91f0-5f607d75794e)) + (segment (start 76.755 152.05) (end 76.755 151.645) (width 0.3) (layer "B.Cu") (net 26) (tstamp d4e4bfef-3d33-4d24-817e-f1417a70d496)) + (segment (start 111.04 148.2) (end 111.625 148.2) (width 0.3) (layer "F.Cu") (net 28) (tstamp 5521fe49-2fcb-402e-ae5d-71cab17b4d4e)) + (segment (start 104.75 141.22) (end 104.38 141.59) (width 0.3) (layer "F.Cu") (net 28) (tstamp 5bc4a3a3-fe2f-4715-bda5-24dac21a77be)) + (segment (start 119.7 147.235787) (end 119.7 148.65) (width 0.3) (layer "F.Cu") (net 28) (tstamp 7b72b821-0072-4d80-9931-8aed0ba4bf8b)) + (segment (start 113.02452 146.80048) (end 113.02452 145.37548) (width 0.3) (layer "F.Cu") (net 28) (tstamp 8e4fb982-903c-4856-b0b5-306cd20808d9)) + (segment (start 111.625 148.2) (end 112.3 147.525) (width 0.3) (layer "F.Cu") (net 28) (tstamp b44cbef3-a927-448b-b93b-0f94af774d00)) + (segment (start 112.3 147.525) (end 113.02452 146.80048) (width 0.3) (layer "F.Cu") (net 28) (tstamp c2a1c7c7-747b-41af-b72e-7a2ce53b07f4)) + (segment (start 113.720489 144.679511) (end 117.143724 144.679511) (width 0.3) (layer "F.Cu") (net 28) (tstamp d8b2e1be-8bb0-416e-88fa-b3bd9cff1b30)) + (segment (start 104.75 139.1375) (end 104.75 141.22) (width 0.3) (layer "F.Cu") (net 28) (tstamp d95af6c8-bde2-4936-ad5e-3472798dd8d0)) + (segment (start 112.3 149.125) (end 112.3 147.525) (width 0.3) (layer "F.Cu") (net 28) (tstamp ee88ca1a-e0e8-476d-aee9-0fa577aef130)) + (segment (start 113.02452 145.37548) (end 113.720489 144.679511) (width 0.3) (layer "F.Cu") (net 28) (tstamp f6321de0-772c-46f1-a492-f005bcf38280)) + (segment (start 117.143724 144.679511) (end 119.7 147.235787) (width 0.3) (layer "F.Cu") (net 28) (tstamp f640199d-fc41-4229-b37b-0aff354248ea)) + (via (at 111.04 148.2) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 28) (tstamp 1dd81d81-dfc3-4d82-9fb5-0b1ab349a0ff)) + (via (at 104.38 141.59) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 28) (tstamp ff2d2d8c-ee66-4ba9-b59d-ae43443a123d)) + (segment (start 104.38 141.59) (end 110.99 148.2) (width 0.3) (layer "B.Cu") (net 28) (tstamp 63e9d7fa-c97d-42ee-ab2b-ca2c2d6907bb)) + (segment (start 110.99 148.2) (end 111.04 148.2) (width 0.3) (layer "B.Cu") (net 28) (tstamp 644d8d5d-d9a1-41b8-9ebb-675a79fd4a6f)) + (segment (start 86.245007 145) (end 86.625 145) (width 0.3) (layer "F.Cu") (net 29) (tstamp 7178a96f-cb1d-49d5-9e26-eef7b9f65897)) + (segment (start 84.975 146.6) (end 84.975 146.270007) (width 0.3) (layer "F.Cu") (net 29) (tstamp 75104241-1fac-4fc2-9f3a-3962a0b12cc5)) + (segment (start 87.1375 144.4875) (end 86.625 145) (width 0.3) (layer "F.Cu") (net 29) (tstamp 7e4b96cb-088d-4ea8-a9ce-5c193974bcdf)) + (segment (start 84.975 146.270007) (end 86.245007 145) (width 0.3) (layer "F.Cu") (net 29) (tstamp 95a87f19-a7c3-40a4-afa1-3104bdbcc5a9)) + (segment (start 87.1375 143.35) (end 87.1375 144.4875) (width 0.3) (layer "F.Cu") (net 29) (tstamp f10d6c94-29d6-4271-b7a6-94a8c446180c)) + (segment (start 84.55 135.9375) (end 84.55 137.575) (width 0.3) (layer "F.Cu") (net 30) (tstamp 21c509ff-54b4-42b3-b996-e70cb160844e)) + (segment (start 84.875 139.5) (end 84.975 139.6) (width 0.3) (layer "F.Cu") (net 30) (tstamp 6664f0d6-e454-44e0-99eb-336eb40fad47)) + (segment (start 84.55 137.575) (end 84.875 137.9) (width 0.3) (layer "F.Cu") (net 30) (tstamp 8ad32e87-ece9-4ce1-8d1e-1a684c45e737)) + (segment (start 84.875 137.9) (end 84.875 139.5) (width 0.3) (layer "F.Cu") (net 30) (tstamp d661e604-22f5-497f-a0be-92e0cee58a0b)) + (segment (start 104.25 140.6) (end 103.28 141.57) (width 0.3) (layer "F.Cu") (net 31) (tstamp 05b70627-9e3c-4ef9-8153-c25d65d9ad6c)) + (segment (start 104.25 139.1375) (end 104.25 140.6) (width 0.3) (layer "F.Cu") (net 31) (tstamp 19dcd59e-18ad-481b-834a-bbbe32017f5b)) + (segment (start 119.77951 143.72951) (end 124.7 148.65) (width 0.3) (layer "F.Cu") (net 31) (tstamp 3e8ba646-27c9-423b-8e4c-ec6f64a5506f)) + (segment (start 112.844516 143.72951) (end 119.77951 143.72951) (width 0.3) (layer "F.Cu") (net 31) (tstamp 40f1d626-a368-4668-a799-8cced56b47fc)) + (segment (start 109.8 147.525) (end 111.50951 145.81549) (width 0.3) (layer "F.Cu") (net 31) (tstamp 44e56330-d757-4a1e-bec0-0a9a260a7936)) + (segment (start 109.8 149.125) (end 109.8 147.525) (width 0.3) (layer "F.Cu") (net 31) (tstamp 7159d59f-7bbf-4007-8401-f3693bc7ca11)) + (segment (start 111.50951 145.064516) (end 112.844516 143.72951) (width 0.3) (layer "F.Cu") (net 31) (tstamp 971d4905-473b-4f13-ab0e-53004c230d87)) + (segment (start 111.50951 145.81549) (end 111.50951 145.064516) (width 0.3) (layer "F.Cu") (net 31) (tstamp beb146ba-43d5-4a33-9bda-c9bf19b8664c)) + (segment (start 109.175 148.15) (end 109.8 147.525) (width 0.3) (layer "F.Cu") (net 31) (tstamp d1e4947d-aa4d-4300-bf05-56998a069060)) + (segment (start 108.56 148.15) (end 109.175 148.15) (width 0.3) (layer "F.Cu") (net 31) (tstamp dbae584d-a9a1-4765-a22a-af2caf4203df)) + (via (at 103.28 141.57) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 31) (tstamp de1a6ca9-1e03-4a88-8746-0629ba850426)) + (via (at 108.56 148.15) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 31) (tstamp e96b5d94-f4a6-4272-9586-699ca4e4854f)) + (segment (start 108.56 146.85) (end 108.56 148.15) (width 0.3) (layer "B.Cu") (net 31) (tstamp 1e96605e-6be2-4e05-a2d7-5f1fb2b81e37)) + (segment (start 103.28 141.57) (end 108.56 146.85) (width 0.3) (layer "B.Cu") (net 31) (tstamp b2210de9-5964-473e-96cd-2ef2de05adb5)) + (segment (start 111.4375 152.8375) (end 111 152.4) (width 0.3) (layer "F.Cu") (net 32) (tstamp 13dc572b-a931-4dcf-a0c6-86219266109c)) + (segment (start 111.4375 154.25) (end 111.4375 152.8375) (width 0.3) (layer "F.Cu") (net 32) (tstamp 847d695d-4835-49e4-9c3a-a29c070afce8)) + (segment (start 100.605 155.905) (end 101.09 156.39) (width 0.3) (layer "F.Cu") (net 33) (tstamp 1d86364a-4dc6-42ab-9f88-450ba19b70c8)) + (segment (start 101.135 156.92) (end 100.12 155.905) (width 0.3) (layer "F.Cu") (net 33) (tstamp 2cbcc78b-1790-45eb-a724-f08034525f8c)) + (segment (start 100.808532 145.05) (end 101.336477 144.522055) (width 0.3) (layer "F.Cu") (net 33) (tstamp 518c9d93-0eb0-426d-832a-3b08afc4da21)) + (segment (start 101.965 156.92) (end 101.135 156.92) (width 0.3) (layer "F.Cu") (net 33) (tstamp 52ec0f89-800b-43ce-b7e9-5da1095db2e0)) + (segment (start 99.3375 145.05) (end 100.808532 145.05) (width 0.3) (layer "F.Cu") (net 33) (tstamp 7010898c-bf5a-4108-8e56-984d7f263df2)) + (segment (start 100.12 155.905) (end 100.605 155.905) (width 0.3) (layer "F.Cu") (net 33) (tstamp f2db87e6-fd55-4a79-a9f0-01a601e30368)) + (via (at 101.09 156.39) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 33) (tstamp 3abddadc-f404-4e4d-8798-c5e1defd32c9)) + (via (at 101.336477 144.522055) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 33) (tstamp 5f3cb864-7e28-4ef2-bd15-ab92c6d194ab)) + (segment (start 101.09 156.39) (end 100.45 155.75) (width 0.3) (layer "B.Cu") (net 33) (tstamp 495cb856-0c75-459e-aeb2-50b989a34f1e)) + (segment (start 100.45 145.408532) (end 101.336477 144.522055) (width 0.3) (layer "B.Cu") (net 33) (tstamp 8215fb41-9a03-465a-89c9-2937536e9343)) + (segment (start 100.45 155.75) (end 100.45 145.408532) (width 0.3) (layer "B.Cu") (net 33) (tstamp dd6d0418-a080-464b-8cdb-a0700cbf487c)) + (segment (start 101.38 145.67) (end 101.26 145.55) (width 0.3) (layer "F.Cu") (net 34) (tstamp 39c04b62-55b5-4627-bef2-a65f7ea8cae4)) + (segment (start 109.1625 154.25) (end 108.85 154.25) (width 0.3) (layer "F.Cu") (net 34) (tstamp 408e210f-d1bb-404a-8701-9ec2784e153c)) + (segment (start 108.85 154.25) (end 108.16 153.56) (width 0.3) (layer "F.Cu") (net 34) (tstamp 46e5f383-655d-472f-b502-10433bf5218e)) + (segment (start 110.05 154.25) (end 109.1625 154.25) (width 0.3) (layer "F.Cu") (net 34) (tstamp 733673fb-1c65-4b96-acc6-e5587c286613)) + (segment (start 110.3 156.5) (end 110.3 154.5) (width 0.3) (layer "F.Cu") (net 34) (tstamp 7695201e-3562-425e-b434-74f8305fe11e)) + (segment (start 109.45 157.35) (end 110.3 156.5) (width 0.3) (layer "F.Cu") (net 34) (tstamp a11cf41f-e4ed-4768-bec4-bcd4c711a2b6)) + (segment (start 110.3 154.5) (end 110.05 154.25) (width 0.3) (layer "F.Cu") (net 34) (tstamp e31b6cd0-e2fb-414d-9b6b-62045d8b1da2)) + (segment (start 109.45 158) (end 109.45 157.35) (width 0.3) (layer "F.Cu") (net 34) (tstamp ef06afe5-a679-4e12-a453-76f4768226a8)) + (segment (start 101.26 145.55) (end 99.3375 145.55) (width 0.3) (layer "F.Cu") (net 34) (tstamp f0c5b7ec-1078-45c8-a44e-4d01ac879863)) + (via (at 108.16 153.56) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 34) (tstamp 727a8e56-e866-4305-89a1-1e358919f2ae)) + (via (at 101.38 145.67) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 34) (tstamp a1a0d37c-8938-40f6-a838-92e1f6e6a322)) + (segment (start 101.38 146.78) (end 101.38 145.67) (width 0.3) (layer "B.Cu") (net 34) (tstamp 7ff6d388-df49-4933-97a9-31008dea5371)) + (segment (start 108.16 153.56) (end 101.38 146.78) (width 0.3) (layer "B.Cu") (net 34) (tstamp 9b41442f-2b4a-4db3-91c2-d8258e1020ed)) + (segment (start 103.25 139.1375) (end 103.25 138.376067) (width 0.3) (layer "F.Cu") (net 35) (tstamp 2729902c-d13a-4344-a2aa-3f499de4f22f)) + (segment (start 106.5625 135.65) (end 105.57 135.65) (width 0.3) (layer "F.Cu") (net 35) (tstamp 414d3b30-7e45-45bf-83ad-e413ef7ed0c3)) + (segment (start 105.57 135.65) (end 103.915 133.995) (width 0.3) (layer "F.Cu") (net 35) (tstamp 44204229-cc2a-4548-ba35-ebb3dce35ac6)) + (segment (start 104.326067 137.3) (end 106.575 137.3) (width 0.3) (layer "F.Cu") (net 35) (tstamp 7e078042-b0e6-4877-a407-d6291516f90c)) + (segment (start 106.575 137.3) (end 106.575 135.6625) (width 0.3) (layer "F.Cu") (net 35) (tstamp 8b351e03-f2c2-45f3-935d-e00b005f2b7c)) + (segment (start 103.25 138.376067) (end 104.326067 137.3) (width 0.3) (layer "F.Cu") (net 35) (tstamp a49d09fb-2c7d-4f30-a2f4-68be79732a77)) + (segment (start 106.575 135.6625) (end 106.5625 135.65) (width 0.3) (layer "F.Cu") (net 35) (tstamp b0bf10ab-5418-485d-aa86-886f2a526f04)) + (segment (start 101.375 133.995) (end 102.786021 132.583979) (width 0.3) (layer "F.Cu") (net 36) (tstamp 02b6fae4-aaa0-42ba-8c3b-0bb3b6eb4711)) + (segment (start 107.59 136.824283) (end 107.59 134.499994) (width 0.3) (layer "F.Cu") (net 36) (tstamp 0d567568-4b59-4839-94d3-52fab37d1bc3)) + (segment (start 105.396479 132.583979) (end 106.5625 133.75) (width 0.3) (layer "F.Cu") (net 36) (tstamp 111adb00-ea10-4049-af79-f72fdd88e32b)) + (segment (start 102.786021 132.583979) (end 105.396479 132.583979) (width 0.3) (layer "F.Cu") (net 36) (tstamp 117a77d4-f2e4-46a7-90a5-c7529245dffc)) + (segment (start 107.43 136.984283) (end 107.59 136.824283) (width 0.3) (layer "F.Cu") (net 36) (tstamp 1da2e342-c502-42c7-aaea-2806d0bb7c7c)) + (segment (start 104.12106 138.07) (end 107 138.07) (width 0.3) (layer "F.Cu") (net 36) (tstamp 20da1a9a-bd1c-493c-b723-7cc535fbdb4b)) + (segment (start 103.75 138.44106) (end 104.12106 138.07) (width 0.3) (layer "F.Cu") (net 36) (tstamp 3188f78d-b627-48ce-ba96-e4cbf9535eeb)) + (segment (start 110.6 133.675) (end 110.025 133.1) (width 0.3) (layer "F.Cu") (net 36) (tstamp 44545016-c7ad-4717-83aa-ec46ea740010)) + (segment (start 103.75 139.1375) (end 103.75 138.44106) (width 0.3) (layer "F.Cu") (net 36) (tstamp 5d47d4b8-c4e2-4aef-a824-aaf880b8d35d)) + (segment (start 106.840006 133.75) (end 106.5625 133.75) (width 0.3) (layer "F.Cu") (net 36) (tstamp 7155bd1e-fd1c-4fbf-9098-6ce0835aa75b)) + (segment (start 107.2125 133.1) (end 106.5625 133.75) (width 0.3) (layer "F.Cu") (net 36) (tstamp ac87dd00-6f97-405f-9264-442cbcb76fbf)) + (segment (start 107 138.07) (end 107.43 137.64) (width 0.3) (layer "F.Cu") (net 36) (tstamp ad4ed83c-76d6-43ae-8c6a-e12dda12bdd5)) + (segment (start 107.43 137.64) (end 107.43 136.984283) (width 0.3) (layer "F.Cu") (net 36) (tstamp b81f8a06-1133-472d-b42b-9ab83537f7ba)) + (segment (start 110.025 133.1) (end 107.2125 133.1) (width 0.3) (layer "F.Cu") (net 36) (tstamp e533f30b-0361-4b96-8e5b-5fdef0cf48a1)) + (segment (start 107.59 134.499994) (end 106.840006 133.75) (width 0.3) (layer "F.Cu") (net 36) (tstamp f4cff62c-b798-41e2-883d-b20a7a3066eb)) + (segment (start 85.84 145.97) (end 85.84 147.35) (width 0.3) (layer "F.Cu") (net 37) (tstamp 0677f080-4962-45d1-8401-d8d61594fedb)) + (segment (start 87.09 139.6) (end 88.74 141.25) (width 0.3) (layer "F.Cu") (net 37) (tstamp 136c02cd-44ca-47f8-96dc-b3500559c06e)) + (segment (start 86.625 139.6) (end 87.09 139.6) (width 0.3) (layer "F.Cu") (net 37) (tstamp 22dd2836-c524-4635-9406-c587db8912f3)) + (segment (start 86.96 153.1) (end 92.91 153.1) (width 0.3) (layer "F.Cu") (net 37) (tstamp 2d1f6d33-2d22-4137-ad09-2113ee0130f5)) + (segment (start 87.37 145.81) (end 86 145.81) (width 0.3) (layer "F.Cu") (net 37) (tstamp 55ddd488-6459-4366-a0cf-3c3bbe8bbfb5)) + (segment (start 86.66 152.8) (end 86.96 153.1) (width 0.3) (layer "F.Cu") (net 37) (tstamp 63a6d3e2-33ab-4a0e-9dd2-534c84b81cce)) + (segment (start 86.66 148.17) (end 86.66 152.8) (width 0.3) (layer "F.Cu") (net 37) (tstamp 6bda76bc-026f-4839-8443-f09136aaee53)) + (segment (start 88.74 141.25) (end 88.74 144.44) (width 0.3) (layer "F.Cu") (net 37) (tstamp 98b93d70-346f-4552-891a-cd2e48c6fa9b)) + (segment (start 92.91 153.1) (end 98.5475 147.4625) (width 0.3) (layer "F.Cu") (net 37) (tstamp 9cc5aa05-fcc1-4219-a0cd-e5686855928d)) + (segment (start 85.84 147.35) (end 86.66 148.17) (width 0.3) (layer "F.Cu") (net 37) (tstamp d96af031-2811-4f8a-aaab-a1a56c9d436b)) + (segment (start 98.5475 147.4625) (end 100.75 147.4625) (width 0.3) (layer "F.Cu") (net 37) (tstamp e61c4843-b7b6-48ca-ada5-7a6b7c45319a)) + (segment (start 86 145.81) (end 85.84 145.97) (width 0.3) (layer "F.Cu") (net 37) (tstamp e9c787ec-5261-444b-99e3-6d933d36a7f6)) + (segment (start 88.74 144.44) (end 87.37 145.81) (width 0.3) (layer "F.Cu") (net 37) (tstamp f9bd0179-0b00-4a82-840d-9e2fc4ea5dd6)) + (segment (start 110.135006 144.55) (end 111.934517 142.750489) (width 0.3) (layer "F.Cu") (net 38) (tstamp 160ba0b7-0999-4ae1-b709-babaf6461d4c)) + (segment (start 107.6625 144.55) (end 110.135006 144.55) (width 0.3) (layer "F.Cu") (net 38) (tstamp 74ea9af6-8ed6-4eb6-aaf4-7c173c5c0cc5)) + (segment (start 121.465482 142.750489) (end 124.089993 145.375) (width 0.3) (layer "F.Cu") (net 38) (tstamp 90b0d379-bd57-4107-bad2-bd42445ac396)) + (segment (start 111.934517 142.750489) (end 121.465482 142.750489) (width 0.3) (layer "F.Cu") (net 38) (tstamp bd8037c4-6950-406a-bcce-7cbab5124214)) + (segment (start 124.089993 145.375) (end 128.85 145.375) (width 0.3) (layer "F.Cu") (net 38) (tstamp d1f449ec-acc1-4ffc-8151-22deeab8c621)) + (segment (start 94.81 143.05) (end 92.83 141.07) (width 0.3) (layer "F.Cu") (net 43) (tstamp 0c272f6f-de69-4817-b00b-943e8f722b9b)) + (segment (start 92.4075 140.7925) (end 92.13 141.07) (width 0.3) (layer "F.Cu") (net 43) (tstamp 2f5839fc-20d4-4ede-9b88-b05d9b49e290)) + (segment (start 92.4075 138.33) (end 92.4075 140.7925) (width 0.3) (layer "F.Cu") (net 43) (tstamp a5500523-64c6-48b7-841e-4bbd8c1311bf)) + (segment (start 99.3375 143.05) (end 94.81 143.05) (width 0.3) (layer "F.Cu") (net 43) (tstamp b6161d5f-99bb-41e7-b506-fcc3704e466d)) + (segment (start 92.83 141.07) (end 92.13 141.07) (width 0.3) (layer "F.Cu") (net 43) (tstamp d9117716-3c42-4994-8fea-89daabf9dea5)) + (segment (start 97.75 139.06) (end 97.75 140.65894) (width 0.3) (layer "F.Cu") (net 44) (tstamp 03f1a261-84d2-4c72-882d-1647c0de7d99)) + (segment (start 97.75 140.65894) (end 98.64106 141.55) (width 0.3) (layer "F.Cu") (net 44) (tstamp 29aaae4c-96d2-4365-8a89-667e5c8bb227)) + (segment (start 96.33 137.64) (end 97.75 139.06) (width 0.3) (layer "F.Cu") (net 44) (tstamp 462d7d1f-b89c-4f23-ac13-73dd105c17de)) + (segment (start 92.3975 134.52) (end 93.21 134.52) (width 0.3) (layer "F.Cu") (net 44) (tstamp 966a4772-3cc7-4c1a-af07-6d30dd664894)) + (segment (start 98.64106 141.55) (end 99.3375 141.55) (width 0.3) (layer "F.Cu") (net 44) (tstamp acb3f4a8-d0f1-4f4c-bda5-eb6dbf45b02e)) + (segment (start 93.21 134.52) (end 96.33 137.64) (width 0.3) (layer "F.Cu") (net 44) (tstamp d80eda8a-ea7b-473c-8cda-a9f66301352f)) + (segment (start 99.3375 142.05) (end 97.95 142.05) (width 0.3) (layer "F.Cu") (net 45) (tstamp 06dc3a15-9988-4355-9274-1a68fb933d50)) + (segment (start 93.83 137.1325) (end 93.83 137.64) (width 0.3) (layer "F.Cu") (net 45) (tstamp 286ca3e9-a039-4b88-aa35-872ec92f1d90)) + (segment (start 97.95 142.05) (end 97.22 141.32) (width 0.3) (layer "F.Cu") (net 45) (tstamp 5ddd479b-20ca-47f6-ba04-8e89c56864b1)) + (segment (start 96.91 139.11) (end 94.7 139.11) (width 0.3) (layer "F.Cu") (net 45) (tstamp 9494ed32-c9da-4121-bdc6-8bba003e5eff)) + (segment (start 97.22 141.32) (end 97.22 139.42) (width 0.3) (layer "F.Cu") (net 45) (tstamp 9cc3ffc2-a520-46c7-9ced-149542f491f4)) + (segment (start 92.4175 135.72) (end 93.83 137.1325) (width 0.3) (layer "F.Cu") (net 45) (tstamp a17656ac-431f-458d-a753-1c3da5bc1d8a)) + (segment (start 93.83 138.24) (end 93.83 137.64) (width 0.3) (layer "F.Cu") (net 45) (tstamp aab14fb4-c82e-4d16-8612-7fa98ec5b99c)) + (segment (start 97.22 139.42) (end 96.91 139.11) (width 0.3) (layer "F.Cu") (net 45) (tstamp b9189531-38ed-4394-ad96-b46e72bd5268)) + (segment (start 94.7 139.11) (end 93.83 138.24) (width 0.3) (layer "F.Cu") (net 45) (tstamp ee85f1da-3f72-4307-83e9-800bf962884a)) + (segment (start 94.505 146.28) (end 94.505 144.695) (width 0.3) (layer "F.Cu") (net 47) (tstamp 2f3d9650-3411-4808-921c-5578fbf070e7)) + (segment (start 94.505 144.695) (end 94.83 144.37) (width 0.3) (layer "F.Cu") (net 47) (tstamp 615ffd64-7091-4268-87ba-38ad1e9fbfa8)) + (segment (start 95.65 143.55) (end 99.3375 143.55) (width 0.3) (layer "F.Cu") (net 47) (tstamp f62ca608-49f1-4fb2-96ce-28ad136d28ea)) + (segment (start 94.83 144.37) (end 95.65 143.55) (width 0.3) (layer "F.Cu") (net 47) (tstamp f95560b3-9975-44b0-a2ba-f29532786677)) + (segment (start 113.05098 141.55) (end 115.001469 139.599511) (width 0.3) (layer "F.Cu") (net 48) (tstamp 0d7df408-0f45-444d-a388-a10dd194916a)) + (segment (start 107.6625 141.55) (end 113.05098 141.55) (width 0.3) (layer "F.Cu") (net 48) (tstamp 408e05de-753e-4ea4-970c-d8aec93c4414)) + (segment (start 121.470489 139.599511) (end 123.37 137.7) (width 0.3) (layer "F.Cu") (net 48) (tstamp 649da16a-c068-4f11-b882-de29e3d0ac7d)) + (segment (start 115.001469 139.599511) (end 121.470489 139.599511) (width 0.3) (layer "F.Cu") (net 48) (tstamp b41068ed-658e-405e-a3a4-f8b9e59edd7d)) + (segment (start 116.96551 135.940489) (end 124.550489 135.940489) (width 0.3) (layer "F.Cu") (net 49) (tstamp 37713f9f-5a21-41af-af5f-6ffe82385faa)) + (segment (start 125.91 137.3) (end 125.91 137.7) (width 0.3) (layer "F.Cu") (net 49) (tstamp 5380f67b-c540-479b-8711-1ed066759e57)) + (segment (start 124.550489 135.940489) (end 125.91 137.3) (width 0.3) (layer "F.Cu") (net 49) (tstamp c825d5ea-8c11-4ac2-85c9-7ea4a58f2e42)) + (segment (start 106.25 139.1375) (end 113.768499 139.1375) (width 0.3) (layer "F.Cu") (net 49) (tstamp cdb3c037-7dd9-4406-b076-06ca0b205961)) + (segment (start 113.768499 139.1375) (end 116.96551 135.940489) (width 0.3) (layer "F.Cu") (net 49) (tstamp f4be3583-cc43-4ac1-a0a1-8d1e9aa3fd94)) + (segment (start 95.93 145.32) (end 96.7 144.55) (width 0.3) (layer "F.Cu") (net 50) (tstamp 018a3bde-1fa3-44a0-a161-4e826e588f1a)) + (segment (start 96.7 144.55) (end 99.3375 144.55) (width 0.3) (layer "F.Cu") (net 50) (tstamp 4fcd4c07-ce9e-4b41-b4a9-96f3b2218396)) + (segment (start 95.93 146.9925) (end 95.93 145.32) (width 0.3) (layer "F.Cu") (net 50) (tstamp 5ff248ca-e834-4ac7-831d-373d18f00375)) + (segment (start 94.8825 148.04) (end 95.93 146.9925) (width 0.3) (layer "F.Cu") (net 50) (tstamp b7ac54c2-8d34-4c93-bfe4-c9e84fd58a9c)) + (segment (start 102.75 137.285) (end 102.655 137.19) (width 0.3) (layer "F.Cu") (net 51) (tstamp 3b318622-0027-434f-9fc4-ac75efa80666)) + (segment (start 102.75 139.1375) (end 102.75 137.285) (width 0.3) (layer "F.Cu") (net 51) (tstamp 50da32a0-26bf-4e09-8528-dca11acb1578)) + (segment (start 102.81 137.035) (end 102.655 137.19) (width 0.3) (layer "F.Cu") (net 51) (tstamp 7bc32b17-f25c-4557-8f86-fc012e5736bd)) + (segment (start 102.81 135.74) (end 102.81 137.035) (width 0.3) (layer "F.Cu") (net 51) (tstamp 932d9f61-c2fd-4f03-a9b2-ee69a5a9a75d)) + (via (at 102.81 135.74) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 51) (tstamp bce0cec5-0688-45c3-a695-7da6132d5f86)) + (segment (start 102.46 137.17) (end 102.46 136.09) (width 0.3) (layer "B.Cu") (net 51) (tstamp 781d85bf-812a-446e-8f43-01096985472d)) + (segment (start 102.46 136.09) (end 102.81 135.74) (width 0.3) (layer "B.Cu") (net 51) (tstamp 7dfde782-30e1-46f7-8568-2ab1b5e2d66f)) + (segment (start 116.975 149.3) (end 115.2 147.525) (width 0.3) (layer "F.Cu") (net 52) (tstamp 1cc030ff-48a9-4008-bf05-5fbbcb0afa79)) + (segment (start 121.55 152.35) (end 121.55 153.315) (width 0.3) (layer "F.Cu") (net 52) (tstamp 1dd17500-8e12-4121-bde7-4d936875233d)) + (segment (start 117.025 149.3) (end 116.975 149.3) (width 0.3) (layer "F.Cu") (net 52) (tstamp 625c86de-ea57-42ad-a4ff-f0579849aaa5)) + (segment (start 120.55 152.35) (end 120.7 152.2) (width 0.3) (layer "F.Cu") (net 52) (tstamp 93899d35-6922-4989-b604-0d852c23e939)) + (segment (start 120.7 152.2) (end 121.4 152.2) (width 0.3) (layer "F.Cu") (net 52) (tstamp a5cdd027-a14d-4657-8fe9-4f318f56df7a)) + (segment (start 120.7 152.2) (end 117.8 149.3) (width 0.3) (layer "F.Cu") (net 52) (tstamp b571fca0-9e62-491f-b33e-aea435c4b56f)) + (segment (start 120.55 153.315) (end 120.55 152.35) (width 0.3) (layer "F.Cu") (net 52) (tstamp cf345e8b-650f-4e5e-8ec8-25cbade00f98)) + (segment (start 117.8 149.3) (end 117.025 149.3) (width 0.3) (layer "F.Cu") (net 52) (tstamp ee6a75dd-28c5-412c-a8c6-b97bcf142b60)) + (segment (start 121.4 152.2) (end 121.55 152.35) (width 0.3) (layer "F.Cu") (net 52) (tstamp fa8c0aa6-07a0-4078-b3f6-2537f2863b8f)) + (segment (start 120.05 153.315) (end 120.05 154.15) (width 0.3) (layer "F.Cu") (net 53) (tstamp 54526e66-a16e-45c6-b5c2-b9a1a2ab8d87)) + (segment (start 121.05 154.15) (end 121.05 153.315) (width 0.3) (layer "F.Cu") (net 53) (tstamp 5fb6f09c-5ea5-4b2a-9a61-a3efdfb5d416)) + (segment (start 120.05 154.15) (end 120.3 154.4) (width 0.3) (layer "F.Cu") (net 53) (tstamp 60a9e62a-7164-40cf-b161-f64856cc7f46)) + (segment (start 118.709022 151.1) (end 120.05 152.440978) (width 0.3) (layer "F.Cu") (net 53) (tstamp 694e1643-ec52-432a-9bdb-faa8c663b506)) + (segment (start 117.025 151.1) (end 118.709022 151.1) (width 0.3) (layer "F.Cu") (net 53) (tstamp 6d849ac5-0ae1-4605-94be-f47a8af2295a)) + (segment (start 120.05 152.440978) (end 120.05 153.315) (width 0.3) (layer "F.Cu") (net 53) (tstamp b7cd2d81-c79a-41a4-8fbe-60f122c6c24b)) + (segment (start 120.8 154.4) (end 121.05 154.15) (width 0.3) (layer "F.Cu") (net 53) (tstamp e7daa137-b0b1-49cc-bda1-a69ee2c5c568)) + (segment (start 120.3 154.4) (end 120.8 154.4) (width 0.3) (layer "F.Cu") (net 53) (tstamp f894cbb8-b9d5-440f-aa02-3b99f1bbb01a)) + (segment (start 107.6625 142.55) (end 108.71 142.55) (width 0.3) (layer "F.Cu") (net 54) (tstamp 25c90d50-0bfb-4fdb-8561-8b80c690ec15)) + (segment (start 115.335 151.06) (end 115.375 151.1) (width 0.3) (layer "F.Cu") (net 54) (tstamp 574192f0-1c8f-4b73-abfe-01646562e79a)) + (segment (start 108.71 142.55) (end 109.41 143.25) (width 0.3) (layer "F.Cu") (net 54) (tstamp 6c33f07d-8fcd-43fa-a86f-926e9bab5360)) + (segment (start 114.26 151.06) (end 115.335 151.06) (width 0.3) (layer "F.Cu") (net 54) (tstamp c1ed34fa-87b5-4fd9-8337-5bbcde04044a)) + (via (at 114.26 151.06) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 54) (tstamp 36ffe20a-15b7-4806-9421-2da36e912676)) + (via (at 109.41 143.25) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 54) (tstamp d337c662-c97b-4990-bcce-d9c2f7c6a20d)) + (segment (start 109.41 143.25) (end 113.46 147.3) (width 0.3) (layer "B.Cu") (net 54) (tstamp 547867f3-f626-4859-8370-ed3a06e72c93)) + (segment (start 113.46 150.26) (end 114.26 151.06) (width 0.3) (layer "B.Cu") (net 54) (tstamp 7cd563f1-5d81-4d58-a17c-b4734bcb26bc)) + (segment (start 113.46 147.3) (end 113.46 150.26) (width 0.3) (layer "B.Cu") (net 54) (tstamp 99822c6d-53a7-4da4-834e-3c98441f5b62)) + (segment (start 114.36 149.26) (end 115.335 149.26) (width 0.3) (layer "F.Cu") (net 55) (tstamp 0311d7f4-79bb-4210-bfe0-37d96c7b2206)) + (segment (start 107.6625 142.05) (end 109.65 142.05) (width 0.3) (layer "F.Cu") (net 55) (tstamp 58d93954-71ad-455f-9d90-8b2a3f6edda1)) + (segment (start 115.335 149.26) (end 115.375 149.3) (width 0.3) (layer "F.Cu") (net 55) (tstamp 9d46fd89-3a21-4d92-baec-1afe2af1c311)) + (segment (start 109.65 142.05) (end 110.26 142.66) (width 0.3) (layer "F.Cu") (net 55) (tstamp ab5b431d-3b4e-4c66-8c78-931d286c29d5)) + (via (at 114.36 149.26) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 55) (tstamp 7e5d16c0-5064-409a-8079-9f2346e7c283)) + (via (at 110.26 142.66) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 55) (tstamp f526ffc1-ffb1-4440-9310-37ef71481f52)) + (segment (start 110.26 142.66) (end 114.36 146.76) (width 0.3) (layer "B.Cu") (net 55) (tstamp 7b0ab002-d27e-4ab0-b225-b99533121ce0)) + (segment (start 114.36 146.76) (end 114.36 149.26) (width 0.3) (layer "B.Cu") (net 55) (tstamp a25168b0-04cc-45bc-acae-63125035c02a)) - (zone (net 4) (net_name "GND") (layer "F.Cu") (tstamp d2a22e86-55b0-4ec9-a10f-3446030c22de) (hatch edge 0.508) + (zone (net 3) (net_name "GND") (layers F&B.Cu) (tstamp cba25962-de61-47a5-8133-7f1831545a70) (hatch edge 0.508) (connect_pads (clearance 0.508)) (min_thickness 0.254) (filled_areas_thickness no) (fill yes (thermal_gap 0.508) (thermal_bridge_width 0.508)) @@ -4729,1193 +3726,6 @@ (xy 130 132) ) ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 108.014923 160.715583) - (xy 108.055496 160.773844) - (xy 108.062001 160.813804) - (xy 108.062001 160.827095) - (xy 108.062338 160.833614) - (xy 108.072257 160.929206) - (xy 108.075149 160.9426) - (xy 108.126588 161.096784) - (xy 108.132761 161.109962) - (xy 108.218063 161.247807) - (xy 108.227099 161.259208) - (xy 108.244748 161.276826) - (xy 108.278828 161.339109) - (xy 108.273825 161.409929) - (xy 108.231328 161.466802) - (xy 108.16483 161.491671) - (xy 108.155731 161.492) - (xy 106.660951 161.492) - (xy 106.59283 161.471998) - (xy 106.546337 161.418342) - (xy 106.536233 161.348068) - (xy 106.565727 161.283488) - (xy 106.571855 161.276905) - (xy 106.678876 161.169884) - (xy 106.791352 161.057407) - (xy 106.853664 161.023382) - (xy 106.890334 161.02089) - (xy 106.921041 161.023307) - (xy 106.921051 161.023307) - (xy 106.923498 161.0235) - (xy 107.356502 161.0235) - (xy 107.35895 161.023307) - (xy 107.358958 161.023307) - (xy 107.387421 161.021067) - (xy 107.387426 161.021066) - (xy 107.393831 161.020562) - (xy 107.506892 160.987715) - (xy 107.545988 160.976357) - (xy 107.54599 160.976356) - (xy 107.553601 160.974145) - (xy 107.591829 160.951537) - (xy 107.68998 160.893491) - (xy 107.689983 160.893489) - (xy 107.696807 160.889453) - (xy 107.814453 160.771807) - (xy 107.827549 160.749663) - (xy 107.879441 160.701212) - (xy 107.949292 160.688507) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 110.402126 159.873386) - (xy 110.974595 160.445855) - (xy 111.008621 160.508167) - (xy 111.0115 160.53495) - (xy 111.0115 160.8304) - (xy 111.011837 160.833646) - (xy 111.011837 160.83365) - (xy 111.021752 160.929206) - (xy 111.022474 160.936166) - (xy 111.024655 160.942702) - (xy 111.024655 160.942704) - (xy 111.039672 160.987715) - (xy 111.07845 161.103946) - (xy 111.171522 161.254348) - (xy 111.176704 161.259521) - (xy 111.19404 161.276827) - (xy 111.228119 161.33911) - (xy 111.223116 161.40993) - (xy 111.180618 161.466803) - (xy 111.11412 161.491671) - (xy 111.105022 161.492) - (xy 110.134134 161.492) - (xy 110.066013 161.471998) - (xy 110.01952 161.418342) - (xy 110.009416 161.348068) - (xy 110.03891 161.283488) - (xy 110.044961 161.276983) - (xy 110.063735 161.258176) - (xy 110.072751 161.24676) - (xy 110.157816 161.108757) - (xy 110.163963 161.095576) - (xy 110.215138 160.94129) - (xy 110.218005 160.927914) - (xy 110.227672 160.833562) - (xy 110.228 160.827146) - (xy 110.228 160.402115) - (xy 110.223525 160.386876) - (xy 110.222135 160.385671) - (xy 110.214452 160.384) - (xy 109.017 160.384) - (xy 108.948879 160.363998) - (xy 108.902386 160.310342) - (xy 108.891 160.258) - (xy 108.891 160.002) - (xy 108.911002 159.933879) - (xy 108.964658 159.887386) - (xy 109.017 159.876) - (xy 110.209884 159.876) - (xy 110.235842 159.868378) - (xy 110.277531 159.841585) - (xy 110.348527 159.841584) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 97.399262 161.244923) - (xy 97.421225 161.258224) - (xy 97.469132 161.310621) - (xy 97.481106 161.3806) - (xy 97.453346 161.445944) - (xy 97.394664 161.485907) - (xy 97.355955 161.492) - (xy 97.316245 161.492) - (xy 97.248124 161.471998) - (xy 97.201631 161.418342) - (xy 97.191527 161.348068) - (xy 97.221021 161.283488) - (xy 97.240679 161.265175) - (xy 97.258426 161.251874) - (xy 97.324932 161.227025) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 78.174671 132.528002) - (xy 78.221164 132.581658) - (xy 78.231268 132.651932) - (xy 78.201774 132.716512) - (xy 78.195645 132.723095) - (xy 72.692395 138.226345) - (xy 72.683615 138.234335) - (xy 72.683613 138.234337) - (xy 72.67692 138.238584) - (xy 72.671494 138.244362) - (xy 72.671493 138.244363) - (xy 72.628396 138.290257) - (xy 72.625641 138.293099) - (xy 72.605073 138.313667) - (xy 72.602356 138.31717) - (xy 72.594648 138.326195) - (xy 72.563028 138.359867) - (xy 72.559207 138.366818) - (xy 72.559206 138.366819) - (xy 72.552697 138.378658) - (xy 72.541843 138.395182) - (xy 72.536342 138.402275) - (xy 72.528696 138.412132) - (xy 72.525549 138.419404) - (xy 72.525548 138.419406) - (xy 72.510346 138.454535) - (xy 72.505124 138.465195) - (xy 72.486964 138.498228) - (xy 72.482876 138.505663) - (xy 72.477541 138.526441) - (xy 72.471142 138.545131) - (xy 72.46262 138.564824) - (xy 72.46138 138.572655) - (xy 72.455394 138.610448) - (xy 72.452987 138.622071) - (xy 72.447582 138.643125) - (xy 72.4415 138.666812) - (xy 72.4415 138.688259) - (xy 72.439949 138.707969) - (xy 72.436594 138.729152) - (xy 72.43734 138.737043) - (xy 72.440941 138.775138) - (xy 72.4415 138.786996) - (xy 72.4415 143.767944) - (xy 72.440941 143.7798) - (xy 72.439212 143.787537) - (xy 72.439461 143.795459) - (xy 72.441438 143.858369) - (xy 72.4415 143.862327) - (xy 72.4415 143.891432) - (xy 72.442056 143.895832) - (xy 72.442988 143.907664) - (xy 72.444438 143.953831) - (xy 72.44665 143.961444) - (xy 72.44665 143.961445) - (xy 72.450419 143.974416) - (xy 72.45443 143.993782) - (xy 72.457118 144.015064) - (xy 72.460034 144.022429) - (xy 72.460035 144.022433) - (xy 72.474126 144.058021) - (xy 72.477965 144.069231) - (xy 72.490855 144.1136) - (xy 72.501775 144.132065) - (xy 72.510466 144.149805) - (xy 72.518365 144.169756) - (xy 72.539975 144.1995) - (xy 72.545516 144.207126) - (xy 72.552033 144.217048) - (xy 72.571507 144.249977) - (xy 72.57151 144.249981) - (xy 72.575547 144.256807) - (xy 72.590711 144.271971) - (xy 72.603551 144.287004) - (xy 72.616159 144.304357) - (xy 72.645343 144.3285) - (xy 72.651752 144.333802) - (xy 72.660532 144.341792) - (xy 75.829595 147.510855) - (xy 75.863621 147.573167) - (xy 75.8665 147.59995) - (xy 75.866501 147.728376) - (xy 75.866501 147.856634) - (xy 75.866764 147.859492) - (xy 75.866764 147.859501) - (xy 75.868273 147.875919) - (xy 75.873247 147.930062) - (xy 75.875246 147.93644) - (xy 75.875246 147.936441) - (xy 75.916324 148.067519) - (xy 75.924528 148.093699) - (xy 76.013361 148.240381) - (xy 76.108885 148.335905) - (xy 76.142911 148.398217) - (xy 76.137846 148.469032) - (xy 76.108885 148.514095) - (xy 76.013361 148.609619) - (xy 75.924528 148.756301) - (xy 75.922257 148.763548) - (xy 75.922256 148.76355) - (xy 75.910249 148.801866) - (xy 75.873247 148.919938) - (xy 75.8665 148.993365) - (xy 75.8665 148.996263) - (xy 75.866501 149.250665) - (xy 75.866501 149.506634) - (xy 75.873247 149.580062) - (xy 75.875246 149.58644) - (xy 75.875246 149.586441) - (xy 75.918347 149.723974) - (xy 75.924528 149.743699) - (xy 76.013361 149.890381) - (xy 76.134619 150.011639) - (xy 76.14752 150.019452) - (xy 76.210715 150.057724) - (xy 76.258622 150.110121) - (xy 76.270595 150.180101) - (xy 76.242834 150.245445) - (xy 76.184152 150.285407) - (xy 76.145444 150.2915) - (xy 76.106866 150.2915) - (xy 76.044684 150.298255) - (xy 75.908295 150.349385) - (xy 75.791739 150.436739) - (xy 75.704385 150.553295) - (xy 75.653255 150.689684) - (xy 75.6465 150.751866) - (xy 75.6465 153.348134) - (xy 75.653255 153.410316) - (xy 75.704385 153.546705) - (xy 75.791739 153.663261) - (xy 75.908295 153.750615) - (xy 76.044684 153.801745) - (xy 76.106866 153.8085) - (xy 77.403134 153.8085) - (xy 77.465316 153.801745) - (xy 77.601705 153.750615) - (xy 77.718261 153.663261) - (xy 77.805615 153.546705) - (xy 77.856745 153.410316) - (xy 77.8635 153.348134) - (xy 77.8635 151.92495) - (xy 77.883502 151.856829) - (xy 77.900405 151.835855) - (xy 78.840855 150.895405) - (xy 78.903167 150.861379) - (xy 78.92995 150.8585) - (xy 79.5205 150.8585) - (xy 79.588621 150.878502) - (xy 79.635114 150.932158) - (xy 79.6465 150.9845) - (xy 79.6465 153.348134) - (xy 79.653255 153.410316) - (xy 79.704385 153.546705) - (xy 79.791739 153.663261) - (xy 79.908295 153.750615) - (xy 80.044684 153.801745) - (xy 80.106866 153.8085) - (xy 81.403134 153.8085) - (xy 81.465316 153.801745) - (xy 81.601705 153.750615) - (xy 81.718261 153.663261) - (xy 81.805615 153.546705) - (xy 81.856745 153.410316) - (xy 81.8635 153.348134) - (xy 81.8635 152.8345) - (xy 81.883502 152.766379) - (xy 81.937158 152.719886) - (xy 81.9895 152.7085) - (xy 84.342944 152.7085) - (xy 84.3548 152.709059) - (xy 84.354803 152.709059) - (xy 84.362537 152.710788) - (xy 84.433369 152.708562) - (xy 84.437327 152.7085) - (xy 84.466432 152.7085) - (xy 84.470832 152.707944) - (xy 84.482674 152.707012) - (xy 84.485533 152.706922) - (xy 84.49639 152.706582) - (xy 84.540005 152.712927) - (xy 84.638608 152.745631) - (xy 84.63861 152.745631) - (xy 84.645139 152.747797) - (xy 84.651975 152.748497) - (xy 84.651978 152.748498) - (xy 84.695031 152.752909) - (xy 84.7496 152.7585) - (xy 85.5004 152.7585) - (xy 85.503646 152.758163) - (xy 85.50365 152.758163) - (xy 85.599308 152.748238) - (xy 85.599312 152.748237) - (xy 85.606166 152.747526) - (xy 85.612702 152.745345) - (xy 85.612704 152.745345) - (xy 85.744806 152.701272) - (xy 85.773946 152.69155) - (xy 85.924348 152.598478) - (xy 86.049305 152.473303) - (xy 86.068157 152.442719) - (xy 86.138275 152.328968) - (xy 86.138276 152.328966) - (xy 86.142115 152.322738) - (xy 86.170737 152.236444) - (xy 86.195632 152.161389) - (xy 86.195632 152.161387) - (xy 86.197797 152.154861) - (xy 86.199025 152.142882) - (xy 86.2053 152.081635) - (xy 86.2085 152.0504) - (xy 86.2085 150.6496) - (xy 86.203828 150.604572) - (xy 86.198238 150.550692) - (xy 86.198237 150.550688) - (xy 86.197526 150.543834) - (xy 86.194245 150.533998) - (xy 86.143868 150.383002) - (xy 86.14155 150.376054) - (xy 86.048478 150.225652) - (xy 86.043296 150.220479) - (xy 85.986891 150.164172) - (xy 85.952812 150.101889) - (xy 85.957815 150.031069) - (xy 85.986736 149.985981) - (xy 86.044134 149.928483) - (xy 86.049305 149.923303) - (xy 86.069306 149.890855) - (xy 86.138275 149.778968) - (xy 86.138276 149.778966) - (xy 86.142115 149.772738) - (xy 86.182544 149.650847) - (xy 86.195632 149.611389) - (xy 86.195632 149.611387) - (xy 86.197797 149.604861) - (xy 86.199685 149.586441) - (xy 86.204502 149.539416) - (xy 86.2085 149.5004) - (xy 86.2085 148.0996) - (xy 86.207888 148.093699) - (xy 86.198238 148.000692) - (xy 86.198237 148.000688) - (xy 86.197526 147.993834) - (xy 86.185844 147.958817) - (xy 86.143868 147.833002) - (xy 86.14155 147.826054) - (xy 86.091304 147.744858) - (xy 86.072467 147.676409) - (xy 86.093628 147.608639) - (xy 86.148069 147.563068) - (xy 86.218505 147.554163) - (xy 86.236128 147.558323) - (xy 86.294938 147.576753) - (xy 86.368365 147.5835) - (xy 86.384614 147.5835) - (xy 86.62505 147.583499) - (xy 86.693169 147.603501) - (xy 86.714144 147.620404) - (xy 86.969659 147.875919) - (xy 87.003685 147.938231) - (xy 87.003764 147.990434) - (xy 87.002203 147.995139) - (xy 86.9915 148.0996) - (xy 86.9915 149.5004) - (xy 86.991837 149.503646) - (xy 86.991837 149.50365) - (xy 87.001428 149.596081) - (xy 87.002474 149.606166) - (xy 87.004655 149.612702) - (xy 87.004655 149.612704) - (xy 87.014262 149.6415) - (xy 87.05845 149.773946) - (xy 87.151522 149.924348) - (xy 87.156704 149.929521) - (xy 87.213109 149.985828) - (xy 87.247188 150.048111) - (xy 87.242185 150.118931) - (xy 87.213264 150.164019) - (xy 87.150695 150.226697) - (xy 87.146855 150.232927) - (xy 87.146854 150.232928) - (xy 87.071476 150.355214) - (xy 87.057885 150.377262) - (xy 87.036851 150.440679) - (xy 87.023409 150.481206) - (xy 87.002203 150.545139) - (xy 86.9915 150.6496) - (xy 86.9915 152.0504) - (xy 86.991837 152.053646) - (xy 86.991837 152.05365) - (xy 87.001504 152.146813) - (xy 87.002474 152.156166) - (xy 87.004655 152.162702) - (xy 87.004655 152.162704) - (xy 87.027104 152.229992) - (xy 87.05845 152.323946) - (xy 87.151522 152.474348) - (xy 87.276697 152.599305) - (xy 87.282927 152.603145) - (xy 87.282928 152.603146) - (xy 87.356616 152.648568) - (xy 87.404109 152.70134) - (xy 87.4165 152.755828) - (xy 87.4165 152.947476) - (xy 87.396498 153.015597) - (xy 87.384142 153.031779) - (xy 87.31096 153.113056) - (xy 87.284524 153.158844) - (xy 87.230085 153.253136) - (xy 87.215473 153.278444) - (xy 87.156458 153.460072) - (xy 87.155768 153.466633) - (xy 87.155768 153.466635) - (xy 87.147006 153.55) - (xy 87.136496 153.65) - (xy 87.137186 153.656565) - (xy 87.152927 153.806328) - (xy 87.156458 153.839928) - (xy 87.215473 154.021556) - (xy 87.31096 154.186944) - (xy 87.315378 154.191851) - (xy 87.315379 154.191852) - (xy 87.404234 154.290535) - (xy 87.438747 154.328866) - (xy 87.593248 154.441118) - (xy 87.599276 154.443802) - (xy 87.599278 154.443803) - (xy 87.761441 154.516002) - (xy 87.767712 154.518794) - (xy 87.861112 154.538647) - (xy 87.948056 154.557128) - (xy 87.948061 154.557128) - (xy 87.954513 154.5585) - (xy 88.145487 154.5585) - (xy 88.151939 154.557128) - (xy 88.151944 154.557128) - (xy 88.238888 154.538647) - (xy 88.332288 154.518794) - (xy 88.338559 154.516002) - (xy 88.500722 154.443803) - (xy 88.500724 154.443802) - (xy 88.506752 154.441118) - (xy 88.661253 154.328866) - (xy 88.695766 154.290535) - (xy 88.784621 154.191852) - (xy 88.784622 154.191851) - (xy 88.78904 154.186944) - (xy 88.884527 154.021556) - (xy 88.943542 153.839928) - (xy 88.947074 153.806328) - (xy 88.962814 153.656565) - (xy 88.963504 153.65) - (xy 88.952994 153.55) - (xy 88.944232 153.466635) - (xy 88.944232 153.466633) - (xy 88.943542 153.460072) - (xy 88.884527 153.278444) - (xy 88.869916 153.253136) - (xy 88.792343 153.118777) - (xy 88.792341 153.118774) - (xy 88.78904 153.113056) - (xy 88.78462 153.108147) - (xy 88.784617 153.108143) - (xy 88.765865 153.087317) - (xy 88.735147 153.02331) - (xy 88.7335 153.003006) - (xy 88.7335 152.75584) - (xy 88.753502 152.687719) - (xy 88.793197 152.648696) - (xy 88.868122 152.602331) - (xy 88.868123 152.60233) - (xy 88.874348 152.598478) - (xy 88.881609 152.591205) - (xy 88.883387 152.590232) - (xy 88.885255 152.588751) - (xy 88.885509 152.589071) - (xy 88.943892 152.557129) - (xy 89.014712 152.562135) - (xy 89.059872 152.591132) - (xy 95.674595 159.205855) - (xy 95.708621 159.268167) - (xy 95.7115 159.29495) - (xy 95.7115 159.518134) - (xy 95.718255 159.580316) - (xy 95.769385 159.716705) - (xy 95.77477 159.72389) - (xy 95.774771 159.723892) - (xy 95.82764 159.794435) - (xy 95.852488 159.860942) - (xy 95.837435 159.930324) - (xy 95.82764 159.945565) - (xy 95.775017 160.01578) - (xy 95.769385 160.023295) - (xy 95.718255 160.159684) - (xy 95.7115 160.221866) - (xy 95.7115 160.918134) - (xy 95.718255 160.980316) - (xy 95.769385 161.116705) - (xy 95.856739 161.233261) - (xy 95.899322 161.265175) - (xy 95.941835 161.322034) - (xy 95.94686 161.392852) - (xy 95.9128 161.455145) - (xy 95.850469 161.489136) - (xy 95.823755 161.492) - (xy 73.606973 161.492) - (xy 73.538852 161.471998) - (xy 73.492359 161.418342) - (xy 73.482255 161.348068) - (xy 73.496242 161.305878) - (xy 73.512016 161.276827) - (xy 73.560245 161.187999) - (xy 73.573986 161.162692) - (xy 73.573987 161.16269) - (xy 73.576036 161.158916) - (xy 73.625641 161.027639) - (xy 73.673729 160.90038) - (xy 73.67373 160.900376) - (xy 73.675247 160.896362) - (xy 73.732233 160.647548) - (xy 73.736949 160.626957) - (xy 73.73695 160.626953) - (xy 73.737907 160.622773) - (xy 73.740703 160.59145) - (xy 73.762637 160.345677) - (xy 73.762637 160.345675) - (xy 73.762857 160.343211) - (xy 73.76316 160.31436) - (xy 73.763284 160.302484) - (xy 73.763284 160.302483) - (xy 73.76331 160.3) - (xy 73.759576 160.245229) - (xy 73.744512 160.024254) - (xy 73.744511 160.024248) - (xy 73.74422 160.019977) - (xy 73.740139 160.000268) - (xy 73.711285 159.860942) - (xy 73.708633 159.848134) - (xy 80.7465 159.848134) - (xy 80.753255 159.910316) - (xy 80.804385 160.046705) - (xy 80.891739 160.163261) - (xy 81.008295 160.250615) - (xy 81.144684 160.301745) - (xy 81.206866 160.3085) - (xy 82.503134 160.3085) - (xy 82.565316 160.301745) - (xy 82.701705 160.250615) - (xy 82.818261 160.163261) - (xy 82.905615 160.046705) - (xy 82.956745 159.910316) - (xy 82.9635 159.848134) - (xy 82.9635 157.251866) - (xy 82.956745 157.189684) - (xy 82.905615 157.053295) - (xy 82.818261 156.936739) - (xy 82.701705 156.849385) - (xy 82.565316 156.798255) - (xy 82.503134 156.7915) - (xy 81.206866 156.7915) - (xy 81.144684 156.798255) - (xy 81.008295 156.849385) - (xy 80.891739 156.936739) - (xy 80.804385 157.053295) - (xy 80.753255 157.189684) - (xy 80.7465 157.251866) - (xy 80.7465 159.848134) - (xy 73.708633 159.848134) - (xy 73.687303 159.745135) - (xy 73.593612 159.480561) - (xy 73.588936 159.4715) - (xy 73.466847 159.234957) - (xy 73.466847 159.234956) - (xy 73.464882 159.23115) - (xy 73.458563 159.222158) - (xy 73.305956 159.005022) - (xy 73.303493 159.001517) - (xy 73.112433 158.795912) - (xy 72.895237 158.618139) - (xy 72.655923 158.471487) - (xy 72.633348 158.461577) - (xy 72.402853 158.360397) - (xy 72.398921 158.358671) - (xy 72.379519 158.353144) - (xy 72.133114 158.282954) - (xy 72.133115 158.282954) - (xy 72.128986 158.281778) - (xy 71.923217 158.252493) - (xy 71.855365 158.242836) - (xy 71.855363 158.242836) - (xy 71.851113 158.242231) - (xy 71.846824 158.242209) - (xy 71.846817 158.242208) - (xy 71.57473 158.240783) - (xy 71.574723 158.240783) - (xy 71.570444 158.240761) - (xy 71.566199 158.24132) - (xy 71.566197 158.24132) - (xy 71.504993 158.249378) - (xy 71.292172 158.277397) - (xy 71.021446 158.351459) - (xy 70.763277 158.461577) - (xy 70.709107 158.493997) - (xy 70.698706 158.500222) - (xy 70.629982 158.518042) - (xy 70.562534 158.495878) - (xy 70.517776 158.440767) - (xy 70.508 158.392106) - (xy 70.508 155.33969) - (xy 70.892037 155.33969) - (xy 70.919025 155.562715) - (xy 70.985082 155.777435) - (xy 70.987652 155.782415) - (xy 70.987654 155.782419) - (xy 71.085546 155.972081) - (xy 71.088118 155.977064) - (xy 71.224877 156.155292) - (xy 71.391036 156.306485) - (xy 71.395783 156.309463) - (xy 71.395786 156.309465) - (xy 71.56424 156.415135) - (xy 71.581344 156.425864) - (xy 71.789783 156.509656) - (xy 72.009767 156.555213) - (xy 72.014378 156.555479) - (xy 72.014379 156.555479) - (xy 72.064952 156.558395) - (xy 72.064956 156.558395) - (xy 72.066775 156.5585) - (xy 72.211999 156.5585) - (xy 72.214786 156.558251) - (xy 72.214792 156.558251) - (xy 72.284929 156.551991) - (xy 72.378762 156.543617) - (xy 72.384176 156.542136) - (xy 72.384181 156.542135) - (xy 72.511912 156.507191) - (xy 72.595451 156.484337) - (xy 72.600509 156.481925) - (xy 72.600513 156.481923) - (xy 72.718042 156.425864) - (xy 72.798218 156.387622) - (xy 72.980654 156.256529) - (xy 73.094439 156.139112) - (xy 73.133089 156.099229) - (xy 73.133091 156.099226) - (xy 73.136992 156.095201) - (xy 73.26229 155.908738) - (xy 73.352588 155.703033) - (xy 73.354951 155.693193) - (xy 73.403722 155.490046) - (xy 73.403722 155.490045) - (xy 73.405032 155.484589) - (xy 73.412391 155.356961) - (xy 73.413387 155.33969) - (xy 77.892037 155.33969) - (xy 77.919025 155.562715) - (xy 77.985082 155.777435) - (xy 77.987652 155.782415) - (xy 77.987654 155.782419) - (xy 78.085546 155.972081) - (xy 78.088118 155.977064) - (xy 78.224877 156.155292) - (xy 78.391036 156.306485) - (xy 78.395783 156.309463) - (xy 78.395786 156.309465) - (xy 78.56424 156.415135) - (xy 78.581344 156.425864) - (xy 78.789783 156.509656) - (xy 79.009767 156.555213) - (xy 79.014378 156.555479) - (xy 79.014379 156.555479) - (xy 79.064952 156.558395) - (xy 79.064956 156.558395) - (xy 79.066775 156.5585) - (xy 79.211999 156.5585) - (xy 79.214786 156.558251) - (xy 79.214792 156.558251) - (xy 79.284929 156.551991) - (xy 79.378762 156.543617) - (xy 79.384176 156.542136) - (xy 79.384181 156.542135) - (xy 79.511912 156.507191) - (xy 79.595451 156.484337) - (xy 79.600509 156.481925) - (xy 79.600513 156.481923) - (xy 79.718042 156.425864) - (xy 79.798218 156.387622) - (xy 79.980654 156.256529) - (xy 80.094439 156.139112) - (xy 80.133089 156.099229) - (xy 80.133091 156.099226) - (xy 80.136992 156.095201) - (xy 80.26229 155.908738) - (xy 80.352588 155.703033) - (xy 80.354951 155.693193) - (xy 80.403722 155.490046) - (xy 80.403722 155.490045) - (xy 80.405032 155.484589) - (xy 80.412391 155.356961) - (xy 80.41764 155.265917) - (xy 80.41764 155.265914) - (xy 80.417963 155.26031) - (xy 80.390975 155.037285) - (xy 80.324918 154.822565) - (xy 80.319145 154.811379) - (xy 80.224454 154.627919) - (xy 80.224454 154.627918) - (xy 80.221882 154.622936) - (xy 80.085123 154.444708) - (xy 79.918964 154.293515) - (xy 79.914217 154.290537) - (xy 79.914214 154.290535) - (xy 79.733405 154.177115) - (xy 79.728656 154.174136) - (xy 79.520217 154.090344) - (xy 79.300233 154.044787) - (xy 79.295622 154.044521) - (xy 79.295621 154.044521) - (xy 79.245048 154.041605) - (xy 79.245044 154.041605) - (xy 79.243225 154.0415) - (xy 79.098001 154.0415) - (xy 79.095214 154.041749) - (xy 79.095208 154.041749) - (xy 79.025071 154.048009) - (xy 78.931238 154.056383) - (xy 78.925824 154.057864) - (xy 78.925819 154.057865) - (xy 78.811262 154.089205) - (xy 78.714549 154.115663) - (xy 78.709491 154.118075) - (xy 78.709487 154.118077) - (xy 78.627075 154.157386) - (xy 78.511782 154.212378) - (xy 78.329346 154.343471) - (xy 78.307138 154.366388) - (xy 78.180035 154.497548) - (xy 78.173008 154.504799) - (xy 78.04771 154.691262) - (xy 77.957412 154.896967) - (xy 77.956103 154.902418) - (xy 77.956102 154.902422) - (xy 77.906775 155.107885) - (xy 77.904968 155.115411) - (xy 77.90133 155.178507) - (xy 77.895008 155.288167) - (xy 77.892037 155.33969) - (xy 73.413387 155.33969) - (xy 73.41764 155.265917) - (xy 73.41764 155.265914) - (xy 73.417963 155.26031) - (xy 73.390975 155.037285) - (xy 73.324918 154.822565) - (xy 73.319145 154.811379) - (xy 73.224454 154.627919) - (xy 73.224454 154.627918) - (xy 73.221882 154.622936) - (xy 73.085123 154.444708) - (xy 72.918964 154.293515) - (xy 72.914217 154.290537) - (xy 72.914214 154.290535) - (xy 72.733405 154.177115) - (xy 72.728656 154.174136) - (xy 72.520217 154.090344) - (xy 72.300233 154.044787) - (xy 72.295622 154.044521) - (xy 72.295621 154.044521) - (xy 72.245048 154.041605) - (xy 72.245044 154.041605) - (xy 72.243225 154.0415) - (xy 72.098001 154.0415) - (xy 72.095214 154.041749) - (xy 72.095208 154.041749) - (xy 72.025071 154.048009) - (xy 71.931238 154.056383) - (xy 71.925824 154.057864) - (xy 71.925819 154.057865) - (xy 71.811262 154.089205) - (xy 71.714549 154.115663) - (xy 71.709491 154.118075) - (xy 71.709487 154.118077) - (xy 71.627075 154.157386) - (xy 71.511782 154.212378) - (xy 71.329346 154.343471) - (xy 71.307138 154.366388) - (xy 71.180035 154.497548) - (xy 71.173008 154.504799) - (xy 71.04771 154.691262) - (xy 70.957412 154.896967) - (xy 70.956103 154.902418) - (xy 70.956102 154.902422) - (xy 70.906775 155.107885) - (xy 70.904968 155.115411) - (xy 70.90133 155.178507) - (xy 70.895008 155.288167) - (xy 70.892037 155.33969) - (xy 70.508 155.33969) - (xy 70.508 153.344669) - (xy 72.647001 153.344669) - (xy 72.647371 153.35149) - (xy 72.652895 153.402352) - (xy 72.656521 153.417604) - (xy 72.701676 153.538054) - (xy 72.710214 153.553649) - (xy 72.786715 153.655724) - (xy 72.799276 153.668285) - (xy 72.901351 153.744786) - (xy 72.916946 153.753324) - (xy 73.037394 153.798478) - (xy 73.052649 153.802105) - (xy 73.103514 153.807631) - (xy 73.110328 153.808) - (xy 73.482885 153.808) - (xy 73.498124 153.803525) - (xy 73.499329 153.802135) - (xy 73.501 153.794452) - (xy 73.501 153.789884) - (xy 74.009 153.789884) - (xy 74.013475 153.805123) - (xy 74.014865 153.806328) - (xy 74.022548 153.807999) - (xy 74.399669 153.807999) - (xy 74.40649 153.807629) - (xy 74.457352 153.802105) - (xy 74.472604 153.798479) - (xy 74.593054 153.753324) - (xy 74.608649 153.744786) - (xy 74.710724 153.668285) - (xy 74.723285 153.655724) - (xy 74.799786 153.553649) - (xy 74.808324 153.538054) - (xy 74.853478 153.417606) - (xy 74.857105 153.402351) - (xy 74.862631 153.351486) - (xy 74.863 153.344672) - (xy 74.863 152.322115) - (xy 74.858525 152.306876) - (xy 74.857135 152.305671) - (xy 74.849452 152.304) - (xy 74.027115 152.304) - (xy 74.011876 152.308475) - (xy 74.010671 152.309865) - (xy 74.009 152.317548) - (xy 74.009 153.789884) - (xy 73.501 153.789884) - (xy 73.501 152.322115) - (xy 73.496525 152.306876) - (xy 73.495135 152.305671) - (xy 73.487452 152.304) - (xy 72.665116 152.304) - (xy 72.649877 152.308475) - (xy 72.648672 152.309865) - (xy 72.647001 152.317548) - (xy 72.647001 153.344669) - (xy 70.508 153.344669) - (xy 70.508 151.777885) - (xy 72.647 151.777885) - (xy 72.651475 151.793124) - (xy 72.652865 151.794329) - (xy 72.660548 151.796) - (xy 73.482885 151.796) - (xy 73.498124 151.791525) - (xy 73.499329 151.790135) - (xy 73.501 151.782452) - (xy 73.501 151.777885) - (xy 74.009 151.777885) - (xy 74.013475 151.793124) - (xy 74.014865 151.794329) - (xy 74.022548 151.796) - (xy 74.844884 151.796) - (xy 74.860123 151.791525) - (xy 74.861328 151.790135) - (xy 74.862999 151.782452) - (xy 74.862999 150.755331) - (xy 74.862629 150.74851) - (xy 74.857105 150.697648) - (xy 74.853479 150.682396) - (xy 74.808324 150.561946) - (xy 74.799786 150.546351) - (xy 74.723285 150.444276) - (xy 74.710724 150.431715) - (xy 74.608649 150.355214) - (xy 74.593054 150.346676) - (xy 74.472606 150.301522) - (xy 74.457351 150.297895) - (xy 74.406486 150.292369) - (xy 74.399672 150.292) - (xy 74.027115 150.292) - (xy 74.011876 150.296475) - (xy 74.010671 150.297865) - (xy 74.009 150.305548) - (xy 74.009 151.777885) - (xy 73.501 151.777885) - (xy 73.501 150.310116) - (xy 73.496525 150.294877) - (xy 73.495135 150.293672) - (xy 73.487452 150.292001) - (xy 73.110331 150.292001) - (xy 73.10351 150.292371) - (xy 73.052648 150.297895) - (xy 73.037396 150.301521) - (xy 72.916946 150.346676) - (xy 72.901351 150.355214) - (xy 72.799276 150.431715) - (xy 72.786715 150.444276) - (xy 72.710214 150.546351) - (xy 72.701676 150.561946) - (xy 72.656522 150.682394) - (xy 72.652895 150.697649) - (xy 72.647369 150.748514) - (xy 72.647 150.755328) - (xy 72.647 151.777885) - (xy 70.508 151.777885) - (xy 70.508 148.83969) - (xy 70.892037 148.83969) - (xy 70.919025 149.062715) - (xy 70.985082 149.277435) - (xy 70.987652 149.282415) - (xy 70.987654 149.282419) - (xy 71.074149 149.45) - (xy 71.088118 149.477064) - (xy 71.224877 149.655292) - (xy 71.391036 149.806485) - (xy 71.395783 149.809463) - (xy 71.395786 149.809465) - (xy 71.527191 149.891894) - (xy 71.581344 149.925864) - (xy 71.789783 150.009656) - (xy 72.009767 150.055213) - (xy 72.014378 150.055479) - (xy 72.014379 150.055479) - (xy 72.064952 150.058395) - (xy 72.064956 150.058395) - (xy 72.066775 150.0585) - (xy 72.211999 150.0585) - (xy 72.214786 150.058251) - (xy 72.214792 150.058251) - (xy 72.284929 150.051991) - (xy 72.378762 150.043617) - (xy 72.384176 150.042136) - (xy 72.384181 150.042135) - (xy 72.546513 149.997725) - (xy 72.595451 149.984337) - (xy 72.600509 149.981925) - (xy 72.600513 149.981923) - (xy 72.723411 149.923303) - (xy 72.798218 149.887622) - (xy 72.980654 149.756529) - (xy 73.092125 149.6415) - (xy 73.133089 149.599229) - (xy 73.133091 149.599226) - (xy 73.136992 149.595201) - (xy 73.26229 149.408738) - (xy 73.352588 149.203033) - (xy 73.380589 149.086404) - (xy 73.403722 148.990046) - (xy 73.403722 148.990045) - (xy 73.405032 148.984589) - (xy 73.415763 148.798469) - (xy 73.41764 148.765917) - (xy 73.41764 148.765914) - (xy 73.417963 148.76031) - (xy 73.390975 148.537285) - (xy 73.324918 148.322565) - (xy 73.313272 148.3) - (xy 73.224454 148.127919) - (xy 73.224454 148.127918) - (xy 73.221882 148.122936) - (xy 73.085123 147.944708) - (xy 72.918964 147.793515) - (xy 72.914217 147.790537) - (xy 72.914214 147.790535) - (xy 72.733405 147.677115) - (xy 72.728656 147.674136) - (xy 72.520217 147.590344) - (xy 72.300233 147.544787) - (xy 72.295622 147.544521) - (xy 72.295621 147.544521) - (xy 72.245048 147.541605) - (xy 72.245044 147.541605) - (xy 72.243225 147.5415) - (xy 72.098001 147.5415) - (xy 72.095214 147.541749) - (xy 72.095208 147.541749) - (xy 72.027858 147.54776) - (xy 71.931238 147.556383) - (xy 71.925824 147.557864) - (xy 71.925819 147.557865) - (xy 71.811262 147.589205) - (xy 71.714549 147.615663) - (xy 71.709491 147.618075) - (xy 71.709487 147.618077) - (xy 71.614003 147.663621) - (xy 71.511782 147.712378) - (xy 71.329346 147.843471) - (xy 71.325439 147.847503) - (xy 71.183634 147.993834) - (xy 71.173008 148.004799) - (xy 71.04771 148.191262) - (xy 70.957412 148.396967) - (xy 70.956103 148.402418) - (xy 70.956102 148.402422) - (xy 70.906326 148.609756) - (xy 70.904968 148.615411) - (xy 70.902567 148.657048) - (xy 70.894228 148.801694) - (xy 70.892037 148.83969) - (xy 70.508 148.83969) - (xy 70.508 135.610068) - (xy 70.528002 135.541947) - (xy 70.581658 135.495454) - (xy 70.651932 135.48535) - (xy 70.700954 135.50333) - (xy 70.724981 135.518402) - (xy 70.980788 135.633903) - (xy 71.041021 135.651745) - (xy 71.24579 135.712401) - (xy 71.245795 135.712402) - (xy 71.249903 135.713619) - (xy 71.254137 135.714267) - (xy 71.254142 135.714268) - (xy 71.458017 135.745465) - (xy 71.527347 135.756074) - (xy 71.670292 135.758319) - (xy 71.803694 135.760415) - (xy 71.8037 135.760415) - (xy 71.807985 135.760482) - (xy 72.086626 135.726763) - (xy 72.358112 135.65554) - (xy 72.362072 135.6539) - (xy 72.362077 135.653898) - (xy 72.524224 135.586734) - (xy 72.61742 135.548131) - (xy 72.62308 135.544824) - (xy 72.856054 135.408685) - (xy 72.856055 135.408685) - (xy 72.859752 135.406524) - (xy 72.984767 135.3085) - (xy 73.077252 135.235982) - (xy 73.080624 135.233338) - (xy 73.275948 135.031779) - (xy 73.278481 135.028331) - (xy 73.278485 135.028326) - (xy 73.435349 134.814781) - (xy 73.44211 134.805577) - (xy 73.448045 134.794647) - (xy 73.573986 134.562692) - (xy 73.573987 134.56269) - (xy 73.576036 134.558916) - (xy 73.633568 134.406662) - (xy 73.673729 134.30038) - (xy 73.67373 134.300376) - (xy 73.675247 134.296362) - (xy 73.737907 134.022773) - (xy 73.740083 133.998399) - (xy 73.762637 133.745677) - (xy 73.762637 133.745675) - (xy 73.762857 133.743211) - (xy 73.76331 133.7) - (xy 73.761809 133.677988) - (xy 73.744512 133.424254) - (xy 73.744511 133.424248) - (xy 73.74422 133.419977) - (xy 73.716866 133.287887) - (xy 73.696248 133.188331) - (xy 73.687303 133.145135) - (xy 73.593612 132.880561) - (xy 73.49618 132.691788) - (xy 73.482711 132.622083) - (xy 73.509066 132.556159) - (xy 73.566879 132.51495) - (xy 73.608146 132.508) - (xy 78.10655 132.508) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 126.175627 159.891201) - (xy 126.232463 159.933748) - (xy 126.257274 160.000268) - (xy 126.257207 160.019143) - (xy 126.242865 160.201376) - (xy 126.236803 160.278393) - (xy 126.25296 160.558601) - (xy 126.253785 160.562806) - (xy 126.253786 160.562814) - (xy 126.271307 160.652115) - (xy 126.306996 160.834024) - (xy 126.308383 160.838074) - (xy 126.308384 160.838079) - (xy 126.394675 161.090114) - (xy 126.397911 161.099565) - (xy 126.399837 161.103394) - (xy 126.399838 161.103397) - (xy 126.503439 161.309386) - (xy 126.516177 161.379231) - (xy 126.489133 161.444875) - (xy 126.430892 161.485476) - (xy 126.390874 161.492) - (xy 115.054083 161.492) - (xy 114.985962 161.471998) - (xy 114.939469 161.418342) - (xy 114.929365 161.348068) - (xy 114.958859 161.283488) - (xy 115.014207 161.246476) - (xy 115.037695 161.23864) - (xy 115.058946 161.23155) - (xy 115.209348 161.138478) - (xy 115.334305 161.013303) - (xy 115.338146 161.007072) - (xy 115.342683 161.001327) - (xy 115.344013 161.002377) - (xy 115.390107 160.960892) - (xy 115.444597 160.9485) - (xy 124.659346 160.9485) - (xy 124.671202 160.949059) - (xy 124.671205 160.949059) - (xy 124.678939 160.950788) - (xy 124.749771 160.948562) - (xy 124.753729 160.9485) - (xy 124.782834 160.9485) - (xy 124.787234 160.947944) - (xy 124.799066 160.947012) - (xy 124.845233 160.945562) - (xy 124.865823 160.93958) - (xy 124.885184 160.93557) - (xy 124.892172 160.934688) - (xy 124.898606 160.933875) - (xy 124.898607 160.933875) - (xy 124.906466 160.932882) - (xy 124.913831 160.929966) - (xy 124.913835 160.929965) - (xy 124.949423 160.915874) - (xy 124.960633 160.912035) - (xy 125.005002 160.899145) - (xy 125.023467 160.888225) - (xy 125.041207 160.879534) - (xy 125.061158 160.871635) - (xy 125.098531 160.844482) - (xy 125.10845 160.837967) - (xy 125.141379 160.818493) - (xy 125.141383 160.81849) - (xy 125.148209 160.814453) - (xy 125.163373 160.799289) - (xy 125.178407 160.786448) - (xy 125.189345 160.778501) - (xy 125.195759 160.773841) - (xy 125.225205 160.738247) - (xy 125.233194 160.729468) - (xy 126.0425 159.920162) - (xy 126.104812 159.886136) - ) - ) (filled_polygon (layer "F.Cu") (pts @@ -5940,9 +3750,6 @@ (xy 102.566501 160.358751) (xy 102.566501 160.361634) (xy 102.573247 160.435062) - (xy 102.575246 160.44144) - (xy 102.575246 160.441441) - (xy 102.610619 160.554314) (xy 102.624528 160.598699) (xy 102.713361 160.745381) (xy 102.834619 160.866639) @@ -5952,17 +3759,15 @@ (xy 103.028004 160.970108) (xy 103.144938 161.006753) (xy 103.218365 161.0135) - (xy 103.30005 161.0135) - (xy 103.368171 161.033502) - (xy 103.389145 161.050405) - (xy 103.610865 161.272125) - (xy 103.618858 161.280909) - (xy 103.623104 161.2876) - (xy 103.623989 161.288431) - (xy 103.650819 161.350928) - (xy 103.639109 161.420952) - (xy 103.591401 161.473529) - (xy 103.525724 161.492) + (xy 103.47505 161.0135) + (xy 103.543171 161.033502) + (xy 103.564145 161.050405) + (xy 103.790645 161.276905) + (xy 103.824671 161.339217) + (xy 103.819606 161.410032) + (xy 103.777059 161.466868) + (xy 103.710539 161.491679) + (xy 103.70155 161.492) (xy 98.844045 161.492) (xy 98.775924 161.471998) (xy 98.729431 161.418342) @@ -6039,178 +3844,1512 @@ (filled_polygon (layer "F.Cu") (pts - (xy 129.40993 152.625021) - (xy 129.466802 152.667518) - (xy 129.491671 152.734017) - (xy 129.492 152.743115) - (xy 129.492 158.391166) - (xy 129.471998 158.459287) - (xy 129.418342 158.50578) - (xy 129.348068 158.515884) - (xy 129.300164 158.498598) - (xy 129.295726 158.495878) - (xy 129.292204 158.49372) - (xy 129.259584 158.47373) - (xy 129.259579 158.473727) - (xy 129.255923 158.471487) - (xy 129.233348 158.461577) - (xy 129.002853 158.360397) - (xy 128.998921 158.358671) - (xy 128.979519 158.353144) - (xy 128.733114 158.282954) - (xy 128.733115 158.282954) - (xy 128.728986 158.281778) - (xy 128.523217 158.252493) - (xy 128.455365 158.242836) - (xy 128.455363 158.242836) - (xy 128.451113 158.242231) - (xy 128.446824 158.242209) - (xy 128.446817 158.242208) - (xy 128.17473 158.240783) - (xy 128.174723 158.240783) - (xy 128.170444 158.240761) - (xy 128.166199 158.24132) - (xy 128.166197 158.24132) - (xy 128.021904 158.260317) - (xy 127.951755 158.249378) - (xy 127.898656 158.20225) - (xy 127.879466 158.133896) - (xy 127.900277 158.066018) - (xy 127.916362 158.0463) - (xy 127.967605 157.995057) - (xy 127.976385 157.987067) - (xy 127.976387 157.987065) - (xy 127.98308 157.982818) - (xy 128.031605 157.931144) - (xy 128.034359 157.928303) - (xy 128.054927 157.907735) - (xy 128.057647 157.904228) - (xy 128.065353 157.895206) - (xy 128.091544 157.867315) - (xy 128.096972 157.861535) - (xy 128.103504 157.849653) - (xy 128.107303 157.842744) - (xy 128.118157 157.82622) - (xy 128.126445 157.815534) - (xy 128.131304 157.80927) - (xy 128.134452 157.801996) - (xy 128.149654 157.766867) - (xy 128.154876 157.756207) - (xy 128.173305 157.722686) - (xy 128.173306 157.722684) - (xy 128.177124 157.715739) - (xy 128.182459 157.694961) - (xy 128.188858 157.676271) - (xy 128.19738 157.656578) - (xy 128.19862 157.64875) - (xy 128.199532 157.645611) - (xy 128.237748 157.585777) - (xy 128.285058 157.559865) - (xy 128.367779 157.535597) - (xy 128.367785 157.535594) - (xy 128.373534 157.533908) - (xy 128.417341 157.511346) - (xy 128.556249 157.439804) - (xy 128.556252 157.439802) - (xy 128.56158 157.437058) - (xy 128.72792 157.306396) - (xy 128.731852 157.301865) - (xy 128.731855 157.301862) - (xy 128.862621 157.151167) - (xy 128.866552 157.146637) - (xy 128.869552 157.141451) - (xy 128.869555 157.141447) - (xy 128.969467 156.968742) - (xy 128.972473 156.963546) - (xy 129.041861 156.763729) - (xy 129.043379 156.753261) - (xy 129.071352 156.560336) - (xy 129.071352 156.560333) - (xy 129.072213 156.554396) - (xy 129.062433 156.343101) - (xy 129.0187 156.161635) - (xy 129.014281 156.143299) - (xy 129.01428 156.143297) - (xy 129.012875 156.137466) - (xy 128.969525 156.042122) - (xy 128.939944 155.977064) - (xy 128.925326 155.944913) - (xy 128.818933 155.794927) - (xy 128.806412 155.777275) - (xy 128.806411 155.777274) - (xy 128.802946 155.772389) - (xy 128.67339 155.648366) - (xy 128.65448 155.630264) - (xy 128.65015 155.626119) - (xy 128.472452 155.51138) - (xy 128.387516 155.47715) - (xy 128.281832 155.434558) - (xy 128.281829 155.434557) - (xy 128.276263 155.432314) - (xy 128.068663 155.391772) - (xy 128.063101 155.3915) - (xy 127.107154 155.3915) - (xy 126.949434 155.406548) - (xy 126.746466 155.466092) - (xy 126.741139 155.468836) - (xy 126.741138 155.468836) - (xy 126.563751 155.560196) - (xy 126.563748 155.560198) - (xy 126.55842 155.562942) - (xy 126.39208 155.693604) - (xy 126.388148 155.698135) - (xy 126.388145 155.698138) - (xy 126.288779 155.812648) - (xy 126.253448 155.853363) - (xy 126.250448 155.858549) - (xy 126.250445 155.858553) - (xy 126.169505 155.998463) - (xy 126.147527 156.036454) - (xy 126.078139 156.236271) - (xy 126.077278 156.242206) - (xy 126.077278 156.242208) - (xy 126.050346 156.427957) - (xy 126.047787 156.445604) - (xy 126.057567 156.656899) - (xy 126.058971 156.662724) - (xy 126.058971 156.662725) - (xy 126.088006 156.7832) - (xy 126.107125 156.862534) - (xy 126.109607 156.867992) - (xy 126.109608 156.867996) - (xy 126.152215 156.961703) - (xy 126.194674 157.055087) - (xy 126.317054 157.227611) - (xy 126.46985 157.373881) - (xy 126.474884 157.377131) - (xy 126.474891 157.377137) - (xy 126.494589 157.389855) - (xy 126.540968 157.443609) - (xy 126.550923 157.513904) - (xy 126.521293 157.578422) - (xy 126.515339 157.584803) - (xy 126.27945 157.820692) - (xy 126.217138 157.854718) - (xy 126.146323 157.849653) - (xy 126.089487 157.807106) - (xy 126.069733 157.768015) - (xy 126.058232 157.729923) - (xy 126.053559 157.718584) - (xy 125.96654 157.554923) - (xy 125.959751 157.544706) - (xy 125.842603 157.401067) - (xy 125.833959 157.392363) - (xy 125.691144 157.274216) - (xy 125.680973 157.267356) - (xy 125.517924 157.179196) - (xy 125.506619 157.174444) - (xy 125.391308 157.13875) - (xy 125.377205 157.138544) - (xy 125.374 157.145299) - (xy 125.374 158.538) - (xy 125.353998 158.606121) - (xy 125.300342 158.652614) - (xy 125.248 158.664) + (xy 108.014923 160.715583) + (xy 108.055496 160.773844) + (xy 108.062001 160.813804) + (xy 108.062001 160.827095) + (xy 108.062338 160.833614) + (xy 108.072257 160.929206) + (xy 108.075149 160.9426) + (xy 108.126588 161.096784) + (xy 108.132761 161.109962) + (xy 108.218063 161.247807) + (xy 108.227099 161.259208) + (xy 108.244748 161.276826) + (xy 108.278828 161.339109) + (xy 108.273825 161.409929) + (xy 108.231328 161.466802) + (xy 108.16483 161.491671) + (xy 108.155731 161.492) + (xy 106.14345 161.492) + (xy 106.075329 161.471998) + (xy 106.028836 161.418342) + (xy 106.018732 161.348068) + (xy 106.048226 161.283488) + (xy 106.054355 161.276905) + (xy 106.42573 160.90553) + (xy 106.488042 160.871504) + (xy 106.558857 160.876569) + (xy 106.582891 160.889963) + (xy 106.583193 160.889453) + (xy 106.726399 160.974145) + (xy 106.73401 160.976356) + (xy 106.734012 160.976357) + (xy 106.773108 160.987715) + (xy 106.886169 161.020562) + (xy 106.892574 161.021066) + (xy 106.892579 161.021067) + (xy 106.921042 161.023307) + (xy 106.92105 161.023307) + (xy 106.923498 161.0235) + (xy 107.356502 161.0235) + (xy 107.35895 161.023307) + (xy 107.358958 161.023307) + (xy 107.387421 161.021067) + (xy 107.387426 161.021066) + (xy 107.393831 161.020562) + (xy 107.506892 160.987715) + (xy 107.545988 160.976357) + (xy 107.54599 160.976356) + (xy 107.553601 160.974145) + (xy 107.591829 160.951537) + (xy 107.68998 160.893491) + (xy 107.689983 160.893489) + (xy 107.696807 160.889453) + (xy 107.814453 160.771807) + (xy 107.827549 160.749663) + (xy 107.879441 160.701212) + (xy 107.949292 160.688507) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 78.204671 132.528002) + (xy 78.251164 132.581658) + (xy 78.261268 132.651932) + (xy 78.231774 132.716512) + (xy 78.225645 132.723095) + (xy 72.682395 138.266345) + (xy 72.673615 138.274335) + (xy 72.673613 138.274337) + (xy 72.66692 138.278584) + (xy 72.661494 138.284362) + (xy 72.661493 138.284363) + (xy 72.618396 138.330257) + (xy 72.615641 138.333099) + (xy 72.595073 138.353667) + (xy 72.592356 138.35717) + (xy 72.584648 138.366195) + (xy 72.553028 138.399867) + (xy 72.549207 138.406818) + (xy 72.549206 138.406819) + (xy 72.542697 138.418658) + (xy 72.531843 138.435182) + (xy 72.525067 138.443919) + (xy 72.518696 138.452132) + (xy 72.515549 138.459404) + (xy 72.515548 138.459406) + (xy 72.500346 138.494535) + (xy 72.495124 138.505195) + (xy 72.48362 138.526121) + (xy 72.472876 138.545663) + (xy 72.467541 138.566441) + (xy 72.461142 138.585131) + (xy 72.45262 138.604824) + (xy 72.45138 138.612655) + (xy 72.445394 138.650448) + (xy 72.442987 138.662071) + (xy 72.4315 138.706812) + (xy 72.4315 138.728259) + (xy 72.429949 138.747969) + (xy 72.426594 138.769152) + (xy 72.429804 138.803105) + (xy 72.430941 138.815138) + (xy 72.4315 138.826996) + (xy 72.4315 143.757944) + (xy 72.430941 143.7698) + (xy 72.429212 143.777537) + (xy 72.429461 143.785459) + (xy 72.431438 143.848369) + (xy 72.4315 143.852327) + (xy 72.4315 143.881432) + (xy 72.432056 143.885832) + (xy 72.432988 143.897664) + (xy 72.434438 143.943831) + (xy 72.43665 143.951444) + (xy 72.43665 143.951445) + (xy 72.440419 143.964416) + (xy 72.44443 143.983782) + (xy 72.447118 144.005064) + (xy 72.450034 144.012429) + (xy 72.450035 144.012433) + (xy 72.464126 144.048021) + (xy 72.467965 144.059231) + (xy 72.480855 144.1036) + (xy 72.491775 144.122065) + (xy 72.500466 144.139805) + (xy 72.508365 144.159756) + (xy 72.535516 144.197126) + (xy 72.542033 144.207048) + (xy 72.561507 144.239977) + (xy 72.56151 144.239981) + (xy 72.565547 144.246807) + (xy 72.580711 144.261971) + (xy 72.593551 144.277004) + (xy 72.606159 144.294357) + (xy 72.637243 144.320072) + (xy 72.641752 144.323802) + (xy 72.650532 144.331792) + (xy 75.829595 147.510855) + (xy 75.863621 147.573167) + (xy 75.8665 147.59995) + (xy 75.866501 147.739218) + (xy 75.866501 147.856634) + (xy 75.866764 147.859492) + (xy 75.866764 147.859501) + (xy 75.870026 147.895004) + (xy 75.873247 147.930062) + (xy 75.875246 147.93644) + (xy 75.875246 147.936441) + (xy 75.917705 148.071926) + (xy 75.924528 148.093699) + (xy 76.013361 148.240381) + (xy 76.108885 148.335905) + (xy 76.142911 148.398217) + (xy 76.137846 148.469032) + (xy 76.108885 148.514095) + (xy 76.108385 148.514595) + (xy 76.046073 148.548621) + (xy 76.01929 148.5515) + (xy 75.000224 148.5515) + (xy 74.932103 148.531498) + (xy 74.926163 148.527436) + (xy 74.925909 148.527251) + (xy 74.814005 148.445948) + (xy 74.782094 148.422763) + (xy 74.782093 148.422762) + (xy 74.776752 148.418882) + (xy 74.770724 148.416198) + (xy 74.770722 148.416197) + (xy 74.608319 148.343891) + (xy 74.608318 148.343891) + (xy 74.602288 148.341206) + (xy 74.491142 148.317581) + (xy 74.421944 148.302872) + (xy 74.421939 148.302872) + (xy 74.415487 148.3015) + (xy 74.224513 148.3015) + (xy 74.218061 148.302872) + (xy 74.218056 148.302872) + (xy 74.148858 148.317581) + (xy 74.037712 148.341206) + (xy 74.031682 148.343891) + (xy 74.031681 148.343891) + (xy 73.869278 148.416197) + (xy 73.869276 148.416198) + (xy 73.863248 148.418882) + (xy 73.857907 148.422762) + (xy 73.857906 148.422763) + (xy 73.852401 148.426763) + (xy 73.708747 148.531134) + (xy 73.704326 148.536044) + (xy 73.704325 148.536045) + (xy 73.679043 148.564124) + (xy 73.613791 148.636594) + (xy 73.613398 148.63703) + (xy 73.552952 148.67427) + (xy 73.481969 148.672918) + (xy 73.422984 148.633405) + (xy 73.394675 148.567859) + (xy 73.391649 148.542855) + (xy 73.390975 148.537285) + (xy 73.324918 148.322565) + (xy 73.321789 148.316501) + (xy 73.224454 148.127919) + (xy 73.224454 148.127918) + (xy 73.221882 148.122936) + (xy 73.085123 147.944708) + (xy 72.918964 147.793515) + (xy 72.914217 147.790537) + (xy 72.914214 147.790535) + (xy 72.733405 147.677115) + (xy 72.728656 147.674136) + (xy 72.520217 147.590344) + (xy 72.300233 147.544787) + (xy 72.295622 147.544521) + (xy 72.295621 147.544521) + (xy 72.245048 147.541605) + (xy 72.245044 147.541605) + (xy 72.243225 147.5415) + (xy 72.098001 147.5415) + (xy 72.095214 147.541749) + (xy 72.095208 147.541749) + (xy 72.027858 147.54776) + (xy 71.931238 147.556383) + (xy 71.925824 147.557864) + (xy 71.925819 147.557865) + (xy 71.811262 147.589205) + (xy 71.714549 147.615663) + (xy 71.709491 147.618075) + (xy 71.709487 147.618077) + (xy 71.613165 147.664021) + (xy 71.511782 147.712378) + (xy 71.329346 147.843471) + (xy 71.324562 147.848408) + (xy 71.183634 147.993834) + (xy 71.173008 148.004799) + (xy 71.04771 148.191262) + (xy 70.957412 148.396967) + (xy 70.956103 148.402418) + (xy 70.956102 148.402422) + (xy 70.906278 148.609954) + (xy 70.904968 148.615411) + (xy 70.903526 148.64042) + (xy 70.893093 148.821379) + (xy 70.892037 148.83969) + (xy 70.919025 149.062715) + (xy 70.985082 149.277435) + (xy 70.987652 149.282415) + (xy 70.987654 149.282419) + (xy 71.085458 149.47191) + (xy 71.088118 149.477064) + (xy 71.224877 149.655292) + (xy 71.391036 149.806485) + (xy 71.395783 149.809463) + (xy 71.395786 149.809465) + (xy 71.524779 149.890381) + (xy 71.581344 149.925864) + (xy 71.789783 150.009656) + (xy 72.009767 150.055213) + (xy 72.014378 150.055479) + (xy 72.014379 150.055479) + (xy 72.064952 150.058395) + (xy 72.064956 150.058395) + (xy 72.066775 150.0585) + (xy 72.211999 150.0585) + (xy 72.214786 150.058251) + (xy 72.214792 150.058251) + (xy 72.284929 150.051991) + (xy 72.378762 150.043617) + (xy 72.384176 150.042136) + (xy 72.384181 150.042135) + (xy 72.524296 150.003803) + (xy 72.595451 149.984337) + (xy 72.600509 149.981925) + (xy 72.600513 149.981923) + (xy 72.723411 149.923303) + (xy 72.798218 149.887622) + (xy 72.980654 149.756529) + (xy 73.07876 149.655292) + (xy 73.133089 149.599229) + (xy 73.133091 149.599226) + (xy 73.136992 149.595201) + (xy 73.230474 149.456085) + (xy 73.285069 149.410701) + (xy 73.355535 149.402038) + (xy 73.419499 149.432846) + (xy 73.454888 149.487426) + (xy 73.460143 149.503598) + (xy 73.485473 149.581556) + (xy 73.488776 149.587278) + (xy 73.488777 149.587279) + (xy 73.502697 149.611389) + (xy 73.58096 149.746944) + (xy 73.585378 149.751851) + (xy 73.585379 149.751852) + (xy 73.704325 149.883955) + (xy 73.708747 149.888866) + (xy 73.863248 150.001118) + (xy 73.869276 150.003802) + (xy 73.869278 150.003803) + (xy 74.008906 150.065969) + (xy 74.063002 150.111949) + (xy 74.083651 150.179876) + (xy 74.064299 150.248185) + (xy 74.019206 150.288015) + (xy 74.010671 150.297865) + (xy 74.009 150.305548) + (xy 74.009 151.777885) + (xy 74.013475 151.793124) + (xy 74.014865 151.794329) + (xy 74.022548 151.796) + (xy 74.844884 151.796) + (xy 74.860123 151.791525) + (xy 74.861328 151.790135) + (xy 74.862999 151.782452) + (xy 74.862999 150.755331) + (xy 74.862629 150.74851) + (xy 74.857105 150.697648) + (xy 74.853479 150.682396) + (xy 74.808324 150.561946) + (xy 74.799786 150.546351) + (xy 74.723285 150.444276) + (xy 74.710724 150.431715) + (xy 74.608649 150.355214) + (xy 74.593054 150.346676) + (xy 74.544499 150.328473) + (xy 74.487734 150.285831) + (xy 74.463035 150.219269) + (xy 74.478243 150.14992) + (xy 74.528529 150.099802) + (xy 74.562532 150.087245) + (xy 74.580148 150.0835) + (xy 74.59583 150.080167) + (xy 74.595833 150.080166) + (xy 74.602288 150.078794) + (xy 74.608319 150.076109) + (xy 74.770722 150.003803) + (xy 74.770724 150.003802) + (xy 74.776752 150.001118) + (xy 74.926163 149.892564) + (xy 74.993031 149.868706) + (xy 75.000224 149.8685) + (xy 75.93929 149.8685) + (xy 76.007411 149.888502) + (xy 76.028385 149.905405) + (xy 76.134619 150.011639) + (xy 76.141121 150.015576) + (xy 76.14112 150.015576) + (xy 76.210715 150.057724) + (xy 76.258622 150.110121) + (xy 76.270595 150.180101) + (xy 76.242834 150.245445) + (xy 76.184152 150.285407) + (xy 76.145444 150.2915) + (xy 76.106866 150.2915) + (xy 76.044684 150.298255) + (xy 75.908295 150.349385) + (xy 75.791739 150.436739) + (xy 75.704385 150.553295) + (xy 75.653255 150.689684) + (xy 75.6465 150.751866) + (xy 75.6465 153.348134) + (xy 75.653255 153.410316) + (xy 75.704385 153.546705) + (xy 75.791739 153.663261) + (xy 75.908295 153.750615) + (xy 76.044684 153.801745) + (xy 76.106866 153.8085) + (xy 77.403134 153.8085) + (xy 77.407746 153.807999) + (xy 77.457466 153.802598) + (xy 77.457468 153.802598) + (xy 77.465316 153.801745) + (xy 77.47271 153.798973) + (xy 77.480398 153.797145) + (xy 77.480921 153.799345) + (xy 77.540289 153.794998) + (xy 77.602809 153.829069) + (xy 77.730856 153.957116) + (xy 77.738846 153.965896) + (xy 77.743095 153.972591) + (xy 77.748873 153.978017) + (xy 77.748874 153.978018) + (xy 77.794768 154.021115) + (xy 77.79761 154.02387) + (xy 77.818178 154.044438) + (xy 77.821681 154.047155) + (xy 77.830706 154.054863) + (xy 77.864378 154.086483) + (xy 77.871329 154.090304) + (xy 77.87133 154.090305) + (xy 77.883169 154.096814) + (xy 77.899693 154.107668) + (xy 77.908093 154.114183) + (xy 77.916643 154.120815) + (xy 77.923915 154.123962) + (xy 77.923917 154.123963) + (xy 77.959046 154.139165) + (xy 77.969707 154.144387) + (xy 78.010174 154.166635) + (xy 78.030952 154.17197) + (xy 78.049642 154.178369) + (xy 78.069335 154.186891) + (xy 78.113107 154.193824) + (xy 78.114959 154.194117) + (xy 78.126582 154.196524) + (xy 78.154583 154.203713) + (xy 78.171323 154.208011) + (xy 78.17925 154.208011) + (xy 78.179749 154.208074) + (xy 78.244826 154.236456) + (xy 78.284228 154.295516) + (xy 78.285445 154.366502) + (xy 78.254442 154.420765) + (xy 78.248201 154.427206) + (xy 78.181535 154.496) + (xy 78.173008 154.504799) + (xy 78.04771 154.691262) + (xy 77.957412 154.896967) + (xy 77.956103 154.902418) + (xy 77.956102 154.902422) + (xy 77.910394 155.092811) + (xy 77.904968 155.115411) + (xy 77.900581 155.1915) + (xy 77.892403 155.33335) + (xy 77.892037 155.33969) + (xy 77.919025 155.562715) + (xy 77.985082 155.777435) + (xy 77.987652 155.782415) + (xy 77.987654 155.782419) + (xy 78.065632 155.933498) + (xy 78.088118 155.977064) + (xy 78.224877 156.155292) + (xy 78.391036 156.306485) + (xy 78.395783 156.309463) + (xy 78.395786 156.309465) + (xy 78.544694 156.402874) + (xy 78.581344 156.425864) + (xy 78.789783 156.509656) + (xy 79.009767 156.555213) + (xy 79.014378 156.555479) + (xy 79.014379 156.555479) + (xy 79.064952 156.558395) + (xy 79.064956 156.558395) + (xy 79.066775 156.5585) + (xy 79.211999 156.5585) + (xy 79.214786 156.558251) + (xy 79.214792 156.558251) + (xy 79.284929 156.551991) + (xy 79.378762 156.543617) + (xy 79.384176 156.542136) + (xy 79.384181 156.542135) + (xy 79.514481 156.506488) + (xy 79.595451 156.484337) + (xy 79.600509 156.481925) + (xy 79.600513 156.481923) + (xy 79.718042 156.425864) + (xy 79.798218 156.387622) + (xy 79.980654 156.256529) + (xy 80.057652 156.177073) + (xy 80.133089 156.099229) + (xy 80.133091 156.099226) + (xy 80.136992 156.095201) + (xy 80.26229 155.908738) + (xy 80.352588 155.703033) + (xy 80.355742 155.689898) + (xy 80.403722 155.490046) + (xy 80.403722 155.490045) + (xy 80.405032 155.484589) + (xy 80.412057 155.362749) + (xy 80.41764 155.265917) + (xy 80.41764 155.265914) + (xy 80.417963 155.26031) + (xy 80.390975 155.037285) + (xy 80.324918 154.822565) + (xy 80.31819 154.809528) + (xy 80.224454 154.627919) + (xy 80.224454 154.627918) + (xy 80.221882 154.622936) + (xy 80.085123 154.444708) + (xy 80.080979 154.440937) + (xy 80.080976 154.440934) + (xy 80.065889 154.427206) + (xy 80.028965 154.366566) + (xy 80.030688 154.29559) + (xy 80.070509 154.236813) + (xy 80.135786 154.208895) + (xy 80.150687 154.208011) + (xy 83.854682 154.208011) + (xy 83.922803 154.228013) + (xy 83.969296 154.281669) + (xy 83.9794 154.351943) + (xy 83.974517 154.372939) + (xy 83.936458 154.490072) + (xy 83.935768 154.496633) + (xy 83.935768 154.496635) + (xy 83.92197 154.627919) + (xy 83.916496 154.68) + (xy 83.917186 154.686565) + (xy 83.934228 154.848706) + (xy 83.936458 154.869928) + (xy 83.995473 155.051556) + (xy 83.998776 155.057278) + (xy 83.998777 155.057279) + (xy 84.004002 155.066329) + (xy 84.09096 155.216944) + (xy 84.095378 155.221851) + (xy 84.095379 155.221852) + (xy 84.203284 155.341693) + (xy 84.218747 155.358866) + (xy 84.296753 155.415541) + (xy 84.367253 155.466762) + (xy 84.373248 155.471118) + (xy 84.379276 155.473802) + (xy 84.379278 155.473803) + (xy 84.485748 155.521206) + (xy 84.547712 155.548794) + (xy 84.631699 155.566646) + (xy 84.728056 155.587128) + (xy 84.728061 155.587128) + (xy 84.734513 155.5885) + (xy 84.925487 155.5885) + (xy 84.931939 155.587128) + (xy 84.931944 155.587128) + (xy 85.028301 155.566646) + (xy 85.112288 155.548794) + (xy 85.174252 155.521206) + (xy 85.280722 155.473803) + (xy 85.280724 155.473802) + (xy 85.286752 155.471118) + (xy 85.292748 155.466762) + (xy 85.400269 155.388643) + (xy 85.436163 155.362564) + (xy 85.503031 155.338706) + (xy 85.510224 155.3385) + (xy 89.017944 155.3385) + (xy 89.0298 155.339059) + (xy 89.029803 155.339059) + (xy 89.037537 155.340788) + (xy 89.108369 155.338562) + (xy 89.112327 155.3385) + (xy 89.141432 155.3385) + (xy 89.145832 155.337944) + (xy 89.157664 155.337012) + (xy 89.203831 155.335562) + (xy 89.224421 155.32958) + (xy 89.243782 155.32557) + (xy 89.25077 155.324688) + (xy 89.257204 155.323875) + (xy 89.257205 155.323875) + (xy 89.265064 155.322882) + (xy 89.272429 155.319966) + (xy 89.272433 155.319965) + (xy 89.308021 155.305874) + (xy 89.319231 155.302035) + (xy 89.3636 155.289145) + (xy 89.382065 155.278225) + (xy 89.399805 155.269534) + (xy 89.419756 155.261635) + (xy 89.457129 155.234482) + (xy 89.467048 155.227967) + (xy 89.499977 155.208493) + (xy 89.499981 155.20849) + (xy 89.506807 155.204453) + (xy 89.521971 155.189289) + (xy 89.537005 155.176448) + (xy 89.547944 155.1685) + (xy 89.554357 155.163841) + (xy 89.583803 155.128246) + (xy 89.591792 155.119468) + (xy 89.689145 155.022115) + (xy 89.795854 154.915405) + (xy 89.858166 154.88138) + (xy 89.88495 154.8785) + (xy 90.039774 154.8785) + (xy 90.107895 154.898502) + (xy 90.154388 154.952158) + (xy 90.164492 155.022432) + (xy 90.15061 155.064429) + (xy 90.105802 155.147299) + (xy 90.047318 155.336232) + (xy 90.046674 155.342357) + (xy 90.046674 155.342358) + (xy 90.028568 155.514633) + (xy 90.026645 155.532925) + (xy 90.029127 155.560196) + (xy 90.043918 155.722721) + (xy 90.04457 155.729888) + (xy 90.046308 155.735794) + (xy 90.046309 155.735798) + (xy 90.06003 155.782419) + (xy 90.10041 155.919619) + (xy 90.103263 155.925077) + (xy 90.103265 155.925081) + (xy 90.132767 155.981512) + (xy 90.19204 156.09489) + (xy 90.315968 156.249025) + (xy 90.320692 156.252989) + (xy 90.324911 156.256529) + (xy 90.467474 156.376154) + (xy 90.472872 156.379121) + (xy 90.472877 156.379125) + (xy 90.582999 156.439664) + (xy 90.640787 156.471433) + (xy 90.646654 156.473294) + (xy 90.646656 156.473295) + (xy 90.816977 156.527324) + (xy 90.829306 156.531235) + (xy 90.983227 156.5485) + (xy 91.089769 156.5485) + (xy 91.092825 156.5482) + (xy 91.092832 156.5482) + (xy 91.154683 156.542135) + (xy 91.236833 156.53408) + (xy 91.242734 156.532298) + (xy 91.242736 156.532298) + (xy 91.358531 156.497337) + (xy 91.426169 156.476916) + (xy 91.600796 156.384066) + (xy 91.695151 156.307112) + (xy 91.749287 156.26296) + (xy 91.74929 156.262957) + (xy 91.754062 156.259065) + (xy 91.766344 156.244219) + (xy 91.876201 156.111425) + (xy 91.876203 156.111421) + (xy 91.88013 156.106675) + (xy 91.974198 155.932701) + (xy 92.032682 155.743768) + (xy 92.036112 155.711134) + (xy 92.052711 155.553204) + (xy 92.052711 155.553202) + (xy 92.053355 155.547075) + (xy 92.042553 155.428378) + (xy 92.035989 155.356251) + (xy 92.035988 155.356248) + (xy 92.03543 155.350112) + (xy 92.033612 155.343933) + (xy 91.991455 155.200695) + (xy 91.97959 155.160381) + (xy 91.976733 155.154917) + (xy 91.976731 155.154911) + (xy 91.928616 155.062876) + (xy 91.914781 154.99324) + (xy 91.940791 154.927179) + (xy 91.998386 154.885667) + (xy 92.040277 154.8785) + (xy 93.102938 154.8785) + (xy 93.114794 154.879059) + (xy 93.114797 154.879059) + (xy 93.122531 154.880788) + (xy 93.193363 154.878562) + (xy 93.197321 154.8785) + (xy 93.226426 154.8785) + (xy 93.230826 154.877944) + (xy 93.242658 154.877012) + (xy 93.288825 154.875562) + (xy 93.309415 154.86958) + (xy 93.328776 154.86557) + (xy 93.335764 154.864688) + (xy 93.342198 154.863875) + (xy 93.342199 154.863875) + (xy 93.350058 154.862882) + (xy 93.357423 154.859966) + (xy 93.357427 154.859965) + (xy 93.393015 154.845874) + (xy 93.404225 154.842035) + (xy 93.448594 154.829145) + (xy 93.467059 154.818225) + (xy 93.484799 154.809534) + (xy 93.50475 154.801635) + (xy 93.51573 154.793658) + (xy 93.52992 154.783348) + (xy 93.596788 154.759489) + (xy 93.66594 154.77557) + (xy 93.697616 154.800974) + (xy 93.719351 154.825112) + (xy 93.750733 154.859965) + (xy 93.758747 154.868866) + (xy 93.822802 154.915405) + (xy 93.870417 154.949999) + (xy 93.913248 154.981118) + (xy 93.919276 154.983802) + (xy 93.919278 154.983803) + (xy 94.081198 155.055894) + (xy 94.087712 155.058794) + (xy 94.18043 155.078502) + (xy 94.268056 155.097128) + (xy 94.268061 155.097128) + (xy 94.274513 155.0985) + (xy 94.465487 155.0985) + (xy 94.471939 155.097128) + (xy 94.471944 155.097128) + (xy 94.55957 155.078502) + (xy 94.652288 155.058794) + (xy 94.658802 155.055894) + (xy 94.820722 154.983803) + (xy 94.820724 154.983802) + (xy 94.826752 154.981118) + (xy 94.850937 154.963547) + (xy 94.946594 154.894047) + (xy 94.976163 154.872564) + (xy 95.043031 154.848706) + (xy 95.050224 154.8485) + (xy 95.88505 154.8485) + (xy 95.953171 154.868502) + (xy 95.974145 154.885405) + (xy 96.181181 155.092441) + (xy 96.215207 155.154753) + (xy 96.210142 155.225568) + (xy 96.167595 155.282404) + (xy 96.136315 155.299518) + (xy 96.011701 155.346233) + (xy 96.011697 155.346235) + (xy 96.003295 155.349385) + (xy 96.001961 155.350385) + (xy 95.936197 155.36477) + (xy 95.870981 155.341016) + (xy 95.826752 155.308882) + (xy 95.820724 155.306198) + (xy 95.820722 155.306197) + (xy 95.658319 155.233891) + (xy 95.658318 155.233891) + (xy 95.652288 155.231206) + (xy 95.55829 155.211226) + (xy 95.471944 155.192872) + (xy 95.471939 155.192872) + (xy 95.465487 155.1915) + (xy 95.274513 155.1915) + (xy 95.268061 155.192872) + (xy 95.268056 155.192872) + (xy 95.18171 155.211226) + (xy 95.087712 155.231206) + (xy 95.081682 155.233891) + (xy 95.081681 155.233891) + (xy 94.919278 155.306197) + (xy 94.919276 155.306198) + (xy 94.913248 155.308882) + (xy 94.907907 155.312762) + (xy 94.907906 155.312763) + (xy 94.868353 155.3415) + (xy 94.758747 155.421134) + (xy 94.754326 155.426044) + (xy 94.754325 155.426045) + (xy 94.643802 155.548794) + (xy 94.63096 155.563056) + (xy 94.592157 155.630264) + (xy 94.553294 155.697578) + (xy 94.535473 155.728444) + (xy 94.476458 155.910072) + (xy 94.475768 155.916633) + (xy 94.475768 155.916635) + (xy 94.473996 155.933498) + (xy 94.456496 156.1) + (xy 94.457186 156.106565) + (xy 94.473624 156.26296) + (xy 94.476458 156.289928) + (xy 94.535473 156.471556) + (xy 94.538776 156.477278) + (xy 94.538777 156.477279) + (xy 94.555393 156.506059) + (xy 94.63096 156.636944) + (xy 94.635378 156.641851) + (xy 94.635379 156.641852) + (xy 94.753738 156.773303) + (xy 94.758747 156.778866) + (xy 94.913248 156.891118) + (xy 94.919276 156.893802) + (xy 94.919278 156.893803) + (xy 95.081681 156.966109) + (xy 95.087712 156.968794) + (xy 95.171708 156.986648) + (xy 95.268056 157.007128) + (xy 95.268061 157.007128) + (xy 95.274513 157.0085) + (xy 95.465487 157.0085) + (xy 95.471939 157.007128) + (xy 95.471944 157.007128) + (xy 95.593708 156.981246) + (xy 95.664499 156.986648) + (xy 95.721132 157.029465) + (xy 95.745625 157.096103) + (xy 95.745168 157.118101) + (xy 95.7415 157.151866) + (xy 95.7415 157.848134) + (xy 95.748255 157.910316) + (xy 95.799385 158.046705) + (xy 95.886739 158.163261) + (xy 95.954427 158.21399) + (xy 95.966358 158.222932) + (xy 96.008873 158.279791) + (xy 96.013899 158.35061) + (xy 95.979839 158.412903) + (xy 95.966357 158.424585) + (xy 95.954998 158.433098) + (xy 95.888492 158.457945) + (xy 95.81911 158.442892) + (xy 95.805373 158.434207) + (xy 95.762094 158.402763) + (xy 95.762092 158.402762) + (xy 95.756752 158.398882) + (xy 95.750724 158.396198) + (xy 95.750722 158.396197) + (xy 95.588319 158.323891) + (xy 95.588318 158.323891) + (xy 95.582288 158.321206) + (xy 95.488887 158.301353) + (xy 95.401944 158.282872) + (xy 95.401939 158.282872) + (xy 95.395487 158.2815) + (xy 95.204513 158.2815) + (xy 95.198061 158.282872) + (xy 95.198056 158.282872) + (xy 95.111113 158.301353) + (xy 95.017712 158.321206) + (xy 95.011682 158.323891) + (xy 95.011681 158.323891) + (xy 94.849278 158.396197) + (xy 94.849276 158.396198) + (xy 94.843248 158.398882) + (xy 94.837907 158.402762) + (xy 94.837906 158.402763) + (xy 94.787843 158.439136) + (xy 94.688747 158.511134) + (xy 94.684326 158.516044) + (xy 94.684325 158.516045) + (xy 94.591928 158.618663) + (xy 94.56096 158.653056) + (xy 94.54682 158.677548) + (xy 94.484447 158.785581) + (xy 94.465473 158.818444) + (xy 94.406458 159.000072) + (xy 94.405768 159.006633) + (xy 94.405768 159.006635) + (xy 94.395806 159.101416) + (xy 94.386496 159.19) + (xy 94.387186 159.196565) + (xy 94.40315 159.34845) + (xy 94.406458 159.379928) + (xy 94.465473 159.561556) + (xy 94.56096 159.726944) + (xy 94.565378 159.731851) + (xy 94.565379 159.731852) + (xy 94.682972 159.862452) + (xy 94.688747 159.868866) + (xy 94.843248 159.981118) + (xy 94.849276 159.983802) + (xy 94.849278 159.983803) + (xy 95.011681 160.056109) + (xy 95.017712 160.058794) + (xy 95.111113 160.078647) + (xy 95.198056 160.097128) + (xy 95.198061 160.097128) + (xy 95.204513 160.0985) + (xy 95.395487 160.0985) + (xy 95.401939 160.097128) + (xy 95.401944 160.097128) + (xy 95.518258 160.072404) + (xy 95.56243 160.063015) + (xy 95.63322 160.068417) + (xy 95.689852 160.111234) + (xy 95.714346 160.177871) + (xy 95.713889 160.199867) + (xy 95.711869 160.218462) + (xy 95.711868 160.218476) + (xy 95.7115 160.221866) + (xy 95.7115 160.918134) + (xy 95.718255 160.980316) + (xy 95.769385 161.116705) + (xy 95.856739 161.233261) + (xy 95.899322 161.265175) + (xy 95.941835 161.322034) + (xy 95.94686 161.392852) + (xy 95.9128 161.455145) + (xy 95.850469 161.489136) + (xy 95.823755 161.492) + (xy 71.749327 161.492) + (xy 71.729942 161.4905) + (xy 71.715141 161.488195) + (xy 71.715138 161.488195) + (xy 71.706269 161.486814) + (xy 71.69223 161.48865) + (xy 71.666011 161.489325) + (xy 71.523416 161.478103) + (xy 71.503887 161.47501) + (xy 71.500909 161.474295) + (xy 71.341287 161.435973) + (xy 71.322487 161.429864) + (xy 71.168002 161.365873) + (xy 71.150387 161.356898) + (xy 71.007817 161.269532) + (xy 70.991821 161.25791) + (xy 70.864669 161.149312) + (xy 70.850688 161.135331) + (xy 70.74209 161.008179) + (xy 70.730468 160.992183) + (xy 70.643102 160.849613) + (xy 70.634127 160.831998) + (xy 70.570136 160.677513) + (xy 70.564025 160.658708) + (xy 70.562443 160.652115) + (xy 70.52499 160.496112) + (xy 70.521897 160.476584) + (xy 70.511226 160.340988) + (xy 70.511867 160.32412) + (xy 70.511695 160.324118) + (xy 70.511805 160.315142) + (xy 70.513186 160.306271) + (xy 70.511547 160.293731) + (xy 70.509064 160.27475) + (xy 70.508 160.258412) + (xy 70.508 159.848134) + (xy 80.7465 159.848134) + (xy 80.753255 159.910316) + (xy 80.804385 160.046705) + (xy 80.891739 160.163261) + (xy 81.008295 160.250615) + (xy 81.144684 160.301745) + (xy 81.206866 160.3085) + (xy 82.503134 160.3085) + (xy 82.565316 160.301745) + (xy 82.701705 160.250615) + (xy 82.818261 160.163261) + (xy 82.905615 160.046705) + (xy 82.956745 159.910316) + (xy 82.9635 159.848134) + (xy 82.9635 157.251866) + (xy 82.956745 157.189684) + (xy 82.905615 157.053295) + (xy 82.818261 156.936739) + (xy 82.701705 156.849385) + (xy 82.565316 156.798255) + (xy 82.503134 156.7915) + (xy 81.206866 156.7915) + (xy 81.144684 156.798255) + (xy 81.008295 156.849385) + (xy 80.891739 156.936739) + (xy 80.804385 157.053295) + (xy 80.753255 157.189684) + (xy 80.7465 157.251866) + (xy 80.7465 159.848134) + (xy 70.508 159.848134) + (xy 70.508 155.33969) + (xy 70.892037 155.33969) + (xy 70.919025 155.562715) + (xy 70.985082 155.777435) + (xy 70.987652 155.782415) + (xy 70.987654 155.782419) + (xy 71.065632 155.933498) + (xy 71.088118 155.977064) + (xy 71.224877 156.155292) + (xy 71.391036 156.306485) + (xy 71.395783 156.309463) + (xy 71.395786 156.309465) + (xy 71.544694 156.402874) + (xy 71.581344 156.425864) + (xy 71.789783 156.509656) + (xy 72.009767 156.555213) + (xy 72.014378 156.555479) + (xy 72.014379 156.555479) + (xy 72.064952 156.558395) + (xy 72.064956 156.558395) + (xy 72.066775 156.5585) + (xy 72.211999 156.5585) + (xy 72.214786 156.558251) + (xy 72.214792 156.558251) + (xy 72.284929 156.551991) + (xy 72.378762 156.543617) + (xy 72.384176 156.542136) + (xy 72.384181 156.542135) + (xy 72.514481 156.506488) + (xy 72.595451 156.484337) + (xy 72.600509 156.481925) + (xy 72.600513 156.481923) + (xy 72.718042 156.425864) + (xy 72.798218 156.387622) + (xy 72.980654 156.256529) + (xy 73.057652 156.177073) + (xy 73.133089 156.099229) + (xy 73.133091 156.099226) + (xy 73.136992 156.095201) + (xy 73.26229 155.908738) + (xy 73.352588 155.703033) + (xy 73.355742 155.689898) + (xy 73.403722 155.490046) + (xy 73.403722 155.490045) + (xy 73.405032 155.484589) + (xy 73.412057 155.362749) + (xy 73.41764 155.265917) + (xy 73.41764 155.265914) + (xy 73.417963 155.26031) + (xy 73.390975 155.037285) + (xy 73.324918 154.822565) + (xy 73.31819 154.809528) + (xy 73.224454 154.627919) + (xy 73.224454 154.627918) + (xy 73.221882 154.622936) + (xy 73.085123 154.444708) + (xy 72.918964 154.293515) + (xy 72.914217 154.290537) + (xy 72.914214 154.290535) + (xy 72.733405 154.177115) + (xy 72.728656 154.174136) + (xy 72.520217 154.090344) + (xy 72.300233 154.044787) + (xy 72.295622 154.044521) + (xy 72.295621 154.044521) + (xy 72.245048 154.041605) + (xy 72.245044 154.041605) + (xy 72.243225 154.0415) + (xy 72.098001 154.0415) + (xy 72.095214 154.041749) + (xy 72.095208 154.041749) + (xy 72.043074 154.046402) + (xy 71.931238 154.056383) + (xy 71.925824 154.057864) + (xy 71.925819 154.057865) + (xy 71.841053 154.081055) + (xy 71.714549 154.115663) + (xy 71.709491 154.118075) + (xy 71.709487 154.118077) + (xy 71.615691 154.162816) + (xy 71.511782 154.212378) + (xy 71.329346 154.343471) + (xy 71.301002 154.37272) + (xy 71.181535 154.496) + (xy 71.173008 154.504799) + (xy 71.04771 154.691262) + (xy 70.957412 154.896967) + (xy 70.956103 154.902418) + (xy 70.956102 154.902422) + (xy 70.910394 155.092811) + (xy 70.904968 155.115411) + (xy 70.900581 155.1915) + (xy 70.892403 155.33335) + (xy 70.892037 155.33969) + (xy 70.508 155.33969) + (xy 70.508 153.344669) + (xy 72.647001 153.344669) + (xy 72.647371 153.35149) + (xy 72.652895 153.402352) + (xy 72.656521 153.417604) + (xy 72.701676 153.538054) + (xy 72.710214 153.553649) + (xy 72.786715 153.655724) + (xy 72.799276 153.668285) + (xy 72.901351 153.744786) + (xy 72.916946 153.753324) + (xy 73.037394 153.798478) + (xy 73.052649 153.802105) + (xy 73.103514 153.807631) + (xy 73.110328 153.808) + (xy 73.482885 153.808) + (xy 73.498124 153.803525) + (xy 73.499329 153.802135) + (xy 73.501 153.794452) + (xy 73.501 153.789884) + (xy 74.009 153.789884) + (xy 74.013475 153.805123) + (xy 74.014865 153.806328) + (xy 74.022548 153.807999) + (xy 74.399669 153.807999) + (xy 74.40649 153.807629) + (xy 74.457352 153.802105) + (xy 74.472604 153.798479) + (xy 74.593054 153.753324) + (xy 74.608649 153.744786) + (xy 74.710724 153.668285) + (xy 74.723285 153.655724) + (xy 74.799786 153.553649) + (xy 74.808324 153.538054) + (xy 74.853478 153.417606) + (xy 74.857105 153.402351) + (xy 74.862631 153.351486) + (xy 74.863 153.344672) + (xy 74.863 152.322115) + (xy 74.858525 152.306876) + (xy 74.857135 152.305671) + (xy 74.849452 152.304) + (xy 74.027115 152.304) + (xy 74.011876 152.308475) + (xy 74.010671 152.309865) + (xy 74.009 152.317548) + (xy 74.009 153.789884) + (xy 73.501 153.789884) + (xy 73.501 152.322115) + (xy 73.496525 152.306876) + (xy 73.495135 152.305671) + (xy 73.487452 152.304) + (xy 72.665116 152.304) + (xy 72.649877 152.308475) + (xy 72.648672 152.309865) + (xy 72.647001 152.317548) + (xy 72.647001 153.344669) + (xy 70.508 153.344669) + (xy 70.508 151.777885) + (xy 72.647 151.777885) + (xy 72.651475 151.793124) + (xy 72.652865 151.794329) + (xy 72.660548 151.796) + (xy 73.482885 151.796) + (xy 73.498124 151.791525) + (xy 73.499329 151.790135) + (xy 73.501 151.782452) + (xy 73.501 150.310116) + (xy 73.496525 150.294877) + (xy 73.495135 150.293672) + (xy 73.487452 150.292001) + (xy 73.110331 150.292001) + (xy 73.10351 150.292371) + (xy 73.052648 150.297895) + (xy 73.037396 150.301521) + (xy 72.916946 150.346676) + (xy 72.901351 150.355214) + (xy 72.799276 150.431715) + (xy 72.786715 150.444276) + (xy 72.710214 150.546351) + (xy 72.701676 150.561946) + (xy 72.656522 150.682394) + (xy 72.652895 150.697649) + (xy 72.647369 150.748514) + (xy 72.647 150.755328) + (xy 72.647 151.777885) + (xy 70.508 151.777885) + (xy 70.508 133.749327) + (xy 70.5095 133.729942) + (xy 70.511805 133.715141) + (xy 70.511805 133.715138) + (xy 70.513186 133.706269) + (xy 70.51135 133.69223) + (xy 70.510675 133.666011) + (xy 70.521897 133.523416) + (xy 70.52499 133.503887) + (xy 70.54192 133.433369) + (xy 70.564027 133.341287) + (xy 70.570136 133.322487) + (xy 70.634127 133.168002) + (xy 70.643102 133.150387) + (xy 70.730468 133.007817) + (xy 70.74209 132.991821) + (xy 70.850688 132.864669) + (xy 70.864669 132.850688) + (xy 70.991821 132.74209) + (xy 71.007817 132.730468) + (xy 71.150387 132.643102) + (xy 71.168002 132.634127) + (xy 71.322487 132.570136) + (xy 71.341287 132.564027) + (xy 71.503888 132.52499) + (xy 71.523416 132.521897) + (xy 71.659012 132.511226) + (xy 71.67588 132.511867) + (xy 71.675882 132.511695) + (xy 71.684858 132.511805) + (xy 71.693729 132.513186) + (xy 71.702631 132.512022) + (xy 71.702634 132.512022) + (xy 71.72525 132.509064) + (xy 71.741588 132.508) + (xy 78.13655 132.508) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 129.423852 156.793598) + (xy 129.475184 156.842644) + (xy 129.492 156.905532) + (xy 129.492 160.250673) + (xy 129.4905 160.270058) + (xy 129.489127 160.278879) + (xy 129.486814 160.293731) + (xy 129.488454 160.306271) + (xy 129.48865 160.307768) + (xy 129.489325 160.333989) + (xy 129.478103 160.476584) + (xy 129.47501 160.496112) + (xy 129.437558 160.652115) + (xy 129.435975 160.658708) + (xy 129.429864 160.677513) + (xy 129.365873 160.831998) + (xy 129.356898 160.849613) + (xy 129.269532 160.992183) + (xy 129.25791 161.008179) + (xy 129.149312 161.135331) + (xy 129.135331 161.149312) + (xy 129.008179 161.25791) + (xy 128.992183 161.269532) + (xy 128.849613 161.356898) + (xy 128.831998 161.365873) + (xy 128.677513 161.429864) + (xy 128.658713 161.435973) + (xy 128.499091 161.474295) + (xy 128.496113 161.47501) + (xy 128.476584 161.478103) + (xy 128.340988 161.488774) + (xy 128.32412 161.488133) + (xy 128.324118 161.488305) + (xy 128.315142 161.488195) + (xy 128.306271 161.486814) + (xy 128.297369 161.487978) + (xy 128.297366 161.487978) + (xy 128.27475 161.490936) + (xy 128.258412 161.492) + (xy 115.054083 161.492) + (xy 114.985962 161.471998) + (xy 114.939469 161.418342) + (xy 114.929365 161.348068) + (xy 114.958859 161.283488) + (xy 115.014207 161.246476) + (xy 115.037695 161.23864) + (xy 115.058946 161.23155) + (xy 115.209348 161.138478) + (xy 115.334305 161.013303) + (xy 115.338146 161.007072) + (xy 115.342683 161.001327) + (xy 115.344013 161.002377) + (xy 115.390107 160.960892) + (xy 115.444597 160.9485) + (xy 126.227944 160.9485) + (xy 126.2398 160.949059) + (xy 126.239803 160.949059) + (xy 126.247537 160.950788) + (xy 126.318369 160.948562) + (xy 126.322327 160.9485) + (xy 126.351432 160.9485) + (xy 126.355832 160.947944) + (xy 126.367664 160.947012) + (xy 126.413831 160.945562) + (xy 126.434421 160.93958) + (xy 126.453782 160.93557) + (xy 126.46077 160.934688) + (xy 126.467204 160.933875) + (xy 126.467205 160.933875) + (xy 126.475064 160.932882) + (xy 126.482429 160.929966) + (xy 126.482433 160.929965) + (xy 126.518021 160.915874) + (xy 126.529231 160.912035) + (xy 126.5736 160.899145) + (xy 126.592065 160.888225) + (xy 126.609805 160.879534) + (xy 126.629756 160.871635) + (xy 126.667129 160.844482) + (xy 126.677048 160.837967) + (xy 126.709977 160.818493) + (xy 126.709981 160.81849) + (xy 126.716807 160.814453) + (xy 126.731971 160.799289) + (xy 126.747005 160.786448) + (xy 126.757943 160.778501) + (xy 126.764357 160.773841) + (xy 126.793803 160.738247) + (xy 126.801792 160.729468) + (xy 128.207605 159.323655) + (xy 128.216385 159.315665) + (xy 128.216387 159.315663) + (xy 128.22308 159.311416) + (xy 128.2446 159.2885) + (xy 128.271604 159.259743) + (xy 128.274359 159.256901) + (xy 128.294927 159.236333) + (xy 128.297647 159.232826) + (xy 128.305353 159.223804) + (xy 128.331544 159.195913) + (xy 128.336972 159.190133) + (xy 128.340794 159.183181) + (xy 128.347303 159.171342) + (xy 128.358157 159.154818) + (xy 128.366443 159.144135) + (xy 128.366444 159.144134) + (xy 128.371304 159.137868) + (xy 128.386331 159.103142) + (xy 128.389654 159.095464) + (xy 128.394869 159.084819) + (xy 128.417124 159.044337) + (xy 128.419094 159.036663) + (xy 128.419097 159.036656) + (xy 128.422455 159.023574) + (xy 128.428861 159.004862) + (xy 128.434233 158.992448) + (xy 128.43738 158.985177) + (xy 128.444608 158.939541) + (xy 128.447012 158.92793) + (xy 128.4585 158.883188) + (xy 128.4585 158.861742) + (xy 128.460051 158.842032) + (xy 128.462166 158.828678) + (xy 128.462166 158.828677) + (xy 128.463406 158.820848) + (xy 128.459059 158.774859) + (xy 128.4585 158.763004) + (xy 128.4585 157.673736) + (xy 128.478502 157.605615) + (xy 128.532158 157.559122) + (xy 128.549031 157.552831) + (xy 128.607779 157.535597) + (xy 128.607785 157.535594) + (xy 128.613534 157.533908) + (xy 128.618868 157.531161) + (xy 128.796249 157.439804) + (xy 128.796252 157.439802) + (xy 128.80158 157.437058) + (xy 128.96792 157.306396) + (xy 128.971852 157.301865) + (xy 128.971855 157.301862) + (xy 129.102621 157.151167) + (xy 129.106552 157.146637) + (xy 129.109552 157.141451) + (xy 129.109555 157.141447) + (xy 129.209467 156.968742) + (xy 129.212473 156.963546) + (xy 129.246972 156.864199) + (xy 129.288214 156.806409) + (xy 129.354152 156.78009) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 110.508171 159.478502) + (xy 110.529145 159.495405) + (xy 110.974595 159.940855) + (xy 111.008621 160.003167) + (xy 111.0115 160.02995) + (xy 111.0115 160.8304) + (xy 111.011837 160.833646) + (xy 111.011837 160.83365) + (xy 111.021752 160.929206) + (xy 111.022474 160.936166) + (xy 111.024655 160.942702) + (xy 111.024655 160.942704) + (xy 111.048186 161.013234) + (xy 111.07845 161.103946) + (xy 111.171522 161.254348) + (xy 111.176704 161.259521) + (xy 111.19404 161.276827) + (xy 111.228119 161.33911) + (xy 111.223116 161.40993) + (xy 111.180618 161.466803) + (xy 111.11412 161.491671) + (xy 111.105022 161.492) + (xy 110.134134 161.492) + (xy 110.066013 161.471998) + (xy 110.01952 161.418342) + (xy 110.009416 161.348068) + (xy 110.03891 161.283488) + (xy 110.044961 161.276983) + (xy 110.063735 161.258176) + (xy 110.072751 161.24676) + (xy 110.157816 161.108757) + (xy 110.163963 161.095576) + (xy 110.215138 160.94129) + (xy 110.218005 160.927914) + (xy 110.227672 160.833562) + (xy 110.228 160.827146) + (xy 110.228 160.402115) + (xy 110.223525 160.386876) + (xy 110.222135 160.385671) + (xy 110.214452 160.384) + (xy 109.017 160.384) + (xy 108.948879 160.363998) + (xy 108.902386 160.310342) + (xy 108.891 160.258) + (xy 108.891 160.002) + (xy 108.911002 159.933879) + (xy 108.964658 159.887386) + (xy 109.017 159.876) + (xy 110.209884 159.876) + (xy 110.225123 159.871525) + (xy 110.226328 159.870135) + (xy 110.227999 159.862452) + (xy 110.227999 159.5845) + (xy 110.248001 159.516379) + (xy 110.301657 159.469886) + (xy 110.353999 159.4585) + (xy 110.44005 159.4585) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 97.399262 161.244923) + (xy 97.421225 161.258224) + (xy 97.469132 161.310621) + (xy 97.481106 161.3806) + (xy 97.453346 161.445944) + (xy 97.394664 161.485907) + (xy 97.355955 161.492) + (xy 97.316245 161.492) + (xy 97.248124 161.471998) + (xy 97.201631 161.418342) + (xy 97.191527 161.348068) + (xy 97.221021 161.283488) + (xy 97.240679 161.265175) + (xy 97.258426 161.251874) + (xy 97.324932 161.227025) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 127.996121 153.726002) + (xy 128.042614 153.779658) + (xy 128.054 153.832) + (xy 128.054 155.049885) + (xy 128.058475 155.065124) + (xy 128.059865 155.066329) + (xy 128.067548 155.068) + (xy 128.249832 155.068) + (xy 128.255808 155.067715) + (xy 128.404494 155.053529) + (xy 128.416228 155.05127) + (xy 128.607599 154.995128) + (xy 128.618675 154.990698) + (xy 128.795978 154.899381) + (xy 128.806024 154.892931) + (xy 128.962857 154.769738) + (xy 128.971506 154.761501) + (xy 129.102212 154.610877) + (xy 129.109147 154.601153) + (xy 129.20901 154.428533) + (xy 129.213984 154.417669) + (xy 129.246972 154.322674) + (xy 129.288214 154.264884) + (xy 129.354152 154.238565) + (xy 129.423852 154.252073) + (xy 129.475184 154.301119) + (xy 129.492 154.364007) + (xy 129.492 156.081849) + (xy 129.471998 156.14997) + (xy 129.418342 156.196463) + (xy 129.348068 156.206567) + (xy 129.283488 156.177073) + (xy 129.251299 156.134) + (xy 129.235701 156.099694) + (xy 129.165326 155.944913) + (xy 129.042946 155.772389) + (xy 128.89015 155.626119) + (xy 128.712452 155.51138) + (xy 128.632067 155.478984) + (xy 128.521832 155.434558) + (xy 128.521829 155.434557) + (xy 128.516263 155.432314) + (xy 128.308663 155.391772) + (xy 128.303101 155.3915) + (xy 127.347154 155.3915) + (xy 127.189434 155.406548) + (xy 126.986466 155.466092) + (xy 126.981139 155.468836) + (xy 126.981138 155.468836) + (xy 126.803751 155.560196) + (xy 126.803748 155.560198) + (xy 126.79842 155.562942) + (xy 126.63208 155.693604) + (xy 126.628148 155.698135) + (xy 126.628145 155.698138) + (xy 126.559474 155.777275) + (xy 126.493448 155.853363) + (xy 126.490448 155.858549) + (xy 126.490445 155.858553) + (xy 126.431463 155.960508) + (xy 126.387527 156.036454) + (xy 126.318139 156.236271) + (xy 126.317278 156.242206) + (xy 126.317278 156.242208) + (xy 126.288815 156.438516) + (xy 126.287787 156.445604) + (xy 126.297567 156.656899) + (xy 126.298971 156.662724) + (xy 126.298971 156.662725) + (xy 126.342332 156.842644) + (xy 126.347125 156.862534) + (xy 126.349607 156.867992) + (xy 126.349608 156.867996) + (xy 126.390674 156.958315) + (xy 126.434674 157.055087) + (xy 126.557054 157.227611) + (xy 126.70985 157.373881) + (xy 126.887548 157.48862) + (xy 126.962861 157.518972) + (xy 127.062598 157.559167) + (xy 127.118304 157.603182) + (xy 127.1415 157.676033) + (xy 127.1415 158.475051) + (xy 127.121498 158.543172) + (xy 127.104595 158.564146) + (xy 126.074145 159.594595) + (xy 126.011833 159.628621) + (xy 125.98505 159.6315) + (xy 125.932884 159.6315) + (xy 125.864763 159.611498) + (xy 125.81827 159.557842) + (xy 125.808166 159.487568) + (xy 125.836362 159.424509) + (xy 125.951778 159.286961) + (xy 125.958708 159.276841) + (xy 126.048002 159.114415) + (xy 126.052834 159.103142) + (xy 126.10888 158.926462) + (xy 126.11143 158.914468) + (xy 126.127607 158.770239) + (xy 126.128 158.763215) + (xy 126.128 158.682115) + (xy 126.123525 158.666876) + (xy 126.122135 158.665671) + (xy 126.114452 158.664) (xy 124.130115 158.664) (xy 124.114876 158.668475) (xy 124.113671 158.669865) @@ -6250,10 +5389,64 @@ (xy 115.494283 158.664) (xy 115.448229 158.650478) (xy 115.418452 158.644) - (xy 114.132 158.644) - (xy 114.063879 158.623998) - (xy 114.017386 158.570342) - (xy 114.006 158.518) + (xy 113.045116 158.644) + (xy 113.029877 158.648475) + (xy 113.028672 158.649865) + (xy 113.027001 158.657548) + (xy 113.027001 158.687095) + (xy 113.027339 158.693617) + (xy 113.030822 158.727194) + (xy 113.017956 158.797015) + (xy 112.969385 158.848797) + (xy 112.900529 158.866098) + (xy 112.83938 158.847456) + (xy 112.742738 158.787885) + (xy 112.648588 158.756657) + (xy 112.581389 158.734368) + (xy 112.581387 158.734368) + (xy 112.574861 158.732203) + (xy 112.568025 158.731503) + (xy 112.568022 158.731502) + (xy 112.524969 158.727091) + (xy 112.4704 158.7215) + (xy 112.074115 158.7215) + (xy 112.005994 158.701498) + (xy 111.959501 158.647842) + (xy 111.949397 158.577568) + (xy 111.953881 158.557821) + (xy 111.962069 158.531693) + (xy 112.001753 158.405062) + (xy 112.0085 158.331635) + (xy 112.0085 158.07495) + (xy 112.028502 158.006829) + (xy 112.045405 157.985855) + (xy 112.688529 157.342731) + (xy 112.750841 157.308705) + (xy 112.821656 157.31377) + (xy 112.878492 157.356317) + (xy 112.884768 157.365523) + (xy 112.948063 157.467807) + (xy 112.957099 157.479208) + (xy 113.071829 157.593739) + (xy 113.088985 157.607288) + (xy 113.087371 157.609331) + (xy 113.126712 157.65305) + (xy 113.138131 157.723122) + (xy 113.120358 157.773647) + (xy 113.097185 157.811241) + (xy 113.091037 157.824424) + (xy 113.039862 157.97871) + (xy 113.036995 157.992086) + (xy 113.027328 158.086438) + (xy 113.027 158.092855) + (xy 113.027 158.117885) + (xy 113.031475 158.133124) + (xy 113.032865 158.134329) + (xy 113.040548 158.136) + (xy 113.987885 158.136) + (xy 114.003124 158.131525) + (xy 114.004329 158.130135) + (xy 114.006 158.122452) (xy 114.006 157.816115) (xy 114.001526 157.800876) (xy 113.989488 157.790446) @@ -6294,6 +5487,34 @@ (xy 124.863124 158.151525) (xy 124.864329 158.150135) (xy 124.866 158.142452) + (xy 124.866 158.137885) + (xy 125.374 158.137885) + (xy 125.378475 158.153124) + (xy 125.379865 158.154329) + (xy 125.387548 158.156) + (xy 126.109885 158.156) + (xy 126.125124 158.151525) + (xy 126.126329 158.150135) + (xy 126.128 158.142452) + (xy 126.128 158.063343) + (xy 126.127699 158.057195) + (xy 126.114188 157.919397) + (xy 126.111805 157.907362) + (xy 126.058233 157.729924) + (xy 126.053559 157.718584) + (xy 125.96654 157.554923) + (xy 125.959751 157.544706) + (xy 125.842603 157.401067) + (xy 125.833959 157.392363) + (xy 125.691144 157.274216) + (xy 125.680973 157.267356) + (xy 125.517924 157.179196) + (xy 125.506619 157.174444) + (xy 125.391308 157.13875) + (xy 125.377205 157.138544) + (xy 125.374 157.145299) + (xy 125.374 158.137885) + (xy 124.866 158.137885) (xy 124.866 157.152076) (xy 124.862027 157.138545) (xy 124.854232 157.137425) @@ -6360,88 +5581,251 @@ (xy 114.454 156.942548) (xy 114.454 157.323885) (xy 113.946 157.323885) - (xy 113.946 156.402885) - (xy 114.454 156.402885) - (xy 114.458475 156.418124) - (xy 114.459865 156.419329) - (xy 114.467548 156.421) - (xy 115.589884 156.421) - (xy 115.605123 156.416525) - (xy 115.606328 156.415135) - (xy 115.607999 156.407452) - (xy 115.607999 156.302905) - (xy 115.607662 156.296386) - (xy 115.597743 156.200794) - (xy 115.594851 156.1874) - (xy 115.543412 156.033216) - (xy 115.537239 156.020038) - (xy 115.451937 155.882193) - (xy 115.442901 155.870792) - (xy 115.328171 155.756261) - (xy 115.31676 155.747249) - (xy 115.178757 155.662184) - (xy 115.165576 155.656037) - (xy 115.01129 155.604862) - (xy 114.997914 155.601995) - (xy 114.903562 155.592328) - (xy 114.897145 155.592) - (xy 114.472115 155.592) - (xy 114.456876 155.596475) - (xy 114.455671 155.597865) - (xy 114.454 155.605548) - (xy 114.454 156.402885) - (xy 113.946 156.402885) - (xy 113.946 155.610116) - (xy 113.941525 155.594877) - (xy 113.940135 155.593672) - (xy 113.932452 155.592001) - (xy 113.73498 155.592001) - (xy 113.666859 155.571999) - (xy 113.620366 155.518343) - (xy 113.60898 155.466001) - (xy 113.60898 155.39947) - (xy 113.628982 155.331349) - (xy 113.645885 155.310375) - (xy 114.110855 154.845405) - (xy 114.173167 154.811379) - (xy 114.19995 154.8085) - (xy 114.9004 154.8085) - (xy 114.903646 154.808163) - (xy 114.90365 154.808163) - (xy 114.999308 154.798238) - (xy 114.999312 154.798237) - (xy 115.006166 154.797526) - (xy 115.012702 154.795345) - (xy 115.012704 154.795345) - (xy 115.166998 154.743868) - (xy 115.173946 154.74155) - (xy 115.279697 154.676109) - (xy 115.348149 154.657271) - (xy 115.415919 154.678432) - (xy 115.46149 154.732873) - (xy 115.472 154.783253) - (xy 115.472 154.826657) - (xy 115.472301 154.832805) - (xy 115.485812 154.970603) - (xy 115.488195 154.982638) - (xy 115.541767 155.160076) - (xy 115.546441 155.171416) - (xy 115.63346 155.335077) - (xy 115.640249 155.345294) - (xy 115.757397 155.488933) - (xy 115.766041 155.497637) - (xy 115.908856 155.615784) - (xy 115.919027 155.622644) - (xy 116.082076 155.710804) - (xy 116.093381 155.715556) - (xy 116.208692 155.75125) - (xy 116.222795 155.751456) - (xy 116.226 155.744701) - (xy 116.226 154.102) - (xy 116.246002 154.033879) - (xy 116.299658 153.987386) - (xy 116.352 153.976) - (xy 117.209326 153.976) + (xy 113.946 156.547) + (xy 113.966002 156.478879) + (xy 114.019658 156.432386) + (xy 114.072 156.421) + (xy 114.958759 156.421) + (xy 115.02688 156.441002) + (xy 115.035986 156.447441) + (xy 115.039903 156.45048) + (xy 115.039906 156.450482) + (xy 115.046164 156.455336) + (xy 115.053436 156.458483) + (xy 115.053438 156.458484) + (xy 115.088567 156.473686) + (xy 115.099227 156.478908) + (xy 115.1292 156.495386) + (xy 115.139695 156.501156) + (xy 115.160473 156.506491) + (xy 115.179163 156.51289) + (xy 115.198856 156.521412) + (xy 115.233595 156.526914) + (xy 115.24448 156.528638) + (xy 115.256103 156.531045) + (xy 115.280786 156.537382) + (xy 115.300844 156.542532) + (xy 115.322291 156.542532) + (xy 115.342001 156.544083) + (xy 115.363184 156.547438) + (xy 115.409173 156.543091) + (xy 115.421028 156.542532) + (xy 124.993893 156.542532) + (xy 125.005749 156.543091) + (xy 125.005752 156.543091) + (xy 125.013486 156.54482) + (xy 125.084318 156.542594) + (xy 125.088276 156.542532) + (xy 125.117381 156.542532) + (xy 125.121781 156.541976) + (xy 125.133613 156.541044) + (xy 125.17978 156.539594) + (xy 125.20037 156.533612) + (xy 125.219731 156.529602) + (xy 125.227365 156.528638) + (xy 125.233153 156.527907) + (xy 125.233154 156.527907) + (xy 125.241013 156.526914) + (xy 125.248378 156.523998) + (xy 125.248382 156.523997) + (xy 125.28397 156.509906) + (xy 125.29518 156.506067) + (xy 125.339549 156.493177) + (xy 125.358014 156.482257) + (xy 125.375754 156.473566) + (xy 125.395705 156.465667) + (xy 125.433078 156.438514) + (xy 125.442997 156.431999) + (xy 125.475926 156.412525) + (xy 125.47593 156.412522) + (xy 125.482756 156.408485) + (xy 125.49792 156.393321) + (xy 125.512954 156.38048) + (xy 125.514819 156.379125) + (xy 125.530306 156.367873) + (xy 125.559752 156.332279) + (xy 125.567741 156.3235) + (xy 126.707605 155.183636) + (xy 126.716385 155.175646) + (xy 126.716387 155.175644) + (xy 126.72308 155.171397) + (xy 126.73591 155.157735) + (xy 126.771604 155.119724) + (xy 126.774359 155.116882) + (xy 126.794927 155.096314) + (xy 126.797647 155.092807) + (xy 126.805353 155.083785) + (xy 126.824988 155.062876) + (xy 126.836972 155.050114) + (xy 126.840792 155.043165) + (xy 126.84545 155.036754) + (xy 126.847716 155.038401) + (xy 126.888571 154.997783) + (xy 126.957988 154.982894) + (xy 126.995733 154.99168) + (xy 127.078316 155.024962) + (xy 127.08977 155.028355) + (xy 127.286928 155.066857) + (xy 127.295791 155.067934) + (xy 127.2985 155.068) + (xy 127.527885 155.068) + (xy 127.543124 155.063525) + (xy 127.544329 155.062135) + (xy 127.546 155.054452) + (xy 127.546 153.832) + (xy 127.566002 153.763879) + (xy 127.619658 153.717386) + (xy 127.672 153.706) + (xy 127.928 153.706) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 103.38651 153.268533) + (xy 103.451829 153.333739) + (xy 103.46324 153.342751) + (xy 103.601243 153.427816) + (xy 103.614424 153.433963) + (xy 103.758065 153.481607) + (xy 103.816424 153.522038) + (xy 103.843661 153.587602) + (xy 103.831127 153.657484) + (xy 103.825657 153.667316) + (xy 103.772368 153.753767) + (xy 103.757885 153.777262) + (xy 103.702203 153.945139) + (xy 103.701503 153.951975) + (xy 103.701502 153.951978) + (xy 103.69939 153.972591) + (xy 103.6915 154.0496) + (xy 103.6915 154.85005) + (xy 103.671498 154.918171) + (xy 103.654595 154.939145) + (xy 103.207395 155.386345) + (xy 103.198615 155.394335) + (xy 103.198613 155.394337) + (xy 103.19192 155.398584) + (xy 103.186494 155.404362) + (xy 103.186493 155.404363) + (xy 103.143396 155.450257) + (xy 103.140641 155.453099) + (xy 103.123095 155.470645) + (xy 103.060783 155.504671) + (xy 102.989968 155.499606) + (xy 102.933132 155.457059) + (xy 102.908321 155.390539) + (xy 102.908 155.38155) + (xy 102.908 155.022115) + (xy 102.903525 155.006876) + (xy 102.902135 155.005671) + (xy 102.894452 155.004) + (xy 101.697 155.004) + (xy 101.628879 154.983998) + (xy 101.582386 154.930342) + (xy 101.571 154.878) + (xy 101.571 154.622) + (xy 101.591002 154.553879) + (xy 101.644658 154.507386) + (xy 101.697 154.496) + (xy 102.889884 154.496) + (xy 102.905123 154.491525) + (xy 102.906328 154.490135) + (xy 102.907999 154.482452) + (xy 102.907999 154.052905) + (xy 102.907662 154.046386) + (xy 102.897743 153.950794) + (xy 102.894851 153.9374) + (xy 102.843412 153.783216) + (xy 102.837239 153.770038) + (xy 102.751937 153.632193) + (xy 102.742901 153.620792) + (xy 102.635596 153.513673) + (xy 102.601517 153.45139) + (xy 102.60652 153.38057) + (xy 102.649018 153.323697) + (xy 102.715516 153.298829) + (xy 102.724614 153.2985) + (xy 103.036502 153.2985) + (xy 103.03895 153.298307) + (xy 103.038958 153.298307) + (xy 103.067421 153.296067) + (xy 103.067426 153.296066) + (xy 103.073831 153.295562) + (xy 103.15563 153.271797) + (xy 103.225992 153.251356) + (xy 103.225995 153.251355) + (xy 103.233601 153.249145) + (xy 103.240421 153.245112) + (xy 103.247452 153.242069) + (xy 103.317913 153.233372) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 107.965483 154.861274) + (xy 107.997887 154.924444) + (xy 107.999617 154.942486) + (xy 108.00737 154.946) + (xy 108.245158 154.946) + (xy 108.309297 154.963547) + (xy 108.386399 155.009145) + (xy 108.39401 155.011356) + (xy 108.394012 155.011357) + (xy 108.432822 155.022632) + (xy 108.546169 155.055562) + (xy 108.552574 155.056066) + (xy 108.552579 155.056067) + (xy 108.581042 155.058307) + (xy 108.58105 155.058307) + (xy 108.583498 155.0585) + (xy 109.2905 155.0585) + (xy 109.358621 155.078502) + (xy 109.405114 155.132158) + (xy 109.4165 155.1845) + (xy 109.4165 155.2155) + (xy 109.396498 155.283621) + (xy 109.342842 155.330114) + (xy 109.2905 155.3415) + (xy 108.583498 155.3415) + (xy 108.58105 155.341693) + (xy 108.581042 155.341693) + (xy 108.552579 155.343933) + (xy 108.552574 155.343934) + (xy 108.546169 155.344438) + (xy 108.446231 155.373472) + (xy 108.394012 155.388643) + (xy 108.39401 155.388644) + (xy 108.386399 155.390855) + (xy 108.359864 155.406548) + (xy 108.309297 155.436453) + (xy 108.245158 155.454) + (xy 108.013122 155.454) + (xy 107.969659 155.466762) + (xy 107.898663 155.466762) + (xy 107.838937 155.428378) + (xy 107.827017 155.41217) + (xy 107.816325 155.394892) + (xy 107.773478 155.325652) + (xy 107.753666 155.305874) + (xy 107.653486 155.205869) + (xy 107.648303 155.200695) + (xy 107.643765 155.197898) + (xy 107.603176 155.140647) + (xy 107.599946 155.069724) + (xy 107.635572 155.008313) + (xy 107.644068 155.000938) + (xy 107.654207 154.992902) + (xy 107.768739 154.878171) + (xy 107.775232 154.869949) + (xy 107.833148 154.828884) + (xy 107.904071 154.82565) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts (xy 117.277447 153.996002) (xy 117.32394 154.049658) (xy 117.334044 154.119932) @@ -6456,164 +5840,58 @@ (xy 117.154362 154.404794) (xy 117.110495 154.460613) (xy 117.037374 154.484) - (xy 116.752115 154.484) - (xy 116.736876 154.488475) - (xy 116.735671 154.489865) - (xy 116.734 154.497548) - (xy 116.734 155.737924) - (xy 116.737973 155.751455) - (xy 116.745768 155.752575) - (xy 116.853521 155.720862) - (xy 116.864889 155.716269) - (xy 117.029154 155.630393) - (xy 117.039415 155.623679) - (xy 117.183873 155.507532) - (xy 117.192632 155.498954) - (xy 117.237 155.446079) - (xy 117.29611 155.406752) - (xy 117.367098 155.405626) - (xy 117.410048 155.426972) - (xy 117.475678 155.47715) - (xy 117.549085 155.51138) - (xy 117.633631 155.550805) - (xy 117.633634 155.550806) - (xy 117.639808 155.553685) - (xy 117.646456 155.555171) - (xy 117.646459 155.555172) - (xy 117.752421 155.578857) - (xy 117.816543 155.59319) - (xy 117.822088 155.5935) - (xy 117.955244 155.5935) - (xy 118.090037 155.578857) - (xy 118.25433 155.523566) - (xy 118.255204 155.523272) - (xy 118.255206 155.523271) - (xy 118.261675 155.521094) - (xy 118.416905 155.427823) - (xy 118.421861 155.423136) - (xy 118.421864 155.423134) - (xy 118.441108 155.404935) - (xy 118.458573 155.388419) - (xy 118.521809 155.356147) - (xy 118.592455 155.363186) - (xy 118.634241 155.390872) - (xy 118.950974 155.707605) - (xy 118.958964 155.716385) - (xy 118.963213 155.72308) - (xy 118.968991 155.728506) - (xy 118.968992 155.728507) - (xy 119.014886 155.771604) - (xy 119.017728 155.774359) - (xy 119.038296 155.794927) - (xy 119.041799 155.797644) - (xy 119.050824 155.805352) - (xy 119.084496 155.836972) - (xy 119.091447 155.840793) - (xy 119.091448 155.840794) - (xy 119.103287 155.847303) - (xy 119.119811 155.858157) - (xy 119.1299 155.865982) - (xy 119.136761 155.871304) - (xy 119.144033 155.874451) - (xy 119.144035 155.874452) - (xy 119.179164 155.889654) - (xy 119.189824 155.894876) - (xy 119.219797 155.911354) - (xy 119.230292 155.917124) - (xy 119.25107 155.922459) - (xy 119.26976 155.928858) - (xy 119.289453 155.93738) - (xy 119.322639 155.942636) - (xy 119.335077 155.944606) - (xy 119.3467 155.947013) - (xy 119.371383 155.95335) - (xy 119.391441 155.9585) - (xy 119.412888 155.9585) - (xy 119.432598 155.960051) - (xy 119.453781 155.963406) - (xy 119.49977 155.959059) - (xy 119.511625 155.9585) - (xy 122.043315 155.9585) - (xy 122.055171 155.959059) - (xy 122.055174 155.959059) - (xy 122.062908 155.960788) - (xy 122.13374 155.958562) - (xy 122.137698 155.9585) - (xy 122.166803 155.9585) - (xy 122.171203 155.957944) - (xy 122.183035 155.957012) - (xy 122.229202 155.955562) - (xy 122.249792 155.94958) - (xy 122.269153 155.94557) - (xy 122.276787 155.944606) - (xy 122.282575 155.943875) - (xy 122.282576 155.943875) - (xy 122.290435 155.942882) - (xy 122.2978 155.939966) - (xy 122.297804 155.939965) - (xy 122.333392 155.925874) - (xy 122.344602 155.922035) - (xy 122.388971 155.909145) - (xy 122.407436 155.898225) - (xy 122.425176 155.889534) - (xy 122.445127 155.881635) - (xy 122.4825 155.854482) - (xy 122.492419 155.847967) - (xy 122.525348 155.828493) - (xy 122.525352 155.82849) - (xy 122.532178 155.824453) - (xy 122.547342 155.809289) - (xy 122.562376 155.796448) - (xy 122.579728 155.783841) - (xy 122.609174 155.748247) - (xy 122.617163 155.739468) - (xy 122.964485 155.392146) - (xy 123.026797 155.35812) - (xy 123.097612 155.363185) - (xy 123.130107 155.381144) - (xy 123.169551 155.411301) - (xy 123.250257 155.473006) - (xy 123.250261 155.473009) - (xy 123.255678 155.47715) - (xy 123.329085 155.51138) - (xy 123.413631 155.550805) - (xy 123.413634 155.550806) - (xy 123.419808 155.553685) - (xy 123.426456 155.555171) - (xy 123.426459 155.555172) - (xy 123.532421 155.578857) - (xy 123.596543 155.59319) - (xy 123.602088 155.5935) - (xy 123.735244 155.5935) - (xy 123.870037 155.578857) - (xy 124.03433 155.523566) - (xy 124.035204 155.523272) - (xy 124.035206 155.523271) - (xy 124.041675 155.521094) - (xy 124.193651 155.429778) - (xy 124.193654 155.429777) - (xy 124.196905 155.427823) - (xy 124.197255 155.428406) - (xy 124.258917 155.404935) - (xy 124.328391 155.419561) - (xy 124.366391 155.450915) - (xy 124.397397 155.488933) - (xy 124.406041 155.497637) - (xy 124.548856 155.615784) - (xy 124.559027 155.622644) - (xy 124.722076 155.710804) - (xy 124.733381 155.715556) - (xy 124.848692 155.75125) - (xy 124.862795 155.751456) - (xy 124.866 155.744701) - (xy 124.866 154.502115) - (xy 124.861525 154.486876) - (xy 124.860135 154.485671) - (xy 124.852452 154.484) + (xy 116.352 154.484) + (xy 116.283879 154.463998) + (xy 116.237386 154.410342) + (xy 116.226 154.358) + (xy 116.226 154.102) + (xy 116.246002 154.033879) + (xy 116.299658 153.987386) + (xy 116.352 153.976) + (xy 117.209326 153.976) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 125.986567 151.678502) + (xy 126.016636 151.705734) + (xy 126.019929 151.711055) + (xy 126.139947 151.830864) + (xy 126.284308 151.919849) + (xy 126.291256 151.922154) + (xy 126.291257 151.922154) + (xy 126.438738 151.971072) + (xy 126.43874 151.971072) + (xy 126.445269 151.973238) + (xy 126.467523 151.975518) + (xy 126.533251 152.002359) + (xy 126.574033 152.060473) + (xy 126.576923 152.131411) + (xy 126.543777 152.189957) + (xy 125.892395 152.841339) + (xy 125.883612 152.849331) + (xy 125.87692 152.853578) + (xy 125.871498 152.859352) + (xy 125.870781 152.859945) + (xy 125.805542 152.887953) + (xy 125.735518 152.876244) + (xy 125.710154 152.859943) + (xy 125.691144 152.844216) + (xy 125.680973 152.837356) + (xy 125.517924 152.749196) + (xy 125.506619 152.744444) + (xy 125.391308 152.70875) + (xy 125.377205 152.708544) + (xy 125.374 152.715299) + (xy 125.374 154.358) + (xy 125.353998 154.426121) + (xy 125.300342 154.472614) + (xy 125.248 154.484) (xy 124.562757 154.484) (xy 124.494636 154.463998) (xy 124.4513 154.416765) - (xy 124.404956 154.328866) + (xy 124.421764 154.360745) (xy 124.385078 154.291164) (xy 124.380673 154.285951) (xy 124.38067 154.285947) @@ -6622,447 +5900,80 @@ (xy 124.27623 154.048244) (xy 124.323383 153.995167) (xy 124.390187 153.976) - (xy 125.248 153.976) - (xy 125.316121 153.996002) - (xy 125.362614 154.049658) - (xy 125.374 154.102) - (xy 125.374 155.737924) - (xy 125.377973 155.751455) - (xy 125.385768 155.752575) - (xy 125.493521 155.720862) - (xy 125.504889 155.716269) - (xy 125.669154 155.630393) - (xy 125.679415 155.623679) - (xy 125.823873 155.507532) - (xy 125.832632 155.498954) - (xy 125.951778 155.356961) - (xy 125.958708 155.346841) - (xy 126.048002 155.184415) - (xy 126.052834 155.173142) - (xy 126.10888 154.996462) - (xy 126.11143 154.984468) - (xy 126.127607 154.840239) - (xy 126.128 154.833215) - (xy 126.128 154.800986) - (xy 126.148002 154.732865) - (xy 126.201658 154.686372) - (xy 126.271932 154.676268) - (xy 126.341131 154.709968) - (xy 126.465831 154.829342) - (xy 126.475196 154.836738) - (xy 126.642741 154.944921) - (xy 126.653345 154.950417) - (xy 126.838312 155.024961) - (xy 126.84977 155.028355) - (xy 127.046928 155.066857) - (xy 127.055791 155.067934) - (xy 127.0585 155.068) - (xy 127.287885 155.068) - (xy 127.303124 155.063525) - (xy 127.304329 155.062135) - (xy 127.306 155.054452) - (xy 127.306 155.049885) - (xy 127.814 155.049885) - (xy 127.818475 155.065124) - (xy 127.819865 155.066329) - (xy 127.827548 155.068) - (xy 128.009832 155.068) - (xy 128.015808 155.067715) - (xy 128.164494 155.053529) - (xy 128.176228 155.05127) - (xy 128.367599 154.995128) - (xy 128.378675 154.990698) - (xy 128.555978 154.899381) - (xy 128.566024 154.892931) - (xy 128.722857 154.769738) - (xy 128.731506 154.761501) - (xy 128.862212 154.610877) - (xy 128.869147 154.601153) - (xy 128.96901 154.428533) - (xy 128.973984 154.417669) - (xy 129.039407 154.229273) - (xy 129.039648 154.228284) - (xy 129.03818 154.217992) - (xy 129.024615 154.214) - (xy 127.832115 154.214) - (xy 127.816876 154.218475) - (xy 127.815671 154.219865) - (xy 127.814 154.227548) - (xy 127.814 155.049885) - (xy 127.306 155.049885) - (xy 127.306 153.832) - (xy 127.326002 153.763879) - (xy 127.379658 153.717386) - (xy 127.432 153.706) - (xy 129.020402 153.706) - (xy 129.033933 153.702027) - (xy 129.035288 153.692601) - (xy 129.013806 153.603463) - (xy 129.009917 153.592168) - (xy 128.927371 153.410618) - (xy 128.921424 153.400276) - (xy 128.806032 153.237603) - (xy 128.798234 153.228569) - (xy 128.703096 153.137495) - (xy 128.667719 153.07594) - (xy 128.671238 153.005031) - (xy 128.712534 152.94728) - (xy 128.777222 152.92115) - (xy 128.789662 152.919859) - (xy 128.855982 152.912978) - (xy 129.016849 152.859308) - (xy 129.161055 152.770071) - (xy 129.276827 152.654097) - (xy 129.339109 152.620018) + (xy 124.847885 153.976) + (xy 124.863124 153.971525) + (xy 124.864329 153.970135) + (xy 124.866 153.962452) + (xy 124.866 153.587115) + (xy 124.861525 153.571876) + (xy 124.860135 153.570671) + (xy 124.852452 153.569) + (xy 124.1845 153.569) + (xy 124.116379 153.548998) + (xy 124.069886 153.495342) + (xy 124.0585 153.443) + (xy 124.0585 153.083137) + (xy 124.078502 153.015016) + (xy 124.132158 152.968523) + (xy 124.202432 152.958419) + (xy 124.267012 152.987913) + (xy 124.305396 153.047639) + (xy 124.308475 153.058124) + (xy 124.309865 153.059329) + (xy 124.317548 153.061) + (xy 124.847885 153.061) + (xy 124.863124 153.056525) + (xy 124.864329 153.055135) + (xy 124.866 153.047452) + (xy 124.866 152.722076) + (xy 124.863103 152.71221) + (xy 124.857999 152.676712) + (xy 124.857999 152.545331) + (xy 124.857629 152.53851) + (xy 124.852105 152.487648) + (xy 124.848479 152.472396) + (xy 124.803324 152.351946) + (xy 124.794786 152.336351) + (xy 124.718285 152.234276) + (xy 124.717219 152.23321) + (xy 124.716502 152.231896) + (xy 124.712904 152.227096) + (xy 124.713597 152.226577) + (xy 124.683193 152.170898) + (xy 124.688258 152.100083) + (xy 124.717218 152.05502) + (xy 125.076834 151.695404) + (xy 125.139145 151.66138) + (xy 125.165928 151.6585) + (xy 125.918446 151.6585) ) ) (filled_polygon (layer "F.Cu") (pts - (xy 108.098481 155.616868) - (xy 108.18371 155.645138) - (xy 108.197086 155.648005) - (xy 108.242749 155.652684) - (xy 108.308476 155.679526) - (xy 108.349258 155.737641) - (xy 108.352146 155.808579) - (xy 108.345542 155.828071) - (xy 108.344892 155.829573) - (xy 108.340855 155.836399) - (xy 108.338644 155.84401) - (xy 108.338643 155.844012) - (xy 108.335601 155.854484) - (xy 108.294438 155.996169) - (xy 108.2915 156.033498) - (xy 108.2915 156.466502) - (xy 108.291693 156.46895) - (xy 108.291693 156.468958) - (xy 108.292904 156.484337) - (xy 108.294438 156.503831) - (xy 108.31029 156.558395) - (xy 108.337168 156.650909) - (xy 108.340855 156.663601) - (xy 108.344889 156.670423) - (xy 108.347128 156.675596) - (xy 108.355824 156.746058) - (xy 108.347128 156.775674) - (xy 108.339107 156.79421) - (xy 108.300061 156.928605) - (xy 108.300101 156.942706) - (xy 108.30737 156.946) - (xy 108.545158 156.946) - (xy 108.609297 156.963547) - (xy 108.686399 157.009145) - (xy 108.69401 157.011356) - (xy 108.694012 157.011357) - (xy 108.746231 157.026528) - (xy 108.846169 157.055562) - (xy 108.852574 157.056066) - (xy 108.852579 157.056067) - (xy 108.881042 157.058307) - (xy 108.88105 157.058307) - (xy 108.883498 157.0585) - (xy 110.041502 157.0585) - (xy 110.04395 157.058307) - (xy 110.043958 157.058307) - (xy 110.072421 157.056067) - (xy 110.072426 157.056066) - (xy 110.078831 157.055562) - (xy 110.178769 157.026528) - (xy 110.230988 157.011357) - (xy 110.23099 157.011356) - (xy 110.238601 157.009145) - (xy 110.315703 156.963547) - (xy 110.379842 156.946) - (xy 110.611878 156.946) - (xy 110.627116 156.941526) - (xy 110.635268 156.932118) - (xy 110.694994 156.893734) - (xy 110.76599 156.893734) - (xy 110.80772 156.915071) - (xy 110.812585 156.918845) - (xy 110.818193 156.924453) - (xy 110.825017 156.928489) - (xy 110.82502 156.928491) - (xy 110.856512 156.947115) - (xy 110.961399 157.009145) - (xy 110.96901 157.011356) - (xy 110.969012 157.011357) - (xy 111.021231 157.026528) - (xy 111.121169 157.055562) - (xy 111.127574 157.056066) - (xy 111.127579 157.056067) - (xy 111.156042 157.058307) - (xy 111.15605 157.058307) - (xy 111.158498 157.0585) - (xy 111.30605 157.0585) - (xy 111.374171 157.078502) - (xy 111.420664 157.132158) - (xy 111.430768 157.202432) - (xy 111.401274 157.267012) - (xy 111.395145 157.273595) - (xy 111.364145 157.304595) - (xy 111.301833 157.338621) - (xy 111.27505 157.3415) - (xy 111.158498 157.3415) - (xy 111.15605 157.341693) - (xy 111.156042 157.341693) - (xy 111.127579 157.343933) - (xy 111.127574 157.343934) - (xy 111.121169 157.344438) - (xy 111.034092 157.369736) - (xy 110.969012 157.388643) - (xy 110.96901 157.388644) - (xy 110.961399 157.390855) - (xy 110.818193 157.475547) - (xy 110.812584 157.481156) - (xy 110.807114 157.485399) - (xy 110.741029 157.511346) - (xy 110.671406 157.497445) - (xy 110.629884 157.459554) - (xy 110.61763 157.454) - (xy 110.379842 157.454) - (xy 110.315703 157.436453) - (xy 110.269756 157.40928) - (xy 110.238601 157.390855) - (xy 110.23099 157.388644) - (xy 110.230988 157.388643) - (xy 110.165908 157.369736) - (xy 110.078831 157.344438) - (xy 110.072426 157.343934) - (xy 110.072421 157.343933) - (xy 110.043958 157.341693) - (xy 110.04395 157.341693) - (xy 110.041502 157.3415) - (xy 108.883498 157.3415) - (xy 108.88105 157.341693) - (xy 108.881042 157.341693) - (xy 108.852579 157.343933) - (xy 108.852574 157.343934) - (xy 108.846169 157.344438) - (xy 108.759092 157.369736) - (xy 108.694012 157.388643) - (xy 108.69401 157.388644) - (xy 108.686399 157.390855) - (xy 108.655244 157.40928) - (xy 108.609297 157.436453) - (xy 108.545158 157.454) - (xy 108.313122 157.454) - (xy 108.299591 157.457973) - (xy 108.298456 157.465871) - (xy 108.326726 157.563175) - (xy 108.326523 157.634172) - (xy 108.302815 157.678643) - (xy 108.289309 157.69497) - (xy 108.283699 157.701751) - (xy 108.275708 157.710532) - (xy 107.488647 158.497593) - (xy 107.426335 158.531619) - (xy 107.389666 158.53411) - (xy 107.358959 158.531693) - (xy 107.358949 158.531693) - (xy 107.356502 158.5315) - (xy 107.1245 158.5315) - (xy 107.056379 158.511498) - (xy 107.009886 158.457842) - (xy 106.9985 158.4055) - (xy 106.9985 157.248498) - (xy 106.997196 157.231923) - (xy 106.996067 157.217582) - (xy 106.996067 157.217579) - (xy 106.995562 157.211169) - (xy 106.994221 157.206552) - (xy 107.001597 157.136531) - (xy 107.046028 157.081155) - (xy 107.118109 157.0585) - (xy 107.2254 157.0585) - (xy 107.228646 157.058163) - (xy 107.22865 157.058163) - (xy 107.324308 157.048238) - (xy 107.324312 157.048237) - (xy 107.331166 157.047526) - (xy 107.337702 157.045345) - (xy 107.337704 157.045345) - (xy 107.491998 156.993868) - (xy 107.498946 156.99155) - (xy 107.649348 156.898478) - (xy 107.774305 156.773303) - (xy 107.804428 156.724435) - (xy 107.863275 156.628968) - (xy 107.863276 156.628966) - (xy 107.867115 156.622738) - (xy 107.904506 156.510008) - (xy 107.920632 156.461389) - (xy 107.920632 156.461387) - (xy 107.922797 156.454861) - (xy 107.923746 156.445604) - (xy 107.929835 156.386169) - (xy 107.9335 156.3504) - (xy 107.9335 155.7496) - (xy 107.933163 155.74635) - (xy 107.932995 155.743108) - (xy 107.934671 155.743021) - (xy 107.946354 155.679637) - (xy 107.994927 155.627858) - (xy 108.063784 155.610559) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 102.940671 154.516002) - (xy 102.961645 154.532905) - (xy 103.586345 155.157605) - (xy 103.594335 155.166385) - (xy 103.598584 155.17308) - (xy 103.604362 155.178506) - (xy 103.604363 155.178507) - (xy 103.650257 155.221604) - (xy 103.653099 155.224359) - (xy 103.654595 155.225855) - (xy 103.688621 155.288167) - (xy 103.6915 155.31495) - (xy 103.6915 155.4504) - (xy 103.691837 155.453646) - (xy 103.691837 155.45365) - (xy 103.701618 155.547914) - (xy 103.702474 155.556166) - (xy 103.704655 155.562702) - (xy 103.704655 155.562704) - (xy 103.7391 155.665946) - (xy 103.75845 155.723946) - (xy 103.770983 155.744199) - (xy 103.78982 155.812648) - (xy 103.768659 155.880418) - (xy 103.714219 155.925989) - (xy 103.663838 155.9365) - (xy 103.36539 155.936501) - (xy 103.358366 155.936501) - (xy 103.355508 155.936764) - (xy 103.355499 155.936764) - (xy 103.320661 155.939965) - (xy 103.284938 155.943247) - (xy 103.27856 155.945246) - (xy 103.278559 155.945246) - (xy 103.12855 155.992256) - (xy 103.128548 155.992257) - (xy 103.121301 155.994528) - (xy 102.974619 156.083361) - (xy 102.879095 156.178885) - (xy 102.816783 156.212911) - (xy 102.745968 156.207846) - (xy 102.700905 156.178885) - (xy 102.661132 156.139112) - (xy 102.627106 156.0768) - (xy 102.632171 156.005985) - (xy 102.661055 155.960999) - (xy 102.743735 155.878176) - (xy 102.752751 155.86676) - (xy 102.837816 155.728757) - (xy 102.843963 155.715576) - (xy 102.895138 155.56129) - (xy 102.898005 155.547914) - (xy 102.907672 155.453562) - (xy 102.908 155.447146) - (xy 102.908 155.022115) - (xy 102.903525 155.006876) - (xy 102.902135 155.005671) - (xy 102.894452 155.004) - (xy 101.697 155.004) - (xy 101.628879 154.983998) - (xy 101.582386 154.930342) - (xy 101.571 154.878) - (xy 101.571 154.622) - (xy 101.591002 154.553879) - (xy 101.644658 154.507386) - (xy 101.697 154.496) - (xy 102.87255 154.496) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 110.871121 154.166002) - (xy 110.917614 154.219658) - (xy 110.929 154.272) - (xy 110.929 155.364884) - (xy 110.937693 155.39449) - (xy 110.937693 155.465487) - (xy 110.899309 155.525213) - (xy 110.880945 155.538435) - (xy 110.818193 155.575547) - (xy 110.727794 155.665946) - (xy 110.665482 155.699972) - (xy 110.594667 155.694907) - (xy 110.537831 155.65236) - (xy 110.51302 155.58584) - (xy 110.519322 155.544902) - (xy 110.517124 155.544338) - (xy 110.522457 155.523566) - (xy 110.528859 155.504864) - (xy 110.537379 155.485177) - (xy 110.540498 155.465487) - (xy 110.544605 155.439552) - (xy 110.547013 155.427926) - (xy 110.556529 155.390865) - (xy 110.556529 155.390864) - (xy 110.5585 155.383188) - (xy 110.5585 155.361742) - (xy 110.560051 155.342031) - (xy 110.562166 155.328678) - (xy 110.563406 155.320849) - (xy 110.559059 155.274864) - (xy 110.5585 155.263006) - (xy 110.5585 154.272) - (xy 110.578502 154.203879) - (xy 110.632158 154.157386) - (xy 110.6845 154.146) - (xy 110.803 154.146) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 109.183621 154.416002) - (xy 109.230114 154.469658) - (xy 109.2415 154.522) - (xy 109.2415 154.778) - (xy 109.221498 154.846121) - (xy 109.167842 154.892614) - (xy 109.1155 154.904) - (xy 108.692 154.904) - (xy 108.623879 154.883998) - (xy 108.577386 154.830342) - (xy 108.566 154.778) - (xy 108.566 154.522) - (xy 108.586002 154.453879) - (xy 108.639658 154.407386) - (xy 108.692 154.396) - (xy 109.1155 154.396) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 104.748171 150.568502) - (xy 104.769145 150.585405) - (xy 105.141345 150.957605) - (xy 105.149335 150.966385) - (xy 105.153584 150.97308) - (xy 105.159362 150.978506) - (xy 105.159363 150.978507) - (xy 105.205257 151.021604) - (xy 105.208099 151.024359) - (xy 105.228667 151.044927) - (xy 105.23217 151.047644) - (xy 105.241195 151.055352) - (xy 105.274867 151.086972) - (xy 105.290536 151.095586) - (xy 105.340594 151.145931) - (xy 105.355487 151.215348) - (xy 105.330486 151.281797) - (xy 105.273529 151.324181) - (xy 105.229834 151.332) + (xy 105.522663 150.569644) + (xy 105.554483 150.63311) + (xy 105.5565 150.655563) + (xy 105.5565 150.8604) + (xy 105.556837 150.863646) + (xy 105.556837 150.86365) + (xy 105.565696 150.949027) + (xy 105.567474 150.966166) + (xy 105.569655 150.972702) + (xy 105.569655 150.972704) + (xy 105.601359 151.067732) + (xy 105.62345 151.133946) + (xy 105.627306 151.140177) + (xy 105.664974 151.201048) + (xy 105.683812 151.2695) + (xy 105.662651 151.33727) + (xy 105.60821 151.382841) + (xy 105.537774 151.391745) + (xy 105.518163 151.386944) + (xy 105.391293 151.344863) + (xy 105.377914 151.341995) + (xy 105.283562 151.332328) + (xy 105.277145 151.332) (xy 104.852115 151.332) (xy 104.836876 151.336475) (xy 104.835671 151.337865) @@ -7076,10 +5987,51 @@ (xy 106.019377 152.191775) (xy 106.033865 152.204329) (xy 106.041548 152.206) - (xy 106.918 152.206) - (xy 106.986121 152.226002) - (xy 107.032614 152.279658) - (xy 107.044 152.332) + (xy 107.802193 152.206) + (xy 107.845061 152.215111) + (xy 107.8454 152.214068) + (xy 107.85168 152.216108) + (xy 107.857712 152.218794) + (xy 107.951112 152.238647) + (xy 108.038056 152.257128) + (xy 108.038061 152.257128) + (xy 108.044513 152.2585) + (xy 108.235487 152.2585) + (xy 108.241939 152.257128) + (xy 108.241944 152.257128) + (xy 108.328888 152.238647) + (xy 108.422288 152.218794) + (xy 108.428315 152.216111) + (xy 108.428323 152.216108) + (xy 108.561322 152.156893) + (xy 108.61257 152.146) + (xy 109.478 152.146) + (xy 109.546121 152.166002) + (xy 109.592614 152.219658) + (xy 109.604 152.272) + (xy 109.604 152.528) + (xy 109.583998 152.596121) + (xy 109.530342 152.642614) + (xy 109.478 152.654) + (xy 108.460116 152.654) + (xy 108.409678 152.66881) + (xy 108.347983 152.67116) + (xy 108.261953 152.652873) + (xy 108.26194 152.652872) + (xy 108.255487 152.6515) + (xy 108.064513 152.6515) + (xy 108.058061 152.652872) + (xy 108.058056 152.652872) + (xy 107.983076 152.66881) + (xy 107.877712 152.691206) + (xy 107.871682 152.693891) + (xy 107.871681 152.693891) + (xy 107.850982 152.703107) + (xy 107.799733 152.714) + (xy 107.062115 152.714) + (xy 107.046876 152.718475) + (xy 107.045671 152.719865) + (xy 107.044 152.727548) (xy 107.044 153.39257) (xy 107.023998 153.460691) (xy 106.970342 153.507184) @@ -7133,151 +6085,335 @@ (xy 104.390855 150.585405) (xy 104.453167 150.551379) (xy 104.47995 150.5485) - (xy 104.68005 150.5485) + (xy 105.2804 150.5485) + (xy 105.283646 150.548163) + (xy 105.28365 150.548163) + (xy 105.379308 150.538238) + (xy 105.379312 150.538237) + (xy 105.386166 150.537526) + (xy 105.392703 150.535345) + (xy 105.399445 150.533889) + (xy 105.399837 150.535702) + (xy 105.461581 150.533457) ) ) (filled_polygon (layer "F.Cu") (pts - (xy 99.329297 151.303547) - (xy 99.406399 151.349145) - (xy 99.41401 151.351356) - (xy 99.414012 151.351357) - (xy 99.466231 151.366528) - (xy 99.566169 151.395562) - (xy 99.572574 151.396066) - (xy 99.572579 151.396067) - (xy 99.601042 151.398307) - (xy 99.60105 151.398307) - (xy 99.603498 151.3985) - (xy 100.3105 151.3985) - (xy 100.378621 151.418502) - (xy 100.425114 151.472158) - (xy 100.4365 151.5245) - (xy 100.4365 151.5555) - (xy 100.416498 151.623621) - (xy 100.362842 151.670114) - (xy 100.3105 151.6815) - (xy 99.603498 151.6815) - (xy 99.60105 151.681693) - (xy 99.601042 151.681693) - (xy 99.572579 151.683933) - (xy 99.572574 151.683934) - (xy 99.566169 151.684438) - (xy 99.476641 151.710448) - (xy 99.414012 151.728643) - (xy 99.41401 151.728644) - (xy 99.406399 151.730855) - (xy 99.399572 151.734892) - (xy 99.399573 151.734892) - (xy 99.329297 151.776453) - (xy 99.265158 151.794) - (xy 99.033122 151.794) - (xy 99.019591 151.797973) - (xy 99.018456 151.805871) - (xy 99.059107 151.94579) - (xy 99.067128 151.964326) - (xy 99.075824 152.034788) - (xy 99.067128 152.064404) - (xy 99.064889 152.069577) - (xy 99.060855 152.076399) - (xy 99.058644 152.08401) - (xy 99.058643 152.084012) - (xy 99.047386 152.12276) - (xy 99.014438 152.236169) - (xy 99.013934 152.242574) - (xy 99.013933 152.242579) - (xy 99.013036 152.253976) - (xy 99.0115 152.273498) - (xy 99.0115 152.706502) - (xy 99.011693 152.70895) - (xy 99.011693 152.708958) - (xy 99.013666 152.734017) - (xy 99.014438 152.743831) - (xy 99.060855 152.903601) - (xy 99.072623 152.9235) - (xy 99.141509 153.03998) - (xy 99.141511 153.039983) - (xy 99.145547 153.046807) - (xy 99.263193 153.164453) - (xy 99.270017 153.168489) - (xy 99.27002 153.168491) - (xy 99.352772 153.21743) - (xy 99.406399 153.249145) - (xy 99.414005 153.251355) - (xy 99.418121 153.253136) - (xy 99.472694 153.298548) - (xy 99.494052 153.366256) - (xy 99.475413 153.434763) - (xy 99.433348 153.476547) - (xy 99.411429 153.489822) - (xy 99.399557 153.499131) - (xy 99.289131 153.609557) - (xy 99.279824 153.621426) - (xy 99.198921 153.755012) - (xy 99.192716 153.768755) - (xy 99.18867 153.781666) - (xy 99.149212 153.840688) - (xy 99.084108 153.869008) - (xy 99.014028 153.857634) - (xy 98.979341 153.833081) - (xy 98.195405 153.049145) - (xy 98.161379 152.986833) - (xy 98.1585 152.96005) - (xy 98.1585 152.228524) - (xy 98.178502 152.160403) - (xy 98.195405 152.139428) - (xy 99.01193 151.322904) - (xy 99.074242 151.288879) - (xy 99.101025 151.286) - (xy 99.265158 151.286) + (xy 111.235094 149.107777) + (xy 111.291727 149.150594) + (xy 111.31622 149.217232) + (xy 111.3165 149.225622) + (xy 111.3165 149.398732) + (xy 111.327113 149.501019) + (xy 111.329295 149.507559) + (xy 111.378538 149.655156) + (xy 111.381244 149.663268) + (xy 111.385096 149.669492) + (xy 111.385096 149.669493) + (xy 111.438956 149.756529) + (xy 111.471248 149.808713) + (xy 111.47643 149.813886) + (xy 111.480977 149.819623) + (xy 111.47917 149.821055) + (xy 111.507902 149.873575) + (xy 111.502892 149.944395) + (xy 111.479501 149.980853) + (xy 111.480552 149.981683) + (xy 111.467002 149.99884) + (xy 111.384996 150.13188) + (xy 111.378849 150.145061) + (xy 111.329509 150.293814) + (xy 111.326642 150.30719) + (xy 111.317328 150.398097) + (xy 111.317071 150.403126) + (xy 111.321475 150.418124) + (xy 111.322865 150.419329) + (xy 111.330548 150.421) + (xy 112.428 150.421) + (xy 112.496121 150.441002) + (xy 112.542614 150.494658) + (xy 112.554 150.547) + (xy 112.554 151.614885) + (xy 112.558475 151.630124) + (xy 112.559865 151.631329) + (xy 112.567548 151.633) + (xy 112.595438 151.633) + (xy 112.601953 151.632663) + (xy 112.694057 151.623106) + (xy 112.707456 151.620212) + (xy 112.856107 151.570619) + (xy 112.869286 151.564445) + (xy 113.002173 151.482212) + (xy 113.013574 151.473176) + (xy 113.123986 151.362571) + (xy 113.133 151.351157) + (xy 113.164489 151.300072) + (xy 113.21726 151.252578) + (xy 113.287332 151.241154) + (xy 113.352456 151.269428) + (xy 113.391582 151.327251) + (xy 113.425473 151.431556) + (xy 113.52096 151.596944) + (xy 113.525378 151.601851) + (xy 113.525379 151.601852) + (xy 113.620848 151.707881) + (xy 113.648747 151.738866) + (xy 113.724632 151.794) + (xy 113.78595 151.83855) + (xy 113.803248 151.851118) + (xy 113.809276 151.853802) + (xy 113.809278 151.853803) + (xy 113.962798 151.922154) + (xy 113.977712 151.928794) + (xy 114.045454 151.943193) + (xy 114.158056 151.967128) + (xy 114.158061 151.967128) + (xy 114.164513 151.9685) + (xy 114.355487 151.9685) + (xy 114.361939 151.967128) + (xy 114.361944 151.967128) + (xy 114.474546 151.943193) + (xy 114.542288 151.928794) + (xy 114.548315 151.926111) + (xy 114.548323 151.926108) + (xy 114.590831 151.907182) + (xy 114.661198 151.897748) + (xy 114.723138 151.926751) + (xy 114.723272 151.926581) + (xy 114.72401 151.92716) + (xy 114.725495 151.927855) + (xy 114.728502 151.930682) + (xy 114.729243 151.931263) + (xy 114.734619 151.936639) + (xy 114.741121 151.940576) + (xy 114.74112 151.940576) + (xy 114.782443 151.965602) + (xy 114.83035 152.017999) + (xy 114.842323 152.087979) + (xy 114.814562 152.153323) + (xy 114.806267 152.162473) + (xy 114.364145 152.604595) + (xy 114.301833 152.638621) + (xy 114.27505 152.6415) + (xy 113.4996 152.6415) + (xy 113.496354 152.641837) + (xy 113.49635 152.641837) + (xy 113.400692 152.651762) + (xy 113.400688 152.651763) + (xy 113.393834 152.652474) + (xy 113.387298 152.654655) + (xy 113.387296 152.654655) + (xy 113.269372 152.693998) + (xy 113.226054 152.70845) + (xy 113.075652 152.801522) + (xy 112.950695 152.926697) + (xy 112.946855 152.932927) + (xy 112.946854 152.932928) + (xy 112.870668 153.056525) + (xy 112.857885 153.077262) + (xy 112.836823 153.140761) + (xy 112.804703 153.237603) + (xy 112.802203 153.245139) + (xy 112.7915 153.3496) + (xy 112.7915 153.768712) + (xy 112.771498 153.836833) + (xy 112.717842 153.883326) + (xy 112.647568 153.89343) + (xy 112.582988 153.863936) + (xy 112.557047 153.832851) + (xy 112.478491 153.70002) + (xy 112.478489 153.700017) + (xy 112.474453 153.693193) + (xy 112.356807 153.575547) + (xy 112.349983 153.571511) + (xy 112.34998 153.571509) + (xy 112.230239 153.500695) + (xy 112.213601 153.490855) + (xy 112.186846 153.483082) + (xy 112.127011 153.444868) + (xy 112.097334 153.380372) + (xy 112.096 153.362085) + (xy 112.096 152.919556) + (xy 112.096559 152.9077) + (xy 112.096559 152.907697) + (xy 112.098288 152.899963) + (xy 112.096062 152.829131) + (xy 112.096 152.825173) + (xy 112.096 152.796068) + (xy 112.095444 152.791668) + (xy 112.094512 152.77983) + (xy 112.094466 152.778342) + (xy 112.093062 152.733669) + (xy 112.08708 152.713079) + (xy 112.08307 152.693716) + (xy 112.081375 152.680296) + (xy 112.081375 152.680295) + (xy 112.080382 152.672436) + (xy 112.077466 152.665071) + (xy 112.077465 152.665067) + (xy 112.063376 152.629482) + (xy 112.059531 152.618253) + (xy 112.048856 152.58151) + (xy 112.046645 152.573899) + (xy 112.03573 152.555443) + (xy 112.027031 152.537687) + (xy 112.026682 152.536807) + (xy 112.019135 152.517744) + (xy 111.99198 152.480368) + (xy 111.985465 152.470449) + (xy 111.965992 152.437523) + (xy 111.965989 152.437519) + (xy 111.961952 152.430693) + (xy 111.946791 152.415532) + (xy 111.933951 152.400499) + (xy 111.932564 152.39859) + (xy 111.908705 152.331722) + (xy 111.908499 152.324528) + (xy 111.908499 152.068366) + (xy 111.907357 152.05593) + (xy 111.902999 152.0085) + (xy 111.901753 151.994938) + (xy 111.899754 151.988559) + (xy 111.852744 151.83855) + (xy 111.852743 151.838548) + (xy 111.850472 151.831301) + (xy 111.843511 151.819807) + (xy 111.825332 151.751178) + (xy 111.847142 151.683614) + (xy 111.902018 151.638568) + (xy 111.964129 151.629192) + (xy 111.998097 151.632672) + (xy 112.004513 151.633) + (xy 112.027885 151.633) + (xy 112.043124 151.628525) + (xy 112.044329 151.627135) + (xy 112.046 151.619452) + (xy 112.046 150.947115) + (xy 112.041525 150.931876) + (xy 112.040135 150.930671) + (xy 112.032452 150.929) + (xy 111.335115 150.929) + (xy 111.319876 150.933475) + (xy 111.318671 150.934865) + (xy 111.317 150.942548) + (xy 111.317 150.945438) + (xy 111.317337 150.951953) + (xy 111.326894 151.044057) + (xy 111.329788 151.057456) + (xy 111.379381 151.206107) + (xy 111.385552 151.219281) + (xy 111.389742 151.226051) + (xy 111.40858 151.294503) + (xy 111.387419 151.362272) + (xy 111.332979 151.407844) + (xy 111.271073 151.417827) + (xy 111.256635 151.4165) + (xy 111.237549 151.4165) + (xy 110.818403 151.416501) + (xy 110.750282 151.396499) + (xy 110.703789 151.342844) + (xy 110.693685 151.27257) + (xy 110.711142 151.224387) + (xy 110.715003 151.218123) + (xy 110.721151 151.204939) + (xy 110.770491 151.056186) + (xy 110.773358 151.04281) + (xy 110.782672 150.951903) + (xy 110.782929 150.946874) + (xy 110.778525 150.931876) + (xy 110.777135 150.930671) + (xy 110.769452 150.929) + (xy 109.672 150.929) + (xy 109.603879 150.908998) + (xy 109.557386 150.855342) + (xy 109.546 150.803) + (xy 109.546 150.547) + (xy 109.566002 150.478879) + (xy 109.619658 150.432386) + (xy 109.672 150.421) + (xy 110.764885 150.421) + (xy 110.780124 150.416525) + (xy 110.781329 150.415135) + (xy 110.783 150.407452) + (xy 110.783 150.404562) + (xy 110.782662 150.398038) + (xy 110.773106 150.305943) + (xy 110.770212 150.292544) + (xy 110.720619 150.143893) + (xy 110.714445 150.130714) + (xy 110.632212 149.997827) + (xy 110.618629 149.980689) + (xy 110.620559 149.979159) + (xy 110.592097 149.92712) + (xy 110.597113 149.856301) + (xy 110.620799 149.819383) + (xy 110.619843 149.818628) + (xy 110.624381 149.812882) + (xy 110.629552 149.807702) + (xy 110.637033 149.795566) + (xy 110.715462 149.668331) + (xy 110.715463 149.668329) + (xy 110.719302 149.662101) + (xy 110.773149 149.499757) + (xy 110.774413 149.487426) + (xy 110.780005 149.432846) + (xy 110.7835 149.398732) + (xy 110.7835 149.229872) + (xy 110.803502 149.161751) + (xy 110.857158 149.115258) + (xy 110.927432 149.105154) + (xy 110.93569 149.106625) + (xy 110.944513 149.1085) + (xy 111.135487 149.1085) + (xy 111.141939 149.107128) + (xy 111.141944 149.107128) + (xy 111.164303 149.102375) ) ) (filled_polygon (layer "F.Cu") (pts - (xy 111.544032 153.412154) - (xy 111.589095 153.441115) - (xy 111.608885 153.460905) - (xy 111.642911 153.523217) - (xy 111.637846 153.594032) - (xy 111.608885 153.639095) - (xy 111.588741 153.659239) - (xy 111.526429 153.693265) - (xy 111.455614 153.6882) - (xy 111.410551 153.659239) - (xy 111.390761 153.639449) - (xy 111.356735 153.577137) - (xy 111.3618 153.506322) - (xy 111.390761 153.461259) - (xy 111.410905 153.441115) - (xy 111.473217 153.407089) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 124.267012 152.987913) - (xy 124.305396 153.047639) - (xy 124.308475 153.058124) - (xy 124.309865 153.059329) - (xy 124.317548 153.061) - (xy 124.772 153.061) - (xy 124.840121 153.081002) - (xy 124.886614 153.134658) - (xy 124.898 153.187) - (xy 124.898 153.443) - (xy 124.877998 153.511121) - (xy 124.824342 153.557614) - (xy 124.772 153.569) - (xy 124.1845 153.569) - (xy 124.116379 153.548998) - (xy 124.069886 153.495342) - (xy 124.0585 153.443) - (xy 124.0585 153.083137) - (xy 124.078502 153.015016) - (xy 124.132158 152.968523) - (xy 124.202432 152.958419) + (xy 129.446707 151.553071) + (xy 129.486207 151.612065) + (xy 129.492 151.64983) + (xy 129.492 153.543057) + (xy 129.471998 153.611178) + (xy 129.418342 153.657671) + (xy 129.348068 153.667775) + (xy 129.283488 153.638281) + (xy 129.251299 153.595208) + (xy 129.167371 153.410618) + (xy 129.161424 153.400276) + (xy 129.046032 153.237603) + (xy 129.038239 153.228575) + (xy 128.894169 153.090658) + (xy 128.884804 153.083262) + (xy 128.717259 152.975079) + (xy 128.706655 152.969583) + (xy 128.521688 152.895039) + (xy 128.51023 152.891645) + (xy 128.313072 152.853143) + (xy 128.304209 152.852066) + (xy 128.3015 152.852) + (xy 128.048444 152.852) + (xy 127.980323 152.831998) + (xy 127.93383 152.778342) + (xy 127.923726 152.708068) + (xy 127.95322 152.643488) + (xy 127.959349 152.636905) + (xy 128.576415 152.019839) + (xy 128.638727 151.985813) + (xy 128.654592 151.983692) + (xy 128.654572 151.9835) + (xy 128.755982 151.972978) + (xy 128.916849 151.919308) + (xy 129.061055 151.830071) + (xy 129.180864 151.710053) + (xy 129.185609 151.702356) + (xy 129.25874 151.583714) + (xy 129.311512 151.536221) + (xy 129.381583 151.524797) ) ) (filled_polygon @@ -7309,775 +6445,8 @@ (filled_polygon (layer "F.Cu") (pts - (xy 92.729863 141.878987) - (xy 92.776356 141.932643) - (xy 92.78646 142.002917) - (xy 92.756966 142.067497) - (xy 92.71299 142.100092) - (xy 92.699281 142.106195) - (xy 92.699274 142.106199) - (xy 92.693248 142.108882) - (xy 92.687907 142.112762) - (xy 92.687906 142.112763) - (xy 92.673522 142.123214) - (xy 92.538747 142.221134) - (xy 92.534326 142.226044) - (xy 92.534325 142.226045) - (xy 92.445553 142.324637) - (xy 92.41096 142.363056) - (xy 92.376504 142.422735) - (xy 92.329245 142.504591) - (xy 92.315473 142.528444) - (xy 92.256458 142.710072) - (xy 92.255768 142.716633) - (xy 92.255768 142.716635) - (xy 92.241018 142.856971) - (xy 92.236496 142.9) - (xy 92.237186 142.906565) - (xy 92.254832 143.074453) - (xy 92.256458 143.089928) - (xy 92.258496 143.096202) - (xy 92.258498 143.096209) - (xy 92.268199 143.126065) - (xy 92.270226 143.197032) - (xy 92.233563 143.25783) - (xy 92.169851 143.289155) - (xy 92.148366 143.291) - (xy 91.999328 143.291) - (xy 91.992876 143.292372) - (xy 91.992871 143.292372) - (xy 91.905927 143.310853) - (xy 91.812527 143.330706) - (xy 91.806497 143.333391) - (xy 91.806496 143.333391) - (xy 91.644093 143.405697) - (xy 91.644091 143.405698) - (xy 91.638063 143.408382) - (xy 91.483562 143.520634) - (xy 91.479141 143.525544) - (xy 91.47914 143.525545) - (xy 91.382286 143.633113) - (xy 91.355775 143.662556) - (xy 91.260288 143.827944) - (xy 91.201273 144.009572) - (xy 91.200583 144.016133) - (xy 91.200583 144.016135) - (xy 91.183763 144.176172) - (xy 91.181311 144.1995) - (xy 91.182001 144.206065) - (xy 91.199859 144.375971) - (xy 91.201273 144.389428) - (xy 91.260288 144.571056) - (xy 91.263591 144.576778) - (xy 91.263592 144.576779) - (xy 91.292097 144.62615) - (xy 91.355775 144.736444) - (xy 91.483562 144.878366) - (xy 91.638063 144.990618) - (xy 91.644095 144.993303) - (xy 91.649815 144.996606) - (xy 91.648844 144.998288) - (xy 91.69585 145.038247) - (xy 91.7165 145.107366) - (xy 91.716501 145.561243) - (xy 91.716501 145.989884) - (xy 91.717039 145.993969) - (xy 91.717039 145.993973) - (xy 91.727411 146.07276) - (xy 91.732162 146.10885) - (xy 91.756909 146.168595) - (xy 91.7665 146.216813) - (xy 91.7665 146.794257) - (xy 91.748276 146.859527) - (xy 91.674528 146.981301) - (xy 91.672257 146.988548) - (xy 91.672256 146.98855) - (xy 91.663487 147.016532) - (xy 91.623247 147.144938) - (xy 91.6165 147.218365) - (xy 91.616501 147.731634) - (xy 91.616764 147.734492) - (xy 91.616764 147.734501) - (xy 91.617716 147.744861) - (xy 91.623247 147.805062) - (xy 91.625246 147.81144) - (xy 91.625246 147.811441) - (xy 91.668403 147.949153) - (xy 91.674528 147.968699) - (xy 91.763361 148.115381) - (xy 91.859239 148.211259) - (xy 91.893265 148.273571) - (xy 91.8882 148.344386) - (xy 91.859239 148.389449) - (xy 91.769131 148.479557) - (xy 91.759824 148.491426) - (xy 91.678921 148.625012) - (xy 91.672715 148.638757) - (xy 91.625744 148.788644) - (xy 91.623131 148.801694) - (xy 91.618087 148.856586) - (xy 91.621475 148.868124) - (xy 91.622865 148.869329) - (xy 91.630548 148.871) - (xy 92.728 148.871) - (xy 92.796121 148.891002) - (xy 92.842614 148.944658) - (xy 92.854 148.997) - (xy 92.854 150.014884) - (xy 92.858475 150.030123) - (xy 92.859865 150.031328) - (xy 92.867548 150.032999) - (xy 92.928705 150.032999) - (xy 92.934454 150.032736) - (xy 92.998315 150.026868) - (xy 93.017903 150.022945) - (xy 93.01847 150.025776) - (xy 93.076753 150.024719) - (xy 93.137165 150.062013) - (xy 93.167825 150.126049) - (xy 93.163286 150.185174) - (xy 93.108289 150.354437) - (xy 93.068215 150.413042) - (xy 93.002818 150.440679) - (xy 92.988456 150.4415) - (xy 92.954513 150.4415) - (xy 92.948061 150.442872) - (xy 92.948056 150.442872) - (xy 92.861113 150.461353) - (xy 92.767712 150.481206) - (xy 92.761682 150.483891) - (xy 92.761681 150.483891) - (xy 92.599278 150.556197) - (xy 92.599276 150.556198) - (xy 92.593248 150.558882) - (xy 92.438747 150.671134) - (xy 92.434326 150.676044) - (xy 92.434325 150.676045) - (xy 92.414971 150.69754) - (xy 92.35042 150.769232) - (xy 92.344539 150.775763) - (xy 92.284093 150.813003) - (xy 92.21311 150.811651) - (xy 92.161808 150.780548) - (xy 90.770554 149.389294) - (xy 91.617709 149.389294) - (xy 91.623132 149.448315) - (xy 91.625743 149.461351) - (xy 91.672715 149.611243) - (xy 91.678921 149.624988) - (xy 91.759824 149.758574) - (xy 91.769131 149.770443) - (xy 91.879557 149.880869) - (xy 91.891426 149.890176) - (xy 92.025012 149.971079) - (xy 92.038757 149.977285) - (xy 92.188644 150.024256) - (xy 92.201694 150.026869) - (xy 92.265521 150.032734) - (xy 92.271309 150.033) - (xy 92.327885 150.033) - (xy 92.343124 150.028525) - (xy 92.344329 150.027135) - (xy 92.346 150.019452) - (xy 92.346 149.397115) - (xy 92.341525 149.381876) - (xy 92.340135 149.380671) - (xy 92.332452 149.379) - (xy 91.635116 149.379) - (xy 91.619877 149.383475) - (xy 91.618672 149.384865) - (xy 91.617709 149.389294) - (xy 90.770554 149.389294) - (xy 90.695405 149.314145) - (xy 90.661379 149.251833) - (xy 90.6585 149.22505) - (xy 90.6585 142.77495) - (xy 90.678502 142.706829) - (xy 90.695405 142.685855) - (xy 91.48537 141.89589) - (xy 91.547682 141.861864) - (xy 91.574465 141.858985) - (xy 92.661742 141.858985) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 128.683621 148.416002) - (xy 128.730114 148.469658) - (xy 128.7415 148.522) - (xy 128.7415 150.428) - (xy 128.721498 150.496121) - (xy 128.667842 150.542614) - (xy 128.6155 150.554) - (xy 128.3595 150.554) - (xy 128.291379 150.533998) - (xy 128.244886 150.480342) - (xy 128.2335 150.428) - (xy 128.2335 148.522) - (xy 128.253502 148.453879) - (xy 128.307158 148.407386) - (xy 128.3595 148.396) - (xy 128.6155 148.396) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 111.915759 148.619667) - (xy 111.972595 148.662214) - (xy 111.997406 148.728734) - (xy 111.99699 148.751328) - (xy 111.9915 148.801866) - (xy 111.9915 149.198134) - (xy 111.991869 149.201529) - (xy 111.991869 149.201533) - (xy 111.995656 149.236393) - (xy 111.995656 149.263606) - (xy 111.9915 149.301866) - (xy 111.9915 149.698134) - (xy 111.995909 149.73872) - (xy 111.995909 149.765936) - (xy 111.994542 149.778516) - (xy 111.967298 149.844077) - (xy 111.904433 149.8859) - (xy 111.887378 149.890855) - (xy 111.885131 149.892184) - (xy 111.817018 149.900591) - (xy 111.75304 149.869813) - (xy 111.715858 149.809332) - (xy 111.712129 149.763091) - (xy 111.712814 149.756571) - (xy 111.712814 149.756565) - (xy 111.713504 149.75) - (xy 111.698387 149.606166) - (xy 111.694232 149.566635) - (xy 111.694232 149.566633) - (xy 111.693542 149.560072) - (xy 111.634527 149.378444) - (xy 111.624488 149.361055) - (xy 111.576097 149.27724) - (xy 111.53904 149.213056) - (xy 111.467034 149.133086) - (xy 111.436319 149.069081) - (xy 111.445082 148.998628) - (xy 111.471577 148.959683) - (xy 111.782632 148.648628) - (xy 111.844944 148.614602) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 99.818656 141.878987) - (xy 99.83963 141.89589) - (xy 102.922991 144.979251) - (xy 102.957017 145.041563) - (xy 102.951952 145.112378) - (xy 102.909405 145.169214) - (xy 102.887348 145.182446) - (xy 102.880721 145.18555) - (xy 102.747827 145.267788) - (xy 102.736426 145.276824) - (xy 102.626014 145.387429) - (xy 102.617002 145.39884) - (xy 102.534996 145.53188) - (xy 102.528849 145.545061) - (xy 102.479509 145.693814) - (xy 102.476642 145.70719) - (xy 102.467328 145.798097) - (xy 102.467 145.804514) - (xy 102.467 145.827885) - (xy 102.471475 145.843124) - (xy 102.472865 145.844329) - (xy 102.480548 145.846) - (xy 103.553 145.846) - (xy 103.621121 145.866002) - (xy 103.667614 145.919658) - (xy 103.679 145.972) - (xy 103.679 146.228) - (xy 103.658998 146.296121) - (xy 103.605342 146.342614) - (xy 103.553 146.354) - (xy 102.485115 146.354) - (xy 102.469876 146.358475) - (xy 102.468671 146.359865) - (xy 102.467 146.367548) - (xy 102.467 146.395438) - (xy 102.467337 146.401953) - (xy 102.476894 146.494057) - (xy 102.479788 146.507456) - (xy 102.529381 146.656107) - (xy 102.535555 146.669286) - (xy 102.617788 146.802173) - (xy 102.626828 146.813579) - (xy 102.637278 146.824011) - (xy 102.671357 146.886293) - (xy 102.666354 146.957113) - (xy 102.647877 146.990103) - (xy 102.643361 146.994619) - (xy 102.639424 147.001119) - (xy 102.639423 147.001121) - (xy 102.621146 147.031301) - (xy 102.554528 147.141301) - (xy 102.552257 147.148548) - (xy 102.552256 147.14855) - (xy 102.539128 147.190441) - (xy 102.503247 147.304938) - (xy 102.4965 147.378365) - (xy 102.496501 148.041634) - (xy 102.496764 148.044492) - (xy 102.496764 148.044501) - (xy 102.499326 148.072381) - (xy 102.503247 148.115062) - (xy 102.505246 148.12144) - (xy 102.505246 148.121441) - (xy 102.548986 148.261013) - (xy 102.554528 148.278699) - (xy 102.643361 148.425381) - (xy 102.764619 148.546639) - (xy 102.771115 148.550573) - (xy 102.77112 148.550577) - (xy 102.773494 148.552015) - (xy 102.775132 148.553723) - (xy 102.777097 148.555264) - (xy 102.776878 148.555544) - (xy 102.818636 148.59909) - (xy 102.820445 148.60238) - (xy 102.823365 148.609756) - (xy 102.850516 148.647126) - (xy 102.857033 148.657048) - (xy 102.876507 148.689977) - (xy 102.87651 148.689981) - (xy 102.880547 148.696807) - (xy 102.895711 148.711971) - (xy 102.908551 148.727004) - (xy 102.921159 148.744357) - (xy 102.947221 148.765917) - (xy 102.956752 148.773802) - (xy 102.965532 148.781792) - (xy 103.138611 148.954871) - (xy 103.172637 149.017183) - (xy 103.17486 149.056808) - (xy 103.1715 149.0896) - (xy 103.1715 149.655853) - (xy 103.151498 149.723974) - (xy 103.097842 149.770467) - (xy 103.040561 149.781756) - (xy 103.038953 149.781693) - (xy 103.036502 149.7815) - (xy 102.76495 149.7815) - (xy 102.696829 149.761498) - (xy 102.675854 149.744595) - (xy 102.386322 149.455062) - (xy 102.092969 149.161709) - (xy 102.058944 149.099397) - (xy 102.056755 149.085785) - (xy 102.044232 148.966636) - (xy 102.044232 148.966635) - (xy 102.043542 148.960072) - (xy 102.028266 148.913056) - (xy 102.002605 148.834083) - (xy 101.984527 148.778444) - (xy 101.88904 148.613056) - (xy 101.870902 148.592911) - (xy 101.765675 148.476045) - (xy 101.765674 148.476044) - (xy 101.761253 148.471134) - (xy 101.606752 148.358882) - (xy 101.600724 148.356198) - (xy 101.600722 148.356197) - (xy 101.438319 148.283891) - (xy 101.438318 148.283891) - (xy 101.432288 148.281206) - (xy 101.337288 148.261013) - (xy 101.251944 148.242872) - (xy 101.251939 148.242872) - (xy 101.245487 148.2415) - (xy 101.054513 148.2415) - (xy 101.048061 148.242872) - (xy 101.048056 148.242872) - (xy 100.962712 148.261013) - (xy 100.867712 148.281206) - (xy 100.861682 148.283891) - (xy 100.861681 148.283891) - (xy 100.699278 148.356197) - (xy 100.699276 148.356198) - (xy 100.693248 148.358882) - (xy 100.687907 148.362762) - (xy 100.687906 148.362763) - (xy 100.558561 148.456738) - (xy 100.491693 148.480597) - (xy 100.422542 148.464516) - (xy 100.373061 148.413602) - (xy 100.3585 148.354802) - (xy 100.3585 143.182056) - (xy 100.359059 143.1702) - (xy 100.359059 143.170197) - (xy 100.360788 143.162463) - (xy 100.358562 143.091631) - (xy 100.3585 143.087673) - (xy 100.3585 143.058568) - (xy 100.357944 143.054168) - (xy 100.357012 143.04233) - (xy 100.356405 143.022987) - (xy 100.355562 142.996169) - (xy 100.34958 142.975579) - (xy 100.34557 142.956216) - (xy 100.343875 142.942796) - (xy 100.343875 142.942795) - (xy 100.342882 142.934936) - (xy 100.339966 142.927571) - (xy 100.339965 142.927567) - (xy 100.325874 142.891979) - (xy 100.322035 142.880769) - (xy 100.309145 142.8364) - (xy 100.298229 142.817943) - (xy 100.289534 142.800193) - (xy 100.281635 142.780244) - (xy 100.269296 142.763261) - (xy 100.254477 142.742864) - (xy 100.24796 142.732943) - (xy 100.241938 142.72276) - (xy 100.224452 142.693193) - (xy 100.209291 142.678032) - (xy 100.196449 142.662997) - (xy 100.183841 142.645643) - (xy 100.148248 142.616198) - (xy 100.139467 142.608208) - (xy 99.60534 142.07408) - (xy 99.571315 142.011768) - (xy 99.57638 141.940952) - (xy 99.618927 141.884117) - (xy 99.685447 141.859306) - (xy 99.694436 141.858985) - (xy 99.750535 141.858985) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 73.967012 140.832568) - (xy 73.980311 140.845961) - (xy 74.000816 140.869969) - (xy 74.181369 141.024176) - (xy 74.185577 141.026755) - (xy 74.185583 141.026759) - (xy 74.379602 141.145654) - (xy 74.383822 141.14824) - (xy 74.388392 141.150133) - (xy 74.388396 141.150135) - (xy 74.598618 141.237211) - (xy 74.603191 141.239105) - (xy 74.683394 141.25836) - (xy 74.829261 141.29338) - (xy 74.829267 141.293381) - (xy 74.834074 141.294535) - (xy 75.070785 141.313165) - (xy 75.307496 141.294535) - (xy 75.312303 141.293381) - (xy 75.312309 141.29338) - (xy 75.502225 141.247785) - (xy 75.573133 141.251332) - (xy 75.620734 141.281209) - (xy 75.947619 141.608094) - (xy 75.955609 141.616874) - (xy 75.959858 141.623569) - (xy 75.965636 141.628995) - (xy 75.965637 141.628996) - (xy 76.011531 141.672093) - (xy 76.014373 141.674848) - (xy 76.034941 141.695416) - (xy 76.038444 141.698133) - (xy 76.047469 141.705841) - (xy 76.081141 141.737461) - (xy 76.088092 141.741282) - (xy 76.088093 141.741283) - (xy 76.099932 141.747792) - (xy 76.116456 141.758646) - (xy 76.124998 141.765271) - (xy 76.133406 141.771793) - (xy 76.140678 141.77494) - (xy 76.14068 141.774941) - (xy 76.175809 141.790143) - (xy 76.18647 141.795365) - (xy 76.226937 141.817613) - (xy 76.247715 141.822948) - (xy 76.266405 141.829347) - (xy 76.286098 141.837869) - (xy 76.32987 141.844802) - (xy 76.331722 141.845095) - (xy 76.343345 141.847502) - (xy 76.371346 141.854691) - (xy 76.388086 141.858989) - (xy 76.409533 141.858989) - (xy 76.429243 141.86054) - (xy 76.450426 141.863895) - (xy 76.496415 141.859548) - (xy 76.50827 141.858989) - (xy 83.935055 141.858989) - (xy 84.003176 141.878991) - (xy 84.049669 141.932647) - (xy 84.059773 142.002921) - (xy 84.056052 142.02014) - (xy 84.019438 142.146169) - (xy 84.018934 142.152574) - (xy 84.018933 142.152579) - (xy 84.016693 142.181042) - (xy 84.0165 142.183498) - (xy 84.0165 142.616502) - (xy 84.016693 142.61895) - (xy 84.016693 142.618958) - (xy 84.018794 142.645643) - (xy 84.019438 142.653831) - (xy 84.037684 142.716635) - (xy 84.062772 142.802988) - (xy 84.065855 142.813601) - (xy 84.069892 142.820427) - (xy 84.146509 142.94998) - (xy 84.146511 142.949983) - (xy 84.150547 142.956807) - (xy 84.268193 143.074453) - (xy 84.275017 143.078489) - (xy 84.27502 143.078491) - (xy 84.367238 143.133028) - (xy 84.411399 143.159145) - (xy 84.41901 143.161356) - (xy 84.419012 143.161357) - (xy 84.460989 143.173552) - (xy 84.571169 143.205562) - (xy 84.577574 143.206066) - (xy 84.577579 143.206067) - (xy 84.606042 143.208307) - (xy 84.60605 143.208307) - (xy 84.608498 143.2085) - (xy 85.7655 143.2085) - (xy 85.833621 143.228502) - (xy 85.880114 143.282158) - (xy 85.8915 143.3345) - (xy 85.8915 143.566502) - (xy 85.894438 143.603831) - (xy 85.940855 143.763601) - (xy 85.944892 143.770427) - (xy 85.945185 143.770923) - (xy 85.9453 143.77137) - (xy 85.948039 143.7777) - (xy 85.947036 143.778134) - (xy 85.962262 143.837432) - (xy 85.961594 143.841652) - (xy 85.96234 143.849544) - (xy 85.96234 143.849545) - (xy 85.965941 143.887638) - (xy 85.9665 143.899496) - (xy 85.9665 144.12929) - (xy 85.946498 144.197411) - (xy 85.929595 144.218385) - (xy 85.888741 144.259239) - (xy 85.826429 144.293265) - (xy 85.755614 144.2882) - (xy 85.710551 144.259239) - (xy 85.620443 144.169131) - (xy 85.608574 144.159824) - (xy 85.474988 144.078921) - (xy 85.461243 144.072715) - (xy 85.311356 144.025744) - (xy 85.298306 144.023131) - (xy 85.243414 144.018087) - (xy 85.231876 144.021475) - (xy 85.230671 144.022865) - (xy 85.229 144.030548) - (xy 85.229 145.128) - (xy 85.208998 145.196121) - (xy 85.155342 145.242614) - (xy 85.103 145.254) - (xy 84.085116 145.254) - (xy 84.069877 145.258475) - (xy 84.068672 145.259865) - (xy 84.067001 145.267548) - (xy 84.067001 145.328705) - (xy 84.067264 145.334454) - (xy 84.073132 145.398315) - (xy 84.075743 145.411351) - (xy 84.122715 145.561243) - (xy 84.128921 145.574988) - (xy 84.209825 145.708575) - (xy 84.220226 145.721839) - (xy 84.246523 145.787786) - (xy 84.232991 145.857481) - (xy 84.22023 145.877339) - (xy 84.218737 145.879243) - (xy 84.213361 145.884619) - (xy 84.124528 146.031301) - (xy 84.073247 146.194938) - (xy 84.0665 146.268365) - (xy 84.066501 146.931634) - (xy 84.066764 146.934492) - (xy 84.066764 146.934501) - (xy 84.068842 146.957113) - (xy 84.073247 147.005062) - (xy 84.075246 147.01144) - (xy 84.075246 147.011441) - (xy 84.120898 147.157115) - (xy 84.124528 147.168699) - (xy 84.213361 147.315381) - (xy 84.298505 147.400525) - (xy 84.332531 147.462837) - (xy 84.327466 147.533652) - (xy 84.298583 147.578638) - (xy 84.268634 147.608639) - (xy 84.200695 147.676697) - (xy 84.196855 147.682927) - (xy 84.196854 147.682928) - (xy 84.114778 147.81608) - (xy 84.107885 147.827262) - (xy 84.052203 147.995139) - (xy 84.051503 148.001975) - (xy 84.051502 148.001978) - (xy 84.048259 148.033629) - (xy 84.0415 148.0996) - (xy 84.0415 148.90005) - (xy 84.021498 148.968171) - (xy 84.004595 148.989145) - (xy 83.522194 149.471546) - (xy 83.459882 149.505572) - (xy 83.389067 149.500507) - (xy 83.332231 149.45796) - (xy 83.307789 149.395622) - (xy 83.294232 149.266635) - (xy 83.294232 149.266633) - (xy 83.293542 149.260072) - (xy 83.234527 149.078444) - (xy 83.13904 148.913056) - (xy 83.12733 148.90005) - (xy 83.015675 148.776045) - (xy 83.015674 148.776044) - (xy 83.011253 148.771134) - (xy 82.884024 148.678696) - (xy 82.862094 148.662763) - (xy 82.862093 148.662762) - (xy 82.856752 148.658882) - (xy 82.850724 148.656198) - (xy 82.850722 148.656197) - (xy 82.688319 148.583891) - (xy 82.688318 148.583891) - (xy 82.682288 148.581206) - (xy 82.577277 148.558885) - (xy 82.501944 148.542872) - (xy 82.501939 148.542872) - (xy 82.495487 148.5415) - (xy 82.304513 148.5415) - (xy 82.298059 148.542872) - (xy 82.298057 148.542872) - (xy 82.280999 148.546498) - (xy 82.218993 148.559677) - (xy 82.196449 148.561689) - (xy 82.195848 148.561594) - (xy 82.187956 148.56234) - (xy 82.187955 148.56234) - (xy 82.171312 148.563913) - (xy 82.149859 148.565941) - (xy 82.138004 148.5665) - (xy 81.82071 148.5665) - (xy 81.752589 148.546498) - (xy 81.731615 148.529595) - (xy 81.691115 148.489095) - (xy 81.657089 148.426783) - (xy 81.662154 148.355968) - (xy 81.691115 148.310905) - (xy 81.786639 148.215381) - (xy 81.875472 148.068699) - (xy 81.883275 148.043802) - (xy 81.907152 147.967607) - (xy 81.926753 147.905062) - (xy 81.9335 147.831635) - (xy 81.933499 147.318366) - (xy 81.932878 147.311601) - (xy 81.929974 147.279996) - (xy 81.926753 147.244938) - (xy 81.919334 147.221263) - (xy 81.877744 147.08855) - (xy 81.877743 147.088548) - (xy 81.875472 147.081301) - (xy 81.786639 146.934619) - (xy 81.665381 146.813361) - (xy 81.518699 146.724528) - (xy 81.511452 146.722257) - (xy 81.51145 146.722256) - (xy 81.432884 146.697635) - (xy 81.355062 146.673247) - (xy 81.281635 146.6665) - (xy 81.278737 146.6665) - (xy 80.94914 146.666501) - (xy 80.618366 146.666501) - (xy 80.615508 146.666764) - (xy 80.615499 146.666764) - (xy 80.579996 146.670026) - (xy 80.544938 146.673247) - (xy 80.53856 146.675246) - (xy 80.538559 146.675246) - (xy 80.38855 146.722256) - (xy 80.388548 146.722257) - (xy 80.381301 146.724528) - (xy 80.234619 146.813361) - (xy 80.168385 146.879595) - (xy 80.106073 146.913621) - (xy 80.07929 146.9165) - (xy 77.69571 146.9165) - (xy 77.627589 146.896498) - (xy 77.606615 146.879595) - (xy 77.565381 146.838361) - (xy 77.418699 146.749528) - (xy 77.411452 146.747257) - (xy 77.41145 146.747256) - (xy 77.331674 146.722256) - (xy 77.255062 146.698247) - (xy 77.181635 146.6915) - (xy 76.92495 146.6915) - (xy 76.856829 146.671498) - (xy 76.835855 146.654595) - (xy 74.909145 144.727885) - (xy 84.067 144.727885) - (xy 84.071475 144.743124) - (xy 84.072865 144.744329) - (xy 84.080548 144.746) - (xy 84.702885 144.746) - (xy 84.718124 144.741525) - (xy 84.719329 144.740135) - (xy 84.721 144.732452) - (xy 84.721 144.035116) - (xy 84.716525 144.019877) - (xy 84.715135 144.018672) - (xy 84.710706 144.017709) - (xy 84.651685 144.023132) - (xy 84.638649 144.025743) - (xy 84.488757 144.072715) - (xy 84.475012 144.078921) - (xy 84.341426 144.159824) - (xy 84.329557 144.169131) - (xy 84.219131 144.279557) - (xy 84.209824 144.291426) - (xy 84.128921 144.425012) - (xy 84.122715 144.438757) - (xy 84.075744 144.588644) - (xy 84.073131 144.601694) - (xy 84.067266 144.665521) - (xy 84.067 144.671309) - (xy 84.067 144.727885) - (xy 74.909145 144.727885) - (xy 73.795405 143.614145) - (xy 73.761379 143.551833) - (xy 73.7585 143.52505) - (xy 73.7585 140.927792) - (xy 73.778502 140.859671) - (xy 73.832158 140.813178) - (xy 73.902432 140.803074) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 119.463171 144.348502) - (xy 119.484145 144.365405) + (xy 120.840037 145.741494) + (xy 120.891337 145.772597) (xy 122.058722 146.939982) (xy 122.092748 147.002294) (xy 122.087683 147.073109) @@ -8092,3080 +6461,118 @@ (xy 121.341555 147.407432) (xy 121.332093 147.41789) (xy 121.335876 147.426666) - (xy 122.470115 148.560905) - (xy 122.504141 148.623217) - (xy 122.499076 148.694032) - (xy 122.470115 148.739095) - (xy 122.289095 148.920115) - (xy 122.226783 148.954141) - (xy 122.155968 148.949076) - (xy 122.110905 148.920115) - (xy 120.97971 147.78892) - (xy 120.941352 147.767974) - (xy 120.905928 147.739218) - (xy 120.773177 147.583787) - (xy 120.769969 147.580031) - (xy 120.589416 147.425824) - (xy 120.585201 147.423241) - (xy 120.585193 147.423235) - (xy 120.418665 147.321186) - (xy 120.371034 147.268539) - (xy 120.3585 147.213754) - (xy 120.3585 147.194355) - (xy 120.357944 147.189955) - (xy 120.357012 147.178117) - (xy 120.356921 147.175196) - (xy 120.355562 147.131956) - (xy 120.34958 147.111366) - (xy 120.34557 147.092003) - (xy 120.343875 147.078583) - (xy 120.343875 147.078582) - (xy 120.342882 147.070723) - (xy 120.339966 147.063358) - (xy 120.339965 147.063354) - (xy 120.325874 147.027766) - (xy 120.322035 147.016556) - (xy 120.309145 146.972187) - (xy 120.298229 146.95373) - (xy 120.289534 146.93598) - (xy 120.281635 146.916031) - (xy 120.276976 146.909618) - (xy 120.254477 146.878651) - (xy 120.24796 146.86873) - (xy 120.242518 146.859528) - (xy 120.224452 146.82898) - (xy 120.209291 146.813819) - (xy 120.196449 146.798784) - (xy 120.19316 146.794257) - (xy 120.183841 146.78143) - (xy 120.148241 146.751979) - (xy 120.139462 146.74399) - (xy 117.939068 144.543595) - (xy 117.905042 144.481283) - (xy 117.910107 144.410467) - (xy 117.952654 144.353632) - (xy 118.019174 144.328821) - (xy 118.028163 144.3285) - (xy 119.39505 144.3285) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 124.15822 132.528002) - (xy 124.204713 132.581658) - (xy 124.214817 132.651932) - (xy 124.185323 132.716512) - (xy 124.138317 132.750409) - (xy 124.017837 132.800313) - (xy 124.009042 132.804795) - (xy 123.841555 132.907432) - (xy 123.832093 132.91789) - (xy 123.835876 132.926666) - (xy 124.687188 133.777978) - (xy 124.701132 133.785592) - (xy 124.702965 133.785461) - (xy 124.70958 133.78121) - (xy 125.56108 132.92971) - (xy 125.56784 132.91733) - (xy 125.562113 132.90968) - (xy 125.390958 132.804795) - (xy 125.382163 132.800313) - (xy 125.261683 132.750409) - (xy 125.206402 132.705861) - (xy 125.183981 132.638497) - (xy 125.201539 132.569706) - (xy 125.253501 132.521328) - (xy 125.309901 132.508) - (xy 126.392572 132.508) - (xy 126.460693 132.528002) - (xy 126.507186 132.581658) - (xy 126.51729 132.651932) - (xy 126.503927 132.692959) - (xy 126.450472 132.793919) - (xy 126.415073 132.860776) - (xy 126.413601 132.864799) - (xy 126.413599 132.864803) - (xy 126.385865 132.94059) - (xy 126.318616 133.124355) - (xy 126.260772 133.389658) - (xy 126.259814 133.39405) - (xy 126.225759 133.456347) - (xy 126.163431 133.490342) - (xy 126.092618 133.485244) - (xy 126.035802 133.44267) - (xy 126.029274 133.433045) - (xy 125.942567 133.291554) - (xy 125.93211 133.282093) - (xy 125.923334 133.285876) - (xy 125.072022 134.137188) - (xy 125.064408 134.151132) - (xy 125.064539 134.152965) - (xy 125.06879 134.15958) - (xy 125.92029 135.01108) - (xy 125.93267 135.01784) - (xy 125.94032 135.012113) - (xy 126.045205 134.840958) - (xy 126.049687 134.832163) - (xy 126.136734 134.622012) - (xy 126.139783 134.612627) - (xy 126.16128 134.523086) - (xy 126.196632 134.461517) - (xy 126.259659 134.428834) - (xy 126.33035 134.435414) - (xy 126.386261 134.479169) - (xy 126.397715 134.499664) - (xy 126.397911 134.499565) - (xy 126.519764 134.741843) - (xy 126.524022 134.75031) - (xy 126.526448 134.753839) - (xy 126.526451 134.753845) - (xy 126.635012 134.911801) - (xy 126.682997 134.98162) - (xy 126.685884 134.984793) - (xy 126.685885 134.984794) - (xy 126.712573 135.014124) - (xy 126.871894 135.189215) - (xy 126.875183 135.191965) - (xy 127.083925 135.366501) - (xy 127.08393 135.366505) - (xy 127.087217 135.369253) - (xy 127.199969 135.439982) - (xy 127.321341 135.516119) - (xy 127.321345 135.516121) - (xy 127.324981 135.518402) - (xy 127.580788 135.633903) - (xy 127.641021 135.651745) - (xy 127.84579 135.712401) - (xy 127.845795 135.712402) - (xy 127.849903 135.713619) - (xy 127.854137 135.714267) - (xy 127.854142 135.714268) - (xy 128.058017 135.745465) - (xy 128.127347 135.756074) - (xy 128.270292 135.758319) - (xy 128.403694 135.760415) - (xy 128.4037 135.760415) - (xy 128.407985 135.760482) - (xy 128.686626 135.726763) - (xy 128.958112 135.65554) - (xy 128.962072 135.6539) - (xy 128.962077 135.653898) - (xy 129.124224 135.586734) - (xy 129.21742 135.548131) - (xy 129.302432 135.498454) - (xy 129.371336 135.481356) - (xy 129.438549 135.504225) - (xy 129.482727 135.559802) - (xy 129.492 135.607243) - (xy 129.492 139.284567) - (xy 129.471998 139.352688) - (xy 129.418342 139.399181) - (xy 129.348068 139.409285) - (xy 129.32177 139.402549) - (xy 129.310316 139.398255) - (xy 129.248134 139.3915) - (xy 127.651866 139.3915) - (xy 127.589684 139.398255) - (xy 127.453295 139.449385) - (xy 127.336739 139.536739) - (xy 127.249385 139.653295) - (xy 127.198255 139.789684) - (xy 127.1915 139.851866) - (xy 127.1915 142.448134) - (xy 127.191869 142.451531) - (xy 127.193943 142.470622) - (xy 127.181415 142.540504) - (xy 127.133094 142.59252) - (xy 127.064323 142.610155) - (xy 126.996934 142.587809) - (xy 126.979585 142.573325) - (xy 126.605405 142.199145) - (xy 126.571379 142.136833) - (xy 126.5685 142.11005) - (xy 126.5685 139.057073) - (xy 126.588502 138.988952) - (xy 126.621602 138.954302) - (xy 126.632723 138.946414) - (xy 126.632727 138.94641) - (xy 126.637611 138.942946) - (xy 126.783881 138.79015) - (xy 126.89862 138.612452) - (xy 126.938563 138.51334) - (xy 126.975442 138.421832) - (xy 126.975443 138.421829) - (xy 126.977686 138.416263) - (xy 127.018228 138.208663) - (xy 127.0185 138.203101) - (xy 127.0185 137.247154) - (xy 127.003452 137.089434) - (xy 126.943908 136.886466) - (xy 126.903979 136.808939) - (xy 126.849804 136.703751) - (xy 126.849802 136.703748) - (xy 126.847058 136.69842) - (xy 126.716396 136.53208) - (xy 126.711865 136.528148) - (xy 126.711862 136.528145) - (xy 126.561167 136.397379) - (xy 126.556637 136.393448) - (xy 126.551451 136.390448) - (xy 126.551447 136.390445) - (xy 126.378742 136.290533) - (xy 126.373546 136.287527) - (xy 126.173729 136.218139) - (xy 126.167794 136.217278) - (xy 126.167792 136.217278) - (xy 125.970336 136.188648) - (xy 125.970333 136.188648) - (xy 125.964396 136.187787) - (xy 125.753101 136.197567) - (xy 125.621923 136.229181) - (xy 125.553299 136.245719) - (xy 125.553297 136.24572) - (xy 125.547466 136.247125) - (xy 125.542008 136.249607) - (xy 125.542004 136.249608) - (xy 125.437744 136.297013) - (xy 125.354913 136.334674) - (xy 125.182389 136.457054) - (xy 125.036119 136.60985) - (xy 124.92138 136.787548) - (xy 124.919137 136.793114) - (xy 124.846721 136.972803) - (xy 124.842314 136.983737) - (xy 124.801772 137.191337) - (xy 124.8015 137.196899) - (xy 124.8015 138.152846) - (xy 124.816548 138.310566) - (xy 124.876092 138.513534) - (xy 124.878836 138.518861) - (xy 124.878836 138.518862) - (xy 124.95578 138.668257) - (xy 124.972942 138.70158) - (xy 124.992314 138.726241) - (xy 125.099898 138.863203) - (xy 125.099902 138.863207) - (xy 125.103604 138.86792) - (xy 125.108134 138.871851) - (xy 125.108135 138.871852) - (xy 125.208081 138.958581) - (xy 125.246422 139.018334) - (xy 125.2515 139.053746) - (xy 125.2515 142.352944) - (xy 125.250941 142.3648) - (xy 125.249212 142.372537) - (xy 125.249461 142.380459) - (xy 125.251438 142.443369) - (xy 125.2515 142.447327) - (xy 125.2515 142.476432) - (xy 125.252056 142.480832) - (xy 125.252988 142.492664) - (xy 125.254438 142.538831) - (xy 125.25665 142.546444) - (xy 125.25665 142.546445) - (xy 125.260419 142.559416) - (xy 125.26443 142.578782) - (xy 125.267118 142.600064) - (xy 125.270034 142.607429) - (xy 125.270035 142.607433) - (xy 125.284126 142.643021) - (xy 125.287965 142.654231) - (xy 125.300855 142.6986) - (xy 125.311775 142.717065) - (xy 125.320466 142.734805) - (xy 125.328365 142.754756) - (xy 125.342224 142.773831) - (xy 125.355516 142.792126) - (xy 125.362033 142.802048) - (xy 125.381507 142.834977) - (xy 125.38151 142.834981) - (xy 125.385547 142.841807) - (xy 125.400711 142.856971) - (xy 125.413551 142.872004) - (xy 125.426159 142.889357) - (xy 125.461752 142.918802) - (xy 125.470532 142.926792) - (xy 127.829595 145.285855) - (xy 127.863621 145.348167) - (xy 127.8665 145.37495) - (xy 127.866501 145.631634) - (xy 127.873247 145.705062) - (xy 127.875246 145.71144) - (xy 127.875246 145.711441) - (xy 127.917415 145.846) - (xy 127.924528 145.868699) - (xy 128.013361 146.015381) - (xy 128.108885 146.110905) - (xy 128.142911 146.173217) - (xy 128.137846 146.244032) - (xy 128.108885 146.289095) - (xy 128.013361 146.384619) - (xy 128.009424 146.39112) - (xy 127.928464 146.524801) - (xy 127.928463 146.524804) - (xy 127.924528 146.531301) - (xy 127.922256 146.53855) - (xy 127.922254 146.538555) - (xy 127.922183 146.538782) - (xy 127.92206 146.538985) - (xy 127.919131 146.545472) - (xy 127.918346 146.545118) - (xy 127.891045 146.590195) - (xy 126.851645 147.629595) - (xy 126.789333 147.663621) - (xy 126.76255 147.6665) - (xy 126.645428 147.6665) - (xy 126.642182 147.666837) - (xy 126.642178 147.666837) - (xy 126.608397 147.670342) - (xy 126.544018 147.677022) - (xy 126.383151 147.730692) - (xy 126.238945 147.819929) - (xy 126.192857 147.866098) - (xy 126.179459 147.879519) - (xy 126.117177 147.913598) - (xy 126.046357 147.908595) - (xy 125.989484 147.866098) - (xy 125.982853 147.856336) - (xy 125.969488 147.834526) - (xy 125.924176 147.760584) - (xy 125.769969 147.580031) - (xy 125.589416 147.425824) - (xy 125.585208 147.423245) - (xy 125.585202 147.423241) - (xy 125.391183 147.304346) - (xy 125.386963 147.30176) - (xy 125.382393 147.299867) - (xy 125.382389 147.299865) - (xy 125.172167 147.212789) - (xy 125.172165 147.212788) - (xy 125.167594 147.210895) - (xy 125.031064 147.178117) - (xy 124.941524 147.15662) - (xy 124.941518 147.156619) - (xy 124.936711 147.155465) - (xy 124.7 147.136835) - (xy 124.463289 147.155465) - (xy 124.458482 147.156619) - (xy 124.458476 147.15662) - (xy 124.26856 147.202215) - (xy 124.197652 147.198668) - (xy 124.150051 147.168791) - (xy 120.243655 143.262395) - (xy 120.235665 143.253615) - (xy 120.235663 143.253613) - (xy 120.231416 143.24692) - (xy 120.213965 143.230532) - (xy 120.179743 143.198396) - (xy 120.176901 143.195641) - (xy 120.156333 143.175073) - (xy 120.152826 143.172353) - (xy 120.143804 143.164647) - (xy 120.141478 143.162463) - (xy 120.110133 143.133028) - (xy 120.103181 143.129206) - (xy 120.091342 143.122697) - (xy 120.074818 143.111843) - (xy 120.064132 143.103555) - (xy 120.057868 143.098696) - (xy 120.050596 143.095549) - (xy 120.050594 143.095548) - (xy 120.015465 143.080346) - (xy 120.004805 143.075124) - (xy 119.971284 143.056695) - (xy 119.971282 143.056694) - (xy 119.964337 143.052876) - (xy 119.943559 143.047541) - (xy 119.924869 143.041142) - (xy 119.905176 143.03262) - (xy 119.859552 143.025394) - (xy 119.847929 143.022987) - (xy 119.813657 143.014188) - (xy 119.803188 143.0115) - (xy 119.781741 143.0115) - (xy 119.762031 143.009949) - (xy 119.740848 143.006594) - (xy 119.694859 143.010941) - (xy 119.683004 143.0115) - (xy 117.110255 143.0115) - (xy 117.042134 142.991498) - (xy 116.995641 142.937842) - (xy 116.985537 142.867568) - (xy 117.015031 142.802988) - (xy 117.034686 142.784677) - (xy 117.063261 142.763261) - (xy 117.150615 142.646705) - (xy 117.201745 142.510316) - (xy 117.2085 142.448134) - (xy 117.2085 140.408745) - (xy 117.228502 140.340624) - (xy 117.282158 140.294131) - (xy 117.352432 140.284027) - (xy 117.361707 140.286031) - (xy 117.364824 140.28738) - (xy 117.399563 140.292882) - (xy 117.410448 140.294606) - (xy 117.422071 140.297013) - (xy 117.446754 140.30335) - (xy 117.466812 140.3085) - (xy 117.488259 140.3085) - (xy 117.507969 140.310051) - (xy 117.529152 140.313406) - (xy 117.575141 140.309059) - (xy 117.586996 140.3085) - (xy 118.767944 140.3085) - (xy 118.7798 140.309059) - (xy 118.779803 140.309059) - (xy 118.787537 140.310788) - (xy 118.858369 140.308562) - (xy 118.862327 140.3085) - (xy 118.891432 140.3085) - (xy 118.895832 140.307944) - (xy 118.907664 140.307012) - (xy 118.953831 140.305562) - (xy 118.974421 140.29958) - (xy 118.993782 140.29557) - (xy 119.005177 140.294131) - (xy 119.007204 140.293875) - (xy 119.007205 140.293875) - (xy 119.015064 140.292882) - (xy 119.022429 140.289966) - (xy 119.022433 140.289965) - (xy 119.058021 140.275874) - (xy 119.069231 140.272035) - (xy 119.1136 140.259145) - (xy 119.132065 140.248225) - (xy 119.149805 140.239534) - (xy 119.169756 140.231635) - (xy 119.207129 140.204482) - (xy 119.217048 140.197967) - (xy 119.249977 140.178493) - (xy 119.249981 140.17849) - (xy 119.256807 140.174453) - (xy 119.271971 140.159289) - (xy 119.287005 140.146448) - (xy 119.297943 140.138501) - (xy 119.304357 140.133841) - (xy 119.333803 140.098246) - (xy 119.341794 140.089465) - (xy 119.9576 139.473659) - (xy 119.966381 139.465669) - (xy 119.96639 139.465661) - (xy 119.97308 139.461416) - (xy 120.02162 139.409726) - (xy 120.024374 139.406885) - (xy 120.044926 139.386333) - (xy 120.047638 139.382837) - (xy 120.055349 139.373808) - (xy 120.081544 139.345913) - (xy 120.086972 139.340133) - (xy 120.097301 139.321345) - (xy 120.108158 139.304816) - (xy 120.116447 139.294131) - (xy 120.116448 139.294129) - (xy 120.121304 139.287869) - (xy 120.139657 139.245456) - (xy 120.144868 139.234819) - (xy 120.167124 139.194337) - (xy 120.170013 139.183083) - (xy 120.1715 139.180587) - (xy 120.172015 139.179285) - (xy 120.172225 139.179368) - (xy 120.206328 139.122078) - (xy 120.26986 139.090389) - (xy 120.340439 139.098079) - (xy 120.355154 139.105357) - (xy 120.361472 139.109012) - (xy 120.372331 139.113984) - (xy 120.560727 139.179407) - (xy 120.561716 139.179648) - (xy 120.572008 139.17818) - (xy 120.576 139.164615) - (xy 120.576 139.160402) - (xy 121.084 139.160402) - (xy 121.087973 139.173933) - (xy 121.097399 139.175288) - (xy 121.186537 139.153806) - (xy 121.197832 139.149917) - (xy 121.379382 139.067371) - (xy 121.389724 139.061424) - (xy 121.552397 138.946032) - (xy 121.561425 138.938239) - (xy 121.699342 138.794169) - (xy 121.706738 138.784804) - (xy 121.814921 138.617259) - (xy 121.820417 138.606655) - (xy 121.894961 138.421688) - (xy 121.898355 138.41023) - (xy 121.936857 138.213072) - (xy 121.937934 138.204209) - (xy 121.938 138.2015) - (xy 121.938 138.152846) - (xy 122.2615 138.152846) - (xy 122.276548 138.310566) - (xy 122.336092 138.513534) - (xy 122.338836 138.518861) - (xy 122.338836 138.518862) - (xy 122.41578 138.668257) - (xy 122.432942 138.70158) - (xy 122.563604 138.86792) - (xy 122.568135 138.871852) - (xy 122.568138 138.871855) - (xy 122.682219 138.970849) - (xy 122.723363 139.006552) - (xy 122.728549 139.009552) - (xy 122.728553 139.009555) - (xy 122.847738 139.078505) - (xy 122.906454 139.112473) - (xy 123.106271 139.181861) - (xy 123.112206 139.182722) - (xy 123.112208 139.182722) - (xy 123.309664 139.211352) - (xy 123.309667 139.211352) - (xy 123.315604 139.212213) - (xy 123.526899 139.202433) - (xy 123.658077 139.170819) - (xy 123.726701 139.154281) - (xy 123.726703 139.15428) - (xy 123.732534 139.152875) - (xy 123.737992 139.150393) - (xy 123.737996 139.150392) - (xy 123.896101 139.078505) - (xy 123.925087 139.065326) - (xy 124.097611 138.942946) - (xy 124.243881 138.79015) - (xy 124.35862 138.612452) - (xy 124.398563 138.51334) - (xy 124.435442 138.421832) - (xy 124.435443 138.421829) - (xy 124.437686 138.416263) - (xy 124.478228 138.208663) - (xy 124.4785 138.203101) - (xy 124.4785 137.247154) - (xy 124.463452 137.089434) - (xy 124.403908 136.886466) - (xy 124.363979 136.808939) - (xy 124.309804 136.703751) - (xy 124.309802 136.703748) - (xy 124.307058 136.69842) - (xy 124.176396 136.53208) - (xy 124.171865 136.528148) - (xy 124.171862 136.528145) - (xy 124.021167 136.397379) - (xy 124.016637 136.393448) - (xy 124.011451 136.390448) - (xy 124.011447 136.390445) - (xy 123.838742 136.290533) - (xy 123.833546 136.287527) - (xy 123.633729 136.218139) - (xy 123.627794 136.217278) - (xy 123.627792 136.217278) - (xy 123.430336 136.188648) - (xy 123.430333 136.188648) - (xy 123.424396 136.187787) - (xy 123.213101 136.197567) - (xy 123.081923 136.229181) - (xy 123.013299 136.245719) - (xy 123.013297 136.24572) - (xy 123.007466 136.247125) - (xy 123.002008 136.249607) - (xy 123.002004 136.249608) - (xy 122.897744 136.297013) - (xy 122.814913 136.334674) - (xy 122.642389 136.457054) - (xy 122.496119 136.60985) - (xy 122.38138 136.787548) - (xy 122.379137 136.793114) - (xy 122.306721 136.972803) - (xy 122.302314 136.983737) - (xy 122.261772 137.191337) - (xy 122.2615 137.196899) - (xy 122.2615 138.152846) - (xy 121.938 138.152846) - (xy 121.938 137.972115) - (xy 121.933525 137.956876) - (xy 121.932135 137.955671) - (xy 121.924452 137.954) - (xy 121.102115 137.954) - (xy 121.086876 137.958475) - (xy 121.085671 137.959865) - (xy 121.084 137.967548) - (xy 121.084 139.160402) - (xy 120.576 139.160402) - (xy 120.576 137.427885) - (xy 121.084 137.427885) - (xy 121.088475 137.443124) - (xy 121.089865 137.444329) - (xy 121.097548 137.446) - (xy 121.919885 137.446) - (xy 121.935124 137.441525) - (xy 121.936329 137.440135) - (xy 121.938 137.432452) - (xy 121.938 137.250168) - (xy 121.937715 137.244192) - (xy 121.923529 137.095506) - (xy 121.92127 137.083772) - (xy 121.865128 136.892401) - (xy 121.860698 136.881325) - (xy 121.769381 136.704022) - (xy 121.762931 136.693976) - (xy 121.639738 136.537143) - (xy 121.631501 136.528494) - (xy 121.480877 136.397788) - (xy 121.471153 136.390853) - (xy 121.298533 136.29099) - (xy 121.287669 136.286016) - (xy 121.099273 136.220593) - (xy 121.098284 136.220352) - (xy 121.087992 136.22182) - (xy 121.084 136.235385) - (xy 121.084 137.427885) - (xy 120.576 137.427885) - (xy 120.576 136.239598) - (xy 120.572027 136.226067) - (xy 120.562601 136.224712) - (xy 120.473463 136.246194) - (xy 120.462168 136.250083) - (xy 120.386651 136.284419) - (xy 120.316361 136.294405) - (xy 120.251829 136.264805) - (xy 120.213545 136.205015) - (xy 120.2085 136.169718) - (xy 120.2085 135.918571) - (xy 120.232406 135.844995) - (xy 120.236972 135.840133) - (xy 120.240788 135.833191) - (xy 120.240792 135.833186) - (xy 120.247303 135.821342) - (xy 120.258157 135.804818) - (xy 120.266445 135.794132) - (xy 120.271304 135.787868) - (xy 120.274452 135.780594) - (xy 120.289654 135.745465) - (xy 120.294874 135.73481) - (xy 120.300924 135.723804) - (xy 120.351267 135.673743) - (xy 120.411341 135.6585) - (xy 120.748134 135.6585) - (xy 120.810316 135.651745) - (xy 120.946705 135.600615) - (xy 121.063261 135.513261) - (xy 121.150615 135.396705) - (xy 121.155876 135.38267) - (xy 123.83216 135.38267) - (xy 123.837887 135.39032) - (xy 124.009042 135.495205) - (xy 124.017837 135.499687) - (xy 124.227988 135.586734) - (xy 124.237373 135.589783) - (xy 124.458554 135.642885) - (xy 124.468301 135.644428) - (xy 124.69507 135.662275) - (xy 124.70493 135.662275) - (xy 124.931699 135.644428) - (xy 124.941446 135.642885) - (xy 125.162627 135.589783) - (xy 125.172012 135.586734) - (xy 125.382163 135.499687) - (xy 125.390958 135.495205) - (xy 125.558445 135.392568) - (xy 125.567907 135.38211) - (xy 125.564124 135.373334) - (xy 124.712812 134.522022) - (xy 124.698868 134.514408) - (xy 124.697035 134.514539) - (xy 124.69042 134.51879) - (xy 123.83892 135.37029) - (xy 123.83216 135.38267) - (xy 121.155876 135.38267) - (xy 121.201745 135.260316) - (xy 121.2085 135.198134) - (xy 121.2085 134.15493) - (xy 123.187725 134.15493) - (xy 123.205572 134.381699) - (xy 123.207115 134.391446) - (xy 123.260217 134.612627) - (xy 123.263266 134.622012) - (xy 123.350313 134.832163) - (xy 123.354795 134.840958) - (xy 123.457432 135.008445) - (xy 123.46789 135.017907) - (xy 123.476666 135.014124) - (xy 124.327978 134.162812) - (xy 124.335592 134.148868) - (xy 124.335461 134.147035) - (xy 124.33121 134.14042) - (xy 123.47971 133.28892) - (xy 123.46733 133.28216) - (xy 123.45968 133.287887) - (xy 123.354795 133.459042) - (xy 123.350313 133.467837) - (xy 123.263266 133.677988) - (xy 123.260217 133.687373) - (xy 123.207115 133.908554) - (xy 123.205572 133.918301) - (xy 123.187725 134.14507) - (xy 123.187725 134.15493) - (xy 121.2085 134.15493) - (xy 121.2085 133.101866) - (xy 121.201745 133.039684) - (xy 121.150615 132.903295) - (xy 121.063261 132.786739) - (xy 121.036256 132.7665) - (xy 120.993994 132.734826) - (xy 120.951479 132.677967) - (xy 120.946453 132.607148) - (xy 120.980513 132.544855) - (xy 121.042845 132.510865) - (xy 121.069559 132.508) - (xy 124.090099 132.508) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 100.518171 138.978502) - (xy 100.539145 138.995405) - (xy 106.022991 144.479251) - (xy 106.057017 144.541563) - (xy 106.051952 144.612378) - (xy 106.009405 144.669214) - (xy 105.987348 144.682446) - (xy 105.980721 144.68555) - (xy 105.847827 144.767788) - (xy 105.836426 144.776824) - (xy 105.726014 144.887429) - (xy 105.717002 144.89884) - (xy 105.634996 145.03188) - (xy 105.628849 145.045061) - (xy 105.616415 145.082548) - (xy 105.575984 145.140908) - (xy 105.51042 145.168144) - (xy 105.457155 145.162473) - (xy 105.356285 145.129016) - (xy 105.356283 145.129016) - (xy 105.349757 145.126851) - (xy 105.34292 145.126151) - (xy 105.342918 145.12615) - (xy 105.301599 145.121917) - (xy 105.248732 145.1165) - (xy 104.97495 145.1165) - (xy 104.906829 145.096498) - (xy 104.885855 145.079595) - (xy 100.59914 140.79288) - (xy 100.59115 140.7841) - (xy 100.591148 140.784098) - (xy 100.586901 140.777405) - (xy 100.535227 140.72888) - (xy 100.532386 140.726126) - (xy 100.511818 140.705558) - (xy 100.508311 140.702838) - (xy 100.499289 140.695132) - (xy 100.471398 140.668941) - (xy 100.465618 140.663513) - (xy 100.458666 140.659691) - (xy 100.446827 140.653182) - (xy 100.430303 140.642328) - (xy 100.419617 140.63404) - (xy 100.413353 140.629181) - (xy 100.406081 140.626034) - (xy 100.406079 140.626033) - (xy 100.37095 140.610831) - (xy 100.36029 140.605609) - (xy 100.326769 140.58718) - (xy 100.326767 140.587179) - (xy 100.319822 140.583361) - (xy 100.299044 140.578026) - (xy 100.280354 140.571627) - (xy 100.260661 140.563105) - (xy 100.215037 140.555879) - (xy 100.203414 140.553472) - (xy 100.172893 140.545636) - (xy 100.158673 140.541985) - (xy 100.137226 140.541985) - (xy 100.117516 140.540434) - (xy 100.096333 140.537079) - (xy 100.088529 140.537817) - (xy 100.021108 140.515697) - (xy 99.976323 140.460608) - (xy 99.968431 140.390051) - (xy 99.999938 140.326429) - (xy 100.018463 140.309955) - (xy 100.039589 140.294606) - (xy 100.061253 140.278866) - (xy 100.113082 140.221304) - (xy 100.184621 140.141852) - (xy 100.184622 140.141851) - (xy 100.18904 140.136944) - (xy 100.284527 139.971556) - (xy 100.343542 139.789928) - (xy 100.344346 139.782285) - (xy 100.362814 139.606565) - (xy 100.363504 139.6) - (xy 100.355989 139.528502) - (xy 100.344232 139.416635) - (xy 100.344232 139.416633) - (xy 100.343542 139.410072) - (xy 100.284527 139.228444) - (xy 100.26967 139.20271) - (xy 100.237794 139.1475) - (xy 100.221056 139.078505) - (xy 100.244276 139.011413) - (xy 100.300084 138.967526) - (xy 100.346913 138.9585) - (xy 100.45005 138.9585) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 98.602374 135.247987) - (xy 98.613537 135.250978) - (xy 98.835 135.270353) - (xy 99.056463 135.250978) - (xy 99.067626 135.247987) - (xy 99.138602 135.249673) - (xy 99.189337 135.280597) - (xy 103.415856 139.507116) - (xy 103.423846 139.515896) - (xy 103.428095 139.522591) - (xy 103.433873 139.528017) - (xy 103.433874 139.528018) - (xy 103.479768 139.571115) - (xy 103.48261 139.57387) - (xy 103.503178 139.594438) - (xy 103.506681 139.597155) - (xy 103.515706 139.604863) - (xy 103.549378 139.636483) - (xy 103.556329 139.640304) - (xy 103.55633 139.640305) - (xy 103.568169 139.646814) - (xy 103.584693 139.657668) - (xy 103.594782 139.665493) - (xy 103.601643 139.670815) - (xy 103.608915 139.673962) - (xy 103.608917 139.673963) - (xy 103.644046 139.689165) - (xy 103.654706 139.694387) - (xy 103.684679 139.710865) - (xy 103.695174 139.716635) - (xy 103.715952 139.72197) - (xy 103.734642 139.728369) - (xy 103.754335 139.736891) - (xy 103.789074 139.742393) - (xy 103.799959 139.744117) - (xy 103.811582 139.746524) - (xy 103.836265 139.752861) - (xy 103.856323 139.758011) - (xy 103.87777 139.758011) - (xy 103.89748 139.759562) - (xy 103.918663 139.762917) - (xy 103.964652 139.75857) - (xy 103.976507 139.758011) - (xy 106.924849 139.758011) - (xy 106.936705 139.75857) - (xy 106.936708 139.75857) - (xy 106.944442 139.760299) - (xy 107.015274 139.758073) - (xy 107.019232 139.758011) - (xy 107.048337 139.758011) - (xy 107.052737 139.757455) - (xy 107.064569 139.756523) - (xy 107.110736 139.755073) - (xy 107.131326 139.749091) - (xy 107.150687 139.745081) - (xy 107.158321 139.744117) - (xy 107.164109 139.743386) - (xy 107.16411 139.743386) - (xy 107.171969 139.742393) - (xy 107.179334 139.739477) - (xy 107.179338 139.739476) - (xy 107.214926 139.725385) - (xy 107.226136 139.721546) - (xy 107.270505 139.708656) - (xy 107.28897 139.697736) - (xy 107.30671 139.689045) - (xy 107.326661 139.681146) - (xy 107.364034 139.653993) - (xy 107.373953 139.647478) - (xy 107.406882 139.628004) - (xy 107.406886 139.628001) - (xy 107.413712 139.623964) - (xy 107.428876 139.6088) - (xy 107.44391 139.595959) - (xy 107.461262 139.583352) - (xy 107.490708 139.547758) - (xy 107.498697 139.538979) - (xy 108.064935 138.972741) - (xy 108.6326 138.405075) - (xy 108.641381 138.397085) - (xy 108.64139 138.397077) - (xy 108.64808 138.392832) - (xy 108.69662 138.341142) - (xy 108.699374 138.338301) - (xy 108.719926 138.317749) - (xy 108.722638 138.314253) - (xy 108.730349 138.305224) - (xy 108.75075 138.283499) - (xy 108.761972 138.271549) - (xy 108.768062 138.260472) - (xy 108.772301 138.252761) - (xy 108.783158 138.236232) - (xy 108.791447 138.225547) - (xy 108.791448 138.225545) - (xy 108.796304 138.219285) - (xy 108.804267 138.200884) - (xy 108.854633 138.143148) - (xy 108.858882 138.140575) - (xy 108.858883 138.140574) - (xy 108.865381 138.136639) - (xy 108.986639 138.015381) - (xy 109.075472 137.868699) - (xy 109.078032 137.860532) - (xy 109.113322 137.74792) - (xy 109.126753 137.705062) - (xy 109.1335 137.631635) - (xy 109.133499 136.968366) - (xy 109.133234 136.965474) - (xy 109.129656 136.926541) - (xy 109.126753 136.894938) - (xy 109.122428 136.881138) - (xy 109.077744 136.73855) - (xy 109.077743 136.738548) - (xy 109.075472 136.731301) - (xy 109.026096 136.649771) - (xy 109.007917 136.581141) - (xy 109.029728 136.513578) - (xy 109.084603 136.468532) - (xy 109.133872 136.4585) - (xy 109.416502 136.4585) - (xy 109.41895 136.458307) - (xy 109.418958 136.458307) - (xy 109.447421 136.456067) - (xy 109.447426 136.456066) - (xy 109.453831 136.455562) - (xy 109.591727 136.4155) - (xy 109.605988 136.411357) - (xy 109.60599 136.411356) - (xy 109.613601 136.409145) - (xy 109.736173 136.336656) - (xy 109.754112 136.326047) - (xy 109.818251 136.3085) - (xy 110.192944 136.3085) - (xy 110.2048 136.309059) - (xy 110.204803 136.309059) - (xy 110.212537 136.310788) - (xy 110.283369 136.308562) - (xy 110.287327 136.3085) - (xy 110.316432 136.3085) - (xy 110.320832 136.307944) - (xy 110.332664 136.307012) - (xy 110.378831 136.305562) - (xy 110.399421 136.29958) - (xy 110.418782 136.29557) - (xy 110.426424 136.294605) - (xy 110.432204 136.293875) - (xy 110.432205 136.293875) - (xy 110.440064 136.292882) - (xy 110.447429 136.289966) - (xy 110.447433 136.289965) - (xy 110.483021 136.275874) - (xy 110.494231 136.272035) - (xy 110.5386 136.259145) - (xy 110.552295 136.251046) - (xy 110.616433 136.2335) - (xy 110.897988 136.233499) - (xy 110.931634 136.233499) - (xy 110.934492 136.233236) - (xy 110.934501 136.233236) - (xy 110.970004 136.229974) - (xy 111.005062 136.226753) - (xy 111.02245 136.221304) - (xy 111.16145 136.177744) - (xy 111.161452 136.177743) - (xy 111.168699 136.175472) - (xy 111.315381 136.086639) - (xy 111.406615 135.995405) - (xy 111.468927 135.961379) - (xy 111.49571 135.9585) - (xy 115.56505 135.9585) - (xy 115.633171 135.978502) - (xy 115.654145 135.995405) - (xy 117.144595 137.485855) - (xy 117.178621 137.548167) - (xy 117.1815 137.57495) - (xy 117.1815 138.122715) - (xy 117.161498 138.190836) - (xy 117.107842 138.237329) - (xy 117.037568 138.247433) - (xy 117.009298 138.23799) - (xy 117.008655 138.239614) - (xy 117.001285 138.236696) - (xy 116.994337 138.232876) - (xy 116.973559 138.227541) - (xy 116.954869 138.221142) - (xy 116.935176 138.21262) - (xy 116.889552 138.205394) - (xy 116.877929 138.202987) - (xy 116.843657 138.194188) - (xy 116.833188 138.1915) - (xy 116.811741 138.1915) - (xy 116.792031 138.189949) - (xy 116.770848 138.186594) - (xy 116.724859 138.190941) - (xy 116.713004 138.1915) - (xy 109.88206 138.1915) - (xy 109.870203 138.190941) - (xy 109.862463 138.189211) - (xy 109.854538 138.18946) - (xy 109.854537 138.18946) - (xy 109.791599 138.191438) - (xy 109.787641 138.1915) - (xy 109.758568 138.1915) - (xy 109.754634 138.191997) - (xy 109.754632 138.191997) - (xy 109.754189 138.192053) - (xy 109.742354 138.192985) - (xy 109.709564 138.194016) - (xy 109.704089 138.194188) - (xy 109.704088 138.194188) - (xy 109.696169 138.194437) - (xy 109.676444 138.200167) - (xy 109.675571 138.200421) - (xy 109.656218 138.204429) - (xy 109.652743 138.204868) - (xy 109.634936 138.207118) - (xy 109.627568 138.210035) - (xy 109.627565 138.210036) - (xy 109.591982 138.224125) - (xy 109.580747 138.227971) - (xy 109.544016 138.238642) - (xy 109.544013 138.238643) - (xy 109.5364 138.240855) - (xy 109.517935 138.251775) - (xy 109.500195 138.260466) - (xy 109.480244 138.268365) - (xy 109.44369 138.294923) - (xy 109.442874 138.295516) - (xy 109.432952 138.302033) - (xy 109.400023 138.321507) - (xy 109.400019 138.32151) - (xy 109.393193 138.325547) - (xy 109.378029 138.340711) - (xy 109.362996 138.353551) - (xy 109.345643 138.366159) - (xy 109.323577 138.392832) - (xy 109.316198 138.401752) - (xy 109.308208 138.410532) - (xy 107.264145 140.454595) - (xy 107.201833 140.488621) - (xy 107.17505 140.4915) - (xy 107.154513 140.4915) - (xy 107.148061 140.492872) - (xy 107.148056 140.492872) - (xy 107.061113 140.511353) - (xy 106.967712 140.531206) - (xy 106.961682 140.533891) - (xy 106.961681 140.533891) - (xy 106.799278 140.606197) - (xy 106.799276 140.606198) - (xy 106.793248 140.608882) - (xy 106.638747 140.721134) - (xy 106.634326 140.726044) - (xy 106.634325 140.726045) - (xy 106.538058 140.832961) - (xy 106.51096 140.863056) - (xy 106.415473 141.028444) - (xy 106.356458 141.210072) - (xy 106.355768 141.216633) - (xy 106.355768 141.216635) - (xy 106.353285 141.24026) - (xy 106.336496 141.4) - (xy 106.356458 141.589928) - (xy 106.415473 141.771556) - (xy 106.418776 141.777278) - (xy 106.418777 141.777279) - (xy 106.446567 141.825412) - (xy 106.51096 141.936944) - (xy 106.515378 141.941851) - (xy 106.515379 141.941852) - (xy 106.578332 142.011768) - (xy 106.638747 142.078866) - (xy 106.722879 142.139992) - (xy 106.78616 142.185968) - (xy 106.793248 142.191118) - (xy 106.799276 142.193802) - (xy 106.799278 142.193803) - (xy 106.891901 142.235041) - (xy 106.967712 142.268794) - (xy 107.061112 142.288647) - (xy 107.148056 142.307128) - (xy 107.148061 142.307128) - (xy 107.154513 142.3085) - (xy 107.345487 142.3085) - (xy 107.351939 142.307128) - (xy 107.351944 142.307128) - (xy 107.438888 142.288647) - (xy 107.532288 142.268794) - (xy 107.608099 142.235041) - (xy 107.700722 142.193803) - (xy 107.700724 142.193802) - (xy 107.706752 142.191118) - (xy 107.713841 142.185968) - (xy 107.777121 142.139992) - (xy 107.861253 142.078866) - (xy 107.921668 142.011768) - (xy 107.984621 141.941852) - (xy 107.984622 141.941851) - (xy 107.98904 141.936944) - (xy 108.053433 141.825412) - (xy 108.081223 141.777279) - (xy 108.081224 141.777278) - (xy 108.084527 141.771556) - (xy 108.13549 141.614709) - (xy 108.141502 141.596207) - (xy 108.141502 141.596205) - (xy 108.143542 141.589928) - (xy 108.156755 141.464213) - (xy 108.183768 141.398558) - (xy 108.19297 141.38829) - (xy 110.035855 139.545405) - (xy 110.098167 139.511379) - (xy 110.12495 139.5085) - (xy 114.621868 139.5085) - (xy 114.689989 139.528502) - (xy 114.736482 139.582158) - (xy 114.746586 139.652432) - (xy 114.73985 139.678729) - (xy 114.698255 139.789684) - (xy 114.6915 139.851866) - (xy 114.6915 142.448134) - (xy 114.698255 142.510316) - (xy 114.749385 142.646705) - (xy 114.836739 142.763261) - (xy 114.865312 142.784675) - (xy 114.907825 142.841534) - (xy 114.91285 142.912352) - (xy 114.87879 142.974645) - (xy 114.816459 143.008636) - (xy 114.789745 143.0115) - (xy 113.505632 143.0115) - (xy 113.493775 143.010941) - (xy 113.486035 143.009211) - (xy 113.47811 143.00946) - (xy 113.478109 143.00946) - (xy 113.415171 143.011438) - (xy 113.411213 143.0115) - (xy 113.38214 143.0115) - (xy 113.378206 143.011997) - (xy 113.378204 143.011997) - (xy 113.377761 143.012053) - (xy 113.365926 143.012985) - (xy 113.333136 143.014016) - (xy 113.327661 143.014188) - (xy 113.32766 143.014188) - (xy 113.319741 143.014437) - (xy 113.300016 143.020168) - (xy 113.299143 143.020421) - (xy 113.27979 143.024429) - (xy 113.276315 143.024868) - (xy 113.258508 143.027118) - (xy 113.25114 143.030035) - (xy 113.251137 143.030036) - (xy 113.215554 143.044125) - (xy 113.204319 143.047971) - (xy 113.167588 143.058642) - (xy 113.167585 143.058643) - (xy 113.159972 143.060855) - (xy 113.141507 143.071775) - (xy 113.123767 143.080466) - (xy 113.103816 143.088365) - (xy 113.066446 143.115516) - (xy 113.056524 143.122033) - (xy 113.023595 143.141507) - (xy 113.023591 143.14151) - (xy 113.016765 143.145547) - (xy 113.001601 143.160711) - (xy 112.986568 143.173551) - (xy 112.969215 143.186159) - (xy 112.952746 143.206067) - (xy 112.93977 143.221752) - (xy 112.93178 143.230532) - (xy 111.157717 145.004595) - (xy 111.095405 145.038621) - (xy 111.068622 145.0415) - (xy 109.041909 145.0415) - (xy 108.973788 145.021498) - (xy 108.934765 144.981803) - (xy 108.882606 144.897515) - (xy 108.878752 144.891287) - (xy 108.757702 144.770448) - (xy 108.71804 144.746) - (xy 108.618331 144.684538) - (xy 108.618329 144.684537) - (xy 108.612101 144.680698) - (xy 108.449757 144.626851) - (xy 108.44292 144.626151) - (xy 108.442918 144.62615) - (xy 108.401599 144.621917) - (xy 108.348732 144.6165) - (xy 108.07495 144.6165) - (xy 108.006829 144.596498) - (xy 107.985855 144.579595) - (xy 101.298655 137.892395) - (xy 101.290665 137.883615) - (xy 101.290663 137.883613) - (xy 101.286416 137.87692) - (xy 101.277662 137.868699) - (xy 101.234743 137.828396) - (xy 101.231901 137.825641) - (xy 101.211333 137.805073) - (xy 101.207826 137.802353) - (xy 101.198804 137.794647) - (xy 101.192303 137.788542) - (xy 101.165133 137.763028) - (xy 101.158181 137.759206) - (xy 101.146342 137.752697) - (xy 101.129818 137.741843) - (xy 101.119132 137.733555) - (xy 101.112868 137.728696) - (xy 101.105596 137.725549) - (xy 101.105594 137.725548) - (xy 101.070465 137.710346) - (xy 101.059805 137.705124) - (xy 101.026284 137.686695) - (xy 101.026282 137.686694) - (xy 101.019337 137.682876) - (xy 100.998559 137.677541) - (xy 100.979869 137.671142) - (xy 100.960176 137.66262) - (xy 100.914552 137.655394) - (xy 100.902929 137.652987) - (xy 100.868661 137.644189) - (xy 100.858188 137.6415) - (xy 100.836741 137.6415) - (xy 100.817031 137.639949) - (xy 100.795848 137.636594) - (xy 100.749859 137.640941) - (xy 100.738004 137.6415) - (xy 97.621342 137.6415) - (xy 97.609486 137.640941) - (xy 97.601746 137.639211) - (xy 97.59382 137.63946) - (xy 97.593819 137.63946) - (xy 97.530894 137.641438) - (xy 97.526936 137.6415) - (xy 97.497851 137.6415) - (xy 97.49392 137.641997) - (xy 97.493913 137.641997) - (xy 97.493462 137.642054) - (xy 97.481626 137.642986) - (xy 97.435452 137.644438) - (xy 97.414862 137.65042) - (xy 97.395501 137.65443) - (xy 97.388513 137.655312) - (xy 97.382079 137.656125) - (xy 97.382078 137.656125) - (xy 97.374219 137.657118) - (xy 97.366854 137.660034) - (xy 97.36685 137.660035) - (xy 97.331262 137.674126) - (xy 97.320052 137.677965) - (xy 97.275683 137.690855) - (xy 97.257218 137.701775) - (xy 97.239478 137.710466) - (xy 97.219527 137.718365) - (xy 97.182157 137.745516) - (xy 97.172235 137.752033) - (xy 97.139306 137.771507) - (xy 97.139302 137.77151) - (xy 97.132476 137.775547) - (xy 97.117312 137.790711) - (xy 97.102279 137.803551) - (xy 97.084926 137.816159) - (xy 97.060719 137.84542) - (xy 97.055481 137.851752) - (xy 97.047491 137.860532) - (xy 96.598636 138.309387) - (xy 96.536324 138.343413) - (xy 96.493096 138.345214) - (xy 96.464885 138.3415) - (xy 96.325017 138.3415) - (xy 96.185116 138.341501) - (xy 96.181032 138.342039) - (xy 96.181026 138.342039) - (xy 96.097825 138.352992) - (xy 96.027676 138.342052) - (xy 95.974578 138.294923) - (xy 95.955389 138.226569) - (xy 95.976201 138.158691) - (xy 95.992285 138.138975) - (xy 97.507605 136.623655) - (xy 97.516385 136.615665) - (xy 97.516387 136.615663) - (xy 97.52308 136.611416) - (xy 97.541781 136.591502) - (xy 97.571604 136.559743) - (xy 97.574359 136.556901) - (xy 97.594927 136.536333) - (xy 97.597647 136.532826) - (xy 97.605353 136.523804) - (xy 97.631544 136.495913) - (xy 97.636972 136.490133) - (xy 97.641729 136.48148) - (xy 97.647303 136.471342) - (xy 97.658157 136.454818) - (xy 97.666443 136.444135) - (xy 97.666444 136.444134) - (xy 97.671304 136.437868) - (xy 97.689654 136.395464) - (xy 97.694869 136.384819) - (xy 97.717124 136.344337) - (xy 97.719094 136.336663) - (xy 97.719097 136.336656) - (xy 97.722455 136.323574) - (xy 97.728861 136.304862) - (xy 97.73738 136.285177) - (xy 97.738854 136.275874) - (xy 97.744216 136.242011) - (xy 97.744608 136.239541) - (xy 97.747012 136.22793) - (xy 97.7585 136.183188) - (xy 97.7585 136.161742) - (xy 97.760051 136.142032) - (xy 97.762166 136.128678) - (xy 97.762166 136.128677) - (xy 97.763406 136.120848) - (xy 97.759059 136.074859) - (xy 97.7585 136.063004) - (xy 97.7585 136.05495) - (xy 97.778502 135.986829) - (xy 97.795405 135.965855) - (xy 98.480663 135.280597) - (xy 98.542975 135.246571) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 102.71396 134.470423) - (xy 102.759195 134.522627) - (xy 102.808186 134.627689) - (xy 102.808189 134.627694) - (xy 102.810512 134.632676) - (xy 102.813668 134.637183) - (xy 102.813669 134.637185) - (xy 102.933998 134.809032) - (xy 102.938023 134.814781) - (xy 103.095219 134.971977) - (xy 103.099727 134.975134) - (xy 103.09973 134.975136) - (xy 103.152539 135.012113) - (xy 103.277323 135.099488) - (xy 103.282305 135.101811) - (xy 103.28231 135.101814) - (xy 103.462939 135.186042) - (xy 103.478804 135.19344) - (xy 103.484112 135.194862) - (xy 103.484114 135.194863) - (xy 103.541815 135.210324) - (xy 103.693537 135.250978) - (xy 103.915 135.270353) - (xy 104.136463 135.250978) - (xy 104.147636 135.247984) - (xy 104.218613 135.249676) - (xy 104.269338 135.280597) - (xy 105.046341 136.0576) - (xy 105.054331 136.066381) - (xy 105.054339 136.06639) - (xy 105.058584 136.07308) - (xy 105.064359 136.078503) - (xy 105.110274 136.12162) - (xy 105.113116 136.124375) - (xy 105.133667 136.144926) - (xy 105.136801 136.147357) - (xy 105.137163 136.147638) - (xy 105.146191 136.155348) - (xy 105.179867 136.186972) - (xy 105.186818 136.190793) - (xy 105.186819 136.190794) - (xy 105.198655 136.197301) - (xy 105.215184 136.208158) - (xy 105.225869 136.216447) - (xy 105.225871 136.216448) - (xy 105.232131 136.221304) - (xy 105.274544 136.239657) - (xy 105.285181 136.244868) - (xy 105.325663 136.267124) - (xy 105.333342 136.269096) - (xy 105.333343 136.269096) - (xy 105.346434 136.272457) - (xy 105.365136 136.278859) - (xy 105.384823 136.287379) - (xy 105.392652 136.288619) - (xy 105.430448 136.294605) - (xy 105.442074 136.297013) - (xy 105.479135 136.306529) - (xy 105.479136 136.306529) - (xy 105.486812 136.3085) - (xy 105.508258 136.3085) - (xy 105.527968 136.310051) - (xy 105.549151 136.313406) - (xy 105.557043 136.31266) - (xy 105.557045 136.31266) - (xy 105.573372 136.311117) - (xy 105.649366 136.328104) - (xy 105.775946 136.402963) - (xy 105.824397 136.454854) - (xy 105.837102 136.524705) - (xy 105.812912 136.584347) - (xy 105.813361 136.584619) - (xy 105.724528 136.731301) - (xy 105.722257 136.738548) - (xy 105.722256 136.73855) - (xy 105.712045 136.771134) - (xy 105.673247 136.894938) - (xy 105.6665 136.968365) - (xy 105.666501 137.631634) - (xy 105.666764 137.634492) - (xy 105.666764 137.634501) - (xy 105.668227 137.650419) - (xy 105.673247 137.705062) - (xy 105.675246 137.71144) - (xy 105.675246 137.711441) - (xy 105.721969 137.860532) - (xy 105.724528 137.868699) - (xy 105.813361 138.015381) - (xy 105.934619 138.136639) - (xy 106.021838 138.18946) - (xy 106.051188 138.207235) - (xy 106.099095 138.259632) - (xy 106.111068 138.329612) - (xy 106.083307 138.394956) - (xy 106.024625 138.434918) - (xy 105.985917 138.441011) - (xy 104.264461 138.441011) - (xy 104.19634 138.421009) - (xy 104.175366 138.404106) - (xy 101.254437 135.483177) - (xy 101.220411 135.420865) - (xy 101.225476 135.35005) - (xy 101.268023 135.293214) - (xy 101.334543 135.268403) - (xy 101.354511 135.268561) - (xy 101.369522 135.269874) - (xy 101.369525 135.269874) - (xy 101.375 135.270353) - (xy 101.596463 135.250978) - (xy 101.748185 135.210324) - (xy 101.805886 135.194863) - (xy 101.805888 135.194862) - (xy 101.811196 135.19344) - (xy 101.827061 135.186042) - (xy 102.00769 135.101814) - (xy 102.007695 135.101811) - (xy 102.012677 135.099488) - (xy 102.137461 135.012113) - (xy 102.19027 134.975136) - (xy 102.190273 134.975134) - (xy 102.194781 134.971977) - (xy 102.351977 134.814781) - (xy 102.356003 134.809032) - (xy 102.476331 134.637185) - (xy 102.476332 134.637183) - (xy 102.479488 134.632676) - (xy 102.481811 134.627694) - (xy 102.481814 134.627689) - (xy 102.530805 134.522627) - (xy 102.577723 134.469342) - (xy 102.646 134.449881) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 96.491121 133.761002) - (xy 96.537614 133.814658) - (xy 96.549 133.867) - (xy 96.549 135.246884) - (xy 96.556211 135.271442) - (xy 96.556211 135.342438) - (xy 96.537515 135.379002) - (xy 96.537589 135.379046) - (xy 96.536879 135.380246) - (xy 96.534876 135.384164) - (xy 96.533554 135.385868) - (xy 96.533551 135.385873) - (xy 96.528696 135.392132) - (xy 96.525549 135.399404) - (xy 96.525548 135.399406) - (xy 96.510346 135.434535) - (xy 96.505124 135.445195) - (xy 96.482876 135.485663) - (xy 96.477541 135.506441) - (xy 96.471142 135.525131) - (xy 96.46262 135.544824) - (xy 96.46138 135.552655) - (xy 96.455394 135.590448) - (xy 96.452987 135.602071) - (xy 96.4415 135.646812) - (xy 96.4415 135.668259) - (xy 96.439949 135.687969) - (xy 96.436594 135.709152) - (xy 96.438308 135.727279) - (xy 96.440941 135.755138) - (xy 96.4415 135.766996) - (xy 96.4415 135.77505) - (xy 96.421498 135.843171) - (xy 96.404595 135.864145) - (xy 95.248595 137.020145) - (xy 95.186283 137.054171) - (xy 95.115468 137.049106) - (xy 95.058632 137.006559) - (xy 95.033821 136.940039) - (xy 95.0335 136.93105) - (xy 95.0335 135.269421) - (xy 95.053502 135.2013) - (xy 95.107158 135.154807) - (xy 95.177432 135.144703) - (xy 95.235065 135.168595) - (xy 95.279352 135.201786) - (xy 95.294946 135.210324) - (xy 95.415394 135.255478) - (xy 95.430649 135.259105) - (xy 95.481514 135.264631) - (xy 95.488328 135.265) - (xy 96.022885 135.265) - (xy 96.038124 135.260525) - (xy 96.039329 135.259135) - (xy 96.041 135.251452) - (xy 96.041 133.867) - (xy 96.061002 133.798879) - (xy 96.114658 133.752386) - (xy 96.167 133.741) - (xy 96.423 133.741) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 118.398562 132.528002) - (xy 118.445055 132.581658) - (xy 118.455159 132.651932) - (xy 118.425665 132.716512) - (xy 118.406006 132.734826) - (xy 118.363744 132.7665) - (xy 118.336739 132.786739) - (xy 118.249385 132.903295) - (xy 118.198255 133.039684) - (xy 118.1915 133.101866) - (xy 118.1915 135.198134) - (xy 118.198255 135.260316) - (xy 118.249385 135.396705) - (xy 118.336739 135.513261) - (xy 118.453295 135.600615) - (xy 118.589684 135.651745) - (xy 118.651866 135.6585) - (xy 118.7655 135.6585) - (xy 118.833621 135.678502) - (xy 118.880114 135.732158) - (xy 118.8915 135.7845) - (xy 118.8915 136.158297) - (xy 118.871498 136.226418) - (xy 118.817842 136.272911) - (xy 118.747568 136.283015) - (xy 118.724167 136.277325) - (xy 118.710149 136.272457) - (xy 118.553729 136.218139) - (xy 118.547794 136.217278) - (xy 118.547792 136.217278) - (xy 118.350336 136.188648) - (xy 118.350333 136.188648) - (xy 118.344396 136.187787) - (xy 118.133101 136.197567) - (xy 117.987568 136.23264) - (xy 117.933291 136.245721) - (xy 117.933289 136.245722) - (xy 117.927466 136.247125) - (xy 117.922011 136.249605) - (xy 117.922009 136.249606) - (xy 117.897602 136.260703) - (xy 117.827311 136.270689) - (xy 117.76278 136.241088) - (xy 117.756357 136.235097) - (xy 116.413655 134.892395) - (xy 116.405665 134.883615) - (xy 116.405663 134.883613) - (xy 116.401416 134.87692) - (xy 116.394072 134.870023) - (xy 116.349743 134.828396) - (xy 116.346901 134.825641) - (xy 116.326333 134.805073) - (xy 116.322826 134.802353) - (xy 116.313804 134.794647) - (xy 116.285913 134.768456) - (xy 116.280133 134.763028) - (xy 116.273181 134.759206) - (xy 116.261342 134.752697) - (xy 116.244818 134.741843) - (xy 116.234132 134.733555) - (xy 116.227868 134.728696) - (xy 116.220596 134.725549) - (xy 116.220594 134.725548) - (xy 116.185465 134.710346) - (xy 116.174805 134.705124) - (xy 116.141284 134.686695) - (xy 116.141282 134.686694) - (xy 116.134337 134.682876) - (xy 116.113559 134.677541) - (xy 116.094869 134.671142) - (xy 116.075176 134.66262) - (xy 116.029552 134.655394) - (xy 116.017929 134.652987) - (xy 115.989928 134.645798) - (xy 115.973188 134.6415) - (xy 115.951741 134.6415) - (xy 115.932031 134.639949) - (xy 115.918677 134.637834) - (xy 115.910848 134.636594) - (xy 115.864859 134.640941) - (xy 115.853004 134.6415) - (xy 111.44571 134.6415) - (xy 111.377589 134.621498) - (xy 111.356615 134.604595) - (xy 111.341115 134.589095) - (xy 111.307089 134.526783) - (xy 111.312154 134.455968) - (xy 111.341115 134.410905) - (xy 111.436639 134.315381) - (xy 111.525472 134.168699) - (xy 111.529456 134.155988) - (xy 111.569891 134.026957) - (xy 111.576753 134.005062) - (xy 111.5835 133.931635) - (xy 111.583499 133.418366) - (xy 111.576753 133.344938) - (xy 111.56147 133.296169) - (xy 111.527744 133.18855) - (xy 111.527743 133.188548) - (xy 111.525472 133.181301) - (xy 111.436639 133.034619) - (xy 111.315381 132.913361) - (xy 111.168699 132.824528) - (xy 111.161452 132.822257) - (xy 111.16145 132.822256) - (xy 111.071026 132.793919) - (xy 111.005062 132.773247) - (xy 110.931635 132.7665) - (xy 110.67495 132.7665) - (xy 110.606829 132.746498) - (xy 110.585855 132.729595) - (xy 110.579355 132.723095) - (xy 110.545329 132.660783) - (xy 110.550394 132.589968) - (xy 110.592941 132.533132) - (xy 110.659461 132.508321) - (xy 110.66845 132.508) - (xy 118.330441 132.508) - ) - ) - (filled_polygon - (layer "F.Cu") - (pts - (xy 107.90772 134.415071) - (xy 107.912585 134.418845) - (xy 107.918193 134.424453) - (xy 107.925017 134.428489) - (xy 107.92502 134.428491) - (xy 107.984297 134.463547) - (xy 108.061399 134.509145) - (xy 108.06901 134.511356) - (xy 108.069012 134.511357) - (xy 108.105722 134.522022) - (xy 108.221169 134.555562) - (xy 108.227574 134.556066) - (xy 108.227579 134.556067) - (xy 108.256042 134.558307) - (xy 108.25605 134.558307) - (xy 108.258498 134.5585) - (xy 109.416502 134.5585) - (xy 109.41895 134.558307) - (xy 109.418958 134.558307) - (xy 109.447421 134.556067) - (xy 109.447426 134.556066) - (xy 109.453831 134.555562) - (xy 109.613601 134.509145) - (xy 109.614552 134.512418) - (xy 109.669634 134.505646) - (xy 109.733597 134.536455) - (xy 109.77075 134.596955) - (xy 109.769296 134.667936) - (xy 109.756928 134.695241) - (xy 109.728705 134.741843) - (xy 109.688015 134.809032) - (xy 109.684826 134.814297) - (xy 109.632429 134.862204) - (xy 109.562449 134.874177) - (xy 109.541898 134.870023) - (xy 109.460011 134.846233) - (xy 109.460007 134.846232) - (xy 109.453831 134.844438) - (xy 109.447426 134.843934) - (xy 109.447421 134.843933) - (xy 109.418958 134.841693) - (xy 109.41895 134.841693) - (xy 109.416502 134.8415) - (xy 108.258498 134.8415) - (xy 108.25605 134.841693) - (xy 108.256042 134.841693) - (xy 108.227579 134.843933) - (xy 108.227574 134.843934) - (xy 108.221169 134.844438) - (xy 108.133104 134.870023) - (xy 108.069012 134.888643) - (xy 108.06901 134.888644) - (xy 108.061399 134.890855) - (xy 107.918193 134.975547) - (xy 107.912584 134.981156) - (xy 107.907114 134.985399) - (xy 107.841029 135.011346) - (xy 107.771406 134.997445) - (xy 107.729884 134.959554) - (xy 107.71763 134.954) - (xy 107.479842 134.954) - (xy 107.415703 134.936453) - (xy 107.345427 134.894892) - (xy 107.345428 134.894892) - (xy 107.338601 134.890855) - (xy 107.33099 134.888644) - (xy 107.330988 134.888643) - (xy 107.266896 134.870023) - (xy 107.178831 134.844438) - (xy 107.172426 134.843934) - (xy 107.172421 134.843933) - (xy 107.143958 134.841693) - (xy 107.14395 134.841693) - (xy 107.141502 134.8415) - (xy 106.4345 134.8415) - (xy 106.366379 134.821498) - (xy 106.319886 134.767842) - (xy 106.3085 134.7155) - (xy 106.3085 134.6845) - (xy 106.328502 134.616379) - (xy 106.382158 134.569886) - (xy 106.4345 134.5585) - (xy 107.141502 134.5585) - (xy 107.14395 134.558307) - (xy 107.143958 134.558307) - (xy 107.172421 134.556067) - (xy 107.172426 134.556066) - (xy 107.178831 134.555562) - (xy 107.294278 134.522022) - (xy 107.330988 134.511357) - (xy 107.33099 134.511356) - (xy 107.338601 134.509145) - (xy 107.415703 134.463547) - (xy 107.479842 134.446) - (xy 107.711878 134.446) - (xy 107.727116 134.441526) - (xy 107.735268 134.432118) - (xy 107.794994 134.393734) - (xy 107.86599 134.393734) - ) - ) - ) - (zone (net 4) (net_name "GND") (layer "B.Cu") (tstamp 8f50d0c0-ed75-4564-b19e-374599b2012a) (hatch edge 0.508) - (connect_pads (clearance 0.508)) - (min_thickness 0.254) (filled_areas_thickness no) - (fill yes (thermal_gap 0.508) (thermal_bridge_width 0.508)) - (polygon - (pts - (xy 130 162) - (xy 70 162) - (xy 70 132) - (xy 130 132) - ) - ) - (filled_polygon - (layer "B.Cu") - (pts - (xy 92.499305 132.528002) - (xy 92.545798 132.581658) - (xy 92.555902 132.651932) - (xy 92.551019 132.672929) - (xy 92.506458 132.810072) - (xy 92.505768 132.816633) - (xy 92.505768 132.816635) - (xy 92.495185 132.91733) - (xy 92.486496 133) - (xy 92.487186 133.006565) - (xy 92.497562 133.105283) - (xy 92.506458 133.189928) - (xy 92.565473 133.371556) - (xy 92.66096 133.536944) - (xy 92.665378 133.541851) - (xy 92.665379 133.541852) - (xy 92.784325 133.673955) - (xy 92.788747 133.678866) - (xy 92.943248 133.791118) - (xy 92.949276 133.793802) - (xy 92.949278 133.793803) - (xy 93.111681 133.866109) - (xy 93.117712 133.868794) - (xy 93.211112 133.888647) - (xy 93.298056 133.907128) - (xy 93.298061 133.907128) - (xy 93.304513 133.9085) - (xy 93.495487 133.9085) - (xy 93.501939 133.907128) - (xy 93.501944 133.907128) - (xy 93.588888 133.888647) - (xy 93.682288 133.868794) - (xy 93.688319 133.866109) - (xy 93.850722 133.793803) - (xy 93.850724 133.793802) - (xy 93.856752 133.791118) - (xy 94.011253 133.678866) - (xy 94.096961 133.583677) - (xy 94.157404 133.546439) - (xy 94.190595 133.541989) - (xy 94.899 133.541989) - (xy 94.967121 133.561991) - (xy 95.013614 133.615647) - (xy 95.025 133.667989) - (xy 95.025 133.722885) - (xy 95.029475 133.738124) - (xy 95.030865 133.739329) - (xy 95.038548 133.741) - (xy 96.423 133.741) - (xy 96.491121 133.761002) - (xy 96.537614 133.814658) - (xy 96.549 133.867) - (xy 96.549 134.123) - (xy 96.528998 134.191121) - (xy 96.475342 134.237614) - (xy 96.423 134.249) - (xy 95.043116 134.249) - (xy 95.027877 134.253475) - (xy 95.026672 134.254865) - (xy 95.025001 134.262548) - (xy 95.025001 134.5155) - (xy 95.004999 134.583621) - (xy 94.951343 134.630114) - (xy 94.899001 134.6415) - (xy 92.330224 134.6415) - (xy 92.262103 134.621498) - (xy 92.256163 134.617436) - (xy 92.112094 134.512763) - (xy 92.112093 134.512762) - (xy 92.106752 134.508882) - (xy 92.100724 134.506198) - (xy 92.100722 134.506197) - (xy 91.938319 134.433891) - (xy 91.938318 134.433891) - (xy 91.932288 134.431206) - (xy 91.838888 134.411353) - (xy 91.751944 134.392872) - (xy 91.751939 134.392872) - (xy 91.745487 134.3915) - (xy 91.554513 134.3915) - (xy 91.548061 134.392872) - (xy 91.548056 134.392872) - (xy 91.461112 134.411353) - (xy 91.367712 134.431206) - (xy 91.361682 134.433891) - (xy 91.361681 134.433891) - (xy 91.199278 134.506197) - (xy 91.199276 134.506198) - (xy 91.193248 134.508882) - (xy 91.187907 134.512762) - (xy 91.187906 134.512763) - (xy 91.043837 134.617436) - (xy 90.976969 134.641294) - (xy 90.969776 134.6415) - (xy 88.482056 134.6415) - (xy 88.4702 134.640941) - (xy 88.470197 134.640941) - (xy 88.462463 134.639212) - (xy 88.407446 134.640941) - (xy 88.391631 134.641438) - (xy 88.387673 134.6415) - (xy 88.358568 134.6415) - (xy 88.354168 134.642056) - (xy 88.342336 134.642988) - (xy 88.296169 134.644438) - (xy 88.275579 134.65042) - (xy 88.256218 134.65443) - (xy 88.24923 134.655312) - (xy 88.242796 134.656125) - (xy 88.242795 134.656125) - (xy 88.234936 134.657118) - (xy 88.227571 134.660034) - (xy 88.227567 134.660035) - (xy 88.191979 134.674126) - (xy 88.180769 134.677965) - (xy 88.1364 134.690855) - (xy 88.117943 134.701771) - (xy 88.100193 134.710466) - (xy 88.080244 134.718365) - (xy 88.073833 134.723023) - (xy 88.073831 134.723024) - (xy 88.042864 134.745523) - (xy 88.032946 134.752038) - (xy 87.993193 134.775548) - (xy 87.978032 134.790709) - (xy 87.963 134.803548) - (xy 87.945643 134.816159) - (xy 87.916193 134.851758) - (xy 87.908203 134.860538) - (xy 81.790686 140.978054) - (xy 81.728374 141.01208) - (xy 81.657559 141.007015) - (xy 81.600723 140.964468) - (xy 81.575912 140.897948) - (xy 81.576328 140.87535) - (xy 81.576426 140.874453) - (xy 81.579285 140.848134) - (xy 81.579285 138.751866) - (xy 81.57253 138.689684) - (xy 81.5214 138.553295) - (xy 81.434046 138.436739) - (xy 81.31749 138.349385) - (xy 81.181101 138.298255) - (xy 81.118919 138.2915) - (xy 79.022651 138.2915) - (xy 78.960469 138.298255) - (xy 78.82408 138.349385) - (xy 78.707524 138.436739) - (xy 78.62017 138.553295) - (xy 78.56904 138.689684) - (xy 78.562285 138.751866) - (xy 78.562285 140.848134) - (xy 78.56904 140.910316) - (xy 78.62017 141.046705) - (xy 78.707524 141.163261) - (xy 78.713719 141.167904) - (xy 78.747448 141.229672) - (xy 78.742383 141.300487) - (xy 78.699836 141.357323) - (xy 78.68663 141.365837) - (xy 78.680244 141.368365) - (xy 78.645738 141.393435) - (xy 78.642874 141.395516) - (xy 78.632952 141.402033) - (xy 78.600023 141.421507) - (xy 78.600019 141.42151) - (xy 78.593193 141.425547) - (xy 78.578029 141.440711) - (xy 78.562996 141.453551) - (xy 78.545643 141.466159) - (xy 78.516198 141.501752) - (xy 78.508208 141.510532) - (xy 74.792395 145.226345) - (xy 74.783615 145.234335) - (xy 74.783613 145.234337) - (xy 74.77692 145.238584) - (xy 74.771494 145.244362) - (xy 74.771493 145.244363) - (xy 74.728396 145.290257) - (xy 74.725641 145.293099) - (xy 74.705073 145.313667) - (xy 74.702356 145.31717) - (xy 74.694648 145.326195) - (xy 74.663028 145.359867) - (xy 74.659207 145.366818) - (xy 74.659206 145.366819) - (xy 74.652697 145.378658) - (xy 74.641843 145.395182) - (xy 74.634018 145.405271) - (xy 74.628696 145.412132) - (xy 74.625549 145.419404) - (xy 74.625548 145.419406) - (xy 74.610346 145.454535) - (xy 74.605124 145.465195) - (xy 74.582876 145.505663) - (xy 74.577541 145.526441) - (xy 74.571142 145.545131) - (xy 74.56262 145.564824) - (xy 74.56138 145.572655) - (xy 74.555394 145.610448) - (xy 74.552987 145.622071) - (xy 74.548347 145.640145) - (xy 74.5415 145.666812) - (xy 74.5415 145.688259) - (xy 74.539949 145.707969) - (xy 74.536594 145.729152) - (xy 74.53734 145.737043) - (xy 74.540941 145.775138) - (xy 74.5415 145.786996) - (xy 74.5415 150.166672) - (xy 74.521498 150.234793) - (xy 74.467842 150.281286) - (xy 74.408688 150.292488) - (xy 74.399675 150.292) - (xy 74.027115 150.292) - (xy 74.011876 150.296475) - (xy 74.010671 150.297865) - (xy 74.009 150.305548) - (xy 74.009 153.789884) - (xy 74.013475 153.805123) - (xy 74.014865 153.806328) - (xy 74.022548 153.807999) - (xy 74.399673 153.807999) - (xy 74.407226 153.80759) - (xy 74.476329 153.82388) - (xy 74.525655 153.874943) - (xy 74.537967 153.937576) - (xy 74.539212 153.937537) - (xy 74.539394 153.94332) - (xy 74.539461 153.94546) - (xy 74.541438 154.008369) - (xy 74.5415 154.012327) - (xy 74.5415 154.041432) - (xy 74.542056 154.045832) - (xy 74.542988 154.057664) - (xy 74.544438 154.103831) - (xy 74.54665 154.111444) - (xy 74.54665 154.111445) - (xy 74.550419 154.124416) - (xy 74.55443 154.143782) - (xy 74.557118 154.165064) - (xy 74.560034 154.172429) - (xy 74.560035 154.172433) - (xy 74.574126 154.208021) - (xy 74.577965 154.219231) - (xy 74.590855 154.2636) - (xy 74.601775 154.282065) - (xy 74.610466 154.299805) - (xy 74.618365 154.319756) - (xy 74.645516 154.357126) - (xy 74.652033 154.367048) - (xy 74.671507 154.399977) - (xy 74.67151 154.399981) - (xy 74.675547 154.406807) - (xy 74.690711 154.421971) - (xy 74.703551 154.437004) - (xy 74.716159 154.454357) - (xy 74.751752 154.483802) - (xy 74.760532 154.491792) - (xy 77.376345 157.107605) - (xy 77.384335 157.116385) - (xy 77.388584 157.12308) - (xy 77.394362 157.128506) - (xy 77.394363 157.128507) - (xy 77.440257 157.171604) - (xy 77.443099 157.174359) - (xy 77.463667 157.194927) - (xy 77.46717 157.197644) - (xy 77.476195 157.205352) - (xy 77.509867 157.236972) - (xy 77.516818 157.240793) - (xy 77.516819 157.240794) - (xy 77.528658 157.247303) - (xy 77.545182 157.258157) - (xy 77.555271 157.265982) - (xy 77.562132 157.271304) - (xy 77.569404 157.274451) - (xy 77.569406 157.274452) - (xy 77.604535 157.289654) - (xy 77.615195 157.294876) - (xy 77.645168 157.311354) - (xy 77.655663 157.317124) - (xy 77.676441 157.322459) - (xy 77.695131 157.328858) - (xy 77.714824 157.33738) - (xy 77.749563 157.342882) - (xy 77.760448 157.344606) - (xy 77.772071 157.347013) - (xy 77.796754 157.35335) - (xy 77.816812 157.3585) - (xy 77.838259 157.3585) - (xy 77.857969 157.360051) - (xy 77.879152 157.363406) - (xy 77.925141 157.359059) - (xy 77.936996 157.3585) - (xy 89.617944 157.3585) - (xy 89.6298 157.359059) - (xy 89.629803 157.359059) - (xy 89.637537 157.360788) - (xy 89.708369 157.358562) - (xy 89.712327 157.3585) - (xy 89.741432 157.3585) - (xy 89.745832 157.357944) - (xy 89.757664 157.357012) - (xy 89.803831 157.355562) - (xy 89.824421 157.34958) - (xy 89.843782 157.34557) - (xy 89.851416 157.344606) - (xy 89.857204 157.343875) - (xy 89.857205 157.343875) - (xy 89.865064 157.342882) - (xy 89.872429 157.339966) - (xy 89.872433 157.339965) - (xy 89.908021 157.325874) - (xy 89.919231 157.322035) - (xy 89.9636 157.309145) - (xy 89.982065 157.298225) - (xy 89.999805 157.289534) - (xy 90.019756 157.281635) - (xy 90.057129 157.254482) - (xy 90.067048 157.247967) - (xy 90.099977 157.228493) - (xy 90.099981 157.22849) - (xy 90.106807 157.224453) - (xy 90.121971 157.209289) - (xy 90.137005 157.196448) - (xy 90.154357 157.183841) - (xy 90.183803 157.148247) - (xy 90.191792 157.139468) - (xy 90.885656 156.445604) - (xy 126.047787 156.445604) - (xy 126.057567 156.656899) - (xy 126.107125 156.862534) - (xy 126.109607 156.867992) - (xy 126.109608 156.867996) - (xy 126.153053 156.963546) - (xy 126.194674 157.055087) - (xy 126.263473 157.152076) - (xy 126.294949 157.196448) - (xy 126.317054 157.227611) - (xy 126.416131 157.322456) - (xy 126.453848 157.358562) - (xy 126.46985 157.373881) - (xy 126.647548 157.48862) - (xy 126.653114 157.490863) - (xy 126.838168 157.565442) - (xy 126.838171 157.565443) - (xy 126.843737 157.567686) - (xy 127.051337 157.608228) - (xy 127.056899 157.6085) - (xy 128.012846 157.6085) - (xy 128.170566 157.593452) - (xy 128.373534 157.533908) - (xy 128.457111 157.490863) - (xy 128.556249 157.439804) - (xy 128.556252 157.439802) - (xy 128.56158 157.437058) - (xy 128.72792 157.306396) - (xy 128.731852 157.301865) - (xy 128.731855 157.301862) - (xy 128.862621 157.151167) - (xy 128.866552 157.146637) - (xy 128.869552 157.141451) - (xy 128.869555 157.141447) - (xy 128.969467 156.968742) - (xy 128.972473 156.963546) - (xy 129.041861 156.763729) - (xy 129.072213 156.554396) - (xy 129.062433 156.343101) - (xy 129.030819 156.211923) - (xy 129.014281 156.143299) - (xy 129.01428 156.143297) - (xy 129.012875 156.137466) - (xy 128.969525 156.042122) - (xy 128.939944 155.977064) - (xy 128.925326 155.944913) - (xy 128.802946 155.772389) - (xy 128.65015 155.626119) - (xy 128.472452 155.51138) - (xy 128.377241 155.473009) - (xy 128.281832 155.434558) - (xy 128.281829 155.434557) - (xy 128.276263 155.432314) - (xy 128.068663 155.391772) - (xy 128.063101 155.3915) - (xy 127.107154 155.3915) - (xy 126.949434 155.406548) - (xy 126.746466 155.466092) - (xy 126.741139 155.468836) - (xy 126.741138 155.468836) - (xy 126.563751 155.560196) - (xy 126.563748 155.560198) - (xy 126.55842 155.562942) - (xy 126.39208 155.693604) - (xy 126.388148 155.698135) - (xy 126.388145 155.698138) - (xy 126.319474 155.777275) - (xy 126.253448 155.853363) - (xy 126.250448 155.858549) - (xy 126.250445 155.858553) - (xy 126.218721 155.91339) - (xy 126.147527 156.036454) - (xy 126.078139 156.236271) - (xy 126.077278 156.242206) - (xy 126.077278 156.242208) - (xy 126.050346 156.427957) - (xy 126.047787 156.445604) - (xy 90.885656 156.445604) - (xy 92.504603 154.826657) - (xy 115.472 154.826657) - (xy 115.472301 154.832805) - (xy 115.485812 154.970603) - (xy 115.488195 154.982638) - (xy 115.541767 155.160076) - (xy 115.546441 155.171416) - (xy 115.63346 155.335077) - (xy 115.640249 155.345294) - (xy 115.757397 155.488933) - (xy 115.766041 155.497637) - (xy 115.908856 155.615784) - (xy 115.919027 155.622644) - (xy 116.082076 155.710804) - (xy 116.093381 155.715556) - (xy 116.208692 155.75125) - (xy 116.222795 155.751456) - (xy 116.226 155.744701) - (xy 116.226 154.502115) - (xy 116.221525 154.486876) - (xy 116.220135 154.485671) - (xy 116.212452 154.484) - (xy 115.490115 154.484) - (xy 115.474876 154.488475) - (xy 115.473671 154.489865) - (xy 115.472 154.497548) - (xy 115.472 154.826657) - (xy 92.504603 154.826657) - (xy 93.960905 153.370355) - (xy 94.023217 153.336329) - (xy 94.094032 153.341394) - (xy 94.139095 153.370355) - (xy 94.276345 153.507605) - (xy 94.284335 153.516385) - (xy 94.288584 153.52308) - (xy 94.294362 153.528506) - (xy 94.294363 153.528507) - (xy 94.340257 153.571604) - (xy 94.343099 153.574359) - (xy 94.363667 153.594927) - (xy 94.36717 153.597644) - (xy 94.376195 153.605352) - (xy 94.409867 153.636972) - (xy 94.416818 153.640793) - (xy 94.416819 153.640794) - (xy 94.428658 153.647303) - (xy 94.445182 153.658157) - (xy 94.451763 153.663261) - (xy 94.462132 153.671304) - (xy 94.486006 153.681635) - (xy 94.504536 153.689654) - (xy 94.515181 153.694869) - (xy 94.555663 153.717124) - (xy 94.563337 153.719094) - (xy 94.563344 153.719097) - (xy 94.576426 153.722455) - (xy 94.595134 153.72886) - (xy 94.614823 153.73738) - (xy 94.622649 153.738619) - (xy 94.622651 153.73862) - (xy 94.647159 153.742501) - (xy 94.660459 153.744608) - (xy 94.67207 153.747012) - (xy 94.703107 153.754981) - (xy 94.709135 153.756529) - (xy 94.709136 153.756529) - (xy 94.716812 153.7585) - (xy 94.738258 153.7585) - (xy 94.757968 153.760051) - (xy 94.771322 153.762166) - (xy 94.771323 153.762166) - (xy 94.779152 153.763406) - (xy 94.825141 153.759059) - (xy 94.836996 153.7585) - (xy 95.767944 153.7585) - (xy 95.7798 153.759059) - (xy 95.779803 153.759059) - (xy 95.787537 153.760788) - (xy 95.858369 153.758562) - (xy 95.862327 153.7585) - (xy 95.891432 153.7585) - (xy 95.895832 153.757944) - (xy 95.907664 153.757012) - (xy 95.953831 153.755562) - (xy 95.974421 153.74958) - (xy 95.993782 153.74557) - (xy 96.001408 153.744607) - (xy 96.007204 153.743875) - (xy 96.007205 153.743875) - (xy 96.015064 153.742882) - (xy 96.022429 153.739966) - (xy 96.022433 153.739965) - (xy 96.058021 153.725874) - (xy 96.069231 153.722035) - (xy 96.1136 153.709145) - (xy 96.132065 153.698225) - (xy 96.149805 153.689534) - (xy 96.169756 153.681635) - (xy 96.207129 153.654482) - (xy 96.217048 153.647967) - (xy 96.249977 153.628493) - (xy 96.249981 153.62849) - (xy 96.256807 153.624453) - (xy 96.271971 153.609289) - (xy 96.287005 153.596448) - (xy 96.304357 153.583841) - (xy 96.333803 153.548247) - (xy 96.341792 153.539468) - (xy 100.035855 149.845405) - (xy 100.098167 149.811379) - (xy 100.12495 149.8085) - (xy 100.469776 149.8085) - (xy 100.537897 149.828502) - (xy 100.543834 149.832562) - (xy 100.561511 149.845405) - (xy 100.675134 149.927957) - (xy 100.693248 149.941118) - (xy 100.699276 149.943802) - (xy 100.699278 149.943803) - (xy 100.861681 150.016109) - (xy 100.867712 150.018794) - (xy 100.944402 150.035095) - (xy 101.048056 150.057128) - (xy 101.048061 150.057128) - (xy 101.054513 150.0585) - (xy 101.245487 150.0585) - (xy 101.251939 150.057128) - (xy 101.251944 150.057128) - (xy 101.355598 150.035095) - (xy 101.432288 150.018794) - (xy 101.438319 150.016109) - (xy 101.600722 149.943803) - (xy 101.600724 149.943802) - (xy 101.606752 149.941118) - (xy 101.624867 149.927957) - (xy 101.738489 149.845405) - (xy 101.761253 149.828866) - (xy 101.826353 149.756565) - (xy 101.884621 149.691852) - (xy 101.884622 149.691851) - (xy 101.88904 149.686944) - (xy 101.974216 149.539416) - (xy 101.981223 149.527279) - (xy 101.981224 149.527278) - (xy 101.984527 149.521556) - (xy 102.043542 149.339928) - (xy 102.044335 149.332389) - (xy 102.062814 149.156565) - (xy 102.063504 149.15) - (xy 102.05433 149.062715) - (xy 102.044232 148.966635) - (xy 102.044232 148.966633) - (xy 102.043542 148.960072) - (xy 101.984527 148.778444) - (xy 101.88904 148.613056) - (xy 101.822038 148.538642) - (xy 101.765675 148.476045) - (xy 101.765674 148.476044) - (xy 101.761253 148.471134) - (xy 101.606752 148.358882) - (xy 101.600724 148.356198) - (xy 101.600722 148.356197) - (xy 101.438319 148.283891) - (xy 101.438318 148.283891) - (xy 101.432288 148.281206) - (xy 101.338888 148.261353) - (xy 101.251944 148.242872) - (xy 101.251939 148.242872) - (xy 101.245487 148.2415) - (xy 101.054513 148.2415) - (xy 101.048061 148.242872) - (xy 101.048056 148.242872) - (xy 100.961112 148.261353) - (xy 100.867712 148.281206) - (xy 100.861682 148.283891) - (xy 100.861681 148.283891) - (xy 100.699278 148.356197) - (xy 100.699276 148.356198) - (xy 100.693248 148.358882) - (xy 100.687907 148.362762) - (xy 100.687906 148.362763) - (xy 100.624988 148.408476) - (xy 100.544092 148.467251) - (xy 100.543837 148.467436) - (xy 100.476969 148.491294) - (xy 100.469776 148.4915) - (xy 99.88206 148.4915) - (xy 99.870203 148.490941) - (xy 99.862463 148.489211) - (xy 99.854538 148.48946) - (xy 99.854537 148.48946) - (xy 99.791599 148.491438) - (xy 99.787641 148.4915) - (xy 99.758568 148.4915) - (xy 99.754634 148.491997) - (xy 99.754632 148.491997) - (xy 99.754189 148.492053) - (xy 99.742354 148.492985) - (xy 99.709564 148.494016) - (xy 99.704089 148.494188) - (xy 99.704088 148.494188) - (xy 99.696169 148.494437) - (xy 99.676444 148.500168) - (xy 99.675571 148.500421) - (xy 99.656218 148.504429) - (xy 99.652743 148.504868) - (xy 99.634936 148.507118) - (xy 99.627568 148.510035) - (xy 99.627565 148.510036) - (xy 99.591982 148.524125) - (xy 99.580747 148.527971) - (xy 99.544016 148.538642) - (xy 99.544013 148.538643) - (xy 99.5364 148.540855) - (xy 99.517935 148.551775) - (xy 99.500195 148.560466) - (xy 99.480244 148.568365) - (xy 99.442874 148.595516) - (xy 99.432952 148.602033) - (xy 99.400023 148.621507) - (xy 99.400019 148.62151) - (xy 99.393193 148.625547) - (xy 99.378029 148.640711) - (xy 99.362996 148.653551) - (xy 99.345643 148.666159) - (xy 99.316198 148.701752) - (xy 99.308208 148.710532) - (xy 96.225955 151.792785) - (xy 96.163643 151.826811) - (xy 96.092828 151.821746) - (xy 96.035992 151.779199) - (xy 96.027741 151.76669) - (xy 95.948168 151.628866) - (xy 95.93904 151.613056) - (xy 95.840864 151.50402) - (xy 95.810146 151.440013) - (xy 95.8085 151.41971) - (xy 95.8085 144.19445) - (xy 95.828502 144.126329) - (xy 95.882158 144.079836) - (xy 95.952432 144.069732) - (xy 96.017012 144.099226) - (xy 96.023595 144.105355) - (xy 96.925845 145.007605) - (xy 96.933835 145.016385) - (xy 96.938084 145.02308) - (xy 96.943862 145.028506) - (xy 96.943863 145.028507) - (xy 96.989757 145.071604) - (xy 96.992599 145.074359) - (xy 97.013167 145.094927) - (xy 97.01667 145.097644) - (xy 97.025695 145.105352) - (xy 97.059367 145.136972) - (xy 97.066318 145.140793) - (xy 97.066319 145.140794) - (xy 97.078158 145.147303) - (xy 97.094682 145.158157) - (xy 97.104771 145.165982) - (xy 97.111632 145.171304) - (xy 97.118904 145.174451) - (xy 97.118906 145.174452) - (xy 97.154035 145.189654) - (xy 97.164696 145.194876) - (xy 97.205163 145.217124) - (xy 97.225941 145.222459) - (xy 97.244631 145.228858) - (xy 97.264324 145.23738) - (xy 97.308096 145.244313) - (xy 97.309948 145.244606) - (xy 97.321571 145.247013) - (xy 97.349572 145.254202) - (xy 97.366312 145.2585) - (xy 97.387759 145.2585) - (xy 97.407469 145.260051) - (xy 97.428652 145.263406) - (xy 97.474641 145.259059) - (xy 97.486496 145.2585) - (xy 102.72505 145.2585) - (xy 102.793171 145.278502) - (xy 102.814145 145.295405) - (xy 109.10703 151.58829) - (xy 109.141056 151.650602) - (xy 109.143244 151.664211) - (xy 109.156458 151.789928) - (xy 109.215473 151.971556) - (xy 109.31096 152.136944) - (xy 109.315378 152.141851) - (xy 109.315379 152.141852) - (xy 109.40055 152.236444) - (xy 109.438747 152.278866) - (xy 109.593248 152.391118) - (xy 109.599276 152.393802) - (xy 109.599278 152.393803) - (xy 109.761681 152.466109) - (xy 109.767712 152.468794) - (xy 109.852127 152.486737) - (xy 109.948056 152.507128) - (xy 109.948061 152.507128) - (xy 109.954513 152.5085) - (xy 110.145487 152.5085) - (xy 110.151939 152.507128) - (xy 110.151944 152.507128) - (xy 110.247873 152.486737) - (xy 110.332288 152.468794) - (xy 110.338319 152.466109) - (xy 110.500722 152.393803) - (xy 110.500724 152.393802) - (xy 110.506752 152.391118) - (xy 110.549582 152.36) - (xy 112.646496 152.36) - (xy 112.647186 152.366565) - (xy 112.66196 152.507128) - (xy 112.666458 152.549928) - (xy 112.725473 152.731556) - (xy 112.82096 152.896944) - (xy 112.825378 152.901851) - (xy 112.825379 152.901852) - (xy 112.937128 153.025962) - (xy 112.948747 153.038866) - (xy 113.103248 153.151118) - (xy 113.109276 153.153802) - (xy 113.109278 153.153803) - (xy 113.221244 153.203653) - (xy 113.277712 153.228794) - (xy 113.371112 153.248647) - (xy 113.458056 153.267128) - (xy 113.458061 153.267128) - (xy 113.464513 153.2685) - (xy 113.655487 153.2685) - (xy 113.661939 153.267128) - (xy 113.661944 153.267128) - (xy 113.748888 153.248647) - (xy 113.842288 153.228794) - (xy 113.898756 153.203653) - (xy 114.010722 153.153803) - (xy 114.010724 153.153802) - (xy 114.016752 153.151118) - (xy 114.166163 153.042564) - (xy 114.233031 153.018706) - (xy 114.240224 153.0185) - (xy 115.480278 153.0185) - (xy 115.548399 153.038502) - (xy 115.594892 153.092158) - (xy 115.604996 153.162432) - (xy 115.590692 153.205201) - (xy 115.551998 153.275585) - (xy 115.547166 153.286858) - (xy 115.49112 153.463538) - (xy 115.48857 153.475532) - (xy 115.472393 153.619761) - (xy 115.472 153.626785) - (xy 115.472 153.957885) - (xy 115.476475 153.973124) - (xy 115.477865 153.974329) - (xy 115.485548 153.976) - (xy 116.608 153.976) - (xy 116.676121 153.996002) - (xy 116.722614 154.049658) - (xy 116.734 154.102) - (xy 116.734 155.737924) - (xy 116.737973 155.751455) - (xy 116.745768 155.752575) - (xy 116.853521 155.720862) - (xy 116.864889 155.716269) - (xy 117.029154 155.630393) - (xy 117.039415 155.623679) - (xy 117.183873 155.507532) - (xy 117.192632 155.498954) - (xy 117.237 155.446079) - (xy 117.29611 155.406752) - (xy 117.367098 155.405626) - (xy 117.410048 155.426972) - (xy 117.475678 155.47715) - (xy 117.549085 155.51138) - (xy 117.633631 155.550805) - (xy 117.633634 155.550806) - (xy 117.639808 155.553685) - (xy 117.646456 155.555171) - (xy 117.646459 155.555172) - (xy 117.752421 155.578857) - (xy 117.816543 155.59319) - (xy 117.822088 155.5935) - (xy 117.955244 155.5935) - (xy 118.090037 155.578857) - (xy 118.20819 155.539094) - (xy 118.255204 155.523272) - (xy 118.255206 155.523271) - (xy 118.261675 155.521094) - (xy 118.416905 155.427823) - (xy 118.421862 155.423135) - (xy 118.421865 155.423133) - (xy 118.543527 155.308082) - (xy 118.543529 155.30808) - (xy 118.548485 155.303393) - (xy 118.552317 155.297755) - (xy 118.55232 155.297751) - (xy 118.646442 155.159255) - (xy 118.650277 155.153612) - (xy 118.71753 154.985466) - (xy 118.718644 154.978738) - (xy 118.718645 154.978734) - (xy 118.745993 154.813539) - (xy 118.745993 154.813536) - (xy 118.747108 154.806802) - (xy 118.742203 154.713198) - (xy 118.737987 154.632766) - (xy 118.73763 154.625953) - (xy 118.733478 154.610877) - (xy 118.691352 154.457941) - (xy 118.689539 154.451359) - (xy 118.605078 154.291164) - (xy 118.600673 154.285951) - (xy 118.60067 154.285947) - (xy 118.492594 154.158057) - (xy 118.49259 154.158053) - (xy 118.488187 154.152843) - (xy 118.482762 154.148695) - (xy 118.349743 154.046994) - (xy 118.349739 154.046991) - (xy 118.344322 154.04285) - (xy 118.200962 153.976) - (xy 118.186369 153.969195) - (xy 118.186366 153.969194) - (xy 118.180192 153.966315) - (xy 118.173544 153.964829) - (xy 118.173541 153.964828) - (xy 118.008494 153.927936) - (xy 118.008495 153.927936) - (xy 118.003457 153.92681) - (xy 117.997912 153.9265) - (xy 117.864756 153.9265) - (xy 117.861359 153.926869) - (xy 117.851537 153.927936) - (xy 117.729963 153.941143) - (xy 117.723499 153.943318) - (xy 117.723496 153.943319) - (xy 117.660633 153.964475) - (xy 117.655167 153.966315) - (xy 117.654189 153.966644) - (xy 117.583247 153.969414) - (xy 117.522068 153.933391) - (xy 117.490077 153.87001) - (xy 117.488 153.847225) - (xy 117.488 153.633343) - (xy 117.487699 153.627195) - (xy 117.474188 153.489397) - (xy 117.471805 153.477362) - (xy 117.418233 153.299924) - (xy 117.413559 153.288584) - (xy 117.368401 153.203653) - (xy 117.354082 153.134115) - (xy 117.37963 153.067875) - (xy 117.436935 153.025962) - (xy 117.479653 153.0185) - (xy 124.120278 153.0185) - (xy 124.188399 153.038502) - (xy 124.234892 153.092158) - (xy 124.244996 153.162432) - (xy 124.230692 153.205201) - (xy 124.191998 153.275585) - (xy 124.187166 153.286858) - (xy 124.13112 153.463538) - (xy 124.12857 153.475532) - (xy 124.112393 153.619761) - (xy 124.112 153.626785) - (xy 124.112 153.842974) - (xy 124.091998 153.911095) - (xy 124.038342 153.957588) - (xy 123.968068 153.967692) - (xy 123.958514 153.965939) - (xy 123.788506 153.927938) - (xy 123.788499 153.927937) - (xy 123.783457 153.92681) - (xy 123.777912 153.9265) - (xy 123.644756 153.9265) - (xy 123.641359 153.926869) - (xy 123.631537 153.927936) - (xy 123.509963 153.941143) - (xy 123.39181 153.980906) - (xy 123.344796 153.996728) - (xy 123.344794 153.996729) - (xy 123.338325 153.998906) - (xy 123.183095 154.092177) - (xy 123.178138 154.096865) - (xy 123.178135 154.096867) - (xy 123.056473 154.211918) - (xy 123.051515 154.216607) - (xy 123.047683 154.222245) - (xy 123.04768 154.222249) - (xy 122.953558 154.360745) - (xy 122.949723 154.366388) - (xy 122.88247 154.534534) - (xy 122.881356 154.541262) - (xy 122.881355 154.541266) - (xy 122.854007 154.706461) - (xy 122.852892 154.713198) - (xy 122.853249 154.720015) - (xy 122.853249 154.720019) - (xy 122.85955 154.840239) - (xy 122.86237 154.894047) - (xy 122.864181 154.90062) - (xy 122.864181 154.900623) - (xy 122.899364 155.028355) - (xy 122.910461 155.068641) - (xy 122.994922 155.228836) - (xy 122.999327 155.234049) - (xy 122.99933 155.234053) - (xy 123.107406 155.361943) - (xy 123.10741 155.361947) - (xy 123.111813 155.367157) - (xy 123.117237 155.371304) - (xy 123.117238 155.371305) - (xy 123.250257 155.473006) - (xy 123.250261 155.473009) - (xy 123.255678 155.47715) - (xy 123.329085 155.51138) - (xy 123.413631 155.550805) - (xy 123.413634 155.550806) - (xy 123.419808 155.553685) - (xy 123.426456 155.555171) - (xy 123.426459 155.555172) - (xy 123.532421 155.578857) - (xy 123.596543 155.59319) - (xy 123.602088 155.5935) - (xy 123.735244 155.5935) - (xy 123.870037 155.578857) - (xy 123.98819 155.539094) - (xy 124.035204 155.523272) - (xy 124.035206 155.523271) - (xy 124.041675 155.521094) - (xy 124.193651 155.429778) - (xy 124.193654 155.429777) - (xy 124.196905 155.427823) - (xy 124.197255 155.428406) - (xy 124.258917 155.404935) - (xy 124.328391 155.419561) - (xy 124.366391 155.450915) - (xy 124.397397 155.488933) - (xy 124.406041 155.497637) - (xy 124.548856 155.615784) - (xy 124.559027 155.622644) - (xy 124.722076 155.710804) - (xy 124.733381 155.715556) - (xy 124.848692 155.75125) - (xy 124.862795 155.751456) - (xy 124.866 155.744701) - (xy 124.866 154.102) - (xy 124.886002 154.033879) - (xy 124.939658 153.987386) - (xy 124.992 153.976) - (xy 125.248 153.976) - (xy 125.316121 153.996002) - (xy 125.362614 154.049658) - (xy 125.374 154.102) - (xy 125.374 155.737924) - (xy 125.377973 155.751455) - (xy 125.385768 155.752575) - (xy 125.493521 155.720862) - (xy 125.504889 155.716269) - (xy 125.669154 155.630393) - (xy 125.679415 155.623679) - (xy 125.823873 155.507532) - (xy 125.832632 155.498954) - (xy 125.951778 155.356961) - (xy 125.958708 155.346841) - (xy 126.048002 155.184415) - (xy 126.052834 155.173142) - (xy 126.10888 154.996462) - (xy 126.11143 154.984468) - (xy 126.127607 154.840239) - (xy 126.128 154.833215) - (xy 126.128 154.800986) - (xy 126.148002 154.732865) - (xy 126.201658 154.686372) - (xy 126.271932 154.676268) - (xy 126.341131 154.709968) - (xy 126.465831 154.829342) - (xy 126.475196 154.836738) - (xy 126.642741 154.944921) - (xy 126.653345 154.950417) - (xy 126.838312 155.024961) - (xy 126.84977 155.028355) - (xy 127.046928 155.066857) - (xy 127.055791 155.067934) - (xy 127.0585 155.068) - (xy 127.287885 155.068) - (xy 127.303124 155.063525) - (xy 127.304329 155.062135) - (xy 127.306 155.054452) - (xy 127.306 155.049885) - (xy 127.814 155.049885) - (xy 127.818475 155.065124) - (xy 127.819865 155.066329) - (xy 127.827548 155.068) - (xy 128.009832 155.068) - (xy 128.015808 155.067715) - (xy 128.164494 155.053529) - (xy 128.176228 155.05127) - (xy 128.367599 154.995128) - (xy 128.378675 154.990698) - (xy 128.555978 154.899381) - (xy 128.566024 154.892931) - (xy 128.722857 154.769738) - (xy 128.731506 154.761501) - (xy 128.862212 154.610877) - (xy 128.869147 154.601153) - (xy 128.96901 154.428533) - (xy 128.973984 154.417669) - (xy 129.039407 154.229273) - (xy 129.039648 154.228284) - (xy 129.03818 154.217992) - (xy 129.024615 154.214) - (xy 127.832115 154.214) - (xy 127.816876 154.218475) - (xy 127.815671 154.219865) - (xy 127.814 154.227548) - (xy 127.814 155.049885) - (xy 127.306 155.049885) - (xy 127.306 153.687885) - (xy 127.814 153.687885) - (xy 127.818475 153.703124) - (xy 127.819865 153.704329) - (xy 127.827548 153.706) - (xy 129.020402 153.706) - (xy 129.033933 153.702027) - (xy 129.035288 153.692601) - (xy 129.013806 153.603463) - (xy 129.009917 153.592168) - (xy 128.927371 153.410618) - (xy 128.921424 153.400276) - (xy 128.806032 153.237603) - (xy 128.798239 153.228575) - (xy 128.654169 153.090658) - (xy 128.644804 153.083262) - (xy 128.477259 152.975079) - (xy 128.466655 152.969583) - (xy 128.281688 152.895039) - (xy 128.27023 152.891645) - (xy 128.073072 152.853143) - (xy 128.064209 152.852066) - (xy 128.0615 152.852) - (xy 127.832115 152.852) - (xy 127.816876 152.856475) - (xy 127.815671 152.857865) - (xy 127.814 152.865548) - (xy 127.814 153.687885) - (xy 127.306 153.687885) - (xy 127.306 152.870115) - (xy 127.301525 152.854876) - (xy 127.300135 152.853671) - (xy 127.292452 152.852) - (xy 127.110168 152.852) - (xy 127.104192 152.852285) - (xy 126.955506 152.866471) - (xy 126.943772 152.86873) - (xy 126.752401 152.924872) - (xy 126.741325 152.929302) - (xy 126.564022 153.020619) - (xy 126.553976 153.027069) - (xy 126.397143 153.150262) - (xy 126.388495 153.158498) - (xy 126.258194 153.308657) - (xy 126.19844 153.346998) - (xy 126.127443 153.346948) - (xy 126.067745 153.308521) - (xy 126.051776 153.28523) - (xy 125.96654 153.124923) - (xy 125.959751 153.114706) - (xy 125.842603 152.971067) - (xy 125.833959 152.962363) - (xy 125.691144 152.844216) - (xy 125.680973 152.837356) - (xy 125.605874 152.79675) - (xy 125.555465 152.746755) - (xy 125.540088 152.677444) - (xy 125.564624 152.610822) - (xy 125.622652 152.56911) - (xy 125.622288 152.568294) - (xy 125.628319 152.565609) - (xy 125.790722 152.493303) - (xy 125.790724 152.493302) - (xy 125.796752 152.490618) - (xy 125.951253 152.378366) - (xy 126.016708 152.305671) - (xy 126.074621 152.241352) - (xy 126.074622 152.241351) - (xy 126.07904 152.236444) - (xy 126.174527 152.071056) - (xy 126.233542 151.889428) - (xy 126.2437 151.792785) - (xy 126.252814 151.706065) - (xy 126.253504 151.6995) - (xy 126.245132 151.619841) - (xy 126.234232 151.516135) - (xy 126.234232 151.516133) - (xy 126.233542 151.509572) - (xy 126.174527 151.327944) - (xy 126.07904 151.162556) - (xy 126.064319 151.146206) - (xy 125.955675 151.025545) - (xy 125.955674 151.025544) - (xy 125.951253 151.020634) - (xy 125.796752 150.908382) - (xy 125.790724 150.905698) - (xy 125.790722 150.905697) - (xy 125.628319 150.833391) - (xy 125.628318 150.833391) - (xy 125.622288 150.830706) - (xy 125.516162 150.808148) - (xy 125.441944 150.792372) - (xy 125.441939 150.792372) - (xy 125.435487 150.791) - (xy 125.244513 150.791) - (xy 125.238061 150.792372) - (xy 125.238056 150.792372) - (xy 125.163838 150.808148) - (xy 125.057712 150.830706) - (xy 125.051682 150.833391) - (xy 125.051681 150.833391) - (xy 124.889278 150.905697) - (xy 124.889276 150.905698) - (xy 124.883248 150.908382) - (xy 124.728747 151.020634) - (xy 124.724326 151.025544) - (xy 124.724325 151.025545) - (xy 124.615682 151.146206) - (xy 124.60096 151.162556) - (xy 124.505473 151.327944) - (xy 124.503431 151.334229) - (xy 124.452216 151.491852) - (xy 124.446458 151.509572) - (xy 124.445768 151.516135) - (xy 124.445768 151.516136) - (xy 124.438144 151.588671) - (xy 124.41113 151.654328) - (xy 124.352909 151.694957) - (xy 124.312834 151.7015) - (xy 114.240224 151.7015) - (xy 114.172103 151.681498) - (xy 114.166163 151.677436) - (xy 114.165909 151.677251) - (xy 114.016752 151.568882) - (xy 114.010724 151.566198) - (xy 114.010722 151.566197) - (xy 113.848319 151.493891) - (xy 113.848318 151.493891) - (xy 113.842288 151.491206) - (xy 113.738448 151.469134) - (xy 113.661944 151.452872) - (xy 113.661939 151.452872) - (xy 113.655487 151.4515) - (xy 113.464513 151.4515) - (xy 113.458061 151.452872) - (xy 113.458056 151.452872) - (xy 113.381552 151.469134) - (xy 113.277712 151.491206) - (xy 113.271682 151.493891) - (xy 113.271681 151.493891) - (xy 113.109278 151.566197) - (xy 113.109276 151.566198) - (xy 113.103248 151.568882) - (xy 112.948747 151.681134) - (xy 112.944326 151.686044) - (xy 112.944325 151.686045) - (xy 112.849351 151.791525) - (xy 112.82096 151.823056) - (xy 112.725473 151.988444) - (xy 112.666458 152.170072) - (xy 112.665768 152.176633) - (xy 112.665768 152.176635) - (xy 112.655023 152.278866) - (xy 112.646496 152.36) - (xy 110.549582 152.36) - (xy 110.661253 152.278866) - (xy 110.69945 152.236444) - (xy 110.784621 152.141852) - (xy 110.784622 152.141851) - (xy 110.78904 152.136944) - (xy 110.884527 151.971556) - (xy 110.900694 151.9218) - (xy 110.940768 151.863195) - (xy 110.994329 151.83749) - (xy 111.082288 151.818794) - (xy 111.088319 151.816109) - (xy 111.250722 151.743803) - (xy 111.250724 151.743802) - (xy 111.256752 151.741118) - (xy 111.411253 151.628866) - (xy 111.465263 151.568882) - (xy 111.534621 151.491852) - (xy 111.534622 151.491851) - (xy 111.53904 151.486944) - (xy 111.634527 151.321556) - (xy 111.693542 151.139928) - (xy 111.713504 150.95) - (xy 111.706394 150.882349) - (xy 111.694232 150.766635) - (xy 111.694232 150.766633) - (xy 111.693542 150.760072) - (xy 111.634527 150.578444) - (xy 111.61496 150.544552) - (xy 111.53904 150.413056) - (xy 111.541777 150.411476) - (xy 111.522351 150.357653) - (xy 111.538178 150.288443) - (xy 111.539114 150.286987) - (xy 111.53904 150.286944) - (xy 111.631223 150.127279) - (xy 111.631224 150.127278) - (xy 111.634527 150.121556) - (xy 111.693542 149.939928) - (xy 111.699384 149.88435) - (xy 111.712814 149.756565) - (xy 111.713504 149.75) - (xy 111.707769 149.695437) - (xy 111.694232 149.566635) - (xy 111.694232 149.566633) - (xy 111.693542 149.560072) - (xy 111.634527 149.378444) - (xy 111.53904 149.213056) - (xy 111.459472 149.124686) - (xy 111.415675 149.076045) - (xy 111.415674 149.076044) - (xy 111.411253 149.071134) - (xy 111.256752 148.958882) - (xy 111.250724 148.956198) - (xy 111.250722 148.956197) - (xy 111.088319 148.883891) - (xy 111.088318 148.883891) - (xy 111.082288 148.881206) - (xy 110.98041 148.859551) - (xy 110.901944 148.842872) - (xy 110.901939 148.842872) - (xy 110.895487 148.8415) - (xy 110.874949 148.8415) - (xy 110.806828 148.821498) - (xy 110.785854 148.804595) - (xy 110.631259 148.65) - (xy 118.186835 148.65) - (xy 118.205465 148.886711) - (xy 118.206619 148.891518) - (xy 118.20662 148.891524) - (xy 118.223077 148.960072) - (xy 118.260895 149.117594) - (xy 118.262788 149.122165) - (xy 118.262789 149.122167) - (xy 118.317311 149.253794) - (xy 118.35176 149.336963) - (xy 118.354346 149.341183) - (xy 118.473241 149.535202) - (xy 118.473245 149.535208) - (xy 118.475824 149.539416) - (xy 118.630031 149.719969) - (xy 118.810584 149.874176) - (xy 118.814792 149.876755) - (xy 118.814798 149.876759) - (xy 118.994604 149.986944) - (xy 119.013037 149.99824) - (xy 119.017607 150.000133) - (xy 119.017611 150.000135) - (xy 119.227833 150.087211) - (xy 119.232406 150.089105) - (xy 119.312609 150.10836) - (xy 119.458476 150.14338) - (xy 119.458482 150.143381) - (xy 119.463289 150.144535) - (xy 119.7 150.163165) + (xy 123.42029 149.51108) + (xy 123.458648 149.532026) + (xy 123.494072 149.560782) + (xy 123.580607 149.662101) + (xy 123.630031 149.719969) + (xy 123.810584 149.874176) + (xy 123.814792 149.876755) + (xy 123.814798 149.876759) + (xy 124.004489 149.993002) + (xy 124.013037 149.99824) + (xy 124.017607 150.000133) + (xy 124.017611 150.000135) + (xy 124.227833 150.087211) + (xy 124.232406 150.089105) + (xy 124.312609 150.10836) + (xy 124.458476 150.14338) + (xy 124.458482 150.143381) + (xy 124.463289 150.144535) + (xy 124.537878 150.150405) + (xy 124.604219 150.17569) + (xy 124.646359 150.232828) + (xy 124.650918 150.303678) + (xy 124.616449 150.365746) + (xy 124.580611 150.389916) + (xy 124.577378 150.390855) + (xy 124.558913 150.401775) + (xy 124.541173 150.410466) + (xy 124.521222 150.418365) + (xy 124.484314 150.44518) + (xy 124.483852 150.445516) + (xy 124.47393 150.452033) + (xy 124.441001 150.471507) + (xy 124.440997 150.47151) + (xy 124.434171 150.475547) + (xy 124.419007 150.490711) + (xy 124.403974 150.503551) + (xy 124.386621 150.516159) + (xy 124.362647 150.545139) + (xy 124.357176 150.551752) + (xy 124.349186 150.560532) + (xy 122.863058 152.04666) + (xy 122.800746 152.080686) + (xy 122.760356 152.082828) + (xy 122.748134 152.0815) + (xy 122.351866 152.0815) + (xy 122.348471 152.081869) + (xy 122.348467 152.081869) + (xy 122.322469 152.084693) + (xy 122.313606 152.085656) + (xy 122.286394 152.085656) + (xy 122.277531 152.084693) + (xy 122.251533 152.081869) + (xy 122.251529 152.081869) + (xy 122.248134 152.0815) + (xy 122.233075 152.0815) + (xy 122.164954 152.061498) + (xy 122.131139 152.029562) + (xy 122.104475 151.992862) + (xy 122.097967 151.982952) + (xy 122.078493 151.950023) + (xy 122.07849 151.950019) + (xy 122.074453 151.943193) + (xy 122.059289 151.928029) + (xy 122.046448 151.912995) + (xy 122.038501 151.902057) + (xy 122.033841 151.895643) + (xy 121.998247 151.866197) + (xy 121.989468 151.858208) + (xy 121.923655 151.792395) + (xy 121.915665 151.783615) + (xy 121.915663 151.783613) + (xy 121.911416 151.77692) + (xy 121.884004 151.751178) + (xy 121.859743 151.728396) + (xy 121.856901 151.725641) + (xy 121.836333 151.705073) + (xy 121.832826 151.702353) + (xy 121.823804 151.694647) + (xy 121.813125 151.684619) + (xy 121.790133 151.663028) + (xy 121.783181 151.659206) + (xy 121.771342 151.652697) + (xy 121.754818 151.641843) + (xy 121.744132 151.633555) + (xy 121.737868 151.628696) + (xy 121.730596 151.625549) + (xy 121.730594 151.625548) + (xy 121.695465 151.610346) + (xy 121.684805 151.605124) + (xy 121.651284 151.586695) + (xy 121.651282 151.586694) + (xy 121.644337 151.582876) + (xy 121.623559 151.577541) + (xy 121.604869 151.571142) + (xy 121.585176 151.56262) + (xy 121.539552 151.555394) + (xy 121.527929 151.552987) + (xy 121.499928 151.545798) + (xy 121.483188 151.5415) + (xy 121.461741 151.5415) + (xy 121.442031 151.539949) + (xy 121.420848 151.536594) + (xy 121.374859 151.540941) + (xy 121.363004 151.5415) + (xy 121.024949 151.5415) + (xy 120.956828 151.521498) + (xy 120.935854 151.504595) + (xy 119.79539 150.36413) + (xy 119.761364 150.301818) + (xy 119.766429 150.231002) + (xy 119.808976 150.174167) + (xy 119.874599 150.149423) (xy 119.936711 150.144535) (xy 119.941518 150.143381) (xy 119.941524 150.14338) @@ -11175,7 +6582,7 @@ (xy 120.382389 150.000135) (xy 120.382393 150.000133) (xy 120.386963 149.99824) - (xy 120.405396 149.986944) + (xy 120.395511 149.993002) (xy 120.575556 149.88267) (xy 121.33216 149.88267) (xy 121.337887 149.89032) @@ -11211,107 +6618,6 @@ (xy 120.954686 149.523598) (xy 120.976668 149.514122) (xy 121.827978 148.662812) - (xy 121.834356 148.651132) - (xy 122.564408 148.651132) - (xy 122.564539 148.652965) - (xy 122.56879 148.65958) - (xy 123.42029 149.51108) - (xy 123.458648 149.532026) - (xy 123.494072 149.560782) - (xy 123.595752 149.679834) - (xy 123.630031 149.719969) - (xy 123.810584 149.874176) - (xy 123.814792 149.876755) - (xy 123.814798 149.876759) - (xy 123.994604 149.986944) - (xy 124.013037 149.99824) - (xy 124.017607 150.000133) - (xy 124.017611 150.000135) - (xy 124.227833 150.087211) - (xy 124.232406 150.089105) - (xy 124.312609 150.10836) - (xy 124.458476 150.14338) - (xy 124.458482 150.143381) - (xy 124.463289 150.144535) - (xy 124.7 150.163165) - (xy 124.936711 150.144535) - (xy 124.941518 150.143381) - (xy 124.941524 150.14338) - (xy 125.087391 150.10836) - (xy 125.167594 150.089105) - (xy 125.172167 150.087211) - (xy 125.382389 150.000135) - (xy 125.382393 150.000133) - (xy 125.386963 149.99824) - (xy 125.405396 149.986944) - (xy 125.585202 149.876759) - (xy 125.585208 149.876755) - (xy 125.589416 149.874176) - (xy 125.769969 149.719969) - (xy 125.924176 149.539416) - (xy 125.926755 149.535208) - (xy 125.926759 149.535202) - (xy 126.045654 149.341183) - (xy 126.04824 149.336963) - (xy 126.08269 149.253794) - (xy 126.137211 149.122167) - (xy 126.137212 149.122165) - (xy 126.139105 149.117594) - (xy 126.176923 148.960072) - (xy 126.19338 148.891524) - (xy 126.193381 148.891518) - (xy 126.194535 148.886711) - (xy 126.213165 148.65) - (xy 126.194535 148.413289) - (xy 126.191927 148.402422) - (xy 126.153292 148.2415) - (xy 126.139105 148.182406) - (xy 126.114472 148.122936) - (xy 126.050135 147.967611) - (xy 126.050133 147.967607) - (xy 126.04824 147.963037) - (xy 126.018842 147.915064) - (xy 125.926759 147.764798) - (xy 125.926755 147.764792) - (xy 125.924176 147.760584) - (xy 125.769969 147.580031) - (xy 125.589416 147.425824) - (xy 125.585208 147.423245) - (xy 125.585202 147.423241) - (xy 125.391183 147.304346) - (xy 125.386963 147.30176) - (xy 125.382393 147.299867) - (xy 125.382389 147.299865) - (xy 125.172167 147.212789) - (xy 125.172165 147.212788) - (xy 125.167594 147.210895) - (xy 125.019951 147.175449) - (xy 124.941524 147.15662) - (xy 124.941518 147.156619) - (xy 124.936711 147.155465) - (xy 124.7 147.136835) - (xy 124.463289 147.155465) - (xy 124.458482 147.156619) - (xy 124.458476 147.15662) - (xy 124.380049 147.175449) - (xy 124.232406 147.210895) - (xy 124.227835 147.212788) - (xy 124.227833 147.212789) - (xy 124.017611 147.299865) - (xy 124.017607 147.299867) - (xy 124.013037 147.30176) - (xy 124.008817 147.304346) - (xy 123.814798 147.423241) - (xy 123.814792 147.423245) - (xy 123.810584 147.425824) - (xy 123.630031 147.580031) - (xy 123.626823 147.583787) - (xy 123.491247 147.742526) - (xy 123.445314 147.776402) - (xy 123.423332 147.785878) - (xy 122.572022 148.637188) - (xy 122.564408 148.651132) - (xy 121.834356 148.651132) (xy 121.835592 148.648868) (xy 121.835461 148.647035) (xy 121.83121 148.64042) @@ -11321,1215 +6627,2044 @@ (xy 120.773177 147.583787) (xy 120.769969 147.580031) (xy 120.589416 147.425824) - (xy 120.585208 147.423245) - (xy 120.585202 147.423241) - (xy 120.57647 147.41789) - (xy 121.332093 147.41789) - (xy 121.335876 147.426666) - (xy 122.187188 148.277978) - (xy 122.201132 148.285592) - (xy 122.202965 148.285461) - (xy 122.20958 148.28121) - (xy 123.06108 147.42971) - (xy 123.06784 147.41733) - (xy 123.062113 147.40968) - (xy 122.890958 147.304795) - (xy 122.882163 147.300313) - (xy 122.672012 147.213266) - (xy 122.662627 147.210217) - (xy 122.441446 147.157115) - (xy 122.431699 147.155572) - (xy 122.20493 147.137725) - (xy 122.19507 147.137725) - (xy 121.968301 147.155572) - (xy 121.958554 147.157115) - (xy 121.737373 147.210217) - (xy 121.727988 147.213266) - (xy 121.517837 147.300313) - (xy 121.509042 147.304795) - (xy 121.341555 147.407432) - (xy 121.332093 147.41789) - (xy 120.57647 147.41789) - (xy 120.391183 147.304346) - (xy 120.386963 147.30176) - (xy 120.382393 147.299867) - (xy 120.382389 147.299865) - (xy 120.172167 147.212789) - (xy 120.172165 147.212788) - (xy 120.167594 147.210895) - (xy 120.019951 147.175449) - (xy 119.941524 147.15662) - (xy 119.941518 147.156619) - (xy 119.936711 147.155465) - (xy 119.7 147.136835) - (xy 119.463289 147.155465) - (xy 119.458482 147.156619) - (xy 119.458476 147.15662) - (xy 119.380049 147.175449) - (xy 119.232406 147.210895) - (xy 119.227835 147.212788) - (xy 119.227833 147.212789) - (xy 119.017611 147.299865) - (xy 119.017607 147.299867) - (xy 119.013037 147.30176) - (xy 119.008817 147.304346) - (xy 118.814798 147.423241) - (xy 118.814792 147.423245) - (xy 118.810584 147.425824) + (xy 120.585201 147.423241) + (xy 120.585193 147.423235) + (xy 120.418665 147.321186) + (xy 120.371034 147.268539) + (xy 120.3585 147.213754) + (xy 120.3585 147.194355) + (xy 120.357944 147.189955) + (xy 120.357012 147.178117) + (xy 120.356921 147.175196) + (xy 120.355562 147.131956) + (xy 120.34958 147.111366) + (xy 120.34557 147.092003) + (xy 120.343875 147.078583) + (xy 120.343875 147.078582) + (xy 120.342882 147.070723) + (xy 120.339966 147.063358) + (xy 120.339965 147.063354) + (xy 120.325874 147.027766) + (xy 120.322035 147.016556) + (xy 120.309145 146.972187) + (xy 120.298229 146.95373) + (xy 120.289534 146.93598) + (xy 120.281635 146.916031) + (xy 120.276976 146.909618) + (xy 120.254477 146.878651) + (xy 120.24796 146.86873) + (xy 120.224452 146.82898) + (xy 120.209291 146.813819) + (xy 120.196449 146.798784) + (xy 120.183841 146.78143) + (xy 120.148241 146.751979) + (xy 120.139462 146.74399) + (xy 119.585275 146.189803) + (xy 119.551249 146.127491) + (xy 119.556314 146.056676) + (xy 119.598861 145.99984) + (xy 119.665381 145.975029) + (xy 119.725618 145.985601) + (xy 119.771677 146.006108) + (xy 119.771685 146.006111) + (xy 119.777712 146.008794) + (xy 119.853033 146.024804) + (xy 119.958056 146.047128) + (xy 119.958061 146.047128) + (xy 119.964513 146.0485) + (xy 120.155487 146.0485) + (xy 120.161939 146.047128) + (xy 120.161944 146.047128) + (xy 120.266967 146.024804) + (xy 120.342288 146.008794) + (xy 120.37973 145.992124) + (xy 120.510722 145.933803) + (xy 120.510724 145.933802) + (xy 120.516752 145.931118) + (xy 120.671253 145.818866) + (xy 120.708607 145.777381) + (xy 120.769053 145.740142) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 101.52772 151.255071) + (xy 101.532585 151.258845) + (xy 101.538193 151.264453) + (xy 101.545017 151.268489) + (xy 101.54502 151.268491) + (xy 101.644378 151.327251) + (xy 101.681399 151.349145) + (xy 101.68901 151.351356) + (xy 101.689012 151.351357) + (xy 101.726583 151.362272) + (xy 101.841169 151.395562) + (xy 101.847574 151.396066) + (xy 101.847579 151.396067) + (xy 101.876042 151.398307) + (xy 101.87605 151.398307) + (xy 101.878498 151.3985) + (xy 103.036502 151.3985) + (xy 103.03895 151.398307) + (xy 103.038958 151.398307) + (xy 103.067421 151.396067) + (xy 103.067426 151.396066) + (xy 103.073831 151.395562) + (xy 103.188417 151.362272) + (xy 103.225988 151.351357) + (xy 103.22599 151.351356) + (xy 103.233601 151.349145) + (xy 103.268874 151.328284) + (xy 103.337689 151.310826) + (xy 103.40502 151.333343) + (xy 103.449489 151.388688) + (xy 103.456977 151.459288) + (xy 103.422184 151.525757) + (xy 103.336259 151.611831) + (xy 103.327249 151.62324) + (xy 103.307088 151.655948) + (xy 103.254317 151.703442) + (xy 103.184245 151.714866) + (xy 103.164676 151.71083) + (xy 103.080011 151.686233) + (xy 103.080007 151.686232) + (xy 103.073831 151.684438) + (xy 103.067426 151.683934) + (xy 103.067421 151.683933) + (xy 103.038958 151.681693) + (xy 103.03895 151.681693) + (xy 103.036502 151.6815) + (xy 101.878498 151.6815) + (xy 101.87605 151.681693) + (xy 101.876042 151.681693) + (xy 101.847579 151.683933) + (xy 101.847574 151.683934) + (xy 101.841169 151.684438) + (xy 101.766129 151.706239) + (xy 101.689012 151.728643) + (xy 101.68901 151.728644) + (xy 101.681399 151.730855) + (xy 101.538193 151.815547) + (xy 101.532584 151.821156) + (xy 101.527114 151.825399) + (xy 101.461029 151.851346) + (xy 101.391406 151.837445) + (xy 101.349884 151.799554) + (xy 101.33763 151.794) + (xy 101.099842 151.794) + (xy 101.035703 151.776453) + (xy 100.992965 151.751178) + (xy 100.958601 151.730855) + (xy 100.95099 151.728644) + (xy 100.950988 151.728643) + (xy 100.873871 151.706239) + (xy 100.798831 151.684438) + (xy 100.792426 151.683934) + (xy 100.792421 151.683933) + (xy 100.763958 151.681693) + (xy 100.76395 151.681693) + (xy 100.761502 151.6815) + (xy 100.0545 151.6815) + (xy 99.986379 151.661498) + (xy 99.939886 151.607842) + (xy 99.9285 151.5555) + (xy 99.9285 151.549943) + (xy 99.948502 151.481822) + (xy 99.965405 151.460848) + (xy 99.990848 151.435405) + (xy 100.05316 151.401379) + (xy 100.079943 151.3985) + (xy 100.761502 151.3985) + (xy 100.76395 151.398307) + (xy 100.763958 151.398307) + (xy 100.792421 151.396067) + (xy 100.792426 151.396066) + (xy 100.798831 151.395562) + (xy 100.913417 151.362272) + (xy 100.950988 151.351357) + (xy 100.95099 151.351356) + (xy 100.958601 151.349145) + (xy 101.000142 151.324577) + (xy 101.035703 151.303547) + (xy 101.099842 151.286) + (xy 101.331878 151.286) + (xy 101.347116 151.281526) + (xy 101.355268 151.272118) + (xy 101.414994 151.233734) + (xy 101.48599 151.233734) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 73.957012 140.820859) + (xy 73.970311 140.834253) + (xy 73.997603 140.866208) + (xy 73.997608 140.866213) + (xy 74.000816 140.869969) + (xy 74.181369 141.024176) + (xy 74.185577 141.026755) + (xy 74.185583 141.026759) + (xy 74.363752 141.135941) + (xy 74.383822 141.14824) + (xy 74.388392 141.150133) + (xy 74.388396 141.150135) + (xy 74.598618 141.237211) + (xy 74.603191 141.239105) + (xy 74.664263 141.253767) + (xy 74.829261 141.29338) + (xy 74.829267 141.293381) + (xy 74.834074 141.294535) + (xy 75.070785 141.313165) + (xy 75.307496 141.294535) + (xy 75.312303 141.293381) + (xy 75.312309 141.29338) + (xy 75.502225 141.247785) + (xy 75.573133 141.251332) + (xy 75.620734 141.281209) + (xy 77.147126 142.8076) + (xy 77.155116 142.816381) + (xy 77.155124 142.81639) + (xy 77.159369 142.82308) + (xy 77.165144 142.828503) + (xy 77.211059 142.87162) + (xy 77.213901 142.874375) + (xy 77.234452 142.894926) + (xy 77.237586 142.897357) + (xy 77.237948 142.897638) + (xy 77.246976 142.905348) + (xy 77.280652 142.936972) + (xy 77.287603 142.940793) + (xy 77.287604 142.940794) + (xy 77.29944 142.947301) + (xy 77.315968 142.958157) + (xy 77.332916 142.971304) + (xy 77.37533 142.989659) + (xy 77.385968 142.994871) + (xy 77.426448 143.017124) + (xy 77.434125 143.019095) + (xy 77.43413 143.019097) + (xy 77.447211 143.022455) + (xy 77.465919 143.02886) + (xy 77.485608 143.03738) + (xy 77.493434 143.038619) + (xy 77.493436 143.03862) + (xy 77.517944 143.042501) + (xy 77.531244 143.044608) + (xy 77.542855 143.047012) + (xy 77.573892 143.054981) + (xy 77.57992 143.056529) + (xy 77.579921 143.056529) + (xy 77.587597 143.0585) + (xy 77.609043 143.0585) + (xy 77.628753 143.060051) + (xy 77.649936 143.063406) + (xy 77.695925 143.059059) + (xy 77.70778 143.0585) + (xy 84.206749 143.0585) + (xy 84.270889 143.076047) + (xy 84.411399 143.159145) + (xy 84.41901 143.161356) + (xy 84.419012 143.161357) + (xy 84.471231 143.176528) + (xy 84.571169 143.205562) + (xy 84.577574 143.206066) + (xy 84.577579 143.206067) + (xy 84.606042 143.208307) + (xy 84.60605 143.208307) + (xy 84.608498 143.2085) + (xy 85.7655 143.2085) + (xy 85.833621 143.228502) + (xy 85.880114 143.282158) + (xy 85.8915 143.3345) + (xy 85.8915 143.566502) + (xy 85.894438 143.603831) + (xy 85.911699 143.663244) + (xy 85.928991 143.722763) + (xy 85.940855 143.763601) + (xy 85.944892 143.770427) + (xy 86.021509 143.89998) + (xy 86.021511 143.899983) + (xy 86.025547 143.906807) + (xy 86.056267 143.937527) + (xy 86.090293 143.999839) + (xy 86.085228 144.070654) + (xy 86.042681 144.12749) + (xy 86.032443 144.134398) + (xy 85.984619 144.163361) + (xy 85.888741 144.259239) + (xy 85.826429 144.293265) + (xy 85.755614 144.2882) + (xy 85.710551 144.259239) + (xy 85.620443 144.169131) + (xy 85.608574 144.159824) + (xy 85.474988 144.078921) + (xy 85.461243 144.072715) + (xy 85.311356 144.025744) + (xy 85.298306 144.023131) + (xy 85.243414 144.018087) + (xy 85.231876 144.021475) + (xy 85.230671 144.022865) + (xy 85.229 144.030548) + (xy 85.229 145.032557) + (xy 85.208998 145.100678) + (xy 85.192095 145.121652) + (xy 85.096652 145.217095) + (xy 85.03434 145.251121) + (xy 85.007557 145.254) + (xy 84.085116 145.254) + (xy 84.069877 145.258475) + (xy 84.068672 145.259865) + (xy 84.067001 145.267548) + (xy 84.067001 145.328705) + (xy 84.067264 145.334454) + (xy 84.073132 145.398315) + (xy 84.075743 145.411351) + (xy 84.122715 145.561243) + (xy 84.128921 145.574988) + (xy 84.209825 145.708575) + (xy 84.220226 145.721839) + (xy 84.246523 145.787786) + (xy 84.232991 145.857481) + (xy 84.22023 145.877339) + (xy 84.218737 145.879243) + (xy 84.213361 145.884619) + (xy 84.124528 146.031301) + (xy 84.122257 146.038548) + (xy 84.122256 146.03855) + (xy 84.105976 146.0905) + (xy 84.073247 146.194938) + (xy 84.0665 146.268365) + (xy 84.066501 146.931634) + (xy 84.066764 146.934492) + (xy 84.066764 146.934501) + (xy 84.068531 146.953733) + (xy 84.073247 147.005062) + (xy 84.075246 147.01144) + (xy 84.075246 147.011441) + (xy 84.120898 147.157115) + (xy 84.124528 147.168699) + (xy 84.213361 147.315381) + (xy 84.298505 147.400525) + (xy 84.332531 147.462837) + (xy 84.327466 147.533652) + (xy 84.298583 147.578638) + (xy 84.263138 147.614145) + (xy 84.200695 147.676697) + (xy 84.196855 147.682927) + (xy 84.196854 147.682928) + (xy 84.136011 147.781634) + (xy 84.107885 147.827262) + (xy 84.096547 147.861446) + (xy 84.061334 147.967611) + (xy 84.052203 147.995139) + (xy 84.0415 148.0996) + (xy 84.0415 149.5004) + (xy 84.041837 149.503646) + (xy 84.041837 149.50365) + (xy 84.049921 149.581556) + (xy 84.052474 149.606166) + (xy 84.054655 149.612702) + (xy 84.054655 149.612704) + (xy 84.086066 149.706854) + (xy 84.10845 149.773946) + (xy 84.201522 149.924348) + (xy 84.206704 149.929521) + (xy 84.263109 149.985828) + (xy 84.297188 150.048111) + (xy 84.292185 150.118931) + (xy 84.263264 150.164019) + (xy 84.200695 150.226697) + (xy 84.196855 150.232927) + (xy 84.196854 150.232928) + (xy 84.114984 150.365746) + (xy 84.107885 150.377262) + (xy 84.086744 150.441002) + (xy 84.059528 150.523056) + (xy 84.052203 150.545139) + (xy 84.051503 150.551975) + (xy 84.051502 150.551978) + (xy 84.048077 150.585405) + (xy 84.0415 150.6496) + (xy 84.0415 151.2655) + (xy 84.021498 151.333621) + (xy 83.967842 151.380114) + (xy 83.9155 151.3915) + (xy 81.9895 151.3915) + (xy 81.921379 151.371498) + (xy 81.874886 151.317842) + (xy 81.8635 151.2655) + (xy 81.8635 150.751866) + (xy 81.856745 150.689684) + (xy 81.805615 150.553295) + (xy 81.718261 150.436739) + (xy 81.601705 150.349385) + (xy 81.509063 150.314655) + (xy 81.452299 150.272013) + (xy 81.427599 150.205452) + (xy 81.442806 150.136103) + (xy 81.493092 150.085985) + (xy 81.50463 150.081094) + (xy 81.504528 150.080869) + (xy 81.511449 150.077744) + (xy 81.518699 150.075472) + (xy 81.665381 149.986639) + (xy 81.786639 149.865381) + (xy 81.875472 149.718699) + (xy 81.877981 149.710695) + (xy 81.910738 149.606166) + (xy 81.926753 149.555062) + (xy 81.9335 149.481635) + (xy 81.933499 149.22495) + (xy 81.953501 149.156831) + (xy 81.970404 149.135856) + (xy 82.250855 148.855405) + (xy 82.313167 148.821379) + (xy 82.33995 148.8185) + (xy 82.475487 148.8185) + (xy 82.481939 148.817128) + (xy 82.481944 148.817128) + (xy 82.570586 148.798286) + (xy 82.662288 148.778794) + (xy 82.684951 148.768704) + (xy 82.830722 148.703803) + (xy 82.830724 148.703802) + (xy 82.836752 148.701118) + (xy 82.847264 148.693481) + (xy 82.908668 148.648868) + (xy 82.991253 148.588866) + (xy 82.998215 148.581134) + (xy 83.114621 148.451852) + (xy 83.114622 148.451851) + (xy 83.11904 148.446944) + (xy 83.193728 148.317581) + (xy 83.211223 148.287279) + (xy 83.211224 148.287278) + (xy 83.214527 148.281556) + (xy 83.273542 148.099928) + (xy 83.28208 148.018699) + (xy 83.292814 147.916565) + (xy 83.293504 147.91) + (xy 83.287592 147.853751) + (xy 83.274232 147.726635) + (xy 83.274232 147.726633) + (xy 83.273542 147.720072) + (xy 83.214527 147.538444) + (xy 83.206567 147.524656) + (xy 83.155298 147.435856) + (xy 83.11904 147.373056) + (xy 83.096616 147.348151) + (xy 82.995675 147.236045) + (xy 82.995674 147.236044) + (xy 82.991253 147.231134) + (xy 82.888694 147.15662) + (xy 82.842094 147.122763) + (xy 82.842093 147.122762) + (xy 82.836752 147.118882) + (xy 82.830724 147.116198) + (xy 82.830722 147.116197) + (xy 82.668319 147.043891) + (xy 82.668318 147.043891) + (xy 82.662288 147.041206) + (xy 82.546207 147.016532) + (xy 82.481944 147.002872) + (xy 82.481939 147.002872) + (xy 82.475487 147.0015) + (xy 82.284513 147.0015) + (xy 82.278061 147.002872) + (xy 82.278056 147.002872) + (xy 82.213793 147.016532) + (xy 82.097712 147.041206) + (xy 82.091682 147.043891) + (xy 82.091681 147.043891) + (xy 82.074726 147.05144) + (xy 82.005024 147.082473) + (xy 81.934658 147.091907) + (xy 81.870361 147.061801) + (xy 81.846 147.032637) + (xy 81.840799 147.024048) + (xy 81.786639 146.934619) + (xy 81.665381 146.813361) + (xy 81.518699 146.724528) + (xy 81.511452 146.722257) + (xy 81.51145 146.722256) + (xy 81.428895 146.696385) + (xy 81.355062 146.673247) + (xy 81.281635 146.6665) + (xy 81.278737 146.6665) + (xy 80.94914 146.666501) + (xy 80.618366 146.666501) + (xy 80.615508 146.666764) + (xy 80.615499 146.666764) + (xy 80.579996 146.670026) + (xy 80.544938 146.673247) + (xy 80.53856 146.675246) + (xy 80.538559 146.675246) + (xy 80.38855 146.722256) + (xy 80.388548 146.722257) + (xy 80.381301 146.724528) + (xy 80.234619 146.813361) + (xy 80.143385 146.904595) + (xy 80.081073 146.938621) + (xy 80.05429 146.9415) + (xy 77.72071 146.9415) + (xy 77.652589 146.921498) + (xy 77.631615 146.904595) + (xy 77.565381 146.838361) + (xy 77.418699 146.749528) + (xy 77.411452 146.747257) + (xy 77.41145 146.747256) + (xy 77.29754 146.711559) + (xy 77.255062 146.698247) + (xy 77.181635 146.6915) + (xy 76.92495 146.6915) + (xy 76.856829 146.671498) + (xy 76.835855 146.654595) + (xy 74.909145 144.727885) + (xy 84.067 144.727885) + (xy 84.071475 144.743124) + (xy 84.072865 144.744329) + (xy 84.080548 144.746) + (xy 84.702885 144.746) + (xy 84.718124 144.741525) + (xy 84.719329 144.740135) + (xy 84.721 144.732452) + (xy 84.721 144.035116) + (xy 84.716525 144.019877) + (xy 84.715135 144.018672) + (xy 84.710706 144.017709) + (xy 84.651685 144.023132) + (xy 84.638649 144.025743) + (xy 84.488757 144.072715) + (xy 84.475012 144.078921) + (xy 84.341426 144.159824) + (xy 84.329557 144.169131) + (xy 84.219131 144.279557) + (xy 84.209824 144.291426) + (xy 84.128921 144.425012) + (xy 84.122715 144.438757) + (xy 84.075744 144.588644) + (xy 84.073131 144.601694) + (xy 84.067266 144.665521) + (xy 84.067 144.671309) + (xy 84.067 144.727885) + (xy 74.909145 144.727885) + (xy 73.785405 143.604145) + (xy 73.751379 143.541833) + (xy 73.7485 143.51505) + (xy 73.7485 140.916083) + (xy 73.768502 140.847962) + (xy 73.822158 140.801469) + (xy 73.892432 140.791365) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 89.528453 144.671454) + (xy 89.541752 144.683012) + (xy 91.546345 146.687605) + (xy 91.554335 146.696385) + (xy 91.558584 146.70308) + (xy 91.564362 146.708506) + (xy 91.564363 146.708507) + (xy 91.610257 146.751604) + (xy 91.613099 146.754359) + (xy 91.616333 146.757593) + (xy 91.650359 146.819905) + (xy 91.645294 146.89072) + (xy 91.602747 146.947556) + (xy 91.536227 146.972367) + (xy 91.485532 146.964153) + (xy 91.485238 146.9651) + (xy 91.44863 146.953733) + (xy 91.281898 146.901961) + (xy 91.109018 146.8815) + (xy 90.985987 146.8815) + (xy 90.900355 146.889368) + (xy 90.83373 146.89549) + (xy 90.833727 146.895491) + (xy 90.827976 146.896019) + (xy 90.822417 146.897587) + (xy 90.822416 146.897587) + (xy 90.628611 146.952246) + (xy 90.628609 146.952247) + (xy 90.623052 146.953814) + (xy 90.617877 146.956366) + (xy 90.617872 146.956368) + (xy 90.473092 147.027766) + (xy 90.432092 147.047985) + (xy 90.261491 147.175378) + (xy 90.116963 147.331729) + (xy 90.003347 147.511799) + (xy 89.924449 147.709559) + (xy 89.923323 147.715219) + (xy 89.923322 147.715223) + (xy 89.885813 147.903795) + (xy 89.882911 147.918385) + (xy 89.882835 147.92416) + (xy 89.882835 147.924164) + (xy 89.881817 148.001978) + (xy 89.880124 148.131284) + (xy 89.881103 148.136981) + (xy 89.881103 148.136982) + (xy 89.913453 148.325248) + (xy 89.916181 148.341126) + (xy 89.989875 148.540884) + (xy 90.047562 148.637846) + (xy 90.084675 148.700226) + (xy 90.098739 148.723866) + (xy 90.239125 148.883946) + (xy 90.406333 149.015762) + (xy 90.411444 149.018451) + (xy 90.411447 149.018453) + (xy 90.48462 149.056951) + (xy 90.594762 149.1149) + (xy 90.600283 149.116614) + (xy 90.600287 149.116616) + (xy 90.702971 149.1485) + (xy 90.798102 149.178039) + (xy 90.970982 149.1985) + (xy 91.094013 149.1985) + (xy 91.179645 149.190632) + (xy 91.24627 149.18451) + (xy 91.246273 149.184509) + (xy 91.252024 149.183981) + (xy 91.257584 149.182413) + (xy 91.451389 149.127754) + (xy 91.451391 149.127753) + (xy 91.456948 149.126186) + (xy 91.462123 149.123634) + (xy 91.462128 149.123632) + (xy 91.642727 149.03457) + (xy 91.647908 149.032015) + (xy 91.818509 148.904622) + (xy 91.821699 148.901171) + (xy 91.885392 148.870605) + (xy 91.955846 148.87937) + (xy 91.994712 148.905786) + (xy 92.084947 148.995864) + (xy 92.091177 148.999704) + (xy 92.091178 148.999705) + (xy 92.122514 149.01902) + (xy 92.229308 149.084849) + (xy 92.236256 149.087154) + (xy 92.236257 149.087154) + (xy 92.383738 149.136072) + (xy 92.38374 149.136072) + (xy 92.390269 149.138238) + (xy 92.490428 149.1485) + (xy 93.024572 149.1485) + (xy 93.027818 149.148163) + (xy 93.027822 149.148163) + (xy 93.061603 149.144658) + (xy 93.125982 149.137978) + (xy 93.286849 149.084308) + (xy 93.431055 148.995071) + (xy 93.550864 148.875053) + (xy 93.639849 148.730692) + (xy 93.650946 148.697237) + (xy 93.691072 148.576262) + (xy 93.691072 148.57626) + (xy 93.693238 148.569731) + (xy 93.694712 148.555344) + (xy 93.721554 148.489617) + (xy 93.779669 148.448836) + (xy 93.850607 148.445948) + (xy 93.911845 148.48187) + (xy 93.943941 148.545198) + (xy 93.945383 148.555186) + (xy 93.945611 148.557379) + (xy 93.947022 148.570982) + (xy 94.000692 148.731849) + (xy 94.089929 148.876055) + (xy 94.209947 148.995864) + (xy 94.216178 148.999705) + (xy 94.216181 148.999707) + (xy 94.274036 149.035369) + (xy 94.32153 149.08814) + (xy 94.332954 149.158212) + (xy 94.30468 149.223336) + (xy 94.297016 149.231724) + (xy 92.874145 150.654595) + (xy 92.811833 150.688621) + (xy 92.78505 150.6915) + (xy 89.27645 150.6915) + (xy 89.208329 150.671498) + (xy 89.161836 150.617842) + (xy 89.151123 150.578503) + (xy 89.148238 150.550692) + (xy 89.148237 150.550688) + (xy 89.147526 150.543834) + (xy 89.144285 150.534118) + (xy 89.094883 150.386045) + (xy 89.09155 150.376054) + (xy 88.998478 150.225652) + (xy 88.970345 150.197568) + (xy 88.936891 150.164172) + (xy 88.902812 150.101889) + (xy 88.907815 150.031069) + (xy 88.936736 149.985981) + (xy 88.994134 149.928483) + (xy 88.999305 149.923303) + (xy 89.003669 149.916224) + (xy 89.088275 149.778968) + (xy 89.088276 149.778966) + (xy 89.092115 149.772738) + (xy 89.128424 149.663268) + (xy 89.145632 149.611389) + (xy 89.145632 149.611387) + (xy 89.147797 149.604861) + (xy 89.149599 149.587279) + (xy 89.154502 149.539416) + (xy 89.1585 149.5004) + (xy 89.1585 148.0996) + (xy 89.147526 147.993834) + (xy 89.138778 147.967611) + (xy 89.093868 147.833002) + (xy 89.09155 147.826054) + (xy 88.998478 147.675652) + (xy 88.873303 147.550695) + (xy 88.865239 147.545724) + (xy 88.728968 147.461725) + (xy 88.728966 147.461724) + (xy 88.722738 147.457885) + (xy 88.642995 147.431436) + (xy 88.561389 147.404368) + (xy 88.561387 147.404368) + (xy 88.554861 147.402203) + (xy 88.548025 147.401503) + (xy 88.548022 147.401502) + (xy 88.504969 147.397091) + (xy 88.4504 147.3915) + (xy 87.6996 147.3915) + (xy 87.667008 147.394882) + (xy 87.597189 147.382018) + (xy 87.56491 147.35865) + (xy 87.505094 147.298834) + (xy 87.471068 147.236522) + (xy 87.475909 147.168836) + (xy 87.475472 147.168699) + (xy 87.476051 147.166851) + (xy 87.526753 147.005062) + (xy 87.5335 146.931635) + (xy 87.533499 146.542829) + (xy 87.553501 146.47471) + (xy 87.607156 146.428217) + (xy 87.624341 146.421835) + (xy 87.6336 146.419145) + (xy 87.652065 146.408225) + (xy 87.669805 146.399534) + (xy 87.689756 146.391635) + (xy 87.727129 146.364482) + (xy 87.737048 146.357967) + (xy 87.769977 146.338493) + (xy 87.769981 146.33849) + (xy 87.776807 146.334453) + (xy 87.791971 146.319289) + (xy 87.807005 146.306448) + (xy 87.817943 146.298501) + (xy 87.824357 146.293841) + (xy 87.853803 146.258247) + (xy 87.861792 146.249468) + (xy 89.147605 144.963655) + (xy 89.156385 144.955665) + (xy 89.156387 144.955663) + (xy 89.16308 144.951416) + (xy 89.174908 144.938821) + (xy 89.211604 144.899743) + (xy 89.214359 144.896901) + (xy 89.234927 144.876333) + (xy 89.237647 144.872826) + (xy 89.245353 144.863804) + (xy 89.271544 144.835913) + (xy 89.276972 144.830133) + (xy 89.280794 144.823181) + (xy 89.287303 144.811342) + (xy 89.298157 144.794818) + (xy 89.306445 144.784132) + (xy 89.311304 144.777868) + (xy 89.324686 144.746944) + (xy 89.329654 144.735465) + (xy 89.334876 144.724806) + (xy 89.342242 144.711407) + (xy 89.392587 144.661348) + (xy 89.462003 144.646454) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 107.598118 148.141002) + (xy 107.644611 148.194658) + (xy 107.655307 148.233829) + (xy 107.659878 148.277324) + (xy 107.665197 148.327927) + (xy 107.666458 148.339928) + (xy 107.725473 148.521556) + (xy 107.728776 148.527278) + (xy 107.728777 148.527279) + (xy 107.75005 148.564124) + (xy 107.82096 148.686944) + (xy 107.825378 148.691851) + (xy 107.825379 148.691852) + (xy 107.938178 148.817128) + (xy 107.948747 148.828866) + (xy 108.103248 148.941118) + (xy 108.109276 148.943802) + (xy 108.109278 148.943803) + (xy 108.268155 149.014539) + (xy 108.277712 149.018794) + (xy 108.339912 149.032015) + (xy 108.458056 149.057128) + (xy 108.458061 149.057128) + (xy 108.464513 149.0585) + (xy 108.655487 149.0585) + (xy 108.664303 149.056626) + (xy 108.665699 149.056733) + (xy 108.668511 149.056437) + (xy 108.668565 149.056951) + (xy 108.735093 149.062027) + (xy 108.791726 149.104843) + (xy 108.81622 149.17148) + (xy 108.8165 149.179872) + (xy 108.8165 149.398732) + (xy 108.827113 149.501019) + (xy 108.829295 149.507559) + (xy 108.878538 149.655156) + (xy 108.881244 149.663268) + (xy 108.885096 149.669492) + (xy 108.885096 149.669493) + (xy 108.938956 149.756529) + (xy 108.971248 149.808713) + (xy 108.97643 149.813886) + (xy 108.980977 149.819623) + (xy 108.97917 149.821055) + (xy 109.007902 149.873575) + (xy 109.002892 149.944395) + (xy 108.979501 149.980853) + (xy 108.980552 149.981683) + (xy 108.967002 149.99884) + (xy 108.884996 150.13188) + (xy 108.878849 150.145061) + (xy 108.829509 150.293814) + (xy 108.826642 150.30719) + (xy 108.817328 150.398097) + (xy 108.817 150.404514) + (xy 108.817 150.471613) + (xy 108.796998 150.539734) + (xy 108.743342 150.586227) + (xy 108.673068 150.596331) + (xy 108.616938 150.573548) + (xy 108.602095 150.562764) + (xy 108.596752 150.558882) + (xy 108.590724 150.556198) + (xy 108.590722 150.556197) + (xy 108.428319 150.483891) + (xy 108.428318 150.483891) + (xy 108.422288 150.481206) + (xy 108.328887 150.461353) + (xy 108.241944 150.442872) + (xy 108.241939 150.442872) + (xy 108.235487 150.4415) + (xy 108.21495 150.4415) + (xy 108.146829 150.421498) + (xy 108.125855 150.404595) + (xy 108.059884 150.338624) + (xy 108.025858 150.276312) + (xy 108.023621 150.259587) + (xy 108.0235 150.2596) + (xy 108.013238 150.160692) + (xy 108.013237 150.160688) + (xy 108.012526 150.153834) + (xy 108.00921 150.143893) + (xy 107.958868 149.993002) + (xy 107.95655 149.986054) + (xy 107.863478 149.835652) + (xy 107.818975 149.791226) + (xy 107.743483 149.715866) + (xy 107.738303 149.710695) + (xy 107.732072 149.706854) + (xy 107.593968 149.621725) + (xy 107.593966 149.621724) + (xy 107.587738 149.617885) + (xy 107.45926 149.575271) + (xy 107.426389 149.564368) + (xy 107.426387 149.564368) + (xy 107.419861 149.562203) + (xy 107.413025 149.561503) + (xy 107.413022 149.561502) + (xy 107.369969 149.557091) + (xy 107.3154 149.5515) + (xy 107.27995 149.5515) + (xy 107.211829 149.531498) + (xy 107.190855 149.514595) + (xy 106.733655 149.057395) + (xy 106.725665 149.048615) + (xy 106.725663 149.048613) + (xy 106.721416 149.04192) + (xy 106.693561 149.015762) + (xy 106.669743 148.993396) + (xy 106.666901 148.990641) + (xy 106.646333 148.970073) + (xy 106.642826 148.967353) + (xy 106.633804 148.959647) + (xy 106.616932 148.943803) + (xy 106.600133 148.928028) + (xy 106.593181 148.924206) + (xy 106.581342 148.917697) + (xy 106.564818 148.906843) + (xy 106.554135 148.898557) + (xy 106.554134 148.898556) + (xy 106.547868 148.893696) + (xy 106.540596 148.890549) + (xy 106.535613 148.887602) + (xy 106.487162 148.835707) + (xy 106.474458 148.765857) + (xy 106.501536 148.700226) + (xy 106.551537 148.662741) + (xy 106.569274 148.655394) + (xy 106.619268 148.634686) + (xy 106.741157 148.541157) + (xy 106.748243 148.531923) + (xy 106.796615 148.468882) + (xy 106.834686 148.419267) + (xy 106.885992 148.295405) + (xy 106.890321 148.284953) + (xy 106.893481 148.277324) + (xy 106.899638 148.230554) + (xy 106.92836 148.165627) + (xy 106.987625 148.126535) + (xy 107.02456 148.121) + (xy 107.529997 148.121) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 113.434029 149.47191) + (xy 113.486041 149.520234) + (xy 113.497577 149.545702) + (xy 113.525473 149.631556) + (xy 113.62096 149.796944) + (xy 113.625378 149.801851) + (xy 113.625379 149.801852) + (xy 113.739398 149.928483) + (xy 113.748747 149.938866) + (xy 113.814501 149.986639) + (xy 113.874535 150.030257) + (xy 113.917889 150.08648) + (xy 113.923964 150.157216) + (xy 113.890832 150.220007) + (xy 113.851722 150.2473) + (xy 113.809281 150.266195) + (xy 113.809274 150.266199) + (xy 113.803248 150.268882) + (xy 113.797907 150.272762) + (xy 113.797906 150.272763) + (xy 113.759002 150.301029) + (xy 113.648747 150.381134) + (xy 113.644326 150.386044) + (xy 113.644325 150.386045) + (xy 113.54653 150.494658) + (xy 113.52096 150.523056) + (xy 113.517659 150.528774) + (xy 113.513776 150.534118) + (xy 113.512586 150.533253) + (xy 113.466739 150.576969) + (xy 113.397026 150.590407) + (xy 113.331114 150.564021) + (xy 113.289931 150.50619) + (xy 113.283 150.464977) + (xy 113.283 150.404562) + (xy 113.282662 150.398038) + (xy 113.273106 150.305943) + (xy 113.270212 150.292544) + (xy 113.220619 150.143893) + (xy 113.214445 150.130714) + (xy 113.132212 149.997827) + (xy 113.118629 149.980689) + (xy 113.120559 149.979159) + (xy 113.092097 149.92712) + (xy 113.097113 149.856301) + (xy 113.120799 149.819383) + (xy 113.119843 149.818628) + (xy 113.124381 149.812882) + (xy 113.129552 149.807702) + (xy 113.137033 149.795566) + (xy 113.215462 149.668331) + (xy 113.215463 149.668329) + (xy 113.219302 149.662101) + (xy 113.258152 149.544972) + (xy 113.298583 149.486613) + (xy 113.364147 149.459376) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 129.446708 149.752118) + (xy 129.486207 149.811112) + (xy 129.492 149.848877) + (xy 129.492 150.349956) + (xy 129.471998 150.418077) + (xy 129.418342 150.46457) + (xy 129.348068 150.474674) + (xy 129.283488 150.44518) + (xy 129.258856 150.416259) + (xy 129.183925 150.295171) + (xy 129.183919 150.295164) + (xy 129.180071 150.288945) + (xy 129.07984 150.188889) + (xy 129.045762 150.126608) + (xy 129.050765 150.055788) + (xy 129.079686 150.010699) + (xy 129.175298 149.91492) + (xy 129.18431 149.903509) + (xy 129.25874 149.782761) + (xy 129.311512 149.735268) + (xy 129.381584 149.723844) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 127.644351 149.975768) + (xy 127.689432 150.004686) + (xy 127.695158 150.010402) + (xy 127.729237 150.072684) + (xy 127.724234 150.143504) + (xy 127.695322 150.188584) + (xy 127.692705 150.191206) + (xy 127.689121 150.194797) + (xy 127.626842 150.228882) + (xy 127.556022 150.223885) + (xy 127.510922 150.19496) + (xy 127.505195 150.189243) + (xy 127.471116 150.126961) + (xy 127.476119 150.056141) + (xy 127.505044 150.011048) + (xy 127.511247 150.004835) + (xy 127.573532 149.97076) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 116.202584 146.553502) + (xy 116.249077 146.607158) + (xy 116.259773 146.646328) + (xy 116.265459 146.700426) + (xy 116.266458 146.709928) + (xy 116.268498 146.716205) + (xy 116.268498 146.716207) + (xy 116.318428 146.869875) + (xy 116.319774 146.916975) + (xy 116.358525 146.949345) + (xy 116.36289 146.956363) + (xy 116.42096 147.056944) + (xy 116.425378 147.061851) + (xy 116.425379 147.061852) + (xy 116.540735 147.189968) + (xy 116.548747 147.198866) + (xy 116.604841 147.239621) + (xy 116.696365 147.306117) + (xy 116.703248 147.311118) + (xy 116.709276 147.313802) + (xy 116.709278 147.313803) + (xy 116.871681 147.386109) + (xy 116.877712 147.388794) + (xy 116.971113 147.408647) + (xy 117.058056 147.427128) + (xy 117.058061 147.427128) + (xy 117.064513 147.4285) + (xy 117.255487 147.4285) + (xy 117.261939 147.427128) + (xy 117.261944 147.427128) + (xy 117.348887 147.408647) + (xy 117.442288 147.388794) + (xy 117.448319 147.386109) + (xy 117.610722 147.313803) + (xy 117.610724 147.313802) + (xy 117.616752 147.311118) + (xy 117.623636 147.306117) + (xy 117.715159 147.239621) + (xy 117.771253 147.198866) + (xy 117.779265 147.189968) + (xy 117.894621 147.061852) + (xy 117.894622 147.061851) + (xy 117.89904 147.056944) + (xy 117.973052 146.928751) + (xy 117.991223 146.897279) + (xy 117.991224 146.897278) + (xy 117.994527 146.891556) + (xy 118.036437 146.762571) + (xy 118.076511 146.703965) + (xy 118.141907 146.676328) + (xy 118.211864 146.688435) + (xy 118.245365 146.712412) + (xy 118.794129 147.261176) + (xy 118.828155 147.323488) + (xy 118.82309 147.394303) + (xy 118.786864 147.446082) + (xy 118.633792 147.576818) + (xy 118.633787 147.576823) (xy 118.630031 147.580031) + (xy 118.626823 147.583787) + (xy 118.619433 147.59244) (xy 118.475824 147.760584) (xy 118.473245 147.764792) (xy 118.473241 147.764798) - (xy 118.381158 147.915064) + (xy 118.371967 147.930062) (xy 118.35176 147.963037) (xy 118.349867 147.967607) (xy 118.349865 147.967611) - (xy 118.285528 148.122936) + (xy 118.27064 148.15888) (xy 118.260895 148.182406) - (xy 118.246708 148.2415) - (xy 118.208074 148.402422) + (xy 118.246871 148.24082) + (xy 118.208072 148.402432) (xy 118.205465 148.413289) - (xy 118.186835 148.65) - (xy 110.631259 148.65) - (xy 104.822677 142.841417) - (xy 104.814687 142.832637) - (xy 104.814685 142.832635) - (xy 104.810438 142.825942) - (xy 104.800929 142.817012) - (xy 104.758765 142.777418) - (xy 104.755923 142.774663) - (xy 104.735355 142.754095) - (xy 104.731848 142.751375) - (xy 104.722826 142.743669) - (xy 104.694935 142.717478) - (xy 104.689155 142.71205) - (xy 104.682203 142.708228) - (xy 104.670364 142.701719) - (xy 104.65384 142.690865) - (xy 104.643154 142.682577) - (xy 104.63689 142.677718) - (xy 104.629618 142.674571) - (xy 104.629616 142.67457) - (xy 104.594487 142.659368) - (xy 104.583827 142.654146) - (xy 104.550306 142.635717) - (xy 104.550304 142.635716) - (xy 104.543359 142.631898) - (xy 104.522581 142.626563) - (xy 104.503891 142.620164) - (xy 104.484198 142.611642) - (xy 104.438574 142.604416) - (xy 104.426951 142.602009) - (xy 104.39895 142.59482) - (xy 104.38221 142.590522) - (xy 104.360763 142.590522) - (xy 104.341053 142.588971) - (xy 104.327699 142.586856) - (xy 104.31987 142.585616) - (xy 104.273881 142.589963) - (xy 104.262026 142.590522) - (xy 98.92715 142.590522) - (xy 98.859029 142.57052) - (xy 98.833514 142.548832) - (xy 98.827752 142.542432) - (xy 98.715085 142.417303) - (xy 98.560584 142.305051) - (xy 98.554557 142.302368) - (xy 98.554549 142.302363) - (xy 98.548356 142.299606) - (xy 98.49426 142.253625) - (xy 98.473612 142.185698) - (xy 98.492965 142.11739) - (xy 98.546176 142.070389) - (xy 98.599606 142.0585) - (xy 106.569776 142.0585) - (xy 106.637897 142.078502) - (xy 106.643834 142.082562) - (xy 106.646277 142.084337) - (xy 106.77271 142.176196) - (xy 106.793248 142.191118) - (xy 106.799276 142.193802) - (xy 106.799278 142.193803) - (xy 106.961681 142.266109) - (xy 106.967712 142.268794) - (xy 107.050725 142.286439) - (xy 107.148056 142.307128) - (xy 107.148061 142.307128) - (xy 107.154513 142.3085) - (xy 107.345487 142.3085) - (xy 107.351939 142.307128) - (xy 107.351944 142.307128) - (xy 107.449275 142.286439) - (xy 107.532288 142.268794) - (xy 107.538319 142.266109) - (xy 107.700722 142.193803) - (xy 107.700724 142.193802) - (xy 107.706752 142.191118) - (xy 107.739714 142.16717) - (xy 107.772843 142.1431) - (xy 107.861253 142.078866) - (xy 107.98904 141.936944) - (xy 108.084527 141.771556) - (xy 108.143542 141.589928) - (xy 108.156551 141.466159) - (xy 108.162814 141.406565) - (xy 108.163504 141.4) - (xy 108.152298 141.29338) - (xy 108.144232 141.216635) - (xy 108.144232 141.216633) - (xy 108.143542 141.210072) - (xy 108.084527 141.028444) - (xy 107.98904 140.863056) - (xy 107.958398 140.829024) - (xy 107.865675 140.726045) - (xy 107.865674 140.726044) - (xy 107.861253 140.721134) - (xy 107.706752 140.608882) - (xy 107.700724 140.606198) - (xy 107.700722 140.606197) - (xy 107.538319 140.533891) - (xy 107.538318 140.533891) - (xy 107.532288 140.531206) - (xy 107.438887 140.511353) - (xy 107.351944 140.492872) - (xy 107.351939 140.492872) - (xy 107.345487 140.4915) - (xy 107.154513 140.4915) - (xy 107.148061 140.492872) - (xy 107.148056 140.492872) - (xy 107.061113 140.511353) - (xy 106.967712 140.531206) - (xy 106.961682 140.533891) - (xy 106.961681 140.533891) - (xy 106.799278 140.606197) - (xy 106.799276 140.606198) - (xy 106.793248 140.608882) - (xy 106.644092 140.717251) - (xy 106.643837 140.717436) - (xy 106.576969 140.741294) - (xy 106.569776 140.7415) - (xy 99.64812 140.7415) - (xy 99.579999 140.721498) - (xy 99.533506 140.667842) - (xy 99.523402 140.597568) - (xy 99.552896 140.532988) - (xy 99.612622 140.494604) - (xy 99.621923 140.492253) - (xy 99.64681 140.486963) - (xy 99.732288 140.468794) - (xy 99.738319 140.466109) - (xy 99.900722 140.393803) - (xy 99.900724 140.393802) - (xy 99.906752 140.391118) - (xy 100.061253 140.278866) - (xy 100.18904 140.136944) - (xy 100.284527 139.971556) - (xy 100.343542 139.789928) - (xy 100.344346 139.782285) - (xy 100.362814 139.606565) - (xy 100.363504 139.6) - (xy 100.343542 139.410072) - (xy 100.284527 139.228444) - (xy 100.26967 139.20271) - (xy 100.237794 139.1475) - (xy 100.221056 139.078505) - (xy 100.244276 139.011413) - (xy 100.300084 138.967526) - (xy 100.346913 138.9585) - (xy 115.474072 138.9585) - (xy 115.542193 138.978502) - (xy 115.563167 138.995405) - (xy 115.744167 139.176405) - (xy 115.778193 139.238717) - (xy 115.773128 139.309532) - (xy 115.730581 139.366368) - (xy 115.664061 139.391179) - (xy 115.655072 139.3915) - (xy 115.151866 139.3915) - (xy 115.089684 139.398255) - (xy 114.953295 139.449385) - (xy 114.836739 139.536739) - (xy 114.749385 139.653295) - (xy 114.698255 139.789684) - (xy 114.6915 139.851866) - (xy 114.6915 142.448134) - (xy 114.698255 142.510316) - (xy 114.749385 142.646705) - (xy 114.836739 142.763261) - (xy 114.953295 142.850615) - (xy 115.089684 142.901745) - (xy 115.151866 142.9085) - (xy 116.748134 142.9085) - (xy 116.810316 142.901745) - (xy 116.946705 142.850615) - (xy 117.063261 142.763261) - (xy 117.150615 142.646705) - (xy 117.201745 142.510316) - (xy 117.2085 142.448134) - (xy 117.2085 140.943638) - (xy 117.228502 140.875517) - (xy 117.282158 140.829024) - (xy 117.352432 140.81892) - (xy 117.411648 140.846267) - (xy 117.412688 140.844926) - (xy 117.412689 140.844927) - (xy 117.414417 140.846267) - (xy 117.416192 140.847644) - (xy 117.425217 140.855352) - (xy 117.458889 140.886972) - (xy 117.46584 140.890793) - (xy 117.465841 140.890794) - (xy 117.47768 140.897303) - (xy 117.494204 140.908157) - (xy 117.498516 140.911501) - (xy 117.511154 140.921304) - (xy 117.518426 140.924451) - (xy 117.518428 140.924452) - (xy 117.553557 140.939654) - (xy 117.564217 140.944876) - (xy 117.59419 140.961354) - (xy 117.604685 140.967124) - (xy 117.625463 140.972459) - (xy 117.644153 140.978858) - (xy 117.663846 140.98738) - (xy 117.698585 140.992882) - (xy 117.70947 140.994606) - (xy 117.721093 140.997013) - (xy 117.745776 141.00335) - (xy 117.765834 141.0085) - (xy 117.787281 141.0085) - (xy 117.806991 141.010051) - (xy 117.828174 141.013406) - (xy 117.874163 141.009059) - (xy 117.886018 141.0085) - (xy 123.177944 141.0085) - (xy 123.1898 141.009059) - (xy 123.189803 141.009059) - (xy 123.197537 141.010788) - (xy 123.268369 141.008562) - (xy 123.272327 141.0085) - (xy 123.301432 141.0085) - (xy 123.305832 141.007944) - (xy 123.317664 141.007012) - (xy 123.363831 141.005562) - (xy 123.384421 140.99958) - (xy 123.403782 140.99557) - (xy 123.411416 140.994606) - (xy 123.417204 140.993875) - (xy 123.417205 140.993875) - (xy 123.425064 140.992882) - (xy 123.432429 140.989966) - (xy 123.432433 140.989965) - (xy 123.468021 140.975874) - (xy 123.479231 140.972035) - (xy 123.5236 140.959145) - (xy 123.542065 140.948225) - (xy 123.559805 140.939534) - (xy 123.579756 140.931635) - (xy 123.617129 140.904482) - (xy 123.627048 140.897967) - (xy 123.659977 140.878493) - (xy 123.659981 140.87849) - (xy 123.666807 140.874453) - (xy 123.681971 140.859289) - (xy 123.697005 140.846448) - (xy 123.698278 140.845523) - (xy 123.714357 140.833841) - (xy 123.743803 140.798247) - (xy 123.751792 140.789468) - (xy 125.377505 139.163755) - (xy 125.439817 139.129729) - (xy 125.507933 139.133822) - (xy 125.646271 139.181861) - (xy 125.652206 139.182722) - (xy 125.652208 139.182722) - (xy 125.849664 139.211352) - (xy 125.849667 139.211352) - (xy 125.855604 139.212213) - (xy 126.066899 139.202433) - (xy 126.227389 139.163755) - (xy 126.266701 139.154281) - (xy 126.266703 139.15428) - (xy 126.272534 139.152875) - (xy 126.277992 139.150393) - (xy 126.277996 139.150392) - (xy 126.436101 139.078505) - (xy 126.465087 139.065326) - (xy 126.637611 138.942946) - (xy 126.783881 138.79015) - (xy 126.89862 138.612452) - (xy 126.962338 138.454346) - (xy 126.975442 138.421832) - (xy 126.975443 138.421829) - (xy 126.977686 138.416263) - (xy 127.018228 138.208663) - (xy 127.0185 138.203101) - (xy 127.0185 137.247154) - (xy 127.003452 137.089434) - (xy 126.943908 136.886466) - (xy 126.918274 136.836695) - (xy 126.849804 136.703751) - (xy 126.849802 136.703748) - (xy 126.847058 136.69842) - (xy 126.716396 136.53208) - (xy 126.711865 136.528148) - (xy 126.711862 136.528145) - (xy 126.561167 136.397379) - (xy 126.556637 136.393448) - (xy 126.551451 136.390448) - (xy 126.551447 136.390445) - (xy 126.378742 136.290533) - (xy 126.373546 136.287527) - (xy 126.173729 136.218139) - (xy 126.167794 136.217278) - (xy 126.167792 136.217278) - (xy 125.970336 136.188648) - (xy 125.970333 136.188648) - (xy 125.964396 136.187787) - (xy 125.753101 136.197567) - (xy 125.640466 136.224712) - (xy 125.553299 136.245719) - (xy 125.553297 136.24572) - (xy 125.547466 136.247125) - (xy 125.542008 136.249607) - (xy 125.542004 136.249608) - (xy 125.45099 136.29099) - (xy 125.354913 136.334674) - (xy 125.182389 136.457054) - (xy 125.036119 136.60985) - (xy 124.92138 136.787548) - (xy 124.905865 136.826045) - (xy 124.845577 136.975641) - (xy 124.842314 136.983737) - (xy 124.801772 137.191337) - (xy 124.8015 137.196899) - (xy 124.8015 137.82505) - (xy 124.781498 137.893171) - (xy 124.764595 137.914145) - (xy 124.693595 137.985145) - (xy 124.631283 138.019171) - (xy 124.560468 138.014106) - (xy 124.503632 137.971559) - (xy 124.478821 137.905039) - (xy 124.4785 137.89605) - (xy 124.4785 137.247154) - (xy 124.463452 137.089434) - (xy 124.403908 136.886466) - (xy 124.378274 136.836695) - (xy 124.309804 136.703751) - (xy 124.309802 136.703748) - (xy 124.307058 136.69842) - (xy 124.176396 136.53208) - (xy 124.171865 136.528148) - (xy 124.171862 136.528145) - (xy 124.021167 136.397379) - (xy 124.016637 136.393448) - (xy 124.011451 136.390448) - (xy 124.011447 136.390445) - (xy 123.838742 136.290533) - (xy 123.833546 136.287527) - (xy 123.633729 136.218139) - (xy 123.627794 136.217278) - (xy 123.627792 136.217278) - (xy 123.430336 136.188648) - (xy 123.430333 136.188648) - (xy 123.424396 136.187787) - (xy 123.213101 136.197567) - (xy 123.100466 136.224712) - (xy 123.013299 136.245719) - (xy 123.013297 136.24572) - (xy 123.007466 136.247125) - (xy 123.002008 136.249607) - (xy 123.002004 136.249608) - (xy 122.91099 136.29099) - (xy 122.814913 136.334674) - (xy 122.642389 136.457054) - (xy 122.496119 136.60985) - (xy 122.38138 136.787548) - (xy 122.365865 136.826045) - (xy 122.305577 136.975641) - (xy 122.302314 136.983737) - (xy 122.261772 137.191337) - (xy 122.2615 137.196899) - (xy 122.2615 138.152846) - (xy 122.261785 138.15583) - (xy 122.26931 138.234703) - (xy 122.255869 138.304415) - (xy 122.232975 138.335766) - (xy 122.127094 138.441646) - (xy 122.064782 138.475671) - (xy 121.993966 138.470605) - (xy 121.93713 138.428059) - (xy 121.91232 138.361538) - (xy 121.914335 138.3284) - (xy 121.936857 138.213072) - (xy 121.937934 138.204209) - (xy 121.938 138.2015) - (xy 121.938 137.972115) - (xy 121.933525 137.956876) - (xy 121.932135 137.955671) - (xy 121.924452 137.954) - (xy 119.740115 137.954) - (xy 119.724876 137.958475) - (xy 119.723671 137.959865) - (xy 119.722 137.967548) - (xy 119.722 138.149832) - (xy 119.722285 138.155808) - (xy 119.736471 138.304494) - (xy 119.73873 138.316228) - (xy 119.794872 138.507599) - (xy 119.799302 138.518675) - (xy 119.890619 138.695978) - (xy 119.897069 138.706024) - (xy 120.000476 138.837667) - (xy 120.026826 138.903592) - (xy 120.013351 138.973299) - (xy 119.96433 139.024654) - (xy 119.90139 139.0415) - (xy 119.218312 139.0415) - (xy 119.150191 139.021498) - (xy 119.103698 138.967842) - (xy 119.093594 138.897568) - (xy 119.127294 138.828369) - (xy 119.159736 138.79448) - (xy 119.163881 138.79015) - (xy 119.27862 138.612452) - (xy 119.342338 138.454346) - (xy 119.355442 138.421832) - (xy 119.355443 138.421829) - (xy 119.357686 138.416263) - (xy 119.398228 138.208663) - (xy 119.3985 138.203101) - (xy 119.3985 137.427885) - (xy 119.722 137.427885) - (xy 119.726475 137.443124) - (xy 119.727865 137.444329) - (xy 119.735548 137.446) - (xy 120.557885 137.446) - (xy 120.573124 137.441525) - (xy 120.574329 137.440135) - (xy 120.576 137.432452) - (xy 120.576 137.427885) - (xy 121.084 137.427885) - (xy 121.088475 137.443124) - (xy 121.089865 137.444329) - (xy 121.097548 137.446) - (xy 121.919885 137.446) - (xy 121.935124 137.441525) - (xy 121.936329 137.440135) - (xy 121.938 137.432452) - (xy 121.938 137.250168) - (xy 121.937715 137.244192) - (xy 121.923529 137.095506) - (xy 121.92127 137.083772) - (xy 121.865128 136.892401) - (xy 121.860698 136.881325) - (xy 121.769381 136.704022) - (xy 121.762931 136.693976) - (xy 121.639738 136.537143) - (xy 121.631501 136.528494) - (xy 121.480877 136.397788) - (xy 121.471153 136.390853) - (xy 121.298533 136.29099) - (xy 121.287669 136.286016) - (xy 121.099273 136.220593) - (xy 121.098284 136.220352) - (xy 121.087992 136.22182) - (xy 121.084 136.235385) - (xy 121.084 137.427885) - (xy 120.576 137.427885) - (xy 120.576 136.239598) - (xy 120.572027 136.226067) - (xy 120.562601 136.224712) - (xy 120.473463 136.246194) - (xy 120.462168 136.250083) - (xy 120.280618 136.332629) - (xy 120.270276 136.338576) - (xy 120.107603 136.453968) - (xy 120.098575 136.461761) - (xy 119.960658 136.605831) - (xy 119.953262 136.615196) - (xy 119.845079 136.782741) - (xy 119.839583 136.793345) - (xy 119.765039 136.978312) - (xy 119.761645 136.98977) - (xy 119.723143 137.186928) - (xy 119.722066 137.195791) - (xy 119.722 137.1985) - (xy 119.722 137.427885) - (xy 119.3985 137.427885) - (xy 119.3985 137.247154) - (xy 119.383452 137.089434) - (xy 119.323908 136.886466) - (xy 119.298274 136.836695) - (xy 119.229804 136.703751) - (xy 119.229802 136.703748) - (xy 119.227058 136.69842) - (xy 119.096396 136.53208) - (xy 119.091865 136.528148) - (xy 119.091862 136.528145) - (xy 118.941167 136.397379) - (xy 118.936637 136.393448) - (xy 118.931451 136.390448) - (xy 118.931447 136.390445) - (xy 118.758742 136.290533) - (xy 118.753546 136.287527) - (xy 118.553729 136.218139) - (xy 118.547794 136.217278) - (xy 118.547792 136.217278) - (xy 118.350336 136.188648) - (xy 118.350333 136.188648) - (xy 118.344396 136.187787) - (xy 118.133101 136.197567) - (xy 118.020466 136.224712) - (xy 117.933299 136.245719) - (xy 117.933297 136.24572) - (xy 117.927466 136.247125) - (xy 117.922008 136.249607) - (xy 117.922004 136.249608) - (xy 117.83099 136.29099) - (xy 117.734913 136.334674) - (xy 117.562389 136.457054) - (xy 117.416119 136.60985) - (xy 117.30138 136.787548) - (xy 117.285865 136.826045) - (xy 117.225577 136.975641) - (xy 117.222314 136.983737) - (xy 117.181772 137.191337) - (xy 117.1815 137.196899) - (xy 117.1815 137.54605) - (xy 117.161498 137.614171) - (xy 117.107842 137.660664) - (xy 117.037568 137.670768) - (xy 116.972988 137.641274) - (xy 116.966405 137.635145) - (xy 116.373655 137.042395) - (xy 116.365665 137.033615) - (xy 116.365663 137.033613) - (xy 116.361416 137.02692) - (xy 116.309742 136.978395) - (xy 116.306901 136.975641) - (xy 116.286333 136.955073) - (xy 116.282826 136.952353) - (xy 116.273804 136.944647) - (xy 116.245913 136.918456) - (xy 116.240133 136.913028) - (xy 116.233181 136.909206) - (xy 116.221342 136.902697) - (xy 116.204818 136.891843) - (xy 116.194132 136.883555) - (xy 116.187868 136.878696) - (xy 116.180596 136.875549) - (xy 116.180594 136.875548) - (xy 116.145465 136.860346) - (xy 116.134805 136.855124) - (xy 116.101284 136.836695) - (xy 116.101282 136.836694) - (xy 116.094337 136.832876) - (xy 116.073559 136.827541) - (xy 116.054869 136.821142) - (xy 116.035176 136.81262) - (xy 115.989552 136.805394) - (xy 115.977929 136.802987) - (xy 115.949928 136.795798) - (xy 115.933188 136.7915) - (xy 115.911741 136.7915) - (xy 115.892031 136.789949) - (xy 115.878677 136.787834) - (xy 115.870848 136.786594) - (xy 115.824859 136.790941) - (xy 115.813004 136.7915) - (xy 93.580224 136.7915) - (xy 93.512103 136.771498) - (xy 93.506163 136.767436) - (xy 93.362094 136.662763) - (xy 93.362093 136.662762) - (xy 93.356752 136.658882) - (xy 93.350724 136.656198) - (xy 93.350722 136.656197) - (xy 93.188319 136.583891) - (xy 93.188318 136.583891) - (xy 93.182288 136.581206) - (xy 93.088888 136.561353) - (xy 93.001944 136.542872) - (xy 93.001939 136.542872) - (xy 92.995487 136.5415) - (xy 92.804513 136.5415) - (xy 92.798061 136.542872) - (xy 92.798056 136.542872) - (xy 92.711112 136.561353) - (xy 92.617712 136.581206) - (xy 92.611682 136.583891) - (xy 92.611681 136.583891) - (xy 92.449278 136.656197) - (xy 92.449276 136.656198) - (xy 92.443248 136.658882) - (xy 92.288747 136.771134) - (xy 92.284332 136.776037) - (xy 92.27942 136.78046) - (xy 92.277838 136.778703) - (xy 92.226591 136.810283) - (xy 92.155607 136.808939) - (xy 92.119327 136.790673) - (xy 92.11542 136.787834) - (xy 92.006752 136.708882) - (xy 92.000724 136.706198) - (xy 92.000722 136.706197) - (xy 91.838319 136.633891) - (xy 91.838318 136.633891) - (xy 91.832288 136.631206) - (xy 91.738887 136.611353) - (xy 91.651944 136.592872) - (xy 91.651939 136.592872) - (xy 91.645487 136.5915) - (xy 91.454513 136.5915) - (xy 91.448061 136.592872) - (xy 91.448056 136.592872) - (xy 91.361113 136.611353) - (xy 91.267712 136.631206) - (xy 91.261682 136.633891) - (xy 91.261681 136.633891) - (xy 91.099278 136.706197) - (xy 91.099276 136.706198) - (xy 91.093248 136.708882) - (xy 90.938747 136.821134) - (xy 90.934326 136.826044) - (xy 90.934325 136.826045) - (xy 90.81562 136.957881) - (xy 90.81096 136.963056) - (xy 90.715473 137.128444) - (xy 90.656458 137.310072) - (xy 90.655768 137.316633) - (xy 90.655768 137.316635) - (xy 90.643595 137.432452) - (xy 90.636496 137.5) - (xy 90.656458 137.689928) - (xy 90.715473 137.871556) - (xy 90.81096 138.036944) - (xy 90.815378 138.041851) - (xy 90.815379 138.041852) - (xy 90.918005 138.15583) - (xy 90.938747 138.178866) - (xy 91.093248 138.291118) - (xy 91.099276 138.293802) - (xy 91.099278 138.293803) - (xy 91.254224 138.362789) - (xy 91.267712 138.368794) - (xy 91.361113 138.388647) - (xy 91.448056 138.407128) - (xy 91.448061 138.407128) - (xy 91.454513 138.4085) - (xy 91.47505 138.4085) - (xy 91.543171 138.428502) - (xy 91.564145 138.445405) - (xy 91.826345 138.707605) - (xy 91.834335 138.716385) - (xy 91.838584 138.72308) - (xy 91.844363 138.728507) - (xy 91.849416 138.734615) - (xy 91.84687 138.736721) - (xy 91.875156 138.784862) - (xy 91.872319 138.855801) - (xy 91.831579 138.913946) - (xy 91.765871 138.940834) - (xy 91.752938 138.9415) - (xy 88.580224 138.9415) - (xy 88.512103 138.921498) - (xy 88.506163 138.917436) - (xy 88.505909 138.917251) - (xy 88.396371 138.837667) - (xy 88.362094 138.812763) - (xy 88.362093 138.812762) - (xy 88.356752 138.808882) - (xy 88.350724 138.806198) - (xy 88.350722 138.806197) - (xy 88.188319 138.733891) - (xy 88.188318 138.733891) - (xy 88.182288 138.731206) - (xy 88.063817 138.706024) - (xy 88.001944 138.692872) - (xy 88.001939 138.692872) - (xy 87.995487 138.6915) - (xy 87.804513 138.6915) - (xy 87.798061 138.692872) - (xy 87.798056 138.692872) - (xy 87.736183 138.706024) - (xy 87.617712 138.731206) - (xy 87.611682 138.733891) - (xy 87.611681 138.733891) - (xy 87.449278 138.806197) - (xy 87.449276 138.806198) - (xy 87.443248 138.808882) - (xy 87.437907 138.812762) - (xy 87.437906 138.812763) - (xy 87.403629 138.837667) - (xy 87.288747 138.921134) - (xy 87.284326 138.926044) - (xy 87.284325 138.926045) - (xy 87.20746 139.011413) - (xy 87.16096 139.063056) - (xy 87.129463 139.117611) - (xy 87.080331 139.20271) - (xy 87.065473 139.228444) - (xy 87.006458 139.410072) - (xy 86.986496 139.6) - (xy 86.987186 139.606565) - (xy 87.005655 139.782285) - (xy 87.006458 139.789928) - (xy 87.065473 139.971556) - (xy 87.16096 140.136944) - (xy 87.288747 140.278866) - (xy 87.443248 140.391118) - (xy 87.449276 140.393802) - (xy 87.449278 140.393803) - (xy 87.611681 140.466109) - (xy 87.617712 140.468794) - (xy 87.70319 140.486963) - (xy 87.798056 140.507128) - (xy 87.798061 140.507128) - (xy 87.804513 140.5085) - (xy 87.995487 140.5085) - (xy 88.001939 140.507128) - (xy 88.001944 140.507128) - (xy 88.09681 140.486963) - (xy 88.182288 140.468794) - (xy 88.188319 140.466109) - (xy 88.350722 140.393803) - (xy 88.350724 140.393802) - (xy 88.356752 140.391118) - (xy 88.506163 140.282564) - (xy 88.573031 140.258706) - (xy 88.580224 140.2585) - (xy 98.769776 140.2585) - (xy 98.837897 140.278502) - (xy 98.843834 140.282562) - (xy 98.993248 140.391118) - (xy 98.999276 140.393802) - (xy 98.999278 140.393803) - (xy 99.161681 140.466109) - (xy 99.167712 140.468794) - (xy 99.25319 140.486963) - (xy 99.278077 140.492253) - (xy 99.340551 140.525982) - (xy 99.374872 140.588131) - (xy 99.370144 140.65897) - (xy 99.327868 140.716008) - (xy 99.261467 140.741135) - (xy 99.25188 140.7415) - (xy 96.432056 140.7415) - (xy 96.4202 140.740941) - (xy 96.420197 140.740941) - (xy 96.412463 140.739212) - (xy 96.346213 140.741294) - (xy 96.341631 140.741438) - (xy 96.337673 140.7415) - (xy 96.308568 140.7415) - (xy 96.304168 140.742056) - (xy 96.292336 140.742988) - (xy 96.246169 140.744438) - (xy 96.225579 140.75042) - (xy 96.206218 140.75443) - (xy 96.19923 140.755312) - (xy 96.192796 140.756125) - (xy 96.192795 140.756125) - (xy 96.184936 140.757118) - (xy 96.177571 140.760034) - (xy 96.177567 140.760035) - (xy 96.141979 140.774126) - (xy 96.130769 140.777965) - (xy 96.0864 140.790855) - (xy 96.067943 140.801771) - (xy 96.050193 140.810466) - (xy 96.030244 140.818365) - (xy 96.023833 140.823023) - (xy 96.023831 140.823024) - (xy 95.992864 140.845523) - (xy 95.982946 140.852038) - (xy 95.943193 140.875548) - (xy 95.928032 140.890709) - (xy 95.913 140.903548) - (xy 95.895643 140.916159) - (xy 95.89059 140.922267) - (xy 95.866194 140.951757) - (xy 95.858204 140.960537) - (xy 94.742396 142.076345) - (xy 94.733613 142.084337) - (xy 94.72692 142.088584) - (xy 94.721494 142.094362) - (xy 94.678395 142.140258) - (xy 94.67564 142.1431) - (xy 94.655073 142.163667) - (xy 94.652356 142.16717) - (xy 94.644648 142.176195) - (xy 94.613028 142.209867) - (xy 94.609207 142.216818) - (xy 94.609206 142.216819) - (xy 94.602697 142.228658) - (xy 94.591843 142.245182) - (xy 94.585295 142.253625) - (xy 94.578696 142.262132) - (xy 94.575549 142.269404) - (xy 94.575548 142.269406) - (xy 94.560346 142.304535) - (xy 94.555124 142.315195) - (xy 94.532876 142.355663) - (xy 94.527541 142.376441) - (xy 94.521142 142.395131) - (xy 94.51262 142.414824) - (xy 94.51138 142.422655) - (xy 94.505394 142.460448) - (xy 94.502986 142.472072) - (xy 94.491908 142.515218) - (xy 94.455594 142.576224) - (xy 94.392062 142.607913) - (xy 94.369867 142.609883) - (xy 94.21442 142.609883) - (xy 94.207965 142.611255) - (xy 94.207956 142.611256) - (xy 94.135103 142.626742) - (xy 94.064312 142.621341) - (xy 94.007679 142.578525) - (xy 93.989072 142.542432) - (xy 93.986569 142.534729) - (xy 93.984527 142.528444) - (xy 93.88904 142.363056) - (xy 93.879164 142.352087) - (xy 93.765675 142.226045) - (xy 93.765674 142.226044) - (xy 93.761253 142.221134) - (xy 93.606752 142.108882) - (xy 93.600724 142.106198) - (xy 93.600722 142.106197) - (xy 93.438319 142.033891) - (xy 93.438318 142.033891) - (xy 93.432288 142.031206) - (xy 93.338888 142.011353) - (xy 93.251944 141.992872) - (xy 93.251939 141.992872) - (xy 93.245487 141.9915) - (xy 93.054513 141.9915) - (xy 93.048061 141.992872) - (xy 93.048056 141.992872) - (xy 92.961112 142.011353) - (xy 92.867712 142.031206) - (xy 92.861682 142.033891) - (xy 92.861681 142.033891) - (xy 92.699278 142.106197) - (xy 92.699276 142.106198) - (xy 92.693248 142.108882) - (xy 92.544092 142.217251) - (xy 92.543837 142.217436) - (xy 92.476969 142.241294) - (xy 92.469776 142.2415) - (xy 82.69395 142.2415) - (xy 82.625829 142.221498) - (xy 82.579336 142.167842) - (xy 82.569232 142.097568) - (xy 82.598726 142.032988) - (xy 82.604855 142.026405) - (xy 88.635855 135.995405) - (xy 88.698167 135.961379) - (xy 88.72495 135.9585) - (xy 90.969776 135.9585) - (xy 91.037897 135.978502) - (xy 91.043834 135.982562) - (xy 91.193248 136.091118) - (xy 91.199276 136.093802) - (xy 91.199278 136.093803) - (xy 91.361681 136.166109) - (xy 91.367712 136.168794) - (xy 91.457067 136.187787) - (xy 91.548056 136.207128) - (xy 91.548061 136.207128) - (xy 91.554513 136.2085) - (xy 91.745487 136.2085) - (xy 91.751939 136.207128) - (xy 91.751944 136.207128) - (xy 91.842933 136.187787) - (xy 91.932288 136.168794) - (xy 91.938319 136.166109) - (xy 92.100722 136.093803) - (xy 92.100724 136.093802) - (xy 92.106752 136.091118) - (xy 92.256163 135.982564) - (xy 92.323031 135.958706) - (xy 92.330224 135.9585) - (xy 97.447944 135.9585) - (xy 97.4598 135.959059) - (xy 97.459803 135.959059) - (xy 97.467537 135.960788) - (xy 97.538369 135.958562) - (xy 97.542327 135.9585) - (xy 97.571432 135.9585) - (xy 97.575832 135.957944) - (xy 97.587664 135.957012) - (xy 97.633831 135.955562) - (xy 97.654421 135.94958) - (xy 97.673782 135.94557) - (xy 97.68077 135.944688) - (xy 97.687204 135.943875) - (xy 97.687205 135.943875) - (xy 97.695064 135.942882) - (xy 97.702429 135.939966) - (xy 97.702433 135.939965) - (xy 97.738021 135.925874) - (xy 97.749231 135.922035) - (xy 97.7936 135.909145) - (xy 97.812065 135.898225) - (xy 97.829805 135.889534) - (xy 97.849756 135.881635) - (xy 97.887129 135.854482) - (xy 97.897048 135.847967) - (xy 97.929977 135.828493) - (xy 97.929981 135.82849) - (xy 97.936807 135.824453) - (xy 97.951971 135.809289) - (xy 97.967005 135.796448) - (xy 97.977943 135.788501) - (xy 97.984357 135.783841) - (xy 98.013803 135.748247) - (xy 98.021792 135.739468) - (xy 98.480663 135.280597) - (xy 98.542975 135.246571) - (xy 98.602374 135.247987) - (xy 98.613537 135.250978) - (xy 98.835 135.270353) - (xy 99.056463 135.250978) - (xy 99.200051 135.212503) - (xy 99.265886 135.194863) - (xy 99.265888 135.194862) - (xy 99.271196 135.19344) - (xy 99.287061 135.186042) - (xy 99.46769 135.101814) - (xy 99.467695 135.101811) - (xy 99.472677 135.099488) - (xy 99.598936 135.01108) - (xy 99.65027 134.975136) - (xy 99.650273 134.975134) - (xy 99.654781 134.971977) - (xy 99.811977 134.814781) - (xy 99.816003 134.809032) - (xy 99.936331 134.637185) - (xy 99.936332 134.637183) - (xy 99.939488 134.632676) - (xy 99.941811 134.627694) - (xy 99.941814 134.627689) - (xy 99.990805 134.522627) - (xy 100.037723 134.469342) - (xy 100.106 134.449881) - (xy 100.17396 134.470423) - (xy 100.219195 134.522627) - (xy 100.268186 134.627689) - (xy 100.268189 134.627694) - (xy 100.270512 134.632676) - (xy 100.273668 134.637183) - (xy 100.273669 134.637185) - (xy 100.393998 134.809032) - (xy 100.398023 134.814781) - (xy 100.555219 134.971977) - (xy 100.559727 134.975134) - (xy 100.55973 134.975136) - (xy 100.611064 135.01108) - (xy 100.737323 135.099488) - (xy 100.742305 135.101811) - (xy 100.74231 135.101814) - (xy 100.922939 135.186042) - (xy 100.938804 135.19344) - (xy 100.944112 135.194862) - (xy 100.944114 135.194863) - (xy 101.009949 135.212503) - (xy 101.153537 135.250978) - (xy 101.375 135.270353) - (xy 101.596463 135.250978) - (xy 101.740051 135.212503) - (xy 101.805886 135.194863) - (xy 101.805888 135.194862) - (xy 101.811196 135.19344) - (xy 101.827061 135.186042) - (xy 102.00769 135.101814) - (xy 102.007695 135.101811) - (xy 102.012677 135.099488) - (xy 102.138936 135.01108) - (xy 102.19027 134.975136) - (xy 102.190273 134.975134) - (xy 102.194781 134.971977) - (xy 102.351977 134.814781) - (xy 102.356003 134.809032) - (xy 102.476331 134.637185) - (xy 102.476332 134.637183) - (xy 102.479488 134.632676) - (xy 102.481811 134.627694) - (xy 102.481814 134.627689) - (xy 102.530805 134.522627) - (xy 102.577723 134.469342) - (xy 102.646 134.449881) - (xy 102.71396 134.470423) - (xy 102.759195 134.522627) - (xy 102.808186 134.627689) - (xy 102.808189 134.627694) - (xy 102.810512 134.632676) - (xy 102.813668 134.637183) - (xy 102.813669 134.637185) - (xy 102.933998 134.809032) - (xy 102.938023 134.814781) - (xy 103.095219 134.971977) - (xy 103.099727 134.975134) - (xy 103.09973 134.975136) - (xy 103.151064 135.01108) - (xy 103.277323 135.099488) - (xy 103.282305 135.101811) - (xy 103.28231 135.101814) - (xy 103.462939 135.186042) - (xy 103.478804 135.19344) - (xy 103.484112 135.194862) - (xy 103.484114 135.194863) - (xy 103.549949 135.212503) - (xy 103.693537 135.250978) - (xy 103.915 135.270353) - (xy 104.136463 135.250978) - (xy 104.280051 135.212503) - (xy 104.345886 135.194863) - (xy 104.345888 135.194862) - (xy 104.351196 135.19344) - (xy 104.367061 135.186042) - (xy 104.54769 135.101814) - (xy 104.547695 135.101811) - (xy 104.552677 135.099488) - (xy 104.678936 135.01108) - (xy 104.73027 134.975136) - (xy 104.730273 134.975134) - (xy 104.734781 134.971977) - (xy 104.891977 134.814781) - (xy 104.896003 134.809032) - (xy 105.016331 134.637185) - (xy 105.016332 134.637183) - (xy 105.019488 134.632676) - (xy 105.021811 134.627694) - (xy 105.021814 134.627689) - (xy 105.111117 134.436178) - (xy 105.111118 134.436177) - (xy 105.11344 134.431196) - (xy 105.170978 134.216463) - (xy 105.190353 133.995) - (xy 105.170978 133.773537) - (xy 105.11344 133.558804) - (xy 105.105535 133.541852) - (xy 105.021814 133.362311) - (xy 105.021811 133.362306) - (xy 105.019488 133.357324) - (xy 105.016331 133.352815) - (xy 104.895136 133.17973) - (xy 104.895134 133.179727) - (xy 104.891977 133.175219) - (xy 104.734781 133.018023) - (xy 104.730273 133.014866) - (xy 104.73027 133.014864) - (xy 104.60431 132.926666) - (xy 104.552677 132.890512) - (xy 104.547695 132.888189) - (xy 104.54769 132.888186) - (xy 104.356178 132.798883) - (xy 104.356177 132.798882) - (xy 104.351196 132.79656) - (xy 104.345888 132.795138) - (xy 104.345886 132.795137) - (xy 104.198732 132.755707) - (xy 104.138109 132.718755) - (xy 104.107088 132.654894) - (xy 104.115516 132.5844) - (xy 104.160719 132.529653) - (xy 104.231343 132.508) - (xy 118.330441 132.508) - (xy 118.398562 132.528002) - (xy 118.445055 132.581658) - (xy 118.455159 132.651932) - (xy 118.425665 132.716512) - (xy 118.406006 132.734826) - (xy 118.385214 132.750409) - (xy 118.336739 132.786739) - (xy 118.249385 132.903295) - (xy 118.198255 133.039684) - (xy 118.1915 133.101866) - (xy 118.1915 135.198134) - (xy 118.198255 135.260316) - (xy 118.249385 135.396705) - (xy 118.336739 135.513261) - (xy 118.453295 135.600615) - (xy 118.589684 135.651745) - (xy 118.651866 135.6585) - (xy 120.748134 135.6585) - (xy 120.810316 135.651745) - (xy 120.946705 135.600615) - (xy 121.063261 135.513261) - (xy 121.150615 135.396705) - (xy 121.155876 135.38267) - (xy 123.83216 135.38267) - (xy 123.837887 135.39032) - (xy 124.009042 135.495205) - (xy 124.017837 135.499687) - (xy 124.227988 135.586734) - (xy 124.237373 135.589783) - (xy 124.458554 135.642885) - (xy 124.468301 135.644428) - (xy 124.69507 135.662275) - (xy 124.70493 135.662275) - (xy 124.931699 135.644428) - (xy 124.941446 135.642885) - (xy 125.162627 135.589783) - (xy 125.172012 135.586734) - (xy 125.382163 135.499687) - (xy 125.390958 135.495205) - (xy 125.558445 135.392568) - (xy 125.567907 135.38211) - (xy 125.564124 135.373334) - (xy 124.712812 134.522022) - (xy 124.698868 134.514408) - (xy 124.697035 134.514539) - (xy 124.69042 134.51879) - (xy 123.83892 135.37029) - (xy 123.83216 135.38267) - (xy 121.155876 135.38267) - (xy 121.201745 135.260316) - (xy 121.2085 135.198134) - (xy 121.2085 134.15493) - (xy 123.187725 134.15493) - (xy 123.205572 134.381699) - (xy 123.207115 134.391446) - (xy 123.260217 134.612627) - (xy 123.263266 134.622012) - (xy 123.350313 134.832163) - (xy 123.354795 134.840958) - (xy 123.457432 135.008445) - (xy 123.46789 135.017907) - (xy 123.476666 135.014124) - (xy 124.327978 134.162812) - (xy 124.335592 134.148868) - (xy 124.335461 134.147035) - (xy 124.33121 134.14042) - (xy 123.47971 133.28892) - (xy 123.46733 133.28216) - (xy 123.45968 133.287887) - (xy 123.354795 133.459042) - (xy 123.350313 133.467837) - (xy 123.263266 133.677988) - (xy 123.260217 133.687373) - (xy 123.207115 133.908554) - (xy 123.205572 133.918301) - (xy 123.187725 134.14507) - (xy 123.187725 134.15493) - (xy 121.2085 134.15493) - (xy 121.2085 133.101866) - (xy 121.201745 133.039684) - (xy 121.150615 132.903295) - (xy 121.063261 132.786739) - (xy 121.014786 132.750409) - (xy 120.993994 132.734826) - (xy 120.951479 132.677967) - (xy 120.946453 132.607148) - (xy 120.980513 132.544855) - (xy 121.042845 132.510865) - (xy 121.069559 132.508) - (xy 124.090099 132.508) + (xy 118.199893 148.484085) + (xy 118.193237 148.568655) + (xy 118.167951 148.634997) + (xy 118.110813 148.677136) + (xy 118.03629 148.68081) + (xy 118.023555 148.67754) + (xy 118.004869 148.671142) + (xy 117.985176 148.66262) + (xy 117.939552 148.655394) + (xy 117.927929 148.652987) + (xy 117.899928 148.645798) + (xy 117.883188 148.6415) + (xy 117.876148 148.6415) + (xy 117.811433 148.613277) + (xy 117.793147 148.594398) + (xy 117.790574 148.591117) + (xy 117.786639 148.584619) + (xy 117.665381 148.463361) + (xy 117.518699 148.374528) + (xy 117.511452 148.372257) + (xy 117.51145 148.372256) + (xy 117.428324 148.346206) + (xy 117.355062 148.323247) + (xy 117.281635 148.3165) + (xy 117.262756 148.3165) + (xy 116.974951 148.316501) + (xy 116.906831 148.296499) + (xy 116.885856 148.279596) + (xy 116.220405 147.614145) + (xy 116.186379 147.551833) + (xy 116.1835 147.52505) + (xy 116.183499 147.271249) + (xy 116.183499 147.268366) + (xy 116.183234 147.265474) + (xy 116.179302 147.222684) + (xy 116.176753 147.194938) + (xy 116.17015 147.173868) + (xy 116.133542 147.057051) + (xy 116.132696 147.0103) + (xy 116.090819 146.974082) + (xy 116.089781 146.972367) + (xy 116.036639 146.884619) + (xy 115.941115 146.789095) + (xy 115.907089 146.726783) + (xy 115.912154 146.655968) + (xy 115.941115 146.610905) + (xy 115.981615 146.570405) + (xy 116.043927 146.536379) + (xy 116.07071 146.5335) + (xy 116.134463 146.5335) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 101.309065 140.256892) + (xy 101.326705 140.268229) + (xy 101.353908 140.289103) + (xy 101.395775 140.346442) + (xy 101.398099 140.353567) + (xy 101.404044 140.373813) + (xy 101.417583 140.375842) + (xy 101.477194 140.367994) + (xy 101.477427 140.369765) + (xy 101.522507 140.369766) + (xy 101.522676 140.368481) + (xy 101.632669 140.382962) + (xy 101.63267 140.382962) + (xy 101.636756 140.3835) + (xy 101.863244 140.3835) + (xy 101.86733 140.382962) + (xy 101.867331 140.382962) + (xy 101.977324 140.368481) + (xy 101.977527 140.370026) + (xy 102.022473 140.370026) + (xy 102.022676 140.368481) + (xy 102.132669 140.382962) + (xy 102.13267 140.382962) + (xy 102.136756 140.3835) + (xy 102.363244 140.3835) + (xy 102.36733 140.382962) + (xy 102.367331 140.382962) + (xy 102.477324 140.368481) + (xy 102.477527 140.370026) + (xy 102.522473 140.370026) + (xy 102.522676 140.368481) + (xy 102.632669 140.382962) + (xy 102.63267 140.382962) + (xy 102.636756 140.3835) + (xy 102.863244 140.3835) + (xy 102.86733 140.382962) + (xy 102.867331 140.382962) + (xy 102.977324 140.368481) + (xy 102.977527 140.370026) + (xy 103.022473 140.370026) + (xy 103.022676 140.368481) + (xy 103.132669 140.382962) + (xy 103.13267 140.382962) + (xy 103.136756 140.3835) + (xy 103.23105 140.3835) + (xy 103.299171 140.403502) + (xy 103.345664 140.457158) + (xy 103.355768 140.527432) + (xy 103.326274 140.592012) + (xy 103.320145 140.598595) + (xy 103.294145 140.624595) + (xy 103.231833 140.658621) + (xy 103.20505 140.6615) + (xy 103.184513 140.6615) + (xy 103.178061 140.662872) + (xy 103.178056 140.662872) + (xy 103.091113 140.681353) + (xy 102.997712 140.701206) + (xy 102.991682 140.703891) + (xy 102.991681 140.703891) + (xy 102.829278 140.776197) + (xy 102.829276 140.776198) + (xy 102.823248 140.778882) + (xy 102.817907 140.782762) + (xy 102.817906 140.782763) + (xy 102.794182 140.8) + (xy 102.668747 140.891134) + (xy 102.664326 140.896044) + (xy 102.664325 140.896045) + (xy 102.548956 141.024176) + (xy 102.54096 141.033056) + (xy 102.445473 141.198444) + (xy 102.386458 141.380072) + (xy 102.385768 141.386633) + (xy 102.385768 141.386635) + (xy 102.372921 141.508866) + (xy 102.366496 141.57) + (xy 102.367186 141.576565) + (xy 102.384062 141.737128) + (xy 102.386458 141.759928) + (xy 102.445473 141.941556) + (xy 102.54096 142.106944) + (xy 102.545378 142.111851) + (xy 102.545379 142.111852) + (xy 102.664325 142.243955) + (xy 102.668747 142.248866) + (xy 102.723221 142.288444) + (xy 102.817824 142.357177) + (xy 102.823248 142.361118) + (xy 102.829276 142.363802) + (xy 102.829278 142.363803) + (xy 102.983955 142.432669) + (xy 102.997712 142.438794) + (xy 103.091113 142.458647) + (xy 103.178056 142.477128) + (xy 103.178061 142.477128) + (xy 103.184513 142.4785) + (xy 103.375487 142.4785) + (xy 103.381939 142.477128) + (xy 103.381944 142.477128) + (xy 103.468887 142.458647) + (xy 103.562288 142.438794) + (xy 103.576045 142.432669) + (xy 103.730722 142.363803) + (xy 103.730724 142.363802) + (xy 103.736752 142.361118) + (xy 103.742093 142.357237) + (xy 103.742099 142.357234) + (xy 103.742176 142.357178) + (xy 103.742228 142.357159) + (xy 103.747811 142.353936) + (xy 103.748401 142.354957) + (xy 103.809043 142.333319) + (xy 103.878195 142.3494) + (xy 103.890296 142.357177) + (xy 103.890379 142.357237) + (xy 103.923248 142.381118) + (xy 103.929276 142.383802) + (xy 103.929278 142.383803) + (xy 104.066094 142.444717) + (xy 104.097712 142.458794) + (xy 104.183966 142.477128) + (xy 104.278056 142.497128) + (xy 104.278061 142.497128) + (xy 104.284513 142.4985) + (xy 104.475487 142.4985) + (xy 104.481939 142.497128) + (xy 104.481944 142.497128) + (xy 104.576034 142.477128) + (xy 104.662288 142.458794) + (xy 104.693906 142.444717) + (xy 104.830722 142.383803) + (xy 104.830724 142.383802) + (xy 104.836752 142.381118) + (xy 104.869626 142.357234) + (xy 104.91719 142.322676) + (xy 104.991253 142.268866) + (xy 105.01262 142.245136) + (xy 105.114621 142.131852) + (xy 105.114622 142.131851) + (xy 105.11904 142.126944) + (xy 105.214527 141.961556) + (xy 105.262766 141.813093) + (xy 105.30284 141.754487) + (xy 105.368236 141.72685) + (xy 105.408797 141.728783) + (xy 105.44805 141.737127) + (xy 105.448057 141.737128) + (xy 105.454513 141.7385) + (xy 105.645487 141.7385) + (xy 105.651939 141.737128) + (xy 105.651944 141.737128) + (xy 105.738887 141.718647) + (xy 105.832288 141.698794) + (xy 105.838319 141.696109) + (xy 106.000722 141.623803) + (xy 106.000724 141.623802) + (xy 106.006752 141.621118) + (xy 106.161253 141.508866) + (xy 106.196864 141.469316) + (xy 106.25731 141.432076) + (xy 106.328294 141.433428) + (xy 106.387278 141.472941) + (xy 106.415536 141.538072) + (xy 106.4165 141.553626) + (xy 106.4165 141.663244) + (xy 106.417038 141.66733) + (xy 106.417038 141.667331) + (xy 106.431519 141.777324) + (xy 106.429974 141.777527) + (xy 106.429974 141.822473) + (xy 106.431519 141.822676) + (xy 106.4165 141.936756) + (xy 106.4165 142.163244) + (xy 106.417038 142.16733) + (xy 106.417038 142.167331) + (xy 106.431519 142.277324) + (xy 106.429974 142.277527) + (xy 106.429974 142.322473) + (xy 106.431519 142.322676) + (xy 106.423931 142.380316) + (xy 106.4165 142.436756) + (xy 106.4165 142.663244) + (xy 106.417038 142.66733) + (xy 106.417038 142.667331) + (xy 106.431519 142.777324) + (xy 106.429974 142.777527) + (xy 106.429974 142.822473) + (xy 106.431519 142.822676) + (xy 106.421475 142.898971) + (xy 106.4165 142.936756) + (xy 106.4165 143.163244) + (xy 106.417038 143.16733) + (xy 106.417038 143.167331) + (xy 106.427797 143.249054) + (xy 106.416858 143.319203) + (xy 106.369729 143.372301) + (xy 106.302875 143.3915) + (xy 105.112056 143.3915) + (xy 105.1002 143.390941) + (xy 105.100197 143.390941) + (xy 105.092463 143.389212) + (xy 105.037446 143.390941) + (xy 105.021631 143.391438) + (xy 105.017673 143.3915) + (xy 104.988568 143.3915) + (xy 104.984168 143.392056) + (xy 104.972336 143.392988) + (xy 104.926169 143.394438) + (xy 104.905579 143.40042) + (xy 104.886218 143.40443) + (xy 104.87923 143.405312) + (xy 104.872796 143.406125) + (xy 104.872795 143.406125) + (xy 104.864936 143.407118) + (xy 104.857571 143.410034) + (xy 104.857567 143.410035) + (xy 104.821979 143.424126) + (xy 104.810769 143.427965) + (xy 104.7664 143.440855) + (xy 104.747943 143.451771) + (xy 104.730193 143.460466) + (xy 104.710244 143.468365) + (xy 104.703833 143.473023) + (xy 104.703831 143.473024) + (xy 104.672864 143.495523) + (xy 104.662946 143.502038) + (xy 104.623193 143.525548) + (xy 104.608032 143.540709) + (xy 104.593 143.553548) + (xy 104.575643 143.566159) + (xy 104.573816 143.568367) + (xy 104.512475 143.599401) + (xy 104.489573 143.6015) + (xy 104.474513 143.6015) + (xy 104.468061 143.602872) + (xy 104.468056 143.602872) + (xy 104.381112 143.621353) + (xy 104.287712 143.641206) + (xy 104.281682 143.643891) + (xy 104.281681 143.643891) + (xy 104.119278 143.716197) + (xy 104.119276 143.716198) + (xy 104.113248 143.718882) + (xy 103.958747 143.831134) + (xy 103.954326 143.836044) + (xy 103.954325 143.836045) + (xy 103.850419 143.951445) + (xy 103.83096 143.973056) + (xy 103.827659 143.978774) + (xy 103.750092 144.113124) + (xy 103.735473 144.138444) + (xy 103.676458 144.320072) + (xy 103.656496 144.51) + (xy 103.657186 144.516565) + (xy 103.667925 144.618737) + (xy 103.676458 144.699928) + (xy 103.735473 144.881556) + (xy 103.83096 145.046944) + (xy 103.835378 145.051851) + (xy 103.835379 145.051852) + (xy 103.90911 145.133739) + (xy 103.958747 145.188866) + (xy 104.036566 145.245405) + (xy 104.101691 145.292721) + (xy 104.113248 145.301118) + (xy 104.119276 145.303802) + (xy 104.119278 145.303803) + (xy 104.281681 145.376109) + (xy 104.287712 145.378794) + (xy 104.379551 145.398315) + (xy 104.468056 145.417128) + (xy 104.468061 145.417128) + (xy 104.474513 145.4185) + (xy 104.665487 145.4185) + (xy 104.671939 145.417128) + (xy 104.671944 145.417128) + (xy 104.760449 145.398315) + (xy 104.852288 145.378794) + (xy 104.858319 145.376109) + (xy 105.020722 145.303803) + (xy 105.020724 145.303802) + (xy 105.026752 145.301118) + (xy 105.03831 145.292721) + (xy 105.103434 145.245405) + (xy 105.181253 145.188866) + (xy 105.23089 145.133739) + (xy 105.304621 145.051852) + (xy 105.304622 145.051851) + (xy 105.30904 145.046944) + (xy 105.404527 144.881556) + (xy 105.419358 144.835913) + (xy 105.432468 144.795564) + (xy 105.472542 144.736958) + (xy 105.537938 144.709321) + (xy 105.552301 144.7085) + (xy 106.302875 144.7085) + (xy 106.370996 144.728502) + (xy 106.417489 144.782158) + (xy 106.427797 144.850946) + (xy 106.422805 144.888866) + (xy 106.4165 144.936756) + (xy 106.4165 145.163244) + (xy 106.417038 145.16733) + (xy 106.417038 145.167331) + (xy 106.431519 145.277324) + (xy 106.429974 145.277527) + (xy 106.429974 145.322473) + (xy 106.431519 145.322676) + (xy 106.4165 145.436756) + (xy 106.4165 145.663244) + (xy 106.417038 145.66733) + (xy 106.417038 145.667331) + (xy 106.431519 145.777324) + (xy 106.429974 145.777527) + (xy 106.429974 145.822473) + (xy 106.431519 145.822676) + (xy 106.420478 145.906544) + (xy 106.4165 145.936756) + (xy 106.4165 146.0905) + (xy 106.396498 146.158621) + (xy 106.342842 146.205114) + (xy 106.2905 146.2165) + (xy 106.136756 146.2165) + (xy 106.13267 146.217038) + (xy 106.132669 146.217038) + (xy 106.022676 146.231519) + (xy 106.022507 146.230234) + (xy 105.977427 146.230235) + (xy 105.977194 146.232006) + (xy 105.91796 146.224208) + (xy 105.903778 146.226419) + (xy 105.898217 146.245784) + (xy 105.860189 146.305737) + (xy 105.853816 146.310967) + (xy 105.826704 146.331771) + (xy 105.760484 146.357372) + (xy 105.690935 146.343108) + (xy 105.673295 146.331771) + (xy 105.646092 146.310897) + (xy 105.604225 146.253558) + (xy 105.601901 146.246433) + (xy 105.595956 146.226187) + (xy 105.582417 146.224158) + (xy 105.522806 146.232006) + (xy 105.522573 146.230235) + (xy 105.477493 146.230234) + (xy 105.477324 146.231519) + (xy 105.367331 146.217038) + (xy 105.36733 146.217038) + (xy 105.363244 146.2165) + (xy 105.136756 146.2165) + (xy 105.13267 146.217038) + (xy 105.132669 146.217038) + (xy 105.022676 146.231519) + (xy 105.022473 146.229974) + (xy 104.977527 146.229974) + (xy 104.977324 146.231519) + (xy 104.867331 146.217038) + (xy 104.86733 146.217038) + (xy 104.863244 146.2165) + (xy 104.636756 146.2165) + (xy 104.63267 146.217038) + (xy 104.632669 146.217038) + (xy 104.522676 146.231519) + (xy 104.522473 146.229974) + (xy 104.477527 146.229974) + (xy 104.477324 146.231519) + (xy 104.367331 146.217038) + (xy 104.36733 146.217038) + (xy 104.363244 146.2165) + (xy 104.136756 146.2165) + (xy 104.13267 146.217038) + (xy 104.132669 146.217038) + (xy 104.022676 146.231519) + (xy 104.022473 146.229974) + (xy 103.977527 146.229974) + (xy 103.977324 146.231519) + (xy 103.867331 146.217038) + (xy 103.86733 146.217038) + (xy 103.863244 146.2165) + (xy 103.636756 146.2165) + (xy 103.63267 146.217038) + (xy 103.632669 146.217038) + (xy 103.522676 146.231519) + (xy 103.522473 146.229974) + (xy 103.477527 146.229974) + (xy 103.477324 146.231519) + (xy 103.367331 146.217038) + (xy 103.36733 146.217038) + (xy 103.363244 146.2165) + (xy 103.136756 146.2165) + (xy 103.13267 146.217038) + (xy 103.132669 146.217038) + (xy 103.022676 146.231519) + (xy 103.022473 146.229974) + (xy 102.977527 146.229974) + (xy 102.977324 146.231519) + (xy 102.867331 146.217038) + (xy 102.86733 146.217038) + (xy 102.863244 146.2165) + (xy 102.636756 146.2165) + (xy 102.63267 146.217038) + (xy 102.632669 146.217038) + (xy 102.522676 146.231519) + (xy 102.522473 146.229974) + (xy 102.477527 146.229974) + (xy 102.477324 146.231519) + (xy 102.367331 146.217038) + (xy 102.36733 146.217038) + (xy 102.363244 146.2165) + (xy 102.329904 146.2165) + (xy 102.261783 146.196498) + (xy 102.21529 146.142842) + (xy 102.205186 146.072568) + (xy 102.213739 146.042921) + (xy 102.214527 146.041556) + (xy 102.228055 145.999923) + (xy 102.267885 145.877339) + (xy 102.273542 145.859928) + (xy 102.274802 145.847945) + (xy 102.292814 145.676565) + (xy 102.293504 145.67) + (xy 102.278322 145.525547) + (xy 102.274232 145.486635) + (xy 102.274232 145.486633) + (xy 102.273542 145.480072) + (xy 102.214527 145.298444) + (xy 102.11904 145.133056) + (xy 102.118045 145.131951) + (xy 102.094824 145.066872) + (xy 102.111499 144.996677) + (xy 102.1677 144.899334) + (xy 102.167701 144.899333) + (xy 102.171004 144.893611) + (xy 102.230019 144.711983) + (xy 102.23982 144.618737) + (xy 102.249291 144.52862) + (xy 102.249981 144.522055) + (xy 102.241226 144.438757) + (xy 102.230709 144.33869) + (xy 102.230709 144.338688) + (xy 102.230019 144.332127) + (xy 102.171004 144.150499) + (xy 102.149426 144.113124) + (xy 102.115722 144.054748) + (xy 102.075517 143.985111) + (xy 102.060244 143.968148) + (xy 101.952152 143.8481) + (xy 101.952151 143.848099) + (xy 101.94773 143.843189) + (xy 101.815456 143.747086) + (xy 101.798571 143.734818) + (xy 101.79857 143.734817) + (xy 101.793229 143.730937) + (xy 101.787201 143.728253) + (xy 101.787199 143.728252) + (xy 101.624796 143.655946) + (xy 101.624795 143.655946) + (xy 101.618765 143.653261) + (xy 101.525364 143.633408) + (xy 101.438421 143.614927) + (xy 101.438416 143.614927) + (xy 101.431964 143.613555) + (xy 101.24099 143.613555) + (xy 101.234538 143.614927) + (xy 101.234533 143.614927) + (xy 101.14759 143.633408) + (xy 101.054189 143.653261) + (xy 101.048159 143.655946) + (xy 101.048158 143.655946) + (xy 100.885755 143.728252) + (xy 100.885753 143.728253) + (xy 100.879725 143.730937) + (xy 100.874384 143.734817) + (xy 100.874383 143.734818) + (xy 100.779577 143.803699) + (xy 100.712709 143.827557) + (xy 100.643558 143.811477) + (xy 100.594078 143.760563) + (xy 100.580594 143.685317) + (xy 100.582962 143.667331) + (xy 100.582962 143.66733) + (xy 100.5835 143.663244) + (xy 100.5835 143.436756) + (xy 100.577274 143.389461) + (xy 100.568481 143.322676) + (xy 100.570026 143.322473) + (xy 100.570026 143.277527) + (xy 100.568481 143.277324) + (xy 100.582962 143.167331) + (xy 100.582962 143.16733) + (xy 100.5835 143.163244) + (xy 100.5835 142.936756) + (xy 100.578526 142.898971) + (xy 100.568481 142.822676) + (xy 100.570026 142.822473) + (xy 100.570026 142.777527) + (xy 100.568481 142.777324) + (xy 100.582962 142.667331) + (xy 100.582962 142.66733) + (xy 100.5835 142.663244) + (xy 100.5835 142.436756) + (xy 100.57607 142.380316) + (xy 100.568481 142.322676) + (xy 100.570026 142.322473) + (xy 100.570026 142.277527) + (xy 100.568481 142.277324) + (xy 100.582962 142.167331) + (xy 100.582962 142.16733) + (xy 100.5835 142.163244) + (xy 100.5835 141.936756) + (xy 100.568481 141.822676) + (xy 100.570026 141.822473) + (xy 100.570026 141.777527) + (xy 100.568481 141.777324) + (xy 100.582962 141.667331) + (xy 100.582962 141.66733) + (xy 100.5835 141.663244) + (xy 100.5835 141.436756) + (xy 100.568481 141.322676) + (xy 100.570026 141.322473) + (xy 100.570026 141.277527) + (xy 100.568481 141.277324) + (xy 100.582962 141.167331) + (xy 100.582962 141.16733) + (xy 100.5835 141.163244) + (xy 100.5835 140.936756) + (xy 100.568481 140.822676) + (xy 100.570026 140.822473) + (xy 100.570026 140.777527) + (xy 100.568481 140.777324) + (xy 100.582962 140.667331) + (xy 100.582962 140.66733) + (xy 100.5835 140.663244) + (xy 100.5835 140.5095) + (xy 100.603502 140.441379) + (xy 100.657158 140.394886) + (xy 100.7095 140.3835) + (xy 100.863244 140.3835) + (xy 100.86733 140.382962) + (xy 100.867331 140.382962) + (xy 100.977324 140.368481) + (xy 100.977493 140.369766) + (xy 101.022573 140.369765) + (xy 101.022806 140.367994) + (xy 101.08204 140.375792) + (xy 101.096222 140.373581) + (xy 101.101783 140.354216) + (xy 101.139811 140.294263) + (xy 101.146184 140.289033) + (xy 101.173296 140.268229) + (xy 101.239516 140.242628) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 90.354084 134.058502) + (xy 90.400577 134.112158) + (xy 90.410681 134.182432) + (xy 90.406198 134.202178) + (xy 90.395312 134.236918) + (xy 90.392991 134.248503) + (xy 90.395806 134.262835) + (xy 90.407702 134.266) + (xy 91.3905 134.266) + (xy 91.458621 134.286002) + (xy 91.505114 134.339658) + (xy 91.5165 134.392) + (xy 91.5165 134.843885) + (xy 91.531396 134.894616) + (xy 91.5365 134.930114) + (xy 91.5365 137.77203) + (xy 91.533621 137.798813) + (xy 91.5265 137.831548) + (xy 91.5265 138.458) + (xy 91.506498 138.526121) + (xy 91.452842 138.572614) + (xy 91.4005 138.584) + (xy 90.419342 138.584) + (xy 90.404797 138.588271) + (xy 90.402752 138.600302) + (xy 90.405313 138.613088) + (xy 90.449029 138.752589) + (xy 90.455235 138.766334) + (xy 90.530496 138.890604) + (xy 90.539803 138.902473) + (xy 90.642527 139.005197) + (xy 90.654396 139.014504) + (xy 90.778666 139.089765) + (xy 90.792411 139.095971) + (xy 90.931904 139.139685) + (xy 90.951503 139.14361) + (xy 90.951055 139.145848) + (xy 91.007237 139.168113) + (xy 91.048621 139.2258) + (xy 91.052247 139.296704) + (xy 91.016964 139.358313) + (xy 90.973925 139.385409) + (xy 90.891705 139.416232) + (xy 90.891704 139.416233) + (xy 90.883295 139.419385) + (xy 90.766739 139.506739) + (xy 90.679385 139.623295) + (xy 90.628255 139.759684) + (xy 90.6215 139.821866) + (xy 90.6215 142.318134) + (xy 90.628255 142.380316) + (xy 90.679385 142.516705) + (xy 90.766739 142.633261) + (xy 90.883295 142.720615) + (xy 91.019684 142.771745) + (xy 91.081866 142.7785) + (xy 93.178134 142.7785) + (xy 93.240316 142.771745) + (xy 93.376705 142.720615) + (xy 93.383893 142.715228) + (xy 93.387982 142.712164) + (xy 93.454489 142.687319) + (xy 93.523871 142.702374) + (xy 93.552638 142.723898) + (xy 94.026431 143.197691) + (xy 94.060457 143.260003) + (xy 94.055392 143.330818) + (xy 94.02651 143.375802) + (xy 93.980695 143.421697) + (xy 93.977898 143.426235) + (xy 93.920647 143.466824) + (xy 93.849724 143.470054) + (xy 93.788313 143.434428) + (xy 93.780938 143.425932) + (xy 93.772902 143.415793) + (xy 93.658171 143.301261) + (xy 93.64676 143.292249) + (xy 93.508757 143.207184) + (xy 93.495576 143.201037) + (xy 93.34129 143.149862) + (xy 93.327914 143.146995) + (xy 93.233562 143.137328) + (xy 93.227145 143.137) + (xy 93.202115 143.137) + (xy 93.186876 143.141475) + (xy 93.185671 143.142865) + (xy 93.184 143.150548) + (xy 93.184 144.498) + (xy 93.163998 144.566121) + (xy 93.110342 144.612614) + (xy 93.058 144.624) + (xy 91.940116 144.624) + (xy 91.924877 144.628475) + (xy 91.923672 144.629865) + (xy 91.922001 144.637548) + (xy 91.922001 144.895362) + (xy 91.920642 144.895362) + (xy 91.905448 144.959158) + (xy 91.854271 145.008366) + (xy 91.784614 145.022095) + (xy 91.718593 144.995984) + (xy 91.706971 144.985711) + (xy 90.819145 144.097885) + (xy 91.922 144.097885) + (xy 91.926475 144.113124) + (xy 91.927865 144.114329) + (xy 91.935548 144.116) + (xy 92.657885 144.116) + (xy 92.673124 144.111525) + (xy 92.674329 144.110135) + (xy 92.676 144.102452) + (xy 92.676 143.155116) + (xy 92.671525 143.139877) + (xy 92.670135 143.138672) + (xy 92.662452 143.137001) + (xy 92.632905 143.137001) + (xy 92.626386 143.137338) + (xy 92.530794 143.147257) + (xy 92.5174 143.150149) + (xy 92.363216 143.201588) + (xy 92.350038 143.207761) + (xy 92.212193 143.293063) + (xy 92.200792 143.302099) + (xy 92.086261 143.416829) + (xy 92.077249 143.42824) + (xy 91.992184 143.566243) + (xy 91.986037 143.579424) + (xy 91.934862 143.73371) + (xy 91.931995 143.747086) + (xy 91.922328 143.841438) + (xy 91.922 143.847855) + (xy 91.922 144.097885) + (xy 90.819145 144.097885) + (xy 90.345405 143.624145) + (xy 90.311379 143.561833) + (xy 90.3085 143.53505) + (xy 90.3085 140.042059) + (xy 90.309059 140.030203) + (xy 90.310789 140.022463) + (xy 90.308562 139.951611) + (xy 90.3085 139.947653) + (xy 90.3085 139.918568) + (xy 90.307946 139.914179) + (xy 90.307013 139.902337) + (xy 90.306673 139.8915) + (xy 90.305562 139.856169) + (xy 90.29958 139.835579) + (xy 90.29557 139.816216) + (xy 90.293875 139.802796) + (xy 90.293875 139.802795) + (xy 90.292882 139.794936) + (xy 90.289966 139.787571) + (xy 90.289965 139.787567) + (xy 90.275874 139.751979) + (xy 90.272035 139.740769) + (xy 90.259145 139.6964) + (xy 90.248225 139.677935) + (xy 90.239534 139.660195) + (xy 90.231635 139.640244) + (xy 90.204482 139.602871) + (xy 90.197967 139.592952) + (xy 90.178493 139.560023) + (xy 90.17849 139.560019) + (xy 90.174453 139.553193) + (xy 90.159289 139.538029) + (xy 90.146448 139.522995) + (xy 90.138501 139.512057) + (xy 90.133841 139.505643) + (xy 90.098247 139.476197) + (xy 90.089468 139.468208) + (xy 88.679763 138.058503) + (xy 90.402991 138.058503) + (xy 90.405806 138.072835) + (xy 90.417702 138.076) + (xy 91.000385 138.076) + (xy 91.015624 138.071525) + (xy 91.016829 138.070135) + (xy 91.0185 138.062452) + (xy 91.0185 137.51797) + (xy 91.021379 137.491187) + (xy 91.0285 137.458452) + (xy 91.0285 137.232115) + (xy 91.024025 137.216876) + (xy 91.022635 137.215671) + (xy 91.014952 137.214) + (xy 90.429342 137.214) + (xy 90.414797 137.218271) + (xy 90.412752 137.230302) + (xy 90.415313 137.243088) + (xy 90.459029 137.382589) + (xy 90.465235 137.396334) + (xy 90.540496 137.520604) + (xy 90.549803 137.532473) + (xy 90.568235 137.550905) + (xy 90.602261 137.613217) + (xy 90.597196 137.684032) + (xy 90.568235 137.729095) + (xy 90.539803 137.757527) + (xy 90.530496 137.769396) + (xy 90.455235 137.893666) + (xy 90.449029 137.907411) + (xy 90.405313 138.046912) + (xy 90.402991 138.058503) + (xy 88.679763 138.058503) + (xy 88.113655 137.492395) + (xy 88.105665 137.483615) + (xy 88.105663 137.483613) + (xy 88.101416 137.47692) + (xy 88.06849 137.446) + (xy 88.049743 137.428396) + (xy 88.046901 137.425641) + (xy 88.026333 137.405073) + (xy 88.022826 137.402353) + (xy 88.013804 137.394647) + (xy 88.002412 137.383949) + (xy 87.980133 137.363028) + (xy 87.973181 137.359206) + (xy 87.961342 137.352697) + (xy 87.944818 137.341843) + (xy 87.934132 137.333555) + (xy 87.927868 137.328696) + (xy 87.920596 137.325549) + (xy 87.920594 137.325548) + (xy 87.885465 137.310346) + (xy 87.874805 137.305124) + (xy 87.841284 137.286695) + (xy 87.841282 137.286694) + (xy 87.834337 137.282876) + (xy 87.813559 137.277541) + (xy 87.794869 137.271142) + (xy 87.775176 137.26262) + (xy 87.729552 137.255394) + (xy 87.717929 137.252987) + (xy 87.689928 137.245798) + (xy 87.673188 137.2415) + (xy 87.651741 137.2415) + (xy 87.632031 137.239949) + (xy 87.618677 137.237834) + (xy 87.610848 137.236594) + (xy 87.564859 137.240941) + (xy 87.553004 137.2415) + (xy 87.391398 137.2415) + (xy 87.323277 137.221498) + (xy 87.292246 137.193249) + (xy 87.290575 137.191118) + (xy 87.286639 137.184619) + (xy 87.220405 137.118385) + (xy 87.186379 137.056073) + (xy 87.1835 137.02929) + (xy 87.1835 136.866434) + (xy 87.201046 136.802295) + (xy 87.20511 136.795423) + (xy 87.209145 136.788601) + (xy 87.212063 136.778559) + (xy 87.232905 136.706819) + (xy 87.255562 136.628831) + (xy 87.256078 136.622285) + (xy 87.258307 136.593958) + (xy 87.258307 136.59395) + (xy 87.2585 136.591502) + (xy 87.2585 136.11245) + (xy 87.278502 136.044329) + (xy 87.295405 136.023355) + (xy 87.328458 135.990302) + (xy 90.412752 135.990302) + (xy 90.415313 136.003088) + (xy 90.459029 136.142589) + (xy 90.465237 136.156338) + (xy 90.536937 136.274729) + (xy 90.555116 136.343358) + (xy 90.536937 136.405271) + (xy 90.465237 136.523662) + (xy 90.459029 136.537411) + (xy 90.415313 136.676912) + (xy 90.412991 136.688503) + (xy 90.415806 136.702835) + (xy 90.427702 136.706) + (xy 91.010385 136.706) + (xy 91.025624 136.701525) + (xy 91.026829 136.700135) + (xy 91.0285 136.692452) + (xy 91.0285 135.992115) + (xy 91.024025 135.976876) + (xy 91.022635 135.975671) + (xy 91.014952 135.974) + (xy 90.429342 135.974) + (xy 90.414797 135.978271) + (xy 90.412752 135.990302) + (xy 87.328458 135.990302) + (xy 88.528458 134.790302) + (xy 90.392752 134.790302) + (xy 90.395313 134.803088) + (xy 90.439029 134.942589) + (xy 90.445235 134.956334) + (xy 90.514825 135.07124) + (xy 90.533004 135.13987) + (xy 90.514825 135.201784) + (xy 90.465235 135.283667) + (xy 90.459029 135.297411) + (xy 90.415313 135.436912) + (xy 90.412991 135.448503) + (xy 90.415806 135.462835) + (xy 90.427702 135.466) + (xy 91.010385 135.466) + (xy 91.025624 135.461525) + (xy 91.026829 135.460135) + (xy 91.0285 135.452452) + (xy 91.0285 135.396115) + (xy 91.013604 135.345384) + (xy 91.0085 135.309886) + (xy 91.0085 134.792115) + (xy 91.004025 134.776876) + (xy 91.002635 134.775671) + (xy 90.994952 134.774) + (xy 90.409342 134.774) + (xy 90.394797 134.778271) + (xy 90.392752 134.790302) + (xy 88.528458 134.790302) + (xy 89.243355 134.075405) + (xy 89.305667 134.041379) + (xy 89.33245 134.0385) + (xy 90.285963 134.0385) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts (xy 124.15822 132.528002) (xy 124.204713 132.581658) (xy 124.214817 132.651932) @@ -12555,87 +8690,41 @@ (xy 125.201539 132.569706) (xy 125.253501 132.521328) (xy 125.309901 132.508) - (xy 126.392572 132.508) - (xy 126.460693 132.528002) - (xy 126.507186 132.581658) - (xy 126.51729 132.651932) - (xy 126.503927 132.692959) - (xy 126.447086 132.800313) - (xy 126.415073 132.860776) - (xy 126.413601 132.864799) - (xy 126.413599 132.864803) - (xy 126.373125 132.975405) - (xy 126.318616 133.124355) - (xy 126.263471 133.377279) - (xy 126.259814 133.39405) - (xy 126.225759 133.456347) - (xy 126.163431 133.490342) - (xy 126.092618 133.485244) - (xy 126.035802 133.44267) - (xy 126.029274 133.433045) - (xy 125.942567 133.291554) - (xy 125.93211 133.282093) - (xy 125.923334 133.285876) - (xy 125.072022 134.137188) - (xy 125.064408 134.151132) - (xy 125.064539 134.152965) - (xy 125.06879 134.15958) - (xy 125.92029 135.01108) - (xy 125.93267 135.01784) - (xy 125.94032 135.012113) - (xy 126.045205 134.840958) - (xy 126.049687 134.832163) - (xy 126.136734 134.622012) - (xy 126.139783 134.612627) - (xy 126.16128 134.523086) - (xy 126.196632 134.461517) - (xy 126.259659 134.428834) - (xy 126.33035 134.435414) - (xy 126.386261 134.479169) - (xy 126.397715 134.499664) - (xy 126.397911 134.499565) - (xy 126.510299 134.723024) - (xy 126.524022 134.75031) - (xy 126.526448 134.753839) - (xy 126.526451 134.753845) - (xy 126.635012 134.911801) - (xy 126.682997 134.98162) - (xy 126.685884 134.984793) - (xy 126.685885 134.984794) - (xy 126.712573 135.014124) - (xy 126.871894 135.189215) - (xy 126.875183 135.191965) - (xy 127.083925 135.366501) - (xy 127.08393 135.366505) - (xy 127.087217 135.369253) - (xy 127.142424 135.403884) - (xy 127.321341 135.516119) - (xy 127.321345 135.516121) - (xy 127.324981 135.518402) - (xy 127.580788 135.633903) - (xy 127.584907 135.635123) - (xy 127.84579 135.712401) - (xy 127.845795 135.712402) - (xy 127.849903 135.713619) - (xy 127.854137 135.714267) - (xy 127.854142 135.714268) - (xy 128.076204 135.748248) - (xy 128.127347 135.756074) - (xy 128.270292 135.758319) - (xy 128.403694 135.760415) - (xy 128.4037 135.760415) - (xy 128.407985 135.760482) - (xy 128.686626 135.726763) - (xy 128.958112 135.65554) - (xy 128.962072 135.6539) - (xy 128.962077 135.653898) - (xy 129.124224 135.586734) - (xy 129.21742 135.548131) - (xy 129.302432 135.498454) - (xy 129.371336 135.481356) - (xy 129.438549 135.504225) - (xy 129.482727 135.559802) - (xy 129.492 135.607243) + (xy 128.250673 132.508) + (xy 128.270058 132.5095) + (xy 128.284859 132.511805) + (xy 128.284862 132.511805) + (xy 128.293731 132.513186) + (xy 128.30777 132.51135) + (xy 128.333989 132.510675) + (xy 128.476584 132.521897) + (xy 128.496112 132.52499) + (xy 128.658713 132.564027) + (xy 128.677513 132.570136) + (xy 128.831998 132.634127) + (xy 128.849613 132.643102) + (xy 128.992183 132.730468) + (xy 129.008179 132.74209) + (xy 129.135331 132.850688) + (xy 129.149312 132.864669) + (xy 129.25791 132.991821) + (xy 129.269532 133.007817) + (xy 129.356898 133.150387) + (xy 129.365873 133.168002) + (xy 129.429864 133.322487) + (xy 129.435973 133.341287) + (xy 129.45808 133.433369) + (xy 129.47501 133.503887) + (xy 129.478103 133.523416) + (xy 129.488774 133.659012) + (xy 129.488133 133.67588) + (xy 129.488305 133.675882) + (xy 129.488195 133.684858) + (xy 129.486814 133.693729) + (xy 129.487978 133.702631) + (xy 129.487978 133.702634) + (xy 129.490936 133.72525) + (xy 129.492 133.741588) (xy 129.492 139.284567) (xy 129.471998 139.352688) (xy 129.418342 139.399181) @@ -12667,103 +8756,1287 @@ (xy 129.454946 142.926188) (xy 129.489075 142.988443) (xy 129.492 143.015433) - (xy 129.492 158.391166) - (xy 129.471998 158.459287) - (xy 129.418342 158.50578) - (xy 129.348068 158.515884) - (xy 129.300164 158.498598) - (xy 129.295726 158.495878) - (xy 129.292204 158.49372) - (xy 129.259584 158.47373) - (xy 129.259579 158.473727) - (xy 129.255923 158.471487) - (xy 129.233348 158.461577) - (xy 129.002853 158.360397) - (xy 128.998921 158.358671) - (xy 128.979519 158.353144) - (xy 128.733114 158.282954) - (xy 128.733115 158.282954) - (xy 128.728986 158.281778) - (xy 128.523217 158.252493) - (xy 128.455365 158.242836) - (xy 128.455363 158.242836) - (xy 128.451113 158.242231) - (xy 128.446824 158.242209) - (xy 128.446817 158.242208) - (xy 128.17473 158.240783) - (xy 128.174723 158.240783) - (xy 128.170444 158.240761) - (xy 128.166199 158.24132) - (xy 128.166197 158.24132) - (xy 128.102813 158.249665) - (xy 127.892172 158.277397) - (xy 127.621446 158.351459) - (xy 127.363277 158.461577) - (xy 127.217721 158.548691) - (xy 127.126123 158.603511) - (xy 127.126119 158.603514) - (xy 127.122441 158.605715) - (xy 126.903395 158.781204) - (xy 126.900451 158.784306) - (xy 126.900447 158.78431) - (xy 126.76555 158.926462) - (xy 126.710192 158.984797) - (xy 126.546408 159.212727) - (xy 126.415073 159.460776) - (xy 126.413601 159.464799) - (xy 126.413599 159.464803) - (xy 126.406354 159.484602) - (xy 126.318616 159.724355) - (xy 126.258825 159.998585) - (xy 126.236803 160.278393) - (xy 126.25296 160.558601) - (xy 126.253785 160.562806) - (xy 126.253786 160.562814) - (xy 126.254535 160.566631) - (xy 126.306996 160.834024) - (xy 126.308383 160.838074) - (xy 126.308384 160.838079) - (xy 126.396522 161.095509) - (xy 126.397911 161.099565) - (xy 126.399837 161.103394) - (xy 126.399838 161.103397) - (xy 126.503439 161.309386) - (xy 126.516177 161.379231) - (xy 126.489133 161.444875) - (xy 126.430892 161.485476) - (xy 126.390874 161.492) - (xy 73.606973 161.492) - (xy 73.538852 161.471998) - (xy 73.492359 161.418342) - (xy 73.482255 161.348068) - (xy 73.496242 161.305878) - (xy 73.573986 161.162692) - (xy 73.573987 161.16269) - (xy 73.576036 161.158916) - (xy 73.675247 160.896362) - (xy 73.737907 160.622773) - (xy 73.742918 160.566631) - (xy 73.762637 160.345677) - (xy 73.762637 160.345675) - (xy 73.762857 160.343211) - (xy 73.76316 160.31436) - (xy 73.763284 160.302484) - (xy 73.763284 160.302483) - (xy 73.76331 160.3) - (xy 73.74422 160.019977) - (xy 73.738923 159.994396) - (xy 73.688172 159.749332) - (xy 73.687303 159.745135) - (xy 73.593612 159.480561) - (xy 73.583401 159.460776) - (xy 73.466847 159.234957) - (xy 73.466847 159.234956) - (xy 73.464882 159.23115) - (xy 73.454595 159.216512) - (xy 73.305956 159.005022) - (xy 73.303493 159.001517) - (xy 73.112433 158.795912) - (xy 73.064473 158.756657) + (xy 129.492 144.375971) + (xy 129.471998 144.444092) + (xy 129.418342 144.490585) + (xy 129.348068 144.500689) + (xy 129.328321 144.496205) + (xy 129.310387 144.490585) + (xy 129.255062 144.473247) + (xy 129.181635 144.4665) + (xy 129.178737 144.4665) + (xy 128.84914 144.466501) + (xy 128.518366 144.466501) + (xy 128.515508 144.466764) + (xy 128.515499 144.466764) + (xy 128.479996 144.470026) + (xy 128.444938 144.473247) + (xy 128.43856 144.475246) + (xy 128.438559 144.475246) + (xy 128.28855 144.522256) + (xy 128.288548 144.522257) + (xy 128.281301 144.524528) + (xy 128.134619 144.613361) + (xy 128.068385 144.679595) + (xy 128.006073 144.713621) + (xy 127.97929 144.7165) + (xy 124.414943 144.7165) + (xy 124.346822 144.696498) + (xy 124.325848 144.679595) + (xy 121.989137 142.342884) + (xy 121.981147 142.334104) + (xy 121.981145 142.334102) + (xy 121.976898 142.327409) + (xy 121.963383 142.314717) + (xy 121.925225 142.278885) + (xy 121.922383 142.27613) + (xy 121.901815 142.255562) + (xy 121.898308 142.252842) + (xy 121.889286 142.245136) + (xy 121.883693 142.239884) + (xy 121.855615 142.213517) + (xy 121.846489 142.2085) + (xy 121.836824 142.203186) + (xy 121.8203 142.192332) + (xy 121.809614 142.184044) + (xy 121.80335 142.179185) + (xy 121.796078 142.176038) + (xy 121.796076 142.176037) + (xy 121.760947 142.160835) + (xy 121.750287 142.155613) + (xy 121.716766 142.137184) + (xy 121.716764 142.137183) + (xy 121.709819 142.133365) + (xy 121.689041 142.12803) + (xy 121.670351 142.121631) + (xy 121.650658 142.113109) + (xy 121.605034 142.105883) + (xy 121.593411 142.103476) + (xy 121.56541 142.096287) + (xy 121.54867 142.091989) + (xy 121.527223 142.091989) + (xy 121.507513 142.090438) + (xy 121.494159 142.088323) + (xy 121.48633 142.087083) + (xy 121.440341 142.09143) + (xy 121.428486 142.091989) + (xy 117.3345 142.091989) + (xy 117.266379 142.071987) + (xy 117.219886 142.018331) + (xy 117.2085 141.965989) + (xy 117.2085 140.384011) + (xy 117.228502 140.31589) + (xy 117.282158 140.269397) + (xy 117.3345 140.258011) + (xy 121.388433 140.258011) + (xy 121.400289 140.25857) + (xy 121.400292 140.25857) + (xy 121.408026 140.260299) + (xy 121.478858 140.258073) + (xy 121.482816 140.258011) + (xy 121.511921 140.258011) + (xy 121.516321 140.257455) + (xy 121.528153 140.256523) + (xy 121.57432 140.255073) + (xy 121.59491 140.249091) + (xy 121.614271 140.245081) + (xy 121.621259 140.244199) + (xy 121.627693 140.243386) + (xy 121.627694 140.243386) + (xy 121.635553 140.242393) + (xy 121.642918 140.239477) + (xy 121.642922 140.239476) + (xy 121.67851 140.225385) + (xy 121.68972 140.221546) + (xy 121.734089 140.208656) + (xy 121.752554 140.197736) + (xy 121.770294 140.189045) + (xy 121.790245 140.181146) + (xy 121.827618 140.153993) + (xy 121.837537 140.147478) + (xy 121.870466 140.128004) + (xy 121.87047 140.128001) + (xy 121.877296 140.123964) + (xy 121.89246 140.1088) + (xy 121.907494 140.095959) + (xy 121.918432 140.088012) + (xy 121.924846 140.083352) + (xy 121.954292 140.047758) + (xy 121.962281 140.038979) + (xy 122.837505 139.163755) + (xy 122.899817 139.129729) + (xy 122.967933 139.133822) + (xy 123.106271 139.181861) + (xy 123.112206 139.182722) + (xy 123.112208 139.182722) + (xy 123.309664 139.211352) + (xy 123.309667 139.211352) + (xy 123.315604 139.212213) + (xy 123.526899 139.202433) + (xy 123.687389 139.163755) + (xy 123.726701 139.154281) + (xy 123.726703 139.15428) + (xy 123.732534 139.152875) + (xy 123.737992 139.150393) + (xy 123.737996 139.150392) + (xy 123.871336 139.089765) + (xy 123.925087 139.065326) + (xy 124.097611 138.942946) + (xy 124.243881 138.79015) + (xy 124.35862 138.612452) + (xy 124.401846 138.505195) + (xy 124.435442 138.421832) + (xy 124.435443 138.421829) + (xy 124.437686 138.416263) + (xy 124.478228 138.208663) + (xy 124.4785 138.203101) + (xy 124.4785 137.247154) + (xy 124.464598 137.101445) + (xy 124.478039 137.031733) + (xy 124.527037 136.980354) + (xy 124.596033 136.963621) + (xy 124.663123 136.986847) + (xy 124.679123 137.000383) + (xy 124.76608 137.08734) + (xy 124.800106 137.149652) + (xy 124.801997 137.190183) + (xy 124.801772 137.191337) + (xy 124.8015 137.196899) + (xy 124.8015 138.152846) + (xy 124.816548 138.310566) + (xy 124.876092 138.513534) + (xy 124.878836 138.518861) + (xy 124.878836 138.518862) + (xy 124.970057 138.695978) + (xy 124.972942 138.70158) + (xy 125.103604 138.86792) + (xy 125.108135 138.871852) + (xy 125.108138 138.871855) + (xy 125.194058 138.946412) + (xy 125.263363 139.006552) + (xy 125.268549 139.009552) + (xy 125.268553 139.009555) + (xy 125.374217 139.070683) + (xy 125.446454 139.112473) + (xy 125.646271 139.181861) + (xy 125.652206 139.182722) + (xy 125.652208 139.182722) + (xy 125.849664 139.211352) + (xy 125.849667 139.211352) + (xy 125.855604 139.212213) + (xy 126.066899 139.202433) + (xy 126.227389 139.163755) + (xy 126.266701 139.154281) + (xy 126.266703 139.15428) + (xy 126.272534 139.152875) + (xy 126.277992 139.150393) + (xy 126.277996 139.150392) + (xy 126.411336 139.089765) + (xy 126.465087 139.065326) + (xy 126.637611 138.942946) + (xy 126.783881 138.79015) + (xy 126.89862 138.612452) + (xy 126.941846 138.505195) + (xy 126.975442 138.421832) + (xy 126.975443 138.421829) + (xy 126.977686 138.416263) + (xy 127.018228 138.208663) + (xy 127.0185 138.203101) + (xy 127.0185 137.247154) + (xy 127.003452 137.089434) + (xy 126.943908 136.886466) + (xy 126.933591 136.866434) + (xy 126.849804 136.703751) + (xy 126.849802 136.703748) + (xy 126.847058 136.69842) + (xy 126.716396 136.53208) + (xy 126.711865 136.528148) + (xy 126.711862 136.528145) + (xy 126.561167 136.397379) + (xy 126.556637 136.393448) + (xy 126.551451 136.390448) + (xy 126.551447 136.390445) + (xy 126.378742 136.290533) + (xy 126.373546 136.287527) + (xy 126.173729 136.218139) + (xy 126.167794 136.217278) + (xy 126.167792 136.217278) + (xy 125.970336 136.188648) + (xy 125.970333 136.188648) + (xy 125.964396 136.187787) + (xy 125.795037 136.195626) + (xy 125.726064 136.178795) + (xy 125.700116 136.158856) + (xy 125.274227 135.732967) + (xy 125.240201 135.670655) + (xy 125.245266 135.59984) + (xy 125.287813 135.543004) + (xy 125.315105 135.527463) + (xy 125.382159 135.499689) + (xy 125.390958 135.495205) + (xy 125.558445 135.392568) + (xy 125.567907 135.38211) + (xy 125.564124 135.373334) + (xy 124.341922 134.151132) + (xy 125.064408 134.151132) + (xy 125.064539 134.152965) + (xy 125.06879 134.15958) + (xy 125.92029 135.01108) + (xy 125.93267 135.01784) + (xy 125.94032 135.012113) + (xy 126.045205 134.840958) + (xy 126.049687 134.832163) + (xy 126.136734 134.622012) + (xy 126.139783 134.612627) + (xy 126.192885 134.391446) + (xy 126.194428 134.381699) + (xy 126.212275 134.15493) + (xy 126.212275 134.14507) + (xy 126.194428 133.918301) + (xy 126.192885 133.908554) + (xy 126.139783 133.687373) + (xy 126.136734 133.677988) + (xy 126.049687 133.467837) + (xy 126.045205 133.459042) + (xy 125.942568 133.291555) + (xy 125.93211 133.282093) + (xy 125.923334 133.285876) + (xy 125.072022 134.137188) + (xy 125.064408 134.151132) + (xy 124.341922 134.151132) + (xy 123.47971 133.28892) + (xy 123.46733 133.28216) + (xy 123.45968 133.287887) + (xy 123.354795 133.459042) + (xy 123.350313 133.467837) + (xy 123.263266 133.677988) + (xy 123.260217 133.687373) + (xy 123.207115 133.908554) + (xy 123.205572 133.918301) + (xy 123.187725 134.14507) + (xy 123.187725 134.15493) + (xy 123.205572 134.381699) + (xy 123.207115 134.391446) + (xy 123.260217 134.612627) + (xy 123.263266 134.622012) + (xy 123.350313 134.832163) + (xy 123.354795 134.840958) + (xy 123.473643 135.034899) + (xy 123.479448 135.04289) + (xy 123.506154 135.074158) + (xy 123.535186 135.138947) + (xy 123.524581 135.209147) + (xy 123.477707 135.26247) + (xy 123.410344 135.281989) + (xy 121.3345 135.281989) + (xy 121.266379 135.261987) + (xy 121.219886 135.208331) + (xy 121.2085 135.155989) + (xy 121.2085 133.101866) + (xy 121.201745 133.039684) + (xy 121.150615 132.903295) + (xy 121.063261 132.786739) + (xy 121.036611 132.766766) + (xy 120.993994 132.734826) + (xy 120.951479 132.677967) + (xy 120.946453 132.607148) + (xy 120.980513 132.544855) + (xy 121.042845 132.510865) + (xy 121.069559 132.508) + (xy 124.090099 132.508) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 83.669476 133.753982) + (xy 83.715969 133.807638) + (xy 83.726073 133.877912) + (xy 83.696579 133.942492) + (xy 83.69045 133.949075) + (xy 79.66318 137.976345) + (xy 79.6544 137.984335) + (xy 79.654398 137.984337) + (xy 79.647705 137.988584) + (xy 79.599185 138.040253) + (xy 79.59643 138.043095) + (xy 79.575858 138.063667) + (xy 79.573141 138.06717) + (xy 79.565433 138.076195) + (xy 79.533813 138.109867) + (xy 79.529992 138.116818) + (xy 79.529991 138.116819) + (xy 79.523482 138.128658) + (xy 79.512628 138.145182) + (xy 79.506684 138.152846) + (xy 79.499481 138.162132) + (xy 79.496334 138.169404) + (xy 79.496333 138.169406) + (xy 79.481131 138.204535) + (xy 79.475911 138.21519) + (xy 79.469861 138.226196) + (xy 79.419518 138.276257) + (xy 79.359444 138.2915) + (xy 79.022651 138.2915) + (xy 78.960469 138.298255) + (xy 78.82408 138.349385) + (xy 78.707524 138.436739) + (xy 78.62017 138.553295) + (xy 78.56904 138.689684) + (xy 78.562285 138.751866) + (xy 78.562285 140.848134) + (xy 78.56904 140.910316) + (xy 78.62017 141.046705) + (xy 78.707524 141.163261) + (xy 78.82408 141.250615) + (xy 78.960469 141.301745) + (xy 79.022651 141.3085) + (xy 81.118919 141.3085) + (xy 81.181101 141.301745) + (xy 81.31749 141.250615) + (xy 81.434046 141.163261) + (xy 81.5214 141.046705) + (xy 81.57253 140.910316) + (xy 81.579285 140.848134) + (xy 81.579285 138.751866) + (xy 81.57253 138.689684) + (xy 81.5214 138.553295) + (xy 81.434046 138.436739) + (xy 81.339566 138.36593) + (xy 81.297051 138.309071) + (xy 81.292025 138.238252) + (xy 81.326036 138.176009) + (xy 83.526405 135.97564) + (xy 83.588717 135.941614) + (xy 83.659532 135.946679) + (xy 83.716368 135.989226) + (xy 83.741179 136.055746) + (xy 83.7415 136.064735) + (xy 83.7415 136.591502) + (xy 83.741693 136.59395) + (xy 83.741693 136.593958) + (xy 83.743923 136.622285) + (xy 83.744438 136.628831) + (xy 83.767095 136.706819) + (xy 83.787938 136.778559) + (xy 83.790855 136.788601) + (xy 83.799578 136.80335) + (xy 83.873953 136.929112) + (xy 83.8915 136.993251) + (xy 83.8915 137.492944) + (xy 83.890941 137.5048) + (xy 83.889212 137.512537) + (xy 83.889461 137.520459) + (xy 83.891438 137.583369) + (xy 83.8915 137.587327) + (xy 83.8915 137.616432) + (xy 83.892056 137.620832) + (xy 83.892988 137.632664) + (xy 83.894438 137.678831) + (xy 83.89665 137.686444) + (xy 83.89665 137.686445) + (xy 83.900419 137.699416) + (xy 83.90443 137.718782) + (xy 83.907118 137.740064) + (xy 83.910034 137.747429) + (xy 83.910035 137.747433) + (xy 83.924126 137.783021) + (xy 83.927965 137.794231) + (xy 83.940855 137.8386) + (xy 83.946395 137.847967) + (xy 83.948954 137.852294) + (xy 83.9665 137.916433) + (xy 83.966501 138.072835) + (xy 83.966501 138.231634) + (xy 83.966764 138.234492) + (xy 83.966764 138.234501) + (xy 83.969571 138.26505) + (xy 83.973247 138.305062) + (xy 83.975246 138.31144) + (xy 83.975246 138.311441) + (xy 84.021616 138.459406) + (xy 84.024528 138.468699) + (xy 84.113361 138.615381) + (xy 84.179595 138.681615) + (xy 84.213621 138.743927) + (xy 84.2165 138.77071) + (xy 84.2165 138.844257) + (xy 84.198276 138.909527) + (xy 84.124528 139.031301) + (xy 84.122257 139.038548) + (xy 84.122256 139.03855) + (xy 84.114669 139.06276) + (xy 84.073247 139.194938) + (xy 84.0665 139.268365) + (xy 84.066501 139.931634) + (xy 84.066764 139.934492) + (xy 84.066764 139.934501) + (xy 84.068155 139.94964) + (xy 84.073247 140.005062) + (xy 84.075246 140.01144) + (xy 84.075246 140.011441) + (xy 84.117878 140.147478) + (xy 84.124528 140.168699) + (xy 84.213361 140.315381) + (xy 84.334619 140.436639) + (xy 84.481301 140.525472) + (xy 84.488548 140.527743) + (xy 84.48855 140.527744) + (xy 84.524025 140.538861) + (xy 84.644938 140.576753) + (xy 84.718365 140.5835) + (xy 84.721263 140.5835) + (xy 84.975665 140.583499) + (xy 85.231634 140.583499) + (xy 85.234492 140.583236) + (xy 85.234501 140.583236) + (xy 85.270004 140.579974) + (xy 85.305062 140.576753) + (xy 85.328031 140.569555) + (xy 85.46145 140.527744) + (xy 85.461452 140.527743) + (xy 85.468699 140.525472) + (xy 85.615381 140.436639) + (xy 85.710905 140.341115) + (xy 85.773217 140.307089) + (xy 85.844032 140.312154) + (xy 85.889095 140.341115) + (xy 85.984619 140.436639) + (xy 86.131301 140.525472) + (xy 86.146061 140.530097) + (xy 86.205082 140.569555) + (xy 86.233402 140.634659) + (xy 86.222028 140.704739) + (xy 86.172518 140.758785) + (xy 86.150325 140.771909) + (xy 86.137896 140.781551) + (xy 86.031551 140.887896) + (xy 86.021911 140.900322) + (xy 85.945352 141.029779) + (xy 85.939107 141.04421) + (xy 85.900061 141.178605) + (xy 85.900101 141.192706) + (xy 85.90737 141.196) + (xy 87.2655 141.196) + (xy 87.333621 141.216002) + (xy 87.380114 141.269658) + (xy 87.3915 141.322) + (xy 87.3915 142.239884) + (xy 87.395975 142.255123) + (xy 87.397365 142.256328) + (xy 87.405048 142.257999) + (xy 87.788984 142.257999) + (xy 87.79392 142.257805) + (xy 87.822336 142.25557) + (xy 87.834934 142.253269) + (xy 87.920347 142.228454) + (xy 87.991343 142.228657) + (xy 88.050959 142.26721) + (xy 88.080268 142.331875) + (xy 88.0815 142.349451) + (xy 88.0815 142.450029) + (xy 88.061498 142.51815) + (xy 88.007842 142.564643) + (xy 87.937568 142.574747) + (xy 87.920353 142.571027) + (xy 87.884156 142.560511) + (xy 87.835008 142.546232) + (xy 87.835003 142.546231) + (xy 87.828831 142.544438) + (xy 87.822426 142.543934) + (xy 87.822421 142.543933) + (xy 87.793958 142.541693) + (xy 87.79395 142.541693) + (xy 87.791502 142.5415) + (xy 86.6345 142.5415) + (xy 86.566379 142.521498) + (xy 86.519886 142.467842) + (xy 86.5085 142.4155) + (xy 86.5085 142.384) + (xy 86.528502 142.315879) + (xy 86.582158 142.269386) + (xy 86.6345 142.258) + (xy 86.865385 142.258) + (xy 86.880624 142.253525) + (xy 86.881829 142.252135) + (xy 86.8835 142.244452) + (xy 86.8835 141.722115) + (xy 86.879025 141.706876) + (xy 86.877635 141.705671) + (xy 86.869952 141.704) + (xy 86.254842 141.704) + (xy 86.190703 141.686453) + (xy 86.120427 141.644892) + (xy 86.120428 141.644892) + (xy 86.113601 141.640855) + (xy 86.10599 141.638644) + (xy 86.105988 141.638643) + (xy 86.032306 141.617237) + (xy 85.953831 141.594438) + (xy 85.947426 141.593934) + (xy 85.947421 141.593933) + (xy 85.918958 141.591693) + (xy 85.91895 141.591693) + (xy 85.916502 141.5915) + (xy 84.608498 141.5915) + (xy 84.60605 141.591693) + (xy 84.606042 141.591693) + (xy 84.577579 141.593933) + (xy 84.577574 141.593934) + (xy 84.571169 141.594438) + (xy 84.492694 141.617237) + (xy 84.419012 141.638643) + (xy 84.41901 141.638644) + (xy 84.411399 141.640855) + (xy 84.404572 141.644892) + (xy 84.404573 141.644892) + (xy 84.270888 141.723953) + (xy 84.206749 141.7415) + (xy 77.995734 141.7415) + (xy 77.927613 141.721498) + (xy 77.906639 141.704595) + (xy 76.551994 140.349949) + (xy 76.517968 140.287637) + (xy 76.51857 140.23144) + (xy 76.564165 140.041524) + (xy 76.564166 140.041518) + (xy 76.56532 140.036711) + (xy 76.58395 139.8) + (xy 76.56532 139.563289) + (xy 76.562897 139.553193) + (xy 76.519721 139.373355) + (xy 76.50989 139.332406) + (xy 76.478506 139.256638) + (xy 76.42092 139.117611) + (xy 76.420918 139.117607) + (xy 76.419025 139.113037) + (xy 76.416439 139.108817) + (xy 76.297544 138.914798) + (xy 76.29754 138.914792) + (xy 76.294961 138.910584) + (xy 76.152622 138.743927) + (xy 76.143962 138.733787) + (xy 76.140754 138.730031) + (xy 75.960201 138.575824) + (xy 75.955993 138.573245) + (xy 75.955987 138.573241) + (xy 75.761968 138.454346) + (xy 75.757748 138.45176) + (xy 75.753178 138.449867) + (xy 75.753174 138.449865) + (xy 75.542952 138.362789) + (xy 75.54295 138.362788) + (xy 75.538379 138.360895) + (xy 75.430802 138.335068) + (xy 75.312309 138.30662) + (xy 75.312303 138.306619) + (xy 75.307496 138.305465) + (xy 75.070785 138.286835) + (xy 74.834074 138.305465) + (xy 74.82926 138.306621) + (xy 74.826562 138.307048) + (xy 74.756151 138.297949) + (xy 74.701837 138.252227) + (xy 74.680864 138.184399) + (xy 74.699891 138.115999) + (xy 74.717756 138.093504) + (xy 79.040375 133.770885) + (xy 79.102687 133.736859) + (xy 79.12947 133.73398) + (xy 83.601355 133.73398) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 119.801214 136.618991) + (xy 119.847707 136.672647) + (xy 119.857811 136.742921) + (xy 119.844961 136.782969) + (xy 119.839581 136.793348) + (xy 119.765039 136.978312) + (xy 119.761645 136.98977) + (xy 119.723143 137.186928) + (xy 119.722066 137.195791) + (xy 119.722 137.1985) + (xy 119.722 137.427885) + (xy 119.726475 137.443124) + (xy 119.727865 137.444329) + (xy 119.735548 137.446) + (xy 121.919885 137.446) + (xy 121.935124 137.441525) + (xy 121.936329 137.440135) + (xy 121.938 137.432452) + (xy 121.938 137.250168) + (xy 121.937715 137.244192) + (xy 121.923529 137.095506) + (xy 121.92127 137.083772) + (xy 121.865128 136.892401) + (xy 121.860698 136.881325) + (xy 121.809893 136.782681) + (xy 121.796484 136.712962) + (xy 121.822897 136.647062) + (xy 121.880746 136.605903) + (xy 121.921909 136.598989) + (xy 122.272528 136.598989) + (xy 122.340649 136.618991) + (xy 122.387142 136.672647) + (xy 122.397246 136.742921) + (xy 122.384451 136.782792) + (xy 122.38138 136.787548) + (xy 122.379138 136.79311) + (xy 122.379138 136.793111) + (xy 122.306721 136.972803) + (xy 122.302314 136.983737) + (xy 122.261772 137.191337) + (xy 122.2615 137.196899) + (xy 122.2615 137.825051) + (xy 122.241498 137.893172) + (xy 122.224595 137.914146) + (xy 122.140055 137.998686) + (xy 122.077743 138.032712) + (xy 122.006928 138.027647) + (xy 121.950092 137.9851) + (xy 121.937832 137.960608) + (xy 121.932135 137.955671) + (xy 121.924452 137.954) + (xy 119.740115 137.954) + (xy 119.724876 137.958475) + (xy 119.723671 137.959865) + (xy 119.722 137.967548) + (xy 119.722 138.149832) + (xy 119.722285 138.155808) + (xy 119.736471 138.304494) + (xy 119.73873 138.316228) + (xy 119.794872 138.507599) + (xy 119.799302 138.518675) + (xy 119.890619 138.695978) + (xy 119.897068 138.706023) + (xy 119.921541 138.737179) + (xy 119.94789 138.803105) + (xy 119.934415 138.872811) + (xy 119.885393 138.924166) + (xy 119.822454 138.941011) + (xy 119.297812 138.941011) + (xy 119.229691 138.921009) + (xy 119.183198 138.867353) + (xy 119.173094 138.797079) + (xy 119.191961 138.746663) + (xy 119.275363 138.617497) + (xy 119.275365 138.617493) + (xy 119.27862 138.612452) + (xy 119.321846 138.505195) + (xy 119.355442 138.421832) + (xy 119.355443 138.421829) + (xy 119.357686 138.416263) + (xy 119.398228 138.208663) + (xy 119.3985 138.203101) + (xy 119.3985 137.247154) + (xy 119.383452 137.089434) + (xy 119.323908 136.886466) + (xy 119.270455 136.78268) + (xy 119.257046 136.712962) + (xy 119.283459 136.647062) + (xy 119.341307 136.605903) + (xy 119.382471 136.598989) + (xy 119.733093 136.598989) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 100.17396 134.470423) + (xy 100.219195 134.522627) + (xy 100.268186 134.627689) + (xy 100.268189 134.627694) + (xy 100.270512 134.632676) + (xy 100.273668 134.637183) + (xy 100.273669 134.637185) + (xy 100.380883 134.790302) + (xy 100.398023 134.814781) + (xy 100.555219 134.971977) + (xy 100.559727 134.975134) + (xy 100.55973 134.975136) + (xy 100.597382 135.0015) + (xy 100.737323 135.099488) + (xy 100.742305 135.101811) + (xy 100.74231 135.101814) + (xy 100.929784 135.189234) + (xy 100.938804 135.19344) + (xy 100.944112 135.194862) + (xy 100.944114 135.194863) + (xy 100.997423 135.209147) + (xy 101.153537 135.250978) + (xy 101.375 135.270353) + (xy 101.596463 135.250978) + (xy 101.752577 135.209147) + (xy 101.805886 135.194863) + (xy 101.805888 135.194862) + (xy 101.811196 135.19344) + (xy 101.816178 135.191117) + (xy 101.821351 135.189234) + (xy 101.822143 135.19141) + (xy 101.882551 135.182228) + (xy 101.947367 135.211201) + (xy 101.98623 135.270617) + (xy 101.986801 135.341611) + (xy 101.98073 135.358335) + (xy 101.978777 135.362721) + (xy 101.975473 135.368444) + (xy 101.916458 135.550072) + (xy 101.915768 135.556633) + (xy 101.915768 135.556635) + (xy 101.905423 135.655062) + (xy 101.896496 135.74) + (xy 101.916458 135.929928) + (xy 101.975473 136.111556) + (xy 101.978776 136.117278) + (xy 101.978777 136.117279) + (xy 102.029967 136.205942) + (xy 102.046705 136.274937) + (xy 102.023485 136.342029) + (xy 102.009943 136.358037) + (xy 101.918741 136.449239) + (xy 101.856429 136.483265) + (xy 101.785614 136.4782) + (xy 101.740551 136.449239) + (xy 101.650443 136.359131) + (xy 101.638574 136.349824) + (xy 101.504988 136.268921) + (xy 101.491243 136.262715) + (xy 101.341356 136.215744) + (xy 101.328306 136.213131) + (xy 101.273414 136.208087) + (xy 101.261876 136.211475) + (xy 101.260671 136.212865) + (xy 101.259 136.220548) + (xy 101.259 137.318) + (xy 101.238998 137.386121) + (xy 101.185342 137.432614) + (xy 101.133 137.444) + (xy 100.115115 137.444) + (xy 100.088396 137.451845) + (xy 100.017399 137.451845) + (xy 99.963804 137.420044) + (xy 99.530405 136.986645) + (xy 99.496379 136.924333) + (xy 99.495686 136.917885) + (xy 100.097 136.917885) + (xy 100.101475 136.933124) + (xy 100.102865 136.934329) + (xy 100.110548 136.936) + (xy 100.732885 136.936) + (xy 100.748124 136.931525) + (xy 100.749329 136.930135) + (xy 100.751 136.922452) + (xy 100.751 136.225116) + (xy 100.746525 136.209877) + (xy 100.745135 136.208672) + (xy 100.740706 136.207709) + (xy 100.681685 136.213132) + (xy 100.668649 136.215743) + (xy 100.518757 136.262715) + (xy 100.505012 136.268921) + (xy 100.371426 136.349824) + (xy 100.359557 136.359131) + (xy 100.249131 136.469557) + (xy 100.239824 136.481426) + (xy 100.158921 136.615012) + (xy 100.152715 136.628757) + (xy 100.105744 136.778644) + (xy 100.103131 136.791694) + (xy 100.097266 136.855521) + (xy 100.097 136.861309) + (xy 100.097 136.917885) + (xy 99.495686 136.917885) + (xy 99.4935 136.89755) + (xy 99.4935 135.150499) + (xy 99.513502 135.082378) + (xy 99.547229 135.047286) + (xy 99.56492 135.034899) + (xy 99.654781 134.971977) + (xy 99.811977 134.814781) + (xy 99.829118 134.790302) + (xy 99.936331 134.637185) + (xy 99.936332 134.637183) + (xy 99.939488 134.632676) + (xy 99.941811 134.627694) + (xy 99.941814 134.627689) + (xy 99.990805 134.522627) + (xy 100.037723 134.469342) + (xy 100.106 134.449881) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 95.39271 132.528002) + (xy 95.439203 132.581658) + (xy 95.449307 132.651932) + (xy 95.419813 132.716512) + (xy 95.368819 132.751982) + (xy 95.294946 132.779676) + (xy 95.279351 132.788214) + (xy 95.177276 132.864715) + (xy 95.164715 132.877276) + (xy 95.088214 132.979351) + (xy 95.079676 132.994946) + (xy 95.034522 133.115394) + (xy 95.030895 133.130649) + (xy 95.025369 133.181514) + (xy 95.025 133.188328) + (xy 95.025 133.494556) + (xy 95.004998 133.562677) + (xy 94.951342 133.60917) + (xy 94.881068 133.619274) + (xy 94.816488 133.58978) + (xy 94.809905 133.583651) + (xy 94.198649 132.972395) + (xy 94.190659 132.963615) + (xy 94.190657 132.963613) + (xy 94.18641 132.95692) + (xy 94.134736 132.908395) + (xy 94.131895 132.905641) + (xy 94.111327 132.885073) + (xy 94.10782 132.882353) + (xy 94.098798 132.874647) + (xy 94.065127 132.843028) + (xy 94.058175 132.839206) + (xy 94.046336 132.832697) + (xy 94.029812 132.821843) + (xy 94.019126 132.813555) + (xy 94.012862 132.808696) + (xy 94.00559 132.805549) + (xy 94.005588 132.805548) + (xy 93.970459 132.790346) + (xy 93.959799 132.785124) + (xy 93.926278 132.766695) + (xy 93.926276 132.766694) + (xy 93.919331 132.762876) + (xy 93.898553 132.757541) + (xy 93.879849 132.751136) + (xy 93.876374 132.749632) + (xy 93.821804 132.704216) + (xy 93.800451 132.636507) + (xy 93.819094 132.568001) + (xy 93.871814 132.52045) + (xy 93.926426 132.508) + (xy 95.324589 132.508) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 101.126778 132.528002) + (xy 101.173271 132.581658) + (xy 101.183375 132.651932) + (xy 101.153881 132.716512) + (xy 101.091268 132.755707) + (xy 100.944114 132.795137) + (xy 100.944112 132.795138) + (xy 100.938804 132.79656) + (xy 100.933823 132.798882) + (xy 100.933822 132.798883) + (xy 100.742311 132.888186) + (xy 100.742306 132.888189) + (xy 100.737324 132.890512) + (xy 100.732817 132.893668) + (xy 100.732815 132.893669) + (xy 100.55973 133.014864) + (xy 100.559727 133.014866) + (xy 100.555219 133.018023) + (xy 100.398023 133.175219) + (xy 100.394866 133.179727) + (xy 100.394864 133.17973) + (xy 100.273669 133.352815) + (xy 100.270512 133.357324) + (xy 100.268189 133.362306) + (xy 100.268186 133.362311) + (xy 100.219195 133.467373) + (xy 100.172277 133.520658) + (xy 100.104 133.540119) + (xy 100.03604 133.519577) + (xy 99.990805 133.467373) + (xy 99.941814 133.362311) + (xy 99.941811 133.362306) + (xy 99.939488 133.357324) + (xy 99.936331 133.352815) + (xy 99.815136 133.17973) + (xy 99.815134 133.179727) + (xy 99.811977 133.175219) + (xy 99.654781 133.018023) + (xy 99.650273 133.014866) + (xy 99.65027 133.014864) + (xy 99.512986 132.918737) + (xy 99.472677 132.890512) + (xy 99.467695 132.888189) + (xy 99.46769 132.888186) + (xy 99.276178 132.798883) + (xy 99.276177 132.798882) + (xy 99.271196 132.79656) + (xy 99.265888 132.795138) + (xy 99.265886 132.795137) + (xy 99.118732 132.755707) + (xy 99.058109 132.718755) + (xy 99.027088 132.654894) + (xy 99.035516 132.5844) + (xy 99.080719 132.529653) + (xy 99.151343 132.508) + (xy 101.058657 132.508) + ) + ) + (filled_polygon + (layer "F.Cu") + (pts + (xy 98.586778 132.528002) + (xy 98.633271 132.581658) + (xy 98.643375 132.651932) + (xy 98.613881 132.716512) + (xy 98.551268 132.755707) + (xy 98.404114 132.795137) + (xy 98.404112 132.795138) + (xy 98.398804 132.79656) + (xy 98.393823 132.798882) + (xy 98.393822 132.798883) + (xy 98.202311 132.888186) + (xy 98.202306 132.888189) + (xy 98.197324 132.890512) + (xy 98.192817 132.893668) + (xy 98.192815 132.893669) + (xy 98.01973 133.014864) + (xy 98.019727 133.014866) + (xy 98.015219 133.018023) + (xy 97.858023 133.175219) + (xy 97.854865 133.179729) + (xy 97.85486 133.179735) + (xy 97.794212 133.26635) + (xy 97.738755 133.310679) + (xy 97.668136 133.317988) + (xy 97.604775 133.285958) + (xy 97.56879 133.224756) + (xy 97.564999 133.19408) + (xy 97.564999 133.188331) + (xy 97.564629 133.18151) + (xy 97.559105 133.130648) + (xy 97.555479 133.115396) + (xy 97.510324 132.994946) + (xy 97.501786 132.979351) + (xy 97.425285 132.877276) + (xy 97.412724 132.864715) + (xy 97.310649 132.788214) + (xy 97.295054 132.779676) + (xy 97.221181 132.751982) + (xy 97.164417 132.70934) + (xy 97.139717 132.642779) + (xy 97.154925 132.57343) + (xy 97.205211 132.523312) + (xy 97.265411 132.508) + (xy 98.518657 132.508) + ) + ) + (filled_polygon + (layer "B.Cu") + (pts + (xy 95.39271 132.528002) + (xy 95.439203 132.581658) + (xy 95.449307 132.651932) + (xy 95.419813 132.716512) + (xy 95.368819 132.751982) + (xy 95.294946 132.779676) + (xy 95.279351 132.788214) + (xy 95.177276 132.864715) + (xy 95.164715 132.877276) + (xy 95.088214 132.979351) + (xy 95.079676 132.994946) + (xy 95.034522 133.115394) + (xy 95.030895 133.130649) + (xy 95.025369 133.181514) + (xy 95.025 133.188328) + (xy 95.025 133.722885) + (xy 95.029475 133.738124) + (xy 95.030865 133.739329) + (xy 95.038548 133.741) + (xy 96.423 133.741) + (xy 96.491121 133.761002) + (xy 96.537614 133.814658) + (xy 96.549 133.867) + (xy 96.549 135.246884) + (xy 96.553475 135.262123) + (xy 96.554865 135.263328) + (xy 96.562548 135.264999) + (xy 97.101669 135.264999) + (xy 97.10849 135.264629) + (xy 97.159352 135.259105) + (xy 97.174604 135.255479) + (xy 97.295054 135.210324) + (xy 97.310649 135.201786) + (xy 97.412724 135.125285) + (xy 97.425285 135.112724) + (xy 97.501786 135.010649) + (xy 97.510324 134.995054) + (xy 97.555478 134.874606) + (xy 97.559105 134.859351) + (xy 97.564631 134.808486) + (xy 97.565 134.801672) + (xy 97.565 134.795922) + (xy 97.585002 134.727801) + (xy 97.638658 134.681308) + (xy 97.708932 134.671204) + (xy 97.773512 134.700698) + (xy 97.794213 134.723651) + (xy 97.847888 134.800306) + (xy 97.858023 134.814781) + (xy 98.015219 134.971977) + (xy 98.019727 134.975134) + (xy 98.01973 134.975136) + (xy 98.070448 135.010649) + (xy 98.197323 135.099488) + (xy 98.202305 135.101811) + (xy 98.20231 135.101814) + (xy 98.389784 135.189234) + (xy 98.398804 135.19344) + (xy 98.404112 135.194862) + (xy 98.404114 135.194863) + (xy 98.429951 135.201786) + (xy 98.613537 135.250978) + (xy 98.835 135.270353) + (xy 99.056463 135.250978) + (xy 99.067636 135.247984) + (xy 99.138613 135.249676) + (xy 99.189338 135.280597) + (xy 100.640474 136.731733) + (xy 100.6745 136.794045) + (xy 100.672376 136.85598) + (xy 100.664371 136.883534) + (xy 100.663867 136.889941) + (xy 100.663866 136.889945) + (xy 100.661693 136.917556) + (xy 100.6615 136.920011) + (xy 100.661501 137.419988) + (xy 100.664371 137.456466) + (xy 100.709731 137.612596) + (xy 100.792494 137.752541) + (xy 100.907459 137.867506) + (xy 100.91428 137.87154) + (xy 100.969083 137.90395) + (xy 101.047404 137.950269) + (xy 101.055015 137.95248) + (xy 101.055017 137.952481) + (xy 101.119222 137.971134) + (xy 101.203534 137.995629) + (xy 101.209941 137.996133) + (xy 101.209945 137.996134) + (xy 101.237556 137.998307) + (xy 101.237562 137.998307) + (xy 101.240011 137.9985) + (xy 101.439878 137.9985) + (xy 101.639988 137.998499) + (xy 101.676466 137.995629) + (xy 101.774144 137.967251) + (xy 101.824983 137.952481) + (xy 101.824985 137.95248) + (xy 101.832596 137.950269) + (xy 101.839421 137.946233) + (xy 101.839425 137.946231) + (xy 101.885861 137.918769) + (xy 101.954677 137.901309) + (xy 102.014139 137.918769) + (xy 102.060575 137.946231) + (xy 102.060579 137.946233) + (xy 102.067404 137.950269) + (xy 102.075015 137.95248) + (xy 102.075017 137.952481) + (xy 102.139222 137.971134) + (xy 102.223534 137.995629) + (xy 102.229943 137.996133) + (xy 102.229946 137.996134) + (xy 102.240632 137.996975) + (xy 102.247322 137.997501) + (xy 102.313663 138.022786) + (xy 102.355803 138.079923) + (xy 102.360363 138.150773) + (xy 102.326532 138.212208) + (xy 93.962395 146.576345) + (xy 93.953615 146.584335) + (xy 93.953613 146.584337) + (xy 93.94692 146.588584) + (xy 93.941494 146.594362) + (xy 93.941493 146.594363) + (xy 93.898396 146.640257) + (xy 93.895641 146.643099) + (xy 93.875073 146.663667) + (xy 93.872356 146.66717) + (xy 93.864648 146.676195) + (xy 93.833028 146.709867) + (xy 93.829207 146.716818) + (xy 93.829206 146.716819) + (xy 93.822697 146.728658) + (xy 93.811843 146.745182) + (xy 93.806866 146.751599) + (xy 93.798696 146.762132) + (xy 93.795549 146.769404) + (xy 93.795548 146.769406) + (xy 93.780346 146.804535) + (xy 93.775124 146.815195) + (xy 93.760355 146.84206) + (xy 93.752876 146.855663) + (xy 93.747541 146.876441) + (xy 93.741142 146.895131) + (xy 93.73262 146.914824) + (xy 93.73138 146.922655) + (xy 93.725394 146.960448) + (xy 93.722987 146.972071) + (xy 93.7115 147.016812) + (xy 93.7115 147.038259) + (xy 93.709949 147.057969) + (xy 93.706594 147.079152) + (xy 93.70734 147.087043) + (xy 93.710941 147.125138) + (xy 93.7115 147.136996) + (xy 93.7115 153.515241) + (xy 93.691498 153.583362) + (xy 93.679136 153.599551) + (xy 93.64636 153.635953) + (xy 93.63096 153.653056) + (xy 93.604859 153.698265) + (xy 93.544087 153.803525) + (xy 93.535473 153.818444) + (xy 93.476458 154.000072) + (xy 93.475768 154.006633) + (xy 93.475768 154.006635) + (xy 93.466276 154.096944) + (xy 93.456496 154.19) + (xy 93.457186 154.196565) + (xy 93.474785 154.364007) + (xy 93.476458 154.379928) + (xy 93.535473 154.561556) + (xy 93.63096 154.726944) + (xy 93.635378 154.731851) + (xy 93.635379 154.731852) + (xy 93.726647 154.833215) + (xy 93.758747 154.868866) + (xy 93.913248 154.981118) + (xy 93.919276 154.983802) + (xy 93.919278 154.983803) + (xy 94.081681 155.056109) + (xy 94.087712 155.058794) + (xy 94.181113 155.078647) + (xy 94.268056 155.097128) + (xy 94.268061 155.097128) + (xy 94.274513 155.0985) + (xy 94.465487 155.0985) + (xy 94.471939 155.097128) + (xy 94.471944 155.097128) + (xy 94.559303 155.078559) + (xy 94.630094 155.083961) + (xy 94.686727 155.126778) + (xy 94.71122 155.193416) + (xy 94.7115 155.201806) + (xy 94.7115 155.425241) + (xy 94.691498 155.493362) + (xy 94.679136 155.509551) + (xy 94.652562 155.539065) + (xy 94.63096 155.563056) + (xy 94.592157 155.630264) + (xy 94.538818 155.722651) + (xy 94.535473 155.728444) + (xy 94.476458 155.910072) + (xy 94.475768 155.916633) + (xy 94.475768 155.916635) + (xy 94.47351 155.938119) + (xy 94.456496 156.1) + (xy 94.457186 156.106565) + (xy 94.473624 156.26296) + (xy 94.476458 156.289928) + (xy 94.535473 156.471556) + (xy 94.538776 156.477278) + (xy 94.538777 156.477279) + (xy 94.552677 156.501354) + (xy 94.63096 156.636944) + (xy 94.635378 156.641851) + (xy 94.635379 156.641852) + (xy 94.748314 156.767279) + (xy 94.758747 156.778866) + (xy 94.913248 156.891118) + (xy 94.919276 156.893802) + (xy 94.919278 156.893803) + (xy 95.081679 156.966108) + (xy 95.087712 156.968794) + (xy 95.181112 156.988647) + (xy 95.268056 157.007128) + (xy 95.268061 157.007128) + (xy 95.274513 157.0085) + (xy 95.465487 157.0085) + (xy 95.471939 157.007128) + (xy 95.471944 157.007128) + (xy 95.558888 156.988647) + (xy 95.652288 156.968794) + (xy 95.658315 156.966111) + (xy 95.658323 156.966108) + (xy 95.744252 156.92785) + (xy 95.814619 156.918416) + (xy 95.878916 156.948523) + (xy 95.916729 157.008612) + (xy 95.9215 157.042957) + (xy 95.9215 157.58505) + (xy 95.901498 157.653171) + (xy 95.884595 157.674146) + (xy 95.314144 158.244596) + (xy 95.251832 158.278621) + (xy 95.225049 158.2815) + (xy 95.204513 158.2815) + (xy 95.198061 158.282872) + (xy 95.198056 158.282872) + (xy 95.116852 158.300133) + (xy 95.017712 158.321206) + (xy 95.011682 158.323891) + (xy 95.011681 158.323891) + (xy 94.849278 158.396197) + (xy 94.849276 158.396198) + (xy 94.843248 158.398882) + (xy 94.837907 158.402762) + (xy 94.837906 158.402763) + (xy 94.804495 158.427038) + (xy 94.688747 158.511134) + (xy 94.56096 158.653056) + (xy 94.465473 158.818444) + (xy 94.406458 159.000072) + (xy 94.386496 159.19) + (xy 94.387186 159.196565) + (xy 94.403327 159.350135) + (xy 94.406458 159.379928) + (xy 94.465473 159.561556) + (xy 94.56096 159.726944) + (xy 94.688747 159.868866) + (xy 94.843248 159.981118) + (xy 94.849276 159.983802) + (xy 94.849278 159.983803) + (xy 95.011681 160.056109) + (xy 95.017712 160.058794) + (xy 95.111113 160.078647) + (xy 95.198056 160.097128) + (xy 95.198061 160.097128) + (xy 95.204513 160.0985) + (xy 95.395487 160.0985) + (xy 95.401939 160.097128) + (xy 95.401944 160.097128) + (xy 95.488887 160.078647) + (xy 95.582288 160.058794) + (xy 95.588319 160.056109) + (xy 95.750722 159.983803) + (xy 95.750724 159.983802) + (xy 95.756752 159.981118) + (xy 95.911253 159.868866) + (xy 96.03904 159.726944) + (xy 96.134527 159.561556) + (xy 96.17804 159.427637) + (xy 96.191502 159.386207) + (xy 96.191502 159.386205) + (xy 96.193542 159.379928) + (xy 96.206755 159.254215) + (xy 96.233768 159.188559) + (xy 96.242969 159.178291) + (xy 96.664602 158.756657) (xy 115.472 158.756657) (xy 115.472301 158.762805) (xy 115.485812 158.900603) @@ -12874,38 +10147,29 @@ (xy 115.473671 158.669865) (xy 115.472 158.677548) (xy 115.472 158.756657) - (xy 73.064473 158.756657) - (xy 72.895237 158.618139) - (xy 72.655923 158.471487) - (xy 72.633348 158.461577) - (xy 72.402853 158.360397) - (xy 72.398921 158.358671) - (xy 72.379519 158.353144) - (xy 72.133114 158.282954) - (xy 72.133115 158.282954) - (xy 72.128986 158.281778) - (xy 71.923217 158.252493) - (xy 71.855365 158.242836) - (xy 71.855363 158.242836) - (xy 71.851113 158.242231) - (xy 71.846824 158.242209) - (xy 71.846817 158.242208) - (xy 71.57473 158.240783) - (xy 71.574723 158.240783) - (xy 71.570444 158.240761) - (xy 71.566199 158.24132) - (xy 71.566197 158.24132) - (xy 71.502813 158.249665) - (xy 71.292172 158.277397) - (xy 71.021446 158.351459) - (xy 70.763277 158.461577) - (xy 70.709107 158.493997) - (xy 70.698706 158.500222) - (xy 70.629982 158.518042) - (xy 70.562534 158.495878) - (xy 70.517776 158.440767) - (xy 70.508 158.392106) - (xy 70.508 158.137885) + (xy 96.664602 158.756657) + (xy 96.987604 158.433655) + (xy 96.996385 158.425665) + (xy 96.996387 158.425664) + (xy 97.00308 158.421416) + (xy 97.05162 158.369726) + (xy 97.054374 158.366885) + (xy 97.074926 158.346333) + (xy 97.077638 158.342837) + (xy 97.085349 158.333808) + (xy 97.097183 158.321206) + (xy 97.116972 158.300133) + (xy 97.120794 158.293181) + (xy 97.127301 158.281345) + (xy 97.138158 158.264816) + (xy 97.146447 158.254131) + (xy 97.146448 158.254129) + (xy 97.151304 158.247869) + (xy 97.169657 158.205456) + (xy 97.174868 158.194819) + (xy 97.197124 158.154337) + (xy 97.200176 158.142452) + (xy 97.201348 158.137885) (xy 115.472 158.137885) (xy 115.476475 158.153124) (xy 115.477865 158.154329) @@ -13016,20 +10280,1887 @@ (xy 115.472393 158.049761) (xy 115.472 158.056785) (xy 115.472 158.137885) - (xy 70.508 158.137885) + (xy 97.201348 158.137885) + (xy 97.202457 158.133566) + (xy 97.208859 158.114864) + (xy 97.217379 158.095177) + (xy 97.223395 158.057195) + (xy 97.224605 158.049552) + (xy 97.227013 158.037926) + (xy 97.236529 158.000865) + (xy 97.236529 158.000864) + (xy 97.2385 157.993188) + (xy 97.2385 157.971742) + (xy 97.240051 157.952031) + (xy 97.242166 157.938678) + (xy 97.243406 157.930849) + (xy 97.239059 157.884864) + (xy 97.2385 157.873006) + (xy 97.2385 148.13495) + (xy 97.258502 148.066829) + (xy 97.275405 148.045855) + (xy 99.576405 145.744855) + (xy 99.638717 145.710829) + (xy 99.709532 145.715894) + (xy 99.766368 145.758441) + (xy 99.791179 145.824961) + (xy 99.7915 145.83395) + (xy 99.7915 155.667944) + (xy 99.790941 155.6798) + (xy 99.789212 155.687537) + (xy 99.789461 155.695459) + (xy 99.791438 155.758369) + (xy 99.7915 155.762327) + (xy 99.7915 155.791432) + (xy 99.792056 155.795832) + (xy 99.792988 155.807664) + (xy 99.794438 155.853831) + (xy 99.79665 155.861444) + (xy 99.79665 155.861445) + (xy 99.800419 155.874416) + (xy 99.80443 155.893782) + (xy 99.807118 155.915064) + (xy 99.810034 155.922429) + (xy 99.810035 155.922433) + (xy 99.824126 155.958021) + (xy 99.827965 155.969231) + (xy 99.840855 156.0136) + (xy 99.851775 156.032065) + (xy 99.860466 156.049805) + (xy 99.868365 156.069756) + (xy 99.89125 156.101254) + (xy 99.895516 156.107126) + (xy 99.902033 156.117048) + (xy 99.921507 156.149977) + (xy 99.92151 156.149981) + (xy 99.925547 156.156807) + (xy 99.940711 156.171971) + (xy 99.953551 156.187004) + (xy 99.966159 156.204357) + (xy 99.99789 156.230607) + (xy 100.001752 156.233802) + (xy 100.010532 156.241792) + (xy 100.14703 156.37829) + (xy 100.181056 156.440602) + (xy 100.183244 156.454211) + (xy 100.188405 156.503305) + (xy 100.193214 156.549059) + (xy 100.196458 156.579928) + (xy 100.255473 156.761556) + (xy 100.258776 156.767278) + (xy 100.258777 156.767279) + (xy 100.292686 156.82601) + (xy 100.35096 156.926944) + (xy 100.355378 156.931851) + (xy 100.355379 156.931852) + (xy 100.474325 157.063955) + (xy 100.478747 157.068866) + (xy 100.57311 157.137425) + (xy 100.623081 157.173731) + (xy 100.633248 157.181118) + (xy 100.639276 157.183802) + (xy 100.639278 157.183803) + (xy 100.801681 157.256109) + (xy 100.807712 157.258794) + (xy 100.897575 157.277895) + (xy 100.988056 157.297128) + (xy 100.988061 157.297128) + (xy 100.994513 157.2985) + (xy 101.185487 157.2985) + (xy 101.191939 157.297128) + (xy 101.191944 157.297128) + (xy 101.282425 157.277895) + (xy 101.372288 157.258794) + (xy 101.378319 157.256109) + (xy 101.540722 157.183803) + (xy 101.540724 157.183802) + (xy 101.546752 157.181118) + (xy 101.55692 157.173731) + (xy 101.60689 157.137425) + (xy 101.701253 157.068866) + (xy 101.705675 157.063955) + (xy 101.824621 156.931852) + (xy 101.824622 156.931851) + (xy 101.82904 156.926944) + (xy 101.887314 156.82601) + (xy 101.921223 156.767279) + (xy 101.921224 156.767278) + (xy 101.924527 156.761556) + (xy 101.983542 156.579928) + (xy 101.985821 156.558251) + (xy 102.002814 156.396565) + (xy 102.003504 156.39) + (xy 102.00066 156.362945) + (xy 101.984232 156.206635) + (xy 101.984232 156.206633) + (xy 101.983542 156.200072) + (xy 101.924527 156.018444) + (xy 101.82904 155.853056) + (xy 101.777967 155.796333) + (xy 101.705675 155.716045) + (xy 101.705674 155.716044) + (xy 101.701253 155.711134) + (xy 101.590123 155.630393) + (xy 101.552094 155.602763) + (xy 101.552093 155.602762) + (xy 101.546752 155.598882) + (xy 101.540724 155.596198) + (xy 101.540722 155.596197) + (xy 101.378319 155.523891) + (xy 101.378318 155.523891) + (xy 101.372288 155.521206) + (xy 101.208302 155.48635) + (xy 101.14583 155.452622) + (xy 101.111508 155.390472) + (xy 101.1085 155.363103) + (xy 101.1085 154.826657) + (xy 115.472 154.826657) + (xy 115.472301 154.832805) + (xy 115.485812 154.970603) + (xy 115.488195 154.982638) + (xy 115.541767 155.160076) + (xy 115.546441 155.171416) + (xy 115.63346 155.335077) + (xy 115.640249 155.345294) + (xy 115.757397 155.488933) + (xy 115.766041 155.497637) + (xy 115.908856 155.615784) + (xy 115.919027 155.622644) + (xy 116.082076 155.710804) + (xy 116.093381 155.715556) + (xy 116.208692 155.75125) + (xy 116.222795 155.751456) + (xy 116.226 155.744701) + (xy 116.226 155.737924) + (xy 116.734 155.737924) + (xy 116.737973 155.751455) + (xy 116.745768 155.752575) + (xy 116.853521 155.720862) + (xy 116.864889 155.716269) + (xy 117.029154 155.630393) + (xy 117.039415 155.623679) + (xy 117.183873 155.507532) + (xy 117.192632 155.498954) + (xy 117.237 155.446079) + (xy 117.29611 155.406752) + (xy 117.367098 155.405626) + (xy 117.410048 155.426972) + (xy 117.475678 155.47715) + (xy 117.580814 155.526175) + (xy 117.633631 155.550805) + (xy 117.633634 155.550806) + (xy 117.639808 155.553685) + (xy 117.646456 155.555171) + (xy 117.646459 155.555172) + (xy 117.752421 155.578857) + (xy 117.816543 155.59319) + (xy 117.822088 155.5935) + (xy 117.955244 155.5935) + (xy 118.090037 155.578857) + (xy 118.22652 155.532925) + (xy 118.255204 155.523272) + (xy 118.255206 155.523271) + (xy 118.261675 155.521094) + (xy 118.416905 155.427823) + (xy 118.421862 155.423135) + (xy 118.421865 155.423133) + (xy 118.543527 155.308082) + (xy 118.543529 155.30808) + (xy 118.548485 155.303393) + (xy 118.552317 155.297755) + (xy 118.55232 155.297751) + (xy 118.646442 155.159255) + (xy 118.650277 155.153612) + (xy 118.71753 154.985466) + (xy 118.718644 154.978738) + (xy 118.718645 154.978734) + (xy 118.745993 154.813539) + (xy 118.745993 154.813536) + (xy 118.747108 154.806802) + (xy 118.743115 154.730602) + (xy 118.742203 154.713198) + (xy 122.852892 154.713198) + (xy 122.853249 154.720015) + (xy 122.853249 154.720019) + (xy 122.85955 154.840239) + (xy 122.86237 154.894047) + (xy 122.864181 154.90062) + (xy 122.864181 154.900623) + (xy 122.899364 155.028355) + (xy 122.910461 155.068641) + (xy 122.994922 155.228836) + (xy 122.999327 155.234049) + (xy 122.99933 155.234053) + (xy 123.107406 155.361943) + (xy 123.10741 155.361947) + (xy 123.111813 155.367157) + (xy 123.117237 155.371304) + (xy 123.117238 155.371305) + (xy 123.250257 155.473006) + (xy 123.250261 155.473009) + (xy 123.255678 155.47715) + (xy 123.360814 155.526175) + (xy 123.413631 155.550805) + (xy 123.413634 155.550806) + (xy 123.419808 155.553685) + (xy 123.426456 155.555171) + (xy 123.426459 155.555172) + (xy 123.532421 155.578857) + (xy 123.596543 155.59319) + (xy 123.602088 155.5935) + (xy 123.735244 155.5935) + (xy 123.870037 155.578857) + (xy 124.00652 155.532925) + (xy 124.035204 155.523272) + (xy 124.035206 155.523271) + (xy 124.041675 155.521094) + (xy 124.193651 155.429778) + (xy 124.193654 155.429777) + (xy 124.196905 155.427823) + (xy 124.197255 155.428406) + (xy 124.258917 155.404935) + (xy 124.328391 155.419561) + (xy 124.366391 155.450915) + (xy 124.397397 155.488933) + (xy 124.406041 155.497637) + (xy 124.548856 155.615784) + (xy 124.559027 155.622644) + (xy 124.722076 155.710804) + (xy 124.733381 155.715556) + (xy 124.848692 155.75125) + (xy 124.862795 155.751456) + (xy 124.866 155.744701) + (xy 124.866 155.737924) + (xy 125.374 155.737924) + (xy 125.377973 155.751455) + (xy 125.385768 155.752575) + (xy 125.493521 155.720862) + (xy 125.504889 155.716269) + (xy 125.669154 155.630393) + (xy 125.679415 155.623679) + (xy 125.823873 155.507532) + (xy 125.832632 155.498954) + (xy 125.951778 155.356961) + (xy 125.958708 155.346841) + (xy 126.048002 155.184415) + (xy 126.052834 155.173142) + (xy 126.10888 154.996462) + (xy 126.11143 154.984468) + (xy 126.127607 154.840239) + (xy 126.128 154.833215) + (xy 126.128 154.42093) + (xy 126.148002 154.352809) + (xy 126.201658 154.306316) + (xy 126.271932 154.296212) + (xy 126.336512 154.325706) + (xy 126.368701 154.368779) + (xy 126.432629 154.509382) + (xy 126.438576 154.519724) + (xy 126.553968 154.682397) + (xy 126.561761 154.691425) + (xy 126.705831 154.829342) + (xy 126.715196 154.836738) + (xy 126.882741 154.944921) + (xy 126.893345 154.950417) + (xy 127.078312 155.024961) + (xy 127.08977 155.028355) + (xy 127.286928 155.066857) + (xy 127.295791 155.067934) + (xy 127.2985 155.068) + (xy 127.527885 155.068) + (xy 127.543124 155.063525) + (xy 127.544329 155.062135) + (xy 127.546 155.054452) + (xy 127.546 152.870115) + (xy 127.541525 152.854876) + (xy 127.540135 152.853671) + (xy 127.532452 152.852) + (xy 127.350168 152.852) + (xy 127.344192 152.852285) + (xy 127.195506 152.866471) + (xy 127.183772 152.86873) + (xy 126.992401 152.924872) + (xy 126.981325 152.929302) + (xy 126.804022 153.020619) + (xy 126.793976 153.027069) + (xy 126.637143 153.150262) + (xy 126.628494 153.158499) + (xy 126.497788 153.309123) + (xy 126.490853 153.318847) + (xy 126.39099 153.491467) + (xy 126.386013 153.502337) + (xy 126.363416 153.567409) + (xy 126.322175 153.625198) + (xy 126.256236 153.651517) + (xy 126.186537 153.638009) + (xy 126.135205 153.588962) + (xy 126.11899 153.53837) + (xy 126.114188 153.489397) + (xy 126.111805 153.477362) + (xy 126.058233 153.299924) + (xy 126.053559 153.288584) + (xy 125.96654 153.124923) + (xy 125.959751 153.114706) + (xy 125.842603 152.971067) + (xy 125.833959 152.962363) + (xy 125.691144 152.844216) + (xy 125.680973 152.837356) + (xy 125.517924 152.749196) + (xy 125.506619 152.744444) + (xy 125.391308 152.70875) + (xy 125.377205 152.708544) + (xy 125.374 152.715299) + (xy 125.374 155.737924) + (xy 124.866 155.737924) + (xy 124.866 152.722076) + (xy 124.862027 152.708545) + (xy 124.854232 152.707425) + (xy 124.746479 152.739138) + (xy 124.735111 152.743731) + (xy 124.570846 152.829607) + (xy 124.560585 152.836321) + (xy 124.416127 152.952468) + (xy 124.407368 152.961046) + (xy 124.288222 153.103039) + (xy 124.281292 153.113159) + (xy 124.191998 153.275585) + (xy 124.187166 153.286858) + (xy 124.13112 153.463538) + (xy 124.12857 153.475532) + (xy 124.112393 153.619761) + (xy 124.112 153.626785) + (xy 124.112 153.842974) + (xy 124.091998 153.911095) + (xy 124.038342 153.957588) + (xy 123.968068 153.967692) + (xy 123.958514 153.965939) + (xy 123.788506 153.927938) + (xy 123.788499 153.927937) + (xy 123.783457 153.92681) + (xy 123.777912 153.9265) + (xy 123.644756 153.9265) + (xy 123.509963 153.941143) + (xy 123.39181 153.980906) + (xy 123.344796 153.996728) + (xy 123.344794 153.996729) + (xy 123.338325 153.998906) + (xy 123.183095 154.092177) + (xy 123.178138 154.096865) + (xy 123.178135 154.096867) + (xy 123.056473 154.211918) + (xy 123.051515 154.216607) + (xy 123.047683 154.222245) + (xy 123.04768 154.222249) + (xy 122.963685 154.345844) + (xy 122.949723 154.366388) + (xy 122.88247 154.534534) + (xy 122.881356 154.541262) + (xy 122.881355 154.541266) + (xy 122.855105 154.69983) + (xy 122.852892 154.713198) + (xy 118.742203 154.713198) + (xy 118.737987 154.632766) + (xy 118.73763 154.625953) + (xy 118.733834 154.612169) + (xy 118.691352 154.457941) + (xy 118.689539 154.451359) + (xy 118.605078 154.291164) + (xy 118.600673 154.285951) + (xy 118.60067 154.285947) + (xy 118.492594 154.158057) + (xy 118.49259 154.158053) + (xy 118.488187 154.152843) + (xy 118.428808 154.107444) + (xy 118.349743 154.046994) + (xy 118.349739 154.046991) + (xy 118.344322 154.04285) + (xy 118.200962 153.976) + (xy 118.186369 153.969195) + (xy 118.186366 153.969194) + (xy 118.180192 153.966315) + (xy 118.173544 153.964829) + (xy 118.173541 153.964828) + (xy 118.008494 153.927936) + (xy 118.008495 153.927936) + (xy 118.003457 153.92681) + (xy 117.997912 153.9265) + (xy 117.864756 153.9265) + (xy 117.729963 153.941143) + (xy 117.723499 153.943318) + (xy 117.723496 153.943319) + (xy 117.666645 153.962452) + (xy 117.655167 153.966315) + (xy 117.654189 153.966644) + (xy 117.583247 153.969414) + (xy 117.522068 153.933391) + (xy 117.490077 153.87001) + (xy 117.488 153.847225) + (xy 117.488 153.633343) + (xy 117.487699 153.627195) + (xy 117.474188 153.489397) + (xy 117.471805 153.477362) + (xy 117.418233 153.299924) + (xy 117.413559 153.288584) + (xy 117.32654 153.124923) + (xy 117.319751 153.114706) + (xy 117.202603 152.971067) + (xy 117.193959 152.962363) + (xy 117.051144 152.844216) + (xy 117.040973 152.837356) + (xy 116.877924 152.749196) + (xy 116.866619 152.744444) + (xy 116.751308 152.70875) + (xy 116.737205 152.708544) + (xy 116.734 152.715299) + (xy 116.734 155.737924) + (xy 116.226 155.737924) + (xy 116.226 154.502115) + (xy 116.221525 154.486876) + (xy 116.220135 154.485671) + (xy 116.212452 154.484) + (xy 115.490115 154.484) + (xy 115.474876 154.488475) + (xy 115.473671 154.489865) + (xy 115.472 154.497548) + (xy 115.472 154.826657) + (xy 101.1085 154.826657) + (xy 101.1085 147.74395) + (xy 101.128502 147.675829) + (xy 101.182158 147.629336) + (xy 101.252432 147.619232) + (xy 101.317012 147.648726) + (xy 101.323595 147.654855) + (xy 107.21703 153.54829) + (xy 107.251056 153.610602) + (xy 107.253244 153.624211) + (xy 107.266458 153.749928) + (xy 107.268498 153.756205) + (xy 107.268498 153.756207) + (xy 107.291988 153.828502) + (xy 107.325473 153.931556) + (xy 107.328776 153.937278) + (xy 107.328777 153.937279) + (xy 107.340674 153.957885) + (xy 107.42096 154.096944) + (xy 107.425378 154.101851) + (xy 107.425379 154.101852) + (xy 107.524483 154.211918) + (xy 107.548747 154.238866) + (xy 107.629158 154.297288) + (xy 107.692046 154.342979) + (xy 107.703248 154.351118) + (xy 107.709276 154.353802) + (xy 107.709278 154.353803) + (xy 107.860049 154.42093) + (xy 107.877712 154.428794) + (xy 107.971113 154.448647) + (xy 108.058056 154.467128) + (xy 108.058061 154.467128) + (xy 108.064513 154.4685) + (xy 108.255487 154.4685) + (xy 108.261939 154.467128) + (xy 108.261944 154.467128) + (xy 108.348887 154.448647) + (xy 108.442288 154.428794) + (xy 108.459951 154.42093) + (xy 108.610722 154.353803) + (xy 108.610724 154.353802) + (xy 108.616752 154.351118) + (xy 108.627955 154.342979) + (xy 108.690842 154.297288) + (xy 108.771253 154.238866) + (xy 108.795517 154.211918) + (xy 108.894621 154.101852) + (xy 108.894622 154.101851) + (xy 108.89904 154.096944) + (xy 108.979326 153.957885) + (xy 108.991223 153.937279) + (xy 108.991224 153.937278) + (xy 108.994527 153.931556) + (xy 109.053542 153.749928) + (xy 109.062086 153.668642) + (xy 109.072814 153.566565) + (xy 109.073504 153.56) + (xy 109.0688 153.515241) + (xy 109.054232 153.376635) + (xy 109.054232 153.376633) + (xy 109.053542 153.370072) + (xy 108.994527 153.188444) + (xy 108.89904 153.023056) + (xy 108.855842 152.975079) + (xy 108.775675 152.886045) + (xy 108.775674 152.886044) + (xy 108.771253 152.881134) + (xy 108.631204 152.779382) + (xy 108.622094 152.772763) + (xy 108.622093 152.772762) + (xy 108.616752 152.768882) + (xy 108.610724 152.766198) + (xy 108.610722 152.766197) + (xy 108.448319 152.693891) + (xy 108.448318 152.693891) + (xy 108.442288 152.691206) + (xy 108.348888 152.671353) + (xy 108.261944 152.652872) + (xy 108.261939 152.652872) + (xy 108.255487 152.6515) + (xy 108.23495 152.6515) + (xy 108.166829 152.631498) + (xy 108.145855 152.614595) + (xy 108.004855 152.473595) + (xy 107.970829 152.411283) + (xy 107.975894 152.340468) + (xy 108.018441 152.283632) + (xy 108.084961 152.258821) + (xy 108.09395 152.2585) + (xy 108.235487 152.2585) + (xy 108.241939 152.257128) + (xy 108.241944 152.257128) + (xy 108.328888 152.238647) + (xy 108.422288 152.218794) + (xy 108.428319 152.216109) + (xy 108.590722 152.143803) + (xy 108.590724 152.143802) + (xy 108.596752 152.141118) + (xy 108.612592 152.12961) + (xy 108.746163 152.032564) + (xy 108.813031 152.008706) + (xy 108.820224 152.0085) + (xy 110.16505 152.0085) + (xy 110.233171 152.028502) + (xy 110.254145 152.045405) + (xy 111.416345 153.207605) + (xy 111.424335 153.216385) + (xy 111.428584 153.22308) + (xy 111.434362 153.228506) + (xy 111.434363 153.228507) + (xy 111.480257 153.271604) + (xy 111.483099 153.274359) + (xy 111.503667 153.294927) + (xy 111.50717 153.297644) + (xy 111.516195 153.305352) + (xy 111.549867 153.336972) + (xy 111.556818 153.340793) + (xy 111.556819 153.340794) + (xy 111.568658 153.347303) + (xy 111.585182 153.358157) + (xy 111.59245 153.363794) + (xy 111.602132 153.371304) + (xy 111.609404 153.374451) + (xy 111.609406 153.374452) + (xy 111.644535 153.389654) + (xy 111.655195 153.394876) + (xy 111.685168 153.411354) + (xy 111.695663 153.417124) + (xy 111.716441 153.422459) + (xy 111.735131 153.428858) + (xy 111.754824 153.43738) + (xy 111.789563 153.442882) + (xy 111.800448 153.444606) + (xy 111.812071 153.447013) + (xy 111.836754 153.45335) + (xy 111.856812 153.4585) + (xy 111.878259 153.4585) + (xy 111.897969 153.460051) + (xy 111.919152 153.463406) + (xy 111.965141 153.459059) + (xy 111.976996 153.4585) + (xy 114.597944 153.4585) + (xy 114.6098 153.459059) + (xy 114.609803 153.459059) + (xy 114.617537 153.460788) + (xy 114.688369 153.458562) + (xy 114.692327 153.4585) + (xy 114.721432 153.4585) + (xy 114.725832 153.457944) + (xy 114.737664 153.457012) + (xy 114.783831 153.455562) + (xy 114.804421 153.44958) + (xy 114.823782 153.44557) + (xy 114.831416 153.444606) + (xy 114.837204 153.443875) + (xy 114.837205 153.443875) + (xy 114.845064 153.442882) + (xy 114.852429 153.439966) + (xy 114.852433 153.439965) + (xy 114.888021 153.425874) + (xy 114.899231 153.422035) + (xy 114.9436 153.409145) + (xy 114.962065 153.398225) + (xy 114.979805 153.389534) + (xy 114.999756 153.381635) + (xy 115.037129 153.354482) + (xy 115.047048 153.347967) + (xy 115.079977 153.328493) + (xy 115.079981 153.32849) + (xy 115.086807 153.324453) + (xy 115.101971 153.309289) + (xy 115.117005 153.296448) + (xy 115.134357 153.283841) + (xy 115.163803 153.248247) + (xy 115.171792 153.239468) + (xy 115.434319 152.976941) + (xy 115.496631 152.942915) + (xy 115.567446 152.94798) + (xy 115.624282 152.990527) + (xy 115.649093 153.057047) + (xy 115.633829 153.126737) + (xy 115.551994 153.275593) + (xy 115.547166 153.286858) + (xy 115.49112 153.463538) + (xy 115.48857 153.475532) + (xy 115.472393 153.619761) + (xy 115.472 153.626785) + (xy 115.472 153.957885) + (xy 115.476475 153.973124) + (xy 115.477865 153.974329) + (xy 115.485548 153.976) + (xy 116.207885 153.976) + (xy 116.223124 153.971525) + (xy 116.224329 153.970135) + (xy 116.226 153.962452) + (xy 116.226 152.722076) + (xy 116.222027 152.708545) + (xy 116.214232 152.707425) + (xy 116.106479 152.739138) + (xy 116.095111 152.743731) + (xy 115.928823 152.830664) + (xy 115.859187 152.844498) + (xy 115.793127 152.818488) + (xy 115.751615 152.760892) + (xy 115.747832 152.689996) + (xy 115.781353 152.629907) + (xy 117.567605 150.843655) + (xy 117.576385 150.835665) + (xy 117.576387 150.835663) + (xy 117.58308 150.831416) + (xy 117.600348 150.813028) + (xy 117.631604 150.779743) + (xy 117.634359 150.776901) + (xy 117.654927 150.756333) + (xy 117.657647 150.752826) + (xy 117.665353 150.743804) + (xy 117.691544 150.715913) + (xy 117.696972 150.710133) + (xy 117.700794 150.703181) + (xy 117.707303 150.691342) + (xy 117.718157 150.674818) + (xy 117.726445 150.664132) + (xy 117.731304 150.657868) + (xy 117.744641 150.627048) + (xy 117.749654 150.615465) + (xy 117.754876 150.604805) + (xy 117.773305 150.571284) + (xy 117.773306 150.571282) + (xy 117.777124 150.564337) + (xy 117.782459 150.543559) + (xy 117.788858 150.524869) + (xy 117.79738 150.505176) + (xy 117.804606 150.459552) + (xy 117.807013 150.447929) + (xy 117.816528 150.410868) + (xy 117.8185 150.403188) + (xy 117.8185 150.381741) + (xy 117.820051 150.362031) + (xy 117.822166 150.348677) + (xy 117.823406 150.340848) + (xy 117.819059 150.294859) + (xy 117.8185 150.283004) + (xy 117.8185 147.3045) + (xy 117.838502 147.236379) + (xy 117.892158 147.189886) + (xy 117.9445 147.1785) + (xy 118.597944 147.1785) + (xy 118.6098 147.179059) + (xy 118.609803 147.179059) + (xy 118.617537 147.180788) + (xy 118.688369 147.178562) + (xy 118.692327 147.1785) + (xy 118.721432 147.1785) + (xy 118.725832 147.177944) + (xy 118.737662 147.177013) + (xy 118.767521 147.176074) + (xy 118.836234 147.193927) + (xy 118.884389 147.246096) + (xy 118.896695 147.316018) + (xy 118.869245 147.381493) + (xy 118.837313 147.409443) + (xy 118.814806 147.423236) + (xy 118.814799 147.423241) + (xy 118.810584 147.425824) + (xy 118.630031 147.580031) + (xy 118.475824 147.760584) + (xy 118.473245 147.764792) + (xy 118.473241 147.764798) + (xy 118.365302 147.940939) + (xy 118.35176 147.963037) + (xy 118.349867 147.967607) + (xy 118.349865 147.967611) + (xy 118.262789 148.177833) + (xy 118.260895 148.182406) + (xy 118.24164 148.262609) + (xy 118.208074 148.402422) + (xy 118.205465 148.413289) + (xy 118.186835 148.65) + (xy 118.205465 148.886711) + (xy 118.206619 148.891518) + (xy 118.20662 148.891524) + (xy 118.235975 149.013793) + (xy 118.260895 149.117594) + (xy 118.262788 149.122165) + (xy 118.262789 149.122167) + (xy 118.317162 149.253435) + (xy 118.35176 149.336963) + (xy 118.354346 149.341183) + (xy 118.473241 149.535202) + (xy 118.473245 149.535208) + (xy 118.475824 149.539416) + (xy 118.630031 149.719969) + (xy 118.810584 149.874176) + (xy 118.814792 149.876755) + (xy 118.814798 149.876759) + (xy 119.007831 149.99505) + (xy 119.013037 149.99824) + (xy 119.017607 150.000133) + (xy 119.017611 150.000135) + (xy 119.227833 150.087211) + (xy 119.232406 150.089105) + (xy 119.277758 150.099993) + (xy 119.458476 150.14338) + (xy 119.458482 150.143381) + (xy 119.463289 150.144535) + (xy 119.7 150.163165) + (xy 119.936711 150.144535) + (xy 119.941518 150.143381) + (xy 119.941524 150.14338) + (xy 120.122242 150.099993) + (xy 120.167594 150.089105) + (xy 120.172167 150.087211) + (xy 120.382389 150.000135) + (xy 120.382393 150.000133) + (xy 120.386963 149.99824) + (xy 120.392169 149.99505) + (xy 120.575556 149.88267) + (xy 121.33216 149.88267) + (xy 121.337887 149.89032) + (xy 121.509042 149.995205) + (xy 121.517837 149.999687) + (xy 121.727988 150.086734) + (xy 121.737373 150.089783) + (xy 121.958554 150.142885) + (xy 121.968301 150.144428) + (xy 122.19507 150.162275) + (xy 122.20493 150.162275) + (xy 122.431699 150.144428) + (xy 122.441446 150.142885) + (xy 122.662627 150.089783) + (xy 122.672012 150.086734) + (xy 122.882163 149.999687) + (xy 122.890958 149.995205) + (xy 123.058445 149.892568) + (xy 123.067907 149.88211) + (xy 123.064124 149.873334) + (xy 122.212812 149.022022) + (xy 122.198868 149.014408) + (xy 122.197035 149.014539) + (xy 122.19042 149.01879) + (xy 121.33892 149.87029) + (xy 121.33216 149.88267) + (xy 120.575556 149.88267) + (xy 120.585202 149.876759) + (xy 120.585208 149.876755) + (xy 120.589416 149.874176) + (xy 120.769969 149.719969) + (xy 120.908753 149.557474) + (xy 120.954686 149.523598) + (xy 120.976668 149.514122) + (xy 121.827978 148.662812) + (xy 121.834356 148.651132) + (xy 122.564408 148.651132) + (xy 122.564539 148.652965) + (xy 122.56879 148.65958) + (xy 123.42029 149.51108) + (xy 123.458648 149.532026) + (xy 123.494072 149.560782) + (xy 123.626823 149.716213) + (xy 123.630031 149.719969) + (xy 123.810584 149.874176) + (xy 123.814792 149.876755) + (xy 123.814798 149.876759) + (xy 124.007831 149.99505) + (xy 124.013037 149.99824) + (xy 124.017607 150.000133) + (xy 124.017611 150.000135) + (xy 124.227833 150.087211) + (xy 124.232406 150.089105) + (xy 124.277758 150.099993) + (xy 124.458476 150.14338) + (xy 124.458482 150.143381) + (xy 124.463289 150.144535) + (xy 124.7 150.163165) + (xy 124.936711 150.144535) + (xy 124.941518 150.143381) + (xy 124.941524 150.14338) + (xy 125.122242 150.099993) + (xy 125.167594 150.089105) + (xy 125.172167 150.087211) + (xy 125.382389 150.000135) + (xy 125.382393 150.000133) + (xy 125.386963 149.99824) + (xy 125.392169 149.99505) + (xy 125.585202 149.876759) + (xy 125.585208 149.876755) + (xy 125.589416 149.874176) + (xy 125.769969 149.719969) + (xy 125.924176 149.539416) + (xy 125.926755 149.535208) + (xy 125.926759 149.535202) + (xy 126.045654 149.341183) + (xy 126.04824 149.336963) + (xy 126.082839 149.253435) + (xy 126.137211 149.122167) + (xy 126.137212 149.122165) + (xy 126.139105 149.117594) + (xy 126.164025 149.013793) + (xy 126.19338 148.891524) + (xy 126.193381 148.891518) + (xy 126.194535 148.886711) + (xy 126.213165 148.65) + (xy 126.194535 148.413289) + (xy 126.191927 148.402422) + (xy 126.15836 148.262609) + (xy 126.139105 148.182406) + (xy 126.137211 148.177833) + (xy 126.050135 147.967611) + (xy 126.050133 147.967607) + (xy 126.04824 147.963037) + (xy 126.034698 147.940939) + (xy 125.926759 147.764798) + (xy 125.926755 147.764792) + (xy 125.924176 147.760584) + (xy 125.769969 147.580031) + (xy 125.589416 147.425824) + (xy 125.585208 147.423245) + (xy 125.585202 147.423241) + (xy 125.391183 147.304346) + (xy 125.386963 147.30176) + (xy 125.382393 147.299867) + (xy 125.382389 147.299865) + (xy 125.172167 147.212789) + (xy 125.172165 147.212788) + (xy 125.167594 147.210895) + (xy 125.080085 147.189886) + (xy 124.941524 147.15662) + (xy 124.941518 147.156619) + (xy 124.936711 147.155465) + (xy 124.7 147.136835) + (xy 124.463289 147.155465) + (xy 124.458482 147.156619) + (xy 124.458476 147.15662) + (xy 124.319915 147.189886) + (xy 124.232406 147.210895) + (xy 124.227835 147.212788) + (xy 124.227833 147.212789) + (xy 124.017611 147.299865) + (xy 124.017607 147.299867) + (xy 124.013037 147.30176) + (xy 124.008817 147.304346) + (xy 123.814798 147.423241) + (xy 123.814792 147.423245) + (xy 123.810584 147.425824) + (xy 123.630031 147.580031) + (xy 123.626823 147.583787) + (xy 123.491247 147.742526) + (xy 123.445314 147.776402) + (xy 123.423332 147.785878) + (xy 122.572022 148.637188) + (xy 122.564408 148.651132) + (xy 121.834356 148.651132) + (xy 121.835592 148.648868) + (xy 121.835461 148.647035) + (xy 121.83121 148.64042) + (xy 120.97971 147.78892) + (xy 120.941352 147.767974) + (xy 120.905928 147.739218) + (xy 120.773177 147.583787) + (xy 120.769969 147.580031) + (xy 120.589416 147.425824) + (xy 120.585208 147.423245) + (xy 120.585202 147.423241) + (xy 120.57647 147.41789) + (xy 121.332093 147.41789) + (xy 121.335876 147.426666) + (xy 122.187188 148.277978) + (xy 122.201132 148.285592) + (xy 122.202965 148.285461) + (xy 122.20958 148.28121) + (xy 123.06108 147.42971) + (xy 123.06784 147.41733) + (xy 123.062113 147.40968) + (xy 122.890958 147.304795) + (xy 122.882163 147.300313) + (xy 122.672012 147.213266) + (xy 122.662627 147.210217) + (xy 122.441446 147.157115) + (xy 122.431699 147.155572) + (xy 122.20493 147.137725) + (xy 122.19507 147.137725) + (xy 121.968301 147.155572) + (xy 121.958554 147.157115) + (xy 121.737373 147.210217) + (xy 121.727988 147.213266) + (xy 121.517837 147.300313) + (xy 121.509042 147.304795) + (xy 121.341555 147.407432) + (xy 121.332093 147.41789) + (xy 120.57647 147.41789) + (xy 120.391183 147.304346) + (xy 120.386963 147.30176) + (xy 120.382393 147.299867) + (xy 120.382389 147.299865) + (xy 120.172167 147.212789) + (xy 120.172165 147.212788) + (xy 120.167594 147.210895) + (xy 120.080085 147.189886) + (xy 119.941524 147.15662) + (xy 119.941518 147.156619) + (xy 119.936711 147.155465) + (xy 119.7 147.136835) + (xy 119.463289 147.155465) + (xy 119.458482 147.156619) + (xy 119.458476 147.15662) + (xy 119.32684 147.188223) + (xy 119.26355 147.203418) + (xy 119.192643 147.199871) + (xy 119.134909 147.158551) + (xy 119.108679 147.092578) + (xy 119.122281 147.022896) + (xy 119.137051 147.000585) + (xy 119.163801 146.968249) + (xy 119.171792 146.959468) + (xy 120.045855 146.085405) + (xy 120.108167 146.051379) + (xy 120.13495 146.0485) + (xy 120.155487 146.0485) + (xy 120.161939 146.047128) + (xy 120.161944 146.047128) + (xy 120.248888 146.028647) + (xy 120.342288 146.008794) + (xy 120.400097 145.983056) + (xy 120.510722 145.933803) + (xy 120.510724 145.933802) + (xy 120.516752 145.931118) + (xy 120.666163 145.822564) + (xy 120.733031 145.798706) + (xy 120.740224 145.7985) + (xy 120.757944 145.7985) + (xy 120.7698 145.799059) + (xy 120.769803 145.799059) + (xy 120.777537 145.800788) + (xy 120.848369 145.798562) + (xy 120.852327 145.7985) + (xy 120.881432 145.7985) + (xy 120.885832 145.797944) + (xy 120.897664 145.797012) + (xy 120.943831 145.795562) + (xy 120.964421 145.78958) + (xy 120.983782 145.78557) + (xy 120.99077 145.784688) + (xy 120.997204 145.783875) + (xy 120.997205 145.783875) + (xy 121.005064 145.782882) + (xy 121.012429 145.779966) + (xy 121.012433 145.779965) + (xy 121.048021 145.765874) + (xy 121.059231 145.762035) + (xy 121.1036 145.749145) + (xy 121.122065 145.738225) + (xy 121.139805 145.729534) + (xy 121.159756 145.721635) + (xy 121.197129 145.694482) + (xy 121.207048 145.687967) + (xy 121.239977 145.668493) + (xy 121.239981 145.66849) + (xy 121.246807 145.664453) + (xy 121.261971 145.649289) + (xy 121.277005 145.636448) + (xy 121.287943 145.628501) + (xy 121.294357 145.623841) + (xy 121.323803 145.588247) + (xy 121.331792 145.579468) + (xy 121.755855 145.155405) + (xy 121.818167 145.121379) + (xy 121.84495 145.1185) + (xy 121.865487 145.1185) + (xy 121.871939 145.117128) + (xy 121.871944 145.117128) + (xy 121.958887 145.098647) + (xy 122.052288 145.078794) + (xy 122.058319 145.076109) + (xy 122.220722 145.003803) + (xy 122.220724 145.003802) + (xy 122.226752 145.001118) + (xy 122.232865 144.996677) + (xy 122.374722 144.893611) + (xy 122.381253 144.888866) + (xy 122.430931 144.833693) + (xy 122.504621 144.751852) + (xy 122.504622 144.751851) + (xy 122.50904 144.746944) + (xy 122.604527 144.581556) + (xy 122.663542 144.399928) + (xy 122.666475 144.372027) + (xy 122.682814 144.216565) + (xy 122.683504 144.21) + (xy 122.677766 144.155405) + (xy 122.664232 144.026635) + (xy 122.664232 144.026633) + (xy 122.663542 144.020072) + (xy 122.604527 143.838444) + (xy 122.50904 143.673056) + (xy 122.490134 143.652058) + (xy 122.385675 143.536045) + (xy 122.385674 143.536044) + (xy 122.381253 143.531134) + (xy 122.226752 143.418882) + (xy 122.220724 143.416198) + (xy 122.220722 143.416197) + (xy 122.058319 143.343891) + (xy 122.058318 143.343891) + (xy 122.052288 143.341206) + (xy 121.931159 143.315459) + (xy 121.871944 143.302872) + (xy 121.871939 143.302872) + (xy 121.865487 143.3015) + (xy 121.674513 143.3015) + (xy 121.668061 143.302872) + (xy 121.668056 143.302872) + (xy 121.608841 143.315459) + (xy 121.487712 143.341206) + (xy 121.481682 143.343891) + (xy 121.481681 143.343891) + (xy 121.319278 143.416197) + (xy 121.319276 143.416198) + (xy 121.313248 143.418882) + (xy 121.158747 143.531134) + (xy 121.154326 143.536044) + (xy 121.154325 143.536045) + (xy 121.049867 143.652058) + (xy 121.03096 143.673056) + (xy 120.935473 143.838444) + (xy 120.876458 144.020072) + (xy 120.864011 144.138502) + (xy 120.863245 144.145786) + (xy 120.836232 144.211442) + (xy 120.82703 144.22171) + (xy 120.698901 144.349839) + (xy 120.636589 144.383865) + (xy 120.565774 144.3788) + (xy 120.535747 144.362681) + (xy 120.522099 144.352765) + (xy 120.522086 144.352758) + (xy 120.516752 144.348882) + (xy 120.503948 144.343181) + (xy 120.348319 144.273891) + (xy 120.348318 144.273891) + (xy 120.342288 144.271206) + (xy 120.248887 144.251353) + (xy 120.161944 144.232872) + (xy 120.161939 144.232872) + (xy 120.155487 144.2315) + (xy 120.13495 144.2315) + (xy 120.066829 144.211498) + (xy 120.045855 144.194595) + (xy 118.985405 143.134145) + (xy 118.951379 143.071833) + (xy 118.9485 143.04505) + (xy 118.9485 139.057073) + (xy 118.968502 138.988952) + (xy 119.001602 138.954302) + (xy 119.012723 138.946414) + (xy 119.012727 138.94641) + (xy 119.017611 138.942946) + (xy 119.163881 138.79015) + (xy 119.27862 138.612452) + (xy 119.342561 138.453793) + (xy 119.355442 138.421832) + (xy 119.355443 138.421829) + (xy 119.357686 138.416263) + (xy 119.398228 138.208663) + (xy 119.3985 138.203101) + (xy 119.3985 137.933972) + (xy 119.418502 137.865851) + (xy 119.435405 137.844877) + (xy 119.506905 137.773377) + (xy 119.569217 137.739351) + (xy 119.640032 137.744416) + (xy 119.696868 137.786963) + (xy 119.721679 137.853483) + (xy 119.722 137.862472) + (xy 119.722 138.149832) + (xy 119.722285 138.155808) + (xy 119.736471 138.304494) + (xy 119.73873 138.316228) + (xy 119.794872 138.507599) + (xy 119.799302 138.518675) + (xy 119.890619 138.695978) + (xy 119.897069 138.706024) + (xy 120.020262 138.862857) + (xy 120.028499 138.871506) + (xy 120.179123 139.002212) + (xy 120.188847 139.009147) + (xy 120.361467 139.10901) + (xy 120.372331 139.113984) + (xy 120.560727 139.179407) + (xy 120.561716 139.179648) + (xy 120.572008 139.17818) + (xy 120.576 139.164615) + (xy 120.576 139.160402) + (xy 121.084 139.160402) + (xy 121.087973 139.173933) + (xy 121.097399 139.175288) + (xy 121.186537 139.153806) + (xy 121.197832 139.149917) + (xy 121.379382 139.067371) + (xy 121.389724 139.061424) + (xy 121.552397 138.946032) + (xy 121.561425 138.938239) + (xy 121.699342 138.794169) + (xy 121.706738 138.784804) + (xy 121.814921 138.617259) + (xy 121.820417 138.606655) + (xy 121.894961 138.421688) + (xy 121.898355 138.41023) + (xy 121.936857 138.213072) + (xy 121.937934 138.204209) + (xy 121.938 138.2015) + (xy 121.938 138.152846) + (xy 122.2615 138.152846) + (xy 122.276548 138.310566) + (xy 122.336092 138.513534) + (xy 122.338836 138.518861) + (xy 122.338836 138.518862) + (xy 122.430057 138.695978) + (xy 122.432942 138.70158) + (xy 122.563604 138.86792) + (xy 122.568135 138.871852) + (xy 122.568138 138.871855) + (xy 122.65362 138.946032) + (xy 122.723363 139.006552) + (xy 122.728549 139.009552) + (xy 122.728553 139.009555) + (xy 122.824957 139.065326) + (xy 122.906454 139.112473) + (xy 123.106271 139.181861) + (xy 123.112206 139.182722) + (xy 123.112208 139.182722) + (xy 123.309664 139.211352) + (xy 123.309667 139.211352) + (xy 123.315604 139.212213) + (xy 123.526899 139.202433) + (xy 123.658077 139.170819) + (xy 123.726701 139.154281) + (xy 123.726703 139.15428) + (xy 123.732534 139.152875) + (xy 123.737992 139.150393) + (xy 123.737996 139.150392) + (xy 123.853041 139.098084) + (xy 123.925087 139.065326) + (xy 124.097611 138.942946) + (xy 124.243881 138.79015) + (xy 124.35862 138.612452) + (xy 124.422561 138.453793) + (xy 124.435442 138.421832) + (xy 124.435443 138.421829) + (xy 124.437686 138.416263) + (xy 124.478228 138.208663) + (xy 124.4785 138.203101) + (xy 124.4785 138.152846) + (xy 124.8015 138.152846) + (xy 124.816548 138.310566) + (xy 124.876092 138.513534) + (xy 124.878836 138.518861) + (xy 124.878836 138.518862) + (xy 124.970057 138.695978) + (xy 124.972942 138.70158) + (xy 125.103604 138.86792) + (xy 125.108135 138.871852) + (xy 125.108138 138.871855) + (xy 125.19362 138.946032) + (xy 125.263363 139.006552) + (xy 125.268549 139.009552) + (xy 125.268553 139.009555) + (xy 125.364957 139.065326) + (xy 125.446454 139.112473) + (xy 125.646271 139.181861) + (xy 125.652206 139.182722) + (xy 125.652208 139.182722) + (xy 125.849664 139.211352) + (xy 125.849667 139.211352) + (xy 125.855604 139.212213) + (xy 126.066899 139.202433) + (xy 126.198077 139.170819) + (xy 126.266701 139.154281) + (xy 126.266703 139.15428) + (xy 126.272534 139.152875) + (xy 126.277992 139.150393) + (xy 126.277996 139.150392) + (xy 126.393041 139.098084) + (xy 126.465087 139.065326) + (xy 126.637611 138.942946) + (xy 126.783881 138.79015) + (xy 126.89862 138.612452) + (xy 126.962561 138.453793) + (xy 126.975442 138.421832) + (xy 126.975443 138.421829) + (xy 126.977686 138.416263) + (xy 127.018228 138.208663) + (xy 127.0185 138.203101) + (xy 127.0185 137.247154) + (xy 127.003452 137.089434) + (xy 126.943908 136.886466) + (xy 126.865493 136.734214) + (xy 126.849804 136.703751) + (xy 126.849802 136.703748) + (xy 126.847058 136.69842) + (xy 126.716396 136.53208) + (xy 126.711865 136.528148) + (xy 126.711862 136.528145) + (xy 126.561167 136.397379) + (xy 126.556637 136.393448) + (xy 126.551451 136.390448) + (xy 126.551447 136.390445) + (xy 126.378742 136.290533) + (xy 126.373546 136.287527) + (xy 126.173729 136.218139) + (xy 126.167794 136.217278) + (xy 126.167792 136.217278) + (xy 125.970336 136.188648) + (xy 125.970333 136.188648) + (xy 125.964396 136.187787) + (xy 125.753101 136.197567) + (xy 125.621923 136.229181) + (xy 125.553299 136.245719) + (xy 125.553297 136.24572) + (xy 125.547466 136.247125) + (xy 125.542008 136.249607) + (xy 125.542004 136.249608) + (xy 125.45099 136.29099) + (xy 125.354913 136.334674) + (xy 125.182389 136.457054) + (xy 125.036119 136.60985) + (xy 124.92138 136.787548) + (xy 124.919137 136.793114) + (xy 124.867 136.922484) + (xy 124.842314 136.983737) + (xy 124.801772 137.191337) + (xy 124.8015 137.196899) + (xy 124.8015 138.152846) + (xy 124.4785 138.152846) + (xy 124.4785 137.247154) + (xy 124.463452 137.089434) + (xy 124.403908 136.886466) + (xy 124.325493 136.734214) + (xy 124.309804 136.703751) + (xy 124.309802 136.703748) + (xy 124.307058 136.69842) + (xy 124.176396 136.53208) + (xy 124.171865 136.528148) + (xy 124.171862 136.528145) + (xy 124.021167 136.397379) + (xy 124.016637 136.393448) + (xy 124.011451 136.390448) + (xy 124.011447 136.390445) + (xy 123.838742 136.290533) + (xy 123.833546 136.287527) + (xy 123.633729 136.218139) + (xy 123.627794 136.217278) + (xy 123.627792 136.217278) + (xy 123.430336 136.188648) + (xy 123.430333 136.188648) + (xy 123.424396 136.187787) + (xy 123.213101 136.197567) + (xy 123.081923 136.229181) + (xy 123.013299 136.245719) + (xy 123.013297 136.24572) + (xy 123.007466 136.247125) + (xy 123.002008 136.249607) + (xy 123.002004 136.249608) + (xy 122.91099 136.29099) + (xy 122.814913 136.334674) + (xy 122.642389 136.457054) + (xy 122.496119 136.60985) + (xy 122.38138 136.787548) + (xy 122.379137 136.793114) + (xy 122.327 136.922484) + (xy 122.302314 136.983737) + (xy 122.261772 137.191337) + (xy 122.2615 137.196899) + (xy 122.2615 138.152846) + (xy 121.938 138.152846) + (xy 121.938 137.972115) + (xy 121.933525 137.956876) + (xy 121.932135 137.955671) + (xy 121.924452 137.954) + (xy 121.102115 137.954) + (xy 121.086876 137.958475) + (xy 121.085671 137.959865) + (xy 121.084 137.967548) + (xy 121.084 139.160402) + (xy 120.576 139.160402) + (xy 120.576 137.572) + (xy 120.596002 137.503879) + (xy 120.649658 137.457386) + (xy 120.702 137.446) + (xy 121.919885 137.446) + (xy 121.935124 137.441525) + (xy 121.936329 137.440135) + (xy 121.938 137.432452) + (xy 121.938 137.250168) + (xy 121.937715 137.244192) + (xy 121.923529 137.095506) + (xy 121.92127 137.083772) + (xy 121.865128 136.892401) + (xy 121.860698 136.881325) + (xy 121.769381 136.704022) + (xy 121.762931 136.693976) + (xy 121.639738 136.537143) + (xy 121.631501 136.528494) + (xy 121.480877 136.397788) + (xy 121.471153 136.390853) + (xy 121.298533 136.29099) + (xy 121.287665 136.286014) + (xy 121.25982 136.276344) + (xy 121.202031 136.235101) + (xy 121.175713 136.169163) + (xy 121.189222 136.099463) + (xy 121.21206 136.068222) + (xy 121.897612 135.38267) + (xy 123.83216 135.38267) + (xy 123.837887 135.39032) + (xy 124.009042 135.495205) + (xy 124.017837 135.499687) + (xy 124.227988 135.586734) + (xy 124.237373 135.589783) + (xy 124.458554 135.642885) + (xy 124.468301 135.644428) + (xy 124.69507 135.662275) + (xy 124.70493 135.662275) + (xy 124.931699 135.644428) + (xy 124.941446 135.642885) + (xy 125.162627 135.589783) + (xy 125.172012 135.586734) + (xy 125.382163 135.499687) + (xy 125.390958 135.495205) + (xy 125.558445 135.392568) + (xy 125.567907 135.38211) + (xy 125.564124 135.373334) + (xy 124.712812 134.522022) + (xy 124.698868 134.514408) + (xy 124.697035 134.514539) + (xy 124.69042 134.51879) + (xy 123.83892 135.37029) + (xy 123.83216 135.38267) + (xy 121.897612 135.38267) + (xy 122.207605 135.072677) + (xy 122.216385 135.064687) + (xy 122.216387 135.064685) + (xy 122.22308 135.060438) + (xy 122.271605 135.008764) + (xy 122.274359 135.005923) + (xy 122.294927 134.985355) + (xy 122.297647 134.981848) + (xy 122.305353 134.972826) + (xy 122.331544 134.944935) + (xy 122.336972 134.939155) + (xy 122.340794 134.932203) + (xy 122.347303 134.920364) + (xy 122.358157 134.90384) + (xy 122.366445 134.893154) + (xy 122.371304 134.88689) + (xy 122.37662 134.874606) + (xy 122.389654 134.844487) + (xy 122.394876 134.833827) + (xy 122.413305 134.800306) + (xy 122.413306 134.800304) + (xy 122.417124 134.793359) + (xy 122.422459 134.772581) + (xy 122.428858 134.753891) + (xy 122.43738 134.734198) + (xy 122.444606 134.688574) + (xy 122.447013 134.676951) + (xy 122.456528 134.63989) + (xy 122.4585 134.63221) + (xy 122.4585 134.610763) + (xy 122.460051 134.591053) + (xy 122.462166 134.577699) + (xy 122.463406 134.56987) + (xy 122.459059 134.523881) + (xy 122.4585 134.512026) + (xy 122.4585 134.15493) + (xy 123.187725 134.15493) + (xy 123.205572 134.381699) + (xy 123.207115 134.391446) + (xy 123.260217 134.612627) + (xy 123.263266 134.622012) + (xy 123.350313 134.832163) + (xy 123.354795 134.840958) + (xy 123.457432 135.008445) + (xy 123.46789 135.017907) + (xy 123.476666 135.014124) + (xy 124.327978 134.162812) + (xy 124.334356 134.151132) + (xy 125.064408 134.151132) + (xy 125.064539 134.152965) + (xy 125.06879 134.15958) + (xy 125.92029 135.01108) + (xy 125.93267 135.01784) + (xy 125.94032 135.012113) + (xy 126.045205 134.840958) + (xy 126.049687 134.832163) + (xy 126.136734 134.622012) + (xy 126.139783 134.612627) + (xy 126.192885 134.391446) + (xy 126.194428 134.381699) + (xy 126.212275 134.15493) + (xy 126.212275 134.14507) + (xy 126.194428 133.918301) + (xy 126.192885 133.908554) + (xy 126.139783 133.687373) + (xy 126.136734 133.677988) + (xy 126.049687 133.467837) + (xy 126.045205 133.459042) + (xy 125.942568 133.291555) + (xy 125.93211 133.282093) + (xy 125.923334 133.285876) + (xy 125.072022 134.137188) + (xy 125.064408 134.151132) + (xy 124.334356 134.151132) + (xy 124.335592 134.148868) + (xy 124.335461 134.147035) + (xy 124.33121 134.14042) + (xy 123.47971 133.28892) + (xy 123.46733 133.28216) + (xy 123.45968 133.287887) + (xy 123.354795 133.459042) + (xy 123.350313 133.467837) + (xy 123.263266 133.677988) + (xy 123.260217 133.687373) + (xy 123.207115 133.908554) + (xy 123.205572 133.918301) + (xy 123.187725 134.14507) + (xy 123.187725 134.15493) + (xy 122.4585 134.15493) + (xy 122.4585 133.262059) + (xy 122.459059 133.250203) + (xy 122.460789 133.242463) + (xy 122.460233 133.224756) + (xy 122.458562 133.171611) + (xy 122.4585 133.167653) + (xy 122.4585 133.138568) + (xy 122.457946 133.134179) + (xy 122.457013 133.122337) + (xy 122.455811 133.084094) + (xy 122.455562 133.076169) + (xy 122.44958 133.055579) + (xy 122.44557 133.036216) + (xy 122.443875 133.022796) + (xy 122.443875 133.022795) + (xy 122.442882 133.014936) + (xy 122.439966 133.007571) + (xy 122.439965 133.007567) + (xy 122.425874 132.971979) + (xy 122.422035 132.960769) + (xy 122.409145 132.9164) + (xy 122.398225 132.897935) + (xy 122.389534 132.880195) + (xy 122.381635 132.860244) + (xy 122.354482 132.822871) + (xy 122.347967 132.812952) + (xy 122.328493 132.780023) + (xy 122.32849 132.780019) + (xy 122.324453 132.773193) + (xy 122.309289 132.758029) + (xy 122.296448 132.742995) + (xy 122.283841 132.725643) + (xy 122.277731 132.720588) + (xy 122.277417 132.720254) + (xy 122.245365 132.656904) + (xy 122.252651 132.586282) + (xy 122.296961 132.530811) + (xy 122.369266 132.508) + (xy 124.090099 132.508) + (xy 124.15822 132.528002) + (xy 124.204713 132.581658) + (xy 124.214817 132.651932) + (xy 124.185323 132.716512) + (xy 124.138317 132.750409) + (xy 124.017837 132.800313) + (xy 124.009042 132.804795) + (xy 123.841555 132.907432) + (xy 123.832093 132.91789) + (xy 123.835876 132.926666) + (xy 124.687188 133.777978) + (xy 124.701132 133.785592) + (xy 124.702965 133.785461) + (xy 124.70958 133.78121) + (xy 125.56108 132.92971) + (xy 125.56784 132.91733) + (xy 125.562113 132.90968) + (xy 125.390958 132.804795) + (xy 125.382163 132.800313) + (xy 125.261683 132.750409) + (xy 125.206402 132.705861) + (xy 125.183981 132.638497) + (xy 125.201539 132.569706) + (xy 125.253501 132.521328) + (xy 125.309901 132.508) + (xy 128.250673 132.508) + (xy 128.270058 132.5095) + (xy 128.284859 132.511805) + (xy 128.284862 132.511805) + (xy 128.293731 132.513186) + (xy 128.30777 132.51135) + (xy 128.333989 132.510675) + (xy 128.476584 132.521897) + (xy 128.496112 132.52499) + (xy 128.658713 132.564027) + (xy 128.677513 132.570136) + (xy 128.831998 132.634127) + (xy 128.849613 132.643102) + (xy 128.992183 132.730468) + (xy 129.008179 132.74209) + (xy 129.135331 132.850688) + (xy 129.149312 132.864669) + (xy 129.25791 132.991821) + (xy 129.269532 133.007817) + (xy 129.356898 133.150387) + (xy 129.365873 133.168002) + (xy 129.429864 133.322487) + (xy 129.435975 133.341292) + (xy 129.47501 133.503887) + (xy 129.478103 133.523416) + (xy 129.488774 133.659012) + (xy 129.488133 133.67588) + (xy 129.488305 133.675882) + (xy 129.488195 133.684858) + (xy 129.486814 133.693729) + (xy 129.487978 133.702631) + (xy 129.487978 133.702634) + (xy 129.490936 133.72525) + (xy 129.492 133.741588) + (xy 129.492 139.284567) + (xy 129.471998 139.352688) + (xy 129.418342 139.399181) + (xy 129.348068 139.409285) + (xy 129.32177 139.402549) + (xy 129.310316 139.398255) + (xy 129.248134 139.3915) + (xy 127.651866 139.3915) + (xy 127.589684 139.398255) + (xy 127.453295 139.449385) + (xy 127.336739 139.536739) + (xy 127.249385 139.653295) + (xy 127.198255 139.789684) + (xy 127.1915 139.851866) + (xy 127.1915 142.448134) + (xy 127.198255 142.510316) + (xy 127.249385 142.646705) + (xy 127.336739 142.763261) + (xy 127.453295 142.850615) + (xy 127.589684 142.901745) + (xy 127.651866 142.9085) + (xy 129.248134 142.9085) + (xy 129.310316 142.901745) + (xy 129.32177 142.897451) + (xy 129.325149 142.897204) + (xy 129.3254 142.897144) + (xy 129.32541 142.897185) + (xy 129.392577 142.892268) + (xy 129.454946 142.926188) + (xy 129.489075 142.988443) + (xy 129.492 143.015433) + (xy 129.492 153.543057) + (xy 129.471998 153.611178) + (xy 129.418342 153.657671) + (xy 129.348068 153.667775) + (xy 129.283488 153.638281) + (xy 129.251299 153.595208) + (xy 129.167371 153.410618) + (xy 129.161424 153.400276) + (xy 129.046032 153.237603) + (xy 129.038239 153.228575) + (xy 128.894169 153.090658) + (xy 128.884804 153.083262) + (xy 128.717259 152.975079) + (xy 128.706655 152.969583) + (xy 128.521688 152.895039) + (xy 128.51023 152.891645) + (xy 128.313072 152.853143) + (xy 128.304209 152.852066) + (xy 128.3015 152.852) + (xy 128.072115 152.852) + (xy 128.056876 152.856475) + (xy 128.055671 152.857865) + (xy 128.054 152.865548) + (xy 128.054 155.049885) + (xy 128.058475 155.065124) + (xy 128.059865 155.066329) + (xy 128.067548 155.068) + (xy 128.249832 155.068) + (xy 128.255808 155.067715) + (xy 128.404494 155.053529) + (xy 128.416228 155.05127) + (xy 128.607599 154.995128) + (xy 128.618675 154.990698) + (xy 128.795978 154.899381) + (xy 128.806024 154.892931) + (xy 128.962857 154.769738) + (xy 128.971506 154.761501) + (xy 129.102212 154.610877) + (xy 129.109147 154.601153) + (xy 129.20901 154.428533) + (xy 129.213984 154.417669) + (xy 129.246972 154.322674) + (xy 129.288214 154.264884) + (xy 129.354152 154.238565) + (xy 129.423852 154.252073) + (xy 129.475184 154.301119) + (xy 129.492 154.364007) + (xy 129.492 156.081849) + (xy 129.471998 156.14997) + (xy 129.418342 156.196463) + (xy 129.348068 156.206567) + (xy 129.283488 156.177073) + (xy 129.251299 156.134) + (xy 129.235701 156.099694) + (xy 129.165326 155.944913) + (xy 129.042946 155.772389) + (xy 128.89015 155.626119) + (xy 128.712452 155.51138) + (xy 128.617241 155.473009) + (xy 128.521832 155.434558) + (xy 128.521829 155.434557) + (xy 128.516263 155.432314) + (xy 128.308663 155.391772) + (xy 128.303101 155.3915) + (xy 127.347154 155.3915) + (xy 127.189434 155.406548) + (xy 126.986466 155.466092) + (xy 126.981139 155.468836) + (xy 126.981138 155.468836) + (xy 126.803751 155.560196) + (xy 126.803748 155.560198) + (xy 126.79842 155.562942) + (xy 126.63208 155.693604) + (xy 126.628148 155.698135) + (xy 126.628145 155.698138) + (xy 126.533098 155.80767) + (xy 126.493448 155.853363) + (xy 126.490448 155.858549) + (xy 126.490445 155.858553) + (xy 126.444415 155.938119) + (xy 126.387527 156.036454) + (xy 126.318139 156.236271) + (xy 126.317278 156.242206) + (xy 126.317278 156.242208) + (xy 126.288991 156.437303) + (xy 126.287787 156.445604) + (xy 126.297567 156.656899) + (xy 126.298971 156.662724) + (xy 126.298971 156.662725) + (xy 126.342332 156.842644) + (xy 126.347125 156.862534) + (xy 126.349607 156.867992) + (xy 126.349608 156.867996) + (xy 126.393053 156.963546) + (xy 126.434674 157.055087) + (xy 126.557054 157.227611) + (xy 126.70985 157.373881) + (xy 126.887548 157.48862) + (xy 126.893114 157.490863) + (xy 127.078168 157.565442) + (xy 127.078171 157.565443) + (xy 127.083737 157.567686) + (xy 127.291337 157.608228) + (xy 127.296899 157.6085) + (xy 128.252846 157.6085) + (xy 128.410566 157.593452) + (xy 128.613534 157.533908) + (xy 128.697111 157.490863) + (xy 128.796249 157.439804) + (xy 128.796252 157.439802) + (xy 128.80158 157.437058) + (xy 128.96792 157.306396) + (xy 128.971852 157.301865) + (xy 128.971855 157.301862) + (xy 129.102621 157.151167) + (xy 129.106552 157.146637) + (xy 129.109552 157.141451) + (xy 129.109555 157.141447) + (xy 129.209467 156.968742) + (xy 129.212473 156.963546) + (xy 129.246972 156.864199) + (xy 129.288214 156.806409) + (xy 129.354152 156.78009) + (xy 129.423852 156.793598) + (xy 129.475184 156.842644) + (xy 129.492 156.905532) + (xy 129.492 160.250673) + (xy 129.4905 160.270057) + (xy 129.486814 160.293731) + (xy 129.488454 160.306271) + (xy 129.48865 160.307768) + (xy 129.489325 160.333989) + (xy 129.478103 160.476584) + (xy 129.47501 160.496113) + (xy 129.435975 160.658708) + (xy 129.429864 160.677513) + (xy 129.365873 160.831998) + (xy 129.356898 160.849613) + (xy 129.269532 160.992183) + (xy 129.25791 161.008179) + (xy 129.149312 161.135331) + (xy 129.135331 161.149312) + (xy 129.008179 161.25791) + (xy 128.992183 161.269532) + (xy 128.849613 161.356898) + (xy 128.831998 161.365873) + (xy 128.677513 161.429864) + (xy 128.658713 161.435973) + (xy 128.508659 161.471998) + (xy 128.496113 161.47501) + (xy 128.476584 161.478103) + (xy 128.340988 161.488774) + (xy 128.32412 161.488133) + (xy 128.324118 161.488305) + (xy 128.315142 161.488195) + (xy 128.306271 161.486814) + (xy 128.297369 161.487978) + (xy 128.297366 161.487978) + (xy 128.27475 161.490936) + (xy 128.258412 161.492) + (xy 92.974 161.492) + (xy 92.905879 161.471998) + (xy 92.859386 161.418342) + (xy 92.848 161.366) + (xy 92.848 159.882115) + (xy 92.843525 159.866876) + (xy 92.842135 159.865671) + (xy 92.834452 159.864) + (xy 89.250116 159.864) + (xy 89.234877 159.868475) + (xy 89.233672 159.869865) + (xy 89.232001 159.877548) + (xy 89.232001 161.366) + (xy 89.211999 161.434121) + (xy 89.158343 161.480614) + (xy 89.106001 161.492) + (xy 71.749327 161.492) + (xy 71.729942 161.4905) + (xy 71.715141 161.488195) + (xy 71.715138 161.488195) + (xy 71.706269 161.486814) + (xy 71.69223 161.48865) + (xy 71.666011 161.489325) + (xy 71.523416 161.478103) + (xy 71.503887 161.47501) + (xy 71.491341 161.471998) + (xy 71.341287 161.435973) + (xy 71.322487 161.429864) + (xy 71.168002 161.365873) + (xy 71.150387 161.356898) + (xy 71.007817 161.269532) + (xy 70.991821 161.25791) + (xy 70.864669 161.149312) + (xy 70.850688 161.135331) + (xy 70.74209 161.008179) + (xy 70.730468 160.992183) + (xy 70.643102 160.849613) + (xy 70.634127 160.831998) + (xy 70.570136 160.677513) + (xy 70.564025 160.658708) + (xy 70.52499 160.496113) + (xy 70.521897 160.476584) + (xy 70.511226 160.340988) + (xy 70.511867 160.32412) + (xy 70.511695 160.324118) + (xy 70.511805 160.315142) + (xy 70.513186 160.306271) + (xy 70.511547 160.293731) + (xy 70.509064 160.27475) + (xy 70.508 160.258412) + (xy 70.508 159.337885) + (xy 89.232 159.337885) + (xy 89.236475 159.353124) + (xy 89.237865 159.354329) + (xy 89.245548 159.356) + (xy 90.767885 159.356) + (xy 90.783124 159.351525) + (xy 90.784329 159.350135) + (xy 90.786 159.342452) + (xy 90.786 159.337885) + (xy 91.294 159.337885) + (xy 91.298475 159.353124) + (xy 91.299865 159.354329) + (xy 91.307548 159.356) + (xy 92.829884 159.356) + (xy 92.845123 159.351525) + (xy 92.846328 159.350135) + (xy 92.847999 159.342452) + (xy 92.847999 157.735331) + (xy 92.847629 157.72851) + (xy 92.842105 157.677648) + (xy 92.838479 157.662396) + (xy 92.793324 157.541946) + (xy 92.784786 157.526351) + (xy 92.708285 157.424276) + (xy 92.695724 157.411715) + (xy 92.593649 157.335214) + (xy 92.578054 157.326676) + (xy 92.457606 157.281522) + (xy 92.442351 157.277895) + (xy 92.391486 157.272369) + (xy 92.384672 157.272) + (xy 91.312115 157.272) + (xy 91.296876 157.276475) + (xy 91.295671 157.277865) + (xy 91.294 157.285548) + (xy 91.294 159.337885) + (xy 90.786 159.337885) + (xy 90.786 157.290116) + (xy 90.781525 157.274877) + (xy 90.780135 157.273672) + (xy 90.772452 157.272001) + (xy 89.695331 157.272001) + (xy 89.68851 157.272371) + (xy 89.637648 157.277895) + (xy 89.622396 157.281521) + (xy 89.501946 157.326676) + (xy 89.486351 157.335214) + (xy 89.384276 157.411715) + (xy 89.371715 157.424276) + (xy 89.295214 157.526351) + (xy 89.286676 157.541946) + (xy 89.241522 157.662394) + (xy 89.237895 157.677649) + (xy 89.232369 157.728514) + (xy 89.232 157.735328) + (xy 89.232 159.337885) + (xy 70.508 159.337885) (xy 70.508 155.33969) (xy 70.892037 155.33969) (xy 70.919025 155.562715) (xy 70.985082 155.777435) (xy 70.987652 155.782415) (xy 70.987654 155.782419) - (xy 71.052852 155.908738) + (xy 71.068017 155.938119) (xy 71.088118 155.977064) (xy 71.224877 156.155292) (xy 71.391036 156.306485) (xy 71.395783 156.309463) (xy 71.395786 156.309465) - (xy 71.524229 156.390036) + (xy 71.574457 156.421544) (xy 71.581344 156.425864) (xy 71.789783 156.509656) (xy 72.009767 156.555213) @@ -13041,34 +12172,34 @@ (xy 72.211999 156.5585) (xy 72.214786 156.558251) (xy 72.214792 156.558251) - (xy 72.284929 156.551991) + (xy 72.306669 156.550051) (xy 72.378762 156.543617) (xy 72.384176 156.542136) (xy 72.384181 156.542135) - (xy 72.511912 156.507191) + (xy 72.533248 156.501354) (xy 72.595451 156.484337) (xy 72.600509 156.481925) (xy 72.600513 156.481923) (xy 72.718042 156.425864) (xy 72.798218 156.387622) (xy 72.980654 156.256529) - (xy 73.090382 156.143299) + (xy 73.083917 156.14997) (xy 73.133089 156.099229) (xy 73.133091 156.099226) (xy 73.136992 156.095201) (xy 73.26229 155.908738) (xy 73.352588 155.703033) - (xy 73.355742 155.689898) + (xy 73.354407 155.695459) (xy 73.403722 155.490046) (xy 73.403722 155.490045) (xy 73.405032 155.484589) - (xy 73.410399 155.3915) + (xy 73.411468 155.372957) (xy 73.41764 155.265917) (xy 73.41764 155.265914) (xy 73.417963 155.26031) (xy 73.390975 155.037285) (xy 73.324918 154.822565) - (xy 73.32026 154.813539) + (xy 73.322067 154.81704) (xy 73.224454 154.627919) (xy 73.224454 154.627918) (xy 73.221882 154.622936) @@ -13099,15 +12230,17 @@ (xy 71.625668 154.158057) (xy 71.511782 154.212378) (xy 71.329346 154.343471) - (xy 71.311716 154.361664) + (xy 71.278854 154.395575) (xy 71.180035 154.497548) (xy 71.173008 154.504799) (xy 71.04771 154.691262) (xy 70.957412 154.896967) (xy 70.956103 154.902418) (xy 70.956102 154.902422) - (xy 70.914747 155.07468) + (xy 70.909357 155.097128) (xy 70.904968 155.115411) + (xy 70.90099 155.184415) + (xy 70.892576 155.330347) (xy 70.892037 155.33969) (xy 70.508 155.33969) (xy 70.508 153.344669) @@ -13129,6 +12262,35 @@ (xy 73.498124 153.803525) (xy 73.499329 153.802135) (xy 73.501 153.794452) + (xy 73.501 153.789884) + (xy 74.009 153.789884) + (xy 74.013475 153.805123) + (xy 74.014865 153.806328) + (xy 74.022548 153.807999) + (xy 74.399669 153.807999) + (xy 74.40649 153.807629) + (xy 74.457352 153.802105) + (xy 74.472604 153.798479) + (xy 74.593054 153.753324) + (xy 74.608649 153.744786) + (xy 74.710724 153.668285) + (xy 74.723285 153.655724) + (xy 74.799786 153.553649) + (xy 74.808324 153.538054) + (xy 74.853478 153.417606) + (xy 74.857105 153.402351) + (xy 74.862631 153.351486) + (xy 74.863 153.344672) + (xy 74.863 152.322115) + (xy 74.858525 152.306876) + (xy 74.857135 152.305671) + (xy 74.849452 152.304) + (xy 74.027115 152.304) + (xy 74.011876 152.308475) + (xy 74.010671 152.309865) + (xy 74.009 152.317548) + (xy 74.009 153.789884) + (xy 73.501 153.789884) (xy 73.501 152.322115) (xy 73.496525 152.306876) (xy 73.495135 152.305671) @@ -13174,7 +12336,7 @@ (xy 70.985082 149.277435) (xy 70.987652 149.282415) (xy 70.987654 149.282419) - (xy 71.052852 149.408738) + (xy 71.065295 149.432846) (xy 71.088118 149.477064) (xy 71.224877 149.655292) (xy 71.391036 149.806485) @@ -13196,30 +12358,981 @@ (xy 72.378762 150.043617) (xy 72.384176 150.042136) (xy 72.384181 150.042135) - (xy 72.511912 150.007191) + (xy 72.524296 150.003803) (xy 72.595451 149.984337) (xy 72.600509 149.981925) (xy 72.600513 149.981923) (xy 72.718042 149.925864) (xy 72.798218 149.887622) (xy 72.980654 149.756529) - (xy 73.092125 149.6415) + (xy 73.096216 149.637279) (xy 73.133089 149.599229) (xy 73.133091 149.599226) (xy 73.136992 149.595201) - (xy 73.26229 149.408738) - (xy 73.352588 149.203033) - (xy 73.366897 149.143435) - (xy 73.403722 148.990046) - (xy 73.403722 148.990045) - (xy 73.405032 148.984589) - (xy 73.416555 148.784729) - (xy 73.41764 148.765917) - (xy 73.41764 148.765914) - (xy 73.417963 148.76031) + (xy 73.230474 149.456085) + (xy 73.285069 149.410701) + (xy 73.355535 149.402038) + (xy 73.419499 149.432846) + (xy 73.454888 149.487426) + (xy 73.485473 149.581556) + (xy 73.488776 149.587278) + (xy 73.488777 149.587279) + (xy 73.510712 149.625271) + (xy 73.58096 149.746944) + (xy 73.585378 149.751851) + (xy 73.585379 149.751852) + (xy 73.682711 149.85995) + (xy 73.708747 149.888866) + (xy 73.863248 150.001118) + (xy 73.869276 150.003802) + (xy 73.869278 150.003803) + (xy 74.008906 150.065969) + (xy 74.063002 150.111949) + (xy 74.083651 150.179876) + (xy 74.064299 150.248185) + (xy 74.019206 150.288015) + (xy 74.010671 150.297865) + (xy 74.009 150.305548) + (xy 74.009 151.777885) + (xy 74.013475 151.793124) + (xy 74.014865 151.794329) + (xy 74.022548 151.796) + (xy 74.844884 151.796) + (xy 74.860123 151.791525) + (xy 74.861328 151.790135) + (xy 74.862999 151.782452) + (xy 74.862999 150.988449) + (xy 74.883001 150.920328) + (xy 74.936657 150.873835) + (xy 75.006931 150.863731) + (xy 75.071511 150.893225) + (xy 75.078094 150.899354) + (xy 75.609595 151.430855) + (xy 75.643621 151.493167) + (xy 75.6465 151.51995) + (xy 75.6465 153.348134) + (xy 75.653255 153.410316) + (xy 75.704385 153.546705) + (xy 75.791739 153.663261) + (xy 75.908295 153.750615) + (xy 76.044684 153.801745) + (xy 76.106866 153.8085) + (xy 76.88005 153.8085) + (xy 76.948171 153.828502) + (xy 76.969145 153.845405) + (xy 77.282313 154.158573) + (xy 77.290303 154.167353) + (xy 77.294552 154.174048) + (xy 77.30033 154.179474) + (xy 77.300331 154.179475) + (xy 77.346225 154.222572) + (xy 77.349067 154.225327) + (xy 77.369635 154.245895) + (xy 77.373138 154.248612) + (xy 77.382163 154.25632) + (xy 77.415835 154.28794) + (xy 77.422786 154.291761) + (xy 77.422787 154.291762) + (xy 77.434626 154.298271) + (xy 77.45115 154.309125) + (xy 77.461833 154.317411) + (xy 77.4681 154.322272) + (xy 77.495634 154.334187) + (xy 77.510504 154.340622) + (xy 77.521149 154.345837) + (xy 77.561631 154.368092) + (xy 77.569305 154.370062) + (xy 77.569312 154.370065) + (xy 77.582394 154.373423) + (xy 77.601102 154.379828) + (xy 77.620791 154.388348) + (xy 77.628617 154.389587) + (xy 77.628619 154.389588) + (xy 77.653127 154.393469) + (xy 77.666427 154.395576) + (xy 77.678038 154.39798) + (xy 77.709075 154.405949) + (xy 77.715103 154.407497) + (xy 77.715104 154.407497) + (xy 77.72278 154.409468) + (xy 77.744226 154.409468) + (xy 77.763936 154.411019) + (xy 77.77729 154.413134) + (xy 77.777291 154.413134) + (xy 77.78512 154.414374) + (xy 77.831109 154.410027) + (xy 77.842964 154.409468) + (xy 78.000594 154.409468) + (xy 78.068715 154.42947) + (xy 78.115208 154.483126) + (xy 78.125312 154.5534) + (xy 78.105175 154.605744) + (xy 78.053667 154.682397) + (xy 78.04771 154.691262) + (xy 77.957412 154.896967) + (xy 77.956103 154.902418) + (xy 77.956102 154.902422) + (xy 77.909357 155.097128) + (xy 77.904968 155.115411) + (xy 77.90099 155.184415) + (xy 77.892576 155.330347) + (xy 77.892037 155.33969) + (xy 77.919025 155.562715) + (xy 77.985082 155.777435) + (xy 77.987652 155.782415) + (xy 77.987654 155.782419) + (xy 78.068017 155.938119) + (xy 78.088118 155.977064) + (xy 78.224877 156.155292) + (xy 78.391036 156.306485) + (xy 78.395783 156.309463) + (xy 78.395786 156.309465) + (xy 78.574457 156.421544) + (xy 78.581344 156.425864) + (xy 78.789783 156.509656) + (xy 79.009767 156.555213) + (xy 79.014378 156.555479) + (xy 79.014379 156.555479) + (xy 79.064952 156.558395) + (xy 79.064956 156.558395) + (xy 79.066775 156.5585) + (xy 79.211999 156.5585) + (xy 79.214786 156.558251) + (xy 79.214792 156.558251) + (xy 79.306669 156.550051) + (xy 79.378762 156.543617) + (xy 79.384176 156.542136) + (xy 79.384181 156.542135) + (xy 79.533248 156.501354) + (xy 79.595451 156.484337) + (xy 79.600509 156.481925) + (xy 79.600513 156.481923) + (xy 79.718042 156.425864) + (xy 79.798218 156.387622) + (xy 79.980654 156.256529) + (xy 80.083917 156.14997) + (xy 80.133089 156.099229) + (xy 80.133091 156.099226) + (xy 80.136992 156.095201) + (xy 80.26229 155.908738) + (xy 80.352588 155.703033) + (xy 80.354407 155.695459) + (xy 80.403722 155.490046) + (xy 80.403722 155.490045) + (xy 80.405032 155.484589) + (xy 80.411468 155.372957) + (xy 80.41764 155.265917) + (xy 80.41764 155.265914) + (xy 80.417963 155.26031) + (xy 80.390975 155.037285) + (xy 80.324918 154.822565) + (xy 80.322067 154.81704) + (xy 80.224454 154.627919) + (xy 80.224454 154.627918) + (xy 80.221882 154.622936) + (xy 80.218472 154.618493) + (xy 80.218467 154.618484) + (xy 80.213621 154.612169) + (xy 80.188023 154.545948) + (xy 80.202289 154.4764) + (xy 80.251892 154.425605) + (xy 80.313586 154.409468) + (xy 80.621012 154.409468) + (xy 80.689133 154.42947) + (xy 80.710107 154.446373) + (xy 82.561339 156.297605) + (xy 82.569329 156.306385) + (xy 82.573578 156.31308) + (xy 82.579356 156.318506) + (xy 82.579357 156.318507) + (xy 82.625251 156.361604) + (xy 82.628093 156.364359) + (xy 82.648661 156.384927) + (xy 82.652164 156.387644) + (xy 82.661189 156.395352) + (xy 82.694861 156.426972) + (xy 82.701812 156.430793) + (xy 82.701813 156.430794) + (xy 82.713652 156.437303) + (xy 82.730176 156.448157) + (xy 82.740265 156.455982) + (xy 82.747126 156.461304) + (xy 82.754398 156.464451) + (xy 82.7544 156.464452) + (xy 82.789529 156.479654) + (xy 82.800189 156.484876) + (xy 82.830162 156.501354) + (xy 82.840657 156.507124) + (xy 82.861435 156.512459) + (xy 82.880125 156.518858) + (xy 82.899818 156.52738) + (xy 82.93087 156.532298) + (xy 82.945442 156.534606) + (xy 82.957065 156.537013) + (xy 82.981748 156.54335) + (xy 83.001806 156.5485) + (xy 83.023253 156.5485) + (xy 83.042963 156.550051) + (xy 83.064146 156.553406) + (xy 83.110135 156.549059) + (xy 83.12199 156.5485) + (xy 85.027944 156.5485) + (xy 85.0398 156.549059) + (xy 85.039803 156.549059) + (xy 85.047537 156.550788) + (xy 85.118369 156.548562) + (xy 85.122327 156.5485) + (xy 85.151432 156.5485) + (xy 85.155832 156.547944) + (xy 85.167664 156.547012) + (xy 85.213831 156.545562) + (xy 85.234421 156.53958) + (xy 85.253782 156.53557) + (xy 85.261416 156.534606) + (xy 85.267204 156.533875) + (xy 85.267205 156.533875) + (xy 85.275064 156.532882) + (xy 85.282429 156.529966) + (xy 85.282433 156.529965) + (xy 85.318021 156.515874) + (xy 85.329231 156.512035) + (xy 85.3736 156.499145) + (xy 85.392065 156.488225) + (xy 85.409805 156.479534) + (xy 85.429756 156.471635) + (xy 85.467129 156.444482) + (xy 85.477048 156.437967) + (xy 85.509977 156.418493) + (xy 85.509981 156.41849) + (xy 85.516807 156.414453) + (xy 85.531971 156.399289) + (xy 85.547005 156.386448) + (xy 85.564357 156.373841) + (xy 85.593803 156.338247) + (xy 85.601792 156.329468) + (xy 86.047605 155.883655) + (xy 86.056385 155.875665) + (xy 86.056387 155.875663) + (xy 86.06308 155.871416) + (xy 86.072444 155.861445) + (xy 86.111604 155.819743) + (xy 86.114359 155.816901) + (xy 86.134927 155.796333) + (xy 86.137647 155.792826) + (xy 86.145353 155.783804) + (xy 86.171544 155.755913) + (xy 86.176972 155.750133) + (xy 86.184853 155.735798) + (xy 86.187303 155.731342) + (xy 86.198157 155.714818) + (xy 86.206443 155.704135) + (xy 86.206444 155.704134) + (xy 86.211304 155.697868) + (xy 86.229654 155.655464) + (xy 86.234869 155.644819) + (xy 86.257124 155.604337) + (xy 86.259094 155.596663) + (xy 86.259097 155.596656) + (xy 86.262455 155.583574) + (xy 86.268861 155.564862) + (xy 86.26979 155.562715) + (xy 86.27738 155.545177) + (xy 86.279321 155.532925) + (xy 90.026645 155.532925) + (xy 90.032158 155.5935) + (xy 90.043918 155.722721) + (xy 90.04457 155.729888) + (xy 90.046308 155.735794) + (xy 90.046309 155.735798) + (xy 90.064952 155.799141) + (xy 90.10041 155.919619) + (xy 90.103263 155.925077) + (xy 90.103265 155.925081) + (xy 90.132767 155.981512) + (xy 90.19204 156.09489) + (xy 90.315968 156.249025) + (xy 90.320692 156.252989) + (xy 90.324911 156.256529) + (xy 90.467474 156.376154) + (xy 90.472872 156.379121) + (xy 90.472877 156.379125) + (xy 90.613524 156.456445) + (xy 90.640787 156.471433) + (xy 90.646654 156.473294) + (xy 90.646656 156.473295) + (xy 90.823436 156.529373) + (xy 90.829306 156.531235) + (xy 90.983227 156.5485) + (xy 91.089769 156.5485) + (xy 91.092825 156.5482) + (xy 91.092832 156.5482) + (xy 91.154683 156.542135) + (xy 91.236833 156.53408) + (xy 91.242734 156.532298) + (xy 91.242736 156.532298) + (xy 91.326115 156.507124) + (xy 91.426169 156.476916) + (xy 91.600796 156.384066) + (xy 91.692266 156.309465) + (xy 91.749287 156.26296) + (xy 91.74929 156.262957) + (xy 91.754062 156.259065) + (xy 91.766344 156.244219) + (xy 91.876201 156.111425) + (xy 91.876203 156.111421) + (xy 91.88013 156.106675) + (xy 91.974198 155.932701) + (xy 92.032682 155.743768) + (xy 92.034894 155.722721) + (xy 92.052711 155.553204) + (xy 92.052711 155.553202) + (xy 92.053355 155.547075) + (xy 92.042267 155.425241) + (xy 92.035989 155.356251) + (xy 92.035988 155.356248) + (xy 92.03543 155.350112) + (xy 92.030713 155.334083) + (xy 92.002751 155.239076) + (xy 91.97959 155.160381) + (xy 91.976052 155.153612) + (xy 91.921824 155.049885) + (xy 91.88796 154.98511) + (xy 91.764032 154.830975) + (xy 91.757727 154.825684) + (xy 91.681236 154.761501) + (xy 91.612526 154.703846) + (xy 91.607128 154.700879) + (xy 91.607123 154.700875) + (xy 91.444608 154.611533) + (xy 91.444609 154.611533) + (xy 91.439213 154.608567) + (xy 91.433346 154.606706) + (xy 91.433344 154.606705) + (xy 91.256564 154.550627) + (xy 91.256563 154.550627) + (xy 91.250694 154.548765) + (xy 91.096773 154.5315) + (xy 90.990231 154.5315) + (xy 90.987175 154.5318) + (xy 90.987168 154.5318) + (xy 90.92866 154.537537) + (xy 90.843167 154.54592) + (xy 90.837266 154.547702) + (xy 90.837264 154.547702) + (xy 90.818392 154.5534) + (xy 90.653831 154.603084) + (xy 90.479204 154.695934) + (xy 90.420007 154.744214) + (xy 90.330713 154.81704) + (xy 90.33071 154.817043) + (xy 90.325938 154.820935) + (xy 90.322011 154.825682) + (xy 90.322009 154.825684) + (xy 90.203799 154.968575) + (xy 90.203797 154.968579) + (xy 90.19987 154.973325) + (xy 90.105802 155.147299) + (xy 90.047318 155.336232) + (xy 90.046674 155.342357) + (xy 90.046674 155.342358) + (xy 90.02766 155.523272) + (xy 90.026645 155.532925) + (xy 86.279321 155.532925) + (xy 86.284607 155.499544) + (xy 86.287012 155.48793) + (xy 86.2985 155.443188) + (xy 86.2985 155.421742) + (xy 86.300051 155.402032) + (xy 86.302166 155.388678) + (xy 86.302166 155.388677) + (xy 86.303406 155.380848) + (xy 86.299059 155.334859) + (xy 86.2985 155.323004) + (xy 86.2985 154.245259) + (xy 86.318502 154.177138) + (xy 86.330864 154.160949) + (xy 86.374621 154.112352) + (xy 86.374622 154.112351) + (xy 86.37904 154.107444) + (xy 86.474527 153.942056) + (xy 86.533542 153.760428) + (xy 86.534574 153.750615) + (xy 86.552814 153.577065) + (xy 86.553504 153.5705) + (xy 86.541947 153.460539) + (xy 86.534232 153.387135) + (xy 86.534232 153.387133) + (xy 86.533542 153.380572) + (xy 86.474527 153.198944) + (xy 86.37904 153.033556) + (xy 86.367392 153.020619) + (xy 86.255675 152.896545) + (xy 86.255674 152.896544) + (xy 86.251253 152.891634) + (xy 86.096752 152.779382) + (xy 86.090724 152.776698) + (xy 86.090722 152.776697) + (xy 85.928319 152.704391) + (xy 85.928318 152.704391) + (xy 85.922288 152.701706) + (xy 85.828887 152.681853) + (xy 85.741944 152.663372) + (xy 85.741939 152.663372) + (xy 85.735487 152.662) + (xy 85.544513 152.662) + (xy 85.538061 152.663372) + (xy 85.538056 152.663372) + (xy 85.451113 152.681853) + (xy 85.357712 152.701706) + (xy 85.351682 152.704391) + (xy 85.351681 152.704391) + (xy 85.189278 152.776697) + (xy 85.189276 152.776698) + (xy 85.183248 152.779382) + (xy 85.028747 152.891634) + (xy 85.024326 152.896544) + (xy 85.024325 152.896545) + (xy 84.912609 153.020619) + (xy 84.90096 153.033556) + (xy 84.805473 153.198944) + (xy 84.746458 153.380572) + (xy 84.745768 153.387135) + (xy 84.745394 153.388896) + (xy 84.711666 153.451369) + (xy 84.649516 153.48569) + (xy 84.578677 153.480962) + (xy 84.533053 153.451793) + (xy 82.723655 151.642395) + (xy 82.715665 151.633615) + (xy 82.715663 151.633613) + (xy 82.711416 151.62692) + (xy 82.659742 151.578395) + (xy 82.656901 151.575641) + (xy 82.636333 151.555073) + (xy 82.632826 151.552353) + (xy 82.623804 151.544647) + (xy 82.595913 151.518456) + (xy 82.590133 151.513028) + (xy 82.583181 151.509206) + (xy 82.571342 151.502697) + (xy 82.554818 151.491843) + (xy 82.544132 151.483555) + (xy 82.537868 151.478696) + (xy 82.530596 151.475549) + (xy 82.530594 151.475548) + (xy 82.495465 151.460346) + (xy 82.484805 151.455124) + (xy 82.451284 151.436695) + (xy 82.451282 151.436694) + (xy 82.444337 151.432876) + (xy 82.423559 151.427541) + (xy 82.404869 151.421142) + (xy 82.385176 151.41262) + (xy 82.339552 151.405394) + (xy 82.327929 151.402987) + (xy 82.299928 151.395798) + (xy 82.283188 151.3915) + (xy 82.261741 151.3915) + (xy 82.242031 151.389949) + (xy 82.228677 151.387834) + (xy 82.220848 151.386594) + (xy 82.174859 151.390941) + (xy 82.163004 151.3915) + (xy 81.9895 151.3915) + (xy 81.921379 151.371498) + (xy 81.874886 151.317842) + (xy 81.8635 151.2655) + (xy 81.8635 150.751866) + (xy 81.856745 150.689684) + (xy 81.805615 150.553295) + (xy 81.718261 150.436739) + (xy 81.601705 150.349385) + (xy 81.578933 150.340848) + (xy 81.49527 150.309484) + (xy 81.438506 150.266842) + (xy 81.413806 150.200281) + (xy 81.4135 150.191502) + (xy 81.4135 149.85995) + (xy 81.433502 149.791829) + (xy 81.450405 149.770855) + (xy 82.365855 148.855405) + (xy 82.428167 148.821379) + (xy 82.45495 148.8185) + (xy 82.475487 148.8185) + (xy 82.481939 148.817128) + (xy 82.481944 148.817128) + (xy 82.568888 148.798647) + (xy 82.662288 148.778794) + (xy 82.703804 148.76031) + (xy 82.830722 148.703803) + (xy 82.830724 148.703802) + (xy 82.836752 148.701118) + (xy 82.887483 148.66426) + (xy 82.903029 148.652965) + (xy 82.991253 148.588866) + (xy 83.014689 148.562838) + (xy 83.114621 148.451852) + (xy 83.114622 148.451851) + (xy 83.11904 148.446944) + (xy 83.19085 148.322565) + (xy 83.211223 148.287279) + (xy 83.211224 148.287278) + (xy 83.214527 148.281556) + (xy 83.263354 148.131284) + (xy 89.880124 148.131284) + (xy 89.881103 148.136981) + (xy 89.881103 148.136982) + (xy 89.912992 148.322565) + (xy 89.916181 148.341126) + (xy 89.989875 148.540884) + (xy 90.098739 148.723866) + (xy 90.239125 148.883946) + (xy 90.406333 149.015762) + (xy 90.411444 149.018451) + (xy 90.411447 149.018453) + (xy 90.509559 149.070072) + (xy 90.594762 149.1149) + (xy 90.600283 149.116614) + (xy 90.600287 149.116616) + (xy 90.738068 149.159398) + (xy 90.798102 149.178039) + (xy 90.970982 149.1985) + (xy 91.094013 149.1985) + (xy 91.184789 149.190159) + (xy 91.24627 149.18451) + (xy 91.246273 149.184509) + (xy 91.252024 149.183981) + (xy 91.273093 149.178039) + (xy 91.451389 149.127754) + (xy 91.451391 149.127753) + (xy 91.456948 149.126186) + (xy 91.462123 149.123634) + (xy 91.462128 149.123632) + (xy 91.642727 149.03457) + (xy 91.647908 149.032015) + (xy 91.655112 149.026636) + (xy 91.813886 148.908074) + (xy 91.818509 148.904622) + (xy 91.963037 148.748271) + (xy 92.076653 148.568201) + (xy 92.155551 148.370441) + (xy 92.160305 148.346544) + (xy 92.195962 148.167282) + (xy 92.195962 148.16728) + (xy 92.197089 148.161615) + (xy 92.197412 148.136982) + (xy 92.199155 148.003794) + (xy 92.199876 147.948716) + (xy 92.194352 147.916565) + (xy 92.164797 147.744564) + (xy 92.164796 147.744561) + (xy 92.163819 147.738874) + (xy 92.090125 147.539116) + (xy 91.981261 147.356134) + (xy 91.840875 147.196054) + (xy 91.673667 147.064238) + (xy 91.668556 147.061549) + (xy 91.668553 147.061547) + (xy 91.552683 147.000585) + (xy 91.485238 146.9651) + (xy 91.479717 146.963386) + (xy 91.479713 146.963384) + (xy 91.287421 146.903676) + (xy 91.287422 146.903676) + (xy 91.281898 146.901961) + (xy 91.109018 146.8815) + (xy 90.985987 146.8815) + (xy 90.900355 146.889368) + (xy 90.83373 146.89549) + (xy 90.833727 146.895491) + (xy 90.827976 146.896019) + (xy 90.822417 146.897587) + (xy 90.822416 146.897587) + (xy 90.628611 146.952246) + (xy 90.628609 146.952247) + (xy 90.623052 146.953814) + (xy 90.617877 146.956366) + (xy 90.617872 146.956368) + (xy 90.482967 147.022896) + (xy 90.432092 147.047985) + (xy 90.261491 147.175378) + (xy 90.116963 147.331729) + (xy 90.003347 147.511799) + (xy 89.924449 147.709559) + (xy 89.923323 147.715219) + (xy 89.923322 147.715223) + (xy 89.884579 147.91) + (xy 89.882911 147.918385) + (xy 89.882835 147.92416) + (xy 89.882835 147.924164) + (xy 89.881793 148.003794) + (xy 89.880124 148.131284) + (xy 83.263354 148.131284) + (xy 83.273542 148.099928) + (xy 83.275347 148.08276) + (xy 83.292814 147.916565) + (xy 83.293504 147.91) + (xy 83.28051 147.786369) + (xy 83.274232 147.726635) + (xy 83.274232 147.726633) + (xy 83.273542 147.720072) + (xy 83.214527 147.538444) + (xy 83.207369 147.526045) + (xy 83.151749 147.42971) + (xy 83.11904 147.373056) + (xy 83.103804 147.356134) + (xy 82.995675 147.236045) + (xy 82.995674 147.236044) + (xy 82.991253 147.231134) + (xy 82.985911 147.227253) + (xy 82.985909 147.227251) + (xy 82.94642 147.198561) + (xy 82.903066 147.142339) + (xy 82.896991 147.071603) + (xy 82.906035 147.046862) + (xy 82.905615 147.046705) + (xy 82.916821 147.016812) + (xy 82.956745 146.910316) + (xy 82.9635 146.848134) + (xy 82.9635 145.628134) + (xy 89.2315 145.628134) + (xy 89.238255 145.690316) + (xy 89.289385 145.826705) + (xy 89.376739 145.943261) + (xy 89.493295 146.030615) + (xy 89.629684 146.081745) + (xy 89.691866 146.0885) + (xy 92.388134 146.0885) + (xy 92.450316 146.081745) + (xy 92.586705 146.030615) + (xy 92.703261 145.943261) + (xy 92.790615 145.826705) + (xy 92.841745 145.690316) + (xy 92.8485 145.628134) + (xy 92.8485 144.5345) + (xy 92.868502 144.466379) + (xy 92.922158 144.419886) + (xy 92.9745 144.4085) + (xy 93.367944 144.4085) + (xy 93.3798 144.409059) + (xy 93.379803 144.409059) + (xy 93.387537 144.410788) + (xy 93.458369 144.408562) + (xy 93.462327 144.4085) + (xy 93.491432 144.4085) + (xy 93.495832 144.407944) + (xy 93.507664 144.407012) + (xy 93.553831 144.405562) + (xy 93.574421 144.39958) + (xy 93.593782 144.39557) + (xy 93.60077 144.394688) + (xy 93.607204 144.393875) + (xy 93.607205 144.393875) + (xy 93.615064 144.392882) + (xy 93.622429 144.389966) + (xy 93.622433 144.389965) + (xy 93.658021 144.375874) + (xy 93.669231 144.372035) + (xy 93.7136 144.359145) + (xy 93.732065 144.348225) + (xy 93.749805 144.339534) + (xy 93.769756 144.331635) + (xy 93.807129 144.304482) + (xy 93.817048 144.297967) + (xy 93.849977 144.278493) + (xy 93.849981 144.27849) + (xy 93.856807 144.274453) + (xy 93.871971 144.259289) + (xy 93.887005 144.246448) + (xy 93.897943 144.238501) + (xy 93.904357 144.233841) + (xy 93.933803 144.198247) + (xy 93.941792 144.189468) + (xy 98.535855 139.595405) + (xy 98.598167 139.561379) + (xy 98.62495 139.5585) + (xy 98.645487 139.5585) + (xy 98.651939 139.557128) + (xy 98.651944 139.557128) + (xy 98.747864 139.536739) + (xy 98.832288 139.518794) + (xy 98.838319 139.516109) + (xy 99.000722 139.443803) + (xy 99.000724 139.443802) + (xy 99.006752 139.441118) + (xy 99.161253 139.328866) + (xy 99.28904 139.186944) + (xy 99.347314 139.08601) + (xy 99.381223 139.027279) + (xy 99.381224 139.027278) + (xy 99.384527 139.021556) + (xy 99.443542 138.839928) + (xy 99.448352 138.794169) + (xy 99.462814 138.656565) + (xy 99.463504 138.65) + (xy 99.443542 138.460072) + (xy 99.384527 138.278444) + (xy 99.28904 138.113056) + (xy 99.185894 137.9985) + (xy 99.165675 137.976045) + (xy 99.165674 137.976044) + (xy 99.161253 137.971134) + (xy 99.006752 137.858882) + (xy 99.000724 137.856198) + (xy 99.000722 137.856197) + (xy 98.838319 137.783891) + (xy 98.838318 137.783891) + (xy 98.832288 137.781206) + (xy 98.723805 137.758147) + (xy 98.651944 137.742872) + (xy 98.651939 137.742872) + (xy 98.645487 137.7415) + (xy 98.454513 137.7415) + (xy 98.448061 137.742872) + (xy 98.448056 137.742872) + (xy 98.376195 137.758147) + (xy 98.267712 137.781206) + (xy 98.261682 137.783891) + (xy 98.261681 137.783891) + (xy 98.099278 137.856197) + (xy 98.099276 137.856198) + (xy 98.093248 137.858882) + (xy 97.938747 137.971134) + (xy 97.934326 137.976044) + (xy 97.934325 137.976045) + (xy 97.914107 137.9985) + (xy 97.81096 138.113056) + (xy 97.715473 138.278444) + (xy 97.713431 138.284729) + (xy 97.670693 138.416263) + (xy 97.656458 138.460072) + (xy 97.643955 138.579035) + (xy 97.643245 138.585786) + (xy 97.616232 138.651443) + (xy 97.60703 138.661711) + (xy 93.214145 143.054595) + (xy 93.151833 143.088621) + (xy 93.12505 143.0915) + (xy 92.9745 143.0915) + (xy 92.906379 143.071498) + (xy 92.859886 143.017842) + (xy 92.8485 142.9655) + (xy 92.8485 141.991866) + (xy 92.841745 141.929684) + (xy 92.790615 141.793295) + (xy 92.703261 141.676739) + (xy 92.586705 141.589385) + (xy 92.450316 141.538255) + (xy 92.388134 141.5315) + (xy 89.691866 141.5315) + (xy 89.629684 141.538255) + (xy 89.493295 141.589385) + (xy 89.376739 141.676739) + (xy 89.289385 141.793295) + (xy 89.238255 141.929684) + (xy 89.2315 141.991866) + (xy 89.2315 145.628134) + (xy 82.9635 145.628134) + (xy 82.9635 144.251866) + (xy 82.956745 144.189684) + (xy 82.905615 144.053295) + (xy 82.818261 143.936739) + (xy 82.701705 143.849385) + (xy 82.565316 143.798255) + (xy 82.503134 143.7915) + (xy 81.206866 143.7915) + (xy 81.144684 143.798255) + (xy 81.008295 143.849385) + (xy 80.891739 143.936739) + (xy 80.804385 144.053295) + (xy 80.753255 144.189684) + (xy 80.7465 144.251866) + (xy 80.7465 146.848134) + (xy 80.753255 146.910316) + (xy 80.804385 147.046705) + (xy 80.891739 147.163261) + (xy 81.008295 147.250615) + (xy 81.144684 147.301745) + (xy 81.206866 147.3085) + (xy 81.459993 147.3085) + (xy 81.528114 147.328502) + (xy 81.574607 147.382158) + (xy 81.584711 147.452432) + (xy 81.569112 147.4975) + (xy 81.552632 147.526045) + (xy 81.545473 147.538444) + (xy 81.526068 147.598167) + (xy 81.500834 147.675829) + (xy 81.486458 147.720072) + (xy 81.473833 147.840195) + (xy 81.473245 147.845786) + (xy 81.446232 147.911442) + (xy 81.43703 147.92171) + (xy 80.620522 148.738218) + (xy 80.55821 148.772244) + (xy 80.487395 148.767179) + (xy 80.430559 148.724632) + (xy 80.406341 148.664264) + (xy 80.390975 148.537285) + (xy 80.324918 148.322565) + (xy 80.316614 148.306475) + (xy 80.224454 148.127919) + (xy 80.224454 148.127918) + (xy 80.221882 148.122936) + (xy 80.085123 147.944708) + (xy 79.918964 147.793515) + (xy 79.914217 147.790537) + (xy 79.914214 147.790535) + (xy 79.733405 147.677115) + (xy 79.728656 147.674136) + (xy 79.520217 147.590344) + (xy 79.300233 147.544787) + (xy 79.295622 147.544521) + (xy 79.295621 147.544521) + (xy 79.245048 147.541605) + (xy 79.245044 147.541605) + (xy 79.243225 147.5415) + (xy 79.098001 147.5415) + (xy 79.095214 147.541749) + (xy 79.095208 147.541749) + (xy 79.025071 147.548009) + (xy 78.931238 147.556383) + (xy 78.925824 147.557864) + (xy 78.925819 147.557865) + (xy 78.811262 147.589205) + (xy 78.714549 147.615663) + (xy 78.709491 147.618075) + (xy 78.709487 147.618077) + (xy 78.645231 147.648726) + (xy 78.511782 147.712378) + (xy 78.329346 147.843471) + (xy 78.325439 147.847503) + (xy 78.209046 147.967611) + (xy 78.173008 148.004799) + (xy 78.04771 148.191262) + (xy 77.957412 148.396967) + (xy 77.956103 148.402418) + (xy 77.956102 148.402422) + (xy 77.914123 148.577279) + (xy 77.904968 148.615411) + (xy 77.902421 148.65958) + (xy 77.893093 148.821379) + (xy 77.892037 148.83969) + (xy 77.919025 149.062715) + (xy 77.985082 149.277435) + (xy 77.987652 149.282415) + (xy 77.987654 149.282419) + (xy 78.065295 149.432846) + (xy 78.088118 149.477064) + (xy 78.224877 149.655292) + (xy 78.391036 149.806485) + (xy 78.395783 149.809463) + (xy 78.395786 149.809465) + (xy 78.528265 149.892568) + (xy 78.581344 149.925864) + (xy 78.789783 150.009656) + (xy 79.009767 150.055213) + (xy 79.014378 150.055479) + (xy 79.014379 150.055479) + (xy 79.064952 150.058395) + (xy 79.064956 150.058395) + (xy 79.066775 150.0585) + (xy 79.211999 150.0585) + (xy 79.214786 150.058251) + (xy 79.214792 150.058251) + (xy 79.284929 150.051991) + (xy 79.378762 150.043617) + (xy 79.384176 150.042136) + (xy 79.384181 150.042135) + (xy 79.524296 150.003803) + (xy 79.595451 149.984337) + (xy 79.600509 149.981925) + (xy 79.600513 149.981923) + (xy 79.718042 149.925864) + (xy 79.798218 149.887622) + (xy 79.896974 149.816659) + (xy 79.963966 149.793152) + (xy 80.033032 149.809594) + (xy 80.082245 149.860766) + (xy 80.0965 149.918982) + (xy 80.0965 150.191502) + (xy 80.076498 150.259623) + (xy 80.022842 150.306116) + (xy 80.01473 150.309484) + (xy 79.931067 150.340848) + (xy 79.908295 150.349385) + (xy 79.791739 150.436739) + (xy 79.704385 150.553295) + (xy 79.653255 150.689684) + (xy 79.6465 150.751866) + (xy 79.6465 152.966468) + (xy 79.626498 153.034589) + (xy 79.572842 153.081082) + (xy 79.5205 153.092468) + (xy 78.130917 153.092468) + (xy 78.062796 153.072466) + (xy 78.041822 153.055563) + (xy 77.900405 152.914146) + (xy 77.866379 152.851834) + (xy 77.8635 152.825051) + (xy 77.8635 150.751866) + (xy 77.856745 150.689684) + (xy 77.805615 150.553295) + (xy 77.718261 150.436739) + (xy 77.601705 150.349385) + (xy 77.465316 150.298255) + (xy 77.403134 150.2915) + (xy 76.38495 150.2915) + (xy 76.316829 150.271498) + (xy 76.295855 150.254595) + (xy 75.26297 149.22171) + (xy 75.228944 149.159398) + (xy 75.226755 149.145786) + (xy 75.214232 149.026636) + (xy 75.214232 149.026635) + (xy 75.213542 149.020072) + (xy 75.21098 149.012185) + (xy 75.156569 148.844729) + (xy 75.154527 148.838444) + (xy 75.144675 148.821379) + (xy 75.095926 148.736944) + (xy 75.05904 148.673056) + (xy 75.029655 148.64042) + (xy 74.935675 148.536045) + (xy 74.935674 148.536044) + (xy 74.931253 148.531134) + (xy 74.776752 148.418882) + (xy 74.770724 148.416198) + (xy 74.770722 148.416197) + (xy 74.608319 148.343891) + (xy 74.608318 148.343891) + (xy 74.602288 148.341206) + (xy 74.491142 148.317581) + (xy 74.421944 148.302872) + (xy 74.421939 148.302872) + (xy 74.415487 148.3015) + (xy 74.224513 148.3015) + (xy 74.218061 148.302872) + (xy 74.218056 148.302872) + (xy 74.148858 148.317581) + (xy 74.037712 148.341206) + (xy 74.031682 148.343891) + (xy 74.031681 148.343891) + (xy 73.869278 148.416197) + (xy 73.869276 148.416198) + (xy 73.863248 148.418882) + (xy 73.708747 148.531134) + (xy 73.704326 148.536044) + (xy 73.704325 148.536045) + (xy 73.613398 148.63703) + (xy 73.552952 148.67427) + (xy 73.481969 148.672918) + (xy 73.422984 148.633405) + (xy 73.394675 148.567859) + (xy 73.391649 148.542855) (xy 73.390975 148.537285) (xy 73.324918 148.322565) - (xy 73.305768 148.285461) + (xy 73.316614 148.306475) (xy 73.224454 148.127919) (xy 73.224454 148.127918) (xy 73.221882 148.122936) @@ -13243,31 +13356,36 @@ (xy 71.931238 147.556383) (xy 71.925824 147.557864) (xy 71.925819 147.557865) - (xy 71.823226 147.585932) + (xy 71.811262 147.589205) (xy 71.714549 147.615663) (xy 71.709491 147.618075) (xy 71.709487 147.618077) - (xy 71.663978 147.639784) + (xy 71.645231 147.648726) (xy 71.511782 147.712378) (xy 71.329346 147.843471) - (xy 71.311928 147.861445) - (xy 71.207453 147.969255) + (xy 71.325439 147.847503) + (xy 71.209046 147.967611) (xy 71.173008 148.004799) (xy 71.04771 148.191262) (xy 70.957412 148.396967) (xy 70.956103 148.402418) (xy 70.956102 148.402422) - (xy 70.909744 148.595516) + (xy 70.914123 148.577279) (xy 70.904968 148.615411) + (xy 70.902421 148.65958) + (xy 70.893093 148.821379) (xy 70.892037 148.83969) (xy 70.508 148.83969) (xy 70.508 139.8) (xy 73.55762 139.8) (xy 73.57625 140.036711) + (xy 73.577404 140.041518) + (xy 73.577405 140.041524) + (xy 73.60806 140.169211) (xy 73.63168 140.267594) (xy 73.633573 140.272165) (xy 73.633574 140.272167) - (xy 73.715588 140.470166) + (xy 73.708362 140.452721) (xy 73.722545 140.486963) (xy 73.725131 140.491183) (xy 73.844026 140.685202) @@ -13302,26 +13420,60 @@ (xy 75.955993 141.026755) (xy 75.960201 141.024176) (xy 76.140754 140.869969) + (xy 76.159403 140.848134) + (xy 78.562285 140.848134) + (xy 78.56904 140.910316) + (xy 78.62017 141.046705) + (xy 78.707524 141.163261) + (xy 78.82408 141.250615) + (xy 78.960469 141.301745) + (xy 79.022651 141.3085) + (xy 81.118919 141.3085) + (xy 81.181101 141.301745) + (xy 81.31749 141.250615) + (xy 81.434046 141.163261) + (xy 81.5214 141.046705) + (xy 81.57253 140.910316) + (xy 81.579285 140.848134) + (xy 81.579285 138.751866) + (xy 81.57253 138.689684) + (xy 81.5214 138.553295) + (xy 81.434046 138.436739) + (xy 81.31749 138.349385) + (xy 81.181101 138.298255) + (xy 81.118919 138.2915) + (xy 79.022651 138.2915) + (xy 78.960469 138.298255) + (xy 78.82408 138.349385) + (xy 78.707524 138.436739) + (xy 78.62017 138.553295) + (xy 78.56904 138.689684) + (xy 78.562285 138.751866) + (xy 78.562285 140.848134) + (xy 76.159403 140.848134) (xy 76.294961 140.689416) (xy 76.29754 140.685208) (xy 76.297544 140.685202) (xy 76.416439 140.491183) (xy 76.419025 140.486963) - (xy 76.425983 140.470166) + (xy 76.433209 140.452721) (xy 76.507996 140.272167) (xy 76.507997 140.272165) (xy 76.50989 140.267594) + (xy 76.53351 140.169211) + (xy 76.564165 140.041524) + (xy 76.564166 140.041518) (xy 76.56532 140.036711) (xy 76.58395 139.8) (xy 76.56532 139.563289) (xy 76.537218 139.446233) - (xy 76.524 139.391179) + (xy 76.511045 139.337218) (xy 76.50989 139.332406) - (xy 76.507996 139.327833) + (xy 76.449638 139.186944) (xy 76.42092 139.117611) (xy 76.420918 139.117607) (xy 76.419025 139.113037) - (xy 76.416439 139.108817) + (xy 76.387663 139.061859) (xy 76.297544 138.914798) (xy 76.29754 138.914792) (xy 76.294961 138.910584) @@ -13336,7 +13488,7 @@ (xy 75.542952 138.362789) (xy 75.54295 138.362788) (xy 75.538379 138.360895) - (xy 75.433709 138.335766) + (xy 75.441965 138.337748) (xy 75.312309 138.30662) (xy 75.312303 138.306619) (xy 75.307496 138.305465) @@ -13344,7 +13496,7 @@ (xy 74.834074 138.305465) (xy 74.829267 138.306619) (xy 74.829261 138.30662) - (xy 74.707861 138.335766) + (xy 74.699605 138.337748) (xy 74.603191 138.360895) (xy 74.59862 138.362788) (xy 74.598618 138.362789) @@ -13359,77 +13511,81 @@ (xy 73.846609 138.910584) (xy 73.84403 138.914792) (xy 73.844026 138.914798) - (xy 73.725131 139.108817) + (xy 73.753907 139.061859) (xy 73.722545 139.113037) (xy 73.720652 139.117607) (xy 73.72065 139.117611) - (xy 73.633574 139.327833) + (xy 73.691932 139.186944) (xy 73.63168 139.332406) - (xy 73.61757 139.391179) + (xy 73.630525 139.337218) (xy 73.604353 139.446233) (xy 73.57625 139.563289) (xy 73.55762 139.8) (xy 70.508 139.8) - (xy 70.508 135.610068) - (xy 70.528002 135.541947) - (xy 70.581658 135.495454) - (xy 70.651932 135.48535) - (xy 70.700954 135.50333) - (xy 70.724981 135.518402) - (xy 70.980788 135.633903) - (xy 70.984907 135.635123) - (xy 71.24579 135.712401) - (xy 71.245795 135.712402) - (xy 71.249903 135.713619) - (xy 71.254137 135.714267) - (xy 71.254142 135.714268) - (xy 71.476204 135.748248) - (xy 71.527347 135.756074) - (xy 71.670292 135.758319) - (xy 71.803694 135.760415) - (xy 71.8037 135.760415) - (xy 71.807985 135.760482) - (xy 72.086626 135.726763) - (xy 72.358112 135.65554) - (xy 72.362072 135.6539) - (xy 72.362077 135.653898) - (xy 72.524224 135.586734) - (xy 72.61742 135.548131) - (xy 72.668296 135.518402) - (xy 72.856054 135.408685) - (xy 72.856055 135.408685) - (xy 72.859752 135.406524) - (xy 73.080624 135.233338) - (xy 73.275948 135.031779) - (xy 73.278481 135.028331) - (xy 73.278485 135.028326) - (xy 73.439572 134.809032) - (xy 73.44211 134.805577) - (xy 73.444156 134.801809) - (xy 73.573986 134.562692) - (xy 73.573987 134.56269) - (xy 73.576036 134.558916) - (xy 73.675247 134.296362) - (xy 73.737907 134.022773) - (xy 73.740875 133.989525) - (xy 73.762637 133.745677) - (xy 73.762637 133.745675) - (xy 73.762857 133.743211) - (xy 73.76331 133.7) - (xy 73.761535 133.67396) - (xy 73.744512 133.424254) - (xy 73.744511 133.424248) - (xy 73.74422 133.419977) - (xy 73.730312 133.352815) - (xy 73.688172 133.149332) - (xy 73.687303 133.145135) - (xy 73.593612 132.880561) - (xy 73.49618 132.691788) - (xy 73.482711 132.622083) - (xy 73.509066 132.556159) - (xy 73.566879 132.51495) - (xy 73.608146 132.508) - (xy 92.431184 132.508) + (xy 70.508 134.801669) + (xy 95.025001 134.801669) + (xy 95.025371 134.80849) + (xy 95.030895 134.859352) + (xy 95.034521 134.874604) + (xy 95.079676 134.995054) + (xy 95.088214 135.010649) + (xy 95.164715 135.112724) + (xy 95.177276 135.125285) + (xy 95.279351 135.201786) + (xy 95.294946 135.210324) + (xy 95.415394 135.255478) + (xy 95.430649 135.259105) + (xy 95.481514 135.264631) + (xy 95.488328 135.265) + (xy 96.022885 135.265) + (xy 96.038124 135.260525) + (xy 96.039329 135.259135) + (xy 96.041 135.251452) + (xy 96.041 134.267115) + (xy 96.036525 134.251876) + (xy 96.035135 134.250671) + (xy 96.027452 134.249) + (xy 95.043116 134.249) + (xy 95.027877 134.253475) + (xy 95.026672 134.254865) + (xy 95.025001 134.262548) + (xy 95.025001 134.801669) + (xy 70.508 134.801669) + (xy 70.508 133.749327) + (xy 70.5095 133.729942) + (xy 70.511805 133.715141) + (xy 70.511805 133.715138) + (xy 70.513186 133.706269) + (xy 70.51135 133.69223) + (xy 70.510675 133.666011) + (xy 70.521897 133.523416) + (xy 70.52499 133.503887) + (xy 70.564025 133.341292) + (xy 70.570136 133.322487) + (xy 70.634127 133.168002) + (xy 70.643102 133.150387) + (xy 70.730468 133.007817) + (xy 70.74209 132.991821) + (xy 70.850688 132.864669) + (xy 70.864669 132.850688) + (xy 70.991821 132.74209) + (xy 71.007817 132.730468) + (xy 71.150387 132.643102) + (xy 71.168002 132.634127) + (xy 71.322487 132.570136) + (xy 71.341287 132.564027) + (xy 71.503888 132.52499) + (xy 71.523416 132.521897) + (xy 71.659012 132.511226) + (xy 71.67588 132.511867) + (xy 71.675882 132.511695) + (xy 71.684858 132.511805) + (xy 71.693729 132.513186) + (xy 71.702631 132.512022) + (xy 71.702634 132.512022) + (xy 71.72525 132.509064) + (xy 71.741588 132.508) + (xy 95.324589 132.508) ) ) ) diff --git a/Morse_code_PCB/Morse_code_PCB.kicad_prl b/Morse_code_PCB/Morse_code_PCB.kicad_prl index 420fa84..9a8a4b4 100644 --- a/Morse_code_PCB/Morse_code_PCB.kicad_prl +++ b/Morse_code_PCB/Morse_code_PCB.kicad_prl @@ -1,6 +1,6 @@ { "board": { - "active_layer": 31, + "active_layer": 36, "active_layer_preset": "", "auto_track_width": true, "hidden_nets": [], @@ -18,7 +18,7 @@ "footprints": true, "graphics": true, "keepouts": true, - "lockedItems": true, + "lockedItems": false, "otherItems": true, "pads": true, "text": true, @@ -43,6 +43,7 @@ 15, 16, 18, + 19, 20, 21, 22, @@ -55,11 +56,12 @@ 29, 30, 32, + 33, 34, 35, 36 ], - "visible_layers": "fffffef_ffffffff", + "visible_layers": "fffffff_ffffffff", "zone_display_mode": 0 }, "meta": { diff --git a/Morse_code_PCB/Morse_code_PCB.kicad_sch b/Morse_code_PCB/Morse_code_PCB.kicad_sch index 2787384..e49e0ab 100644 --- a/Morse_code_PCB/Morse_code_PCB.kicad_sch +++ b/Morse_code_PCB/Morse_code_PCB.kicad_sch @@ -1194,188 +1194,6 @@ ) ) ) - (symbol "Interface_USB:CH340E" (in_bom yes) (on_board yes) - (property "Reference" "U" (id 0) (at -5.08 13.97 0) - (effects (font (size 1.27 1.27)) (justify right)) - ) - (property "Value" "CH340E" (id 1) (at 1.27 13.97 0) - (effects (font (size 1.27 1.27)) (justify left)) - ) - (property "Footprint" "Package_SO:MSOP-10_3x3mm_P0.5mm" (id 2) (at 1.27 -13.97 0) - (effects (font (size 1.27 1.27)) (justify left) hide) - ) - (property "Datasheet" "https://www.mpja.com/download/35227cpdata.pdf" (id 3) (at -8.89 20.32 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "ki_keywords" "USB UART Serial Converter Interface" (id 4) (at 0 0 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "ki_description" "USB serial converter, UART, MSOP-10" (id 5) (at 0 0 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "ki_fp_filters" "MSOP*3x3mm*P0.5mm*" (id 6) (at 0 0 0) - (effects (font (size 1.27 1.27)) hide) - ) - (symbol "CH340E_0_1" - (rectangle (start -7.62 12.7) (end 7.62 -12.7) - (stroke (width 0.254) (type default) (color 0 0 0 0)) - (fill (type background)) - ) - ) - (symbol "CH340E_1_1" - (pin bidirectional line (at -10.16 2.54 0) (length 2.54) - (name "UD+" (effects (font (size 1.27 1.27)))) - (number "1" (effects (font (size 1.27 1.27)))) - ) - (pin passive line (at -2.54 15.24 270) (length 2.54) - (name "V3" (effects (font (size 1.27 1.27)))) - (number "10" (effects (font (size 1.27 1.27)))) - ) - (pin bidirectional line (at -10.16 0 0) (length 2.54) - (name "UD-" (effects (font (size 1.27 1.27)))) - (number "2" (effects (font (size 1.27 1.27)))) - ) - (pin power_in line (at 0 -15.24 90) (length 2.54) - (name "GND" (effects (font (size 1.27 1.27)))) - (number "3" (effects (font (size 1.27 1.27)))) - ) - (pin output line (at 10.16 -10.16 180) (length 2.54) - (name "~{RTS}" (effects (font (size 1.27 1.27)))) - (number "4" (effects (font (size 1.27 1.27)))) - ) - (pin input line (at 10.16 2.54 180) (length 2.54) - (name "~{CTS}" (effects (font (size 1.27 1.27)))) - (number "5" (effects (font (size 1.27 1.27)))) - ) - (pin output line (at -10.16 -2.54 0) (length 2.54) - (name "TNOW" (effects (font (size 1.27 1.27)))) - (number "6" (effects (font (size 1.27 1.27)))) - ) - (pin power_in line (at 0 15.24 270) (length 2.54) - (name "VCC" (effects (font (size 1.27 1.27)))) - (number "7" (effects (font (size 1.27 1.27)))) - ) - (pin output line (at 10.16 10.16 180) (length 2.54) - (name "TXD" (effects (font (size 1.27 1.27)))) - (number "8" (effects (font (size 1.27 1.27)))) - ) - (pin input line (at 10.16 7.62 180) (length 2.54) - (name "RXD" (effects (font (size 1.27 1.27)))) - (number "9" (effects (font (size 1.27 1.27)))) - ) - ) - ) - (symbol "MCU_ST_STM32F0:STM32F030F4Px" (in_bom yes) (on_board yes) - (property "Reference" "U" (id 0) (at -10.16 16.51 0) - (effects (font (size 1.27 1.27)) (justify left)) - ) - (property "Value" "STM32F030F4Px" (id 1) (at 5.08 16.51 0) - (effects (font (size 1.27 1.27)) (justify left)) - ) - (property "Footprint" "Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm" (id 2) (at -10.16 -17.78 0) - (effects (font (size 1.27 1.27)) (justify right) hide) - ) - (property "Datasheet" "http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00088500.pdf" (id 3) (at 0 0 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "ki_keywords" "ARM Cortex-M0 STM32F0 STM32F0x0 Value Line" (id 4) (at 0 0 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "ki_description" "ARM Cortex-M0 MCU, 16KB flash, 4KB RAM, 48MHz, 2.4-3.6V, 15 GPIO, TSSOP-20" (id 5) (at 0 0 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "ki_fp_filters" "TSSOP*4.4x6.5mm*P0.65mm*" (id 6) (at 0 0 0) - (effects (font (size 1.27 1.27)) hide) - ) - (symbol "STM32F030F4Px_0_1" - (rectangle (start -10.16 -17.78) (end 10.16 15.24) - (stroke (width 0.254) (type default) (color 0 0 0 0)) - (fill (type background)) - ) - ) - (symbol "STM32F030F4Px_1_1" - (pin input line (at -12.7 7.62 0) (length 2.54) - (name "BOOT0" (effects (font (size 1.27 1.27)))) - (number "1" (effects (font (size 1.27 1.27)))) - ) - (pin bidirectional line (at 12.7 2.54 180) (length 2.54) - (name "PA4" (effects (font (size 1.27 1.27)))) - (number "10" (effects (font (size 1.27 1.27)))) - ) - (pin bidirectional line (at 12.7 0 180) (length 2.54) - (name "PA5" (effects (font (size 1.27 1.27)))) - (number "11" (effects (font (size 1.27 1.27)))) - ) - (pin bidirectional line (at 12.7 -2.54 180) (length 2.54) - (name "PA6" (effects (font (size 1.27 1.27)))) - (number "12" (effects (font (size 1.27 1.27)))) - ) - (pin bidirectional line (at 12.7 -5.08 180) (length 2.54) - (name "PA7" (effects (font (size 1.27 1.27)))) - (number "13" (effects (font (size 1.27 1.27)))) - ) - (pin bidirectional line (at -12.7 -15.24 0) (length 2.54) - (name "PB1" (effects (font (size 1.27 1.27)))) - (number "14" (effects (font (size 1.27 1.27)))) - ) - (pin power_in line (at 0 -20.32 90) (length 2.54) - (name "VSS" (effects (font (size 1.27 1.27)))) - (number "15" (effects (font (size 1.27 1.27)))) - ) - (pin power_in line (at 0 17.78 270) (length 2.54) - (name "VDD" (effects (font (size 1.27 1.27)))) - (number "16" (effects (font (size 1.27 1.27)))) - ) - (pin bidirectional line (at 12.7 -7.62 180) (length 2.54) - (name "PA9" (effects (font (size 1.27 1.27)))) - (number "17" (effects (font (size 1.27 1.27)))) - ) - (pin bidirectional line (at 12.7 -10.16 180) (length 2.54) - (name "PA10" (effects (font (size 1.27 1.27)))) - (number "18" (effects (font (size 1.27 1.27)))) - ) - (pin bidirectional line (at 12.7 -12.7 180) (length 2.54) - (name "PA13" (effects (font (size 1.27 1.27)))) - (number "19" (effects (font (size 1.27 1.27)))) - ) - (pin input line (at -12.7 -7.62 0) (length 2.54) - (name "PF0" (effects (font (size 1.27 1.27)))) - (number "2" (effects (font (size 1.27 1.27)))) - ) - (pin bidirectional line (at 12.7 -15.24 180) (length 2.54) - (name "PA14" (effects (font (size 1.27 1.27)))) - (number "20" (effects (font (size 1.27 1.27)))) - ) - (pin input line (at -12.7 -10.16 0) (length 2.54) - (name "PF1" (effects (font (size 1.27 1.27)))) - (number "3" (effects (font (size 1.27 1.27)))) - ) - (pin input line (at -12.7 12.7 0) (length 2.54) - (name "NRST" (effects (font (size 1.27 1.27)))) - (number "4" (effects (font (size 1.27 1.27)))) - ) - (pin power_in line (at 2.54 17.78 270) (length 2.54) - (name "VDDA" (effects (font (size 1.27 1.27)))) - (number "5" (effects (font (size 1.27 1.27)))) - ) - (pin bidirectional line (at 12.7 12.7 180) (length 2.54) - (name "PA0" (effects (font (size 1.27 1.27)))) - (number "6" (effects (font (size 1.27 1.27)))) - ) - (pin bidirectional line (at 12.7 10.16 180) (length 2.54) - (name "PA1" (effects (font (size 1.27 1.27)))) - (number "7" (effects (font (size 1.27 1.27)))) - ) - (pin bidirectional line (at 12.7 7.62 180) (length 2.54) - (name "PA2" (effects (font (size 1.27 1.27)))) - (number "8" (effects (font (size 1.27 1.27)))) - ) - (pin bidirectional line (at 12.7 5.08 180) (length 2.54) - (name "PA3" (effects (font (size 1.27 1.27)))) - (number "9" (effects (font (size 1.27 1.27)))) - ) - ) - ) (symbol "MCU_ST_STM32F1:STM32F103C8Tx" (in_bom yes) (on_board yes) (property "Reference" "U" (id 0) (at -15.24 36.83 0) (effects (font (size 1.27 1.27)) (justify left)) @@ -2128,26 +1946,20 @@ (junction (at 27.305 130.175) (diameter 0) (color 0 0 0 0) (uuid 009881e5-c59e-4ed4-9d85-91b6c83d4743) ) - (junction (at 53.34 57.15) (diameter 0) (color 0 0 0 0) - (uuid 0183b8ab-c4a6-4562-a182-165f73a79d8d) + (junction (at 363.22 195.58) (diameter 0) (color 0 0 0 0) + (uuid 03e6c7fb-acfb-40db-b061-4cc553e01c78) ) (junction (at 368.3 177.8) (diameter 0) (color 0 0 0 0) (uuid 08555884-ae4b-4c2a-9525-fb13e2f595f7) ) - (junction (at 331.47 144.78) (diameter 0) (color 0 0 0 0) - (uuid 0a3e374c-bbad-42ca-acda-dbbe90f0e427) - ) (junction (at 64.77 77.47) (diameter 0) (color 0 0 0 0) (uuid 0a5bd561-d7cc-4092-b669-319adb9886ea) ) (junction (at 354.33 35.56) (diameter 0) (color 0 0 0 0) (uuid 0c01ad54-9305-4aa5-8381-04854d6627bc) ) - (junction (at 363.22 144.78) (diameter 0) (color 0 0 0 0) - (uuid 1c1ce3b9-9f47-41be-9fee-35e57dddefa7) - ) - (junction (at 363.22 195.58) (diameter 0) (color 0 0 0 0) - (uuid 26bd71a8-73cb-4f36-8529-c584a6ac6d00) + (junction (at 39.37 33.02) (diameter 0) (color 0 0 0 0) + (uuid 26908072-a4f3-4500-b4fc-b71c6a03f78f) ) (junction (at 44.45 120.65) (diameter 0) (color 0 0 0 0) (uuid 313a59a3-4b2c-4ff3-b9e5-9601f351f5c8) @@ -2158,15 +1970,15 @@ (junction (at 44.45 130.175) (diameter 0) (color 0 0 0 0) (uuid 393bf7fd-e06a-462d-a382-11e84b0c365f) ) + (junction (at 39.37 40.64) (diameter 0) (color 0 0 0 0) + (uuid 3d08529c-a10b-4a41-bf71-45d50cc3408f) + ) (junction (at 41.91 82.55) (diameter 0) (color 0 0 0 0) (uuid 3df64863-5d15-4e3b-9211-54c7de1d2f68) ) (junction (at 372.11 195.58) (diameter 0) (color 0 0 0 0) (uuid 3e864430-5c39-4b59-992e-3f1f42d6674a) ) - (junction (at 331.47 195.58) (diameter 0) (color 0 0 0 0) - (uuid 3f245c18-4bca-4b2e-8839-35198b27b579) - ) (junction (at 180.34 109.22) (diameter 0) (color 0 0 0 0) (uuid 4034be23-1868-478e-b4a0-46f0fcc6c5c6) ) @@ -2176,9 +1988,6 @@ (junction (at 364.49 26.67) (diameter 0) (color 0 0 0 0) (uuid 4dbc1ec6-2f2b-4c9f-8993-aa0b492818dd) ) - (junction (at 304.8 163.83) (diameter 0) (color 0 0 0 0) - (uuid 5025ecd1-4522-46af-a17b-e12b50f33d7b) - ) (junction (at 50.8 179.07) (diameter 0) (color 0 0 0 0) (uuid 5099fc89-dc9e-4258-b6f6-9791feea6b58) ) @@ -2188,18 +1997,21 @@ (junction (at 54.61 181.61) (diameter 0) (color 0 0 0 0) (uuid 54a33e1e-2b8c-442c-8c62-a8bd14d039f9) ) - (junction (at 40.64 38.735) (diameter 0) (color 0 0 0 0) - (uuid 5671c21d-aae9-45b7-8777-348b94ce42ff) - ) (junction (at 64.77 139.065) (diameter 0) (color 0 0 0 0) (uuid 5696d1fd-f76e-4122-8ffa-7753eba290fe) ) + (junction (at 363.22 144.78) (diameter 0) (color 0 0 0 0) + (uuid 583f4c33-4599-46f9-ac52-0db66b88b71e) + ) (junction (at 50.8 167.64) (diameter 0) (color 0 0 0 0) (uuid 58b53a29-ae95-4385-973b-a39db037ab6c) ) (junction (at 366.395 73.025) (diameter 0) (color 0 0 0 0) (uuid 59de297a-bc90-4cce-b6ef-33ad33216638) ) + (junction (at 41.148 40.64) (diameter 0) (color 0 0 0 0) + (uuid 5ad7899a-4173-442c-9ba0-efb0a4d76e3d) + ) (junction (at 44.45 111.125) (diameter 0) (color 0 0 0 0) (uuid 5bc8692b-aaf6-4453-8f03-614e77e67d00) ) @@ -2215,18 +2027,12 @@ (junction (at 108.585 121.285) (diameter 0) (color 0 0 0 0) (uuid 6d70e1ff-2261-4255-b382-9d4ea975879c) ) - (junction (at 299.72 158.75) (diameter 0) (color 0 0 0 0) - (uuid 72c6c082-a3dd-43f7-96d3-41b27e63abeb) - ) (junction (at 82.55 111.125) (diameter 0) (color 0 0 0 0) (uuid 7421c8de-fa2c-4b3f-9c96-411069890256) ) (junction (at 186.69 72.39) (diameter 0) (color 0 0 0 0) (uuid 74d0c053-ac1f-48a2-bca1-66f7a9eb5f0a) ) - (junction (at 66.04 19.685) (diameter 0) (color 0 0 0 0) - (uuid 78e6145c-58bd-4b87-b77b-c9e34c97b75f) - ) (junction (at 201.93 67.31) (diameter 0) (color 0 0 0 0) (uuid 844f91d4-a552-4c1f-a6d4-38f4e57e75f5) ) @@ -2281,27 +2087,21 @@ (junction (at 114.3 111.125) (diameter 0) (color 0 0 0 0) (uuid c2673077-87eb-4dd3-8bac-3390d2286e20) ) - (junction (at 40.64 36.195) (diameter 0) (color 0 0 0 0) - (uuid c4b2e4b9-548b-468f-81d0-cb8ca215a5ce) - ) - (junction (at 304.8 144.78) (diameter 0) (color 0 0 0 0) - (uuid c9b835e5-4271-4644-80d7-f83e9052ee49) - ) (junction (at 187.96 67.31) (diameter 0) (color 0 0 0 0) (uuid cceda4b7-e939-4400-b029-fff512bf1acb) ) (junction (at 167.64 109.22) (diameter 0) (color 0 0 0 0) (uuid d1eeda82-db62-43c2-af4d-75c78a7aaeb7) ) + (junction (at 24.13 58.42) (diameter 0) (color 0 0 0 0) + (uuid d99988b4-f8db-4987-87b0-46562e3c2158) + ) (junction (at 177.8 82.55) (diameter 0) (color 0 0 0 0) (uuid da6270fb-b12d-4427-802d-0c1d27463e11) ) (junction (at 223.52 157.48) (diameter 0) (color 0 0 0 0) (uuid dd23a43d-8815-4c73-a56c-9d2faa660a10) ) - (junction (at 334.01 144.78) (diameter 0) (color 0 0 0 0) - (uuid dd2fa474-3bd0-4e48-ba7d-adac298e98ff) - ) (junction (at 58.42 82.55) (diameter 0) (color 0 0 0 0) (uuid de52804c-3714-434e-9acb-6cee99bac11d) ) @@ -2320,21 +2120,9 @@ (junction (at 359.41 26.67) (diameter 0) (color 0 0 0 0) (uuid e2ef1161-622c-41dd-aa52-b283555f5611) ) - (junction (at 66.04 57.15) (diameter 0) (color 0 0 0 0) - (uuid e8061de1-41ee-4a2e-9165-f8a0f13de45f) - ) - (junction (at 304.8 195.58) (diameter 0) (color 0 0 0 0) - (uuid e9601c4c-dffa-46b8-b84a-f4710839d535) - ) (junction (at 37.465 118.745) (diameter 0) (color 0 0 0 0) (uuid f9a15d69-9923-4b2b-b68a-b96d4bd88b2a) ) - (junction (at 53.34 34.29) (diameter 0) (color 0 0 0 0) - (uuid fa961472-16e4-4c3b-b98d-eb8be31f0663) - ) - (junction (at 299.72 144.78) (diameter 0) (color 0 0 0 0) - (uuid fb2b108e-7501-412e-a2d5-0666a9771f1e) - ) (wire (pts (xy 32.385 111.125) (xy 26.67 111.125)) (stroke (width 0) (type default) (color 0 0 0 0)) @@ -2356,10 +2144,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 0475a566-eaf8-47a8-93e7-14459aaa9c06) ) - (wire (pts (xy 41.91 34.29) (xy 45.085 34.29)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 056f73c4-058c-4c66-b7d7-89b27fc779c1) - ) (wire (pts (xy 40.005 77.47) (xy 64.77 77.47)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 05aa1b06-390a-4d04-a60b-254814fd17bc) @@ -2368,10 +2152,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 08d7475c-5546-4b18-b5aa-42e7b3d3efcb) ) - (wire (pts (xy 299.72 157.48) (xy 299.72 158.75)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 0a62cbae-1c9f-48cd-8d93-d9df88b13243) - ) (wire (pts (xy 190.5 72.39) (xy 186.69 72.39)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 0bc55cbe-05a2-4fb1-ae8e-eccb45a64e9a) @@ -2412,10 +2192,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 1572d960-c23c-46db-87b2-0148faf055f6) ) - (wire (pts (xy 304.8 144.78) (xy 331.47 144.78)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 164d94ce-8f78-4957-a704-ecbe56c014be) - ) (wire (pts (xy 76.835 121.285) (xy 82.55 121.285)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 16ef8fb3-abf7-490e-a5d7-a0e7db34cb54) @@ -2440,10 +2216,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 1dac44e3-fc7c-4018-9a1d-1590003c6605) ) - (wire (pts (xy 41.91 34.29) (xy 41.91 38.735)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 1e65c541-8f2c-4aba-ad1f-8d4b4a6ea316) - ) (wire (pts (xy 37.465 130.175) (xy 44.45 130.175)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 1f16ff3c-62d4-4cb7-b68e-74609b34ac59) @@ -2480,18 +2252,10 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 2ba9fb64-1798-4089-85f1-dccc578b5593) ) - (wire (pts (xy 331.47 195.58) (xy 363.22 195.58)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 2e9de0d7-d4a8-4c60-a747-1ebf74585921) - ) (wire (pts (xy 62.23 139.065) (xy 64.77 139.065)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 2f6d9232-d8eb-4dcb-b9f1-93169f34e3f1) ) - (wire (pts (xy 304.8 156.21) (xy 304.8 163.83)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 30bacf83-4f6c-4b28-ad00-a6ecab19a180) - ) (wire (pts (xy 320.675 205.74) (xy 320.675 209.55)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 345e1349-128f-4653-9838-cd7ddb2f35e5) @@ -2500,6 +2264,10 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 34b82398-cd7f-4c4a-8e9a-6b225129fda6) ) + (wire (pts (xy 16.51 58.42) (xy 24.13 58.42)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 34c5bb84-7ff6-4da9-93d2-0885167f651b) + ) (wire (pts (xy 50.8 167.64) (xy 54.61 167.64)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 352f2bc0-2898-4caa-a7c1-8fdd76c416aa) @@ -2524,22 +2292,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 3e9c6e9e-971e-4087-959d-7cf1486899a2) ) - (wire (pts (xy 299.72 144.78) (xy 299.72 149.86)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 40280528-abaa-49e3-b9b2-51d0d2ec5c4f) - ) - (wire (pts (xy 52.705 36.83) (xy 55.88 36.83)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 405bece2-2ae3-4055-8dc3-f90d62687cc7) - ) - (wire (pts (xy 52.705 34.29) (xy 53.34 34.29)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 4091cea0-6c5c-4d38-9375-257cf0db8437) - ) - (wire (pts (xy 41.91 38.735) (xy 40.64 38.735)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 4125621b-699f-428b-ab54-e60663f2630f) - ) (wire (pts (xy 29.845 90.17) (xy 29.845 91.44)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 42c94dc2-94d1-4388-aeba-c453f181ae89) @@ -2572,10 +2324,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 4fb261fa-de6a-4a33-899a-d29ad68fb27f) ) - (wire (pts (xy 314.96 186.69) (xy 318.77 186.69)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 501196fc-7aa4-4f6a-9072-47f3728776a1) - ) (wire (pts (xy 354.33 52.07) (xy 354.33 35.56)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 50b5fa93-b891-4982-9f88-d77fc27b1b30) @@ -2588,10 +2336,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 516ee21d-51fd-46e8-b0a8-d5159065aa7f) ) - (wire (pts (xy 40.64 36.83) (xy 45.085 36.83)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 52195a4d-dade-4f7a-a6f5-0a59caef567f) - ) (wire (pts (xy 44.45 118.745) (xy 44.45 120.65)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 52464cfe-48c1-4db5-9c55-dd32f596e2a3) @@ -2620,10 +2364,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 58b08858-f4b8-4702-9c6e-2d4da10b2ea3) ) - (wire (pts (xy 299.72 158.75) (xy 299.72 160.02)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 59497830-adb4-4697-9b71-3356e1a81264) - ) (wire (pts (xy 19.685 82.55) (xy 18.415 82.55)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 5c6a509c-8415-4559-9516-7c1f4f26a5ff) @@ -2660,17 +2400,13 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 69865d57-3d25-43a8-a481-21b13df58cfa) ) - (wire (pts (xy 299.72 195.58) (xy 304.8 195.58)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 6c206581-e0fd-461b-9470-b056303d171d) - ) (wire (pts (xy 340.36 96.52) (xy 349.885 96.52)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 6d8334da-2f23-49a4-a23e-cdbd45d500f9) ) - (wire (pts (xy 53.34 46.99) (xy 53.34 48.895)) + (wire (pts (xy 24.13 58.42) (xy 24.13 60.706)) (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 70d1e6c5-f91b-49a5-94ea-f278dedc598f) + (uuid 6de7b952-e3aa-407d-925c-3d8182bac2ef) ) (wire (pts (xy 50.8 179.07) (xy 55.88 179.07)) (stroke (width 0) (type default) (color 0 0 0 0)) @@ -2700,9 +2436,13 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 77f5de31-468c-4fa8-83fd-8de835c5a14f) ) - (wire (pts (xy 53.34 19.685) (xy 66.04 19.685)) + (wire (pts (xy 39.37 33.02) (xy 42.926 33.02)) (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 7866a79b-7b50-4eeb-938a-545201fdc3cd) + (uuid 780171a5-1ca2-4102-b65e-b50cdf1adaa6) + ) + (wire (pts (xy 41.148 27.686) (xy 41.148 40.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 79bfef66-a680-44dd-8cdb-c17666c2125d) ) (wire (pts (xy 29.845 87.63) (xy 29.845 90.17)) (stroke (width 0) (type default) (color 0 0 0 0)) @@ -2728,10 +2468,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 7dfec79e-56f1-47ef-9f99-ad548c4b617a) ) - (wire (pts (xy 299.72 167.64) (xy 299.72 195.58)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 80dc8ef1-940b-4013-8abb-d6cf8c6be5e8) - ) (wire (pts (xy 93.98 176.53) (xy 95.25 176.53)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 8443c336-3a43-46f3-87e5-9cf1be3b6f60) @@ -2740,50 +2476,30 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 8654a6be-29d5-4462-8fb4-039f8b77920f) ) - (wire (pts (xy 359.41 172.72) (xy 359.41 173.99)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 8784d10c-0ac0-4c4e-8e62-fedd2301d30c) - ) - (wire (pts (xy 66.04 52.07) (xy 66.04 57.15)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 88ef1659-e366-46cf-96ce-d68942891f12) - ) (wire (pts (xy 358.775 101.6) (xy 358.775 105.41)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 8ba7dad0-2eb5-49e6-9255-7e6e57651509) ) - (wire (pts (xy 53.34 32.385) (xy 53.34 34.29)) + (wire (pts (xy 60.96 27.686) (xy 60.96 22.352)) (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 8c2c7222-2fba-4a2d-91d0-668e20462c03) + (uuid 8bfae3f9-de0d-4bba-8212-e163871b97f4) ) (wire (pts (xy 64.77 139.065) (xy 64.77 143.51)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 8cb8176e-1ad0-42fc-8134-370b749848c6) ) - (wire (pts (xy 53.34 39.37) (xy 55.88 39.37)) + (wire (pts (xy 50.8 27.686) (xy 60.96 27.686)) (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 8da6345d-4fb4-4f67-8a0d-536d153bd85d) - ) - (wire (pts (xy 40.64 33.655) (xy 40.64 36.195)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 8e9dbae4-83fc-4f23-9fd4-403c052f401a) - ) - (wire (pts (xy 331.47 195.58) (xy 304.8 195.58)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 90a6016a-17d3-4d66-a028-66d692c06c62) - ) - (wire (pts (xy 331.47 144.78) (xy 334.01 144.78)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 945ac7bd-0733-415b-b9ad-8ee8c154463a) - ) - (wire (pts (xy 53.34 34.29) (xy 55.88 34.29)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 9628cdbd-9b61-4996-8d73-5ca61326f46f) + (uuid 8d0132db-ca8d-4c41-8a18-c5c1d5aee992) ) (wire (pts (xy 358.775 62.865) (xy 358.775 67.945)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 9656a106-0d79-4d5e-a896-45530e156d17) ) + (wire (pts (xy 43.18 27.686) (xy 41.148 27.686)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9758e43e-8bc5-4219-8b29-1f39c26eb66a) + ) (wire (pts (xy 29.845 91.44) (xy 29.845 93.345)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 976da33c-3cb7-4adc-8d16-0ee063b49e44) @@ -2792,14 +2508,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 98ec82c1-07c1-4873-8d25-715c5efce5bc) ) - (wire (pts (xy 41.275 17.145) (xy 41.275 20.955)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 997a269f-22a9-4d19-b924-2b46397b1f95) - ) - (wire (pts (xy 304.8 171.45) (xy 304.8 195.58)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid 9b865d01-83b4-4201-bb4c-d8e471b70f2c) - ) (wire (pts (xy 223.52 72.39) (xy 223.52 81.28)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid 9c70d6be-7d44-4e91-93dc-68bee7b7c2c1) @@ -2816,10 +2524,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid a0d3c404-7857-4756-93b3-47e956252f23) ) - (wire (pts (xy 299.72 144.78) (xy 304.8 144.78)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid a2f5136b-2766-43df-b633-ee6d42eaf5c6) - ) (wire (pts (xy 354.33 35.56) (xy 373.38 35.56)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid a2feca1e-932e-4cc6-9f65-40c949995c45) @@ -2828,13 +2532,9 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid a310a299-792a-4cd4-8ccf-3ba11bff76c5) ) - (wire (pts (xy 359.41 176.53) (xy 359.41 177.8)) + (wire (pts (xy 39.37 38.1) (xy 39.37 40.64)) (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid a3b24ead-f6af-43c6-88c6-e117c893951d) - ) - (wire (pts (xy 344.17 176.53) (xy 359.41 176.53)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid a412d194-d1cf-4ee8-9292-89992ab5cbf5) + (uuid a3b6a5a0-0141-45f9-9afa-b0870cbb553b) ) (wire (pts (xy 363.22 144.78) (xy 367.03 144.78)) (stroke (width 0) (type default) (color 0 0 0 0)) @@ -2844,10 +2544,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid a4983a7c-7092-4e48-901e-a21815f38032) ) - (wire (pts (xy 331.47 144.78) (xy 331.47 153.67)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid a5c852eb-7eb9-43cb-9ad7-f4293d43d0c0) - ) (wire (pts (xy 349.885 96.52) (xy 351.155 96.52)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid a673f924-516a-4093-be23-cbdb84fae0b9) @@ -2912,10 +2608,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid b5087790-e57e-487c-aae5-4231f81ca82a) ) - (wire (pts (xy 331.47 191.77) (xy 331.47 195.58)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid b5bb35c8-60a6-443e-a6b4-74a3c0d15f60) - ) (wire (pts (xy 29.845 125.095) (xy 27.305 125.095)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid b87fbc5f-c590-43b9-93ff-8e27d2b00b11) @@ -2928,6 +2620,10 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid b9b40065-3d7b-41f6-8610-065fcf73efc1) ) + (wire (pts (xy 39.37 40.64) (xy 41.148 40.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid bb4e7e31-502a-4e3f-9725-73fa04d3efe9) + ) (wire (pts (xy 167.64 82.55) (xy 167.64 90.17)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid bc6da79c-2b1d-4879-b809-80ed1e9bba97) @@ -2960,14 +2656,14 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid c218e9e1-e714-4f0b-b8f9-428c9d4636f3) ) + (wire (pts (xy 41.148 40.64) (xy 42.672 40.64)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid c7c61626-b975-4c2e-ab12-db750aac7676) + ) (wire (pts (xy 18.415 82.55) (xy 18.415 90.17)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid c89922aa-3d20-474d-934a-f3821818f9d7) ) - (wire (pts (xy 48.26 21.59) (xy 63.5 21.59)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid c8ca2977-60c6-47e7-ae16-c75429d5987c) - ) (wire (pts (xy 220.98 81.28) (xy 223.52 81.28)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid c8d5ca8f-4f26-4380-91ec-7bfbbed50503) @@ -2984,18 +2680,10 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid c9b68851-2d0d-4d63-b927-2a439e962bcb) ) - (wire (pts (xy 334.01 144.78) (xy 363.22 144.78)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid ca5bacaf-a92d-4025-9056-338079bb613c) - ) (wire (pts (xy 201.93 67.31) (xy 201.93 72.39)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid cb49a849-396b-414b-85fa-2e86078468bb) ) - (wire (pts (xy 299.72 158.75) (xy 318.77 158.75)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid cb8af6ee-30a1-4b21-829e-e46b552209d7) - ) (wire (pts (xy 82.55 118.745) (xy 82.55 121.285)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid cc98b988-4a05-488d-86a4-ff356005434a) @@ -3004,10 +2692,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid cdfbd867-1acb-443c-8583-f3891d3e2ef4) ) - (wire (pts (xy 53.34 57.15) (xy 66.04 57.15)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid cf2aabc2-7699-49d4-933d-b356d64a6c20) - ) (wire (pts (xy 49.53 82.55) (xy 50.8 82.55)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid d1b7550d-a809-40ff-b766-7c5e8a9f0a6a) @@ -3016,10 +2700,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid d402cf0e-0838-43fa-9f9a-3b6781c4c300) ) - (wire (pts (xy 359.41 173.99) (xy 344.17 173.99)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid d43cf19e-68ec-43c8-9d44-6ae965fa66bd) - ) (wire (pts (xy 76.835 111.125) (xy 82.55 111.125)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid d542ea6c-df3c-4e0a-9abd-2c97b9602607) @@ -3032,10 +2712,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid d85f7eea-61c5-46a5-922a-5bc97e055ad9) ) - (wire (pts (xy 40.64 38.735) (xy 40.64 41.275)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid d89cc311-b132-42d4-93fa-301d28c9c63e) - ) (wire (pts (xy 27.305 130.175) (xy 34.29 130.175)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid d8dad5f0-8303-48b3-9317-6800555e2eb4) @@ -3044,10 +2720,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid d8ebe929-0a78-4c54-9a0b-65ac74f006e4) ) - (wire (pts (xy 41.275 20.955) (xy 40.64 20.955)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid d902f551-8a8b-4d07-bbcb-2124dc75a4ee) - ) (wire (pts (xy 349.885 105.41) (xy 358.775 105.41)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid d95aa962-0b90-4788-99cf-a33940d9564f) @@ -3076,18 +2748,10 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid e08382b6-c334-4267-9e2a-4e20d33f32e6) ) - (wire (pts (xy 334.01 152.4) (xy 334.01 153.67)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid e0f1db80-8fbc-453b-a14f-b14375f82f7e) - ) (wire (pts (xy 187.96 86.36) (xy 205.74 86.36)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid e1818785-0232-4dd5-98a7-221af5eecd40) ) - (wire (pts (xy 304.8 144.78) (xy 304.8 148.59)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid e2c453b3-700c-4b1e-9eb6-5024769d4fff) - ) (wire (pts (xy 175.26 82.55) (xy 177.8 82.55)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid e4deb2aa-5602-4d24-baee-8301e95df3c1) @@ -3096,9 +2760,9 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid e54959e2-550e-453f-b43e-e592a638b445) ) - (wire (pts (xy 66.04 19.685) (xy 66.04 21.59)) + (wire (pts (xy 39.37 33.02) (xy 39.37 35.56)) (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid e8031a32-9082-4f92-873a-2ecff5a5087a) + (uuid e7c0947f-f690-4619-a4df-b4d8b918687a) ) (wire (pts (xy 175.26 109.22) (xy 180.34 109.22)) (stroke (width 0) (type default) (color 0 0 0 0)) @@ -3112,10 +2776,6 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid e9e7f75c-0c31-4d67-85e0-faf9e10fd3e1) ) - (wire (pts (xy 40.64 36.83) (xy 40.64 36.195)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid ea3e1da0-089d-453a-a1b0-75eae3f0d6f2) - ) (wire (pts (xy 64.77 77.47) (xy 70.485 77.47)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid eafae462-9d4f-4b6c-ae37-b1ce55ae0707) @@ -3148,18 +2808,10 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid f1400b5a-2718-4c4f-a64c-92d7497e2168) ) - (wire (pts (xy 25.4 59.055) (xy 53.34 59.055)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid f27e429d-838d-4b4e-ad6a-96afc97205e2) - ) (wire (pts (xy 40.64 181.61) (xy 54.61 181.61)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid f2be6abf-f164-4bc2-9750-268cb2e65ea9) ) - (wire (pts (xy 53.34 56.515) (xy 53.34 57.15)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid f3c621ca-64b4-4e72-bd72-e99bed462e56) - ) (wire (pts (xy 388.62 177.8) (xy 388.62 195.58)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid f5c97284-d520-4c20-bda9-63a94fffa13a) @@ -3176,18 +2828,10 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid f892a532-49e2-4344-ae7e-07be2ccb5687) ) - (wire (pts (xy 299.72 142.24) (xy 299.72 144.78)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid f8b3bf92-20bf-41ea-92ac-c33a85c9a964) - ) (wire (pts (xy 367.03 144.78) (xy 367.03 158.75)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid f9d7cbdf-e55f-4407-854b-82012d150ddc) ) - (wire (pts (xy 53.34 24.765) (xy 53.34 19.685)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid fa9c62ea-cd2d-4355-b8e8-6960a13655a7) - ) (wire (pts (xy 359.41 54.61) (xy 359.41 38.1)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid fb107d27-5e23-400f-94dd-640e908834ac) @@ -3196,19 +2840,25 @@ (stroke (width 0) (type default) (color 0 0 0 0)) (uuid fcdb7d31-e687-4f72-b21c-f979bc89560c) ) - (wire (pts (xy 304.8 163.83) (xy 318.77 163.83)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid fcf04f82-526f-4453-9fef-86b6bf8f33c8) - ) (wire (pts (xy 151.13 67.31) (xy 151.13 72.39)) (stroke (width 0) (type default) (color 0 0 0 0)) (uuid ff1a083c-c977-4661-85c1-193cfe071ef5) ) - (wire (pts (xy 53.34 59.055) (xy 53.34 57.15)) - (stroke (width 0) (type default) (color 0 0 0 0)) - (uuid ffca6732-7af0-4812-9af7-9228ab7b096f) - ) + (global_label "TICK_B" (shape input) (at 205.74 116.84 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 021848f5-e761-4b6b-95c7-da79b5498e35) + (property "插入图纸页参考" "${INTERSHEET_REFS}" (id 0) (at 196.9769 116.9194 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "RUN_LED" (shape input) (at 205.74 152.4 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 02b7aa74-b7dd-4c44-bde8-f698e6d9b705) + (property "插入图纸页参考" "${INTERSHEET_REFS}" (id 0) (at 194.9812 152.4794 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) (global_label "PWR_EN" (shape input) (at 78.74 148.59 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left)) (uuid 04adb9f2-464f-4848-be65-ae69880faf29) @@ -3230,6 +2880,13 @@ (effects (font (size 1.27 1.27)) (justify right) hide) ) ) + (global_label "K1_DET" (shape input) (at 205.74 121.92 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 0c01ad54-9305-4aa5-8381-04854d6627bc) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 196.4931 121.8406 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) (global_label "RXD" (shape input) (at 238.76 137.16 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left)) (uuid 0cce02f0-e9b7-4d03-a5b1-c97fe575737f) @@ -3237,17 +2894,17 @@ (effects (font (size 1.27 1.27)) (justify left) hide) ) ) - (global_label "BAT_CHG_DET" (shape input) (at 344.17 161.29 0) (fields_autoplaced) - (effects (font (size 1.27 1.27)) (justify left)) - (uuid 0ce72dd4-a162-45ea-a7df-84fd5e648b2b) - (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 359.1017 161.2106 0) - (effects (font (size 1.27 1.27)) (justify left) hide) + (global_label "TICK_A" (shape input) (at 205.74 114.3 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 0e1b1450-928a-4c05-a5ef-8d56153529cb) + (property "插入图纸页参考" "${INTERSHEET_REFS}" (id 0) (at 197.1583 114.3794 0) + (effects (font (size 1.27 1.27)) (justify right) hide) ) ) - (global_label "TICK_B" (shape input) (at 318.77 181.61 180) (fields_autoplaced) + (global_label "EN_B" (shape input) (at 205.74 127 180) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify right)) - (uuid 10a7ed99-3346-4436-9e7d-492ab8b2cbc4) - (property "插入图纸页参考" "${INTERSHEET_REFS}" (id 0) (at 310.0069 181.6894 0) + (uuid 11e23e86-3519-46e5-ab84-237d8757c990) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 198.6098 126.9206 0) (effects (font (size 1.27 1.27)) (justify right) hide) ) ) @@ -3286,6 +2943,13 @@ (effects (font (size 1.27 1.27)) (justify left) hide) ) ) + (global_label "USB_DP" (shape input) (at 238.76 144.78 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid 297bafaa-3d6f-432d-ae82-e7ee59d63a11) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 248.4907 144.7006 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) (global_label "MUTE" (shape input) (at 388.62 73.025 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left)) (uuid 2db24a5c-c39e-4cf5-be48-954fe1fc185a) @@ -3300,13 +2964,6 @@ (effects (font (size 1.27 1.27)) (justify left) hide) ) ) - (global_label "MUTE" (shape input) (at 344.17 171.45 0) (fields_autoplaced) - (effects (font (size 1.27 1.27)) (justify left)) - (uuid 447ca9f7-50b4-46de-89d9-ca068a1b1a0b) - (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 351.4817 171.3706 0) - (effects (font (size 1.27 1.27)) (justify left) hide) - ) - ) (global_label "SW_L" (shape input) (at 86.36 224.79 180) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify right)) (uuid 46253482-33a5-4052-9690-5ce30bc0c140) @@ -3314,10 +2971,17 @@ (effects (font (size 1.27 1.27)) (justify right) hide) ) ) - (global_label "TXD" (shape input) (at 76.2 26.67 0) (fields_autoplaced) + (global_label "EN_B" (shape input) (at 359.41 177.8 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid 4fd135f0-38be-402a-9bc7-59f09498eddd) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 352.2798 177.7206 0) + (effects (font (size 1.27 1.27)) (justify right) hide) + ) + ) + (global_label "MUTE" (shape input) (at 238.76 121.92 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left)) - (uuid 575bb6cd-262c-4b83-a5e2-f6e46a426eee) - (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 82.0602 26.5906 0) + (uuid 5194cd2c-6b3d-465c-aaf9-018170ba6797) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 246.0717 121.8406 0) (effects (font (size 1.27 1.27)) (justify left) hide) ) ) @@ -3335,27 +2999,13 @@ (effects (font (size 1.27 1.27)) (justify left) hide) ) ) - (global_label "PWM" (shape input) (at 344.17 168.91 0) (fields_autoplaced) - (effects (font (size 1.27 1.27)) (justify left)) - (uuid 61aee109-0d50-4c9c-982f-85c749756a3e) - (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 350.756 168.9894 0) - (effects (font (size 1.27 1.27)) (justify left) hide) - ) - ) - (global_label "K1_DET" (shape input) (at 314.96 186.69 180) (fields_autoplaced) + (global_label "EN_A" (shape input) (at 205.74 124.46 180) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify right)) - (uuid 655f7910-66dc-4f78-82d8-3291876b9855) - (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 305.7131 186.6106 0) + (uuid 6a16f8cf-0804-4eea-93b0-d78a444b2695) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 198.7912 124.5394 0) (effects (font (size 1.27 1.27)) (justify right) hide) ) ) - (global_label "RUN_LED" (shape input) (at 344.17 186.69 0) (fields_autoplaced) - (effects (font (size 1.27 1.27)) (justify left)) - (uuid 6a8b220b-b0e5-44e2-9986-ccda82d24962) - (property "插入图纸页参考" "${INTERSHEET_REFS}" (id 0) (at 354.9288 186.6106 0) - (effects (font (size 1.27 1.27)) (justify left) hide) - ) - ) (global_label "BAT_ADC" (shape input) (at 238.76 114.3 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left)) (uuid 6b13a063-2d23-45fb-9290-1cbe3e05c5fe) @@ -3370,17 +3020,10 @@ (effects (font (size 1.27 1.27)) (justify right) hide) ) ) - (global_label "TXD" (shape input) (at 344.17 166.37 0) (fields_autoplaced) + (global_label "USB_DN" (shape input) (at 50.546 33.02 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left)) - (uuid 785fe102-6080-4f51-a827-78f4446345c9) - (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 350.0302 166.2906 0) - (effects (font (size 1.27 1.27)) (justify left) hide) - ) - ) - (global_label "PWR_EN" (shape input) (at 344.17 184.15 0) (fields_autoplaced) - (effects (font (size 1.27 1.27)) (justify left)) - (uuid 796a5e14-76d6-42c7-a396-50c19a90156a) - (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 354.0217 184.0706 0) + (uuid 7153c2e8-498b-4ddc-9726-90a0b6141901) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 60.3372 32.9406 0) (effects (font (size 1.27 1.27)) (justify left) hide) ) ) @@ -3391,10 +3034,10 @@ (effects (font (size 1.27 1.27)) (justify left) hide) ) ) - (global_label "USB_VCC" (shape input) (at 41.275 17.145 0) (fields_autoplaced) + (global_label "USB_VCC" (shape input) (at 39.37 20.32 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left)) (uuid 9765090e-5ec9-418c-8793-e138a4ca0ee8) - (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 52.0943 17.0656 0) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 50.1893 20.2406 0) (effects (font (size 1.27 1.27)) (justify left) hide) ) ) @@ -3405,13 +3048,6 @@ (effects (font (size 1.27 1.27)) (justify right) hide) ) ) - (global_label "RXD" (shape input) (at 344.17 163.83 0) (fields_autoplaced) - (effects (font (size 1.27 1.27)) (justify left)) - (uuid a2a532c9-f251-4ff3-be7b-014377469193) - (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 350.3326 163.7506 0) - (effects (font (size 1.27 1.27)) (justify left) hide) - ) - ) (global_label "PWM" (shape input) (at 323.85 96.52 180) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify right)) (uuid a484910e-4d59-42ca-a4b4-1b56c3b006f4) @@ -3426,18 +3062,11 @@ (effects (font (size 1.27 1.27)) (justify left) hide) ) ) - (global_label "RXD" (shape input) (at 76.2 29.21 0) (fields_autoplaced) - (effects (font (size 1.27 1.27)) (justify left)) - (uuid aea8ebdd-24cc-48f6-a569-93b1b6a74142) - (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 82.3626 29.1306 0) - (effects (font (size 1.27 1.27)) (justify left) hide) - ) - ) - (global_label "IIC_SCL" (shape input) (at 344.17 179.07 0) (fields_autoplaced) - (effects (font (size 1.27 1.27)) (justify left)) - (uuid b76da274-81ad-4b95-b30e-973d4d48e939) - (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 353.5379 179.1494 0) - (effects (font (size 1.27 1.27)) (justify left) hide) + (global_label "EN_A" (shape input) (at 359.41 172.72 180) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify right)) + (uuid af1b4c9a-ad38-4265-9651-bfa21676b578) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 352.4612 172.7994 0) + (effects (font (size 1.27 1.27)) (justify right) hide) ) ) (global_label "TICK_B" (shape input) (at 55.88 181.61 0) (fields_autoplaced) @@ -3468,13 +3097,6 @@ (effects (font (size 1.27 1.27)) (justify right) hide) ) ) - (global_label "BAT_ADC" (shape input) (at 344.17 158.75 0) (fields_autoplaced) - (effects (font (size 1.27 1.27)) (justify left)) - (uuid cbcb4db5-db5f-4238-b5e9-7c269f0aa1c5) - (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 354.5055 158.6706 0) - (effects (font (size 1.27 1.27)) (justify left) hide) - ) - ) (global_label "K1" (shape input) (at 78.74 143.51 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left)) (uuid dddacc5a-2d55-4483-825e-a9b72885720a) @@ -3482,6 +3104,27 @@ (effects (font (size 1.27 1.27)) (justify left) hide) ) ) + (global_label "USB_DN" (shape input) (at 238.76 142.24 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid df61be16-3322-4910-b98e-27c55e6aaf2f) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 248.5512 142.1606 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "PWR_EN" (shape input) (at 238.76 134.62 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid e3554aeb-1af0-4b08-aab1-14040d5a9b31) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 248.6117 134.5406 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) + (global_label "PWM" (shape input) (at 238.76 119.38 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid e6def29e-20d6-4294-ae71-9c8df5e81f14) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 245.346 119.4594 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) (global_label "IIC_SCL" (shape input) (at 205.74 129.54 180) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify right)) (uuid e7e8498f-6d84-4164-a146-807367cb9419) @@ -3489,13 +3132,6 @@ (effects (font (size 1.27 1.27)) (justify right) hide) ) ) - (global_label "IIC_SDL" (shape input) (at 344.17 181.61 0) (fields_autoplaced) - (effects (font (size 1.27 1.27)) (justify left)) - (uuid ec648ad6-fb24-4beb-9a26-6b2c04288ce2) - (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 353.5379 181.6894 0) - (effects (font (size 1.27 1.27)) (justify left) hide) - ) - ) (global_label "BAT_ADC" (shape input) (at 55.245 120.65 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left)) (uuid ee1de840-0ff8-48f2-8941-e0e375f1581f) @@ -3503,6 +3139,13 @@ (effects (font (size 1.27 1.27)) (justify left) hide) ) ) + (global_label "USB_DP" (shape input) (at 50.292 40.64 0) (fields_autoplaced) + (effects (font (size 1.27 1.27)) (justify left)) + (uuid f1d19273-8021-413c-bbb8-0ca799ce1467) + (property "Intersheet References" "${INTERSHEET_REFS}" (id 0) (at 60.0227 40.5606 0) + (effects (font (size 1.27 1.27)) (justify left) hide) + ) + ) (global_label "K1" (shape input) (at 392.43 172.72 0) (fields_autoplaced) (effects (font (size 1.27 1.27)) (justify left)) (uuid faab8074-ad27-485f-8a9b-60b92dc41bdd) @@ -3510,29 +3153,6 @@ (effects (font (size 1.27 1.27)) (justify left) hide) ) ) - (global_label "TICK_A" (shape input) (at 318.77 179.07 180) (fields_autoplaced) - (effects (font (size 1.27 1.27)) (justify right)) - (uuid ffee9554-0017-4fdd-ab48-bcf389901314) - (property "插入图纸页参考" "${INTERSHEET_REFS}" (id 0) (at 310.1883 179.1494 0) - (effects (font (size 1.27 1.27)) (justify right) hide) - ) - ) - - (symbol (lib_id "power:GND") (at 48.26 29.21 0) (unit 1) - (in_bom yes) (on_board yes) - (uuid 027c4eb0-3204-4471-a868-d61a4aae5e1a) - (property "Reference" "#PWR0118" (id 0) (at 48.26 35.56 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "Value" "GND" (id 1) (at 46.355 29.845 0)) - (property "Footprint" "" (id 2) (at 48.26 29.21 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "Datasheet" "" (id 3) (at 48.26 29.21 0) - (effects (font (size 1.27 1.27)) hide) - ) - (pin "1" (uuid acccc70d-8fb6-4dee-b56e-8b8aec809c42)) - ) (symbol (lib_id "MCU_ST_STM32F1:STM32F103C8Tx") (at 223.52 119.38 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) @@ -3736,22 +3356,6 @@ (pin "S2" (uuid c12f272e-6bc0-4d16-a825-3462c3f2fb40)) ) - (symbol (lib_id "power:GND") (at 17.78 59.055 0) (unit 1) - (in_bom yes) (on_board yes) - (uuid 15ae5f90-ccc7-4e15-adc6-ac3e5518b056) - (property "Reference" "#PWR0119" (id 0) (at 17.78 65.405 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "Value" "GND" (id 1) (at 17.78 62.865 0)) - (property "Footprint" "" (id 2) (at 17.78 59.055 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "Datasheet" "" (id 3) (at 17.78 59.055 0) - (effects (font (size 1.27 1.27)) hide) - ) - (pin "1" (uuid 41cd2ad1-44ef-4af6-ba05-e511627d2462)) - ) - (symbol (lib_id "Device:C") (at 363.22 187.96 0) (unit 1) (in_bom yes) (on_board yes) (uuid 1605f7b8-4cf5-422e-8edc-f3b2b476c1c1) @@ -3771,15 +3375,15 @@ (pin "2" (uuid b1c2ae4d-3a0b-406d-826b-5a4de4d4e7a0)) ) - (symbol (lib_id "Device:R") (at 48.895 34.29 270) (unit 1) + (symbol (lib_id "Device:R") (at 46.736 33.02 270) (unit 1) (in_bom yes) (on_board yes) (uuid 160da0f8-ffc1-4521-b663-985be0e35229) - (property "Reference" "R11" (id 0) (at 44.45 33.655 90)) - (property "Value" "100" (id 1) (at 48.895 34.29 90)) - (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 48.895 32.512 90) + (property "Reference" "R11" (id 0) (at 42.291 32.385 90)) + (property "Value" "100" (id 1) (at 46.736 33.02 90)) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 46.736 31.242 90) (effects (font (size 1.27 1.27)) hide) ) - (property "Datasheet" "~" (id 3) (at 48.895 34.29 0) + (property "Datasheet" "~" (id 3) (at 46.736 33.02 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 48805ef5-f898-4ff4-89fb-f4ea778f4f89)) @@ -3802,17 +3406,17 @@ (pin "1" (uuid 7b41b887-bab4-4a68-908c-9337a261be27)) ) - (symbol (lib_id "power:GND") (at 66.04 57.15 0) (unit 1) + (symbol (lib_id "power:GND") (at 24.13 60.706 0) (unit 1) (in_bom yes) (on_board yes) (uuid 1b0a040c-9f42-4598-8d74-3937c6181a95) - (property "Reference" "#PWR0111" (id 0) (at 66.04 63.5 0) + (property "Reference" "#PWR0111" (id 0) (at 24.13 67.056 0) (effects (font (size 1.27 1.27)) hide) ) - (property "Value" "GND" (id 1) (at 66.04 60.96 0)) - (property "Footprint" "" (id 2) (at 66.04 57.15 0) + (property "Value" "GND" (id 1) (at 24.13 64.516 0)) + (property "Footprint" "" (id 2) (at 24.13 60.706 0) (effects (font (size 1.27 1.27)) hide) ) - (property "Datasheet" "" (id 3) (at 66.04 57.15 0) + (property "Datasheet" "" (id 3) (at 24.13 60.706 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid ddb5b443-77d2-4c8e-a79d-c6e64bab17b1)) @@ -3867,7 +3471,7 @@ (symbol (lib_id "power:GND") (at 218.44 160.02 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid 21b46c85-84d4-482d-92fa-d9b0df09e6b9) - (property "Reference" "#PWR?" (id 0) (at 218.44 166.37 0) + (property "Reference" "#PWR09" (id 0) (at 218.44 166.37 0) (effects (font (size 1.27 1.27)) hide) ) (property "Value" "GND" (id 1) (at 218.44 165.1 0)) @@ -3898,7 +3502,7 @@ (symbol (lib_id "Device:R") (at 179.07 72.39 90) (unit 1) (in_bom yes) (on_board yes) (uuid 28dce972-fafd-4ac8-b8d0-ff3e3e001c2c) - (property "Reference" "R?" (id 0) (at 179.07 69.85 90)) + (property "Reference" "R1" (id 0) (at 179.07 69.85 90)) (property "Value" "1K" (id 1) (at 179.07 72.39 90)) (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 179.07 74.168 90) (effects (font (size 1.27 1.27)) hide) @@ -3951,7 +3555,7 @@ (symbol (lib_id "power:VCC") (at 223.52 72.39 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid 31a7b109-39f1-4f47-8fd2-02735ea338cd) - (property "Reference" "#PWR?" (id 0) (at 223.52 76.2 0) + (property "Reference" "#PWR010" (id 0) (at 223.52 76.2 0) (effects (font (size 1.27 1.27)) hide) ) (property "Value" "VCC" (id 1) (at 223.52 67.31 0)) @@ -3964,6 +3568,22 @@ (pin "1" (uuid 24a7386c-4c68-4a53-bd44-9bddedc405e8)) ) + (symbol (lib_id "power:VCC") (at 363.22 144.78 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 31a8ba81-9bbe-4039-a86c-e187cf22debf) + (property "Reference" "#PWR011" (id 0) (at 363.22 148.59 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Value" "VCC" (id 1) (at 363.22 139.7 0)) + (property "Footprint" "" (id 2) (at 363.22 144.78 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "" (id 3) (at 363.22 144.78 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 2149ec95-3893-4d7e-90cd-8ffa6d3bc583)) + ) + (symbol (lib_id "Device:R") (at 44.45 125.095 0) (unit 1) (in_bom yes) (on_board yes) (uuid 32e5518b-5e24-4756-b583-015ce860c6eb) @@ -3982,7 +3602,7 @@ (symbol (lib_id "Device:R") (at 193.04 67.31 90) (unit 1) (in_bom yes) (on_board yes) (uuid 33ada24f-a0d9-4b83-b4c9-3e94e63b878f) - (property "Reference" "R?" (id 0) (at 193.04 64.77 90)) + (property "Reference" "R2" (id 0) (at 193.04 64.77 90)) (property "Value" "10K" (id 1) (at 193.04 67.31 90)) (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 193.04 69.088 90) (effects (font (size 1.27 1.27)) hide) @@ -4109,43 +3729,6 @@ (pin "1" (uuid df27d25e-6141-4cdc-b23a-065946cf981e)) ) - (symbol (lib_id "MCU_ST_STM32F0:STM32F030F4Px") (at 331.47 171.45 0) (unit 1) - (in_bom yes) (on_board yes) (fields_autoplaced) - (uuid 4632212f-13ce-4392-bc68-ccb9ba333770) - (property "Reference" "U1" (id 0) (at 333.4894 191.77 0) - (effects (font (size 1.27 1.27)) (justify left)) - ) - (property "Value" "STM32F030F4Px" (id 1) (at 333.4894 194.31 0) - (effects (font (size 1.27 1.27)) (justify left)) - ) - (property "Footprint" "Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm" (id 2) (at 321.31 189.23 0) - (effects (font (size 1.27 1.27)) (justify right) hide) - ) - (property "Datasheet" "http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00088500.pdf" (id 3) (at 331.47 171.45 0) - (effects (font (size 1.27 1.27)) hide) - ) - (pin "1" (uuid 262f1ea9-0133-4b43-be36-456207ea857c)) - (pin "10" (uuid c1c799a0-3c93-493a-9ad7-8a0561bc69ee)) - (pin "11" (uuid 721d1be9-236e-470b-ba69-f1cc6c43faf9)) - (pin "12" (uuid 5edcefbe-9766-42c8-9529-28d0ec865573)) - (pin "13" (uuid ec5c2062-3a41-4636-8803-069e60a1641a)) - (pin "14" (uuid 81a15393-727e-448b-a777-b18773023d89)) - (pin "15" (uuid a4f86a46-3bc8-4daa-9125-a63f297eb114)) - (pin "16" (uuid 22999e73-da32-43a5-9163-4b3a41614f25)) - (pin "17" (uuid 6e68f0cd-800e-4167-9553-71fc59da1eeb)) - (pin "18" (uuid 658dad07-97fd-466c-8b49-21892ac96ea4)) - (pin "19" (uuid 40b14a16-fb82-4b9d-89dd-55cd98abb5cc)) - (pin "2" (uuid c09938fd-06b9-4771-9f63-2311626243b3)) - (pin "20" (uuid 2d697cf0-e02e-4ed1-a048-a704dab0ee43)) - (pin "3" (uuid 240c10af-51b5-420e-a6f4-a2c8f5db1db5)) - (pin "4" (uuid 503dbd88-3e6b-48cc-a2ea-a6e28b52a1f7)) - (pin "5" (uuid 592f25e6-a01b-47fd-8172-3da01117d00a)) - (pin "6" (uuid cb614b23-9af3-4aec-bed8-c1374e001510)) - (pin "7" (uuid 20cca02e-4c4d-4961-b6b4-b40a1731b220)) - (pin "8" (uuid 5487601b-81d3-4c70-8f3d-cf9df9c63302)) - (pin "9" (uuid a29f8df0-3fae-4edf-8d9c-bd5a875b13e3)) - ) - (symbol (lib_id "power:VCC") (at 86.36 217.17 90) (unit 1) (in_bom yes) (on_board yes) (uuid 4bc53345-25fe-427a-a648-514d97b80f54) @@ -4162,32 +3745,32 @@ (pin "1" (uuid da9b6201-f0ad-4d2a-a816-43004f342313)) ) - (symbol (lib_id "Device:R") (at 48.895 36.83 270) (unit 1) + (symbol (lib_id "Device:R") (at 46.482 40.64 270) (unit 1) (in_bom yes) (on_board yes) (uuid 4cc19d91-a625-48b1-8ed0-545300f18c5e) - (property "Reference" "R12" (id 0) (at 44.45 36.195 90)) - (property "Value" "100" (id 1) (at 48.895 36.83 90)) - (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 48.895 35.052 90) + (property "Reference" "R12" (id 0) (at 42.037 40.005 90)) + (property "Value" "100" (id 1) (at 46.482 40.64 90)) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 46.482 38.862 90) (effects (font (size 1.27 1.27)) hide) ) - (property "Datasheet" "~" (id 3) (at 48.895 36.83 0) + (property "Datasheet" "~" (id 3) (at 46.482 40.64 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid fc072efb-bb34-4952-9dc9-f880b95c62ac)) (pin "2" (uuid e2f49c35-5fc2-43b8-a135-cf48fb1f3b7a)) ) - (symbol (lib_id "power:GND") (at 304.8 195.58 0) (unit 1) + (symbol (lib_id "power:GND") (at 363.22 195.58 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid 4d3fbe30-8d80-40e0-b7ae-5eda5664f629) - (property "Reference" "#PWR0101" (id 0) (at 304.8 201.93 0) + (property "Reference" "#PWR0101" (id 0) (at 363.22 201.93 0) (effects (font (size 1.27 1.27)) hide) ) - (property "Value" "GND" (id 1) (at 304.8 200.66 0)) - (property "Footprint" "" (id 2) (at 304.8 195.58 0) + (property "Value" "GND" (id 1) (at 363.22 200.66 0)) + (property "Footprint" "" (id 2) (at 363.22 195.58 0) (effects (font (size 1.27 1.27)) hide) ) - (property "Datasheet" "" (id 3) (at 304.8 195.58 0) + (property "Datasheet" "" (id 3) (at 363.22 195.58 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 86d0ebd6-3f72-4457-9c26-bbd62913d687)) @@ -4196,7 +3779,7 @@ (symbol (lib_id "Device:C") (at 171.45 82.55 90) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid 5bdd29cb-8f55-4095-af05-9d35ec92d17e) - (property "Reference" "C?" (id 0) (at 171.45 74.93 90)) + (property "Reference" "C1" (id 0) (at 171.45 74.93 90)) (property "Value" "C" (id 1) (at 171.45 77.47 90)) (property "Footprint" "Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder" (id 2) (at 175.26 81.5848 0) (effects (font (size 1.27 1.27)) hide) @@ -4208,30 +3791,15 @@ (pin "2" (uuid 4736816d-9361-4383-9d46-9f67b0c0e530)) ) - (symbol (lib_id "Device:R") (at 53.34 43.18 0) (unit 1) - (in_bom yes) (on_board yes) - (uuid 5bf4db13-f95c-4510-aa5f-610b83763fd1) - (property "Reference" "R14" (id 0) (at 51.435 43.18 90)) - (property "Value" "510" (id 1) (at 53.34 43.18 90)) - (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 51.562 43.18 90) - (effects (font (size 1.27 1.27)) hide) - ) - (property "Datasheet" "~" (id 3) (at 53.34 43.18 0) - (effects (font (size 1.27 1.27)) hide) - ) - (pin "1" (uuid ff2610a7-442c-4c46-bbda-7b7b4e6067a9)) - (pin "2" (uuid f7aa6541-5322-49be-899b-7df6f708d823)) - ) - - (symbol (lib_id "Connector:USB_C_Receptacle_USB2.0") (at 25.4 36.195 0) (unit 1) + (symbol (lib_id "Connector:USB_C_Receptacle_USB2.0") (at 24.13 35.56 0) (unit 1) (in_bom yes) (on_board yes) (uuid 5c470add-b449-455e-95fc-baae46d35c85) - (property "Reference" "J1" (id 0) (at 16.51 15.24 0)) - (property "Value" "USB_C_Receptacle_USB2.0" (id 1) (at 25.4 17.145 0)) - (property "Footprint" "Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12" (id 2) (at 29.21 36.195 0) + (property "Reference" "J1" (id 0) (at 15.24 14.605 0)) + (property "Value" "USB_C_Receptacle_USB2.0" (id 1) (at 24.13 16.51 0)) + (property "Footprint" "Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12" (id 2) (at 27.94 35.56 0) (effects (font (size 1.27 1.27)) hide) ) - (property "Datasheet" "https://www.usb.org/sites/default/files/documents/usb_type-c.zip" (id 3) (at 29.21 36.195 0) + (property "Datasheet" "https://www.usb.org/sites/default/files/documents/usb_type-c.zip" (id 3) (at 27.94 35.56 0) (effects (font (size 1.27 1.27)) hide) ) (pin "A1" (uuid f47134a4-be82-4ad4-a1ad-bf72ff4ae546)) @@ -4256,7 +3824,7 @@ (symbol (lib_id "Device:C") (at 171.45 109.22 90) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid 5c64e8e8-6c2d-483f-aafc-e21e16486282) - (property "Reference" "C?" (id 0) (at 171.45 101.6 90)) + (property "Reference" "C16" (id 0) (at 171.45 101.6 90)) (property "Value" "C" (id 1) (at 171.45 104.14 90)) (property "Footprint" "Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder" (id 2) (at 175.26 108.2548 0) (effects (font (size 1.27 1.27)) hide) @@ -4268,25 +3836,6 @@ (pin "2" (uuid 7080766e-5700-4a31-bc1e-1d239e4d43bf)) ) - (symbol (lib_id "Device:C") (at 48.26 25.4 0) (unit 1) - (in_bom yes) (on_board yes) - (uuid 5dd32f3d-960d-444f-be85-96d5b718d202) - (property "Reference" "C4" (id 0) (at 45.085 21.59 0) - (effects (font (size 1.27 1.27)) (justify left)) - ) - (property "Value" "104" (id 1) (at 44.45 23.495 0) - (effects (font (size 1.27 1.27)) (justify left)) - ) - (property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (id 2) (at 49.2252 29.21 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "Datasheet" "~" (id 3) (at 48.26 25.4 0) - (effects (font (size 1.27 1.27)) hide) - ) - (pin "1" (uuid 3eea6f0a-0692-479a-a4ab-f9353cbbcbec)) - (pin "2" (uuid 236f37ba-9a9a-4c25-a058-1ca2ff8aacbf)) - ) - (symbol (lib_id "Device:R") (at 354.33 30.48 180) (unit 1) (in_bom yes) (on_board yes) (uuid 5fe77581-e082-411e-b0a9-d3ca1deb21c8) @@ -4305,7 +3854,7 @@ (symbol (lib_id "power:GND") (at 167.64 90.17 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid 6c2104bd-3782-49e7-96e0-61c450efbfb5) - (property "Reference" "#PWR?" (id 0) (at 167.64 96.52 0) + (property "Reference" "#PWR05" (id 0) (at 167.64 96.52 0) (effects (font (size 1.27 1.27)) hide) ) (property "Value" "GND" (id 1) (at 167.64 95.25 0)) @@ -4439,21 +3988,6 @@ (pin "2" (uuid 9fa01e2b-07ca-436b-9da2-23a5253629db)) ) - (symbol (lib_id "Device:R") (at 304.8 167.64 180) (unit 1) - (in_bom yes) (on_board yes) - (uuid 8969f576-03fa-4e04-b345-8d7fcf6d78ae) - (property "Reference" "R1" (id 0) (at 302.26 167.64 90)) - (property "Value" "1K" (id 1) (at 304.8 167.64 90)) - (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 306.578 167.64 90) - (effects (font (size 1.27 1.27)) hide) - ) - (property "Datasheet" "~" (id 3) (at 304.8 167.64 0) - (effects (font (size 1.27 1.27)) hide) - ) - (pin "1" (uuid 69f29e22-58a1-4ec1-8c23-ee51e8f4c259)) - (pin "2" (uuid 43a97a34-6e09-450c-9d6c-7a2d4023ae58)) - ) - (symbol (lib_id "Device:R") (at 363.22 162.56 180) (unit 1) (in_bom yes) (on_board yes) (uuid 89f59fa2-3d49-44cc-bb2f-0edc891f14dd) @@ -4527,7 +4061,7 @@ (symbol (lib_id "Device:L") (at 228.6 77.47 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid 94979294-58f1-45cf-861c-a1d9abf6b6a1) - (property "Reference" "L?" (id 0) (at 229.87 76.1999 0) + (property "Reference" "L1" (id 0) (at 229.87 76.1999 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "100mH" (id 1) (at 229.87 78.7399 0) @@ -4669,60 +4203,6 @@ (pin "1" (uuid 6698edd8-9dab-4b93-914c-50eec3e5f51c)) ) - (symbol (lib_id "power:VCC") (at 299.72 142.24 0) (unit 1) - (in_bom yes) (on_board yes) (fields_autoplaced) - (uuid a5caf065-f46e-4042-88c6-ae6befa21a5a) - (property "Reference" "#PWR0102" (id 0) (at 299.72 146.05 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "Value" "VCC" (id 1) (at 299.72 137.16 0)) - (property "Footprint" "" (id 2) (at 299.72 142.24 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "Datasheet" "" (id 3) (at 299.72 142.24 0) - (effects (font (size 1.27 1.27)) hide) - ) - (pin "1" (uuid 40093782-8d1b-4eea-8df3-3a17850e73ca)) - ) - - (symbol (lib_id "Device:L") (at 334.01 148.59 0) (unit 1) - (in_bom yes) (on_board yes) (fields_autoplaced) - (uuid a6e73968-bfeb-49ba-b5d0-6a71117f7ee3) - (property "Reference" "L1" (id 0) (at 335.28 147.3199 0) - (effects (font (size 1.27 1.27)) (justify left)) - ) - (property "Value" "100mH" (id 1) (at 335.28 149.8599 0) - (effects (font (size 1.27 1.27)) (justify left)) - ) - (property "Footprint" "Inductor_SMD:L_0805_2012Metric" (id 2) (at 334.01 148.59 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "Datasheet" "~" (id 3) (at 334.01 148.59 0) - (effects (font (size 1.27 1.27)) hide) - ) - (pin "1" (uuid 3a1e6e05-4e96-44c9-bfaa-9f4e33c4b7c1)) - (pin "2" (uuid 64a50bb0-3045-4279-b12c-bb78d2d089b3)) - ) - - (symbol (lib_id "Device:LED") (at 53.34 52.705 90) (unit 1) - (in_bom yes) (on_board yes) - (uuid a9669e73-0978-4947-a094-689a18b0faaf) - (property "Reference" "D2" (id 0) (at 48.26 50.165 90) - (effects (font (size 1.27 1.27)) (justify right)) - ) - (property "Value" "LED" (id 1) (at 48.26 52.705 90) - (effects (font (size 1.27 1.27)) (justify right)) - ) - (property "Footprint" "LED_SMD:LED_0603_1608Metric" (id 2) (at 53.34 52.705 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "Datasheet" "~" (id 3) (at 53.34 52.705 0) - (effects (font (size 1.27 1.27)) hide) - ) - (pin "1" (uuid 82cb453f-c2b3-4e8d-bf88-37d4adaf8f97)) - (pin "2" (uuid f78b9147-7d62-4551-990c-6210e9704e3f)) - ) - (symbol (lib_id "Device:LED") (at 54.61 82.55 0) (unit 1) (in_bom yes) (on_board yes) (uuid afbb71ae-8838-4abe-bedc-bb552b7b1c7d) @@ -4815,7 +4295,7 @@ (symbol (lib_id "Device:C") (at 182.88 67.31 270) (unit 1) (in_bom yes) (on_board yes) (uuid b5b14a72-6174-4e0d-a89b-0052cd50bb4f) - (property "Reference" "C?" (id 0) (at 185.42 63.5 0) + (property "Reference" "C17" (id 0) (at 185.42 63.5 0) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "100nF" (id 1) (at 180.34 60.96 0) @@ -4867,15 +4347,15 @@ (pin "1" (uuid fe483485-acb6-4422-8afc-be9b2f24966f)) ) - (symbol (lib_id "Device:R") (at 53.34 28.575 0) (unit 1) + (symbol (lib_id "Device:R") (at 46.99 27.686 90) (unit 1) (in_bom yes) (on_board yes) (uuid b97012cc-0f92-42c4-98d4-804fadb5b954) - (property "Reference" "R13" (id 0) (at 51.435 28.575 90)) - (property "Value" "1K" (id 1) (at 53.34 28.575 90)) - (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 51.562 28.575 90) + (property "Reference" "R13" (id 0) (at 46.99 29.591 90)) + (property "Value" "1K" (id 1) (at 46.99 27.686 90)) + (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 46.99 29.464 90) (effects (font (size 1.27 1.27)) hide) ) - (property "Datasheet" "~" (id 3) (at 53.34 28.575 0) + (property "Datasheet" "~" (id 3) (at 46.99 27.686 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 46a0ba72-9198-4946-932e-714d8bc63fbd)) @@ -4897,44 +4377,10 @@ (pin "2" (uuid b7306b65-dd45-471f-82d4-20204ec12229)) ) - (symbol (lib_id "Device:R") (at 299.72 153.67 180) (unit 1) - (in_bom yes) (on_board yes) - (uuid bbfeaf9e-cf9d-4e58-8dff-a248ece1de43) - (property "Reference" "R2" (id 0) (at 297.18 153.67 90)) - (property "Value" "10K" (id 1) (at 299.72 153.67 90)) - (property "Footprint" "Resistor_SMD:R_0603_1608Metric" (id 2) (at 301.498 153.67 90) - (effects (font (size 1.27 1.27)) hide) - ) - (property "Datasheet" "~" (id 3) (at 299.72 153.67 0) - (effects (font (size 1.27 1.27)) hide) - ) - (pin "1" (uuid 0a37cd2d-7090-40b8-b5d3-c29435c5e3d9)) - (pin "2" (uuid 2eacf5c3-f210-47f2-b120-32eb8de07281)) - ) - - (symbol (lib_id "Device:R") (at 304.8 152.4 0) (unit 1) - (in_bom yes) (on_board yes) - (uuid bfaf6174-0339-4ea1-ba70-73a95cf9aacd) - (property "Reference" "R15" (id 0) (at 302.895 154.94 90) - (effects (font (size 1.27 1.27)) (justify left)) - ) - (property "Value" "*R0" (id 1) (at 304.8 154.305 90) - (effects (font (size 1.27 1.27)) (justify left)) - ) - (property "Footprint" "Resistor_SMD:R_0402_1005Metric" (id 2) (at 303.022 152.4 90) - (effects (font (size 1.27 1.27)) hide) - ) - (property "Datasheet" "~" (id 3) (at 304.8 152.4 0) - (effects (font (size 1.27 1.27)) hide) - ) - (pin "1" (uuid 440748dc-f01e-439b-bd44-07311f115ba4)) - (pin "2" (uuid 96bcdb1f-b8e7-420f-8c77-538b93ac3005)) - ) - (symbol (lib_id "Device:C") (at 171.45 90.17 90) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid c46704c8-86a9-4f34-9da9-6591a57c007e) - (property "Reference" "C?" (id 0) (at 171.45 82.55 90)) + (property "Reference" "C14" (id 0) (at 171.45 82.55 90)) (property "Value" "C" (id 1) (at 171.45 85.09 90)) (property "Footprint" "Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder" (id 2) (at 175.26 89.2048 0) (effects (font (size 1.27 1.27)) hide) @@ -4949,9 +4395,9 @@ (symbol (lib_id "Device:C") (at 171.45 101.6 90) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid c5449947-3eb6-438a-a259-9adb710c7987) - (property "Reference" "C?" (id 0) (at 171.45 93.98 90)) - (property "Value" "" (id 1) (at 171.45 96.52 90)) - (property "Footprint" "" (id 2) (at 175.26 100.6348 0) + (property "Reference" "C15" (id 0) (at 171.45 93.98 90)) + (property "Value" "C" (id 1) (at 171.45 96.52 90)) + (property "Footprint" "Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder" (id 2) (at 175.26 100.6348 0) (effects (font (size 1.27 1.27)) hide) ) (property "Datasheet" "~" (id 3) (at 171.45 101.6 0) @@ -4964,7 +4410,7 @@ (symbol (lib_id "power:GND") (at 209.55 77.47 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid c690254c-97ba-4bfd-b863-b129e5802ed6) - (property "Reference" "#PWR?" (id 0) (at 209.55 83.82 0) + (property "Reference" "#PWR08" (id 0) (at 209.55 83.82 0) (effects (font (size 1.27 1.27)) hide) ) (property "Value" "GND" (id 1) (at 209.55 82.55 0)) @@ -4980,7 +4426,7 @@ (symbol (lib_id "power:GND") (at 167.64 109.22 0) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid c7754a4b-140d-4713-bf5f-ab94041f5ca0) - (property "Reference" "#PWR?" (id 0) (at 167.64 115.57 0) + (property "Reference" "#PWR06" (id 0) (at 167.64 115.57 0) (effects (font (size 1.27 1.27)) hide) ) (property "Value" "GND" (id 1) (at 167.64 114.3 0)) @@ -5039,33 +4485,6 @@ (pin "1" (uuid eda6fd21-2ea8-44f4-891c-53d66d7771f2)) ) - (symbol (lib_id "Interface_USB:CH340E") (at 66.04 36.83 0) (unit 1) - (in_bom yes) (on_board yes) - (uuid d1649c49-73bf-461b-85a3-76adaec8115c) - (property "Reference" "U4" (id 0) (at 67.31 20.955 0) - (effects (font (size 1.27 1.27)) (justify left)) - ) - (property "Value" "CH340E" (id 1) (at 66.675 22.86 0) - (effects (font (size 1.27 1.27)) (justify left)) - ) - (property "Footprint" "Package_SO:MSOP-10_3x3mm_P0.5mm" (id 2) (at 67.31 50.8 0) - (effects (font (size 1.27 1.27)) (justify left) hide) - ) - (property "Datasheet" "https://www.mpja.com/download/35227cpdata.pdf" (id 3) (at 57.15 16.51 0) - (effects (font (size 1.27 1.27)) hide) - ) - (pin "1" (uuid 8b0eacc7-b324-444a-9dd9-c0b4c8726ecb)) - (pin "10" (uuid cbc13c89-01ea-4339-b71f-27dff1bf3961)) - (pin "2" (uuid 607b452c-1bd5-4167-a6d4-f7481e8890f2)) - (pin "3" (uuid 36aac1be-b3cf-4a3c-8ade-52ce78058e97)) - (pin "4" (uuid c2a38508-b971-4f51-a218-d616693e8999)) - (pin "5" (uuid 576db520-f54a-46f0-8b16-c646063d802e)) - (pin "6" (uuid dff2f9cd-43e4-415a-a5c5-a92500251e13)) - (pin "7" (uuid 7ef99699-d2cf-4592-ab11-d8f614a2ae29)) - (pin "8" (uuid 80ce8f62-9283-4ad1-923a-6f00b1c41b5c)) - (pin "9" (uuid 8a540713-4040-42ea-99e2-62c89434fd7e)) - ) - (symbol (lib_id "Device:R") (at 54.61 171.45 0) (unit 1) (in_bom yes) (on_board yes) (uuid d2468d57-d43f-4e6d-8441-67b6bc660c99) @@ -5102,7 +4521,7 @@ (symbol (lib_id "Device:R") (at 194.31 72.39 270) (unit 1) (in_bom yes) (on_board yes) (uuid d7341a7c-138e-4958-94b9-6d075160a22d) - (property "Reference" "R?" (id 0) (at 191.77 70.485 90) + (property "Reference" "R15" (id 0) (at 191.77 70.485 90) (effects (font (size 1.27 1.27)) (justify left)) ) (property "Value" "*R0" (id 1) (at 192.405 72.39 90) @@ -5137,7 +4556,7 @@ (symbol (lib_id "power:VCC") (at 204.47 67.31 270) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid dbbb0b2d-141b-41dd-98e7-2878d6220dd6) - (property "Reference" "#PWR?" (id 0) (at 200.66 67.31 0) + (property "Reference" "#PWR07" (id 0) (at 200.66 67.31 0) (effects (font (size 1.27 1.27)) hide) ) (property "Value" "VCC" (id 1) (at 209.55 67.31 0)) @@ -5185,7 +4604,7 @@ (symbol (lib_id "power:GND") (at 151.13 72.39 270) (unit 1) (in_bom yes) (on_board yes) (fields_autoplaced) (uuid e61f0717-555b-4c31-8df3-116be7b94d4e) - (property "Reference" "#PWR?" (id 0) (at 144.78 72.39 0) + (property "Reference" "#PWR04" (id 0) (at 144.78 72.39 0) (effects (font (size 1.27 1.27)) hide) ) (property "Value" "GND" (id 1) (at 146.05 72.39 0)) @@ -5263,17 +4682,17 @@ (pin "2" (uuid 82b7f976-2fd9-4317-b7fe-f97003e22124)) ) - (symbol (lib_id "power:VCC") (at 66.04 19.685 0) (unit 1) + (symbol (lib_id "power:VCC") (at 60.96 22.352 0) (unit 1) (in_bom yes) (on_board yes) (uuid ecac5dc8-a0f8-4c7a-9d00-87bef52ecc6f) - (property "Reference" "#PWR0112" (id 0) (at 66.04 23.495 0) + (property "Reference" "#PWR0112" (id 0) (at 60.96 26.162 0) (effects (font (size 1.27 1.27)) hide) ) - (property "Value" "VCC" (id 1) (at 66.04 15.875 0)) - (property "Footprint" "" (id 2) (at 66.04 19.685 0) + (property "Value" "VCC" (id 1) (at 60.96 18.542 0)) + (property "Footprint" "" (id 2) (at 60.96 22.352 0) (effects (font (size 1.27 1.27)) hide) ) - (property "Datasheet" "" (id 3) (at 66.04 19.685 0) + (property "Datasheet" "" (id 3) (at 60.96 22.352 0) (effects (font (size 1.27 1.27)) hide) ) (pin "1" (uuid 057ed5fa-456d-4c62-99b1-9faf82076165)) @@ -5313,25 +4732,6 @@ (pin "5" (uuid b4284f8e-fc0b-470a-bd8d-006f34bdd9ad)) ) - (symbol (lib_id "Device:C") (at 299.72 163.83 0) (unit 1) - (in_bom yes) (on_board yes) - (uuid f8dea8cf-a10c-43e1-a39f-f07ef45cfa96) - (property "Reference" "C1" (id 0) (at 295.91 161.29 0) - (effects (font (size 1.27 1.27)) (justify left)) - ) - (property "Value" "100nF" (id 1) (at 293.37 166.37 0) - (effects (font (size 1.27 1.27)) (justify left)) - ) - (property "Footprint" "Capacitor_SMD:C_0805_2012Metric" (id 2) (at 300.6852 167.64 0) - (effects (font (size 1.27 1.27)) hide) - ) - (property "Datasheet" "~" (id 3) (at 299.72 163.83 0) - (effects (font (size 1.27 1.27)) hide) - ) - (pin "1" (uuid be2258d2-0e37-4343-93fb-899454a163cb)) - (pin "2" (uuid 7607d9e9-9724-4988-a433-62562a2d21e5)) - ) - (symbol (lib_id "Transistor_FET:AO3400A") (at 34.925 125.095 0) (unit 1) (in_bom yes) (on_board yes) (uuid fcb41881-c9cb-478a-9b39-b27b7306d1ef) @@ -5381,12 +4781,33 @@ (path "/a4d12d50-8ee9-42d1-ba1f-da61fb555338" (reference "#PWR03") (unit 1) (value "GND") (footprint "") ) + (path "/e61f0717-555b-4c31-8df3-116be7b94d4e" + (reference "#PWR04") (unit 1) (value "GND") (footprint "") + ) + (path "/6c2104bd-3782-49e7-96e0-61c450efbfb5" + (reference "#PWR05") (unit 1) (value "GND") (footprint "") + ) + (path "/c7754a4b-140d-4713-bf5f-ab94041f5ca0" + (reference "#PWR06") (unit 1) (value "GND") (footprint "") + ) + (path "/dbbb0b2d-141b-41dd-98e7-2878d6220dd6" + (reference "#PWR07") (unit 1) (value "VCC") (footprint "") + ) + (path "/c690254c-97ba-4bfd-b863-b129e5802ed6" + (reference "#PWR08") (unit 1) (value "GND") (footprint "") + ) + (path "/21b46c85-84d4-482d-92fa-d9b0df09e6b9" + (reference "#PWR09") (unit 1) (value "GND") (footprint "") + ) + (path "/31a7b109-39f1-4f47-8fd2-02735ea338cd" + (reference "#PWR010") (unit 1) (value "VCC") (footprint "") + ) + (path "/31a8ba81-9bbe-4039-a86c-e187cf22debf" + (reference "#PWR011") (unit 1) (value "VCC") (footprint "") + ) (path "/4d3fbe30-8d80-40e0-b7ae-5eda5664f629" (reference "#PWR0101") (unit 1) (value "GND") (footprint "") ) - (path "/a5caf065-f46e-4042-88c6-ae6befa21a5a" - (reference "#PWR0102") (unit 1) (value "VCC") (footprint "") - ) (path "/cef81ed1-b993-44f5-a61c-5035b25226e1" (reference "#PWR0103") (unit 1) (value "GND") (footprint "") ) @@ -5432,47 +4853,20 @@ (path "/dcda9a2f-c22c-4de1-98d4-d2ede815dbff" (reference "#PWR0117") (unit 1) (value "GND") (footprint "") ) - (path "/027c4eb0-3204-4471-a868-d61a4aae5e1a" - (reference "#PWR0118") (unit 1) (value "GND") (footprint "") - ) - (path "/15ae5f90-ccc7-4e15-adc6-ac3e5518b056" - (reference "#PWR0119") (unit 1) (value "GND") (footprint "") - ) (path "/8db05113-bb5d-40cb-916f-5b0147562482" (reference "#PWR0120") (unit 1) (value "GND") (footprint "") ) (path "/4bc53345-25fe-427a-a648-514d97b80f54" (reference "#PWR0121") (unit 1) (value "VCC") (footprint "") ) - (path "/21b46c85-84d4-482d-92fa-d9b0df09e6b9" - (reference "#PWR?") (unit 1) (value "GND") (footprint "") - ) - (path "/31a7b109-39f1-4f47-8fd2-02735ea338cd" - (reference "#PWR?") (unit 1) (value "VCC") (footprint "") - ) - (path "/6c2104bd-3782-49e7-96e0-61c450efbfb5" - (reference "#PWR?") (unit 1) (value "GND") (footprint "") - ) - (path "/c690254c-97ba-4bfd-b863-b129e5802ed6" - (reference "#PWR?") (unit 1) (value "GND") (footprint "") - ) - (path "/c7754a4b-140d-4713-bf5f-ab94041f5ca0" - (reference "#PWR?") (unit 1) (value "GND") (footprint "") - ) - (path "/dbbb0b2d-141b-41dd-98e7-2878d6220dd6" - (reference "#PWR?") (unit 1) (value "VCC") (footprint "") - ) - (path "/e61f0717-555b-4c31-8df3-116be7b94d4e" - (reference "#PWR?") (unit 1) (value "GND") (footprint "") - ) (path "/88d8a17c-0ee1-405b-b7c6-a4e8fee4260e" (reference "BT1") (unit 1) (value "Battery_Cell") (footprint "MY:BAT_BC501SM") ) (path "/972eb069-8d6d-41f6-83d3-1d7e45627208" (reference "BZ1") (unit 1) (value "Buzzer") (footprint "Buzzer_Beeper:Buzzer_TDK_PS1240P02BT_D12.2mm_H6.5mm") ) - (path "/f8dea8cf-a10c-43e1-a39f-f07ef45cfa96" - (reference "C1") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0805_2012Metric") + (path "/5bdd29cb-8f55-4095-af05-9d35ec92d17e" + (reference "C1") (unit 1) (value "C") (footprint "Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder") ) (path "/1605f7b8-4cf5-422e-8edc-f3b2b476c1c1" (reference "C2") (unit 1) (value "10nF") (footprint "Capacitor_SMD:C_0603_1608Metric") @@ -5480,9 +4874,6 @@ (path "/8d79db4c-3394-4ced-8c77-c4047f4038f6" (reference "C3") (unit 1) (value "10nF") (footprint "Capacitor_SMD:C_0603_1608Metric") ) - (path "/5dd32f3d-960d-444f-be85-96d5b718d202" - (reference "C4") (unit 1) (value "104") (footprint "Capacitor_SMD:C_0805_2012Metric") - ) (path "/2d338117-477b-4e82-a08e-a090de86844c" (reference "C5") (unit 1) (value "10uF") (footprint "Capacitor_SMD:C_1206_3216Metric") ) @@ -5510,27 +4901,21 @@ (path "/6c5bad07-6597-499a-bbb1-65b5ba4a8e58" (reference "C13") (unit 1) (value "10uF") (footprint "Capacitor_SMD:C_1206_3216Metric") ) - (path "/5bdd29cb-8f55-4095-af05-9d35ec92d17e" - (reference "C?") (unit 1) (value "C") (footprint "Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder") - ) - (path "/5c64e8e8-6c2d-483f-aafc-e21e16486282" - (reference "C?") (unit 1) (value "C") (footprint "Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder") - ) - (path "/b5b14a72-6174-4e0d-a89b-0052cd50bb4f" - (reference "C?") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0805_2012Metric") - ) (path "/c46704c8-86a9-4f34-9da9-6591a57c007e" - (reference "C?") (unit 1) (value "C") (footprint "Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder") + (reference "C14") (unit 1) (value "C") (footprint "Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder") ) (path "/c5449947-3eb6-438a-a259-9adb710c7987" - (reference "C?") (unit 1) (value "C") (footprint "Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder") + (reference "C15") (unit 1) (value "C") (footprint "Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder") + ) + (path "/5c64e8e8-6c2d-483f-aafc-e21e16486282" + (reference "C16") (unit 1) (value "C") (footprint "Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder") + ) + (path "/b5b14a72-6174-4e0d-a89b-0052cd50bb4f" + (reference "C17") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0805_2012Metric") ) (path "/ba50dcc8-5bbd-4264-91b9-75a161f252c6" (reference "D1") (unit 1) (value "1N4148WT") (footprint "Diode_SMD:D_SOD-523") ) - (path "/a9669e73-0978-4947-a094-689a18b0faaf" - (reference "D2") (unit 1) (value "LED") (footprint "LED_SMD:LED_0603_1608Metric") - ) (path "/afbb71ae-8838-4abe-bedc-bb552b7b1c7d" (reference "D3") (unit 1) (value "LED") (footprint "LED_SMD:LED_0603_1608Metric") ) @@ -5558,11 +4943,8 @@ (path "/9f9d9ec1-f12a-47cb-a033-e6a9e0eb276a" (reference "J5") (unit 1) (value "Conn_01x04_Female") (footprint "MY:SIP-4") ) - (path "/a6e73968-bfeb-49ba-b5d0-6a71117f7ee3" - (reference "L1") (unit 1) (value "100mH") (footprint "Inductor_SMD:L_0805_2012Metric") - ) (path "/94979294-58f1-45cf-861c-a1d9abf6b6a1" - (reference "L?") (unit 1) (value "100mH") (footprint "Inductor_SMD:L_0805_2012Metric") + (reference "L1") (unit 1) (value "100mH") (footprint "Inductor_SMD:L_0805_2012Metric") ) (path "/fcb41881-c9cb-478a-9b39-b27b7306d1ef" (reference "Q1") (unit 1) (value "AO3400A") (footprint "Package_TO_SOT_SMD:SOT-23") @@ -5576,10 +4958,10 @@ (path "/93980fdc-94bb-414f-bc14-1f8a7c5ac14f" (reference "Q4") (unit 1) (value "AO3401A") (footprint "Package_TO_SOT_SMD:SOT-23") ) - (path "/8969f576-03fa-4e04-b345-8d7fcf6d78ae" + (path "/28dce972-fafd-4ac8-b8d0-ff3e3e001c2c" (reference "R1") (unit 1) (value "1K") (footprint "Resistor_SMD:R_0603_1608Metric") ) - (path "/bbfeaf9e-cf9d-4e58-8dff-a248ece1de43" + (path "/33ada24f-a0d9-4b83-b4c9-3e94e63b878f" (reference "R2") (unit 1) (value "10K") (footprint "Resistor_SMD:R_0603_1608Metric") ) (path "/89f59fa2-3d49-44cc-bb2f-0edc891f14dd" @@ -5615,10 +4997,7 @@ (path "/b97012cc-0f92-42c4-98d4-804fadb5b954" (reference "R13") (unit 1) (value "1K") (footprint "Resistor_SMD:R_0603_1608Metric") ) - (path "/5bf4db13-f95c-4510-aa5f-610b83763fd1" - (reference "R14") (unit 1) (value "510") (footprint "Resistor_SMD:R_0603_1608Metric") - ) - (path "/bfaf6174-0339-4ea1-ba70-73a95cf9aacd" + (path "/d7341a7c-138e-4958-94b9-6d075160a22d" (reference "R15") (unit 1) (value "*R0") (footprint "Resistor_SMD:R_0402_1005Metric") ) (path "/cba80511-2d97-4527-bf5e-8b6b0c65757a" @@ -5648,30 +5027,15 @@ (path "/ea5be27d-cc3f-4f0f-8258-28a6b9a5c4e9" (reference "R24") (unit 1) (value "510") (footprint "Resistor_SMD:R_0603_1608Metric") ) - (path "/28dce972-fafd-4ac8-b8d0-ff3e3e001c2c" - (reference "R?") (unit 1) (value "1K") (footprint "Resistor_SMD:R_0603_1608Metric") - ) - (path "/33ada24f-a0d9-4b83-b4c9-3e94e63b878f" - (reference "R?") (unit 1) (value "10K") (footprint "Resistor_SMD:R_0603_1608Metric") - ) - (path "/d7341a7c-138e-4958-94b9-6d075160a22d" - (reference "R?") (unit 1) (value "*R0") (footprint "Resistor_SMD:R_0402_1005Metric") - ) (path "/14f2ae6e-5c6f-4b04-a137-aaaffc15e481" (reference "SW1") (unit 1) (value "RotaryEncoder_Switch") (footprint "MY:EC11") ) - (path "/4632212f-13ce-4392-bc68-ccb9ba333770" - (reference "U1") (unit 1) (value "STM32F030F4Px") (footprint "Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm") - ) (path "/114181eb-7392-4a8c-8162-9def16899b0d" (reference "U2") (unit 1) (value "OLED_12864") (footprint "MY:OLED12864") ) (path "/b12aa96f-c96f-430d-a62c-839d74848054" (reference "U3") (unit 1) (value "MCP73831-2-OT") (footprint "Package_TO_SOT_SMD:SOT-23-5") ) - (path "/d1649c49-73bf-461b-85a3-76adaec8115c" - (reference "U4") (unit 1) (value "CH340E") (footprint "Package_SO:MSOP-10_3x3mm_P0.5mm") - ) (path "/f7e336c3-2e8b-4336-adc8-928ff75b2342" (reference "U5") (unit 1) (value "LP5907MFX-3.3") (footprint "Package_TO_SOT_SMD:SOT-23-5") ) diff --git a/stm32F030F4_code/.settings/language.settings.xml b/stm32F030F4_code/.settings/language.settings.xml index 29c0049..a8e7137 100644 --- a/stm32F030F4_code/.settings/language.settings.xml +++ b/stm32F030F4_code/.settings/language.settings.xml @@ -6,7 +6,7 @@ - + @@ -18,7 +18,7 @@ - + diff --git a/stm32f103/.cproject b/stm32f103/.cproject index 406e9b8..089be7f 100644 --- a/stm32f103/.cproject +++ b/stm32f103/.cproject @@ -21,7 +21,7 @@ @@ -72,7 +76,9 @@ + + @@ -98,7 +104,7 @@ @@ -145,7 +155,9 @@ + + diff --git a/stm32f103/.mxproject b/stm32f103/.mxproject index 38544ee..d1fa385 100644 --- a/stm32f103/.mxproject +++ b/stm32f103/.mxproject @@ -1,25 +1,37 @@ [PreviousLibFiles] -LibFiles=Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/tz_context.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_armv8mbl.h; +LibFiles=Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pcd.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pcd_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usb.h;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_def.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_adc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_adc_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_i2c.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_core.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ctlreq.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_def.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ioreq.h;Middlewares\ST\STM32_USB_Device_Library\Class\DFU\Inc\usbd_dfu.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usb.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_adc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_adc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_i2c.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c;Middlewares\ST\STM32_USB_Device_Library\Class\DFU\Src\usbd_dfu.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pcd.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pcd_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usb.h;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_def.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_adc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_adc_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_i2c.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_core.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ctlreq.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_def.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ioreq.h;Middlewares\ST\STM32_USB_Device_Library\Class\DFU\Inc\usbd_dfu.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xb.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h; [PreviousUsedCubeIDEFiles] -SourceFiles=Core/Src/main.c;Core/Src/stm32f1xx_it.c;Core/Src/stm32f1xx_hal_msp.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;Core/Src/system_stm32f1xx.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;Core/Src/system_stm32f1xx.c;;; -HeaderPath=Drivers/STM32F1xx_HAL_Driver/Inc;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;Drivers/CMSIS/Device/ST/STM32F1xx/Include;Drivers/CMSIS/Include;Core/Inc; +SourceFiles=Core\Src\main.c;USB_DEVICE\App\usb_device.c;USB_DEVICE\Target\usbd_conf.c;USB_DEVICE\App\usbd_desc.c;USB_DEVICE\App\usbd_dfu_if.c;Core\Src\stm32f1xx_it.c;Core\Src\stm32f1xx_hal_msp.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usb.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_adc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_adc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_i2c.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c;Middlewares\ST\STM32_USB_Device_Library\Class\DFU\Src\usbd_dfu.c;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;Core\Src\system_stm32f1xx.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usb.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_adc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_adc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_i2c.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_tim_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c;Middlewares\ST\STM32_USB_Device_Library\Class\DFU\Src\usbd_dfu.c;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;Core\Src\system_stm32f1xx.c;;;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c;Middlewares\ST\STM32_USB_Device_Library\Class\DFU\Src\usbd_dfu.c; +HeaderPath=Drivers\STM32F1xx_HAL_Driver\Inc;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy;Middlewares\ST\STM32_USB_Device_Library\Core\Inc;Middlewares\ST\STM32_USB_Device_Library\Class\DFU\Inc;Drivers\CMSIS\Device\ST\STM32F1xx\Include;Drivers\CMSIS\Include;USB_DEVICE\App;USB_DEVICE\Target;Core\Inc; CDefines=USE_HAL_DRIVER;STM32F103xB;USE_HAL_DRIVER;USE_HAL_DRIVER; [PreviousGenFiles] AdvancedFolderStructure=true -HeaderFileListSize=3 -HeaderFiles#0=/Users/wuwenfeng/Documents/morse_code_trainer/stm32f103/Core/Inc/stm32f1xx_it.h -HeaderFiles#1=/Users/wuwenfeng/Documents/morse_code_trainer/stm32f103/Core/Inc/stm32f1xx_hal_conf.h -HeaderFiles#2=/Users/wuwenfeng/Documents/morse_code_trainer/stm32f103/Core/Inc/main.h -HeaderFolderListSize=1 -HeaderPath#0=/Users/wuwenfeng/Documents/morse_code_trainer/stm32f103/Core/Inc +HeaderFileListSize=7 +HeaderFiles#0=C:/Users/wuwen/Desktop/morse_code_trainer/stm32f103/USB_DEVICE/App/usb_device.h +HeaderFiles#1=C:/Users/wuwen/Desktop/morse_code_trainer/stm32f103/USB_DEVICE/Target/usbd_conf.h +HeaderFiles#2=C:/Users/wuwen/Desktop/morse_code_trainer/stm32f103/USB_DEVICE/App/usbd_desc.h +HeaderFiles#3=C:/Users/wuwen/Desktop/morse_code_trainer/stm32f103/USB_DEVICE/App/usbd_dfu_if.h +HeaderFiles#4=C:/Users/wuwen/Desktop/morse_code_trainer/stm32f103/Core/Inc/stm32f1xx_it.h +HeaderFiles#5=C:/Users/wuwen/Desktop/morse_code_trainer/stm32f103/Core/Inc/stm32f1xx_hal_conf.h +HeaderFiles#6=C:/Users/wuwen/Desktop/morse_code_trainer/stm32f103/Core/Inc/main.h +HeaderFolderListSize=3 +HeaderPath#0=C:/Users/wuwen/Desktop/morse_code_trainer/stm32f103/USB_DEVICE/App +HeaderPath#1=C:/Users/wuwen/Desktop/morse_code_trainer/stm32f103/USB_DEVICE/Target +HeaderPath#2=C:/Users/wuwen/Desktop/morse_code_trainer/stm32f103/Core/Inc HeaderFiles=; -SourceFileListSize=3 -SourceFiles#0=/Users/wuwenfeng/Documents/morse_code_trainer/stm32f103/Core/Src/stm32f1xx_it.c -SourceFiles#1=/Users/wuwenfeng/Documents/morse_code_trainer/stm32f103/Core/Src/stm32f1xx_hal_msp.c -SourceFiles#2=/Users/wuwenfeng/Documents/morse_code_trainer/stm32f103/Core/Src/main.c -SourceFolderListSize=1 -SourcePath#0=/Users/wuwenfeng/Documents/morse_code_trainer/stm32f103/Core/Src +SourceFileListSize=7 +SourceFiles#0=C:/Users/wuwen/Desktop/morse_code_trainer/stm32f103/USB_DEVICE/App/usb_device.c +SourceFiles#1=C:/Users/wuwen/Desktop/morse_code_trainer/stm32f103/USB_DEVICE/Target/usbd_conf.c +SourceFiles#2=C:/Users/wuwen/Desktop/morse_code_trainer/stm32f103/USB_DEVICE/App/usbd_desc.c +SourceFiles#3=C:/Users/wuwen/Desktop/morse_code_trainer/stm32f103/USB_DEVICE/App/usbd_dfu_if.c +SourceFiles#4=C:/Users/wuwen/Desktop/morse_code_trainer/stm32f103/Core/Src/stm32f1xx_it.c +SourceFiles#5=C:/Users/wuwen/Desktop/morse_code_trainer/stm32f103/Core/Src/stm32f1xx_hal_msp.c +SourceFiles#6=C:/Users/wuwen/Desktop/morse_code_trainer/stm32f103/Core/Src/main.c +SourceFolderListSize=3 +SourcePath#0=C:/Users/wuwen/Desktop/morse_code_trainer/stm32f103/USB_DEVICE/App +SourcePath#1=C:/Users/wuwen/Desktop/morse_code_trainer/stm32f103/USB_DEVICE/Target +SourcePath#2=C:/Users/wuwen/Desktop/morse_code_trainer/stm32f103/Core/Src SourceFiles=; diff --git a/stm32f103/.settings/language.settings.xml b/stm32f103/.settings/language.settings.xml index ee34a60..a26121f 100644 --- a/stm32f103/.settings/language.settings.xml +++ b/stm32f103/.settings/language.settings.xml @@ -6,7 +6,7 @@ - + @@ -18,7 +18,7 @@ - + diff --git a/stm32f103/.settings/stm32cubeide.project.prefs b/stm32f103/.settings/stm32cubeide.project.prefs index 3fee5e5..2189ba2 100644 --- a/stm32f103/.settings/stm32cubeide.project.prefs +++ b/stm32f103/.settings/stm32cubeide.project.prefs @@ -1,4 +1,4 @@ 66BE74F758C12D739921AEA421D593D3=2 -8DF89ED150041C4CBC7CB9A9CAA90856=979A1C77DA7C159653BD18E6A0BB4227 -DC22A860405A8BF2F2C095E5B6529F12=979A1C77DA7C159653BD18E6A0BB4227 +8DF89ED150041C4CBC7CB9A9CAA90856=4CBCD6EFBBBD79974032F72B2CAF2868 +DC22A860405A8BF2F2C095E5B6529F12=4CBCD6EFBBBD79974032F72B2CAF2868 eclipse.preferences.version=1 diff --git a/stm32f103/Core/Inc/stm32f1xx_hal_conf.h b/stm32f103/Core/Inc/stm32f1xx_hal_conf.h index b2c07c3..57d1957 100644 --- a/stm32f103/Core/Inc/stm32f1xx_hal_conf.h +++ b/stm32f103/Core/Inc/stm32f1xx_hal_conf.h @@ -52,7 +52,7 @@ /*#define HAL_NOR_MODULE_ENABLED */ /*#define HAL_NAND_MODULE_ENABLED */ /*#define HAL_PCCARD_MODULE_ENABLED */ -/*#define HAL_PCD_MODULE_ENABLED */ +#define HAL_PCD_MODULE_ENABLED /*#define HAL_HCD_MODULE_ENABLED */ /*#define HAL_PWR_MODULE_ENABLED */ /*#define HAL_RCC_MODULE_ENABLED */ diff --git a/stm32f103/Core/Inc/stm32f1xx_it.h b/stm32f103/Core/Inc/stm32f1xx_it.h index bd13bd5..979db8e 100644 --- a/stm32f103/Core/Inc/stm32f1xx_it.h +++ b/stm32f103/Core/Inc/stm32f1xx_it.h @@ -56,6 +56,7 @@ void SVC_Handler(void); void DebugMon_Handler(void); void PendSV_Handler(void); void SysTick_Handler(void); +void USB_LP_CAN1_RX0_IRQHandler(void); /* USER CODE BEGIN EFP */ /* USER CODE END EFP */ diff --git a/stm32f103/Core/Src/main.c b/stm32f103/Core/Src/main.c index 1b9057e..8aef3cc 100644 --- a/stm32f103/Core/Src/main.c +++ b/stm32f103/Core/Src/main.c @@ -19,6 +19,7 @@ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "main.h" +#include "usb_device.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ @@ -96,6 +97,7 @@ int main(void) MX_ADC1_Init(); MX_I2C1_Init(); MX_USART1_UART_Init(); + MX_USB_DEVICE_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ @@ -148,8 +150,9 @@ void SystemClock_Config(void) { Error_Handler(); } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC; - PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV2; + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_USB; + PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; + PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) { Error_Handler(); diff --git a/stm32f103/Core/Src/stm32f1xx_it.c b/stm32f103/Core/Src/stm32f1xx_it.c index 16c4acd..f9efdab 100644 --- a/stm32f103/Core/Src/stm32f1xx_it.c +++ b/stm32f103/Core/Src/stm32f1xx_it.c @@ -56,7 +56,7 @@ /* USER CODE END 0 */ /* External variables --------------------------------------------------------*/ - +extern PCD_HandleTypeDef hpcd_USB_FS; /* USER CODE BEGIN EV */ /* USER CODE END EV */ @@ -199,6 +199,20 @@ void SysTick_Handler(void) /* please refer to the startup file (startup_stm32f1xx.s). */ /******************************************************************************/ +/** + * @brief This function handles USB low priority or CAN RX0 interrupts. + */ +void USB_LP_CAN1_RX0_IRQHandler(void) +{ + /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */ + + /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */ + HAL_PCD_IRQHandler(&hpcd_USB_FS); + /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */ + + /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */ +} + /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ diff --git a/stm32f103/Debug/Core/Src/main.d b/stm32f103/Debug/Core/Src/main.d index ba9b435..f1c250e 100644 --- a/stm32f103/Debug/Core/Src/main.d +++ b/stm32f103/Debug/Core/Src/main.d @@ -18,9 +18,19 @@ Core/Src/main.o: ../Core/Src/main.c ../Core/Inc/main.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h \ + ../USB_DEVICE/App/usb_device.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \ + ../USB_DEVICE/Target/usbd_conf.h ../Core/Inc/main.h: @@ -62,8 +72,28 @@ Core/Src/main.o: ../Core/Src/main.c ../Core/Inc/main.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: + +../USB_DEVICE/App/usb_device.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h: + +../USB_DEVICE/Target/usbd_conf.h: diff --git a/stm32f103/Debug/Core/Src/main.o b/stm32f103/Debug/Core/Src/main.o index 016779f..a827a33 100644 Binary files a/stm32f103/Debug/Core/Src/main.o and b/stm32f103/Debug/Core/Src/main.o differ diff --git a/stm32f103/Debug/Core/Src/main.su b/stm32f103/Debug/Core/Src/main.su index 92caa7e..66831d2 100644 --- a/stm32f103/Debug/Core/Src/main.su +++ b/stm32f103/Debug/Core/Src/main.su @@ -1,4 +1,7 @@ -main.c:64:5:main 8 static -main.c:107:6:SystemClock_Config 72 static -main.c:146:13:MX_GPIO_Init 24 static -main.c:164:6:Error_Handler 4 static,ignoring_inline_asm +main.c:73:5:main 8 static +main.c:120:6:SystemClock_Config 88 static +main.c:167:13:MX_ADC1_Init 24 static +main.c:212:13:MX_I2C1_Init 8 static +main.c:246:13:MX_USART1_UART_Init 8 static +main.c:279:13:MX_GPIO_Init 40 static +main.c:305:6:Error_Handler 4 static,ignoring_inline_asm diff --git a/stm32f103/Debug/Core/Src/stm32f1xx_hal_msp.d b/stm32f103/Debug/Core/Src/stm32f1xx_hal_msp.d index e442e79..d489a41 100644 --- a/stm32f103/Debug/Core/Src/stm32f1xx_hal_msp.d +++ b/stm32f103/Debug/Core/Src/stm32f1xx_hal_msp.d @@ -18,9 +18,16 @@ Core/Src/stm32f1xx_hal_msp.o: ../Core/Src/stm32f1xx_hal_msp.c \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h ../Core/Inc/main.h: @@ -62,8 +69,22 @@ Core/Src/stm32f1xx_hal_msp.o: ../Core/Src/stm32f1xx_hal_msp.c \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Core/Src/stm32f1xx_hal_msp.o b/stm32f103/Debug/Core/Src/stm32f1xx_hal_msp.o index 8d6c20d..6143f99 100644 Binary files a/stm32f103/Debug/Core/Src/stm32f1xx_hal_msp.o and b/stm32f103/Debug/Core/Src/stm32f1xx_hal_msp.o differ diff --git a/stm32f103/Debug/Core/Src/stm32f1xx_hal_msp.su b/stm32f103/Debug/Core/Src/stm32f1xx_hal_msp.su index 6f735d5..c40c653 100644 --- a/stm32f103/Debug/Core/Src/stm32f1xx_hal_msp.su +++ b/stm32f103/Debug/Core/Src/stm32f1xx_hal_msp.su @@ -1 +1,7 @@ stm32f1xx_hal_msp.c:64:6:HAL_MspInit 24 static +stm32f1xx_hal_msp.c:90:6:HAL_ADC_MspInit 40 static +stm32f1xx_hal_msp.c:122:6:HAL_ADC_MspDeInit 16 static +stm32f1xx_hal_msp.c:150:6:HAL_I2C_MspInit 40 static +stm32f1xx_hal_msp.c:184:6:HAL_I2C_MspDeInit 16 static +stm32f1xx_hal_msp.c:215:6:HAL_UART_MspInit 40 static +stm32f1xx_hal_msp.c:254:6:HAL_UART_MspDeInit 16 static diff --git a/stm32f103/Debug/Core/Src/stm32f1xx_it.d b/stm32f103/Debug/Core/Src/stm32f1xx_it.d index 6baed36..f32cf3a 100644 --- a/stm32f103/Debug/Core/Src/stm32f1xx_it.d +++ b/stm32f103/Debug/Core/Src/stm32f1xx_it.d @@ -18,9 +18,16 @@ Core/Src/stm32f1xx_it.o: ../Core/Src/stm32f1xx_it.c ../Core/Inc/main.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h \ ../Core/Inc/stm32f1xx_it.h ../Core/Inc/main.h: @@ -63,10 +70,24 @@ Core/Src/stm32f1xx_it.o: ../Core/Src/stm32f1xx_it.c ../Core/Inc/main.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: + ../Core/Inc/stm32f1xx_it.h: diff --git a/stm32f103/Debug/Core/Src/stm32f1xx_it.o b/stm32f103/Debug/Core/Src/stm32f1xx_it.o index 5ae6f6f..f2aa276 100644 Binary files a/stm32f103/Debug/Core/Src/stm32f1xx_it.o and b/stm32f103/Debug/Core/Src/stm32f1xx_it.o differ diff --git a/stm32f103/Debug/Core/Src/stm32f1xx_it.su b/stm32f103/Debug/Core/Src/stm32f1xx_it.su index c0a6d67..63f4bde 100644 --- a/stm32f103/Debug/Core/Src/stm32f1xx_it.su +++ b/stm32f103/Debug/Core/Src/stm32f1xx_it.su @@ -7,3 +7,4 @@ stm32f1xx_it.c:145:6:SVC_Handler 4 static stm32f1xx_it.c:158:6:DebugMon_Handler 4 static stm32f1xx_it.c:171:6:PendSV_Handler 4 static stm32f1xx_it.c:184:6:SysTick_Handler 8 static +stm32f1xx_it.c:205:6:USB_LP_CAN1_RX0_IRQHandler 8 static diff --git a/stm32f103/Debug/Core/Src/subdir.mk b/stm32f103/Debug/Core/Src/subdir.mk index 0c7a921..4557a36 100644 --- a/stm32f103/Debug/Core/Src/subdir.mk +++ b/stm32f103/Debug/Core/Src/subdir.mk @@ -31,5 +31,12 @@ C_DEPS += \ # Each subdirectory must supply rules for building sources it contributes Core/Src/%.o: ../Core/Src/%.c Core/Src/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" + arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" + +clean: clean-Core-2f-Src + +clean-Core-2f-Src: + -$(RM) ./Core/Src/main.d ./Core/Src/main.o ./Core/Src/stm32f1xx_hal_msp.d ./Core/Src/stm32f1xx_hal_msp.o ./Core/Src/stm32f1xx_it.d ./Core/Src/stm32f1xx_it.o ./Core/Src/syscalls.d ./Core/Src/syscalls.o ./Core/Src/sysmem.d ./Core/Src/sysmem.o ./Core/Src/system_stm32f1xx.d ./Core/Src/system_stm32f1xx.o + +.PHONY: clean-Core-2f-Src diff --git a/stm32f103/Debug/Core/Src/syscalls.o b/stm32f103/Debug/Core/Src/syscalls.o index 0dc1e55..dce20ca 100644 Binary files a/stm32f103/Debug/Core/Src/syscalls.o and b/stm32f103/Debug/Core/Src/syscalls.o differ diff --git a/stm32f103/Debug/Core/Src/sysmem.o b/stm32f103/Debug/Core/Src/sysmem.o index e867363..a02ab41 100644 Binary files a/stm32f103/Debug/Core/Src/sysmem.o and b/stm32f103/Debug/Core/Src/sysmem.o differ diff --git a/stm32f103/Debug/Core/Src/system_stm32f1xx.d b/stm32f103/Debug/Core/Src/system_stm32f1xx.d index 62678ad..273d8bd 100644 --- a/stm32f103/Debug/Core/Src/system_stm32f1xx.d +++ b/stm32f103/Debug/Core/Src/system_stm32f1xx.d @@ -18,9 +18,16 @@ Core/Src/system_stm32f1xx.o: ../Core/Src/system_stm32f1xx.c \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h: @@ -60,8 +67,22 @@ Core/Src/system_stm32f1xx.o: ../Core/Src/system_stm32f1xx.c \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Core/Src/system_stm32f1xx.o b/stm32f103/Debug/Core/Src/system_stm32f1xx.o index df7bb4e..5072a4d 100644 Binary files a/stm32f103/Debug/Core/Src/system_stm32f1xx.o and b/stm32f103/Debug/Core/Src/system_stm32f1xx.o differ diff --git a/stm32f103/Debug/Core/Startup/startup_stm32f103c8tx.o b/stm32f103/Debug/Core/Startup/startup_stm32f103c8tx.o index b3b0d2e..77848dc 100644 Binary files a/stm32f103/Debug/Core/Startup/startup_stm32f103c8tx.o and b/stm32f103/Debug/Core/Startup/startup_stm32f103c8tx.o differ diff --git a/stm32f103/Debug/Core/Startup/subdir.mk b/stm32f103/Debug/Core/Startup/subdir.mk index e8b1c54..28b3bdd 100644 --- a/stm32f103/Debug/Core/Startup/subdir.mk +++ b/stm32f103/Debug/Core/Startup/subdir.mk @@ -18,3 +18,10 @@ S_DEPS += \ Core/Startup/%.o: ../Core/Startup/%.s Core/Startup/subdir.mk arm-none-eabi-gcc -mcpu=cortex-m3 -g3 -DDEBUG -c -x assembler-with-cpp -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" "$<" +clean: clean-Core-2f-Startup + +clean-Core-2f-Startup: + -$(RM) ./Core/Startup/startup_stm32f103c8tx.d ./Core/Startup/startup_stm32f103c8tx.o + +.PHONY: clean-Core-2f-Startup + diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.d b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.d index 84bc218..dfa1c0d 100644 --- a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.d +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.d @@ -19,9 +19,16 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: @@ -61,8 +68,22 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o index 434efb0..cd528ba 100644 Binary files a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o and b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o differ diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.d b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.d new file mode 100644 index 0000000..ef843f2 --- /dev/null +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.d @@ -0,0 +1,89 @@ +Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o: \ + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \ + ../Core/Inc/stm32f1xx_hal_conf.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: + +../Core/Inc/stm32f1xx_hal_conf.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h: + +../Drivers/CMSIS/Include/core_cm3.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o new file mode 100644 index 0000000..014001c Binary files /dev/null and b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o differ diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.su b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.su new file mode 100644 index 0000000..5cab5c4 --- /dev/null +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.su @@ -0,0 +1,27 @@ +stm32f1xx_hal_adc.c:421:19:HAL_ADC_Init 32 static +stm32f1xx_hal_adc.c:639:19:HAL_ADC_DeInit 24 static +stm32f1xx_hal_adc.c:787:13:HAL_ADC_MspInit 16 static +stm32f1xx_hal_adc.c:801:13:HAL_ADC_MspDeInit 16 static +stm32f1xx_hal_adc.c:1046:19:HAL_ADC_Start 24 static +stm32f1xx_hal_adc.c:1159:19:HAL_ADC_Stop 24 static +stm32f1xx_hal_adc.c:1203:19:HAL_ADC_PollForConversion 40 static +stm32f1xx_hal_adc.c:1342:19:HAL_ADC_PollForEvent 32 static +stm32f1xx_hal_adc.c:1395:19:HAL_ADC_Start_IT 24 static +stm32f1xx_hal_adc.c:1506:19:HAL_ADC_Stop_IT 24 static +stm32f1xx_hal_adc.c:1563:19:HAL_ADC_Start_DMA 32 static +stm32f1xx_hal_adc.c:1704:19:HAL_ADC_Stop_DMA 24 static +stm32f1xx_hal_adc.c:1772:10:HAL_ADC_GetValue 16 static +stm32f1xx_hal_adc.c:1789:6:HAL_ADC_IRQHandler 16 static +stm32f1xx_hal_adc.c:1916:13:HAL_ADC_ConvCpltCallback 16 static +stm32f1xx_hal_adc.c:1930:13:HAL_ADC_ConvHalfCpltCallback 16 static +stm32f1xx_hal_adc.c:1944:13:HAL_ADC_LevelOutOfWindowCallback 16 static +stm32f1xx_hal_adc.c:1959:13:HAL_ADC_ErrorCallback 16 static +stm32f1xx_hal_adc.c:2007:19:HAL_ADC_ConfigChannel 24 static +stm32f1xx_hal_adc.c:2117:19:HAL_ADC_AnalogWDGConfig 16 static +stm32f1xx_hal_adc.c:2204:10:HAL_ADC_GetState 16 static +stm32f1xx_hal_adc.c:2215:10:HAL_ADC_GetError 16 static +stm32f1xx_hal_adc.c:2239:19:ADC_Enable 24 static +stm32f1xx_hal_adc.c:2298:19:ADC_ConversionStop_Disable 24 static +stm32f1xx_hal_adc.c:2340:6:ADC_DMAConvCplt 24 static +stm32f1xx_hal_adc.c:2387:6:ADC_DMAHalfConvCplt 24 static +stm32f1xx_hal_adc.c:2405:6:ADC_DMAError 24 static diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.d b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.d new file mode 100644 index 0000000..bd38e65 --- /dev/null +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.d @@ -0,0 +1,89 @@ +Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o: \ + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \ + ../Core/Inc/stm32f1xx_hal_conf.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: + +../Core/Inc/stm32f1xx_hal_conf.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h: + +../Drivers/CMSIS/Include/core_cm3.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o new file mode 100644 index 0000000..d628d86 Binary files /dev/null and b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o differ diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.su b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.su new file mode 100644 index 0000000..51c69e9 --- /dev/null +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.su @@ -0,0 +1,13 @@ +stm32f1xx_hal_adc_ex.c:126:19:HAL_ADCEx_Calibration_Start 40 static +stm32f1xx_hal_adc_ex.c:239:19:HAL_ADCEx_InjectedStart 24 static +stm32f1xx_hal_adc_ex.c:338:19:HAL_ADCEx_InjectedStop 24 static +stm32f1xx_hal_adc_ex.c:391:19:HAL_ADCEx_InjectedPollForConversion 40 static +stm32f1xx_hal_adc_ex.c:517:19:HAL_ADCEx_InjectedStart_IT 24 static +stm32f1xx_hal_adc_ex.c:616:19:HAL_ADCEx_InjectedStop_IT 24 static +stm32f1xx_hal_adc_ex.c:685:19:HAL_ADCEx_MultiModeStart_DMA 80 static +stm32f1xx_hal_adc_ex.c:811:19:HAL_ADCEx_MultiModeStop_DMA 72 static +stm32f1xx_hal_adc_ex.c:899:10:HAL_ADCEx_InjectedGetValue 24 static +stm32f1xx_hal_adc_ex.c:936:10:HAL_ADCEx_MultiModeGetValue 24 static +stm32f1xx_hal_adc_ex.c:968:13:HAL_ADCEx_InjectedConvCpltCallback 16 static +stm32f1xx_hal_adc_ex.c:1010:19:HAL_ADCEx_InjectedConfigChannel 24 static +stm32f1xx_hal_adc_ex.c:1271:19:HAL_ADCEx_MultiModeConfigChannel 72 static diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.d b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.d index ac8b725..b597a70 100644 --- a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.d +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.d @@ -19,9 +19,16 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: @@ -61,8 +68,22 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o index be6f450..8c7cc44 100644 Binary files a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o and b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o differ diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.d b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.d index 2a4d36b..a14db30 100644 --- a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.d +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.d @@ -19,9 +19,16 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: @@ -61,8 +68,22 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o index 5d2c74c..8a55f76 100644 Binary files a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o and b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o differ diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.d b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.d index 1b334b4..5e7d35f 100644 --- a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.d +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.d @@ -19,9 +19,16 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: @@ -61,8 +68,22 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o index 07a7241..4c02a63 100644 Binary files a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o and b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o differ diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.d b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.d index d54c9e1..d04ba54 100644 --- a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.d +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.d @@ -19,9 +19,16 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: @@ -61,8 +68,22 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o index 47d33ad..acbeb12 100644 Binary files a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o and b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o differ diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.d b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.d index 9ef2e81..782fc44 100644 --- a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.d +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.d @@ -19,9 +19,16 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: @@ -61,8 +68,22 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o index 07dc98d..a887c20 100644 Binary files a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o and b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o differ diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.d b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.d index 3462ea6..935b358 100644 --- a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.d +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.d @@ -19,9 +19,16 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: @@ -61,8 +68,22 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o index 09c2c08..1c058f9 100644 Binary files a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o and b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o differ diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.d b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.d index ced0a9d..5d0fcc0 100644 --- a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.d +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.d @@ -19,9 +19,16 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: @@ -61,8 +68,22 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o index 279ed23..0fe92ee 100644 Binary files a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o and b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o differ diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.d b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.d new file mode 100644 index 0000000..4e1882c --- /dev/null +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.d @@ -0,0 +1,89 @@ +Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o: \ + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \ + ../Core/Inc/stm32f1xx_hal_conf.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: + +../Core/Inc/stm32f1xx_hal_conf.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h: + +../Drivers/CMSIS/Include/core_cm3.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o new file mode 100644 index 0000000..6f03ab9 Binary files /dev/null and b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o differ diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.su b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.su new file mode 100644 index 0000000..77037a9 --- /dev/null +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.su @@ -0,0 +1,81 @@ +stm32f1xx_hal_i2c.c:453:19:HAL_I2C_Init 24 static +stm32f1xx_hal_i2c.c:568:19:HAL_I2C_DeInit 16 static +stm32f1xx_hal_i2c.c:614:13:HAL_I2C_MspInit 16 static +stm32f1xx_hal_i2c.c:630:13:HAL_I2C_MspDeInit 16 static +stm32f1xx_hal_i2c.c:1050:19:HAL_I2C_Master_Transmit 40 static +stm32f1xx_hal_i2c.c:1171:19:HAL_I2C_Master_Receive 56 static,ignoring_inline_asm +stm32f1xx_hal_i2c.c:1462:19:HAL_I2C_Slave_Transmit 48 static +stm32f1xx_hal_i2c.c:1592:19:HAL_I2C_Slave_Receive 48 static +stm32f1xx_hal_i2c.c:1713:19:HAL_I2C_Master_Transmit_IT 32 static +stm32f1xx_hal_i2c.c:1793:19:HAL_I2C_Master_Receive_IT 32 static +stm32f1xx_hal_i2c.c:1876:19:HAL_I2C_Slave_Transmit_IT 24 static +stm32f1xx_hal_i2c.c:1938:19:HAL_I2C_Slave_Receive_IT 24 static +stm32f1xx_hal_i2c.c:2002:19:HAL_I2C_Master_Transmit_DMA 32 static +stm32f1xx_hal_i2c.c:2158:19:HAL_I2C_Master_Receive_DMA 32 static +stm32f1xx_hal_i2c.c:2312:19:HAL_I2C_Slave_Transmit_DMA 32 static +stm32f1xx_hal_i2c.c:2424:19:HAL_I2C_Slave_Receive_DMA 32 static +stm32f1xx_hal_i2c.c:2541:19:HAL_I2C_Mem_Write 40 static +stm32f1xx_hal_i2c.c:2664:19:HAL_I2C_Mem_Read 56 static,ignoring_inline_asm +stm32f1xx_hal_i2c.c:2960:19:HAL_I2C_Mem_Write_IT 32 static +stm32f1xx_hal_i2c.c:3048:19:HAL_I2C_Mem_Read_IT 32 static +stm32f1xx_hal_i2c.c:3142:19:HAL_I2C_Mem_Write_DMA 48 static +stm32f1xx_hal_i2c.c:3321:19:HAL_I2C_Mem_Read_DMA 56 static +stm32f1xx_hal_i2c.c:3514:19:HAL_I2C_IsDeviceReady 48 static +stm32f1xx_hal_i2c.c:3650:19:HAL_I2C_Master_Seq_Transmit_IT 32 static +stm32f1xx_hal_i2c.c:3748:19:HAL_I2C_Master_Seq_Transmit_DMA 40 static +stm32f1xx_hal_i2c.c:3931:19:HAL_I2C_Master_Seq_Receive_IT 40 static +stm32f1xx_hal_i2c.c:4055:19:HAL_I2C_Master_Seq_Receive_DMA 40 static +stm32f1xx_hal_i2c.c:4273:19:HAL_I2C_Slave_Seq_Transmit_IT 32 static +stm32f1xx_hal_i2c.c:4339:19:HAL_I2C_Slave_Seq_Transmit_DMA 32 static +stm32f1xx_hal_i2c.c:4513:19:HAL_I2C_Slave_Seq_Receive_IT 32 static +stm32f1xx_hal_i2c.c:4579:19:HAL_I2C_Slave_Seq_Receive_DMA 32 static +stm32f1xx_hal_i2c.c:4749:19:HAL_I2C_EnableListen_IT 16 static +stm32f1xx_hal_i2c.c:4782:19:HAL_I2C_DisableListen_IT 24 static +stm32f1xx_hal_i2c.c:4817:19:HAL_I2C_Master_Abort_IT 24 static +stm32f1xx_hal_i2c.c:4876:6:HAL_I2C_EV_IRQHandler 40 static +stm32f1xx_hal_i2c.c:5045:6:HAL_I2C_ER_IRQHandler 48 static +stm32f1xx_hal_i2c.c:5128:13:HAL_I2C_MasterTxCpltCallback 16 static +stm32f1xx_hal_i2c.c:5144:13:HAL_I2C_MasterRxCpltCallback 16 static +stm32f1xx_hal_i2c.c:5159:13:HAL_I2C_SlaveTxCpltCallback 16 static +stm32f1xx_hal_i2c.c:5175:13:HAL_I2C_SlaveRxCpltCallback 16 static +stm32f1xx_hal_i2c.c:5193:13:HAL_I2C_AddrCallback 16 static +stm32f1xx_hal_i2c.c:5211:13:HAL_I2C_ListenCpltCallback 16 static +stm32f1xx_hal_i2c.c:5227:13:HAL_I2C_MemTxCpltCallback 16 static +stm32f1xx_hal_i2c.c:5243:13:HAL_I2C_MemRxCpltCallback 16 static +stm32f1xx_hal_i2c.c:5259:13:HAL_I2C_ErrorCallback 16 static +stm32f1xx_hal_i2c.c:5275:13:HAL_I2C_AbortCpltCallback 16 static +stm32f1xx_hal_i2c.c:5310:22:HAL_I2C_GetState 16 static +stm32f1xx_hal_i2c.c:5322:21:HAL_I2C_GetMode 16 static +stm32f1xx_hal_i2c.c:5333:10:HAL_I2C_GetError 16 static +stm32f1xx_hal_i2c.c:5356:13:I2C_MasterTransmit_TXE 24 static +stm32f1xx_hal_i2c.c:5450:13:I2C_MasterTransmit_BTF 24 static +stm32f1xx_hal_i2c.c:5529:13:I2C_MemoryTransmit_TXE_BTF 24 static +stm32f1xx_hal_i2c.c:5615:13:I2C_MasterReceive_RXNE 24 static +stm32f1xx_hal_i2c.c:5723:13:I2C_MasterReceive_BTF 24 static +stm32f1xx_hal_i2c.c:5849:13:I2C_Master_SB 16 static +stm32f1xx_hal_i2c.c:5910:13:I2C_Master_ADD10 16 static +stm32f1xx_hal_i2c.c:5929:13:I2C_Master_ADDR 72 static +stm32f1xx_hal_i2c.c:6077:13:I2C_SlaveTransmit_TXE 24 static +stm32f1xx_hal_i2c.c:6118:13:I2C_SlaveTransmit_BTF 16 static +stm32f1xx_hal_i2c.c:6139:13:I2C_SlaveReceive_RXNE 24 static +stm32f1xx_hal_i2c.c:6180:13:I2C_SlaveReceive_BTF 16 static +stm32f1xx_hal_i2c.c:6202:13:I2C_Slave_ADDR 24 static +stm32f1xx_hal_i2c.c:6253:13:I2C_Slave_STOPF 24 static +stm32f1xx_hal_i2c.c:6422:13:I2C_Slave_AF 24 static +stm32f1xx_hal_i2c.c:6488:13:I2C_ITError 24 static +stm32f1xx_hal_i2c.c:6654:26:I2C_MasterRequestWrite 40 static +stm32f1xx_hal_i2c.c:6724:26:I2C_MasterRequestRead 40 static +stm32f1xx_hal_i2c.c:6824:26:I2C_RequestMemoryWrite 40 static +stm32f1xx_hal_i2c.c:6904:26:I2C_RequestMemoryRead 40 static +stm32f1xx_hal_i2c.c:7013:13:I2C_DMAXferCplt 32 static +stm32f1xx_hal_i2c.c:7151:13:I2C_DMAError 24 static +stm32f1xx_hal_i2c.c:7186:13:I2C_DMAAbort 32 static +stm32f1xx_hal_i2c.c:7289:26:I2C_WaitOnFlagUntilTimeout 24 static +stm32f1xx_hal_i2c.c:7323:26:I2C_WaitOnMasterAddressFlagUntilTimeout 24 static +stm32f1xx_hal_i2c.c:7374:26:I2C_WaitOnTXEFlagUntilTimeout 24 static +stm32f1xx_hal_i2c.c:7412:26:I2C_WaitOnBTFFlagUntilTimeout 24 static +stm32f1xx_hal_i2c.c:7450:26:I2C_WaitOnSTOPFlagUntilTimeout 24 static +stm32f1xx_hal_i2c.c:7483:26:I2C_WaitOnSTOPRequestThroughIT 24 static +stm32f1xx_hal_i2c.c:7512:26:I2C_WaitOnRXNEFlagUntilTimeout 24 static +stm32f1xx_hal_i2c.c:7557:26:I2C_IsAcknowledgeFailed 16 static +stm32f1xx_hal_i2c.c:7582:13:I2C_ConvertOtherXferOptions 16 static diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.d b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.d new file mode 100644 index 0000000..31d54df --- /dev/null +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.d @@ -0,0 +1,89 @@ +Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o: \ + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \ + ../Core/Inc/stm32f1xx_hal_conf.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: + +../Core/Inc/stm32f1xx_hal_conf.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h: + +../Drivers/CMSIS/Include/core_cm3.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o new file mode 100644 index 0000000..dfa2f17 Binary files /dev/null and b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o differ diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.su b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.su new file mode 100644 index 0000000..a7b9da4 --- /dev/null +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.su @@ -0,0 +1,36 @@ +stm32f1xx_hal_pcd.c:128:19:HAL_PCD_Init 64 static +stm32f1xx_hal_pcd.c:246:19:HAL_PCD_DeInit 16 static +stm32f1xx_hal_pcd.c:285:13:HAL_PCD_MspInit 16 static +stm32f1xx_hal_pcd.c:300:13:HAL_PCD_MspDeInit 16 static +stm32f1xx_hal_pcd.c:858:19:HAL_PCD_Start 16 static +stm32f1xx_hal_pcd.c:878:19:HAL_PCD_Stop 16 static +stm32f1xx_hal_pcd.c:1253:6:HAL_PCD_IRQHandler 40 static +stm32f1xx_hal_pcd.c:1371:6:HAL_PCD_WKUP_IRQHandler 16 static +stm32f1xx_hal_pcd.c:1384:13:HAL_PCD_DataOutStageCallback 16 static +stm32f1xx_hal_pcd.c:1401:13:HAL_PCD_DataInStageCallback 16 static +stm32f1xx_hal_pcd.c:1416:13:HAL_PCD_SetupStageCallback 16 static +stm32f1xx_hal_pcd.c:1431:13:HAL_PCD_SOFCallback 16 static +stm32f1xx_hal_pcd.c:1446:13:HAL_PCD_ResetCallback 16 static +stm32f1xx_hal_pcd.c:1461:13:HAL_PCD_SuspendCallback 16 static +stm32f1xx_hal_pcd.c:1476:13:HAL_PCD_ResumeCallback 16 static +stm32f1xx_hal_pcd.c:1492:13:HAL_PCD_ISOOUTIncompleteCallback 16 static +stm32f1xx_hal_pcd.c:1509:13:HAL_PCD_ISOINIncompleteCallback 16 static +stm32f1xx_hal_pcd.c:1525:13:HAL_PCD_ConnectCallback 16 static +stm32f1xx_hal_pcd.c:1540:13:HAL_PCD_DisconnectCallback 16 static +stm32f1xx_hal_pcd.c:1574:19:HAL_PCD_DevConnect 16 static +stm32f1xx_hal_pcd.c:1593:19:HAL_PCD_DevDisconnect 16 static +stm32f1xx_hal_pcd.c:1613:19:HAL_PCD_SetAddress 16 static +stm32f1xx_hal_pcd.c:1630:19:HAL_PCD_EP_Open 24 static +stm32f1xx_hal_pcd.c:1675:19:HAL_PCD_EP_Close 24 static +stm32f1xx_hal_pcd.c:1706:19:HAL_PCD_EP_Receive 32 static +stm32f1xx_hal_pcd.c:1737:10:HAL_PCD_EP_GetRxCount 16 static +stm32f1xx_hal_pcd.c:1749:19:HAL_PCD_EP_Transmit 32 static +stm32f1xx_hal_pcd.c:1784:19:HAL_PCD_EP_SetStall 24 static +stm32f1xx_hal_pcd.c:1827:19:HAL_PCD_EP_ClrStall 24 static +stm32f1xx_hal_pcd.c:1863:19:HAL_PCD_EP_Flush 16 static +stm32f1xx_hal_pcd.c:1886:19:HAL_PCD_ActivateRemoteWakeup 16 static +stm32f1xx_hal_pcd.c:1896:19:HAL_PCD_DeActivateRemoteWakeup 16 static +stm32f1xx_hal_pcd.c:1925:18:HAL_PCD_GetState 16 static +stm32f1xx_hal_pcd.c:2085:26:PCD_EP_ISR_Handler 64 static +stm32f1xx_hal_pcd.c:2323:17:HAL_PCD_EP_DB_Receive 40 static +stm32f1xx_hal_pcd.c:2404:26:HAL_PCD_EP_DB_Transmit 144 static diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.d b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.d new file mode 100644 index 0000000..2ab9397 --- /dev/null +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.d @@ -0,0 +1,89 @@ +Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o: \ + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \ + ../Core/Inc/stm32f1xx_hal_conf.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: + +../Core/Inc/stm32f1xx_hal_conf.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h: + +../Drivers/CMSIS/Include/core_cm3.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o new file mode 100644 index 0000000..4c642fb Binary files /dev/null and b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o differ diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.su b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.su new file mode 100644 index 0000000..2abcefa --- /dev/null +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.su @@ -0,0 +1,4 @@ +stm32f1xx_hal_pcd_ex.c:138:20:HAL_PCDEx_PMAConfig 32 static +stm32f1xx_hal_pcd_ex.c:181:13:HAL_PCDEx_SetConnectionState 16 static +stm32f1xx_hal_pcd_ex.c:198:13:HAL_PCDEx_LPM_Callback 16 static +stm32f1xx_hal_pcd_ex.c:215:13:HAL_PCDEx_BCD_Callback 16 static diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.d b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.d index 676aa2e..23b19a2 100644 --- a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.d +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.d @@ -19,9 +19,16 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: @@ -61,8 +68,22 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o index 511b4e4..1e57f4d 100644 Binary files a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o and b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o differ diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.d b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.d index 96582e0..963aeac 100644 --- a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.d +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.d @@ -19,9 +19,16 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: @@ -61,8 +68,22 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o index 5935249..f31133c 100644 Binary files a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o and b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o differ diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.d b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.d index f9eb822..863d9a6 100644 --- a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.d +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.d @@ -19,9 +19,16 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: @@ -61,8 +68,22 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o index 4136990..cfcf73b 100644 Binary files a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o and b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o differ diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.d b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.d index 9aafbfa..4ea27bf 100644 --- a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.d +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.d @@ -19,9 +19,16 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: @@ -61,8 +68,22 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o index 0baed9f..051dc97 100644 Binary files a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o and b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o differ diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.d b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.d index f48f2b2..240c8dc 100644 --- a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.d +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.d @@ -19,9 +19,16 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: @@ -61,8 +68,22 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o: \ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o index cfff5ce..653cacc 100644 Binary files a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o and b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o differ diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.d b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.d new file mode 100644 index 0000000..cc009f9 --- /dev/null +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.d @@ -0,0 +1,89 @@ +Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o: \ + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \ + ../Core/Inc/stm32f1xx_hal_conf.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: + +../Core/Inc/stm32f1xx_hal_conf.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h: + +../Drivers/CMSIS/Include/core_cm3.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o new file mode 100644 index 0000000..04463a2 Binary files /dev/null and b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o differ diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.su b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.su new file mode 100644 index 0000000..e4b7095 --- /dev/null +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.su @@ -0,0 +1,61 @@ +stm32f1xx_hal_uart.c:352:19:HAL_UART_Init 16 static +stm32f1xx_hal_uart.c:429:19:HAL_HalfDuplex_Init 16 static +stm32f1xx_hal_uart.c:504:19:HAL_LIN_Init 16 static +stm32f1xx_hal_uart.c:587:19:HAL_MultiProcessor_Init 24 static +stm32f1xx_hal_uart.c:666:19:HAL_UART_DeInit 16 static +stm32f1xx_hal_uart.c:711:13:HAL_UART_MspInit 16 static +stm32f1xx_hal_uart.c:726:13:HAL_UART_MspDeInit 16 static +stm32f1xx_hal_uart.c:1136:19:HAL_UART_Transmit 48 static +stm32f1xx_hal_uart.c:1224:19:HAL_UART_Receive 48 static +stm32f1xx_hal_uart.c:1315:19:HAL_UART_Transmit_IT 24 static +stm32f1xx_hal_uart.c:1360:19:HAL_UART_Receive_IT 24 static +stm32f1xx_hal_uart.c:1395:19:HAL_UART_Transmit_DMA 32 static +stm32f1xx_hal_uart.c:1463:19:HAL_UART_Receive_DMA 24 static +stm32f1xx_hal_uart.c:1493:19:HAL_UART_DMAPause 24 static +stm32f1xx_hal_uart.c:1530:19:HAL_UART_DMAResume 24 static +stm32f1xx_hal_uart.c:1566:19:HAL_UART_DMAStop 24 static +stm32f1xx_hal_uart.c:1621:19:HAL_UARTEx_ReceiveToIdle 40 static +stm32f1xx_hal_uart.c:1747:19:HAL_UARTEx_ReceiveToIdle_IT 32 static +stm32f1xx_hal_uart.c:1808:19:HAL_UARTEx_ReceiveToIdle_DMA 32 static +stm32f1xx_hal_uart.c:1865:19:HAL_UART_Abort 16 static +stm32f1xx_hal_uart.c:1954:19:HAL_UART_AbortTransmit 16 static +stm32f1xx_hal_uart.c:2005:19:HAL_UART_AbortReceive 16 static +stm32f1xx_hal_uart.c:2066:19:HAL_UART_Abort_IT 24 static +stm32f1xx_hal_uart.c:2201:19:HAL_UART_AbortTransmit_IT 16 static +stm32f1xx_hal_uart.c:2278:19:HAL_UART_AbortReceive_IT 16 static +stm32f1xx_hal_uart.c:2356:6:HAL_UART_IRQHandler 48 static +stm32f1xx_hal_uart.c:2586:13:HAL_UART_TxCpltCallback 16 static +stm32f1xx_hal_uart.c:2601:13:HAL_UART_TxHalfCpltCallback 16 static +stm32f1xx_hal_uart.c:2616:13:HAL_UART_RxCpltCallback 16 static +stm32f1xx_hal_uart.c:2631:13:HAL_UART_RxHalfCpltCallback 16 static +stm32f1xx_hal_uart.c:2646:13:HAL_UART_ErrorCallback 16 static +stm32f1xx_hal_uart.c:2660:13:HAL_UART_AbortCpltCallback 16 static +stm32f1xx_hal_uart.c:2675:13:HAL_UART_AbortTransmitCpltCallback 16 static +stm32f1xx_hal_uart.c:2690:13:HAL_UART_AbortReceiveCpltCallback 16 static +stm32f1xx_hal_uart.c:2707:13:HAL_UARTEx_RxEventCallback 16 static +stm32f1xx_hal_uart.c:2747:19:HAL_LIN_SendBreak 16 static +stm32f1xx_hal_uart.c:2774:19:HAL_MultiProcessor_EnterMuteMode 16 static +stm32f1xx_hal_uart.c:2801:19:HAL_MultiProcessor_ExitMuteMode 16 static +stm32f1xx_hal_uart.c:2828:19:HAL_HalfDuplex_EnableTransmitter 24 static +stm32f1xx_hal_uart.c:2863:19:HAL_HalfDuplex_EnableReceiver 24 static +stm32f1xx_hal_uart.c:2920:23:HAL_UART_GetState 24 static +stm32f1xx_hal_uart.c:2935:10:HAL_UART_GetError 16 static +stm32f1xx_hal_uart.c:2980:13:UART_DMATransmitCplt 24 static +stm32f1xx_hal_uart.c:3015:13:UART_DMATxHalfCplt 24 static +stm32f1xx_hal_uart.c:3034:13:UART_DMAReceiveCplt 24 static +stm32f1xx_hal_uart.c:3091:13:UART_DMARxHalfCplt 24 static +stm32f1xx_hal_uart.c:3126:13:UART_DMAError 24 static +stm32f1xx_hal_uart.c:3167:26:UART_WaitOnFlagUntilTimeout 24 static +stm32f1xx_hal_uart.c:3205:19:UART_Start_Receive_IT 24 static +stm32f1xx_hal_uart.c:3240:19:UART_Start_Receive_DMA 32 static +stm32f1xx_hal_uart.c:3290:13:UART_EndTxTransfer 16 static +stm32f1xx_hal_uart.c:3304:13:UART_EndRxTransfer 16 static +stm32f1xx_hal_uart.c:3328:13:UART_DMAAbortOnError 24 static +stm32f1xx_hal_uart.c:3352:13:UART_DMATxAbortCallback 24 static +stm32f1xx_hal_uart.c:3398:13:UART_DMARxAbortCallback 24 static +stm32f1xx_hal_uart.c:3444:13:UART_DMATxOnlyAbortCallback 24 static +stm32f1xx_hal_uart.c:3472:13:UART_DMARxOnlyAbortCallback 24 static +stm32f1xx_hal_uart.c:3498:26:UART_Transmit_IT 24 static +stm32f1xx_hal_uart.c:3538:26:UART_EndTransmit_IT 16 static +stm32f1xx_hal_uart.c:3563:26:UART_Receive_IT 32 static +stm32f1xx_hal_uart.c:3661:13:UART_SetConfig 24 static diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.d b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.d new file mode 100644 index 0000000..f022e3a --- /dev/null +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.d @@ -0,0 +1,89 @@ +Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o: \ + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \ + ../Core/Inc/stm32f1xx_hal_conf.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: + +../Core/Inc/stm32f1xx_hal_conf.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h: + +../Drivers/CMSIS/Include/core_cm3.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o new file mode 100644 index 0000000..bb81927 Binary files /dev/null and b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o differ diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.su b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.su new file mode 100644 index 0000000..c8a9989 --- /dev/null +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.su @@ -0,0 +1,27 @@ +stm32f1xx_ll_usb.c:1831:19:USB_CoreInit 16 static +stm32f1xx_ll_usb.c:1851:19:USB_EnableGlobalInt 24 static +stm32f1xx_ll_usb.c:1876:19:USB_DisableGlobalInt 24 static +stm32f1xx_ll_usb.c:1900:19:USB_SetCurrentMode 16 static +stm32f1xx_ll_usb.c:1921:19:USB_DevInit 16 static +stm32f1xx_ll_usb.c:1950:19:USB_FlushTxFifo 16 static +stm32f1xx_ll_usb.c:1969:19:USB_FlushRxFifo 16 static +stm32f1xx_ll_usb.c:1989:19:USB_ActivateEndpoint 112 static +stm32f1xx_ll_usb.c:2104:19:USB_DeactivateEndpoint 56 static +stm32f1xx_ll_usb.c:2160:19:USB_EPStartXfer 312 static +stm32f1xx_ll_usb.c:2421:19:USB_EPSetStall 24 static +stm32f1xx_ll_usb.c:2441:19:USB_EPClearStall 32 static +stm32f1xx_ll_usb.c:2473:19:USB_StopDevice 16 static +stm32f1xx_ll_usb.c:2494:20:USB_SetDevAddress 16 static +stm32f1xx_ll_usb.c:2510:20:USB_DevConnect 16 static +stm32f1xx_ll_usb.c:2528:20:USB_DevDisconnect 16 static +stm32f1xx_ll_usb.c:2546:11:USB_ReadInterrupts 24 static +stm32f1xx_ll_usb.c:2559:10:USB_ReadDevAllOutEpInterrupt 16 static +stm32f1xx_ll_usb.c:2575:10:USB_ReadDevAllInEpInterrupt 16 static +stm32f1xx_ll_usb.c:2593:10:USB_ReadDevOutEPInterrupt 16 static +stm32f1xx_ll_usb.c:2612:10:USB_ReadDevInEPInterrupt 16 static +stm32f1xx_ll_usb.c:2630:7:USB_ClearInterrupts 16 static +stm32f1xx_ll_usb.c:2647:19:USB_EP0_OutStart 16 static +stm32f1xx_ll_usb.c:2664:19:USB_ActivateRemoteWakeup 16 static +stm32f1xx_ll_usb.c:2676:19:USB_DeActivateRemoteWakeup 16 static +stm32f1xx_ll_usb.c:2691:6:USB_WritePMA 56 static +stm32f1xx_ll_usb.c:2725:6:USB_ReadPMA 48 static diff --git a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/subdir.mk b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/subdir.mk index 65eda60..e4c7778 100644 --- a/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/subdir.mk +++ b/stm32f103/Debug/Drivers/STM32F1xx_HAL_Driver/Src/subdir.mk @@ -6,6 +6,8 @@ # Add inputs and outputs from these tool invocations to the build variables C_SRCS += \ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c \ +../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c \ +../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c \ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c \ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c \ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c \ @@ -13,14 +15,21 @@ C_SRCS += \ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c \ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c \ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c \ +../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c \ +../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c \ +../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c \ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c \ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c \ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c \ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c \ -../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c +../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c \ +../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c \ +../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c OBJS += \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o \ +./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o \ +./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o \ @@ -28,14 +37,21 @@ OBJS += \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o \ +./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o \ +./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o \ +./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o +./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o \ +./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o \ +./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o C_DEPS += \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.d \ +./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.d \ +./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.d \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.d \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.d \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.d \ @@ -43,14 +59,26 @@ C_DEPS += \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.d \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.d \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.d \ +./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.d \ +./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.d \ +./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.d \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.d \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.d \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.d \ ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.d \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.d +./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.d \ +./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.d \ +./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.d # Each subdirectory must supply rules for building sources it contributes Drivers/STM32F1xx_HAL_Driver/Src/%.o: ../Drivers/STM32F1xx_HAL_Driver/Src/%.c Drivers/STM32F1xx_HAL_Driver/Src/subdir.mk - arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" + arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" + +clean: clean-Drivers-2f-STM32F1xx_HAL_Driver-2f-Src + +clean-Drivers-2f-STM32F1xx_HAL_Driver-2f-Src: + -$(RM) ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + +.PHONY: clean-Drivers-2f-STM32F1xx_HAL_Driver-2f-Src diff --git a/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/subdir.mk b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/subdir.mk new file mode 100644 index 0000000..f890116 --- /dev/null +++ b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/subdir.mk @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (9-2020-q2-update) +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.c + +OBJS += \ +./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + +C_DEPS += \ +./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.d + + +# Each subdirectory must supply rules for building sources it contributes +Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/%.o: ../Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/%.c Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/subdir.mk + arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" + +clean: clean-Middlewares-2f-ST-2f-STM32_USB_Device_Library-2f-Class-2f-DFU-2f-Src + +clean-Middlewares-2f-ST-2f-STM32_USB_Device_Library-2f-Class-2f-DFU-2f-Src: + -$(RM) ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.d ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + +.PHONY: clean-Middlewares-2f-ST-2f-STM32_USB_Device_Library-2f-Class-2f-DFU-2f-Src + diff --git a/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.d b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.d new file mode 100644 index 0000000..496959c --- /dev/null +++ b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.d @@ -0,0 +1,115 @@ +Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o: \ + ../Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.c \ + ../Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc/usbd_dfu.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \ + ../USB_DEVICE/Target/usbd_conf.h ../Core/Inc/main.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \ + ../Core/Inc/stm32f1xx_hal_conf.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h + +../Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc/usbd_dfu.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h: + +../USB_DEVICE/Target/usbd_conf.h: + +../Core/Inc/main.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: + +../Core/Inc/stm32f1xx_hal_conf.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h: + +../Drivers/CMSIS/Include/core_cm3.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h: diff --git a/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o new file mode 100644 index 0000000..c695a6e Binary files /dev/null and b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o differ diff --git a/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.su b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.su new file mode 100644 index 0000000..ff6385a --- /dev/null +++ b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.su @@ -0,0 +1,23 @@ +core_cm3.h:1762:34:__NVIC_SystemReset 4 static,ignoring_inline_asm +usbd_dfu.c:278:17:USBD_DFU_Init 24 static +usbd_dfu.c:325:17:USBD_DFU_DeInit 24 static +usbd_dfu.c:357:17:USBD_DFU_Setup 32 static +usbd_dfu.c:490:18:USBD_DFU_GetCfgDesc 16 static +usbd_dfu.c:503:17:USBD_DFU_DataIn 16 static +usbd_dfu.c:516:17:USBD_DFU_EP0_RxReady 16 static +usbd_dfu.c:527:17:USBD_DFU_EP0_TxReady 32 static +usbd_dfu.c:621:17:USBD_DFU_SOF 16 static +usbd_dfu.c:633:17:USBD_DFU_IsoINIncomplete 16 static +usbd_dfu.c:645:17:USBD_DFU_IsoOutIncomplete 16 static +usbd_dfu.c:657:17:USBD_DFU_DataOut 16 static +usbd_dfu.c:670:18:USBD_DFU_GetDeviceQualifierDesc 16 static +usbd_dfu.c:685:17:USBD_DFU_GetUsrStringDesc 24 static +usbd_dfu.c:707:10:USBD_DFU_RegisterMedia 16 static +usbd_dfu.c:727:13:DFU_Detach 24 static +usbd_dfu.c:770:13:DFU_Download 24 static +usbd_dfu.c:828:13:DFU_Upload 32 static +usbd_dfu.c:922:13:DFU_GetStatus 24 static +usbd_dfu.c:999:13:DFU_ClearStatus 24 static +usbd_dfu.c:1034:13:DFU_GetState 24 static +usbd_dfu.c:1050:13:DFU_Abort 24 static +usbd_dfu.c:1079:13:DFU_Leave 24 static diff --git a/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/subdir.mk b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/subdir.mk new file mode 100644 index 0000000..cf09fc6 --- /dev/null +++ b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/subdir.mk @@ -0,0 +1,33 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (9-2020-q2-update) +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c \ +../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c \ +../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c + +OBJS += \ +./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o \ +./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o \ +./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + +C_DEPS += \ +./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.d \ +./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.d \ +./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.d + + +# Each subdirectory must supply rules for building sources it contributes +Middlewares/ST/STM32_USB_Device_Library/Core/Src/%.o: ../Middlewares/ST/STM32_USB_Device_Library/Core/Src/%.c Middlewares/ST/STM32_USB_Device_Library/Core/Src/subdir.mk + arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" + +clean: clean-Middlewares-2f-ST-2f-STM32_USB_Device_Library-2f-Core-2f-Src + +clean-Middlewares-2f-ST-2f-STM32_USB_Device_Library-2f-Core-2f-Src: + -$(RM) ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + +.PHONY: clean-Middlewares-2f-ST-2f-STM32_USB_Device_Library-2f-Core-2f-Src + diff --git a/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.d b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.d new file mode 100644 index 0000000..1f310d7 --- /dev/null +++ b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.d @@ -0,0 +1,109 @@ +Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o: \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \ + ../USB_DEVICE/Target/usbd_conf.h ../Core/Inc/main.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \ + ../Core/Inc/stm32f1xx_hal_conf.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h: + +../USB_DEVICE/Target/usbd_conf.h: + +../Core/Inc/main.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: + +../Core/Inc/stm32f1xx_hal_conf.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h: + +../Drivers/CMSIS/Include/core_cm3.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h: diff --git a/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o new file mode 100644 index 0000000..89f9b48 Binary files /dev/null and b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o differ diff --git a/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.su b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.su new file mode 100644 index 0000000..9c79411 --- /dev/null +++ b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.su @@ -0,0 +1,20 @@ +usbd_core.c:89:20:USBD_Init 24 static +usbd_core.c:128:20:USBD_DeInit 16 static +usbd_core.c:152:21:USBD_RegisterClass 24 static +usbd_core.c:178:21:USBD_Start 16 static +usbd_core.c:192:21:USBD_Stop 16 static +usbd_core.c:209:21:USBD_RunTestMode 16 static +usbd_core.c:225:20:USBD_SetClassConfig 24 static +usbd_core.c:248:20:USBD_ClrClassConfig 16 static +usbd_core.c:263:20:USBD_LL_SetupStage 16 static +usbd_core.c:300:20:USBD_LL_DataOutStage 32 static +usbd_core.c:361:20:USBD_LL_DataInStage 32 static +usbd_core.c:442:20:USBD_LL_Reset 16 static +usbd_core.c:476:20:USBD_LL_SetSpeed 16 static +usbd_core.c:491:20:USBD_LL_Suspend 16 static +usbd_core.c:506:20:USBD_LL_Resume 16 static +usbd_core.c:523:20:USBD_LL_SOF 16 static +usbd_core.c:542:20:USBD_LL_IsoINIncomplete 16 static +usbd_core.c:558:20:USBD_LL_IsoOUTIncomplete 16 static +usbd_core.c:574:20:USBD_LL_DevConnected 16 static +usbd_core.c:588:20:USBD_LL_DevDisconnected 16 static diff --git a/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.d b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.d new file mode 100644 index 0000000..9ac37de --- /dev/null +++ b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.d @@ -0,0 +1,112 @@ +Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o: \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \ + ../USB_DEVICE/Target/usbd_conf.h ../Core/Inc/main.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \ + ../Core/Inc/stm32f1xx_hal_conf.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h: + +../USB_DEVICE/Target/usbd_conf.h: + +../Core/Inc/main.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: + +../Core/Inc/stm32f1xx_hal_conf.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h: + +../Drivers/CMSIS/Include/core_cm3.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h: diff --git a/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o new file mode 100644 index 0000000..36b6dfc Binary files /dev/null and b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o differ diff --git a/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.su b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.su new file mode 100644 index 0000000..d38865f --- /dev/null +++ b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.su @@ -0,0 +1,14 @@ +usbd_ctlreq.c:114:21:USBD_StdDevReq 24 static +usbd_ctlreq.c:178:21:USBD_StdItfReq 24 static +usbd_ctlreq.c:230:21:USBD_StdEPReq 24 static +usbd_ctlreq.c:405:13:USBD_GetDescriptor 24 static +usbd_ctlreq.c:595:13:USBD_SetAddress 24 static +usbd_ctlreq.c:637:13:USBD_SetConfig 16 static +usbd_ctlreq.c:712:13:USBD_GetConfig 16 static +usbd_ctlreq.c:746:13:USBD_GetStatus 16 static +usbd_ctlreq.c:787:13:USBD_SetFeature 16 static +usbd_ctlreq.c:805:13:USBD_ClrFeature 16 static +usbd_ctlreq.c:834:6:USBD_ParseSetupRequest 16 static +usbd_ctlreq.c:852:6:USBD_CtlError 16 static +usbd_ctlreq.c:868:6:USBD_GetString 32 static +usbd_ctlreq.c:892:16:USBD_GetLen 24 static diff --git a/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.d b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.d new file mode 100644 index 0000000..8e6c6bb --- /dev/null +++ b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.d @@ -0,0 +1,109 @@ +Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o: \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \ + ../USB_DEVICE/Target/usbd_conf.h ../Core/Inc/main.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \ + ../Core/Inc/stm32f1xx_hal_conf.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h: + +../USB_DEVICE/Target/usbd_conf.h: + +../Core/Inc/main.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: + +../Core/Inc/stm32f1xx_hal_conf.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h: + +../Drivers/CMSIS/Include/core_cm3.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h: diff --git a/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o new file mode 100644 index 0000000..b24876d Binary files /dev/null and b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o differ diff --git a/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.su b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.su new file mode 100644 index 0000000..c95025c --- /dev/null +++ b/stm32f103/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.su @@ -0,0 +1,7 @@ +usbd_ioreq.c:87:20:USBD_CtlSendData 24 static +usbd_ioreq.c:109:20:USBD_CtlContinueSendData 24 static +usbd_ioreq.c:126:20:USBD_CtlPrepareRx 24 static +usbd_ioreq.c:148:20:USBD_CtlContinueRx 24 static +usbd_ioreq.c:162:20:USBD_CtlSendStatus 16 static +usbd_ioreq.c:179:20:USBD_CtlReceiveStatus 16 static +usbd_ioreq.c:197:10:USBD_GetRxCount 16 static diff --git a/stm32f103/Debug/USB_DEVICE/App/subdir.mk b/stm32f103/Debug/USB_DEVICE/App/subdir.mk new file mode 100644 index 0000000..8571c5b --- /dev/null +++ b/stm32f103/Debug/USB_DEVICE/App/subdir.mk @@ -0,0 +1,33 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (9-2020-q2-update) +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../USB_DEVICE/App/usb_device.c \ +../USB_DEVICE/App/usbd_desc.c \ +../USB_DEVICE/App/usbd_dfu_if.c + +OBJS += \ +./USB_DEVICE/App/usb_device.o \ +./USB_DEVICE/App/usbd_desc.o \ +./USB_DEVICE/App/usbd_dfu_if.o + +C_DEPS += \ +./USB_DEVICE/App/usb_device.d \ +./USB_DEVICE/App/usbd_desc.d \ +./USB_DEVICE/App/usbd_dfu_if.d + + +# Each subdirectory must supply rules for building sources it contributes +USB_DEVICE/App/%.o: ../USB_DEVICE/App/%.c USB_DEVICE/App/subdir.mk + arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" + +clean: clean-USB_DEVICE-2f-App + +clean-USB_DEVICE-2f-App: + -$(RM) ./USB_DEVICE/App/usb_device.d ./USB_DEVICE/App/usb_device.o ./USB_DEVICE/App/usbd_desc.d ./USB_DEVICE/App/usbd_desc.o ./USB_DEVICE/App/usbd_dfu_if.d ./USB_DEVICE/App/usbd_dfu_if.o + +.PHONY: clean-USB_DEVICE-2f-App + diff --git a/stm32f103/Debug/USB_DEVICE/App/usb_device.d b/stm32f103/Debug/USB_DEVICE/App/usb_device.d new file mode 100644 index 0000000..8f2153a --- /dev/null +++ b/stm32f103/Debug/USB_DEVICE/App/usb_device.d @@ -0,0 +1,126 @@ +USB_DEVICE/App/usb_device.o: ../USB_DEVICE/App/usb_device.c \ + ../USB_DEVICE/App/usb_device.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \ + ../Core/Inc/stm32f1xx_hal_conf.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \ + ../USB_DEVICE/Target/usbd_conf.h ../Core/Inc/main.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h \ + ../USB_DEVICE/App/usbd_desc.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc/usbd_dfu.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ + ../USB_DEVICE/App/usbd_dfu_if.h + +../USB_DEVICE/App/usb_device.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h: + +../Drivers/CMSIS/Include/core_cm3.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: + +../Core/Inc/stm32f1xx_hal_conf.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h: + +../USB_DEVICE/Target/usbd_conf.h: + +../Core/Inc/main.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h: + +../USB_DEVICE/App/usbd_desc.h: + +../Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc/usbd_dfu.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: + +../USB_DEVICE/App/usbd_dfu_if.h: diff --git a/stm32f103/Debug/USB_DEVICE/App/usb_device.o b/stm32f103/Debug/USB_DEVICE/App/usb_device.o new file mode 100644 index 0000000..f33994a Binary files /dev/null and b/stm32f103/Debug/USB_DEVICE/App/usb_device.o differ diff --git a/stm32f103/Debug/USB_DEVICE/App/usb_device.su b/stm32f103/Debug/USB_DEVICE/App/usb_device.su new file mode 100644 index 0000000..817cd0d --- /dev/null +++ b/stm32f103/Debug/USB_DEVICE/App/usb_device.su @@ -0,0 +1 @@ +usb_device.c:65:6:MX_USB_DEVICE_Init 8 static diff --git a/stm32f103/Debug/USB_DEVICE/App/usbd_desc.d b/stm32f103/Debug/USB_DEVICE/App/usbd_desc.d new file mode 100644 index 0000000..704879d --- /dev/null +++ b/stm32f103/Debug/USB_DEVICE/App/usbd_desc.d @@ -0,0 +1,114 @@ +USB_DEVICE/App/usbd_desc.o: ../USB_DEVICE/App/usbd_desc.c \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \ + ../USB_DEVICE/Target/usbd_conf.h ../Core/Inc/main.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \ + ../Core/Inc/stm32f1xx_hal_conf.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h \ + ../USB_DEVICE/App/usbd_desc.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h: + +../USB_DEVICE/Target/usbd_conf.h: + +../Core/Inc/main.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: + +../Core/Inc/stm32f1xx_hal_conf.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h: + +../Drivers/CMSIS/Include/core_cm3.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h: + +../USB_DEVICE/App/usbd_desc.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h: diff --git a/stm32f103/Debug/USB_DEVICE/App/usbd_desc.o b/stm32f103/Debug/USB_DEVICE/App/usbd_desc.o new file mode 100644 index 0000000..60517da Binary files /dev/null and b/stm32f103/Debug/USB_DEVICE/App/usbd_desc.o differ diff --git a/stm32f103/Debug/USB_DEVICE/App/usbd_desc.su b/stm32f103/Debug/USB_DEVICE/App/usbd_desc.su new file mode 100644 index 0000000..046c2b6 --- /dev/null +++ b/stm32f103/Debug/USB_DEVICE/App/usbd_desc.su @@ -0,0 +1,9 @@ +usbd_desc.c:223:11:USBD_FS_DeviceDescriptor 16 static +usbd_desc.c:236:11:USBD_FS_LangIDStrDescriptor 16 static +usbd_desc.c:249:11:USBD_FS_ProductStrDescriptor 16 static +usbd_desc.c:268:11:USBD_FS_ManufacturerStrDescriptor 16 static +usbd_desc.c:281:11:USBD_FS_SerialStrDescriptor 16 static +usbd_desc.c:301:11:USBD_FS_ConfigStrDescriptor 16 static +usbd_desc.c:320:11:USBD_FS_InterfaceStrDescriptor 16 static +usbd_desc.c:338:13:Get_SerialNum 24 static +usbd_desc.c:362:13:IntToUnicode 32 static diff --git a/stm32f103/Debug/USB_DEVICE/App/usbd_dfu_if.d b/stm32f103/Debug/USB_DEVICE/App/usbd_dfu_if.d new file mode 100644 index 0000000..d2dc584 --- /dev/null +++ b/stm32f103/Debug/USB_DEVICE/App/usbd_dfu_if.d @@ -0,0 +1,114 @@ +USB_DEVICE/App/usbd_dfu_if.o: ../USB_DEVICE/App/usbd_dfu_if.c \ + ../USB_DEVICE/App/usbd_dfu_if.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc/usbd_dfu.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \ + ../USB_DEVICE/Target/usbd_conf.h ../Core/Inc/main.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \ + ../Core/Inc/stm32f1xx_hal_conf.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h + +../USB_DEVICE/App/usbd_dfu_if.h: + +../Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc/usbd_dfu.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h: + +../USB_DEVICE/Target/usbd_conf.h: + +../Core/Inc/main.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: + +../Core/Inc/stm32f1xx_hal_conf.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h: + +../Drivers/CMSIS/Include/core_cm3.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h: diff --git a/stm32f103/Debug/USB_DEVICE/App/usbd_dfu_if.o b/stm32f103/Debug/USB_DEVICE/App/usbd_dfu_if.o new file mode 100644 index 0000000..2d240e7 Binary files /dev/null and b/stm32f103/Debug/USB_DEVICE/App/usbd_dfu_if.o differ diff --git a/stm32f103/Debug/USB_DEVICE/App/usbd_dfu_if.su b/stm32f103/Debug/USB_DEVICE/App/usbd_dfu_if.su new file mode 100644 index 0000000..f7d66bc --- /dev/null +++ b/stm32f103/Debug/USB_DEVICE/App/usbd_dfu_if.su @@ -0,0 +1,6 @@ +usbd_dfu_if.c:155:10:MEM_If_Init_FS 4 static +usbd_dfu_if.c:166:10:MEM_If_DeInit_FS 4 static +usbd_dfu_if.c:178:10:MEM_If_Erase_FS 16 static +usbd_dfu_if.c:193:10:MEM_If_Write_FS 24 static +usbd_dfu_if.c:207:10:MEM_If_Read_FS 24 static +usbd_dfu_if.c:222:10:MEM_If_GetStatus_FS 24 static diff --git a/stm32f103/Debug/USB_DEVICE/Target/subdir.mk b/stm32f103/Debug/USB_DEVICE/Target/subdir.mk new file mode 100644 index 0000000..83678cc --- /dev/null +++ b/stm32f103/Debug/USB_DEVICE/Target/subdir.mk @@ -0,0 +1,27 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (9-2020-q2-update) +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../USB_DEVICE/Target/usbd_conf.c + +OBJS += \ +./USB_DEVICE/Target/usbd_conf.o + +C_DEPS += \ +./USB_DEVICE/Target/usbd_conf.d + + +# Each subdirectory must supply rules for building sources it contributes +USB_DEVICE/Target/%.o: ../USB_DEVICE/Target/%.c USB_DEVICE/Target/subdir.mk + arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" + +clean: clean-USB_DEVICE-2f-Target + +clean-USB_DEVICE-2f-Target: + -$(RM) ./USB_DEVICE/Target/usbd_conf.d ./USB_DEVICE/Target/usbd_conf.o + +.PHONY: clean-USB_DEVICE-2f-Target + diff --git a/stm32f103/Debug/USB_DEVICE/Target/usbd_conf.d b/stm32f103/Debug/USB_DEVICE/Target/usbd_conf.d new file mode 100644 index 0000000..cdfbf87 --- /dev/null +++ b/stm32f103/Debug/USB_DEVICE/Target/usbd_conf.d @@ -0,0 +1,117 @@ +USB_DEVICE/Target/usbd_conf.o: ../USB_DEVICE/Target/usbd_conf.c \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \ + ../Core/Inc/stm32f1xx_hal_conf.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \ + ../USB_DEVICE/Target/usbd_conf.h ../Core/Inc/main.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc/usbd_dfu.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h: + +../Drivers/CMSIS/Include/core_cm3.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: + +../Core/Inc/stm32f1xx_hal_conf.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_i2c.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: + +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h: + +../USB_DEVICE/Target/usbd_conf.h: + +../Core/Inc/main.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h: + +../Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc/usbd_dfu.h: + +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: diff --git a/stm32f103/Debug/USB_DEVICE/Target/usbd_conf.o b/stm32f103/Debug/USB_DEVICE/Target/usbd_conf.o new file mode 100644 index 0000000..d3792aa Binary files /dev/null and b/stm32f103/Debug/USB_DEVICE/Target/usbd_conf.o differ diff --git a/stm32f103/Debug/USB_DEVICE/Target/usbd_conf.su b/stm32f103/Debug/USB_DEVICE/Target/usbd_conf.su new file mode 100644 index 0000000..b46e8d8 --- /dev/null +++ b/stm32f103/Debug/USB_DEVICE/Target/usbd_conf.su @@ -0,0 +1,32 @@ +usbd_conf.c:70:6:HAL_PCD_MspInit 24 static +usbd_conf.c:89:6:HAL_PCD_MspDeInit 16 static +usbd_conf.c:116:6:HAL_PCD_SetupStageCallback 16 static +usbd_conf.c:131:6:HAL_PCD_DataOutStageCallback 16 static +usbd_conf.c:146:6:HAL_PCD_DataInStageCallback 16 static +usbd_conf.c:160:6:HAL_PCD_SOFCallback 16 static +usbd_conf.c:174:6:HAL_PCD_ResetCallback 24 static +usbd_conf.c:199:6:HAL_PCD_SuspendCallback 16 static +usbd_conf.c:223:6:HAL_PCD_ResumeCallback 16 static +usbd_conf.c:241:6:HAL_PCD_ISOOUTIncompleteCallback 16 static +usbd_conf.c:256:6:HAL_PCD_ISOINIncompleteCallback 16 static +usbd_conf.c:270:6:HAL_PCD_ConnectCallback 16 static +usbd_conf.c:284:6:HAL_PCD_DisconnectCallback 16 static +usbd_conf.c:299:20:USBD_LL_Init 16 static +usbd_conf.c:344:20:USBD_LL_DeInit 24 static +usbd_conf.c:361:20:USBD_LL_Start 24 static +usbd_conf.c:378:20:USBD_LL_Stop 24 static +usbd_conf.c:398:20:USBD_LL_OpenEP 24 static +usbd_conf.c:416:20:USBD_LL_CloseEP 24 static +usbd_conf.c:434:20:USBD_LL_FlushEP 24 static +usbd_conf.c:452:20:USBD_LL_StallEP 24 static +usbd_conf.c:470:20:USBD_LL_ClearStallEP 24 static +usbd_conf.c:488:9:USBD_LL_IsStallEP 24 static +usbd_conf.c:508:20:USBD_LL_SetUSBAddress 24 static +usbd_conf.c:528:20:USBD_LL_Transmit 32 static +usbd_conf.c:548:20:USBD_LL_PrepareReceive 32 static +usbd_conf.c:566:10:USBD_LL_GetRxDataSize 16 static +usbd_conf.c:576:6:USBD_LL_Delay 16 static +usbd_conf.c:586:7:USBD_static_malloc 16 static +usbd_conf.c:597:6:USBD_static_free 16 static +usbd_conf.c:611:6:HAL_PCDEx_SetConnectionState 16 static +usbd_conf.c:633:20:USBD_Get_USB_Status 24 static diff --git a/stm32f103/Debug/makefile b/stm32f103/Debug/makefile index 9346de9..2d689cf 100644 --- a/stm32f103/Debug/makefile +++ b/stm32f103/Debug/makefile @@ -9,10 +9,13 @@ RM := rm -rf # All of the sources participating in the build are defined here -include sources.mk +-include USB_DEVICE/Target/subdir.mk +-include USB_DEVICE/App/subdir.mk +-include Middlewares/ST/STM32_USB_Device_Library/Core/Src/subdir.mk +-include Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/subdir.mk -include Drivers/STM32F1xx_HAL_Driver/Src/subdir.mk -include Core/Startup/subdir.mk -include Core/Src/subdir.mk --include subdir.mk -include objects.mk ifneq ($(MAKECMDGOALS),clean) @@ -61,8 +64,8 @@ all: main-build main-build: stm32f103.elf secondary-outputs # Tool invocations -stm32f103.elf: $(OBJS) $(USER_OBJS) /Users/wuwenfeng/Documents/morse_code_trainer/stm32f103/STM32F103C8TX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS) - arm-none-eabi-gcc -o "stm32f103.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m3 -T"/Users/wuwenfeng/Documents/morse_code_trainer/stm32f103/STM32F103C8TX_FLASH.ld" --specs=nosys.specs -Wl,-Map="stm32f103.map" -Wl,--gc-sections -static --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +stm32f103.elf: $(OBJS) $(USER_OBJS) C:\Users\wuwen\Desktop\morse_code_trainer\stm32f103\STM32F103C8TX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-gcc -o "stm32f103.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m3 -T"C:\Users\wuwen\Desktop\morse_code_trainer\stm32f103\STM32F103C8TX_FLASH.ld" --specs=nosys.specs -Wl,-Map="stm32f103.map" -Wl,--gc-sections -static --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group @echo 'Finished building target: $@' @echo ' ' @@ -83,7 +86,7 @@ stm32f103.bin: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) # Other Targets clean: - -$(RM) $(SIZE_OUTPUT)$(OBJDUMP_LIST)$(EXECUTABLES)$(OBJS)$(S_DEPS)$(S_UPPER_DEPS)$(C_DEPS)$(OBJCOPY_BIN) stm32f103.elf + -$(RM) default.size.stdout stm32f103.bin stm32f103.elf stm32f103.list -@echo ' ' secondary-outputs: $(SIZE_OUTPUT) $(OBJDUMP_LIST) $(OBJCOPY_BIN) @@ -95,6 +98,6 @@ fail-specified-linker-script-missing: warn-no-linker-script-specified: @echo 'Warning: No linker script specified. Check the linker settings in the build configuration.' -.PHONY: all clean dependents fail-specified-linker-script-missing warn-no-linker-script-specified +.PHONY: all clean dependents main-build fail-specified-linker-script-missing warn-no-linker-script-specified -include ../makefile.targets diff --git a/stm32f103/Debug/objects.list b/stm32f103/Debug/objects.list index ed9dee4..976fd9f 100644 --- a/stm32f103/Debug/objects.list +++ b/stm32f103/Debug/objects.list @@ -6,6 +6,8 @@ "./Core/Src/system_stm32f1xx.o" "./Core/Startup/startup_stm32f103c8tx.o" "./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o" "./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o" "./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o" "./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o" @@ -13,8 +15,21 @@ "./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o" "./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o" "./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o" "./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o" "./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o" "./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o" "./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o" "./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o" +"./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o" +"./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o" +"./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o" +"./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o" +"./USB_DEVICE/App/usb_device.o" +"./USB_DEVICE/App/usbd_desc.o" +"./USB_DEVICE/App/usbd_dfu_if.o" +"./USB_DEVICE/Target/usbd_conf.o" diff --git a/stm32f103/Debug/sources.mk b/stm32f103/Debug/sources.mk index 0b21f01..8abaa8f 100644 --- a/stm32f103/Debug/sources.mk +++ b/stm32f103/Debug/sources.mk @@ -23,4 +23,8 @@ SUBDIRS := \ Core/Src \ Core/Startup \ Drivers/STM32F1xx_HAL_Driver/Src \ +Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src \ +Middlewares/ST/STM32_USB_Device_Library/Core/Src \ +USB_DEVICE/App \ +USB_DEVICE/Target \ diff --git a/stm32f103/Debug/stm32f103.bin b/stm32f103/Debug/stm32f103.bin index 4057ade..cf89db7 100755 Binary files a/stm32f103/Debug/stm32f103.bin and b/stm32f103/Debug/stm32f103.bin differ diff --git a/stm32f103/Debug/stm32f103.elf b/stm32f103/Debug/stm32f103.elf index 02f95d2..20ef248 100755 Binary files a/stm32f103/Debug/stm32f103.elf and b/stm32f103/Debug/stm32f103.elf differ diff --git a/stm32f103/Debug/stm32f103.list b/stm32f103/Debug/stm32f103.list index ec410f8..3387a61 100644 --- a/stm32f103/Debug/stm32f103.list +++ b/stm32f103/Debug/stm32f103.list @@ -5,45 +5,45 @@ Sections: Idx Name Size VMA LMA File off Algn 0 .isr_vector 0000010c 08000000 08000000 00010000 2**0 CONTENTS, ALLOC, LOAD, READONLY, DATA - 1 .text 00000d1c 0800010c 0800010c 0001010c 2**2 + 1 .text 00007ec0 0800010c 0800010c 0001010c 2**2 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .rodata 00000020 08000e28 08000e28 00010e28 2**2 + 2 .rodata 000000d8 08007fcc 08007fcc 00017fcc 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 3 .ARM.extab 00000000 08000e48 08000e48 0002000c 2**0 + 3 .ARM.extab 00000000 080080a4 080080a4 000200dc 2**0 CONTENTS - 4 .ARM 00000000 08000e48 08000e48 0002000c 2**0 + 4 .ARM 00000000 080080a4 080080a4 000200dc 2**0 CONTENTS - 5 .preinit_array 00000000 08000e48 08000e48 0002000c 2**0 + 5 .preinit_array 00000000 080080a4 080080a4 000200dc 2**0 CONTENTS, ALLOC, LOAD, DATA - 6 .init_array 00000004 08000e48 08000e48 00010e48 2**2 + 6 .init_array 00000004 080080a4 080080a4 000180a4 2**2 CONTENTS, ALLOC, LOAD, DATA - 7 .fini_array 00000004 08000e4c 08000e4c 00010e4c 2**2 + 7 .fini_array 00000004 080080a8 080080a8 000180a8 2**2 CONTENTS, ALLOC, LOAD, DATA - 8 .data 0000000c 20000000 08000e50 00020000 2**2 + 8 .data 000000dc 20000000 080080ac 00020000 2**2 CONTENTS, ALLOC, LOAD, DATA - 9 .bss 00000020 2000000c 08000e5c 0002000c 2**2 + 9 .bss 00000db8 200000dc 08008188 000200dc 2**2 ALLOC - 10 ._user_heap_stack 00000604 2000002c 08000e5c 0002002c 2**0 + 10 ._user_heap_stack 00000604 20000e94 08008188 00020e94 2**0 ALLOC - 11 .ARM.attributes 00000029 00000000 00000000 0002000c 2**0 + 11 .ARM.attributes 00000029 00000000 00000000 000200dc 2**0 CONTENTS, READONLY - 12 .debug_info 00002816 00000000 00000000 00020035 2**0 + 12 .debug_info 00017791 00000000 00000000 00020105 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 13 .debug_abbrev 00000c75 00000000 00000000 0002284b 2**0 + 13 .debug_abbrev 00003424 00000000 00000000 00037896 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 14 .debug_aranges 00000378 00000000 00000000 000234c0 2**3 + 14 .debug_aranges 00001080 00000000 00000000 0003acc0 2**3 CONTENTS, READONLY, DEBUGGING, OCTETS - 15 .debug_ranges 00000300 00000000 00000000 00023838 2**3 + 15 .debug_ranges 00000f60 00000000 00000000 0003bd40 2**3 CONTENTS, READONLY, DEBUGGING, OCTETS - 16 .debug_macro 000156ee 00000000 00000000 00023b38 2**0 + 16 .debug_macro 0001aad7 00000000 00000000 0003cca0 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 17 .debug_line 00003d01 00000000 00000000 00039226 2**0 + 17 .debug_line 00015028 00000000 00000000 00057777 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 18 .debug_str 0007b704 00000000 00000000 0003cf27 2**0 + 18 .debug_str 0008e9a3 00000000 00000000 0006c79f 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 19 .comment 00000053 00000000 00000000 000b862b 2**0 + 19 .comment 00000053 00000000 00000000 000fb142 2**0 CONTENTS, READONLY - 20 .debug_frame 00000be8 00000000 00000000 000b8680 2**2 + 20 .debug_frame 000043a8 00000000 00000000 000fb198 2**2 CONTENTS, READONLY, DEBUGGING, OCTETS Disassembly of section .text: @@ -60,9 +60,9 @@ Disassembly of section .text: 800011e: 2301 movs r3, #1 8000120: 7023 strb r3, [r4, #0] 8000122: bd10 pop {r4, pc} - 8000124: 2000000c .word 0x2000000c + 8000124: 200000dc .word 0x200000dc 8000128: 00000000 .word 0x00000000 - 800012c: 08000e10 .word 0x08000e10 + 800012c: 08007fb4 .word 0x08007fb4 08000130 : 8000130: b508 push {r3, lr} @@ -73,8 +73,8 @@ Disassembly of section .text: 800013a: f3af 8000 nop.w 800013e: bd08 pop {r3, pc} 8000140: 00000000 .word 0x00000000 - 8000144: 20000010 .word 0x20000010 - 8000148: 08000e10 .word 0x08000e10 + 8000144: 200000e0 .word 0x200000e0 + 8000148: 08007fb4 .word 0x08007fb4 0800014c
: /** @@ -91,2516 +91,20144 @@ int main(void) /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); - 8000150: f000 f904 bl 800035c + 8000150: f000 faaa bl 80006a8 /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); - 8000154: f000 f803 bl 800015e + 8000154: f000 f80b bl 800016e /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); - 8000158: f000 f846 bl 80001e8 + 8000158: f000 f8fc bl 8000354 + MX_ADC1_Init(); + 800015c: f000 f864 bl 8000228 + MX_I2C1_Init(); + 8000160: f000 f8a0 bl 80002a4 + MX_USART1_UART_Init(); + 8000164: f000 f8cc bl 8000300 + MX_USB_DEVICE_Init(); + 8000168: f007 fb00 bl 800776c /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) - 800015c: e7fe b.n 800015c + 800016c: e7fe b.n 800016c -0800015e : +0800016e : /** * @brief System Clock Configuration * @retval None */ void SystemClock_Config(void) { - 800015e: b580 push {r7, lr} - 8000160: b090 sub sp, #64 ; 0x40 - 8000162: af00 add r7, sp, #0 + 800016e: b580 push {r7, lr} + 8000170: b094 sub sp, #80 ; 0x50 + 8000172: af00 add r7, sp, #0 RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - 8000164: f107 0318 add.w r3, r7, #24 - 8000168: 2228 movs r2, #40 ; 0x28 - 800016a: 2100 movs r1, #0 - 800016c: 4618 mov r0, r3 - 800016e: f000 fe47 bl 8000e00 + 8000174: f107 0328 add.w r3, r7, #40 ; 0x28 + 8000178: 2228 movs r2, #40 ; 0x28 + 800017a: 2100 movs r1, #0 + 800017c: 4618 mov r0, r3 + 800017e: f007 ff11 bl 8007fa4 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - 8000172: 1d3b adds r3, r7, #4 - 8000174: 2200 movs r2, #0 - 8000176: 601a str r2, [r3, #0] - 8000178: 605a str r2, [r3, #4] - 800017a: 609a str r2, [r3, #8] - 800017c: 60da str r2, [r3, #12] - 800017e: 611a str r2, [r3, #16] + 8000182: f107 0314 add.w r3, r7, #20 + 8000186: 2200 movs r2, #0 + 8000188: 601a str r2, [r3, #0] + 800018a: 605a str r2, [r3, #4] + 800018c: 609a str r2, [r3, #8] + 800018e: 60da str r2, [r3, #12] + 8000190: 611a str r2, [r3, #16] + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + 8000192: 1d3b adds r3, r7, #4 + 8000194: 2200 movs r2, #0 + 8000196: 601a str r2, [r3, #0] + 8000198: 605a str r2, [r3, #4] + 800019a: 609a str r2, [r3, #8] + 800019c: 60da str r2, [r3, #12] /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; - 8000180: 2301 movs r3, #1 - 8000182: 61bb str r3, [r7, #24] + 800019e: 2301 movs r3, #1 + 80001a0: 62bb str r3, [r7, #40] ; 0x28 RCC_OscInitStruct.HSEState = RCC_HSE_ON; - 8000184: f44f 3380 mov.w r3, #65536 ; 0x10000 - 8000188: 61fb str r3, [r7, #28] + 80001a2: f44f 3380 mov.w r3, #65536 ; 0x10000 + 80001a6: 62fb str r3, [r7, #44] ; 0x2c RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - 800018a: 2300 movs r3, #0 - 800018c: 623b str r3, [r7, #32] + 80001a8: 2300 movs r3, #0 + 80001aa: 633b str r3, [r7, #48] ; 0x30 RCC_OscInitStruct.HSIState = RCC_HSI_ON; - 800018e: 2301 movs r3, #1 - 8000190: 62bb str r3, [r7, #40] ; 0x28 + 80001ac: 2301 movs r3, #1 + 80001ae: 63bb str r3, [r7, #56] ; 0x38 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - 8000192: 2302 movs r3, #2 - 8000194: 637b str r3, [r7, #52] ; 0x34 + 80001b0: 2302 movs r3, #2 + 80001b2: 647b str r3, [r7, #68] ; 0x44 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - 8000196: f44f 3380 mov.w r3, #65536 ; 0x10000 - 800019a: 63bb str r3, [r7, #56] ; 0x38 + 80001b4: f44f 3380 mov.w r3, #65536 ; 0x10000 + 80001b8: 64bb str r3, [r7, #72] ; 0x48 RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 800019c: f44f 13e0 mov.w r3, #1835008 ; 0x1c0000 - 80001a0: 63fb str r3, [r7, #60] ; 0x3c + 80001ba: f44f 13e0 mov.w r3, #1835008 ; 0x1c0000 + 80001be: 64fb str r3, [r7, #76] ; 0x4c if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - 80001a2: f107 0318 add.w r3, r7, #24 - 80001a6: 4618 mov r0, r3 - 80001a8: f000 fa1e bl 80005e8 - 80001ac: 4603 mov r3, r0 - 80001ae: 2b00 cmp r3, #0 - 80001b0: d001 beq.n 80001b6 + 80001c0: f107 0328 add.w r3, r7, #40 ; 0x28 + 80001c4: 4618 mov r0, r3 + 80001c6: f002 fd69 bl 8002c9c + 80001ca: 4603 mov r3, r0 + 80001cc: 2b00 cmp r3, #0 + 80001ce: d001 beq.n 80001d4 { Error_Handler(); - 80001b2: f000 f847 bl 8000244 + 80001d0: f000 f90e bl 80003f0 } /** Initializes the CPU, AHB and APB buses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK - 80001b6: 230f movs r3, #15 - 80001b8: 607b str r3, [r7, #4] + 80001d4: 230f movs r3, #15 + 80001d6: 617b str r3, [r7, #20] |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - 80001ba: 2302 movs r3, #2 - 80001bc: 60bb str r3, [r7, #8] + 80001d8: 2302 movs r3, #2 + 80001da: 61bb str r3, [r7, #24] RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - 80001be: 2300 movs r3, #0 - 80001c0: 60fb str r3, [r7, #12] + 80001dc: 2300 movs r3, #0 + 80001de: 61fb str r3, [r7, #28] RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; - 80001c2: f44f 6380 mov.w r3, #1024 ; 0x400 - 80001c6: 613b str r3, [r7, #16] + 80001e0: f44f 6380 mov.w r3, #1024 ; 0x400 + 80001e4: 623b str r3, [r7, #32] RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; - 80001c8: 2300 movs r3, #0 - 80001ca: 617b str r3, [r7, #20] + 80001e6: 2300 movs r3, #0 + 80001e8: 627b str r3, [r7, #36] ; 0x24 if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) - 80001cc: 1d3b adds r3, r7, #4 - 80001ce: 2102 movs r1, #2 - 80001d0: 4618 mov r0, r3 - 80001d2: f000 fc89 bl 8000ae8 - 80001d6: 4603 mov r3, r0 - 80001d8: 2b00 cmp r3, #0 - 80001da: d001 beq.n 80001e0 + 80001ea: f107 0314 add.w r3, r7, #20 + 80001ee: 2102 movs r1, #2 + 80001f0: 4618 mov r0, r3 + 80001f2: f002 ffd3 bl 800319c + 80001f6: 4603 mov r3, r0 + 80001f8: 2b00 cmp r3, #0 + 80001fa: d001 beq.n 8000200 { Error_Handler(); - 80001dc: f000 f832 bl 8000244 + 80001fc: f000 f8f8 bl 80003f0 + } + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_USB; + 8000200: 2312 movs r3, #18 + 8000202: 607b str r3, [r7, #4] + PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; + 8000204: f44f 4300 mov.w r3, #32768 ; 0x8000 + 8000208: 60fb str r3, [r7, #12] + PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; + 800020a: 2300 movs r3, #0 + 800020c: 613b str r3, [r7, #16] + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + 800020e: 1d3b adds r3, r7, #4 + 8000210: 4618 mov r0, r3 + 8000212: f003 f95d bl 80034d0 + 8000216: 4603 mov r3, r0 + 8000218: 2b00 cmp r3, #0 + 800021a: d001 beq.n 8000220 + { + Error_Handler(); + 800021c: f000 f8e8 bl 80003f0 } } - 80001e0: bf00 nop - 80001e2: 3740 adds r7, #64 ; 0x40 - 80001e4: 46bd mov sp, r7 - 80001e6: bd80 pop {r7, pc} + 8000220: bf00 nop + 8000222: 3750 adds r7, #80 ; 0x50 + 8000224: 46bd mov sp, r7 + 8000226: bd80 pop {r7, pc} -080001e8 : +08000228 : + * @brief ADC1 Initialization Function + * @param None + * @retval None + */ +static void MX_ADC1_Init(void) +{ + 8000228: b580 push {r7, lr} + 800022a: b084 sub sp, #16 + 800022c: af00 add r7, sp, #0 + + /* USER CODE BEGIN ADC1_Init 0 */ + + /* USER CODE END ADC1_Init 0 */ + + ADC_ChannelConfTypeDef sConfig = {0}; + 800022e: 1d3b adds r3, r7, #4 + 8000230: 2200 movs r2, #0 + 8000232: 601a str r2, [r3, #0] + 8000234: 605a str r2, [r3, #4] + 8000236: 609a str r2, [r3, #8] + /* USER CODE BEGIN ADC1_Init 1 */ + + /* USER CODE END ADC1_Init 1 */ + /** Common config + */ + hadc1.Instance = ADC1; + 8000238: 4b18 ldr r3, [pc, #96] ; (800029c ) + 800023a: 4a19 ldr r2, [pc, #100] ; (80002a0 ) + 800023c: 601a str r2, [r3, #0] + hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; + 800023e: 4b17 ldr r3, [pc, #92] ; (800029c ) + 8000240: 2200 movs r2, #0 + 8000242: 609a str r2, [r3, #8] + hadc1.Init.ContinuousConvMode = DISABLE; + 8000244: 4b15 ldr r3, [pc, #84] ; (800029c ) + 8000246: 2200 movs r2, #0 + 8000248: 731a strb r2, [r3, #12] + hadc1.Init.DiscontinuousConvMode = DISABLE; + 800024a: 4b14 ldr r3, [pc, #80] ; (800029c ) + 800024c: 2200 movs r2, #0 + 800024e: 751a strb r2, [r3, #20] + hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; + 8000250: 4b12 ldr r3, [pc, #72] ; (800029c ) + 8000252: f44f 2260 mov.w r2, #917504 ; 0xe0000 + 8000256: 61da str r2, [r3, #28] + hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; + 8000258: 4b10 ldr r3, [pc, #64] ; (800029c ) + 800025a: 2200 movs r2, #0 + 800025c: 605a str r2, [r3, #4] + hadc1.Init.NbrOfConversion = 1; + 800025e: 4b0f ldr r3, [pc, #60] ; (800029c ) + 8000260: 2201 movs r2, #1 + 8000262: 611a str r2, [r3, #16] + if (HAL_ADC_Init(&hadc1) != HAL_OK) + 8000264: 480d ldr r0, [pc, #52] ; (800029c ) + 8000266: f000 faa5 bl 80007b4 + 800026a: 4603 mov r3, r0 + 800026c: 2b00 cmp r3, #0 + 800026e: d001 beq.n 8000274 + { + Error_Handler(); + 8000270: f000 f8be bl 80003f0 + } + /** Configure Regular Channel + */ + sConfig.Channel = ADC_CHANNEL_0; + 8000274: 2300 movs r3, #0 + 8000276: 607b str r3, [r7, #4] + sConfig.Rank = ADC_REGULAR_RANK_1; + 8000278: 2301 movs r3, #1 + 800027a: 60bb str r3, [r7, #8] + sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; + 800027c: 2300 movs r3, #0 + 800027e: 60fb str r3, [r7, #12] + if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + 8000280: 1d3b adds r3, r7, #4 + 8000282: 4619 mov r1, r3 + 8000284: 4805 ldr r0, [pc, #20] ; (800029c ) + 8000286: f000 fb6d bl 8000964 + 800028a: 4603 mov r3, r0 + 800028c: 2b00 cmp r3, #0 + 800028e: d001 beq.n 8000294 + { + Error_Handler(); + 8000290: f000 f8ae bl 80003f0 + } + /* USER CODE BEGIN ADC1_Init 2 */ + + /* USER CODE END ADC1_Init 2 */ + +} + 8000294: bf00 nop + 8000296: 3710 adds r7, #16 + 8000298: 46bd mov sp, r7 + 800029a: bd80 pop {r7, pc} + 800029c: 2000066c .word 0x2000066c + 80002a0: 40012400 .word 0x40012400 + +080002a4 : + * @brief I2C1 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C1_Init(void) +{ + 80002a4: b580 push {r7, lr} + 80002a6: af00 add r7, sp, #0 + /* USER CODE END I2C1_Init 0 */ + + /* USER CODE BEGIN I2C1_Init 1 */ + + /* USER CODE END I2C1_Init 1 */ + hi2c1.Instance = I2C1; + 80002a8: 4b12 ldr r3, [pc, #72] ; (80002f4 ) + 80002aa: 4a13 ldr r2, [pc, #76] ; (80002f8 ) + 80002ac: 601a str r2, [r3, #0] + hi2c1.Init.ClockSpeed = 100000; + 80002ae: 4b11 ldr r3, [pc, #68] ; (80002f4 ) + 80002b0: 4a12 ldr r2, [pc, #72] ; (80002fc ) + 80002b2: 605a str r2, [r3, #4] + hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2; + 80002b4: 4b0f ldr r3, [pc, #60] ; (80002f4 ) + 80002b6: 2200 movs r2, #0 + 80002b8: 609a str r2, [r3, #8] + hi2c1.Init.OwnAddress1 = 0; + 80002ba: 4b0e ldr r3, [pc, #56] ; (80002f4 ) + 80002bc: 2200 movs r2, #0 + 80002be: 60da str r2, [r3, #12] + hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + 80002c0: 4b0c ldr r3, [pc, #48] ; (80002f4 ) + 80002c2: f44f 4280 mov.w r2, #16384 ; 0x4000 + 80002c6: 611a str r2, [r3, #16] + hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + 80002c8: 4b0a ldr r3, [pc, #40] ; (80002f4 ) + 80002ca: 2200 movs r2, #0 + 80002cc: 615a str r2, [r3, #20] + hi2c1.Init.OwnAddress2 = 0; + 80002ce: 4b09 ldr r3, [pc, #36] ; (80002f4 ) + 80002d0: 2200 movs r2, #0 + 80002d2: 619a str r2, [r3, #24] + hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + 80002d4: 4b07 ldr r3, [pc, #28] ; (80002f4 ) + 80002d6: 2200 movs r2, #0 + 80002d8: 61da str r2, [r3, #28] + hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + 80002da: 4b06 ldr r3, [pc, #24] ; (80002f4 ) + 80002dc: 2200 movs r2, #0 + 80002de: 621a str r2, [r3, #32] + if (HAL_I2C_Init(&hi2c1) != HAL_OK) + 80002e0: 4804 ldr r0, [pc, #16] ; (80002f4 ) + 80002e2: f000 ff0b bl 80010fc + 80002e6: 4603 mov r3, r0 + 80002e8: 2b00 cmp r3, #0 + 80002ea: d001 beq.n 80002f0 + { + Error_Handler(); + 80002ec: f000 f880 bl 80003f0 + } + /* USER CODE BEGIN I2C1_Init 2 */ + + /* USER CODE END I2C1_Init 2 */ + +} + 80002f0: bf00 nop + 80002f2: bd80 pop {r7, pc} + 80002f4: 20000618 .word 0x20000618 + 80002f8: 40005400 .word 0x40005400 + 80002fc: 000186a0 .word 0x000186a0 + +08000300 : + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + 8000300: b580 push {r7, lr} + 8000302: af00 add r7, sp, #0 + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + 8000304: 4b11 ldr r3, [pc, #68] ; (800034c ) + 8000306: 4a12 ldr r2, [pc, #72] ; (8000350 ) + 8000308: 601a str r2, [r3, #0] + huart1.Init.BaudRate = 115200; + 800030a: 4b10 ldr r3, [pc, #64] ; (800034c ) + 800030c: f44f 32e1 mov.w r2, #115200 ; 0x1c200 + 8000310: 605a str r2, [r3, #4] + huart1.Init.WordLength = UART_WORDLENGTH_8B; + 8000312: 4b0e ldr r3, [pc, #56] ; (800034c ) + 8000314: 2200 movs r2, #0 + 8000316: 609a str r2, [r3, #8] + huart1.Init.StopBits = UART_STOPBITS_1; + 8000318: 4b0c ldr r3, [pc, #48] ; (800034c ) + 800031a: 2200 movs r2, #0 + 800031c: 60da str r2, [r3, #12] + huart1.Init.Parity = UART_PARITY_NONE; + 800031e: 4b0b ldr r3, [pc, #44] ; (800034c ) + 8000320: 2200 movs r2, #0 + 8000322: 611a str r2, [r3, #16] + huart1.Init.Mode = UART_MODE_TX_RX; + 8000324: 4b09 ldr r3, [pc, #36] ; (800034c ) + 8000326: 220c movs r2, #12 + 8000328: 615a str r2, [r3, #20] + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + 800032a: 4b08 ldr r3, [pc, #32] ; (800034c ) + 800032c: 2200 movs r2, #0 + 800032e: 619a str r2, [r3, #24] + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + 8000330: 4b06 ldr r3, [pc, #24] ; (800034c ) + 8000332: 2200 movs r2, #0 + 8000334: 61da str r2, [r3, #28] + if (HAL_UART_Init(&huart1) != HAL_OK) + 8000336: 4805 ldr r0, [pc, #20] ; (800034c ) + 8000338: f003 f980 bl 800363c + 800033c: 4603 mov r3, r0 + 800033e: 2b00 cmp r3, #0 + 8000340: d001 beq.n 8000346 + { + Error_Handler(); + 8000342: f000 f855 bl 80003f0 + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + 8000346: bf00 nop + 8000348: bd80 pop {r7, pc} + 800034a: bf00 nop + 800034c: 2000069c .word 0x2000069c + 8000350: 40013800 .word 0x40013800 + +08000354 : * @brief GPIO Initialization Function * @param None * @retval None */ static void MX_GPIO_Init(void) { - 80001e8: b480 push {r7} - 80001ea: b085 sub sp, #20 - 80001ec: af00 add r7, sp, #0 + 8000354: b580 push {r7, lr} + 8000356: b088 sub sp, #32 + 8000358: af00 add r7, sp, #0 + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 800035a: f107 0310 add.w r3, r7, #16 + 800035e: 2200 movs r2, #0 + 8000360: 601a str r2, [r3, #0] + 8000362: 605a str r2, [r3, #4] + 8000364: 609a str r2, [r3, #8] + 8000366: 60da str r2, [r3, #12] /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOC_CLK_ENABLE(); - 80001ee: 4b14 ldr r3, [pc, #80] ; (8000240 ) - 80001f0: 699b ldr r3, [r3, #24] - 80001f2: 4a13 ldr r2, [pc, #76] ; (8000240 ) - 80001f4: f043 0310 orr.w r3, r3, #16 - 80001f8: 6193 str r3, [r2, #24] - 80001fa: 4b11 ldr r3, [pc, #68] ; (8000240 ) - 80001fc: 699b ldr r3, [r3, #24] - 80001fe: f003 0310 and.w r3, r3, #16 - 8000202: 60fb str r3, [r7, #12] - 8000204: 68fb ldr r3, [r7, #12] + 8000368: 4b1f ldr r3, [pc, #124] ; (80003e8 ) + 800036a: 699b ldr r3, [r3, #24] + 800036c: 4a1e ldr r2, [pc, #120] ; (80003e8 ) + 800036e: f043 0310 orr.w r3, r3, #16 + 8000372: 6193 str r3, [r2, #24] + 8000374: 4b1c ldr r3, [pc, #112] ; (80003e8 ) + 8000376: 699b ldr r3, [r3, #24] + 8000378: f003 0310 and.w r3, r3, #16 + 800037c: 60fb str r3, [r7, #12] + 800037e: 68fb ldr r3, [r7, #12] __HAL_RCC_GPIOD_CLK_ENABLE(); - 8000206: 4b0e ldr r3, [pc, #56] ; (8000240 ) - 8000208: 699b ldr r3, [r3, #24] - 800020a: 4a0d ldr r2, [pc, #52] ; (8000240 ) - 800020c: f043 0320 orr.w r3, r3, #32 - 8000210: 6193 str r3, [r2, #24] - 8000212: 4b0b ldr r3, [pc, #44] ; (8000240 ) - 8000214: 699b ldr r3, [r3, #24] - 8000216: f003 0320 and.w r3, r3, #32 - 800021a: 60bb str r3, [r7, #8] - 800021c: 68bb ldr r3, [r7, #8] + 8000380: 4b19 ldr r3, [pc, #100] ; (80003e8 ) + 8000382: 699b ldr r3, [r3, #24] + 8000384: 4a18 ldr r2, [pc, #96] ; (80003e8 ) + 8000386: f043 0320 orr.w r3, r3, #32 + 800038a: 6193 str r3, [r2, #24] + 800038c: 4b16 ldr r3, [pc, #88] ; (80003e8 ) + 800038e: 699b ldr r3, [r3, #24] + 8000390: f003 0320 and.w r3, r3, #32 + 8000394: 60bb str r3, [r7, #8] + 8000396: 68bb ldr r3, [r7, #8] __HAL_RCC_GPIOA_CLK_ENABLE(); - 800021e: 4b08 ldr r3, [pc, #32] ; (8000240 ) - 8000220: 699b ldr r3, [r3, #24] - 8000222: 4a07 ldr r2, [pc, #28] ; (8000240 ) - 8000224: f043 0304 orr.w r3, r3, #4 - 8000228: 6193 str r3, [r2, #24] - 800022a: 4b05 ldr r3, [pc, #20] ; (8000240 ) - 800022c: 699b ldr r3, [r3, #24] - 800022e: f003 0304 and.w r3, r3, #4 - 8000232: 607b str r3, [r7, #4] - 8000234: 687b ldr r3, [r7, #4] + 8000398: 4b13 ldr r3, [pc, #76] ; (80003e8 ) + 800039a: 699b ldr r3, [r3, #24] + 800039c: 4a12 ldr r2, [pc, #72] ; (80003e8 ) + 800039e: f043 0304 orr.w r3, r3, #4 + 80003a2: 6193 str r3, [r2, #24] + 80003a4: 4b10 ldr r3, [pc, #64] ; (80003e8 ) + 80003a6: 699b ldr r3, [r3, #24] + 80003a8: f003 0304 and.w r3, r3, #4 + 80003ac: 607b str r3, [r7, #4] + 80003ae: 687b ldr r3, [r7, #4] + __HAL_RCC_GPIOB_CLK_ENABLE(); + 80003b0: 4b0d ldr r3, [pc, #52] ; (80003e8 ) + 80003b2: 699b ldr r3, [r3, #24] + 80003b4: 4a0c ldr r2, [pc, #48] ; (80003e8 ) + 80003b6: f043 0308 orr.w r3, r3, #8 + 80003ba: 6193 str r3, [r2, #24] + 80003bc: 4b0a ldr r3, [pc, #40] ; (80003e8 ) + 80003be: 699b ldr r3, [r3, #24] + 80003c0: f003 0308 and.w r3, r3, #8 + 80003c4: 603b str r3, [r7, #0] + 80003c6: 683b ldr r3, [r7, #0] + + /*Configure GPIO pin : PA1 */ + GPIO_InitStruct.Pin = GPIO_PIN_1; + 80003c8: 2302 movs r3, #2 + 80003ca: 613b str r3, [r7, #16] + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + 80003cc: 2300 movs r3, #0 + 80003ce: 617b str r3, [r7, #20] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80003d0: 2300 movs r3, #0 + 80003d2: 61bb str r3, [r7, #24] + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 80003d4: f107 0310 add.w r3, r7, #16 + 80003d8: 4619 mov r1, r3 + 80003da: 4804 ldr r0, [pc, #16] ; (80003ec ) + 80003dc: f000 fd0a bl 8000df4 } - 8000236: bf00 nop - 8000238: 3714 adds r7, #20 - 800023a: 46bd mov sp, r7 - 800023c: bc80 pop {r7} - 800023e: 4770 bx lr - 8000240: 40021000 .word 0x40021000 + 80003e0: bf00 nop + 80003e2: 3720 adds r7, #32 + 80003e4: 46bd mov sp, r7 + 80003e6: bd80 pop {r7, pc} + 80003e8: 40021000 .word 0x40021000 + 80003ec: 40010800 .word 0x40010800 -08000244 : +080003f0 : /** * @brief This function is executed in case of error occurrence. * @retval None */ void Error_Handler(void) { - 8000244: b480 push {r7} - 8000246: af00 add r7, sp, #0 + 80003f0: b480 push {r7} + 80003f2: af00 add r7, sp, #0 \details Disables IRQ interrupts by setting the I-bit in the CPSR. Can only be executed in Privileged modes. */ __STATIC_FORCEINLINE void __disable_irq(void) { __ASM volatile ("cpsid i" : : : "memory"); - 8000248: b672 cpsid i + 80003f4: b672 cpsid i } - 800024a: bf00 nop + 80003f6: bf00 nop /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ __disable_irq(); while (1) - 800024c: e7fe b.n 800024c + 80003f8: e7fe b.n 80003f8 ... -08000250 : +080003fc : /* USER CODE END 0 */ /** * Initializes the Global MSP. */ void HAL_MspInit(void) { - 8000250: b480 push {r7} - 8000252: b085 sub sp, #20 - 8000254: af00 add r7, sp, #0 + 80003fc: b480 push {r7} + 80003fe: b085 sub sp, #20 + 8000400: af00 add r7, sp, #0 /* USER CODE BEGIN MspInit 0 */ /* USER CODE END MspInit 0 */ __HAL_RCC_AFIO_CLK_ENABLE(); - 8000256: 4b15 ldr r3, [pc, #84] ; (80002ac ) - 8000258: 699b ldr r3, [r3, #24] - 800025a: 4a14 ldr r2, [pc, #80] ; (80002ac ) - 800025c: f043 0301 orr.w r3, r3, #1 - 8000260: 6193 str r3, [r2, #24] - 8000262: 4b12 ldr r3, [pc, #72] ; (80002ac ) - 8000264: 699b ldr r3, [r3, #24] - 8000266: f003 0301 and.w r3, r3, #1 - 800026a: 60bb str r3, [r7, #8] - 800026c: 68bb ldr r3, [r7, #8] + 8000402: 4b15 ldr r3, [pc, #84] ; (8000458 ) + 8000404: 699b ldr r3, [r3, #24] + 8000406: 4a14 ldr r2, [pc, #80] ; (8000458 ) + 8000408: f043 0301 orr.w r3, r3, #1 + 800040c: 6193 str r3, [r2, #24] + 800040e: 4b12 ldr r3, [pc, #72] ; (8000458 ) + 8000410: 699b ldr r3, [r3, #24] + 8000412: f003 0301 and.w r3, r3, #1 + 8000416: 60bb str r3, [r7, #8] + 8000418: 68bb ldr r3, [r7, #8] __HAL_RCC_PWR_CLK_ENABLE(); - 800026e: 4b0f ldr r3, [pc, #60] ; (80002ac ) - 8000270: 69db ldr r3, [r3, #28] - 8000272: 4a0e ldr r2, [pc, #56] ; (80002ac ) - 8000274: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 - 8000278: 61d3 str r3, [r2, #28] - 800027a: 4b0c ldr r3, [pc, #48] ; (80002ac ) - 800027c: 69db ldr r3, [r3, #28] - 800027e: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 - 8000282: 607b str r3, [r7, #4] - 8000284: 687b ldr r3, [r7, #4] + 800041a: 4b0f ldr r3, [pc, #60] ; (8000458 ) + 800041c: 69db ldr r3, [r3, #28] + 800041e: 4a0e ldr r2, [pc, #56] ; (8000458 ) + 8000420: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 + 8000424: 61d3 str r3, [r2, #28] + 8000426: 4b0c ldr r3, [pc, #48] ; (8000458 ) + 8000428: 69db ldr r3, [r3, #28] + 800042a: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 + 800042e: 607b str r3, [r7, #4] + 8000430: 687b ldr r3, [r7, #4] /* System interrupt init*/ /** NOJTAG: JTAG-DP Disabled and SW-DP Enabled */ __HAL_AFIO_REMAP_SWJ_NOJTAG(); - 8000286: 4b0a ldr r3, [pc, #40] ; (80002b0 ) - 8000288: 685b ldr r3, [r3, #4] - 800028a: 60fb str r3, [r7, #12] - 800028c: 68fb ldr r3, [r7, #12] - 800028e: f023 63e0 bic.w r3, r3, #117440512 ; 0x7000000 - 8000292: 60fb str r3, [r7, #12] - 8000294: 68fb ldr r3, [r7, #12] - 8000296: f043 7300 orr.w r3, r3, #33554432 ; 0x2000000 - 800029a: 60fb str r3, [r7, #12] - 800029c: 4a04 ldr r2, [pc, #16] ; (80002b0 ) - 800029e: 68fb ldr r3, [r7, #12] - 80002a0: 6053 str r3, [r2, #4] + 8000432: 4b0a ldr r3, [pc, #40] ; (800045c ) + 8000434: 685b ldr r3, [r3, #4] + 8000436: 60fb str r3, [r7, #12] + 8000438: 68fb ldr r3, [r7, #12] + 800043a: f023 63e0 bic.w r3, r3, #117440512 ; 0x7000000 + 800043e: 60fb str r3, [r7, #12] + 8000440: 68fb ldr r3, [r7, #12] + 8000442: f043 7300 orr.w r3, r3, #33554432 ; 0x2000000 + 8000446: 60fb str r3, [r7, #12] + 8000448: 4a04 ldr r2, [pc, #16] ; (800045c ) + 800044a: 68fb ldr r3, [r7, #12] + 800044c: 6053 str r3, [r2, #4] /* USER CODE BEGIN MspInit 1 */ /* USER CODE END MspInit 1 */ } - 80002a2: bf00 nop - 80002a4: 3714 adds r7, #20 - 80002a6: 46bd mov sp, r7 - 80002a8: bc80 pop {r7} - 80002aa: 4770 bx lr - 80002ac: 40021000 .word 0x40021000 - 80002b0: 40010000 .word 0x40010000 + 800044e: bf00 nop + 8000450: 3714 adds r7, #20 + 8000452: 46bd mov sp, r7 + 8000454: bc80 pop {r7} + 8000456: 4770 bx lr + 8000458: 40021000 .word 0x40021000 + 800045c: 40010000 .word 0x40010000 -080002b4 : +08000460 : +* This function configures the hardware resources used in this example +* @param hadc: ADC handle pointer +* @retval None +*/ +void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) +{ + 8000460: b580 push {r7, lr} + 8000462: b088 sub sp, #32 + 8000464: af00 add r7, sp, #0 + 8000466: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000468: f107 0310 add.w r3, r7, #16 + 800046c: 2200 movs r2, #0 + 800046e: 601a str r2, [r3, #0] + 8000470: 605a str r2, [r3, #4] + 8000472: 609a str r2, [r3, #8] + 8000474: 60da str r2, [r3, #12] + if(hadc->Instance==ADC1) + 8000476: 687b ldr r3, [r7, #4] + 8000478: 681b ldr r3, [r3, #0] + 800047a: 4a14 ldr r2, [pc, #80] ; (80004cc ) + 800047c: 4293 cmp r3, r2 + 800047e: d121 bne.n 80004c4 + { + /* USER CODE BEGIN ADC1_MspInit 0 */ + + /* USER CODE END ADC1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_ADC1_CLK_ENABLE(); + 8000480: 4b13 ldr r3, [pc, #76] ; (80004d0 ) + 8000482: 699b ldr r3, [r3, #24] + 8000484: 4a12 ldr r2, [pc, #72] ; (80004d0 ) + 8000486: f443 7300 orr.w r3, r3, #512 ; 0x200 + 800048a: 6193 str r3, [r2, #24] + 800048c: 4b10 ldr r3, [pc, #64] ; (80004d0 ) + 800048e: 699b ldr r3, [r3, #24] + 8000490: f403 7300 and.w r3, r3, #512 ; 0x200 + 8000494: 60fb str r3, [r7, #12] + 8000496: 68fb ldr r3, [r7, #12] + + __HAL_RCC_GPIOA_CLK_ENABLE(); + 8000498: 4b0d ldr r3, [pc, #52] ; (80004d0 ) + 800049a: 699b ldr r3, [r3, #24] + 800049c: 4a0c ldr r2, [pc, #48] ; (80004d0 ) + 800049e: f043 0304 orr.w r3, r3, #4 + 80004a2: 6193 str r3, [r2, #24] + 80004a4: 4b0a ldr r3, [pc, #40] ; (80004d0 ) + 80004a6: 699b ldr r3, [r3, #24] + 80004a8: f003 0304 and.w r3, r3, #4 + 80004ac: 60bb str r3, [r7, #8] + 80004ae: 68bb ldr r3, [r7, #8] + /**ADC1 GPIO Configuration + PA0-WKUP ------> ADC1_IN0 + */ + GPIO_InitStruct.Pin = GPIO_PIN_0; + 80004b0: 2301 movs r3, #1 + 80004b2: 613b str r3, [r7, #16] + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + 80004b4: 2303 movs r3, #3 + 80004b6: 617b str r3, [r7, #20] + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 80004b8: f107 0310 add.w r3, r7, #16 + 80004bc: 4619 mov r1, r3 + 80004be: 4805 ldr r0, [pc, #20] ; (80004d4 ) + 80004c0: f000 fc98 bl 8000df4 + /* USER CODE BEGIN ADC1_MspInit 1 */ + + /* USER CODE END ADC1_MspInit 1 */ + } + +} + 80004c4: bf00 nop + 80004c6: 3720 adds r7, #32 + 80004c8: 46bd mov sp, r7 + 80004ca: bd80 pop {r7, pc} + 80004cc: 40012400 .word 0x40012400 + 80004d0: 40021000 .word 0x40021000 + 80004d4: 40010800 .word 0x40010800 + +080004d8 : +* This function configures the hardware resources used in this example +* @param hi2c: I2C handle pointer +* @retval None +*/ +void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c) +{ + 80004d8: b580 push {r7, lr} + 80004da: b088 sub sp, #32 + 80004dc: af00 add r7, sp, #0 + 80004de: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 80004e0: f107 0310 add.w r3, r7, #16 + 80004e4: 2200 movs r2, #0 + 80004e6: 601a str r2, [r3, #0] + 80004e8: 605a str r2, [r3, #4] + 80004ea: 609a str r2, [r3, #8] + 80004ec: 60da str r2, [r3, #12] + if(hi2c->Instance==I2C1) + 80004ee: 687b ldr r3, [r7, #4] + 80004f0: 681b ldr r3, [r3, #0] + 80004f2: 4a15 ldr r2, [pc, #84] ; (8000548 ) + 80004f4: 4293 cmp r3, r2 + 80004f6: d123 bne.n 8000540 + { + /* USER CODE BEGIN I2C1_MspInit 0 */ + + /* USER CODE END I2C1_MspInit 0 */ + + __HAL_RCC_GPIOB_CLK_ENABLE(); + 80004f8: 4b14 ldr r3, [pc, #80] ; (800054c ) + 80004fa: 699b ldr r3, [r3, #24] + 80004fc: 4a13 ldr r2, [pc, #76] ; (800054c ) + 80004fe: f043 0308 orr.w r3, r3, #8 + 8000502: 6193 str r3, [r2, #24] + 8000504: 4b11 ldr r3, [pc, #68] ; (800054c ) + 8000506: 699b ldr r3, [r3, #24] + 8000508: f003 0308 and.w r3, r3, #8 + 800050c: 60fb str r3, [r7, #12] + 800050e: 68fb ldr r3, [r7, #12] + /**I2C1 GPIO Configuration + PB6 ------> I2C1_SCL + PB7 ------> I2C1_SDA + */ + GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7; + 8000510: 23c0 movs r3, #192 ; 0xc0 + 8000512: 613b str r3, [r7, #16] + GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; + 8000514: 2312 movs r3, #18 + 8000516: 617b str r3, [r7, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; + 8000518: 2303 movs r3, #3 + 800051a: 61fb str r3, [r7, #28] + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 800051c: f107 0310 add.w r3, r7, #16 + 8000520: 4619 mov r1, r3 + 8000522: 480b ldr r0, [pc, #44] ; (8000550 ) + 8000524: f000 fc66 bl 8000df4 + + /* Peripheral clock enable */ + __HAL_RCC_I2C1_CLK_ENABLE(); + 8000528: 4b08 ldr r3, [pc, #32] ; (800054c ) + 800052a: 69db ldr r3, [r3, #28] + 800052c: 4a07 ldr r2, [pc, #28] ; (800054c ) + 800052e: f443 1300 orr.w r3, r3, #2097152 ; 0x200000 + 8000532: 61d3 str r3, [r2, #28] + 8000534: 4b05 ldr r3, [pc, #20] ; (800054c ) + 8000536: 69db ldr r3, [r3, #28] + 8000538: f403 1300 and.w r3, r3, #2097152 ; 0x200000 + 800053c: 60bb str r3, [r7, #8] + 800053e: 68bb ldr r3, [r7, #8] + /* USER CODE BEGIN I2C1_MspInit 1 */ + + /* USER CODE END I2C1_MspInit 1 */ + } + +} + 8000540: bf00 nop + 8000542: 3720 adds r7, #32 + 8000544: 46bd mov sp, r7 + 8000546: bd80 pop {r7, pc} + 8000548: 40005400 .word 0x40005400 + 800054c: 40021000 .word 0x40021000 + 8000550: 40010c00 .word 0x40010c00 + +08000554 : +* This function configures the hardware resources used in this example +* @param huart: UART handle pointer +* @retval None +*/ +void HAL_UART_MspInit(UART_HandleTypeDef* huart) +{ + 8000554: b580 push {r7, lr} + 8000556: b088 sub sp, #32 + 8000558: af00 add r7, sp, #0 + 800055a: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 800055c: f107 0310 add.w r3, r7, #16 + 8000560: 2200 movs r2, #0 + 8000562: 601a str r2, [r3, #0] + 8000564: 605a str r2, [r3, #4] + 8000566: 609a str r2, [r3, #8] + 8000568: 60da str r2, [r3, #12] + if(huart->Instance==USART1) + 800056a: 687b ldr r3, [r7, #4] + 800056c: 681b ldr r3, [r3, #0] + 800056e: 4a1c ldr r2, [pc, #112] ; (80005e0 ) + 8000570: 4293 cmp r3, r2 + 8000572: d131 bne.n 80005d8 + { + /* USER CODE BEGIN USART1_MspInit 0 */ + + /* USER CODE END USART1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_USART1_CLK_ENABLE(); + 8000574: 4b1b ldr r3, [pc, #108] ; (80005e4 ) + 8000576: 699b ldr r3, [r3, #24] + 8000578: 4a1a ldr r2, [pc, #104] ; (80005e4 ) + 800057a: f443 4380 orr.w r3, r3, #16384 ; 0x4000 + 800057e: 6193 str r3, [r2, #24] + 8000580: 4b18 ldr r3, [pc, #96] ; (80005e4 ) + 8000582: 699b ldr r3, [r3, #24] + 8000584: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 8000588: 60fb str r3, [r7, #12] + 800058a: 68fb ldr r3, [r7, #12] + + __HAL_RCC_GPIOA_CLK_ENABLE(); + 800058c: 4b15 ldr r3, [pc, #84] ; (80005e4 ) + 800058e: 699b ldr r3, [r3, #24] + 8000590: 4a14 ldr r2, [pc, #80] ; (80005e4 ) + 8000592: f043 0304 orr.w r3, r3, #4 + 8000596: 6193 str r3, [r2, #24] + 8000598: 4b12 ldr r3, [pc, #72] ; (80005e4 ) + 800059a: 699b ldr r3, [r3, #24] + 800059c: f003 0304 and.w r3, r3, #4 + 80005a0: 60bb str r3, [r7, #8] + 80005a2: 68bb ldr r3, [r7, #8] + /**USART1 GPIO Configuration + PA9 ------> USART1_TX + PA10 ------> USART1_RX + */ + GPIO_InitStruct.Pin = GPIO_PIN_9; + 80005a4: f44f 7300 mov.w r3, #512 ; 0x200 + 80005a8: 613b str r3, [r7, #16] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 80005aa: 2302 movs r3, #2 + 80005ac: 617b str r3, [r7, #20] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; + 80005ae: 2303 movs r3, #3 + 80005b0: 61fb str r3, [r7, #28] + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 80005b2: f107 0310 add.w r3, r7, #16 + 80005b6: 4619 mov r1, r3 + 80005b8: 480b ldr r0, [pc, #44] ; (80005e8 ) + 80005ba: f000 fc1b bl 8000df4 + + GPIO_InitStruct.Pin = GPIO_PIN_10; + 80005be: f44f 6380 mov.w r3, #1024 ; 0x400 + 80005c2: 613b str r3, [r7, #16] + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + 80005c4: 2300 movs r3, #0 + 80005c6: 617b str r3, [r7, #20] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80005c8: 2300 movs r3, #0 + 80005ca: 61bb str r3, [r7, #24] + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 80005cc: f107 0310 add.w r3, r7, #16 + 80005d0: 4619 mov r1, r3 + 80005d2: 4805 ldr r0, [pc, #20] ; (80005e8 ) + 80005d4: f000 fc0e bl 8000df4 + /* USER CODE BEGIN USART1_MspInit 1 */ + + /* USER CODE END USART1_MspInit 1 */ + } + +} + 80005d8: bf00 nop + 80005da: 3720 adds r7, #32 + 80005dc: 46bd mov sp, r7 + 80005de: bd80 pop {r7, pc} + 80005e0: 40013800 .word 0x40013800 + 80005e4: 40021000 .word 0x40021000 + 80005e8: 40010800 .word 0x40010800 + +080005ec : /******************************************************************************/ /** * @brief This function handles Non maskable interrupt. */ void NMI_Handler(void) { - 80002b4: b480 push {r7} - 80002b6: af00 add r7, sp, #0 + 80005ec: b480 push {r7} + 80005ee: af00 add r7, sp, #0 /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ /* USER CODE END NonMaskableInt_IRQn 0 */ /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ while (1) - 80002b8: e7fe b.n 80002b8 + 80005f0: e7fe b.n 80005f0 -080002ba : +080005f2 : /** * @brief This function handles Hard fault interrupt. */ void HardFault_Handler(void) { - 80002ba: b480 push {r7} - 80002bc: af00 add r7, sp, #0 + 80005f2: b480 push {r7} + 80005f4: af00 add r7, sp, #0 /* USER CODE BEGIN HardFault_IRQn 0 */ /* USER CODE END HardFault_IRQn 0 */ while (1) - 80002be: e7fe b.n 80002be + 80005f6: e7fe b.n 80005f6 -080002c0 : +080005f8 : /** * @brief This function handles Memory management fault. */ void MemManage_Handler(void) { - 80002c0: b480 push {r7} - 80002c2: af00 add r7, sp, #0 + 80005f8: b480 push {r7} + 80005fa: af00 add r7, sp, #0 /* USER CODE BEGIN MemoryManagement_IRQn 0 */ /* USER CODE END MemoryManagement_IRQn 0 */ while (1) - 80002c4: e7fe b.n 80002c4 + 80005fc: e7fe b.n 80005fc -080002c6 : +080005fe : /** * @brief This function handles Prefetch fault, memory access fault. */ void BusFault_Handler(void) { - 80002c6: b480 push {r7} - 80002c8: af00 add r7, sp, #0 + 80005fe: b480 push {r7} + 8000600: af00 add r7, sp, #0 /* USER CODE BEGIN BusFault_IRQn 0 */ /* USER CODE END BusFault_IRQn 0 */ while (1) - 80002ca: e7fe b.n 80002ca + 8000602: e7fe b.n 8000602 -080002cc : +08000604 : /** * @brief This function handles Undefined instruction or illegal state. */ void UsageFault_Handler(void) { - 80002cc: b480 push {r7} - 80002ce: af00 add r7, sp, #0 + 8000604: b480 push {r7} + 8000606: af00 add r7, sp, #0 /* USER CODE BEGIN UsageFault_IRQn 0 */ /* USER CODE END UsageFault_IRQn 0 */ while (1) - 80002d0: e7fe b.n 80002d0 + 8000608: e7fe b.n 8000608 -080002d2 : +0800060a : /** * @brief This function handles System service call via SWI instruction. */ void SVC_Handler(void) { - 80002d2: b480 push {r7} - 80002d4: af00 add r7, sp, #0 + 800060a: b480 push {r7} + 800060c: af00 add r7, sp, #0 /* USER CODE END SVCall_IRQn 0 */ /* USER CODE BEGIN SVCall_IRQn 1 */ /* USER CODE END SVCall_IRQn 1 */ } - 80002d6: bf00 nop - 80002d8: 46bd mov sp, r7 - 80002da: bc80 pop {r7} - 80002dc: 4770 bx lr + 800060e: bf00 nop + 8000610: 46bd mov sp, r7 + 8000612: bc80 pop {r7} + 8000614: 4770 bx lr -080002de : +08000616 : /** * @brief This function handles Debug monitor. */ void DebugMon_Handler(void) { - 80002de: b480 push {r7} - 80002e0: af00 add r7, sp, #0 + 8000616: b480 push {r7} + 8000618: af00 add r7, sp, #0 /* USER CODE END DebugMonitor_IRQn 0 */ /* USER CODE BEGIN DebugMonitor_IRQn 1 */ /* USER CODE END DebugMonitor_IRQn 1 */ } - 80002e2: bf00 nop - 80002e4: 46bd mov sp, r7 - 80002e6: bc80 pop {r7} - 80002e8: 4770 bx lr + 800061a: bf00 nop + 800061c: 46bd mov sp, r7 + 800061e: bc80 pop {r7} + 8000620: 4770 bx lr -080002ea : +08000622 : /** * @brief This function handles Pendable request for system service. */ void PendSV_Handler(void) { - 80002ea: b480 push {r7} - 80002ec: af00 add r7, sp, #0 + 8000622: b480 push {r7} + 8000624: af00 add r7, sp, #0 /* USER CODE END PendSV_IRQn 0 */ /* USER CODE BEGIN PendSV_IRQn 1 */ /* USER CODE END PendSV_IRQn 1 */ } - 80002ee: bf00 nop - 80002f0: 46bd mov sp, r7 - 80002f2: bc80 pop {r7} - 80002f4: 4770 bx lr + 8000626: bf00 nop + 8000628: 46bd mov sp, r7 + 800062a: bc80 pop {r7} + 800062c: 4770 bx lr -080002f6 : +0800062e : /** * @brief This function handles System tick timer. */ void SysTick_Handler(void) { - 80002f6: b580 push {r7, lr} - 80002f8: af00 add r7, sp, #0 + 800062e: b580 push {r7, lr} + 8000630: af00 add r7, sp, #0 /* USER CODE BEGIN SysTick_IRQn 0 */ /* USER CODE END SysTick_IRQn 0 */ HAL_IncTick(); - 80002fa: f000 f875 bl 80003e8 + 8000632: f000 f87f bl 8000734 /* USER CODE BEGIN SysTick_IRQn 1 */ /* USER CODE END SysTick_IRQn 1 */ } - 80002fe: bf00 nop - 8000300: bd80 pop {r7, pc} + 8000636: bf00 nop + 8000638: bd80 pop {r7, pc} + ... -08000302 : +0800063c : + +/** + * @brief This function handles USB low priority or CAN RX0 interrupts. + */ +void USB_LP_CAN1_RX0_IRQHandler(void) +{ + 800063c: b580 push {r7, lr} + 800063e: af00 add r7, sp, #0 + /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */ + + /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */ + HAL_PCD_IRQHandler(&hpcd_USB_FS); + 8000640: 4802 ldr r0, [pc, #8] ; (800064c ) + 8000642: f000 fff6 bl 8001632 + /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */ + + /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */ +} + 8000646: bf00 nop + 8000648: bd80 pop {r7, pc} + 800064a: bf00 nop + 800064c: 20000ba8 .word 0x20000ba8 + +08000650 : * @note This function should be used only after reset. * @param None * @retval None */ void SystemInit (void) { - 8000302: b480 push {r7} - 8000304: af00 add r7, sp, #0 + 8000650: b480 push {r7} + 8000652: af00 add r7, sp, #0 /* Configure the Vector Table location -------------------------------------*/ #if defined(USER_VECT_TAB_ADDRESS) SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ #endif /* USER_VECT_TAB_ADDRESS */ } - 8000306: bf00 nop - 8000308: 46bd mov sp, r7 - 800030a: bc80 pop {r7} - 800030c: 4770 bx lr - ... + 8000654: bf00 nop + 8000656: 46bd mov sp, r7 + 8000658: bc80 pop {r7} + 800065a: 4770 bx lr -08000310 : +0800065c : .weak Reset_Handler .type Reset_Handler, %function Reset_Handler: /* Copy the data segment initializers from flash to SRAM */ ldr r0, =_sdata - 8000310: 480c ldr r0, [pc, #48] ; (8000344 ) + 800065c: 480c ldr r0, [pc, #48] ; (8000690 ) ldr r1, =_edata - 8000312: 490d ldr r1, [pc, #52] ; (8000348 ) + 800065e: 490d ldr r1, [pc, #52] ; (8000694 ) ldr r2, =_sidata - 8000314: 4a0d ldr r2, [pc, #52] ; (800034c ) + 8000660: 4a0d ldr r2, [pc, #52] ; (8000698 ) movs r3, #0 - 8000316: 2300 movs r3, #0 + 8000662: 2300 movs r3, #0 b LoopCopyDataInit - 8000318: e002 b.n 8000320 + 8000664: e002 b.n 800066c -0800031a : +08000666 : CopyDataInit: ldr r4, [r2, r3] - 800031a: 58d4 ldr r4, [r2, r3] + 8000666: 58d4 ldr r4, [r2, r3] str r4, [r0, r3] - 800031c: 50c4 str r4, [r0, r3] + 8000668: 50c4 str r4, [r0, r3] adds r3, r3, #4 - 800031e: 3304 adds r3, #4 + 800066a: 3304 adds r3, #4 -08000320 : +0800066c : LoopCopyDataInit: adds r4, r0, r3 - 8000320: 18c4 adds r4, r0, r3 + 800066c: 18c4 adds r4, r0, r3 cmp r4, r1 - 8000322: 428c cmp r4, r1 + 800066e: 428c cmp r4, r1 bcc CopyDataInit - 8000324: d3f9 bcc.n 800031a + 8000670: d3f9 bcc.n 8000666 /* Zero fill the bss segment. */ ldr r2, =_sbss - 8000326: 4a0a ldr r2, [pc, #40] ; (8000350 ) + 8000672: 4a0a ldr r2, [pc, #40] ; (800069c ) ldr r4, =_ebss - 8000328: 4c0a ldr r4, [pc, #40] ; (8000354 ) + 8000674: 4c0a ldr r4, [pc, #40] ; (80006a0 ) movs r3, #0 - 800032a: 2300 movs r3, #0 + 8000676: 2300 movs r3, #0 b LoopFillZerobss - 800032c: e001 b.n 8000332 + 8000678: e001 b.n 800067e -0800032e : +0800067a : FillZerobss: str r3, [r2] - 800032e: 6013 str r3, [r2, #0] + 800067a: 6013 str r3, [r2, #0] adds r2, r2, #4 - 8000330: 3204 adds r2, #4 + 800067c: 3204 adds r2, #4 -08000332 : +0800067e : LoopFillZerobss: cmp r2, r4 - 8000332: 42a2 cmp r2, r4 + 800067e: 42a2 cmp r2, r4 bcc FillZerobss - 8000334: d3fb bcc.n 800032e + 8000680: d3fb bcc.n 800067a /* Call the clock system intitialization function.*/ bl SystemInit - 8000336: f7ff ffe4 bl 8000302 + 8000682: f7ff ffe5 bl 8000650 /* Call static constructors */ bl __libc_init_array - 800033a: f000 fd3d bl 8000db8 <__libc_init_array> + 8000686: f007 fc69 bl 8007f5c <__libc_init_array> /* Call the application's entry point.*/ bl main - 800033e: f7ff ff05 bl 800014c
+ 800068a: f7ff fd5f bl 800014c
bx lr - 8000342: 4770 bx lr + 800068e: 4770 bx lr ldr r0, =_sdata - 8000344: 20000000 .word 0x20000000 + 8000690: 20000000 .word 0x20000000 ldr r1, =_edata - 8000348: 2000000c .word 0x2000000c + 8000694: 200000dc .word 0x200000dc ldr r2, =_sidata - 800034c: 08000e50 .word 0x08000e50 + 8000698: 080080ac .word 0x080080ac ldr r2, =_sbss - 8000350: 2000000c .word 0x2000000c + 800069c: 200000dc .word 0x200000dc ldr r4, =_ebss - 8000354: 2000002c .word 0x2000002c + 80006a0: 20000e94 .word 0x20000e94 -08000358 : +080006a4 : * @retval : None */ .section .text.Default_Handler,"ax",%progbits Default_Handler: Infinite_Loop: b Infinite_Loop - 8000358: e7fe b.n 8000358 + 80006a4: e7fe b.n 80006a4 ... -0800035c : +080006a8 : * need to ensure that the SysTick time base is always set to 1 millisecond * to have correct HAL operation. * @retval HAL status */ HAL_StatusTypeDef HAL_Init(void) { - 800035c: b580 push {r7, lr} - 800035e: af00 add r7, sp, #0 + 80006a8: b580 push {r7, lr} + 80006aa: af00 add r7, sp, #0 defined(STM32F102x6) || defined(STM32F102xB) || \ defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || \ defined(STM32F105xC) || defined(STM32F107xC) /* Prefetch buffer is not available on value line devices */ __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); - 8000360: 4b08 ldr r3, [pc, #32] ; (8000384 ) - 8000362: 681b ldr r3, [r3, #0] - 8000364: 4a07 ldr r2, [pc, #28] ; (8000384 ) - 8000366: f043 0310 orr.w r3, r3, #16 - 800036a: 6013 str r3, [r2, #0] + 80006ac: 4b08 ldr r3, [pc, #32] ; (80006d0 ) + 80006ae: 681b ldr r3, [r3, #0] + 80006b0: 4a07 ldr r2, [pc, #28] ; (80006d0 ) + 80006b2: f043 0310 orr.w r3, r3, #16 + 80006b6: 6013 str r3, [r2, #0] #endif #endif /* PREFETCH_ENABLE */ /* Set Interrupt Group Priority */ HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); - 800036c: 2003 movs r0, #3 - 800036e: f000 f907 bl 8000580 + 80006b8: 2003 movs r0, #3 + 80006ba: f000 fb59 bl 8000d70 /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */ HAL_InitTick(TICK_INT_PRIORITY); - 8000372: 200f movs r0, #15 - 8000374: f000 f808 bl 8000388 + 80006be: 200f movs r0, #15 + 80006c0: f000 f808 bl 80006d4 /* Init the low level hardware */ HAL_MspInit(); - 8000378: f7ff ff6a bl 8000250 + 80006c4: f7ff fe9a bl 80003fc /* Return function status */ return HAL_OK; - 800037c: 2300 movs r3, #0 + 80006c8: 2300 movs r3, #0 } - 800037e: 4618 mov r0, r3 - 8000380: bd80 pop {r7, pc} - 8000382: bf00 nop - 8000384: 40022000 .word 0x40022000 + 80006ca: 4618 mov r0, r3 + 80006cc: bd80 pop {r7, pc} + 80006ce: bf00 nop + 80006d0: 40022000 .word 0x40022000 -08000388 : +080006d4 : * implementation in user file. * @param TickPriority Tick interrupt priority. * @retval HAL status */ __weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) { - 8000388: b580 push {r7, lr} - 800038a: b082 sub sp, #8 - 800038c: af00 add r7, sp, #0 - 800038e: 6078 str r0, [r7, #4] + 80006d4: b580 push {r7, lr} + 80006d6: b082 sub sp, #8 + 80006d8: af00 add r7, sp, #0 + 80006da: 6078 str r0, [r7, #4] /* Configure the SysTick to have interrupt in 1ms time basis*/ if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U) - 8000390: 4b12 ldr r3, [pc, #72] ; (80003dc ) - 8000392: 681a ldr r2, [r3, #0] - 8000394: 4b12 ldr r3, [pc, #72] ; (80003e0 ) - 8000396: 781b ldrb r3, [r3, #0] - 8000398: 4619 mov r1, r3 - 800039a: f44f 737a mov.w r3, #1000 ; 0x3e8 - 800039e: fbb3 f3f1 udiv r3, r3, r1 - 80003a2: fbb2 f3f3 udiv r3, r2, r3 - 80003a6: 4618 mov r0, r3 - 80003a8: f000 f911 bl 80005ce - 80003ac: 4603 mov r3, r0 - 80003ae: 2b00 cmp r3, #0 - 80003b0: d001 beq.n 80003b6 + 80006dc: 4b12 ldr r3, [pc, #72] ; (8000728 ) + 80006de: 681a ldr r2, [r3, #0] + 80006e0: 4b12 ldr r3, [pc, #72] ; (800072c ) + 80006e2: 781b ldrb r3, [r3, #0] + 80006e4: 4619 mov r1, r3 + 80006e6: f44f 737a mov.w r3, #1000 ; 0x3e8 + 80006ea: fbb3 f3f1 udiv r3, r3, r1 + 80006ee: fbb2 f3f3 udiv r3, r2, r3 + 80006f2: 4618 mov r0, r3 + 80006f4: f000 fb71 bl 8000dda + 80006f8: 4603 mov r3, r0 + 80006fa: 2b00 cmp r3, #0 + 80006fc: d001 beq.n 8000702 { return HAL_ERROR; - 80003b2: 2301 movs r3, #1 - 80003b4: e00e b.n 80003d4 + 80006fe: 2301 movs r3, #1 + 8000700: e00e b.n 8000720 } /* Configure the SysTick IRQ priority */ if (TickPriority < (1UL << __NVIC_PRIO_BITS)) - 80003b6: 687b ldr r3, [r7, #4] - 80003b8: 2b0f cmp r3, #15 - 80003ba: d80a bhi.n 80003d2 + 8000702: 687b ldr r3, [r7, #4] + 8000704: 2b0f cmp r3, #15 + 8000706: d80a bhi.n 800071e { HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); - 80003bc: 2200 movs r2, #0 - 80003be: 6879 ldr r1, [r7, #4] - 80003c0: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff - 80003c4: f000 f8e7 bl 8000596 + 8000708: 2200 movs r2, #0 + 800070a: 6879 ldr r1, [r7, #4] + 800070c: f04f 30ff mov.w r0, #4294967295 + 8000710: f000 fb39 bl 8000d86 uwTickPrio = TickPriority; - 80003c8: 4a06 ldr r2, [pc, #24] ; (80003e4 ) - 80003ca: 687b ldr r3, [r7, #4] - 80003cc: 6013 str r3, [r2, #0] + 8000714: 4a06 ldr r2, [pc, #24] ; (8000730 ) + 8000716: 687b ldr r3, [r7, #4] + 8000718: 6013 str r3, [r2, #0] { return HAL_ERROR; } /* Return function status */ return HAL_OK; - 80003ce: 2300 movs r3, #0 - 80003d0: e000 b.n 80003d4 + 800071a: 2300 movs r3, #0 + 800071c: e000 b.n 8000720 return HAL_ERROR; - 80003d2: 2301 movs r3, #1 + 800071e: 2301 movs r3, #1 } - 80003d4: 4618 mov r0, r3 - 80003d6: 3708 adds r7, #8 - 80003d8: 46bd mov sp, r7 - 80003da: bd80 pop {r7, pc} - 80003dc: 20000000 .word 0x20000000 - 80003e0: 20000008 .word 0x20000008 - 80003e4: 20000004 .word 0x20000004 + 8000720: 4618 mov r0, r3 + 8000722: 3708 adds r7, #8 + 8000724: 46bd mov sp, r7 + 8000726: bd80 pop {r7, pc} + 8000728: 20000000 .word 0x20000000 + 800072c: 20000008 .word 0x20000008 + 8000730: 20000004 .word 0x20000004 -080003e8 : +08000734 : * @note This function is declared as __weak to be overwritten in case of other * implementations in user file. * @retval None */ __weak void HAL_IncTick(void) { - 80003e8: b480 push {r7} - 80003ea: af00 add r7, sp, #0 + 8000734: b480 push {r7} + 8000736: af00 add r7, sp, #0 uwTick += uwTickFreq; - 80003ec: 4b05 ldr r3, [pc, #20] ; (8000404 ) - 80003ee: 781b ldrb r3, [r3, #0] - 80003f0: 461a mov r2, r3 - 80003f2: 4b05 ldr r3, [pc, #20] ; (8000408 ) - 80003f4: 681b ldr r3, [r3, #0] - 80003f6: 4413 add r3, r2 - 80003f8: 4a03 ldr r2, [pc, #12] ; (8000408 ) - 80003fa: 6013 str r3, [r2, #0] + 8000738: 4b05 ldr r3, [pc, #20] ; (8000750 ) + 800073a: 781b ldrb r3, [r3, #0] + 800073c: 461a mov r2, r3 + 800073e: 4b05 ldr r3, [pc, #20] ; (8000754 ) + 8000740: 681b ldr r3, [r3, #0] + 8000742: 4413 add r3, r2 + 8000744: 4a03 ldr r2, [pc, #12] ; (8000754 ) + 8000746: 6013 str r3, [r2, #0] } - 80003fc: bf00 nop - 80003fe: 46bd mov sp, r7 - 8000400: bc80 pop {r7} - 8000402: 4770 bx lr - 8000404: 20000008 .word 0x20000008 - 8000408: 20000028 .word 0x20000028 + 8000748: bf00 nop + 800074a: 46bd mov sp, r7 + 800074c: bc80 pop {r7} + 800074e: 4770 bx lr + 8000750: 20000008 .word 0x20000008 + 8000754: 200006e0 .word 0x200006e0 -0800040c : +08000758 : * @note This function is declared as __weak to be overwritten in case of other * implementations in user file. * @retval tick value */ __weak uint32_t HAL_GetTick(void) { - 800040c: b480 push {r7} - 800040e: af00 add r7, sp, #0 + 8000758: b480 push {r7} + 800075a: af00 add r7, sp, #0 return uwTick; - 8000410: 4b02 ldr r3, [pc, #8] ; (800041c ) - 8000412: 681b ldr r3, [r3, #0] + 800075c: 4b02 ldr r3, [pc, #8] ; (8000768 ) + 800075e: 681b ldr r3, [r3, #0] } - 8000414: 4618 mov r0, r3 - 8000416: 46bd mov sp, r7 - 8000418: bc80 pop {r7} - 800041a: 4770 bx lr - 800041c: 20000028 .word 0x20000028 + 8000760: 4618 mov r0, r3 + 8000762: 46bd mov sp, r7 + 8000764: bc80 pop {r7} + 8000766: 4770 bx lr + 8000768: 200006e0 .word 0x200006e0 -08000420 <__NVIC_SetPriorityGrouping>: +0800076c : + * implementations in user file. + * @param Delay specifies the delay time length, in milliseconds. + * @retval None + */ +__weak void HAL_Delay(uint32_t Delay) +{ + 800076c: b580 push {r7, lr} + 800076e: b084 sub sp, #16 + 8000770: af00 add r7, sp, #0 + 8000772: 6078 str r0, [r7, #4] + uint32_t tickstart = HAL_GetTick(); + 8000774: f7ff fff0 bl 8000758 + 8000778: 60b8 str r0, [r7, #8] + uint32_t wait = Delay; + 800077a: 687b ldr r3, [r7, #4] + 800077c: 60fb str r3, [r7, #12] + + /* Add a freq to guarantee minimum wait */ + if (wait < HAL_MAX_DELAY) + 800077e: 68fb ldr r3, [r7, #12] + 8000780: f1b3 3fff cmp.w r3, #4294967295 + 8000784: d005 beq.n 8000792 + { + wait += (uint32_t)(uwTickFreq); + 8000786: 4b0a ldr r3, [pc, #40] ; (80007b0 ) + 8000788: 781b ldrb r3, [r3, #0] + 800078a: 461a mov r2, r3 + 800078c: 68fb ldr r3, [r7, #12] + 800078e: 4413 add r3, r2 + 8000790: 60fb str r3, [r7, #12] + } + + while ((HAL_GetTick() - tickstart) < wait) + 8000792: bf00 nop + 8000794: f7ff ffe0 bl 8000758 + 8000798: 4602 mov r2, r0 + 800079a: 68bb ldr r3, [r7, #8] + 800079c: 1ad3 subs r3, r2, r3 + 800079e: 68fa ldr r2, [r7, #12] + 80007a0: 429a cmp r2, r3 + 80007a2: d8f7 bhi.n 8000794 + { + } +} + 80007a4: bf00 nop + 80007a6: bf00 nop + 80007a8: 3710 adds r7, #16 + 80007aa: 46bd mov sp, r7 + 80007ac: bd80 pop {r7, pc} + 80007ae: bf00 nop + 80007b0: 20000008 .word 0x20000008 + +080007b4 : + * of structure "ADC_InitTypeDef". + * @param hadc: ADC handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc) +{ + 80007b4: b580 push {r7, lr} + 80007b6: b086 sub sp, #24 + 80007b8: af00 add r7, sp, #0 + 80007ba: 6078 str r0, [r7, #4] + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 80007bc: 2300 movs r3, #0 + 80007be: 75fb strb r3, [r7, #23] + uint32_t tmp_cr1 = 0U; + 80007c0: 2300 movs r3, #0 + 80007c2: 613b str r3, [r7, #16] + uint32_t tmp_cr2 = 0U; + 80007c4: 2300 movs r3, #0 + 80007c6: 60bb str r3, [r7, #8] + uint32_t tmp_sqr1 = 0U; + 80007c8: 2300 movs r3, #0 + 80007ca: 60fb str r3, [r7, #12] + + /* Check ADC handle */ + if(hadc == NULL) + 80007cc: 687b ldr r3, [r7, #4] + 80007ce: 2b00 cmp r3, #0 + 80007d0: d101 bne.n 80007d6 + { + return HAL_ERROR; + 80007d2: 2301 movs r3, #1 + 80007d4: e0be b.n 8000954 + assert_param(IS_ADC_DATA_ALIGN(hadc->Init.DataAlign)); + assert_param(IS_ADC_SCAN_MODE(hadc->Init.ScanConvMode)); + assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode)); + assert_param(IS_ADC_EXTTRIG(hadc->Init.ExternalTrigConv)); + + if(hadc->Init.ScanConvMode != ADC_SCAN_DISABLE) + 80007d6: 687b ldr r3, [r7, #4] + 80007d8: 689b ldr r3, [r3, #8] + 80007da: 2b00 cmp r3, #0 + /* Refer to header of this file for more details on clock enabling */ + /* procedure. */ + + /* Actions performed only if ADC is coming from state reset: */ + /* - Initialization of ADC MSP */ + if (hadc->State == HAL_ADC_STATE_RESET) + 80007dc: 687b ldr r3, [r7, #4] + 80007de: 6a9b ldr r3, [r3, #40] ; 0x28 + 80007e0: 2b00 cmp r3, #0 + 80007e2: d109 bne.n 80007f8 + { + /* Initialize ADC error code */ + ADC_CLEAR_ERRORCODE(hadc); + 80007e4: 687b ldr r3, [r7, #4] + 80007e6: 2200 movs r2, #0 + 80007e8: 62da str r2, [r3, #44] ; 0x2c + + /* Allocate lock resource and initialize it */ + hadc->Lock = HAL_UNLOCKED; + 80007ea: 687b ldr r3, [r7, #4] + 80007ec: 2200 movs r2, #0 + 80007ee: f883 2024 strb.w r2, [r3, #36] ; 0x24 + + /* Init the low level hardware */ + hadc->MspInitCallback(hadc); +#else + /* Init the low level hardware */ + HAL_ADC_MspInit(hadc); + 80007f2: 6878 ldr r0, [r7, #4] + 80007f4: f7ff fe34 bl 8000460 + /* Stop potential conversion on going, on regular and injected groups */ + /* Disable ADC peripheral */ + /* Note: In case of ADC already enabled, precaution to not launch an */ + /* unwanted conversion while modifying register CR2 by writing 1 to */ + /* bit ADON. */ + tmp_hal_status = ADC_ConversionStop_Disable(hadc); + 80007f8: 6878 ldr r0, [r7, #4] + 80007fa: f000 f9ab bl 8000b54 + 80007fe: 4603 mov r3, r0 + 8000800: 75fb strb r3, [r7, #23] + + + /* Configuration of ADC parameters if previous preliminary actions are */ + /* correctly completed. */ + if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL) && + 8000802: 687b ldr r3, [r7, #4] + 8000804: 6a9b ldr r3, [r3, #40] ; 0x28 + 8000806: f003 0310 and.w r3, r3, #16 + 800080a: 2b00 cmp r3, #0 + 800080c: f040 8099 bne.w 8000942 + 8000810: 7dfb ldrb r3, [r7, #23] + 8000812: 2b00 cmp r3, #0 + 8000814: f040 8095 bne.w 8000942 + (tmp_hal_status == HAL_OK) ) + { + /* Set ADC state */ + ADC_STATE_CLR_SET(hadc->State, + 8000818: 687b ldr r3, [r7, #4] + 800081a: 6a9b ldr r3, [r3, #40] ; 0x28 + 800081c: f423 5388 bic.w r3, r3, #4352 ; 0x1100 + 8000820: f023 0302 bic.w r3, r3, #2 + 8000824: f043 0202 orr.w r2, r3, #2 + 8000828: 687b ldr r3, [r7, #4] + 800082a: 629a str r2, [r3, #40] ; 0x28 + /* - continuous conversion mode */ + /* Note: External trigger polarity (ADC_CR2_EXTTRIG) is set into */ + /* HAL_ADC_Start_xxx functions because if set in this function, */ + /* a conversion on injected group would start a conversion also on */ + /* regular group after ADC enabling. */ + tmp_cr2 |= (hadc->Init.DataAlign | + 800082c: 687b ldr r3, [r7, #4] + 800082e: 685a ldr r2, [r3, #4] + ADC_CFGR_EXTSEL(hadc, hadc->Init.ExternalTrigConv) | + 8000830: 687b ldr r3, [r7, #4] + 8000832: 69db ldr r3, [r3, #28] + tmp_cr2 |= (hadc->Init.DataAlign | + 8000834: 431a orrs r2, r3 + ADC_CR2_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode) ); + 8000836: 687b ldr r3, [r7, #4] + 8000838: 7b1b ldrb r3, [r3, #12] + 800083a: 005b lsls r3, r3, #1 + ADC_CFGR_EXTSEL(hadc, hadc->Init.ExternalTrigConv) | + 800083c: 4313 orrs r3, r2 + tmp_cr2 |= (hadc->Init.DataAlign | + 800083e: 68ba ldr r2, [r7, #8] + 8000840: 4313 orrs r3, r2 + 8000842: 60bb str r3, [r7, #8] + + /* Configuration of ADC: */ + /* - scan mode */ + /* - discontinuous mode disable/enable */ + /* - discontinuous mode number of conversions */ + tmp_cr1 |= (ADC_CR1_SCAN_SET(hadc->Init.ScanConvMode)); + 8000844: 687b ldr r3, [r7, #4] + 8000846: 689b ldr r3, [r3, #8] + 8000848: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 800084c: d003 beq.n 8000856 + 800084e: 687b ldr r3, [r7, #4] + 8000850: 689b ldr r3, [r3, #8] + 8000852: 2b01 cmp r3, #1 + 8000854: d102 bne.n 800085c + 8000856: f44f 7380 mov.w r3, #256 ; 0x100 + 800085a: e000 b.n 800085e + 800085c: 2300 movs r3, #0 + 800085e: 693a ldr r2, [r7, #16] + 8000860: 4313 orrs r3, r2 + 8000862: 613b str r3, [r7, #16] + + /* Enable discontinuous mode only if continuous mode is disabled */ + /* Note: If parameter "Init.ScanConvMode" is set to disable, parameter */ + /* discontinuous is set anyway, but will have no effect on ADC HW. */ + if (hadc->Init.DiscontinuousConvMode == ENABLE) + 8000864: 687b ldr r3, [r7, #4] + 8000866: 7d1b ldrb r3, [r3, #20] + 8000868: 2b01 cmp r3, #1 + 800086a: d119 bne.n 80008a0 + { + if (hadc->Init.ContinuousConvMode == DISABLE) + 800086c: 687b ldr r3, [r7, #4] + 800086e: 7b1b ldrb r3, [r3, #12] + 8000870: 2b00 cmp r3, #0 + 8000872: d109 bne.n 8000888 + { + /* Enable the selected ADC regular discontinuous mode */ + /* Set the number of channels to be converted in discontinuous mode */ + SET_BIT(tmp_cr1, ADC_CR1_DISCEN | + 8000874: 687b ldr r3, [r7, #4] + 8000876: 699b ldr r3, [r3, #24] + 8000878: 3b01 subs r3, #1 + 800087a: 035a lsls r2, r3, #13 + 800087c: 693b ldr r3, [r7, #16] + 800087e: 4313 orrs r3, r2 + 8000880: f443 6300 orr.w r3, r3, #2048 ; 0x800 + 8000884: 613b str r3, [r7, #16] + 8000886: e00b b.n 80008a0 + { + /* ADC regular group settings continuous and sequencer discontinuous*/ + /* cannot be enabled simultaneously. */ + + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); + 8000888: 687b ldr r3, [r7, #4] + 800088a: 6a9b ldr r3, [r3, #40] ; 0x28 + 800088c: f043 0220 orr.w r2, r3, #32 + 8000890: 687b ldr r3, [r7, #4] + 8000892: 629a str r2, [r3, #40] ; 0x28 + + /* Set ADC error code to ADC IP internal error */ + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + 8000894: 687b ldr r3, [r7, #4] + 8000896: 6adb ldr r3, [r3, #44] ; 0x2c + 8000898: f043 0201 orr.w r2, r3, #1 + 800089c: 687b ldr r3, [r7, #4] + 800089e: 62da str r2, [r3, #44] ; 0x2c + } + } + + /* Update ADC configuration register CR1 with previous settings */ + MODIFY_REG(hadc->Instance->CR1, + 80008a0: 687b ldr r3, [r7, #4] + 80008a2: 681b ldr r3, [r3, #0] + 80008a4: 685b ldr r3, [r3, #4] + 80008a6: f423 4169 bic.w r1, r3, #59648 ; 0xe900 + 80008aa: 687b ldr r3, [r7, #4] + 80008ac: 681b ldr r3, [r3, #0] + 80008ae: 693a ldr r2, [r7, #16] + 80008b0: 430a orrs r2, r1 + 80008b2: 605a str r2, [r3, #4] + ADC_CR1_DISCEN | + ADC_CR1_DISCNUM , + tmp_cr1 ); + + /* Update ADC configuration register CR2 with previous settings */ + MODIFY_REG(hadc->Instance->CR2, + 80008b4: 687b ldr r3, [r7, #4] + 80008b6: 681b ldr r3, [r3, #0] + 80008b8: 689a ldr r2, [r3, #8] + 80008ba: 4b28 ldr r3, [pc, #160] ; (800095c ) + 80008bc: 4013 ands r3, r2 + 80008be: 687a ldr r2, [r7, #4] + 80008c0: 6812 ldr r2, [r2, #0] + 80008c2: 68b9 ldr r1, [r7, #8] + 80008c4: 430b orrs r3, r1 + 80008c6: 6093 str r3, [r2, #8] + /* Note: Scan mode is present by hardware on this device and, if */ + /* disabled, discards automatically nb of conversions. Anyway, nb of */ + /* conversions is forced to 0x00 for alignment over all STM32 devices. */ + /* - if scan mode is enabled, regular channels sequence length is set to */ + /* parameter "NbrOfConversion" */ + if (ADC_CR1_SCAN_SET(hadc->Init.ScanConvMode) == ADC_SCAN_ENABLE) + 80008c8: 687b ldr r3, [r7, #4] + 80008ca: 689b ldr r3, [r3, #8] + 80008cc: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 80008d0: d003 beq.n 80008da + 80008d2: 687b ldr r3, [r7, #4] + 80008d4: 689b ldr r3, [r3, #8] + 80008d6: 2b01 cmp r3, #1 + 80008d8: d104 bne.n 80008e4 + { + tmp_sqr1 = ADC_SQR1_L_SHIFT(hadc->Init.NbrOfConversion); + 80008da: 687b ldr r3, [r7, #4] + 80008dc: 691b ldr r3, [r3, #16] + 80008de: 3b01 subs r3, #1 + 80008e0: 051b lsls r3, r3, #20 + 80008e2: 60fb str r3, [r7, #12] + } + + MODIFY_REG(hadc->Instance->SQR1, + 80008e4: 687b ldr r3, [r7, #4] + 80008e6: 681b ldr r3, [r3, #0] + 80008e8: 6adb ldr r3, [r3, #44] ; 0x2c + 80008ea: f423 0170 bic.w r1, r3, #15728640 ; 0xf00000 + 80008ee: 687b ldr r3, [r7, #4] + 80008f0: 681b ldr r3, [r3, #0] + 80008f2: 68fa ldr r2, [r7, #12] + 80008f4: 430a orrs r2, r1 + 80008f6: 62da str r2, [r3, #44] ; 0x2c + /* ensure of no potential problem of ADC core IP clocking. */ + /* Check through register CR2 (excluding bits set in other functions: */ + /* execution control bits (ADON, JSWSTART, SWSTART), regular group bits */ + /* (DMA), injected group bits (JEXTTRIG and JEXTSEL), channel internal */ + /* measurement path bit (TSVREFE). */ + if (READ_BIT(hadc->Instance->CR2, ~(ADC_CR2_ADON | ADC_CR2_DMA | + 80008f8: 687b ldr r3, [r7, #4] + 80008fa: 681b ldr r3, [r3, #0] + 80008fc: 689a ldr r2, [r3, #8] + 80008fe: 4b18 ldr r3, [pc, #96] ; (8000960 ) + 8000900: 4013 ands r3, r2 + 8000902: 68ba ldr r2, [r7, #8] + 8000904: 429a cmp r2, r3 + 8000906: d10b bne.n 8000920 + ADC_CR2_JEXTTRIG | ADC_CR2_JEXTSEL | + ADC_CR2_TSVREFE )) + == tmp_cr2) + { + /* Set ADC error code to none */ + ADC_CLEAR_ERRORCODE(hadc); + 8000908: 687b ldr r3, [r7, #4] + 800090a: 2200 movs r2, #0 + 800090c: 62da str r2, [r3, #44] ; 0x2c + + /* Set the ADC state */ + ADC_STATE_CLR_SET(hadc->State, + 800090e: 687b ldr r3, [r7, #4] + 8000910: 6a9b ldr r3, [r3, #40] ; 0x28 + 8000912: f023 0303 bic.w r3, r3, #3 + 8000916: f043 0201 orr.w r2, r3, #1 + 800091a: 687b ldr r3, [r7, #4] + 800091c: 629a str r2, [r3, #40] ; 0x28 + if (READ_BIT(hadc->Instance->CR2, ~(ADC_CR2_ADON | ADC_CR2_DMA | + 800091e: e018 b.n 8000952 + HAL_ADC_STATE_READY); + } + else + { + /* Update ADC state machine to error */ + ADC_STATE_CLR_SET(hadc->State, + 8000920: 687b ldr r3, [r7, #4] + 8000922: 6a9b ldr r3, [r3, #40] ; 0x28 + 8000924: f023 0312 bic.w r3, r3, #18 + 8000928: f043 0210 orr.w r2, r3, #16 + 800092c: 687b ldr r3, [r7, #4] + 800092e: 629a str r2, [r3, #40] ; 0x28 + HAL_ADC_STATE_BUSY_INTERNAL, + HAL_ADC_STATE_ERROR_INTERNAL); + + /* Set ADC error code to ADC IP internal error */ + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + 8000930: 687b ldr r3, [r7, #4] + 8000932: 6adb ldr r3, [r3, #44] ; 0x2c + 8000934: f043 0201 orr.w r2, r3, #1 + 8000938: 687b ldr r3, [r7, #4] + 800093a: 62da str r2, [r3, #44] ; 0x2c + + tmp_hal_status = HAL_ERROR; + 800093c: 2301 movs r3, #1 + 800093e: 75fb strb r3, [r7, #23] + if (READ_BIT(hadc->Instance->CR2, ~(ADC_CR2_ADON | ADC_CR2_DMA | + 8000940: e007 b.n 8000952 + + } + else + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + 8000942: 687b ldr r3, [r7, #4] + 8000944: 6a9b ldr r3, [r3, #40] ; 0x28 + 8000946: f043 0210 orr.w r2, r3, #16 + 800094a: 687b ldr r3, [r7, #4] + 800094c: 629a str r2, [r3, #40] ; 0x28 + + tmp_hal_status = HAL_ERROR; + 800094e: 2301 movs r3, #1 + 8000950: 75fb strb r3, [r7, #23] + } + + /* Return function status */ + return tmp_hal_status; + 8000952: 7dfb ldrb r3, [r7, #23] +} + 8000954: 4618 mov r0, r3 + 8000956: 3718 adds r7, #24 + 8000958: 46bd mov sp, r7 + 800095a: bd80 pop {r7, pc} + 800095c: ffe1f7fd .word 0xffe1f7fd + 8000960: ff1f0efe .word 0xff1f0efe + +08000964 : + * @param hadc: ADC handle + * @param sConfig: Structure of ADC channel for regular group. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc, ADC_ChannelConfTypeDef* sConfig) +{ + 8000964: b480 push {r7} + 8000966: b085 sub sp, #20 + 8000968: af00 add r7, sp, #0 + 800096a: 6078 str r0, [r7, #4] + 800096c: 6039 str r1, [r7, #0] + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 800096e: 2300 movs r3, #0 + 8000970: 73fb strb r3, [r7, #15] + __IO uint32_t wait_loop_index = 0U; + 8000972: 2300 movs r3, #0 + 8000974: 60bb str r3, [r7, #8] + assert_param(IS_ADC_CHANNEL(sConfig->Channel)); + assert_param(IS_ADC_REGULAR_RANK(sConfig->Rank)); + assert_param(IS_ADC_SAMPLE_TIME(sConfig->SamplingTime)); + + /* Process locked */ + __HAL_LOCK(hadc); + 8000976: 687b ldr r3, [r7, #4] + 8000978: f893 3024 ldrb.w r3, [r3, #36] ; 0x24 + 800097c: 2b01 cmp r3, #1 + 800097e: d101 bne.n 8000984 + 8000980: 2302 movs r3, #2 + 8000982: e0dc b.n 8000b3e + 8000984: 687b ldr r3, [r7, #4] + 8000986: 2201 movs r2, #1 + 8000988: f883 2024 strb.w r2, [r3, #36] ; 0x24 + + + /* Regular sequence configuration */ + /* For Rank 1 to 6 */ + if (sConfig->Rank < 7U) + 800098c: 683b ldr r3, [r7, #0] + 800098e: 685b ldr r3, [r3, #4] + 8000990: 2b06 cmp r3, #6 + 8000992: d81c bhi.n 80009ce + { + MODIFY_REG(hadc->Instance->SQR3 , + 8000994: 687b ldr r3, [r7, #4] + 8000996: 681b ldr r3, [r3, #0] + 8000998: 6b59 ldr r1, [r3, #52] ; 0x34 + 800099a: 683b ldr r3, [r7, #0] + 800099c: 685a ldr r2, [r3, #4] + 800099e: 4613 mov r3, r2 + 80009a0: 009b lsls r3, r3, #2 + 80009a2: 4413 add r3, r2 + 80009a4: 3b05 subs r3, #5 + 80009a6: 221f movs r2, #31 + 80009a8: fa02 f303 lsl.w r3, r2, r3 + 80009ac: 43db mvns r3, r3 + 80009ae: 4019 ands r1, r3 + 80009b0: 683b ldr r3, [r7, #0] + 80009b2: 6818 ldr r0, [r3, #0] + 80009b4: 683b ldr r3, [r7, #0] + 80009b6: 685a ldr r2, [r3, #4] + 80009b8: 4613 mov r3, r2 + 80009ba: 009b lsls r3, r3, #2 + 80009bc: 4413 add r3, r2 + 80009be: 3b05 subs r3, #5 + 80009c0: fa00 f203 lsl.w r2, r0, r3 + 80009c4: 687b ldr r3, [r7, #4] + 80009c6: 681b ldr r3, [r3, #0] + 80009c8: 430a orrs r2, r1 + 80009ca: 635a str r2, [r3, #52] ; 0x34 + 80009cc: e03c b.n 8000a48 + ADC_SQR3_RK(ADC_SQR3_SQ1, sConfig->Rank) , + ADC_SQR3_RK(sConfig->Channel, sConfig->Rank) ); + } + /* For Rank 7 to 12 */ + else if (sConfig->Rank < 13U) + 80009ce: 683b ldr r3, [r7, #0] + 80009d0: 685b ldr r3, [r3, #4] + 80009d2: 2b0c cmp r3, #12 + 80009d4: d81c bhi.n 8000a10 + { + MODIFY_REG(hadc->Instance->SQR2 , + 80009d6: 687b ldr r3, [r7, #4] + 80009d8: 681b ldr r3, [r3, #0] + 80009da: 6b19 ldr r1, [r3, #48] ; 0x30 + 80009dc: 683b ldr r3, [r7, #0] + 80009de: 685a ldr r2, [r3, #4] + 80009e0: 4613 mov r3, r2 + 80009e2: 009b lsls r3, r3, #2 + 80009e4: 4413 add r3, r2 + 80009e6: 3b23 subs r3, #35 ; 0x23 + 80009e8: 221f movs r2, #31 + 80009ea: fa02 f303 lsl.w r3, r2, r3 + 80009ee: 43db mvns r3, r3 + 80009f0: 4019 ands r1, r3 + 80009f2: 683b ldr r3, [r7, #0] + 80009f4: 6818 ldr r0, [r3, #0] + 80009f6: 683b ldr r3, [r7, #0] + 80009f8: 685a ldr r2, [r3, #4] + 80009fa: 4613 mov r3, r2 + 80009fc: 009b lsls r3, r3, #2 + 80009fe: 4413 add r3, r2 + 8000a00: 3b23 subs r3, #35 ; 0x23 + 8000a02: fa00 f203 lsl.w r2, r0, r3 + 8000a06: 687b ldr r3, [r7, #4] + 8000a08: 681b ldr r3, [r3, #0] + 8000a0a: 430a orrs r2, r1 + 8000a0c: 631a str r2, [r3, #48] ; 0x30 + 8000a0e: e01b b.n 8000a48 + ADC_SQR2_RK(sConfig->Channel, sConfig->Rank) ); + } + /* For Rank 13 to 16 */ + else + { + MODIFY_REG(hadc->Instance->SQR1 , + 8000a10: 687b ldr r3, [r7, #4] + 8000a12: 681b ldr r3, [r3, #0] + 8000a14: 6ad9 ldr r1, [r3, #44] ; 0x2c + 8000a16: 683b ldr r3, [r7, #0] + 8000a18: 685a ldr r2, [r3, #4] + 8000a1a: 4613 mov r3, r2 + 8000a1c: 009b lsls r3, r3, #2 + 8000a1e: 4413 add r3, r2 + 8000a20: 3b41 subs r3, #65 ; 0x41 + 8000a22: 221f movs r2, #31 + 8000a24: fa02 f303 lsl.w r3, r2, r3 + 8000a28: 43db mvns r3, r3 + 8000a2a: 4019 ands r1, r3 + 8000a2c: 683b ldr r3, [r7, #0] + 8000a2e: 6818 ldr r0, [r3, #0] + 8000a30: 683b ldr r3, [r7, #0] + 8000a32: 685a ldr r2, [r3, #4] + 8000a34: 4613 mov r3, r2 + 8000a36: 009b lsls r3, r3, #2 + 8000a38: 4413 add r3, r2 + 8000a3a: 3b41 subs r3, #65 ; 0x41 + 8000a3c: fa00 f203 lsl.w r2, r0, r3 + 8000a40: 687b ldr r3, [r7, #4] + 8000a42: 681b ldr r3, [r3, #0] + 8000a44: 430a orrs r2, r1 + 8000a46: 62da str r2, [r3, #44] ; 0x2c + } + + + /* Channel sampling time configuration */ + /* For channels 10 to 17 */ + if (sConfig->Channel >= ADC_CHANNEL_10) + 8000a48: 683b ldr r3, [r7, #0] + 8000a4a: 681b ldr r3, [r3, #0] + 8000a4c: 2b09 cmp r3, #9 + 8000a4e: d91c bls.n 8000a8a + { + MODIFY_REG(hadc->Instance->SMPR1 , + 8000a50: 687b ldr r3, [r7, #4] + 8000a52: 681b ldr r3, [r3, #0] + 8000a54: 68d9 ldr r1, [r3, #12] + 8000a56: 683b ldr r3, [r7, #0] + 8000a58: 681a ldr r2, [r3, #0] + 8000a5a: 4613 mov r3, r2 + 8000a5c: 005b lsls r3, r3, #1 + 8000a5e: 4413 add r3, r2 + 8000a60: 3b1e subs r3, #30 + 8000a62: 2207 movs r2, #7 + 8000a64: fa02 f303 lsl.w r3, r2, r3 + 8000a68: 43db mvns r3, r3 + 8000a6a: 4019 ands r1, r3 + 8000a6c: 683b ldr r3, [r7, #0] + 8000a6e: 6898 ldr r0, [r3, #8] + 8000a70: 683b ldr r3, [r7, #0] + 8000a72: 681a ldr r2, [r3, #0] + 8000a74: 4613 mov r3, r2 + 8000a76: 005b lsls r3, r3, #1 + 8000a78: 4413 add r3, r2 + 8000a7a: 3b1e subs r3, #30 + 8000a7c: fa00 f203 lsl.w r2, r0, r3 + 8000a80: 687b ldr r3, [r7, #4] + 8000a82: 681b ldr r3, [r3, #0] + 8000a84: 430a orrs r2, r1 + 8000a86: 60da str r2, [r3, #12] + 8000a88: e019 b.n 8000abe + ADC_SMPR1(ADC_SMPR1_SMP10, sConfig->Channel) , + ADC_SMPR1(sConfig->SamplingTime, sConfig->Channel) ); + } + else /* For channels 0 to 9 */ + { + MODIFY_REG(hadc->Instance->SMPR2 , + 8000a8a: 687b ldr r3, [r7, #4] + 8000a8c: 681b ldr r3, [r3, #0] + 8000a8e: 6919 ldr r1, [r3, #16] + 8000a90: 683b ldr r3, [r7, #0] + 8000a92: 681a ldr r2, [r3, #0] + 8000a94: 4613 mov r3, r2 + 8000a96: 005b lsls r3, r3, #1 + 8000a98: 4413 add r3, r2 + 8000a9a: 2207 movs r2, #7 + 8000a9c: fa02 f303 lsl.w r3, r2, r3 + 8000aa0: 43db mvns r3, r3 + 8000aa2: 4019 ands r1, r3 + 8000aa4: 683b ldr r3, [r7, #0] + 8000aa6: 6898 ldr r0, [r3, #8] + 8000aa8: 683b ldr r3, [r7, #0] + 8000aaa: 681a ldr r2, [r3, #0] + 8000aac: 4613 mov r3, r2 + 8000aae: 005b lsls r3, r3, #1 + 8000ab0: 4413 add r3, r2 + 8000ab2: fa00 f203 lsl.w r2, r0, r3 + 8000ab6: 687b ldr r3, [r7, #4] + 8000ab8: 681b ldr r3, [r3, #0] + 8000aba: 430a orrs r2, r1 + 8000abc: 611a str r2, [r3, #16] + ADC_SMPR2(sConfig->SamplingTime, sConfig->Channel) ); + } + + /* If ADC1 Channel_16 or Channel_17 is selected, enable Temperature sensor */ + /* and VREFINT measurement path. */ + if ((sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) || + 8000abe: 683b ldr r3, [r7, #0] + 8000ac0: 681b ldr r3, [r3, #0] + 8000ac2: 2b10 cmp r3, #16 + 8000ac4: d003 beq.n 8000ace + (sConfig->Channel == ADC_CHANNEL_VREFINT) ) + 8000ac6: 683b ldr r3, [r7, #0] + 8000ac8: 681b ldr r3, [r3, #0] + if ((sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) || + 8000aca: 2b11 cmp r3, #17 + 8000acc: d132 bne.n 8000b34 + { + /* For STM32F1 devices with several ADC: Only ADC1 can access internal */ + /* measurement channels (VrefInt/TempSensor). If these channels are */ + /* intended to be set on other ADC instances, an error is reported. */ + if (hadc->Instance == ADC1) + 8000ace: 687b ldr r3, [r7, #4] + 8000ad0: 681b ldr r3, [r3, #0] + 8000ad2: 4a1d ldr r2, [pc, #116] ; (8000b48 ) + 8000ad4: 4293 cmp r3, r2 + 8000ad6: d125 bne.n 8000b24 + { + if (READ_BIT(hadc->Instance->CR2, ADC_CR2_TSVREFE) == RESET) + 8000ad8: 687b ldr r3, [r7, #4] + 8000ada: 681b ldr r3, [r3, #0] + 8000adc: 689b ldr r3, [r3, #8] + 8000ade: f403 0300 and.w r3, r3, #8388608 ; 0x800000 + 8000ae2: 2b00 cmp r3, #0 + 8000ae4: d126 bne.n 8000b34 + { + SET_BIT(hadc->Instance->CR2, ADC_CR2_TSVREFE); + 8000ae6: 687b ldr r3, [r7, #4] + 8000ae8: 681b ldr r3, [r3, #0] + 8000aea: 689a ldr r2, [r3, #8] + 8000aec: 687b ldr r3, [r7, #4] + 8000aee: 681b ldr r3, [r3, #0] + 8000af0: f442 0200 orr.w r2, r2, #8388608 ; 0x800000 + 8000af4: 609a str r2, [r3, #8] + + if (sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) + 8000af6: 683b ldr r3, [r7, #0] + 8000af8: 681b ldr r3, [r3, #0] + 8000afa: 2b10 cmp r3, #16 + 8000afc: d11a bne.n 8000b34 + { + /* Delay for temperature sensor stabilization time */ + /* Compute number of CPU cycles to wait for */ + wait_loop_index = (ADC_TEMPSENSOR_DELAY_US * (SystemCoreClock / 1000000U)); + 8000afe: 4b13 ldr r3, [pc, #76] ; (8000b4c ) + 8000b00: 681b ldr r3, [r3, #0] + 8000b02: 4a13 ldr r2, [pc, #76] ; (8000b50 ) + 8000b04: fba2 2303 umull r2, r3, r2, r3 + 8000b08: 0c9a lsrs r2, r3, #18 + 8000b0a: 4613 mov r3, r2 + 8000b0c: 009b lsls r3, r3, #2 + 8000b0e: 4413 add r3, r2 + 8000b10: 005b lsls r3, r3, #1 + 8000b12: 60bb str r3, [r7, #8] + while(wait_loop_index != 0U) + 8000b14: e002 b.n 8000b1c + { + wait_loop_index--; + 8000b16: 68bb ldr r3, [r7, #8] + 8000b18: 3b01 subs r3, #1 + 8000b1a: 60bb str r3, [r7, #8] + while(wait_loop_index != 0U) + 8000b1c: 68bb ldr r3, [r7, #8] + 8000b1e: 2b00 cmp r3, #0 + 8000b20: d1f9 bne.n 8000b16 + 8000b22: e007 b.n 8000b34 + } + } + else + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); + 8000b24: 687b ldr r3, [r7, #4] + 8000b26: 6a9b ldr r3, [r3, #40] ; 0x28 + 8000b28: f043 0220 orr.w r2, r3, #32 + 8000b2c: 687b ldr r3, [r7, #4] + 8000b2e: 629a str r2, [r3, #40] ; 0x28 + + tmp_hal_status = HAL_ERROR; + 8000b30: 2301 movs r3, #1 + 8000b32: 73fb strb r3, [r7, #15] + } + } + + /* Process unlocked */ + __HAL_UNLOCK(hadc); + 8000b34: 687b ldr r3, [r7, #4] + 8000b36: 2200 movs r2, #0 + 8000b38: f883 2024 strb.w r2, [r3, #36] ; 0x24 + + /* Return function status */ + return tmp_hal_status; + 8000b3c: 7bfb ldrb r3, [r7, #15] +} + 8000b3e: 4618 mov r0, r3 + 8000b40: 3714 adds r7, #20 + 8000b42: 46bd mov sp, r7 + 8000b44: bc80 pop {r7} + 8000b46: 4770 bx lr + 8000b48: 40012400 .word 0x40012400 + 8000b4c: 20000000 .word 0x20000000 + 8000b50: 431bde83 .word 0x431bde83 + +08000b54 : + * stopped to disable the ADC. + * @param hadc: ADC handle + * @retval HAL status. + */ +HAL_StatusTypeDef ADC_ConversionStop_Disable(ADC_HandleTypeDef* hadc) +{ + 8000b54: b580 push {r7, lr} + 8000b56: b084 sub sp, #16 + 8000b58: af00 add r7, sp, #0 + 8000b5a: 6078 str r0, [r7, #4] + uint32_t tickstart = 0U; + 8000b5c: 2300 movs r3, #0 + 8000b5e: 60fb str r3, [r7, #12] + + /* Verification if ADC is not already disabled */ + if (ADC_IS_ENABLE(hadc) != RESET) + 8000b60: 687b ldr r3, [r7, #4] + 8000b62: 681b ldr r3, [r3, #0] + 8000b64: 689b ldr r3, [r3, #8] + 8000b66: f003 0301 and.w r3, r3, #1 + 8000b6a: 2b01 cmp r3, #1 + 8000b6c: d12e bne.n 8000bcc + { + /* Disable the ADC peripheral */ + __HAL_ADC_DISABLE(hadc); + 8000b6e: 687b ldr r3, [r7, #4] + 8000b70: 681b ldr r3, [r3, #0] + 8000b72: 689a ldr r2, [r3, #8] + 8000b74: 687b ldr r3, [r7, #4] + 8000b76: 681b ldr r3, [r3, #0] + 8000b78: f022 0201 bic.w r2, r2, #1 + 8000b7c: 609a str r2, [r3, #8] + + /* Get tick count */ + tickstart = HAL_GetTick(); + 8000b7e: f7ff fdeb bl 8000758 + 8000b82: 60f8 str r0, [r7, #12] + + /* Wait for ADC effectively disabled */ + while(ADC_IS_ENABLE(hadc) != RESET) + 8000b84: e01b b.n 8000bbe + { + if((HAL_GetTick() - tickstart) > ADC_DISABLE_TIMEOUT) + 8000b86: f7ff fde7 bl 8000758 + 8000b8a: 4602 mov r2, r0 + 8000b8c: 68fb ldr r3, [r7, #12] + 8000b8e: 1ad3 subs r3, r2, r3 + 8000b90: 2b02 cmp r3, #2 + 8000b92: d914 bls.n 8000bbe + { + /* New check to avoid false timeout detection in case of preemption */ + if(ADC_IS_ENABLE(hadc) != RESET) + 8000b94: 687b ldr r3, [r7, #4] + 8000b96: 681b ldr r3, [r3, #0] + 8000b98: 689b ldr r3, [r3, #8] + 8000b9a: f003 0301 and.w r3, r3, #1 + 8000b9e: 2b01 cmp r3, #1 + 8000ba0: d10d bne.n 8000bbe + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + 8000ba2: 687b ldr r3, [r7, #4] + 8000ba4: 6a9b ldr r3, [r3, #40] ; 0x28 + 8000ba6: f043 0210 orr.w r2, r3, #16 + 8000baa: 687b ldr r3, [r7, #4] + 8000bac: 629a str r2, [r3, #40] ; 0x28 + + /* Set ADC error code to ADC IP internal error */ + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + 8000bae: 687b ldr r3, [r7, #4] + 8000bb0: 6adb ldr r3, [r3, #44] ; 0x2c + 8000bb2: f043 0201 orr.w r2, r3, #1 + 8000bb6: 687b ldr r3, [r7, #4] + 8000bb8: 62da str r2, [r3, #44] ; 0x2c + + return HAL_ERROR; + 8000bba: 2301 movs r3, #1 + 8000bbc: e007 b.n 8000bce + while(ADC_IS_ENABLE(hadc) != RESET) + 8000bbe: 687b ldr r3, [r7, #4] + 8000bc0: 681b ldr r3, [r3, #0] + 8000bc2: 689b ldr r3, [r3, #8] + 8000bc4: f003 0301 and.w r3, r3, #1 + 8000bc8: 2b01 cmp r3, #1 + 8000bca: d0dc beq.n 8000b86 + } + } + } + + /* Return HAL status */ + return HAL_OK; + 8000bcc: 2300 movs r3, #0 +} + 8000bce: 4618 mov r0, r3 + 8000bd0: 3710 adds r7, #16 + 8000bd2: 46bd mov sp, r7 + 8000bd4: bd80 pop {r7, pc} + ... + +08000bd8 <__NVIC_SetPriorityGrouping>: In case of a conflict between priority grouping and available priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. \param [in] PriorityGroup Priority grouping field. */ __STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) { - 8000420: b480 push {r7} - 8000422: b085 sub sp, #20 - 8000424: af00 add r7, sp, #0 - 8000426: 6078 str r0, [r7, #4] + 8000bd8: b480 push {r7} + 8000bda: b085 sub sp, #20 + 8000bdc: af00 add r7, sp, #0 + 8000bde: 6078 str r0, [r7, #4] uint32_t reg_value; uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ - 8000428: 687b ldr r3, [r7, #4] - 800042a: f003 0307 and.w r3, r3, #7 - 800042e: 60fb str r3, [r7, #12] + 8000be0: 687b ldr r3, [r7, #4] + 8000be2: f003 0307 and.w r3, r3, #7 + 8000be6: 60fb str r3, [r7, #12] reg_value = SCB->AIRCR; /* read old register configuration */ - 8000430: 4b0c ldr r3, [pc, #48] ; (8000464 <__NVIC_SetPriorityGrouping+0x44>) - 8000432: 68db ldr r3, [r3, #12] - 8000434: 60bb str r3, [r7, #8] + 8000be8: 4b0c ldr r3, [pc, #48] ; (8000c1c <__NVIC_SetPriorityGrouping+0x44>) + 8000bea: 68db ldr r3, [r3, #12] + 8000bec: 60bb str r3, [r7, #8] reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ - 8000436: 68ba ldr r2, [r7, #8] - 8000438: f64f 03ff movw r3, #63743 ; 0xf8ff - 800043c: 4013 ands r3, r2 - 800043e: 60bb str r3, [r7, #8] + 8000bee: 68ba ldr r2, [r7, #8] + 8000bf0: f64f 03ff movw r3, #63743 ; 0xf8ff + 8000bf4: 4013 ands r3, r2 + 8000bf6: 60bb str r3, [r7, #8] reg_value = (reg_value | ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ - 8000440: 68fb ldr r3, [r7, #12] - 8000442: 021a lsls r2, r3, #8 + 8000bf8: 68fb ldr r3, [r7, #12] + 8000bfa: 021a lsls r2, r3, #8 ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | - 8000444: 68bb ldr r3, [r7, #8] - 8000446: 4313 orrs r3, r2 + 8000bfc: 68bb ldr r3, [r7, #8] + 8000bfe: 4313 orrs r3, r2 reg_value = (reg_value | - 8000448: f043 63bf orr.w r3, r3, #100139008 ; 0x5f80000 - 800044c: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 8000450: 60bb str r3, [r7, #8] + 8000c00: f043 63bf orr.w r3, r3, #100139008 ; 0x5f80000 + 8000c04: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 8000c08: 60bb str r3, [r7, #8] SCB->AIRCR = reg_value; - 8000452: 4a04 ldr r2, [pc, #16] ; (8000464 <__NVIC_SetPriorityGrouping+0x44>) - 8000454: 68bb ldr r3, [r7, #8] - 8000456: 60d3 str r3, [r2, #12] + 8000c0a: 4a04 ldr r2, [pc, #16] ; (8000c1c <__NVIC_SetPriorityGrouping+0x44>) + 8000c0c: 68bb ldr r3, [r7, #8] + 8000c0e: 60d3 str r3, [r2, #12] } - 8000458: bf00 nop - 800045a: 3714 adds r7, #20 - 800045c: 46bd mov sp, r7 - 800045e: bc80 pop {r7} - 8000460: 4770 bx lr - 8000462: bf00 nop - 8000464: e000ed00 .word 0xe000ed00 + 8000c10: bf00 nop + 8000c12: 3714 adds r7, #20 + 8000c14: 46bd mov sp, r7 + 8000c16: bc80 pop {r7} + 8000c18: 4770 bx lr + 8000c1a: bf00 nop + 8000c1c: e000ed00 .word 0xe000ed00 -08000468 <__NVIC_GetPriorityGrouping>: +08000c20 <__NVIC_GetPriorityGrouping>: \brief Get Priority Grouping \details Reads the priority grouping field from the NVIC Interrupt Controller. \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). */ __STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) { - 8000468: b480 push {r7} - 800046a: af00 add r7, sp, #0 + 8000c20: b480 push {r7} + 8000c22: af00 add r7, sp, #0 return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); - 800046c: 4b04 ldr r3, [pc, #16] ; (8000480 <__NVIC_GetPriorityGrouping+0x18>) - 800046e: 68db ldr r3, [r3, #12] - 8000470: 0a1b lsrs r3, r3, #8 - 8000472: f003 0307 and.w r3, r3, #7 + 8000c24: 4b04 ldr r3, [pc, #16] ; (8000c38 <__NVIC_GetPriorityGrouping+0x18>) + 8000c26: 68db ldr r3, [r3, #12] + 8000c28: 0a1b lsrs r3, r3, #8 + 8000c2a: f003 0307 and.w r3, r3, #7 } - 8000476: 4618 mov r0, r3 - 8000478: 46bd mov sp, r7 - 800047a: bc80 pop {r7} - 800047c: 4770 bx lr - 800047e: bf00 nop - 8000480: e000ed00 .word 0xe000ed00 + 8000c2e: 4618 mov r0, r3 + 8000c30: 46bd mov sp, r7 + 8000c32: bc80 pop {r7} + 8000c34: 4770 bx lr + 8000c36: bf00 nop + 8000c38: e000ed00 .word 0xe000ed00 -08000484 <__NVIC_SetPriority>: +08000c3c <__NVIC_EnableIRQ>: + \details Enables a device specific interrupt in the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +{ + 8000c3c: b480 push {r7} + 8000c3e: b083 sub sp, #12 + 8000c40: af00 add r7, sp, #0 + 8000c42: 4603 mov r3, r0 + 8000c44: 71fb strb r3, [r7, #7] + if ((int32_t)(IRQn) >= 0) + 8000c46: f997 3007 ldrsb.w r3, [r7, #7] + 8000c4a: 2b00 cmp r3, #0 + 8000c4c: db0b blt.n 8000c66 <__NVIC_EnableIRQ+0x2a> + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + 8000c4e: 79fb ldrb r3, [r7, #7] + 8000c50: f003 021f and.w r2, r3, #31 + 8000c54: 4906 ldr r1, [pc, #24] ; (8000c70 <__NVIC_EnableIRQ+0x34>) + 8000c56: f997 3007 ldrsb.w r3, [r7, #7] + 8000c5a: 095b lsrs r3, r3, #5 + 8000c5c: 2001 movs r0, #1 + 8000c5e: fa00 f202 lsl.w r2, r0, r2 + 8000c62: f841 2023 str.w r2, [r1, r3, lsl #2] + } +} + 8000c66: bf00 nop + 8000c68: 370c adds r7, #12 + 8000c6a: 46bd mov sp, r7 + 8000c6c: bc80 pop {r7} + 8000c6e: 4770 bx lr + 8000c70: e000e100 .word 0xe000e100 + +08000c74 <__NVIC_SetPriority>: \param [in] IRQn Interrupt number. \param [in] priority Priority to set. \note The priority cannot be set for every processor exception. */ __STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) { - 8000484: b480 push {r7} - 8000486: b083 sub sp, #12 - 8000488: af00 add r7, sp, #0 - 800048a: 4603 mov r3, r0 - 800048c: 6039 str r1, [r7, #0] - 800048e: 71fb strb r3, [r7, #7] + 8000c74: b480 push {r7} + 8000c76: b083 sub sp, #12 + 8000c78: af00 add r7, sp, #0 + 8000c7a: 4603 mov r3, r0 + 8000c7c: 6039 str r1, [r7, #0] + 8000c7e: 71fb strb r3, [r7, #7] if ((int32_t)(IRQn) >= 0) - 8000490: f997 3007 ldrsb.w r3, [r7, #7] - 8000494: 2b00 cmp r3, #0 - 8000496: db0a blt.n 80004ae <__NVIC_SetPriority+0x2a> + 8000c80: f997 3007 ldrsb.w r3, [r7, #7] + 8000c84: 2b00 cmp r3, #0 + 8000c86: db0a blt.n 8000c9e <__NVIC_SetPriority+0x2a> { NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); - 8000498: 683b ldr r3, [r7, #0] - 800049a: b2da uxtb r2, r3 - 800049c: 490c ldr r1, [pc, #48] ; (80004d0 <__NVIC_SetPriority+0x4c>) - 800049e: f997 3007 ldrsb.w r3, [r7, #7] - 80004a2: 0112 lsls r2, r2, #4 - 80004a4: b2d2 uxtb r2, r2 - 80004a6: 440b add r3, r1 - 80004a8: f883 2300 strb.w r2, [r3, #768] ; 0x300 + 8000c88: 683b ldr r3, [r7, #0] + 8000c8a: b2da uxtb r2, r3 + 8000c8c: 490c ldr r1, [pc, #48] ; (8000cc0 <__NVIC_SetPriority+0x4c>) + 8000c8e: f997 3007 ldrsb.w r3, [r7, #7] + 8000c92: 0112 lsls r2, r2, #4 + 8000c94: b2d2 uxtb r2, r2 + 8000c96: 440b add r3, r1 + 8000c98: f883 2300 strb.w r2, [r3, #768] ; 0x300 } else { SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); } } - 80004ac: e00a b.n 80004c4 <__NVIC_SetPriority+0x40> + 8000c9c: e00a b.n 8000cb4 <__NVIC_SetPriority+0x40> SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); - 80004ae: 683b ldr r3, [r7, #0] - 80004b0: b2da uxtb r2, r3 - 80004b2: 4908 ldr r1, [pc, #32] ; (80004d4 <__NVIC_SetPriority+0x50>) - 80004b4: 79fb ldrb r3, [r7, #7] - 80004b6: f003 030f and.w r3, r3, #15 - 80004ba: 3b04 subs r3, #4 - 80004bc: 0112 lsls r2, r2, #4 - 80004be: b2d2 uxtb r2, r2 - 80004c0: 440b add r3, r1 - 80004c2: 761a strb r2, [r3, #24] + 8000c9e: 683b ldr r3, [r7, #0] + 8000ca0: b2da uxtb r2, r3 + 8000ca2: 4908 ldr r1, [pc, #32] ; (8000cc4 <__NVIC_SetPriority+0x50>) + 8000ca4: 79fb ldrb r3, [r7, #7] + 8000ca6: f003 030f and.w r3, r3, #15 + 8000caa: 3b04 subs r3, #4 + 8000cac: 0112 lsls r2, r2, #4 + 8000cae: b2d2 uxtb r2, r2 + 8000cb0: 440b add r3, r1 + 8000cb2: 761a strb r2, [r3, #24] } - 80004c4: bf00 nop - 80004c6: 370c adds r7, #12 - 80004c8: 46bd mov sp, r7 - 80004ca: bc80 pop {r7} - 80004cc: 4770 bx lr - 80004ce: bf00 nop - 80004d0: e000e100 .word 0xe000e100 - 80004d4: e000ed00 .word 0xe000ed00 + 8000cb4: bf00 nop + 8000cb6: 370c adds r7, #12 + 8000cb8: 46bd mov sp, r7 + 8000cba: bc80 pop {r7} + 8000cbc: 4770 bx lr + 8000cbe: bf00 nop + 8000cc0: e000e100 .word 0xe000e100 + 8000cc4: e000ed00 .word 0xe000ed00 -080004d8 : +08000cc8 : \param [in] PreemptPriority Preemptive priority value (starting from 0). \param [in] SubPriority Subpriority value (starting from 0). \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). */ __STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) { - 80004d8: b480 push {r7} - 80004da: b089 sub sp, #36 ; 0x24 - 80004dc: af00 add r7, sp, #0 - 80004de: 60f8 str r0, [r7, #12] - 80004e0: 60b9 str r1, [r7, #8] - 80004e2: 607a str r2, [r7, #4] + 8000cc8: b480 push {r7} + 8000cca: b089 sub sp, #36 ; 0x24 + 8000ccc: af00 add r7, sp, #0 + 8000cce: 60f8 str r0, [r7, #12] + 8000cd0: 60b9 str r1, [r7, #8] + 8000cd2: 607a str r2, [r7, #4] uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ - 80004e4: 68fb ldr r3, [r7, #12] - 80004e6: f003 0307 and.w r3, r3, #7 - 80004ea: 61fb str r3, [r7, #28] + 8000cd4: 68fb ldr r3, [r7, #12] + 8000cd6: f003 0307 and.w r3, r3, #7 + 8000cda: 61fb str r3, [r7, #28] uint32_t PreemptPriorityBits; uint32_t SubPriorityBits; PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); - 80004ec: 69fb ldr r3, [r7, #28] - 80004ee: f1c3 0307 rsb r3, r3, #7 - 80004f2: 2b04 cmp r3, #4 - 80004f4: bf28 it cs - 80004f6: 2304 movcs r3, #4 - 80004f8: 61bb str r3, [r7, #24] + 8000cdc: 69fb ldr r3, [r7, #28] + 8000cde: f1c3 0307 rsb r3, r3, #7 + 8000ce2: 2b04 cmp r3, #4 + 8000ce4: bf28 it cs + 8000ce6: 2304 movcs r3, #4 + 8000ce8: 61bb str r3, [r7, #24] SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); - 80004fa: 69fb ldr r3, [r7, #28] - 80004fc: 3304 adds r3, #4 - 80004fe: 2b06 cmp r3, #6 - 8000500: d902 bls.n 8000508 - 8000502: 69fb ldr r3, [r7, #28] - 8000504: 3b03 subs r3, #3 - 8000506: e000 b.n 800050a - 8000508: 2300 movs r3, #0 - 800050a: 617b str r3, [r7, #20] + 8000cea: 69fb ldr r3, [r7, #28] + 8000cec: 3304 adds r3, #4 + 8000cee: 2b06 cmp r3, #6 + 8000cf0: d902 bls.n 8000cf8 + 8000cf2: 69fb ldr r3, [r7, #28] + 8000cf4: 3b03 subs r3, #3 + 8000cf6: e000 b.n 8000cfa + 8000cf8: 2300 movs r3, #0 + 8000cfa: 617b str r3, [r7, #20] return ( ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | - 800050c: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff - 8000510: 69bb ldr r3, [r7, #24] - 8000512: fa02 f303 lsl.w r3, r2, r3 - 8000516: 43da mvns r2, r3 - 8000518: 68bb ldr r3, [r7, #8] - 800051a: 401a ands r2, r3 - 800051c: 697b ldr r3, [r7, #20] - 800051e: 409a lsls r2, r3 + 8000cfc: f04f 32ff mov.w r2, #4294967295 + 8000d00: 69bb ldr r3, [r7, #24] + 8000d02: fa02 f303 lsl.w r3, r2, r3 + 8000d06: 43da mvns r2, r3 + 8000d08: 68bb ldr r3, [r7, #8] + 8000d0a: 401a ands r2, r3 + 8000d0c: 697b ldr r3, [r7, #20] + 8000d0e: 409a lsls r2, r3 ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) - 8000520: f04f 31ff mov.w r1, #4294967295 ; 0xffffffff - 8000524: 697b ldr r3, [r7, #20] - 8000526: fa01 f303 lsl.w r3, r1, r3 - 800052a: 43d9 mvns r1, r3 - 800052c: 687b ldr r3, [r7, #4] - 800052e: 400b ands r3, r1 + 8000d10: f04f 31ff mov.w r1, #4294967295 + 8000d14: 697b ldr r3, [r7, #20] + 8000d16: fa01 f303 lsl.w r3, r1, r3 + 8000d1a: 43d9 mvns r1, r3 + 8000d1c: 687b ldr r3, [r7, #4] + 8000d1e: 400b ands r3, r1 ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | - 8000530: 4313 orrs r3, r2 + 8000d20: 4313 orrs r3, r2 ); } - 8000532: 4618 mov r0, r3 - 8000534: 3724 adds r7, #36 ; 0x24 - 8000536: 46bd mov sp, r7 - 8000538: bc80 pop {r7} - 800053a: 4770 bx lr + 8000d22: 4618 mov r0, r3 + 8000d24: 3724 adds r7, #36 ; 0x24 + 8000d26: 46bd mov sp, r7 + 8000d28: bc80 pop {r7} + 8000d2a: 4770 bx lr -0800053c : +08000d2c : \note When the variable __Vendor_SysTickConfig is set to 1, then the function SysTick_Config is not included. In this case, the file device.h must contain a vendor-specific implementation of this function. */ __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) { - 800053c: b580 push {r7, lr} - 800053e: b082 sub sp, #8 - 8000540: af00 add r7, sp, #0 - 8000542: 6078 str r0, [r7, #4] + 8000d2c: b580 push {r7, lr} + 8000d2e: b082 sub sp, #8 + 8000d30: af00 add r7, sp, #0 + 8000d32: 6078 str r0, [r7, #4] if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) - 8000544: 687b ldr r3, [r7, #4] - 8000546: 3b01 subs r3, #1 - 8000548: f1b3 7f80 cmp.w r3, #16777216 ; 0x1000000 - 800054c: d301 bcc.n 8000552 + 8000d34: 687b ldr r3, [r7, #4] + 8000d36: 3b01 subs r3, #1 + 8000d38: f1b3 7f80 cmp.w r3, #16777216 ; 0x1000000 + 8000d3c: d301 bcc.n 8000d42 { return (1UL); /* Reload value impossible */ - 800054e: 2301 movs r3, #1 - 8000550: e00f b.n 8000572 + 8000d3e: 2301 movs r3, #1 + 8000d40: e00f b.n 8000d62 } SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ - 8000552: 4a0a ldr r2, [pc, #40] ; (800057c ) - 8000554: 687b ldr r3, [r7, #4] - 8000556: 3b01 subs r3, #1 - 8000558: 6053 str r3, [r2, #4] + 8000d42: 4a0a ldr r2, [pc, #40] ; (8000d6c ) + 8000d44: 687b ldr r3, [r7, #4] + 8000d46: 3b01 subs r3, #1 + 8000d48: 6053 str r3, [r2, #4] NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ - 800055a: 210f movs r1, #15 - 800055c: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff - 8000560: f7ff ff90 bl 8000484 <__NVIC_SetPriority> + 8000d4a: 210f movs r1, #15 + 8000d4c: f04f 30ff mov.w r0, #4294967295 + 8000d50: f7ff ff90 bl 8000c74 <__NVIC_SetPriority> SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ - 8000564: 4b05 ldr r3, [pc, #20] ; (800057c ) - 8000566: 2200 movs r2, #0 - 8000568: 609a str r2, [r3, #8] + 8000d54: 4b05 ldr r3, [pc, #20] ; (8000d6c ) + 8000d56: 2200 movs r2, #0 + 8000d58: 609a str r2, [r3, #8] SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - 800056a: 4b04 ldr r3, [pc, #16] ; (800057c ) - 800056c: 2207 movs r2, #7 - 800056e: 601a str r2, [r3, #0] + 8000d5a: 4b04 ldr r3, [pc, #16] ; (8000d6c ) + 8000d5c: 2207 movs r2, #7 + 8000d5e: 601a str r2, [r3, #0] SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ return (0UL); /* Function successful */ - 8000570: 2300 movs r3, #0 + 8000d60: 2300 movs r3, #0 } - 8000572: 4618 mov r0, r3 - 8000574: 3708 adds r7, #8 - 8000576: 46bd mov sp, r7 - 8000578: bd80 pop {r7, pc} - 800057a: bf00 nop - 800057c: e000e010 .word 0xe000e010 + 8000d62: 4618 mov r0, r3 + 8000d64: 3708 adds r7, #8 + 8000d66: 46bd mov sp, r7 + 8000d68: bd80 pop {r7, pc} + 8000d6a: bf00 nop + 8000d6c: e000e010 .word 0xe000e010 -08000580 : +08000d70 : * @note When the NVIC_PriorityGroup_0 is selected, IRQ preemption is no more possible. * The pending IRQ priority will be managed only by the subpriority. * @retval None */ void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup) { - 8000580: b580 push {r7, lr} - 8000582: b082 sub sp, #8 - 8000584: af00 add r7, sp, #0 - 8000586: 6078 str r0, [r7, #4] + 8000d70: b580 push {r7, lr} + 8000d72: b082 sub sp, #8 + 8000d74: af00 add r7, sp, #0 + 8000d76: 6078 str r0, [r7, #4] /* Check the parameters */ assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */ NVIC_SetPriorityGrouping(PriorityGroup); - 8000588: 6878 ldr r0, [r7, #4] - 800058a: f7ff ff49 bl 8000420 <__NVIC_SetPriorityGrouping> + 8000d78: 6878 ldr r0, [r7, #4] + 8000d7a: f7ff ff2d bl 8000bd8 <__NVIC_SetPriorityGrouping> } - 800058e: bf00 nop - 8000590: 3708 adds r7, #8 - 8000592: 46bd mov sp, r7 - 8000594: bd80 pop {r7, pc} + 8000d7e: bf00 nop + 8000d80: 3708 adds r7, #8 + 8000d82: 46bd mov sp, r7 + 8000d84: bd80 pop {r7, pc} -08000596 : +08000d86 : * This parameter can be a value between 0 and 15 * A lower priority value indicates a higher priority. * @retval None */ void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) { - 8000596: b580 push {r7, lr} - 8000598: b086 sub sp, #24 - 800059a: af00 add r7, sp, #0 - 800059c: 4603 mov r3, r0 - 800059e: 60b9 str r1, [r7, #8] - 80005a0: 607a str r2, [r7, #4] - 80005a2: 73fb strb r3, [r7, #15] + 8000d86: b580 push {r7, lr} + 8000d88: b086 sub sp, #24 + 8000d8a: af00 add r7, sp, #0 + 8000d8c: 4603 mov r3, r0 + 8000d8e: 60b9 str r1, [r7, #8] + 8000d90: 607a str r2, [r7, #4] + 8000d92: 73fb strb r3, [r7, #15] uint32_t prioritygroup = 0x00U; - 80005a4: 2300 movs r3, #0 - 80005a6: 617b str r3, [r7, #20] + 8000d94: 2300 movs r3, #0 + 8000d96: 617b str r3, [r7, #20] /* Check the parameters */ assert_param(IS_NVIC_SUB_PRIORITY(SubPriority)); assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); prioritygroup = NVIC_GetPriorityGrouping(); - 80005a8: f7ff ff5e bl 8000468 <__NVIC_GetPriorityGrouping> - 80005ac: 6178 str r0, [r7, #20] + 8000d98: f7ff ff42 bl 8000c20 <__NVIC_GetPriorityGrouping> + 8000d9c: 6178 str r0, [r7, #20] NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); - 80005ae: 687a ldr r2, [r7, #4] - 80005b0: 68b9 ldr r1, [r7, #8] - 80005b2: 6978 ldr r0, [r7, #20] - 80005b4: f7ff ff90 bl 80004d8 - 80005b8: 4602 mov r2, r0 - 80005ba: f997 300f ldrsb.w r3, [r7, #15] - 80005be: 4611 mov r1, r2 - 80005c0: 4618 mov r0, r3 - 80005c2: f7ff ff5f bl 8000484 <__NVIC_SetPriority> + 8000d9e: 687a ldr r2, [r7, #4] + 8000da0: 68b9 ldr r1, [r7, #8] + 8000da2: 6978 ldr r0, [r7, #20] + 8000da4: f7ff ff90 bl 8000cc8 + 8000da8: 4602 mov r2, r0 + 8000daa: f997 300f ldrsb.w r3, [r7, #15] + 8000dae: 4611 mov r1, r2 + 8000db0: 4618 mov r0, r3 + 8000db2: f7ff ff5f bl 8000c74 <__NVIC_SetPriority> } - 80005c6: bf00 nop - 80005c8: 3718 adds r7, #24 - 80005ca: 46bd mov sp, r7 - 80005cc: bd80 pop {r7, pc} + 8000db6: bf00 nop + 8000db8: 3718 adds r7, #24 + 8000dba: 46bd mov sp, r7 + 8000dbc: bd80 pop {r7, pc} -080005ce : +08000dbe : + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f10xxx.h)) + * @retval None + */ +void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) +{ + 8000dbe: b580 push {r7, lr} + 8000dc0: b082 sub sp, #8 + 8000dc2: af00 add r7, sp, #0 + 8000dc4: 4603 mov r3, r0 + 8000dc6: 71fb strb r3, [r7, #7] + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Enable interrupt */ + NVIC_EnableIRQ(IRQn); + 8000dc8: f997 3007 ldrsb.w r3, [r7, #7] + 8000dcc: 4618 mov r0, r3 + 8000dce: f7ff ff35 bl 8000c3c <__NVIC_EnableIRQ> +} + 8000dd2: bf00 nop + 8000dd4: 3708 adds r7, #8 + 8000dd6: 46bd mov sp, r7 + 8000dd8: bd80 pop {r7, pc} + +08000dda : * @param TicksNumb: Specifies the ticks Number of ticks between two interrupts. * @retval status: - 0 Function succeeded. * - 1 Function failed. */ uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) { - 80005ce: b580 push {r7, lr} - 80005d0: b082 sub sp, #8 - 80005d2: af00 add r7, sp, #0 - 80005d4: 6078 str r0, [r7, #4] + 8000dda: b580 push {r7, lr} + 8000ddc: b082 sub sp, #8 + 8000dde: af00 add r7, sp, #0 + 8000de0: 6078 str r0, [r7, #4] return SysTick_Config(TicksNumb); - 80005d6: 6878 ldr r0, [r7, #4] - 80005d8: f7ff ffb0 bl 800053c - 80005dc: 4603 mov r3, r0 + 8000de2: 6878 ldr r0, [r7, #4] + 8000de4: f7ff ffa2 bl 8000d2c + 8000de8: 4603 mov r3, r0 } - 80005de: 4618 mov r0, r3 - 80005e0: 3708 adds r7, #8 - 80005e2: 46bd mov sp, r7 - 80005e4: bd80 pop {r7, pc} + 8000dea: 4618 mov r0, r3 + 8000dec: 3708 adds r7, #8 + 8000dee: 46bd mov sp, r7 + 8000df0: bd80 pop {r7, pc} ... -080005e8 : +08000df4 : + * @param GPIO_Init: pointer to a GPIO_InitTypeDef structure that contains + * the configuration information for the specified GPIO peripheral. + * @retval None + */ +void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) +{ + 8000df4: b480 push {r7} + 8000df6: b08b sub sp, #44 ; 0x2c + 8000df8: af00 add r7, sp, #0 + 8000dfa: 6078 str r0, [r7, #4] + 8000dfc: 6039 str r1, [r7, #0] + uint32_t position = 0x00u; + 8000dfe: 2300 movs r3, #0 + 8000e00: 627b str r3, [r7, #36] ; 0x24 + uint32_t ioposition; + uint32_t iocurrent; + uint32_t temp; + uint32_t config = 0x00u; + 8000e02: 2300 movs r3, #0 + 8000e04: 623b str r3, [r7, #32] + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); + assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); + + /* Configure the port pins */ + while (((GPIO_Init->Pin) >> position) != 0x00u) + 8000e06: e169 b.n 80010dc + { + /* Get the IO position */ + ioposition = (0x01uL << position); + 8000e08: 2201 movs r2, #1 + 8000e0a: 6a7b ldr r3, [r7, #36] ; 0x24 + 8000e0c: fa02 f303 lsl.w r3, r2, r3 + 8000e10: 61fb str r3, [r7, #28] + + /* Get the current IO position */ + iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition; + 8000e12: 683b ldr r3, [r7, #0] + 8000e14: 681b ldr r3, [r3, #0] + 8000e16: 69fa ldr r2, [r7, #28] + 8000e18: 4013 ands r3, r2 + 8000e1a: 61bb str r3, [r7, #24] + + if (iocurrent == ioposition) + 8000e1c: 69ba ldr r2, [r7, #24] + 8000e1e: 69fb ldr r3, [r7, #28] + 8000e20: 429a cmp r2, r3 + 8000e22: f040 8158 bne.w 80010d6 + { + /* Check the Alternate function parameters */ + assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); + + /* Based on the required mode, filling config variable with MODEy[1:0] and CNFy[3:2] corresponding bits */ + switch (GPIO_Init->Mode) + 8000e26: 683b ldr r3, [r7, #0] + 8000e28: 685b ldr r3, [r3, #4] + 8000e2a: 4a9a ldr r2, [pc, #616] ; (8001094 ) + 8000e2c: 4293 cmp r3, r2 + 8000e2e: d05e beq.n 8000eee + 8000e30: 4a98 ldr r2, [pc, #608] ; (8001094 ) + 8000e32: 4293 cmp r3, r2 + 8000e34: d875 bhi.n 8000f22 + 8000e36: 4a98 ldr r2, [pc, #608] ; (8001098 ) + 8000e38: 4293 cmp r3, r2 + 8000e3a: d058 beq.n 8000eee + 8000e3c: 4a96 ldr r2, [pc, #600] ; (8001098 ) + 8000e3e: 4293 cmp r3, r2 + 8000e40: d86f bhi.n 8000f22 + 8000e42: 4a96 ldr r2, [pc, #600] ; (800109c ) + 8000e44: 4293 cmp r3, r2 + 8000e46: d052 beq.n 8000eee + 8000e48: 4a94 ldr r2, [pc, #592] ; (800109c ) + 8000e4a: 4293 cmp r3, r2 + 8000e4c: d869 bhi.n 8000f22 + 8000e4e: 4a94 ldr r2, [pc, #592] ; (80010a0 ) + 8000e50: 4293 cmp r3, r2 + 8000e52: d04c beq.n 8000eee + 8000e54: 4a92 ldr r2, [pc, #584] ; (80010a0 ) + 8000e56: 4293 cmp r3, r2 + 8000e58: d863 bhi.n 8000f22 + 8000e5a: 4a92 ldr r2, [pc, #584] ; (80010a4 ) + 8000e5c: 4293 cmp r3, r2 + 8000e5e: d046 beq.n 8000eee + 8000e60: 4a90 ldr r2, [pc, #576] ; (80010a4 ) + 8000e62: 4293 cmp r3, r2 + 8000e64: d85d bhi.n 8000f22 + 8000e66: 2b12 cmp r3, #18 + 8000e68: d82a bhi.n 8000ec0 + 8000e6a: 2b12 cmp r3, #18 + 8000e6c: d859 bhi.n 8000f22 + 8000e6e: a201 add r2, pc, #4 ; (adr r2, 8000e74 ) + 8000e70: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8000e74: 08000eef .word 0x08000eef + 8000e78: 08000ec9 .word 0x08000ec9 + 8000e7c: 08000edb .word 0x08000edb + 8000e80: 08000f1d .word 0x08000f1d + 8000e84: 08000f23 .word 0x08000f23 + 8000e88: 08000f23 .word 0x08000f23 + 8000e8c: 08000f23 .word 0x08000f23 + 8000e90: 08000f23 .word 0x08000f23 + 8000e94: 08000f23 .word 0x08000f23 + 8000e98: 08000f23 .word 0x08000f23 + 8000e9c: 08000f23 .word 0x08000f23 + 8000ea0: 08000f23 .word 0x08000f23 + 8000ea4: 08000f23 .word 0x08000f23 + 8000ea8: 08000f23 .word 0x08000f23 + 8000eac: 08000f23 .word 0x08000f23 + 8000eb0: 08000f23 .word 0x08000f23 + 8000eb4: 08000f23 .word 0x08000f23 + 8000eb8: 08000ed1 .word 0x08000ed1 + 8000ebc: 08000ee5 .word 0x08000ee5 + 8000ec0: 4a79 ldr r2, [pc, #484] ; (80010a8 ) + 8000ec2: 4293 cmp r3, r2 + 8000ec4: d013 beq.n 8000eee + config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_ANALOG; + break; + + /* Parameters are checked with assert_param */ + default: + break; + 8000ec6: e02c b.n 8000f22 + config = GPIO_Init->Speed + GPIO_CR_CNF_GP_OUTPUT_PP; + 8000ec8: 683b ldr r3, [r7, #0] + 8000eca: 68db ldr r3, [r3, #12] + 8000ecc: 623b str r3, [r7, #32] + break; + 8000ece: e029 b.n 8000f24 + config = GPIO_Init->Speed + GPIO_CR_CNF_GP_OUTPUT_OD; + 8000ed0: 683b ldr r3, [r7, #0] + 8000ed2: 68db ldr r3, [r3, #12] + 8000ed4: 3304 adds r3, #4 + 8000ed6: 623b str r3, [r7, #32] + break; + 8000ed8: e024 b.n 8000f24 + config = GPIO_Init->Speed + GPIO_CR_CNF_AF_OUTPUT_PP; + 8000eda: 683b ldr r3, [r7, #0] + 8000edc: 68db ldr r3, [r3, #12] + 8000ede: 3308 adds r3, #8 + 8000ee0: 623b str r3, [r7, #32] + break; + 8000ee2: e01f b.n 8000f24 + config = GPIO_Init->Speed + GPIO_CR_CNF_AF_OUTPUT_OD; + 8000ee4: 683b ldr r3, [r7, #0] + 8000ee6: 68db ldr r3, [r3, #12] + 8000ee8: 330c adds r3, #12 + 8000eea: 623b str r3, [r7, #32] + break; + 8000eec: e01a b.n 8000f24 + if (GPIO_Init->Pull == GPIO_NOPULL) + 8000eee: 683b ldr r3, [r7, #0] + 8000ef0: 689b ldr r3, [r3, #8] + 8000ef2: 2b00 cmp r3, #0 + 8000ef4: d102 bne.n 8000efc + config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_FLOATING; + 8000ef6: 2304 movs r3, #4 + 8000ef8: 623b str r3, [r7, #32] + break; + 8000efa: e013 b.n 8000f24 + else if (GPIO_Init->Pull == GPIO_PULLUP) + 8000efc: 683b ldr r3, [r7, #0] + 8000efe: 689b ldr r3, [r3, #8] + 8000f00: 2b01 cmp r3, #1 + 8000f02: d105 bne.n 8000f10 + config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_PU_PD; + 8000f04: 2308 movs r3, #8 + 8000f06: 623b str r3, [r7, #32] + GPIOx->BSRR = ioposition; + 8000f08: 687b ldr r3, [r7, #4] + 8000f0a: 69fa ldr r2, [r7, #28] + 8000f0c: 611a str r2, [r3, #16] + break; + 8000f0e: e009 b.n 8000f24 + config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_PU_PD; + 8000f10: 2308 movs r3, #8 + 8000f12: 623b str r3, [r7, #32] + GPIOx->BRR = ioposition; + 8000f14: 687b ldr r3, [r7, #4] + 8000f16: 69fa ldr r2, [r7, #28] + 8000f18: 615a str r2, [r3, #20] + break; + 8000f1a: e003 b.n 8000f24 + config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_ANALOG; + 8000f1c: 2300 movs r3, #0 + 8000f1e: 623b str r3, [r7, #32] + break; + 8000f20: e000 b.n 8000f24 + break; + 8000f22: bf00 nop + } + + /* Check if the current bit belongs to first half or last half of the pin count number + in order to address CRH or CRL register*/ + configregister = (iocurrent < GPIO_PIN_8) ? &GPIOx->CRL : &GPIOx->CRH; + 8000f24: 69bb ldr r3, [r7, #24] + 8000f26: 2bff cmp r3, #255 ; 0xff + 8000f28: d801 bhi.n 8000f2e + 8000f2a: 687b ldr r3, [r7, #4] + 8000f2c: e001 b.n 8000f32 + 8000f2e: 687b ldr r3, [r7, #4] + 8000f30: 3304 adds r3, #4 + 8000f32: 617b str r3, [r7, #20] + registeroffset = (iocurrent < GPIO_PIN_8) ? (position << 2u) : ((position - 8u) << 2u); + 8000f34: 69bb ldr r3, [r7, #24] + 8000f36: 2bff cmp r3, #255 ; 0xff + 8000f38: d802 bhi.n 8000f40 + 8000f3a: 6a7b ldr r3, [r7, #36] ; 0x24 + 8000f3c: 009b lsls r3, r3, #2 + 8000f3e: e002 b.n 8000f46 + 8000f40: 6a7b ldr r3, [r7, #36] ; 0x24 + 8000f42: 3b08 subs r3, #8 + 8000f44: 009b lsls r3, r3, #2 + 8000f46: 613b str r3, [r7, #16] + + /* Apply the new configuration of the pin to the register */ + MODIFY_REG((*configregister), ((GPIO_CRL_MODE0 | GPIO_CRL_CNF0) << registeroffset), (config << registeroffset)); + 8000f48: 697b ldr r3, [r7, #20] + 8000f4a: 681a ldr r2, [r3, #0] + 8000f4c: 210f movs r1, #15 + 8000f4e: 693b ldr r3, [r7, #16] + 8000f50: fa01 f303 lsl.w r3, r1, r3 + 8000f54: 43db mvns r3, r3 + 8000f56: 401a ands r2, r3 + 8000f58: 6a39 ldr r1, [r7, #32] + 8000f5a: 693b ldr r3, [r7, #16] + 8000f5c: fa01 f303 lsl.w r3, r1, r3 + 8000f60: 431a orrs r2, r3 + 8000f62: 697b ldr r3, [r7, #20] + 8000f64: 601a str r2, [r3, #0] + + /*--------------------- EXTI Mode Configuration ------------------------*/ + /* Configure the External Interrupt or event for the current IO */ + if ((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE) + 8000f66: 683b ldr r3, [r7, #0] + 8000f68: 685b ldr r3, [r3, #4] + 8000f6a: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 + 8000f6e: 2b00 cmp r3, #0 + 8000f70: f000 80b1 beq.w 80010d6 + { + /* Enable AFIO Clock */ + __HAL_RCC_AFIO_CLK_ENABLE(); + 8000f74: 4b4d ldr r3, [pc, #308] ; (80010ac ) + 8000f76: 699b ldr r3, [r3, #24] + 8000f78: 4a4c ldr r2, [pc, #304] ; (80010ac ) + 8000f7a: f043 0301 orr.w r3, r3, #1 + 8000f7e: 6193 str r3, [r2, #24] + 8000f80: 4b4a ldr r3, [pc, #296] ; (80010ac ) + 8000f82: 699b ldr r3, [r3, #24] + 8000f84: f003 0301 and.w r3, r3, #1 + 8000f88: 60bb str r3, [r7, #8] + 8000f8a: 68bb ldr r3, [r7, #8] + temp = AFIO->EXTICR[position >> 2u]; + 8000f8c: 4a48 ldr r2, [pc, #288] ; (80010b0 ) + 8000f8e: 6a7b ldr r3, [r7, #36] ; 0x24 + 8000f90: 089b lsrs r3, r3, #2 + 8000f92: 3302 adds r3, #2 + 8000f94: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8000f98: 60fb str r3, [r7, #12] + CLEAR_BIT(temp, (0x0Fu) << (4u * (position & 0x03u))); + 8000f9a: 6a7b ldr r3, [r7, #36] ; 0x24 + 8000f9c: f003 0303 and.w r3, r3, #3 + 8000fa0: 009b lsls r3, r3, #2 + 8000fa2: 220f movs r2, #15 + 8000fa4: fa02 f303 lsl.w r3, r2, r3 + 8000fa8: 43db mvns r3, r3 + 8000faa: 68fa ldr r2, [r7, #12] + 8000fac: 4013 ands r3, r2 + 8000fae: 60fb str r3, [r7, #12] + SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4u * (position & 0x03u))); + 8000fb0: 687b ldr r3, [r7, #4] + 8000fb2: 4a40 ldr r2, [pc, #256] ; (80010b4 ) + 8000fb4: 4293 cmp r3, r2 + 8000fb6: d013 beq.n 8000fe0 + 8000fb8: 687b ldr r3, [r7, #4] + 8000fba: 4a3f ldr r2, [pc, #252] ; (80010b8 ) + 8000fbc: 4293 cmp r3, r2 + 8000fbe: d00d beq.n 8000fdc + 8000fc0: 687b ldr r3, [r7, #4] + 8000fc2: 4a3e ldr r2, [pc, #248] ; (80010bc ) + 8000fc4: 4293 cmp r3, r2 + 8000fc6: d007 beq.n 8000fd8 + 8000fc8: 687b ldr r3, [r7, #4] + 8000fca: 4a3d ldr r2, [pc, #244] ; (80010c0 ) + 8000fcc: 4293 cmp r3, r2 + 8000fce: d101 bne.n 8000fd4 + 8000fd0: 2303 movs r3, #3 + 8000fd2: e006 b.n 8000fe2 + 8000fd4: 2304 movs r3, #4 + 8000fd6: e004 b.n 8000fe2 + 8000fd8: 2302 movs r3, #2 + 8000fda: e002 b.n 8000fe2 + 8000fdc: 2301 movs r3, #1 + 8000fde: e000 b.n 8000fe2 + 8000fe0: 2300 movs r3, #0 + 8000fe2: 6a7a ldr r2, [r7, #36] ; 0x24 + 8000fe4: f002 0203 and.w r2, r2, #3 + 8000fe8: 0092 lsls r2, r2, #2 + 8000fea: 4093 lsls r3, r2 + 8000fec: 68fa ldr r2, [r7, #12] + 8000fee: 4313 orrs r3, r2 + 8000ff0: 60fb str r3, [r7, #12] + AFIO->EXTICR[position >> 2u] = temp; + 8000ff2: 492f ldr r1, [pc, #188] ; (80010b0 ) + 8000ff4: 6a7b ldr r3, [r7, #36] ; 0x24 + 8000ff6: 089b lsrs r3, r3, #2 + 8000ff8: 3302 adds r3, #2 + 8000ffa: 68fa ldr r2, [r7, #12] + 8000ffc: f841 2023 str.w r2, [r1, r3, lsl #2] + + + /* Configure the interrupt mask */ + if ((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT) + 8001000: 683b ldr r3, [r7, #0] + 8001002: 685b ldr r3, [r3, #4] + 8001004: f403 3380 and.w r3, r3, #65536 ; 0x10000 + 8001008: 2b00 cmp r3, #0 + 800100a: d006 beq.n 800101a + { + SET_BIT(EXTI->IMR, iocurrent); + 800100c: 4b2d ldr r3, [pc, #180] ; (80010c4 ) + 800100e: 681a ldr r2, [r3, #0] + 8001010: 492c ldr r1, [pc, #176] ; (80010c4 ) + 8001012: 69bb ldr r3, [r7, #24] + 8001014: 4313 orrs r3, r2 + 8001016: 600b str r3, [r1, #0] + 8001018: e006 b.n 8001028 + } + else + { + CLEAR_BIT(EXTI->IMR, iocurrent); + 800101a: 4b2a ldr r3, [pc, #168] ; (80010c4 ) + 800101c: 681a ldr r2, [r3, #0] + 800101e: 69bb ldr r3, [r7, #24] + 8001020: 43db mvns r3, r3 + 8001022: 4928 ldr r1, [pc, #160] ; (80010c4 ) + 8001024: 4013 ands r3, r2 + 8001026: 600b str r3, [r1, #0] + } + + /* Configure the event mask */ + if ((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT) + 8001028: 683b ldr r3, [r7, #0] + 800102a: 685b ldr r3, [r3, #4] + 800102c: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 8001030: 2b00 cmp r3, #0 + 8001032: d006 beq.n 8001042 + { + SET_BIT(EXTI->EMR, iocurrent); + 8001034: 4b23 ldr r3, [pc, #140] ; (80010c4 ) + 8001036: 685a ldr r2, [r3, #4] + 8001038: 4922 ldr r1, [pc, #136] ; (80010c4 ) + 800103a: 69bb ldr r3, [r7, #24] + 800103c: 4313 orrs r3, r2 + 800103e: 604b str r3, [r1, #4] + 8001040: e006 b.n 8001050 + } + else + { + CLEAR_BIT(EXTI->EMR, iocurrent); + 8001042: 4b20 ldr r3, [pc, #128] ; (80010c4 ) + 8001044: 685a ldr r2, [r3, #4] + 8001046: 69bb ldr r3, [r7, #24] + 8001048: 43db mvns r3, r3 + 800104a: 491e ldr r1, [pc, #120] ; (80010c4 ) + 800104c: 4013 ands r3, r2 + 800104e: 604b str r3, [r1, #4] + } + + /* Enable or disable the rising trigger */ + if ((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE) + 8001050: 683b ldr r3, [r7, #0] + 8001052: 685b ldr r3, [r3, #4] + 8001054: f403 1380 and.w r3, r3, #1048576 ; 0x100000 + 8001058: 2b00 cmp r3, #0 + 800105a: d006 beq.n 800106a + { + SET_BIT(EXTI->RTSR, iocurrent); + 800105c: 4b19 ldr r3, [pc, #100] ; (80010c4 ) + 800105e: 689a ldr r2, [r3, #8] + 8001060: 4918 ldr r1, [pc, #96] ; (80010c4 ) + 8001062: 69bb ldr r3, [r7, #24] + 8001064: 4313 orrs r3, r2 + 8001066: 608b str r3, [r1, #8] + 8001068: e006 b.n 8001078 + } + else + { + CLEAR_BIT(EXTI->RTSR, iocurrent); + 800106a: 4b16 ldr r3, [pc, #88] ; (80010c4 ) + 800106c: 689a ldr r2, [r3, #8] + 800106e: 69bb ldr r3, [r7, #24] + 8001070: 43db mvns r3, r3 + 8001072: 4914 ldr r1, [pc, #80] ; (80010c4 ) + 8001074: 4013 ands r3, r2 + 8001076: 608b str r3, [r1, #8] + } + + /* Enable or disable the falling trigger */ + if ((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE) + 8001078: 683b ldr r3, [r7, #0] + 800107a: 685b ldr r3, [r3, #4] + 800107c: f403 1300 and.w r3, r3, #2097152 ; 0x200000 + 8001080: 2b00 cmp r3, #0 + 8001082: d021 beq.n 80010c8 + { + SET_BIT(EXTI->FTSR, iocurrent); + 8001084: 4b0f ldr r3, [pc, #60] ; (80010c4 ) + 8001086: 68da ldr r2, [r3, #12] + 8001088: 490e ldr r1, [pc, #56] ; (80010c4 ) + 800108a: 69bb ldr r3, [r7, #24] + 800108c: 4313 orrs r3, r2 + 800108e: 60cb str r3, [r1, #12] + 8001090: e021 b.n 80010d6 + 8001092: bf00 nop + 8001094: 10320000 .word 0x10320000 + 8001098: 10310000 .word 0x10310000 + 800109c: 10220000 .word 0x10220000 + 80010a0: 10210000 .word 0x10210000 + 80010a4: 10120000 .word 0x10120000 + 80010a8: 10110000 .word 0x10110000 + 80010ac: 40021000 .word 0x40021000 + 80010b0: 40010000 .word 0x40010000 + 80010b4: 40010800 .word 0x40010800 + 80010b8: 40010c00 .word 0x40010c00 + 80010bc: 40011000 .word 0x40011000 + 80010c0: 40011400 .word 0x40011400 + 80010c4: 40010400 .word 0x40010400 + } + else + { + CLEAR_BIT(EXTI->FTSR, iocurrent); + 80010c8: 4b0b ldr r3, [pc, #44] ; (80010f8 ) + 80010ca: 68da ldr r2, [r3, #12] + 80010cc: 69bb ldr r3, [r7, #24] + 80010ce: 43db mvns r3, r3 + 80010d0: 4909 ldr r1, [pc, #36] ; (80010f8 ) + 80010d2: 4013 ands r3, r2 + 80010d4: 60cb str r3, [r1, #12] + } + } + } + + position++; + 80010d6: 6a7b ldr r3, [r7, #36] ; 0x24 + 80010d8: 3301 adds r3, #1 + 80010da: 627b str r3, [r7, #36] ; 0x24 + while (((GPIO_Init->Pin) >> position) != 0x00u) + 80010dc: 683b ldr r3, [r7, #0] + 80010de: 681a ldr r2, [r3, #0] + 80010e0: 6a7b ldr r3, [r7, #36] ; 0x24 + 80010e2: fa22 f303 lsr.w r3, r2, r3 + 80010e6: 2b00 cmp r3, #0 + 80010e8: f47f ae8e bne.w 8000e08 + } +} + 80010ec: bf00 nop + 80010ee: bf00 nop + 80010f0: 372c adds r7, #44 ; 0x2c + 80010f2: 46bd mov sp, r7 + 80010f4: bc80 pop {r7} + 80010f6: 4770 bx lr + 80010f8: 40010400 .word 0x40010400 + +080010fc : + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c) +{ + 80010fc: b580 push {r7, lr} + 80010fe: b084 sub sp, #16 + 8001100: af00 add r7, sp, #0 + 8001102: 6078 str r0, [r7, #4] + uint32_t freqrange; + uint32_t pclk1; + + /* Check the I2C handle allocation */ + if (hi2c == NULL) + 8001104: 687b ldr r3, [r7, #4] + 8001106: 2b00 cmp r3, #0 + 8001108: d101 bne.n 800110e + { + return HAL_ERROR; + 800110a: 2301 movs r3, #1 + 800110c: e12b b.n 8001366 + assert_param(IS_I2C_DUAL_ADDRESS(hi2c->Init.DualAddressMode)); + assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2)); + assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode)); + assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode)); + + if (hi2c->State == HAL_I2C_STATE_RESET) + 800110e: 687b ldr r3, [r7, #4] + 8001110: f893 303d ldrb.w r3, [r3, #61] ; 0x3d + 8001114: b2db uxtb r3, r3 + 8001116: 2b00 cmp r3, #0 + 8001118: d106 bne.n 8001128 + { + /* Allocate lock resource and initialize it */ + hi2c->Lock = HAL_UNLOCKED; + 800111a: 687b ldr r3, [r7, #4] + 800111c: 2200 movs r2, #0 + 800111e: f883 203c strb.w r2, [r3, #60] ; 0x3c + + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + hi2c->MspInitCallback(hi2c); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + HAL_I2C_MspInit(hi2c); + 8001122: 6878 ldr r0, [r7, #4] + 8001124: f7ff f9d8 bl 80004d8 +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + + hi2c->State = HAL_I2C_STATE_BUSY; + 8001128: 687b ldr r3, [r7, #4] + 800112a: 2224 movs r2, #36 ; 0x24 + 800112c: f883 203d strb.w r2, [r3, #61] ; 0x3d + + /* Disable the selected I2C peripheral */ + __HAL_I2C_DISABLE(hi2c); + 8001130: 687b ldr r3, [r7, #4] + 8001132: 681b ldr r3, [r3, #0] + 8001134: 681a ldr r2, [r3, #0] + 8001136: 687b ldr r3, [r7, #4] + 8001138: 681b ldr r3, [r3, #0] + 800113a: f022 0201 bic.w r2, r2, #1 + 800113e: 601a str r2, [r3, #0] + + /*Reset I2C*/ + hi2c->Instance->CR1 |= I2C_CR1_SWRST; + 8001140: 687b ldr r3, [r7, #4] + 8001142: 681b ldr r3, [r3, #0] + 8001144: 681a ldr r2, [r3, #0] + 8001146: 687b ldr r3, [r7, #4] + 8001148: 681b ldr r3, [r3, #0] + 800114a: f442 4200 orr.w r2, r2, #32768 ; 0x8000 + 800114e: 601a str r2, [r3, #0] + hi2c->Instance->CR1 &= ~I2C_CR1_SWRST; + 8001150: 687b ldr r3, [r7, #4] + 8001152: 681b ldr r3, [r3, #0] + 8001154: 681a ldr r2, [r3, #0] + 8001156: 687b ldr r3, [r7, #4] + 8001158: 681b ldr r3, [r3, #0] + 800115a: f422 4200 bic.w r2, r2, #32768 ; 0x8000 + 800115e: 601a str r2, [r3, #0] + + /* Get PCLK1 frequency */ + pclk1 = HAL_RCC_GetPCLK1Freq(); + 8001160: f002 f970 bl 8003444 + 8001164: 60f8 str r0, [r7, #12] + + /* Check the minimum allowed PCLK1 frequency */ + if (I2C_MIN_PCLK_FREQ(pclk1, hi2c->Init.ClockSpeed) == 1U) + 8001166: 687b ldr r3, [r7, #4] + 8001168: 685b ldr r3, [r3, #4] + 800116a: 4a81 ldr r2, [pc, #516] ; (8001370 ) + 800116c: 4293 cmp r3, r2 + 800116e: d807 bhi.n 8001180 + 8001170: 68fb ldr r3, [r7, #12] + 8001172: 4a80 ldr r2, [pc, #512] ; (8001374 ) + 8001174: 4293 cmp r3, r2 + 8001176: bf94 ite ls + 8001178: 2301 movls r3, #1 + 800117a: 2300 movhi r3, #0 + 800117c: b2db uxtb r3, r3 + 800117e: e006 b.n 800118e + 8001180: 68fb ldr r3, [r7, #12] + 8001182: 4a7d ldr r2, [pc, #500] ; (8001378 ) + 8001184: 4293 cmp r3, r2 + 8001186: bf94 ite ls + 8001188: 2301 movls r3, #1 + 800118a: 2300 movhi r3, #0 + 800118c: b2db uxtb r3, r3 + 800118e: 2b00 cmp r3, #0 + 8001190: d001 beq.n 8001196 + { + return HAL_ERROR; + 8001192: 2301 movs r3, #1 + 8001194: e0e7 b.n 8001366 + } + + /* Calculate frequency range */ + freqrange = I2C_FREQRANGE(pclk1); + 8001196: 68fb ldr r3, [r7, #12] + 8001198: 4a78 ldr r2, [pc, #480] ; (800137c ) + 800119a: fba2 2303 umull r2, r3, r2, r3 + 800119e: 0c9b lsrs r3, r3, #18 + 80011a0: 60bb str r3, [r7, #8] + + /*---------------------------- I2Cx CR2 Configuration ----------------------*/ + /* Configure I2Cx: Frequency range */ + MODIFY_REG(hi2c->Instance->CR2, I2C_CR2_FREQ, freqrange); + 80011a2: 687b ldr r3, [r7, #4] + 80011a4: 681b ldr r3, [r3, #0] + 80011a6: 685b ldr r3, [r3, #4] + 80011a8: f023 013f bic.w r1, r3, #63 ; 0x3f + 80011ac: 687b ldr r3, [r7, #4] + 80011ae: 681b ldr r3, [r3, #0] + 80011b0: 68ba ldr r2, [r7, #8] + 80011b2: 430a orrs r2, r1 + 80011b4: 605a str r2, [r3, #4] + + /*---------------------------- I2Cx TRISE Configuration --------------------*/ + /* Configure I2Cx: Rise Time */ + MODIFY_REG(hi2c->Instance->TRISE, I2C_TRISE_TRISE, I2C_RISE_TIME(freqrange, hi2c->Init.ClockSpeed)); + 80011b6: 687b ldr r3, [r7, #4] + 80011b8: 681b ldr r3, [r3, #0] + 80011ba: 6a1b ldr r3, [r3, #32] + 80011bc: f023 013f bic.w r1, r3, #63 ; 0x3f + 80011c0: 687b ldr r3, [r7, #4] + 80011c2: 685b ldr r3, [r3, #4] + 80011c4: 4a6a ldr r2, [pc, #424] ; (8001370 ) + 80011c6: 4293 cmp r3, r2 + 80011c8: d802 bhi.n 80011d0 + 80011ca: 68bb ldr r3, [r7, #8] + 80011cc: 3301 adds r3, #1 + 80011ce: e009 b.n 80011e4 + 80011d0: 68bb ldr r3, [r7, #8] + 80011d2: f44f 7296 mov.w r2, #300 ; 0x12c + 80011d6: fb02 f303 mul.w r3, r2, r3 + 80011da: 4a69 ldr r2, [pc, #420] ; (8001380 ) + 80011dc: fba2 2303 umull r2, r3, r2, r3 + 80011e0: 099b lsrs r3, r3, #6 + 80011e2: 3301 adds r3, #1 + 80011e4: 687a ldr r2, [r7, #4] + 80011e6: 6812 ldr r2, [r2, #0] + 80011e8: 430b orrs r3, r1 + 80011ea: 6213 str r3, [r2, #32] + + /*---------------------------- I2Cx CCR Configuration ----------------------*/ + /* Configure I2Cx: Speed */ + MODIFY_REG(hi2c->Instance->CCR, (I2C_CCR_FS | I2C_CCR_DUTY | I2C_CCR_CCR), I2C_SPEED(pclk1, hi2c->Init.ClockSpeed, hi2c->Init.DutyCycle)); + 80011ec: 687b ldr r3, [r7, #4] + 80011ee: 681b ldr r3, [r3, #0] + 80011f0: 69db ldr r3, [r3, #28] + 80011f2: f423 424f bic.w r2, r3, #52992 ; 0xcf00 + 80011f6: f022 02ff bic.w r2, r2, #255 ; 0xff + 80011fa: 687b ldr r3, [r7, #4] + 80011fc: 685b ldr r3, [r3, #4] + 80011fe: 495c ldr r1, [pc, #368] ; (8001370 ) + 8001200: 428b cmp r3, r1 + 8001202: d819 bhi.n 8001238 + 8001204: 68fb ldr r3, [r7, #12] + 8001206: 1e59 subs r1, r3, #1 + 8001208: 687b ldr r3, [r7, #4] + 800120a: 685b ldr r3, [r3, #4] + 800120c: 005b lsls r3, r3, #1 + 800120e: fbb1 f3f3 udiv r3, r1, r3 + 8001212: 1c59 adds r1, r3, #1 + 8001214: f640 73fc movw r3, #4092 ; 0xffc + 8001218: 400b ands r3, r1 + 800121a: 2b00 cmp r3, #0 + 800121c: d00a beq.n 8001234 + 800121e: 68fb ldr r3, [r7, #12] + 8001220: 1e59 subs r1, r3, #1 + 8001222: 687b ldr r3, [r7, #4] + 8001224: 685b ldr r3, [r3, #4] + 8001226: 005b lsls r3, r3, #1 + 8001228: fbb1 f3f3 udiv r3, r1, r3 + 800122c: 3301 adds r3, #1 + 800122e: f3c3 030b ubfx r3, r3, #0, #12 + 8001232: e051 b.n 80012d8 + 8001234: 2304 movs r3, #4 + 8001236: e04f b.n 80012d8 + 8001238: 687b ldr r3, [r7, #4] + 800123a: 689b ldr r3, [r3, #8] + 800123c: 2b00 cmp r3, #0 + 800123e: d111 bne.n 8001264 + 8001240: 68fb ldr r3, [r7, #12] + 8001242: 1e58 subs r0, r3, #1 + 8001244: 687b ldr r3, [r7, #4] + 8001246: 6859 ldr r1, [r3, #4] + 8001248: 460b mov r3, r1 + 800124a: 005b lsls r3, r3, #1 + 800124c: 440b add r3, r1 + 800124e: fbb0 f3f3 udiv r3, r0, r3 + 8001252: 3301 adds r3, #1 + 8001254: f3c3 030b ubfx r3, r3, #0, #12 + 8001258: 2b00 cmp r3, #0 + 800125a: bf0c ite eq + 800125c: 2301 moveq r3, #1 + 800125e: 2300 movne r3, #0 + 8001260: b2db uxtb r3, r3 + 8001262: e012 b.n 800128a + 8001264: 68fb ldr r3, [r7, #12] + 8001266: 1e58 subs r0, r3, #1 + 8001268: 687b ldr r3, [r7, #4] + 800126a: 6859 ldr r1, [r3, #4] + 800126c: 460b mov r3, r1 + 800126e: 009b lsls r3, r3, #2 + 8001270: 440b add r3, r1 + 8001272: 0099 lsls r1, r3, #2 + 8001274: 440b add r3, r1 + 8001276: fbb0 f3f3 udiv r3, r0, r3 + 800127a: 3301 adds r3, #1 + 800127c: f3c3 030b ubfx r3, r3, #0, #12 + 8001280: 2b00 cmp r3, #0 + 8001282: bf0c ite eq + 8001284: 2301 moveq r3, #1 + 8001286: 2300 movne r3, #0 + 8001288: b2db uxtb r3, r3 + 800128a: 2b00 cmp r3, #0 + 800128c: d001 beq.n 8001292 + 800128e: 2301 movs r3, #1 + 8001290: e022 b.n 80012d8 + 8001292: 687b ldr r3, [r7, #4] + 8001294: 689b ldr r3, [r3, #8] + 8001296: 2b00 cmp r3, #0 + 8001298: d10e bne.n 80012b8 + 800129a: 68fb ldr r3, [r7, #12] + 800129c: 1e58 subs r0, r3, #1 + 800129e: 687b ldr r3, [r7, #4] + 80012a0: 6859 ldr r1, [r3, #4] + 80012a2: 460b mov r3, r1 + 80012a4: 005b lsls r3, r3, #1 + 80012a6: 440b add r3, r1 + 80012a8: fbb0 f3f3 udiv r3, r0, r3 + 80012ac: 3301 adds r3, #1 + 80012ae: f3c3 030b ubfx r3, r3, #0, #12 + 80012b2: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 80012b6: e00f b.n 80012d8 + 80012b8: 68fb ldr r3, [r7, #12] + 80012ba: 1e58 subs r0, r3, #1 + 80012bc: 687b ldr r3, [r7, #4] + 80012be: 6859 ldr r1, [r3, #4] + 80012c0: 460b mov r3, r1 + 80012c2: 009b lsls r3, r3, #2 + 80012c4: 440b add r3, r1 + 80012c6: 0099 lsls r1, r3, #2 + 80012c8: 440b add r3, r1 + 80012ca: fbb0 f3f3 udiv r3, r0, r3 + 80012ce: 3301 adds r3, #1 + 80012d0: f3c3 030b ubfx r3, r3, #0, #12 + 80012d4: f443 4340 orr.w r3, r3, #49152 ; 0xc000 + 80012d8: 6879 ldr r1, [r7, #4] + 80012da: 6809 ldr r1, [r1, #0] + 80012dc: 4313 orrs r3, r2 + 80012de: 61cb str r3, [r1, #28] + + /*---------------------------- I2Cx CR1 Configuration ----------------------*/ + /* Configure I2Cx: Generalcall and NoStretch mode */ + MODIFY_REG(hi2c->Instance->CR1, (I2C_CR1_ENGC | I2C_CR1_NOSTRETCH), (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode)); + 80012e0: 687b ldr r3, [r7, #4] + 80012e2: 681b ldr r3, [r3, #0] + 80012e4: 681b ldr r3, [r3, #0] + 80012e6: f023 01c0 bic.w r1, r3, #192 ; 0xc0 + 80012ea: 687b ldr r3, [r7, #4] + 80012ec: 69da ldr r2, [r3, #28] + 80012ee: 687b ldr r3, [r7, #4] + 80012f0: 6a1b ldr r3, [r3, #32] + 80012f2: 431a orrs r2, r3 + 80012f4: 687b ldr r3, [r7, #4] + 80012f6: 681b ldr r3, [r3, #0] + 80012f8: 430a orrs r2, r1 + 80012fa: 601a str r2, [r3, #0] + + /*---------------------------- I2Cx OAR1 Configuration ---------------------*/ + /* Configure I2Cx: Own Address1 and addressing mode */ + MODIFY_REG(hi2c->Instance->OAR1, (I2C_OAR1_ADDMODE | I2C_OAR1_ADD8_9 | I2C_OAR1_ADD1_7 | I2C_OAR1_ADD0), (hi2c->Init.AddressingMode | hi2c->Init.OwnAddress1)); + 80012fc: 687b ldr r3, [r7, #4] + 80012fe: 681b ldr r3, [r3, #0] + 8001300: 689b ldr r3, [r3, #8] + 8001302: f423 4303 bic.w r3, r3, #33536 ; 0x8300 + 8001306: f023 03ff bic.w r3, r3, #255 ; 0xff + 800130a: 687a ldr r2, [r7, #4] + 800130c: 6911 ldr r1, [r2, #16] + 800130e: 687a ldr r2, [r7, #4] + 8001310: 68d2 ldr r2, [r2, #12] + 8001312: 4311 orrs r1, r2 + 8001314: 687a ldr r2, [r7, #4] + 8001316: 6812 ldr r2, [r2, #0] + 8001318: 430b orrs r3, r1 + 800131a: 6093 str r3, [r2, #8] + + /*---------------------------- I2Cx OAR2 Configuration ---------------------*/ + /* Configure I2Cx: Dual mode and Own Address2 */ + MODIFY_REG(hi2c->Instance->OAR2, (I2C_OAR2_ENDUAL | I2C_OAR2_ADD2), (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2)); + 800131c: 687b ldr r3, [r7, #4] + 800131e: 681b ldr r3, [r3, #0] + 8001320: 68db ldr r3, [r3, #12] + 8001322: f023 01ff bic.w r1, r3, #255 ; 0xff + 8001326: 687b ldr r3, [r7, #4] + 8001328: 695a ldr r2, [r3, #20] + 800132a: 687b ldr r3, [r7, #4] + 800132c: 699b ldr r3, [r3, #24] + 800132e: 431a orrs r2, r3 + 8001330: 687b ldr r3, [r7, #4] + 8001332: 681b ldr r3, [r3, #0] + 8001334: 430a orrs r2, r1 + 8001336: 60da str r2, [r3, #12] + + /* Enable the selected I2C peripheral */ + __HAL_I2C_ENABLE(hi2c); + 8001338: 687b ldr r3, [r7, #4] + 800133a: 681b ldr r3, [r3, #0] + 800133c: 681a ldr r2, [r3, #0] + 800133e: 687b ldr r3, [r7, #4] + 8001340: 681b ldr r3, [r3, #0] + 8001342: f042 0201 orr.w r2, r2, #1 + 8001346: 601a str r2, [r3, #0] + + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 8001348: 687b ldr r3, [r7, #4] + 800134a: 2200 movs r2, #0 + 800134c: 641a str r2, [r3, #64] ; 0x40 + hi2c->State = HAL_I2C_STATE_READY; + 800134e: 687b ldr r3, [r7, #4] + 8001350: 2220 movs r2, #32 + 8001352: f883 203d strb.w r2, [r3, #61] ; 0x3d + hi2c->PreviousState = I2C_STATE_NONE; + 8001356: 687b ldr r3, [r7, #4] + 8001358: 2200 movs r2, #0 + 800135a: 631a str r2, [r3, #48] ; 0x30 + hi2c->Mode = HAL_I2C_MODE_NONE; + 800135c: 687b ldr r3, [r7, #4] + 800135e: 2200 movs r2, #0 + 8001360: f883 203e strb.w r2, [r3, #62] ; 0x3e + + return HAL_OK; + 8001364: 2300 movs r3, #0 +} + 8001366: 4618 mov r0, r3 + 8001368: 3710 adds r7, #16 + 800136a: 46bd mov sp, r7 + 800136c: bd80 pop {r7, pc} + 800136e: bf00 nop + 8001370: 000186a0 .word 0x000186a0 + 8001374: 001e847f .word 0x001e847f + 8001378: 003d08ff .word 0x003d08ff + 800137c: 431bde83 .word 0x431bde83 + 8001380: 10624dd3 .word 0x10624dd3 + +08001384 : + * parameters in the PCD_InitTypeDef and initialize the associated handle. + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd) +{ + 8001384: b5f0 push {r4, r5, r6, r7, lr} + 8001386: b08b sub sp, #44 ; 0x2c + 8001388: af06 add r7, sp, #24 + 800138a: 6078 str r0, [r7, #4] + USB_OTG_GlobalTypeDef *USBx; +#endif /* defined (USB_OTG_FS) */ + uint8_t i; + + /* Check the PCD handle allocation */ + if (hpcd == NULL) + 800138c: 687b ldr r3, [r7, #4] + 800138e: 2b00 cmp r3, #0 + 8001390: d101 bne.n 8001396 + { + return HAL_ERROR; + 8001392: 2301 movs r3, #1 + 8001394: e0fd b.n 8001592 + +#if defined (USB_OTG_FS) + USBx = hpcd->Instance; +#endif /* defined (USB_OTG_FS) */ + + if (hpcd->State == HAL_PCD_STATE_RESET) + 8001396: 687b ldr r3, [r7, #4] + 8001398: f893 32a9 ldrb.w r3, [r3, #681] ; 0x2a9 + 800139c: b2db uxtb r3, r3 + 800139e: 2b00 cmp r3, #0 + 80013a0: d106 bne.n 80013b0 + { + /* Allocate lock resource and initialize it */ + hpcd->Lock = HAL_UNLOCKED; + 80013a2: 687b ldr r3, [r7, #4] + 80013a4: 2200 movs r2, #0 + 80013a6: f883 22a8 strb.w r2, [r3, #680] ; 0x2a8 + + /* Init the low level hardware */ + hpcd->MspInitCallback(hpcd); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + HAL_PCD_MspInit(hpcd); + 80013aa: 6878 ldr r0, [r7, #4] + 80013ac: f006 fb5c bl 8007a68 +#endif /* (USE_HAL_PCD_REGISTER_CALLBACKS) */ + } + + hpcd->State = HAL_PCD_STATE_BUSY; + 80013b0: 687b ldr r3, [r7, #4] + 80013b2: 2203 movs r2, #3 + 80013b4: f883 22a9 strb.w r2, [r3, #681] ; 0x2a9 + hpcd->Init.dma_enable = 0U; + } +#endif /* defined (USB_OTG_FS) */ + + /* Disable the Interrupts */ + __HAL_PCD_DISABLE(hpcd); + 80013b8: 687b ldr r3, [r7, #4] + 80013ba: 681b ldr r3, [r3, #0] + 80013bc: 4618 mov r0, r3 + 80013be: f002 fa3f bl 8003840 + + /*Init the Core (common init.) */ + if (USB_CoreInit(hpcd->Instance, hpcd->Init) != HAL_OK) + 80013c2: 687b ldr r3, [r7, #4] + 80013c4: 681b ldr r3, [r3, #0] + 80013c6: 603b str r3, [r7, #0] + 80013c8: 687e ldr r6, [r7, #4] + 80013ca: 466d mov r5, sp + 80013cc: f106 0410 add.w r4, r6, #16 + 80013d0: cc0f ldmia r4!, {r0, r1, r2, r3} + 80013d2: c50f stmia r5!, {r0, r1, r2, r3} + 80013d4: 6823 ldr r3, [r4, #0] + 80013d6: 602b str r3, [r5, #0] + 80013d8: 1d33 adds r3, r6, #4 + 80013da: cb0e ldmia r3, {r1, r2, r3} + 80013dc: 6838 ldr r0, [r7, #0] + 80013de: f002 fa09 bl 80037f4 + 80013e2: 4603 mov r3, r0 + 80013e4: 2b00 cmp r3, #0 + 80013e6: d005 beq.n 80013f4 + { + hpcd->State = HAL_PCD_STATE_ERROR; + 80013e8: 687b ldr r3, [r7, #4] + 80013ea: 2202 movs r2, #2 + 80013ec: f883 22a9 strb.w r2, [r3, #681] ; 0x2a9 + return HAL_ERROR; + 80013f0: 2301 movs r3, #1 + 80013f2: e0ce b.n 8001592 + } + + /* Force Device Mode*/ + (void)USB_SetCurrentMode(hpcd->Instance, USB_DEVICE_MODE); + 80013f4: 687b ldr r3, [r7, #4] + 80013f6: 681b ldr r3, [r3, #0] + 80013f8: 2100 movs r1, #0 + 80013fa: 4618 mov r0, r3 + 80013fc: f002 fa3a bl 8003874 + + /* Init endpoints structures */ + for (i = 0U; i < hpcd->Init.dev_endpoints; i++) + 8001400: 2300 movs r3, #0 + 8001402: 73fb strb r3, [r7, #15] + 8001404: e04c b.n 80014a0 + { + /* Init ep structure */ + hpcd->IN_ep[i].is_in = 1U; + 8001406: 7bfb ldrb r3, [r7, #15] + 8001408: 6879 ldr r1, [r7, #4] + 800140a: 1c5a adds r2, r3, #1 + 800140c: 4613 mov r3, r2 + 800140e: 009b lsls r3, r3, #2 + 8001410: 4413 add r3, r2 + 8001412: 00db lsls r3, r3, #3 + 8001414: 440b add r3, r1 + 8001416: 3301 adds r3, #1 + 8001418: 2201 movs r2, #1 + 800141a: 701a strb r2, [r3, #0] + hpcd->IN_ep[i].num = i; + 800141c: 7bfb ldrb r3, [r7, #15] + 800141e: 6879 ldr r1, [r7, #4] + 8001420: 1c5a adds r2, r3, #1 + 8001422: 4613 mov r3, r2 + 8001424: 009b lsls r3, r3, #2 + 8001426: 4413 add r3, r2 + 8001428: 00db lsls r3, r3, #3 + 800142a: 440b add r3, r1 + 800142c: 7bfa ldrb r2, [r7, #15] + 800142e: 701a strb r2, [r3, #0] + hpcd->IN_ep[i].tx_fifo_num = i; + 8001430: 7bfa ldrb r2, [r7, #15] + 8001432: 7bfb ldrb r3, [r7, #15] + 8001434: b298 uxth r0, r3 + 8001436: 6879 ldr r1, [r7, #4] + 8001438: 4613 mov r3, r2 + 800143a: 009b lsls r3, r3, #2 + 800143c: 4413 add r3, r2 + 800143e: 00db lsls r3, r3, #3 + 8001440: 440b add r3, r1 + 8001442: 3336 adds r3, #54 ; 0x36 + 8001444: 4602 mov r2, r0 + 8001446: 801a strh r2, [r3, #0] + /* Control until ep is activated */ + hpcd->IN_ep[i].type = EP_TYPE_CTRL; + 8001448: 7bfb ldrb r3, [r7, #15] + 800144a: 6879 ldr r1, [r7, #4] + 800144c: 1c5a adds r2, r3, #1 + 800144e: 4613 mov r3, r2 + 8001450: 009b lsls r3, r3, #2 + 8001452: 4413 add r3, r2 + 8001454: 00db lsls r3, r3, #3 + 8001456: 440b add r3, r1 + 8001458: 3303 adds r3, #3 + 800145a: 2200 movs r2, #0 + 800145c: 701a strb r2, [r3, #0] + hpcd->IN_ep[i].maxpacket = 0U; + 800145e: 7bfa ldrb r2, [r7, #15] + 8001460: 6879 ldr r1, [r7, #4] + 8001462: 4613 mov r3, r2 + 8001464: 009b lsls r3, r3, #2 + 8001466: 4413 add r3, r2 + 8001468: 00db lsls r3, r3, #3 + 800146a: 440b add r3, r1 + 800146c: 3338 adds r3, #56 ; 0x38 + 800146e: 2200 movs r2, #0 + 8001470: 601a str r2, [r3, #0] + hpcd->IN_ep[i].xfer_buff = 0U; + 8001472: 7bfa ldrb r2, [r7, #15] + 8001474: 6879 ldr r1, [r7, #4] + 8001476: 4613 mov r3, r2 + 8001478: 009b lsls r3, r3, #2 + 800147a: 4413 add r3, r2 + 800147c: 00db lsls r3, r3, #3 + 800147e: 440b add r3, r1 + 8001480: 333c adds r3, #60 ; 0x3c + 8001482: 2200 movs r2, #0 + 8001484: 601a str r2, [r3, #0] + hpcd->IN_ep[i].xfer_len = 0U; + 8001486: 7bfa ldrb r2, [r7, #15] + 8001488: 6879 ldr r1, [r7, #4] + 800148a: 4613 mov r3, r2 + 800148c: 009b lsls r3, r3, #2 + 800148e: 4413 add r3, r2 + 8001490: 00db lsls r3, r3, #3 + 8001492: 440b add r3, r1 + 8001494: 3340 adds r3, #64 ; 0x40 + 8001496: 2200 movs r2, #0 + 8001498: 601a str r2, [r3, #0] + for (i = 0U; i < hpcd->Init.dev_endpoints; i++) + 800149a: 7bfb ldrb r3, [r7, #15] + 800149c: 3301 adds r3, #1 + 800149e: 73fb strb r3, [r7, #15] + 80014a0: 7bfa ldrb r2, [r7, #15] + 80014a2: 687b ldr r3, [r7, #4] + 80014a4: 685b ldr r3, [r3, #4] + 80014a6: 429a cmp r2, r3 + 80014a8: d3ad bcc.n 8001406 + } + + for (i = 0U; i < hpcd->Init.dev_endpoints; i++) + 80014aa: 2300 movs r3, #0 + 80014ac: 73fb strb r3, [r7, #15] + 80014ae: e044 b.n 800153a + { + hpcd->OUT_ep[i].is_in = 0U; + 80014b0: 7bfa ldrb r2, [r7, #15] + 80014b2: 6879 ldr r1, [r7, #4] + 80014b4: 4613 mov r3, r2 + 80014b6: 009b lsls r3, r3, #2 + 80014b8: 4413 add r3, r2 + 80014ba: 00db lsls r3, r3, #3 + 80014bc: 440b add r3, r1 + 80014be: f203 1369 addw r3, r3, #361 ; 0x169 + 80014c2: 2200 movs r2, #0 + 80014c4: 701a strb r2, [r3, #0] + hpcd->OUT_ep[i].num = i; + 80014c6: 7bfa ldrb r2, [r7, #15] + 80014c8: 6879 ldr r1, [r7, #4] + 80014ca: 4613 mov r3, r2 + 80014cc: 009b lsls r3, r3, #2 + 80014ce: 4413 add r3, r2 + 80014d0: 00db lsls r3, r3, #3 + 80014d2: 440b add r3, r1 + 80014d4: f503 73b4 add.w r3, r3, #360 ; 0x168 + 80014d8: 7bfa ldrb r2, [r7, #15] + 80014da: 701a strb r2, [r3, #0] + /* Control until ep is activated */ + hpcd->OUT_ep[i].type = EP_TYPE_CTRL; + 80014dc: 7bfa ldrb r2, [r7, #15] + 80014de: 6879 ldr r1, [r7, #4] + 80014e0: 4613 mov r3, r2 + 80014e2: 009b lsls r3, r3, #2 + 80014e4: 4413 add r3, r2 + 80014e6: 00db lsls r3, r3, #3 + 80014e8: 440b add r3, r1 + 80014ea: f203 136b addw r3, r3, #363 ; 0x16b + 80014ee: 2200 movs r2, #0 + 80014f0: 701a strb r2, [r3, #0] + hpcd->OUT_ep[i].maxpacket = 0U; + 80014f2: 7bfa ldrb r2, [r7, #15] + 80014f4: 6879 ldr r1, [r7, #4] + 80014f6: 4613 mov r3, r2 + 80014f8: 009b lsls r3, r3, #2 + 80014fa: 4413 add r3, r2 + 80014fc: 00db lsls r3, r3, #3 + 80014fe: 440b add r3, r1 + 8001500: f503 73bc add.w r3, r3, #376 ; 0x178 + 8001504: 2200 movs r2, #0 + 8001506: 601a str r2, [r3, #0] + hpcd->OUT_ep[i].xfer_buff = 0U; + 8001508: 7bfa ldrb r2, [r7, #15] + 800150a: 6879 ldr r1, [r7, #4] + 800150c: 4613 mov r3, r2 + 800150e: 009b lsls r3, r3, #2 + 8001510: 4413 add r3, r2 + 8001512: 00db lsls r3, r3, #3 + 8001514: 440b add r3, r1 + 8001516: f503 73be add.w r3, r3, #380 ; 0x17c + 800151a: 2200 movs r2, #0 + 800151c: 601a str r2, [r3, #0] + hpcd->OUT_ep[i].xfer_len = 0U; + 800151e: 7bfa ldrb r2, [r7, #15] + 8001520: 6879 ldr r1, [r7, #4] + 8001522: 4613 mov r3, r2 + 8001524: 009b lsls r3, r3, #2 + 8001526: 4413 add r3, r2 + 8001528: 00db lsls r3, r3, #3 + 800152a: 440b add r3, r1 + 800152c: f503 73c0 add.w r3, r3, #384 ; 0x180 + 8001530: 2200 movs r2, #0 + 8001532: 601a str r2, [r3, #0] + for (i = 0U; i < hpcd->Init.dev_endpoints; i++) + 8001534: 7bfb ldrb r3, [r7, #15] + 8001536: 3301 adds r3, #1 + 8001538: 73fb strb r3, [r7, #15] + 800153a: 7bfa ldrb r2, [r7, #15] + 800153c: 687b ldr r3, [r7, #4] + 800153e: 685b ldr r3, [r3, #4] + 8001540: 429a cmp r2, r3 + 8001542: d3b5 bcc.n 80014b0 + } + + /* Init Device */ + if (USB_DevInit(hpcd->Instance, hpcd->Init) != HAL_OK) + 8001544: 687b ldr r3, [r7, #4] + 8001546: 681b ldr r3, [r3, #0] + 8001548: 603b str r3, [r7, #0] + 800154a: 687e ldr r6, [r7, #4] + 800154c: 466d mov r5, sp + 800154e: f106 0410 add.w r4, r6, #16 + 8001552: cc0f ldmia r4!, {r0, r1, r2, r3} + 8001554: c50f stmia r5!, {r0, r1, r2, r3} + 8001556: 6823 ldr r3, [r4, #0] + 8001558: 602b str r3, [r5, #0] + 800155a: 1d33 adds r3, r6, #4 + 800155c: cb0e ldmia r3, {r1, r2, r3} + 800155e: 6838 ldr r0, [r7, #0] + 8001560: f002 f994 bl 800388c + 8001564: 4603 mov r3, r0 + 8001566: 2b00 cmp r3, #0 + 8001568: d005 beq.n 8001576 + { + hpcd->State = HAL_PCD_STATE_ERROR; + 800156a: 687b ldr r3, [r7, #4] + 800156c: 2202 movs r2, #2 + 800156e: f883 22a9 strb.w r2, [r3, #681] ; 0x2a9 + return HAL_ERROR; + 8001572: 2301 movs r3, #1 + 8001574: e00d b.n 8001592 + } + + hpcd->USB_Address = 0U; + 8001576: 687b ldr r3, [r7, #4] + 8001578: 2200 movs r2, #0 + 800157a: f883 2024 strb.w r2, [r3, #36] ; 0x24 + hpcd->State = HAL_PCD_STATE_READY; + 800157e: 687b ldr r3, [r7, #4] + 8001580: 2201 movs r2, #1 + 8001582: f883 22a9 strb.w r2, [r3, #681] ; 0x2a9 + (void)USB_DevDisconnect(hpcd->Instance); + 8001586: 687b ldr r3, [r7, #4] + 8001588: 681b ldr r3, [r3, #0] + 800158a: 4618 mov r0, r3 + 800158c: f004 f919 bl 80057c2 + + return HAL_OK; + 8001590: 2300 movs r3, #0 +} + 8001592: 4618 mov r0, r3 + 8001594: 3714 adds r7, #20 + 8001596: 46bd mov sp, r7 + 8001598: bdf0 pop {r4, r5, r6, r7, pc} + +0800159a : + * @brief Start the USB device + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_Start(PCD_HandleTypeDef *hpcd) +{ + 800159a: b580 push {r7, lr} + 800159c: b082 sub sp, #8 + 800159e: af00 add r7, sp, #0 + 80015a0: 6078 str r0, [r7, #4] + __HAL_LOCK(hpcd); + 80015a2: 687b ldr r3, [r7, #4] + 80015a4: f893 32a8 ldrb.w r3, [r3, #680] ; 0x2a8 + 80015a8: 2b01 cmp r3, #1 + 80015aa: d101 bne.n 80015b0 + 80015ac: 2302 movs r3, #2 + 80015ae: e016 b.n 80015de + 80015b0: 687b ldr r3, [r7, #4] + 80015b2: 2201 movs r2, #1 + 80015b4: f883 22a8 strb.w r2, [r3, #680] ; 0x2a8 + __HAL_PCD_ENABLE(hpcd); + 80015b8: 687b ldr r3, [r7, #4] + 80015ba: 681b ldr r3, [r3, #0] + 80015bc: 4618 mov r0, r3 + 80015be: f002 f929 bl 8003814 + +#if defined (USB) + HAL_PCDEx_SetConnectionState(hpcd, 1U); + 80015c2: 2101 movs r1, #1 + 80015c4: 6878 ldr r0, [r7, #4] + 80015c6: f006 fc92 bl 8007eee +#endif /* defined (USB) */ + + (void)USB_DevConnect(hpcd->Instance); + 80015ca: 687b ldr r3, [r7, #4] + 80015cc: 681b ldr r3, [r3, #0] + 80015ce: 4618 mov r0, r3 + 80015d0: f004 f8ed bl 80057ae + __HAL_UNLOCK(hpcd); + 80015d4: 687b ldr r3, [r7, #4] + 80015d6: 2200 movs r2, #0 + 80015d8: f883 22a8 strb.w r2, [r3, #680] ; 0x2a8 + + return HAL_OK; + 80015dc: 2300 movs r3, #0 +} + 80015de: 4618 mov r0, r3 + 80015e0: 3708 adds r7, #8 + 80015e2: 46bd mov sp, r7 + 80015e4: bd80 pop {r7, pc} + +080015e6 : + * @brief Stop the USB device. + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_Stop(PCD_HandleTypeDef *hpcd) +{ + 80015e6: b580 push {r7, lr} + 80015e8: b082 sub sp, #8 + 80015ea: af00 add r7, sp, #0 + 80015ec: 6078 str r0, [r7, #4] + __HAL_LOCK(hpcd); + 80015ee: 687b ldr r3, [r7, #4] + 80015f0: f893 32a8 ldrb.w r3, [r3, #680] ; 0x2a8 + 80015f4: 2b01 cmp r3, #1 + 80015f6: d101 bne.n 80015fc + 80015f8: 2302 movs r3, #2 + 80015fa: e016 b.n 800162a + 80015fc: 687b ldr r3, [r7, #4] + 80015fe: 2201 movs r2, #1 + 8001600: f883 22a8 strb.w r2, [r3, #680] ; 0x2a8 + __HAL_PCD_DISABLE(hpcd); + 8001604: 687b ldr r3, [r7, #4] + 8001606: 681b ldr r3, [r3, #0] + 8001608: 4618 mov r0, r3 + 800160a: f002 f919 bl 8003840 + +#if defined (USB) + HAL_PCDEx_SetConnectionState(hpcd, 0U); + 800160e: 2100 movs r1, #0 + 8001610: 6878 ldr r0, [r7, #4] + 8001612: f006 fc6c bl 8007eee +#endif /* defined (USB) */ + + (void)USB_DevDisconnect(hpcd->Instance); + 8001616: 687b ldr r3, [r7, #4] + 8001618: 681b ldr r3, [r3, #0] + 800161a: 4618 mov r0, r3 + 800161c: f004 f8d1 bl 80057c2 + +#if defined (USB_OTG_FS) + (void)USB_FlushTxFifo(hpcd->Instance, 0x10U); +#endif /* defined (USB_OTG_FS) */ + + __HAL_UNLOCK(hpcd); + 8001620: 687b ldr r3, [r7, #4] + 8001622: 2200 movs r2, #0 + 8001624: f883 22a8 strb.w r2, [r3, #680] ; 0x2a8 + + return HAL_OK; + 8001628: 2300 movs r3, #0 +} + 800162a: 4618 mov r0, r3 + 800162c: 3708 adds r7, #8 + 800162e: 46bd mov sp, r7 + 8001630: bd80 pop {r7, pc} + +08001632 : + * @brief This function handles PCD interrupt request. + * @param hpcd PCD handle + * @retval HAL status + */ +void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd) +{ + 8001632: b580 push {r7, lr} + 8001634: b088 sub sp, #32 + 8001636: af00 add r7, sp, #0 + 8001638: 6078 str r0, [r7, #4] + uint16_t store_ep[8]; + uint8_t i; + + if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_CTR)) + 800163a: 687b ldr r3, [r7, #4] + 800163c: 681b ldr r3, [r3, #0] + 800163e: 4618 mov r0, r3 + 8001640: f004 f8c9 bl 80057d6 + 8001644: 4603 mov r3, r0 + 8001646: f403 4300 and.w r3, r3, #32768 ; 0x8000 + 800164a: f5b3 4f00 cmp.w r3, #32768 ; 0x8000 + 800164e: d102 bne.n 8001656 + { + /* servicing of the endpoint correct transfer interrupt */ + /* clear of the CTR flag into the sub */ + (void)PCD_EP_ISR_Handler(hpcd); + 8001650: 6878 ldr r0, [r7, #4] + 8001652: f000 fb02 bl 8001c5a + } + + if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_RESET)) + 8001656: 687b ldr r3, [r7, #4] + 8001658: 681b ldr r3, [r3, #0] + 800165a: 4618 mov r0, r3 + 800165c: f004 f8bb bl 80057d6 + 8001660: 4603 mov r3, r0 + 8001662: f403 6380 and.w r3, r3, #1024 ; 0x400 + 8001666: f5b3 6f80 cmp.w r3, #1024 ; 0x400 + 800166a: d112 bne.n 8001692 + { + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_RESET); + 800166c: 687b ldr r3, [r7, #4] + 800166e: 681b ldr r3, [r3, #0] + 8001670: f8b3 3044 ldrh.w r3, [r3, #68] ; 0x44 + 8001674: b29a uxth r2, r3 + 8001676: 687b ldr r3, [r7, #4] + 8001678: 681b ldr r3, [r3, #0] + 800167a: f422 6280 bic.w r2, r2, #1024 ; 0x400 + 800167e: b292 uxth r2, r2 + 8001680: f8a3 2044 strh.w r2, [r3, #68] ; 0x44 + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->ResetCallback(hpcd); +#else + HAL_PCD_ResetCallback(hpcd); + 8001684: 6878 ldr r0, [r7, #4] + 8001686: f006 fa6a bl 8007b5e +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + (void)HAL_PCD_SetAddress(hpcd, 0U); + 800168a: 2100 movs r1, #0 + 800168c: 6878 ldr r0, [r7, #4] + 800168e: f000 f925 bl 80018dc + } + + if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_PMAOVR)) + 8001692: 687b ldr r3, [r7, #4] + 8001694: 681b ldr r3, [r3, #0] + 8001696: 4618 mov r0, r3 + 8001698: f004 f89d bl 80057d6 + 800169c: 4603 mov r3, r0 + 800169e: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 80016a2: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 + 80016a6: d10b bne.n 80016c0 + { + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_PMAOVR); + 80016a8: 687b ldr r3, [r7, #4] + 80016aa: 681b ldr r3, [r3, #0] + 80016ac: f8b3 3044 ldrh.w r3, [r3, #68] ; 0x44 + 80016b0: b29a uxth r2, r3 + 80016b2: 687b ldr r3, [r7, #4] + 80016b4: 681b ldr r3, [r3, #0] + 80016b6: f422 4280 bic.w r2, r2, #16384 ; 0x4000 + 80016ba: b292 uxth r2, r2 + 80016bc: f8a3 2044 strh.w r2, [r3, #68] ; 0x44 + } + + if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_ERR)) + 80016c0: 687b ldr r3, [r7, #4] + 80016c2: 681b ldr r3, [r3, #0] + 80016c4: 4618 mov r0, r3 + 80016c6: f004 f886 bl 80057d6 + 80016ca: 4603 mov r3, r0 + 80016cc: f403 5300 and.w r3, r3, #8192 ; 0x2000 + 80016d0: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 + 80016d4: d10b bne.n 80016ee + { + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ERR); + 80016d6: 687b ldr r3, [r7, #4] + 80016d8: 681b ldr r3, [r3, #0] + 80016da: f8b3 3044 ldrh.w r3, [r3, #68] ; 0x44 + 80016de: b29a uxth r2, r3 + 80016e0: 687b ldr r3, [r7, #4] + 80016e2: 681b ldr r3, [r3, #0] + 80016e4: f422 5200 bic.w r2, r2, #8192 ; 0x2000 + 80016e8: b292 uxth r2, r2 + 80016ea: f8a3 2044 strh.w r2, [r3, #68] ; 0x44 + } + + if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_WKUP)) + 80016ee: 687b ldr r3, [r7, #4] + 80016f0: 681b ldr r3, [r3, #0] + 80016f2: 4618 mov r0, r3 + 80016f4: f004 f86f bl 80057d6 + 80016f8: 4603 mov r3, r0 + 80016fa: f403 5380 and.w r3, r3, #4096 ; 0x1000 + 80016fe: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 + 8001702: d126 bne.n 8001752 + { + hpcd->Instance->CNTR &= (uint16_t) ~(USB_CNTR_LP_MODE); + 8001704: 687b ldr r3, [r7, #4] + 8001706: 681b ldr r3, [r3, #0] + 8001708: f8b3 3040 ldrh.w r3, [r3, #64] ; 0x40 + 800170c: b29a uxth r2, r3 + 800170e: 687b ldr r3, [r7, #4] + 8001710: 681b ldr r3, [r3, #0] + 8001712: f022 0204 bic.w r2, r2, #4 + 8001716: b292 uxth r2, r2 + 8001718: f8a3 2040 strh.w r2, [r3, #64] ; 0x40 + hpcd->Instance->CNTR &= (uint16_t) ~(USB_CNTR_FSUSP); + 800171c: 687b ldr r3, [r7, #4] + 800171e: 681b ldr r3, [r3, #0] + 8001720: f8b3 3040 ldrh.w r3, [r3, #64] ; 0x40 + 8001724: b29a uxth r2, r3 + 8001726: 687b ldr r3, [r7, #4] + 8001728: 681b ldr r3, [r3, #0] + 800172a: f022 0208 bic.w r2, r2, #8 + 800172e: b292 uxth r2, r2 + 8001730: f8a3 2040 strh.w r2, [r3, #64] ; 0x40 + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->ResumeCallback(hpcd); +#else + HAL_PCD_ResumeCallback(hpcd); + 8001734: 6878 ldr r0, [r7, #4] + 8001736: f006 fa4b bl 8007bd0 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_WKUP); + 800173a: 687b ldr r3, [r7, #4] + 800173c: 681b ldr r3, [r3, #0] + 800173e: f8b3 3044 ldrh.w r3, [r3, #68] ; 0x44 + 8001742: b29a uxth r2, r3 + 8001744: 687b ldr r3, [r7, #4] + 8001746: 681b ldr r3, [r3, #0] + 8001748: f422 5280 bic.w r2, r2, #4096 ; 0x1000 + 800174c: b292 uxth r2, r2 + 800174e: f8a3 2044 strh.w r2, [r3, #68] ; 0x44 + } + + if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_SUSP)) + 8001752: 687b ldr r3, [r7, #4] + 8001754: 681b ldr r3, [r3, #0] + 8001756: 4618 mov r0, r3 + 8001758: f004 f83d bl 80057d6 + 800175c: 4603 mov r3, r0 + 800175e: f403 6300 and.w r3, r3, #2048 ; 0x800 + 8001762: f5b3 6f00 cmp.w r3, #2048 ; 0x800 + 8001766: f040 8084 bne.w 8001872 + { + /* WA: To Clear Wakeup flag if raised with suspend signal */ + + /* Store Endpoint register */ + for (i = 0U; i < 8U; i++) + 800176a: 2300 movs r3, #0 + 800176c: 77fb strb r3, [r7, #31] + 800176e: e011 b.n 8001794 + { + store_ep[i] = PCD_GET_ENDPOINT(hpcd->Instance, i); + 8001770: 687b ldr r3, [r7, #4] + 8001772: 681b ldr r3, [r3, #0] + 8001774: 461a mov r2, r3 + 8001776: 7ffb ldrb r3, [r7, #31] + 8001778: 009b lsls r3, r3, #2 + 800177a: 441a add r2, r3 + 800177c: 7ffb ldrb r3, [r7, #31] + 800177e: 8812 ldrh r2, [r2, #0] + 8001780: b292 uxth r2, r2 + 8001782: 005b lsls r3, r3, #1 + 8001784: f107 0120 add.w r1, r7, #32 + 8001788: 440b add r3, r1 + 800178a: f823 2c14 strh.w r2, [r3, #-20] + for (i = 0U; i < 8U; i++) + 800178e: 7ffb ldrb r3, [r7, #31] + 8001790: 3301 adds r3, #1 + 8001792: 77fb strb r3, [r7, #31] + 8001794: 7ffb ldrb r3, [r7, #31] + 8001796: 2b07 cmp r3, #7 + 8001798: d9ea bls.n 8001770 + } + + /* FORCE RESET */ + hpcd->Instance->CNTR |= (uint16_t)(USB_CNTR_FRES); + 800179a: 687b ldr r3, [r7, #4] + 800179c: 681b ldr r3, [r3, #0] + 800179e: f8b3 3040 ldrh.w r3, [r3, #64] ; 0x40 + 80017a2: b29a uxth r2, r3 + 80017a4: 687b ldr r3, [r7, #4] + 80017a6: 681b ldr r3, [r3, #0] + 80017a8: f042 0201 orr.w r2, r2, #1 + 80017ac: b292 uxth r2, r2 + 80017ae: f8a3 2040 strh.w r2, [r3, #64] ; 0x40 + + /* CLEAR RESET */ + hpcd->Instance->CNTR &= (uint16_t)(~USB_CNTR_FRES); + 80017b2: 687b ldr r3, [r7, #4] + 80017b4: 681b ldr r3, [r3, #0] + 80017b6: f8b3 3040 ldrh.w r3, [r3, #64] ; 0x40 + 80017ba: b29a uxth r2, r3 + 80017bc: 687b ldr r3, [r7, #4] + 80017be: 681b ldr r3, [r3, #0] + 80017c0: f022 0201 bic.w r2, r2, #1 + 80017c4: b292 uxth r2, r2 + 80017c6: f8a3 2040 strh.w r2, [r3, #64] ; 0x40 + + /* wait for reset flag in ISTR */ + while ((hpcd->Instance->ISTR & USB_ISTR_RESET) == 0U) + 80017ca: bf00 nop + 80017cc: 687b ldr r3, [r7, #4] + 80017ce: 681b ldr r3, [r3, #0] + 80017d0: f8b3 3044 ldrh.w r3, [r3, #68] ; 0x44 + 80017d4: b29b uxth r3, r3 + 80017d6: f403 6380 and.w r3, r3, #1024 ; 0x400 + 80017da: 2b00 cmp r3, #0 + 80017dc: d0f6 beq.n 80017cc + { + } + + /* Clear Reset Flag */ + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_RESET); + 80017de: 687b ldr r3, [r7, #4] + 80017e0: 681b ldr r3, [r3, #0] + 80017e2: f8b3 3044 ldrh.w r3, [r3, #68] ; 0x44 + 80017e6: b29a uxth r2, r3 + 80017e8: 687b ldr r3, [r7, #4] + 80017ea: 681b ldr r3, [r3, #0] + 80017ec: f422 6280 bic.w r2, r2, #1024 ; 0x400 + 80017f0: b292 uxth r2, r2 + 80017f2: f8a3 2044 strh.w r2, [r3, #68] ; 0x44 + + /* Restore Registre */ + for (i = 0U; i < 8U; i++) + 80017f6: 2300 movs r3, #0 + 80017f8: 77fb strb r3, [r7, #31] + 80017fa: e010 b.n 800181e + { + PCD_SET_ENDPOINT(hpcd->Instance, i, store_ep[i]); + 80017fc: 7ffb ldrb r3, [r7, #31] + 80017fe: 687a ldr r2, [r7, #4] + 8001800: 6812 ldr r2, [r2, #0] + 8001802: 4611 mov r1, r2 + 8001804: 7ffa ldrb r2, [r7, #31] + 8001806: 0092 lsls r2, r2, #2 + 8001808: 440a add r2, r1 + 800180a: 005b lsls r3, r3, #1 + 800180c: f107 0120 add.w r1, r7, #32 + 8001810: 440b add r3, r1 + 8001812: f833 3c14 ldrh.w r3, [r3, #-20] + 8001816: 8013 strh r3, [r2, #0] + for (i = 0U; i < 8U; i++) + 8001818: 7ffb ldrb r3, [r7, #31] + 800181a: 3301 adds r3, #1 + 800181c: 77fb strb r3, [r7, #31] + 800181e: 7ffb ldrb r3, [r7, #31] + 8001820: 2b07 cmp r3, #7 + 8001822: d9eb bls.n 80017fc + } + + /* Force low-power mode in the macrocell */ + hpcd->Instance->CNTR |= (uint16_t)USB_CNTR_FSUSP; + 8001824: 687b ldr r3, [r7, #4] + 8001826: 681b ldr r3, [r3, #0] + 8001828: f8b3 3040 ldrh.w r3, [r3, #64] ; 0x40 + 800182c: b29a uxth r2, r3 + 800182e: 687b ldr r3, [r7, #4] + 8001830: 681b ldr r3, [r3, #0] + 8001832: f042 0208 orr.w r2, r2, #8 + 8001836: b292 uxth r2, r2 + 8001838: f8a3 2040 strh.w r2, [r3, #64] ; 0x40 + + /* clear of the ISTR bit must be done after setting of CNTR_FSUSP */ + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SUSP); + 800183c: 687b ldr r3, [r7, #4] + 800183e: 681b ldr r3, [r3, #0] + 8001840: f8b3 3044 ldrh.w r3, [r3, #68] ; 0x44 + 8001844: b29a uxth r2, r3 + 8001846: 687b ldr r3, [r7, #4] + 8001848: 681b ldr r3, [r3, #0] + 800184a: f422 6200 bic.w r2, r2, #2048 ; 0x800 + 800184e: b292 uxth r2, r2 + 8001850: f8a3 2044 strh.w r2, [r3, #68] ; 0x44 + + hpcd->Instance->CNTR |= (uint16_t)USB_CNTR_LP_MODE; + 8001854: 687b ldr r3, [r7, #4] + 8001856: 681b ldr r3, [r3, #0] + 8001858: f8b3 3040 ldrh.w r3, [r3, #64] ; 0x40 + 800185c: b29a uxth r2, r3 + 800185e: 687b ldr r3, [r7, #4] + 8001860: 681b ldr r3, [r3, #0] + 8001862: f042 0204 orr.w r2, r2, #4 + 8001866: b292 uxth r2, r2 + 8001868: f8a3 2040 strh.w r2, [r3, #64] ; 0x40 + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SuspendCallback(hpcd); +#else + HAL_PCD_SuspendCallback(hpcd); + 800186c: 6878 ldr r0, [r7, #4] + 800186e: f006 f995 bl 8007b9c +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + + if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_SOF)) + 8001872: 687b ldr r3, [r7, #4] + 8001874: 681b ldr r3, [r3, #0] + 8001876: 4618 mov r0, r3 + 8001878: f003 ffad bl 80057d6 + 800187c: 4603 mov r3, r0 + 800187e: f403 7300 and.w r3, r3, #512 ; 0x200 + 8001882: f5b3 7f00 cmp.w r3, #512 ; 0x200 + 8001886: d10e bne.n 80018a6 + { + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SOF); + 8001888: 687b ldr r3, [r7, #4] + 800188a: 681b ldr r3, [r3, #0] + 800188c: f8b3 3044 ldrh.w r3, [r3, #68] ; 0x44 + 8001890: b29a uxth r2, r3 + 8001892: 687b ldr r3, [r7, #4] + 8001894: 681b ldr r3, [r3, #0] + 8001896: f422 7200 bic.w r2, r2, #512 ; 0x200 + 800189a: b292 uxth r2, r2 + 800189c: f8a3 2044 strh.w r2, [r3, #68] ; 0x44 + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SOFCallback(hpcd); +#else + HAL_PCD_SOFCallback(hpcd); + 80018a0: 6878 ldr r0, [r7, #4] + 80018a2: f006 f94e bl 8007b42 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + + if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_ESOF)) + 80018a6: 687b ldr r3, [r7, #4] + 80018a8: 681b ldr r3, [r3, #0] + 80018aa: 4618 mov r0, r3 + 80018ac: f003 ff93 bl 80057d6 + 80018b0: 4603 mov r3, r0 + 80018b2: f403 7380 and.w r3, r3, #256 ; 0x100 + 80018b6: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 80018ba: d10b bne.n 80018d4 + { + /* clear ESOF flag in ISTR */ + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ESOF); + 80018bc: 687b ldr r3, [r7, #4] + 80018be: 681b ldr r3, [r3, #0] + 80018c0: f8b3 3044 ldrh.w r3, [r3, #68] ; 0x44 + 80018c4: b29a uxth r2, r3 + 80018c6: 687b ldr r3, [r7, #4] + 80018c8: 681b ldr r3, [r3, #0] + 80018ca: f422 7280 bic.w r2, r2, #256 ; 0x100 + 80018ce: b292 uxth r2, r2 + 80018d0: f8a3 2044 strh.w r2, [r3, #68] ; 0x44 + } +} + 80018d4: bf00 nop + 80018d6: 3720 adds r7, #32 + 80018d8: 46bd mov sp, r7 + 80018da: bd80 pop {r7, pc} + +080018dc : + * @param hpcd PCD handle + * @param address new device address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address) +{ + 80018dc: b580 push {r7, lr} + 80018de: b082 sub sp, #8 + 80018e0: af00 add r7, sp, #0 + 80018e2: 6078 str r0, [r7, #4] + 80018e4: 460b mov r3, r1 + 80018e6: 70fb strb r3, [r7, #3] + __HAL_LOCK(hpcd); + 80018e8: 687b ldr r3, [r7, #4] + 80018ea: f893 32a8 ldrb.w r3, [r3, #680] ; 0x2a8 + 80018ee: 2b01 cmp r3, #1 + 80018f0: d101 bne.n 80018f6 + 80018f2: 2302 movs r3, #2 + 80018f4: e013 b.n 800191e + 80018f6: 687b ldr r3, [r7, #4] + 80018f8: 2201 movs r2, #1 + 80018fa: f883 22a8 strb.w r2, [r3, #680] ; 0x2a8 + hpcd->USB_Address = address; + 80018fe: 687b ldr r3, [r7, #4] + 8001900: 78fa ldrb r2, [r7, #3] + 8001902: f883 2024 strb.w r2, [r3, #36] ; 0x24 + (void)USB_SetDevAddress(hpcd->Instance, address); + 8001906: 687b ldr r3, [r7, #4] + 8001908: 681b ldr r3, [r3, #0] + 800190a: 78fa ldrb r2, [r7, #3] + 800190c: 4611 mov r1, r2 + 800190e: 4618 mov r0, r3 + 8001910: f003 ff3a bl 8005788 + __HAL_UNLOCK(hpcd); + 8001914: 687b ldr r3, [r7, #4] + 8001916: 2200 movs r2, #0 + 8001918: f883 22a8 strb.w r2, [r3, #680] ; 0x2a8 + + return HAL_OK; + 800191c: 2300 movs r3, #0 +} + 800191e: 4618 mov r0, r3 + 8001920: 3708 adds r7, #8 + 8001922: 46bd mov sp, r7 + 8001924: bd80 pop {r7, pc} + +08001926 : + * @param ep_type endpoint type + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, + uint16_t ep_mps, uint8_t ep_type) +{ + 8001926: b580 push {r7, lr} + 8001928: b084 sub sp, #16 + 800192a: af00 add r7, sp, #0 + 800192c: 6078 str r0, [r7, #4] + 800192e: 4608 mov r0, r1 + 8001930: 4611 mov r1, r2 + 8001932: 461a mov r2, r3 + 8001934: 4603 mov r3, r0 + 8001936: 70fb strb r3, [r7, #3] + 8001938: 460b mov r3, r1 + 800193a: 803b strh r3, [r7, #0] + 800193c: 4613 mov r3, r2 + 800193e: 70bb strb r3, [r7, #2] + HAL_StatusTypeDef ret = HAL_OK; + 8001940: 2300 movs r3, #0 + 8001942: 72fb strb r3, [r7, #11] + PCD_EPTypeDef *ep; + + if ((ep_addr & 0x80U) == 0x80U) + 8001944: f997 3003 ldrsb.w r3, [r7, #3] + 8001948: 2b00 cmp r3, #0 + 800194a: da0e bge.n 800196a + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + 800194c: 78fb ldrb r3, [r7, #3] + 800194e: f003 0307 and.w r3, r3, #7 + 8001952: 1c5a adds r2, r3, #1 + 8001954: 4613 mov r3, r2 + 8001956: 009b lsls r3, r3, #2 + 8001958: 4413 add r3, r2 + 800195a: 00db lsls r3, r3, #3 + 800195c: 687a ldr r2, [r7, #4] + 800195e: 4413 add r3, r2 + 8001960: 60fb str r3, [r7, #12] + ep->is_in = 1U; + 8001962: 68fb ldr r3, [r7, #12] + 8001964: 2201 movs r2, #1 + 8001966: 705a strb r2, [r3, #1] + 8001968: e00e b.n 8001988 + } + else + { + ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; + 800196a: 78fb ldrb r3, [r7, #3] + 800196c: f003 0207 and.w r2, r3, #7 + 8001970: 4613 mov r3, r2 + 8001972: 009b lsls r3, r3, #2 + 8001974: 4413 add r3, r2 + 8001976: 00db lsls r3, r3, #3 + 8001978: f503 73b4 add.w r3, r3, #360 ; 0x168 + 800197c: 687a ldr r2, [r7, #4] + 800197e: 4413 add r3, r2 + 8001980: 60fb str r3, [r7, #12] + ep->is_in = 0U; + 8001982: 68fb ldr r3, [r7, #12] + 8001984: 2200 movs r2, #0 + 8001986: 705a strb r2, [r3, #1] + } + + ep->num = ep_addr & EP_ADDR_MSK; + 8001988: 78fb ldrb r3, [r7, #3] + 800198a: f003 0307 and.w r3, r3, #7 + 800198e: b2da uxtb r2, r3 + 8001990: 68fb ldr r3, [r7, #12] + 8001992: 701a strb r2, [r3, #0] + ep->maxpacket = ep_mps; + 8001994: 883a ldrh r2, [r7, #0] + 8001996: 68fb ldr r3, [r7, #12] + 8001998: 611a str r2, [r3, #16] + ep->type = ep_type; + 800199a: 68fb ldr r3, [r7, #12] + 800199c: 78ba ldrb r2, [r7, #2] + 800199e: 70da strb r2, [r3, #3] + + if (ep->is_in != 0U) + 80019a0: 68fb ldr r3, [r7, #12] + 80019a2: 785b ldrb r3, [r3, #1] + 80019a4: 2b00 cmp r3, #0 + 80019a6: d004 beq.n 80019b2 + { + /* Assign a Tx FIFO */ + ep->tx_fifo_num = ep->num; + 80019a8: 68fb ldr r3, [r7, #12] + 80019aa: 781b ldrb r3, [r3, #0] + 80019ac: b29a uxth r2, r3 + 80019ae: 68fb ldr r3, [r7, #12] + 80019b0: 81da strh r2, [r3, #14] + } + /* Set initial data PID. */ + if (ep_type == EP_TYPE_BULK) + 80019b2: 78bb ldrb r3, [r7, #2] + 80019b4: 2b02 cmp r3, #2 + 80019b6: d102 bne.n 80019be + { + ep->data_pid_start = 0U; + 80019b8: 68fb ldr r3, [r7, #12] + 80019ba: 2200 movs r2, #0 + 80019bc: 711a strb r2, [r3, #4] + } + + __HAL_LOCK(hpcd); + 80019be: 687b ldr r3, [r7, #4] + 80019c0: f893 32a8 ldrb.w r3, [r3, #680] ; 0x2a8 + 80019c4: 2b01 cmp r3, #1 + 80019c6: d101 bne.n 80019cc + 80019c8: 2302 movs r3, #2 + 80019ca: e00e b.n 80019ea + 80019cc: 687b ldr r3, [r7, #4] + 80019ce: 2201 movs r2, #1 + 80019d0: f883 22a8 strb.w r2, [r3, #680] ; 0x2a8 + (void)USB_ActivateEndpoint(hpcd->Instance, ep); + 80019d4: 687b ldr r3, [r7, #4] + 80019d6: 681b ldr r3, [r3, #0] + 80019d8: 68f9 ldr r1, [r7, #12] + 80019da: 4618 mov r0, r3 + 80019dc: f001 ff76 bl 80038cc + __HAL_UNLOCK(hpcd); + 80019e0: 687b ldr r3, [r7, #4] + 80019e2: 2200 movs r2, #0 + 80019e4: f883 22a8 strb.w r2, [r3, #680] ; 0x2a8 + + return ret; + 80019e8: 7afb ldrb r3, [r7, #11] +} + 80019ea: 4618 mov r0, r3 + 80019ec: 3710 adds r7, #16 + 80019ee: 46bd mov sp, r7 + 80019f0: bd80 pop {r7, pc} + +080019f2 : + * @param pBuf pointer to the reception buffer + * @param len amount of data to be received + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len) +{ + 80019f2: b580 push {r7, lr} + 80019f4: b086 sub sp, #24 + 80019f6: af00 add r7, sp, #0 + 80019f8: 60f8 str r0, [r7, #12] + 80019fa: 607a str r2, [r7, #4] + 80019fc: 603b str r3, [r7, #0] + 80019fe: 460b mov r3, r1 + 8001a00: 72fb strb r3, [r7, #11] + PCD_EPTypeDef *ep; + + ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; + 8001a02: 7afb ldrb r3, [r7, #11] + 8001a04: f003 0207 and.w r2, r3, #7 + 8001a08: 4613 mov r3, r2 + 8001a0a: 009b lsls r3, r3, #2 + 8001a0c: 4413 add r3, r2 + 8001a0e: 00db lsls r3, r3, #3 + 8001a10: f503 73b4 add.w r3, r3, #360 ; 0x168 + 8001a14: 68fa ldr r2, [r7, #12] + 8001a16: 4413 add r3, r2 + 8001a18: 617b str r3, [r7, #20] + + /*setup and start the Xfer */ + ep->xfer_buff = pBuf; + 8001a1a: 697b ldr r3, [r7, #20] + 8001a1c: 687a ldr r2, [r7, #4] + 8001a1e: 615a str r2, [r3, #20] + ep->xfer_len = len; + 8001a20: 697b ldr r3, [r7, #20] + 8001a22: 683a ldr r2, [r7, #0] + 8001a24: 619a str r2, [r3, #24] + ep->xfer_count = 0U; + 8001a26: 697b ldr r3, [r7, #20] + 8001a28: 2200 movs r2, #0 + 8001a2a: 61da str r2, [r3, #28] + ep->is_in = 0U; + 8001a2c: 697b ldr r3, [r7, #20] + 8001a2e: 2200 movs r2, #0 + 8001a30: 705a strb r2, [r3, #1] + ep->num = ep_addr & EP_ADDR_MSK; + 8001a32: 7afb ldrb r3, [r7, #11] + 8001a34: f003 0307 and.w r3, r3, #7 + 8001a38: b2da uxtb r2, r3 + 8001a3a: 697b ldr r3, [r7, #20] + 8001a3c: 701a strb r2, [r3, #0] + + if ((ep_addr & EP_ADDR_MSK) == 0U) + 8001a3e: 7afb ldrb r3, [r7, #11] + 8001a40: f003 0307 and.w r3, r3, #7 + 8001a44: 2b00 cmp r3, #0 + 8001a46: d106 bne.n 8001a56 + { + (void)USB_EP0StartXfer(hpcd->Instance, ep); + 8001a48: 68fb ldr r3, [r7, #12] + 8001a4a: 681b ldr r3, [r3, #0] + 8001a4c: 6979 ldr r1, [r7, #20] + 8001a4e: 4618 mov r0, r3 + 8001a50: f002 faa6 bl 8003fa0 + 8001a54: e005 b.n 8001a62 + } + else + { + (void)USB_EPStartXfer(hpcd->Instance, ep); + 8001a56: 68fb ldr r3, [r7, #12] + 8001a58: 681b ldr r3, [r3, #0] + 8001a5a: 6979 ldr r1, [r7, #20] + 8001a5c: 4618 mov r0, r3 + 8001a5e: f002 fa9f bl 8003fa0 + } + + return HAL_OK; + 8001a62: 2300 movs r3, #0 +} + 8001a64: 4618 mov r0, r3 + 8001a66: 3718 adds r7, #24 + 8001a68: 46bd mov sp, r7 + 8001a6a: bd80 pop {r7, pc} + +08001a6c : + * @param pBuf pointer to the transmission buffer + * @param len amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len) +{ + 8001a6c: b580 push {r7, lr} + 8001a6e: b086 sub sp, #24 + 8001a70: af00 add r7, sp, #0 + 8001a72: 60f8 str r0, [r7, #12] + 8001a74: 607a str r2, [r7, #4] + 8001a76: 603b str r3, [r7, #0] + 8001a78: 460b mov r3, r1 + 8001a7a: 72fb strb r3, [r7, #11] + PCD_EPTypeDef *ep; + + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + 8001a7c: 7afb ldrb r3, [r7, #11] + 8001a7e: f003 0307 and.w r3, r3, #7 + 8001a82: 1c5a adds r2, r3, #1 + 8001a84: 4613 mov r3, r2 + 8001a86: 009b lsls r3, r3, #2 + 8001a88: 4413 add r3, r2 + 8001a8a: 00db lsls r3, r3, #3 + 8001a8c: 68fa ldr r2, [r7, #12] + 8001a8e: 4413 add r3, r2 + 8001a90: 617b str r3, [r7, #20] + + /*setup and start the Xfer */ + ep->xfer_buff = pBuf; + 8001a92: 697b ldr r3, [r7, #20] + 8001a94: 687a ldr r2, [r7, #4] + 8001a96: 615a str r2, [r3, #20] + ep->xfer_len = len; + 8001a98: 697b ldr r3, [r7, #20] + 8001a9a: 683a ldr r2, [r7, #0] + 8001a9c: 619a str r2, [r3, #24] +#if defined (USB) + ep->xfer_fill_db = 1U; + 8001a9e: 697b ldr r3, [r7, #20] + 8001aa0: 2201 movs r2, #1 + 8001aa2: f883 2024 strb.w r2, [r3, #36] ; 0x24 + ep->xfer_len_db = len; + 8001aa6: 697b ldr r3, [r7, #20] + 8001aa8: 683a ldr r2, [r7, #0] + 8001aaa: 621a str r2, [r3, #32] +#endif /* defined (USB) */ + ep->xfer_count = 0U; + 8001aac: 697b ldr r3, [r7, #20] + 8001aae: 2200 movs r2, #0 + 8001ab0: 61da str r2, [r3, #28] + ep->is_in = 1U; + 8001ab2: 697b ldr r3, [r7, #20] + 8001ab4: 2201 movs r2, #1 + 8001ab6: 705a strb r2, [r3, #1] + ep->num = ep_addr & EP_ADDR_MSK; + 8001ab8: 7afb ldrb r3, [r7, #11] + 8001aba: f003 0307 and.w r3, r3, #7 + 8001abe: b2da uxtb r2, r3 + 8001ac0: 697b ldr r3, [r7, #20] + 8001ac2: 701a strb r2, [r3, #0] + + if ((ep_addr & EP_ADDR_MSK) == 0U) + 8001ac4: 7afb ldrb r3, [r7, #11] + 8001ac6: f003 0307 and.w r3, r3, #7 + 8001aca: 2b00 cmp r3, #0 + 8001acc: d106 bne.n 8001adc + { + (void)USB_EP0StartXfer(hpcd->Instance, ep); + 8001ace: 68fb ldr r3, [r7, #12] + 8001ad0: 681b ldr r3, [r3, #0] + 8001ad2: 6979 ldr r1, [r7, #20] + 8001ad4: 4618 mov r0, r3 + 8001ad6: f002 fa63 bl 8003fa0 + 8001ada: e005 b.n 8001ae8 + } + else + { + (void)USB_EPStartXfer(hpcd->Instance, ep); + 8001adc: 68fb ldr r3, [r7, #12] + 8001ade: 681b ldr r3, [r3, #0] + 8001ae0: 6979 ldr r1, [r7, #20] + 8001ae2: 4618 mov r0, r3 + 8001ae4: f002 fa5c bl 8003fa0 + } + + return HAL_OK; + 8001ae8: 2300 movs r3, #0 +} + 8001aea: 4618 mov r0, r3 + 8001aec: 3718 adds r7, #24 + 8001aee: 46bd mov sp, r7 + 8001af0: bd80 pop {r7, pc} + +08001af2 : + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) +{ + 8001af2: b580 push {r7, lr} + 8001af4: b084 sub sp, #16 + 8001af6: af00 add r7, sp, #0 + 8001af8: 6078 str r0, [r7, #4] + 8001afa: 460b mov r3, r1 + 8001afc: 70fb strb r3, [r7, #3] + PCD_EPTypeDef *ep; + + if (((uint32_t)ep_addr & EP_ADDR_MSK) > hpcd->Init.dev_endpoints) + 8001afe: 78fb ldrb r3, [r7, #3] + 8001b00: f003 0207 and.w r2, r3, #7 + 8001b04: 687b ldr r3, [r7, #4] + 8001b06: 685b ldr r3, [r3, #4] + 8001b08: 429a cmp r2, r3 + 8001b0a: d901 bls.n 8001b10 + { + return HAL_ERROR; + 8001b0c: 2301 movs r3, #1 + 8001b0e: e04c b.n 8001baa + } + + if ((0x80U & ep_addr) == 0x80U) + 8001b10: f997 3003 ldrsb.w r3, [r7, #3] + 8001b14: 2b00 cmp r3, #0 + 8001b16: da0e bge.n 8001b36 + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + 8001b18: 78fb ldrb r3, [r7, #3] + 8001b1a: f003 0307 and.w r3, r3, #7 + 8001b1e: 1c5a adds r2, r3, #1 + 8001b20: 4613 mov r3, r2 + 8001b22: 009b lsls r3, r3, #2 + 8001b24: 4413 add r3, r2 + 8001b26: 00db lsls r3, r3, #3 + 8001b28: 687a ldr r2, [r7, #4] + 8001b2a: 4413 add r3, r2 + 8001b2c: 60fb str r3, [r7, #12] + ep->is_in = 1U; + 8001b2e: 68fb ldr r3, [r7, #12] + 8001b30: 2201 movs r2, #1 + 8001b32: 705a strb r2, [r3, #1] + 8001b34: e00c b.n 8001b50 + } + else + { + ep = &hpcd->OUT_ep[ep_addr]; + 8001b36: 78fa ldrb r2, [r7, #3] + 8001b38: 4613 mov r3, r2 + 8001b3a: 009b lsls r3, r3, #2 + 8001b3c: 4413 add r3, r2 + 8001b3e: 00db lsls r3, r3, #3 + 8001b40: f503 73b4 add.w r3, r3, #360 ; 0x168 + 8001b44: 687a ldr r2, [r7, #4] + 8001b46: 4413 add r3, r2 + 8001b48: 60fb str r3, [r7, #12] + ep->is_in = 0U; + 8001b4a: 68fb ldr r3, [r7, #12] + 8001b4c: 2200 movs r2, #0 + 8001b4e: 705a strb r2, [r3, #1] + } + + ep->is_stall = 1U; + 8001b50: 68fb ldr r3, [r7, #12] + 8001b52: 2201 movs r2, #1 + 8001b54: 709a strb r2, [r3, #2] + ep->num = ep_addr & EP_ADDR_MSK; + 8001b56: 78fb ldrb r3, [r7, #3] + 8001b58: f003 0307 and.w r3, r3, #7 + 8001b5c: b2da uxtb r2, r3 + 8001b5e: 68fb ldr r3, [r7, #12] + 8001b60: 701a strb r2, [r3, #0] + + __HAL_LOCK(hpcd); + 8001b62: 687b ldr r3, [r7, #4] + 8001b64: f893 32a8 ldrb.w r3, [r3, #680] ; 0x2a8 + 8001b68: 2b01 cmp r3, #1 + 8001b6a: d101 bne.n 8001b70 + 8001b6c: 2302 movs r3, #2 + 8001b6e: e01c b.n 8001baa + 8001b70: 687b ldr r3, [r7, #4] + 8001b72: 2201 movs r2, #1 + 8001b74: f883 22a8 strb.w r2, [r3, #680] ; 0x2a8 + + (void)USB_EPSetStall(hpcd->Instance, ep); + 8001b78: 687b ldr r3, [r7, #4] + 8001b7a: 681b ldr r3, [r3, #0] + 8001b7c: 68f9 ldr r1, [r7, #12] + 8001b7e: 4618 mov r0, r3 + 8001b80: f003 fd05 bl 800558e + + if ((ep_addr & EP_ADDR_MSK) == 0U) + 8001b84: 78fb ldrb r3, [r7, #3] + 8001b86: f003 0307 and.w r3, r3, #7 + 8001b8a: 2b00 cmp r3, #0 + 8001b8c: d108 bne.n 8001ba0 + { + (void)USB_EP0_OutStart(hpcd->Instance, (uint8_t *)hpcd->Setup); + 8001b8e: 687b ldr r3, [r7, #4] + 8001b90: 681a ldr r2, [r3, #0] + 8001b92: 687b ldr r3, [r7, #4] + 8001b94: f503 732c add.w r3, r3, #688 ; 0x2b0 + 8001b98: 4619 mov r1, r3 + 8001b9a: 4610 mov r0, r2 + 8001b9c: f003 fe2a bl 80057f4 + } + + __HAL_UNLOCK(hpcd); + 8001ba0: 687b ldr r3, [r7, #4] + 8001ba2: 2200 movs r2, #0 + 8001ba4: f883 22a8 strb.w r2, [r3, #680] ; 0x2a8 + + return HAL_OK; + 8001ba8: 2300 movs r3, #0 +} + 8001baa: 4618 mov r0, r3 + 8001bac: 3710 adds r7, #16 + 8001bae: 46bd mov sp, r7 + 8001bb0: bd80 pop {r7, pc} + +08001bb2 : + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) +{ + 8001bb2: b580 push {r7, lr} + 8001bb4: b084 sub sp, #16 + 8001bb6: af00 add r7, sp, #0 + 8001bb8: 6078 str r0, [r7, #4] + 8001bba: 460b mov r3, r1 + 8001bbc: 70fb strb r3, [r7, #3] + PCD_EPTypeDef *ep; + + if (((uint32_t)ep_addr & 0x0FU) > hpcd->Init.dev_endpoints) + 8001bbe: 78fb ldrb r3, [r7, #3] + 8001bc0: f003 020f and.w r2, r3, #15 + 8001bc4: 687b ldr r3, [r7, #4] + 8001bc6: 685b ldr r3, [r3, #4] + 8001bc8: 429a cmp r2, r3 + 8001bca: d901 bls.n 8001bd0 + { + return HAL_ERROR; + 8001bcc: 2301 movs r3, #1 + 8001bce: e040 b.n 8001c52 + } + + if ((0x80U & ep_addr) == 0x80U) + 8001bd0: f997 3003 ldrsb.w r3, [r7, #3] + 8001bd4: 2b00 cmp r3, #0 + 8001bd6: da0e bge.n 8001bf6 + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + 8001bd8: 78fb ldrb r3, [r7, #3] + 8001bda: f003 0307 and.w r3, r3, #7 + 8001bde: 1c5a adds r2, r3, #1 + 8001be0: 4613 mov r3, r2 + 8001be2: 009b lsls r3, r3, #2 + 8001be4: 4413 add r3, r2 + 8001be6: 00db lsls r3, r3, #3 + 8001be8: 687a ldr r2, [r7, #4] + 8001bea: 4413 add r3, r2 + 8001bec: 60fb str r3, [r7, #12] + ep->is_in = 1U; + 8001bee: 68fb ldr r3, [r7, #12] + 8001bf0: 2201 movs r2, #1 + 8001bf2: 705a strb r2, [r3, #1] + 8001bf4: e00e b.n 8001c14 + } + else + { + ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; + 8001bf6: 78fb ldrb r3, [r7, #3] + 8001bf8: f003 0207 and.w r2, r3, #7 + 8001bfc: 4613 mov r3, r2 + 8001bfe: 009b lsls r3, r3, #2 + 8001c00: 4413 add r3, r2 + 8001c02: 00db lsls r3, r3, #3 + 8001c04: f503 73b4 add.w r3, r3, #360 ; 0x168 + 8001c08: 687a ldr r2, [r7, #4] + 8001c0a: 4413 add r3, r2 + 8001c0c: 60fb str r3, [r7, #12] + ep->is_in = 0U; + 8001c0e: 68fb ldr r3, [r7, #12] + 8001c10: 2200 movs r2, #0 + 8001c12: 705a strb r2, [r3, #1] + } + + ep->is_stall = 0U; + 8001c14: 68fb ldr r3, [r7, #12] + 8001c16: 2200 movs r2, #0 + 8001c18: 709a strb r2, [r3, #2] + ep->num = ep_addr & EP_ADDR_MSK; + 8001c1a: 78fb ldrb r3, [r7, #3] + 8001c1c: f003 0307 and.w r3, r3, #7 + 8001c20: b2da uxtb r2, r3 + 8001c22: 68fb ldr r3, [r7, #12] + 8001c24: 701a strb r2, [r3, #0] + + __HAL_LOCK(hpcd); + 8001c26: 687b ldr r3, [r7, #4] + 8001c28: f893 32a8 ldrb.w r3, [r3, #680] ; 0x2a8 + 8001c2c: 2b01 cmp r3, #1 + 8001c2e: d101 bne.n 8001c34 + 8001c30: 2302 movs r3, #2 + 8001c32: e00e b.n 8001c52 + 8001c34: 687b ldr r3, [r7, #4] + 8001c36: 2201 movs r2, #1 + 8001c38: f883 22a8 strb.w r2, [r3, #680] ; 0x2a8 + (void)USB_EPClearStall(hpcd->Instance, ep); + 8001c3c: 687b ldr r3, [r7, #4] + 8001c3e: 681b ldr r3, [r3, #0] + 8001c40: 68f9 ldr r1, [r7, #12] + 8001c42: 4618 mov r0, r3 + 8001c44: f003 fcf3 bl 800562e + __HAL_UNLOCK(hpcd); + 8001c48: 687b ldr r3, [r7, #4] + 8001c4a: 2200 movs r2, #0 + 8001c4c: f883 22a8 strb.w r2, [r3, #680] ; 0x2a8 + + return HAL_OK; + 8001c50: 2300 movs r3, #0 +} + 8001c52: 4618 mov r0, r3 + 8001c54: 3710 adds r7, #16 + 8001c56: 46bd mov sp, r7 + 8001c58: bd80 pop {r7, pc} + +08001c5a : + * @brief This function handles PCD Endpoint interrupt request. + * @param hpcd PCD handle + * @retval HAL status + */ +static HAL_StatusTypeDef PCD_EP_ISR_Handler(PCD_HandleTypeDef *hpcd) +{ + 8001c5a: b580 push {r7, lr} + 8001c5c: b08e sub sp, #56 ; 0x38 + 8001c5e: af00 add r7, sp, #0 + 8001c60: 6078 str r0, [r7, #4] + PCD_EPTypeDef *ep; + uint16_t count, wIstr, wEPVal, TxByteNbre; + uint8_t epindex; + + /* stay in loop while pending interrupts */ + while ((hpcd->Instance->ISTR & USB_ISTR_CTR) != 0U) + 8001c62: e2ec b.n 800223e + { + wIstr = hpcd->Instance->ISTR; + 8001c64: 687b ldr r3, [r7, #4] + 8001c66: 681b ldr r3, [r3, #0] + 8001c68: f8b3 3044 ldrh.w r3, [r3, #68] ; 0x44 + 8001c6c: 85fb strh r3, [r7, #46] ; 0x2e + + /* extract highest priority endpoint number */ + epindex = (uint8_t)(wIstr & USB_ISTR_EP_ID); + 8001c6e: 8dfb ldrh r3, [r7, #46] ; 0x2e + 8001c70: b2db uxtb r3, r3 + 8001c72: f003 030f and.w r3, r3, #15 + 8001c76: f887 302d strb.w r3, [r7, #45] ; 0x2d + + if (epindex == 0U) + 8001c7a: f897 302d ldrb.w r3, [r7, #45] ; 0x2d + 8001c7e: 2b00 cmp r3, #0 + 8001c80: f040 8161 bne.w 8001f46 + { + /* Decode and service control endpoint interrupt */ + + /* DIR bit = origin of the interrupt */ + if ((wIstr & USB_ISTR_DIR) == 0U) + 8001c84: 8dfb ldrh r3, [r7, #46] ; 0x2e + 8001c86: f003 0310 and.w r3, r3, #16 + 8001c8a: 2b00 cmp r3, #0 + 8001c8c: d152 bne.n 8001d34 + { + /* DIR = 0 */ + + /* DIR = 0 => IN int */ + /* DIR = 0 implies that (EP_CTR_TX = 1) always */ + PCD_CLEAR_TX_EP_CTR(hpcd->Instance, PCD_ENDP0); + 8001c8e: 687b ldr r3, [r7, #4] + 8001c90: 681b ldr r3, [r3, #0] + 8001c92: 881b ldrh r3, [r3, #0] + 8001c94: b29b uxth r3, r3 + 8001c96: f423 43e1 bic.w r3, r3, #28800 ; 0x7080 + 8001c9a: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8001c9e: 81fb strh r3, [r7, #14] + 8001ca0: 687b ldr r3, [r7, #4] + 8001ca2: 681a ldr r2, [r3, #0] + 8001ca4: 89fb ldrh r3, [r7, #14] + 8001ca6: ea6f 4343 mvn.w r3, r3, lsl #17 + 8001caa: ea6f 4353 mvn.w r3, r3, lsr #17 + 8001cae: b29b uxth r3, r3 + 8001cb0: 8013 strh r3, [r2, #0] + ep = &hpcd->IN_ep[0]; + 8001cb2: 687b ldr r3, [r7, #4] + 8001cb4: 3328 adds r3, #40 ; 0x28 + 8001cb6: 627b str r3, [r7, #36] ; 0x24 + + ep->xfer_count = PCD_GET_EP_TX_CNT(hpcd->Instance, ep->num); + 8001cb8: 687b ldr r3, [r7, #4] + 8001cba: 681b ldr r3, [r3, #0] + 8001cbc: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8001cc0: b29b uxth r3, r3 + 8001cc2: 461a mov r2, r3 + 8001cc4: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001cc6: 781b ldrb r3, [r3, #0] + 8001cc8: 00db lsls r3, r3, #3 + 8001cca: 4413 add r3, r2 + 8001ccc: 3302 adds r3, #2 + 8001cce: 005b lsls r3, r3, #1 + 8001cd0: 687a ldr r2, [r7, #4] + 8001cd2: 6812 ldr r2, [r2, #0] + 8001cd4: 4413 add r3, r2 + 8001cd6: f503 6380 add.w r3, r3, #1024 ; 0x400 + 8001cda: 881b ldrh r3, [r3, #0] + 8001cdc: f3c3 0209 ubfx r2, r3, #0, #10 + 8001ce0: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001ce2: 61da str r2, [r3, #28] + ep->xfer_buff += ep->xfer_count; + 8001ce4: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001ce6: 695a ldr r2, [r3, #20] + 8001ce8: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001cea: 69db ldr r3, [r3, #28] + 8001cec: 441a add r2, r3 + 8001cee: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001cf0: 615a str r2, [r3, #20] + + /* TX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataInStageCallback(hpcd, 0U); +#else + HAL_PCD_DataInStageCallback(hpcd, 0U); + 8001cf2: 2100 movs r1, #0 + 8001cf4: 6878 ldr r0, [r7, #4] + 8001cf6: f005 ff0a bl 8007b0e +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + if ((hpcd->USB_Address > 0U) && (ep->xfer_len == 0U)) + 8001cfa: 687b ldr r3, [r7, #4] + 8001cfc: f893 3024 ldrb.w r3, [r3, #36] ; 0x24 + 8001d00: b2db uxtb r3, r3 + 8001d02: 2b00 cmp r3, #0 + 8001d04: f000 829b beq.w 800223e + 8001d08: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001d0a: 699b ldr r3, [r3, #24] + 8001d0c: 2b00 cmp r3, #0 + 8001d0e: f040 8296 bne.w 800223e + { + hpcd->Instance->DADDR = ((uint16_t)hpcd->USB_Address | USB_DADDR_EF); + 8001d12: 687b ldr r3, [r7, #4] + 8001d14: f893 3024 ldrb.w r3, [r3, #36] ; 0x24 + 8001d18: b2db uxtb r3, r3 + 8001d1a: f063 037f orn r3, r3, #127 ; 0x7f + 8001d1e: b2da uxtb r2, r3 + 8001d20: 687b ldr r3, [r7, #4] + 8001d22: 681b ldr r3, [r3, #0] + 8001d24: b292 uxth r2, r2 + 8001d26: f8a3 204c strh.w r2, [r3, #76] ; 0x4c + hpcd->USB_Address = 0U; + 8001d2a: 687b ldr r3, [r7, #4] + 8001d2c: 2200 movs r2, #0 + 8001d2e: f883 2024 strb.w r2, [r3, #36] ; 0x24 + 8001d32: e284 b.n 800223e + { + /* DIR = 1 */ + + /* DIR = 1 & CTR_RX => SETUP or OUT int */ + /* DIR = 1 & (CTR_TX | CTR_RX) => 2 int pending */ + ep = &hpcd->OUT_ep[0]; + 8001d34: 687b ldr r3, [r7, #4] + 8001d36: f503 73b4 add.w r3, r3, #360 ; 0x168 + 8001d3a: 627b str r3, [r7, #36] ; 0x24 + wEPVal = PCD_GET_ENDPOINT(hpcd->Instance, PCD_ENDP0); + 8001d3c: 687b ldr r3, [r7, #4] + 8001d3e: 681b ldr r3, [r3, #0] + 8001d40: 881b ldrh r3, [r3, #0] + 8001d42: 857b strh r3, [r7, #42] ; 0x2a + + if ((wEPVal & USB_EP_SETUP) != 0U) + 8001d44: 8d7b ldrh r3, [r7, #42] ; 0x2a + 8001d46: f403 6300 and.w r3, r3, #2048 ; 0x800 + 8001d4a: 2b00 cmp r3, #0 + 8001d4c: d034 beq.n 8001db8 + { + /* Get SETUP Packet */ + ep->xfer_count = PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); + 8001d4e: 687b ldr r3, [r7, #4] + 8001d50: 681b ldr r3, [r3, #0] + 8001d52: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8001d56: b29b uxth r3, r3 + 8001d58: 461a mov r2, r3 + 8001d5a: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001d5c: 781b ldrb r3, [r3, #0] + 8001d5e: 00db lsls r3, r3, #3 + 8001d60: 4413 add r3, r2 + 8001d62: 3306 adds r3, #6 + 8001d64: 005b lsls r3, r3, #1 + 8001d66: 687a ldr r2, [r7, #4] + 8001d68: 6812 ldr r2, [r2, #0] + 8001d6a: 4413 add r3, r2 + 8001d6c: f503 6380 add.w r3, r3, #1024 ; 0x400 + 8001d70: 881b ldrh r3, [r3, #0] + 8001d72: f3c3 0209 ubfx r2, r3, #0, #10 + 8001d76: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001d78: 61da str r2, [r3, #28] + + USB_ReadPMA(hpcd->Instance, (uint8_t *)hpcd->Setup, + 8001d7a: 687b ldr r3, [r7, #4] + 8001d7c: 6818 ldr r0, [r3, #0] + 8001d7e: 687b ldr r3, [r7, #4] + 8001d80: f503 712c add.w r1, r3, #688 ; 0x2b0 + 8001d84: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001d86: 88da ldrh r2, [r3, #6] + ep->pmaadress, (uint16_t)ep->xfer_count); + 8001d88: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001d8a: 69db ldr r3, [r3, #28] + USB_ReadPMA(hpcd->Instance, (uint8_t *)hpcd->Setup, + 8001d8c: b29b uxth r3, r3 + 8001d8e: f003 fd81 bl 8005894 + + /* SETUP bit kept frozen while CTR_RX = 1 */ + PCD_CLEAR_RX_EP_CTR(hpcd->Instance, PCD_ENDP0); + 8001d92: 687b ldr r3, [r7, #4] + 8001d94: 681b ldr r3, [r3, #0] + 8001d96: 881b ldrh r3, [r3, #0] + 8001d98: b29a uxth r2, r3 + 8001d9a: f640 738f movw r3, #3983 ; 0xf8f + 8001d9e: 4013 ands r3, r2 + 8001da0: 823b strh r3, [r7, #16] + 8001da2: 687b ldr r3, [r7, #4] + 8001da4: 681b ldr r3, [r3, #0] + 8001da6: 8a3a ldrh r2, [r7, #16] + 8001da8: f042 0280 orr.w r2, r2, #128 ; 0x80 + 8001dac: b292 uxth r2, r2 + 8001dae: 801a strh r2, [r3, #0] + + /* Process SETUP Packet*/ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SetupStageCallback(hpcd); +#else + HAL_PCD_SetupStageCallback(hpcd); + 8001db0: 6878 ldr r0, [r7, #4] + 8001db2: f005 fe7f bl 8007ab4 + 8001db6: e242 b.n 800223e +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + else if ((wEPVal & USB_EP_CTR_RX) != 0U) + 8001db8: f9b7 302a ldrsh.w r3, [r7, #42] ; 0x2a + 8001dbc: 2b00 cmp r3, #0 + 8001dbe: f280 823e bge.w 800223e + { + PCD_CLEAR_RX_EP_CTR(hpcd->Instance, PCD_ENDP0); + 8001dc2: 687b ldr r3, [r7, #4] + 8001dc4: 681b ldr r3, [r3, #0] + 8001dc6: 881b ldrh r3, [r3, #0] + 8001dc8: b29a uxth r2, r3 + 8001dca: f640 738f movw r3, #3983 ; 0xf8f + 8001dce: 4013 ands r3, r2 + 8001dd0: 83bb strh r3, [r7, #28] + 8001dd2: 687b ldr r3, [r7, #4] + 8001dd4: 681b ldr r3, [r3, #0] + 8001dd6: 8bba ldrh r2, [r7, #28] + 8001dd8: f042 0280 orr.w r2, r2, #128 ; 0x80 + 8001ddc: b292 uxth r2, r2 + 8001dde: 801a strh r2, [r3, #0] + + /* Get Control Data OUT Packet */ + ep->xfer_count = PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); + 8001de0: 687b ldr r3, [r7, #4] + 8001de2: 681b ldr r3, [r3, #0] + 8001de4: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8001de8: b29b uxth r3, r3 + 8001dea: 461a mov r2, r3 + 8001dec: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001dee: 781b ldrb r3, [r3, #0] + 8001df0: 00db lsls r3, r3, #3 + 8001df2: 4413 add r3, r2 + 8001df4: 3306 adds r3, #6 + 8001df6: 005b lsls r3, r3, #1 + 8001df8: 687a ldr r2, [r7, #4] + 8001dfa: 6812 ldr r2, [r2, #0] + 8001dfc: 4413 add r3, r2 + 8001dfe: f503 6380 add.w r3, r3, #1024 ; 0x400 + 8001e02: 881b ldrh r3, [r3, #0] + 8001e04: f3c3 0209 ubfx r2, r3, #0, #10 + 8001e08: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001e0a: 61da str r2, [r3, #28] + + if ((ep->xfer_count != 0U) && (ep->xfer_buff != 0U)) + 8001e0c: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001e0e: 69db ldr r3, [r3, #28] + 8001e10: 2b00 cmp r3, #0 + 8001e12: d019 beq.n 8001e48 + 8001e14: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001e16: 695b ldr r3, [r3, #20] + 8001e18: 2b00 cmp r3, #0 + 8001e1a: d015 beq.n 8001e48 + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, + 8001e1c: 687b ldr r3, [r7, #4] + 8001e1e: 6818 ldr r0, [r3, #0] + 8001e20: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001e22: 6959 ldr r1, [r3, #20] + 8001e24: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001e26: 88da ldrh r2, [r3, #6] + ep->pmaadress, (uint16_t)ep->xfer_count); + 8001e28: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001e2a: 69db ldr r3, [r3, #28] + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, + 8001e2c: b29b uxth r3, r3 + 8001e2e: f003 fd31 bl 8005894 + + ep->xfer_buff += ep->xfer_count; + 8001e32: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001e34: 695a ldr r2, [r3, #20] + 8001e36: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001e38: 69db ldr r3, [r3, #28] + 8001e3a: 441a add r2, r3 + 8001e3c: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001e3e: 615a str r2, [r3, #20] + + /* Process Control Data OUT Packet */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataOutStageCallback(hpcd, 0U); +#else + HAL_PCD_DataOutStageCallback(hpcd, 0U); + 8001e40: 2100 movs r1, #0 + 8001e42: 6878 ldr r0, [r7, #4] + 8001e44: f005 fe48 bl 8007ad8 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + + if ((PCD_GET_ENDPOINT(hpcd->Instance, PCD_ENDP0) & USB_EP_SETUP) == 0U) + 8001e48: 687b ldr r3, [r7, #4] + 8001e4a: 681b ldr r3, [r3, #0] + 8001e4c: 881b ldrh r3, [r3, #0] + 8001e4e: b29b uxth r3, r3 + 8001e50: f403 6300 and.w r3, r3, #2048 ; 0x800 + 8001e54: 2b00 cmp r3, #0 + 8001e56: f040 81f2 bne.w 800223e + { + PCD_SET_EP_RX_CNT(hpcd->Instance, PCD_ENDP0, ep->maxpacket); + 8001e5a: 687b ldr r3, [r7, #4] + 8001e5c: 681b ldr r3, [r3, #0] + 8001e5e: 61bb str r3, [r7, #24] + 8001e60: 687b ldr r3, [r7, #4] + 8001e62: 681b ldr r3, [r3, #0] + 8001e64: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8001e68: b29b uxth r3, r3 + 8001e6a: 461a mov r2, r3 + 8001e6c: 69bb ldr r3, [r7, #24] + 8001e6e: 4413 add r3, r2 + 8001e70: 61bb str r3, [r7, #24] + 8001e72: 69bb ldr r3, [r7, #24] + 8001e74: f203 430c addw r3, r3, #1036 ; 0x40c + 8001e78: 617b str r3, [r7, #20] + 8001e7a: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001e7c: 691b ldr r3, [r3, #16] + 8001e7e: 2b00 cmp r3, #0 + 8001e80: d112 bne.n 8001ea8 + 8001e82: 697b ldr r3, [r7, #20] + 8001e84: 881b ldrh r3, [r3, #0] + 8001e86: b29b uxth r3, r3 + 8001e88: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 8001e8c: b29a uxth r2, r3 + 8001e8e: 697b ldr r3, [r7, #20] + 8001e90: 801a strh r2, [r3, #0] + 8001e92: 697b ldr r3, [r7, #20] + 8001e94: 881b ldrh r3, [r3, #0] + 8001e96: b29b uxth r3, r3 + 8001e98: ea6f 4343 mvn.w r3, r3, lsl #17 + 8001e9c: ea6f 4353 mvn.w r3, r3, lsr #17 + 8001ea0: b29a uxth r2, r3 + 8001ea2: 697b ldr r3, [r7, #20] + 8001ea4: 801a strh r2, [r3, #0] + 8001ea6: e02f b.n 8001f08 + 8001ea8: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001eaa: 691b ldr r3, [r3, #16] + 8001eac: 2b3e cmp r3, #62 ; 0x3e + 8001eae: d813 bhi.n 8001ed8 + 8001eb0: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001eb2: 691b ldr r3, [r3, #16] + 8001eb4: 085b lsrs r3, r3, #1 + 8001eb6: 633b str r3, [r7, #48] ; 0x30 + 8001eb8: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001eba: 691b ldr r3, [r3, #16] + 8001ebc: f003 0301 and.w r3, r3, #1 + 8001ec0: 2b00 cmp r3, #0 + 8001ec2: d002 beq.n 8001eca + 8001ec4: 6b3b ldr r3, [r7, #48] ; 0x30 + 8001ec6: 3301 adds r3, #1 + 8001ec8: 633b str r3, [r7, #48] ; 0x30 + 8001eca: 6b3b ldr r3, [r7, #48] ; 0x30 + 8001ecc: b29b uxth r3, r3 + 8001ece: 029b lsls r3, r3, #10 + 8001ed0: b29a uxth r2, r3 + 8001ed2: 697b ldr r3, [r7, #20] + 8001ed4: 801a strh r2, [r3, #0] + 8001ed6: e017 b.n 8001f08 + 8001ed8: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001eda: 691b ldr r3, [r3, #16] + 8001edc: 095b lsrs r3, r3, #5 + 8001ede: 633b str r3, [r7, #48] ; 0x30 + 8001ee0: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001ee2: 691b ldr r3, [r3, #16] + 8001ee4: f003 031f and.w r3, r3, #31 + 8001ee8: 2b00 cmp r3, #0 + 8001eea: d102 bne.n 8001ef2 + 8001eec: 6b3b ldr r3, [r7, #48] ; 0x30 + 8001eee: 3b01 subs r3, #1 + 8001ef0: 633b str r3, [r7, #48] ; 0x30 + 8001ef2: 6b3b ldr r3, [r7, #48] ; 0x30 + 8001ef4: b29b uxth r3, r3 + 8001ef6: 029b lsls r3, r3, #10 + 8001ef8: b29b uxth r3, r3 + 8001efa: ea6f 4343 mvn.w r3, r3, lsl #17 + 8001efe: ea6f 4353 mvn.w r3, r3, lsr #17 + 8001f02: b29a uxth r2, r3 + 8001f04: 697b ldr r3, [r7, #20] + 8001f06: 801a strh r2, [r3, #0] + PCD_SET_EP_RX_STATUS(hpcd->Instance, PCD_ENDP0, USB_EP_RX_VALID); + 8001f08: 687b ldr r3, [r7, #4] + 8001f0a: 681b ldr r3, [r3, #0] + 8001f0c: 881b ldrh r3, [r3, #0] + 8001f0e: b29b uxth r3, r3 + 8001f10: f423 4380 bic.w r3, r3, #16384 ; 0x4000 + 8001f14: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8001f18: 827b strh r3, [r7, #18] + 8001f1a: 8a7b ldrh r3, [r7, #18] + 8001f1c: f483 5380 eor.w r3, r3, #4096 ; 0x1000 + 8001f20: 827b strh r3, [r7, #18] + 8001f22: 8a7b ldrh r3, [r7, #18] + 8001f24: f483 5300 eor.w r3, r3, #8192 ; 0x2000 + 8001f28: 827b strh r3, [r7, #18] + 8001f2a: 687b ldr r3, [r7, #4] + 8001f2c: 681a ldr r2, [r3, #0] + 8001f2e: 8a7b ldrh r3, [r7, #18] + 8001f30: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8001f34: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8001f38: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8001f3c: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8001f40: b29b uxth r3, r3 + 8001f42: 8013 strh r3, [r2, #0] + 8001f44: e17b b.n 800223e + } + else + { + /* Decode and service non control endpoints interrupt */ + /* process related endpoint register */ + wEPVal = PCD_GET_ENDPOINT(hpcd->Instance, epindex); + 8001f46: 687b ldr r3, [r7, #4] + 8001f48: 681b ldr r3, [r3, #0] + 8001f4a: 461a mov r2, r3 + 8001f4c: f897 302d ldrb.w r3, [r7, #45] ; 0x2d + 8001f50: 009b lsls r3, r3, #2 + 8001f52: 4413 add r3, r2 + 8001f54: 881b ldrh r3, [r3, #0] + 8001f56: 857b strh r3, [r7, #42] ; 0x2a + + if ((wEPVal & USB_EP_CTR_RX) != 0U) + 8001f58: f9b7 302a ldrsh.w r3, [r7, #42] ; 0x2a + 8001f5c: 2b00 cmp r3, #0 + 8001f5e: f280 80ea bge.w 8002136 + { + /* clear int flag */ + PCD_CLEAR_RX_EP_CTR(hpcd->Instance, epindex); + 8001f62: 687b ldr r3, [r7, #4] + 8001f64: 681b ldr r3, [r3, #0] + 8001f66: 461a mov r2, r3 + 8001f68: f897 302d ldrb.w r3, [r7, #45] ; 0x2d + 8001f6c: 009b lsls r3, r3, #2 + 8001f6e: 4413 add r3, r2 + 8001f70: 881b ldrh r3, [r3, #0] + 8001f72: b29a uxth r2, r3 + 8001f74: f640 738f movw r3, #3983 ; 0xf8f + 8001f78: 4013 ands r3, r2 + 8001f7a: 853b strh r3, [r7, #40] ; 0x28 + 8001f7c: 687b ldr r3, [r7, #4] + 8001f7e: 681b ldr r3, [r3, #0] + 8001f80: 461a mov r2, r3 + 8001f82: f897 302d ldrb.w r3, [r7, #45] ; 0x2d + 8001f86: 009b lsls r3, r3, #2 + 8001f88: 4413 add r3, r2 + 8001f8a: 8d3a ldrh r2, [r7, #40] ; 0x28 + 8001f8c: f042 0280 orr.w r2, r2, #128 ; 0x80 + 8001f90: b292 uxth r2, r2 + 8001f92: 801a strh r2, [r3, #0] + ep = &hpcd->OUT_ep[epindex]; + 8001f94: f897 202d ldrb.w r2, [r7, #45] ; 0x2d + 8001f98: 4613 mov r3, r2 + 8001f9a: 009b lsls r3, r3, #2 + 8001f9c: 4413 add r3, r2 + 8001f9e: 00db lsls r3, r3, #3 + 8001fa0: f503 73b4 add.w r3, r3, #360 ; 0x168 + 8001fa4: 687a ldr r2, [r7, #4] + 8001fa6: 4413 add r3, r2 + 8001fa8: 627b str r3, [r7, #36] ; 0x24 + + /* OUT Single Buffering */ + if (ep->doublebuffer == 0U) + 8001faa: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001fac: 7b1b ldrb r3, [r3, #12] + 8001fae: 2b00 cmp r3, #0 + 8001fb0: d122 bne.n 8001ff8 + { + count = (uint16_t)PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); + 8001fb2: 687b ldr r3, [r7, #4] + 8001fb4: 681b ldr r3, [r3, #0] + 8001fb6: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8001fba: b29b uxth r3, r3 + 8001fbc: 461a mov r2, r3 + 8001fbe: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001fc0: 781b ldrb r3, [r3, #0] + 8001fc2: 00db lsls r3, r3, #3 + 8001fc4: 4413 add r3, r2 + 8001fc6: 3306 adds r3, #6 + 8001fc8: 005b lsls r3, r3, #1 + 8001fca: 687a ldr r2, [r7, #4] + 8001fcc: 6812 ldr r2, [r2, #0] + 8001fce: 4413 add r3, r2 + 8001fd0: f503 6380 add.w r3, r3, #1024 ; 0x400 + 8001fd4: 881b ldrh r3, [r3, #0] + 8001fd6: f3c3 0309 ubfx r3, r3, #0, #10 + 8001fda: 86fb strh r3, [r7, #54] ; 0x36 + + if (count != 0U) + 8001fdc: 8efb ldrh r3, [r7, #54] ; 0x36 + 8001fde: 2b00 cmp r3, #0 + 8001fe0: f000 8087 beq.w 80020f2 + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaadress, count); + 8001fe4: 687b ldr r3, [r7, #4] + 8001fe6: 6818 ldr r0, [r3, #0] + 8001fe8: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001fea: 6959 ldr r1, [r3, #20] + 8001fec: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001fee: 88da ldrh r2, [r3, #6] + 8001ff0: 8efb ldrh r3, [r7, #54] ; 0x36 + 8001ff2: f003 fc4f bl 8005894 + 8001ff6: e07c b.n 80020f2 + } + } + else + { + /* manage double buffer bulk out */ + if (ep->type == EP_TYPE_BULK) + 8001ff8: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001ffa: 78db ldrb r3, [r3, #3] + 8001ffc: 2b02 cmp r3, #2 + 8001ffe: d108 bne.n 8002012 + { + count = HAL_PCD_EP_DB_Receive(hpcd, ep, wEPVal); + 8002000: 8d7b ldrh r3, [r7, #42] ; 0x2a + 8002002: 461a mov r2, r3 + 8002004: 6a79 ldr r1, [r7, #36] ; 0x24 + 8002006: 6878 ldr r0, [r7, #4] + 8002008: f000 f927 bl 800225a + 800200c: 4603 mov r3, r0 + 800200e: 86fb strh r3, [r7, #54] ; 0x36 + 8002010: e06f b.n 80020f2 + } + else /* manage double buffer iso out */ + { + /* free EP OUT Buffer */ + PCD_FreeUserBuffer(hpcd->Instance, ep->num, 0U); + 8002012: 687b ldr r3, [r7, #4] + 8002014: 681b ldr r3, [r3, #0] + 8002016: 461a mov r2, r3 + 8002018: 6a7b ldr r3, [r7, #36] ; 0x24 + 800201a: 781b ldrb r3, [r3, #0] + 800201c: 009b lsls r3, r3, #2 + 800201e: 4413 add r3, r2 + 8002020: 881b ldrh r3, [r3, #0] + 8002022: b29b uxth r3, r3 + 8002024: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 8002028: f023 0370 bic.w r3, r3, #112 ; 0x70 + 800202c: 847b strh r3, [r7, #34] ; 0x22 + 800202e: 687b ldr r3, [r7, #4] + 8002030: 681b ldr r3, [r3, #0] + 8002032: 461a mov r2, r3 + 8002034: 6a7b ldr r3, [r7, #36] ; 0x24 + 8002036: 781b ldrb r3, [r3, #0] + 8002038: 009b lsls r3, r3, #2 + 800203a: 441a add r2, r3 + 800203c: 8c7b ldrh r3, [r7, #34] ; 0x22 + 800203e: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8002042: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8002046: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 800204a: f043 03c0 orr.w r3, r3, #192 ; 0xc0 + 800204e: b29b uxth r3, r3 + 8002050: 8013 strh r3, [r2, #0] + + if ((PCD_GET_ENDPOINT(hpcd->Instance, ep->num) & USB_EP_DTOG_RX) != 0U) + 8002052: 687b ldr r3, [r7, #4] + 8002054: 681b ldr r3, [r3, #0] + 8002056: 461a mov r2, r3 + 8002058: 6a7b ldr r3, [r7, #36] ; 0x24 + 800205a: 781b ldrb r3, [r3, #0] + 800205c: 009b lsls r3, r3, #2 + 800205e: 4413 add r3, r2 + 8002060: 881b ldrh r3, [r3, #0] + 8002062: b29b uxth r3, r3 + 8002064: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 8002068: 2b00 cmp r3, #0 + 800206a: d021 beq.n 80020b0 + { + /* read from endpoint BUF0Addr buffer */ + count = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); + 800206c: 687b ldr r3, [r7, #4] + 800206e: 681b ldr r3, [r3, #0] + 8002070: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8002074: b29b uxth r3, r3 + 8002076: 461a mov r2, r3 + 8002078: 6a7b ldr r3, [r7, #36] ; 0x24 + 800207a: 781b ldrb r3, [r3, #0] + 800207c: 00db lsls r3, r3, #3 + 800207e: 4413 add r3, r2 + 8002080: 3302 adds r3, #2 + 8002082: 005b lsls r3, r3, #1 + 8002084: 687a ldr r2, [r7, #4] + 8002086: 6812 ldr r2, [r2, #0] + 8002088: 4413 add r3, r2 + 800208a: f503 6380 add.w r3, r3, #1024 ; 0x400 + 800208e: 881b ldrh r3, [r3, #0] + 8002090: f3c3 0309 ubfx r3, r3, #0, #10 + 8002094: 86fb strh r3, [r7, #54] ; 0x36 + + if (count != 0U) + 8002096: 8efb ldrh r3, [r7, #54] ; 0x36 + 8002098: 2b00 cmp r3, #0 + 800209a: d02a beq.n 80020f2 + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, count); + 800209c: 687b ldr r3, [r7, #4] + 800209e: 6818 ldr r0, [r3, #0] + 80020a0: 6a7b ldr r3, [r7, #36] ; 0x24 + 80020a2: 6959 ldr r1, [r3, #20] + 80020a4: 6a7b ldr r3, [r7, #36] ; 0x24 + 80020a6: 891a ldrh r2, [r3, #8] + 80020a8: 8efb ldrh r3, [r7, #54] ; 0x36 + 80020aa: f003 fbf3 bl 8005894 + 80020ae: e020 b.n 80020f2 + } + } + else + { + /* read from endpoint BUF1Addr buffer */ + count = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); + 80020b0: 687b ldr r3, [r7, #4] + 80020b2: 681b ldr r3, [r3, #0] + 80020b4: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 80020b8: b29b uxth r3, r3 + 80020ba: 461a mov r2, r3 + 80020bc: 6a7b ldr r3, [r7, #36] ; 0x24 + 80020be: 781b ldrb r3, [r3, #0] + 80020c0: 00db lsls r3, r3, #3 + 80020c2: 4413 add r3, r2 + 80020c4: 3306 adds r3, #6 + 80020c6: 005b lsls r3, r3, #1 + 80020c8: 687a ldr r2, [r7, #4] + 80020ca: 6812 ldr r2, [r2, #0] + 80020cc: 4413 add r3, r2 + 80020ce: f503 6380 add.w r3, r3, #1024 ; 0x400 + 80020d2: 881b ldrh r3, [r3, #0] + 80020d4: f3c3 0309 ubfx r3, r3, #0, #10 + 80020d8: 86fb strh r3, [r7, #54] ; 0x36 + + if (count != 0U) + 80020da: 8efb ldrh r3, [r7, #54] ; 0x36 + 80020dc: 2b00 cmp r3, #0 + 80020de: d008 beq.n 80020f2 + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, count); + 80020e0: 687b ldr r3, [r7, #4] + 80020e2: 6818 ldr r0, [r3, #0] + 80020e4: 6a7b ldr r3, [r7, #36] ; 0x24 + 80020e6: 6959 ldr r1, [r3, #20] + 80020e8: 6a7b ldr r3, [r7, #36] ; 0x24 + 80020ea: 895a ldrh r2, [r3, #10] + 80020ec: 8efb ldrh r3, [r7, #54] ; 0x36 + 80020ee: f003 fbd1 bl 8005894 + } + } + } + } + /* multi-packet on the NON control OUT endpoint */ + ep->xfer_count += count; + 80020f2: 6a7b ldr r3, [r7, #36] ; 0x24 + 80020f4: 69da ldr r2, [r3, #28] + 80020f6: 8efb ldrh r3, [r7, #54] ; 0x36 + 80020f8: 441a add r2, r3 + 80020fa: 6a7b ldr r3, [r7, #36] ; 0x24 + 80020fc: 61da str r2, [r3, #28] + ep->xfer_buff += count; + 80020fe: 6a7b ldr r3, [r7, #36] ; 0x24 + 8002100: 695a ldr r2, [r3, #20] + 8002102: 8efb ldrh r3, [r7, #54] ; 0x36 + 8002104: 441a add r2, r3 + 8002106: 6a7b ldr r3, [r7, #36] ; 0x24 + 8002108: 615a str r2, [r3, #20] + + if ((ep->xfer_len == 0U) || (count < ep->maxpacket)) + 800210a: 6a7b ldr r3, [r7, #36] ; 0x24 + 800210c: 699b ldr r3, [r3, #24] + 800210e: 2b00 cmp r3, #0 + 8002110: d004 beq.n 800211c + 8002112: 8efa ldrh r2, [r7, #54] ; 0x36 + 8002114: 6a7b ldr r3, [r7, #36] ; 0x24 + 8002116: 691b ldr r3, [r3, #16] + 8002118: 429a cmp r2, r3 + 800211a: d206 bcs.n 800212a + { + /* RX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataOutStageCallback(hpcd, ep->num); +#else + HAL_PCD_DataOutStageCallback(hpcd, ep->num); + 800211c: 6a7b ldr r3, [r7, #36] ; 0x24 + 800211e: 781b ldrb r3, [r3, #0] + 8002120: 4619 mov r1, r3 + 8002122: 6878 ldr r0, [r7, #4] + 8002124: f005 fcd8 bl 8007ad8 + 8002128: e005 b.n 8002136 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + else + { + (void) USB_EPStartXfer(hpcd->Instance, ep); + 800212a: 687b ldr r3, [r7, #4] + 800212c: 681b ldr r3, [r3, #0] + 800212e: 6a79 ldr r1, [r7, #36] ; 0x24 + 8002130: 4618 mov r0, r3 + 8002132: f001 ff35 bl 8003fa0 + } + + } + + if ((wEPVal & USB_EP_CTR_TX) != 0U) + 8002136: 8d7b ldrh r3, [r7, #42] ; 0x2a + 8002138: f003 0380 and.w r3, r3, #128 ; 0x80 + 800213c: 2b00 cmp r3, #0 + 800213e: d07e beq.n 800223e + { + ep = &hpcd->IN_ep[epindex]; + 8002140: f897 302d ldrb.w r3, [r7, #45] ; 0x2d + 8002144: 1c5a adds r2, r3, #1 + 8002146: 4613 mov r3, r2 + 8002148: 009b lsls r3, r3, #2 + 800214a: 4413 add r3, r2 + 800214c: 00db lsls r3, r3, #3 + 800214e: 687a ldr r2, [r7, #4] + 8002150: 4413 add r3, r2 + 8002152: 627b str r3, [r7, #36] ; 0x24 + + /* clear int flag */ + PCD_CLEAR_TX_EP_CTR(hpcd->Instance, epindex); + 8002154: 687b ldr r3, [r7, #4] + 8002156: 681b ldr r3, [r3, #0] + 8002158: 461a mov r2, r3 + 800215a: f897 302d ldrb.w r3, [r7, #45] ; 0x2d + 800215e: 009b lsls r3, r3, #2 + 8002160: 4413 add r3, r2 + 8002162: 881b ldrh r3, [r3, #0] + 8002164: b29b uxth r3, r3 + 8002166: f423 43e1 bic.w r3, r3, #28800 ; 0x7080 + 800216a: f023 0370 bic.w r3, r3, #112 ; 0x70 + 800216e: 843b strh r3, [r7, #32] + 8002170: 687b ldr r3, [r7, #4] + 8002172: 681b ldr r3, [r3, #0] + 8002174: 461a mov r2, r3 + 8002176: f897 302d ldrb.w r3, [r7, #45] ; 0x2d + 800217a: 009b lsls r3, r3, #2 + 800217c: 441a add r2, r3 + 800217e: 8c3b ldrh r3, [r7, #32] + 8002180: ea6f 4343 mvn.w r3, r3, lsl #17 + 8002184: ea6f 4353 mvn.w r3, r3, lsr #17 + 8002188: b29b uxth r3, r3 + 800218a: 8013 strh r3, [r2, #0] + + /* Manage all non bulk/isoc transaction Bulk Single Buffer Transaction */ + if ((ep->type == EP_TYPE_INTR) || (ep->type == EP_TYPE_CTRL) || + 800218c: 6a7b ldr r3, [r7, #36] ; 0x24 + 800218e: 78db ldrb r3, [r3, #3] + 8002190: 2b03 cmp r3, #3 + 8002192: d00c beq.n 80021ae + 8002194: 6a7b ldr r3, [r7, #36] ; 0x24 + 8002196: 78db ldrb r3, [r3, #3] + 8002198: 2b00 cmp r3, #0 + 800219a: d008 beq.n 80021ae + ((ep->type == EP_TYPE_BULK) && ((wEPVal & USB_EP_KIND) == 0U))) + 800219c: 6a7b ldr r3, [r7, #36] ; 0x24 + 800219e: 78db ldrb r3, [r3, #3] + if ((ep->type == EP_TYPE_INTR) || (ep->type == EP_TYPE_CTRL) || + 80021a0: 2b02 cmp r3, #2 + 80021a2: d146 bne.n 8002232 + ((ep->type == EP_TYPE_BULK) && ((wEPVal & USB_EP_KIND) == 0U))) + 80021a4: 8d7b ldrh r3, [r7, #42] ; 0x2a + 80021a6: f403 7380 and.w r3, r3, #256 ; 0x100 + 80021aa: 2b00 cmp r3, #0 + 80021ac: d141 bne.n 8002232 + { + /* multi-packet on the NON control IN endpoint */ + TxByteNbre = (uint16_t)PCD_GET_EP_TX_CNT(hpcd->Instance, ep->num); + 80021ae: 687b ldr r3, [r7, #4] + 80021b0: 681b ldr r3, [r3, #0] + 80021b2: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 80021b6: b29b uxth r3, r3 + 80021b8: 461a mov r2, r3 + 80021ba: 6a7b ldr r3, [r7, #36] ; 0x24 + 80021bc: 781b ldrb r3, [r3, #0] + 80021be: 00db lsls r3, r3, #3 + 80021c0: 4413 add r3, r2 + 80021c2: 3302 adds r3, #2 + 80021c4: 005b lsls r3, r3, #1 + 80021c6: 687a ldr r2, [r7, #4] + 80021c8: 6812 ldr r2, [r2, #0] + 80021ca: 4413 add r3, r2 + 80021cc: f503 6380 add.w r3, r3, #1024 ; 0x400 + 80021d0: 881b ldrh r3, [r3, #0] + 80021d2: f3c3 0309 ubfx r3, r3, #0, #10 + 80021d6: 83fb strh r3, [r7, #30] + + if (ep->xfer_len > TxByteNbre) + 80021d8: 6a7b ldr r3, [r7, #36] ; 0x24 + 80021da: 699a ldr r2, [r3, #24] + 80021dc: 8bfb ldrh r3, [r7, #30] + 80021de: 429a cmp r2, r3 + 80021e0: d906 bls.n 80021f0 + { + ep->xfer_len -= TxByteNbre; + 80021e2: 6a7b ldr r3, [r7, #36] ; 0x24 + 80021e4: 699a ldr r2, [r3, #24] + 80021e6: 8bfb ldrh r3, [r7, #30] + 80021e8: 1ad2 subs r2, r2, r3 + 80021ea: 6a7b ldr r3, [r7, #36] ; 0x24 + 80021ec: 619a str r2, [r3, #24] + 80021ee: e002 b.n 80021f6 + } + else + { + ep->xfer_len = 0U; + 80021f0: 6a7b ldr r3, [r7, #36] ; 0x24 + 80021f2: 2200 movs r2, #0 + 80021f4: 619a str r2, [r3, #24] + } + + /* Zero Length Packet? */ + if (ep->xfer_len == 0U) + 80021f6: 6a7b ldr r3, [r7, #36] ; 0x24 + 80021f8: 699b ldr r3, [r3, #24] + 80021fa: 2b00 cmp r3, #0 + 80021fc: d106 bne.n 800220c + { + /* TX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataInStageCallback(hpcd, ep->num); +#else + HAL_PCD_DataInStageCallback(hpcd, ep->num); + 80021fe: 6a7b ldr r3, [r7, #36] ; 0x24 + 8002200: 781b ldrb r3, [r3, #0] + 8002202: 4619 mov r1, r3 + 8002204: 6878 ldr r0, [r7, #4] + 8002206: f005 fc82 bl 8007b0e + 800220a: e018 b.n 800223e +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + else + { + /* Transfer is not yet Done */ + ep->xfer_buff += TxByteNbre; + 800220c: 6a7b ldr r3, [r7, #36] ; 0x24 + 800220e: 695a ldr r2, [r3, #20] + 8002210: 8bfb ldrh r3, [r7, #30] + 8002212: 441a add r2, r3 + 8002214: 6a7b ldr r3, [r7, #36] ; 0x24 + 8002216: 615a str r2, [r3, #20] + ep->xfer_count += TxByteNbre; + 8002218: 6a7b ldr r3, [r7, #36] ; 0x24 + 800221a: 69da ldr r2, [r3, #28] + 800221c: 8bfb ldrh r3, [r7, #30] + 800221e: 441a add r2, r3 + 8002220: 6a7b ldr r3, [r7, #36] ; 0x24 + 8002222: 61da str r2, [r3, #28] + (void)USB_EPStartXfer(hpcd->Instance, ep); + 8002224: 687b ldr r3, [r7, #4] + 8002226: 681b ldr r3, [r3, #0] + 8002228: 6a79 ldr r1, [r7, #36] ; 0x24 + 800222a: 4618 mov r0, r3 + 800222c: f001 feb8 bl 8003fa0 + if (ep->xfer_len == 0U) + 8002230: e005 b.n 800223e + } + } + /* Double Buffer Iso/bulk IN (bulk transfer Len > Ep_Mps) */ + else + { + (void)HAL_PCD_EP_DB_Transmit(hpcd, ep, wEPVal); + 8002232: 8d7b ldrh r3, [r7, #42] ; 0x2a + 8002234: 461a mov r2, r3 + 8002236: 6a79 ldr r1, [r7, #36] ; 0x24 + 8002238: 6878 ldr r0, [r7, #4] + 800223a: f000 f91b bl 8002474 + while ((hpcd->Instance->ISTR & USB_ISTR_CTR) != 0U) + 800223e: 687b ldr r3, [r7, #4] + 8002240: 681b ldr r3, [r3, #0] + 8002242: f8b3 3044 ldrh.w r3, [r3, #68] ; 0x44 + 8002246: b29b uxth r3, r3 + 8002248: b21b sxth r3, r3 + 800224a: 2b00 cmp r3, #0 + 800224c: f6ff ad0a blt.w 8001c64 + } + } + } + } + + return HAL_OK; + 8002250: 2300 movs r3, #0 +} + 8002252: 4618 mov r0, r3 + 8002254: 3738 adds r7, #56 ; 0x38 + 8002256: 46bd mov sp, r7 + 8002258: bd80 pop {r7, pc} + +0800225a : + * @param wEPVal Last snapshot of EPRx register value taken in ISR + * @retval HAL status + */ +static uint16_t HAL_PCD_EP_DB_Receive(PCD_HandleTypeDef *hpcd, + PCD_EPTypeDef *ep, uint16_t wEPVal) +{ + 800225a: b580 push {r7, lr} + 800225c: b088 sub sp, #32 + 800225e: af00 add r7, sp, #0 + 8002260: 60f8 str r0, [r7, #12] + 8002262: 60b9 str r1, [r7, #8] + 8002264: 4613 mov r3, r2 + 8002266: 80fb strh r3, [r7, #6] + uint16_t count; + + /* Manage Buffer0 OUT */ + if ((wEPVal & USB_EP_DTOG_RX) != 0U) + 8002268: 88fb ldrh r3, [r7, #6] + 800226a: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 800226e: 2b00 cmp r3, #0 + 8002270: d07e beq.n 8002370 + { + /* Get count of received Data on buffer0 */ + count = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); + 8002272: 68fb ldr r3, [r7, #12] + 8002274: 681b ldr r3, [r3, #0] + 8002276: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 800227a: b29b uxth r3, r3 + 800227c: 461a mov r2, r3 + 800227e: 68bb ldr r3, [r7, #8] + 8002280: 781b ldrb r3, [r3, #0] + 8002282: 00db lsls r3, r3, #3 + 8002284: 4413 add r3, r2 + 8002286: 3302 adds r3, #2 + 8002288: 005b lsls r3, r3, #1 + 800228a: 68fa ldr r2, [r7, #12] + 800228c: 6812 ldr r2, [r2, #0] + 800228e: 4413 add r3, r2 + 8002290: f503 6380 add.w r3, r3, #1024 ; 0x400 + 8002294: 881b ldrh r3, [r3, #0] + 8002296: f3c3 0309 ubfx r3, r3, #0, #10 + 800229a: 837b strh r3, [r7, #26] + + if (ep->xfer_len >= count) + 800229c: 68bb ldr r3, [r7, #8] + 800229e: 699a ldr r2, [r3, #24] + 80022a0: 8b7b ldrh r3, [r7, #26] + 80022a2: 429a cmp r2, r3 + 80022a4: d306 bcc.n 80022b4 + { + ep->xfer_len -= count; + 80022a6: 68bb ldr r3, [r7, #8] + 80022a8: 699a ldr r2, [r3, #24] + 80022aa: 8b7b ldrh r3, [r7, #26] + 80022ac: 1ad2 subs r2, r2, r3 + 80022ae: 68bb ldr r3, [r7, #8] + 80022b0: 619a str r2, [r3, #24] + 80022b2: e002 b.n 80022ba + } + else + { + ep->xfer_len = 0U; + 80022b4: 68bb ldr r3, [r7, #8] + 80022b6: 2200 movs r2, #0 + 80022b8: 619a str r2, [r3, #24] + } + + if (ep->xfer_len == 0U) + 80022ba: 68bb ldr r3, [r7, #8] + 80022bc: 699b ldr r3, [r3, #24] + 80022be: 2b00 cmp r3, #0 + 80022c0: d123 bne.n 800230a + { + /* set NAK to OUT endpoint since double buffer is enabled */ + PCD_SET_EP_RX_STATUS(hpcd->Instance, ep->num, USB_EP_RX_NAK); + 80022c2: 68fb ldr r3, [r7, #12] + 80022c4: 681b ldr r3, [r3, #0] + 80022c6: 461a mov r2, r3 + 80022c8: 68bb ldr r3, [r7, #8] + 80022ca: 781b ldrb r3, [r3, #0] + 80022cc: 009b lsls r3, r3, #2 + 80022ce: 4413 add r3, r2 + 80022d0: 881b ldrh r3, [r3, #0] + 80022d2: b29b uxth r3, r3 + 80022d4: f423 4380 bic.w r3, r3, #16384 ; 0x4000 + 80022d8: f023 0370 bic.w r3, r3, #112 ; 0x70 + 80022dc: 833b strh r3, [r7, #24] + 80022de: 8b3b ldrh r3, [r7, #24] + 80022e0: f483 5300 eor.w r3, r3, #8192 ; 0x2000 + 80022e4: 833b strh r3, [r7, #24] + 80022e6: 68fb ldr r3, [r7, #12] + 80022e8: 681b ldr r3, [r3, #0] + 80022ea: 461a mov r2, r3 + 80022ec: 68bb ldr r3, [r7, #8] + 80022ee: 781b ldrb r3, [r3, #0] + 80022f0: 009b lsls r3, r3, #2 + 80022f2: 441a add r2, r3 + 80022f4: 8b3b ldrh r3, [r7, #24] + 80022f6: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 80022fa: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 80022fe: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8002302: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8002306: b29b uxth r3, r3 + 8002308: 8013 strh r3, [r2, #0] + } + + /* Check if Buffer1 is in blocked sate which requires to toggle */ + if ((wEPVal & USB_EP_DTOG_TX) != 0U) + 800230a: 88fb ldrh r3, [r7, #6] + 800230c: f003 0340 and.w r3, r3, #64 ; 0x40 + 8002310: 2b00 cmp r3, #0 + 8002312: d01f beq.n 8002354 + { + PCD_FreeUserBuffer(hpcd->Instance, ep->num, 0U); + 8002314: 68fb ldr r3, [r7, #12] + 8002316: 681b ldr r3, [r3, #0] + 8002318: 461a mov r2, r3 + 800231a: 68bb ldr r3, [r7, #8] + 800231c: 781b ldrb r3, [r3, #0] + 800231e: 009b lsls r3, r3, #2 + 8002320: 4413 add r3, r2 + 8002322: 881b ldrh r3, [r3, #0] + 8002324: b29b uxth r3, r3 + 8002326: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 800232a: f023 0370 bic.w r3, r3, #112 ; 0x70 + 800232e: 82fb strh r3, [r7, #22] + 8002330: 68fb ldr r3, [r7, #12] + 8002332: 681b ldr r3, [r3, #0] + 8002334: 461a mov r2, r3 + 8002336: 68bb ldr r3, [r7, #8] + 8002338: 781b ldrb r3, [r3, #0] + 800233a: 009b lsls r3, r3, #2 + 800233c: 441a add r2, r3 + 800233e: 8afb ldrh r3, [r7, #22] + 8002340: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8002344: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8002348: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 800234c: f043 03c0 orr.w r3, r3, #192 ; 0xc0 + 8002350: b29b uxth r3, r3 + 8002352: 8013 strh r3, [r2, #0] + } + + if (count != 0U) + 8002354: 8b7b ldrh r3, [r7, #26] + 8002356: 2b00 cmp r3, #0 + 8002358: f000 8087 beq.w 800246a + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, count); + 800235c: 68fb ldr r3, [r7, #12] + 800235e: 6818 ldr r0, [r3, #0] + 8002360: 68bb ldr r3, [r7, #8] + 8002362: 6959 ldr r1, [r3, #20] + 8002364: 68bb ldr r3, [r7, #8] + 8002366: 891a ldrh r2, [r3, #8] + 8002368: 8b7b ldrh r3, [r7, #26] + 800236a: f003 fa93 bl 8005894 + 800236e: e07c b.n 800246a + } + /* Manage Buffer 1 DTOG_RX=0 */ + else + { + /* Get count of received data */ + count = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); + 8002370: 68fb ldr r3, [r7, #12] + 8002372: 681b ldr r3, [r3, #0] + 8002374: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8002378: b29b uxth r3, r3 + 800237a: 461a mov r2, r3 + 800237c: 68bb ldr r3, [r7, #8] + 800237e: 781b ldrb r3, [r3, #0] + 8002380: 00db lsls r3, r3, #3 + 8002382: 4413 add r3, r2 + 8002384: 3306 adds r3, #6 + 8002386: 005b lsls r3, r3, #1 + 8002388: 68fa ldr r2, [r7, #12] + 800238a: 6812 ldr r2, [r2, #0] + 800238c: 4413 add r3, r2 + 800238e: f503 6380 add.w r3, r3, #1024 ; 0x400 + 8002392: 881b ldrh r3, [r3, #0] + 8002394: f3c3 0309 ubfx r3, r3, #0, #10 + 8002398: 837b strh r3, [r7, #26] + + if (ep->xfer_len >= count) + 800239a: 68bb ldr r3, [r7, #8] + 800239c: 699a ldr r2, [r3, #24] + 800239e: 8b7b ldrh r3, [r7, #26] + 80023a0: 429a cmp r2, r3 + 80023a2: d306 bcc.n 80023b2 + { + ep->xfer_len -= count; + 80023a4: 68bb ldr r3, [r7, #8] + 80023a6: 699a ldr r2, [r3, #24] + 80023a8: 8b7b ldrh r3, [r7, #26] + 80023aa: 1ad2 subs r2, r2, r3 + 80023ac: 68bb ldr r3, [r7, #8] + 80023ae: 619a str r2, [r3, #24] + 80023b0: e002 b.n 80023b8 + } + else + { + ep->xfer_len = 0U; + 80023b2: 68bb ldr r3, [r7, #8] + 80023b4: 2200 movs r2, #0 + 80023b6: 619a str r2, [r3, #24] + } + + if (ep->xfer_len == 0U) + 80023b8: 68bb ldr r3, [r7, #8] + 80023ba: 699b ldr r3, [r3, #24] + 80023bc: 2b00 cmp r3, #0 + 80023be: d123 bne.n 8002408 + { + /* set NAK on the current endpoint */ + PCD_SET_EP_RX_STATUS(hpcd->Instance, ep->num, USB_EP_RX_NAK); + 80023c0: 68fb ldr r3, [r7, #12] + 80023c2: 681b ldr r3, [r3, #0] + 80023c4: 461a mov r2, r3 + 80023c6: 68bb ldr r3, [r7, #8] + 80023c8: 781b ldrb r3, [r3, #0] + 80023ca: 009b lsls r3, r3, #2 + 80023cc: 4413 add r3, r2 + 80023ce: 881b ldrh r3, [r3, #0] + 80023d0: b29b uxth r3, r3 + 80023d2: f423 4380 bic.w r3, r3, #16384 ; 0x4000 + 80023d6: f023 0370 bic.w r3, r3, #112 ; 0x70 + 80023da: 83fb strh r3, [r7, #30] + 80023dc: 8bfb ldrh r3, [r7, #30] + 80023de: f483 5300 eor.w r3, r3, #8192 ; 0x2000 + 80023e2: 83fb strh r3, [r7, #30] + 80023e4: 68fb ldr r3, [r7, #12] + 80023e6: 681b ldr r3, [r3, #0] + 80023e8: 461a mov r2, r3 + 80023ea: 68bb ldr r3, [r7, #8] + 80023ec: 781b ldrb r3, [r3, #0] + 80023ee: 009b lsls r3, r3, #2 + 80023f0: 441a add r2, r3 + 80023f2: 8bfb ldrh r3, [r7, #30] + 80023f4: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 80023f8: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 80023fc: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8002400: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8002404: b29b uxth r3, r3 + 8002406: 8013 strh r3, [r2, #0] + } + + /*Need to FreeUser Buffer*/ + if ((wEPVal & USB_EP_DTOG_TX) == 0U) + 8002408: 88fb ldrh r3, [r7, #6] + 800240a: f003 0340 and.w r3, r3, #64 ; 0x40 + 800240e: 2b00 cmp r3, #0 + 8002410: d11f bne.n 8002452 + { + PCD_FreeUserBuffer(hpcd->Instance, ep->num, 0U); + 8002412: 68fb ldr r3, [r7, #12] + 8002414: 681b ldr r3, [r3, #0] + 8002416: 461a mov r2, r3 + 8002418: 68bb ldr r3, [r7, #8] + 800241a: 781b ldrb r3, [r3, #0] + 800241c: 009b lsls r3, r3, #2 + 800241e: 4413 add r3, r2 + 8002420: 881b ldrh r3, [r3, #0] + 8002422: b29b uxth r3, r3 + 8002424: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 8002428: f023 0370 bic.w r3, r3, #112 ; 0x70 + 800242c: 83bb strh r3, [r7, #28] + 800242e: 68fb ldr r3, [r7, #12] + 8002430: 681b ldr r3, [r3, #0] + 8002432: 461a mov r2, r3 + 8002434: 68bb ldr r3, [r7, #8] + 8002436: 781b ldrb r3, [r3, #0] + 8002438: 009b lsls r3, r3, #2 + 800243a: 441a add r2, r3 + 800243c: 8bbb ldrh r3, [r7, #28] + 800243e: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8002442: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8002446: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 800244a: f043 03c0 orr.w r3, r3, #192 ; 0xc0 + 800244e: b29b uxth r3, r3 + 8002450: 8013 strh r3, [r2, #0] + } + + if (count != 0U) + 8002452: 8b7b ldrh r3, [r7, #26] + 8002454: 2b00 cmp r3, #0 + 8002456: d008 beq.n 800246a + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, count); + 8002458: 68fb ldr r3, [r7, #12] + 800245a: 6818 ldr r0, [r3, #0] + 800245c: 68bb ldr r3, [r7, #8] + 800245e: 6959 ldr r1, [r3, #20] + 8002460: 68bb ldr r3, [r7, #8] + 8002462: 895a ldrh r2, [r3, #10] + 8002464: 8b7b ldrh r3, [r7, #26] + 8002466: f003 fa15 bl 8005894 + } + } + + return count; + 800246a: 8b7b ldrh r3, [r7, #26] +} + 800246c: 4618 mov r0, r3 + 800246e: 3720 adds r7, #32 + 8002470: 46bd mov sp, r7 + 8002472: bd80 pop {r7, pc} + +08002474 : + * @param wEPVal Last snapshot of EPRx register value taken in ISR + * @retval HAL status + */ +static HAL_StatusTypeDef HAL_PCD_EP_DB_Transmit(PCD_HandleTypeDef *hpcd, + PCD_EPTypeDef *ep, uint16_t wEPVal) +{ + 8002474: b580 push {r7, lr} + 8002476: b0a2 sub sp, #136 ; 0x88 + 8002478: af00 add r7, sp, #0 + 800247a: 60f8 str r0, [r7, #12] + 800247c: 60b9 str r1, [r7, #8] + 800247e: 4613 mov r3, r2 + 8002480: 80fb strh r3, [r7, #6] + uint32_t len; + uint16_t TxByteNbre; + + /* Data Buffer0 ACK received */ + if ((wEPVal & USB_EP_DTOG_TX) != 0U) + 8002482: 88fb ldrh r3, [r7, #6] + 8002484: f003 0340 and.w r3, r3, #64 ; 0x40 + 8002488: 2b00 cmp r3, #0 + 800248a: f000 81c7 beq.w 800281c + { + /* multi-packet on the NON control IN endpoint */ + TxByteNbre = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); + 800248e: 68fb ldr r3, [r7, #12] + 8002490: 681b ldr r3, [r3, #0] + 8002492: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8002496: b29b uxth r3, r3 + 8002498: 461a mov r2, r3 + 800249a: 68bb ldr r3, [r7, #8] + 800249c: 781b ldrb r3, [r3, #0] + 800249e: 00db lsls r3, r3, #3 + 80024a0: 4413 add r3, r2 + 80024a2: 3302 adds r3, #2 + 80024a4: 005b lsls r3, r3, #1 + 80024a6: 68fa ldr r2, [r7, #12] + 80024a8: 6812 ldr r2, [r2, #0] + 80024aa: 4413 add r3, r2 + 80024ac: f503 6380 add.w r3, r3, #1024 ; 0x400 + 80024b0: 881b ldrh r3, [r3, #0] + 80024b2: f3c3 0309 ubfx r3, r3, #0, #10 + 80024b6: f8a7 304e strh.w r3, [r7, #78] ; 0x4e + + if (ep->xfer_len > TxByteNbre) + 80024ba: 68bb ldr r3, [r7, #8] + 80024bc: 699a ldr r2, [r3, #24] + 80024be: f8b7 304e ldrh.w r3, [r7, #78] ; 0x4e + 80024c2: 429a cmp r2, r3 + 80024c4: d907 bls.n 80024d6 + { + ep->xfer_len -= TxByteNbre; + 80024c6: 68bb ldr r3, [r7, #8] + 80024c8: 699a ldr r2, [r3, #24] + 80024ca: f8b7 304e ldrh.w r3, [r7, #78] ; 0x4e + 80024ce: 1ad2 subs r2, r2, r3 + 80024d0: 68bb ldr r3, [r7, #8] + 80024d2: 619a str r2, [r3, #24] + 80024d4: e002 b.n 80024dc + } + else + { + ep->xfer_len = 0U; + 80024d6: 68bb ldr r3, [r7, #8] + 80024d8: 2200 movs r2, #0 + 80024da: 619a str r2, [r3, #24] + } + /* Transfer is completed */ + if (ep->xfer_len == 0U) + 80024dc: 68bb ldr r3, [r7, #8] + 80024de: 699b ldr r3, [r3, #24] + 80024e0: 2b00 cmp r3, #0 + 80024e2: f040 80b9 bne.w 8002658 + { + PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); + 80024e6: 68bb ldr r3, [r7, #8] + 80024e8: 785b ldrb r3, [r3, #1] + 80024ea: 2b00 cmp r3, #0 + 80024ec: d126 bne.n 800253c + 80024ee: 68fb ldr r3, [r7, #12] + 80024f0: 681b ldr r3, [r3, #0] + 80024f2: 62bb str r3, [r7, #40] ; 0x28 + 80024f4: 68fb ldr r3, [r7, #12] + 80024f6: 681b ldr r3, [r3, #0] + 80024f8: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 80024fc: b29b uxth r3, r3 + 80024fe: 461a mov r2, r3 + 8002500: 6abb ldr r3, [r7, #40] ; 0x28 + 8002502: 4413 add r3, r2 + 8002504: 62bb str r3, [r7, #40] ; 0x28 + 8002506: 68bb ldr r3, [r7, #8] + 8002508: 781b ldrb r3, [r3, #0] + 800250a: 011a lsls r2, r3, #4 + 800250c: 6abb ldr r3, [r7, #40] ; 0x28 + 800250e: 4413 add r3, r2 + 8002510: f203 4304 addw r3, r3, #1028 ; 0x404 + 8002514: 627b str r3, [r7, #36] ; 0x24 + 8002516: 6a7b ldr r3, [r7, #36] ; 0x24 + 8002518: 881b ldrh r3, [r3, #0] + 800251a: b29b uxth r3, r3 + 800251c: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 8002520: b29a uxth r2, r3 + 8002522: 6a7b ldr r3, [r7, #36] ; 0x24 + 8002524: 801a strh r2, [r3, #0] + 8002526: 6a7b ldr r3, [r7, #36] ; 0x24 + 8002528: 881b ldrh r3, [r3, #0] + 800252a: b29b uxth r3, r3 + 800252c: ea6f 4343 mvn.w r3, r3, lsl #17 + 8002530: ea6f 4353 mvn.w r3, r3, lsr #17 + 8002534: b29a uxth r2, r3 + 8002536: 6a7b ldr r3, [r7, #36] ; 0x24 + 8002538: 801a strh r2, [r3, #0] + 800253a: e01a b.n 8002572 + 800253c: 68bb ldr r3, [r7, #8] + 800253e: 785b ldrb r3, [r3, #1] + 8002540: 2b01 cmp r3, #1 + 8002542: d116 bne.n 8002572 + 8002544: 68fb ldr r3, [r7, #12] + 8002546: 681b ldr r3, [r3, #0] + 8002548: 633b str r3, [r7, #48] ; 0x30 + 800254a: 68fb ldr r3, [r7, #12] + 800254c: 681b ldr r3, [r3, #0] + 800254e: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8002552: b29b uxth r3, r3 + 8002554: 461a mov r2, r3 + 8002556: 6b3b ldr r3, [r7, #48] ; 0x30 + 8002558: 4413 add r3, r2 + 800255a: 633b str r3, [r7, #48] ; 0x30 + 800255c: 68bb ldr r3, [r7, #8] + 800255e: 781b ldrb r3, [r3, #0] + 8002560: 011a lsls r2, r3, #4 + 8002562: 6b3b ldr r3, [r7, #48] ; 0x30 + 8002564: 4413 add r3, r2 + 8002566: f203 4304 addw r3, r3, #1028 ; 0x404 + 800256a: 62fb str r3, [r7, #44] ; 0x2c + 800256c: 6afb ldr r3, [r7, #44] ; 0x2c + 800256e: 2200 movs r2, #0 + 8002570: 801a strh r2, [r3, #0] + PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); + 8002572: 68fb ldr r3, [r7, #12] + 8002574: 681b ldr r3, [r3, #0] + 8002576: 623b str r3, [r7, #32] + 8002578: 68bb ldr r3, [r7, #8] + 800257a: 785b ldrb r3, [r3, #1] + 800257c: 2b00 cmp r3, #0 + 800257e: d126 bne.n 80025ce + 8002580: 68fb ldr r3, [r7, #12] + 8002582: 681b ldr r3, [r3, #0] + 8002584: 61bb str r3, [r7, #24] + 8002586: 68fb ldr r3, [r7, #12] + 8002588: 681b ldr r3, [r3, #0] + 800258a: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 800258e: b29b uxth r3, r3 + 8002590: 461a mov r2, r3 + 8002592: 69bb ldr r3, [r7, #24] + 8002594: 4413 add r3, r2 + 8002596: 61bb str r3, [r7, #24] + 8002598: 68bb ldr r3, [r7, #8] + 800259a: 781b ldrb r3, [r3, #0] + 800259c: 011a lsls r2, r3, #4 + 800259e: 69bb ldr r3, [r7, #24] + 80025a0: 4413 add r3, r2 + 80025a2: f203 430c addw r3, r3, #1036 ; 0x40c + 80025a6: 617b str r3, [r7, #20] + 80025a8: 697b ldr r3, [r7, #20] + 80025aa: 881b ldrh r3, [r3, #0] + 80025ac: b29b uxth r3, r3 + 80025ae: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 80025b2: b29a uxth r2, r3 + 80025b4: 697b ldr r3, [r7, #20] + 80025b6: 801a strh r2, [r3, #0] + 80025b8: 697b ldr r3, [r7, #20] + 80025ba: 881b ldrh r3, [r3, #0] + 80025bc: b29b uxth r3, r3 + 80025be: ea6f 4343 mvn.w r3, r3, lsl #17 + 80025c2: ea6f 4353 mvn.w r3, r3, lsr #17 + 80025c6: b29a uxth r2, r3 + 80025c8: 697b ldr r3, [r7, #20] + 80025ca: 801a strh r2, [r3, #0] + 80025cc: e017 b.n 80025fe + 80025ce: 68bb ldr r3, [r7, #8] + 80025d0: 785b ldrb r3, [r3, #1] + 80025d2: 2b01 cmp r3, #1 + 80025d4: d113 bne.n 80025fe + 80025d6: 68fb ldr r3, [r7, #12] + 80025d8: 681b ldr r3, [r3, #0] + 80025da: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 80025de: b29b uxth r3, r3 + 80025e0: 461a mov r2, r3 + 80025e2: 6a3b ldr r3, [r7, #32] + 80025e4: 4413 add r3, r2 + 80025e6: 623b str r3, [r7, #32] + 80025e8: 68bb ldr r3, [r7, #8] + 80025ea: 781b ldrb r3, [r3, #0] + 80025ec: 011a lsls r2, r3, #4 + 80025ee: 6a3b ldr r3, [r7, #32] + 80025f0: 4413 add r3, r2 + 80025f2: f203 430c addw r3, r3, #1036 ; 0x40c + 80025f6: 61fb str r3, [r7, #28] + 80025f8: 69fb ldr r3, [r7, #28] + 80025fa: 2200 movs r2, #0 + 80025fc: 801a strh r2, [r3, #0] + + /* TX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataInStageCallback(hpcd, ep->num); +#else + HAL_PCD_DataInStageCallback(hpcd, ep->num); + 80025fe: 68bb ldr r3, [r7, #8] + 8002600: 781b ldrb r3, [r3, #0] + 8002602: 4619 mov r1, r3 + 8002604: 68f8 ldr r0, [r7, #12] + 8002606: f005 fa82 bl 8007b0e +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + if ((wEPVal & USB_EP_DTOG_RX) != 0U) + 800260a: 88fb ldrh r3, [r7, #6] + 800260c: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 8002610: 2b00 cmp r3, #0 + 8002612: f000 82d4 beq.w 8002bbe + { + PCD_FreeUserBuffer(hpcd->Instance, ep->num, 1U); + 8002616: 68fb ldr r3, [r7, #12] + 8002618: 681b ldr r3, [r3, #0] + 800261a: 461a mov r2, r3 + 800261c: 68bb ldr r3, [r7, #8] + 800261e: 781b ldrb r3, [r3, #0] + 8002620: 009b lsls r3, r3, #2 + 8002622: 4413 add r3, r2 + 8002624: 881b ldrh r3, [r3, #0] + 8002626: b29b uxth r3, r3 + 8002628: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 800262c: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8002630: 827b strh r3, [r7, #18] + 8002632: 68fb ldr r3, [r7, #12] + 8002634: 681b ldr r3, [r3, #0] + 8002636: 461a mov r2, r3 + 8002638: 68bb ldr r3, [r7, #8] + 800263a: 781b ldrb r3, [r3, #0] + 800263c: 009b lsls r3, r3, #2 + 800263e: 441a add r2, r3 + 8002640: 8a7b ldrh r3, [r7, #18] + 8002642: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8002646: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 800264a: f443 4340 orr.w r3, r3, #49152 ; 0xc000 + 800264e: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8002652: b29b uxth r3, r3 + 8002654: 8013 strh r3, [r2, #0] + 8002656: e2b2 b.n 8002bbe + } + } + else /* Transfer is not yet Done */ + { + /* need to Free USB Buff */ + if ((wEPVal & USB_EP_DTOG_RX) != 0U) + 8002658: 88fb ldrh r3, [r7, #6] + 800265a: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 800265e: 2b00 cmp r3, #0 + 8002660: d021 beq.n 80026a6 + { + PCD_FreeUserBuffer(hpcd->Instance, ep->num, 1U); + 8002662: 68fb ldr r3, [r7, #12] + 8002664: 681b ldr r3, [r3, #0] + 8002666: 461a mov r2, r3 + 8002668: 68bb ldr r3, [r7, #8] + 800266a: 781b ldrb r3, [r3, #0] + 800266c: 009b lsls r3, r3, #2 + 800266e: 4413 add r3, r2 + 8002670: 881b ldrh r3, [r3, #0] + 8002672: b29b uxth r3, r3 + 8002674: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 8002678: f023 0370 bic.w r3, r3, #112 ; 0x70 + 800267c: f8a7 3044 strh.w r3, [r7, #68] ; 0x44 + 8002680: 68fb ldr r3, [r7, #12] + 8002682: 681b ldr r3, [r3, #0] + 8002684: 461a mov r2, r3 + 8002686: 68bb ldr r3, [r7, #8] + 8002688: 781b ldrb r3, [r3, #0] + 800268a: 009b lsls r3, r3, #2 + 800268c: 441a add r2, r3 + 800268e: f8b7 3044 ldrh.w r3, [r7, #68] ; 0x44 + 8002692: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8002696: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 800269a: f443 4340 orr.w r3, r3, #49152 ; 0xc000 + 800269e: f043 0380 orr.w r3, r3, #128 ; 0x80 + 80026a2: b29b uxth r3, r3 + 80026a4: 8013 strh r3, [r2, #0] + } + + /* Still there is data to Fill in the next Buffer */ + if (ep->xfer_fill_db == 1U) + 80026a6: 68bb ldr r3, [r7, #8] + 80026a8: f893 3024 ldrb.w r3, [r3, #36] ; 0x24 + 80026ac: 2b01 cmp r3, #1 + 80026ae: f040 8286 bne.w 8002bbe + { + ep->xfer_buff += TxByteNbre; + 80026b2: 68bb ldr r3, [r7, #8] + 80026b4: 695a ldr r2, [r3, #20] + 80026b6: f8b7 304e ldrh.w r3, [r7, #78] ; 0x4e + 80026ba: 441a add r2, r3 + 80026bc: 68bb ldr r3, [r7, #8] + 80026be: 615a str r2, [r3, #20] + ep->xfer_count += TxByteNbre; + 80026c0: 68bb ldr r3, [r7, #8] + 80026c2: 69da ldr r2, [r3, #28] + 80026c4: f8b7 304e ldrh.w r3, [r7, #78] ; 0x4e + 80026c8: 441a add r2, r3 + 80026ca: 68bb ldr r3, [r7, #8] + 80026cc: 61da str r2, [r3, #28] + + /* Calculate the len of the new buffer to fill */ + if (ep->xfer_len_db >= ep->maxpacket) + 80026ce: 68bb ldr r3, [r7, #8] + 80026d0: 6a1a ldr r2, [r3, #32] + 80026d2: 68bb ldr r3, [r7, #8] + 80026d4: 691b ldr r3, [r3, #16] + 80026d6: 429a cmp r2, r3 + 80026d8: d309 bcc.n 80026ee + { + len = ep->maxpacket; + 80026da: 68bb ldr r3, [r7, #8] + 80026dc: 691b ldr r3, [r3, #16] + 80026de: 653b str r3, [r7, #80] ; 0x50 + ep->xfer_len_db -= len; + 80026e0: 68bb ldr r3, [r7, #8] + 80026e2: 6a1a ldr r2, [r3, #32] + 80026e4: 6d3b ldr r3, [r7, #80] ; 0x50 + 80026e6: 1ad2 subs r2, r2, r3 + 80026e8: 68bb ldr r3, [r7, #8] + 80026ea: 621a str r2, [r3, #32] + 80026ec: e015 b.n 800271a + } + else if (ep->xfer_len_db == 0U) + 80026ee: 68bb ldr r3, [r7, #8] + 80026f0: 6a1b ldr r3, [r3, #32] + 80026f2: 2b00 cmp r3, #0 + 80026f4: d107 bne.n 8002706 + { + len = TxByteNbre; + 80026f6: f8b7 304e ldrh.w r3, [r7, #78] ; 0x4e + 80026fa: 653b str r3, [r7, #80] ; 0x50 + ep->xfer_fill_db = 0U; + 80026fc: 68bb ldr r3, [r7, #8] + 80026fe: 2200 movs r2, #0 + 8002700: f883 2024 strb.w r2, [r3, #36] ; 0x24 + 8002704: e009 b.n 800271a + } + else + { + ep->xfer_fill_db = 0U; + 8002706: 68bb ldr r3, [r7, #8] + 8002708: 2200 movs r2, #0 + 800270a: f883 2024 strb.w r2, [r3, #36] ; 0x24 + len = ep->xfer_len_db; + 800270e: 68bb ldr r3, [r7, #8] + 8002710: 6a1b ldr r3, [r3, #32] + 8002712: 653b str r3, [r7, #80] ; 0x50 + ep->xfer_len_db = 0U; + 8002714: 68bb ldr r3, [r7, #8] + 8002716: 2200 movs r2, #0 + 8002718: 621a str r2, [r3, #32] + } + + /* Write remaining Data to Buffer */ + /* Set the Double buffer counter for pma buffer1 */ + PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, len); + 800271a: 68bb ldr r3, [r7, #8] + 800271c: 785b ldrb r3, [r3, #1] + 800271e: 2b00 cmp r3, #0 + 8002720: d155 bne.n 80027ce + 8002722: 68fb ldr r3, [r7, #12] + 8002724: 681b ldr r3, [r3, #0] + 8002726: 63bb str r3, [r7, #56] ; 0x38 + 8002728: 68fb ldr r3, [r7, #12] + 800272a: 681b ldr r3, [r3, #0] + 800272c: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8002730: b29b uxth r3, r3 + 8002732: 461a mov r2, r3 + 8002734: 6bbb ldr r3, [r7, #56] ; 0x38 + 8002736: 4413 add r3, r2 + 8002738: 63bb str r3, [r7, #56] ; 0x38 + 800273a: 68bb ldr r3, [r7, #8] + 800273c: 781b ldrb r3, [r3, #0] + 800273e: 011a lsls r2, r3, #4 + 8002740: 6bbb ldr r3, [r7, #56] ; 0x38 + 8002742: 4413 add r3, r2 + 8002744: f203 4304 addw r3, r3, #1028 ; 0x404 + 8002748: 637b str r3, [r7, #52] ; 0x34 + 800274a: 6d3b ldr r3, [r7, #80] ; 0x50 + 800274c: 2b00 cmp r3, #0 + 800274e: d112 bne.n 8002776 + 8002750: 6b7b ldr r3, [r7, #52] ; 0x34 + 8002752: 881b ldrh r3, [r3, #0] + 8002754: b29b uxth r3, r3 + 8002756: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 800275a: b29a uxth r2, r3 + 800275c: 6b7b ldr r3, [r7, #52] ; 0x34 + 800275e: 801a strh r2, [r3, #0] + 8002760: 6b7b ldr r3, [r7, #52] ; 0x34 + 8002762: 881b ldrh r3, [r3, #0] + 8002764: b29b uxth r3, r3 + 8002766: ea6f 4343 mvn.w r3, r3, lsl #17 + 800276a: ea6f 4353 mvn.w r3, r3, lsr #17 + 800276e: b29a uxth r2, r3 + 8002770: 6b7b ldr r3, [r7, #52] ; 0x34 + 8002772: 801a strh r2, [r3, #0] + 8002774: e047 b.n 8002806 + 8002776: 6d3b ldr r3, [r7, #80] ; 0x50 + 8002778: 2b3e cmp r3, #62 ; 0x3e + 800277a: d811 bhi.n 80027a0 + 800277c: 6d3b ldr r3, [r7, #80] ; 0x50 + 800277e: 085b lsrs r3, r3, #1 + 8002780: 64bb str r3, [r7, #72] ; 0x48 + 8002782: 6d3b ldr r3, [r7, #80] ; 0x50 + 8002784: f003 0301 and.w r3, r3, #1 + 8002788: 2b00 cmp r3, #0 + 800278a: d002 beq.n 8002792 + 800278c: 6cbb ldr r3, [r7, #72] ; 0x48 + 800278e: 3301 adds r3, #1 + 8002790: 64bb str r3, [r7, #72] ; 0x48 + 8002792: 6cbb ldr r3, [r7, #72] ; 0x48 + 8002794: b29b uxth r3, r3 + 8002796: 029b lsls r3, r3, #10 + 8002798: b29a uxth r2, r3 + 800279a: 6b7b ldr r3, [r7, #52] ; 0x34 + 800279c: 801a strh r2, [r3, #0] + 800279e: e032 b.n 8002806 + 80027a0: 6d3b ldr r3, [r7, #80] ; 0x50 + 80027a2: 095b lsrs r3, r3, #5 + 80027a4: 64bb str r3, [r7, #72] ; 0x48 + 80027a6: 6d3b ldr r3, [r7, #80] ; 0x50 + 80027a8: f003 031f and.w r3, r3, #31 + 80027ac: 2b00 cmp r3, #0 + 80027ae: d102 bne.n 80027b6 + 80027b0: 6cbb ldr r3, [r7, #72] ; 0x48 + 80027b2: 3b01 subs r3, #1 + 80027b4: 64bb str r3, [r7, #72] ; 0x48 + 80027b6: 6cbb ldr r3, [r7, #72] ; 0x48 + 80027b8: b29b uxth r3, r3 + 80027ba: 029b lsls r3, r3, #10 + 80027bc: b29b uxth r3, r3 + 80027be: ea6f 4343 mvn.w r3, r3, lsl #17 + 80027c2: ea6f 4353 mvn.w r3, r3, lsr #17 + 80027c6: b29a uxth r2, r3 + 80027c8: 6b7b ldr r3, [r7, #52] ; 0x34 + 80027ca: 801a strh r2, [r3, #0] + 80027cc: e01b b.n 8002806 + 80027ce: 68bb ldr r3, [r7, #8] + 80027d0: 785b ldrb r3, [r3, #1] + 80027d2: 2b01 cmp r3, #1 + 80027d4: d117 bne.n 8002806 + 80027d6: 68fb ldr r3, [r7, #12] + 80027d8: 681b ldr r3, [r3, #0] + 80027da: 643b str r3, [r7, #64] ; 0x40 + 80027dc: 68fb ldr r3, [r7, #12] + 80027de: 681b ldr r3, [r3, #0] + 80027e0: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 80027e4: b29b uxth r3, r3 + 80027e6: 461a mov r2, r3 + 80027e8: 6c3b ldr r3, [r7, #64] ; 0x40 + 80027ea: 4413 add r3, r2 + 80027ec: 643b str r3, [r7, #64] ; 0x40 + 80027ee: 68bb ldr r3, [r7, #8] + 80027f0: 781b ldrb r3, [r3, #0] + 80027f2: 011a lsls r2, r3, #4 + 80027f4: 6c3b ldr r3, [r7, #64] ; 0x40 + 80027f6: 4413 add r3, r2 + 80027f8: f203 4304 addw r3, r3, #1028 ; 0x404 + 80027fc: 63fb str r3, [r7, #60] ; 0x3c + 80027fe: 6d3b ldr r3, [r7, #80] ; 0x50 + 8002800: b29a uxth r2, r3 + 8002802: 6bfb ldr r3, [r7, #60] ; 0x3c + 8002804: 801a strh r2, [r3, #0] + + /* Copy user buffer to USB PMA */ + USB_WritePMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, (uint16_t)len); + 8002806: 68fb ldr r3, [r7, #12] + 8002808: 6818 ldr r0, [r3, #0] + 800280a: 68bb ldr r3, [r7, #8] + 800280c: 6959 ldr r1, [r3, #20] + 800280e: 68bb ldr r3, [r7, #8] + 8002810: 891a ldrh r2, [r3, #8] + 8002812: 6d3b ldr r3, [r7, #80] ; 0x50 + 8002814: b29b uxth r3, r3 + 8002816: f002 fff8 bl 800580a + 800281a: e1d0 b.n 8002bbe + } + } + else /* Data Buffer1 ACK received */ + { + /* multi-packet on the NON control IN endpoint */ + TxByteNbre = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); + 800281c: 68fb ldr r3, [r7, #12] + 800281e: 681b ldr r3, [r3, #0] + 8002820: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8002824: b29b uxth r3, r3 + 8002826: 461a mov r2, r3 + 8002828: 68bb ldr r3, [r7, #8] + 800282a: 781b ldrb r3, [r3, #0] + 800282c: 00db lsls r3, r3, #3 + 800282e: 4413 add r3, r2 + 8002830: 3306 adds r3, #6 + 8002832: 005b lsls r3, r3, #1 + 8002834: 68fa ldr r2, [r7, #12] + 8002836: 6812 ldr r2, [r2, #0] + 8002838: 4413 add r3, r2 + 800283a: f503 6380 add.w r3, r3, #1024 ; 0x400 + 800283e: 881b ldrh r3, [r3, #0] + 8002840: f3c3 0309 ubfx r3, r3, #0, #10 + 8002844: f8a7 304e strh.w r3, [r7, #78] ; 0x4e + + if (ep->xfer_len >= TxByteNbre) + 8002848: 68bb ldr r3, [r7, #8] + 800284a: 699a ldr r2, [r3, #24] + 800284c: f8b7 304e ldrh.w r3, [r7, #78] ; 0x4e + 8002850: 429a cmp r2, r3 + 8002852: d307 bcc.n 8002864 + { + ep->xfer_len -= TxByteNbre; + 8002854: 68bb ldr r3, [r7, #8] + 8002856: 699a ldr r2, [r3, #24] + 8002858: f8b7 304e ldrh.w r3, [r7, #78] ; 0x4e + 800285c: 1ad2 subs r2, r2, r3 + 800285e: 68bb ldr r3, [r7, #8] + 8002860: 619a str r2, [r3, #24] + 8002862: e002 b.n 800286a + } + else + { + ep->xfer_len = 0U; + 8002864: 68bb ldr r3, [r7, #8] + 8002866: 2200 movs r2, #0 + 8002868: 619a str r2, [r3, #24] + } + + /* Transfer is completed */ + if (ep->xfer_len == 0U) + 800286a: 68bb ldr r3, [r7, #8] + 800286c: 699b ldr r3, [r3, #24] + 800286e: 2b00 cmp r3, #0 + 8002870: f040 80c4 bne.w 80029fc + { + PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); + 8002874: 68bb ldr r3, [r7, #8] + 8002876: 785b ldrb r3, [r3, #1] + 8002878: 2b00 cmp r3, #0 + 800287a: d126 bne.n 80028ca + 800287c: 68fb ldr r3, [r7, #12] + 800287e: 681b ldr r3, [r3, #0] + 8002880: 66fb str r3, [r7, #108] ; 0x6c + 8002882: 68fb ldr r3, [r7, #12] + 8002884: 681b ldr r3, [r3, #0] + 8002886: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 800288a: b29b uxth r3, r3 + 800288c: 461a mov r2, r3 + 800288e: 6efb ldr r3, [r7, #108] ; 0x6c + 8002890: 4413 add r3, r2 + 8002892: 66fb str r3, [r7, #108] ; 0x6c + 8002894: 68bb ldr r3, [r7, #8] + 8002896: 781b ldrb r3, [r3, #0] + 8002898: 011a lsls r2, r3, #4 + 800289a: 6efb ldr r3, [r7, #108] ; 0x6c + 800289c: 4413 add r3, r2 + 800289e: f203 4304 addw r3, r3, #1028 ; 0x404 + 80028a2: 66bb str r3, [r7, #104] ; 0x68 + 80028a4: 6ebb ldr r3, [r7, #104] ; 0x68 + 80028a6: 881b ldrh r3, [r3, #0] + 80028a8: b29b uxth r3, r3 + 80028aa: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 80028ae: b29a uxth r2, r3 + 80028b0: 6ebb ldr r3, [r7, #104] ; 0x68 + 80028b2: 801a strh r2, [r3, #0] + 80028b4: 6ebb ldr r3, [r7, #104] ; 0x68 + 80028b6: 881b ldrh r3, [r3, #0] + 80028b8: b29b uxth r3, r3 + 80028ba: ea6f 4343 mvn.w r3, r3, lsl #17 + 80028be: ea6f 4353 mvn.w r3, r3, lsr #17 + 80028c2: b29a uxth r2, r3 + 80028c4: 6ebb ldr r3, [r7, #104] ; 0x68 + 80028c6: 801a strh r2, [r3, #0] + 80028c8: e01a b.n 8002900 + 80028ca: 68bb ldr r3, [r7, #8] + 80028cc: 785b ldrb r3, [r3, #1] + 80028ce: 2b01 cmp r3, #1 + 80028d0: d116 bne.n 8002900 + 80028d2: 68fb ldr r3, [r7, #12] + 80028d4: 681b ldr r3, [r3, #0] + 80028d6: 677b str r3, [r7, #116] ; 0x74 + 80028d8: 68fb ldr r3, [r7, #12] + 80028da: 681b ldr r3, [r3, #0] + 80028dc: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 80028e0: b29b uxth r3, r3 + 80028e2: 461a mov r2, r3 + 80028e4: 6f7b ldr r3, [r7, #116] ; 0x74 + 80028e6: 4413 add r3, r2 + 80028e8: 677b str r3, [r7, #116] ; 0x74 + 80028ea: 68bb ldr r3, [r7, #8] + 80028ec: 781b ldrb r3, [r3, #0] + 80028ee: 011a lsls r2, r3, #4 + 80028f0: 6f7b ldr r3, [r7, #116] ; 0x74 + 80028f2: 4413 add r3, r2 + 80028f4: f203 4304 addw r3, r3, #1028 ; 0x404 + 80028f8: 673b str r3, [r7, #112] ; 0x70 + 80028fa: 6f3b ldr r3, [r7, #112] ; 0x70 + 80028fc: 2200 movs r2, #0 + 80028fe: 801a strh r2, [r3, #0] + PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); + 8002900: 68fb ldr r3, [r7, #12] + 8002902: 681b ldr r3, [r3, #0] + 8002904: 67bb str r3, [r7, #120] ; 0x78 + 8002906: 68bb ldr r3, [r7, #8] + 8002908: 785b ldrb r3, [r3, #1] + 800290a: 2b00 cmp r3, #0 + 800290c: d12f bne.n 800296e + 800290e: 68fb ldr r3, [r7, #12] + 8002910: 681b ldr r3, [r3, #0] + 8002912: f8c7 3080 str.w r3, [r7, #128] ; 0x80 + 8002916: 68fb ldr r3, [r7, #12] + 8002918: 681b ldr r3, [r3, #0] + 800291a: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 800291e: b29b uxth r3, r3 + 8002920: 461a mov r2, r3 + 8002922: f8d7 3080 ldr.w r3, [r7, #128] ; 0x80 + 8002926: 4413 add r3, r2 + 8002928: f8c7 3080 str.w r3, [r7, #128] ; 0x80 + 800292c: 68bb ldr r3, [r7, #8] + 800292e: 781b ldrb r3, [r3, #0] + 8002930: 011a lsls r2, r3, #4 + 8002932: f8d7 3080 ldr.w r3, [r7, #128] ; 0x80 + 8002936: 4413 add r3, r2 + 8002938: f203 430c addw r3, r3, #1036 ; 0x40c + 800293c: f8c7 3084 str.w r3, [r7, #132] ; 0x84 + 8002940: f8d7 3084 ldr.w r3, [r7, #132] ; 0x84 + 8002944: 881b ldrh r3, [r3, #0] + 8002946: b29b uxth r3, r3 + 8002948: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 800294c: b29a uxth r2, r3 + 800294e: f8d7 3084 ldr.w r3, [r7, #132] ; 0x84 + 8002952: 801a strh r2, [r3, #0] + 8002954: f8d7 3084 ldr.w r3, [r7, #132] ; 0x84 + 8002958: 881b ldrh r3, [r3, #0] + 800295a: b29b uxth r3, r3 + 800295c: ea6f 4343 mvn.w r3, r3, lsl #17 + 8002960: ea6f 4353 mvn.w r3, r3, lsr #17 + 8002964: b29a uxth r2, r3 + 8002966: f8d7 3084 ldr.w r3, [r7, #132] ; 0x84 + 800296a: 801a strh r2, [r3, #0] + 800296c: e017 b.n 800299e + 800296e: 68bb ldr r3, [r7, #8] + 8002970: 785b ldrb r3, [r3, #1] + 8002972: 2b01 cmp r3, #1 + 8002974: d113 bne.n 800299e + 8002976: 68fb ldr r3, [r7, #12] + 8002978: 681b ldr r3, [r3, #0] + 800297a: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 800297e: b29b uxth r3, r3 + 8002980: 461a mov r2, r3 + 8002982: 6fbb ldr r3, [r7, #120] ; 0x78 + 8002984: 4413 add r3, r2 + 8002986: 67bb str r3, [r7, #120] ; 0x78 + 8002988: 68bb ldr r3, [r7, #8] + 800298a: 781b ldrb r3, [r3, #0] + 800298c: 011a lsls r2, r3, #4 + 800298e: 6fbb ldr r3, [r7, #120] ; 0x78 + 8002990: 4413 add r3, r2 + 8002992: f203 430c addw r3, r3, #1036 ; 0x40c + 8002996: 67fb str r3, [r7, #124] ; 0x7c + 8002998: 6ffb ldr r3, [r7, #124] ; 0x7c + 800299a: 2200 movs r2, #0 + 800299c: 801a strh r2, [r3, #0] + + /* TX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataInStageCallback(hpcd, ep->num); +#else + HAL_PCD_DataInStageCallback(hpcd, ep->num); + 800299e: 68bb ldr r3, [r7, #8] + 80029a0: 781b ldrb r3, [r3, #0] + 80029a2: 4619 mov r1, r3 + 80029a4: 68f8 ldr r0, [r7, #12] + 80029a6: f005 f8b2 bl 8007b0e +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + /* need to Free USB Buff */ + if ((wEPVal & USB_EP_DTOG_RX) == 0U) + 80029aa: 88fb ldrh r3, [r7, #6] + 80029ac: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 80029b0: 2b00 cmp r3, #0 + 80029b2: f040 8104 bne.w 8002bbe + { + PCD_FreeUserBuffer(hpcd->Instance, ep->num, 1U); + 80029b6: 68fb ldr r3, [r7, #12] + 80029b8: 681b ldr r3, [r3, #0] + 80029ba: 461a mov r2, r3 + 80029bc: 68bb ldr r3, [r7, #8] + 80029be: 781b ldrb r3, [r3, #0] + 80029c0: 009b lsls r3, r3, #2 + 80029c2: 4413 add r3, r2 + 80029c4: 881b ldrh r3, [r3, #0] + 80029c6: b29b uxth r3, r3 + 80029c8: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 80029cc: f023 0370 bic.w r3, r3, #112 ; 0x70 + 80029d0: f8a7 3046 strh.w r3, [r7, #70] ; 0x46 + 80029d4: 68fb ldr r3, [r7, #12] + 80029d6: 681b ldr r3, [r3, #0] + 80029d8: 461a mov r2, r3 + 80029da: 68bb ldr r3, [r7, #8] + 80029dc: 781b ldrb r3, [r3, #0] + 80029de: 009b lsls r3, r3, #2 + 80029e0: 441a add r2, r3 + 80029e2: f8b7 3046 ldrh.w r3, [r7, #70] ; 0x46 + 80029e6: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 80029ea: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 80029ee: f443 4340 orr.w r3, r3, #49152 ; 0xc000 + 80029f2: f043 0380 orr.w r3, r3, #128 ; 0x80 + 80029f6: b29b uxth r3, r3 + 80029f8: 8013 strh r3, [r2, #0] + 80029fa: e0e0 b.n 8002bbe + } + } + else /* Transfer is not yet Done */ + { + /* need to Free USB Buff */ + if ((wEPVal & USB_EP_DTOG_RX) == 0U) + 80029fc: 88fb ldrh r3, [r7, #6] + 80029fe: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 8002a02: 2b00 cmp r3, #0 + 8002a04: d121 bne.n 8002a4a + { + PCD_FreeUserBuffer(hpcd->Instance, ep->num, 1U); + 8002a06: 68fb ldr r3, [r7, #12] + 8002a08: 681b ldr r3, [r3, #0] + 8002a0a: 461a mov r2, r3 + 8002a0c: 68bb ldr r3, [r7, #8] + 8002a0e: 781b ldrb r3, [r3, #0] + 8002a10: 009b lsls r3, r3, #2 + 8002a12: 4413 add r3, r2 + 8002a14: 881b ldrh r3, [r3, #0] + 8002a16: b29b uxth r3, r3 + 8002a18: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 8002a1c: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8002a20: f8a7 304c strh.w r3, [r7, #76] ; 0x4c + 8002a24: 68fb ldr r3, [r7, #12] + 8002a26: 681b ldr r3, [r3, #0] + 8002a28: 461a mov r2, r3 + 8002a2a: 68bb ldr r3, [r7, #8] + 8002a2c: 781b ldrb r3, [r3, #0] + 8002a2e: 009b lsls r3, r3, #2 + 8002a30: 441a add r2, r3 + 8002a32: f8b7 304c ldrh.w r3, [r7, #76] ; 0x4c + 8002a36: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8002a3a: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8002a3e: f443 4340 orr.w r3, r3, #49152 ; 0xc000 + 8002a42: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8002a46: b29b uxth r3, r3 + 8002a48: 8013 strh r3, [r2, #0] + } + + /* Still there is data to Fill in the next Buffer */ + if (ep->xfer_fill_db == 1U) + 8002a4a: 68bb ldr r3, [r7, #8] + 8002a4c: f893 3024 ldrb.w r3, [r3, #36] ; 0x24 + 8002a50: 2b01 cmp r3, #1 + 8002a52: f040 80b4 bne.w 8002bbe + { + ep->xfer_buff += TxByteNbre; + 8002a56: 68bb ldr r3, [r7, #8] + 8002a58: 695a ldr r2, [r3, #20] + 8002a5a: f8b7 304e ldrh.w r3, [r7, #78] ; 0x4e + 8002a5e: 441a add r2, r3 + 8002a60: 68bb ldr r3, [r7, #8] + 8002a62: 615a str r2, [r3, #20] + ep->xfer_count += TxByteNbre; + 8002a64: 68bb ldr r3, [r7, #8] + 8002a66: 69da ldr r2, [r3, #28] + 8002a68: f8b7 304e ldrh.w r3, [r7, #78] ; 0x4e + 8002a6c: 441a add r2, r3 + 8002a6e: 68bb ldr r3, [r7, #8] + 8002a70: 61da str r2, [r3, #28] + + /* Calculate the len of the new buffer to fill */ + if (ep->xfer_len_db >= ep->maxpacket) + 8002a72: 68bb ldr r3, [r7, #8] + 8002a74: 6a1a ldr r2, [r3, #32] + 8002a76: 68bb ldr r3, [r7, #8] + 8002a78: 691b ldr r3, [r3, #16] + 8002a7a: 429a cmp r2, r3 + 8002a7c: d309 bcc.n 8002a92 + { + len = ep->maxpacket; + 8002a7e: 68bb ldr r3, [r7, #8] + 8002a80: 691b ldr r3, [r3, #16] + 8002a82: 653b str r3, [r7, #80] ; 0x50 + ep->xfer_len_db -= len; + 8002a84: 68bb ldr r3, [r7, #8] + 8002a86: 6a1a ldr r2, [r3, #32] + 8002a88: 6d3b ldr r3, [r7, #80] ; 0x50 + 8002a8a: 1ad2 subs r2, r2, r3 + 8002a8c: 68bb ldr r3, [r7, #8] + 8002a8e: 621a str r2, [r3, #32] + 8002a90: e015 b.n 8002abe + } + else if (ep->xfer_len_db == 0U) + 8002a92: 68bb ldr r3, [r7, #8] + 8002a94: 6a1b ldr r3, [r3, #32] + 8002a96: 2b00 cmp r3, #0 + 8002a98: d107 bne.n 8002aaa + { + len = TxByteNbre; + 8002a9a: f8b7 304e ldrh.w r3, [r7, #78] ; 0x4e + 8002a9e: 653b str r3, [r7, #80] ; 0x50 + ep->xfer_fill_db = 0U; + 8002aa0: 68bb ldr r3, [r7, #8] + 8002aa2: 2200 movs r2, #0 + 8002aa4: f883 2024 strb.w r2, [r3, #36] ; 0x24 + 8002aa8: e009 b.n 8002abe + } + else + { + len = ep->xfer_len_db; + 8002aaa: 68bb ldr r3, [r7, #8] + 8002aac: 6a1b ldr r3, [r3, #32] + 8002aae: 653b str r3, [r7, #80] ; 0x50 + ep->xfer_len_db = 0U; + 8002ab0: 68bb ldr r3, [r7, #8] + 8002ab2: 2200 movs r2, #0 + 8002ab4: 621a str r2, [r3, #32] + ep->xfer_fill_db = 0; + 8002ab6: 68bb ldr r3, [r7, #8] + 8002ab8: 2200 movs r2, #0 + 8002aba: f883 2024 strb.w r2, [r3, #36] ; 0x24 + } + + /* Set the Double buffer counter for pmabuffer1 */ + PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, len); + 8002abe: 68fb ldr r3, [r7, #12] + 8002ac0: 681b ldr r3, [r3, #0] + 8002ac2: 667b str r3, [r7, #100] ; 0x64 + 8002ac4: 68bb ldr r3, [r7, #8] + 8002ac6: 785b ldrb r3, [r3, #1] + 8002ac8: 2b00 cmp r3, #0 + 8002aca: d155 bne.n 8002b78 + 8002acc: 68fb ldr r3, [r7, #12] + 8002ace: 681b ldr r3, [r3, #0] + 8002ad0: 65fb str r3, [r7, #92] ; 0x5c + 8002ad2: 68fb ldr r3, [r7, #12] + 8002ad4: 681b ldr r3, [r3, #0] + 8002ad6: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8002ada: b29b uxth r3, r3 + 8002adc: 461a mov r2, r3 + 8002ade: 6dfb ldr r3, [r7, #92] ; 0x5c + 8002ae0: 4413 add r3, r2 + 8002ae2: 65fb str r3, [r7, #92] ; 0x5c + 8002ae4: 68bb ldr r3, [r7, #8] + 8002ae6: 781b ldrb r3, [r3, #0] + 8002ae8: 011a lsls r2, r3, #4 + 8002aea: 6dfb ldr r3, [r7, #92] ; 0x5c + 8002aec: 4413 add r3, r2 + 8002aee: f203 430c addw r3, r3, #1036 ; 0x40c + 8002af2: 65bb str r3, [r7, #88] ; 0x58 + 8002af4: 6d3b ldr r3, [r7, #80] ; 0x50 + 8002af6: 2b00 cmp r3, #0 + 8002af8: d112 bne.n 8002b20 + 8002afa: 6dbb ldr r3, [r7, #88] ; 0x58 + 8002afc: 881b ldrh r3, [r3, #0] + 8002afe: b29b uxth r3, r3 + 8002b00: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 8002b04: b29a uxth r2, r3 + 8002b06: 6dbb ldr r3, [r7, #88] ; 0x58 + 8002b08: 801a strh r2, [r3, #0] + 8002b0a: 6dbb ldr r3, [r7, #88] ; 0x58 + 8002b0c: 881b ldrh r3, [r3, #0] + 8002b0e: b29b uxth r3, r3 + 8002b10: ea6f 4343 mvn.w r3, r3, lsl #17 + 8002b14: ea6f 4353 mvn.w r3, r3, lsr #17 + 8002b18: b29a uxth r2, r3 + 8002b1a: 6dbb ldr r3, [r7, #88] ; 0x58 + 8002b1c: 801a strh r2, [r3, #0] + 8002b1e: e044 b.n 8002baa + 8002b20: 6d3b ldr r3, [r7, #80] ; 0x50 + 8002b22: 2b3e cmp r3, #62 ; 0x3e + 8002b24: d811 bhi.n 8002b4a + 8002b26: 6d3b ldr r3, [r7, #80] ; 0x50 + 8002b28: 085b lsrs r3, r3, #1 + 8002b2a: 657b str r3, [r7, #84] ; 0x54 + 8002b2c: 6d3b ldr r3, [r7, #80] ; 0x50 + 8002b2e: f003 0301 and.w r3, r3, #1 + 8002b32: 2b00 cmp r3, #0 + 8002b34: d002 beq.n 8002b3c + 8002b36: 6d7b ldr r3, [r7, #84] ; 0x54 + 8002b38: 3301 adds r3, #1 + 8002b3a: 657b str r3, [r7, #84] ; 0x54 + 8002b3c: 6d7b ldr r3, [r7, #84] ; 0x54 + 8002b3e: b29b uxth r3, r3 + 8002b40: 029b lsls r3, r3, #10 + 8002b42: b29a uxth r2, r3 + 8002b44: 6dbb ldr r3, [r7, #88] ; 0x58 + 8002b46: 801a strh r2, [r3, #0] + 8002b48: e02f b.n 8002baa + 8002b4a: 6d3b ldr r3, [r7, #80] ; 0x50 + 8002b4c: 095b lsrs r3, r3, #5 + 8002b4e: 657b str r3, [r7, #84] ; 0x54 + 8002b50: 6d3b ldr r3, [r7, #80] ; 0x50 + 8002b52: f003 031f and.w r3, r3, #31 + 8002b56: 2b00 cmp r3, #0 + 8002b58: d102 bne.n 8002b60 + 8002b5a: 6d7b ldr r3, [r7, #84] ; 0x54 + 8002b5c: 3b01 subs r3, #1 + 8002b5e: 657b str r3, [r7, #84] ; 0x54 + 8002b60: 6d7b ldr r3, [r7, #84] ; 0x54 + 8002b62: b29b uxth r3, r3 + 8002b64: 029b lsls r3, r3, #10 + 8002b66: b29b uxth r3, r3 + 8002b68: ea6f 4343 mvn.w r3, r3, lsl #17 + 8002b6c: ea6f 4353 mvn.w r3, r3, lsr #17 + 8002b70: b29a uxth r2, r3 + 8002b72: 6dbb ldr r3, [r7, #88] ; 0x58 + 8002b74: 801a strh r2, [r3, #0] + 8002b76: e018 b.n 8002baa + 8002b78: 68bb ldr r3, [r7, #8] + 8002b7a: 785b ldrb r3, [r3, #1] + 8002b7c: 2b01 cmp r3, #1 + 8002b7e: d114 bne.n 8002baa + 8002b80: 68fb ldr r3, [r7, #12] + 8002b82: 681b ldr r3, [r3, #0] + 8002b84: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8002b88: b29b uxth r3, r3 + 8002b8a: 461a mov r2, r3 + 8002b8c: 6e7b ldr r3, [r7, #100] ; 0x64 + 8002b8e: 4413 add r3, r2 + 8002b90: 667b str r3, [r7, #100] ; 0x64 + 8002b92: 68bb ldr r3, [r7, #8] + 8002b94: 781b ldrb r3, [r3, #0] + 8002b96: 011a lsls r2, r3, #4 + 8002b98: 6e7b ldr r3, [r7, #100] ; 0x64 + 8002b9a: 4413 add r3, r2 + 8002b9c: f203 430c addw r3, r3, #1036 ; 0x40c + 8002ba0: 663b str r3, [r7, #96] ; 0x60 + 8002ba2: 6d3b ldr r3, [r7, #80] ; 0x50 + 8002ba4: b29a uxth r2, r3 + 8002ba6: 6e3b ldr r3, [r7, #96] ; 0x60 + 8002ba8: 801a strh r2, [r3, #0] + + /* Copy the user buffer to USB PMA */ + USB_WritePMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, (uint16_t)len); + 8002baa: 68fb ldr r3, [r7, #12] + 8002bac: 6818 ldr r0, [r3, #0] + 8002bae: 68bb ldr r3, [r7, #8] + 8002bb0: 6959 ldr r1, [r3, #20] + 8002bb2: 68bb ldr r3, [r7, #8] + 8002bb4: 895a ldrh r2, [r3, #10] + 8002bb6: 6d3b ldr r3, [r7, #80] ; 0x50 + 8002bb8: b29b uxth r3, r3 + 8002bba: f002 fe26 bl 800580a + } + } + } + + /*enable endpoint IN*/ + PCD_SET_EP_TX_STATUS(hpcd->Instance, ep->num, USB_EP_TX_VALID); + 8002bbe: 68fb ldr r3, [r7, #12] + 8002bc0: 681b ldr r3, [r3, #0] + 8002bc2: 461a mov r2, r3 + 8002bc4: 68bb ldr r3, [r7, #8] + 8002bc6: 781b ldrb r3, [r3, #0] + 8002bc8: 009b lsls r3, r3, #2 + 8002bca: 4413 add r3, r2 + 8002bcc: 881b ldrh r3, [r3, #0] + 8002bce: b29b uxth r3, r3 + 8002bd0: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 8002bd4: f023 0340 bic.w r3, r3, #64 ; 0x40 + 8002bd8: 823b strh r3, [r7, #16] + 8002bda: 8a3b ldrh r3, [r7, #16] + 8002bdc: f083 0310 eor.w r3, r3, #16 + 8002be0: 823b strh r3, [r7, #16] + 8002be2: 8a3b ldrh r3, [r7, #16] + 8002be4: f083 0320 eor.w r3, r3, #32 + 8002be8: 823b strh r3, [r7, #16] + 8002bea: 68fb ldr r3, [r7, #12] + 8002bec: 681b ldr r3, [r3, #0] + 8002bee: 461a mov r2, r3 + 8002bf0: 68bb ldr r3, [r7, #8] + 8002bf2: 781b ldrb r3, [r3, #0] + 8002bf4: 009b lsls r3, r3, #2 + 8002bf6: 441a add r2, r3 + 8002bf8: 8a3b ldrh r3, [r7, #16] + 8002bfa: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8002bfe: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8002c02: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8002c06: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8002c0a: b29b uxth r3, r3 + 8002c0c: 8013 strh r3, [r2, #0] + + return HAL_OK; + 8002c0e: 2300 movs r3, #0 +} + 8002c10: 4618 mov r0, r3 + 8002c12: 3788 adds r7, #136 ; 0x88 + 8002c14: 46bd mov sp, r7 + 8002c16: bd80 pop {r7, pc} + +08002c18 : + * @retval HAL status + */ + +HAL_StatusTypeDef HAL_PCDEx_PMAConfig(PCD_HandleTypeDef *hpcd, uint16_t ep_addr, + uint16_t ep_kind, uint32_t pmaadress) +{ + 8002c18: b480 push {r7} + 8002c1a: b087 sub sp, #28 + 8002c1c: af00 add r7, sp, #0 + 8002c1e: 60f8 str r0, [r7, #12] + 8002c20: 607b str r3, [r7, #4] + 8002c22: 460b mov r3, r1 + 8002c24: 817b strh r3, [r7, #10] + 8002c26: 4613 mov r3, r2 + 8002c28: 813b strh r3, [r7, #8] + PCD_EPTypeDef *ep; + + /* initialize ep structure*/ + if ((0x80U & ep_addr) == 0x80U) + 8002c2a: 897b ldrh r3, [r7, #10] + 8002c2c: f003 0380 and.w r3, r3, #128 ; 0x80 + 8002c30: b29b uxth r3, r3 + 8002c32: 2b00 cmp r3, #0 + 8002c34: d00b beq.n 8002c4e + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + 8002c36: 897b ldrh r3, [r7, #10] + 8002c38: f003 0307 and.w r3, r3, #7 + 8002c3c: 1c5a adds r2, r3, #1 + 8002c3e: 4613 mov r3, r2 + 8002c40: 009b lsls r3, r3, #2 + 8002c42: 4413 add r3, r2 + 8002c44: 00db lsls r3, r3, #3 + 8002c46: 68fa ldr r2, [r7, #12] + 8002c48: 4413 add r3, r2 + 8002c4a: 617b str r3, [r7, #20] + 8002c4c: e009 b.n 8002c62 + } + else + { + ep = &hpcd->OUT_ep[ep_addr]; + 8002c4e: 897a ldrh r2, [r7, #10] + 8002c50: 4613 mov r3, r2 + 8002c52: 009b lsls r3, r3, #2 + 8002c54: 4413 add r3, r2 + 8002c56: 00db lsls r3, r3, #3 + 8002c58: f503 73b4 add.w r3, r3, #360 ; 0x168 + 8002c5c: 68fa ldr r2, [r7, #12] + 8002c5e: 4413 add r3, r2 + 8002c60: 617b str r3, [r7, #20] + } + + /* Here we check if the endpoint is single or double Buffer*/ + if (ep_kind == PCD_SNG_BUF) + 8002c62: 893b ldrh r3, [r7, #8] + 8002c64: 2b00 cmp r3, #0 + 8002c66: d107 bne.n 8002c78 + { + /* Single Buffer */ + ep->doublebuffer = 0U; + 8002c68: 697b ldr r3, [r7, #20] + 8002c6a: 2200 movs r2, #0 + 8002c6c: 731a strb r2, [r3, #12] + /* Configure the PMA */ + ep->pmaadress = (uint16_t)pmaadress; + 8002c6e: 687b ldr r3, [r7, #4] + 8002c70: b29a uxth r2, r3 + 8002c72: 697b ldr r3, [r7, #20] + 8002c74: 80da strh r2, [r3, #6] + 8002c76: e00b b.n 8002c90 + } + else /* USB_DBL_BUF */ + { + /* Double Buffer Endpoint */ + ep->doublebuffer = 1U; + 8002c78: 697b ldr r3, [r7, #20] + 8002c7a: 2201 movs r2, #1 + 8002c7c: 731a strb r2, [r3, #12] + /* Configure the PMA */ + ep->pmaaddr0 = (uint16_t)(pmaadress & 0xFFFFU); + 8002c7e: 687b ldr r3, [r7, #4] + 8002c80: b29a uxth r2, r3 + 8002c82: 697b ldr r3, [r7, #20] + 8002c84: 811a strh r2, [r3, #8] + ep->pmaaddr1 = (uint16_t)((pmaadress & 0xFFFF0000U) >> 16); + 8002c86: 687b ldr r3, [r7, #4] + 8002c88: 0c1b lsrs r3, r3, #16 + 8002c8a: b29a uxth r2, r3 + 8002c8c: 697b ldr r3, [r7, #20] + 8002c8e: 815a strh r2, [r3, #10] + } + + return HAL_OK; + 8002c90: 2300 movs r3, #0 +} + 8002c92: 4618 mov r0, r3 + 8002c94: 371c adds r7, #28 + 8002c96: 46bd mov sp, r7 + 8002c98: bc80 pop {r7} + 8002c9a: 4770 bx lr + +08002c9c : * supported by this macro. User should request a transition to HSE Off * first and then HSE On or HSE Bypass. * @retval HAL status */ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) { - 80005e8: b580 push {r7, lr} - 80005ea: b086 sub sp, #24 - 80005ec: af00 add r7, sp, #0 - 80005ee: 6078 str r0, [r7, #4] + 8002c9c: b580 push {r7, lr} + 8002c9e: b086 sub sp, #24 + 8002ca0: af00 add r7, sp, #0 + 8002ca2: 6078 str r0, [r7, #4] uint32_t tickstart; uint32_t pll_config; /* Check Null pointer */ if (RCC_OscInitStruct == NULL) - 80005f0: 687b ldr r3, [r7, #4] - 80005f2: 2b00 cmp r3, #0 - 80005f4: d101 bne.n 80005fa + 8002ca4: 687b ldr r3, [r7, #4] + 8002ca6: 2b00 cmp r3, #0 + 8002ca8: d101 bne.n 8002cae { return HAL_ERROR; - 80005f6: 2301 movs r3, #1 - 80005f8: e26c b.n 8000ad4 + 8002caa: 2301 movs r3, #1 + 8002cac: e26c b.n 8003188 /* Check the parameters */ assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); /*------------------------------- HSE Configuration ------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) - 80005fa: 687b ldr r3, [r7, #4] - 80005fc: 681b ldr r3, [r3, #0] - 80005fe: f003 0301 and.w r3, r3, #1 - 8000602: 2b00 cmp r3, #0 - 8000604: f000 8087 beq.w 8000716 + 8002cae: 687b ldr r3, [r7, #4] + 8002cb0: 681b ldr r3, [r3, #0] + 8002cb2: f003 0301 and.w r3, r3, #1 + 8002cb6: 2b00 cmp r3, #0 + 8002cb8: f000 8087 beq.w 8002dca { /* Check the parameters */ assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE) - 8000608: 4b92 ldr r3, [pc, #584] ; (8000854 ) - 800060a: 685b ldr r3, [r3, #4] - 800060c: f003 030c and.w r3, r3, #12 - 8000610: 2b04 cmp r3, #4 - 8000612: d00c beq.n 800062e + 8002cbc: 4b92 ldr r3, [pc, #584] ; (8002f08 ) + 8002cbe: 685b ldr r3, [r3, #4] + 8002cc0: f003 030c and.w r3, r3, #12 + 8002cc4: 2b04 cmp r3, #4 + 8002cc6: d00c beq.n 8002ce2 || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSE))) - 8000614: 4b8f ldr r3, [pc, #572] ; (8000854 ) - 8000616: 685b ldr r3, [r3, #4] - 8000618: f003 030c and.w r3, r3, #12 - 800061c: 2b08 cmp r3, #8 - 800061e: d112 bne.n 8000646 - 8000620: 4b8c ldr r3, [pc, #560] ; (8000854 ) - 8000622: 685b ldr r3, [r3, #4] - 8000624: f403 3380 and.w r3, r3, #65536 ; 0x10000 - 8000628: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 800062c: d10b bne.n 8000646 + 8002cc8: 4b8f ldr r3, [pc, #572] ; (8002f08 ) + 8002cca: 685b ldr r3, [r3, #4] + 8002ccc: f003 030c and.w r3, r3, #12 + 8002cd0: 2b08 cmp r3, #8 + 8002cd2: d112 bne.n 8002cfa + 8002cd4: 4b8c ldr r3, [pc, #560] ; (8002f08 ) + 8002cd6: 685b ldr r3, [r3, #4] + 8002cd8: f403 3380 and.w r3, r3, #65536 ; 0x10000 + 8002cdc: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 8002ce0: d10b bne.n 8002cfa { if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 800062e: 4b89 ldr r3, [pc, #548] ; (8000854 ) - 8000630: 681b ldr r3, [r3, #0] - 8000632: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 8000636: 2b00 cmp r3, #0 - 8000638: d06c beq.n 8000714 - 800063a: 687b ldr r3, [r7, #4] - 800063c: 685b ldr r3, [r3, #4] - 800063e: 2b00 cmp r3, #0 - 8000640: d168 bne.n 8000714 + 8002ce2: 4b89 ldr r3, [pc, #548] ; (8002f08 ) + 8002ce4: 681b ldr r3, [r3, #0] + 8002ce6: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 8002cea: 2b00 cmp r3, #0 + 8002cec: d06c beq.n 8002dc8 + 8002cee: 687b ldr r3, [r7, #4] + 8002cf0: 685b ldr r3, [r3, #4] + 8002cf2: 2b00 cmp r3, #0 + 8002cf4: d168 bne.n 8002dc8 { return HAL_ERROR; - 8000642: 2301 movs r3, #1 - 8000644: e246 b.n 8000ad4 + 8002cf6: 2301 movs r3, #1 + 8002cf8: e246 b.n 8003188 } } else { /* Set the new HSE configuration ---------------------------------------*/ __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); - 8000646: 687b ldr r3, [r7, #4] - 8000648: 685b ldr r3, [r3, #4] - 800064a: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 800064e: d106 bne.n 800065e - 8000650: 4b80 ldr r3, [pc, #512] ; (8000854 ) - 8000652: 681b ldr r3, [r3, #0] - 8000654: 4a7f ldr r2, [pc, #508] ; (8000854 ) - 8000656: f443 3380 orr.w r3, r3, #65536 ; 0x10000 - 800065a: 6013 str r3, [r2, #0] - 800065c: e02e b.n 80006bc - 800065e: 687b ldr r3, [r7, #4] - 8000660: 685b ldr r3, [r3, #4] - 8000662: 2b00 cmp r3, #0 - 8000664: d10c bne.n 8000680 - 8000666: 4b7b ldr r3, [pc, #492] ; (8000854 ) - 8000668: 681b ldr r3, [r3, #0] - 800066a: 4a7a ldr r2, [pc, #488] ; (8000854 ) - 800066c: f423 3380 bic.w r3, r3, #65536 ; 0x10000 - 8000670: 6013 str r3, [r2, #0] - 8000672: 4b78 ldr r3, [pc, #480] ; (8000854 ) - 8000674: 681b ldr r3, [r3, #0] - 8000676: 4a77 ldr r2, [pc, #476] ; (8000854 ) - 8000678: f423 2380 bic.w r3, r3, #262144 ; 0x40000 - 800067c: 6013 str r3, [r2, #0] - 800067e: e01d b.n 80006bc - 8000680: 687b ldr r3, [r7, #4] - 8000682: 685b ldr r3, [r3, #4] - 8000684: f5b3 2fa0 cmp.w r3, #327680 ; 0x50000 - 8000688: d10c bne.n 80006a4 - 800068a: 4b72 ldr r3, [pc, #456] ; (8000854 ) - 800068c: 681b ldr r3, [r3, #0] - 800068e: 4a71 ldr r2, [pc, #452] ; (8000854 ) - 8000690: f443 2380 orr.w r3, r3, #262144 ; 0x40000 - 8000694: 6013 str r3, [r2, #0] - 8000696: 4b6f ldr r3, [pc, #444] ; (8000854 ) - 8000698: 681b ldr r3, [r3, #0] - 800069a: 4a6e ldr r2, [pc, #440] ; (8000854 ) - 800069c: f443 3380 orr.w r3, r3, #65536 ; 0x10000 - 80006a0: 6013 str r3, [r2, #0] - 80006a2: e00b b.n 80006bc - 80006a4: 4b6b ldr r3, [pc, #428] ; (8000854 ) - 80006a6: 681b ldr r3, [r3, #0] - 80006a8: 4a6a ldr r2, [pc, #424] ; (8000854 ) - 80006aa: f423 3380 bic.w r3, r3, #65536 ; 0x10000 - 80006ae: 6013 str r3, [r2, #0] - 80006b0: 4b68 ldr r3, [pc, #416] ; (8000854 ) - 80006b2: 681b ldr r3, [r3, #0] - 80006b4: 4a67 ldr r2, [pc, #412] ; (8000854 ) - 80006b6: f423 2380 bic.w r3, r3, #262144 ; 0x40000 - 80006ba: 6013 str r3, [r2, #0] + 8002cfa: 687b ldr r3, [r7, #4] + 8002cfc: 685b ldr r3, [r3, #4] + 8002cfe: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 8002d02: d106 bne.n 8002d12 + 8002d04: 4b80 ldr r3, [pc, #512] ; (8002f08 ) + 8002d06: 681b ldr r3, [r3, #0] + 8002d08: 4a7f ldr r2, [pc, #508] ; (8002f08 ) + 8002d0a: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 8002d0e: 6013 str r3, [r2, #0] + 8002d10: e02e b.n 8002d70 + 8002d12: 687b ldr r3, [r7, #4] + 8002d14: 685b ldr r3, [r3, #4] + 8002d16: 2b00 cmp r3, #0 + 8002d18: d10c bne.n 8002d34 + 8002d1a: 4b7b ldr r3, [pc, #492] ; (8002f08 ) + 8002d1c: 681b ldr r3, [r3, #0] + 8002d1e: 4a7a ldr r2, [pc, #488] ; (8002f08 ) + 8002d20: f423 3380 bic.w r3, r3, #65536 ; 0x10000 + 8002d24: 6013 str r3, [r2, #0] + 8002d26: 4b78 ldr r3, [pc, #480] ; (8002f08 ) + 8002d28: 681b ldr r3, [r3, #0] + 8002d2a: 4a77 ldr r2, [pc, #476] ; (8002f08 ) + 8002d2c: f423 2380 bic.w r3, r3, #262144 ; 0x40000 + 8002d30: 6013 str r3, [r2, #0] + 8002d32: e01d b.n 8002d70 + 8002d34: 687b ldr r3, [r7, #4] + 8002d36: 685b ldr r3, [r3, #4] + 8002d38: f5b3 2fa0 cmp.w r3, #327680 ; 0x50000 + 8002d3c: d10c bne.n 8002d58 + 8002d3e: 4b72 ldr r3, [pc, #456] ; (8002f08 ) + 8002d40: 681b ldr r3, [r3, #0] + 8002d42: 4a71 ldr r2, [pc, #452] ; (8002f08 ) + 8002d44: f443 2380 orr.w r3, r3, #262144 ; 0x40000 + 8002d48: 6013 str r3, [r2, #0] + 8002d4a: 4b6f ldr r3, [pc, #444] ; (8002f08 ) + 8002d4c: 681b ldr r3, [r3, #0] + 8002d4e: 4a6e ldr r2, [pc, #440] ; (8002f08 ) + 8002d50: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 8002d54: 6013 str r3, [r2, #0] + 8002d56: e00b b.n 8002d70 + 8002d58: 4b6b ldr r3, [pc, #428] ; (8002f08 ) + 8002d5a: 681b ldr r3, [r3, #0] + 8002d5c: 4a6a ldr r2, [pc, #424] ; (8002f08 ) + 8002d5e: f423 3380 bic.w r3, r3, #65536 ; 0x10000 + 8002d62: 6013 str r3, [r2, #0] + 8002d64: 4b68 ldr r3, [pc, #416] ; (8002f08 ) + 8002d66: 681b ldr r3, [r3, #0] + 8002d68: 4a67 ldr r2, [pc, #412] ; (8002f08 ) + 8002d6a: f423 2380 bic.w r3, r3, #262144 ; 0x40000 + 8002d6e: 6013 str r3, [r2, #0] /* Check the HSE State */ if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF) - 80006bc: 687b ldr r3, [r7, #4] - 80006be: 685b ldr r3, [r3, #4] - 80006c0: 2b00 cmp r3, #0 - 80006c2: d013 beq.n 80006ec + 8002d70: 687b ldr r3, [r7, #4] + 8002d72: 685b ldr r3, [r3, #4] + 8002d74: 2b00 cmp r3, #0 + 8002d76: d013 beq.n 8002da0 { /* Get Start Tick */ tickstart = HAL_GetTick(); - 80006c4: f7ff fea2 bl 800040c - 80006c8: 6138 str r0, [r7, #16] + 8002d78: f7fd fcee bl 8000758 + 8002d7c: 6138 str r0, [r7, #16] /* Wait till HSE is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 80006ca: e008 b.n 80006de + 8002d7e: e008 b.n 8002d92 { if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 80006cc: f7ff fe9e bl 800040c - 80006d0: 4602 mov r2, r0 - 80006d2: 693b ldr r3, [r7, #16] - 80006d4: 1ad3 subs r3, r2, r3 - 80006d6: 2b64 cmp r3, #100 ; 0x64 - 80006d8: d901 bls.n 80006de + 8002d80: f7fd fcea bl 8000758 + 8002d84: 4602 mov r2, r0 + 8002d86: 693b ldr r3, [r7, #16] + 8002d88: 1ad3 subs r3, r2, r3 + 8002d8a: 2b64 cmp r3, #100 ; 0x64 + 8002d8c: d901 bls.n 8002d92 { return HAL_TIMEOUT; - 80006da: 2303 movs r3, #3 - 80006dc: e1fa b.n 8000ad4 + 8002d8e: 2303 movs r3, #3 + 8002d90: e1fa b.n 8003188 while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 80006de: 4b5d ldr r3, [pc, #372] ; (8000854 ) - 80006e0: 681b ldr r3, [r3, #0] - 80006e2: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 80006e6: 2b00 cmp r3, #0 - 80006e8: d0f0 beq.n 80006cc - 80006ea: e014 b.n 8000716 + 8002d92: 4b5d ldr r3, [pc, #372] ; (8002f08 ) + 8002d94: 681b ldr r3, [r3, #0] + 8002d96: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 8002d9a: 2b00 cmp r3, #0 + 8002d9c: d0f0 beq.n 8002d80 + 8002d9e: e014 b.n 8002dca } } else { /* Get Start Tick */ tickstart = HAL_GetTick(); - 80006ec: f7ff fe8e bl 800040c - 80006f0: 6138 str r0, [r7, #16] + 8002da0: f7fd fcda bl 8000758 + 8002da4: 6138 str r0, [r7, #16] /* Wait till HSE is disabled */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) - 80006f2: e008 b.n 8000706 + 8002da6: e008 b.n 8002dba { if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 80006f4: f7ff fe8a bl 800040c - 80006f8: 4602 mov r2, r0 - 80006fa: 693b ldr r3, [r7, #16] - 80006fc: 1ad3 subs r3, r2, r3 - 80006fe: 2b64 cmp r3, #100 ; 0x64 - 8000700: d901 bls.n 8000706 + 8002da8: f7fd fcd6 bl 8000758 + 8002dac: 4602 mov r2, r0 + 8002dae: 693b ldr r3, [r7, #16] + 8002db0: 1ad3 subs r3, r2, r3 + 8002db2: 2b64 cmp r3, #100 ; 0x64 + 8002db4: d901 bls.n 8002dba { return HAL_TIMEOUT; - 8000702: 2303 movs r3, #3 - 8000704: e1e6 b.n 8000ad4 + 8002db6: 2303 movs r3, #3 + 8002db8: e1e6 b.n 8003188 while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) - 8000706: 4b53 ldr r3, [pc, #332] ; (8000854 ) - 8000708: 681b ldr r3, [r3, #0] - 800070a: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 800070e: 2b00 cmp r3, #0 - 8000710: d1f0 bne.n 80006f4 - 8000712: e000 b.n 8000716 + 8002dba: 4b53 ldr r3, [pc, #332] ; (8002f08 ) + 8002dbc: 681b ldr r3, [r3, #0] + 8002dbe: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 8002dc2: 2b00 cmp r3, #0 + 8002dc4: d1f0 bne.n 8002da8 + 8002dc6: e000 b.n 8002dca if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 8000714: bf00 nop + 8002dc8: bf00 nop } } } } /*----------------------------- HSI Configuration --------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) - 8000716: 687b ldr r3, [r7, #4] - 8000718: 681b ldr r3, [r3, #0] - 800071a: f003 0302 and.w r3, r3, #2 - 800071e: 2b00 cmp r3, #0 - 8000720: d063 beq.n 80007ea + 8002dca: 687b ldr r3, [r7, #4] + 8002dcc: 681b ldr r3, [r3, #0] + 8002dce: f003 0302 and.w r3, r3, #2 + 8002dd2: 2b00 cmp r3, #0 + 8002dd4: d063 beq.n 8002e9e /* Check the parameters */ assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI) - 8000722: 4b4c ldr r3, [pc, #304] ; (8000854 ) - 8000724: 685b ldr r3, [r3, #4] - 8000726: f003 030c and.w r3, r3, #12 - 800072a: 2b00 cmp r3, #0 - 800072c: d00b beq.n 8000746 + 8002dd6: 4b4c ldr r3, [pc, #304] ; (8002f08 ) + 8002dd8: 685b ldr r3, [r3, #4] + 8002dda: f003 030c and.w r3, r3, #12 + 8002dde: 2b00 cmp r3, #0 + 8002de0: d00b beq.n 8002dfa || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSI_DIV2))) - 800072e: 4b49 ldr r3, [pc, #292] ; (8000854 ) - 8000730: 685b ldr r3, [r3, #4] - 8000732: f003 030c and.w r3, r3, #12 - 8000736: 2b08 cmp r3, #8 - 8000738: d11c bne.n 8000774 - 800073a: 4b46 ldr r3, [pc, #280] ; (8000854 ) - 800073c: 685b ldr r3, [r3, #4] - 800073e: f403 3380 and.w r3, r3, #65536 ; 0x10000 - 8000742: 2b00 cmp r3, #0 - 8000744: d116 bne.n 8000774 + 8002de2: 4b49 ldr r3, [pc, #292] ; (8002f08 ) + 8002de4: 685b ldr r3, [r3, #4] + 8002de6: f003 030c and.w r3, r3, #12 + 8002dea: 2b08 cmp r3, #8 + 8002dec: d11c bne.n 8002e28 + 8002dee: 4b46 ldr r3, [pc, #280] ; (8002f08 ) + 8002df0: 685b ldr r3, [r3, #4] + 8002df2: f403 3380 and.w r3, r3, #65536 ; 0x10000 + 8002df6: 2b00 cmp r3, #0 + 8002df8: d116 bne.n 8002e28 { /* When HSI is used as system clock it will not disabled */ if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) - 8000746: 4b43 ldr r3, [pc, #268] ; (8000854 ) - 8000748: 681b ldr r3, [r3, #0] - 800074a: f003 0302 and.w r3, r3, #2 - 800074e: 2b00 cmp r3, #0 - 8000750: d005 beq.n 800075e - 8000752: 687b ldr r3, [r7, #4] - 8000754: 691b ldr r3, [r3, #16] - 8000756: 2b01 cmp r3, #1 - 8000758: d001 beq.n 800075e + 8002dfa: 4b43 ldr r3, [pc, #268] ; (8002f08 ) + 8002dfc: 681b ldr r3, [r3, #0] + 8002dfe: f003 0302 and.w r3, r3, #2 + 8002e02: 2b00 cmp r3, #0 + 8002e04: d005 beq.n 8002e12 + 8002e06: 687b ldr r3, [r7, #4] + 8002e08: 691b ldr r3, [r3, #16] + 8002e0a: 2b01 cmp r3, #1 + 8002e0c: d001 beq.n 8002e12 { return HAL_ERROR; - 800075a: 2301 movs r3, #1 - 800075c: e1ba b.n 8000ad4 + 8002e0e: 2301 movs r3, #1 + 8002e10: e1ba b.n 8003188 } /* Otherwise, just the calibration is allowed */ else { /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 800075e: 4b3d ldr r3, [pc, #244] ; (8000854 ) - 8000760: 681b ldr r3, [r3, #0] - 8000762: f023 02f8 bic.w r2, r3, #248 ; 0xf8 - 8000766: 687b ldr r3, [r7, #4] - 8000768: 695b ldr r3, [r3, #20] - 800076a: 00db lsls r3, r3, #3 - 800076c: 4939 ldr r1, [pc, #228] ; (8000854 ) - 800076e: 4313 orrs r3, r2 - 8000770: 600b str r3, [r1, #0] + 8002e12: 4b3d ldr r3, [pc, #244] ; (8002f08 ) + 8002e14: 681b ldr r3, [r3, #0] + 8002e16: f023 02f8 bic.w r2, r3, #248 ; 0xf8 + 8002e1a: 687b ldr r3, [r7, #4] + 8002e1c: 695b ldr r3, [r3, #20] + 8002e1e: 00db lsls r3, r3, #3 + 8002e20: 4939 ldr r1, [pc, #228] ; (8002f08 ) + 8002e22: 4313 orrs r3, r2 + 8002e24: 600b str r3, [r1, #0] if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) - 8000772: e03a b.n 80007ea + 8002e26: e03a b.n 8002e9e } } else { /* Check the HSI State */ if (RCC_OscInitStruct->HSIState != RCC_HSI_OFF) - 8000774: 687b ldr r3, [r7, #4] - 8000776: 691b ldr r3, [r3, #16] - 8000778: 2b00 cmp r3, #0 - 800077a: d020 beq.n 80007be + 8002e28: 687b ldr r3, [r7, #4] + 8002e2a: 691b ldr r3, [r3, #16] + 8002e2c: 2b00 cmp r3, #0 + 8002e2e: d020 beq.n 8002e72 { /* Enable the Internal High Speed oscillator (HSI). */ __HAL_RCC_HSI_ENABLE(); - 800077c: 4b36 ldr r3, [pc, #216] ; (8000858 ) - 800077e: 2201 movs r2, #1 - 8000780: 601a str r2, [r3, #0] + 8002e30: 4b36 ldr r3, [pc, #216] ; (8002f0c ) + 8002e32: 2201 movs r2, #1 + 8002e34: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8000782: f7ff fe43 bl 800040c - 8000786: 6138 str r0, [r7, #16] + 8002e36: f7fd fc8f bl 8000758 + 8002e3a: 6138 str r0, [r7, #16] /* Wait till HSI is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 8000788: e008 b.n 800079c + 8002e3c: e008 b.n 8002e50 { if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 800078a: f7ff fe3f bl 800040c - 800078e: 4602 mov r2, r0 - 8000790: 693b ldr r3, [r7, #16] - 8000792: 1ad3 subs r3, r2, r3 - 8000794: 2b02 cmp r3, #2 - 8000796: d901 bls.n 800079c + 8002e3e: f7fd fc8b bl 8000758 + 8002e42: 4602 mov r2, r0 + 8002e44: 693b ldr r3, [r7, #16] + 8002e46: 1ad3 subs r3, r2, r3 + 8002e48: 2b02 cmp r3, #2 + 8002e4a: d901 bls.n 8002e50 { return HAL_TIMEOUT; - 8000798: 2303 movs r3, #3 - 800079a: e19b b.n 8000ad4 + 8002e4c: 2303 movs r3, #3 + 8002e4e: e19b b.n 8003188 while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 800079c: 4b2d ldr r3, [pc, #180] ; (8000854 ) - 800079e: 681b ldr r3, [r3, #0] - 80007a0: f003 0302 and.w r3, r3, #2 - 80007a4: 2b00 cmp r3, #0 - 80007a6: d0f0 beq.n 800078a + 8002e50: 4b2d ldr r3, [pc, #180] ; (8002f08 ) + 8002e52: 681b ldr r3, [r3, #0] + 8002e54: f003 0302 and.w r3, r3, #2 + 8002e58: 2b00 cmp r3, #0 + 8002e5a: d0f0 beq.n 8002e3e } } /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 80007a8: 4b2a ldr r3, [pc, #168] ; (8000854 ) - 80007aa: 681b ldr r3, [r3, #0] - 80007ac: f023 02f8 bic.w r2, r3, #248 ; 0xf8 - 80007b0: 687b ldr r3, [r7, #4] - 80007b2: 695b ldr r3, [r3, #20] - 80007b4: 00db lsls r3, r3, #3 - 80007b6: 4927 ldr r1, [pc, #156] ; (8000854 ) - 80007b8: 4313 orrs r3, r2 - 80007ba: 600b str r3, [r1, #0] - 80007bc: e015 b.n 80007ea + 8002e5c: 4b2a ldr r3, [pc, #168] ; (8002f08 ) + 8002e5e: 681b ldr r3, [r3, #0] + 8002e60: f023 02f8 bic.w r2, r3, #248 ; 0xf8 + 8002e64: 687b ldr r3, [r7, #4] + 8002e66: 695b ldr r3, [r3, #20] + 8002e68: 00db lsls r3, r3, #3 + 8002e6a: 4927 ldr r1, [pc, #156] ; (8002f08 ) + 8002e6c: 4313 orrs r3, r2 + 8002e6e: 600b str r3, [r1, #0] + 8002e70: e015 b.n 8002e9e } else { /* Disable the Internal High Speed oscillator (HSI). */ __HAL_RCC_HSI_DISABLE(); - 80007be: 4b26 ldr r3, [pc, #152] ; (8000858 ) - 80007c0: 2200 movs r2, #0 - 80007c2: 601a str r2, [r3, #0] + 8002e72: 4b26 ldr r3, [pc, #152] ; (8002f0c ) + 8002e74: 2200 movs r2, #0 + 8002e76: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 80007c4: f7ff fe22 bl 800040c - 80007c8: 6138 str r0, [r7, #16] + 8002e78: f7fd fc6e bl 8000758 + 8002e7c: 6138 str r0, [r7, #16] /* Wait till HSI is disabled */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) - 80007ca: e008 b.n 80007de + 8002e7e: e008 b.n 8002e92 { if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 80007cc: f7ff fe1e bl 800040c - 80007d0: 4602 mov r2, r0 - 80007d2: 693b ldr r3, [r7, #16] - 80007d4: 1ad3 subs r3, r2, r3 - 80007d6: 2b02 cmp r3, #2 - 80007d8: d901 bls.n 80007de + 8002e80: f7fd fc6a bl 8000758 + 8002e84: 4602 mov r2, r0 + 8002e86: 693b ldr r3, [r7, #16] + 8002e88: 1ad3 subs r3, r2, r3 + 8002e8a: 2b02 cmp r3, #2 + 8002e8c: d901 bls.n 8002e92 { return HAL_TIMEOUT; - 80007da: 2303 movs r3, #3 - 80007dc: e17a b.n 8000ad4 + 8002e8e: 2303 movs r3, #3 + 8002e90: e17a b.n 8003188 while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) - 80007de: 4b1d ldr r3, [pc, #116] ; (8000854 ) - 80007e0: 681b ldr r3, [r3, #0] - 80007e2: f003 0302 and.w r3, r3, #2 - 80007e6: 2b00 cmp r3, #0 - 80007e8: d1f0 bne.n 80007cc + 8002e92: 4b1d ldr r3, [pc, #116] ; (8002f08 ) + 8002e94: 681b ldr r3, [r3, #0] + 8002e96: f003 0302 and.w r3, r3, #2 + 8002e9a: 2b00 cmp r3, #0 + 8002e9c: d1f0 bne.n 8002e80 } } } } /*------------------------------ LSI Configuration -------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) - 80007ea: 687b ldr r3, [r7, #4] - 80007ec: 681b ldr r3, [r3, #0] - 80007ee: f003 0308 and.w r3, r3, #8 - 80007f2: 2b00 cmp r3, #0 - 80007f4: d03a beq.n 800086c + 8002e9e: 687b ldr r3, [r7, #4] + 8002ea0: 681b ldr r3, [r3, #0] + 8002ea2: f003 0308 and.w r3, r3, #8 + 8002ea6: 2b00 cmp r3, #0 + 8002ea8: d03a beq.n 8002f20 { /* Check the parameters */ assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); /* Check the LSI State */ if (RCC_OscInitStruct->LSIState != RCC_LSI_OFF) - 80007f6: 687b ldr r3, [r7, #4] - 80007f8: 699b ldr r3, [r3, #24] - 80007fa: 2b00 cmp r3, #0 - 80007fc: d019 beq.n 8000832 + 8002eaa: 687b ldr r3, [r7, #4] + 8002eac: 699b ldr r3, [r3, #24] + 8002eae: 2b00 cmp r3, #0 + 8002eb0: d019 beq.n 8002ee6 { /* Enable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_ENABLE(); - 80007fe: 4b17 ldr r3, [pc, #92] ; (800085c ) - 8000800: 2201 movs r2, #1 - 8000802: 601a str r2, [r3, #0] + 8002eb2: 4b17 ldr r3, [pc, #92] ; (8002f10 ) + 8002eb4: 2201 movs r2, #1 + 8002eb6: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8000804: f7ff fe02 bl 800040c - 8000808: 6138 str r0, [r7, #16] + 8002eb8: f7fd fc4e bl 8000758 + 8002ebc: 6138 str r0, [r7, #16] /* Wait till LSI is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) - 800080a: e008 b.n 800081e + 8002ebe: e008 b.n 8002ed2 { if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 800080c: f7ff fdfe bl 800040c - 8000810: 4602 mov r2, r0 - 8000812: 693b ldr r3, [r7, #16] - 8000814: 1ad3 subs r3, r2, r3 - 8000816: 2b02 cmp r3, #2 - 8000818: d901 bls.n 800081e + 8002ec0: f7fd fc4a bl 8000758 + 8002ec4: 4602 mov r2, r0 + 8002ec6: 693b ldr r3, [r7, #16] + 8002ec8: 1ad3 subs r3, r2, r3 + 8002eca: 2b02 cmp r3, #2 + 8002ecc: d901 bls.n 8002ed2 { return HAL_TIMEOUT; - 800081a: 2303 movs r3, #3 - 800081c: e15a b.n 8000ad4 + 8002ece: 2303 movs r3, #3 + 8002ed0: e15a b.n 8003188 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) - 800081e: 4b0d ldr r3, [pc, #52] ; (8000854 ) - 8000820: 6a5b ldr r3, [r3, #36] ; 0x24 - 8000822: f003 0302 and.w r3, r3, #2 - 8000826: 2b00 cmp r3, #0 - 8000828: d0f0 beq.n 800080c + 8002ed2: 4b0d ldr r3, [pc, #52] ; (8002f08 ) + 8002ed4: 6a5b ldr r3, [r3, #36] ; 0x24 + 8002ed6: f003 0302 and.w r3, r3, #2 + 8002eda: 2b00 cmp r3, #0 + 8002edc: d0f0 beq.n 8002ec0 } } /* To have a fully stabilized clock in the specified range, a software delay of 1ms should be added.*/ RCC_Delay(1); - 800082a: 2001 movs r0, #1 - 800082c: f000 faa6 bl 8000d7c - 8000830: e01c b.n 800086c + 8002ede: 2001 movs r0, #1 + 8002ee0: f000 fad8 bl 8003494 + 8002ee4: e01c b.n 8002f20 } else { /* Disable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_DISABLE(); - 8000832: 4b0a ldr r3, [pc, #40] ; (800085c ) - 8000834: 2200 movs r2, #0 - 8000836: 601a str r2, [r3, #0] + 8002ee6: 4b0a ldr r3, [pc, #40] ; (8002f10 ) + 8002ee8: 2200 movs r2, #0 + 8002eea: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8000838: f7ff fde8 bl 800040c - 800083c: 6138 str r0, [r7, #16] + 8002eec: f7fd fc34 bl 8000758 + 8002ef0: 6138 str r0, [r7, #16] /* Wait till LSI is disabled */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) - 800083e: e00f b.n 8000860 + 8002ef2: e00f b.n 8002f14 { if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 8000840: f7ff fde4 bl 800040c - 8000844: 4602 mov r2, r0 - 8000846: 693b ldr r3, [r7, #16] - 8000848: 1ad3 subs r3, r2, r3 - 800084a: 2b02 cmp r3, #2 - 800084c: d908 bls.n 8000860 + 8002ef4: f7fd fc30 bl 8000758 + 8002ef8: 4602 mov r2, r0 + 8002efa: 693b ldr r3, [r7, #16] + 8002efc: 1ad3 subs r3, r2, r3 + 8002efe: 2b02 cmp r3, #2 + 8002f00: d908 bls.n 8002f14 { return HAL_TIMEOUT; - 800084e: 2303 movs r3, #3 - 8000850: e140 b.n 8000ad4 - 8000852: bf00 nop - 8000854: 40021000 .word 0x40021000 - 8000858: 42420000 .word 0x42420000 - 800085c: 42420480 .word 0x42420480 + 8002f02: 2303 movs r3, #3 + 8002f04: e140 b.n 8003188 + 8002f06: bf00 nop + 8002f08: 40021000 .word 0x40021000 + 8002f0c: 42420000 .word 0x42420000 + 8002f10: 42420480 .word 0x42420480 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) - 8000860: 4b9e ldr r3, [pc, #632] ; (8000adc ) - 8000862: 6a5b ldr r3, [r3, #36] ; 0x24 - 8000864: f003 0302 and.w r3, r3, #2 - 8000868: 2b00 cmp r3, #0 - 800086a: d1e9 bne.n 8000840 + 8002f14: 4b9e ldr r3, [pc, #632] ; (8003190 ) + 8002f16: 6a5b ldr r3, [r3, #36] ; 0x24 + 8002f18: f003 0302 and.w r3, r3, #2 + 8002f1c: 2b00 cmp r3, #0 + 8002f1e: d1e9 bne.n 8002ef4 } } } } /*------------------------------ LSE Configuration -------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) - 800086c: 687b ldr r3, [r7, #4] - 800086e: 681b ldr r3, [r3, #0] - 8000870: f003 0304 and.w r3, r3, #4 - 8000874: 2b00 cmp r3, #0 - 8000876: f000 80a6 beq.w 80009c6 + 8002f20: 687b ldr r3, [r7, #4] + 8002f22: 681b ldr r3, [r3, #0] + 8002f24: f003 0304 and.w r3, r3, #4 + 8002f28: 2b00 cmp r3, #0 + 8002f2a: f000 80a6 beq.w 800307a { FlagStatus pwrclkchanged = RESET; - 800087a: 2300 movs r3, #0 - 800087c: 75fb strb r3, [r7, #23] + 8002f2e: 2300 movs r3, #0 + 8002f30: 75fb strb r3, [r7, #23] /* Check the parameters */ assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); /* Update LSE configuration in Backup Domain control register */ /* Requires to enable write access to Backup Domain of necessary */ if (__HAL_RCC_PWR_IS_CLK_DISABLED()) - 800087e: 4b97 ldr r3, [pc, #604] ; (8000adc ) - 8000880: 69db ldr r3, [r3, #28] - 8000882: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 - 8000886: 2b00 cmp r3, #0 - 8000888: d10d bne.n 80008a6 + 8002f32: 4b97 ldr r3, [pc, #604] ; (8003190 ) + 8002f34: 69db ldr r3, [r3, #28] + 8002f36: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 + 8002f3a: 2b00 cmp r3, #0 + 8002f3c: d10d bne.n 8002f5a { __HAL_RCC_PWR_CLK_ENABLE(); - 800088a: 4b94 ldr r3, [pc, #592] ; (8000adc ) - 800088c: 69db ldr r3, [r3, #28] - 800088e: 4a93 ldr r2, [pc, #588] ; (8000adc ) - 8000890: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 - 8000894: 61d3 str r3, [r2, #28] - 8000896: 4b91 ldr r3, [pc, #580] ; (8000adc ) - 8000898: 69db ldr r3, [r3, #28] - 800089a: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 - 800089e: 60bb str r3, [r7, #8] - 80008a0: 68bb ldr r3, [r7, #8] + 8002f3e: 4b94 ldr r3, [pc, #592] ; (8003190 ) + 8002f40: 69db ldr r3, [r3, #28] + 8002f42: 4a93 ldr r2, [pc, #588] ; (8003190 ) + 8002f44: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 + 8002f48: 61d3 str r3, [r2, #28] + 8002f4a: 4b91 ldr r3, [pc, #580] ; (8003190 ) + 8002f4c: 69db ldr r3, [r3, #28] + 8002f4e: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 + 8002f52: 60bb str r3, [r7, #8] + 8002f54: 68bb ldr r3, [r7, #8] pwrclkchanged = SET; - 80008a2: 2301 movs r3, #1 - 80008a4: 75fb strb r3, [r7, #23] + 8002f56: 2301 movs r3, #1 + 8002f58: 75fb strb r3, [r7, #23] } if (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 80008a6: 4b8e ldr r3, [pc, #568] ; (8000ae0 ) - 80008a8: 681b ldr r3, [r3, #0] - 80008aa: f403 7380 and.w r3, r3, #256 ; 0x100 - 80008ae: 2b00 cmp r3, #0 - 80008b0: d118 bne.n 80008e4 + 8002f5a: 4b8e ldr r3, [pc, #568] ; (8003194 ) + 8002f5c: 681b ldr r3, [r3, #0] + 8002f5e: f403 7380 and.w r3, r3, #256 ; 0x100 + 8002f62: 2b00 cmp r3, #0 + 8002f64: d118 bne.n 8002f98 { /* Enable write access to Backup domain */ SET_BIT(PWR->CR, PWR_CR_DBP); - 80008b2: 4b8b ldr r3, [pc, #556] ; (8000ae0 ) - 80008b4: 681b ldr r3, [r3, #0] - 80008b6: 4a8a ldr r2, [pc, #552] ; (8000ae0 ) - 80008b8: f443 7380 orr.w r3, r3, #256 ; 0x100 - 80008bc: 6013 str r3, [r2, #0] + 8002f66: 4b8b ldr r3, [pc, #556] ; (8003194 ) + 8002f68: 681b ldr r3, [r3, #0] + 8002f6a: 4a8a ldr r2, [pc, #552] ; (8003194 ) + 8002f6c: f443 7380 orr.w r3, r3, #256 ; 0x100 + 8002f70: 6013 str r3, [r2, #0] /* Wait for Backup domain Write protection disable */ tickstart = HAL_GetTick(); - 80008be: f7ff fda5 bl 800040c - 80008c2: 6138 str r0, [r7, #16] + 8002f72: f7fd fbf1 bl 8000758 + 8002f76: 6138 str r0, [r7, #16] while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 80008c4: e008 b.n 80008d8 + 8002f78: e008 b.n 8002f8c { if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 80008c6: f7ff fda1 bl 800040c - 80008ca: 4602 mov r2, r0 - 80008cc: 693b ldr r3, [r7, #16] - 80008ce: 1ad3 subs r3, r2, r3 - 80008d0: 2b64 cmp r3, #100 ; 0x64 - 80008d2: d901 bls.n 80008d8 + 8002f7a: f7fd fbed bl 8000758 + 8002f7e: 4602 mov r2, r0 + 8002f80: 693b ldr r3, [r7, #16] + 8002f82: 1ad3 subs r3, r2, r3 + 8002f84: 2b64 cmp r3, #100 ; 0x64 + 8002f86: d901 bls.n 8002f8c { return HAL_TIMEOUT; - 80008d4: 2303 movs r3, #3 - 80008d6: e0fd b.n 8000ad4 + 8002f88: 2303 movs r3, #3 + 8002f8a: e0fd b.n 8003188 while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 80008d8: 4b81 ldr r3, [pc, #516] ; (8000ae0 ) - 80008da: 681b ldr r3, [r3, #0] - 80008dc: f403 7380 and.w r3, r3, #256 ; 0x100 - 80008e0: 2b00 cmp r3, #0 - 80008e2: d0f0 beq.n 80008c6 + 8002f8c: 4b81 ldr r3, [pc, #516] ; (8003194 ) + 8002f8e: 681b ldr r3, [r3, #0] + 8002f90: f403 7380 and.w r3, r3, #256 ; 0x100 + 8002f94: 2b00 cmp r3, #0 + 8002f96: d0f0 beq.n 8002f7a } } } /* Set the new LSE configuration -----------------------------------------*/ __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); - 80008e4: 687b ldr r3, [r7, #4] - 80008e6: 68db ldr r3, [r3, #12] - 80008e8: 2b01 cmp r3, #1 - 80008ea: d106 bne.n 80008fa - 80008ec: 4b7b ldr r3, [pc, #492] ; (8000adc ) - 80008ee: 6a1b ldr r3, [r3, #32] - 80008f0: 4a7a ldr r2, [pc, #488] ; (8000adc ) - 80008f2: f043 0301 orr.w r3, r3, #1 - 80008f6: 6213 str r3, [r2, #32] - 80008f8: e02d b.n 8000956 - 80008fa: 687b ldr r3, [r7, #4] - 80008fc: 68db ldr r3, [r3, #12] - 80008fe: 2b00 cmp r3, #0 - 8000900: d10c bne.n 800091c - 8000902: 4b76 ldr r3, [pc, #472] ; (8000adc ) - 8000904: 6a1b ldr r3, [r3, #32] - 8000906: 4a75 ldr r2, [pc, #468] ; (8000adc ) - 8000908: f023 0301 bic.w r3, r3, #1 - 800090c: 6213 str r3, [r2, #32] - 800090e: 4b73 ldr r3, [pc, #460] ; (8000adc ) - 8000910: 6a1b ldr r3, [r3, #32] - 8000912: 4a72 ldr r2, [pc, #456] ; (8000adc ) - 8000914: f023 0304 bic.w r3, r3, #4 - 8000918: 6213 str r3, [r2, #32] - 800091a: e01c b.n 8000956 - 800091c: 687b ldr r3, [r7, #4] - 800091e: 68db ldr r3, [r3, #12] - 8000920: 2b05 cmp r3, #5 - 8000922: d10c bne.n 800093e - 8000924: 4b6d ldr r3, [pc, #436] ; (8000adc ) - 8000926: 6a1b ldr r3, [r3, #32] - 8000928: 4a6c ldr r2, [pc, #432] ; (8000adc ) - 800092a: f043 0304 orr.w r3, r3, #4 - 800092e: 6213 str r3, [r2, #32] - 8000930: 4b6a ldr r3, [pc, #424] ; (8000adc ) - 8000932: 6a1b ldr r3, [r3, #32] - 8000934: 4a69 ldr r2, [pc, #420] ; (8000adc ) - 8000936: f043 0301 orr.w r3, r3, #1 - 800093a: 6213 str r3, [r2, #32] - 800093c: e00b b.n 8000956 - 800093e: 4b67 ldr r3, [pc, #412] ; (8000adc ) - 8000940: 6a1b ldr r3, [r3, #32] - 8000942: 4a66 ldr r2, [pc, #408] ; (8000adc ) - 8000944: f023 0301 bic.w r3, r3, #1 - 8000948: 6213 str r3, [r2, #32] - 800094a: 4b64 ldr r3, [pc, #400] ; (8000adc ) - 800094c: 6a1b ldr r3, [r3, #32] - 800094e: 4a63 ldr r2, [pc, #396] ; (8000adc ) - 8000950: f023 0304 bic.w r3, r3, #4 - 8000954: 6213 str r3, [r2, #32] + 8002f98: 687b ldr r3, [r7, #4] + 8002f9a: 68db ldr r3, [r3, #12] + 8002f9c: 2b01 cmp r3, #1 + 8002f9e: d106 bne.n 8002fae + 8002fa0: 4b7b ldr r3, [pc, #492] ; (8003190 ) + 8002fa2: 6a1b ldr r3, [r3, #32] + 8002fa4: 4a7a ldr r2, [pc, #488] ; (8003190 ) + 8002fa6: f043 0301 orr.w r3, r3, #1 + 8002faa: 6213 str r3, [r2, #32] + 8002fac: e02d b.n 800300a + 8002fae: 687b ldr r3, [r7, #4] + 8002fb0: 68db ldr r3, [r3, #12] + 8002fb2: 2b00 cmp r3, #0 + 8002fb4: d10c bne.n 8002fd0 + 8002fb6: 4b76 ldr r3, [pc, #472] ; (8003190 ) + 8002fb8: 6a1b ldr r3, [r3, #32] + 8002fba: 4a75 ldr r2, [pc, #468] ; (8003190 ) + 8002fbc: f023 0301 bic.w r3, r3, #1 + 8002fc0: 6213 str r3, [r2, #32] + 8002fc2: 4b73 ldr r3, [pc, #460] ; (8003190 ) + 8002fc4: 6a1b ldr r3, [r3, #32] + 8002fc6: 4a72 ldr r2, [pc, #456] ; (8003190 ) + 8002fc8: f023 0304 bic.w r3, r3, #4 + 8002fcc: 6213 str r3, [r2, #32] + 8002fce: e01c b.n 800300a + 8002fd0: 687b ldr r3, [r7, #4] + 8002fd2: 68db ldr r3, [r3, #12] + 8002fd4: 2b05 cmp r3, #5 + 8002fd6: d10c bne.n 8002ff2 + 8002fd8: 4b6d ldr r3, [pc, #436] ; (8003190 ) + 8002fda: 6a1b ldr r3, [r3, #32] + 8002fdc: 4a6c ldr r2, [pc, #432] ; (8003190 ) + 8002fde: f043 0304 orr.w r3, r3, #4 + 8002fe2: 6213 str r3, [r2, #32] + 8002fe4: 4b6a ldr r3, [pc, #424] ; (8003190 ) + 8002fe6: 6a1b ldr r3, [r3, #32] + 8002fe8: 4a69 ldr r2, [pc, #420] ; (8003190 ) + 8002fea: f043 0301 orr.w r3, r3, #1 + 8002fee: 6213 str r3, [r2, #32] + 8002ff0: e00b b.n 800300a + 8002ff2: 4b67 ldr r3, [pc, #412] ; (8003190 ) + 8002ff4: 6a1b ldr r3, [r3, #32] + 8002ff6: 4a66 ldr r2, [pc, #408] ; (8003190 ) + 8002ff8: f023 0301 bic.w r3, r3, #1 + 8002ffc: 6213 str r3, [r2, #32] + 8002ffe: 4b64 ldr r3, [pc, #400] ; (8003190 ) + 8003000: 6a1b ldr r3, [r3, #32] + 8003002: 4a63 ldr r2, [pc, #396] ; (8003190 ) + 8003004: f023 0304 bic.w r3, r3, #4 + 8003008: 6213 str r3, [r2, #32] /* Check the LSE State */ if (RCC_OscInitStruct->LSEState != RCC_LSE_OFF) - 8000956: 687b ldr r3, [r7, #4] - 8000958: 68db ldr r3, [r3, #12] - 800095a: 2b00 cmp r3, #0 - 800095c: d015 beq.n 800098a + 800300a: 687b ldr r3, [r7, #4] + 800300c: 68db ldr r3, [r3, #12] + 800300e: 2b00 cmp r3, #0 + 8003010: d015 beq.n 800303e { /* Get Start Tick */ tickstart = HAL_GetTick(); - 800095e: f7ff fd55 bl 800040c - 8000962: 6138 str r0, [r7, #16] + 8003012: f7fd fba1 bl 8000758 + 8003016: 6138 str r0, [r7, #16] /* Wait till LSE is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 8000964: e00a b.n 800097c + 8003018: e00a b.n 8003030 { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8000966: f7ff fd51 bl 800040c - 800096a: 4602 mov r2, r0 - 800096c: 693b ldr r3, [r7, #16] - 800096e: 1ad3 subs r3, r2, r3 - 8000970: f241 3288 movw r2, #5000 ; 0x1388 - 8000974: 4293 cmp r3, r2 - 8000976: d901 bls.n 800097c + 800301a: f7fd fb9d bl 8000758 + 800301e: 4602 mov r2, r0 + 8003020: 693b ldr r3, [r7, #16] + 8003022: 1ad3 subs r3, r2, r3 + 8003024: f241 3288 movw r2, #5000 ; 0x1388 + 8003028: 4293 cmp r3, r2 + 800302a: d901 bls.n 8003030 { return HAL_TIMEOUT; - 8000978: 2303 movs r3, #3 - 800097a: e0ab b.n 8000ad4 + 800302c: 2303 movs r3, #3 + 800302e: e0ab b.n 8003188 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 800097c: 4b57 ldr r3, [pc, #348] ; (8000adc ) - 800097e: 6a1b ldr r3, [r3, #32] - 8000980: f003 0302 and.w r3, r3, #2 - 8000984: 2b00 cmp r3, #0 - 8000986: d0ee beq.n 8000966 - 8000988: e014 b.n 80009b4 + 8003030: 4b57 ldr r3, [pc, #348] ; (8003190 ) + 8003032: 6a1b ldr r3, [r3, #32] + 8003034: f003 0302 and.w r3, r3, #2 + 8003038: 2b00 cmp r3, #0 + 800303a: d0ee beq.n 800301a + 800303c: e014 b.n 8003068 } } else { /* Get Start Tick */ tickstart = HAL_GetTick(); - 800098a: f7ff fd3f bl 800040c - 800098e: 6138 str r0, [r7, #16] + 800303e: f7fd fb8b bl 8000758 + 8003042: 6138 str r0, [r7, #16] /* Wait till LSE is disabled */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) - 8000990: e00a b.n 80009a8 + 8003044: e00a b.n 800305c { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8000992: f7ff fd3b bl 800040c - 8000996: 4602 mov r2, r0 - 8000998: 693b ldr r3, [r7, #16] - 800099a: 1ad3 subs r3, r2, r3 - 800099c: f241 3288 movw r2, #5000 ; 0x1388 - 80009a0: 4293 cmp r3, r2 - 80009a2: d901 bls.n 80009a8 + 8003046: f7fd fb87 bl 8000758 + 800304a: 4602 mov r2, r0 + 800304c: 693b ldr r3, [r7, #16] + 800304e: 1ad3 subs r3, r2, r3 + 8003050: f241 3288 movw r2, #5000 ; 0x1388 + 8003054: 4293 cmp r3, r2 + 8003056: d901 bls.n 800305c { return HAL_TIMEOUT; - 80009a4: 2303 movs r3, #3 - 80009a6: e095 b.n 8000ad4 + 8003058: 2303 movs r3, #3 + 800305a: e095 b.n 8003188 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) - 80009a8: 4b4c ldr r3, [pc, #304] ; (8000adc ) - 80009aa: 6a1b ldr r3, [r3, #32] - 80009ac: f003 0302 and.w r3, r3, #2 - 80009b0: 2b00 cmp r3, #0 - 80009b2: d1ee bne.n 8000992 + 800305c: 4b4c ldr r3, [pc, #304] ; (8003190 ) + 800305e: 6a1b ldr r3, [r3, #32] + 8003060: f003 0302 and.w r3, r3, #2 + 8003064: 2b00 cmp r3, #0 + 8003066: d1ee bne.n 8003046 } } } /* Require to disable power clock if necessary */ if (pwrclkchanged == SET) - 80009b4: 7dfb ldrb r3, [r7, #23] - 80009b6: 2b01 cmp r3, #1 - 80009b8: d105 bne.n 80009c6 + 8003068: 7dfb ldrb r3, [r7, #23] + 800306a: 2b01 cmp r3, #1 + 800306c: d105 bne.n 800307a { __HAL_RCC_PWR_CLK_DISABLE(); - 80009ba: 4b48 ldr r3, [pc, #288] ; (8000adc ) - 80009bc: 69db ldr r3, [r3, #28] - 80009be: 4a47 ldr r2, [pc, #284] ; (8000adc ) - 80009c0: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 - 80009c4: 61d3 str r3, [r2, #28] + 800306e: 4b48 ldr r3, [pc, #288] ; (8003190 ) + 8003070: 69db ldr r3, [r3, #28] + 8003072: 4a47 ldr r2, [pc, #284] ; (8003190 ) + 8003074: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 + 8003078: 61d3 str r3, [r2, #28] #endif /* RCC_CR_PLL2ON */ /*-------------------------------- PLL Configuration -----------------------*/ /* Check the parameters */ assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) - 80009c6: 687b ldr r3, [r7, #4] - 80009c8: 69db ldr r3, [r3, #28] - 80009ca: 2b00 cmp r3, #0 - 80009cc: f000 8081 beq.w 8000ad2 + 800307a: 687b ldr r3, [r7, #4] + 800307c: 69db ldr r3, [r3, #28] + 800307e: 2b00 cmp r3, #0 + 8003080: f000 8081 beq.w 8003186 { /* Check if the PLL is used as system clock or not */ if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) - 80009d0: 4b42 ldr r3, [pc, #264] ; (8000adc ) - 80009d2: 685b ldr r3, [r3, #4] - 80009d4: f003 030c and.w r3, r3, #12 - 80009d8: 2b08 cmp r3, #8 - 80009da: d061 beq.n 8000aa0 + 8003084: 4b42 ldr r3, [pc, #264] ; (8003190 ) + 8003086: 685b ldr r3, [r3, #4] + 8003088: f003 030c and.w r3, r3, #12 + 800308c: 2b08 cmp r3, #8 + 800308e: d061 beq.n 8003154 { if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) - 80009dc: 687b ldr r3, [r7, #4] - 80009de: 69db ldr r3, [r3, #28] - 80009e0: 2b02 cmp r3, #2 - 80009e2: d146 bne.n 8000a72 + 8003090: 687b ldr r3, [r7, #4] + 8003092: 69db ldr r3, [r3, #28] + 8003094: 2b02 cmp r3, #2 + 8003096: d146 bne.n 8003126 /* Check the parameters */ assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL)); /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); - 80009e4: 4b3f ldr r3, [pc, #252] ; (8000ae4 ) - 80009e6: 2200 movs r2, #0 - 80009e8: 601a str r2, [r3, #0] + 8003098: 4b3f ldr r3, [pc, #252] ; (8003198 ) + 800309a: 2200 movs r2, #0 + 800309c: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 80009ea: f7ff fd0f bl 800040c - 80009ee: 6138 str r0, [r7, #16] + 800309e: f7fd fb5b bl 8000758 + 80030a2: 6138 str r0, [r7, #16] /* Wait till PLL is disabled */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 80009f0: e008 b.n 8000a04 + 80030a4: e008 b.n 80030b8 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 80009f2: f7ff fd0b bl 800040c - 80009f6: 4602 mov r2, r0 - 80009f8: 693b ldr r3, [r7, #16] - 80009fa: 1ad3 subs r3, r2, r3 - 80009fc: 2b02 cmp r3, #2 - 80009fe: d901 bls.n 8000a04 + 80030a6: f7fd fb57 bl 8000758 + 80030aa: 4602 mov r2, r0 + 80030ac: 693b ldr r3, [r7, #16] + 80030ae: 1ad3 subs r3, r2, r3 + 80030b0: 2b02 cmp r3, #2 + 80030b2: d901 bls.n 80030b8 { return HAL_TIMEOUT; - 8000a00: 2303 movs r3, #3 - 8000a02: e067 b.n 8000ad4 + 80030b4: 2303 movs r3, #3 + 80030b6: e067 b.n 8003188 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 8000a04: 4b35 ldr r3, [pc, #212] ; (8000adc ) - 8000a06: 681b ldr r3, [r3, #0] - 8000a08: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 - 8000a0c: 2b00 cmp r3, #0 - 8000a0e: d1f0 bne.n 80009f2 + 80030b8: 4b35 ldr r3, [pc, #212] ; (8003190 ) + 80030ba: 681b ldr r3, [r3, #0] + 80030bc: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 + 80030c0: 2b00 cmp r3, #0 + 80030c2: d1f0 bne.n 80030a6 } } /* Configure the HSE prediv factor --------------------------------*/ /* It can be written only when the PLL is disabled. Not used in PLL source is different than HSE */ if (RCC_OscInitStruct->PLL.PLLSource == RCC_PLLSOURCE_HSE) - 8000a10: 687b ldr r3, [r7, #4] - 8000a12: 6a1b ldr r3, [r3, #32] - 8000a14: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 8000a18: d108 bne.n 8000a2c + 80030c4: 687b ldr r3, [r7, #4] + 80030c6: 6a1b ldr r3, [r3, #32] + 80030c8: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 80030cc: d108 bne.n 80030e0 /* Set PREDIV1 source */ SET_BIT(RCC->CFGR2, RCC_OscInitStruct->Prediv1Source); #endif /* RCC_CFGR2_PREDIV1SRC */ /* Set PREDIV1 Value */ __HAL_RCC_HSE_PREDIV_CONFIG(RCC_OscInitStruct->HSEPredivValue); - 8000a1a: 4b30 ldr r3, [pc, #192] ; (8000adc ) - 8000a1c: 685b ldr r3, [r3, #4] - 8000a1e: f423 3200 bic.w r2, r3, #131072 ; 0x20000 - 8000a22: 687b ldr r3, [r7, #4] - 8000a24: 689b ldr r3, [r3, #8] - 8000a26: 492d ldr r1, [pc, #180] ; (8000adc ) - 8000a28: 4313 orrs r3, r2 - 8000a2a: 604b str r3, [r1, #4] + 80030ce: 4b30 ldr r3, [pc, #192] ; (8003190 ) + 80030d0: 685b ldr r3, [r3, #4] + 80030d2: f423 3200 bic.w r2, r3, #131072 ; 0x20000 + 80030d6: 687b ldr r3, [r7, #4] + 80030d8: 689b ldr r3, [r3, #8] + 80030da: 492d ldr r1, [pc, #180] ; (8003190 ) + 80030dc: 4313 orrs r3, r2 + 80030de: 604b str r3, [r1, #4] } /* Configure the main PLL clock source and multiplication factors. */ __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, - 8000a2c: 4b2b ldr r3, [pc, #172] ; (8000adc ) - 8000a2e: 685b ldr r3, [r3, #4] - 8000a30: f423 1274 bic.w r2, r3, #3997696 ; 0x3d0000 - 8000a34: 687b ldr r3, [r7, #4] - 8000a36: 6a19 ldr r1, [r3, #32] - 8000a38: 687b ldr r3, [r7, #4] - 8000a3a: 6a5b ldr r3, [r3, #36] ; 0x24 - 8000a3c: 430b orrs r3, r1 - 8000a3e: 4927 ldr r1, [pc, #156] ; (8000adc ) - 8000a40: 4313 orrs r3, r2 - 8000a42: 604b str r3, [r1, #4] + 80030e0: 4b2b ldr r3, [pc, #172] ; (8003190 ) + 80030e2: 685b ldr r3, [r3, #4] + 80030e4: f423 1274 bic.w r2, r3, #3997696 ; 0x3d0000 + 80030e8: 687b ldr r3, [r7, #4] + 80030ea: 6a19 ldr r1, [r3, #32] + 80030ec: 687b ldr r3, [r7, #4] + 80030ee: 6a5b ldr r3, [r3, #36] ; 0x24 + 80030f0: 430b orrs r3, r1 + 80030f2: 4927 ldr r1, [pc, #156] ; (8003190 ) + 80030f4: 4313 orrs r3, r2 + 80030f6: 604b str r3, [r1, #4] RCC_OscInitStruct->PLL.PLLMUL); /* Enable the main PLL. */ __HAL_RCC_PLL_ENABLE(); - 8000a44: 4b27 ldr r3, [pc, #156] ; (8000ae4 ) - 8000a46: 2201 movs r2, #1 - 8000a48: 601a str r2, [r3, #0] + 80030f8: 4b27 ldr r3, [pc, #156] ; (8003198 ) + 80030fa: 2201 movs r2, #1 + 80030fc: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8000a4a: f7ff fcdf bl 800040c - 8000a4e: 6138 str r0, [r7, #16] + 80030fe: f7fd fb2b bl 8000758 + 8003102: 6138 str r0, [r7, #16] /* Wait till PLL is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 8000a50: e008 b.n 8000a64 + 8003104: e008 b.n 8003118 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8000a52: f7ff fcdb bl 800040c - 8000a56: 4602 mov r2, r0 - 8000a58: 693b ldr r3, [r7, #16] - 8000a5a: 1ad3 subs r3, r2, r3 - 8000a5c: 2b02 cmp r3, #2 - 8000a5e: d901 bls.n 8000a64 + 8003106: f7fd fb27 bl 8000758 + 800310a: 4602 mov r2, r0 + 800310c: 693b ldr r3, [r7, #16] + 800310e: 1ad3 subs r3, r2, r3 + 8003110: 2b02 cmp r3, #2 + 8003112: d901 bls.n 8003118 { return HAL_TIMEOUT; - 8000a60: 2303 movs r3, #3 - 8000a62: e037 b.n 8000ad4 + 8003114: 2303 movs r3, #3 + 8003116: e037 b.n 8003188 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 8000a64: 4b1d ldr r3, [pc, #116] ; (8000adc ) - 8000a66: 681b ldr r3, [r3, #0] - 8000a68: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 - 8000a6c: 2b00 cmp r3, #0 - 8000a6e: d0f0 beq.n 8000a52 - 8000a70: e02f b.n 8000ad2 + 8003118: 4b1d ldr r3, [pc, #116] ; (8003190 ) + 800311a: 681b ldr r3, [r3, #0] + 800311c: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 + 8003120: 2b00 cmp r3, #0 + 8003122: d0f0 beq.n 8003106 + 8003124: e02f b.n 8003186 } } else { /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); - 8000a72: 4b1c ldr r3, [pc, #112] ; (8000ae4 ) - 8000a74: 2200 movs r2, #0 - 8000a76: 601a str r2, [r3, #0] + 8003126: 4b1c ldr r3, [pc, #112] ; (8003198 ) + 8003128: 2200 movs r2, #0 + 800312a: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8000a78: f7ff fcc8 bl 800040c - 8000a7c: 6138 str r0, [r7, #16] + 800312c: f7fd fb14 bl 8000758 + 8003130: 6138 str r0, [r7, #16] /* Wait till PLL is disabled */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 8000a7e: e008 b.n 8000a92 + 8003132: e008 b.n 8003146 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8000a80: f7ff fcc4 bl 800040c - 8000a84: 4602 mov r2, r0 - 8000a86: 693b ldr r3, [r7, #16] - 8000a88: 1ad3 subs r3, r2, r3 - 8000a8a: 2b02 cmp r3, #2 - 8000a8c: d901 bls.n 8000a92 + 8003134: f7fd fb10 bl 8000758 + 8003138: 4602 mov r2, r0 + 800313a: 693b ldr r3, [r7, #16] + 800313c: 1ad3 subs r3, r2, r3 + 800313e: 2b02 cmp r3, #2 + 8003140: d901 bls.n 8003146 { return HAL_TIMEOUT; - 8000a8e: 2303 movs r3, #3 - 8000a90: e020 b.n 8000ad4 + 8003142: 2303 movs r3, #3 + 8003144: e020 b.n 8003188 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 8000a92: 4b12 ldr r3, [pc, #72] ; (8000adc ) - 8000a94: 681b ldr r3, [r3, #0] - 8000a96: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 - 8000a9a: 2b00 cmp r3, #0 - 8000a9c: d1f0 bne.n 8000a80 - 8000a9e: e018 b.n 8000ad2 + 8003146: 4b12 ldr r3, [pc, #72] ; (8003190 ) + 8003148: 681b ldr r3, [r3, #0] + 800314a: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 + 800314e: 2b00 cmp r3, #0 + 8003150: d1f0 bne.n 8003134 + 8003152: e018 b.n 8003186 } } else { /* Check if there is a request to disable the PLL used as System clock source */ if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) - 8000aa0: 687b ldr r3, [r7, #4] - 8000aa2: 69db ldr r3, [r3, #28] - 8000aa4: 2b01 cmp r3, #1 - 8000aa6: d101 bne.n 8000aac + 8003154: 687b ldr r3, [r7, #4] + 8003156: 69db ldr r3, [r3, #28] + 8003158: 2b01 cmp r3, #1 + 800315a: d101 bne.n 8003160 { return HAL_ERROR; - 8000aa8: 2301 movs r3, #1 - 8000aaa: e013 b.n 8000ad4 + 800315c: 2301 movs r3, #1 + 800315e: e013 b.n 8003188 } else { /* Do not return HAL_ERROR if request repeats the current configuration */ pll_config = RCC->CFGR; - 8000aac: 4b0b ldr r3, [pc, #44] ; (8000adc ) - 8000aae: 685b ldr r3, [r3, #4] - 8000ab0: 60fb str r3, [r7, #12] + 8003160: 4b0b ldr r3, [pc, #44] ; (8003190 ) + 8003162: 685b ldr r3, [r3, #4] + 8003164: 60fb str r3, [r7, #12] if ((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 8000ab2: 68fb ldr r3, [r7, #12] - 8000ab4: f403 3280 and.w r2, r3, #65536 ; 0x10000 - 8000ab8: 687b ldr r3, [r7, #4] - 8000aba: 6a1b ldr r3, [r3, #32] - 8000abc: 429a cmp r2, r3 - 8000abe: d106 bne.n 8000ace + 8003166: 68fb ldr r3, [r7, #12] + 8003168: f403 3280 and.w r2, r3, #65536 ; 0x10000 + 800316c: 687b ldr r3, [r7, #4] + 800316e: 6a1b ldr r3, [r3, #32] + 8003170: 429a cmp r2, r3 + 8003172: d106 bne.n 8003182 (READ_BIT(pll_config, RCC_CFGR_PLLMULL) != RCC_OscInitStruct->PLL.PLLMUL)) - 8000ac0: 68fb ldr r3, [r7, #12] - 8000ac2: f403 1270 and.w r2, r3, #3932160 ; 0x3c0000 - 8000ac6: 687b ldr r3, [r7, #4] - 8000ac8: 6a5b ldr r3, [r3, #36] ; 0x24 + 8003174: 68fb ldr r3, [r7, #12] + 8003176: f403 1270 and.w r2, r3, #3932160 ; 0x3c0000 + 800317a: 687b ldr r3, [r7, #4] + 800317c: 6a5b ldr r3, [r3, #36] ; 0x24 if ((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 8000aca: 429a cmp r2, r3 - 8000acc: d001 beq.n 8000ad2 + 800317e: 429a cmp r2, r3 + 8003180: d001 beq.n 8003186 { return HAL_ERROR; - 8000ace: 2301 movs r3, #1 - 8000ad0: e000 b.n 8000ad4 + 8003182: 2301 movs r3, #1 + 8003184: e000 b.n 8003188 } } } } return HAL_OK; - 8000ad2: 2300 movs r3, #0 + 8003186: 2300 movs r3, #0 } - 8000ad4: 4618 mov r0, r3 - 8000ad6: 3718 adds r7, #24 - 8000ad8: 46bd mov sp, r7 - 8000ada: bd80 pop {r7, pc} - 8000adc: 40021000 .word 0x40021000 - 8000ae0: 40007000 .word 0x40007000 - 8000ae4: 42420060 .word 0x42420060 + 8003188: 4618 mov r0, r3 + 800318a: 3718 adds r7, #24 + 800318c: 46bd mov sp, r7 + 800318e: bd80 pop {r7, pc} + 8003190: 40021000 .word 0x40021000 + 8003194: 40007000 .word 0x40007000 + 8003198: 42420060 .word 0x42420060 -08000ae8 : +0800319c : * You can use @ref HAL_RCC_GetClockConfig() function to know which clock is * currently used as system clock source. * @retval HAL status */ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) { - 8000ae8: b580 push {r7, lr} - 8000aea: b084 sub sp, #16 - 8000aec: af00 add r7, sp, #0 - 8000aee: 6078 str r0, [r7, #4] - 8000af0: 6039 str r1, [r7, #0] + 800319c: b580 push {r7, lr} + 800319e: b084 sub sp, #16 + 80031a0: af00 add r7, sp, #0 + 80031a2: 6078 str r0, [r7, #4] + 80031a4: 6039 str r1, [r7, #0] uint32_t tickstart; /* Check Null pointer */ if (RCC_ClkInitStruct == NULL) - 8000af2: 687b ldr r3, [r7, #4] - 8000af4: 2b00 cmp r3, #0 - 8000af6: d101 bne.n 8000afc + 80031a6: 687b ldr r3, [r7, #4] + 80031a8: 2b00 cmp r3, #0 + 80031aa: d101 bne.n 80031b0 { return HAL_ERROR; - 8000af8: 2301 movs r3, #1 - 8000afa: e0d0 b.n 8000c9e + 80031ac: 2301 movs r3, #1 + 80031ae: e0d0 b.n 8003352 must be correctly programmed according to the frequency of the CPU clock (HCLK) of the device. */ #if defined(FLASH_ACR_LATENCY) /* Increasing the number of wait states because of higher CPU frequency */ if (FLatency > __HAL_FLASH_GET_LATENCY()) - 8000afc: 4b6a ldr r3, [pc, #424] ; (8000ca8 ) - 8000afe: 681b ldr r3, [r3, #0] - 8000b00: f003 0307 and.w r3, r3, #7 - 8000b04: 683a ldr r2, [r7, #0] - 8000b06: 429a cmp r2, r3 - 8000b08: d910 bls.n 8000b2c + 80031b0: 4b6a ldr r3, [pc, #424] ; (800335c ) + 80031b2: 681b ldr r3, [r3, #0] + 80031b4: f003 0307 and.w r3, r3, #7 + 80031b8: 683a ldr r2, [r7, #0] + 80031ba: 429a cmp r2, r3 + 80031bc: d910 bls.n 80031e0 { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); - 8000b0a: 4b67 ldr r3, [pc, #412] ; (8000ca8 ) - 8000b0c: 681b ldr r3, [r3, #0] - 8000b0e: f023 0207 bic.w r2, r3, #7 - 8000b12: 4965 ldr r1, [pc, #404] ; (8000ca8 ) - 8000b14: 683b ldr r3, [r7, #0] - 8000b16: 4313 orrs r3, r2 - 8000b18: 600b str r3, [r1, #0] + 80031be: 4b67 ldr r3, [pc, #412] ; (800335c ) + 80031c0: 681b ldr r3, [r3, #0] + 80031c2: f023 0207 bic.w r2, r3, #7 + 80031c6: 4965 ldr r1, [pc, #404] ; (800335c ) + 80031c8: 683b ldr r3, [r7, #0] + 80031ca: 4313 orrs r3, r2 + 80031cc: 600b str r3, [r1, #0] /* Check that the new number of wait states is taken into account to access the Flash memory by reading the FLASH_ACR register */ if (__HAL_FLASH_GET_LATENCY() != FLatency) - 8000b1a: 4b63 ldr r3, [pc, #396] ; (8000ca8 ) - 8000b1c: 681b ldr r3, [r3, #0] - 8000b1e: f003 0307 and.w r3, r3, #7 - 8000b22: 683a ldr r2, [r7, #0] - 8000b24: 429a cmp r2, r3 - 8000b26: d001 beq.n 8000b2c + 80031ce: 4b63 ldr r3, [pc, #396] ; (800335c ) + 80031d0: 681b ldr r3, [r3, #0] + 80031d2: f003 0307 and.w r3, r3, #7 + 80031d6: 683a ldr r2, [r7, #0] + 80031d8: 429a cmp r2, r3 + 80031da: d001 beq.n 80031e0 { return HAL_ERROR; - 8000b28: 2301 movs r3, #1 - 8000b2a: e0b8 b.n 8000c9e + 80031dc: 2301 movs r3, #1 + 80031de: e0b8 b.n 8003352 } } #endif /* FLASH_ACR_LATENCY */ /*-------------------------- HCLK Configuration --------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) - 8000b2c: 687b ldr r3, [r7, #4] - 8000b2e: 681b ldr r3, [r3, #0] - 8000b30: f003 0302 and.w r3, r3, #2 - 8000b34: 2b00 cmp r3, #0 - 8000b36: d020 beq.n 8000b7a + 80031e0: 687b ldr r3, [r7, #4] + 80031e2: 681b ldr r3, [r3, #0] + 80031e4: f003 0302 and.w r3, r3, #2 + 80031e8: 2b00 cmp r3, #0 + 80031ea: d020 beq.n 800322e { /* Set the highest APBx dividers in order to ensure that we do not go through a non-spec phase whatever we decrease or increase HCLK. */ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 8000b38: 687b ldr r3, [r7, #4] - 8000b3a: 681b ldr r3, [r3, #0] - 8000b3c: f003 0304 and.w r3, r3, #4 - 8000b40: 2b00 cmp r3, #0 - 8000b42: d005 beq.n 8000b50 + 80031ec: 687b ldr r3, [r7, #4] + 80031ee: 681b ldr r3, [r3, #0] + 80031f0: f003 0304 and.w r3, r3, #4 + 80031f4: 2b00 cmp r3, #0 + 80031f6: d005 beq.n 8003204 { MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16); - 8000b44: 4b59 ldr r3, [pc, #356] ; (8000cac ) - 8000b46: 685b ldr r3, [r3, #4] - 8000b48: 4a58 ldr r2, [pc, #352] ; (8000cac ) - 8000b4a: f443 63e0 orr.w r3, r3, #1792 ; 0x700 - 8000b4e: 6053 str r3, [r2, #4] + 80031f8: 4b59 ldr r3, [pc, #356] ; (8003360 ) + 80031fa: 685b ldr r3, [r3, #4] + 80031fc: 4a58 ldr r2, [pc, #352] ; (8003360 ) + 80031fe: f443 63e0 orr.w r3, r3, #1792 ; 0x700 + 8003202: 6053 str r3, [r2, #4] } if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) - 8000b50: 687b ldr r3, [r7, #4] - 8000b52: 681b ldr r3, [r3, #0] - 8000b54: f003 0308 and.w r3, r3, #8 - 8000b58: 2b00 cmp r3, #0 - 8000b5a: d005 beq.n 8000b68 + 8003204: 687b ldr r3, [r7, #4] + 8003206: 681b ldr r3, [r3, #0] + 8003208: f003 0308 and.w r3, r3, #8 + 800320c: 2b00 cmp r3, #0 + 800320e: d005 beq.n 800321c { MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3)); - 8000b5c: 4b53 ldr r3, [pc, #332] ; (8000cac ) - 8000b5e: 685b ldr r3, [r3, #4] - 8000b60: 4a52 ldr r2, [pc, #328] ; (8000cac ) - 8000b62: f443 5360 orr.w r3, r3, #14336 ; 0x3800 - 8000b66: 6053 str r3, [r2, #4] + 8003210: 4b53 ldr r3, [pc, #332] ; (8003360 ) + 8003212: 685b ldr r3, [r3, #4] + 8003214: 4a52 ldr r2, [pc, #328] ; (8003360 ) + 8003216: f443 5360 orr.w r3, r3, #14336 ; 0x3800 + 800321a: 6053 str r3, [r2, #4] } /* Set the new HCLK clock divider */ assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); - 8000b68: 4b50 ldr r3, [pc, #320] ; (8000cac ) - 8000b6a: 685b ldr r3, [r3, #4] - 8000b6c: f023 02f0 bic.w r2, r3, #240 ; 0xf0 - 8000b70: 687b ldr r3, [r7, #4] - 8000b72: 689b ldr r3, [r3, #8] - 8000b74: 494d ldr r1, [pc, #308] ; (8000cac ) - 8000b76: 4313 orrs r3, r2 - 8000b78: 604b str r3, [r1, #4] + 800321c: 4b50 ldr r3, [pc, #320] ; (8003360 ) + 800321e: 685b ldr r3, [r3, #4] + 8003220: f023 02f0 bic.w r2, r3, #240 ; 0xf0 + 8003224: 687b ldr r3, [r7, #4] + 8003226: 689b ldr r3, [r3, #8] + 8003228: 494d ldr r1, [pc, #308] ; (8003360 ) + 800322a: 4313 orrs r3, r2 + 800322c: 604b str r3, [r1, #4] } /*------------------------- SYSCLK Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) - 8000b7a: 687b ldr r3, [r7, #4] - 8000b7c: 681b ldr r3, [r3, #0] - 8000b7e: f003 0301 and.w r3, r3, #1 - 8000b82: 2b00 cmp r3, #0 - 8000b84: d040 beq.n 8000c08 + 800322e: 687b ldr r3, [r7, #4] + 8003230: 681b ldr r3, [r3, #0] + 8003232: f003 0301 and.w r3, r3, #1 + 8003236: 2b00 cmp r3, #0 + 8003238: d040 beq.n 80032bc { assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); /* HSE is selected as System Clock Source */ if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) - 8000b86: 687b ldr r3, [r7, #4] - 8000b88: 685b ldr r3, [r3, #4] - 8000b8a: 2b01 cmp r3, #1 - 8000b8c: d107 bne.n 8000b9e + 800323a: 687b ldr r3, [r7, #4] + 800323c: 685b ldr r3, [r3, #4] + 800323e: 2b01 cmp r3, #1 + 8003240: d107 bne.n 8003252 { /* Check the HSE ready flag */ if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 8000b8e: 4b47 ldr r3, [pc, #284] ; (8000cac ) - 8000b90: 681b ldr r3, [r3, #0] - 8000b92: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 8000b96: 2b00 cmp r3, #0 - 8000b98: d115 bne.n 8000bc6 + 8003242: 4b47 ldr r3, [pc, #284] ; (8003360 ) + 8003244: 681b ldr r3, [r3, #0] + 8003246: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 800324a: 2b00 cmp r3, #0 + 800324c: d115 bne.n 800327a { return HAL_ERROR; - 8000b9a: 2301 movs r3, #1 - 8000b9c: e07f b.n 8000c9e + 800324e: 2301 movs r3, #1 + 8003250: e07f b.n 8003352 } } /* PLL is selected as System Clock Source */ else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) - 8000b9e: 687b ldr r3, [r7, #4] - 8000ba0: 685b ldr r3, [r3, #4] - 8000ba2: 2b02 cmp r3, #2 - 8000ba4: d107 bne.n 8000bb6 + 8003252: 687b ldr r3, [r7, #4] + 8003254: 685b ldr r3, [r3, #4] + 8003256: 2b02 cmp r3, #2 + 8003258: d107 bne.n 800326a { /* Check the PLL ready flag */ if (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 8000ba6: 4b41 ldr r3, [pc, #260] ; (8000cac ) - 8000ba8: 681b ldr r3, [r3, #0] - 8000baa: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 - 8000bae: 2b00 cmp r3, #0 - 8000bb0: d109 bne.n 8000bc6 + 800325a: 4b41 ldr r3, [pc, #260] ; (8003360 ) + 800325c: 681b ldr r3, [r3, #0] + 800325e: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 + 8003262: 2b00 cmp r3, #0 + 8003264: d109 bne.n 800327a { return HAL_ERROR; - 8000bb2: 2301 movs r3, #1 - 8000bb4: e073 b.n 8000c9e + 8003266: 2301 movs r3, #1 + 8003268: e073 b.n 8003352 } /* HSI is selected as System Clock Source */ else { /* Check the HSI ready flag */ if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 8000bb6: 4b3d ldr r3, [pc, #244] ; (8000cac ) - 8000bb8: 681b ldr r3, [r3, #0] - 8000bba: f003 0302 and.w r3, r3, #2 - 8000bbe: 2b00 cmp r3, #0 - 8000bc0: d101 bne.n 8000bc6 + 800326a: 4b3d ldr r3, [pc, #244] ; (8003360 ) + 800326c: 681b ldr r3, [r3, #0] + 800326e: f003 0302 and.w r3, r3, #2 + 8003272: 2b00 cmp r3, #0 + 8003274: d101 bne.n 800327a { return HAL_ERROR; - 8000bc2: 2301 movs r3, #1 - 8000bc4: e06b b.n 8000c9e + 8003276: 2301 movs r3, #1 + 8003278: e06b b.n 8003352 } } __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); - 8000bc6: 4b39 ldr r3, [pc, #228] ; (8000cac ) - 8000bc8: 685b ldr r3, [r3, #4] - 8000bca: f023 0203 bic.w r2, r3, #3 - 8000bce: 687b ldr r3, [r7, #4] - 8000bd0: 685b ldr r3, [r3, #4] - 8000bd2: 4936 ldr r1, [pc, #216] ; (8000cac ) - 8000bd4: 4313 orrs r3, r2 - 8000bd6: 604b str r3, [r1, #4] + 800327a: 4b39 ldr r3, [pc, #228] ; (8003360 ) + 800327c: 685b ldr r3, [r3, #4] + 800327e: f023 0203 bic.w r2, r3, #3 + 8003282: 687b ldr r3, [r7, #4] + 8003284: 685b ldr r3, [r3, #4] + 8003286: 4936 ldr r1, [pc, #216] ; (8003360 ) + 8003288: 4313 orrs r3, r2 + 800328a: 604b str r3, [r1, #4] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8000bd8: f7ff fc18 bl 800040c - 8000bdc: 60f8 str r0, [r7, #12] + 800328c: f7fd fa64 bl 8000758 + 8003290: 60f8 str r0, [r7, #12] while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 8000bde: e00a b.n 8000bf6 + 8003292: e00a b.n 80032aa { if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 8000be0: f7ff fc14 bl 800040c - 8000be4: 4602 mov r2, r0 - 8000be6: 68fb ldr r3, [r7, #12] - 8000be8: 1ad3 subs r3, r2, r3 - 8000bea: f241 3288 movw r2, #5000 ; 0x1388 - 8000bee: 4293 cmp r3, r2 - 8000bf0: d901 bls.n 8000bf6 + 8003294: f7fd fa60 bl 8000758 + 8003298: 4602 mov r2, r0 + 800329a: 68fb ldr r3, [r7, #12] + 800329c: 1ad3 subs r3, r2, r3 + 800329e: f241 3288 movw r2, #5000 ; 0x1388 + 80032a2: 4293 cmp r3, r2 + 80032a4: d901 bls.n 80032aa { return HAL_TIMEOUT; - 8000bf2: 2303 movs r3, #3 - 8000bf4: e053 b.n 8000c9e + 80032a6: 2303 movs r3, #3 + 80032a8: e053 b.n 8003352 while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 8000bf6: 4b2d ldr r3, [pc, #180] ; (8000cac ) - 8000bf8: 685b ldr r3, [r3, #4] - 8000bfa: f003 020c and.w r2, r3, #12 - 8000bfe: 687b ldr r3, [r7, #4] - 8000c00: 685b ldr r3, [r3, #4] - 8000c02: 009b lsls r3, r3, #2 - 8000c04: 429a cmp r2, r3 - 8000c06: d1eb bne.n 8000be0 + 80032aa: 4b2d ldr r3, [pc, #180] ; (8003360 ) + 80032ac: 685b ldr r3, [r3, #4] + 80032ae: f003 020c and.w r2, r3, #12 + 80032b2: 687b ldr r3, [r7, #4] + 80032b4: 685b ldr r3, [r3, #4] + 80032b6: 009b lsls r3, r3, #2 + 80032b8: 429a cmp r2, r3 + 80032ba: d1eb bne.n 8003294 } } #if defined(FLASH_ACR_LATENCY) /* Decreasing the number of wait states because of lower CPU frequency */ if (FLatency < __HAL_FLASH_GET_LATENCY()) - 8000c08: 4b27 ldr r3, [pc, #156] ; (8000ca8 ) - 8000c0a: 681b ldr r3, [r3, #0] - 8000c0c: f003 0307 and.w r3, r3, #7 - 8000c10: 683a ldr r2, [r7, #0] - 8000c12: 429a cmp r2, r3 - 8000c14: d210 bcs.n 8000c38 + 80032bc: 4b27 ldr r3, [pc, #156] ; (800335c ) + 80032be: 681b ldr r3, [r3, #0] + 80032c0: f003 0307 and.w r3, r3, #7 + 80032c4: 683a ldr r2, [r7, #0] + 80032c6: 429a cmp r2, r3 + 80032c8: d210 bcs.n 80032ec { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); - 8000c16: 4b24 ldr r3, [pc, #144] ; (8000ca8 ) - 8000c18: 681b ldr r3, [r3, #0] - 8000c1a: f023 0207 bic.w r2, r3, #7 - 8000c1e: 4922 ldr r1, [pc, #136] ; (8000ca8 ) - 8000c20: 683b ldr r3, [r7, #0] - 8000c22: 4313 orrs r3, r2 - 8000c24: 600b str r3, [r1, #0] + 80032ca: 4b24 ldr r3, [pc, #144] ; (800335c ) + 80032cc: 681b ldr r3, [r3, #0] + 80032ce: f023 0207 bic.w r2, r3, #7 + 80032d2: 4922 ldr r1, [pc, #136] ; (800335c ) + 80032d4: 683b ldr r3, [r7, #0] + 80032d6: 4313 orrs r3, r2 + 80032d8: 600b str r3, [r1, #0] /* Check that the new number of wait states is taken into account to access the Flash memory by reading the FLASH_ACR register */ if (__HAL_FLASH_GET_LATENCY() != FLatency) - 8000c26: 4b20 ldr r3, [pc, #128] ; (8000ca8 ) - 8000c28: 681b ldr r3, [r3, #0] - 8000c2a: f003 0307 and.w r3, r3, #7 - 8000c2e: 683a ldr r2, [r7, #0] - 8000c30: 429a cmp r2, r3 - 8000c32: d001 beq.n 8000c38 + 80032da: 4b20 ldr r3, [pc, #128] ; (800335c ) + 80032dc: 681b ldr r3, [r3, #0] + 80032de: f003 0307 and.w r3, r3, #7 + 80032e2: 683a ldr r2, [r7, #0] + 80032e4: 429a cmp r2, r3 + 80032e6: d001 beq.n 80032ec { return HAL_ERROR; - 8000c34: 2301 movs r3, #1 - 8000c36: e032 b.n 8000c9e + 80032e8: 2301 movs r3, #1 + 80032ea: e032 b.n 8003352 } } #endif /* FLASH_ACR_LATENCY */ /*-------------------------- PCLK1 Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 8000c38: 687b ldr r3, [r7, #4] - 8000c3a: 681b ldr r3, [r3, #0] - 8000c3c: f003 0304 and.w r3, r3, #4 - 8000c40: 2b00 cmp r3, #0 - 8000c42: d008 beq.n 8000c56 + 80032ec: 687b ldr r3, [r7, #4] + 80032ee: 681b ldr r3, [r3, #0] + 80032f0: f003 0304 and.w r3, r3, #4 + 80032f4: 2b00 cmp r3, #0 + 80032f6: d008 beq.n 800330a { assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); - 8000c44: 4b19 ldr r3, [pc, #100] ; (8000cac ) - 8000c46: 685b ldr r3, [r3, #4] - 8000c48: f423 62e0 bic.w r2, r3, #1792 ; 0x700 - 8000c4c: 687b ldr r3, [r7, #4] - 8000c4e: 68db ldr r3, [r3, #12] - 8000c50: 4916 ldr r1, [pc, #88] ; (8000cac ) - 8000c52: 4313 orrs r3, r2 - 8000c54: 604b str r3, [r1, #4] + 80032f8: 4b19 ldr r3, [pc, #100] ; (8003360 ) + 80032fa: 685b ldr r3, [r3, #4] + 80032fc: f423 62e0 bic.w r2, r3, #1792 ; 0x700 + 8003300: 687b ldr r3, [r7, #4] + 8003302: 68db ldr r3, [r3, #12] + 8003304: 4916 ldr r1, [pc, #88] ; (8003360 ) + 8003306: 4313 orrs r3, r2 + 8003308: 604b str r3, [r1, #4] } /*-------------------------- PCLK2 Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) - 8000c56: 687b ldr r3, [r7, #4] - 8000c58: 681b ldr r3, [r3, #0] - 8000c5a: f003 0308 and.w r3, r3, #8 - 8000c5e: 2b00 cmp r3, #0 - 8000c60: d009 beq.n 8000c76 + 800330a: 687b ldr r3, [r7, #4] + 800330c: 681b ldr r3, [r3, #0] + 800330e: f003 0308 and.w r3, r3, #8 + 8003312: 2b00 cmp r3, #0 + 8003314: d009 beq.n 800332a { assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3)); - 8000c62: 4b12 ldr r3, [pc, #72] ; (8000cac ) - 8000c64: 685b ldr r3, [r3, #4] - 8000c66: f423 5260 bic.w r2, r3, #14336 ; 0x3800 - 8000c6a: 687b ldr r3, [r7, #4] - 8000c6c: 691b ldr r3, [r3, #16] - 8000c6e: 00db lsls r3, r3, #3 - 8000c70: 490e ldr r1, [pc, #56] ; (8000cac ) - 8000c72: 4313 orrs r3, r2 - 8000c74: 604b str r3, [r1, #4] + 8003316: 4b12 ldr r3, [pc, #72] ; (8003360 ) + 8003318: 685b ldr r3, [r3, #4] + 800331a: f423 5260 bic.w r2, r3, #14336 ; 0x3800 + 800331e: 687b ldr r3, [r7, #4] + 8003320: 691b ldr r3, [r3, #16] + 8003322: 00db lsls r3, r3, #3 + 8003324: 490e ldr r1, [pc, #56] ; (8003360 ) + 8003326: 4313 orrs r3, r2 + 8003328: 604b str r3, [r1, #4] } /* Update the SystemCoreClock global variable */ SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos]; - 8000c76: f000 f821 bl 8000cbc - 8000c7a: 4602 mov r2, r0 - 8000c7c: 4b0b ldr r3, [pc, #44] ; (8000cac ) - 8000c7e: 685b ldr r3, [r3, #4] - 8000c80: 091b lsrs r3, r3, #4 - 8000c82: f003 030f and.w r3, r3, #15 - 8000c86: 490a ldr r1, [pc, #40] ; (8000cb0 ) - 8000c88: 5ccb ldrb r3, [r1, r3] - 8000c8a: fa22 f303 lsr.w r3, r2, r3 - 8000c8e: 4a09 ldr r2, [pc, #36] ; (8000cb4 ) - 8000c90: 6013 str r3, [r2, #0] + 800332a: f000 f821 bl 8003370 + 800332e: 4602 mov r2, r0 + 8003330: 4b0b ldr r3, [pc, #44] ; (8003360 ) + 8003332: 685b ldr r3, [r3, #4] + 8003334: 091b lsrs r3, r3, #4 + 8003336: f003 030f and.w r3, r3, #15 + 800333a: 490a ldr r1, [pc, #40] ; (8003364 ) + 800333c: 5ccb ldrb r3, [r1, r3] + 800333e: fa22 f303 lsr.w r3, r2, r3 + 8003342: 4a09 ldr r2, [pc, #36] ; (8003368 ) + 8003344: 6013 str r3, [r2, #0] /* Configure the source of time base considering new system clocks settings*/ HAL_InitTick(uwTickPrio); - 8000c92: 4b09 ldr r3, [pc, #36] ; (8000cb8 ) - 8000c94: 681b ldr r3, [r3, #0] - 8000c96: 4618 mov r0, r3 - 8000c98: f7ff fb76 bl 8000388 + 8003346: 4b09 ldr r3, [pc, #36] ; (800336c ) + 8003348: 681b ldr r3, [r3, #0] + 800334a: 4618 mov r0, r3 + 800334c: f7fd f9c2 bl 80006d4 return HAL_OK; - 8000c9c: 2300 movs r3, #0 + 8003350: 2300 movs r3, #0 } - 8000c9e: 4618 mov r0, r3 - 8000ca0: 3710 adds r7, #16 - 8000ca2: 46bd mov sp, r7 - 8000ca4: bd80 pop {r7, pc} - 8000ca6: bf00 nop - 8000ca8: 40022000 .word 0x40022000 - 8000cac: 40021000 .word 0x40021000 - 8000cb0: 08000e38 .word 0x08000e38 - 8000cb4: 20000000 .word 0x20000000 - 8000cb8: 20000004 .word 0x20000004 + 8003352: 4618 mov r0, r3 + 8003354: 3710 adds r7, #16 + 8003356: 46bd mov sp, r7 + 8003358: bd80 pop {r7, pc} + 800335a: bf00 nop + 800335c: 40022000 .word 0x40022000 + 8003360: 40021000 .word 0x40021000 + 8003364: 0800808c .word 0x0800808c + 8003368: 20000000 .word 0x20000000 + 800336c: 20000004 .word 0x20000004 -08000cbc : +08003370 : * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect. * * @retval SYSCLK frequency */ uint32_t HAL_RCC_GetSysClockFreq(void) { - 8000cbc: b490 push {r4, r7} - 8000cbe: b08a sub sp, #40 ; 0x28 - 8000cc0: af00 add r7, sp, #0 + 8003370: b490 push {r4, r7} + 8003372: b08a sub sp, #40 ; 0x28 + 8003374: af00 add r7, sp, #0 #if defined(RCC_CFGR2_PREDIV1SRC) const uint8_t aPLLMULFactorTable[14] = {0, 0, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 13}; const uint8_t aPredivFactorTable[16] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; #else const uint8_t aPLLMULFactorTable[16] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 16}; - 8000cc2: 4b2a ldr r3, [pc, #168] ; (8000d6c ) - 8000cc4: 1d3c adds r4, r7, #4 - 8000cc6: cb0f ldmia r3, {r0, r1, r2, r3} - 8000cc8: e884 000f stmia.w r4, {r0, r1, r2, r3} + 8003376: 4b2a ldr r3, [pc, #168] ; (8003420 ) + 8003378: 1d3c adds r4, r7, #4 + 800337a: cb0f ldmia r3, {r0, r1, r2, r3} + 800337c: e884 000f stmia.w r4, {r0, r1, r2, r3} #if defined(RCC_CFGR2_PREDIV1) const uint8_t aPredivFactorTable[16] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; #else const uint8_t aPredivFactorTable[2] = {1, 2}; - 8000ccc: f240 2301 movw r3, #513 ; 0x201 - 8000cd0: 803b strh r3, [r7, #0] + 8003380: f240 2301 movw r3, #513 ; 0x201 + 8003384: 803b strh r3, [r7, #0] #endif /*RCC_CFGR2_PREDIV1*/ #endif uint32_t tmpreg = 0U, prediv = 0U, pllclk = 0U, pllmul = 0U; - 8000cd2: 2300 movs r3, #0 - 8000cd4: 61fb str r3, [r7, #28] - 8000cd6: 2300 movs r3, #0 - 8000cd8: 61bb str r3, [r7, #24] - 8000cda: 2300 movs r3, #0 - 8000cdc: 627b str r3, [r7, #36] ; 0x24 - 8000cde: 2300 movs r3, #0 - 8000ce0: 617b str r3, [r7, #20] + 8003386: 2300 movs r3, #0 + 8003388: 61fb str r3, [r7, #28] + 800338a: 2300 movs r3, #0 + 800338c: 61bb str r3, [r7, #24] + 800338e: 2300 movs r3, #0 + 8003390: 627b str r3, [r7, #36] ; 0x24 + 8003392: 2300 movs r3, #0 + 8003394: 617b str r3, [r7, #20] uint32_t sysclockfreq = 0U; - 8000ce2: 2300 movs r3, #0 - 8000ce4: 623b str r3, [r7, #32] + 8003396: 2300 movs r3, #0 + 8003398: 623b str r3, [r7, #32] #if defined(RCC_CFGR2_PREDIV1SRC) uint32_t prediv2 = 0U, pll2mul = 0U; #endif /*RCC_CFGR2_PREDIV1SRC*/ tmpreg = RCC->CFGR; - 8000ce6: 4b22 ldr r3, [pc, #136] ; (8000d70 ) - 8000ce8: 685b ldr r3, [r3, #4] - 8000cea: 61fb str r3, [r7, #28] + 800339a: 4b22 ldr r3, [pc, #136] ; (8003424 ) + 800339c: 685b ldr r3, [r3, #4] + 800339e: 61fb str r3, [r7, #28] /* Get SYSCLK source -------------------------------------------------------*/ switch (tmpreg & RCC_CFGR_SWS) - 8000cec: 69fb ldr r3, [r7, #28] - 8000cee: f003 030c and.w r3, r3, #12 - 8000cf2: 2b04 cmp r3, #4 - 8000cf4: d002 beq.n 8000cfc - 8000cf6: 2b08 cmp r3, #8 - 8000cf8: d003 beq.n 8000d02 - 8000cfa: e02d b.n 8000d58 + 80033a0: 69fb ldr r3, [r7, #28] + 80033a2: f003 030c and.w r3, r3, #12 + 80033a6: 2b04 cmp r3, #4 + 80033a8: d002 beq.n 80033b0 + 80033aa: 2b08 cmp r3, #8 + 80033ac: d003 beq.n 80033b6 + 80033ae: e02d b.n 800340c { case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */ { sysclockfreq = HSE_VALUE; - 8000cfc: 4b1d ldr r3, [pc, #116] ; (8000d74 ) - 8000cfe: 623b str r3, [r7, #32] + 80033b0: 4b1d ldr r3, [pc, #116] ; (8003428 ) + 80033b2: 623b str r3, [r7, #32] break; - 8000d00: e02d b.n 8000d5e + 80033b4: e02d b.n 8003412 } case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */ { pllmul = aPLLMULFactorTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMULL) >> RCC_CFGR_PLLMULL_Pos]; - 8000d02: 69fb ldr r3, [r7, #28] - 8000d04: 0c9b lsrs r3, r3, #18 - 8000d06: f003 030f and.w r3, r3, #15 - 8000d0a: f107 0228 add.w r2, r7, #40 ; 0x28 - 8000d0e: 4413 add r3, r2 - 8000d10: f813 3c24 ldrb.w r3, [r3, #-36] - 8000d14: 617b str r3, [r7, #20] + 80033b6: 69fb ldr r3, [r7, #28] + 80033b8: 0c9b lsrs r3, r3, #18 + 80033ba: f003 030f and.w r3, r3, #15 + 80033be: f107 0228 add.w r2, r7, #40 ; 0x28 + 80033c2: 4413 add r3, r2 + 80033c4: f813 3c24 ldrb.w r3, [r3, #-36] + 80033c8: 617b str r3, [r7, #20] if ((tmpreg & RCC_CFGR_PLLSRC) != RCC_PLLSOURCE_HSI_DIV2) - 8000d16: 69fb ldr r3, [r7, #28] - 8000d18: f403 3380 and.w r3, r3, #65536 ; 0x10000 - 8000d1c: 2b00 cmp r3, #0 - 8000d1e: d013 beq.n 8000d48 + 80033ca: 69fb ldr r3, [r7, #28] + 80033cc: f403 3380 and.w r3, r3, #65536 ; 0x10000 + 80033d0: 2b00 cmp r3, #0 + 80033d2: d013 beq.n 80033fc { #if defined(RCC_CFGR2_PREDIV1) prediv = aPredivFactorTable[(uint32_t)(RCC->CFGR2 & RCC_CFGR2_PREDIV1) >> RCC_CFGR2_PREDIV1_Pos]; #else prediv = aPredivFactorTable[(uint32_t)(RCC->CFGR & RCC_CFGR_PLLXTPRE) >> RCC_CFGR_PLLXTPRE_Pos]; - 8000d20: 4b13 ldr r3, [pc, #76] ; (8000d70 ) - 8000d22: 685b ldr r3, [r3, #4] - 8000d24: 0c5b lsrs r3, r3, #17 - 8000d26: f003 0301 and.w r3, r3, #1 - 8000d2a: f107 0228 add.w r2, r7, #40 ; 0x28 - 8000d2e: 4413 add r3, r2 - 8000d30: f813 3c28 ldrb.w r3, [r3, #-40] - 8000d34: 61bb str r3, [r7, #24] + 80033d4: 4b13 ldr r3, [pc, #76] ; (8003424 ) + 80033d6: 685b ldr r3, [r3, #4] + 80033d8: 0c5b lsrs r3, r3, #17 + 80033da: f003 0301 and.w r3, r3, #1 + 80033de: f107 0228 add.w r2, r7, #40 ; 0x28 + 80033e2: 4413 add r3, r2 + 80033e4: f813 3c28 ldrb.w r3, [r3, #-40] + 80033e8: 61bb str r3, [r7, #24] { pllclk = pllclk / 2; } #else /* HSE used as PLL clock source : PLLCLK = HSE/PREDIV1 * PLLMUL */ pllclk = (uint32_t)((HSE_VALUE * pllmul) / prediv); - 8000d36: 697b ldr r3, [r7, #20] - 8000d38: 4a0e ldr r2, [pc, #56] ; (8000d74 ) - 8000d3a: fb02 f203 mul.w r2, r2, r3 - 8000d3e: 69bb ldr r3, [r7, #24] - 8000d40: fbb2 f3f3 udiv r3, r2, r3 - 8000d44: 627b str r3, [r7, #36] ; 0x24 - 8000d46: e004 b.n 8000d52 + 80033ea: 697b ldr r3, [r7, #20] + 80033ec: 4a0e ldr r2, [pc, #56] ; (8003428 ) + 80033ee: fb02 f203 mul.w r2, r2, r3 + 80033f2: 69bb ldr r3, [r7, #24] + 80033f4: fbb2 f3f3 udiv r3, r2, r3 + 80033f8: 627b str r3, [r7, #36] ; 0x24 + 80033fa: e004 b.n 8003406 #endif /*RCC_CFGR2_PREDIV1SRC*/ } else { /* HSI used as PLL clock source : PLLCLK = HSI/2 * PLLMUL */ pllclk = (uint32_t)((HSI_VALUE >> 1) * pllmul); - 8000d48: 697b ldr r3, [r7, #20] - 8000d4a: 4a0b ldr r2, [pc, #44] ; (8000d78 ) - 8000d4c: fb02 f303 mul.w r3, r2, r3 - 8000d50: 627b str r3, [r7, #36] ; 0x24 + 80033fc: 697b ldr r3, [r7, #20] + 80033fe: 4a0b ldr r2, [pc, #44] ; (800342c ) + 8003400: fb02 f303 mul.w r3, r2, r3 + 8003404: 627b str r3, [r7, #36] ; 0x24 } sysclockfreq = pllclk; - 8000d52: 6a7b ldr r3, [r7, #36] ; 0x24 - 8000d54: 623b str r3, [r7, #32] + 8003406: 6a7b ldr r3, [r7, #36] ; 0x24 + 8003408: 623b str r3, [r7, #32] break; - 8000d56: e002 b.n 8000d5e + 800340a: e002 b.n 8003412 } case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ default: /* HSI used as system clock */ { sysclockfreq = HSI_VALUE; - 8000d58: 4b06 ldr r3, [pc, #24] ; (8000d74 ) - 8000d5a: 623b str r3, [r7, #32] + 800340c: 4b06 ldr r3, [pc, #24] ; (8003428 ) + 800340e: 623b str r3, [r7, #32] break; - 8000d5c: bf00 nop + 8003410: bf00 nop } } return sysclockfreq; - 8000d5e: 6a3b ldr r3, [r7, #32] + 8003412: 6a3b ldr r3, [r7, #32] } - 8000d60: 4618 mov r0, r3 - 8000d62: 3728 adds r7, #40 ; 0x28 - 8000d64: 46bd mov sp, r7 - 8000d66: bc90 pop {r4, r7} - 8000d68: 4770 bx lr - 8000d6a: bf00 nop - 8000d6c: 08000e28 .word 0x08000e28 - 8000d70: 40021000 .word 0x40021000 - 8000d74: 007a1200 .word 0x007a1200 - 8000d78: 003d0900 .word 0x003d0900 + 8003414: 4618 mov r0, r3 + 8003416: 3728 adds r7, #40 ; 0x28 + 8003418: 46bd mov sp, r7 + 800341a: bc90 pop {r4, r7} + 800341c: 4770 bx lr + 800341e: bf00 nop + 8003420: 08007fcc .word 0x08007fcc + 8003424: 40021000 .word 0x40021000 + 8003428: 007a1200 .word 0x007a1200 + 800342c: 003d0900 .word 0x003d0900 -08000d7c : +08003430 : + * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency + * and updated within this function + * @retval HCLK frequency + */ +uint32_t HAL_RCC_GetHCLKFreq(void) +{ + 8003430: b480 push {r7} + 8003432: af00 add r7, sp, #0 + return SystemCoreClock; + 8003434: 4b02 ldr r3, [pc, #8] ; (8003440 ) + 8003436: 681b ldr r3, [r3, #0] +} + 8003438: 4618 mov r0, r3 + 800343a: 46bd mov sp, r7 + 800343c: bc80 pop {r7} + 800343e: 4770 bx lr + 8003440: 20000000 .word 0x20000000 + +08003444 : + * @note Each time PCLK1 changes, this function must be called to update the + * right PCLK1 value. Otherwise, any configuration based on this function will be incorrect. + * @retval PCLK1 frequency + */ +uint32_t HAL_RCC_GetPCLK1Freq(void) +{ + 8003444: b580 push {r7, lr} + 8003446: af00 add r7, sp, #0 + /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/ + return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1) >> RCC_CFGR_PPRE1_Pos]); + 8003448: f7ff fff2 bl 8003430 + 800344c: 4602 mov r2, r0 + 800344e: 4b05 ldr r3, [pc, #20] ; (8003464 ) + 8003450: 685b ldr r3, [r3, #4] + 8003452: 0a1b lsrs r3, r3, #8 + 8003454: f003 0307 and.w r3, r3, #7 + 8003458: 4903 ldr r1, [pc, #12] ; (8003468 ) + 800345a: 5ccb ldrb r3, [r1, r3] + 800345c: fa22 f303 lsr.w r3, r2, r3 +} + 8003460: 4618 mov r0, r3 + 8003462: bd80 pop {r7, pc} + 8003464: 40021000 .word 0x40021000 + 8003468: 0800809c .word 0x0800809c + +0800346c : + * @note Each time PCLK2 changes, this function must be called to update the + * right PCLK2 value. Otherwise, any configuration based on this function will be incorrect. + * @retval PCLK2 frequency + */ +uint32_t HAL_RCC_GetPCLK2Freq(void) +{ + 800346c: b580 push {r7, lr} + 800346e: af00 add r7, sp, #0 + /* Get HCLK source and Compute PCLK2 frequency ---------------------------*/ + return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2) >> RCC_CFGR_PPRE2_Pos]); + 8003470: f7ff ffde bl 8003430 + 8003474: 4602 mov r2, r0 + 8003476: 4b05 ldr r3, [pc, #20] ; (800348c ) + 8003478: 685b ldr r3, [r3, #4] + 800347a: 0adb lsrs r3, r3, #11 + 800347c: f003 0307 and.w r3, r3, #7 + 8003480: 4903 ldr r1, [pc, #12] ; (8003490 ) + 8003482: 5ccb ldrb r3, [r1, r3] + 8003484: fa22 f303 lsr.w r3, r2, r3 +} + 8003488: 4618 mov r0, r3 + 800348a: bd80 pop {r7, pc} + 800348c: 40021000 .word 0x40021000 + 8003490: 0800809c .word 0x0800809c + +08003494 : * @brief This function provides delay (in milliseconds) based on CPU cycles method. * @param mdelay: specifies the delay time length, in milliseconds. * @retval None */ static void RCC_Delay(uint32_t mdelay) { - 8000d7c: b480 push {r7} - 8000d7e: b085 sub sp, #20 - 8000d80: af00 add r7, sp, #0 - 8000d82: 6078 str r0, [r7, #4] + 8003494: b480 push {r7} + 8003496: b085 sub sp, #20 + 8003498: af00 add r7, sp, #0 + 800349a: 6078 str r0, [r7, #4] __IO uint32_t Delay = mdelay * (SystemCoreClock / 8U / 1000U); - 8000d84: 4b0a ldr r3, [pc, #40] ; (8000db0 ) - 8000d86: 681b ldr r3, [r3, #0] - 8000d88: 4a0a ldr r2, [pc, #40] ; (8000db4 ) - 8000d8a: fba2 2303 umull r2, r3, r2, r3 - 8000d8e: 0a5b lsrs r3, r3, #9 - 8000d90: 687a ldr r2, [r7, #4] - 8000d92: fb02 f303 mul.w r3, r2, r3 - 8000d96: 60fb str r3, [r7, #12] + 800349c: 4b0a ldr r3, [pc, #40] ; (80034c8 ) + 800349e: 681b ldr r3, [r3, #0] + 80034a0: 4a0a ldr r2, [pc, #40] ; (80034cc ) + 80034a2: fba2 2303 umull r2, r3, r2, r3 + 80034a6: 0a5b lsrs r3, r3, #9 + 80034a8: 687a ldr r2, [r7, #4] + 80034aa: fb02 f303 mul.w r3, r2, r3 + 80034ae: 60fb str r3, [r7, #12] do { __NOP(); - 8000d98: bf00 nop + 80034b0: bf00 nop } while (Delay --); - 8000d9a: 68fb ldr r3, [r7, #12] - 8000d9c: 1e5a subs r2, r3, #1 - 8000d9e: 60fa str r2, [r7, #12] - 8000da0: 2b00 cmp r3, #0 - 8000da2: d1f9 bne.n 8000d98 + 80034b2: 68fb ldr r3, [r7, #12] + 80034b4: 1e5a subs r2, r3, #1 + 80034b6: 60fa str r2, [r7, #12] + 80034b8: 2b00 cmp r3, #0 + 80034ba: d1f9 bne.n 80034b0 } - 8000da4: bf00 nop - 8000da6: bf00 nop - 8000da8: 3714 adds r7, #20 - 8000daa: 46bd mov sp, r7 - 8000dac: bc80 pop {r7} - 8000dae: 4770 bx lr - 8000db0: 20000000 .word 0x20000000 - 8000db4: 10624dd3 .word 0x10624dd3 + 80034bc: bf00 nop + 80034be: bf00 nop + 80034c0: 3714 adds r7, #20 + 80034c2: 46bd mov sp, r7 + 80034c4: bc80 pop {r7} + 80034c6: 4770 bx lr + 80034c8: 20000000 .word 0x20000000 + 80034cc: 10624dd3 .word 0x10624dd3 -08000db8 <__libc_init_array>: - 8000db8: b570 push {r4, r5, r6, lr} - 8000dba: 2600 movs r6, #0 - 8000dbc: 4d0c ldr r5, [pc, #48] ; (8000df0 <__libc_init_array+0x38>) - 8000dbe: 4c0d ldr r4, [pc, #52] ; (8000df4 <__libc_init_array+0x3c>) - 8000dc0: 1b64 subs r4, r4, r5 - 8000dc2: 10a4 asrs r4, r4, #2 - 8000dc4: 42a6 cmp r6, r4 - 8000dc6: d109 bne.n 8000ddc <__libc_init_array+0x24> - 8000dc8: f000 f822 bl 8000e10 <_init> - 8000dcc: 2600 movs r6, #0 - 8000dce: 4d0a ldr r5, [pc, #40] ; (8000df8 <__libc_init_array+0x40>) - 8000dd0: 4c0a ldr r4, [pc, #40] ; (8000dfc <__libc_init_array+0x44>) - 8000dd2: 1b64 subs r4, r4, r5 - 8000dd4: 10a4 asrs r4, r4, #2 - 8000dd6: 42a6 cmp r6, r4 - 8000dd8: d105 bne.n 8000de6 <__libc_init_array+0x2e> - 8000dda: bd70 pop {r4, r5, r6, pc} - 8000ddc: f855 3b04 ldr.w r3, [r5], #4 - 8000de0: 4798 blx r3 - 8000de2: 3601 adds r6, #1 - 8000de4: e7ee b.n 8000dc4 <__libc_init_array+0xc> - 8000de6: f855 3b04 ldr.w r3, [r5], #4 - 8000dea: 4798 blx r3 - 8000dec: 3601 adds r6, #1 - 8000dee: e7f2 b.n 8000dd6 <__libc_init_array+0x1e> - 8000df0: 08000e48 .word 0x08000e48 - 8000df4: 08000e48 .word 0x08000e48 - 8000df8: 08000e48 .word 0x08000e48 - 8000dfc: 08000e4c .word 0x08000e4c +080034d0 : + * manually disable it. + * + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) +{ + 80034d0: b580 push {r7, lr} + 80034d2: b086 sub sp, #24 + 80034d4: af00 add r7, sp, #0 + 80034d6: 6078 str r0, [r7, #4] + uint32_t tickstart = 0U, temp_reg = 0U; + 80034d8: 2300 movs r3, #0 + 80034da: 613b str r3, [r7, #16] + 80034dc: 2300 movs r3, #0 + 80034de: 60fb str r3, [r7, #12] -08000e00 : - 8000e00: 4603 mov r3, r0 - 8000e02: 4402 add r2, r0 - 8000e04: 4293 cmp r3, r2 - 8000e06: d100 bne.n 8000e0a - 8000e08: 4770 bx lr - 8000e0a: f803 1b01 strb.w r1, [r3], #1 - 8000e0e: e7f9 b.n 8000e04 + /* Check the parameters */ + assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection)); -08000e10 <_init>: - 8000e10: b5f8 push {r3, r4, r5, r6, r7, lr} - 8000e12: bf00 nop - 8000e14: bcf8 pop {r3, r4, r5, r6, r7} - 8000e16: bc08 pop {r3} - 8000e18: 469e mov lr, r3 - 8000e1a: 4770 bx lr + /*------------------------------- RTC/LCD Configuration ------------------------*/ + if ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)) + 80034e0: 687b ldr r3, [r7, #4] + 80034e2: 681b ldr r3, [r3, #0] + 80034e4: f003 0301 and.w r3, r3, #1 + 80034e8: 2b00 cmp r3, #0 + 80034ea: d07d beq.n 80035e8 + { + FlagStatus pwrclkchanged = RESET; + 80034ec: 2300 movs r3, #0 + 80034ee: 75fb strb r3, [r7, #23] + assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection)); -08000e1c <_fini>: - 8000e1c: b5f8 push {r3, r4, r5, r6, r7, lr} - 8000e1e: bf00 nop - 8000e20: bcf8 pop {r3, r4, r5, r6, r7} - 8000e22: bc08 pop {r3} - 8000e24: 469e mov lr, r3 - 8000e26: 4770 bx lr + /* As soon as function is called to change RTC clock source, activation of the + power domain is done. */ + /* Requires to enable write access to Backup Domain of necessary */ + if (__HAL_RCC_PWR_IS_CLK_DISABLED()) + 80034f0: 4b4f ldr r3, [pc, #316] ; (8003630 ) + 80034f2: 69db ldr r3, [r3, #28] + 80034f4: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 + 80034f8: 2b00 cmp r3, #0 + 80034fa: d10d bne.n 8003518 + { + __HAL_RCC_PWR_CLK_ENABLE(); + 80034fc: 4b4c ldr r3, [pc, #304] ; (8003630 ) + 80034fe: 69db ldr r3, [r3, #28] + 8003500: 4a4b ldr r2, [pc, #300] ; (8003630 ) + 8003502: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 + 8003506: 61d3 str r3, [r2, #28] + 8003508: 4b49 ldr r3, [pc, #292] ; (8003630 ) + 800350a: 69db ldr r3, [r3, #28] + 800350c: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 + 8003510: 60bb str r3, [r7, #8] + 8003512: 68bb ldr r3, [r7, #8] + pwrclkchanged = SET; + 8003514: 2301 movs r3, #1 + 8003516: 75fb strb r3, [r7, #23] + } + + if (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8003518: 4b46 ldr r3, [pc, #280] ; (8003634 ) + 800351a: 681b ldr r3, [r3, #0] + 800351c: f403 7380 and.w r3, r3, #256 ; 0x100 + 8003520: 2b00 cmp r3, #0 + 8003522: d118 bne.n 8003556 + { + /* Enable write access to Backup domain */ + SET_BIT(PWR->CR, PWR_CR_DBP); + 8003524: 4b43 ldr r3, [pc, #268] ; (8003634 ) + 8003526: 681b ldr r3, [r3, #0] + 8003528: 4a42 ldr r2, [pc, #264] ; (8003634 ) + 800352a: f443 7380 orr.w r3, r3, #256 ; 0x100 + 800352e: 6013 str r3, [r2, #0] + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + 8003530: f7fd f912 bl 8000758 + 8003534: 6138 str r0, [r7, #16] + + while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8003536: e008 b.n 800354a + { + if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 8003538: f7fd f90e bl 8000758 + 800353c: 4602 mov r2, r0 + 800353e: 693b ldr r3, [r7, #16] + 8003540: 1ad3 subs r3, r2, r3 + 8003542: 2b64 cmp r3, #100 ; 0x64 + 8003544: d901 bls.n 800354a + { + return HAL_TIMEOUT; + 8003546: 2303 movs r3, #3 + 8003548: e06d b.n 8003626 + while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 800354a: 4b3a ldr r3, [pc, #232] ; (8003634 ) + 800354c: 681b ldr r3, [r3, #0] + 800354e: f403 7380 and.w r3, r3, #256 ; 0x100 + 8003552: 2b00 cmp r3, #0 + 8003554: d0f0 beq.n 8003538 + } + } + } + + /* Reset the Backup domain only if the RTC Clock source selection is modified from reset value */ + temp_reg = (RCC->BDCR & RCC_BDCR_RTCSEL); + 8003556: 4b36 ldr r3, [pc, #216] ; (8003630 ) + 8003558: 6a1b ldr r3, [r3, #32] + 800355a: f403 7340 and.w r3, r3, #768 ; 0x300 + 800355e: 60fb str r3, [r7, #12] + if ((temp_reg != 0x00000000U) && (temp_reg != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL))) + 8003560: 68fb ldr r3, [r7, #12] + 8003562: 2b00 cmp r3, #0 + 8003564: d02e beq.n 80035c4 + 8003566: 687b ldr r3, [r7, #4] + 8003568: 685b ldr r3, [r3, #4] + 800356a: f403 7340 and.w r3, r3, #768 ; 0x300 + 800356e: 68fa ldr r2, [r7, #12] + 8003570: 429a cmp r2, r3 + 8003572: d027 beq.n 80035c4 + { + /* Store the content of BDCR register before the reset of Backup Domain */ + temp_reg = (RCC->BDCR & ~(RCC_BDCR_RTCSEL)); + 8003574: 4b2e ldr r3, [pc, #184] ; (8003630 ) + 8003576: 6a1b ldr r3, [r3, #32] + 8003578: f423 7340 bic.w r3, r3, #768 ; 0x300 + 800357c: 60fb str r3, [r7, #12] + /* RTC Clock selection can be changed only if the Backup Domain is reset */ + __HAL_RCC_BACKUPRESET_FORCE(); + 800357e: 4b2e ldr r3, [pc, #184] ; (8003638 ) + 8003580: 2201 movs r2, #1 + 8003582: 601a str r2, [r3, #0] + __HAL_RCC_BACKUPRESET_RELEASE(); + 8003584: 4b2c ldr r3, [pc, #176] ; (8003638 ) + 8003586: 2200 movs r2, #0 + 8003588: 601a str r2, [r3, #0] + /* Restore the Content of BDCR register */ + RCC->BDCR = temp_reg; + 800358a: 4a29 ldr r2, [pc, #164] ; (8003630 ) + 800358c: 68fb ldr r3, [r7, #12] + 800358e: 6213 str r3, [r2, #32] + + /* Wait for LSERDY if LSE was enabled */ + if (HAL_IS_BIT_SET(temp_reg, RCC_BDCR_LSEON)) + 8003590: 68fb ldr r3, [r7, #12] + 8003592: f003 0301 and.w r3, r3, #1 + 8003596: 2b00 cmp r3, #0 + 8003598: d014 beq.n 80035c4 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800359a: f7fd f8dd bl 8000758 + 800359e: 6138 str r0, [r7, #16] + + /* Wait till LSE is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) + 80035a0: e00a b.n 80035b8 + { + if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) + 80035a2: f7fd f8d9 bl 8000758 + 80035a6: 4602 mov r2, r0 + 80035a8: 693b ldr r3, [r7, #16] + 80035aa: 1ad3 subs r3, r2, r3 + 80035ac: f241 3288 movw r2, #5000 ; 0x1388 + 80035b0: 4293 cmp r3, r2 + 80035b2: d901 bls.n 80035b8 + { + return HAL_TIMEOUT; + 80035b4: 2303 movs r3, #3 + 80035b6: e036 b.n 8003626 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) + 80035b8: 4b1d ldr r3, [pc, #116] ; (8003630 ) + 80035ba: 6a1b ldr r3, [r3, #32] + 80035bc: f003 0302 and.w r3, r3, #2 + 80035c0: 2b00 cmp r3, #0 + 80035c2: d0ee beq.n 80035a2 + } + } + } + } + __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); + 80035c4: 4b1a ldr r3, [pc, #104] ; (8003630 ) + 80035c6: 6a1b ldr r3, [r3, #32] + 80035c8: f423 7240 bic.w r2, r3, #768 ; 0x300 + 80035cc: 687b ldr r3, [r7, #4] + 80035ce: 685b ldr r3, [r3, #4] + 80035d0: 4917 ldr r1, [pc, #92] ; (8003630 ) + 80035d2: 4313 orrs r3, r2 + 80035d4: 620b str r3, [r1, #32] + + /* Require to disable power clock if necessary */ + if (pwrclkchanged == SET) + 80035d6: 7dfb ldrb r3, [r7, #23] + 80035d8: 2b01 cmp r3, #1 + 80035da: d105 bne.n 80035e8 + { + __HAL_RCC_PWR_CLK_DISABLE(); + 80035dc: 4b14 ldr r3, [pc, #80] ; (8003630 ) + 80035de: 69db ldr r3, [r3, #28] + 80035e0: 4a13 ldr r2, [pc, #76] ; (8003630 ) + 80035e2: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 + 80035e6: 61d3 str r3, [r2, #28] + } + } + + /*------------------------------ ADC clock Configuration ------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) + 80035e8: 687b ldr r3, [r7, #4] + 80035ea: 681b ldr r3, [r3, #0] + 80035ec: f003 0302 and.w r3, r3, #2 + 80035f0: 2b00 cmp r3, #0 + 80035f2: d008 beq.n 8003606 + { + /* Check the parameters */ + assert_param(IS_RCC_ADCPLLCLK_DIV(PeriphClkInit->AdcClockSelection)); + + /* Configure the ADC clock source */ + __HAL_RCC_ADC_CONFIG(PeriphClkInit->AdcClockSelection); + 80035f4: 4b0e ldr r3, [pc, #56] ; (8003630 ) + 80035f6: 685b ldr r3, [r3, #4] + 80035f8: f423 4240 bic.w r2, r3, #49152 ; 0xc000 + 80035fc: 687b ldr r3, [r7, #4] + 80035fe: 689b ldr r3, [r3, #8] + 8003600: 490b ldr r1, [pc, #44] ; (8003630 ) + 8003602: 4313 orrs r3, r2 + 8003604: 604b str r3, [r1, #4] + +#if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\ + || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)\ + || defined(STM32F105xC) || defined(STM32F107xC) + /*------------------------------ USB clock Configuration ------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USB) == RCC_PERIPHCLK_USB) + 8003606: 687b ldr r3, [r7, #4] + 8003608: 681b ldr r3, [r3, #0] + 800360a: f003 0310 and.w r3, r3, #16 + 800360e: 2b00 cmp r3, #0 + 8003610: d008 beq.n 8003624 + { + /* Check the parameters */ + assert_param(IS_RCC_USBPLLCLK_DIV(PeriphClkInit->UsbClockSelection)); + + /* Configure the USB clock source */ + __HAL_RCC_USB_CONFIG(PeriphClkInit->UsbClockSelection); + 8003612: 4b07 ldr r3, [pc, #28] ; (8003630 ) + 8003614: 685b ldr r3, [r3, #4] + 8003616: f423 0280 bic.w r2, r3, #4194304 ; 0x400000 + 800361a: 687b ldr r3, [r7, #4] + 800361c: 68db ldr r3, [r3, #12] + 800361e: 4904 ldr r1, [pc, #16] ; (8003630 ) + 8003620: 4313 orrs r3, r2 + 8003622: 604b str r3, [r1, #4] + } +#endif /* STM32F102x6 || STM32F102xB || STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */ + + return HAL_OK; + 8003624: 2300 movs r3, #0 +} + 8003626: 4618 mov r0, r3 + 8003628: 3718 adds r7, #24 + 800362a: 46bd mov sp, r7 + 800362c: bd80 pop {r7, pc} + 800362e: bf00 nop + 8003630: 40021000 .word 0x40021000 + 8003634: 40007000 .word 0x40007000 + 8003638: 42420440 .word 0x42420440 + +0800363c : + * @param huart Pointer to a UART_HandleTypeDef structure that contains + * the configuration information for the specified UART module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart) +{ + 800363c: b580 push {r7, lr} + 800363e: b082 sub sp, #8 + 8003640: af00 add r7, sp, #0 + 8003642: 6078 str r0, [r7, #4] + /* Check the UART handle allocation */ + if (huart == NULL) + 8003644: 687b ldr r3, [r7, #4] + 8003646: 2b00 cmp r3, #0 + 8003648: d101 bne.n 800364e + { + return HAL_ERROR; + 800364a: 2301 movs r3, #1 + 800364c: e03f b.n 80036ce + assert_param(IS_UART_WORD_LENGTH(huart->Init.WordLength)); +#if defined(USART_CR1_OVER8) + assert_param(IS_UART_OVERSAMPLING(huart->Init.OverSampling)); +#endif /* USART_CR1_OVER8 */ + + if (huart->gState == HAL_UART_STATE_RESET) + 800364e: 687b ldr r3, [r7, #4] + 8003650: f893 303d ldrb.w r3, [r3, #61] ; 0x3d + 8003654: b2db uxtb r3, r3 + 8003656: 2b00 cmp r3, #0 + 8003658: d106 bne.n 8003668 + { + /* Allocate lock resource and initialize it */ + huart->Lock = HAL_UNLOCKED; + 800365a: 687b ldr r3, [r7, #4] + 800365c: 2200 movs r2, #0 + 800365e: f883 203c strb.w r2, [r3, #60] ; 0x3c + + /* Init the low level hardware */ + huart->MspInitCallback(huart); +#else + /* Init the low level hardware : GPIO, CLOCK */ + HAL_UART_MspInit(huart); + 8003662: 6878 ldr r0, [r7, #4] + 8003664: f7fc ff76 bl 8000554 +#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ + } + + huart->gState = HAL_UART_STATE_BUSY; + 8003668: 687b ldr r3, [r7, #4] + 800366a: 2224 movs r2, #36 ; 0x24 + 800366c: f883 203d strb.w r2, [r3, #61] ; 0x3d + + /* Disable the peripheral */ + __HAL_UART_DISABLE(huart); + 8003670: 687b ldr r3, [r7, #4] + 8003672: 681b ldr r3, [r3, #0] + 8003674: 68da ldr r2, [r3, #12] + 8003676: 687b ldr r3, [r7, #4] + 8003678: 681b ldr r3, [r3, #0] + 800367a: f422 5200 bic.w r2, r2, #8192 ; 0x2000 + 800367e: 60da str r2, [r3, #12] + + /* Set the UART Communication parameters */ + UART_SetConfig(huart); + 8003680: 6878 ldr r0, [r7, #4] + 8003682: f000 f829 bl 80036d8 + + /* In asynchronous mode, the following bits must be kept cleared: + - LINEN and CLKEN bits in the USART_CR2 register, + - SCEN, HDSEL and IREN bits in the USART_CR3 register.*/ + CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); + 8003686: 687b ldr r3, [r7, #4] + 8003688: 681b ldr r3, [r3, #0] + 800368a: 691a ldr r2, [r3, #16] + 800368c: 687b ldr r3, [r7, #4] + 800368e: 681b ldr r3, [r3, #0] + 8003690: f422 4290 bic.w r2, r2, #18432 ; 0x4800 + 8003694: 611a str r2, [r3, #16] + CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); + 8003696: 687b ldr r3, [r7, #4] + 8003698: 681b ldr r3, [r3, #0] + 800369a: 695a ldr r2, [r3, #20] + 800369c: 687b ldr r3, [r7, #4] + 800369e: 681b ldr r3, [r3, #0] + 80036a0: f022 022a bic.w r2, r2, #42 ; 0x2a + 80036a4: 615a str r2, [r3, #20] + + /* Enable the peripheral */ + __HAL_UART_ENABLE(huart); + 80036a6: 687b ldr r3, [r7, #4] + 80036a8: 681b ldr r3, [r3, #0] + 80036aa: 68da ldr r2, [r3, #12] + 80036ac: 687b ldr r3, [r7, #4] + 80036ae: 681b ldr r3, [r3, #0] + 80036b0: f442 5200 orr.w r2, r2, #8192 ; 0x2000 + 80036b4: 60da str r2, [r3, #12] + + /* Initialize the UART state */ + huart->ErrorCode = HAL_UART_ERROR_NONE; + 80036b6: 687b ldr r3, [r7, #4] + 80036b8: 2200 movs r2, #0 + 80036ba: 641a str r2, [r3, #64] ; 0x40 + huart->gState = HAL_UART_STATE_READY; + 80036bc: 687b ldr r3, [r7, #4] + 80036be: 2220 movs r2, #32 + 80036c0: f883 203d strb.w r2, [r3, #61] ; 0x3d + huart->RxState = HAL_UART_STATE_READY; + 80036c4: 687b ldr r3, [r7, #4] + 80036c6: 2220 movs r2, #32 + 80036c8: f883 203e strb.w r2, [r3, #62] ; 0x3e + + return HAL_OK; + 80036cc: 2300 movs r3, #0 +} + 80036ce: 4618 mov r0, r3 + 80036d0: 3708 adds r7, #8 + 80036d2: 46bd mov sp, r7 + 80036d4: bd80 pop {r7, pc} + ... + +080036d8 : + * @param huart Pointer to a UART_HandleTypeDef structure that contains + * the configuration information for the specified UART module. + * @retval None + */ +static void UART_SetConfig(UART_HandleTypeDef *huart) +{ + 80036d8: b580 push {r7, lr} + 80036da: b084 sub sp, #16 + 80036dc: af00 add r7, sp, #0 + 80036de: 6078 str r0, [r7, #4] + assert_param(IS_UART_MODE(huart->Init.Mode)); + + /*-------------------------- USART CR2 Configuration -----------------------*/ + /* Configure the UART Stop Bits: Set STOP[13:12] bits + according to huart->Init.StopBits value */ + MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits); + 80036e0: 687b ldr r3, [r7, #4] + 80036e2: 681b ldr r3, [r3, #0] + 80036e4: 691b ldr r3, [r3, #16] + 80036e6: f423 5140 bic.w r1, r3, #12288 ; 0x3000 + 80036ea: 687b ldr r3, [r7, #4] + 80036ec: 68da ldr r2, [r3, #12] + 80036ee: 687b ldr r3, [r7, #4] + 80036f0: 681b ldr r3, [r3, #0] + 80036f2: 430a orrs r2, r1 + 80036f4: 611a str r2, [r3, #16] + tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling; + MODIFY_REG(huart->Instance->CR1, + (uint32_t)(USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | USART_CR1_TE | USART_CR1_RE | USART_CR1_OVER8), + tmpreg); +#else + tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode; + 80036f6: 687b ldr r3, [r7, #4] + 80036f8: 689a ldr r2, [r3, #8] + 80036fa: 687b ldr r3, [r7, #4] + 80036fc: 691b ldr r3, [r3, #16] + 80036fe: 431a orrs r2, r3 + 8003700: 687b ldr r3, [r7, #4] + 8003702: 695b ldr r3, [r3, #20] + 8003704: 4313 orrs r3, r2 + 8003706: 60bb str r3, [r7, #8] + MODIFY_REG(huart->Instance->CR1, + 8003708: 687b ldr r3, [r7, #4] + 800370a: 681b ldr r3, [r3, #0] + 800370c: 68db ldr r3, [r3, #12] + 800370e: f423 53b0 bic.w r3, r3, #5632 ; 0x1600 + 8003712: f023 030c bic.w r3, r3, #12 + 8003716: 687a ldr r2, [r7, #4] + 8003718: 6812 ldr r2, [r2, #0] + 800371a: 68b9 ldr r1, [r7, #8] + 800371c: 430b orrs r3, r1 + 800371e: 60d3 str r3, [r2, #12] + tmpreg); +#endif /* USART_CR1_OVER8 */ + + /*-------------------------- USART CR3 Configuration -----------------------*/ + /* Configure the UART HFC: Set CTSE and RTSE bits according to huart->Init.HwFlowCtl value */ + MODIFY_REG(huart->Instance->CR3, (USART_CR3_RTSE | USART_CR3_CTSE), huart->Init.HwFlowCtl); + 8003720: 687b ldr r3, [r7, #4] + 8003722: 681b ldr r3, [r3, #0] + 8003724: 695b ldr r3, [r3, #20] + 8003726: f423 7140 bic.w r1, r3, #768 ; 0x300 + 800372a: 687b ldr r3, [r7, #4] + 800372c: 699a ldr r2, [r3, #24] + 800372e: 687b ldr r3, [r7, #4] + 8003730: 681b ldr r3, [r3, #0] + 8003732: 430a orrs r2, r1 + 8003734: 615a str r2, [r3, #20] + + + if(huart->Instance == USART1) + 8003736: 687b ldr r3, [r7, #4] + 8003738: 681b ldr r3, [r3, #0] + 800373a: 4a2c ldr r2, [pc, #176] ; (80037ec ) + 800373c: 4293 cmp r3, r2 + 800373e: d103 bne.n 8003748 + { + pclk = HAL_RCC_GetPCLK2Freq(); + 8003740: f7ff fe94 bl 800346c + 8003744: 60f8 str r0, [r7, #12] + 8003746: e002 b.n 800374e + } + else + { + pclk = HAL_RCC_GetPCLK1Freq(); + 8003748: f7ff fe7c bl 8003444 + 800374c: 60f8 str r0, [r7, #12] + else + { + huart->Instance->BRR = UART_BRR_SAMPLING16(pclk, huart->Init.BaudRate); + } +#else + huart->Instance->BRR = UART_BRR_SAMPLING16(pclk, huart->Init.BaudRate); + 800374e: 68fa ldr r2, [r7, #12] + 8003750: 4613 mov r3, r2 + 8003752: 009b lsls r3, r3, #2 + 8003754: 4413 add r3, r2 + 8003756: 009a lsls r2, r3, #2 + 8003758: 441a add r2, r3 + 800375a: 687b ldr r3, [r7, #4] + 800375c: 685b ldr r3, [r3, #4] + 800375e: 009b lsls r3, r3, #2 + 8003760: fbb2 f3f3 udiv r3, r2, r3 + 8003764: 4a22 ldr r2, [pc, #136] ; (80037f0 ) + 8003766: fba2 2303 umull r2, r3, r2, r3 + 800376a: 095b lsrs r3, r3, #5 + 800376c: 0119 lsls r1, r3, #4 + 800376e: 68fa ldr r2, [r7, #12] + 8003770: 4613 mov r3, r2 + 8003772: 009b lsls r3, r3, #2 + 8003774: 4413 add r3, r2 + 8003776: 009a lsls r2, r3, #2 + 8003778: 441a add r2, r3 + 800377a: 687b ldr r3, [r7, #4] + 800377c: 685b ldr r3, [r3, #4] + 800377e: 009b lsls r3, r3, #2 + 8003780: fbb2 f2f3 udiv r2, r2, r3 + 8003784: 4b1a ldr r3, [pc, #104] ; (80037f0 ) + 8003786: fba3 0302 umull r0, r3, r3, r2 + 800378a: 095b lsrs r3, r3, #5 + 800378c: 2064 movs r0, #100 ; 0x64 + 800378e: fb00 f303 mul.w r3, r0, r3 + 8003792: 1ad3 subs r3, r2, r3 + 8003794: 011b lsls r3, r3, #4 + 8003796: 3332 adds r3, #50 ; 0x32 + 8003798: 4a15 ldr r2, [pc, #84] ; (80037f0 ) + 800379a: fba2 2303 umull r2, r3, r2, r3 + 800379e: 095b lsrs r3, r3, #5 + 80037a0: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 80037a4: 4419 add r1, r3 + 80037a6: 68fa ldr r2, [r7, #12] + 80037a8: 4613 mov r3, r2 + 80037aa: 009b lsls r3, r3, #2 + 80037ac: 4413 add r3, r2 + 80037ae: 009a lsls r2, r3, #2 + 80037b0: 441a add r2, r3 + 80037b2: 687b ldr r3, [r7, #4] + 80037b4: 685b ldr r3, [r3, #4] + 80037b6: 009b lsls r3, r3, #2 + 80037b8: fbb2 f2f3 udiv r2, r2, r3 + 80037bc: 4b0c ldr r3, [pc, #48] ; (80037f0 ) + 80037be: fba3 0302 umull r0, r3, r3, r2 + 80037c2: 095b lsrs r3, r3, #5 + 80037c4: 2064 movs r0, #100 ; 0x64 + 80037c6: fb00 f303 mul.w r3, r0, r3 + 80037ca: 1ad3 subs r3, r2, r3 + 80037cc: 011b lsls r3, r3, #4 + 80037ce: 3332 adds r3, #50 ; 0x32 + 80037d0: 4a07 ldr r2, [pc, #28] ; (80037f0 ) + 80037d2: fba2 2303 umull r2, r3, r2, r3 + 80037d6: 095b lsrs r3, r3, #5 + 80037d8: f003 020f and.w r2, r3, #15 + 80037dc: 687b ldr r3, [r7, #4] + 80037de: 681b ldr r3, [r3, #0] + 80037e0: 440a add r2, r1 + 80037e2: 609a str r2, [r3, #8] +#endif /* USART_CR1_OVER8 */ +} + 80037e4: bf00 nop + 80037e6: 3710 adds r7, #16 + 80037e8: 46bd mov sp, r7 + 80037ea: bd80 pop {r7, pc} + 80037ec: 40013800 .word 0x40013800 + 80037f0: 51eb851f .word 0x51eb851f + +080037f4 : + * @param cfg pointer to a USB_CfgTypeDef structure that contains + * the configuration information for the specified USBx peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef USB_CoreInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg) +{ + 80037f4: b084 sub sp, #16 + 80037f6: b480 push {r7} + 80037f8: b083 sub sp, #12 + 80037fa: af00 add r7, sp, #0 + 80037fc: 6078 str r0, [r7, #4] + 80037fe: f107 0014 add.w r0, r7, #20 + 8003802: e880 000e stmia.w r0, {r1, r2, r3} + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + + return HAL_OK; + 8003806: 2300 movs r3, #0 +} + 8003808: 4618 mov r0, r3 + 800380a: 370c adds r7, #12 + 800380c: 46bd mov sp, r7 + 800380e: bc80 pop {r7} + 8003810: b004 add sp, #16 + 8003812: 4770 bx lr + +08003814 : + * Enables the controller's Global Int in the AHB Config reg + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_EnableGlobalInt(USB_TypeDef *USBx) +{ + 8003814: b480 push {r7} + 8003816: b085 sub sp, #20 + 8003818: af00 add r7, sp, #0 + 800381a: 6078 str r0, [r7, #4] + uint32_t winterruptmask; + + /* Clear pending interrupts */ + USBx->ISTR = 0U; + 800381c: 687b ldr r3, [r7, #4] + 800381e: 2200 movs r2, #0 + 8003820: f8a3 2044 strh.w r2, [r3, #68] ; 0x44 + + /* Set winterruptmask variable */ + winterruptmask = USB_CNTR_CTRM | USB_CNTR_WKUPM | + 8003824: f44f 433f mov.w r3, #48896 ; 0xbf00 + 8003828: 60fb str r3, [r7, #12] + USB_CNTR_SUSPM | USB_CNTR_ERRM | + USB_CNTR_SOFM | USB_CNTR_ESOFM | + USB_CNTR_RESETM; + + /* Set interrupt mask */ + USBx->CNTR = (uint16_t)winterruptmask; + 800382a: 68fb ldr r3, [r7, #12] + 800382c: b29a uxth r2, r3 + 800382e: 687b ldr r3, [r7, #4] + 8003830: f8a3 2040 strh.w r2, [r3, #64] ; 0x40 + + return HAL_OK; + 8003834: 2300 movs r3, #0 +} + 8003836: 4618 mov r0, r3 + 8003838: 3714 adds r7, #20 + 800383a: 46bd mov sp, r7 + 800383c: bc80 pop {r7} + 800383e: 4770 bx lr + +08003840 : + * Disable the controller's Global Int in the AHB Config reg + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DisableGlobalInt(USB_TypeDef *USBx) +{ + 8003840: b480 push {r7} + 8003842: b085 sub sp, #20 + 8003844: af00 add r7, sp, #0 + 8003846: 6078 str r0, [r7, #4] + uint32_t winterruptmask; + + /* Set winterruptmask variable */ + winterruptmask = USB_CNTR_CTRM | USB_CNTR_WKUPM | + 8003848: f44f 433f mov.w r3, #48896 ; 0xbf00 + 800384c: 60fb str r3, [r7, #12] + USB_CNTR_SUSPM | USB_CNTR_ERRM | + USB_CNTR_SOFM | USB_CNTR_ESOFM | + USB_CNTR_RESETM; + + /* Clear interrupt mask */ + USBx->CNTR &= (uint16_t)(~winterruptmask); + 800384e: 687b ldr r3, [r7, #4] + 8003850: f8b3 3040 ldrh.w r3, [r3, #64] ; 0x40 + 8003854: b29a uxth r2, r3 + 8003856: 68fb ldr r3, [r7, #12] + 8003858: b29b uxth r3, r3 + 800385a: 43db mvns r3, r3 + 800385c: b29b uxth r3, r3 + 800385e: 4013 ands r3, r2 + 8003860: b29a uxth r2, r3 + 8003862: 687b ldr r3, [r7, #4] + 8003864: f8a3 2040 strh.w r2, [r3, #64] ; 0x40 + + return HAL_OK; + 8003868: 2300 movs r3, #0 +} + 800386a: 4618 mov r0, r3 + 800386c: 3714 adds r7, #20 + 800386e: 46bd mov sp, r7 + 8003870: bc80 pop {r7} + 8003872: 4770 bx lr + +08003874 : + * This parameter can be one of the these values: + * @arg USB_DEVICE_MODE Peripheral mode + * @retval HAL status + */ +HAL_StatusTypeDef USB_SetCurrentMode(USB_TypeDef *USBx, USB_ModeTypeDef mode) +{ + 8003874: b480 push {r7} + 8003876: b083 sub sp, #12 + 8003878: af00 add r7, sp, #0 + 800387a: 6078 str r0, [r7, #4] + 800387c: 460b mov r3, r1 + 800387e: 70fb strb r3, [r7, #3] + + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + return HAL_OK; + 8003880: 2300 movs r3, #0 +} + 8003882: 4618 mov r0, r3 + 8003884: 370c adds r7, #12 + 8003886: 46bd mov sp, r7 + 8003888: bc80 pop {r7} + 800388a: 4770 bx lr + +0800388c : + * @param cfg pointer to a USB_CfgTypeDef structure that contains + * the configuration information for the specified USBx peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg) +{ + 800388c: b084 sub sp, #16 + 800388e: b480 push {r7} + 8003890: b083 sub sp, #12 + 8003892: af00 add r7, sp, #0 + 8003894: 6078 str r0, [r7, #4] + 8003896: f107 0014 add.w r0, r7, #20 + 800389a: e880 000e stmia.w r0, {r1, r2, r3} + /* Prevent unused argument(s) compilation warning */ + UNUSED(cfg); + + /* Init Device */ + /* CNTR_FRES = 1 */ + USBx->CNTR = (uint16_t)USB_CNTR_FRES; + 800389e: 687b ldr r3, [r7, #4] + 80038a0: 2201 movs r2, #1 + 80038a2: f8a3 2040 strh.w r2, [r3, #64] ; 0x40 + + /* CNTR_FRES = 0 */ + USBx->CNTR = 0U; + 80038a6: 687b ldr r3, [r7, #4] + 80038a8: 2200 movs r2, #0 + 80038aa: f8a3 2040 strh.w r2, [r3, #64] ; 0x40 + + /* Clear pending interrupts */ + USBx->ISTR = 0U; + 80038ae: 687b ldr r3, [r7, #4] + 80038b0: 2200 movs r2, #0 + 80038b2: f8a3 2044 strh.w r2, [r3, #68] ; 0x44 + + /*Set Btable Address*/ + USBx->BTABLE = BTABLE_ADDRESS; + 80038b6: 687b ldr r3, [r7, #4] + 80038b8: 2200 movs r2, #0 + 80038ba: f8a3 2050 strh.w r2, [r3, #80] ; 0x50 + + return HAL_OK; + 80038be: 2300 movs r3, #0 +} + 80038c0: 4618 mov r0, r3 + 80038c2: 370c adds r7, #12 + 80038c4: 46bd mov sp, r7 + 80038c6: bc80 pop {r7} + 80038c8: b004 add sp, #16 + 80038ca: 4770 bx lr + +080038cc : + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_ActivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + 80038cc: b480 push {r7} + 80038ce: b09b sub sp, #108 ; 0x6c + 80038d0: af00 add r7, sp, #0 + 80038d2: 6078 str r0, [r7, #4] + 80038d4: 6039 str r1, [r7, #0] + HAL_StatusTypeDef ret = HAL_OK; + 80038d6: 2300 movs r3, #0 + 80038d8: f887 3067 strb.w r3, [r7, #103] ; 0x67 + uint16_t wEpRegVal; + + wEpRegVal = PCD_GET_ENDPOINT(USBx, ep->num) & USB_EP_T_MASK; + 80038dc: 687a ldr r2, [r7, #4] + 80038de: 683b ldr r3, [r7, #0] + 80038e0: 781b ldrb r3, [r3, #0] + 80038e2: 009b lsls r3, r3, #2 + 80038e4: 4413 add r3, r2 + 80038e6: 881b ldrh r3, [r3, #0] + 80038e8: b29b uxth r3, r3 + 80038ea: f423 43ec bic.w r3, r3, #30208 ; 0x7600 + 80038ee: f023 0370 bic.w r3, r3, #112 ; 0x70 + 80038f2: f8a7 3064 strh.w r3, [r7, #100] ; 0x64 + + /* initialize Endpoint */ + switch (ep->type) + 80038f6: 683b ldr r3, [r7, #0] + 80038f8: 78db ldrb r3, [r3, #3] + 80038fa: 2b03 cmp r3, #3 + 80038fc: d81f bhi.n 800393e + 80038fe: a201 add r2, pc, #4 ; (adr r2, 8003904 ) + 8003900: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8003904: 08003915 .word 0x08003915 + 8003908: 08003931 .word 0x08003931 + 800390c: 08003947 .word 0x08003947 + 8003910: 08003923 .word 0x08003923 + { + case EP_TYPE_CTRL: + wEpRegVal |= USB_EP_CONTROL; + 8003914: f8b7 3064 ldrh.w r3, [r7, #100] ; 0x64 + 8003918: f443 7300 orr.w r3, r3, #512 ; 0x200 + 800391c: f8a7 3064 strh.w r3, [r7, #100] ; 0x64 + break; + 8003920: e012 b.n 8003948 + case EP_TYPE_BULK: + wEpRegVal |= USB_EP_BULK; + break; + + case EP_TYPE_INTR: + wEpRegVal |= USB_EP_INTERRUPT; + 8003922: f8b7 3064 ldrh.w r3, [r7, #100] ; 0x64 + 8003926: f443 63c0 orr.w r3, r3, #1536 ; 0x600 + 800392a: f8a7 3064 strh.w r3, [r7, #100] ; 0x64 + break; + 800392e: e00b b.n 8003948 + + case EP_TYPE_ISOC: + wEpRegVal |= USB_EP_ISOCHRONOUS; + 8003930: f8b7 3064 ldrh.w r3, [r7, #100] ; 0x64 + 8003934: f443 6380 orr.w r3, r3, #1024 ; 0x400 + 8003938: f8a7 3064 strh.w r3, [r7, #100] ; 0x64 + break; + 800393c: e004 b.n 8003948 + + default: + ret = HAL_ERROR; + 800393e: 2301 movs r3, #1 + 8003940: f887 3067 strb.w r3, [r7, #103] ; 0x67 + break; + 8003944: e000 b.n 8003948 + break; + 8003946: bf00 nop + } + + PCD_SET_ENDPOINT(USBx, ep->num, (wEpRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX)); + 8003948: 687a ldr r2, [r7, #4] + 800394a: 683b ldr r3, [r7, #0] + 800394c: 781b ldrb r3, [r3, #0] + 800394e: 009b lsls r3, r3, #2 + 8003950: 441a add r2, r3 + 8003952: f8b7 3064 ldrh.w r3, [r7, #100] ; 0x64 + 8003956: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 800395a: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 800395e: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8003962: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8003966: b29b uxth r3, r3 + 8003968: 8013 strh r3, [r2, #0] + + PCD_SET_EP_ADDRESS(USBx, ep->num, ep->num); + 800396a: 687a ldr r2, [r7, #4] + 800396c: 683b ldr r3, [r7, #0] + 800396e: 781b ldrb r3, [r3, #0] + 8003970: 009b lsls r3, r3, #2 + 8003972: 4413 add r3, r2 + 8003974: 881b ldrh r3, [r3, #0] + 8003976: b29b uxth r3, r3 + 8003978: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 800397c: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8003980: b29a uxth r2, r3 + 8003982: 683b ldr r3, [r7, #0] + 8003984: 781b ldrb r3, [r3, #0] + 8003986: b29b uxth r3, r3 + 8003988: 4313 orrs r3, r2 + 800398a: f8a7 305e strh.w r3, [r7, #94] ; 0x5e + 800398e: 687a ldr r2, [r7, #4] + 8003990: 683b ldr r3, [r7, #0] + 8003992: 781b ldrb r3, [r3, #0] + 8003994: 009b lsls r3, r3, #2 + 8003996: 441a add r2, r3 + 8003998: f8b7 305e ldrh.w r3, [r7, #94] ; 0x5e + 800399c: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 80039a0: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 80039a4: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 80039a8: f043 0380 orr.w r3, r3, #128 ; 0x80 + 80039ac: b29b uxth r3, r3 + 80039ae: 8013 strh r3, [r2, #0] + + if (ep->doublebuffer == 0U) + 80039b0: 683b ldr r3, [r7, #0] + 80039b2: 7b1b ldrb r3, [r3, #12] + 80039b4: 2b00 cmp r3, #0 + 80039b6: f040 8149 bne.w 8003c4c + { + if (ep->is_in != 0U) + 80039ba: 683b ldr r3, [r7, #0] + 80039bc: 785b ldrb r3, [r3, #1] + 80039be: 2b00 cmp r3, #0 + 80039c0: f000 8084 beq.w 8003acc + { + /*Set the endpoint Transmit buffer address */ + PCD_SET_EP_TX_ADDRESS(USBx, ep->num, ep->pmaadress); + 80039c4: 687b ldr r3, [r7, #4] + 80039c6: 617b str r3, [r7, #20] + 80039c8: 687b ldr r3, [r7, #4] + 80039ca: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 80039ce: b29b uxth r3, r3 + 80039d0: 461a mov r2, r3 + 80039d2: 697b ldr r3, [r7, #20] + 80039d4: 4413 add r3, r2 + 80039d6: 617b str r3, [r7, #20] + 80039d8: 683b ldr r3, [r7, #0] + 80039da: 781b ldrb r3, [r3, #0] + 80039dc: 011a lsls r2, r3, #4 + 80039de: 697b ldr r3, [r7, #20] + 80039e0: 4413 add r3, r2 + 80039e2: f503 6380 add.w r3, r3, #1024 ; 0x400 + 80039e6: 613b str r3, [r7, #16] + 80039e8: 683b ldr r3, [r7, #0] + 80039ea: 88db ldrh r3, [r3, #6] + 80039ec: 085b lsrs r3, r3, #1 + 80039ee: b29b uxth r3, r3 + 80039f0: 005b lsls r3, r3, #1 + 80039f2: b29a uxth r2, r3 + 80039f4: 693b ldr r3, [r7, #16] + 80039f6: 801a strh r2, [r3, #0] + PCD_CLEAR_TX_DTOG(USBx, ep->num); + 80039f8: 687a ldr r2, [r7, #4] + 80039fa: 683b ldr r3, [r7, #0] + 80039fc: 781b ldrb r3, [r3, #0] + 80039fe: 009b lsls r3, r3, #2 + 8003a00: 4413 add r3, r2 + 8003a02: 881b ldrh r3, [r3, #0] + 8003a04: 81fb strh r3, [r7, #14] + 8003a06: 89fb ldrh r3, [r7, #14] + 8003a08: f003 0340 and.w r3, r3, #64 ; 0x40 + 8003a0c: 2b00 cmp r3, #0 + 8003a0e: d01b beq.n 8003a48 + 8003a10: 687a ldr r2, [r7, #4] + 8003a12: 683b ldr r3, [r7, #0] + 8003a14: 781b ldrb r3, [r3, #0] + 8003a16: 009b lsls r3, r3, #2 + 8003a18: 4413 add r3, r2 + 8003a1a: 881b ldrh r3, [r3, #0] + 8003a1c: b29b uxth r3, r3 + 8003a1e: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 8003a22: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8003a26: 81bb strh r3, [r7, #12] + 8003a28: 687a ldr r2, [r7, #4] + 8003a2a: 683b ldr r3, [r7, #0] + 8003a2c: 781b ldrb r3, [r3, #0] + 8003a2e: 009b lsls r3, r3, #2 + 8003a30: 441a add r2, r3 + 8003a32: 89bb ldrh r3, [r7, #12] + 8003a34: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8003a38: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8003a3c: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8003a40: f043 03c0 orr.w r3, r3, #192 ; 0xc0 + 8003a44: b29b uxth r3, r3 + 8003a46: 8013 strh r3, [r2, #0] + + if (ep->type != EP_TYPE_ISOC) + 8003a48: 683b ldr r3, [r7, #0] + 8003a4a: 78db ldrb r3, [r3, #3] + 8003a4c: 2b01 cmp r3, #1 + 8003a4e: d020 beq.n 8003a92 + { + /* Configure NAK status for the Endpoint */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); + 8003a50: 687a ldr r2, [r7, #4] + 8003a52: 683b ldr r3, [r7, #0] + 8003a54: 781b ldrb r3, [r3, #0] + 8003a56: 009b lsls r3, r3, #2 + 8003a58: 4413 add r3, r2 + 8003a5a: 881b ldrh r3, [r3, #0] + 8003a5c: b29b uxth r3, r3 + 8003a5e: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 8003a62: f023 0340 bic.w r3, r3, #64 ; 0x40 + 8003a66: 813b strh r3, [r7, #8] + 8003a68: 893b ldrh r3, [r7, #8] + 8003a6a: f083 0320 eor.w r3, r3, #32 + 8003a6e: 813b strh r3, [r7, #8] + 8003a70: 687a ldr r2, [r7, #4] + 8003a72: 683b ldr r3, [r7, #0] + 8003a74: 781b ldrb r3, [r3, #0] + 8003a76: 009b lsls r3, r3, #2 + 8003a78: 441a add r2, r3 + 8003a7a: 893b ldrh r3, [r7, #8] + 8003a7c: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8003a80: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8003a84: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8003a88: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8003a8c: b29b uxth r3, r3 + 8003a8e: 8013 strh r3, [r2, #0] + 8003a90: e27f b.n 8003f92 + } + else + { + /* Configure TX Endpoint to disabled state */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + 8003a92: 687a ldr r2, [r7, #4] + 8003a94: 683b ldr r3, [r7, #0] + 8003a96: 781b ldrb r3, [r3, #0] + 8003a98: 009b lsls r3, r3, #2 + 8003a9a: 4413 add r3, r2 + 8003a9c: 881b ldrh r3, [r3, #0] + 8003a9e: b29b uxth r3, r3 + 8003aa0: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 8003aa4: f023 0340 bic.w r3, r3, #64 ; 0x40 + 8003aa8: 817b strh r3, [r7, #10] + 8003aaa: 687a ldr r2, [r7, #4] + 8003aac: 683b ldr r3, [r7, #0] + 8003aae: 781b ldrb r3, [r3, #0] + 8003ab0: 009b lsls r3, r3, #2 + 8003ab2: 441a add r2, r3 + 8003ab4: 897b ldrh r3, [r7, #10] + 8003ab6: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8003aba: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8003abe: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8003ac2: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8003ac6: b29b uxth r3, r3 + 8003ac8: 8013 strh r3, [r2, #0] + 8003aca: e262 b.n 8003f92 + } + } + else + { + /*Set the endpoint Receive buffer address */ + PCD_SET_EP_RX_ADDRESS(USBx, ep->num, ep->pmaadress); + 8003acc: 687b ldr r3, [r7, #4] + 8003ace: 62fb str r3, [r7, #44] ; 0x2c + 8003ad0: 687b ldr r3, [r7, #4] + 8003ad2: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8003ad6: b29b uxth r3, r3 + 8003ad8: 461a mov r2, r3 + 8003ada: 6afb ldr r3, [r7, #44] ; 0x2c + 8003adc: 4413 add r3, r2 + 8003ade: 62fb str r3, [r7, #44] ; 0x2c + 8003ae0: 683b ldr r3, [r7, #0] + 8003ae2: 781b ldrb r3, [r3, #0] + 8003ae4: 011a lsls r2, r3, #4 + 8003ae6: 6afb ldr r3, [r7, #44] ; 0x2c + 8003ae8: 4413 add r3, r2 + 8003aea: f503 6381 add.w r3, r3, #1032 ; 0x408 + 8003aee: 62bb str r3, [r7, #40] ; 0x28 + 8003af0: 683b ldr r3, [r7, #0] + 8003af2: 88db ldrh r3, [r3, #6] + 8003af4: 085b lsrs r3, r3, #1 + 8003af6: b29b uxth r3, r3 + 8003af8: 005b lsls r3, r3, #1 + 8003afa: b29a uxth r2, r3 + 8003afc: 6abb ldr r3, [r7, #40] ; 0x28 + 8003afe: 801a strh r2, [r3, #0] + + /*Set the endpoint Receive buffer counter*/ + PCD_SET_EP_RX_CNT(USBx, ep->num, ep->maxpacket); + 8003b00: 687b ldr r3, [r7, #4] + 8003b02: 627b str r3, [r7, #36] ; 0x24 + 8003b04: 687b ldr r3, [r7, #4] + 8003b06: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8003b0a: b29b uxth r3, r3 + 8003b0c: 461a mov r2, r3 + 8003b0e: 6a7b ldr r3, [r7, #36] ; 0x24 + 8003b10: 4413 add r3, r2 + 8003b12: 627b str r3, [r7, #36] ; 0x24 + 8003b14: 683b ldr r3, [r7, #0] + 8003b16: 781b ldrb r3, [r3, #0] + 8003b18: 011a lsls r2, r3, #4 + 8003b1a: 6a7b ldr r3, [r7, #36] ; 0x24 + 8003b1c: 4413 add r3, r2 + 8003b1e: f203 430c addw r3, r3, #1036 ; 0x40c + 8003b22: 623b str r3, [r7, #32] + 8003b24: 683b ldr r3, [r7, #0] + 8003b26: 691b ldr r3, [r3, #16] + 8003b28: 2b00 cmp r3, #0 + 8003b2a: d112 bne.n 8003b52 + 8003b2c: 6a3b ldr r3, [r7, #32] + 8003b2e: 881b ldrh r3, [r3, #0] + 8003b30: b29b uxth r3, r3 + 8003b32: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 8003b36: b29a uxth r2, r3 + 8003b38: 6a3b ldr r3, [r7, #32] + 8003b3a: 801a strh r2, [r3, #0] + 8003b3c: 6a3b ldr r3, [r7, #32] + 8003b3e: 881b ldrh r3, [r3, #0] + 8003b40: b29b uxth r3, r3 + 8003b42: ea6f 4343 mvn.w r3, r3, lsl #17 + 8003b46: ea6f 4353 mvn.w r3, r3, lsr #17 + 8003b4a: b29a uxth r2, r3 + 8003b4c: 6a3b ldr r3, [r7, #32] + 8003b4e: 801a strh r2, [r3, #0] + 8003b50: e02f b.n 8003bb2 + 8003b52: 683b ldr r3, [r7, #0] + 8003b54: 691b ldr r3, [r3, #16] + 8003b56: 2b3e cmp r3, #62 ; 0x3e + 8003b58: d813 bhi.n 8003b82 + 8003b5a: 683b ldr r3, [r7, #0] + 8003b5c: 691b ldr r3, [r3, #16] + 8003b5e: 085b lsrs r3, r3, #1 + 8003b60: 663b str r3, [r7, #96] ; 0x60 + 8003b62: 683b ldr r3, [r7, #0] + 8003b64: 691b ldr r3, [r3, #16] + 8003b66: f003 0301 and.w r3, r3, #1 + 8003b6a: 2b00 cmp r3, #0 + 8003b6c: d002 beq.n 8003b74 + 8003b6e: 6e3b ldr r3, [r7, #96] ; 0x60 + 8003b70: 3301 adds r3, #1 + 8003b72: 663b str r3, [r7, #96] ; 0x60 + 8003b74: 6e3b ldr r3, [r7, #96] ; 0x60 + 8003b76: b29b uxth r3, r3 + 8003b78: 029b lsls r3, r3, #10 + 8003b7a: b29a uxth r2, r3 + 8003b7c: 6a3b ldr r3, [r7, #32] + 8003b7e: 801a strh r2, [r3, #0] + 8003b80: e017 b.n 8003bb2 + 8003b82: 683b ldr r3, [r7, #0] + 8003b84: 691b ldr r3, [r3, #16] + 8003b86: 095b lsrs r3, r3, #5 + 8003b88: 663b str r3, [r7, #96] ; 0x60 + 8003b8a: 683b ldr r3, [r7, #0] + 8003b8c: 691b ldr r3, [r3, #16] + 8003b8e: f003 031f and.w r3, r3, #31 + 8003b92: 2b00 cmp r3, #0 + 8003b94: d102 bne.n 8003b9c + 8003b96: 6e3b ldr r3, [r7, #96] ; 0x60 + 8003b98: 3b01 subs r3, #1 + 8003b9a: 663b str r3, [r7, #96] ; 0x60 + 8003b9c: 6e3b ldr r3, [r7, #96] ; 0x60 + 8003b9e: b29b uxth r3, r3 + 8003ba0: 029b lsls r3, r3, #10 + 8003ba2: b29b uxth r3, r3 + 8003ba4: ea6f 4343 mvn.w r3, r3, lsl #17 + 8003ba8: ea6f 4353 mvn.w r3, r3, lsr #17 + 8003bac: b29a uxth r2, r3 + 8003bae: 6a3b ldr r3, [r7, #32] + 8003bb0: 801a strh r2, [r3, #0] + PCD_CLEAR_RX_DTOG(USBx, ep->num); + 8003bb2: 687a ldr r2, [r7, #4] + 8003bb4: 683b ldr r3, [r7, #0] + 8003bb6: 781b ldrb r3, [r3, #0] + 8003bb8: 009b lsls r3, r3, #2 + 8003bba: 4413 add r3, r2 + 8003bbc: 881b ldrh r3, [r3, #0] + 8003bbe: 83fb strh r3, [r7, #30] + 8003bc0: 8bfb ldrh r3, [r7, #30] + 8003bc2: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 8003bc6: 2b00 cmp r3, #0 + 8003bc8: d01b beq.n 8003c02 + 8003bca: 687a ldr r2, [r7, #4] + 8003bcc: 683b ldr r3, [r7, #0] + 8003bce: 781b ldrb r3, [r3, #0] + 8003bd0: 009b lsls r3, r3, #2 + 8003bd2: 4413 add r3, r2 + 8003bd4: 881b ldrh r3, [r3, #0] + 8003bd6: b29b uxth r3, r3 + 8003bd8: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 8003bdc: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8003be0: 83bb strh r3, [r7, #28] + 8003be2: 687a ldr r2, [r7, #4] + 8003be4: 683b ldr r3, [r7, #0] + 8003be6: 781b ldrb r3, [r3, #0] + 8003be8: 009b lsls r3, r3, #2 + 8003bea: 441a add r2, r3 + 8003bec: 8bbb ldrh r3, [r7, #28] + 8003bee: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8003bf2: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8003bf6: f443 4340 orr.w r3, r3, #49152 ; 0xc000 + 8003bfa: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8003bfe: b29b uxth r3, r3 + 8003c00: 8013 strh r3, [r2, #0] + + /* Configure VALID status for the Endpoint*/ + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); + 8003c02: 687a ldr r2, [r7, #4] + 8003c04: 683b ldr r3, [r7, #0] + 8003c06: 781b ldrb r3, [r3, #0] + 8003c08: 009b lsls r3, r3, #2 + 8003c0a: 4413 add r3, r2 + 8003c0c: 881b ldrh r3, [r3, #0] + 8003c0e: b29b uxth r3, r3 + 8003c10: f423 4380 bic.w r3, r3, #16384 ; 0x4000 + 8003c14: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8003c18: 837b strh r3, [r7, #26] + 8003c1a: 8b7b ldrh r3, [r7, #26] + 8003c1c: f483 5380 eor.w r3, r3, #4096 ; 0x1000 + 8003c20: 837b strh r3, [r7, #26] + 8003c22: 8b7b ldrh r3, [r7, #26] + 8003c24: f483 5300 eor.w r3, r3, #8192 ; 0x2000 + 8003c28: 837b strh r3, [r7, #26] + 8003c2a: 687a ldr r2, [r7, #4] + 8003c2c: 683b ldr r3, [r7, #0] + 8003c2e: 781b ldrb r3, [r3, #0] + 8003c30: 009b lsls r3, r3, #2 + 8003c32: 441a add r2, r3 + 8003c34: 8b7b ldrh r3, [r7, #26] + 8003c36: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8003c3a: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8003c3e: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8003c42: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8003c46: b29b uxth r3, r3 + 8003c48: 8013 strh r3, [r2, #0] + 8003c4a: e1a2 b.n 8003f92 + } + /*Double Buffer*/ + else + { + /* Set the endpoint as double buffered */ + PCD_SET_EP_DBUF(USBx, ep->num); + 8003c4c: 687a ldr r2, [r7, #4] + 8003c4e: 683b ldr r3, [r7, #0] + 8003c50: 781b ldrb r3, [r3, #0] + 8003c52: 009b lsls r3, r3, #2 + 8003c54: 4413 add r3, r2 + 8003c56: 881b ldrh r3, [r3, #0] + 8003c58: b29b uxth r3, r3 + 8003c5a: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 8003c5e: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8003c62: f8a7 305c strh.w r3, [r7, #92] ; 0x5c + 8003c66: 687a ldr r2, [r7, #4] + 8003c68: 683b ldr r3, [r7, #0] + 8003c6a: 781b ldrb r3, [r3, #0] + 8003c6c: 009b lsls r3, r3, #2 + 8003c6e: 441a add r2, r3 + 8003c70: f8b7 305c ldrh.w r3, [r7, #92] ; 0x5c + 8003c74: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8003c78: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8003c7c: f443 4301 orr.w r3, r3, #33024 ; 0x8100 + 8003c80: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8003c84: b29b uxth r3, r3 + 8003c86: 8013 strh r3, [r2, #0] + + /* Set buffer address for double buffered mode */ + PCD_SET_EP_DBUF_ADDR(USBx, ep->num, ep->pmaaddr0, ep->pmaaddr1); + 8003c88: 687b ldr r3, [r7, #4] + 8003c8a: 65bb str r3, [r7, #88] ; 0x58 + 8003c8c: 687b ldr r3, [r7, #4] + 8003c8e: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8003c92: b29b uxth r3, r3 + 8003c94: 461a mov r2, r3 + 8003c96: 6dbb ldr r3, [r7, #88] ; 0x58 + 8003c98: 4413 add r3, r2 + 8003c9a: 65bb str r3, [r7, #88] ; 0x58 + 8003c9c: 683b ldr r3, [r7, #0] + 8003c9e: 781b ldrb r3, [r3, #0] + 8003ca0: 011a lsls r2, r3, #4 + 8003ca2: 6dbb ldr r3, [r7, #88] ; 0x58 + 8003ca4: 4413 add r3, r2 + 8003ca6: f503 6380 add.w r3, r3, #1024 ; 0x400 + 8003caa: 657b str r3, [r7, #84] ; 0x54 + 8003cac: 683b ldr r3, [r7, #0] + 8003cae: 891b ldrh r3, [r3, #8] + 8003cb0: 085b lsrs r3, r3, #1 + 8003cb2: b29b uxth r3, r3 + 8003cb4: 005b lsls r3, r3, #1 + 8003cb6: b29a uxth r2, r3 + 8003cb8: 6d7b ldr r3, [r7, #84] ; 0x54 + 8003cba: 801a strh r2, [r3, #0] + 8003cbc: 687b ldr r3, [r7, #4] + 8003cbe: 653b str r3, [r7, #80] ; 0x50 + 8003cc0: 687b ldr r3, [r7, #4] + 8003cc2: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8003cc6: b29b uxth r3, r3 + 8003cc8: 461a mov r2, r3 + 8003cca: 6d3b ldr r3, [r7, #80] ; 0x50 + 8003ccc: 4413 add r3, r2 + 8003cce: 653b str r3, [r7, #80] ; 0x50 + 8003cd0: 683b ldr r3, [r7, #0] + 8003cd2: 781b ldrb r3, [r3, #0] + 8003cd4: 011a lsls r2, r3, #4 + 8003cd6: 6d3b ldr r3, [r7, #80] ; 0x50 + 8003cd8: 4413 add r3, r2 + 8003cda: f503 6381 add.w r3, r3, #1032 ; 0x408 + 8003cde: 64fb str r3, [r7, #76] ; 0x4c + 8003ce0: 683b ldr r3, [r7, #0] + 8003ce2: 895b ldrh r3, [r3, #10] + 8003ce4: 085b lsrs r3, r3, #1 + 8003ce6: b29b uxth r3, r3 + 8003ce8: 005b lsls r3, r3, #1 + 8003cea: b29a uxth r2, r3 + 8003cec: 6cfb ldr r3, [r7, #76] ; 0x4c + 8003cee: 801a strh r2, [r3, #0] + + if (ep->is_in == 0U) + 8003cf0: 683b ldr r3, [r7, #0] + 8003cf2: 785b ldrb r3, [r3, #1] + 8003cf4: 2b00 cmp r3, #0 + 8003cf6: f040 8091 bne.w 8003e1c + { + /* Clear the data toggle bits for the endpoint IN/OUT */ + PCD_CLEAR_RX_DTOG(USBx, ep->num); + 8003cfa: 687a ldr r2, [r7, #4] + 8003cfc: 683b ldr r3, [r7, #0] + 8003cfe: 781b ldrb r3, [r3, #0] + 8003d00: 009b lsls r3, r3, #2 + 8003d02: 4413 add r3, r2 + 8003d04: 881b ldrh r3, [r3, #0] + 8003d06: 87bb strh r3, [r7, #60] ; 0x3c + 8003d08: 8fbb ldrh r3, [r7, #60] ; 0x3c + 8003d0a: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 8003d0e: 2b00 cmp r3, #0 + 8003d10: d01b beq.n 8003d4a + 8003d12: 687a ldr r2, [r7, #4] + 8003d14: 683b ldr r3, [r7, #0] + 8003d16: 781b ldrb r3, [r3, #0] + 8003d18: 009b lsls r3, r3, #2 + 8003d1a: 4413 add r3, r2 + 8003d1c: 881b ldrh r3, [r3, #0] + 8003d1e: b29b uxth r3, r3 + 8003d20: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 8003d24: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8003d28: 877b strh r3, [r7, #58] ; 0x3a + 8003d2a: 687a ldr r2, [r7, #4] + 8003d2c: 683b ldr r3, [r7, #0] + 8003d2e: 781b ldrb r3, [r3, #0] + 8003d30: 009b lsls r3, r3, #2 + 8003d32: 441a add r2, r3 + 8003d34: 8f7b ldrh r3, [r7, #58] ; 0x3a + 8003d36: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8003d3a: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8003d3e: f443 4340 orr.w r3, r3, #49152 ; 0xc000 + 8003d42: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8003d46: b29b uxth r3, r3 + 8003d48: 8013 strh r3, [r2, #0] + PCD_CLEAR_TX_DTOG(USBx, ep->num); + 8003d4a: 687a ldr r2, [r7, #4] + 8003d4c: 683b ldr r3, [r7, #0] + 8003d4e: 781b ldrb r3, [r3, #0] + 8003d50: 009b lsls r3, r3, #2 + 8003d52: 4413 add r3, r2 + 8003d54: 881b ldrh r3, [r3, #0] + 8003d56: 873b strh r3, [r7, #56] ; 0x38 + 8003d58: 8f3b ldrh r3, [r7, #56] ; 0x38 + 8003d5a: f003 0340 and.w r3, r3, #64 ; 0x40 + 8003d5e: 2b00 cmp r3, #0 + 8003d60: d01b beq.n 8003d9a + 8003d62: 687a ldr r2, [r7, #4] + 8003d64: 683b ldr r3, [r7, #0] + 8003d66: 781b ldrb r3, [r3, #0] + 8003d68: 009b lsls r3, r3, #2 + 8003d6a: 4413 add r3, r2 + 8003d6c: 881b ldrh r3, [r3, #0] + 8003d6e: b29b uxth r3, r3 + 8003d70: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 8003d74: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8003d78: 86fb strh r3, [r7, #54] ; 0x36 + 8003d7a: 687a ldr r2, [r7, #4] + 8003d7c: 683b ldr r3, [r7, #0] + 8003d7e: 781b ldrb r3, [r3, #0] + 8003d80: 009b lsls r3, r3, #2 + 8003d82: 441a add r2, r3 + 8003d84: 8efb ldrh r3, [r7, #54] ; 0x36 + 8003d86: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8003d8a: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8003d8e: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8003d92: f043 03c0 orr.w r3, r3, #192 ; 0xc0 + 8003d96: b29b uxth r3, r3 + 8003d98: 8013 strh r3, [r2, #0] + + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); + 8003d9a: 687a ldr r2, [r7, #4] + 8003d9c: 683b ldr r3, [r7, #0] + 8003d9e: 781b ldrb r3, [r3, #0] + 8003da0: 009b lsls r3, r3, #2 + 8003da2: 4413 add r3, r2 + 8003da4: 881b ldrh r3, [r3, #0] + 8003da6: b29b uxth r3, r3 + 8003da8: f423 4380 bic.w r3, r3, #16384 ; 0x4000 + 8003dac: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8003db0: 86bb strh r3, [r7, #52] ; 0x34 + 8003db2: 8ebb ldrh r3, [r7, #52] ; 0x34 + 8003db4: f483 5380 eor.w r3, r3, #4096 ; 0x1000 + 8003db8: 86bb strh r3, [r7, #52] ; 0x34 + 8003dba: 8ebb ldrh r3, [r7, #52] ; 0x34 + 8003dbc: f483 5300 eor.w r3, r3, #8192 ; 0x2000 + 8003dc0: 86bb strh r3, [r7, #52] ; 0x34 + 8003dc2: 687a ldr r2, [r7, #4] + 8003dc4: 683b ldr r3, [r7, #0] + 8003dc6: 781b ldrb r3, [r3, #0] + 8003dc8: 009b lsls r3, r3, #2 + 8003dca: 441a add r2, r3 + 8003dcc: 8ebb ldrh r3, [r7, #52] ; 0x34 + 8003dce: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8003dd2: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8003dd6: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8003dda: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8003dde: b29b uxth r3, r3 + 8003de0: 8013 strh r3, [r2, #0] + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + 8003de2: 687a ldr r2, [r7, #4] + 8003de4: 683b ldr r3, [r7, #0] + 8003de6: 781b ldrb r3, [r3, #0] + 8003de8: 009b lsls r3, r3, #2 + 8003dea: 4413 add r3, r2 + 8003dec: 881b ldrh r3, [r3, #0] + 8003dee: b29b uxth r3, r3 + 8003df0: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 8003df4: f023 0340 bic.w r3, r3, #64 ; 0x40 + 8003df8: 867b strh r3, [r7, #50] ; 0x32 + 8003dfa: 687a ldr r2, [r7, #4] + 8003dfc: 683b ldr r3, [r7, #0] + 8003dfe: 781b ldrb r3, [r3, #0] + 8003e00: 009b lsls r3, r3, #2 + 8003e02: 441a add r2, r3 + 8003e04: 8e7b ldrh r3, [r7, #50] ; 0x32 + 8003e06: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8003e0a: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8003e0e: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8003e12: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8003e16: b29b uxth r3, r3 + 8003e18: 8013 strh r3, [r2, #0] + 8003e1a: e0ba b.n 8003f92 + } + else + { + /* Clear the data toggle bits for the endpoint IN/OUT */ + PCD_CLEAR_RX_DTOG(USBx, ep->num); + 8003e1c: 687a ldr r2, [r7, #4] + 8003e1e: 683b ldr r3, [r7, #0] + 8003e20: 781b ldrb r3, [r3, #0] + 8003e22: 009b lsls r3, r3, #2 + 8003e24: 4413 add r3, r2 + 8003e26: 881b ldrh r3, [r3, #0] + 8003e28: f8a7 304a strh.w r3, [r7, #74] ; 0x4a + 8003e2c: f8b7 304a ldrh.w r3, [r7, #74] ; 0x4a + 8003e30: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 8003e34: 2b00 cmp r3, #0 + 8003e36: d01d beq.n 8003e74 + 8003e38: 687a ldr r2, [r7, #4] + 8003e3a: 683b ldr r3, [r7, #0] + 8003e3c: 781b ldrb r3, [r3, #0] + 8003e3e: 009b lsls r3, r3, #2 + 8003e40: 4413 add r3, r2 + 8003e42: 881b ldrh r3, [r3, #0] + 8003e44: b29b uxth r3, r3 + 8003e46: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 8003e4a: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8003e4e: f8a7 3048 strh.w r3, [r7, #72] ; 0x48 + 8003e52: 687a ldr r2, [r7, #4] + 8003e54: 683b ldr r3, [r7, #0] + 8003e56: 781b ldrb r3, [r3, #0] + 8003e58: 009b lsls r3, r3, #2 + 8003e5a: 441a add r2, r3 + 8003e5c: f8b7 3048 ldrh.w r3, [r7, #72] ; 0x48 + 8003e60: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8003e64: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8003e68: f443 4340 orr.w r3, r3, #49152 ; 0xc000 + 8003e6c: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8003e70: b29b uxth r3, r3 + 8003e72: 8013 strh r3, [r2, #0] + PCD_CLEAR_TX_DTOG(USBx, ep->num); + 8003e74: 687a ldr r2, [r7, #4] + 8003e76: 683b ldr r3, [r7, #0] + 8003e78: 781b ldrb r3, [r3, #0] + 8003e7a: 009b lsls r3, r3, #2 + 8003e7c: 4413 add r3, r2 + 8003e7e: 881b ldrh r3, [r3, #0] + 8003e80: f8a7 3046 strh.w r3, [r7, #70] ; 0x46 + 8003e84: f8b7 3046 ldrh.w r3, [r7, #70] ; 0x46 + 8003e88: f003 0340 and.w r3, r3, #64 ; 0x40 + 8003e8c: 2b00 cmp r3, #0 + 8003e8e: d01d beq.n 8003ecc + 8003e90: 687a ldr r2, [r7, #4] + 8003e92: 683b ldr r3, [r7, #0] + 8003e94: 781b ldrb r3, [r3, #0] + 8003e96: 009b lsls r3, r3, #2 + 8003e98: 4413 add r3, r2 + 8003e9a: 881b ldrh r3, [r3, #0] + 8003e9c: b29b uxth r3, r3 + 8003e9e: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 8003ea2: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8003ea6: f8a7 3044 strh.w r3, [r7, #68] ; 0x44 + 8003eaa: 687a ldr r2, [r7, #4] + 8003eac: 683b ldr r3, [r7, #0] + 8003eae: 781b ldrb r3, [r3, #0] + 8003eb0: 009b lsls r3, r3, #2 + 8003eb2: 441a add r2, r3 + 8003eb4: f8b7 3044 ldrh.w r3, [r7, #68] ; 0x44 + 8003eb8: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8003ebc: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8003ec0: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8003ec4: f043 03c0 orr.w r3, r3, #192 ; 0xc0 + 8003ec8: b29b uxth r3, r3 + 8003eca: 8013 strh r3, [r2, #0] + + if (ep->type != EP_TYPE_ISOC) + 8003ecc: 683b ldr r3, [r7, #0] + 8003ece: 78db ldrb r3, [r3, #3] + 8003ed0: 2b01 cmp r3, #1 + 8003ed2: d024 beq.n 8003f1e + { + /* Configure NAK status for the Endpoint */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); + 8003ed4: 687a ldr r2, [r7, #4] + 8003ed6: 683b ldr r3, [r7, #0] + 8003ed8: 781b ldrb r3, [r3, #0] + 8003eda: 009b lsls r3, r3, #2 + 8003edc: 4413 add r3, r2 + 8003ede: 881b ldrh r3, [r3, #0] + 8003ee0: b29b uxth r3, r3 + 8003ee2: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 8003ee6: f023 0340 bic.w r3, r3, #64 ; 0x40 + 8003eea: f8a7 3040 strh.w r3, [r7, #64] ; 0x40 + 8003eee: f8b7 3040 ldrh.w r3, [r7, #64] ; 0x40 + 8003ef2: f083 0320 eor.w r3, r3, #32 + 8003ef6: f8a7 3040 strh.w r3, [r7, #64] ; 0x40 + 8003efa: 687a ldr r2, [r7, #4] + 8003efc: 683b ldr r3, [r7, #0] + 8003efe: 781b ldrb r3, [r3, #0] + 8003f00: 009b lsls r3, r3, #2 + 8003f02: 441a add r2, r3 + 8003f04: f8b7 3040 ldrh.w r3, [r7, #64] ; 0x40 + 8003f08: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8003f0c: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8003f10: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8003f14: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8003f18: b29b uxth r3, r3 + 8003f1a: 8013 strh r3, [r2, #0] + 8003f1c: e01d b.n 8003f5a + } + else + { + /* Configure TX Endpoint to disabled state */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + 8003f1e: 687a ldr r2, [r7, #4] + 8003f20: 683b ldr r3, [r7, #0] + 8003f22: 781b ldrb r3, [r3, #0] + 8003f24: 009b lsls r3, r3, #2 + 8003f26: 4413 add r3, r2 + 8003f28: 881b ldrh r3, [r3, #0] + 8003f2a: b29b uxth r3, r3 + 8003f2c: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 8003f30: f023 0340 bic.w r3, r3, #64 ; 0x40 + 8003f34: f8a7 3042 strh.w r3, [r7, #66] ; 0x42 + 8003f38: 687a ldr r2, [r7, #4] + 8003f3a: 683b ldr r3, [r7, #0] + 8003f3c: 781b ldrb r3, [r3, #0] + 8003f3e: 009b lsls r3, r3, #2 + 8003f40: 441a add r2, r3 + 8003f42: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 + 8003f46: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8003f4a: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8003f4e: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8003f52: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8003f56: b29b uxth r3, r3 + 8003f58: 8013 strh r3, [r2, #0] + } + + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); + 8003f5a: 687a ldr r2, [r7, #4] + 8003f5c: 683b ldr r3, [r7, #0] + 8003f5e: 781b ldrb r3, [r3, #0] + 8003f60: 009b lsls r3, r3, #2 + 8003f62: 4413 add r3, r2 + 8003f64: 881b ldrh r3, [r3, #0] + 8003f66: b29b uxth r3, r3 + 8003f68: f423 4380 bic.w r3, r3, #16384 ; 0x4000 + 8003f6c: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8003f70: 87fb strh r3, [r7, #62] ; 0x3e + 8003f72: 687a ldr r2, [r7, #4] + 8003f74: 683b ldr r3, [r7, #0] + 8003f76: 781b ldrb r3, [r3, #0] + 8003f78: 009b lsls r3, r3, #2 + 8003f7a: 441a add r2, r3 + 8003f7c: 8ffb ldrh r3, [r7, #62] ; 0x3e + 8003f7e: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8003f82: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8003f86: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8003f8a: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8003f8e: b29b uxth r3, r3 + 8003f90: 8013 strh r3, [r2, #0] + } + } + + return ret; + 8003f92: f897 3067 ldrb.w r3, [r7, #103] ; 0x67 +} + 8003f96: 4618 mov r0, r3 + 8003f98: 376c adds r7, #108 ; 0x6c + 8003f9a: 46bd mov sp, r7 + 8003f9c: bc80 pop {r7} + 8003f9e: 4770 bx lr + +08003fa0 : + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPStartXfer(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + 8003fa0: b580 push {r7, lr} + 8003fa2: b0cc sub sp, #304 ; 0x130 + 8003fa4: af00 add r7, sp, #0 + 8003fa6: 1d3b adds r3, r7, #4 + 8003fa8: 6018 str r0, [r3, #0] + 8003faa: 463b mov r3, r7 + 8003fac: 6019 str r1, [r3, #0] + uint32_t len; + uint16_t pmabuffer; + uint16_t wEPVal; + + /* IN endpoint */ + if (ep->is_in == 1U) + 8003fae: 463b mov r3, r7 + 8003fb0: 681b ldr r3, [r3, #0] + 8003fb2: 785b ldrb r3, [r3, #1] + 8003fb4: 2b01 cmp r3, #1 + 8003fb6: f040 872e bne.w 8004e16 + { + /*Multi packet transfer*/ + if (ep->xfer_len > ep->maxpacket) + 8003fba: 463b mov r3, r7 + 8003fbc: 681b ldr r3, [r3, #0] + 8003fbe: 699a ldr r2, [r3, #24] + 8003fc0: 463b mov r3, r7 + 8003fc2: 681b ldr r3, [r3, #0] + 8003fc4: 691b ldr r3, [r3, #16] + 8003fc6: 429a cmp r2, r3 + 8003fc8: d905 bls.n 8003fd6 + { + len = ep->maxpacket; + 8003fca: 463b mov r3, r7 + 8003fcc: 681b ldr r3, [r3, #0] + 8003fce: 691b ldr r3, [r3, #16] + 8003fd0: f8c7 312c str.w r3, [r7, #300] ; 0x12c + 8003fd4: e004 b.n 8003fe0 + } + else + { + len = ep->xfer_len; + 8003fd6: 463b mov r3, r7 + 8003fd8: 681b ldr r3, [r3, #0] + 8003fda: 699b ldr r3, [r3, #24] + 8003fdc: f8c7 312c str.w r3, [r7, #300] ; 0x12c + } + + /* configure and validate Tx endpoint */ + if (ep->doublebuffer == 0U) + 8003fe0: 463b mov r3, r7 + 8003fe2: 681b ldr r3, [r3, #0] + 8003fe4: 7b1b ldrb r3, [r3, #12] + 8003fe6: 2b00 cmp r3, #0 + 8003fe8: d134 bne.n 8004054 + { + USB_WritePMA(USBx, ep->xfer_buff, ep->pmaadress, (uint16_t)len); + 8003fea: 463b mov r3, r7 + 8003fec: 681b ldr r3, [r3, #0] + 8003fee: 6959 ldr r1, [r3, #20] + 8003ff0: 463b mov r3, r7 + 8003ff2: 681b ldr r3, [r3, #0] + 8003ff4: 88da ldrh r2, [r3, #6] + 8003ff6: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8003ffa: b29b uxth r3, r3 + 8003ffc: 1d38 adds r0, r7, #4 + 8003ffe: 6800 ldr r0, [r0, #0] + 8004000: f001 fc03 bl 800580a + PCD_SET_EP_TX_CNT(USBx, ep->num, len); + 8004004: f107 0310 add.w r3, r7, #16 + 8004008: 1d3a adds r2, r7, #4 + 800400a: 6812 ldr r2, [r2, #0] + 800400c: 601a str r2, [r3, #0] + 800400e: 1d3b adds r3, r7, #4 + 8004010: 681b ldr r3, [r3, #0] + 8004012: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8004016: b29b uxth r3, r3 + 8004018: 4619 mov r1, r3 + 800401a: f107 0310 add.w r3, r7, #16 + 800401e: f107 0210 add.w r2, r7, #16 + 8004022: 6812 ldr r2, [r2, #0] + 8004024: 440a add r2, r1 + 8004026: 601a str r2, [r3, #0] + 8004028: 463b mov r3, r7 + 800402a: 681b ldr r3, [r3, #0] + 800402c: 781b ldrb r3, [r3, #0] + 800402e: 011a lsls r2, r3, #4 + 8004030: f107 0310 add.w r3, r7, #16 + 8004034: 681b ldr r3, [r3, #0] + 8004036: 4413 add r3, r2 + 8004038: f203 4204 addw r2, r3, #1028 ; 0x404 + 800403c: f107 030c add.w r3, r7, #12 + 8004040: 601a str r2, [r3, #0] + 8004042: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004046: b29a uxth r2, r3 + 8004048: f107 030c add.w r3, r7, #12 + 800404c: 681b ldr r3, [r3, #0] + 800404e: 801a strh r2, [r3, #0] + 8004050: f000 beac b.w 8004dac + } + else + { + /* double buffer bulk management */ + if (ep->type == EP_TYPE_BULK) + 8004054: 463b mov r3, r7 + 8004056: 681b ldr r3, [r3, #0] + 8004058: 78db ldrb r3, [r3, #3] + 800405a: 2b02 cmp r3, #2 + 800405c: f040 838c bne.w 8004778 + { + if (ep->xfer_len_db > ep->maxpacket) + 8004060: 463b mov r3, r7 + 8004062: 681b ldr r3, [r3, #0] + 8004064: 6a1a ldr r2, [r3, #32] + 8004066: 463b mov r3, r7 + 8004068: 681b ldr r3, [r3, #0] + 800406a: 691b ldr r3, [r3, #16] + 800406c: 429a cmp r2, r3 + 800406e: f240 8330 bls.w 80046d2 + { + /* enable double buffer */ + PCD_SET_EP_DBUF(USBx, ep->num); + 8004072: 1d3b adds r3, r7, #4 + 8004074: 681a ldr r2, [r3, #0] + 8004076: 463b mov r3, r7 + 8004078: 681b ldr r3, [r3, #0] + 800407a: 781b ldrb r3, [r3, #0] + 800407c: 009b lsls r3, r3, #2 + 800407e: 4413 add r3, r2 + 8004080: 881b ldrh r3, [r3, #0] + 8004082: b29b uxth r3, r3 + 8004084: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 8004088: f023 0370 bic.w r3, r3, #112 ; 0x70 + 800408c: f8a7 3056 strh.w r3, [r7, #86] ; 0x56 + 8004090: 1d3b adds r3, r7, #4 + 8004092: 681a ldr r2, [r3, #0] + 8004094: 463b mov r3, r7 + 8004096: 681b ldr r3, [r3, #0] + 8004098: 781b ldrb r3, [r3, #0] + 800409a: 009b lsls r3, r3, #2 + 800409c: 441a add r2, r3 + 800409e: f8b7 3056 ldrh.w r3, [r7, #86] ; 0x56 + 80040a2: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 80040a6: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 80040aa: f443 4301 orr.w r3, r3, #33024 ; 0x8100 + 80040ae: f043 0380 orr.w r3, r3, #128 ; 0x80 + 80040b2: b29b uxth r3, r3 + 80040b4: 8013 strh r3, [r2, #0] + + /* each Time to write in PMA xfer_len_db will */ + ep->xfer_len_db -= len; + 80040b6: 463b mov r3, r7 + 80040b8: 681b ldr r3, [r3, #0] + 80040ba: 6a1a ldr r2, [r3, #32] + 80040bc: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 80040c0: 1ad2 subs r2, r2, r3 + 80040c2: 463b mov r3, r7 + 80040c4: 681b ldr r3, [r3, #0] + 80040c6: 621a str r2, [r3, #32] + + /* Fill the two first buffer in the Buffer0 & Buffer1 */ + if ((PCD_GET_ENDPOINT(USBx, ep->num) & USB_EP_DTOG_TX) != 0U) + 80040c8: 1d3b adds r3, r7, #4 + 80040ca: 681a ldr r2, [r3, #0] + 80040cc: 463b mov r3, r7 + 80040ce: 681b ldr r3, [r3, #0] + 80040d0: 781b ldrb r3, [r3, #0] + 80040d2: 009b lsls r3, r3, #2 + 80040d4: 4413 add r3, r2 + 80040d6: 881b ldrh r3, [r3, #0] + 80040d8: b29b uxth r3, r3 + 80040da: f003 0340 and.w r3, r3, #64 ; 0x40 + 80040de: 2b00 cmp r3, #0 + 80040e0: f000 819e beq.w 8004420 + { + /* Set the Double buffer counter for pmabuffer1 */ + PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); + 80040e4: f107 0330 add.w r3, r7, #48 ; 0x30 + 80040e8: 1d3a adds r2, r7, #4 + 80040ea: 6812 ldr r2, [r2, #0] + 80040ec: 601a str r2, [r3, #0] + 80040ee: 463b mov r3, r7 + 80040f0: 681b ldr r3, [r3, #0] + 80040f2: 785b ldrb r3, [r3, #1] + 80040f4: 2b00 cmp r3, #0 + 80040f6: d17a bne.n 80041ee + 80040f8: f107 0328 add.w r3, r7, #40 ; 0x28 + 80040fc: 1d3a adds r2, r7, #4 + 80040fe: 6812 ldr r2, [r2, #0] + 8004100: 601a str r2, [r3, #0] + 8004102: 1d3b adds r3, r7, #4 + 8004104: 681b ldr r3, [r3, #0] + 8004106: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 800410a: b29b uxth r3, r3 + 800410c: 4619 mov r1, r3 + 800410e: f107 0328 add.w r3, r7, #40 ; 0x28 + 8004112: f107 0228 add.w r2, r7, #40 ; 0x28 + 8004116: 6812 ldr r2, [r2, #0] + 8004118: 440a add r2, r1 + 800411a: 601a str r2, [r3, #0] + 800411c: 463b mov r3, r7 + 800411e: 681b ldr r3, [r3, #0] + 8004120: 781b ldrb r3, [r3, #0] + 8004122: 011a lsls r2, r3, #4 + 8004124: f107 0328 add.w r3, r7, #40 ; 0x28 + 8004128: 681b ldr r3, [r3, #0] + 800412a: 4413 add r3, r2 + 800412c: f203 420c addw r2, r3, #1036 ; 0x40c + 8004130: f107 0324 add.w r3, r7, #36 ; 0x24 + 8004134: 601a str r2, [r3, #0] + 8004136: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 800413a: 2b00 cmp r3, #0 + 800413c: d11a bne.n 8004174 + 800413e: f107 0324 add.w r3, r7, #36 ; 0x24 + 8004142: 681b ldr r3, [r3, #0] + 8004144: 881b ldrh r3, [r3, #0] + 8004146: b29b uxth r3, r3 + 8004148: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 800414c: b29a uxth r2, r3 + 800414e: f107 0324 add.w r3, r7, #36 ; 0x24 + 8004152: 681b ldr r3, [r3, #0] + 8004154: 801a strh r2, [r3, #0] + 8004156: f107 0324 add.w r3, r7, #36 ; 0x24 + 800415a: 681b ldr r3, [r3, #0] + 800415c: 881b ldrh r3, [r3, #0] + 800415e: b29b uxth r3, r3 + 8004160: ea6f 4343 mvn.w r3, r3, lsl #17 + 8004164: ea6f 4353 mvn.w r3, r3, lsr #17 + 8004168: b29a uxth r2, r3 + 800416a: f107 0324 add.w r3, r7, #36 ; 0x24 + 800416e: 681b ldr r3, [r3, #0] + 8004170: 801a strh r2, [r3, #0] + 8004172: e062 b.n 800423a + 8004174: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004178: 2b3e cmp r3, #62 ; 0x3e + 800417a: d819 bhi.n 80041b0 + 800417c: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004180: 085b lsrs r3, r3, #1 + 8004182: f8c7 3128 str.w r3, [r7, #296] ; 0x128 + 8004186: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 800418a: f003 0301 and.w r3, r3, #1 + 800418e: 2b00 cmp r3, #0 + 8004190: d004 beq.n 800419c + 8004192: f8d7 3128 ldr.w r3, [r7, #296] ; 0x128 + 8004196: 3301 adds r3, #1 + 8004198: f8c7 3128 str.w r3, [r7, #296] ; 0x128 + 800419c: f8d7 3128 ldr.w r3, [r7, #296] ; 0x128 + 80041a0: b29b uxth r3, r3 + 80041a2: 029b lsls r3, r3, #10 + 80041a4: b29a uxth r2, r3 + 80041a6: f107 0324 add.w r3, r7, #36 ; 0x24 + 80041aa: 681b ldr r3, [r3, #0] + 80041ac: 801a strh r2, [r3, #0] + 80041ae: e044 b.n 800423a + 80041b0: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 80041b4: 095b lsrs r3, r3, #5 + 80041b6: f8c7 3128 str.w r3, [r7, #296] ; 0x128 + 80041ba: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 80041be: f003 031f and.w r3, r3, #31 + 80041c2: 2b00 cmp r3, #0 + 80041c4: d104 bne.n 80041d0 + 80041c6: f8d7 3128 ldr.w r3, [r7, #296] ; 0x128 + 80041ca: 3b01 subs r3, #1 + 80041cc: f8c7 3128 str.w r3, [r7, #296] ; 0x128 + 80041d0: f8d7 3128 ldr.w r3, [r7, #296] ; 0x128 + 80041d4: b29b uxth r3, r3 + 80041d6: 029b lsls r3, r3, #10 + 80041d8: b29b uxth r3, r3 + 80041da: ea6f 4343 mvn.w r3, r3, lsl #17 + 80041de: ea6f 4353 mvn.w r3, r3, lsr #17 + 80041e2: b29a uxth r2, r3 + 80041e4: f107 0324 add.w r3, r7, #36 ; 0x24 + 80041e8: 681b ldr r3, [r3, #0] + 80041ea: 801a strh r2, [r3, #0] + 80041ec: e025 b.n 800423a + 80041ee: 463b mov r3, r7 + 80041f0: 681b ldr r3, [r3, #0] + 80041f2: 785b ldrb r3, [r3, #1] + 80041f4: 2b01 cmp r3, #1 + 80041f6: d120 bne.n 800423a + 80041f8: 1d3b adds r3, r7, #4 + 80041fa: 681b ldr r3, [r3, #0] + 80041fc: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8004200: b29b uxth r3, r3 + 8004202: 4619 mov r1, r3 + 8004204: f107 0330 add.w r3, r7, #48 ; 0x30 + 8004208: f107 0230 add.w r2, r7, #48 ; 0x30 + 800420c: 6812 ldr r2, [r2, #0] + 800420e: 440a add r2, r1 + 8004210: 601a str r2, [r3, #0] + 8004212: 463b mov r3, r7 + 8004214: 681b ldr r3, [r3, #0] + 8004216: 781b ldrb r3, [r3, #0] + 8004218: 011a lsls r2, r3, #4 + 800421a: f107 0330 add.w r3, r7, #48 ; 0x30 + 800421e: 681b ldr r3, [r3, #0] + 8004220: 4413 add r3, r2 + 8004222: f203 420c addw r2, r3, #1036 ; 0x40c + 8004226: f107 032c add.w r3, r7, #44 ; 0x2c + 800422a: 601a str r2, [r3, #0] + 800422c: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004230: b29a uxth r2, r3 + 8004232: f107 032c add.w r3, r7, #44 ; 0x2c + 8004236: 681b ldr r3, [r3, #0] + 8004238: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr1; + 800423a: 463b mov r3, r7 + 800423c: 681b ldr r3, [r3, #0] + 800423e: 895b ldrh r3, [r3, #10] + 8004240: f8a7 3096 strh.w r3, [r7, #150] ; 0x96 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 8004244: 463b mov r3, r7 + 8004246: 681b ldr r3, [r3, #0] + 8004248: 6959 ldr r1, [r3, #20] + 800424a: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 800424e: b29b uxth r3, r3 + 8004250: f8b7 2096 ldrh.w r2, [r7, #150] ; 0x96 + 8004254: 1d38 adds r0, r7, #4 + 8004256: 6800 ldr r0, [r0, #0] + 8004258: f001 fad7 bl 800580a + ep->xfer_buff += len; + 800425c: 463b mov r3, r7 + 800425e: 681b ldr r3, [r3, #0] + 8004260: 695a ldr r2, [r3, #20] + 8004262: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004266: 441a add r2, r3 + 8004268: 463b mov r3, r7 + 800426a: 681b ldr r3, [r3, #0] + 800426c: 615a str r2, [r3, #20] + + if (ep->xfer_len_db > ep->maxpacket) + 800426e: 463b mov r3, r7 + 8004270: 681b ldr r3, [r3, #0] + 8004272: 6a1a ldr r2, [r3, #32] + 8004274: 463b mov r3, r7 + 8004276: 681b ldr r3, [r3, #0] + 8004278: 691b ldr r3, [r3, #16] + 800427a: 429a cmp r2, r3 + 800427c: d909 bls.n 8004292 + { + ep->xfer_len_db -= len; + 800427e: 463b mov r3, r7 + 8004280: 681b ldr r3, [r3, #0] + 8004282: 6a1a ldr r2, [r3, #32] + 8004284: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004288: 1ad2 subs r2, r2, r3 + 800428a: 463b mov r3, r7 + 800428c: 681b ldr r3, [r3, #0] + 800428e: 621a str r2, [r3, #32] + 8004290: e008 b.n 80042a4 + } + else + { + len = ep->xfer_len_db; + 8004292: 463b mov r3, r7 + 8004294: 681b ldr r3, [r3, #0] + 8004296: 6a1b ldr r3, [r3, #32] + 8004298: f8c7 312c str.w r3, [r7, #300] ; 0x12c + ep->xfer_len_db = 0U; + 800429c: 463b mov r3, r7 + 800429e: 681b ldr r3, [r3, #0] + 80042a0: 2200 movs r2, #0 + 80042a2: 621a str r2, [r3, #32] + } + + /* Set the Double buffer counter for pmabuffer0 */ + PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); + 80042a4: 463b mov r3, r7 + 80042a6: 681b ldr r3, [r3, #0] + 80042a8: 785b ldrb r3, [r3, #1] + 80042aa: 2b00 cmp r3, #0 + 80042ac: d17a bne.n 80043a4 + 80042ae: f107 0318 add.w r3, r7, #24 + 80042b2: 1d3a adds r2, r7, #4 + 80042b4: 6812 ldr r2, [r2, #0] + 80042b6: 601a str r2, [r3, #0] + 80042b8: 1d3b adds r3, r7, #4 + 80042ba: 681b ldr r3, [r3, #0] + 80042bc: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 80042c0: b29b uxth r3, r3 + 80042c2: 4619 mov r1, r3 + 80042c4: f107 0318 add.w r3, r7, #24 + 80042c8: f107 0218 add.w r2, r7, #24 + 80042cc: 6812 ldr r2, [r2, #0] + 80042ce: 440a add r2, r1 + 80042d0: 601a str r2, [r3, #0] + 80042d2: 463b mov r3, r7 + 80042d4: 681b ldr r3, [r3, #0] + 80042d6: 781b ldrb r3, [r3, #0] + 80042d8: 011a lsls r2, r3, #4 + 80042da: f107 0318 add.w r3, r7, #24 + 80042de: 681b ldr r3, [r3, #0] + 80042e0: 4413 add r3, r2 + 80042e2: f203 4204 addw r2, r3, #1028 ; 0x404 + 80042e6: f107 0314 add.w r3, r7, #20 + 80042ea: 601a str r2, [r3, #0] + 80042ec: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 80042f0: 2b00 cmp r3, #0 + 80042f2: d11a bne.n 800432a + 80042f4: f107 0314 add.w r3, r7, #20 + 80042f8: 681b ldr r3, [r3, #0] + 80042fa: 881b ldrh r3, [r3, #0] + 80042fc: b29b uxth r3, r3 + 80042fe: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 8004302: b29a uxth r2, r3 + 8004304: f107 0314 add.w r3, r7, #20 + 8004308: 681b ldr r3, [r3, #0] + 800430a: 801a strh r2, [r3, #0] + 800430c: f107 0314 add.w r3, r7, #20 + 8004310: 681b ldr r3, [r3, #0] + 8004312: 881b ldrh r3, [r3, #0] + 8004314: b29b uxth r3, r3 + 8004316: ea6f 4343 mvn.w r3, r3, lsl #17 + 800431a: ea6f 4353 mvn.w r3, r3, lsr #17 + 800431e: b29a uxth r2, r3 + 8004320: f107 0314 add.w r3, r7, #20 + 8004324: 681b ldr r3, [r3, #0] + 8004326: 801a strh r2, [r3, #0] + 8004328: e067 b.n 80043fa + 800432a: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 800432e: 2b3e cmp r3, #62 ; 0x3e + 8004330: d819 bhi.n 8004366 + 8004332: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004336: 085b lsrs r3, r3, #1 + 8004338: f8c7 3124 str.w r3, [r7, #292] ; 0x124 + 800433c: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004340: f003 0301 and.w r3, r3, #1 + 8004344: 2b00 cmp r3, #0 + 8004346: d004 beq.n 8004352 + 8004348: f8d7 3124 ldr.w r3, [r7, #292] ; 0x124 + 800434c: 3301 adds r3, #1 + 800434e: f8c7 3124 str.w r3, [r7, #292] ; 0x124 + 8004352: f8d7 3124 ldr.w r3, [r7, #292] ; 0x124 + 8004356: b29b uxth r3, r3 + 8004358: 029b lsls r3, r3, #10 + 800435a: b29a uxth r2, r3 + 800435c: f107 0314 add.w r3, r7, #20 + 8004360: 681b ldr r3, [r3, #0] + 8004362: 801a strh r2, [r3, #0] + 8004364: e049 b.n 80043fa + 8004366: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 800436a: 095b lsrs r3, r3, #5 + 800436c: f8c7 3124 str.w r3, [r7, #292] ; 0x124 + 8004370: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004374: f003 031f and.w r3, r3, #31 + 8004378: 2b00 cmp r3, #0 + 800437a: d104 bne.n 8004386 + 800437c: f8d7 3124 ldr.w r3, [r7, #292] ; 0x124 + 8004380: 3b01 subs r3, #1 + 8004382: f8c7 3124 str.w r3, [r7, #292] ; 0x124 + 8004386: f8d7 3124 ldr.w r3, [r7, #292] ; 0x124 + 800438a: b29b uxth r3, r3 + 800438c: 029b lsls r3, r3, #10 + 800438e: b29b uxth r3, r3 + 8004390: ea6f 4343 mvn.w r3, r3, lsl #17 + 8004394: ea6f 4353 mvn.w r3, r3, lsr #17 + 8004398: b29a uxth r2, r3 + 800439a: f107 0314 add.w r3, r7, #20 + 800439e: 681b ldr r3, [r3, #0] + 80043a0: 801a strh r2, [r3, #0] + 80043a2: e02a b.n 80043fa + 80043a4: 463b mov r3, r7 + 80043a6: 681b ldr r3, [r3, #0] + 80043a8: 785b ldrb r3, [r3, #1] + 80043aa: 2b01 cmp r3, #1 + 80043ac: d125 bne.n 80043fa + 80043ae: f107 0320 add.w r3, r7, #32 + 80043b2: 1d3a adds r2, r7, #4 + 80043b4: 6812 ldr r2, [r2, #0] + 80043b6: 601a str r2, [r3, #0] + 80043b8: 1d3b adds r3, r7, #4 + 80043ba: 681b ldr r3, [r3, #0] + 80043bc: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 80043c0: b29b uxth r3, r3 + 80043c2: 4619 mov r1, r3 + 80043c4: f107 0320 add.w r3, r7, #32 + 80043c8: f107 0220 add.w r2, r7, #32 + 80043cc: 6812 ldr r2, [r2, #0] + 80043ce: 440a add r2, r1 + 80043d0: 601a str r2, [r3, #0] + 80043d2: 463b mov r3, r7 + 80043d4: 681b ldr r3, [r3, #0] + 80043d6: 781b ldrb r3, [r3, #0] + 80043d8: 011a lsls r2, r3, #4 + 80043da: f107 0320 add.w r3, r7, #32 + 80043de: 681b ldr r3, [r3, #0] + 80043e0: 4413 add r3, r2 + 80043e2: f203 4204 addw r2, r3, #1028 ; 0x404 + 80043e6: f107 031c add.w r3, r7, #28 + 80043ea: 601a str r2, [r3, #0] + 80043ec: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 80043f0: b29a uxth r2, r3 + 80043f2: f107 031c add.w r3, r7, #28 + 80043f6: 681b ldr r3, [r3, #0] + 80043f8: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr0; + 80043fa: 463b mov r3, r7 + 80043fc: 681b ldr r3, [r3, #0] + 80043fe: 891b ldrh r3, [r3, #8] + 8004400: f8a7 3096 strh.w r3, [r7, #150] ; 0x96 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 8004404: 463b mov r3, r7 + 8004406: 681b ldr r3, [r3, #0] + 8004408: 6959 ldr r1, [r3, #20] + 800440a: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 800440e: b29b uxth r3, r3 + 8004410: f8b7 2096 ldrh.w r2, [r7, #150] ; 0x96 + 8004414: 1d38 adds r0, r7, #4 + 8004416: 6800 ldr r0, [r0, #0] + 8004418: f001 f9f7 bl 800580a + 800441c: f000 bcc6 b.w 8004dac + } + else + { + /* Set the Double buffer counter for pmabuffer0 */ + PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); + 8004420: 463b mov r3, r7 + 8004422: 681b ldr r3, [r3, #0] + 8004424: 785b ldrb r3, [r3, #1] + 8004426: 2b00 cmp r3, #0 + 8004428: d164 bne.n 80044f4 + 800442a: 1d3b adds r3, r7, #4 + 800442c: 681b ldr r3, [r3, #0] + 800442e: 64bb str r3, [r7, #72] ; 0x48 + 8004430: 1d3b adds r3, r7, #4 + 8004432: 681b ldr r3, [r3, #0] + 8004434: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8004438: b29b uxth r3, r3 + 800443a: 461a mov r2, r3 + 800443c: 6cbb ldr r3, [r7, #72] ; 0x48 + 800443e: 4413 add r3, r2 + 8004440: 64bb str r3, [r7, #72] ; 0x48 + 8004442: 463b mov r3, r7 + 8004444: 681b ldr r3, [r3, #0] + 8004446: 781b ldrb r3, [r3, #0] + 8004448: 011a lsls r2, r3, #4 + 800444a: 6cbb ldr r3, [r7, #72] ; 0x48 + 800444c: 4413 add r3, r2 + 800444e: f203 4304 addw r3, r3, #1028 ; 0x404 + 8004452: 647b str r3, [r7, #68] ; 0x44 + 8004454: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004458: 2b00 cmp r3, #0 + 800445a: d112 bne.n 8004482 + 800445c: 6c7b ldr r3, [r7, #68] ; 0x44 + 800445e: 881b ldrh r3, [r3, #0] + 8004460: b29b uxth r3, r3 + 8004462: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 8004466: b29a uxth r2, r3 + 8004468: 6c7b ldr r3, [r7, #68] ; 0x44 + 800446a: 801a strh r2, [r3, #0] + 800446c: 6c7b ldr r3, [r7, #68] ; 0x44 + 800446e: 881b ldrh r3, [r3, #0] + 8004470: b29b uxth r3, r3 + 8004472: ea6f 4343 mvn.w r3, r3, lsl #17 + 8004476: ea6f 4353 mvn.w r3, r3, lsr #17 + 800447a: b29a uxth r2, r3 + 800447c: 6c7b ldr r3, [r7, #68] ; 0x44 + 800447e: 801a strh r2, [r3, #0] + 8004480: e057 b.n 8004532 + 8004482: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004486: 2b3e cmp r3, #62 ; 0x3e + 8004488: d817 bhi.n 80044ba + 800448a: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 800448e: 085b lsrs r3, r3, #1 + 8004490: f8c7 3120 str.w r3, [r7, #288] ; 0x120 + 8004494: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004498: f003 0301 and.w r3, r3, #1 + 800449c: 2b00 cmp r3, #0 + 800449e: d004 beq.n 80044aa + 80044a0: f8d7 3120 ldr.w r3, [r7, #288] ; 0x120 + 80044a4: 3301 adds r3, #1 + 80044a6: f8c7 3120 str.w r3, [r7, #288] ; 0x120 + 80044aa: f8d7 3120 ldr.w r3, [r7, #288] ; 0x120 + 80044ae: b29b uxth r3, r3 + 80044b0: 029b lsls r3, r3, #10 + 80044b2: b29a uxth r2, r3 + 80044b4: 6c7b ldr r3, [r7, #68] ; 0x44 + 80044b6: 801a strh r2, [r3, #0] + 80044b8: e03b b.n 8004532 + 80044ba: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 80044be: 095b lsrs r3, r3, #5 + 80044c0: f8c7 3120 str.w r3, [r7, #288] ; 0x120 + 80044c4: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 80044c8: f003 031f and.w r3, r3, #31 + 80044cc: 2b00 cmp r3, #0 + 80044ce: d104 bne.n 80044da + 80044d0: f8d7 3120 ldr.w r3, [r7, #288] ; 0x120 + 80044d4: 3b01 subs r3, #1 + 80044d6: f8c7 3120 str.w r3, [r7, #288] ; 0x120 + 80044da: f8d7 3120 ldr.w r3, [r7, #288] ; 0x120 + 80044de: b29b uxth r3, r3 + 80044e0: 029b lsls r3, r3, #10 + 80044e2: b29b uxth r3, r3 + 80044e4: ea6f 4343 mvn.w r3, r3, lsl #17 + 80044e8: ea6f 4353 mvn.w r3, r3, lsr #17 + 80044ec: b29a uxth r2, r3 + 80044ee: 6c7b ldr r3, [r7, #68] ; 0x44 + 80044f0: 801a strh r2, [r3, #0] + 80044f2: e01e b.n 8004532 + 80044f4: 463b mov r3, r7 + 80044f6: 681b ldr r3, [r3, #0] + 80044f8: 785b ldrb r3, [r3, #1] + 80044fa: 2b01 cmp r3, #1 + 80044fc: d119 bne.n 8004532 + 80044fe: 1d3b adds r3, r7, #4 + 8004500: 681b ldr r3, [r3, #0] + 8004502: 653b str r3, [r7, #80] ; 0x50 + 8004504: 1d3b adds r3, r7, #4 + 8004506: 681b ldr r3, [r3, #0] + 8004508: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 800450c: b29b uxth r3, r3 + 800450e: 461a mov r2, r3 + 8004510: 6d3b ldr r3, [r7, #80] ; 0x50 + 8004512: 4413 add r3, r2 + 8004514: 653b str r3, [r7, #80] ; 0x50 + 8004516: 463b mov r3, r7 + 8004518: 681b ldr r3, [r3, #0] + 800451a: 781b ldrb r3, [r3, #0] + 800451c: 011a lsls r2, r3, #4 + 800451e: 6d3b ldr r3, [r7, #80] ; 0x50 + 8004520: 4413 add r3, r2 + 8004522: f203 4304 addw r3, r3, #1028 ; 0x404 + 8004526: 64fb str r3, [r7, #76] ; 0x4c + 8004528: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 800452c: b29a uxth r2, r3 + 800452e: 6cfb ldr r3, [r7, #76] ; 0x4c + 8004530: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr0; + 8004532: 463b mov r3, r7 + 8004534: 681b ldr r3, [r3, #0] + 8004536: 891b ldrh r3, [r3, #8] + 8004538: f8a7 3096 strh.w r3, [r7, #150] ; 0x96 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 800453c: 463b mov r3, r7 + 800453e: 681b ldr r3, [r3, #0] + 8004540: 6959 ldr r1, [r3, #20] + 8004542: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004546: b29b uxth r3, r3 + 8004548: f8b7 2096 ldrh.w r2, [r7, #150] ; 0x96 + 800454c: 1d38 adds r0, r7, #4 + 800454e: 6800 ldr r0, [r0, #0] + 8004550: f001 f95b bl 800580a + ep->xfer_buff += len; + 8004554: 463b mov r3, r7 + 8004556: 681b ldr r3, [r3, #0] + 8004558: 695a ldr r2, [r3, #20] + 800455a: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 800455e: 441a add r2, r3 + 8004560: 463b mov r3, r7 + 8004562: 681b ldr r3, [r3, #0] + 8004564: 615a str r2, [r3, #20] + + if (ep->xfer_len_db > ep->maxpacket) + 8004566: 463b mov r3, r7 + 8004568: 681b ldr r3, [r3, #0] + 800456a: 6a1a ldr r2, [r3, #32] + 800456c: 463b mov r3, r7 + 800456e: 681b ldr r3, [r3, #0] + 8004570: 691b ldr r3, [r3, #16] + 8004572: 429a cmp r2, r3 + 8004574: d909 bls.n 800458a + { + ep->xfer_len_db -= len; + 8004576: 463b mov r3, r7 + 8004578: 681b ldr r3, [r3, #0] + 800457a: 6a1a ldr r2, [r3, #32] + 800457c: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004580: 1ad2 subs r2, r2, r3 + 8004582: 463b mov r3, r7 + 8004584: 681b ldr r3, [r3, #0] + 8004586: 621a str r2, [r3, #32] + 8004588: e008 b.n 800459c + } + else + { + len = ep->xfer_len_db; + 800458a: 463b mov r3, r7 + 800458c: 681b ldr r3, [r3, #0] + 800458e: 6a1b ldr r3, [r3, #32] + 8004590: f8c7 312c str.w r3, [r7, #300] ; 0x12c + ep->xfer_len_db = 0U; + 8004594: 463b mov r3, r7 + 8004596: 681b ldr r3, [r3, #0] + 8004598: 2200 movs r2, #0 + 800459a: 621a str r2, [r3, #32] + } + + /* Set the Double buffer counter for pmabuffer1 */ + PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); + 800459c: 1d3b adds r3, r7, #4 + 800459e: 681b ldr r3, [r3, #0] + 80045a0: 643b str r3, [r7, #64] ; 0x40 + 80045a2: 463b mov r3, r7 + 80045a4: 681b ldr r3, [r3, #0] + 80045a6: 785b ldrb r3, [r3, #1] + 80045a8: 2b00 cmp r3, #0 + 80045aa: d164 bne.n 8004676 + 80045ac: 1d3b adds r3, r7, #4 + 80045ae: 681b ldr r3, [r3, #0] + 80045b0: 63bb str r3, [r7, #56] ; 0x38 + 80045b2: 1d3b adds r3, r7, #4 + 80045b4: 681b ldr r3, [r3, #0] + 80045b6: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 80045ba: b29b uxth r3, r3 + 80045bc: 461a mov r2, r3 + 80045be: 6bbb ldr r3, [r7, #56] ; 0x38 + 80045c0: 4413 add r3, r2 + 80045c2: 63bb str r3, [r7, #56] ; 0x38 + 80045c4: 463b mov r3, r7 + 80045c6: 681b ldr r3, [r3, #0] + 80045c8: 781b ldrb r3, [r3, #0] + 80045ca: 011a lsls r2, r3, #4 + 80045cc: 6bbb ldr r3, [r7, #56] ; 0x38 + 80045ce: 4413 add r3, r2 + 80045d0: f203 430c addw r3, r3, #1036 ; 0x40c + 80045d4: 637b str r3, [r7, #52] ; 0x34 + 80045d6: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 80045da: 2b00 cmp r3, #0 + 80045dc: d112 bne.n 8004604 + 80045de: 6b7b ldr r3, [r7, #52] ; 0x34 + 80045e0: 881b ldrh r3, [r3, #0] + 80045e2: b29b uxth r3, r3 + 80045e4: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 80045e8: b29a uxth r2, r3 + 80045ea: 6b7b ldr r3, [r7, #52] ; 0x34 + 80045ec: 801a strh r2, [r3, #0] + 80045ee: 6b7b ldr r3, [r7, #52] ; 0x34 + 80045f0: 881b ldrh r3, [r3, #0] + 80045f2: b29b uxth r3, r3 + 80045f4: ea6f 4343 mvn.w r3, r3, lsl #17 + 80045f8: ea6f 4353 mvn.w r3, r3, lsr #17 + 80045fc: b29a uxth r2, r3 + 80045fe: 6b7b ldr r3, [r7, #52] ; 0x34 + 8004600: 801a strh r2, [r3, #0] + 8004602: e054 b.n 80046ae + 8004604: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004608: 2b3e cmp r3, #62 ; 0x3e + 800460a: d817 bhi.n 800463c + 800460c: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004610: 085b lsrs r3, r3, #1 + 8004612: f8c7 311c str.w r3, [r7, #284] ; 0x11c + 8004616: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 800461a: f003 0301 and.w r3, r3, #1 + 800461e: 2b00 cmp r3, #0 + 8004620: d004 beq.n 800462c + 8004622: f8d7 311c ldr.w r3, [r7, #284] ; 0x11c + 8004626: 3301 adds r3, #1 + 8004628: f8c7 311c str.w r3, [r7, #284] ; 0x11c + 800462c: f8d7 311c ldr.w r3, [r7, #284] ; 0x11c + 8004630: b29b uxth r3, r3 + 8004632: 029b lsls r3, r3, #10 + 8004634: b29a uxth r2, r3 + 8004636: 6b7b ldr r3, [r7, #52] ; 0x34 + 8004638: 801a strh r2, [r3, #0] + 800463a: e038 b.n 80046ae + 800463c: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004640: 095b lsrs r3, r3, #5 + 8004642: f8c7 311c str.w r3, [r7, #284] ; 0x11c + 8004646: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 800464a: f003 031f and.w r3, r3, #31 + 800464e: 2b00 cmp r3, #0 + 8004650: d104 bne.n 800465c + 8004652: f8d7 311c ldr.w r3, [r7, #284] ; 0x11c + 8004656: 3b01 subs r3, #1 + 8004658: f8c7 311c str.w r3, [r7, #284] ; 0x11c + 800465c: f8d7 311c ldr.w r3, [r7, #284] ; 0x11c + 8004660: b29b uxth r3, r3 + 8004662: 029b lsls r3, r3, #10 + 8004664: b29b uxth r3, r3 + 8004666: ea6f 4343 mvn.w r3, r3, lsl #17 + 800466a: ea6f 4353 mvn.w r3, r3, lsr #17 + 800466e: b29a uxth r2, r3 + 8004670: 6b7b ldr r3, [r7, #52] ; 0x34 + 8004672: 801a strh r2, [r3, #0] + 8004674: e01b b.n 80046ae + 8004676: 463b mov r3, r7 + 8004678: 681b ldr r3, [r3, #0] + 800467a: 785b ldrb r3, [r3, #1] + 800467c: 2b01 cmp r3, #1 + 800467e: d116 bne.n 80046ae + 8004680: 1d3b adds r3, r7, #4 + 8004682: 681b ldr r3, [r3, #0] + 8004684: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8004688: b29b uxth r3, r3 + 800468a: 461a mov r2, r3 + 800468c: 6c3b ldr r3, [r7, #64] ; 0x40 + 800468e: 4413 add r3, r2 + 8004690: 643b str r3, [r7, #64] ; 0x40 + 8004692: 463b mov r3, r7 + 8004694: 681b ldr r3, [r3, #0] + 8004696: 781b ldrb r3, [r3, #0] + 8004698: 011a lsls r2, r3, #4 + 800469a: 6c3b ldr r3, [r7, #64] ; 0x40 + 800469c: 4413 add r3, r2 + 800469e: f203 430c addw r3, r3, #1036 ; 0x40c + 80046a2: 63fb str r3, [r7, #60] ; 0x3c + 80046a4: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 80046a8: b29a uxth r2, r3 + 80046aa: 6bfb ldr r3, [r7, #60] ; 0x3c + 80046ac: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr1; + 80046ae: 463b mov r3, r7 + 80046b0: 681b ldr r3, [r3, #0] + 80046b2: 895b ldrh r3, [r3, #10] + 80046b4: f8a7 3096 strh.w r3, [r7, #150] ; 0x96 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 80046b8: 463b mov r3, r7 + 80046ba: 681b ldr r3, [r3, #0] + 80046bc: 6959 ldr r1, [r3, #20] + 80046be: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 80046c2: b29b uxth r3, r3 + 80046c4: f8b7 2096 ldrh.w r2, [r7, #150] ; 0x96 + 80046c8: 1d38 adds r0, r7, #4 + 80046ca: 6800 ldr r0, [r0, #0] + 80046cc: f001 f89d bl 800580a + 80046d0: e36c b.n 8004dac + } + } + /* auto Switch to single buffer mode when transfer xfer_len_db; + 80046d2: 463b mov r3, r7 + 80046d4: 681b ldr r3, [r3, #0] + 80046d6: 6a1b ldr r3, [r3, #32] + 80046d8: f8c7 312c str.w r3, [r7, #300] ; 0x12c + + /* disable double buffer mode */ + PCD_CLEAR_EP_DBUF(USBx, ep->num); + 80046dc: 1d3b adds r3, r7, #4 + 80046de: 681a ldr r2, [r3, #0] + 80046e0: 463b mov r3, r7 + 80046e2: 681b ldr r3, [r3, #0] + 80046e4: 781b ldrb r3, [r3, #0] + 80046e6: 009b lsls r3, r3, #2 + 80046e8: 4413 add r3, r2 + 80046ea: 881b ldrh r3, [r3, #0] + 80046ec: b29b uxth r3, r3 + 80046ee: f423 43e2 bic.w r3, r3, #28928 ; 0x7100 + 80046f2: f023 0370 bic.w r3, r3, #112 ; 0x70 + 80046f6: f8a7 3062 strh.w r3, [r7, #98] ; 0x62 + 80046fa: 1d3b adds r3, r7, #4 + 80046fc: 681a ldr r2, [r3, #0] + 80046fe: 463b mov r3, r7 + 8004700: 681b ldr r3, [r3, #0] + 8004702: 781b ldrb r3, [r3, #0] + 8004704: 009b lsls r3, r3, #2 + 8004706: 441a add r2, r3 + 8004708: f8b7 3062 ldrh.w r3, [r7, #98] ; 0x62 + 800470c: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8004710: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8004714: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8004718: f043 0380 orr.w r3, r3, #128 ; 0x80 + 800471c: b29b uxth r3, r3 + 800471e: 8013 strh r3, [r2, #0] + + /* Set Tx count with nbre of byte to be transmitted */ + PCD_SET_EP_TX_CNT(USBx, ep->num, len); + 8004720: 1d3b adds r3, r7, #4 + 8004722: 681b ldr r3, [r3, #0] + 8004724: 65fb str r3, [r7, #92] ; 0x5c + 8004726: 1d3b adds r3, r7, #4 + 8004728: 681b ldr r3, [r3, #0] + 800472a: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 800472e: b29b uxth r3, r3 + 8004730: 461a mov r2, r3 + 8004732: 6dfb ldr r3, [r7, #92] ; 0x5c + 8004734: 4413 add r3, r2 + 8004736: 65fb str r3, [r7, #92] ; 0x5c + 8004738: 463b mov r3, r7 + 800473a: 681b ldr r3, [r3, #0] + 800473c: 781b ldrb r3, [r3, #0] + 800473e: 011a lsls r2, r3, #4 + 8004740: 6dfb ldr r3, [r7, #92] ; 0x5c + 8004742: 4413 add r3, r2 + 8004744: f203 4304 addw r3, r3, #1028 ; 0x404 + 8004748: 65bb str r3, [r7, #88] ; 0x58 + 800474a: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 800474e: b29a uxth r2, r3 + 8004750: 6dbb ldr r3, [r7, #88] ; 0x58 + 8004752: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr0; + 8004754: 463b mov r3, r7 + 8004756: 681b ldr r3, [r3, #0] + 8004758: 891b ldrh r3, [r3, #8] + 800475a: f8a7 3096 strh.w r3, [r7, #150] ; 0x96 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 800475e: 463b mov r3, r7 + 8004760: 681b ldr r3, [r3, #0] + 8004762: 6959 ldr r1, [r3, #20] + 8004764: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004768: b29b uxth r3, r3 + 800476a: f8b7 2096 ldrh.w r2, [r7, #150] ; 0x96 + 800476e: 1d38 adds r0, r7, #4 + 8004770: 6800 ldr r0, [r0, #0] + 8004772: f001 f84a bl 800580a + 8004776: e319 b.n 8004dac + + /* manage isochronous double buffer IN mode */ + else + { + /* enable double buffer */ + PCD_SET_EP_DBUF(USBx, ep->num); + 8004778: 1d3b adds r3, r7, #4 + 800477a: 681a ldr r2, [r3, #0] + 800477c: 463b mov r3, r7 + 800477e: 681b ldr r3, [r3, #0] + 8004780: 781b ldrb r3, [r3, #0] + 8004782: 009b lsls r3, r3, #2 + 8004784: 4413 add r3, r2 + 8004786: 881b ldrh r3, [r3, #0] + 8004788: b29b uxth r3, r3 + 800478a: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 800478e: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8004792: f8a7 30a8 strh.w r3, [r7, #168] ; 0xa8 + 8004796: 1d3b adds r3, r7, #4 + 8004798: 681a ldr r2, [r3, #0] + 800479a: 463b mov r3, r7 + 800479c: 681b ldr r3, [r3, #0] + 800479e: 781b ldrb r3, [r3, #0] + 80047a0: 009b lsls r3, r3, #2 + 80047a2: 441a add r2, r3 + 80047a4: f8b7 30a8 ldrh.w r3, [r7, #168] ; 0xa8 + 80047a8: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 80047ac: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 80047b0: f443 4301 orr.w r3, r3, #33024 ; 0x8100 + 80047b4: f043 0380 orr.w r3, r3, #128 ; 0x80 + 80047b8: b29b uxth r3, r3 + 80047ba: 8013 strh r3, [r2, #0] + + /* each Time to write in PMA xfer_len_db will */ + ep->xfer_len_db -= len; + 80047bc: 463b mov r3, r7 + 80047be: 681b ldr r3, [r3, #0] + 80047c0: 6a1a ldr r2, [r3, #32] + 80047c2: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 80047c6: 1ad2 subs r2, r2, r3 + 80047c8: 463b mov r3, r7 + 80047ca: 681b ldr r3, [r3, #0] + 80047cc: 621a str r2, [r3, #32] + + /* Fill the data buffer */ + if ((PCD_GET_ENDPOINT(USBx, ep->num) & USB_EP_DTOG_TX) != 0U) + 80047ce: 1d3b adds r3, r7, #4 + 80047d0: 681a ldr r2, [r3, #0] + 80047d2: 463b mov r3, r7 + 80047d4: 681b ldr r3, [r3, #0] + 80047d6: 781b ldrb r3, [r3, #0] + 80047d8: 009b lsls r3, r3, #2 + 80047da: 4413 add r3, r2 + 80047dc: 881b ldrh r3, [r3, #0] + 80047de: b29b uxth r3, r3 + 80047e0: f003 0340 and.w r3, r3, #64 ; 0x40 + 80047e4: 2b00 cmp r3, #0 + 80047e6: f000 8162 beq.w 8004aae + { + /* Set the Double buffer counter for pmabuffer1 */ + PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); + 80047ea: 1d3b adds r3, r7, #4 + 80047ec: 681b ldr r3, [r3, #0] + 80047ee: f8c7 3080 str.w r3, [r7, #128] ; 0x80 + 80047f2: 463b mov r3, r7 + 80047f4: 681b ldr r3, [r3, #0] + 80047f6: 785b ldrb r3, [r3, #1] + 80047f8: 2b00 cmp r3, #0 + 80047fa: d164 bne.n 80048c6 + 80047fc: 1d3b adds r3, r7, #4 + 80047fe: 681b ldr r3, [r3, #0] + 8004800: 67bb str r3, [r7, #120] ; 0x78 + 8004802: 1d3b adds r3, r7, #4 + 8004804: 681b ldr r3, [r3, #0] + 8004806: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 800480a: b29b uxth r3, r3 + 800480c: 461a mov r2, r3 + 800480e: 6fbb ldr r3, [r7, #120] ; 0x78 + 8004810: 4413 add r3, r2 + 8004812: 67bb str r3, [r7, #120] ; 0x78 + 8004814: 463b mov r3, r7 + 8004816: 681b ldr r3, [r3, #0] + 8004818: 781b ldrb r3, [r3, #0] + 800481a: 011a lsls r2, r3, #4 + 800481c: 6fbb ldr r3, [r7, #120] ; 0x78 + 800481e: 4413 add r3, r2 + 8004820: f203 430c addw r3, r3, #1036 ; 0x40c + 8004824: 677b str r3, [r7, #116] ; 0x74 + 8004826: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 800482a: 2b00 cmp r3, #0 + 800482c: d112 bne.n 8004854 + 800482e: 6f7b ldr r3, [r7, #116] ; 0x74 + 8004830: 881b ldrh r3, [r3, #0] + 8004832: b29b uxth r3, r3 + 8004834: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 8004838: b29a uxth r2, r3 + 800483a: 6f7b ldr r3, [r7, #116] ; 0x74 + 800483c: 801a strh r2, [r3, #0] + 800483e: 6f7b ldr r3, [r7, #116] ; 0x74 + 8004840: 881b ldrh r3, [r3, #0] + 8004842: b29b uxth r3, r3 + 8004844: ea6f 4343 mvn.w r3, r3, lsl #17 + 8004848: ea6f 4353 mvn.w r3, r3, lsr #17 + 800484c: b29a uxth r2, r3 + 800484e: 6f7b ldr r3, [r7, #116] ; 0x74 + 8004850: 801a strh r2, [r3, #0] + 8004852: e057 b.n 8004904 + 8004854: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004858: 2b3e cmp r3, #62 ; 0x3e + 800485a: d817 bhi.n 800488c + 800485c: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004860: 085b lsrs r3, r3, #1 + 8004862: f8c7 3118 str.w r3, [r7, #280] ; 0x118 + 8004866: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 800486a: f003 0301 and.w r3, r3, #1 + 800486e: 2b00 cmp r3, #0 + 8004870: d004 beq.n 800487c + 8004872: f8d7 3118 ldr.w r3, [r7, #280] ; 0x118 + 8004876: 3301 adds r3, #1 + 8004878: f8c7 3118 str.w r3, [r7, #280] ; 0x118 + 800487c: f8d7 3118 ldr.w r3, [r7, #280] ; 0x118 + 8004880: b29b uxth r3, r3 + 8004882: 029b lsls r3, r3, #10 + 8004884: b29a uxth r2, r3 + 8004886: 6f7b ldr r3, [r7, #116] ; 0x74 + 8004888: 801a strh r2, [r3, #0] + 800488a: e03b b.n 8004904 + 800488c: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004890: 095b lsrs r3, r3, #5 + 8004892: f8c7 3118 str.w r3, [r7, #280] ; 0x118 + 8004896: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 800489a: f003 031f and.w r3, r3, #31 + 800489e: 2b00 cmp r3, #0 + 80048a0: d104 bne.n 80048ac + 80048a2: f8d7 3118 ldr.w r3, [r7, #280] ; 0x118 + 80048a6: 3b01 subs r3, #1 + 80048a8: f8c7 3118 str.w r3, [r7, #280] ; 0x118 + 80048ac: f8d7 3118 ldr.w r3, [r7, #280] ; 0x118 + 80048b0: b29b uxth r3, r3 + 80048b2: 029b lsls r3, r3, #10 + 80048b4: b29b uxth r3, r3 + 80048b6: ea6f 4343 mvn.w r3, r3, lsl #17 + 80048ba: ea6f 4353 mvn.w r3, r3, lsr #17 + 80048be: b29a uxth r2, r3 + 80048c0: 6f7b ldr r3, [r7, #116] ; 0x74 + 80048c2: 801a strh r2, [r3, #0] + 80048c4: e01e b.n 8004904 + 80048c6: 463b mov r3, r7 + 80048c8: 681b ldr r3, [r3, #0] + 80048ca: 785b ldrb r3, [r3, #1] + 80048cc: 2b01 cmp r3, #1 + 80048ce: d119 bne.n 8004904 + 80048d0: 1d3b adds r3, r7, #4 + 80048d2: 681b ldr r3, [r3, #0] + 80048d4: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 80048d8: b29b uxth r3, r3 + 80048da: 461a mov r2, r3 + 80048dc: f8d7 3080 ldr.w r3, [r7, #128] ; 0x80 + 80048e0: 4413 add r3, r2 + 80048e2: f8c7 3080 str.w r3, [r7, #128] ; 0x80 + 80048e6: 463b mov r3, r7 + 80048e8: 681b ldr r3, [r3, #0] + 80048ea: 781b ldrb r3, [r3, #0] + 80048ec: 011a lsls r2, r3, #4 + 80048ee: f8d7 3080 ldr.w r3, [r7, #128] ; 0x80 + 80048f2: 4413 add r3, r2 + 80048f4: f203 430c addw r3, r3, #1036 ; 0x40c + 80048f8: 67fb str r3, [r7, #124] ; 0x7c + 80048fa: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 80048fe: b29a uxth r2, r3 + 8004900: 6ffb ldr r3, [r7, #124] ; 0x7c + 8004902: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr1; + 8004904: 463b mov r3, r7 + 8004906: 681b ldr r3, [r3, #0] + 8004908: 895b ldrh r3, [r3, #10] + 800490a: f8a7 3096 strh.w r3, [r7, #150] ; 0x96 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 800490e: 463b mov r3, r7 + 8004910: 681b ldr r3, [r3, #0] + 8004912: 6959 ldr r1, [r3, #20] + 8004914: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004918: b29b uxth r3, r3 + 800491a: f8b7 2096 ldrh.w r2, [r7, #150] ; 0x96 + 800491e: 1d38 adds r0, r7, #4 + 8004920: 6800 ldr r0, [r0, #0] + 8004922: f000 ff72 bl 800580a + ep->xfer_buff += len; + 8004926: 463b mov r3, r7 + 8004928: 681b ldr r3, [r3, #0] + 800492a: 695a ldr r2, [r3, #20] + 800492c: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004930: 441a add r2, r3 + 8004932: 463b mov r3, r7 + 8004934: 681b ldr r3, [r3, #0] + 8004936: 615a str r2, [r3, #20] + + if (ep->xfer_len_db > ep->maxpacket) + 8004938: 463b mov r3, r7 + 800493a: 681b ldr r3, [r3, #0] + 800493c: 6a1a ldr r2, [r3, #32] + 800493e: 463b mov r3, r7 + 8004940: 681b ldr r3, [r3, #0] + 8004942: 691b ldr r3, [r3, #16] + 8004944: 429a cmp r2, r3 + 8004946: d909 bls.n 800495c + { + ep->xfer_len_db -= len; + 8004948: 463b mov r3, r7 + 800494a: 681b ldr r3, [r3, #0] + 800494c: 6a1a ldr r2, [r3, #32] + 800494e: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004952: 1ad2 subs r2, r2, r3 + 8004954: 463b mov r3, r7 + 8004956: 681b ldr r3, [r3, #0] + 8004958: 621a str r2, [r3, #32] + 800495a: e008 b.n 800496e + } + else + { + len = ep->xfer_len_db; + 800495c: 463b mov r3, r7 + 800495e: 681b ldr r3, [r3, #0] + 8004960: 6a1b ldr r3, [r3, #32] + 8004962: f8c7 312c str.w r3, [r7, #300] ; 0x12c + ep->xfer_len_db = 0U; + 8004966: 463b mov r3, r7 + 8004968: 681b ldr r3, [r3, #0] + 800496a: 2200 movs r2, #0 + 800496c: 621a str r2, [r3, #32] + } + + if (len > 0U) + 800496e: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004972: 2b00 cmp r3, #0 + 8004974: f000 821a beq.w 8004dac + { + /* Set the Double buffer counter for pmabuffer0 */ + PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); + 8004978: 463b mov r3, r7 + 800497a: 681b ldr r3, [r3, #0] + 800497c: 785b ldrb r3, [r3, #1] + 800497e: 2b00 cmp r3, #0 + 8004980: d164 bne.n 8004a4c + 8004982: 1d3b adds r3, r7, #4 + 8004984: 681b ldr r3, [r3, #0] + 8004986: 66bb str r3, [r7, #104] ; 0x68 + 8004988: 1d3b adds r3, r7, #4 + 800498a: 681b ldr r3, [r3, #0] + 800498c: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8004990: b29b uxth r3, r3 + 8004992: 461a mov r2, r3 + 8004994: 6ebb ldr r3, [r7, #104] ; 0x68 + 8004996: 4413 add r3, r2 + 8004998: 66bb str r3, [r7, #104] ; 0x68 + 800499a: 463b mov r3, r7 + 800499c: 681b ldr r3, [r3, #0] + 800499e: 781b ldrb r3, [r3, #0] + 80049a0: 011a lsls r2, r3, #4 + 80049a2: 6ebb ldr r3, [r7, #104] ; 0x68 + 80049a4: 4413 add r3, r2 + 80049a6: f203 4304 addw r3, r3, #1028 ; 0x404 + 80049aa: 667b str r3, [r7, #100] ; 0x64 + 80049ac: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 80049b0: 2b00 cmp r3, #0 + 80049b2: d112 bne.n 80049da + 80049b4: 6e7b ldr r3, [r7, #100] ; 0x64 + 80049b6: 881b ldrh r3, [r3, #0] + 80049b8: b29b uxth r3, r3 + 80049ba: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 80049be: b29a uxth r2, r3 + 80049c0: 6e7b ldr r3, [r7, #100] ; 0x64 + 80049c2: 801a strh r2, [r3, #0] + 80049c4: 6e7b ldr r3, [r7, #100] ; 0x64 + 80049c6: 881b ldrh r3, [r3, #0] + 80049c8: b29b uxth r3, r3 + 80049ca: ea6f 4343 mvn.w r3, r3, lsl #17 + 80049ce: ea6f 4353 mvn.w r3, r3, lsr #17 + 80049d2: b29a uxth r2, r3 + 80049d4: 6e7b ldr r3, [r7, #100] ; 0x64 + 80049d6: 801a strh r2, [r3, #0] + 80049d8: e057 b.n 8004a8a + 80049da: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 80049de: 2b3e cmp r3, #62 ; 0x3e + 80049e0: d817 bhi.n 8004a12 + 80049e2: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 80049e6: 085b lsrs r3, r3, #1 + 80049e8: f8c7 3114 str.w r3, [r7, #276] ; 0x114 + 80049ec: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 80049f0: f003 0301 and.w r3, r3, #1 + 80049f4: 2b00 cmp r3, #0 + 80049f6: d004 beq.n 8004a02 + 80049f8: f8d7 3114 ldr.w r3, [r7, #276] ; 0x114 + 80049fc: 3301 adds r3, #1 + 80049fe: f8c7 3114 str.w r3, [r7, #276] ; 0x114 + 8004a02: f8d7 3114 ldr.w r3, [r7, #276] ; 0x114 + 8004a06: b29b uxth r3, r3 + 8004a08: 029b lsls r3, r3, #10 + 8004a0a: b29a uxth r2, r3 + 8004a0c: 6e7b ldr r3, [r7, #100] ; 0x64 + 8004a0e: 801a strh r2, [r3, #0] + 8004a10: e03b b.n 8004a8a + 8004a12: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004a16: 095b lsrs r3, r3, #5 + 8004a18: f8c7 3114 str.w r3, [r7, #276] ; 0x114 + 8004a1c: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004a20: f003 031f and.w r3, r3, #31 + 8004a24: 2b00 cmp r3, #0 + 8004a26: d104 bne.n 8004a32 + 8004a28: f8d7 3114 ldr.w r3, [r7, #276] ; 0x114 + 8004a2c: 3b01 subs r3, #1 + 8004a2e: f8c7 3114 str.w r3, [r7, #276] ; 0x114 + 8004a32: f8d7 3114 ldr.w r3, [r7, #276] ; 0x114 + 8004a36: b29b uxth r3, r3 + 8004a38: 029b lsls r3, r3, #10 + 8004a3a: b29b uxth r3, r3 + 8004a3c: ea6f 4343 mvn.w r3, r3, lsl #17 + 8004a40: ea6f 4353 mvn.w r3, r3, lsr #17 + 8004a44: b29a uxth r2, r3 + 8004a46: 6e7b ldr r3, [r7, #100] ; 0x64 + 8004a48: 801a strh r2, [r3, #0] + 8004a4a: e01e b.n 8004a8a + 8004a4c: 463b mov r3, r7 + 8004a4e: 681b ldr r3, [r3, #0] + 8004a50: 785b ldrb r3, [r3, #1] + 8004a52: 2b01 cmp r3, #1 + 8004a54: d119 bne.n 8004a8a + 8004a56: 1d3b adds r3, r7, #4 + 8004a58: 681b ldr r3, [r3, #0] + 8004a5a: 673b str r3, [r7, #112] ; 0x70 + 8004a5c: 1d3b adds r3, r7, #4 + 8004a5e: 681b ldr r3, [r3, #0] + 8004a60: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8004a64: b29b uxth r3, r3 + 8004a66: 461a mov r2, r3 + 8004a68: 6f3b ldr r3, [r7, #112] ; 0x70 + 8004a6a: 4413 add r3, r2 + 8004a6c: 673b str r3, [r7, #112] ; 0x70 + 8004a6e: 463b mov r3, r7 + 8004a70: 681b ldr r3, [r3, #0] + 8004a72: 781b ldrb r3, [r3, #0] + 8004a74: 011a lsls r2, r3, #4 + 8004a76: 6f3b ldr r3, [r7, #112] ; 0x70 + 8004a78: 4413 add r3, r2 + 8004a7a: f203 4304 addw r3, r3, #1028 ; 0x404 + 8004a7e: 66fb str r3, [r7, #108] ; 0x6c + 8004a80: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004a84: b29a uxth r2, r3 + 8004a86: 6efb ldr r3, [r7, #108] ; 0x6c + 8004a88: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr0; + 8004a8a: 463b mov r3, r7 + 8004a8c: 681b ldr r3, [r3, #0] + 8004a8e: 891b ldrh r3, [r3, #8] + 8004a90: f8a7 3096 strh.w r3, [r7, #150] ; 0x96 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 8004a94: 463b mov r3, r7 + 8004a96: 681b ldr r3, [r3, #0] + 8004a98: 6959 ldr r1, [r3, #20] + 8004a9a: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004a9e: b29b uxth r3, r3 + 8004aa0: f8b7 2096 ldrh.w r2, [r7, #150] ; 0x96 + 8004aa4: 1d38 adds r0, r7, #4 + 8004aa6: 6800 ldr r0, [r0, #0] + 8004aa8: f000 feaf bl 800580a + 8004aac: e17e b.n 8004dac + } + } + else + { + /* Set the Double buffer counter for pmabuffer0 */ + PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); + 8004aae: 463b mov r3, r7 + 8004ab0: 681b ldr r3, [r3, #0] + 8004ab2: 785b ldrb r3, [r3, #1] + 8004ab4: 2b00 cmp r3, #0 + 8004ab6: d16f bne.n 8004b98 + 8004ab8: 1d3b adds r3, r7, #4 + 8004aba: 681b ldr r3, [r3, #0] + 8004abc: f8c7 309c str.w r3, [r7, #156] ; 0x9c + 8004ac0: 1d3b adds r3, r7, #4 + 8004ac2: 681b ldr r3, [r3, #0] + 8004ac4: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8004ac8: b29b uxth r3, r3 + 8004aca: 461a mov r2, r3 + 8004acc: f8d7 309c ldr.w r3, [r7, #156] ; 0x9c + 8004ad0: 4413 add r3, r2 + 8004ad2: f8c7 309c str.w r3, [r7, #156] ; 0x9c + 8004ad6: 463b mov r3, r7 + 8004ad8: 681b ldr r3, [r3, #0] + 8004ada: 781b ldrb r3, [r3, #0] + 8004adc: 011a lsls r2, r3, #4 + 8004ade: f8d7 309c ldr.w r3, [r7, #156] ; 0x9c + 8004ae2: 4413 add r3, r2 + 8004ae4: f203 4304 addw r3, r3, #1028 ; 0x404 + 8004ae8: f8c7 3098 str.w r3, [r7, #152] ; 0x98 + 8004aec: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004af0: 2b00 cmp r3, #0 + 8004af2: d116 bne.n 8004b22 + 8004af4: f8d7 3098 ldr.w r3, [r7, #152] ; 0x98 + 8004af8: 881b ldrh r3, [r3, #0] + 8004afa: b29b uxth r3, r3 + 8004afc: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 8004b00: b29a uxth r2, r3 + 8004b02: f8d7 3098 ldr.w r3, [r7, #152] ; 0x98 + 8004b06: 801a strh r2, [r3, #0] + 8004b08: f8d7 3098 ldr.w r3, [r7, #152] ; 0x98 + 8004b0c: 881b ldrh r3, [r3, #0] + 8004b0e: b29b uxth r3, r3 + 8004b10: ea6f 4343 mvn.w r3, r3, lsl #17 + 8004b14: ea6f 4353 mvn.w r3, r3, lsr #17 + 8004b18: b29a uxth r2, r3 + 8004b1a: f8d7 3098 ldr.w r3, [r7, #152] ; 0x98 + 8004b1e: 801a strh r2, [r3, #0] + 8004b20: e05f b.n 8004be2 + 8004b22: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004b26: 2b3e cmp r3, #62 ; 0x3e + 8004b28: d818 bhi.n 8004b5c + 8004b2a: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004b2e: 085b lsrs r3, r3, #1 + 8004b30: f8c7 3110 str.w r3, [r7, #272] ; 0x110 + 8004b34: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004b38: f003 0301 and.w r3, r3, #1 + 8004b3c: 2b00 cmp r3, #0 + 8004b3e: d004 beq.n 8004b4a + 8004b40: f8d7 3110 ldr.w r3, [r7, #272] ; 0x110 + 8004b44: 3301 adds r3, #1 + 8004b46: f8c7 3110 str.w r3, [r7, #272] ; 0x110 + 8004b4a: f8d7 3110 ldr.w r3, [r7, #272] ; 0x110 + 8004b4e: b29b uxth r3, r3 + 8004b50: 029b lsls r3, r3, #10 + 8004b52: b29a uxth r2, r3 + 8004b54: f8d7 3098 ldr.w r3, [r7, #152] ; 0x98 + 8004b58: 801a strh r2, [r3, #0] + 8004b5a: e042 b.n 8004be2 + 8004b5c: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004b60: 095b lsrs r3, r3, #5 + 8004b62: f8c7 3110 str.w r3, [r7, #272] ; 0x110 + 8004b66: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004b6a: f003 031f and.w r3, r3, #31 + 8004b6e: 2b00 cmp r3, #0 + 8004b70: d104 bne.n 8004b7c + 8004b72: f8d7 3110 ldr.w r3, [r7, #272] ; 0x110 + 8004b76: 3b01 subs r3, #1 + 8004b78: f8c7 3110 str.w r3, [r7, #272] ; 0x110 + 8004b7c: f8d7 3110 ldr.w r3, [r7, #272] ; 0x110 + 8004b80: b29b uxth r3, r3 + 8004b82: 029b lsls r3, r3, #10 + 8004b84: b29b uxth r3, r3 + 8004b86: ea6f 4343 mvn.w r3, r3, lsl #17 + 8004b8a: ea6f 4353 mvn.w r3, r3, lsr #17 + 8004b8e: b29a uxth r2, r3 + 8004b90: f8d7 3098 ldr.w r3, [r7, #152] ; 0x98 + 8004b94: 801a strh r2, [r3, #0] + 8004b96: e024 b.n 8004be2 + 8004b98: 463b mov r3, r7 + 8004b9a: 681b ldr r3, [r3, #0] + 8004b9c: 785b ldrb r3, [r3, #1] + 8004b9e: 2b01 cmp r3, #1 + 8004ba0: d11f bne.n 8004be2 + 8004ba2: 1d3b adds r3, r7, #4 + 8004ba4: 681b ldr r3, [r3, #0] + 8004ba6: f8c7 30a4 str.w r3, [r7, #164] ; 0xa4 + 8004baa: 1d3b adds r3, r7, #4 + 8004bac: 681b ldr r3, [r3, #0] + 8004bae: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8004bb2: b29b uxth r3, r3 + 8004bb4: 461a mov r2, r3 + 8004bb6: f8d7 30a4 ldr.w r3, [r7, #164] ; 0xa4 + 8004bba: 4413 add r3, r2 + 8004bbc: f8c7 30a4 str.w r3, [r7, #164] ; 0xa4 + 8004bc0: 463b mov r3, r7 + 8004bc2: 681b ldr r3, [r3, #0] + 8004bc4: 781b ldrb r3, [r3, #0] + 8004bc6: 011a lsls r2, r3, #4 + 8004bc8: f8d7 30a4 ldr.w r3, [r7, #164] ; 0xa4 + 8004bcc: 4413 add r3, r2 + 8004bce: f203 4304 addw r3, r3, #1028 ; 0x404 + 8004bd2: f8c7 30a0 str.w r3, [r7, #160] ; 0xa0 + 8004bd6: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004bda: b29a uxth r2, r3 + 8004bdc: f8d7 30a0 ldr.w r3, [r7, #160] ; 0xa0 + 8004be0: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr0; + 8004be2: 463b mov r3, r7 + 8004be4: 681b ldr r3, [r3, #0] + 8004be6: 891b ldrh r3, [r3, #8] + 8004be8: f8a7 3096 strh.w r3, [r7, #150] ; 0x96 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 8004bec: 463b mov r3, r7 + 8004bee: 681b ldr r3, [r3, #0] + 8004bf0: 6959 ldr r1, [r3, #20] + 8004bf2: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004bf6: b29b uxth r3, r3 + 8004bf8: f8b7 2096 ldrh.w r2, [r7, #150] ; 0x96 + 8004bfc: 1d38 adds r0, r7, #4 + 8004bfe: 6800 ldr r0, [r0, #0] + 8004c00: f000 fe03 bl 800580a + ep->xfer_buff += len; + 8004c04: 463b mov r3, r7 + 8004c06: 681b ldr r3, [r3, #0] + 8004c08: 695a ldr r2, [r3, #20] + 8004c0a: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004c0e: 441a add r2, r3 + 8004c10: 463b mov r3, r7 + 8004c12: 681b ldr r3, [r3, #0] + 8004c14: 615a str r2, [r3, #20] + + if (ep->xfer_len_db > ep->maxpacket) + 8004c16: 463b mov r3, r7 + 8004c18: 681b ldr r3, [r3, #0] + 8004c1a: 6a1a ldr r2, [r3, #32] + 8004c1c: 463b mov r3, r7 + 8004c1e: 681b ldr r3, [r3, #0] + 8004c20: 691b ldr r3, [r3, #16] + 8004c22: 429a cmp r2, r3 + 8004c24: d909 bls.n 8004c3a + { + ep->xfer_len_db -= len; + 8004c26: 463b mov r3, r7 + 8004c28: 681b ldr r3, [r3, #0] + 8004c2a: 6a1a ldr r2, [r3, #32] + 8004c2c: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004c30: 1ad2 subs r2, r2, r3 + 8004c32: 463b mov r3, r7 + 8004c34: 681b ldr r3, [r3, #0] + 8004c36: 621a str r2, [r3, #32] + 8004c38: e008 b.n 8004c4c + } + else + { + len = ep->xfer_len_db; + 8004c3a: 463b mov r3, r7 + 8004c3c: 681b ldr r3, [r3, #0] + 8004c3e: 6a1b ldr r3, [r3, #32] + 8004c40: f8c7 312c str.w r3, [r7, #300] ; 0x12c + ep->xfer_len_db = 0U; + 8004c44: 463b mov r3, r7 + 8004c46: 681b ldr r3, [r3, #0] + 8004c48: 2200 movs r2, #0 + 8004c4a: 621a str r2, [r3, #32] + } + + if (len > 0U) + 8004c4c: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004c50: 2b00 cmp r3, #0 + 8004c52: f000 80ab beq.w 8004dac + { + /* Set the Double buffer counter for pmabuffer1 */ + PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); + 8004c56: 1d3b adds r3, r7, #4 + 8004c58: 681b ldr r3, [r3, #0] + 8004c5a: f8c7 3090 str.w r3, [r7, #144] ; 0x90 + 8004c5e: 463b mov r3, r7 + 8004c60: 681b ldr r3, [r3, #0] + 8004c62: 785b ldrb r3, [r3, #1] + 8004c64: 2b00 cmp r3, #0 + 8004c66: d16f bne.n 8004d48 + 8004c68: 1d3b adds r3, r7, #4 + 8004c6a: 681b ldr r3, [r3, #0] + 8004c6c: f8c7 3088 str.w r3, [r7, #136] ; 0x88 + 8004c70: 1d3b adds r3, r7, #4 + 8004c72: 681b ldr r3, [r3, #0] + 8004c74: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8004c78: b29b uxth r3, r3 + 8004c7a: 461a mov r2, r3 + 8004c7c: f8d7 3088 ldr.w r3, [r7, #136] ; 0x88 + 8004c80: 4413 add r3, r2 + 8004c82: f8c7 3088 str.w r3, [r7, #136] ; 0x88 + 8004c86: 463b mov r3, r7 + 8004c88: 681b ldr r3, [r3, #0] + 8004c8a: 781b ldrb r3, [r3, #0] + 8004c8c: 011a lsls r2, r3, #4 + 8004c8e: f8d7 3088 ldr.w r3, [r7, #136] ; 0x88 + 8004c92: 4413 add r3, r2 + 8004c94: f203 430c addw r3, r3, #1036 ; 0x40c + 8004c98: f8c7 3084 str.w r3, [r7, #132] ; 0x84 + 8004c9c: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004ca0: 2b00 cmp r3, #0 + 8004ca2: d116 bne.n 8004cd2 + 8004ca4: f8d7 3084 ldr.w r3, [r7, #132] ; 0x84 + 8004ca8: 881b ldrh r3, [r3, #0] + 8004caa: b29b uxth r3, r3 + 8004cac: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 8004cb0: b29a uxth r2, r3 + 8004cb2: f8d7 3084 ldr.w r3, [r7, #132] ; 0x84 + 8004cb6: 801a strh r2, [r3, #0] + 8004cb8: f8d7 3084 ldr.w r3, [r7, #132] ; 0x84 + 8004cbc: 881b ldrh r3, [r3, #0] + 8004cbe: b29b uxth r3, r3 + 8004cc0: ea6f 4343 mvn.w r3, r3, lsl #17 + 8004cc4: ea6f 4353 mvn.w r3, r3, lsr #17 + 8004cc8: b29a uxth r2, r3 + 8004cca: f8d7 3084 ldr.w r3, [r7, #132] ; 0x84 + 8004cce: 801a strh r2, [r3, #0] + 8004cd0: e05b b.n 8004d8a + 8004cd2: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004cd6: 2b3e cmp r3, #62 ; 0x3e + 8004cd8: d818 bhi.n 8004d0c + 8004cda: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004cde: 085b lsrs r3, r3, #1 + 8004ce0: f8c7 310c str.w r3, [r7, #268] ; 0x10c + 8004ce4: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004ce8: f003 0301 and.w r3, r3, #1 + 8004cec: 2b00 cmp r3, #0 + 8004cee: d004 beq.n 8004cfa + 8004cf0: f8d7 310c ldr.w r3, [r7, #268] ; 0x10c + 8004cf4: 3301 adds r3, #1 + 8004cf6: f8c7 310c str.w r3, [r7, #268] ; 0x10c + 8004cfa: f8d7 310c ldr.w r3, [r7, #268] ; 0x10c + 8004cfe: b29b uxth r3, r3 + 8004d00: 029b lsls r3, r3, #10 + 8004d02: b29a uxth r2, r3 + 8004d04: f8d7 3084 ldr.w r3, [r7, #132] ; 0x84 + 8004d08: 801a strh r2, [r3, #0] + 8004d0a: e03e b.n 8004d8a + 8004d0c: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004d10: 095b lsrs r3, r3, #5 + 8004d12: f8c7 310c str.w r3, [r7, #268] ; 0x10c + 8004d16: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004d1a: f003 031f and.w r3, r3, #31 + 8004d1e: 2b00 cmp r3, #0 + 8004d20: d104 bne.n 8004d2c + 8004d22: f8d7 310c ldr.w r3, [r7, #268] ; 0x10c + 8004d26: 3b01 subs r3, #1 + 8004d28: f8c7 310c str.w r3, [r7, #268] ; 0x10c + 8004d2c: f8d7 310c ldr.w r3, [r7, #268] ; 0x10c + 8004d30: b29b uxth r3, r3 + 8004d32: 029b lsls r3, r3, #10 + 8004d34: b29b uxth r3, r3 + 8004d36: ea6f 4343 mvn.w r3, r3, lsl #17 + 8004d3a: ea6f 4353 mvn.w r3, r3, lsr #17 + 8004d3e: b29a uxth r2, r3 + 8004d40: f8d7 3084 ldr.w r3, [r7, #132] ; 0x84 + 8004d44: 801a strh r2, [r3, #0] + 8004d46: e020 b.n 8004d8a + 8004d48: 463b mov r3, r7 + 8004d4a: 681b ldr r3, [r3, #0] + 8004d4c: 785b ldrb r3, [r3, #1] + 8004d4e: 2b01 cmp r3, #1 + 8004d50: d11b bne.n 8004d8a + 8004d52: 1d3b adds r3, r7, #4 + 8004d54: 681b ldr r3, [r3, #0] + 8004d56: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8004d5a: b29b uxth r3, r3 + 8004d5c: 461a mov r2, r3 + 8004d5e: f8d7 3090 ldr.w r3, [r7, #144] ; 0x90 + 8004d62: 4413 add r3, r2 + 8004d64: f8c7 3090 str.w r3, [r7, #144] ; 0x90 + 8004d68: 463b mov r3, r7 + 8004d6a: 681b ldr r3, [r3, #0] + 8004d6c: 781b ldrb r3, [r3, #0] + 8004d6e: 011a lsls r2, r3, #4 + 8004d70: f8d7 3090 ldr.w r3, [r7, #144] ; 0x90 + 8004d74: 4413 add r3, r2 + 8004d76: f203 430c addw r3, r3, #1036 ; 0x40c + 8004d7a: f8c7 308c str.w r3, [r7, #140] ; 0x8c + 8004d7e: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004d82: b29a uxth r2, r3 + 8004d84: f8d7 308c ldr.w r3, [r7, #140] ; 0x8c + 8004d88: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr1; + 8004d8a: 463b mov r3, r7 + 8004d8c: 681b ldr r3, [r3, #0] + 8004d8e: 895b ldrh r3, [r3, #10] + 8004d90: f8a7 3096 strh.w r3, [r7, #150] ; 0x96 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 8004d94: 463b mov r3, r7 + 8004d96: 681b ldr r3, [r3, #0] + 8004d98: 6959 ldr r1, [r3, #20] + 8004d9a: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004d9e: b29b uxth r3, r3 + 8004da0: f8b7 2096 ldrh.w r2, [r7, #150] ; 0x96 + 8004da4: 1d38 adds r0, r7, #4 + 8004da6: 6800 ldr r0, [r0, #0] + 8004da8: f000 fd2f bl 800580a + } + } + } + } + + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_VALID); + 8004dac: 1d3b adds r3, r7, #4 + 8004dae: 681a ldr r2, [r3, #0] + 8004db0: 463b mov r3, r7 + 8004db2: 681b ldr r3, [r3, #0] + 8004db4: 781b ldrb r3, [r3, #0] + 8004db6: 009b lsls r3, r3, #2 + 8004db8: 4413 add r3, r2 + 8004dba: 881b ldrh r3, [r3, #0] + 8004dbc: b29b uxth r3, r3 + 8004dbe: f107 020a add.w r2, r7, #10 + 8004dc2: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 8004dc6: f023 0340 bic.w r3, r3, #64 ; 0x40 + 8004dca: 8013 strh r3, [r2, #0] + 8004dcc: f107 030a add.w r3, r7, #10 + 8004dd0: f107 020a add.w r2, r7, #10 + 8004dd4: 8812 ldrh r2, [r2, #0] + 8004dd6: f082 0210 eor.w r2, r2, #16 + 8004dda: 801a strh r2, [r3, #0] + 8004ddc: f107 030a add.w r3, r7, #10 + 8004de0: f107 020a add.w r2, r7, #10 + 8004de4: 8812 ldrh r2, [r2, #0] + 8004de6: f082 0220 eor.w r2, r2, #32 + 8004dea: 801a strh r2, [r3, #0] + 8004dec: 1d3b adds r3, r7, #4 + 8004dee: 681a ldr r2, [r3, #0] + 8004df0: 463b mov r3, r7 + 8004df2: 681b ldr r3, [r3, #0] + 8004df4: 781b ldrb r3, [r3, #0] + 8004df6: 009b lsls r3, r3, #2 + 8004df8: 441a add r2, r3 + 8004dfa: f107 030a add.w r3, r7, #10 + 8004dfe: 881b ldrh r3, [r3, #0] + 8004e00: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8004e04: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8004e08: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8004e0c: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8004e10: b29b uxth r3, r3 + 8004e12: 8013 strh r3, [r2, #0] + 8004e14: e3b5 b.n 8005582 + } + else /* OUT endpoint */ + { + if (ep->doublebuffer == 0U) + 8004e16: 463b mov r3, r7 + 8004e18: 681b ldr r3, [r3, #0] + 8004e1a: 7b1b ldrb r3, [r3, #12] + 8004e1c: 2b00 cmp r3, #0 + 8004e1e: f040 8090 bne.w 8004f42 + { + /* Multi packet transfer */ + if (ep->xfer_len > ep->maxpacket) + 8004e22: 463b mov r3, r7 + 8004e24: 681b ldr r3, [r3, #0] + 8004e26: 699a ldr r2, [r3, #24] + 8004e28: 463b mov r3, r7 + 8004e2a: 681b ldr r3, [r3, #0] + 8004e2c: 691b ldr r3, [r3, #16] + 8004e2e: 429a cmp r2, r3 + 8004e30: d90e bls.n 8004e50 + { + len = ep->maxpacket; + 8004e32: 463b mov r3, r7 + 8004e34: 681b ldr r3, [r3, #0] + 8004e36: 691b ldr r3, [r3, #16] + 8004e38: f8c7 312c str.w r3, [r7, #300] ; 0x12c + ep->xfer_len -= len; + 8004e3c: 463b mov r3, r7 + 8004e3e: 681b ldr r3, [r3, #0] + 8004e40: 699a ldr r2, [r3, #24] + 8004e42: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004e46: 1ad2 subs r2, r2, r3 + 8004e48: 463b mov r3, r7 + 8004e4a: 681b ldr r3, [r3, #0] + 8004e4c: 619a str r2, [r3, #24] + 8004e4e: e008 b.n 8004e62 + } + else + { + len = ep->xfer_len; + 8004e50: 463b mov r3, r7 + 8004e52: 681b ldr r3, [r3, #0] + 8004e54: 699b ldr r3, [r3, #24] + 8004e56: f8c7 312c str.w r3, [r7, #300] ; 0x12c + ep->xfer_len = 0U; + 8004e5a: 463b mov r3, r7 + 8004e5c: 681b ldr r3, [r3, #0] + 8004e5e: 2200 movs r2, #0 + 8004e60: 619a str r2, [r3, #24] + } + /* configure and validate Rx endpoint */ + PCD_SET_EP_RX_CNT(USBx, ep->num, len); + 8004e62: 1d3b adds r3, r7, #4 + 8004e64: 681b ldr r3, [r3, #0] + 8004e66: f8c7 30b0 str.w r3, [r7, #176] ; 0xb0 + 8004e6a: 1d3b adds r3, r7, #4 + 8004e6c: 681b ldr r3, [r3, #0] + 8004e6e: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8004e72: b29b uxth r3, r3 + 8004e74: 461a mov r2, r3 + 8004e76: f8d7 30b0 ldr.w r3, [r7, #176] ; 0xb0 + 8004e7a: 4413 add r3, r2 + 8004e7c: f8c7 30b0 str.w r3, [r7, #176] ; 0xb0 + 8004e80: 463b mov r3, r7 + 8004e82: 681b ldr r3, [r3, #0] + 8004e84: 781b ldrb r3, [r3, #0] + 8004e86: 011a lsls r2, r3, #4 + 8004e88: f8d7 30b0 ldr.w r3, [r7, #176] ; 0xb0 + 8004e8c: 4413 add r3, r2 + 8004e8e: f203 430c addw r3, r3, #1036 ; 0x40c + 8004e92: f8c7 30ac str.w r3, [r7, #172] ; 0xac + 8004e96: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004e9a: 2b00 cmp r3, #0 + 8004e9c: d116 bne.n 8004ecc + 8004e9e: f8d7 30ac ldr.w r3, [r7, #172] ; 0xac + 8004ea2: 881b ldrh r3, [r3, #0] + 8004ea4: b29b uxth r3, r3 + 8004ea6: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 8004eaa: b29a uxth r2, r3 + 8004eac: f8d7 30ac ldr.w r3, [r7, #172] ; 0xac + 8004eb0: 801a strh r2, [r3, #0] + 8004eb2: f8d7 30ac ldr.w r3, [r7, #172] ; 0xac + 8004eb6: 881b ldrh r3, [r3, #0] + 8004eb8: b29b uxth r3, r3 + 8004eba: ea6f 4343 mvn.w r3, r3, lsl #17 + 8004ebe: ea6f 4353 mvn.w r3, r3, lsr #17 + 8004ec2: b29a uxth r2, r3 + 8004ec4: f8d7 30ac ldr.w r3, [r7, #172] ; 0xac + 8004ec8: 801a strh r2, [r3, #0] + 8004eca: e32c b.n 8005526 + 8004ecc: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004ed0: 2b3e cmp r3, #62 ; 0x3e + 8004ed2: d818 bhi.n 8004f06 + 8004ed4: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004ed8: 085b lsrs r3, r3, #1 + 8004eda: f8c7 3108 str.w r3, [r7, #264] ; 0x108 + 8004ede: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004ee2: f003 0301 and.w r3, r3, #1 + 8004ee6: 2b00 cmp r3, #0 + 8004ee8: d004 beq.n 8004ef4 + 8004eea: f8d7 3108 ldr.w r3, [r7, #264] ; 0x108 + 8004eee: 3301 adds r3, #1 + 8004ef0: f8c7 3108 str.w r3, [r7, #264] ; 0x108 + 8004ef4: f8d7 3108 ldr.w r3, [r7, #264] ; 0x108 + 8004ef8: b29b uxth r3, r3 + 8004efa: 029b lsls r3, r3, #10 + 8004efc: b29a uxth r2, r3 + 8004efe: f8d7 30ac ldr.w r3, [r7, #172] ; 0xac + 8004f02: 801a strh r2, [r3, #0] + 8004f04: e30f b.n 8005526 + 8004f06: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004f0a: 095b lsrs r3, r3, #5 + 8004f0c: f8c7 3108 str.w r3, [r7, #264] ; 0x108 + 8004f10: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8004f14: f003 031f and.w r3, r3, #31 + 8004f18: 2b00 cmp r3, #0 + 8004f1a: d104 bne.n 8004f26 + 8004f1c: f8d7 3108 ldr.w r3, [r7, #264] ; 0x108 + 8004f20: 3b01 subs r3, #1 + 8004f22: f8c7 3108 str.w r3, [r7, #264] ; 0x108 + 8004f26: f8d7 3108 ldr.w r3, [r7, #264] ; 0x108 + 8004f2a: b29b uxth r3, r3 + 8004f2c: 029b lsls r3, r3, #10 + 8004f2e: b29b uxth r3, r3 + 8004f30: ea6f 4343 mvn.w r3, r3, lsl #17 + 8004f34: ea6f 4353 mvn.w r3, r3, lsr #17 + 8004f38: b29a uxth r2, r3 + 8004f3a: f8d7 30ac ldr.w r3, [r7, #172] ; 0xac + 8004f3e: 801a strh r2, [r3, #0] + 8004f40: e2f1 b.n 8005526 + } + else + { + /* First Transfer Coming From HAL_PCD_EP_Receive & From ISR */ + /* Set the Double buffer counter */ + if (ep->type == EP_TYPE_BULK) + 8004f42: 463b mov r3, r7 + 8004f44: 681b ldr r3, [r3, #0] + 8004f46: 78db ldrb r3, [r3, #3] + 8004f48: 2b02 cmp r3, #2 + 8004f4a: f040 818f bne.w 800526c + { + PCD_SET_EP_DBUF_CNT(USBx, ep->num, ep->is_in, ep->maxpacket); + 8004f4e: 463b mov r3, r7 + 8004f50: 681b ldr r3, [r3, #0] + 8004f52: 785b ldrb r3, [r3, #1] + 8004f54: 2b00 cmp r3, #0 + 8004f56: d175 bne.n 8005044 + 8004f58: 1d3b adds r3, r7, #4 + 8004f5a: 681b ldr r3, [r3, #0] + 8004f5c: f8c7 30cc str.w r3, [r7, #204] ; 0xcc + 8004f60: 1d3b adds r3, r7, #4 + 8004f62: 681b ldr r3, [r3, #0] + 8004f64: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 8004f68: b29b uxth r3, r3 + 8004f6a: 461a mov r2, r3 + 8004f6c: f8d7 30cc ldr.w r3, [r7, #204] ; 0xcc + 8004f70: 4413 add r3, r2 + 8004f72: f8c7 30cc str.w r3, [r7, #204] ; 0xcc + 8004f76: 463b mov r3, r7 + 8004f78: 681b ldr r3, [r3, #0] + 8004f7a: 781b ldrb r3, [r3, #0] + 8004f7c: 011a lsls r2, r3, #4 + 8004f7e: f8d7 30cc ldr.w r3, [r7, #204] ; 0xcc + 8004f82: 4413 add r3, r2 + 8004f84: f203 4304 addw r3, r3, #1028 ; 0x404 + 8004f88: f8c7 30c8 str.w r3, [r7, #200] ; 0xc8 + 8004f8c: 463b mov r3, r7 + 8004f8e: 681b ldr r3, [r3, #0] + 8004f90: 691b ldr r3, [r3, #16] + 8004f92: 2b00 cmp r3, #0 + 8004f94: d116 bne.n 8004fc4 + 8004f96: f8d7 30c8 ldr.w r3, [r7, #200] ; 0xc8 + 8004f9a: 881b ldrh r3, [r3, #0] + 8004f9c: b29b uxth r3, r3 + 8004f9e: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 8004fa2: b29a uxth r2, r3 + 8004fa4: f8d7 30c8 ldr.w r3, [r7, #200] ; 0xc8 + 8004fa8: 801a strh r2, [r3, #0] + 8004faa: f8d7 30c8 ldr.w r3, [r7, #200] ; 0xc8 + 8004fae: 881b ldrh r3, [r3, #0] + 8004fb0: b29b uxth r3, r3 + 8004fb2: ea6f 4343 mvn.w r3, r3, lsl #17 + 8004fb6: ea6f 4353 mvn.w r3, r3, lsr #17 + 8004fba: b29a uxth r2, r3 + 8004fbc: f8d7 30c8 ldr.w r3, [r7, #200] ; 0xc8 + 8004fc0: 801a strh r2, [r3, #0] + 8004fc2: e065 b.n 8005090 + 8004fc4: 463b mov r3, r7 + 8004fc6: 681b ldr r3, [r3, #0] + 8004fc8: 691b ldr r3, [r3, #16] + 8004fca: 2b3e cmp r3, #62 ; 0x3e + 8004fcc: d81a bhi.n 8005004 + 8004fce: 463b mov r3, r7 + 8004fd0: 681b ldr r3, [r3, #0] + 8004fd2: 691b ldr r3, [r3, #16] + 8004fd4: 085b lsrs r3, r3, #1 + 8004fd6: f8c7 3104 str.w r3, [r7, #260] ; 0x104 + 8004fda: 463b mov r3, r7 + 8004fdc: 681b ldr r3, [r3, #0] + 8004fde: 691b ldr r3, [r3, #16] + 8004fe0: f003 0301 and.w r3, r3, #1 + 8004fe4: 2b00 cmp r3, #0 + 8004fe6: d004 beq.n 8004ff2 + 8004fe8: f8d7 3104 ldr.w r3, [r7, #260] ; 0x104 + 8004fec: 3301 adds r3, #1 + 8004fee: f8c7 3104 str.w r3, [r7, #260] ; 0x104 + 8004ff2: f8d7 3104 ldr.w r3, [r7, #260] ; 0x104 + 8004ff6: b29b uxth r3, r3 + 8004ff8: 029b lsls r3, r3, #10 + 8004ffa: b29a uxth r2, r3 + 8004ffc: f8d7 30c8 ldr.w r3, [r7, #200] ; 0xc8 + 8005000: 801a strh r2, [r3, #0] + 8005002: e045 b.n 8005090 + 8005004: 463b mov r3, r7 + 8005006: 681b ldr r3, [r3, #0] + 8005008: 691b ldr r3, [r3, #16] + 800500a: 095b lsrs r3, r3, #5 + 800500c: f8c7 3104 str.w r3, [r7, #260] ; 0x104 + 8005010: 463b mov r3, r7 + 8005012: 681b ldr r3, [r3, #0] + 8005014: 691b ldr r3, [r3, #16] + 8005016: f003 031f and.w r3, r3, #31 + 800501a: 2b00 cmp r3, #0 + 800501c: d104 bne.n 8005028 + 800501e: f8d7 3104 ldr.w r3, [r7, #260] ; 0x104 + 8005022: 3b01 subs r3, #1 + 8005024: f8c7 3104 str.w r3, [r7, #260] ; 0x104 + 8005028: f8d7 3104 ldr.w r3, [r7, #260] ; 0x104 + 800502c: b29b uxth r3, r3 + 800502e: 029b lsls r3, r3, #10 + 8005030: b29b uxth r3, r3 + 8005032: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005036: ea6f 4353 mvn.w r3, r3, lsr #17 + 800503a: b29a uxth r2, r3 + 800503c: f8d7 30c8 ldr.w r3, [r7, #200] ; 0xc8 + 8005040: 801a strh r2, [r3, #0] + 8005042: e025 b.n 8005090 + 8005044: 463b mov r3, r7 + 8005046: 681b ldr r3, [r3, #0] + 8005048: 785b ldrb r3, [r3, #1] + 800504a: 2b01 cmp r3, #1 + 800504c: d120 bne.n 8005090 + 800504e: 1d3b adds r3, r7, #4 + 8005050: 681b ldr r3, [r3, #0] + 8005052: f8c7 30d4 str.w r3, [r7, #212] ; 0xd4 + 8005056: 1d3b adds r3, r7, #4 + 8005058: 681b ldr r3, [r3, #0] + 800505a: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 800505e: b29b uxth r3, r3 + 8005060: 461a mov r2, r3 + 8005062: f8d7 30d4 ldr.w r3, [r7, #212] ; 0xd4 + 8005066: 4413 add r3, r2 + 8005068: f8c7 30d4 str.w r3, [r7, #212] ; 0xd4 + 800506c: 463b mov r3, r7 + 800506e: 681b ldr r3, [r3, #0] + 8005070: 781b ldrb r3, [r3, #0] + 8005072: 011a lsls r2, r3, #4 + 8005074: f8d7 30d4 ldr.w r3, [r7, #212] ; 0xd4 + 8005078: 4413 add r3, r2 + 800507a: f203 4304 addw r3, r3, #1028 ; 0x404 + 800507e: f8c7 30d0 str.w r3, [r7, #208] ; 0xd0 + 8005082: 463b mov r3, r7 + 8005084: 681b ldr r3, [r3, #0] + 8005086: 691b ldr r3, [r3, #16] + 8005088: b29a uxth r2, r3 + 800508a: f8d7 30d0 ldr.w r3, [r7, #208] ; 0xd0 + 800508e: 801a strh r2, [r3, #0] + 8005090: 1d3b adds r3, r7, #4 + 8005092: 681b ldr r3, [r3, #0] + 8005094: f8c7 30c4 str.w r3, [r7, #196] ; 0xc4 + 8005098: 463b mov r3, r7 + 800509a: 681b ldr r3, [r3, #0] + 800509c: 785b ldrb r3, [r3, #1] + 800509e: 2b00 cmp r3, #0 + 80050a0: d175 bne.n 800518e + 80050a2: 1d3b adds r3, r7, #4 + 80050a4: 681b ldr r3, [r3, #0] + 80050a6: f8c7 30bc str.w r3, [r7, #188] ; 0xbc + 80050aa: 1d3b adds r3, r7, #4 + 80050ac: 681b ldr r3, [r3, #0] + 80050ae: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 80050b2: b29b uxth r3, r3 + 80050b4: 461a mov r2, r3 + 80050b6: f8d7 30bc ldr.w r3, [r7, #188] ; 0xbc + 80050ba: 4413 add r3, r2 + 80050bc: f8c7 30bc str.w r3, [r7, #188] ; 0xbc + 80050c0: 463b mov r3, r7 + 80050c2: 681b ldr r3, [r3, #0] + 80050c4: 781b ldrb r3, [r3, #0] + 80050c6: 011a lsls r2, r3, #4 + 80050c8: f8d7 30bc ldr.w r3, [r7, #188] ; 0xbc + 80050cc: 4413 add r3, r2 + 80050ce: f203 430c addw r3, r3, #1036 ; 0x40c + 80050d2: f8c7 30b8 str.w r3, [r7, #184] ; 0xb8 + 80050d6: 463b mov r3, r7 + 80050d8: 681b ldr r3, [r3, #0] + 80050da: 691b ldr r3, [r3, #16] + 80050dc: 2b00 cmp r3, #0 + 80050de: d116 bne.n 800510e + 80050e0: f8d7 30b8 ldr.w r3, [r7, #184] ; 0xb8 + 80050e4: 881b ldrh r3, [r3, #0] + 80050e6: b29b uxth r3, r3 + 80050e8: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 80050ec: b29a uxth r2, r3 + 80050ee: f8d7 30b8 ldr.w r3, [r7, #184] ; 0xb8 + 80050f2: 801a strh r2, [r3, #0] + 80050f4: f8d7 30b8 ldr.w r3, [r7, #184] ; 0xb8 + 80050f8: 881b ldrh r3, [r3, #0] + 80050fa: b29b uxth r3, r3 + 80050fc: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005100: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005104: b29a uxth r2, r3 + 8005106: f8d7 30b8 ldr.w r3, [r7, #184] ; 0xb8 + 800510a: 801a strh r2, [r3, #0] + 800510c: e061 b.n 80051d2 + 800510e: 463b mov r3, r7 + 8005110: 681b ldr r3, [r3, #0] + 8005112: 691b ldr r3, [r3, #16] + 8005114: 2b3e cmp r3, #62 ; 0x3e + 8005116: d81a bhi.n 800514e + 8005118: 463b mov r3, r7 + 800511a: 681b ldr r3, [r3, #0] + 800511c: 691b ldr r3, [r3, #16] + 800511e: 085b lsrs r3, r3, #1 + 8005120: f8c7 3100 str.w r3, [r7, #256] ; 0x100 + 8005124: 463b mov r3, r7 + 8005126: 681b ldr r3, [r3, #0] + 8005128: 691b ldr r3, [r3, #16] + 800512a: f003 0301 and.w r3, r3, #1 + 800512e: 2b00 cmp r3, #0 + 8005130: d004 beq.n 800513c + 8005132: f8d7 3100 ldr.w r3, [r7, #256] ; 0x100 + 8005136: 3301 adds r3, #1 + 8005138: f8c7 3100 str.w r3, [r7, #256] ; 0x100 + 800513c: f8d7 3100 ldr.w r3, [r7, #256] ; 0x100 + 8005140: b29b uxth r3, r3 + 8005142: 029b lsls r3, r3, #10 + 8005144: b29a uxth r2, r3 + 8005146: f8d7 30b8 ldr.w r3, [r7, #184] ; 0xb8 + 800514a: 801a strh r2, [r3, #0] + 800514c: e041 b.n 80051d2 + 800514e: 463b mov r3, r7 + 8005150: 681b ldr r3, [r3, #0] + 8005152: 691b ldr r3, [r3, #16] + 8005154: 095b lsrs r3, r3, #5 + 8005156: f8c7 3100 str.w r3, [r7, #256] ; 0x100 + 800515a: 463b mov r3, r7 + 800515c: 681b ldr r3, [r3, #0] + 800515e: 691b ldr r3, [r3, #16] + 8005160: f003 031f and.w r3, r3, #31 + 8005164: 2b00 cmp r3, #0 + 8005166: d104 bne.n 8005172 + 8005168: f8d7 3100 ldr.w r3, [r7, #256] ; 0x100 + 800516c: 3b01 subs r3, #1 + 800516e: f8c7 3100 str.w r3, [r7, #256] ; 0x100 + 8005172: f8d7 3100 ldr.w r3, [r7, #256] ; 0x100 + 8005176: b29b uxth r3, r3 + 8005178: 029b lsls r3, r3, #10 + 800517a: b29b uxth r3, r3 + 800517c: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005180: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005184: b29a uxth r2, r3 + 8005186: f8d7 30b8 ldr.w r3, [r7, #184] ; 0xb8 + 800518a: 801a strh r2, [r3, #0] + 800518c: e021 b.n 80051d2 + 800518e: 463b mov r3, r7 + 8005190: 681b ldr r3, [r3, #0] + 8005192: 785b ldrb r3, [r3, #1] + 8005194: 2b01 cmp r3, #1 + 8005196: d11c bne.n 80051d2 + 8005198: 1d3b adds r3, r7, #4 + 800519a: 681b ldr r3, [r3, #0] + 800519c: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 80051a0: b29b uxth r3, r3 + 80051a2: 461a mov r2, r3 + 80051a4: f8d7 30c4 ldr.w r3, [r7, #196] ; 0xc4 + 80051a8: 4413 add r3, r2 + 80051aa: f8c7 30c4 str.w r3, [r7, #196] ; 0xc4 + 80051ae: 463b mov r3, r7 + 80051b0: 681b ldr r3, [r3, #0] + 80051b2: 781b ldrb r3, [r3, #0] + 80051b4: 011a lsls r2, r3, #4 + 80051b6: f8d7 30c4 ldr.w r3, [r7, #196] ; 0xc4 + 80051ba: 4413 add r3, r2 + 80051bc: f203 430c addw r3, r3, #1036 ; 0x40c + 80051c0: f8c7 30c0 str.w r3, [r7, #192] ; 0xc0 + 80051c4: 463b mov r3, r7 + 80051c6: 681b ldr r3, [r3, #0] + 80051c8: 691b ldr r3, [r3, #16] + 80051ca: b29a uxth r2, r3 + 80051cc: f8d7 30c0 ldr.w r3, [r7, #192] ; 0xc0 + 80051d0: 801a strh r2, [r3, #0] + + /* Coming from ISR */ + if (ep->xfer_count != 0U) + 80051d2: 463b mov r3, r7 + 80051d4: 681b ldr r3, [r3, #0] + 80051d6: 69db ldr r3, [r3, #28] + 80051d8: 2b00 cmp r3, #0 + 80051da: f000 81a4 beq.w 8005526 + { + /* update last value to check if there is blocking state */ + wEPVal = PCD_GET_ENDPOINT(USBx, ep->num); + 80051de: 1d3b adds r3, r7, #4 + 80051e0: 681a ldr r2, [r3, #0] + 80051e2: 463b mov r3, r7 + 80051e4: 681b ldr r3, [r3, #0] + 80051e6: 781b ldrb r3, [r3, #0] + 80051e8: 009b lsls r3, r3, #2 + 80051ea: 4413 add r3, r2 + 80051ec: 881b ldrh r3, [r3, #0] + 80051ee: f8a7 30b6 strh.w r3, [r7, #182] ; 0xb6 + + /*Blocking State */ + if ((((wEPVal & USB_EP_DTOG_RX) != 0U) && ((wEPVal & USB_EP_DTOG_TX) != 0U)) || + 80051f2: f8b7 30b6 ldrh.w r3, [r7, #182] ; 0xb6 + 80051f6: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 80051fa: 2b00 cmp r3, #0 + 80051fc: d005 beq.n 800520a + 80051fe: f8b7 30b6 ldrh.w r3, [r7, #182] ; 0xb6 + 8005202: f003 0340 and.w r3, r3, #64 ; 0x40 + 8005206: 2b00 cmp r3, #0 + 8005208: d10d bne.n 8005226 + (((wEPVal & USB_EP_DTOG_RX) == 0U) && ((wEPVal & USB_EP_DTOG_TX) == 0U))) + 800520a: f8b7 30b6 ldrh.w r3, [r7, #182] ; 0xb6 + 800520e: f403 4380 and.w r3, r3, #16384 ; 0x4000 + if ((((wEPVal & USB_EP_DTOG_RX) != 0U) && ((wEPVal & USB_EP_DTOG_TX) != 0U)) || + 8005212: 2b00 cmp r3, #0 + 8005214: f040 8187 bne.w 8005526 + (((wEPVal & USB_EP_DTOG_RX) == 0U) && ((wEPVal & USB_EP_DTOG_TX) == 0U))) + 8005218: f8b7 30b6 ldrh.w r3, [r7, #182] ; 0xb6 + 800521c: f003 0340 and.w r3, r3, #64 ; 0x40 + 8005220: 2b00 cmp r3, #0 + 8005222: f040 8180 bne.w 8005526 + { + PCD_FreeUserBuffer(USBx, ep->num, 0U); + 8005226: 1d3b adds r3, r7, #4 + 8005228: 681a ldr r2, [r3, #0] + 800522a: 463b mov r3, r7 + 800522c: 681b ldr r3, [r3, #0] + 800522e: 781b ldrb r3, [r3, #0] + 8005230: 009b lsls r3, r3, #2 + 8005232: 4413 add r3, r2 + 8005234: 881b ldrh r3, [r3, #0] + 8005236: b29b uxth r3, r3 + 8005238: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 800523c: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8005240: f8a7 30b4 strh.w r3, [r7, #180] ; 0xb4 + 8005244: 1d3b adds r3, r7, #4 + 8005246: 681a ldr r2, [r3, #0] + 8005248: 463b mov r3, r7 + 800524a: 681b ldr r3, [r3, #0] + 800524c: 781b ldrb r3, [r3, #0] + 800524e: 009b lsls r3, r3, #2 + 8005250: 441a add r2, r3 + 8005252: f8b7 30b4 ldrh.w r3, [r7, #180] ; 0xb4 + 8005256: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 800525a: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 800525e: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8005262: f043 03c0 orr.w r3, r3, #192 ; 0xc0 + 8005266: b29b uxth r3, r3 + 8005268: 8013 strh r3, [r2, #0] + 800526a: e15c b.n 8005526 + } + } + } + /* iso out double */ + else if (ep->type == EP_TYPE_ISOC) + 800526c: 463b mov r3, r7 + 800526e: 681b ldr r3, [r3, #0] + 8005270: 78db ldrb r3, [r3, #3] + 8005272: 2b01 cmp r3, #1 + 8005274: f040 8155 bne.w 8005522 + { + /* Multi packet transfer */ + if (ep->xfer_len > ep->maxpacket) + 8005278: 463b mov r3, r7 + 800527a: 681b ldr r3, [r3, #0] + 800527c: 699a ldr r2, [r3, #24] + 800527e: 463b mov r3, r7 + 8005280: 681b ldr r3, [r3, #0] + 8005282: 691b ldr r3, [r3, #16] + 8005284: 429a cmp r2, r3 + 8005286: d90e bls.n 80052a6 + { + len = ep->maxpacket; + 8005288: 463b mov r3, r7 + 800528a: 681b ldr r3, [r3, #0] + 800528c: 691b ldr r3, [r3, #16] + 800528e: f8c7 312c str.w r3, [r7, #300] ; 0x12c + ep->xfer_len -= len; + 8005292: 463b mov r3, r7 + 8005294: 681b ldr r3, [r3, #0] + 8005296: 699a ldr r2, [r3, #24] + 8005298: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 800529c: 1ad2 subs r2, r2, r3 + 800529e: 463b mov r3, r7 + 80052a0: 681b ldr r3, [r3, #0] + 80052a2: 619a str r2, [r3, #24] + 80052a4: e008 b.n 80052b8 + } + else + { + len = ep->xfer_len; + 80052a6: 463b mov r3, r7 + 80052a8: 681b ldr r3, [r3, #0] + 80052aa: 699b ldr r3, [r3, #24] + 80052ac: f8c7 312c str.w r3, [r7, #300] ; 0x12c + ep->xfer_len = 0U; + 80052b0: 463b mov r3, r7 + 80052b2: 681b ldr r3, [r3, #0] + 80052b4: 2200 movs r2, #0 + 80052b6: 619a str r2, [r3, #24] + } + PCD_SET_EP_DBUF_CNT(USBx, ep->num, ep->is_in, len); + 80052b8: 463b mov r3, r7 + 80052ba: 681b ldr r3, [r3, #0] + 80052bc: 785b ldrb r3, [r3, #1] + 80052be: 2b00 cmp r3, #0 + 80052c0: d16f bne.n 80053a2 + 80052c2: 1d3b adds r3, r7, #4 + 80052c4: 681b ldr r3, [r3, #0] + 80052c6: f8c7 30ec str.w r3, [r7, #236] ; 0xec + 80052ca: 1d3b adds r3, r7, #4 + 80052cc: 681b ldr r3, [r3, #0] + 80052ce: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 80052d2: b29b uxth r3, r3 + 80052d4: 461a mov r2, r3 + 80052d6: f8d7 30ec ldr.w r3, [r7, #236] ; 0xec + 80052da: 4413 add r3, r2 + 80052dc: f8c7 30ec str.w r3, [r7, #236] ; 0xec + 80052e0: 463b mov r3, r7 + 80052e2: 681b ldr r3, [r3, #0] + 80052e4: 781b ldrb r3, [r3, #0] + 80052e6: 011a lsls r2, r3, #4 + 80052e8: f8d7 30ec ldr.w r3, [r7, #236] ; 0xec + 80052ec: 4413 add r3, r2 + 80052ee: f203 4304 addw r3, r3, #1028 ; 0x404 + 80052f2: f8c7 30e8 str.w r3, [r7, #232] ; 0xe8 + 80052f6: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 80052fa: 2b00 cmp r3, #0 + 80052fc: d116 bne.n 800532c + 80052fe: f8d7 30e8 ldr.w r3, [r7, #232] ; 0xe8 + 8005302: 881b ldrh r3, [r3, #0] + 8005304: b29b uxth r3, r3 + 8005306: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 800530a: b29a uxth r2, r3 + 800530c: f8d7 30e8 ldr.w r3, [r7, #232] ; 0xe8 + 8005310: 801a strh r2, [r3, #0] + 8005312: f8d7 30e8 ldr.w r3, [r7, #232] ; 0xe8 + 8005316: 881b ldrh r3, [r3, #0] + 8005318: b29b uxth r3, r3 + 800531a: ea6f 4343 mvn.w r3, r3, lsl #17 + 800531e: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005322: b29a uxth r2, r3 + 8005324: f8d7 30e8 ldr.w r3, [r7, #232] ; 0xe8 + 8005328: 801a strh r2, [r3, #0] + 800532a: e05f b.n 80053ec + 800532c: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8005330: 2b3e cmp r3, #62 ; 0x3e + 8005332: d818 bhi.n 8005366 + 8005334: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8005338: 085b lsrs r3, r3, #1 + 800533a: f8c7 30fc str.w r3, [r7, #252] ; 0xfc + 800533e: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8005342: f003 0301 and.w r3, r3, #1 + 8005346: 2b00 cmp r3, #0 + 8005348: d004 beq.n 8005354 + 800534a: f8d7 30fc ldr.w r3, [r7, #252] ; 0xfc + 800534e: 3301 adds r3, #1 + 8005350: f8c7 30fc str.w r3, [r7, #252] ; 0xfc + 8005354: f8d7 30fc ldr.w r3, [r7, #252] ; 0xfc + 8005358: b29b uxth r3, r3 + 800535a: 029b lsls r3, r3, #10 + 800535c: b29a uxth r2, r3 + 800535e: f8d7 30e8 ldr.w r3, [r7, #232] ; 0xe8 + 8005362: 801a strh r2, [r3, #0] + 8005364: e042 b.n 80053ec + 8005366: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 800536a: 095b lsrs r3, r3, #5 + 800536c: f8c7 30fc str.w r3, [r7, #252] ; 0xfc + 8005370: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8005374: f003 031f and.w r3, r3, #31 + 8005378: 2b00 cmp r3, #0 + 800537a: d104 bne.n 8005386 + 800537c: f8d7 30fc ldr.w r3, [r7, #252] ; 0xfc + 8005380: 3b01 subs r3, #1 + 8005382: f8c7 30fc str.w r3, [r7, #252] ; 0xfc + 8005386: f8d7 30fc ldr.w r3, [r7, #252] ; 0xfc + 800538a: b29b uxth r3, r3 + 800538c: 029b lsls r3, r3, #10 + 800538e: b29b uxth r3, r3 + 8005390: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005394: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005398: b29a uxth r2, r3 + 800539a: f8d7 30e8 ldr.w r3, [r7, #232] ; 0xe8 + 800539e: 801a strh r2, [r3, #0] + 80053a0: e024 b.n 80053ec + 80053a2: 463b mov r3, r7 + 80053a4: 681b ldr r3, [r3, #0] + 80053a6: 785b ldrb r3, [r3, #1] + 80053a8: 2b01 cmp r3, #1 + 80053aa: d11f bne.n 80053ec + 80053ac: 1d3b adds r3, r7, #4 + 80053ae: 681b ldr r3, [r3, #0] + 80053b0: f8c7 30f4 str.w r3, [r7, #244] ; 0xf4 + 80053b4: 1d3b adds r3, r7, #4 + 80053b6: 681b ldr r3, [r3, #0] + 80053b8: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 80053bc: b29b uxth r3, r3 + 80053be: 461a mov r2, r3 + 80053c0: f8d7 30f4 ldr.w r3, [r7, #244] ; 0xf4 + 80053c4: 4413 add r3, r2 + 80053c6: f8c7 30f4 str.w r3, [r7, #244] ; 0xf4 + 80053ca: 463b mov r3, r7 + 80053cc: 681b ldr r3, [r3, #0] + 80053ce: 781b ldrb r3, [r3, #0] + 80053d0: 011a lsls r2, r3, #4 + 80053d2: f8d7 30f4 ldr.w r3, [r7, #244] ; 0xf4 + 80053d6: 4413 add r3, r2 + 80053d8: f203 4304 addw r3, r3, #1028 ; 0x404 + 80053dc: f8c7 30f0 str.w r3, [r7, #240] ; 0xf0 + 80053e0: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 80053e4: b29a uxth r2, r3 + 80053e6: f8d7 30f0 ldr.w r3, [r7, #240] ; 0xf0 + 80053ea: 801a strh r2, [r3, #0] + 80053ec: 1d3b adds r3, r7, #4 + 80053ee: 681b ldr r3, [r3, #0] + 80053f0: f8c7 30e4 str.w r3, [r7, #228] ; 0xe4 + 80053f4: 463b mov r3, r7 + 80053f6: 681b ldr r3, [r3, #0] + 80053f8: 785b ldrb r3, [r3, #1] + 80053fa: 2b00 cmp r3, #0 + 80053fc: d16f bne.n 80054de + 80053fe: 1d3b adds r3, r7, #4 + 8005400: 681b ldr r3, [r3, #0] + 8005402: f8c7 30dc str.w r3, [r7, #220] ; 0xdc + 8005406: 1d3b adds r3, r7, #4 + 8005408: 681b ldr r3, [r3, #0] + 800540a: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 800540e: b29b uxth r3, r3 + 8005410: 461a mov r2, r3 + 8005412: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc + 8005416: 4413 add r3, r2 + 8005418: f8c7 30dc str.w r3, [r7, #220] ; 0xdc + 800541c: 463b mov r3, r7 + 800541e: 681b ldr r3, [r3, #0] + 8005420: 781b ldrb r3, [r3, #0] + 8005422: 011a lsls r2, r3, #4 + 8005424: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc + 8005428: 4413 add r3, r2 + 800542a: f203 430c addw r3, r3, #1036 ; 0x40c + 800542e: f8c7 30d8 str.w r3, [r7, #216] ; 0xd8 + 8005432: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8005436: 2b00 cmp r3, #0 + 8005438: d116 bne.n 8005468 + 800543a: f8d7 30d8 ldr.w r3, [r7, #216] ; 0xd8 + 800543e: 881b ldrh r3, [r3, #0] + 8005440: b29b uxth r3, r3 + 8005442: f423 43f8 bic.w r3, r3, #31744 ; 0x7c00 + 8005446: b29a uxth r2, r3 + 8005448: f8d7 30d8 ldr.w r3, [r7, #216] ; 0xd8 + 800544c: 801a strh r2, [r3, #0] + 800544e: f8d7 30d8 ldr.w r3, [r7, #216] ; 0xd8 + 8005452: 881b ldrh r3, [r3, #0] + 8005454: b29b uxth r3, r3 + 8005456: ea6f 4343 mvn.w r3, r3, lsl #17 + 800545a: ea6f 4353 mvn.w r3, r3, lsr #17 + 800545e: b29a uxth r2, r3 + 8005460: f8d7 30d8 ldr.w r3, [r7, #216] ; 0xd8 + 8005464: 801a strh r2, [r3, #0] + 8005466: e05e b.n 8005526 + 8005468: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 800546c: 2b3e cmp r3, #62 ; 0x3e + 800546e: d818 bhi.n 80054a2 + 8005470: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8005474: 085b lsrs r3, r3, #1 + 8005476: f8c7 30f8 str.w r3, [r7, #248] ; 0xf8 + 800547a: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 800547e: f003 0301 and.w r3, r3, #1 + 8005482: 2b00 cmp r3, #0 + 8005484: d004 beq.n 8005490 + 8005486: f8d7 30f8 ldr.w r3, [r7, #248] ; 0xf8 + 800548a: 3301 adds r3, #1 + 800548c: f8c7 30f8 str.w r3, [r7, #248] ; 0xf8 + 8005490: f8d7 30f8 ldr.w r3, [r7, #248] ; 0xf8 + 8005494: b29b uxth r3, r3 + 8005496: 029b lsls r3, r3, #10 + 8005498: b29a uxth r2, r3 + 800549a: f8d7 30d8 ldr.w r3, [r7, #216] ; 0xd8 + 800549e: 801a strh r2, [r3, #0] + 80054a0: e041 b.n 8005526 + 80054a2: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 80054a6: 095b lsrs r3, r3, #5 + 80054a8: f8c7 30f8 str.w r3, [r7, #248] ; 0xf8 + 80054ac: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 80054b0: f003 031f and.w r3, r3, #31 + 80054b4: 2b00 cmp r3, #0 + 80054b6: d104 bne.n 80054c2 + 80054b8: f8d7 30f8 ldr.w r3, [r7, #248] ; 0xf8 + 80054bc: 3b01 subs r3, #1 + 80054be: f8c7 30f8 str.w r3, [r7, #248] ; 0xf8 + 80054c2: f8d7 30f8 ldr.w r3, [r7, #248] ; 0xf8 + 80054c6: b29b uxth r3, r3 + 80054c8: 029b lsls r3, r3, #10 + 80054ca: b29b uxth r3, r3 + 80054cc: ea6f 4343 mvn.w r3, r3, lsl #17 + 80054d0: ea6f 4353 mvn.w r3, r3, lsr #17 + 80054d4: b29a uxth r2, r3 + 80054d6: f8d7 30d8 ldr.w r3, [r7, #216] ; 0xd8 + 80054da: 801a strh r2, [r3, #0] + 80054dc: e023 b.n 8005526 + 80054de: 463b mov r3, r7 + 80054e0: 681b ldr r3, [r3, #0] + 80054e2: 785b ldrb r3, [r3, #1] + 80054e4: 2b01 cmp r3, #1 + 80054e6: d11e bne.n 8005526 + 80054e8: 1d3b adds r3, r7, #4 + 80054ea: 681b ldr r3, [r3, #0] + 80054ec: f8b3 3050 ldrh.w r3, [r3, #80] ; 0x50 + 80054f0: b29b uxth r3, r3 + 80054f2: 461a mov r2, r3 + 80054f4: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 + 80054f8: 4413 add r3, r2 + 80054fa: f8c7 30e4 str.w r3, [r7, #228] ; 0xe4 + 80054fe: 463b mov r3, r7 + 8005500: 681b ldr r3, [r3, #0] + 8005502: 781b ldrb r3, [r3, #0] + 8005504: 011a lsls r2, r3, #4 + 8005506: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 + 800550a: 4413 add r3, r2 + 800550c: f203 430c addw r3, r3, #1036 ; 0x40c + 8005510: f8c7 30e0 str.w r3, [r7, #224] ; 0xe0 + 8005514: f8d7 312c ldr.w r3, [r7, #300] ; 0x12c + 8005518: b29a uxth r2, r3 + 800551a: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 + 800551e: 801a strh r2, [r3, #0] + 8005520: e001 b.n 8005526 + } + else + { + return HAL_ERROR; + 8005522: 2301 movs r3, #1 + 8005524: e02e b.n 8005584 + } + } + + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); + 8005526: 1d3b adds r3, r7, #4 + 8005528: 681a ldr r2, [r3, #0] + 800552a: 463b mov r3, r7 + 800552c: 681b ldr r3, [r3, #0] + 800552e: 781b ldrb r3, [r3, #0] + 8005530: 009b lsls r3, r3, #2 + 8005532: 4413 add r3, r2 + 8005534: 881b ldrh r3, [r3, #0] + 8005536: b29b uxth r3, r3 + 8005538: f423 4380 bic.w r3, r3, #16384 ; 0x4000 + 800553c: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8005540: f8a7 30aa strh.w r3, [r7, #170] ; 0xaa + 8005544: f8b7 30aa ldrh.w r3, [r7, #170] ; 0xaa + 8005548: f483 5380 eor.w r3, r3, #4096 ; 0x1000 + 800554c: f8a7 30aa strh.w r3, [r7, #170] ; 0xaa + 8005550: f8b7 30aa ldrh.w r3, [r7, #170] ; 0xaa + 8005554: f483 5300 eor.w r3, r3, #8192 ; 0x2000 + 8005558: f8a7 30aa strh.w r3, [r7, #170] ; 0xaa + 800555c: 1d3b adds r3, r7, #4 + 800555e: 681a ldr r2, [r3, #0] + 8005560: 463b mov r3, r7 + 8005562: 681b ldr r3, [r3, #0] + 8005564: 781b ldrb r3, [r3, #0] + 8005566: 009b lsls r3, r3, #2 + 8005568: 441a add r2, r3 + 800556a: f8b7 30aa ldrh.w r3, [r7, #170] ; 0xaa + 800556e: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8005572: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8005576: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 800557a: f043 0380 orr.w r3, r3, #128 ; 0x80 + 800557e: b29b uxth r3, r3 + 8005580: 8013 strh r3, [r2, #0] + } + + return HAL_OK; + 8005582: 2300 movs r3, #0 +} + 8005584: 4618 mov r0, r3 + 8005586: f507 7798 add.w r7, r7, #304 ; 0x130 + 800558a: 46bd mov sp, r7 + 800558c: bd80 pop {r7, pc} + +0800558e : + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPSetStall(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + 800558e: b480 push {r7} + 8005590: b085 sub sp, #20 + 8005592: af00 add r7, sp, #0 + 8005594: 6078 str r0, [r7, #4] + 8005596: 6039 str r1, [r7, #0] + if (ep->is_in != 0U) + 8005598: 683b ldr r3, [r7, #0] + 800559a: 785b ldrb r3, [r3, #1] + 800559c: 2b00 cmp r3, #0 + 800559e: d020 beq.n 80055e2 + { + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_STALL); + 80055a0: 687a ldr r2, [r7, #4] + 80055a2: 683b ldr r3, [r7, #0] + 80055a4: 781b ldrb r3, [r3, #0] + 80055a6: 009b lsls r3, r3, #2 + 80055a8: 4413 add r3, r2 + 80055aa: 881b ldrh r3, [r3, #0] + 80055ac: b29b uxth r3, r3 + 80055ae: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 80055b2: f023 0340 bic.w r3, r3, #64 ; 0x40 + 80055b6: 81bb strh r3, [r7, #12] + 80055b8: 89bb ldrh r3, [r7, #12] + 80055ba: f083 0310 eor.w r3, r3, #16 + 80055be: 81bb strh r3, [r7, #12] + 80055c0: 687a ldr r2, [r7, #4] + 80055c2: 683b ldr r3, [r7, #0] + 80055c4: 781b ldrb r3, [r3, #0] + 80055c6: 009b lsls r3, r3, #2 + 80055c8: 441a add r2, r3 + 80055ca: 89bb ldrh r3, [r7, #12] + 80055cc: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 80055d0: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 80055d4: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 80055d8: f043 0380 orr.w r3, r3, #128 ; 0x80 + 80055dc: b29b uxth r3, r3 + 80055de: 8013 strh r3, [r2, #0] + 80055e0: e01f b.n 8005622 + } + else + { + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_STALL); + 80055e2: 687a ldr r2, [r7, #4] + 80055e4: 683b ldr r3, [r7, #0] + 80055e6: 781b ldrb r3, [r3, #0] + 80055e8: 009b lsls r3, r3, #2 + 80055ea: 4413 add r3, r2 + 80055ec: 881b ldrh r3, [r3, #0] + 80055ee: b29b uxth r3, r3 + 80055f0: f423 4380 bic.w r3, r3, #16384 ; 0x4000 + 80055f4: f023 0370 bic.w r3, r3, #112 ; 0x70 + 80055f8: 81fb strh r3, [r7, #14] + 80055fa: 89fb ldrh r3, [r7, #14] + 80055fc: f483 5380 eor.w r3, r3, #4096 ; 0x1000 + 8005600: 81fb strh r3, [r7, #14] + 8005602: 687a ldr r2, [r7, #4] + 8005604: 683b ldr r3, [r7, #0] + 8005606: 781b ldrb r3, [r3, #0] + 8005608: 009b lsls r3, r3, #2 + 800560a: 441a add r2, r3 + 800560c: 89fb ldrh r3, [r7, #14] + 800560e: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8005612: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8005616: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 800561a: f043 0380 orr.w r3, r3, #128 ; 0x80 + 800561e: b29b uxth r3, r3 + 8005620: 8013 strh r3, [r2, #0] + } + + return HAL_OK; + 8005622: 2300 movs r3, #0 +} + 8005624: 4618 mov r0, r3 + 8005626: 3714 adds r7, #20 + 8005628: 46bd mov sp, r7 + 800562a: bc80 pop {r7} + 800562c: 4770 bx lr + +0800562e : + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPClearStall(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + 800562e: b480 push {r7} + 8005630: b087 sub sp, #28 + 8005632: af00 add r7, sp, #0 + 8005634: 6078 str r0, [r7, #4] + 8005636: 6039 str r1, [r7, #0] + if (ep->doublebuffer == 0U) + 8005638: 683b ldr r3, [r7, #0] + 800563a: 7b1b ldrb r3, [r3, #12] + 800563c: 2b00 cmp r3, #0 + 800563e: f040 809d bne.w 800577c + { + if (ep->is_in != 0U) + 8005642: 683b ldr r3, [r7, #0] + 8005644: 785b ldrb r3, [r3, #1] + 8005646: 2b00 cmp r3, #0 + 8005648: d04c beq.n 80056e4 + { + PCD_CLEAR_TX_DTOG(USBx, ep->num); + 800564a: 687a ldr r2, [r7, #4] + 800564c: 683b ldr r3, [r7, #0] + 800564e: 781b ldrb r3, [r3, #0] + 8005650: 009b lsls r3, r3, #2 + 8005652: 4413 add r3, r2 + 8005654: 881b ldrh r3, [r3, #0] + 8005656: 823b strh r3, [r7, #16] + 8005658: 8a3b ldrh r3, [r7, #16] + 800565a: f003 0340 and.w r3, r3, #64 ; 0x40 + 800565e: 2b00 cmp r3, #0 + 8005660: d01b beq.n 800569a + 8005662: 687a ldr r2, [r7, #4] + 8005664: 683b ldr r3, [r7, #0] + 8005666: 781b ldrb r3, [r3, #0] + 8005668: 009b lsls r3, r3, #2 + 800566a: 4413 add r3, r2 + 800566c: 881b ldrh r3, [r3, #0] + 800566e: b29b uxth r3, r3 + 8005670: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 8005674: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8005678: 81fb strh r3, [r7, #14] + 800567a: 687a ldr r2, [r7, #4] + 800567c: 683b ldr r3, [r7, #0] + 800567e: 781b ldrb r3, [r3, #0] + 8005680: 009b lsls r3, r3, #2 + 8005682: 441a add r2, r3 + 8005684: 89fb ldrh r3, [r7, #14] + 8005686: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 800568a: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 800568e: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8005692: f043 03c0 orr.w r3, r3, #192 ; 0xc0 + 8005696: b29b uxth r3, r3 + 8005698: 8013 strh r3, [r2, #0] + + if (ep->type != EP_TYPE_ISOC) + 800569a: 683b ldr r3, [r7, #0] + 800569c: 78db ldrb r3, [r3, #3] + 800569e: 2b01 cmp r3, #1 + 80056a0: d06c beq.n 800577c + { + /* Configure NAK status for the Endpoint */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); + 80056a2: 687a ldr r2, [r7, #4] + 80056a4: 683b ldr r3, [r7, #0] + 80056a6: 781b ldrb r3, [r3, #0] + 80056a8: 009b lsls r3, r3, #2 + 80056aa: 4413 add r3, r2 + 80056ac: 881b ldrh r3, [r3, #0] + 80056ae: b29b uxth r3, r3 + 80056b0: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 80056b4: f023 0340 bic.w r3, r3, #64 ; 0x40 + 80056b8: 81bb strh r3, [r7, #12] + 80056ba: 89bb ldrh r3, [r7, #12] + 80056bc: f083 0320 eor.w r3, r3, #32 + 80056c0: 81bb strh r3, [r7, #12] + 80056c2: 687a ldr r2, [r7, #4] + 80056c4: 683b ldr r3, [r7, #0] + 80056c6: 781b ldrb r3, [r3, #0] + 80056c8: 009b lsls r3, r3, #2 + 80056ca: 441a add r2, r3 + 80056cc: 89bb ldrh r3, [r7, #12] + 80056ce: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 80056d2: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 80056d6: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 80056da: f043 0380 orr.w r3, r3, #128 ; 0x80 + 80056de: b29b uxth r3, r3 + 80056e0: 8013 strh r3, [r2, #0] + 80056e2: e04b b.n 800577c + } + } + else + { + PCD_CLEAR_RX_DTOG(USBx, ep->num); + 80056e4: 687a ldr r2, [r7, #4] + 80056e6: 683b ldr r3, [r7, #0] + 80056e8: 781b ldrb r3, [r3, #0] + 80056ea: 009b lsls r3, r3, #2 + 80056ec: 4413 add r3, r2 + 80056ee: 881b ldrh r3, [r3, #0] + 80056f0: 82fb strh r3, [r7, #22] + 80056f2: 8afb ldrh r3, [r7, #22] + 80056f4: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 80056f8: 2b00 cmp r3, #0 + 80056fa: d01b beq.n 8005734 + 80056fc: 687a ldr r2, [r7, #4] + 80056fe: 683b ldr r3, [r7, #0] + 8005700: 781b ldrb r3, [r3, #0] + 8005702: 009b lsls r3, r3, #2 + 8005704: 4413 add r3, r2 + 8005706: 881b ldrh r3, [r3, #0] + 8005708: b29b uxth r3, r3 + 800570a: f423 43e0 bic.w r3, r3, #28672 ; 0x7000 + 800570e: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8005712: 82bb strh r3, [r7, #20] + 8005714: 687a ldr r2, [r7, #4] + 8005716: 683b ldr r3, [r7, #0] + 8005718: 781b ldrb r3, [r3, #0] + 800571a: 009b lsls r3, r3, #2 + 800571c: 441a add r2, r3 + 800571e: 8abb ldrh r3, [r7, #20] + 8005720: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 8005724: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8005728: f443 4340 orr.w r3, r3, #49152 ; 0xc000 + 800572c: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8005730: b29b uxth r3, r3 + 8005732: 8013 strh r3, [r2, #0] + + /* Configure VALID status for the Endpoint */ + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); + 8005734: 687a ldr r2, [r7, #4] + 8005736: 683b ldr r3, [r7, #0] + 8005738: 781b ldrb r3, [r3, #0] + 800573a: 009b lsls r3, r3, #2 + 800573c: 4413 add r3, r2 + 800573e: 881b ldrh r3, [r3, #0] + 8005740: b29b uxth r3, r3 + 8005742: f423 4380 bic.w r3, r3, #16384 ; 0x4000 + 8005746: f023 0370 bic.w r3, r3, #112 ; 0x70 + 800574a: 827b strh r3, [r7, #18] + 800574c: 8a7b ldrh r3, [r7, #18] + 800574e: f483 5380 eor.w r3, r3, #4096 ; 0x1000 + 8005752: 827b strh r3, [r7, #18] + 8005754: 8a7b ldrh r3, [r7, #18] + 8005756: f483 5300 eor.w r3, r3, #8192 ; 0x2000 + 800575a: 827b strh r3, [r7, #18] + 800575c: 687a ldr r2, [r7, #4] + 800575e: 683b ldr r3, [r7, #0] + 8005760: 781b ldrb r3, [r3, #0] + 8005762: 009b lsls r3, r3, #2 + 8005764: 441a add r2, r3 + 8005766: 8a7b ldrh r3, [r7, #18] + 8005768: f043 437f orr.w r3, r3, #4278190080 ; 0xff000000 + 800576c: f443 037f orr.w r3, r3, #16711680 ; 0xff0000 + 8005770: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 8005774: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8005778: b29b uxth r3, r3 + 800577a: 8013 strh r3, [r2, #0] + } + } + + return HAL_OK; + 800577c: 2300 movs r3, #0 +} + 800577e: 4618 mov r0, r3 + 8005780: 371c adds r7, #28 + 8005782: 46bd mov sp, r7 + 8005784: bc80 pop {r7} + 8005786: 4770 bx lr + +08005788 : + * @param address new device address to be assigned + * This parameter can be a value from 0 to 255 + * @retval HAL status + */ +HAL_StatusTypeDef USB_SetDevAddress(USB_TypeDef *USBx, uint8_t address) +{ + 8005788: b480 push {r7} + 800578a: b083 sub sp, #12 + 800578c: af00 add r7, sp, #0 + 800578e: 6078 str r0, [r7, #4] + 8005790: 460b mov r3, r1 + 8005792: 70fb strb r3, [r7, #3] + if (address == 0U) + 8005794: 78fb ldrb r3, [r7, #3] + 8005796: 2b00 cmp r3, #0 + 8005798: d103 bne.n 80057a2 + { + /* set device address and enable function */ + USBx->DADDR = (uint16_t)USB_DADDR_EF; + 800579a: 687b ldr r3, [r7, #4] + 800579c: 2280 movs r2, #128 ; 0x80 + 800579e: f8a3 204c strh.w r2, [r3, #76] ; 0x4c + } + + return HAL_OK; + 80057a2: 2300 movs r3, #0 +} + 80057a4: 4618 mov r0, r3 + 80057a6: 370c adds r7, #12 + 80057a8: 46bd mov sp, r7 + 80057aa: bc80 pop {r7} + 80057ac: 4770 bx lr + +080057ae : + * @brief USB_DevConnect Connect the USB device by enabling the pull-up/pull-down + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevConnect(USB_TypeDef *USBx) +{ + 80057ae: b480 push {r7} + 80057b0: b083 sub sp, #12 + 80057b2: af00 add r7, sp, #0 + 80057b4: 6078 str r0, [r7, #4] + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + + return HAL_OK; + 80057b6: 2300 movs r3, #0 +} + 80057b8: 4618 mov r0, r3 + 80057ba: 370c adds r7, #12 + 80057bc: 46bd mov sp, r7 + 80057be: bc80 pop {r7} + 80057c0: 4770 bx lr + +080057c2 : + * @brief USB_DevDisconnect Disconnect the USB device by disabling the pull-up/pull-down + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevDisconnect(USB_TypeDef *USBx) +{ + 80057c2: b480 push {r7} + 80057c4: b083 sub sp, #12 + 80057c6: af00 add r7, sp, #0 + 80057c8: 6078 str r0, [r7, #4] + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + + return HAL_OK; + 80057ca: 2300 movs r3, #0 +} + 80057cc: 4618 mov r0, r3 + 80057ce: 370c adds r7, #12 + 80057d0: 46bd mov sp, r7 + 80057d2: bc80 pop {r7} + 80057d4: 4770 bx lr + +080057d6 : + * @brief USB_ReadInterrupts return the global USB interrupt status + * @param USBx Selected device + * @retval HAL status + */ +uint32_t USB_ReadInterrupts(USB_TypeDef *USBx) +{ + 80057d6: b480 push {r7} + 80057d8: b085 sub sp, #20 + 80057da: af00 add r7, sp, #0 + 80057dc: 6078 str r0, [r7, #4] + uint32_t tmpreg; + + tmpreg = USBx->ISTR; + 80057de: 687b ldr r3, [r7, #4] + 80057e0: f8b3 3044 ldrh.w r3, [r3, #68] ; 0x44 + 80057e4: b29b uxth r3, r3 + 80057e6: 60fb str r3, [r7, #12] + return tmpreg; + 80057e8: 68fb ldr r3, [r7, #12] +} + 80057ea: 4618 mov r0, r3 + 80057ec: 3714 adds r7, #20 + 80057ee: 46bd mov sp, r7 + 80057f0: bc80 pop {r7} + 80057f2: 4770 bx lr + +080057f4 : + * @param USBx Selected device + * @param psetup pointer to setup packet + * @retval HAL status + */ +HAL_StatusTypeDef USB_EP0_OutStart(USB_TypeDef *USBx, uint8_t *psetup) +{ + 80057f4: b480 push {r7} + 80057f6: b083 sub sp, #12 + 80057f8: af00 add r7, sp, #0 + 80057fa: 6078 str r0, [r7, #4] + 80057fc: 6039 str r1, [r7, #0] + UNUSED(psetup); + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + return HAL_OK; + 80057fe: 2300 movs r3, #0 +} + 8005800: 4618 mov r0, r3 + 8005802: 370c adds r7, #12 + 8005804: 46bd mov sp, r7 + 8005806: bc80 pop {r7} + 8005808: 4770 bx lr + +0800580a : + * @param wPMABufAddr address into PMA. + * @param wNBytes no. of bytes to be copied. + * @retval None + */ +void USB_WritePMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes) +{ + 800580a: b480 push {r7} + 800580c: b08d sub sp, #52 ; 0x34 + 800580e: af00 add r7, sp, #0 + 8005810: 60f8 str r0, [r7, #12] + 8005812: 60b9 str r1, [r7, #8] + 8005814: 4611 mov r1, r2 + 8005816: 461a mov r2, r3 + 8005818: 460b mov r3, r1 + 800581a: 80fb strh r3, [r7, #6] + 800581c: 4613 mov r3, r2 + 800581e: 80bb strh r3, [r7, #4] + uint32_t n = ((uint32_t)wNBytes + 1U) >> 1; + 8005820: 88bb ldrh r3, [r7, #4] + 8005822: 3301 adds r3, #1 + 8005824: 085b lsrs r3, r3, #1 + 8005826: 623b str r3, [r7, #32] + uint32_t BaseAddr = (uint32_t)USBx; + 8005828: 68fb ldr r3, [r7, #12] + 800582a: 61fb str r3, [r7, #28] + uint32_t i, temp1, temp2; + __IO uint16_t *pdwVal; + uint8_t *pBuf = pbUsrBuf; + 800582c: 68bb ldr r3, [r7, #8] + 800582e: 627b str r3, [r7, #36] ; 0x24 + + pdwVal = (__IO uint16_t *)(BaseAddr + 0x400U + ((uint32_t)wPMABufAddr * PMA_ACCESS)); + 8005830: 88fb ldrh r3, [r7, #6] + 8005832: 005a lsls r2, r3, #1 + 8005834: 69fb ldr r3, [r7, #28] + 8005836: 4413 add r3, r2 + 8005838: f503 6380 add.w r3, r3, #1024 ; 0x400 + 800583c: 62bb str r3, [r7, #40] ; 0x28 + + for (i = n; i != 0U; i--) + 800583e: 6a3b ldr r3, [r7, #32] + 8005840: 62fb str r3, [r7, #44] ; 0x2c + 8005842: e01e b.n 8005882 + { + temp1 = *pBuf; + 8005844: 6a7b ldr r3, [r7, #36] ; 0x24 + 8005846: 781b ldrb r3, [r3, #0] + 8005848: 61bb str r3, [r7, #24] + pBuf++; + 800584a: 6a7b ldr r3, [r7, #36] ; 0x24 + 800584c: 3301 adds r3, #1 + 800584e: 627b str r3, [r7, #36] ; 0x24 + temp2 = temp1 | ((uint16_t)((uint16_t) *pBuf << 8)); + 8005850: 6a7b ldr r3, [r7, #36] ; 0x24 + 8005852: 781b ldrb r3, [r3, #0] + 8005854: b29b uxth r3, r3 + 8005856: 021b lsls r3, r3, #8 + 8005858: b29b uxth r3, r3 + 800585a: 461a mov r2, r3 + 800585c: 69bb ldr r3, [r7, #24] + 800585e: 4313 orrs r3, r2 + 8005860: 617b str r3, [r7, #20] + *pdwVal = (uint16_t)temp2; + 8005862: 697b ldr r3, [r7, #20] + 8005864: b29a uxth r2, r3 + 8005866: 6abb ldr r3, [r7, #40] ; 0x28 + 8005868: 801a strh r2, [r3, #0] + pdwVal++; + 800586a: 6abb ldr r3, [r7, #40] ; 0x28 + 800586c: 3302 adds r3, #2 + 800586e: 62bb str r3, [r7, #40] ; 0x28 + +#if PMA_ACCESS > 1U + pdwVal++; + 8005870: 6abb ldr r3, [r7, #40] ; 0x28 + 8005872: 3302 adds r3, #2 + 8005874: 62bb str r3, [r7, #40] ; 0x28 +#endif + + pBuf++; + 8005876: 6a7b ldr r3, [r7, #36] ; 0x24 + 8005878: 3301 adds r3, #1 + 800587a: 627b str r3, [r7, #36] ; 0x24 + for (i = n; i != 0U; i--) + 800587c: 6afb ldr r3, [r7, #44] ; 0x2c + 800587e: 3b01 subs r3, #1 + 8005880: 62fb str r3, [r7, #44] ; 0x2c + 8005882: 6afb ldr r3, [r7, #44] ; 0x2c + 8005884: 2b00 cmp r3, #0 + 8005886: d1dd bne.n 8005844 + } +} + 8005888: bf00 nop + 800588a: bf00 nop + 800588c: 3734 adds r7, #52 ; 0x34 + 800588e: 46bd mov sp, r7 + 8005890: bc80 pop {r7} + 8005892: 4770 bx lr + +08005894 : + * @param wPMABufAddr address into PMA. + * @param wNBytes no. of bytes to be copied. + * @retval None + */ +void USB_ReadPMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes) +{ + 8005894: b480 push {r7} + 8005896: b08b sub sp, #44 ; 0x2c + 8005898: af00 add r7, sp, #0 + 800589a: 60f8 str r0, [r7, #12] + 800589c: 60b9 str r1, [r7, #8] + 800589e: 4611 mov r1, r2 + 80058a0: 461a mov r2, r3 + 80058a2: 460b mov r3, r1 + 80058a4: 80fb strh r3, [r7, #6] + 80058a6: 4613 mov r3, r2 + 80058a8: 80bb strh r3, [r7, #4] + uint32_t n = (uint32_t)wNBytes >> 1; + 80058aa: 88bb ldrh r3, [r7, #4] + 80058ac: 085b lsrs r3, r3, #1 + 80058ae: b29b uxth r3, r3 + 80058b0: 61bb str r3, [r7, #24] + uint32_t BaseAddr = (uint32_t)USBx; + 80058b2: 68fb ldr r3, [r7, #12] + 80058b4: 617b str r3, [r7, #20] + uint32_t i, temp; + __IO uint16_t *pdwVal; + uint8_t *pBuf = pbUsrBuf; + 80058b6: 68bb ldr r3, [r7, #8] + 80058b8: 61fb str r3, [r7, #28] + + pdwVal = (__IO uint16_t *)(BaseAddr + 0x400U + ((uint32_t)wPMABufAddr * PMA_ACCESS)); + 80058ba: 88fb ldrh r3, [r7, #6] + 80058bc: 005a lsls r2, r3, #1 + 80058be: 697b ldr r3, [r7, #20] + 80058c0: 4413 add r3, r2 + 80058c2: f503 6380 add.w r3, r3, #1024 ; 0x400 + 80058c6: 623b str r3, [r7, #32] + + for (i = n; i != 0U; i--) + 80058c8: 69bb ldr r3, [r7, #24] + 80058ca: 627b str r3, [r7, #36] ; 0x24 + 80058cc: e01b b.n 8005906 + { + temp = *(__IO uint16_t *)pdwVal; + 80058ce: 6a3b ldr r3, [r7, #32] + 80058d0: 881b ldrh r3, [r3, #0] + 80058d2: b29b uxth r3, r3 + 80058d4: 613b str r3, [r7, #16] + pdwVal++; + 80058d6: 6a3b ldr r3, [r7, #32] + 80058d8: 3302 adds r3, #2 + 80058da: 623b str r3, [r7, #32] + *pBuf = (uint8_t)((temp >> 0) & 0xFFU); + 80058dc: 693b ldr r3, [r7, #16] + 80058de: b2da uxtb r2, r3 + 80058e0: 69fb ldr r3, [r7, #28] + 80058e2: 701a strb r2, [r3, #0] + pBuf++; + 80058e4: 69fb ldr r3, [r7, #28] + 80058e6: 3301 adds r3, #1 + 80058e8: 61fb str r3, [r7, #28] + *pBuf = (uint8_t)((temp >> 8) & 0xFFU); + 80058ea: 693b ldr r3, [r7, #16] + 80058ec: 0a1b lsrs r3, r3, #8 + 80058ee: b2da uxtb r2, r3 + 80058f0: 69fb ldr r3, [r7, #28] + 80058f2: 701a strb r2, [r3, #0] + pBuf++; + 80058f4: 69fb ldr r3, [r7, #28] + 80058f6: 3301 adds r3, #1 + 80058f8: 61fb str r3, [r7, #28] + +#if PMA_ACCESS > 1U + pdwVal++; + 80058fa: 6a3b ldr r3, [r7, #32] + 80058fc: 3302 adds r3, #2 + 80058fe: 623b str r3, [r7, #32] + for (i = n; i != 0U; i--) + 8005900: 6a7b ldr r3, [r7, #36] ; 0x24 + 8005902: 3b01 subs r3, #1 + 8005904: 627b str r3, [r7, #36] ; 0x24 + 8005906: 6a7b ldr r3, [r7, #36] ; 0x24 + 8005908: 2b00 cmp r3, #0 + 800590a: d1e0 bne.n 80058ce +#endif + } + + if ((wNBytes % 2U) != 0U) + 800590c: 88bb ldrh r3, [r7, #4] + 800590e: f003 0301 and.w r3, r3, #1 + 8005912: b29b uxth r3, r3 + 8005914: 2b00 cmp r3, #0 + 8005916: d007 beq.n 8005928 + { + temp = *pdwVal; + 8005918: 6a3b ldr r3, [r7, #32] + 800591a: 881b ldrh r3, [r3, #0] + 800591c: b29b uxth r3, r3 + 800591e: 613b str r3, [r7, #16] + *pBuf = (uint8_t)((temp >> 0) & 0xFFU); + 8005920: 693b ldr r3, [r7, #16] + 8005922: b2da uxtb r2, r3 + 8005924: 69fb ldr r3, [r7, #28] + 8005926: 701a strb r2, [r3, #0] + } +} + 8005928: bf00 nop + 800592a: 372c adds r7, #44 ; 0x2c + 800592c: 46bd mov sp, r7 + 800592e: bc80 pop {r7} + 8005930: 4770 bx lr + ... + +08005934 <__NVIC_SystemReset>: +{ + 8005934: b480 push {r7} + 8005936: af00 add r7, sp, #0 + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +__STATIC_FORCEINLINE void __DSB(void) +{ + __ASM volatile ("dsb 0xF":::"memory"); + 8005938: f3bf 8f4f dsb sy +} + 800593c: bf00 nop + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + 800593e: 4b06 ldr r3, [pc, #24] ; (8005958 <__NVIC_SystemReset+0x24>) + 8005940: 68db ldr r3, [r3, #12] + 8005942: f403 62e0 and.w r2, r3, #1792 ; 0x700 + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + 8005946: 4904 ldr r1, [pc, #16] ; (8005958 <__NVIC_SystemReset+0x24>) + 8005948: 4b04 ldr r3, [pc, #16] ; (800595c <__NVIC_SystemReset+0x28>) + 800594a: 4313 orrs r3, r2 + 800594c: 60cb str r3, [r1, #12] + __ASM volatile ("dsb 0xF":::"memory"); + 800594e: f3bf 8f4f dsb sy +} + 8005952: bf00 nop + __NOP(); + 8005954: bf00 nop + 8005956: e7fd b.n 8005954 <__NVIC_SystemReset+0x20> + 8005958: e000ed00 .word 0xe000ed00 + 800595c: 05fa0004 .word 0x05fa0004 + +08005960 : + * @param cfgidx: Configuration index + * @retval status + */ +static uint8_t USBD_DFU_Init(USBD_HandleTypeDef *pdev, + uint8_t cfgidx) +{ + 8005960: b580 push {r7, lr} + 8005962: b084 sub sp, #16 + 8005964: af00 add r7, sp, #0 + 8005966: 6078 str r0, [r7, #4] + 8005968: 460b mov r3, r1 + 800596a: 70fb strb r3, [r7, #3] + USBD_DFU_HandleTypeDef *hdfu; + + /* Allocate Audio structure */ + pdev->pClassData = USBD_malloc(sizeof(USBD_DFU_HandleTypeDef)); + 800596c: f240 401c movw r0, #1052 ; 0x41c + 8005970: f002 faa8 bl 8007ec4 + 8005974: 4602 mov r2, r0 + 8005976: 687b ldr r3, [r7, #4] + 8005978: f8c3 22b8 str.w r2, [r3, #696] ; 0x2b8 + + if (pdev->pClassData == NULL) + 800597c: 687b ldr r3, [r7, #4] + 800597e: f8d3 32b8 ldr.w r3, [r3, #696] ; 0x2b8 + 8005982: 2b00 cmp r3, #0 + 8005984: d101 bne.n 800598a + { + return USBD_FAIL; + 8005986: 2302 movs r3, #2 + 8005988: e03f b.n 8005a0a + } + else + { + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + 800598a: 687b ldr r3, [r7, #4] + 800598c: f8d3 32b8 ldr.w r3, [r3, #696] ; 0x2b8 + 8005990: 60fb str r3, [r7, #12] + + hdfu->alt_setting = 0U; + 8005992: 68fb ldr r3, [r7, #12] + 8005994: 2200 movs r2, #0 + 8005996: f8c3 240c str.w r2, [r3, #1036] ; 0x40c + hdfu->data_ptr = USBD_DFU_APP_DEFAULT_ADD; + 800599a: 68fb ldr r3, [r7, #12] + 800599c: f04f 6200 mov.w r2, #134217728 ; 0x8000000 + 80059a0: f8c3 2408 str.w r2, [r3, #1032] ; 0x408 + hdfu->wblock_num = 0U; + 80059a4: 68fb ldr r3, [r7, #12] + 80059a6: 2200 movs r2, #0 + 80059a8: f8c3 2400 str.w r2, [r3, #1024] ; 0x400 + hdfu->wlength = 0U; + 80059ac: 68fb ldr r3, [r7, #12] + 80059ae: 2200 movs r2, #0 + 80059b0: f8c3 2404 str.w r2, [r3, #1028] ; 0x404 + + hdfu->manif_state = DFU_MANIFEST_COMPLETE; + 80059b4: 68fb ldr r3, [r7, #12] + 80059b6: 2200 movs r2, #0 + 80059b8: f883 2419 strb.w r2, [r3, #1049] ; 0x419 + hdfu->dev_state = DFU_STATE_IDLE; + 80059bc: 68fb ldr r3, [r7, #12] + 80059be: 2202 movs r2, #2 + 80059c0: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + + hdfu->dev_status[0] = DFU_ERROR_NONE; + 80059c4: 68fb ldr r3, [r7, #12] + 80059c6: 2200 movs r2, #0 + 80059c8: f883 2410 strb.w r2, [r3, #1040] ; 0x410 + hdfu->dev_status[1] = 0U; + 80059cc: 68fb ldr r3, [r7, #12] + 80059ce: 2200 movs r2, #0 + 80059d0: f883 2411 strb.w r2, [r3, #1041] ; 0x411 + hdfu->dev_status[2] = 0U; + 80059d4: 68fb ldr r3, [r7, #12] + 80059d6: 2200 movs r2, #0 + 80059d8: f883 2412 strb.w r2, [r3, #1042] ; 0x412 + hdfu->dev_status[3] = 0U; + 80059dc: 68fb ldr r3, [r7, #12] + 80059de: 2200 movs r2, #0 + 80059e0: f883 2413 strb.w r2, [r3, #1043] ; 0x413 + hdfu->dev_status[4] = DFU_STATE_IDLE; + 80059e4: 68fb ldr r3, [r7, #12] + 80059e6: 2202 movs r2, #2 + 80059e8: f883 2414 strb.w r2, [r3, #1044] ; 0x414 + hdfu->dev_status[5] = 0U; + 80059ec: 68fb ldr r3, [r7, #12] + 80059ee: 2200 movs r2, #0 + 80059f0: f883 2415 strb.w r2, [r3, #1045] ; 0x415 + + /* Initialize Hardware layer */ + if (((USBD_DFU_MediaTypeDef *)pdev->pUserData)->Init() != USBD_OK) + 80059f4: 687b ldr r3, [r7, #4] + 80059f6: f8d3 32bc ldr.w r3, [r3, #700] ; 0x2bc + 80059fa: 685b ldr r3, [r3, #4] + 80059fc: 4798 blx r3 + 80059fe: 4603 mov r3, r0 + 8005a00: 2b00 cmp r3, #0 + 8005a02: d001 beq.n 8005a08 + { + return USBD_FAIL; + 8005a04: 2302 movs r3, #2 + 8005a06: e000 b.n 8005a0a + } + } + return USBD_OK; + 8005a08: 2300 movs r3, #0 +} + 8005a0a: 4618 mov r0, r3 + 8005a0c: 3710 adds r7, #16 + 8005a0e: 46bd mov sp, r7 + 8005a10: bd80 pop {r7, pc} + +08005a12 : + * @param cfgidx: Configuration index + * @retval status + */ +static uint8_t USBD_DFU_DeInit(USBD_HandleTypeDef *pdev, + uint8_t cfgidx) +{ + 8005a12: b580 push {r7, lr} + 8005a14: b084 sub sp, #16 + 8005a16: af00 add r7, sp, #0 + 8005a18: 6078 str r0, [r7, #4] + 8005a1a: 460b mov r3, r1 + 8005a1c: 70fb strb r3, [r7, #3] + USBD_DFU_HandleTypeDef *hdfu; + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + 8005a1e: 687b ldr r3, [r7, #4] + 8005a20: f8d3 32b8 ldr.w r3, [r3, #696] ; 0x2b8 + 8005a24: 60fb str r3, [r7, #12] + + hdfu->wblock_num = 0U; + 8005a26: 68fb ldr r3, [r7, #12] + 8005a28: 2200 movs r2, #0 + 8005a2a: f8c3 2400 str.w r2, [r3, #1024] ; 0x400 + hdfu->wlength = 0U; + 8005a2e: 68fb ldr r3, [r7, #12] + 8005a30: 2200 movs r2, #0 + 8005a32: f8c3 2404 str.w r2, [r3, #1028] ; 0x404 + + hdfu->dev_state = DFU_STATE_IDLE; + 8005a36: 68fb ldr r3, [r7, #12] + 8005a38: 2202 movs r2, #2 + 8005a3a: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + hdfu->dev_status[0] = DFU_ERROR_NONE; + 8005a3e: 68fb ldr r3, [r7, #12] + 8005a40: 2200 movs r2, #0 + 8005a42: f883 2410 strb.w r2, [r3, #1040] ; 0x410 + hdfu->dev_status[4] = DFU_STATE_IDLE; + 8005a46: 68fb ldr r3, [r7, #12] + 8005a48: 2202 movs r2, #2 + 8005a4a: f883 2414 strb.w r2, [r3, #1044] ; 0x414 + + /* DeInit physical Interface components */ + if (pdev->pClassData != NULL) + 8005a4e: 687b ldr r3, [r7, #4] + 8005a50: f8d3 32b8 ldr.w r3, [r3, #696] ; 0x2b8 + 8005a54: 2b00 cmp r3, #0 + 8005a56: d00e beq.n 8005a76 + { + /* De-Initialize Hardware layer */ + ((USBD_DFU_MediaTypeDef *)pdev->pUserData)->DeInit(); + 8005a58: 687b ldr r3, [r7, #4] + 8005a5a: f8d3 32bc ldr.w r3, [r3, #700] ; 0x2bc + 8005a5e: 689b ldr r3, [r3, #8] + 8005a60: 4798 blx r3 + USBD_free(pdev->pClassData); + 8005a62: 687b ldr r3, [r7, #4] + 8005a64: f8d3 32b8 ldr.w r3, [r3, #696] ; 0x2b8 + 8005a68: 4618 mov r0, r3 + 8005a6a: f002 fa37 bl 8007edc + pdev->pClassData = NULL; + 8005a6e: 687b ldr r3, [r7, #4] + 8005a70: 2200 movs r2, #0 + 8005a72: f8c3 22b8 str.w r2, [r3, #696] ; 0x2b8 + } + + return USBD_OK; + 8005a76: 2300 movs r3, #0 +} + 8005a78: 4618 mov r0, r3 + 8005a7a: 3710 adds r7, #16 + 8005a7c: 46bd mov sp, r7 + 8005a7e: bd80 pop {r7, pc} + +08005a80 : + * @param req: usb requests + * @retval status + */ +static uint8_t USBD_DFU_Setup(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 8005a80: b580 push {r7, lr} + 8005a82: b086 sub sp, #24 + 8005a84: af00 add r7, sp, #0 + 8005a86: 6078 str r0, [r7, #4] + 8005a88: 6039 str r1, [r7, #0] + USBD_DFU_HandleTypeDef *hdfu; + uint8_t *pbuf = 0U; + 8005a8a: 2300 movs r3, #0 + 8005a8c: 617b str r3, [r7, #20] + uint16_t len = 0U; + 8005a8e: 2300 movs r3, #0 + 8005a90: 827b strh r3, [r7, #18] + uint16_t status_info = 0U; + 8005a92: 2300 movs r3, #0 + 8005a94: 817b strh r3, [r7, #10] + uint8_t ret = USBD_OK; + 8005a96: 2300 movs r3, #0 + 8005a98: 747b strb r3, [r7, #17] + + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + 8005a9a: 687b ldr r3, [r7, #4] + 8005a9c: f8d3 32b8 ldr.w r3, [r3, #696] ; 0x2b8 + 8005aa0: 60fb str r3, [r7, #12] + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + 8005aa2: 683b ldr r3, [r7, #0] + 8005aa4: 781b ldrb r3, [r3, #0] + 8005aa6: f003 0360 and.w r3, r3, #96 ; 0x60 + 8005aaa: 2b00 cmp r3, #0 + 8005aac: d03f beq.n 8005b2e + 8005aae: 2b20 cmp r3, #32 + 8005ab0: f040 80c2 bne.w 8005c38 + { + case USB_REQ_TYPE_CLASS: + switch (req->bRequest) + 8005ab4: 683b ldr r3, [r7, #0] + 8005ab6: 785b ldrb r3, [r3, #1] + 8005ab8: 2b06 cmp r3, #6 + 8005aba: d830 bhi.n 8005b1e + 8005abc: a201 add r2, pc, #4 ; (adr r2, 8005ac4 ) + 8005abe: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8005ac2: bf00 nop + 8005ac4: 08005b15 .word 0x08005b15 + 8005ac8: 08005ae1 .word 0x08005ae1 + 8005acc: 08005aeb .word 0x08005aeb + 8005ad0: 08005af5 .word 0x08005af5 + 8005ad4: 08005afd .word 0x08005afd + 8005ad8: 08005b05 .word 0x08005b05 + 8005adc: 08005b0d .word 0x08005b0d + { + case DFU_DNLOAD: + DFU_Download(pdev, req); + 8005ae0: 6839 ldr r1, [r7, #0] + 8005ae2: 6878 ldr r0, [r7, #4] + 8005ae4: f000 fa8e bl 8006004 + break; + 8005ae8: e020 b.n 8005b2c + + case DFU_UPLOAD: + DFU_Upload(pdev, req); + 8005aea: 6839 ldr r1, [r7, #0] + 8005aec: 6878 ldr r0, [r7, #4] + 8005aee: f000 faf3 bl 80060d8 + break; + 8005af2: e01b b.n 8005b2c + + case DFU_GETSTATUS: + DFU_GetStatus(pdev); + 8005af4: 6878 ldr r0, [r7, #4] + 8005af6: f000 fbc7 bl 8006288 + break; + 8005afa: e017 b.n 8005b2c + + case DFU_CLRSTATUS: + DFU_ClearStatus(pdev); + 8005afc: 6878 ldr r0, [r7, #4] + 8005afe: f000 fc75 bl 80063ec + break; + 8005b02: e013 b.n 8005b2c + + case DFU_GETSTATE: + DFU_GetState(pdev); + 8005b04: 6878 ldr r0, [r7, #4] + 8005b06: f000 fcc0 bl 800648a + break; + 8005b0a: e00f b.n 8005b2c + + case DFU_ABORT: + DFU_Abort(pdev); + 8005b0c: 6878 ldr r0, [r7, #4] + 8005b0e: f000 fcd0 bl 80064b2 + break; + 8005b12: e00b b.n 8005b2c + + case DFU_DETACH: + DFU_Detach(pdev, req); + 8005b14: 6839 ldr r1, [r7, #0] + 8005b16: 6878 ldr r0, [r7, #4] + 8005b18: f000 fa14 bl 8005f44 + break; + 8005b1c: e006 b.n 8005b2c + + default: + USBD_CtlError(pdev, req); + 8005b1e: 6839 ldr r1, [r7, #0] + 8005b20: 6878 ldr r0, [r7, #4] + 8005b22: f001 fd34 bl 800758e + ret = USBD_FAIL; + 8005b26: 2302 movs r3, #2 + 8005b28: 747b strb r3, [r7, #17] + break; + 8005b2a: bf00 nop + } + break; + 8005b2c: e08b b.n 8005c46 + + case USB_REQ_TYPE_STANDARD: + switch (req->bRequest) + 8005b2e: 683b ldr r3, [r7, #0] + 8005b30: 785b ldrb r3, [r3, #1] + 8005b32: 2b0b cmp r3, #11 + 8005b34: d878 bhi.n 8005c28 + 8005b36: a201 add r2, pc, #4 ; (adr r2, 8005b3c ) + 8005b38: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8005b3c: 08005b6d .word 0x08005b6d + 8005b40: 08005c29 .word 0x08005c29 + 8005b44: 08005c29 .word 0x08005c29 + 8005b48: 08005c29 .word 0x08005c29 + 8005b4c: 08005c29 .word 0x08005c29 + 8005b50: 08005c29 .word 0x08005c29 + 8005b54: 08005b95 .word 0x08005b95 + 8005b58: 08005c29 .word 0x08005c29 + 8005b5c: 08005c29 .word 0x08005c29 + 8005b60: 08005c29 .word 0x08005c29 + 8005b64: 08005bbf .word 0x08005bbf + 8005b68: 08005be9 .word 0x08005be9 + { + case USB_REQ_GET_STATUS: + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 8005b6c: 687b ldr r3, [r7, #4] + 8005b6e: f893 329c ldrb.w r3, [r3, #668] ; 0x29c + 8005b72: 2b03 cmp r3, #3 + 8005b74: d107 bne.n 8005b86 + { + USBD_CtlSendData(pdev, (uint8_t *)(void *)&status_info, 2U); + 8005b76: f107 030a add.w r3, r7, #10 + 8005b7a: 2202 movs r2, #2 + 8005b7c: 4619 mov r1, r3 + 8005b7e: 6878 ldr r0, [r7, #4] + 8005b80: f001 fd6f bl 8007662 + else + { + USBD_CtlError(pdev, req); + ret = USBD_FAIL; + } + break; + 8005b84: e057 b.n 8005c36 + USBD_CtlError(pdev, req); + 8005b86: 6839 ldr r1, [r7, #0] + 8005b88: 6878 ldr r0, [r7, #4] + 8005b8a: f001 fd00 bl 800758e + ret = USBD_FAIL; + 8005b8e: 2302 movs r3, #2 + 8005b90: 747b strb r3, [r7, #17] + break; + 8005b92: e050 b.n 8005c36 + + case USB_REQ_GET_DESCRIPTOR: + if ((req->wValue >> 8) == DFU_DESCRIPTOR_TYPE) + 8005b94: 683b ldr r3, [r7, #0] + 8005b96: 885b ldrh r3, [r3, #2] + 8005b98: 0a1b lsrs r3, r3, #8 + 8005b9a: b29b uxth r3, r3 + 8005b9c: 2b21 cmp r3, #33 ; 0x21 + 8005b9e: d107 bne.n 8005bb0 + { + pbuf = USBD_DFU_CfgDesc + (9U * (USBD_DFU_MAX_ITF_NUM + 1U)); + 8005ba0: 4b2b ldr r3, [pc, #172] ; (8005c50 ) + 8005ba2: 617b str r3, [r7, #20] + len = MIN(USB_DFU_DESC_SIZ, req->wLength); + 8005ba4: 683b ldr r3, [r7, #0] + 8005ba6: 88db ldrh r3, [r3, #6] + 8005ba8: 2b09 cmp r3, #9 + 8005baa: bf28 it cs + 8005bac: 2309 movcs r3, #9 + 8005bae: 827b strh r3, [r7, #18] + } + + USBD_CtlSendData(pdev, pbuf, len); + 8005bb0: 8a7b ldrh r3, [r7, #18] + 8005bb2: 461a mov r2, r3 + 8005bb4: 6979 ldr r1, [r7, #20] + 8005bb6: 6878 ldr r0, [r7, #4] + 8005bb8: f001 fd53 bl 8007662 + break; + 8005bbc: e03b b.n 8005c36 + + case USB_REQ_GET_INTERFACE: + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 8005bbe: 687b ldr r3, [r7, #4] + 8005bc0: f893 329c ldrb.w r3, [r3, #668] ; 0x29c + 8005bc4: 2b03 cmp r3, #3 + 8005bc6: d108 bne.n 8005bda + { + USBD_CtlSendData(pdev, (uint8_t *)(void *)&hdfu->alt_setting, 1U); + 8005bc8: 68fb ldr r3, [r7, #12] + 8005bca: f203 430c addw r3, r3, #1036 ; 0x40c + 8005bce: 2201 movs r2, #1 + 8005bd0: 4619 mov r1, r3 + 8005bd2: 6878 ldr r0, [r7, #4] + 8005bd4: f001 fd45 bl 8007662 + else + { + USBD_CtlError(pdev, req); + ret = USBD_FAIL; + } + break; + 8005bd8: e02d b.n 8005c36 + USBD_CtlError(pdev, req); + 8005bda: 6839 ldr r1, [r7, #0] + 8005bdc: 6878 ldr r0, [r7, #4] + 8005bde: f001 fcd6 bl 800758e + ret = USBD_FAIL; + 8005be2: 2302 movs r3, #2 + 8005be4: 747b strb r3, [r7, #17] + break; + 8005be6: e026 b.n 8005c36 + + case USB_REQ_SET_INTERFACE: + if ((uint8_t)(req->wValue) < USBD_DFU_MAX_ITF_NUM) + 8005be8: 683b ldr r3, [r7, #0] + 8005bea: 885b ldrh r3, [r3, #2] + 8005bec: b2db uxtb r3, r3 + 8005bee: 2b00 cmp r3, #0 + 8005bf0: d113 bne.n 8005c1a + { + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 8005bf2: 687b ldr r3, [r7, #4] + 8005bf4: f893 329c ldrb.w r3, [r3, #668] ; 0x29c + 8005bf8: 2b03 cmp r3, #3 + 8005bfa: d107 bne.n 8005c0c + { + hdfu->alt_setting = (uint8_t)(req->wValue); + 8005bfc: 683b ldr r3, [r7, #0] + 8005bfe: 885b ldrh r3, [r3, #2] + 8005c00: b2db uxtb r3, r3 + 8005c02: 461a mov r2, r3 + 8005c04: 68fb ldr r3, [r7, #12] + 8005c06: f8c3 240c str.w r2, [r3, #1036] ; 0x40c + { + /* Call the error management function (command will be nacked */ + USBD_CtlError(pdev, req); + ret = USBD_FAIL; + } + break; + 8005c0a: e014 b.n 8005c36 + USBD_CtlError(pdev, req); + 8005c0c: 6839 ldr r1, [r7, #0] + 8005c0e: 6878 ldr r0, [r7, #4] + 8005c10: f001 fcbd bl 800758e + ret = USBD_FAIL; + 8005c14: 2302 movs r3, #2 + 8005c16: 747b strb r3, [r7, #17] + break; + 8005c18: e00d b.n 8005c36 + USBD_CtlError(pdev, req); + 8005c1a: 6839 ldr r1, [r7, #0] + 8005c1c: 6878 ldr r0, [r7, #4] + 8005c1e: f001 fcb6 bl 800758e + ret = USBD_FAIL; + 8005c22: 2302 movs r3, #2 + 8005c24: 747b strb r3, [r7, #17] + break; + 8005c26: e006 b.n 8005c36 + + default: + USBD_CtlError(pdev, req); + 8005c28: 6839 ldr r1, [r7, #0] + 8005c2a: 6878 ldr r0, [r7, #4] + 8005c2c: f001 fcaf bl 800758e + ret = USBD_FAIL; + 8005c30: 2302 movs r3, #2 + 8005c32: 747b strb r3, [r7, #17] + break; + 8005c34: bf00 nop + } + break; + 8005c36: e006 b.n 8005c46 + + default: + USBD_CtlError(pdev, req); + 8005c38: 6839 ldr r1, [r7, #0] + 8005c3a: 6878 ldr r0, [r7, #4] + 8005c3c: f001 fca7 bl 800758e + ret = USBD_FAIL; + 8005c40: 2302 movs r3, #2 + 8005c42: 747b strb r3, [r7, #17] + break; + 8005c44: bf00 nop + } + + return ret; + 8005c46: 7c7b ldrb r3, [r7, #17] +} + 8005c48: 4618 mov r0, r3 + 8005c4a: 3718 adds r7, #24 + 8005c4c: 46bd mov sp, r7 + 8005c4e: bd80 pop {r7, pc} + 8005c50: 2000005a .word 0x2000005a + +08005c54 : + * @param speed : current device speed + * @param length : pointer data length + * @retval pointer to descriptor buffer + */ +static uint8_t *USBD_DFU_GetCfgDesc(uint16_t *length) +{ + 8005c54: b480 push {r7} + 8005c56: b083 sub sp, #12 + 8005c58: af00 add r7, sp, #0 + 8005c5a: 6078 str r0, [r7, #4] + *length = sizeof(USBD_DFU_CfgDesc); + 8005c5c: 687b ldr r3, [r7, #4] + 8005c5e: 221b movs r2, #27 + 8005c60: 801a strh r2, [r3, #0] + return USBD_DFU_CfgDesc; + 8005c62: 4b03 ldr r3, [pc, #12] ; (8005c70 ) +} + 8005c64: 4618 mov r0, r3 + 8005c66: 370c adds r7, #12 + 8005c68: 46bd mov sp, r7 + 8005c6a: bc80 pop {r7} + 8005c6c: 4770 bx lr + 8005c6e: bf00 nop + 8005c70: 20000048 .word 0x20000048 + +08005c74 : + * @param epnum: endpoint index + * @retval status + */ +static uint8_t USBD_DFU_DataIn(USBD_HandleTypeDef *pdev, + uint8_t epnum) +{ + 8005c74: b480 push {r7} + 8005c76: b083 sub sp, #12 + 8005c78: af00 add r7, sp, #0 + 8005c7a: 6078 str r0, [r7, #4] + 8005c7c: 460b mov r3, r1 + 8005c7e: 70fb strb r3, [r7, #3] + + return USBD_OK; + 8005c80: 2300 movs r3, #0 +} + 8005c82: 4618 mov r0, r3 + 8005c84: 370c adds r7, #12 + 8005c86: 46bd mov sp, r7 + 8005c88: bc80 pop {r7} + 8005c8a: 4770 bx lr + +08005c8c : + * handle EP0 Rx Ready event + * @param pdev: device instance + * @retval status + */ +static uint8_t USBD_DFU_EP0_RxReady(USBD_HandleTypeDef *pdev) +{ + 8005c8c: b480 push {r7} + 8005c8e: b083 sub sp, #12 + 8005c90: af00 add r7, sp, #0 + 8005c92: 6078 str r0, [r7, #4] + + return USBD_OK; + 8005c94: 2300 movs r3, #0 +} + 8005c96: 4618 mov r0, r3 + 8005c98: 370c adds r7, #12 + 8005c9a: 46bd mov sp, r7 + 8005c9c: bc80 pop {r7} + 8005c9e: 4770 bx lr + +08005ca0 : + * handle EP0 TRx Ready event + * @param pdev: device instance + * @retval status + */ +static uint8_t USBD_DFU_EP0_TxReady(USBD_HandleTypeDef *pdev) +{ + 8005ca0: b580 push {r7, lr} + 8005ca2: b086 sub sp, #24 + 8005ca4: af00 add r7, sp, #0 + 8005ca6: 6078 str r0, [r7, #4] + uint32_t addr; + USBD_SetupReqTypedef req; + USBD_DFU_HandleTypeDef *hdfu; + + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + 8005ca8: 687b ldr r3, [r7, #4] + 8005caa: f8d3 32b8 ldr.w r3, [r3, #696] ; 0x2b8 + 8005cae: 617b str r3, [r7, #20] + + if (hdfu->dev_state == DFU_STATE_DNLOAD_BUSY) + 8005cb0: 697b ldr r3, [r7, #20] + 8005cb2: f893 3418 ldrb.w r3, [r3, #1048] ; 0x418 + 8005cb6: 2b04 cmp r3, #4 + 8005cb8: f040 80ca bne.w 8005e50 + { + /* Decode the Special Command*/ + if (hdfu->wblock_num == 0U) + 8005cbc: 697b ldr r3, [r7, #20] + 8005cbe: f8d3 3400 ldr.w r3, [r3, #1024] ; 0x400 + 8005cc2: 2b00 cmp r3, #0 + 8005cc4: f040 8086 bne.w 8005dd4 + { + if ((hdfu->buffer.d8[0] == DFU_CMD_GETCOMMANDS) && (hdfu->wlength == 1U)) + 8005cc8: 697b ldr r3, [r7, #20] + 8005cca: 781b ldrb r3, [r3, #0] + 8005ccc: 2b00 cmp r3, #0 + 8005cce: d105 bne.n 8005cdc + 8005cd0: 697b ldr r3, [r7, #20] + 8005cd2: f8d3 3404 ldr.w r3, [r3, #1028] ; 0x404 + 8005cd6: 2b01 cmp r3, #1 + 8005cd8: f000 809a beq.w 8005e10 + { + + } + else if ((hdfu->buffer.d8[0] == DFU_CMD_SETADDRESSPOINTER) && (hdfu->wlength == 5U)) + 8005cdc: 697b ldr r3, [r7, #20] + 8005cde: 781b ldrb r3, [r3, #0] + 8005ce0: 2b21 cmp r3, #33 ; 0x21 + 8005ce2: d129 bne.n 8005d38 + 8005ce4: 697b ldr r3, [r7, #20] + 8005ce6: f8d3 3404 ldr.w r3, [r3, #1028] ; 0x404 + 8005cea: 2b05 cmp r3, #5 + 8005cec: d124 bne.n 8005d38 + { + hdfu->data_ptr = hdfu->buffer.d8[1]; + 8005cee: 697b ldr r3, [r7, #20] + 8005cf0: 785b ldrb r3, [r3, #1] + 8005cf2: 461a mov r2, r3 + 8005cf4: 697b ldr r3, [r7, #20] + 8005cf6: f8c3 2408 str.w r2, [r3, #1032] ; 0x408 + hdfu->data_ptr += (uint32_t)hdfu->buffer.d8[2] << 8; + 8005cfa: 697b ldr r3, [r7, #20] + 8005cfc: f8d3 2408 ldr.w r2, [r3, #1032] ; 0x408 + 8005d00: 697b ldr r3, [r7, #20] + 8005d02: 789b ldrb r3, [r3, #2] + 8005d04: 021b lsls r3, r3, #8 + 8005d06: 441a add r2, r3 + 8005d08: 697b ldr r3, [r7, #20] + 8005d0a: f8c3 2408 str.w r2, [r3, #1032] ; 0x408 + hdfu->data_ptr += (uint32_t)hdfu->buffer.d8[3] << 16; + 8005d0e: 697b ldr r3, [r7, #20] + 8005d10: f8d3 2408 ldr.w r2, [r3, #1032] ; 0x408 + 8005d14: 697b ldr r3, [r7, #20] + 8005d16: 78db ldrb r3, [r3, #3] + 8005d18: 041b lsls r3, r3, #16 + 8005d1a: 441a add r2, r3 + 8005d1c: 697b ldr r3, [r7, #20] + 8005d1e: f8c3 2408 str.w r2, [r3, #1032] ; 0x408 + hdfu->data_ptr += (uint32_t)hdfu->buffer.d8[4] << 24; + 8005d22: 697b ldr r3, [r7, #20] + 8005d24: f8d3 2408 ldr.w r2, [r3, #1032] ; 0x408 + 8005d28: 697b ldr r3, [r7, #20] + 8005d2a: 791b ldrb r3, [r3, #4] + 8005d2c: 061b lsls r3, r3, #24 + 8005d2e: 441a add r2, r3 + 8005d30: 697b ldr r3, [r7, #20] + 8005d32: f8c3 2408 str.w r2, [r3, #1032] ; 0x408 + 8005d36: e06b b.n 8005e10 + } + else if ((hdfu->buffer.d8[0] == DFU_CMD_ERASE) && (hdfu->wlength == 5U)) + 8005d38: 697b ldr r3, [r7, #20] + 8005d3a: 781b ldrb r3, [r3, #0] + 8005d3c: 2b41 cmp r3, #65 ; 0x41 + 8005d3e: d136 bne.n 8005dae + 8005d40: 697b ldr r3, [r7, #20] + 8005d42: f8d3 3404 ldr.w r3, [r3, #1028] ; 0x404 + 8005d46: 2b05 cmp r3, #5 + 8005d48: d131 bne.n 8005dae + { + hdfu->data_ptr = hdfu->buffer.d8[1]; + 8005d4a: 697b ldr r3, [r7, #20] + 8005d4c: 785b ldrb r3, [r3, #1] + 8005d4e: 461a mov r2, r3 + 8005d50: 697b ldr r3, [r7, #20] + 8005d52: f8c3 2408 str.w r2, [r3, #1032] ; 0x408 + hdfu->data_ptr += (uint32_t)hdfu->buffer.d8[2] << 8; + 8005d56: 697b ldr r3, [r7, #20] + 8005d58: f8d3 2408 ldr.w r2, [r3, #1032] ; 0x408 + 8005d5c: 697b ldr r3, [r7, #20] + 8005d5e: 789b ldrb r3, [r3, #2] + 8005d60: 021b lsls r3, r3, #8 + 8005d62: 441a add r2, r3 + 8005d64: 697b ldr r3, [r7, #20] + 8005d66: f8c3 2408 str.w r2, [r3, #1032] ; 0x408 + hdfu->data_ptr += (uint32_t)hdfu->buffer.d8[3] << 16; + 8005d6a: 697b ldr r3, [r7, #20] + 8005d6c: f8d3 2408 ldr.w r2, [r3, #1032] ; 0x408 + 8005d70: 697b ldr r3, [r7, #20] + 8005d72: 78db ldrb r3, [r3, #3] + 8005d74: 041b lsls r3, r3, #16 + 8005d76: 441a add r2, r3 + 8005d78: 697b ldr r3, [r7, #20] + 8005d7a: f8c3 2408 str.w r2, [r3, #1032] ; 0x408 + hdfu->data_ptr += (uint32_t)hdfu->buffer.d8[4] << 24; + 8005d7e: 697b ldr r3, [r7, #20] + 8005d80: f8d3 2408 ldr.w r2, [r3, #1032] ; 0x408 + 8005d84: 697b ldr r3, [r7, #20] + 8005d86: 791b ldrb r3, [r3, #4] + 8005d88: 061b lsls r3, r3, #24 + 8005d8a: 441a add r2, r3 + 8005d8c: 697b ldr r3, [r7, #20] + 8005d8e: f8c3 2408 str.w r2, [r3, #1032] ; 0x408 + + if (((USBD_DFU_MediaTypeDef *)pdev->pUserData)->Erase(hdfu->data_ptr) != USBD_OK) + 8005d92: 687b ldr r3, [r7, #4] + 8005d94: f8d3 32bc ldr.w r3, [r3, #700] ; 0x2bc + 8005d98: 68db ldr r3, [r3, #12] + 8005d9a: 697a ldr r2, [r7, #20] + 8005d9c: f8d2 2408 ldr.w r2, [r2, #1032] ; 0x408 + 8005da0: 4610 mov r0, r2 + 8005da2: 4798 blx r3 + 8005da4: 4603 mov r3, r0 + 8005da6: 2b00 cmp r3, #0 + 8005da8: d032 beq.n 8005e10 + { + return USBD_FAIL; + 8005daa: 2302 movs r3, #2 + 8005dac: e059 b.n 8005e62 + } + } + else + { + /* Reset the global length and block number */ + hdfu->wlength = 0U; + 8005dae: 697b ldr r3, [r7, #20] + 8005db0: 2200 movs r2, #0 + 8005db2: f8c3 2404 str.w r2, [r3, #1028] ; 0x404 + hdfu->wblock_num = 0U; + 8005db6: 697b ldr r3, [r7, #20] + 8005db8: 2200 movs r2, #0 + 8005dba: f8c3 2400 str.w r2, [r3, #1024] ; 0x400 + /* Call the error management function (command will be nacked) */ + req.bmRequest = 0U; + 8005dbe: 2300 movs r3, #0 + 8005dc0: 723b strb r3, [r7, #8] + req.wLength = 1U; + 8005dc2: 2301 movs r3, #1 + 8005dc4: 81fb strh r3, [r7, #14] + USBD_CtlError(pdev, &req); + 8005dc6: f107 0308 add.w r3, r7, #8 + 8005dca: 4619 mov r1, r3 + 8005dcc: 6878 ldr r0, [r7, #4] + 8005dce: f001 fbde bl 800758e + 8005dd2: e01d b.n 8005e10 + } + } + /* Regular Download Command */ + else + { + if (hdfu->wblock_num > 1U) + 8005dd4: 697b ldr r3, [r7, #20] + 8005dd6: f8d3 3400 ldr.w r3, [r3, #1024] ; 0x400 + 8005dda: 2b01 cmp r3, #1 + 8005ddc: d918 bls.n 8005e10 + { + /* Decode the required address */ + addr = ((hdfu->wblock_num - 2U) * USBD_DFU_XFER_SIZE) + hdfu->data_ptr; + 8005dde: 697b ldr r3, [r7, #20] + 8005de0: f8d3 3400 ldr.w r3, [r3, #1024] ; 0x400 + 8005de4: 3b02 subs r3, #2 + 8005de6: 029a lsls r2, r3, #10 + 8005de8: 697b ldr r3, [r7, #20] + 8005dea: f8d3 3408 ldr.w r3, [r3, #1032] ; 0x408 + 8005dee: 4413 add r3, r2 + 8005df0: 613b str r3, [r7, #16] + + /* Preform the write operation */ + if (((USBD_DFU_MediaTypeDef *)pdev->pUserData)->Write(hdfu->buffer.d8, + 8005df2: 687b ldr r3, [r7, #4] + 8005df4: f8d3 32bc ldr.w r3, [r3, #700] ; 0x2bc + 8005df8: 691b ldr r3, [r3, #16] + 8005dfa: 6978 ldr r0, [r7, #20] + 8005dfc: 6939 ldr r1, [r7, #16] + 8005dfe: 697a ldr r2, [r7, #20] + 8005e00: f8d2 2404 ldr.w r2, [r2, #1028] ; 0x404 + 8005e04: 4798 blx r3 + 8005e06: 4603 mov r3, r0 + 8005e08: 2b00 cmp r3, #0 + 8005e0a: d001 beq.n 8005e10 + (uint8_t *)addr, hdfu->wlength) != USBD_OK) + { + return USBD_FAIL; + 8005e0c: 2302 movs r3, #2 + 8005e0e: e028 b.n 8005e62 + } + } + } + + /* Reset the global length and block number */ + hdfu->wlength = 0U; + 8005e10: 697b ldr r3, [r7, #20] + 8005e12: 2200 movs r2, #0 + 8005e14: f8c3 2404 str.w r2, [r3, #1028] ; 0x404 + hdfu->wblock_num = 0U; + 8005e18: 697b ldr r3, [r7, #20] + 8005e1a: 2200 movs r2, #0 + 8005e1c: f8c3 2400 str.w r2, [r3, #1024] ; 0x400 + + /* Update the state machine */ + hdfu->dev_state = DFU_STATE_DNLOAD_SYNC; + 8005e20: 697b ldr r3, [r7, #20] + 8005e22: 2203 movs r2, #3 + 8005e24: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + + hdfu->dev_status[1] = 0U; + 8005e28: 697b ldr r3, [r7, #20] + 8005e2a: 2200 movs r2, #0 + 8005e2c: f883 2411 strb.w r2, [r3, #1041] ; 0x411 + hdfu->dev_status[2] = 0U; + 8005e30: 697b ldr r3, [r7, #20] + 8005e32: 2200 movs r2, #0 + 8005e34: f883 2412 strb.w r2, [r3, #1042] ; 0x412 + hdfu->dev_status[3] = 0U; + 8005e38: 697b ldr r3, [r7, #20] + 8005e3a: 2200 movs r2, #0 + 8005e3c: f883 2413 strb.w r2, [r3, #1043] ; 0x413 + hdfu->dev_status[4] = hdfu->dev_state; + 8005e40: 697b ldr r3, [r7, #20] + 8005e42: f893 2418 ldrb.w r2, [r3, #1048] ; 0x418 + 8005e46: 697b ldr r3, [r7, #20] + 8005e48: f883 2414 strb.w r2, [r3, #1044] ; 0x414 + return USBD_OK; + 8005e4c: 2300 movs r3, #0 + 8005e4e: e008 b.n 8005e62 + } + else + { + if (hdfu->dev_state == DFU_STATE_MANIFEST)/* Manifestation in progress */ + 8005e50: 697b ldr r3, [r7, #20] + 8005e52: f893 3418 ldrb.w r3, [r3, #1048] ; 0x418 + 8005e56: 2b07 cmp r3, #7 + 8005e58: d102 bne.n 8005e60 + { + /* Start leaving DFU mode */ + DFU_Leave(pdev); + 8005e5a: 6878 ldr r0, [r7, #4] + 8005e5c: f000 fb76 bl 800654c + } + } + + return USBD_OK; + 8005e60: 2300 movs r3, #0 +} + 8005e62: 4618 mov r0, r3 + 8005e64: 3718 adds r7, #24 + 8005e66: 46bd mov sp, r7 + 8005e68: bd80 pop {r7, pc} + +08005e6a : + * handle SOF event + * @param pdev: device instance + * @retval status + */ +static uint8_t USBD_DFU_SOF(USBD_HandleTypeDef *pdev) +{ + 8005e6a: b480 push {r7} + 8005e6c: b083 sub sp, #12 + 8005e6e: af00 add r7, sp, #0 + 8005e70: 6078 str r0, [r7, #4] + + return USBD_OK; + 8005e72: 2300 movs r3, #0 +} + 8005e74: 4618 mov r0, r3 + 8005e76: 370c adds r7, #12 + 8005e78: 46bd mov sp, r7 + 8005e7a: bc80 pop {r7} + 8005e7c: 4770 bx lr + +08005e7e : + * @param pdev: device instance + * @param epnum: endpoint index + * @retval status + */ +static uint8_t USBD_DFU_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum) +{ + 8005e7e: b480 push {r7} + 8005e80: b083 sub sp, #12 + 8005e82: af00 add r7, sp, #0 + 8005e84: 6078 str r0, [r7, #4] + 8005e86: 460b mov r3, r1 + 8005e88: 70fb strb r3, [r7, #3] + + return USBD_OK; + 8005e8a: 2300 movs r3, #0 +} + 8005e8c: 4618 mov r0, r3 + 8005e8e: 370c adds r7, #12 + 8005e90: 46bd mov sp, r7 + 8005e92: bc80 pop {r7} + 8005e94: 4770 bx lr + +08005e96 : + * @param pdev: device instance + * @param epnum: endpoint index + * @retval status + */ +static uint8_t USBD_DFU_IsoOutIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum) +{ + 8005e96: b480 push {r7} + 8005e98: b083 sub sp, #12 + 8005e9a: af00 add r7, sp, #0 + 8005e9c: 6078 str r0, [r7, #4] + 8005e9e: 460b mov r3, r1 + 8005ea0: 70fb strb r3, [r7, #3] + + return USBD_OK; + 8005ea2: 2300 movs r3, #0 +} + 8005ea4: 4618 mov r0, r3 + 8005ea6: 370c adds r7, #12 + 8005ea8: 46bd mov sp, r7 + 8005eaa: bc80 pop {r7} + 8005eac: 4770 bx lr + +08005eae : + * @param epnum: endpoint index + * @retval status + */ +static uint8_t USBD_DFU_DataOut(USBD_HandleTypeDef *pdev, + uint8_t epnum) +{ + 8005eae: b480 push {r7} + 8005eb0: b083 sub sp, #12 + 8005eb2: af00 add r7, sp, #0 + 8005eb4: 6078 str r0, [r7, #4] + 8005eb6: 460b mov r3, r1 + 8005eb8: 70fb strb r3, [r7, #3] + + return USBD_OK; + 8005eba: 2300 movs r3, #0 +} + 8005ebc: 4618 mov r0, r3 + 8005ebe: 370c adds r7, #12 + 8005ec0: 46bd mov sp, r7 + 8005ec2: bc80 pop {r7} + 8005ec4: 4770 bx lr + ... + +08005ec8 : +* return Device Qualifier descriptor +* @param length : pointer data length +* @retval pointer to descriptor buffer +*/ +static uint8_t *USBD_DFU_GetDeviceQualifierDesc(uint16_t *length) +{ + 8005ec8: b480 push {r7} + 8005eca: b083 sub sp, #12 + 8005ecc: af00 add r7, sp, #0 + 8005ece: 6078 str r0, [r7, #4] + *length = sizeof(USBD_DFU_DeviceQualifierDesc); + 8005ed0: 687b ldr r3, [r7, #4] + 8005ed2: 220a movs r2, #10 + 8005ed4: 801a strh r2, [r3, #0] + return USBD_DFU_DeviceQualifierDesc; + 8005ed6: 4b03 ldr r3, [pc, #12] ; (8005ee4 ) +} + 8005ed8: 4618 mov r0, r3 + 8005eda: 370c adds r7, #12 + 8005edc: 46bd mov sp, r7 + 8005ede: bc80 pop {r7} + 8005ee0: 4770 bx lr + 8005ee2: bf00 nop + 8005ee4: 20000064 .word 0x20000064 + +08005ee8 : + * @param length : pointer data length + * @retval pointer to the descriptor table or NULL if the descriptor is not supported. + */ +#if (USBD_SUPPORT_USER_STRING_DESC == 1U) +static uint8_t *USBD_DFU_GetUsrStringDesc(USBD_HandleTypeDef *pdev, uint8_t index, uint16_t *length) +{ + 8005ee8: b580 push {r7, lr} + 8005eea: b084 sub sp, #16 + 8005eec: af00 add r7, sp, #0 + 8005eee: 60f8 str r0, [r7, #12] + 8005ef0: 460b mov r3, r1 + 8005ef2: 607a str r2, [r7, #4] + 8005ef4: 72fb strb r3, [r7, #11] + static uint8_t USBD_StrDesc[255]; + /* Check if the requested string interface is supported */ + if (index <= (USBD_IDX_INTERFACE_STR + USBD_DFU_MAX_ITF_NUM)) + 8005ef6: 7afb ldrb r3, [r7, #11] + 8005ef8: 2b06 cmp r3, #6 + 8005efa: d80a bhi.n 8005f12 + { + USBD_GetString((uint8_t *)((USBD_DFU_MediaTypeDef *)pdev->pUserData)->pStrDesc, USBD_StrDesc, length); + 8005efc: 68fb ldr r3, [r7, #12] + 8005efe: f8d3 32bc ldr.w r3, [r3, #700] ; 0x2bc + 8005f02: 681b ldr r3, [r3, #0] + 8005f04: 687a ldr r2, [r7, #4] + 8005f06: 4905 ldr r1, [pc, #20] ; (8005f1c ) + 8005f08: 4618 mov r0, r3 + 8005f0a: f001 fb51 bl 80075b0 + return USBD_StrDesc; + 8005f0e: 4b03 ldr r3, [pc, #12] ; (8005f1c ) + 8005f10: e000 b.n 8005f14 + } + /* Not supported Interface Descriptor index */ + else + { + return NULL; + 8005f12: 2300 movs r3, #0 + } +} + 8005f14: 4618 mov r0, r3 + 8005f16: 3710 adds r7, #16 + 8005f18: 46bd mov sp, r7 + 8005f1a: bd80 pop {r7, pc} + 8005f1c: 200000f8 .word 0x200000f8 + +08005f20 : +* @param fops: storage callback +* @retval status +*/ +uint8_t USBD_DFU_RegisterMedia(USBD_HandleTypeDef *pdev, + USBD_DFU_MediaTypeDef *fops) +{ + 8005f20: b480 push {r7} + 8005f22: b083 sub sp, #12 + 8005f24: af00 add r7, sp, #0 + 8005f26: 6078 str r0, [r7, #4] + 8005f28: 6039 str r1, [r7, #0] + if (fops != NULL) + 8005f2a: 683b ldr r3, [r7, #0] + 8005f2c: 2b00 cmp r3, #0 + 8005f2e: d003 beq.n 8005f38 + { + pdev->pUserData = fops; + 8005f30: 687b ldr r3, [r7, #4] + 8005f32: 683a ldr r2, [r7, #0] + 8005f34: f8c3 22bc str.w r2, [r3, #700] ; 0x2bc + } + return 0U; + 8005f38: 2300 movs r3, #0 +} + 8005f3a: 4618 mov r0, r3 + 8005f3c: 370c adds r7, #12 + 8005f3e: 46bd mov sp, r7 + 8005f40: bc80 pop {r7} + 8005f42: 4770 bx lr + +08005f44 : + * @param pdev: device instance + * @param req: pointer to the request structure. + * @retval None. + */ +static void DFU_Detach(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + 8005f44: b580 push {r7, lr} + 8005f46: b084 sub sp, #16 + 8005f48: af00 add r7, sp, #0 + 8005f4a: 6078 str r0, [r7, #4] + 8005f4c: 6039 str r1, [r7, #0] + USBD_DFU_HandleTypeDef *hdfu; + + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + 8005f4e: 687b ldr r3, [r7, #4] + 8005f50: f8d3 32b8 ldr.w r3, [r3, #696] ; 0x2b8 + 8005f54: 60fb str r3, [r7, #12] + + if (hdfu->dev_state == DFU_STATE_IDLE || hdfu->dev_state == DFU_STATE_DNLOAD_SYNC + 8005f56: 68fb ldr r3, [r7, #12] + 8005f58: f893 3418 ldrb.w r3, [r3, #1048] ; 0x418 + 8005f5c: 2b02 cmp r3, #2 + 8005f5e: d013 beq.n 8005f88 + 8005f60: 68fb ldr r3, [r7, #12] + 8005f62: f893 3418 ldrb.w r3, [r3, #1048] ; 0x418 + 8005f66: 2b03 cmp r3, #3 + 8005f68: d00e beq.n 8005f88 + || hdfu->dev_state == DFU_STATE_DNLOAD_IDLE || hdfu->dev_state == DFU_STATE_MANIFEST_SYNC + 8005f6a: 68fb ldr r3, [r7, #12] + 8005f6c: f893 3418 ldrb.w r3, [r3, #1048] ; 0x418 + 8005f70: 2b05 cmp r3, #5 + 8005f72: d009 beq.n 8005f88 + 8005f74: 68fb ldr r3, [r7, #12] + 8005f76: f893 3418 ldrb.w r3, [r3, #1048] ; 0x418 + 8005f7a: 2b06 cmp r3, #6 + 8005f7c: d004 beq.n 8005f88 + || hdfu->dev_state == DFU_STATE_UPLOAD_IDLE) + 8005f7e: 68fb ldr r3, [r7, #12] + 8005f80: f893 3418 ldrb.w r3, [r3, #1048] ; 0x418 + 8005f84: 2b09 cmp r3, #9 + 8005f86: d125 bne.n 8005fd4 + { + /* Update the state machine */ + hdfu->dev_state = DFU_STATE_IDLE; + 8005f88: 68fb ldr r3, [r7, #12] + 8005f8a: 2202 movs r2, #2 + 8005f8c: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + hdfu->dev_status[0] = DFU_ERROR_NONE; + 8005f90: 68fb ldr r3, [r7, #12] + 8005f92: 2200 movs r2, #0 + 8005f94: f883 2410 strb.w r2, [r3, #1040] ; 0x410 + hdfu->dev_status[1] = 0U; + 8005f98: 68fb ldr r3, [r7, #12] + 8005f9a: 2200 movs r2, #0 + 8005f9c: f883 2411 strb.w r2, [r3, #1041] ; 0x411 + hdfu->dev_status[2] = 0U; + 8005fa0: 68fb ldr r3, [r7, #12] + 8005fa2: 2200 movs r2, #0 + 8005fa4: f883 2412 strb.w r2, [r3, #1042] ; 0x412 + hdfu->dev_status[3] = 0U; /*bwPollTimeout=0ms*/ + 8005fa8: 68fb ldr r3, [r7, #12] + 8005faa: 2200 movs r2, #0 + 8005fac: f883 2413 strb.w r2, [r3, #1043] ; 0x413 + hdfu->dev_status[4] = hdfu->dev_state; + 8005fb0: 68fb ldr r3, [r7, #12] + 8005fb2: f893 2418 ldrb.w r2, [r3, #1048] ; 0x418 + 8005fb6: 68fb ldr r3, [r7, #12] + 8005fb8: f883 2414 strb.w r2, [r3, #1044] ; 0x414 + hdfu->dev_status[5] = 0U; /*iString*/ + 8005fbc: 68fb ldr r3, [r7, #12] + 8005fbe: 2200 movs r2, #0 + 8005fc0: f883 2415 strb.w r2, [r3, #1045] ; 0x415 + hdfu->wblock_num = 0U; + 8005fc4: 68fb ldr r3, [r7, #12] + 8005fc6: 2200 movs r2, #0 + 8005fc8: f8c3 2400 str.w r2, [r3, #1024] ; 0x400 + hdfu->wlength = 0U; + 8005fcc: 68fb ldr r3, [r7, #12] + 8005fce: 2200 movs r2, #0 + 8005fd0: f8c3 2404 str.w r2, [r3, #1028] ; 0x404 + } + + /* Check the detach capability in the DFU functional descriptor */ + if ((USBD_DFU_CfgDesc[12U + (9U * USBD_DFU_MAX_ITF_NUM)]) & DFU_DETACH_MASK) + 8005fd4: 4b0a ldr r3, [pc, #40] ; (8006000 ) + 8005fd6: 7d5b ldrb r3, [r3, #21] + 8005fd8: f003 0310 and.w r3, r3, #16 + 8005fdc: 2b00 cmp r3, #0 + 8005fde: d006 beq.n 8005fee + { + /* Perform an Attach-Detach operation on USB bus */ + USBD_Stop(pdev); + 8005fe0: 6878 ldr r0, [r7, #4] + 8005fe2: f000 fb51 bl 8006688 + USBD_Start(pdev); + 8005fe6: 6878 ldr r0, [r7, #4] + 8005fe8: f000 fb42 bl 8006670 + else + { + /* Wait for the period of time specified in Detach request */ + USBD_Delay((uint32_t)req->wValue); + } +} + 8005fec: e004 b.n 8005ff8 + USBD_Delay((uint32_t)req->wValue); + 8005fee: 683b ldr r3, [r7, #0] + 8005ff0: 885b ldrh r3, [r3, #2] + 8005ff2: 4618 mov r0, r3 + 8005ff4: f7fa fbba bl 800076c +} + 8005ff8: bf00 nop + 8005ffa: 3710 adds r7, #16 + 8005ffc: 46bd mov sp, r7 + 8005ffe: bd80 pop {r7, pc} + 8006000: 20000048 .word 0x20000048 + +08006004 : + * @param pdev: device instance + * @param req: pointer to the request structure + * @retval None + */ +static void DFU_Download(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + 8006004: b580 push {r7, lr} + 8006006: b084 sub sp, #16 + 8006008: af00 add r7, sp, #0 + 800600a: 6078 str r0, [r7, #4] + 800600c: 6039 str r1, [r7, #0] + USBD_DFU_HandleTypeDef *hdfu; + + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + 800600e: 687b ldr r3, [r7, #4] + 8006010: f8d3 32b8 ldr.w r3, [r3, #696] ; 0x2b8 + 8006014: 60fb str r3, [r7, #12] + + /* Data setup request */ + if (req->wLength > 0U) + 8006016: 683b ldr r3, [r7, #0] + 8006018: 88db ldrh r3, [r3, #6] + 800601a: 2b00 cmp r3, #0 + 800601c: d02e beq.n 800607c + { + if ((hdfu->dev_state == DFU_STATE_IDLE) || (hdfu->dev_state == DFU_STATE_DNLOAD_IDLE)) + 800601e: 68fb ldr r3, [r7, #12] + 8006020: f893 3418 ldrb.w r3, [r3, #1048] ; 0x418 + 8006024: 2b02 cmp r3, #2 + 8006026: d004 beq.n 8006032 + 8006028: 68fb ldr r3, [r7, #12] + 800602a: f893 3418 ldrb.w r3, [r3, #1048] ; 0x418 + 800602e: 2b05 cmp r3, #5 + 8006030: d11f bne.n 8006072 + { + /* Update the global length and block number */ + hdfu->wblock_num = req->wValue; + 8006032: 683b ldr r3, [r7, #0] + 8006034: 885b ldrh r3, [r3, #2] + 8006036: 461a mov r2, r3 + 8006038: 68fb ldr r3, [r7, #12] + 800603a: f8c3 2400 str.w r2, [r3, #1024] ; 0x400 + hdfu->wlength = req->wLength; + 800603e: 683b ldr r3, [r7, #0] + 8006040: 88db ldrh r3, [r3, #6] + 8006042: 461a mov r2, r3 + 8006044: 68fb ldr r3, [r7, #12] + 8006046: f8c3 2404 str.w r2, [r3, #1028] ; 0x404 + + /* Update the state machine */ + hdfu->dev_state = DFU_STATE_DNLOAD_SYNC; + 800604a: 68fb ldr r3, [r7, #12] + 800604c: 2203 movs r2, #3 + 800604e: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + hdfu->dev_status[4] = hdfu->dev_state; + 8006052: 68fb ldr r3, [r7, #12] + 8006054: f893 2418 ldrb.w r2, [r3, #1048] ; 0x418 + 8006058: 68fb ldr r3, [r7, #12] + 800605a: f883 2414 strb.w r2, [r3, #1044] ; 0x414 + + /* Prepare the reception of the buffer over EP0 */ + USBD_CtlPrepareRx(pdev, (uint8_t *)hdfu->buffer.d8, + 800605e: 68f9 ldr r1, [r7, #12] + (uint16_t)hdfu->wlength); + 8006060: 68fb ldr r3, [r7, #12] + 8006062: f8d3 3404 ldr.w r3, [r3, #1028] ; 0x404 + USBD_CtlPrepareRx(pdev, (uint8_t *)hdfu->buffer.d8, + 8006066: b29b uxth r3, r3 + 8006068: 461a mov r2, r3 + 800606a: 6878 ldr r0, [r7, #4] + 800606c: f001 fb27 bl 80076be + 8006070: e02e b.n 80060d0 + } + /* Unsupported state */ + else + { + /* Call the error management function (command will be nacked */ + USBD_CtlError(pdev, req); + 8006072: 6839 ldr r1, [r7, #0] + 8006074: 6878 ldr r0, [r7, #4] + 8006076: f001 fa8a bl 800758e + { + /* Call the error management function (command will be nacked */ + USBD_CtlError(pdev, req); + } + } +} + 800607a: e029 b.n 80060d0 + if (hdfu->dev_state == DFU_STATE_DNLOAD_IDLE || hdfu->dev_state == DFU_STATE_IDLE) + 800607c: 68fb ldr r3, [r7, #12] + 800607e: f893 3418 ldrb.w r3, [r3, #1048] ; 0x418 + 8006082: 2b05 cmp r3, #5 + 8006084: d004 beq.n 8006090 + 8006086: 68fb ldr r3, [r7, #12] + 8006088: f893 3418 ldrb.w r3, [r3, #1048] ; 0x418 + 800608c: 2b02 cmp r3, #2 + 800608e: d11a bne.n 80060c6 + hdfu->manif_state = DFU_MANIFEST_IN_PROGRESS; + 8006090: 68fb ldr r3, [r7, #12] + 8006092: 2201 movs r2, #1 + 8006094: f883 2419 strb.w r2, [r3, #1049] ; 0x419 + hdfu->dev_state = DFU_STATE_MANIFEST_SYNC; + 8006098: 68fb ldr r3, [r7, #12] + 800609a: 2206 movs r2, #6 + 800609c: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + hdfu->dev_status[1] = 0U; + 80060a0: 68fb ldr r3, [r7, #12] + 80060a2: 2200 movs r2, #0 + 80060a4: f883 2411 strb.w r2, [r3, #1041] ; 0x411 + hdfu->dev_status[2] = 0U; + 80060a8: 68fb ldr r3, [r7, #12] + 80060aa: 2200 movs r2, #0 + 80060ac: f883 2412 strb.w r2, [r3, #1042] ; 0x412 + hdfu->dev_status[3] = 0U; + 80060b0: 68fb ldr r3, [r7, #12] + 80060b2: 2200 movs r2, #0 + 80060b4: f883 2413 strb.w r2, [r3, #1043] ; 0x413 + hdfu->dev_status[4] = hdfu->dev_state; + 80060b8: 68fb ldr r3, [r7, #12] + 80060ba: f893 2418 ldrb.w r2, [r3, #1048] ; 0x418 + 80060be: 68fb ldr r3, [r7, #12] + 80060c0: f883 2414 strb.w r2, [r3, #1044] ; 0x414 + 80060c4: e004 b.n 80060d0 + USBD_CtlError(pdev, req); + 80060c6: 6839 ldr r1, [r7, #0] + 80060c8: 6878 ldr r0, [r7, #4] + 80060ca: f001 fa60 bl 800758e +} + 80060ce: e7ff b.n 80060d0 + 80060d0: bf00 nop + 80060d2: 3710 adds r7, #16 + 80060d4: 46bd mov sp, r7 + 80060d6: bd80 pop {r7, pc} + +080060d8 : + * @param pdev: instance + * @param req: pointer to the request structure + * @retval status + */ +static void DFU_Upload(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + 80060d8: b580 push {r7, lr} + 80060da: b086 sub sp, #24 + 80060dc: af00 add r7, sp, #0 + 80060de: 6078 str r0, [r7, #4] + 80060e0: 6039 str r1, [r7, #0] + USBD_DFU_HandleTypeDef *hdfu; + + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + 80060e2: 687b ldr r3, [r7, #4] + 80060e4: f8d3 32b8 ldr.w r3, [r3, #696] ; 0x2b8 + 80060e8: 617b str r3, [r7, #20] + + uint8_t *phaddr = NULL; + 80060ea: 2300 movs r3, #0 + 80060ec: 613b str r3, [r7, #16] + uint32_t addr = 0U; + 80060ee: 2300 movs r3, #0 + 80060f0: 60fb str r3, [r7, #12] + + /* Data setup request */ + if (req->wLength > 0U) + 80060f2: 683b ldr r3, [r7, #0] + 80060f4: 88db ldrh r3, [r3, #6] + 80060f6: 2b00 cmp r3, #0 + 80060f8: f000 80ab beq.w 8006252 + { + if ((hdfu->dev_state == DFU_STATE_IDLE) || (hdfu->dev_state == DFU_STATE_UPLOAD_IDLE)) + 80060fc: 697b ldr r3, [r7, #20] + 80060fe: f893 3418 ldrb.w r3, [r3, #1048] ; 0x418 + 8006102: 2b02 cmp r3, #2 + 8006104: d005 beq.n 8006112 + 8006106: 697b ldr r3, [r7, #20] + 8006108: f893 3418 ldrb.w r3, [r3, #1048] ; 0x418 + 800610c: 2b09 cmp r3, #9 + 800610e: f040 8093 bne.w 8006238 + { + /* Update the global length and block number */ + hdfu->wblock_num = req->wValue; + 8006112: 683b ldr r3, [r7, #0] + 8006114: 885b ldrh r3, [r3, #2] + 8006116: 461a mov r2, r3 + 8006118: 697b ldr r3, [r7, #20] + 800611a: f8c3 2400 str.w r2, [r3, #1024] ; 0x400 + hdfu->wlength = req->wLength; + 800611e: 683b ldr r3, [r7, #0] + 8006120: 88db ldrh r3, [r3, #6] + 8006122: 461a mov r2, r3 + 8006124: 697b ldr r3, [r7, #20] + 8006126: f8c3 2404 str.w r2, [r3, #1028] ; 0x404 + + /* DFU Get Command */ + if (hdfu->wblock_num == 0U) + 800612a: 697b ldr r3, [r7, #20] + 800612c: f8d3 3400 ldr.w r3, [r3, #1024] ; 0x400 + 8006130: 2b00 cmp r3, #0 + 8006132: d12c bne.n 800618e + { + /* Update the state machine */ + hdfu->dev_state = (hdfu->wlength > 3U) ? DFU_STATE_IDLE : DFU_STATE_UPLOAD_IDLE; + 8006134: 697b ldr r3, [r7, #20] + 8006136: f8d3 3404 ldr.w r3, [r3, #1028] ; 0x404 + 800613a: 2b03 cmp r3, #3 + 800613c: d901 bls.n 8006142 + 800613e: 2202 movs r2, #2 + 8006140: e000 b.n 8006144 + 8006142: 2209 movs r2, #9 + 8006144: 697b ldr r3, [r7, #20] + 8006146: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + + hdfu->dev_status[1] = 0U; + 800614a: 697b ldr r3, [r7, #20] + 800614c: 2200 movs r2, #0 + 800614e: f883 2411 strb.w r2, [r3, #1041] ; 0x411 + hdfu->dev_status[2] = 0U; + 8006152: 697b ldr r3, [r7, #20] + 8006154: 2200 movs r2, #0 + 8006156: f883 2412 strb.w r2, [r3, #1042] ; 0x412 + hdfu->dev_status[3] = 0U; + 800615a: 697b ldr r3, [r7, #20] + 800615c: 2200 movs r2, #0 + 800615e: f883 2413 strb.w r2, [r3, #1043] ; 0x413 + hdfu->dev_status[4] = hdfu->dev_state; + 8006162: 697b ldr r3, [r7, #20] + 8006164: f893 2418 ldrb.w r2, [r3, #1048] ; 0x418 + 8006168: 697b ldr r3, [r7, #20] + 800616a: f883 2414 strb.w r2, [r3, #1044] ; 0x414 + + /* Store the values of all supported commands */ + hdfu->buffer.d8[0] = DFU_CMD_GETCOMMANDS; + 800616e: 697b ldr r3, [r7, #20] + 8006170: 2200 movs r2, #0 + 8006172: 701a strb r2, [r3, #0] + hdfu->buffer.d8[1] = DFU_CMD_SETADDRESSPOINTER; + 8006174: 697b ldr r3, [r7, #20] + 8006176: 2221 movs r2, #33 ; 0x21 + 8006178: 705a strb r2, [r3, #1] + hdfu->buffer.d8[2] = DFU_CMD_ERASE; + 800617a: 697b ldr r3, [r7, #20] + 800617c: 2241 movs r2, #65 ; 0x41 + 800617e: 709a strb r2, [r3, #2] + + /* Send the status data over EP0 */ + USBD_CtlSendData(pdev, (uint8_t *)(&(hdfu->buffer.d8[0])), 3U); + 8006180: 697b ldr r3, [r7, #20] + 8006182: 2203 movs r2, #3 + 8006184: 4619 mov r1, r3 + 8006186: 6878 ldr r0, [r7, #4] + 8006188: f001 fa6b bl 8007662 + if (hdfu->wblock_num == 0U) + 800618c: e078 b.n 8006280 + } + else if (hdfu->wblock_num > 1U) + 800618e: 697b ldr r3, [r7, #20] + 8006190: f8d3 3400 ldr.w r3, [r3, #1024] ; 0x400 + 8006194: 2b01 cmp r3, #1 + 8006196: d934 bls.n 8006202 + { + hdfu->dev_state = DFU_STATE_UPLOAD_IDLE; + 8006198: 697b ldr r3, [r7, #20] + 800619a: 2209 movs r2, #9 + 800619c: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + + hdfu->dev_status[1] = 0U; + 80061a0: 697b ldr r3, [r7, #20] + 80061a2: 2200 movs r2, #0 + 80061a4: f883 2411 strb.w r2, [r3, #1041] ; 0x411 + hdfu->dev_status[2] = 0U; + 80061a8: 697b ldr r3, [r7, #20] + 80061aa: 2200 movs r2, #0 + 80061ac: f883 2412 strb.w r2, [r3, #1042] ; 0x412 + hdfu->dev_status[3] = 0U; + 80061b0: 697b ldr r3, [r7, #20] + 80061b2: 2200 movs r2, #0 + 80061b4: f883 2413 strb.w r2, [r3, #1043] ; 0x413 + hdfu->dev_status[4] = hdfu->dev_state; + 80061b8: 697b ldr r3, [r7, #20] + 80061ba: f893 2418 ldrb.w r2, [r3, #1048] ; 0x418 + 80061be: 697b ldr r3, [r7, #20] + 80061c0: f883 2414 strb.w r2, [r3, #1044] ; 0x414 + + addr = ((hdfu->wblock_num - 2U) * USBD_DFU_XFER_SIZE) + hdfu->data_ptr; /* Change is Accelerated*/ + 80061c4: 697b ldr r3, [r7, #20] + 80061c6: f8d3 3400 ldr.w r3, [r3, #1024] ; 0x400 + 80061ca: 3b02 subs r3, #2 + 80061cc: 029a lsls r2, r3, #10 + 80061ce: 697b ldr r3, [r7, #20] + 80061d0: f8d3 3408 ldr.w r3, [r3, #1032] ; 0x408 + 80061d4: 4413 add r3, r2 + 80061d6: 60fb str r3, [r7, #12] + + /* Return the physical address where data are stored */ + phaddr = ((USBD_DFU_MediaTypeDef *)pdev->pUserData)->Read((uint8_t *)addr, hdfu->buffer.d8, hdfu->wlength); + 80061d8: 687b ldr r3, [r7, #4] + 80061da: f8d3 32bc ldr.w r3, [r3, #700] ; 0x2bc + 80061de: 695b ldr r3, [r3, #20] + 80061e0: 68f8 ldr r0, [r7, #12] + 80061e2: 6979 ldr r1, [r7, #20] + 80061e4: 697a ldr r2, [r7, #20] + 80061e6: f8d2 2404 ldr.w r2, [r2, #1028] ; 0x404 + 80061ea: 4798 blx r3 + 80061ec: 6138 str r0, [r7, #16] + + /* Send the status data over EP0 */ + USBD_CtlSendData(pdev, phaddr, (uint16_t)hdfu->wlength); + 80061ee: 697b ldr r3, [r7, #20] + 80061f0: f8d3 3404 ldr.w r3, [r3, #1028] ; 0x404 + 80061f4: b29b uxth r3, r3 + 80061f6: 461a mov r2, r3 + 80061f8: 6939 ldr r1, [r7, #16] + 80061fa: 6878 ldr r0, [r7, #4] + 80061fc: f001 fa31 bl 8007662 + if (hdfu->wblock_num == 0U) + 8006200: e03e b.n 8006280 + } + else /* unsupported hdfu->wblock_num */ + { + hdfu->dev_state = DFU_ERROR_STALLEDPKT; + 8006202: 697b ldr r3, [r7, #20] + 8006204: 220f movs r2, #15 + 8006206: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + + hdfu->dev_status[1] = 0U; + 800620a: 697b ldr r3, [r7, #20] + 800620c: 2200 movs r2, #0 + 800620e: f883 2411 strb.w r2, [r3, #1041] ; 0x411 + hdfu->dev_status[2] = 0U; + 8006212: 697b ldr r3, [r7, #20] + 8006214: 2200 movs r2, #0 + 8006216: f883 2412 strb.w r2, [r3, #1042] ; 0x412 + hdfu->dev_status[3] = 0U; + 800621a: 697b ldr r3, [r7, #20] + 800621c: 2200 movs r2, #0 + 800621e: f883 2413 strb.w r2, [r3, #1043] ; 0x413 + hdfu->dev_status[4] = hdfu->dev_state; + 8006222: 697b ldr r3, [r7, #20] + 8006224: f893 2418 ldrb.w r2, [r3, #1048] ; 0x418 + 8006228: 697b ldr r3, [r7, #20] + 800622a: f883 2414 strb.w r2, [r3, #1044] ; 0x414 + + /* Call the error management function (command will be nacked */ + USBD_CtlError(pdev, req); + 800622e: 6839 ldr r1, [r7, #0] + 8006230: 6878 ldr r0, [r7, #4] + 8006232: f001 f9ac bl 800758e + if (hdfu->wblock_num == 0U) + 8006236: e023 b.n 8006280 + } + } + /* Unsupported state */ + else + { + hdfu->wlength = 0U; + 8006238: 697b ldr r3, [r7, #20] + 800623a: 2200 movs r2, #0 + 800623c: f8c3 2404 str.w r2, [r3, #1028] ; 0x404 + hdfu->wblock_num = 0U; + 8006240: 697b ldr r3, [r7, #20] + 8006242: 2200 movs r2, #0 + 8006244: f8c3 2400 str.w r2, [r3, #1024] ; 0x400 + /* Call the error management function (command will be nacked */ + USBD_CtlError(pdev, req); + 8006248: 6839 ldr r1, [r7, #0] + 800624a: 6878 ldr r0, [r7, #4] + 800624c: f001 f99f bl 800758e + hdfu->dev_status[1] = 0U; + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; + hdfu->dev_status[4] = hdfu->dev_state; + } +} + 8006250: e016 b.n 8006280 + hdfu->dev_state = DFU_STATE_IDLE; + 8006252: 697b ldr r3, [r7, #20] + 8006254: 2202 movs r2, #2 + 8006256: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + hdfu->dev_status[1] = 0U; + 800625a: 697b ldr r3, [r7, #20] + 800625c: 2200 movs r2, #0 + 800625e: f883 2411 strb.w r2, [r3, #1041] ; 0x411 + hdfu->dev_status[2] = 0U; + 8006262: 697b ldr r3, [r7, #20] + 8006264: 2200 movs r2, #0 + 8006266: f883 2412 strb.w r2, [r3, #1042] ; 0x412 + hdfu->dev_status[3] = 0U; + 800626a: 697b ldr r3, [r7, #20] + 800626c: 2200 movs r2, #0 + 800626e: f883 2413 strb.w r2, [r3, #1043] ; 0x413 + hdfu->dev_status[4] = hdfu->dev_state; + 8006272: 697b ldr r3, [r7, #20] + 8006274: f893 2418 ldrb.w r2, [r3, #1048] ; 0x418 + 8006278: 697b ldr r3, [r7, #20] + 800627a: f883 2414 strb.w r2, [r3, #1044] ; 0x414 +} + 800627e: e7ff b.n 8006280 + 8006280: bf00 nop + 8006282: 3718 adds r7, #24 + 8006284: 46bd mov sp, r7 + 8006286: bd80 pop {r7, pc} + +08006288 : + * Handles the DFU GETSTATUS request. + * @param pdev: instance + * @retval status + */ +static void DFU_GetStatus(USBD_HandleTypeDef *pdev) +{ + 8006288: b580 push {r7, lr} + 800628a: b084 sub sp, #16 + 800628c: af00 add r7, sp, #0 + 800628e: 6078 str r0, [r7, #4] + USBD_DFU_HandleTypeDef *hdfu; + + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + 8006290: 687b ldr r3, [r7, #4] + 8006292: f8d3 32b8 ldr.w r3, [r3, #696] ; 0x2b8 + 8006296: 60fb str r3, [r7, #12] + + switch (hdfu->dev_state) + 8006298: 68fb ldr r3, [r7, #12] + 800629a: f893 3418 ldrb.w r3, [r3, #1048] ; 0x418 + 800629e: 2b03 cmp r3, #3 + 80062a0: d002 beq.n 80062a8 + 80062a2: 2b06 cmp r3, #6 + 80062a4: d055 beq.n 8006352 + } + } + break; + + default : + break; + 80062a6: e092 b.n 80063ce + if (hdfu->wlength != 0U) + 80062a8: 68fb ldr r3, [r7, #12] + 80062aa: f8d3 3404 ldr.w r3, [r3, #1028] ; 0x404 + 80062ae: 2b00 cmp r3, #0 + 80062b0: d038 beq.n 8006324 + hdfu->dev_state = DFU_STATE_DNLOAD_BUSY; + 80062b2: 68fb ldr r3, [r7, #12] + 80062b4: 2204 movs r2, #4 + 80062b6: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + hdfu->dev_status[1] = 0U; + 80062ba: 68fb ldr r3, [r7, #12] + 80062bc: 2200 movs r2, #0 + 80062be: f883 2411 strb.w r2, [r3, #1041] ; 0x411 + hdfu->dev_status[2] = 0U; + 80062c2: 68fb ldr r3, [r7, #12] + 80062c4: 2200 movs r2, #0 + 80062c6: f883 2412 strb.w r2, [r3, #1042] ; 0x412 + hdfu->dev_status[3] = 0U; + 80062ca: 68fb ldr r3, [r7, #12] + 80062cc: 2200 movs r2, #0 + 80062ce: f883 2413 strb.w r2, [r3, #1043] ; 0x413 + hdfu->dev_status[4] = hdfu->dev_state; + 80062d2: 68fb ldr r3, [r7, #12] + 80062d4: f893 2418 ldrb.w r2, [r3, #1048] ; 0x418 + 80062d8: 68fb ldr r3, [r7, #12] + 80062da: f883 2414 strb.w r2, [r3, #1044] ; 0x414 + if ((hdfu->wblock_num == 0U) && (hdfu->buffer.d8[0] == DFU_CMD_ERASE)) + 80062de: 68fb ldr r3, [r7, #12] + 80062e0: f8d3 3400 ldr.w r3, [r3, #1024] ; 0x400 + 80062e4: 2b00 cmp r3, #0 + 80062e6: d110 bne.n 800630a + 80062e8: 68fb ldr r3, [r7, #12] + 80062ea: 781b ldrb r3, [r3, #0] + 80062ec: 2b41 cmp r3, #65 ; 0x41 + 80062ee: d10c bne.n 800630a + ((USBD_DFU_MediaTypeDef *)pdev->pUserData)->GetStatus(hdfu->data_ptr, DFU_MEDIA_ERASE, hdfu->dev_status); + 80062f0: 687b ldr r3, [r7, #4] + 80062f2: f8d3 32bc ldr.w r3, [r3, #700] ; 0x2bc + 80062f6: 699b ldr r3, [r3, #24] + 80062f8: 68fa ldr r2, [r7, #12] + 80062fa: f8d2 0408 ldr.w r0, [r2, #1032] ; 0x408 + 80062fe: 68fa ldr r2, [r7, #12] + 8006300: f502 6282 add.w r2, r2, #1040 ; 0x410 + 8006304: 2100 movs r1, #0 + 8006306: 4798 blx r3 + break; + 8006308: e061 b.n 80063ce + ((USBD_DFU_MediaTypeDef *)pdev->pUserData)->GetStatus(hdfu->data_ptr, DFU_MEDIA_PROGRAM, hdfu->dev_status); + 800630a: 687b ldr r3, [r7, #4] + 800630c: f8d3 32bc ldr.w r3, [r3, #700] ; 0x2bc + 8006310: 699b ldr r3, [r3, #24] + 8006312: 68fa ldr r2, [r7, #12] + 8006314: f8d2 0408 ldr.w r0, [r2, #1032] ; 0x408 + 8006318: 68fa ldr r2, [r7, #12] + 800631a: f502 6282 add.w r2, r2, #1040 ; 0x410 + 800631e: 2101 movs r1, #1 + 8006320: 4798 blx r3 + break; + 8006322: e054 b.n 80063ce + hdfu->dev_state = DFU_STATE_DNLOAD_IDLE; + 8006324: 68fb ldr r3, [r7, #12] + 8006326: 2205 movs r2, #5 + 8006328: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + hdfu->dev_status[1] = 0U; + 800632c: 68fb ldr r3, [r7, #12] + 800632e: 2200 movs r2, #0 + 8006330: f883 2411 strb.w r2, [r3, #1041] ; 0x411 + hdfu->dev_status[2] = 0U; + 8006334: 68fb ldr r3, [r7, #12] + 8006336: 2200 movs r2, #0 + 8006338: f883 2412 strb.w r2, [r3, #1042] ; 0x412 + hdfu->dev_status[3] = 0U; + 800633c: 68fb ldr r3, [r7, #12] + 800633e: 2200 movs r2, #0 + 8006340: f883 2413 strb.w r2, [r3, #1043] ; 0x413 + hdfu->dev_status[4] = hdfu->dev_state; + 8006344: 68fb ldr r3, [r7, #12] + 8006346: f893 2418 ldrb.w r2, [r3, #1048] ; 0x418 + 800634a: 68fb ldr r3, [r7, #12] + 800634c: f883 2414 strb.w r2, [r3, #1044] ; 0x414 + break; + 8006350: e03d b.n 80063ce + if (hdfu->manif_state == DFU_MANIFEST_IN_PROGRESS) + 8006352: 68fb ldr r3, [r7, #12] + 8006354: f893 3419 ldrb.w r3, [r3, #1049] ; 0x419 + 8006358: 2b01 cmp r3, #1 + 800635a: d116 bne.n 800638a + hdfu->dev_state = DFU_STATE_MANIFEST; + 800635c: 68fb ldr r3, [r7, #12] + 800635e: 2207 movs r2, #7 + 8006360: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + hdfu->dev_status[1] = 1U; /*bwPollTimeout = 1ms*/ + 8006364: 68fb ldr r3, [r7, #12] + 8006366: 2201 movs r2, #1 + 8006368: f883 2411 strb.w r2, [r3, #1041] ; 0x411 + hdfu->dev_status[2] = 0U; + 800636c: 68fb ldr r3, [r7, #12] + 800636e: 2200 movs r2, #0 + 8006370: f883 2412 strb.w r2, [r3, #1042] ; 0x412 + hdfu->dev_status[3] = 0U; + 8006374: 68fb ldr r3, [r7, #12] + 8006376: 2200 movs r2, #0 + 8006378: f883 2413 strb.w r2, [r3, #1043] ; 0x413 + hdfu->dev_status[4] = hdfu->dev_state; + 800637c: 68fb ldr r3, [r7, #12] + 800637e: f893 2418 ldrb.w r2, [r3, #1048] ; 0x418 + 8006382: 68fb ldr r3, [r7, #12] + 8006384: f883 2414 strb.w r2, [r3, #1044] ; 0x414 + break; + 8006388: e020 b.n 80063cc + if ((hdfu->manif_state == DFU_MANIFEST_COMPLETE) && + 800638a: 68fb ldr r3, [r7, #12] + 800638c: f893 3419 ldrb.w r3, [r3, #1049] ; 0x419 + 8006390: 2b00 cmp r3, #0 + 8006392: d11b bne.n 80063cc + ((USBD_DFU_CfgDesc[(11U + (9U * USBD_DFU_MAX_ITF_NUM))]) & 0x04U)) + 8006394: 4b14 ldr r3, [pc, #80] ; (80063e8 ) + 8006396: 7d1b ldrb r3, [r3, #20] + 8006398: f003 0304 and.w r3, r3, #4 + if ((hdfu->manif_state == DFU_MANIFEST_COMPLETE) && + 800639c: 2b00 cmp r3, #0 + 800639e: d015 beq.n 80063cc + hdfu->dev_state = DFU_STATE_IDLE; + 80063a0: 68fb ldr r3, [r7, #12] + 80063a2: 2202 movs r2, #2 + 80063a4: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + hdfu->dev_status[1] = 0U; + 80063a8: 68fb ldr r3, [r7, #12] + 80063aa: 2200 movs r2, #0 + 80063ac: f883 2411 strb.w r2, [r3, #1041] ; 0x411 + hdfu->dev_status[2] = 0U; + 80063b0: 68fb ldr r3, [r7, #12] + 80063b2: 2200 movs r2, #0 + 80063b4: f883 2412 strb.w r2, [r3, #1042] ; 0x412 + hdfu->dev_status[3] = 0U; + 80063b8: 68fb ldr r3, [r7, #12] + 80063ba: 2200 movs r2, #0 + 80063bc: f883 2413 strb.w r2, [r3, #1043] ; 0x413 + hdfu->dev_status[4] = hdfu->dev_state; + 80063c0: 68fb ldr r3, [r7, #12] + 80063c2: f893 2418 ldrb.w r2, [r3, #1048] ; 0x418 + 80063c6: 68fb ldr r3, [r7, #12] + 80063c8: f883 2414 strb.w r2, [r3, #1044] ; 0x414 + break; + 80063cc: bf00 nop + } + + /* Send the status data over EP0 */ + USBD_CtlSendData(pdev, (uint8_t *)(&(hdfu->dev_status[0])), 6U); + 80063ce: 68fb ldr r3, [r7, #12] + 80063d0: f503 6382 add.w r3, r3, #1040 ; 0x410 + 80063d4: 2206 movs r2, #6 + 80063d6: 4619 mov r1, r3 + 80063d8: 6878 ldr r0, [r7, #4] + 80063da: f001 f942 bl 8007662 +} + 80063de: bf00 nop + 80063e0: 3710 adds r7, #16 + 80063e2: 46bd mov sp, r7 + 80063e4: bd80 pop {r7, pc} + 80063e6: bf00 nop + 80063e8: 20000048 .word 0x20000048 + +080063ec : + * Handles the DFU CLRSTATUS request. + * @param pdev: device instance + * @retval status + */ +static void DFU_ClearStatus(USBD_HandleTypeDef *pdev) +{ + 80063ec: b480 push {r7} + 80063ee: b085 sub sp, #20 + 80063f0: af00 add r7, sp, #0 + 80063f2: 6078 str r0, [r7, #4] + USBD_DFU_HandleTypeDef *hdfu; + + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + 80063f4: 687b ldr r3, [r7, #4] + 80063f6: f8d3 32b8 ldr.w r3, [r3, #696] ; 0x2b8 + 80063fa: 60fb str r3, [r7, #12] + + if (hdfu->dev_state == DFU_STATE_ERROR) + 80063fc: 68fb ldr r3, [r7, #12] + 80063fe: f893 3418 ldrb.w r3, [r3, #1048] ; 0x418 + 8006402: 2b0a cmp r3, #10 + 8006404: d11e bne.n 8006444 + { + hdfu->dev_state = DFU_STATE_IDLE; + 8006406: 68fb ldr r3, [r7, #12] + 8006408: 2202 movs r2, #2 + 800640a: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + hdfu->dev_status[0] = DFU_ERROR_NONE;/*bStatus*/ + 800640e: 68fb ldr r3, [r7, #12] + 8006410: 2200 movs r2, #0 + 8006412: f883 2410 strb.w r2, [r3, #1040] ; 0x410 + hdfu->dev_status[1] = 0U; + 8006416: 68fb ldr r3, [r7, #12] + 8006418: 2200 movs r2, #0 + 800641a: f883 2411 strb.w r2, [r3, #1041] ; 0x411 + hdfu->dev_status[2] = 0U; + 800641e: 68fb ldr r3, [r7, #12] + 8006420: 2200 movs r2, #0 + 8006422: f883 2412 strb.w r2, [r3, #1042] ; 0x412 + hdfu->dev_status[3] = 0U; /*bwPollTimeout=0ms*/ + 8006426: 68fb ldr r3, [r7, #12] + 8006428: 2200 movs r2, #0 + 800642a: f883 2413 strb.w r2, [r3, #1043] ; 0x413 + hdfu->dev_status[4] = hdfu->dev_state;/*bState*/ + 800642e: 68fb ldr r3, [r7, #12] + 8006430: f893 2418 ldrb.w r2, [r3, #1048] ; 0x418 + 8006434: 68fb ldr r3, [r7, #12] + 8006436: f883 2414 strb.w r2, [r3, #1044] ; 0x414 + hdfu->dev_status[5] = 0U;/*iString*/ + 800643a: 68fb ldr r3, [r7, #12] + 800643c: 2200 movs r2, #0 + 800643e: f883 2415 strb.w r2, [r3, #1045] ; 0x415 + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; /*bwPollTimeout=0ms*/ + hdfu->dev_status[4] = hdfu->dev_state;/*bState*/ + hdfu->dev_status[5] = 0U;/*iString*/ + } +} + 8006442: e01d b.n 8006480 + hdfu->dev_state = DFU_STATE_ERROR; + 8006444: 68fb ldr r3, [r7, #12] + 8006446: 220a movs r2, #10 + 8006448: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + hdfu->dev_status[0] = DFU_ERROR_UNKNOWN;/*bStatus*/ + 800644c: 68fb ldr r3, [r7, #12] + 800644e: 220e movs r2, #14 + 8006450: f883 2410 strb.w r2, [r3, #1040] ; 0x410 + hdfu->dev_status[1] = 0U; + 8006454: 68fb ldr r3, [r7, #12] + 8006456: 2200 movs r2, #0 + 8006458: f883 2411 strb.w r2, [r3, #1041] ; 0x411 + hdfu->dev_status[2] = 0U; + 800645c: 68fb ldr r3, [r7, #12] + 800645e: 2200 movs r2, #0 + 8006460: f883 2412 strb.w r2, [r3, #1042] ; 0x412 + hdfu->dev_status[3] = 0U; /*bwPollTimeout=0ms*/ + 8006464: 68fb ldr r3, [r7, #12] + 8006466: 2200 movs r2, #0 + 8006468: f883 2413 strb.w r2, [r3, #1043] ; 0x413 + hdfu->dev_status[4] = hdfu->dev_state;/*bState*/ + 800646c: 68fb ldr r3, [r7, #12] + 800646e: f893 2418 ldrb.w r2, [r3, #1048] ; 0x418 + 8006472: 68fb ldr r3, [r7, #12] + 8006474: f883 2414 strb.w r2, [r3, #1044] ; 0x414 + hdfu->dev_status[5] = 0U;/*iString*/ + 8006478: 68fb ldr r3, [r7, #12] + 800647a: 2200 movs r2, #0 + 800647c: f883 2415 strb.w r2, [r3, #1045] ; 0x415 +} + 8006480: bf00 nop + 8006482: 3714 adds r7, #20 + 8006484: 46bd mov sp, r7 + 8006486: bc80 pop {r7} + 8006488: 4770 bx lr + +0800648a : + * Handles the DFU GETSTATE request. + * @param pdev: device instance + * @retval None + */ +static void DFU_GetState(USBD_HandleTypeDef *pdev) +{ + 800648a: b580 push {r7, lr} + 800648c: b084 sub sp, #16 + 800648e: af00 add r7, sp, #0 + 8006490: 6078 str r0, [r7, #4] + USBD_DFU_HandleTypeDef *hdfu; + + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + 8006492: 687b ldr r3, [r7, #4] + 8006494: f8d3 32b8 ldr.w r3, [r3, #696] ; 0x2b8 + 8006498: 60fb str r3, [r7, #12] + + /* Return the current state of the DFU interface */ + USBD_CtlSendData(pdev, &hdfu->dev_state, 1U); + 800649a: 68fb ldr r3, [r7, #12] + 800649c: f503 6383 add.w r3, r3, #1048 ; 0x418 + 80064a0: 2201 movs r2, #1 + 80064a2: 4619 mov r1, r3 + 80064a4: 6878 ldr r0, [r7, #4] + 80064a6: f001 f8dc bl 8007662 +} + 80064aa: bf00 nop + 80064ac: 3710 adds r7, #16 + 80064ae: 46bd mov sp, r7 + 80064b0: bd80 pop {r7, pc} + +080064b2 : + * Handles the DFU ABORT request. + * @param pdev: device instance + * @retval None + */ +static void DFU_Abort(USBD_HandleTypeDef *pdev) +{ + 80064b2: b480 push {r7} + 80064b4: b085 sub sp, #20 + 80064b6: af00 add r7, sp, #0 + 80064b8: 6078 str r0, [r7, #4] + USBD_DFU_HandleTypeDef *hdfu; + + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + 80064ba: 687b ldr r3, [r7, #4] + 80064bc: f8d3 32b8 ldr.w r3, [r3, #696] ; 0x2b8 + 80064c0: 60fb str r3, [r7, #12] + + if (hdfu->dev_state == DFU_STATE_IDLE || hdfu->dev_state == DFU_STATE_DNLOAD_SYNC + 80064c2: 68fb ldr r3, [r7, #12] + 80064c4: f893 3418 ldrb.w r3, [r3, #1048] ; 0x418 + 80064c8: 2b02 cmp r3, #2 + 80064ca: d013 beq.n 80064f4 + 80064cc: 68fb ldr r3, [r7, #12] + 80064ce: f893 3418 ldrb.w r3, [r3, #1048] ; 0x418 + 80064d2: 2b03 cmp r3, #3 + 80064d4: d00e beq.n 80064f4 + || hdfu->dev_state == DFU_STATE_DNLOAD_IDLE || hdfu->dev_state == DFU_STATE_MANIFEST_SYNC + 80064d6: 68fb ldr r3, [r7, #12] + 80064d8: f893 3418 ldrb.w r3, [r3, #1048] ; 0x418 + 80064dc: 2b05 cmp r3, #5 + 80064de: d009 beq.n 80064f4 + 80064e0: 68fb ldr r3, [r7, #12] + 80064e2: f893 3418 ldrb.w r3, [r3, #1048] ; 0x418 + 80064e6: 2b06 cmp r3, #6 + 80064e8: d004 beq.n 80064f4 + || hdfu->dev_state == DFU_STATE_UPLOAD_IDLE) + 80064ea: 68fb ldr r3, [r7, #12] + 80064ec: f893 3418 ldrb.w r3, [r3, #1048] ; 0x418 + 80064f0: 2b09 cmp r3, #9 + 80064f2: d125 bne.n 8006540 + { + hdfu->dev_state = DFU_STATE_IDLE; + 80064f4: 68fb ldr r3, [r7, #12] + 80064f6: 2202 movs r2, #2 + 80064f8: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + hdfu->dev_status[0] = DFU_ERROR_NONE; + 80064fc: 68fb ldr r3, [r7, #12] + 80064fe: 2200 movs r2, #0 + 8006500: f883 2410 strb.w r2, [r3, #1040] ; 0x410 + hdfu->dev_status[1] = 0U; + 8006504: 68fb ldr r3, [r7, #12] + 8006506: 2200 movs r2, #0 + 8006508: f883 2411 strb.w r2, [r3, #1041] ; 0x411 + hdfu->dev_status[2] = 0U; + 800650c: 68fb ldr r3, [r7, #12] + 800650e: 2200 movs r2, #0 + 8006510: f883 2412 strb.w r2, [r3, #1042] ; 0x412 + hdfu->dev_status[3] = 0U; /*bwPollTimeout=0ms*/ + 8006514: 68fb ldr r3, [r7, #12] + 8006516: 2200 movs r2, #0 + 8006518: f883 2413 strb.w r2, [r3, #1043] ; 0x413 + hdfu->dev_status[4] = hdfu->dev_state; + 800651c: 68fb ldr r3, [r7, #12] + 800651e: f893 2418 ldrb.w r2, [r3, #1048] ; 0x418 + 8006522: 68fb ldr r3, [r7, #12] + 8006524: f883 2414 strb.w r2, [r3, #1044] ; 0x414 + hdfu->dev_status[5] = 0U; /*iString*/ + 8006528: 68fb ldr r3, [r7, #12] + 800652a: 2200 movs r2, #0 + 800652c: f883 2415 strb.w r2, [r3, #1045] ; 0x415 + hdfu->wblock_num = 0U; + 8006530: 68fb ldr r3, [r7, #12] + 8006532: 2200 movs r2, #0 + 8006534: f8c3 2400 str.w r2, [r3, #1024] ; 0x400 + hdfu->wlength = 0U; + 8006538: 68fb ldr r3, [r7, #12] + 800653a: 2200 movs r2, #0 + 800653c: f8c3 2404 str.w r2, [r3, #1028] ; 0x404 + } +} + 8006540: bf00 nop + 8006542: 3714 adds r7, #20 + 8006544: 46bd mov sp, r7 + 8006546: bc80 pop {r7} + 8006548: 4770 bx lr + ... + +0800654c : + * and resets device to jump to user loaded code). + * @param pdev: device instance + * @retval None + */ +static void DFU_Leave(USBD_HandleTypeDef *pdev) +{ + 800654c: b580 push {r7, lr} + 800654e: b084 sub sp, #16 + 8006550: af00 add r7, sp, #0 + 8006552: 6078 str r0, [r7, #4] + USBD_DFU_HandleTypeDef *hdfu; + + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + 8006554: 687b ldr r3, [r7, #4] + 8006556: f8d3 32b8 ldr.w r3, [r3, #696] ; 0x2b8 + 800655a: 60fb str r3, [r7, #12] + + hdfu->manif_state = DFU_MANIFEST_COMPLETE; + 800655c: 68fb ldr r3, [r7, #12] + 800655e: 2200 movs r2, #0 + 8006560: f883 2419 strb.w r2, [r3, #1049] ; 0x419 + + if ((USBD_DFU_CfgDesc[(11U + (9U * USBD_DFU_MAX_ITF_NUM))]) & 0x04U) + 8006564: 4b1f ldr r3, [pc, #124] ; (80065e4 ) + 8006566: 7d1b ldrb r3, [r3, #20] + 8006568: f003 0304 and.w r3, r3, #4 + 800656c: 2b00 cmp r3, #0 + 800656e: d016 beq.n 800659e + { + hdfu->dev_state = DFU_STATE_MANIFEST_SYNC; + 8006570: 68fb ldr r3, [r7, #12] + 8006572: 2206 movs r2, #6 + 8006574: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + + hdfu->dev_status[1] = 0U; + 8006578: 68fb ldr r3, [r7, #12] + 800657a: 2200 movs r2, #0 + 800657c: f883 2411 strb.w r2, [r3, #1041] ; 0x411 + hdfu->dev_status[2] = 0U; + 8006580: 68fb ldr r3, [r7, #12] + 8006582: 2200 movs r2, #0 + 8006584: f883 2412 strb.w r2, [r3, #1042] ; 0x412 + hdfu->dev_status[3] = 0U; + 8006588: 68fb ldr r3, [r7, #12] + 800658a: 2200 movs r2, #0 + 800658c: f883 2413 strb.w r2, [r3, #1043] ; 0x413 + hdfu->dev_status[4] = hdfu->dev_state; + 8006590: 68fb ldr r3, [r7, #12] + 8006592: f893 2418 ldrb.w r2, [r3, #1048] ; 0x418 + 8006596: 68fb ldr r3, [r7, #12] + 8006598: f883 2414 strb.w r2, [r3, #1044] ; 0x414 + return; + 800659c: e01f b.n 80065de + } + else + { + hdfu->dev_state = DFU_STATE_MANIFEST_WAIT_RESET; + 800659e: 68fb ldr r3, [r7, #12] + 80065a0: 2208 movs r2, #8 + 80065a2: f883 2418 strb.w r2, [r3, #1048] ; 0x418 + + hdfu->dev_status[1] = 0U; + 80065a6: 68fb ldr r3, [r7, #12] + 80065a8: 2200 movs r2, #0 + 80065aa: f883 2411 strb.w r2, [r3, #1041] ; 0x411 + hdfu->dev_status[2] = 0U; + 80065ae: 68fb ldr r3, [r7, #12] + 80065b0: 2200 movs r2, #0 + 80065b2: f883 2412 strb.w r2, [r3, #1042] ; 0x412 + hdfu->dev_status[3] = 0U; + 80065b6: 68fb ldr r3, [r7, #12] + 80065b8: 2200 movs r2, #0 + 80065ba: f883 2413 strb.w r2, [r3, #1043] ; 0x413 + hdfu->dev_status[4] = hdfu->dev_state; + 80065be: 68fb ldr r3, [r7, #12] + 80065c0: f893 2418 ldrb.w r2, [r3, #1048] ; 0x418 + 80065c4: 68fb ldr r3, [r7, #12] + 80065c6: f883 2414 strb.w r2, [r3, #1044] ; 0x414 + + /* Disconnect the USB device */ + USBD_Stop(pdev); + 80065ca: 6878 ldr r0, [r7, #4] + 80065cc: f000 f85c bl 8006688 + + /* DeInitilialize the MAL(Media Access Layer) */ + ((USBD_DFU_MediaTypeDef *)pdev->pUserData)->DeInit(); + 80065d0: 687b ldr r3, [r7, #4] + 80065d2: f8d3 32bc ldr.w r3, [r3, #700] ; 0x2bc + 80065d6: 689b ldr r3, [r3, #8] + 80065d8: 4798 blx r3 + + /* Generate system reset to allow jumping to the user code */ + NVIC_SystemReset(); + 80065da: f7ff f9ab bl 8005934 <__NVIC_SystemReset> + + /* The next instructions will not be reached (system reset) */ + } +} + 80065de: 3710 adds r7, #16 + 80065e0: 46bd mov sp, r7 + 80065e2: bd80 pop {r7, pc} + 80065e4: 20000048 .word 0x20000048 + +080065e8 : +* @param id: Low level core index +* @retval None +*/ +USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, + USBD_DescriptorsTypeDef *pdesc, uint8_t id) +{ + 80065e8: b580 push {r7, lr} + 80065ea: b084 sub sp, #16 + 80065ec: af00 add r7, sp, #0 + 80065ee: 60f8 str r0, [r7, #12] + 80065f0: 60b9 str r1, [r7, #8] + 80065f2: 4613 mov r3, r2 + 80065f4: 71fb strb r3, [r7, #7] + /* Check whether the USB Host handle is valid */ + if (pdev == NULL) + 80065f6: 68fb ldr r3, [r7, #12] + 80065f8: 2b00 cmp r3, #0 + 80065fa: d101 bne.n 8006600 + { +#if (USBD_DEBUG_LEVEL > 1U) + USBD_ErrLog("Invalid Device handle"); +#endif + return USBD_FAIL; + 80065fc: 2302 movs r3, #2 + 80065fe: e01a b.n 8006636 + } + + /* Unlink previous class*/ + if (pdev->pClass != NULL) + 8006600: 68fb ldr r3, [r7, #12] + 8006602: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 8006606: 2b00 cmp r3, #0 + 8006608: d003 beq.n 8006612 + { + pdev->pClass = NULL; + 800660a: 68fb ldr r3, [r7, #12] + 800660c: 2200 movs r2, #0 + 800660e: f8c3 22b4 str.w r2, [r3, #692] ; 0x2b4 + } + + /* Assign USBD Descriptors */ + if (pdesc != NULL) + 8006612: 68bb ldr r3, [r7, #8] + 8006614: 2b00 cmp r3, #0 + 8006616: d003 beq.n 8006620 + { + pdev->pDesc = pdesc; + 8006618: 68fb ldr r3, [r7, #12] + 800661a: 68ba ldr r2, [r7, #8] + 800661c: f8c3 22b0 str.w r2, [r3, #688] ; 0x2b0 + } + + /* Set Device initial State */ + pdev->dev_state = USBD_STATE_DEFAULT; + 8006620: 68fb ldr r3, [r7, #12] + 8006622: 2201 movs r2, #1 + 8006624: f883 229c strb.w r2, [r3, #668] ; 0x29c + pdev->id = id; + 8006628: 68fb ldr r3, [r7, #12] + 800662a: 79fa ldrb r2, [r7, #7] + 800662c: 701a strb r2, [r3, #0] + /* Initialize low level driver */ + USBD_LL_Init(pdev); + 800662e: 68f8 ldr r0, [r7, #12] + 8006630: f001 fadc bl 8007bec + + return USBD_OK; + 8006634: 2300 movs r3, #0 +} + 8006636: 4618 mov r0, r3 + 8006638: 3710 adds r7, #16 + 800663a: 46bd mov sp, r7 + 800663c: bd80 pop {r7, pc} + +0800663e : + * @param pDevice : Device Handle + * @param pclass: Class handle + * @retval USBD Status + */ +USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass) +{ + 800663e: b480 push {r7} + 8006640: b085 sub sp, #20 + 8006642: af00 add r7, sp, #0 + 8006644: 6078 str r0, [r7, #4] + 8006646: 6039 str r1, [r7, #0] + USBD_StatusTypeDef status = USBD_OK; + 8006648: 2300 movs r3, #0 + 800664a: 73fb strb r3, [r7, #15] + if (pclass != NULL) + 800664c: 683b ldr r3, [r7, #0] + 800664e: 2b00 cmp r3, #0 + 8006650: d006 beq.n 8006660 + { + /* link the class to the USB Device handle */ + pdev->pClass = pclass; + 8006652: 687b ldr r3, [r7, #4] + 8006654: 683a ldr r2, [r7, #0] + 8006656: f8c3 22b4 str.w r2, [r3, #692] ; 0x2b4 + status = USBD_OK; + 800665a: 2300 movs r3, #0 + 800665c: 73fb strb r3, [r7, #15] + 800665e: e001 b.n 8006664 + else + { +#if (USBD_DEBUG_LEVEL > 1U) + USBD_ErrLog("Invalid Class handle"); +#endif + status = USBD_FAIL; + 8006660: 2302 movs r3, #2 + 8006662: 73fb strb r3, [r7, #15] + } + + return status; + 8006664: 7bfb ldrb r3, [r7, #15] +} + 8006666: 4618 mov r0, r3 + 8006668: 3714 adds r7, #20 + 800666a: 46bd mov sp, r7 + 800666c: bc80 pop {r7} + 800666e: 4770 bx lr + +08006670 : + * Start the USB Device Core. + * @param pdev: Device Handle + * @retval USBD Status + */ +USBD_StatusTypeDef USBD_Start(USBD_HandleTypeDef *pdev) +{ + 8006670: b580 push {r7, lr} + 8006672: b082 sub sp, #8 + 8006674: af00 add r7, sp, #0 + 8006676: 6078 str r0, [r7, #4] + /* Start the low level driver */ + USBD_LL_Start(pdev); + 8006678: 6878 ldr r0, [r7, #4] + 800667a: f001 faf7 bl 8007c6c + + return USBD_OK; + 800667e: 2300 movs r3, #0 +} + 8006680: 4618 mov r0, r3 + 8006682: 3708 adds r7, #8 + 8006684: 46bd mov sp, r7 + 8006686: bd80 pop {r7, pc} + +08006688 : + * Stop the USB Device Core. + * @param pdev: Device Handle + * @retval USBD Status + */ +USBD_StatusTypeDef USBD_Stop(USBD_HandleTypeDef *pdev) +{ + 8006688: b580 push {r7, lr} + 800668a: b082 sub sp, #8 + 800668c: af00 add r7, sp, #0 + 800668e: 6078 str r0, [r7, #4] + /* Free Class Resources */ + pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config); + 8006690: 687b ldr r3, [r7, #4] + 8006692: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 8006696: 685b ldr r3, [r3, #4] + 8006698: 687a ldr r2, [r7, #4] + 800669a: 6852 ldr r2, [r2, #4] + 800669c: b2d2 uxtb r2, r2 + 800669e: 4611 mov r1, r2 + 80066a0: 6878 ldr r0, [r7, #4] + 80066a2: 4798 blx r3 + + /* Stop the low level driver */ + USBD_LL_Stop(pdev); + 80066a4: 6878 ldr r0, [r7, #4] + 80066a6: f001 fafc bl 8007ca2 + + return USBD_OK; + 80066aa: 2300 movs r3, #0 +} + 80066ac: 4618 mov r0, r3 + 80066ae: 3708 adds r7, #8 + 80066b0: 46bd mov sp, r7 + 80066b2: bd80 pop {r7, pc} + +080066b4 : +* Launch test mode process +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_RunTestMode(USBD_HandleTypeDef *pdev) +{ + 80066b4: b480 push {r7} + 80066b6: b083 sub sp, #12 + 80066b8: af00 add r7, sp, #0 + 80066ba: 6078 str r0, [r7, #4] + /* Prevent unused argument compilation warning */ + UNUSED(pdev); + + return USBD_OK; + 80066bc: 2300 movs r3, #0 +} + 80066be: 4618 mov r0, r3 + 80066c0: 370c adds r7, #12 + 80066c2: 46bd mov sp, r7 + 80066c4: bc80 pop {r7} + 80066c6: 4770 bx lr + +080066c8 : +* @param cfgidx: configuration index +* @retval status +*/ + +USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx) +{ + 80066c8: b580 push {r7, lr} + 80066ca: b084 sub sp, #16 + 80066cc: af00 add r7, sp, #0 + 80066ce: 6078 str r0, [r7, #4] + 80066d0: 460b mov r3, r1 + 80066d2: 70fb strb r3, [r7, #3] + USBD_StatusTypeDef ret = USBD_FAIL; + 80066d4: 2302 movs r3, #2 + 80066d6: 73fb strb r3, [r7, #15] + + if (pdev->pClass != NULL) + 80066d8: 687b ldr r3, [r7, #4] + 80066da: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 80066de: 2b00 cmp r3, #0 + 80066e0: d00c beq.n 80066fc + { + /* Set configuration and Start the Class*/ + if (pdev->pClass->Init(pdev, cfgidx) == 0U) + 80066e2: 687b ldr r3, [r7, #4] + 80066e4: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 80066e8: 681b ldr r3, [r3, #0] + 80066ea: 78fa ldrb r2, [r7, #3] + 80066ec: 4611 mov r1, r2 + 80066ee: 6878 ldr r0, [r7, #4] + 80066f0: 4798 blx r3 + 80066f2: 4603 mov r3, r0 + 80066f4: 2b00 cmp r3, #0 + 80066f6: d101 bne.n 80066fc + { + ret = USBD_OK; + 80066f8: 2300 movs r3, #0 + 80066fa: 73fb strb r3, [r7, #15] + } + } + + return ret; + 80066fc: 7bfb ldrb r3, [r7, #15] +} + 80066fe: 4618 mov r0, r3 + 8006700: 3710 adds r7, #16 + 8006702: 46bd mov sp, r7 + 8006704: bd80 pop {r7, pc} + +08006706 : +* @param pdev: device instance +* @param cfgidx: configuration index +* @retval status: USBD_StatusTypeDef +*/ +USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx) +{ + 8006706: b580 push {r7, lr} + 8006708: b082 sub sp, #8 + 800670a: af00 add r7, sp, #0 + 800670c: 6078 str r0, [r7, #4] + 800670e: 460b mov r3, r1 + 8006710: 70fb strb r3, [r7, #3] + /* Clear configuration and De-initialize the Class process*/ + pdev->pClass->DeInit(pdev, cfgidx); + 8006712: 687b ldr r3, [r7, #4] + 8006714: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 8006718: 685b ldr r3, [r3, #4] + 800671a: 78fa ldrb r2, [r7, #3] + 800671c: 4611 mov r1, r2 + 800671e: 6878 ldr r0, [r7, #4] + 8006720: 4798 blx r3 + + return USBD_OK; + 8006722: 2300 movs r3, #0 +} + 8006724: 4618 mov r0, r3 + 8006726: 3708 adds r7, #8 + 8006728: 46bd mov sp, r7 + 800672a: bd80 pop {r7, pc} + +0800672c : +* Handle the setup stage +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup) +{ + 800672c: b580 push {r7, lr} + 800672e: b082 sub sp, #8 + 8006730: af00 add r7, sp, #0 + 8006732: 6078 str r0, [r7, #4] + 8006734: 6039 str r1, [r7, #0] + USBD_ParseSetupRequest(&pdev->request, psetup); + 8006736: 687b ldr r3, [r7, #4] + 8006738: f503 732a add.w r3, r3, #680 ; 0x2a8 + 800673c: 6839 ldr r1, [r7, #0] + 800673e: 4618 mov r0, r3 + 8006740: f000 fee9 bl 8007516 + + pdev->ep0_state = USBD_EP0_SETUP; + 8006744: 687b ldr r3, [r7, #4] + 8006746: 2201 movs r2, #1 + 8006748: f8c3 2294 str.w r2, [r3, #660] ; 0x294 + + pdev->ep0_data_len = pdev->request.wLength; + 800674c: 687b ldr r3, [r7, #4] + 800674e: f8b3 32ae ldrh.w r3, [r3, #686] ; 0x2ae + 8006752: 461a mov r2, r3 + 8006754: 687b ldr r3, [r7, #4] + 8006756: f8c3 2298 str.w r2, [r3, #664] ; 0x298 + + switch (pdev->request.bmRequest & 0x1FU) + 800675a: 687b ldr r3, [r7, #4] + 800675c: f893 32a8 ldrb.w r3, [r3, #680] ; 0x2a8 + 8006760: f003 031f and.w r3, r3, #31 + 8006764: 2b02 cmp r3, #2 + 8006766: d016 beq.n 8006796 + 8006768: 2b02 cmp r3, #2 + 800676a: d81c bhi.n 80067a6 + 800676c: 2b00 cmp r3, #0 + 800676e: d002 beq.n 8006776 + 8006770: 2b01 cmp r3, #1 + 8006772: d008 beq.n 8006786 + 8006774: e017 b.n 80067a6 + { + case USB_REQ_RECIPIENT_DEVICE: + USBD_StdDevReq(pdev, &pdev->request); + 8006776: 687b ldr r3, [r7, #4] + 8006778: f503 732a add.w r3, r3, #680 ; 0x2a8 + 800677c: 4619 mov r1, r3 + 800677e: 6878 ldr r0, [r7, #4] + 8006780: f000 f9ca bl 8006b18 + break; + 8006784: e01a b.n 80067bc + + case USB_REQ_RECIPIENT_INTERFACE: + USBD_StdItfReq(pdev, &pdev->request); + 8006786: 687b ldr r3, [r7, #4] + 8006788: f503 732a add.w r3, r3, #680 ; 0x2a8 + 800678c: 4619 mov r1, r3 + 800678e: 6878 ldr r0, [r7, #4] + 8006790: f000 fa2c bl 8006bec + break; + 8006794: e012 b.n 80067bc + + case USB_REQ_RECIPIENT_ENDPOINT: + USBD_StdEPReq(pdev, &pdev->request); + 8006796: 687b ldr r3, [r7, #4] + 8006798: f503 732a add.w r3, r3, #680 ; 0x2a8 + 800679c: 4619 mov r1, r3 + 800679e: 6878 ldr r0, [r7, #4] + 80067a0: f000 fa6c bl 8006c7c + break; + 80067a4: e00a b.n 80067bc + + default: + USBD_LL_StallEP(pdev, (pdev->request.bmRequest & 0x80U)); + 80067a6: 687b ldr r3, [r7, #4] + 80067a8: f893 32a8 ldrb.w r3, [r3, #680] ; 0x2a8 + 80067ac: f023 037f bic.w r3, r3, #127 ; 0x7f + 80067b0: b2db uxtb r3, r3 + 80067b2: 4619 mov r1, r3 + 80067b4: 6878 ldr r0, [r7, #4] + 80067b6: f001 fab5 bl 8007d24 + break; + 80067ba: bf00 nop + } + + return USBD_OK; + 80067bc: 2300 movs r3, #0 +} + 80067be: 4618 mov r0, r3 + 80067c0: 3708 adds r7, #8 + 80067c2: 46bd mov sp, r7 + 80067c4: bd80 pop {r7, pc} + +080067c6 : +* @param epnum: endpoint index +* @retval status +*/ +USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev, + uint8_t epnum, uint8_t *pdata) +{ + 80067c6: b580 push {r7, lr} + 80067c8: b086 sub sp, #24 + 80067ca: af00 add r7, sp, #0 + 80067cc: 60f8 str r0, [r7, #12] + 80067ce: 460b mov r3, r1 + 80067d0: 607a str r2, [r7, #4] + 80067d2: 72fb strb r3, [r7, #11] + USBD_EndpointTypeDef *pep; + + if (epnum == 0U) + 80067d4: 7afb ldrb r3, [r7, #11] + 80067d6: 2b00 cmp r3, #0 + 80067d8: d14b bne.n 8006872 + { + pep = &pdev->ep_out[0]; + 80067da: 68fb ldr r3, [r7, #12] + 80067dc: f503 73aa add.w r3, r3, #340 ; 0x154 + 80067e0: 617b str r3, [r7, #20] + + if (pdev->ep0_state == USBD_EP0_DATA_OUT) + 80067e2: 68fb ldr r3, [r7, #12] + 80067e4: f8d3 3294 ldr.w r3, [r3, #660] ; 0x294 + 80067e8: 2b03 cmp r3, #3 + 80067ea: d134 bne.n 8006856 + { + if (pep->rem_length > pep->maxpacket) + 80067ec: 697b ldr r3, [r7, #20] + 80067ee: 68da ldr r2, [r3, #12] + 80067f0: 697b ldr r3, [r7, #20] + 80067f2: 691b ldr r3, [r3, #16] + 80067f4: 429a cmp r2, r3 + 80067f6: d919 bls.n 800682c + { + pep->rem_length -= pep->maxpacket; + 80067f8: 697b ldr r3, [r7, #20] + 80067fa: 68da ldr r2, [r3, #12] + 80067fc: 697b ldr r3, [r7, #20] + 80067fe: 691b ldr r3, [r3, #16] + 8006800: 1ad2 subs r2, r2, r3 + 8006802: 697b ldr r3, [r7, #20] + 8006804: 60da str r2, [r3, #12] + + USBD_CtlContinueRx(pdev, pdata, + (uint16_t)MIN(pep->rem_length, pep->maxpacket)); + 8006806: 697b ldr r3, [r7, #20] + 8006808: 68da ldr r2, [r3, #12] + 800680a: 697b ldr r3, [r7, #20] + 800680c: 691b ldr r3, [r3, #16] + USBD_CtlContinueRx(pdev, pdata, + 800680e: 429a cmp r2, r3 + 8006810: d203 bcs.n 800681a + (uint16_t)MIN(pep->rem_length, pep->maxpacket)); + 8006812: 697b ldr r3, [r7, #20] + 8006814: 68db ldr r3, [r3, #12] + USBD_CtlContinueRx(pdev, pdata, + 8006816: b29b uxth r3, r3 + 8006818: e002 b.n 8006820 + (uint16_t)MIN(pep->rem_length, pep->maxpacket)); + 800681a: 697b ldr r3, [r7, #20] + 800681c: 691b ldr r3, [r3, #16] + USBD_CtlContinueRx(pdev, pdata, + 800681e: b29b uxth r3, r3 + 8006820: 461a mov r2, r3 + 8006822: 6879 ldr r1, [r7, #4] + 8006824: 68f8 ldr r0, [r7, #12] + 8006826: f000 ff68 bl 80076fa + 800682a: e038 b.n 800689e + } + else + { + if ((pdev->pClass->EP0_RxReady != NULL) && + 800682c: 68fb ldr r3, [r7, #12] + 800682e: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 8006832: 691b ldr r3, [r3, #16] + 8006834: 2b00 cmp r3, #0 + 8006836: d00a beq.n 800684e + (pdev->dev_state == USBD_STATE_CONFIGURED)) + 8006838: 68fb ldr r3, [r7, #12] + 800683a: f893 329c ldrb.w r3, [r3, #668] ; 0x29c + if ((pdev->pClass->EP0_RxReady != NULL) && + 800683e: 2b03 cmp r3, #3 + 8006840: d105 bne.n 800684e + { + pdev->pClass->EP0_RxReady(pdev); + 8006842: 68fb ldr r3, [r7, #12] + 8006844: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 8006848: 691b ldr r3, [r3, #16] + 800684a: 68f8 ldr r0, [r7, #12] + 800684c: 4798 blx r3 + } + USBD_CtlSendStatus(pdev); + 800684e: 68f8 ldr r0, [r7, #12] + 8006850: f000 ff65 bl 800771e + 8006854: e023 b.n 800689e + } + } + else + { + if (pdev->ep0_state == USBD_EP0_STATUS_OUT) + 8006856: 68fb ldr r3, [r7, #12] + 8006858: f8d3 3294 ldr.w r3, [r3, #660] ; 0x294 + 800685c: 2b05 cmp r3, #5 + 800685e: d11e bne.n 800689e + { + /* + * STATUS PHASE completed, update ep0_state to idle + */ + pdev->ep0_state = USBD_EP0_IDLE; + 8006860: 68fb ldr r3, [r7, #12] + 8006862: 2200 movs r2, #0 + 8006864: f8c3 2294 str.w r2, [r3, #660] ; 0x294 + USBD_LL_StallEP(pdev, 0U); + 8006868: 2100 movs r1, #0 + 800686a: 68f8 ldr r0, [r7, #12] + 800686c: f001 fa5a bl 8007d24 + 8006870: e015 b.n 800689e + } + } + } + else if ((pdev->pClass->DataOut != NULL) && + 8006872: 68fb ldr r3, [r7, #12] + 8006874: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 8006878: 699b ldr r3, [r3, #24] + 800687a: 2b00 cmp r3, #0 + 800687c: d00d beq.n 800689a + (pdev->dev_state == USBD_STATE_CONFIGURED)) + 800687e: 68fb ldr r3, [r7, #12] + 8006880: f893 329c ldrb.w r3, [r3, #668] ; 0x29c + else if ((pdev->pClass->DataOut != NULL) && + 8006884: 2b03 cmp r3, #3 + 8006886: d108 bne.n 800689a + { + pdev->pClass->DataOut(pdev, epnum); + 8006888: 68fb ldr r3, [r7, #12] + 800688a: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 800688e: 699b ldr r3, [r3, #24] + 8006890: 7afa ldrb r2, [r7, #11] + 8006892: 4611 mov r1, r2 + 8006894: 68f8 ldr r0, [r7, #12] + 8006896: 4798 blx r3 + 8006898: e001 b.n 800689e + } + else + { + /* should never be in this condition */ + return USBD_FAIL; + 800689a: 2302 movs r3, #2 + 800689c: e000 b.n 80068a0 + } + + return USBD_OK; + 800689e: 2300 movs r3, #0 +} + 80068a0: 4618 mov r0, r3 + 80068a2: 3718 adds r7, #24 + 80068a4: 46bd mov sp, r7 + 80068a6: bd80 pop {r7, pc} + +080068a8 : +* @param epnum: endpoint index +* @retval status +*/ +USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, + uint8_t epnum, uint8_t *pdata) +{ + 80068a8: b580 push {r7, lr} + 80068aa: b086 sub sp, #24 + 80068ac: af00 add r7, sp, #0 + 80068ae: 60f8 str r0, [r7, #12] + 80068b0: 460b mov r3, r1 + 80068b2: 607a str r2, [r7, #4] + 80068b4: 72fb strb r3, [r7, #11] + USBD_EndpointTypeDef *pep; + + if (epnum == 0U) + 80068b6: 7afb ldrb r3, [r7, #11] + 80068b8: 2b00 cmp r3, #0 + 80068ba: d17f bne.n 80069bc + { + pep = &pdev->ep_in[0]; + 80068bc: 68fb ldr r3, [r7, #12] + 80068be: 3314 adds r3, #20 + 80068c0: 617b str r3, [r7, #20] + + if (pdev->ep0_state == USBD_EP0_DATA_IN) + 80068c2: 68fb ldr r3, [r7, #12] + 80068c4: f8d3 3294 ldr.w r3, [r3, #660] ; 0x294 + 80068c8: 2b02 cmp r3, #2 + 80068ca: d15c bne.n 8006986 + { + if (pep->rem_length > pep->maxpacket) + 80068cc: 697b ldr r3, [r7, #20] + 80068ce: 68da ldr r2, [r3, #12] + 80068d0: 697b ldr r3, [r7, #20] + 80068d2: 691b ldr r3, [r3, #16] + 80068d4: 429a cmp r2, r3 + 80068d6: d915 bls.n 8006904 + { + pep->rem_length -= pep->maxpacket; + 80068d8: 697b ldr r3, [r7, #20] + 80068da: 68da ldr r2, [r3, #12] + 80068dc: 697b ldr r3, [r7, #20] + 80068de: 691b ldr r3, [r3, #16] + 80068e0: 1ad2 subs r2, r2, r3 + 80068e2: 697b ldr r3, [r7, #20] + 80068e4: 60da str r2, [r3, #12] + + USBD_CtlContinueSendData(pdev, pdata, (uint16_t)pep->rem_length); + 80068e6: 697b ldr r3, [r7, #20] + 80068e8: 68db ldr r3, [r3, #12] + 80068ea: b29b uxth r3, r3 + 80068ec: 461a mov r2, r3 + 80068ee: 6879 ldr r1, [r7, #4] + 80068f0: 68f8 ldr r0, [r7, #12] + 80068f2: f000 fed2 bl 800769a + + /* Prepare endpoint for premature end of transfer */ + USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); + 80068f6: 2300 movs r3, #0 + 80068f8: 2200 movs r2, #0 + 80068fa: 2100 movs r1, #0 + 80068fc: 68f8 ldr r0, [r7, #12] + 80068fe: f001 fabd bl 8007e7c + 8006902: e04e b.n 80069a2 + } + else + { + /* last packet is MPS multiple, so send ZLP packet */ + if ((pep->total_length % pep->maxpacket == 0U) && + 8006904: 697b ldr r3, [r7, #20] + 8006906: 689b ldr r3, [r3, #8] + 8006908: 697a ldr r2, [r7, #20] + 800690a: 6912 ldr r2, [r2, #16] + 800690c: fbb3 f1f2 udiv r1, r3, r2 + 8006910: fb02 f201 mul.w r2, r2, r1 + 8006914: 1a9b subs r3, r3, r2 + 8006916: 2b00 cmp r3, #0 + 8006918: d11c bne.n 8006954 + (pep->total_length >= pep->maxpacket) && + 800691a: 697b ldr r3, [r7, #20] + 800691c: 689a ldr r2, [r3, #8] + 800691e: 697b ldr r3, [r7, #20] + 8006920: 691b ldr r3, [r3, #16] + if ((pep->total_length % pep->maxpacket == 0U) && + 8006922: 429a cmp r2, r3 + 8006924: d316 bcc.n 8006954 + (pep->total_length < pdev->ep0_data_len)) + 8006926: 697b ldr r3, [r7, #20] + 8006928: 689a ldr r2, [r3, #8] + 800692a: 68fb ldr r3, [r7, #12] + 800692c: f8d3 3298 ldr.w r3, [r3, #664] ; 0x298 + (pep->total_length >= pep->maxpacket) && + 8006930: 429a cmp r2, r3 + 8006932: d20f bcs.n 8006954 + { + USBD_CtlContinueSendData(pdev, NULL, 0U); + 8006934: 2200 movs r2, #0 + 8006936: 2100 movs r1, #0 + 8006938: 68f8 ldr r0, [r7, #12] + 800693a: f000 feae bl 800769a + pdev->ep0_data_len = 0U; + 800693e: 68fb ldr r3, [r7, #12] + 8006940: 2200 movs r2, #0 + 8006942: f8c3 2298 str.w r2, [r3, #664] ; 0x298 + + /* Prepare endpoint for premature end of transfer */ + USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); + 8006946: 2300 movs r3, #0 + 8006948: 2200 movs r2, #0 + 800694a: 2100 movs r1, #0 + 800694c: 68f8 ldr r0, [r7, #12] + 800694e: f001 fa95 bl 8007e7c + 8006952: e026 b.n 80069a2 + } + else + { + if ((pdev->pClass->EP0_TxSent != NULL) && + 8006954: 68fb ldr r3, [r7, #12] + 8006956: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 800695a: 68db ldr r3, [r3, #12] + 800695c: 2b00 cmp r3, #0 + 800695e: d00a beq.n 8006976 + (pdev->dev_state == USBD_STATE_CONFIGURED)) + 8006960: 68fb ldr r3, [r7, #12] + 8006962: f893 329c ldrb.w r3, [r3, #668] ; 0x29c + if ((pdev->pClass->EP0_TxSent != NULL) && + 8006966: 2b03 cmp r3, #3 + 8006968: d105 bne.n 8006976 + { + pdev->pClass->EP0_TxSent(pdev); + 800696a: 68fb ldr r3, [r7, #12] + 800696c: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 8006970: 68db ldr r3, [r3, #12] + 8006972: 68f8 ldr r0, [r7, #12] + 8006974: 4798 blx r3 + } + USBD_LL_StallEP(pdev, 0x80U); + 8006976: 2180 movs r1, #128 ; 0x80 + 8006978: 68f8 ldr r0, [r7, #12] + 800697a: f001 f9d3 bl 8007d24 + USBD_CtlReceiveStatus(pdev); + 800697e: 68f8 ldr r0, [r7, #12] + 8006980: f000 fee0 bl 8007744 + 8006984: e00d b.n 80069a2 + } + } + } + else + { + if ((pdev->ep0_state == USBD_EP0_STATUS_IN) || + 8006986: 68fb ldr r3, [r7, #12] + 8006988: f8d3 3294 ldr.w r3, [r3, #660] ; 0x294 + 800698c: 2b04 cmp r3, #4 + 800698e: d004 beq.n 800699a + (pdev->ep0_state == USBD_EP0_IDLE)) + 8006990: 68fb ldr r3, [r7, #12] + 8006992: f8d3 3294 ldr.w r3, [r3, #660] ; 0x294 + if ((pdev->ep0_state == USBD_EP0_STATUS_IN) || + 8006996: 2b00 cmp r3, #0 + 8006998: d103 bne.n 80069a2 + { + USBD_LL_StallEP(pdev, 0x80U); + 800699a: 2180 movs r1, #128 ; 0x80 + 800699c: 68f8 ldr r0, [r7, #12] + 800699e: f001 f9c1 bl 8007d24 + } + } + + if (pdev->dev_test_mode == 1U) + 80069a2: 68fb ldr r3, [r7, #12] + 80069a4: f893 32a0 ldrb.w r3, [r3, #672] ; 0x2a0 + 80069a8: 2b01 cmp r3, #1 + 80069aa: d11d bne.n 80069e8 + { + USBD_RunTestMode(pdev); + 80069ac: 68f8 ldr r0, [r7, #12] + 80069ae: f7ff fe81 bl 80066b4 + pdev->dev_test_mode = 0U; + 80069b2: 68fb ldr r3, [r7, #12] + 80069b4: 2200 movs r2, #0 + 80069b6: f883 22a0 strb.w r2, [r3, #672] ; 0x2a0 + 80069ba: e015 b.n 80069e8 + } + } + else if ((pdev->pClass->DataIn != NULL) && + 80069bc: 68fb ldr r3, [r7, #12] + 80069be: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 80069c2: 695b ldr r3, [r3, #20] + 80069c4: 2b00 cmp r3, #0 + 80069c6: d00d beq.n 80069e4 + (pdev->dev_state == USBD_STATE_CONFIGURED)) + 80069c8: 68fb ldr r3, [r7, #12] + 80069ca: f893 329c ldrb.w r3, [r3, #668] ; 0x29c + else if ((pdev->pClass->DataIn != NULL) && + 80069ce: 2b03 cmp r3, #3 + 80069d0: d108 bne.n 80069e4 + { + pdev->pClass->DataIn(pdev, epnum); + 80069d2: 68fb ldr r3, [r7, #12] + 80069d4: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 80069d8: 695b ldr r3, [r3, #20] + 80069da: 7afa ldrb r2, [r7, #11] + 80069dc: 4611 mov r1, r2 + 80069de: 68f8 ldr r0, [r7, #12] + 80069e0: 4798 blx r3 + 80069e2: e001 b.n 80069e8 + } + else + { + /* should never be in this condition */ + return USBD_FAIL; + 80069e4: 2302 movs r3, #2 + 80069e6: e000 b.n 80069ea + } + + return USBD_OK; + 80069e8: 2300 movs r3, #0 +} + 80069ea: 4618 mov r0, r3 + 80069ec: 3718 adds r7, #24 + 80069ee: 46bd mov sp, r7 + 80069f0: bd80 pop {r7, pc} + +080069f2 : +* @param pdev: device instance +* @retval status +*/ + +USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev) +{ + 80069f2: b580 push {r7, lr} + 80069f4: b082 sub sp, #8 + 80069f6: af00 add r7, sp, #0 + 80069f8: 6078 str r0, [r7, #4] + /* Open EP0 OUT */ + USBD_LL_OpenEP(pdev, 0x00U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE); + 80069fa: 2340 movs r3, #64 ; 0x40 + 80069fc: 2200 movs r2, #0 + 80069fe: 2100 movs r1, #0 + 8006a00: 6878 ldr r0, [r7, #4] + 8006a02: f001 f969 bl 8007cd8 + pdev->ep_out[0x00U & 0xFU].is_used = 1U; + 8006a06: 687b ldr r3, [r7, #4] + 8006a08: 2201 movs r2, #1 + 8006a0a: f8c3 2158 str.w r2, [r3, #344] ; 0x158 + + pdev->ep_out[0].maxpacket = USB_MAX_EP0_SIZE; + 8006a0e: 687b ldr r3, [r7, #4] + 8006a10: 2240 movs r2, #64 ; 0x40 + 8006a12: f8c3 2164 str.w r2, [r3, #356] ; 0x164 + + /* Open EP0 IN */ + USBD_LL_OpenEP(pdev, 0x80U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE); + 8006a16: 2340 movs r3, #64 ; 0x40 + 8006a18: 2200 movs r2, #0 + 8006a1a: 2180 movs r1, #128 ; 0x80 + 8006a1c: 6878 ldr r0, [r7, #4] + 8006a1e: f001 f95b bl 8007cd8 + pdev->ep_in[0x80U & 0xFU].is_used = 1U; + 8006a22: 687b ldr r3, [r7, #4] + 8006a24: 2201 movs r2, #1 + 8006a26: 619a str r2, [r3, #24] + + pdev->ep_in[0].maxpacket = USB_MAX_EP0_SIZE; + 8006a28: 687b ldr r3, [r7, #4] + 8006a2a: 2240 movs r2, #64 ; 0x40 + 8006a2c: 625a str r2, [r3, #36] ; 0x24 + + /* Upon Reset call user call back */ + pdev->dev_state = USBD_STATE_DEFAULT; + 8006a2e: 687b ldr r3, [r7, #4] + 8006a30: 2201 movs r2, #1 + 8006a32: f883 229c strb.w r2, [r3, #668] ; 0x29c + pdev->ep0_state = USBD_EP0_IDLE; + 8006a36: 687b ldr r3, [r7, #4] + 8006a38: 2200 movs r2, #0 + 8006a3a: f8c3 2294 str.w r2, [r3, #660] ; 0x294 + pdev->dev_config = 0U; + 8006a3e: 687b ldr r3, [r7, #4] + 8006a40: 2200 movs r2, #0 + 8006a42: 605a str r2, [r3, #4] + pdev->dev_remote_wakeup = 0U; + 8006a44: 687b ldr r3, [r7, #4] + 8006a46: 2200 movs r2, #0 + 8006a48: f8c3 22a4 str.w r2, [r3, #676] ; 0x2a4 + + if (pdev->pClassData) + 8006a4c: 687b ldr r3, [r7, #4] + 8006a4e: f8d3 32b8 ldr.w r3, [r3, #696] ; 0x2b8 + 8006a52: 2b00 cmp r3, #0 + 8006a54: d009 beq.n 8006a6a + { + pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config); + 8006a56: 687b ldr r3, [r7, #4] + 8006a58: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 8006a5c: 685b ldr r3, [r3, #4] + 8006a5e: 687a ldr r2, [r7, #4] + 8006a60: 6852 ldr r2, [r2, #4] + 8006a62: b2d2 uxtb r2, r2 + 8006a64: 4611 mov r1, r2 + 8006a66: 6878 ldr r0, [r7, #4] + 8006a68: 4798 blx r3 + } + + return USBD_OK; + 8006a6a: 2300 movs r3, #0 +} + 8006a6c: 4618 mov r0, r3 + 8006a6e: 3708 adds r7, #8 + 8006a70: 46bd mov sp, r7 + 8006a72: bd80 pop {r7, pc} + +08006a74 : +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, + USBD_SpeedTypeDef speed) +{ + 8006a74: b480 push {r7} + 8006a76: b083 sub sp, #12 + 8006a78: af00 add r7, sp, #0 + 8006a7a: 6078 str r0, [r7, #4] + 8006a7c: 460b mov r3, r1 + 8006a7e: 70fb strb r3, [r7, #3] + pdev->dev_speed = speed; + 8006a80: 687b ldr r3, [r7, #4] + 8006a82: 78fa ldrb r2, [r7, #3] + 8006a84: 741a strb r2, [r3, #16] + + return USBD_OK; + 8006a86: 2300 movs r3, #0 +} + 8006a88: 4618 mov r0, r3 + 8006a8a: 370c adds r7, #12 + 8006a8c: 46bd mov sp, r7 + 8006a8e: bc80 pop {r7} + 8006a90: 4770 bx lr + +08006a92 : +* @param pdev: device instance +* @retval status +*/ + +USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev) +{ + 8006a92: b480 push {r7} + 8006a94: b083 sub sp, #12 + 8006a96: af00 add r7, sp, #0 + 8006a98: 6078 str r0, [r7, #4] + pdev->dev_old_state = pdev->dev_state; + 8006a9a: 687b ldr r3, [r7, #4] + 8006a9c: f893 229c ldrb.w r2, [r3, #668] ; 0x29c + 8006aa0: 687b ldr r3, [r7, #4] + 8006aa2: f883 229d strb.w r2, [r3, #669] ; 0x29d + pdev->dev_state = USBD_STATE_SUSPENDED; + 8006aa6: 687b ldr r3, [r7, #4] + 8006aa8: 2204 movs r2, #4 + 8006aaa: f883 229c strb.w r2, [r3, #668] ; 0x29c + + return USBD_OK; + 8006aae: 2300 movs r3, #0 +} + 8006ab0: 4618 mov r0, r3 + 8006ab2: 370c adds r7, #12 + 8006ab4: 46bd mov sp, r7 + 8006ab6: bc80 pop {r7} + 8006ab8: 4770 bx lr + +08006aba : +* @param pdev: device instance +* @retval status +*/ + +USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev) +{ + 8006aba: b480 push {r7} + 8006abc: b083 sub sp, #12 + 8006abe: af00 add r7, sp, #0 + 8006ac0: 6078 str r0, [r7, #4] + if (pdev->dev_state == USBD_STATE_SUSPENDED) + 8006ac2: 687b ldr r3, [r7, #4] + 8006ac4: f893 329c ldrb.w r3, [r3, #668] ; 0x29c + 8006ac8: 2b04 cmp r3, #4 + 8006aca: d105 bne.n 8006ad8 + { + pdev->dev_state = pdev->dev_old_state; + 8006acc: 687b ldr r3, [r7, #4] + 8006ace: f893 229d ldrb.w r2, [r3, #669] ; 0x29d + 8006ad2: 687b ldr r3, [r7, #4] + 8006ad4: f883 229c strb.w r2, [r3, #668] ; 0x29c + } + + return USBD_OK; + 8006ad8: 2300 movs r3, #0 +} + 8006ada: 4618 mov r0, r3 + 8006adc: 370c adds r7, #12 + 8006ade: 46bd mov sp, r7 + 8006ae0: bc80 pop {r7} + 8006ae2: 4770 bx lr + +08006ae4 : +* @param pdev: device instance +* @retval status +*/ + +USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev) +{ + 8006ae4: b580 push {r7, lr} + 8006ae6: b082 sub sp, #8 + 8006ae8: af00 add r7, sp, #0 + 8006aea: 6078 str r0, [r7, #4] + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 8006aec: 687b ldr r3, [r7, #4] + 8006aee: f893 329c ldrb.w r3, [r3, #668] ; 0x29c + 8006af2: 2b03 cmp r3, #3 + 8006af4: d10b bne.n 8006b0e + { + if (pdev->pClass->SOF != NULL) + 8006af6: 687b ldr r3, [r7, #4] + 8006af8: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 8006afc: 69db ldr r3, [r3, #28] + 8006afe: 2b00 cmp r3, #0 + 8006b00: d005 beq.n 8006b0e + { + pdev->pClass->SOF(pdev); + 8006b02: 687b ldr r3, [r7, #4] + 8006b04: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 8006b08: 69db ldr r3, [r3, #28] + 8006b0a: 6878 ldr r0, [r7, #4] + 8006b0c: 4798 blx r3 + } + } + + return USBD_OK; + 8006b0e: 2300 movs r3, #0 +} + 8006b10: 4618 mov r0, r3 + 8006b12: 3708 adds r7, #8 + 8006b14: 46bd mov sp, r7 + 8006b16: bd80 pop {r7, pc} + +08006b18 : +* @param req: usb request +* @retval status +*/ +USBD_StatusTypeDef USBD_StdDevReq(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 8006b18: b580 push {r7, lr} + 8006b1a: b084 sub sp, #16 + 8006b1c: af00 add r7, sp, #0 + 8006b1e: 6078 str r0, [r7, #4] + 8006b20: 6039 str r1, [r7, #0] + USBD_StatusTypeDef ret = USBD_OK; + 8006b22: 2300 movs r3, #0 + 8006b24: 73fb strb r3, [r7, #15] + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + 8006b26: 683b ldr r3, [r7, #0] + 8006b28: 781b ldrb r3, [r3, #0] + 8006b2a: f003 0360 and.w r3, r3, #96 ; 0x60 + 8006b2e: 2b40 cmp r3, #64 ; 0x40 + 8006b30: d005 beq.n 8006b3e + 8006b32: 2b40 cmp r3, #64 ; 0x40 + 8006b34: d84f bhi.n 8006bd6 + 8006b36: 2b00 cmp r3, #0 + 8006b38: d009 beq.n 8006b4e + 8006b3a: 2b20 cmp r3, #32 + 8006b3c: d14b bne.n 8006bd6 + { + case USB_REQ_TYPE_CLASS: + case USB_REQ_TYPE_VENDOR: + pdev->pClass->Setup(pdev, req); + 8006b3e: 687b ldr r3, [r7, #4] + 8006b40: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 8006b44: 689b ldr r3, [r3, #8] + 8006b46: 6839 ldr r1, [r7, #0] + 8006b48: 6878 ldr r0, [r7, #4] + 8006b4a: 4798 blx r3 + break; + 8006b4c: e048 b.n 8006be0 + + case USB_REQ_TYPE_STANDARD: + switch (req->bRequest) + 8006b4e: 683b ldr r3, [r7, #0] + 8006b50: 785b ldrb r3, [r3, #1] + 8006b52: 2b09 cmp r3, #9 + 8006b54: d839 bhi.n 8006bca + 8006b56: a201 add r2, pc, #4 ; (adr r2, 8006b5c ) + 8006b58: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8006b5c: 08006bad .word 0x08006bad + 8006b60: 08006bc1 .word 0x08006bc1 + 8006b64: 08006bcb .word 0x08006bcb + 8006b68: 08006bb7 .word 0x08006bb7 + 8006b6c: 08006bcb .word 0x08006bcb + 8006b70: 08006b8f .word 0x08006b8f + 8006b74: 08006b85 .word 0x08006b85 + 8006b78: 08006bcb .word 0x08006bcb + 8006b7c: 08006ba3 .word 0x08006ba3 + 8006b80: 08006b99 .word 0x08006b99 + { + case USB_REQ_GET_DESCRIPTOR: + USBD_GetDescriptor(pdev, req); + 8006b84: 6839 ldr r1, [r7, #0] + 8006b86: 6878 ldr r0, [r7, #4] + 8006b88: f000 f9dc bl 8006f44 + break; + 8006b8c: e022 b.n 8006bd4 + + case USB_REQ_SET_ADDRESS: + USBD_SetAddress(pdev, req); + 8006b8e: 6839 ldr r1, [r7, #0] + 8006b90: 6878 ldr r0, [r7, #4] + 8006b92: f000 fb51 bl 8007238 + break; + 8006b96: e01d b.n 8006bd4 + + case USB_REQ_SET_CONFIGURATION: + USBD_SetConfig(pdev, req); + 8006b98: 6839 ldr r1, [r7, #0] + 8006b9a: 6878 ldr r0, [r7, #4] + 8006b9c: f000 fb90 bl 80072c0 + break; + 8006ba0: e018 b.n 8006bd4 + + case USB_REQ_GET_CONFIGURATION: + USBD_GetConfig(pdev, req); + 8006ba2: 6839 ldr r1, [r7, #0] + 8006ba4: 6878 ldr r0, [r7, #4] + 8006ba6: f000 fc19 bl 80073dc + break; + 8006baa: e013 b.n 8006bd4 + + case USB_REQ_GET_STATUS: + USBD_GetStatus(pdev, req); + 8006bac: 6839 ldr r1, [r7, #0] + 8006bae: 6878 ldr r0, [r7, #4] + 8006bb0: f000 fc49 bl 8007446 + break; + 8006bb4: e00e b.n 8006bd4 + + case USB_REQ_SET_FEATURE: + USBD_SetFeature(pdev, req); + 8006bb6: 6839 ldr r1, [r7, #0] + 8006bb8: 6878 ldr r0, [r7, #4] + 8006bba: f000 fc77 bl 80074ac + break; + 8006bbe: e009 b.n 8006bd4 + + case USB_REQ_CLEAR_FEATURE: + USBD_ClrFeature(pdev, req); + 8006bc0: 6839 ldr r1, [r7, #0] + 8006bc2: 6878 ldr r0, [r7, #4] + 8006bc4: f000 fc86 bl 80074d4 + break; + 8006bc8: e004 b.n 8006bd4 + + default: + USBD_CtlError(pdev, req); + 8006bca: 6839 ldr r1, [r7, #0] + 8006bcc: 6878 ldr r0, [r7, #4] + 8006bce: f000 fcde bl 800758e + break; + 8006bd2: bf00 nop + } + break; + 8006bd4: e004 b.n 8006be0 + + default: + USBD_CtlError(pdev, req); + 8006bd6: 6839 ldr r1, [r7, #0] + 8006bd8: 6878 ldr r0, [r7, #4] + 8006bda: f000 fcd8 bl 800758e + break; + 8006bde: bf00 nop + } + + return ret; + 8006be0: 7bfb ldrb r3, [r7, #15] +} + 8006be2: 4618 mov r0, r3 + 8006be4: 3710 adds r7, #16 + 8006be6: 46bd mov sp, r7 + 8006be8: bd80 pop {r7, pc} + 8006bea: bf00 nop + +08006bec : +* @param req: usb request +* @retval status +*/ +USBD_StatusTypeDef USBD_StdItfReq(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 8006bec: b580 push {r7, lr} + 8006bee: b084 sub sp, #16 + 8006bf0: af00 add r7, sp, #0 + 8006bf2: 6078 str r0, [r7, #4] + 8006bf4: 6039 str r1, [r7, #0] + USBD_StatusTypeDef ret = USBD_OK; + 8006bf6: 2300 movs r3, #0 + 8006bf8: 73fb strb r3, [r7, #15] + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + 8006bfa: 683b ldr r3, [r7, #0] + 8006bfc: 781b ldrb r3, [r3, #0] + 8006bfe: f003 0360 and.w r3, r3, #96 ; 0x60 + 8006c02: 2b40 cmp r3, #64 ; 0x40 + 8006c04: d005 beq.n 8006c12 + 8006c06: 2b40 cmp r3, #64 ; 0x40 + 8006c08: d82e bhi.n 8006c68 + 8006c0a: 2b00 cmp r3, #0 + 8006c0c: d001 beq.n 8006c12 + 8006c0e: 2b20 cmp r3, #32 + 8006c10: d12a bne.n 8006c68 + { + case USB_REQ_TYPE_CLASS: + case USB_REQ_TYPE_VENDOR: + case USB_REQ_TYPE_STANDARD: + switch (pdev->dev_state) + 8006c12: 687b ldr r3, [r7, #4] + 8006c14: f893 329c ldrb.w r3, [r3, #668] ; 0x29c + 8006c18: 3b01 subs r3, #1 + 8006c1a: 2b02 cmp r3, #2 + 8006c1c: d81d bhi.n 8006c5a + { + case USBD_STATE_DEFAULT: + case USBD_STATE_ADDRESSED: + case USBD_STATE_CONFIGURED: + + if (LOBYTE(req->wIndex) <= USBD_MAX_NUM_INTERFACES) + 8006c1e: 683b ldr r3, [r7, #0] + 8006c20: 889b ldrh r3, [r3, #4] + 8006c22: b2db uxtb r3, r3 + 8006c24: 2b01 cmp r3, #1 + 8006c26: d813 bhi.n 8006c50 + { + ret = (USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req); + 8006c28: 687b ldr r3, [r7, #4] + 8006c2a: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 8006c2e: 689b ldr r3, [r3, #8] + 8006c30: 6839 ldr r1, [r7, #0] + 8006c32: 6878 ldr r0, [r7, #4] + 8006c34: 4798 blx r3 + 8006c36: 4603 mov r3, r0 + 8006c38: 73fb strb r3, [r7, #15] + + if ((req->wLength == 0U) && (ret == USBD_OK)) + 8006c3a: 683b ldr r3, [r7, #0] + 8006c3c: 88db ldrh r3, [r3, #6] + 8006c3e: 2b00 cmp r3, #0 + 8006c40: d110 bne.n 8006c64 + 8006c42: 7bfb ldrb r3, [r7, #15] + 8006c44: 2b00 cmp r3, #0 + 8006c46: d10d bne.n 8006c64 + { + USBD_CtlSendStatus(pdev); + 8006c48: 6878 ldr r0, [r7, #4] + 8006c4a: f000 fd68 bl 800771e + } + else + { + USBD_CtlError(pdev, req); + } + break; + 8006c4e: e009 b.n 8006c64 + USBD_CtlError(pdev, req); + 8006c50: 6839 ldr r1, [r7, #0] + 8006c52: 6878 ldr r0, [r7, #4] + 8006c54: f000 fc9b bl 800758e + break; + 8006c58: e004 b.n 8006c64 + + default: + USBD_CtlError(pdev, req); + 8006c5a: 6839 ldr r1, [r7, #0] + 8006c5c: 6878 ldr r0, [r7, #4] + 8006c5e: f000 fc96 bl 800758e + break; + 8006c62: e000 b.n 8006c66 + break; + 8006c64: bf00 nop + } + break; + 8006c66: e004 b.n 8006c72 + + default: + USBD_CtlError(pdev, req); + 8006c68: 6839 ldr r1, [r7, #0] + 8006c6a: 6878 ldr r0, [r7, #4] + 8006c6c: f000 fc8f bl 800758e + break; + 8006c70: bf00 nop + } + + return USBD_OK; + 8006c72: 2300 movs r3, #0 +} + 8006c74: 4618 mov r0, r3 + 8006c76: 3710 adds r7, #16 + 8006c78: 46bd mov sp, r7 + 8006c7a: bd80 pop {r7, pc} + +08006c7c : +* @param req: usb request +* @retval status +*/ +USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 8006c7c: b580 push {r7, lr} + 8006c7e: b084 sub sp, #16 + 8006c80: af00 add r7, sp, #0 + 8006c82: 6078 str r0, [r7, #4] + 8006c84: 6039 str r1, [r7, #0] + USBD_EndpointTypeDef *pep; + uint8_t ep_addr; + USBD_StatusTypeDef ret = USBD_OK; + 8006c86: 2300 movs r3, #0 + 8006c88: 73fb strb r3, [r7, #15] + ep_addr = LOBYTE(req->wIndex); + 8006c8a: 683b ldr r3, [r7, #0] + 8006c8c: 889b ldrh r3, [r3, #4] + 8006c8e: 73bb strb r3, [r7, #14] + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + 8006c90: 683b ldr r3, [r7, #0] + 8006c92: 781b ldrb r3, [r3, #0] + 8006c94: f003 0360 and.w r3, r3, #96 ; 0x60 + 8006c98: 2b40 cmp r3, #64 ; 0x40 + 8006c9a: d007 beq.n 8006cac + 8006c9c: 2b40 cmp r3, #64 ; 0x40 + 8006c9e: f200 8146 bhi.w 8006f2e + 8006ca2: 2b00 cmp r3, #0 + 8006ca4: d00a beq.n 8006cbc + 8006ca6: 2b20 cmp r3, #32 + 8006ca8: f040 8141 bne.w 8006f2e + { + case USB_REQ_TYPE_CLASS: + case USB_REQ_TYPE_VENDOR: + pdev->pClass->Setup(pdev, req); + 8006cac: 687b ldr r3, [r7, #4] + 8006cae: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 8006cb2: 689b ldr r3, [r3, #8] + 8006cb4: 6839 ldr r1, [r7, #0] + 8006cb6: 6878 ldr r0, [r7, #4] + 8006cb8: 4798 blx r3 + break; + 8006cba: e13d b.n 8006f38 + + case USB_REQ_TYPE_STANDARD: + /* Check if it is a class request */ + if ((req->bmRequest & 0x60U) == 0x20U) + 8006cbc: 683b ldr r3, [r7, #0] + 8006cbe: 781b ldrb r3, [r3, #0] + 8006cc0: f003 0360 and.w r3, r3, #96 ; 0x60 + 8006cc4: 2b20 cmp r3, #32 + 8006cc6: d10a bne.n 8006cde + { + ret = (USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req); + 8006cc8: 687b ldr r3, [r7, #4] + 8006cca: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 8006cce: 689b ldr r3, [r3, #8] + 8006cd0: 6839 ldr r1, [r7, #0] + 8006cd2: 6878 ldr r0, [r7, #4] + 8006cd4: 4798 blx r3 + 8006cd6: 4603 mov r3, r0 + 8006cd8: 73fb strb r3, [r7, #15] + + return ret; + 8006cda: 7bfb ldrb r3, [r7, #15] + 8006cdc: e12d b.n 8006f3a + } + + switch (req->bRequest) + 8006cde: 683b ldr r3, [r7, #0] + 8006ce0: 785b ldrb r3, [r3, #1] + 8006ce2: 2b03 cmp r3, #3 + 8006ce4: d007 beq.n 8006cf6 + 8006ce6: 2b03 cmp r3, #3 + 8006ce8: f300 811b bgt.w 8006f22 + 8006cec: 2b00 cmp r3, #0 + 8006cee: d072 beq.n 8006dd6 + 8006cf0: 2b01 cmp r3, #1 + 8006cf2: d03a beq.n 8006d6a + 8006cf4: e115 b.n 8006f22 + { + case USB_REQ_SET_FEATURE: + switch (pdev->dev_state) + 8006cf6: 687b ldr r3, [r7, #4] + 8006cf8: f893 329c ldrb.w r3, [r3, #668] ; 0x29c + 8006cfc: 2b02 cmp r3, #2 + 8006cfe: d002 beq.n 8006d06 + 8006d00: 2b03 cmp r3, #3 + 8006d02: d015 beq.n 8006d30 + 8006d04: e02b b.n 8006d5e + { + case USBD_STATE_ADDRESSED: + if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) + 8006d06: 7bbb ldrb r3, [r7, #14] + 8006d08: 2b00 cmp r3, #0 + 8006d0a: d00c beq.n 8006d26 + 8006d0c: 7bbb ldrb r3, [r7, #14] + 8006d0e: 2b80 cmp r3, #128 ; 0x80 + 8006d10: d009 beq.n 8006d26 + { + USBD_LL_StallEP(pdev, ep_addr); + 8006d12: 7bbb ldrb r3, [r7, #14] + 8006d14: 4619 mov r1, r3 + 8006d16: 6878 ldr r0, [r7, #4] + 8006d18: f001 f804 bl 8007d24 + USBD_LL_StallEP(pdev, 0x80U); + 8006d1c: 2180 movs r1, #128 ; 0x80 + 8006d1e: 6878 ldr r0, [r7, #4] + 8006d20: f001 f800 bl 8007d24 + } + else + { + USBD_CtlError(pdev, req); + } + break; + 8006d24: e020 b.n 8006d68 + USBD_CtlError(pdev, req); + 8006d26: 6839 ldr r1, [r7, #0] + 8006d28: 6878 ldr r0, [r7, #4] + 8006d2a: f000 fc30 bl 800758e + break; + 8006d2e: e01b b.n 8006d68 + + case USBD_STATE_CONFIGURED: + if (req->wValue == USB_FEATURE_EP_HALT) + 8006d30: 683b ldr r3, [r7, #0] + 8006d32: 885b ldrh r3, [r3, #2] + 8006d34: 2b00 cmp r3, #0 + 8006d36: d10e bne.n 8006d56 + { + if ((ep_addr != 0x00U) && + 8006d38: 7bbb ldrb r3, [r7, #14] + 8006d3a: 2b00 cmp r3, #0 + 8006d3c: d00b beq.n 8006d56 + 8006d3e: 7bbb ldrb r3, [r7, #14] + 8006d40: 2b80 cmp r3, #128 ; 0x80 + 8006d42: d008 beq.n 8006d56 + (ep_addr != 0x80U) && (req->wLength == 0x00U)) + 8006d44: 683b ldr r3, [r7, #0] + 8006d46: 88db ldrh r3, [r3, #6] + 8006d48: 2b00 cmp r3, #0 + 8006d4a: d104 bne.n 8006d56 + { + USBD_LL_StallEP(pdev, ep_addr); + 8006d4c: 7bbb ldrb r3, [r7, #14] + 8006d4e: 4619 mov r1, r3 + 8006d50: 6878 ldr r0, [r7, #4] + 8006d52: f000 ffe7 bl 8007d24 + } + } + USBD_CtlSendStatus(pdev); + 8006d56: 6878 ldr r0, [r7, #4] + 8006d58: f000 fce1 bl 800771e + + break; + 8006d5c: e004 b.n 8006d68 + + default: + USBD_CtlError(pdev, req); + 8006d5e: 6839 ldr r1, [r7, #0] + 8006d60: 6878 ldr r0, [r7, #4] + 8006d62: f000 fc14 bl 800758e + break; + 8006d66: bf00 nop + } + break; + 8006d68: e0e0 b.n 8006f2c + + case USB_REQ_CLEAR_FEATURE: + + switch (pdev->dev_state) + 8006d6a: 687b ldr r3, [r7, #4] + 8006d6c: f893 329c ldrb.w r3, [r3, #668] ; 0x29c + 8006d70: 2b02 cmp r3, #2 + 8006d72: d002 beq.n 8006d7a + 8006d74: 2b03 cmp r3, #3 + 8006d76: d015 beq.n 8006da4 + 8006d78: e026 b.n 8006dc8 + { + case USBD_STATE_ADDRESSED: + if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) + 8006d7a: 7bbb ldrb r3, [r7, #14] + 8006d7c: 2b00 cmp r3, #0 + 8006d7e: d00c beq.n 8006d9a + 8006d80: 7bbb ldrb r3, [r7, #14] + 8006d82: 2b80 cmp r3, #128 ; 0x80 + 8006d84: d009 beq.n 8006d9a + { + USBD_LL_StallEP(pdev, ep_addr); + 8006d86: 7bbb ldrb r3, [r7, #14] + 8006d88: 4619 mov r1, r3 + 8006d8a: 6878 ldr r0, [r7, #4] + 8006d8c: f000 ffca bl 8007d24 + USBD_LL_StallEP(pdev, 0x80U); + 8006d90: 2180 movs r1, #128 ; 0x80 + 8006d92: 6878 ldr r0, [r7, #4] + 8006d94: f000 ffc6 bl 8007d24 + } + else + { + USBD_CtlError(pdev, req); + } + break; + 8006d98: e01c b.n 8006dd4 + USBD_CtlError(pdev, req); + 8006d9a: 6839 ldr r1, [r7, #0] + 8006d9c: 6878 ldr r0, [r7, #4] + 8006d9e: f000 fbf6 bl 800758e + break; + 8006da2: e017 b.n 8006dd4 + + case USBD_STATE_CONFIGURED: + if (req->wValue == USB_FEATURE_EP_HALT) + 8006da4: 683b ldr r3, [r7, #0] + 8006da6: 885b ldrh r3, [r3, #2] + 8006da8: 2b00 cmp r3, #0 + 8006daa: d112 bne.n 8006dd2 + { + if ((ep_addr & 0x7FU) != 0x00U) + 8006dac: 7bbb ldrb r3, [r7, #14] + 8006dae: f003 037f and.w r3, r3, #127 ; 0x7f + 8006db2: 2b00 cmp r3, #0 + 8006db4: d004 beq.n 8006dc0 + { + USBD_LL_ClearStallEP(pdev, ep_addr); + 8006db6: 7bbb ldrb r3, [r7, #14] + 8006db8: 4619 mov r1, r3 + 8006dba: 6878 ldr r0, [r7, #4] + 8006dbc: f000 ffd1 bl 8007d62 + } + USBD_CtlSendStatus(pdev); + 8006dc0: 6878 ldr r0, [r7, #4] + 8006dc2: f000 fcac bl 800771e + } + break; + 8006dc6: e004 b.n 8006dd2 + + default: + USBD_CtlError(pdev, req); + 8006dc8: 6839 ldr r1, [r7, #0] + 8006dca: 6878 ldr r0, [r7, #4] + 8006dcc: f000 fbdf bl 800758e + break; + 8006dd0: e000 b.n 8006dd4 + break; + 8006dd2: bf00 nop + } + break; + 8006dd4: e0aa b.n 8006f2c + + case USB_REQ_GET_STATUS: + switch (pdev->dev_state) + 8006dd6: 687b ldr r3, [r7, #4] + 8006dd8: f893 329c ldrb.w r3, [r3, #668] ; 0x29c + 8006ddc: 2b02 cmp r3, #2 + 8006dde: d002 beq.n 8006de6 + 8006de0: 2b03 cmp r3, #3 + 8006de2: d032 beq.n 8006e4a + 8006de4: e097 b.n 8006f16 + { + case USBD_STATE_ADDRESSED: + if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) + 8006de6: 7bbb ldrb r3, [r7, #14] + 8006de8: 2b00 cmp r3, #0 + 8006dea: d007 beq.n 8006dfc + 8006dec: 7bbb ldrb r3, [r7, #14] + 8006dee: 2b80 cmp r3, #128 ; 0x80 + 8006df0: d004 beq.n 8006dfc + { + USBD_CtlError(pdev, req); + 8006df2: 6839 ldr r1, [r7, #0] + 8006df4: 6878 ldr r0, [r7, #4] + 8006df6: f000 fbca bl 800758e + break; + 8006dfa: e091 b.n 8006f20 + } + pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ + 8006dfc: f997 300e ldrsb.w r3, [r7, #14] + 8006e00: 2b00 cmp r3, #0 + 8006e02: da0b bge.n 8006e1c + 8006e04: 7bbb ldrb r3, [r7, #14] + 8006e06: f003 027f and.w r2, r3, #127 ; 0x7f + 8006e0a: 4613 mov r3, r2 + 8006e0c: 009b lsls r3, r3, #2 + 8006e0e: 4413 add r3, r2 + 8006e10: 009b lsls r3, r3, #2 + 8006e12: 3310 adds r3, #16 + 8006e14: 687a ldr r2, [r7, #4] + 8006e16: 4413 add r3, r2 + 8006e18: 3304 adds r3, #4 + 8006e1a: e00b b.n 8006e34 + &pdev->ep_out[ep_addr & 0x7FU]; + 8006e1c: 7bbb ldrb r3, [r7, #14] + 8006e1e: f003 027f and.w r2, r3, #127 ; 0x7f + pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ + 8006e22: 4613 mov r3, r2 + 8006e24: 009b lsls r3, r3, #2 + 8006e26: 4413 add r3, r2 + 8006e28: 009b lsls r3, r3, #2 + 8006e2a: f503 73a8 add.w r3, r3, #336 ; 0x150 + 8006e2e: 687a ldr r2, [r7, #4] + 8006e30: 4413 add r3, r2 + 8006e32: 3304 adds r3, #4 + 8006e34: 60bb str r3, [r7, #8] + + pep->status = 0x0000U; + 8006e36: 68bb ldr r3, [r7, #8] + 8006e38: 2200 movs r2, #0 + 8006e3a: 601a str r2, [r3, #0] + + USBD_CtlSendData(pdev, (uint8_t *)(void *)&pep->status, 2U); + 8006e3c: 68bb ldr r3, [r7, #8] + 8006e3e: 2202 movs r2, #2 + 8006e40: 4619 mov r1, r3 + 8006e42: 6878 ldr r0, [r7, #4] + 8006e44: f000 fc0d bl 8007662 + break; + 8006e48: e06a b.n 8006f20 + + case USBD_STATE_CONFIGURED: + if ((ep_addr & 0x80U) == 0x80U) + 8006e4a: f997 300e ldrsb.w r3, [r7, #14] + 8006e4e: 2b00 cmp r3, #0 + 8006e50: da11 bge.n 8006e76 + { + if (pdev->ep_in[ep_addr & 0xFU].is_used == 0U) + 8006e52: 7bbb ldrb r3, [r7, #14] + 8006e54: f003 020f and.w r2, r3, #15 + 8006e58: 6879 ldr r1, [r7, #4] + 8006e5a: 4613 mov r3, r2 + 8006e5c: 009b lsls r3, r3, #2 + 8006e5e: 4413 add r3, r2 + 8006e60: 009b lsls r3, r3, #2 + 8006e62: 440b add r3, r1 + 8006e64: 3318 adds r3, #24 + 8006e66: 681b ldr r3, [r3, #0] + 8006e68: 2b00 cmp r3, #0 + 8006e6a: d117 bne.n 8006e9c + { + USBD_CtlError(pdev, req); + 8006e6c: 6839 ldr r1, [r7, #0] + 8006e6e: 6878 ldr r0, [r7, #4] + 8006e70: f000 fb8d bl 800758e + break; + 8006e74: e054 b.n 8006f20 + } + } + else + { + if (pdev->ep_out[ep_addr & 0xFU].is_used == 0U) + 8006e76: 7bbb ldrb r3, [r7, #14] + 8006e78: f003 020f and.w r2, r3, #15 + 8006e7c: 6879 ldr r1, [r7, #4] + 8006e7e: 4613 mov r3, r2 + 8006e80: 009b lsls r3, r3, #2 + 8006e82: 4413 add r3, r2 + 8006e84: 009b lsls r3, r3, #2 + 8006e86: 440b add r3, r1 + 8006e88: f503 73ac add.w r3, r3, #344 ; 0x158 + 8006e8c: 681b ldr r3, [r3, #0] + 8006e8e: 2b00 cmp r3, #0 + 8006e90: d104 bne.n 8006e9c + { + USBD_CtlError(pdev, req); + 8006e92: 6839 ldr r1, [r7, #0] + 8006e94: 6878 ldr r0, [r7, #4] + 8006e96: f000 fb7a bl 800758e + break; + 8006e9a: e041 b.n 8006f20 + } + } + + pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ + 8006e9c: f997 300e ldrsb.w r3, [r7, #14] + 8006ea0: 2b00 cmp r3, #0 + 8006ea2: da0b bge.n 8006ebc + 8006ea4: 7bbb ldrb r3, [r7, #14] + 8006ea6: f003 027f and.w r2, r3, #127 ; 0x7f + 8006eaa: 4613 mov r3, r2 + 8006eac: 009b lsls r3, r3, #2 + 8006eae: 4413 add r3, r2 + 8006eb0: 009b lsls r3, r3, #2 + 8006eb2: 3310 adds r3, #16 + 8006eb4: 687a ldr r2, [r7, #4] + 8006eb6: 4413 add r3, r2 + 8006eb8: 3304 adds r3, #4 + 8006eba: e00b b.n 8006ed4 + &pdev->ep_out[ep_addr & 0x7FU]; + 8006ebc: 7bbb ldrb r3, [r7, #14] + 8006ebe: f003 027f and.w r2, r3, #127 ; 0x7f + pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ + 8006ec2: 4613 mov r3, r2 + 8006ec4: 009b lsls r3, r3, #2 + 8006ec6: 4413 add r3, r2 + 8006ec8: 009b lsls r3, r3, #2 + 8006eca: f503 73a8 add.w r3, r3, #336 ; 0x150 + 8006ece: 687a ldr r2, [r7, #4] + 8006ed0: 4413 add r3, r2 + 8006ed2: 3304 adds r3, #4 + 8006ed4: 60bb str r3, [r7, #8] + + if ((ep_addr == 0x00U) || (ep_addr == 0x80U)) + 8006ed6: 7bbb ldrb r3, [r7, #14] + 8006ed8: 2b00 cmp r3, #0 + 8006eda: d002 beq.n 8006ee2 + 8006edc: 7bbb ldrb r3, [r7, #14] + 8006ede: 2b80 cmp r3, #128 ; 0x80 + 8006ee0: d103 bne.n 8006eea + { + pep->status = 0x0000U; + 8006ee2: 68bb ldr r3, [r7, #8] + 8006ee4: 2200 movs r2, #0 + 8006ee6: 601a str r2, [r3, #0] + 8006ee8: e00e b.n 8006f08 + } + else if (USBD_LL_IsStallEP(pdev, ep_addr)) + 8006eea: 7bbb ldrb r3, [r7, #14] + 8006eec: 4619 mov r1, r3 + 8006eee: 6878 ldr r0, [r7, #4] + 8006ef0: f000 ff56 bl 8007da0 + 8006ef4: 4603 mov r3, r0 + 8006ef6: 2b00 cmp r3, #0 + 8006ef8: d003 beq.n 8006f02 + { + pep->status = 0x0001U; + 8006efa: 68bb ldr r3, [r7, #8] + 8006efc: 2201 movs r2, #1 + 8006efe: 601a str r2, [r3, #0] + 8006f00: e002 b.n 8006f08 + } + else + { + pep->status = 0x0000U; + 8006f02: 68bb ldr r3, [r7, #8] + 8006f04: 2200 movs r2, #0 + 8006f06: 601a str r2, [r3, #0] + } + + USBD_CtlSendData(pdev, (uint8_t *)(void *)&pep->status, 2U); + 8006f08: 68bb ldr r3, [r7, #8] + 8006f0a: 2202 movs r2, #2 + 8006f0c: 4619 mov r1, r3 + 8006f0e: 6878 ldr r0, [r7, #4] + 8006f10: f000 fba7 bl 8007662 + break; + 8006f14: e004 b.n 8006f20 + + default: + USBD_CtlError(pdev, req); + 8006f16: 6839 ldr r1, [r7, #0] + 8006f18: 6878 ldr r0, [r7, #4] + 8006f1a: f000 fb38 bl 800758e + break; + 8006f1e: bf00 nop + } + break; + 8006f20: e004 b.n 8006f2c + + default: + USBD_CtlError(pdev, req); + 8006f22: 6839 ldr r1, [r7, #0] + 8006f24: 6878 ldr r0, [r7, #4] + 8006f26: f000 fb32 bl 800758e + break; + 8006f2a: bf00 nop + } + break; + 8006f2c: e004 b.n 8006f38 + + default: + USBD_CtlError(pdev, req); + 8006f2e: 6839 ldr r1, [r7, #0] + 8006f30: 6878 ldr r0, [r7, #4] + 8006f32: f000 fb2c bl 800758e + break; + 8006f36: bf00 nop + } + + return ret; + 8006f38: 7bfb ldrb r3, [r7, #15] +} + 8006f3a: 4618 mov r0, r3 + 8006f3c: 3710 adds r7, #16 + 8006f3e: 46bd mov sp, r7 + 8006f40: bd80 pop {r7, pc} + ... + +08006f44 : +* @param req: usb request +* @retval status +*/ +static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 8006f44: b580 push {r7, lr} + 8006f46: b084 sub sp, #16 + 8006f48: af00 add r7, sp, #0 + 8006f4a: 6078 str r0, [r7, #4] + 8006f4c: 6039 str r1, [r7, #0] + uint16_t len = 0U; + 8006f4e: 2300 movs r3, #0 + 8006f50: 813b strh r3, [r7, #8] + uint8_t *pbuf = NULL; + 8006f52: 2300 movs r3, #0 + 8006f54: 60fb str r3, [r7, #12] + uint8_t err = 0U; + 8006f56: 2300 movs r3, #0 + 8006f58: 72fb strb r3, [r7, #11] + + switch (req->wValue >> 8) + 8006f5a: 683b ldr r3, [r7, #0] + 8006f5c: 885b ldrh r3, [r3, #2] + 8006f5e: 0a1b lsrs r3, r3, #8 + 8006f60: b29b uxth r3, r3 + 8006f62: 3b01 subs r3, #1 + 8006f64: 2b06 cmp r3, #6 + 8006f66: f200 813b bhi.w 80071e0 + 8006f6a: a201 add r2, pc, #4 ; (adr r2, 8006f70 ) + 8006f6c: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8006f70: 08006f8d .word 0x08006f8d + 8006f74: 08006fa5 .word 0x08006fa5 + 8006f78: 08006fe5 .word 0x08006fe5 + 8006f7c: 080071e1 .word 0x080071e1 + 8006f80: 080071e1 .word 0x080071e1 + 8006f84: 08007181 .word 0x08007181 + 8006f88: 080071ad .word 0x080071ad + err++; + } + break; +#endif + case USB_DESC_TYPE_DEVICE: + pbuf = pdev->pDesc->GetDeviceDescriptor(pdev->dev_speed, &len); + 8006f8c: 687b ldr r3, [r7, #4] + 8006f8e: f8d3 32b0 ldr.w r3, [r3, #688] ; 0x2b0 + 8006f92: 681b ldr r3, [r3, #0] + 8006f94: 687a ldr r2, [r7, #4] + 8006f96: 7c12 ldrb r2, [r2, #16] + 8006f98: f107 0108 add.w r1, r7, #8 + 8006f9c: 4610 mov r0, r2 + 8006f9e: 4798 blx r3 + 8006fa0: 60f8 str r0, [r7, #12] + break; + 8006fa2: e125 b.n 80071f0 + + case USB_DESC_TYPE_CONFIGURATION: + if (pdev->dev_speed == USBD_SPEED_HIGH) + 8006fa4: 687b ldr r3, [r7, #4] + 8006fa6: 7c1b ldrb r3, [r3, #16] + 8006fa8: 2b00 cmp r3, #0 + 8006faa: d10d bne.n 8006fc8 + { + pbuf = pdev->pClass->GetHSConfigDescriptor(&len); + 8006fac: 687b ldr r3, [r7, #4] + 8006fae: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 8006fb2: 6a9b ldr r3, [r3, #40] ; 0x28 + 8006fb4: f107 0208 add.w r2, r7, #8 + 8006fb8: 4610 mov r0, r2 + 8006fba: 4798 blx r3 + 8006fbc: 60f8 str r0, [r7, #12] + pbuf[1] = USB_DESC_TYPE_CONFIGURATION; + 8006fbe: 68fb ldr r3, [r7, #12] + 8006fc0: 3301 adds r3, #1 + 8006fc2: 2202 movs r2, #2 + 8006fc4: 701a strb r2, [r3, #0] + else + { + pbuf = pdev->pClass->GetFSConfigDescriptor(&len); + pbuf[1] = USB_DESC_TYPE_CONFIGURATION; + } + break; + 8006fc6: e113 b.n 80071f0 + pbuf = pdev->pClass->GetFSConfigDescriptor(&len); + 8006fc8: 687b ldr r3, [r7, #4] + 8006fca: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 8006fce: 6adb ldr r3, [r3, #44] ; 0x2c + 8006fd0: f107 0208 add.w r2, r7, #8 + 8006fd4: 4610 mov r0, r2 + 8006fd6: 4798 blx r3 + 8006fd8: 60f8 str r0, [r7, #12] + pbuf[1] = USB_DESC_TYPE_CONFIGURATION; + 8006fda: 68fb ldr r3, [r7, #12] + 8006fdc: 3301 adds r3, #1 + 8006fde: 2202 movs r2, #2 + 8006fe0: 701a strb r2, [r3, #0] + break; + 8006fe2: e105 b.n 80071f0 + + case USB_DESC_TYPE_STRING: + switch ((uint8_t)(req->wValue)) + 8006fe4: 683b ldr r3, [r7, #0] + 8006fe6: 885b ldrh r3, [r3, #2] + 8006fe8: b2db uxtb r3, r3 + 8006fea: 2b05 cmp r3, #5 + 8006fec: f200 80ac bhi.w 8007148 + 8006ff0: a201 add r2, pc, #4 ; (adr r2, 8006ff8 ) + 8006ff2: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8006ff6: bf00 nop + 8006ff8: 08007011 .word 0x08007011 + 8006ffc: 08007045 .word 0x08007045 + 8007000: 08007079 .word 0x08007079 + 8007004: 080070ad .word 0x080070ad + 8007008: 080070e1 .word 0x080070e1 + 800700c: 08007115 .word 0x08007115 + { + case USBD_IDX_LANGID_STR: + if (pdev->pDesc->GetLangIDStrDescriptor != NULL) + 8007010: 687b ldr r3, [r7, #4] + 8007012: f8d3 32b0 ldr.w r3, [r3, #688] ; 0x2b0 + 8007016: 685b ldr r3, [r3, #4] + 8007018: 2b00 cmp r3, #0 + 800701a: d00b beq.n 8007034 + { + pbuf = pdev->pDesc->GetLangIDStrDescriptor(pdev->dev_speed, &len); + 800701c: 687b ldr r3, [r7, #4] + 800701e: f8d3 32b0 ldr.w r3, [r3, #688] ; 0x2b0 + 8007022: 685b ldr r3, [r3, #4] + 8007024: 687a ldr r2, [r7, #4] + 8007026: 7c12 ldrb r2, [r2, #16] + 8007028: f107 0108 add.w r1, r7, #8 + 800702c: 4610 mov r0, r2 + 800702e: 4798 blx r3 + 8007030: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 8007032: e0a4 b.n 800717e + USBD_CtlError(pdev, req); + 8007034: 6839 ldr r1, [r7, #0] + 8007036: 6878 ldr r0, [r7, #4] + 8007038: f000 faa9 bl 800758e + err++; + 800703c: 7afb ldrb r3, [r7, #11] + 800703e: 3301 adds r3, #1 + 8007040: 72fb strb r3, [r7, #11] + break; + 8007042: e09c b.n 800717e + + case USBD_IDX_MFC_STR: + if (pdev->pDesc->GetManufacturerStrDescriptor != NULL) + 8007044: 687b ldr r3, [r7, #4] + 8007046: f8d3 32b0 ldr.w r3, [r3, #688] ; 0x2b0 + 800704a: 689b ldr r3, [r3, #8] + 800704c: 2b00 cmp r3, #0 + 800704e: d00b beq.n 8007068 + { + pbuf = pdev->pDesc->GetManufacturerStrDescriptor(pdev->dev_speed, &len); + 8007050: 687b ldr r3, [r7, #4] + 8007052: f8d3 32b0 ldr.w r3, [r3, #688] ; 0x2b0 + 8007056: 689b ldr r3, [r3, #8] + 8007058: 687a ldr r2, [r7, #4] + 800705a: 7c12 ldrb r2, [r2, #16] + 800705c: f107 0108 add.w r1, r7, #8 + 8007060: 4610 mov r0, r2 + 8007062: 4798 blx r3 + 8007064: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 8007066: e08a b.n 800717e + USBD_CtlError(pdev, req); + 8007068: 6839 ldr r1, [r7, #0] + 800706a: 6878 ldr r0, [r7, #4] + 800706c: f000 fa8f bl 800758e + err++; + 8007070: 7afb ldrb r3, [r7, #11] + 8007072: 3301 adds r3, #1 + 8007074: 72fb strb r3, [r7, #11] + break; + 8007076: e082 b.n 800717e + + case USBD_IDX_PRODUCT_STR: + if (pdev->pDesc->GetProductStrDescriptor != NULL) + 8007078: 687b ldr r3, [r7, #4] + 800707a: f8d3 32b0 ldr.w r3, [r3, #688] ; 0x2b0 + 800707e: 68db ldr r3, [r3, #12] + 8007080: 2b00 cmp r3, #0 + 8007082: d00b beq.n 800709c + { + pbuf = pdev->pDesc->GetProductStrDescriptor(pdev->dev_speed, &len); + 8007084: 687b ldr r3, [r7, #4] + 8007086: f8d3 32b0 ldr.w r3, [r3, #688] ; 0x2b0 + 800708a: 68db ldr r3, [r3, #12] + 800708c: 687a ldr r2, [r7, #4] + 800708e: 7c12 ldrb r2, [r2, #16] + 8007090: f107 0108 add.w r1, r7, #8 + 8007094: 4610 mov r0, r2 + 8007096: 4798 blx r3 + 8007098: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 800709a: e070 b.n 800717e + USBD_CtlError(pdev, req); + 800709c: 6839 ldr r1, [r7, #0] + 800709e: 6878 ldr r0, [r7, #4] + 80070a0: f000 fa75 bl 800758e + err++; + 80070a4: 7afb ldrb r3, [r7, #11] + 80070a6: 3301 adds r3, #1 + 80070a8: 72fb strb r3, [r7, #11] + break; + 80070aa: e068 b.n 800717e + + case USBD_IDX_SERIAL_STR: + if (pdev->pDesc->GetSerialStrDescriptor != NULL) + 80070ac: 687b ldr r3, [r7, #4] + 80070ae: f8d3 32b0 ldr.w r3, [r3, #688] ; 0x2b0 + 80070b2: 691b ldr r3, [r3, #16] + 80070b4: 2b00 cmp r3, #0 + 80070b6: d00b beq.n 80070d0 + { + pbuf = pdev->pDesc->GetSerialStrDescriptor(pdev->dev_speed, &len); + 80070b8: 687b ldr r3, [r7, #4] + 80070ba: f8d3 32b0 ldr.w r3, [r3, #688] ; 0x2b0 + 80070be: 691b ldr r3, [r3, #16] + 80070c0: 687a ldr r2, [r7, #4] + 80070c2: 7c12 ldrb r2, [r2, #16] + 80070c4: f107 0108 add.w r1, r7, #8 + 80070c8: 4610 mov r0, r2 + 80070ca: 4798 blx r3 + 80070cc: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 80070ce: e056 b.n 800717e + USBD_CtlError(pdev, req); + 80070d0: 6839 ldr r1, [r7, #0] + 80070d2: 6878 ldr r0, [r7, #4] + 80070d4: f000 fa5b bl 800758e + err++; + 80070d8: 7afb ldrb r3, [r7, #11] + 80070da: 3301 adds r3, #1 + 80070dc: 72fb strb r3, [r7, #11] + break; + 80070de: e04e b.n 800717e + + case USBD_IDX_CONFIG_STR: + if (pdev->pDesc->GetConfigurationStrDescriptor != NULL) + 80070e0: 687b ldr r3, [r7, #4] + 80070e2: f8d3 32b0 ldr.w r3, [r3, #688] ; 0x2b0 + 80070e6: 695b ldr r3, [r3, #20] + 80070e8: 2b00 cmp r3, #0 + 80070ea: d00b beq.n 8007104 + { + pbuf = pdev->pDesc->GetConfigurationStrDescriptor(pdev->dev_speed, &len); + 80070ec: 687b ldr r3, [r7, #4] + 80070ee: f8d3 32b0 ldr.w r3, [r3, #688] ; 0x2b0 + 80070f2: 695b ldr r3, [r3, #20] + 80070f4: 687a ldr r2, [r7, #4] + 80070f6: 7c12 ldrb r2, [r2, #16] + 80070f8: f107 0108 add.w r1, r7, #8 + 80070fc: 4610 mov r0, r2 + 80070fe: 4798 blx r3 + 8007100: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 8007102: e03c b.n 800717e + USBD_CtlError(pdev, req); + 8007104: 6839 ldr r1, [r7, #0] + 8007106: 6878 ldr r0, [r7, #4] + 8007108: f000 fa41 bl 800758e + err++; + 800710c: 7afb ldrb r3, [r7, #11] + 800710e: 3301 adds r3, #1 + 8007110: 72fb strb r3, [r7, #11] + break; + 8007112: e034 b.n 800717e + + case USBD_IDX_INTERFACE_STR: + if (pdev->pDesc->GetInterfaceStrDescriptor != NULL) + 8007114: 687b ldr r3, [r7, #4] + 8007116: f8d3 32b0 ldr.w r3, [r3, #688] ; 0x2b0 + 800711a: 699b ldr r3, [r3, #24] + 800711c: 2b00 cmp r3, #0 + 800711e: d00b beq.n 8007138 + { + pbuf = pdev->pDesc->GetInterfaceStrDescriptor(pdev->dev_speed, &len); + 8007120: 687b ldr r3, [r7, #4] + 8007122: f8d3 32b0 ldr.w r3, [r3, #688] ; 0x2b0 + 8007126: 699b ldr r3, [r3, #24] + 8007128: 687a ldr r2, [r7, #4] + 800712a: 7c12 ldrb r2, [r2, #16] + 800712c: f107 0108 add.w r1, r7, #8 + 8007130: 4610 mov r0, r2 + 8007132: 4798 blx r3 + 8007134: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 8007136: e022 b.n 800717e + USBD_CtlError(pdev, req); + 8007138: 6839 ldr r1, [r7, #0] + 800713a: 6878 ldr r0, [r7, #4] + 800713c: f000 fa27 bl 800758e + err++; + 8007140: 7afb ldrb r3, [r7, #11] + 8007142: 3301 adds r3, #1 + 8007144: 72fb strb r3, [r7, #11] + break; + 8007146: e01a b.n 800717e + + default: +#if (USBD_SUPPORT_USER_STRING_DESC == 1U) + if (pdev->pClass->GetUsrStrDescriptor != NULL) + 8007148: 687b ldr r3, [r7, #4] + 800714a: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 800714e: 6b9b ldr r3, [r3, #56] ; 0x38 + 8007150: 2b00 cmp r3, #0 + 8007152: d00c beq.n 800716e + { + pbuf = pdev->pClass->GetUsrStrDescriptor(pdev, (req->wValue), &len); + 8007154: 687b ldr r3, [r7, #4] + 8007156: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 800715a: 6b9b ldr r3, [r3, #56] ; 0x38 + 800715c: 683a ldr r2, [r7, #0] + 800715e: 8852 ldrh r2, [r2, #2] + 8007160: b2d1 uxtb r1, r2 + 8007162: f107 0208 add.w r2, r7, #8 + 8007166: 6878 ldr r0, [r7, #4] + 8007168: 4798 blx r3 + 800716a: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 800716c: e006 b.n 800717c + USBD_CtlError(pdev, req); + 800716e: 6839 ldr r1, [r7, #0] + 8007170: 6878 ldr r0, [r7, #4] + 8007172: f000 fa0c bl 800758e + err++; + 8007176: 7afb ldrb r3, [r7, #11] + 8007178: 3301 adds r3, #1 + 800717a: 72fb strb r3, [r7, #11] + break; + 800717c: bf00 nop +#else + USBD_CtlError(pdev, req); + err++; +#endif + } + break; + 800717e: e037 b.n 80071f0 + + case USB_DESC_TYPE_DEVICE_QUALIFIER: + if (pdev->dev_speed == USBD_SPEED_HIGH) + 8007180: 687b ldr r3, [r7, #4] + 8007182: 7c1b ldrb r3, [r3, #16] + 8007184: 2b00 cmp r3, #0 + 8007186: d109 bne.n 800719c + { + pbuf = pdev->pClass->GetDeviceQualifierDescriptor(&len); + 8007188: 687b ldr r3, [r7, #4] + 800718a: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 800718e: 6b5b ldr r3, [r3, #52] ; 0x34 + 8007190: f107 0208 add.w r2, r7, #8 + 8007194: 4610 mov r0, r2 + 8007196: 4798 blx r3 + 8007198: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 800719a: e029 b.n 80071f0 + USBD_CtlError(pdev, req); + 800719c: 6839 ldr r1, [r7, #0] + 800719e: 6878 ldr r0, [r7, #4] + 80071a0: f000 f9f5 bl 800758e + err++; + 80071a4: 7afb ldrb r3, [r7, #11] + 80071a6: 3301 adds r3, #1 + 80071a8: 72fb strb r3, [r7, #11] + break; + 80071aa: e021 b.n 80071f0 + + case USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION: + if (pdev->dev_speed == USBD_SPEED_HIGH) + 80071ac: 687b ldr r3, [r7, #4] + 80071ae: 7c1b ldrb r3, [r3, #16] + 80071b0: 2b00 cmp r3, #0 + 80071b2: d10d bne.n 80071d0 + { + pbuf = pdev->pClass->GetOtherSpeedConfigDescriptor(&len); + 80071b4: 687b ldr r3, [r7, #4] + 80071b6: f8d3 32b4 ldr.w r3, [r3, #692] ; 0x2b4 + 80071ba: 6b1b ldr r3, [r3, #48] ; 0x30 + 80071bc: f107 0208 add.w r2, r7, #8 + 80071c0: 4610 mov r0, r2 + 80071c2: 4798 blx r3 + 80071c4: 60f8 str r0, [r7, #12] + pbuf[1] = USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION; + 80071c6: 68fb ldr r3, [r7, #12] + 80071c8: 3301 adds r3, #1 + 80071ca: 2207 movs r2, #7 + 80071cc: 701a strb r2, [r3, #0] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 80071ce: e00f b.n 80071f0 + USBD_CtlError(pdev, req); + 80071d0: 6839 ldr r1, [r7, #0] + 80071d2: 6878 ldr r0, [r7, #4] + 80071d4: f000 f9db bl 800758e + err++; + 80071d8: 7afb ldrb r3, [r7, #11] + 80071da: 3301 adds r3, #1 + 80071dc: 72fb strb r3, [r7, #11] + break; + 80071de: e007 b.n 80071f0 + + default: + USBD_CtlError(pdev, req); + 80071e0: 6839 ldr r1, [r7, #0] + 80071e2: 6878 ldr r0, [r7, #4] + 80071e4: f000 f9d3 bl 800758e + err++; + 80071e8: 7afb ldrb r3, [r7, #11] + 80071ea: 3301 adds r3, #1 + 80071ec: 72fb strb r3, [r7, #11] + break; + 80071ee: bf00 nop + } + + if (err != 0U) + 80071f0: 7afb ldrb r3, [r7, #11] + 80071f2: 2b00 cmp r3, #0 + 80071f4: d11c bne.n 8007230 + { + return; + } + else + { + if ((len != 0U) && (req->wLength != 0U)) + 80071f6: 893b ldrh r3, [r7, #8] + 80071f8: 2b00 cmp r3, #0 + 80071fa: d011 beq.n 8007220 + 80071fc: 683b ldr r3, [r7, #0] + 80071fe: 88db ldrh r3, [r3, #6] + 8007200: 2b00 cmp r3, #0 + 8007202: d00d beq.n 8007220 + { + len = MIN(len, req->wLength); + 8007204: 683b ldr r3, [r7, #0] + 8007206: 88da ldrh r2, [r3, #6] + 8007208: 893b ldrh r3, [r7, #8] + 800720a: 4293 cmp r3, r2 + 800720c: bf28 it cs + 800720e: 4613 movcs r3, r2 + 8007210: b29b uxth r3, r3 + 8007212: 813b strh r3, [r7, #8] + (void)USBD_CtlSendData(pdev, pbuf, len); + 8007214: 893b ldrh r3, [r7, #8] + 8007216: 461a mov r2, r3 + 8007218: 68f9 ldr r1, [r7, #12] + 800721a: 6878 ldr r0, [r7, #4] + 800721c: f000 fa21 bl 8007662 + } + + if (req->wLength == 0U) + 8007220: 683b ldr r3, [r7, #0] + 8007222: 88db ldrh r3, [r3, #6] + 8007224: 2b00 cmp r3, #0 + 8007226: d104 bne.n 8007232 + { + (void)USBD_CtlSendStatus(pdev); + 8007228: 6878 ldr r0, [r7, #4] + 800722a: f000 fa78 bl 800771e + 800722e: e000 b.n 8007232 + return; + 8007230: bf00 nop + } + } +} + 8007232: 3710 adds r7, #16 + 8007234: 46bd mov sp, r7 + 8007236: bd80 pop {r7, pc} + +08007238 : +* @param req: usb request +* @retval status +*/ +static void USBD_SetAddress(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 8007238: b580 push {r7, lr} + 800723a: b084 sub sp, #16 + 800723c: af00 add r7, sp, #0 + 800723e: 6078 str r0, [r7, #4] + 8007240: 6039 str r1, [r7, #0] + uint8_t dev_addr; + + if ((req->wIndex == 0U) && (req->wLength == 0U) && (req->wValue < 128U)) + 8007242: 683b ldr r3, [r7, #0] + 8007244: 889b ldrh r3, [r3, #4] + 8007246: 2b00 cmp r3, #0 + 8007248: d130 bne.n 80072ac + 800724a: 683b ldr r3, [r7, #0] + 800724c: 88db ldrh r3, [r3, #6] + 800724e: 2b00 cmp r3, #0 + 8007250: d12c bne.n 80072ac + 8007252: 683b ldr r3, [r7, #0] + 8007254: 885b ldrh r3, [r3, #2] + 8007256: 2b7f cmp r3, #127 ; 0x7f + 8007258: d828 bhi.n 80072ac + { + dev_addr = (uint8_t)(req->wValue) & 0x7FU; + 800725a: 683b ldr r3, [r7, #0] + 800725c: 885b ldrh r3, [r3, #2] + 800725e: b2db uxtb r3, r3 + 8007260: f003 037f and.w r3, r3, #127 ; 0x7f + 8007264: 73fb strb r3, [r7, #15] + + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 8007266: 687b ldr r3, [r7, #4] + 8007268: f893 329c ldrb.w r3, [r3, #668] ; 0x29c + 800726c: 2b03 cmp r3, #3 + 800726e: d104 bne.n 800727a + { + USBD_CtlError(pdev, req); + 8007270: 6839 ldr r1, [r7, #0] + 8007272: 6878 ldr r0, [r7, #4] + 8007274: f000 f98b bl 800758e + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 8007278: e01d b.n 80072b6 + } + else + { + pdev->dev_address = dev_addr; + 800727a: 687b ldr r3, [r7, #4] + 800727c: 7bfa ldrb r2, [r7, #15] + 800727e: f883 229e strb.w r2, [r3, #670] ; 0x29e + USBD_LL_SetUSBAddress(pdev, dev_addr); + 8007282: 7bfb ldrb r3, [r7, #15] + 8007284: 4619 mov r1, r3 + 8007286: 6878 ldr r0, [r7, #4] + 8007288: f000 fdb6 bl 8007df8 + USBD_CtlSendStatus(pdev); + 800728c: 6878 ldr r0, [r7, #4] + 800728e: f000 fa46 bl 800771e + + if (dev_addr != 0U) + 8007292: 7bfb ldrb r3, [r7, #15] + 8007294: 2b00 cmp r3, #0 + 8007296: d004 beq.n 80072a2 + { + pdev->dev_state = USBD_STATE_ADDRESSED; + 8007298: 687b ldr r3, [r7, #4] + 800729a: 2202 movs r2, #2 + 800729c: f883 229c strb.w r2, [r3, #668] ; 0x29c + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 80072a0: e009 b.n 80072b6 + } + else + { + pdev->dev_state = USBD_STATE_DEFAULT; + 80072a2: 687b ldr r3, [r7, #4] + 80072a4: 2201 movs r2, #1 + 80072a6: f883 229c strb.w r2, [r3, #668] ; 0x29c + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 80072aa: e004 b.n 80072b6 + } + } + } + else + { + USBD_CtlError(pdev, req); + 80072ac: 6839 ldr r1, [r7, #0] + 80072ae: 6878 ldr r0, [r7, #4] + 80072b0: f000 f96d bl 800758e + } +} + 80072b4: bf00 nop + 80072b6: bf00 nop + 80072b8: 3710 adds r7, #16 + 80072ba: 46bd mov sp, r7 + 80072bc: bd80 pop {r7, pc} + ... + +080072c0 : +* @param pdev: device instance +* @param req: usb request +* @retval status +*/ +static void USBD_SetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + 80072c0: b580 push {r7, lr} + 80072c2: b082 sub sp, #8 + 80072c4: af00 add r7, sp, #0 + 80072c6: 6078 str r0, [r7, #4] + 80072c8: 6039 str r1, [r7, #0] + static uint8_t cfgidx; + + cfgidx = (uint8_t)(req->wValue); + 80072ca: 683b ldr r3, [r7, #0] + 80072cc: 885b ldrh r3, [r3, #2] + 80072ce: b2da uxtb r2, r3 + 80072d0: 4b41 ldr r3, [pc, #260] ; (80073d8 ) + 80072d2: 701a strb r2, [r3, #0] + + if (cfgidx > USBD_MAX_NUM_CONFIGURATION) + 80072d4: 4b40 ldr r3, [pc, #256] ; (80073d8 ) + 80072d6: 781b ldrb r3, [r3, #0] + 80072d8: 2b01 cmp r3, #1 + 80072da: d904 bls.n 80072e6 + { + USBD_CtlError(pdev, req); + 80072dc: 6839 ldr r1, [r7, #0] + 80072de: 6878 ldr r0, [r7, #4] + 80072e0: f000 f955 bl 800758e + 80072e4: e075 b.n 80073d2 + } + else + { + switch (pdev->dev_state) + 80072e6: 687b ldr r3, [r7, #4] + 80072e8: f893 329c ldrb.w r3, [r3, #668] ; 0x29c + 80072ec: 2b02 cmp r3, #2 + 80072ee: d002 beq.n 80072f6 + 80072f0: 2b03 cmp r3, #3 + 80072f2: d023 beq.n 800733c + 80072f4: e062 b.n 80073bc + { + case USBD_STATE_ADDRESSED: + if (cfgidx) + 80072f6: 4b38 ldr r3, [pc, #224] ; (80073d8 ) + 80072f8: 781b ldrb r3, [r3, #0] + 80072fa: 2b00 cmp r3, #0 + 80072fc: d01a beq.n 8007334 + { + pdev->dev_config = cfgidx; + 80072fe: 4b36 ldr r3, [pc, #216] ; (80073d8 ) + 8007300: 781b ldrb r3, [r3, #0] + 8007302: 461a mov r2, r3 + 8007304: 687b ldr r3, [r7, #4] + 8007306: 605a str r2, [r3, #4] + pdev->dev_state = USBD_STATE_CONFIGURED; + 8007308: 687b ldr r3, [r7, #4] + 800730a: 2203 movs r2, #3 + 800730c: f883 229c strb.w r2, [r3, #668] ; 0x29c + if (USBD_SetClassConfig(pdev, cfgidx) == USBD_FAIL) + 8007310: 4b31 ldr r3, [pc, #196] ; (80073d8 ) + 8007312: 781b ldrb r3, [r3, #0] + 8007314: 4619 mov r1, r3 + 8007316: 6878 ldr r0, [r7, #4] + 8007318: f7ff f9d6 bl 80066c8 + 800731c: 4603 mov r3, r0 + 800731e: 2b02 cmp r3, #2 + 8007320: d104 bne.n 800732c + { + USBD_CtlError(pdev, req); + 8007322: 6839 ldr r1, [r7, #0] + 8007324: 6878 ldr r0, [r7, #4] + 8007326: f000 f932 bl 800758e + return; + 800732a: e052 b.n 80073d2 + } + USBD_CtlSendStatus(pdev); + 800732c: 6878 ldr r0, [r7, #4] + 800732e: f000 f9f6 bl 800771e + } + else + { + USBD_CtlSendStatus(pdev); + } + break; + 8007332: e04e b.n 80073d2 + USBD_CtlSendStatus(pdev); + 8007334: 6878 ldr r0, [r7, #4] + 8007336: f000 f9f2 bl 800771e + break; + 800733a: e04a b.n 80073d2 + + case USBD_STATE_CONFIGURED: + if (cfgidx == 0U) + 800733c: 4b26 ldr r3, [pc, #152] ; (80073d8 ) + 800733e: 781b ldrb r3, [r3, #0] + 8007340: 2b00 cmp r3, #0 + 8007342: d112 bne.n 800736a + { + pdev->dev_state = USBD_STATE_ADDRESSED; + 8007344: 687b ldr r3, [r7, #4] + 8007346: 2202 movs r2, #2 + 8007348: f883 229c strb.w r2, [r3, #668] ; 0x29c + pdev->dev_config = cfgidx; + 800734c: 4b22 ldr r3, [pc, #136] ; (80073d8 ) + 800734e: 781b ldrb r3, [r3, #0] + 8007350: 461a mov r2, r3 + 8007352: 687b ldr r3, [r7, #4] + 8007354: 605a str r2, [r3, #4] + USBD_ClrClassConfig(pdev, cfgidx); + 8007356: 4b20 ldr r3, [pc, #128] ; (80073d8 ) + 8007358: 781b ldrb r3, [r3, #0] + 800735a: 4619 mov r1, r3 + 800735c: 6878 ldr r0, [r7, #4] + 800735e: f7ff f9d2 bl 8006706 + USBD_CtlSendStatus(pdev); + 8007362: 6878 ldr r0, [r7, #4] + 8007364: f000 f9db bl 800771e + } + else + { + USBD_CtlSendStatus(pdev); + } + break; + 8007368: e033 b.n 80073d2 + else if (cfgidx != pdev->dev_config) + 800736a: 4b1b ldr r3, [pc, #108] ; (80073d8 ) + 800736c: 781b ldrb r3, [r3, #0] + 800736e: 461a mov r2, r3 + 8007370: 687b ldr r3, [r7, #4] + 8007372: 685b ldr r3, [r3, #4] + 8007374: 429a cmp r2, r3 + 8007376: d01d beq.n 80073b4 + USBD_ClrClassConfig(pdev, (uint8_t)pdev->dev_config); + 8007378: 687b ldr r3, [r7, #4] + 800737a: 685b ldr r3, [r3, #4] + 800737c: b2db uxtb r3, r3 + 800737e: 4619 mov r1, r3 + 8007380: 6878 ldr r0, [r7, #4] + 8007382: f7ff f9c0 bl 8006706 + pdev->dev_config = cfgidx; + 8007386: 4b14 ldr r3, [pc, #80] ; (80073d8 ) + 8007388: 781b ldrb r3, [r3, #0] + 800738a: 461a mov r2, r3 + 800738c: 687b ldr r3, [r7, #4] + 800738e: 605a str r2, [r3, #4] + if (USBD_SetClassConfig(pdev, cfgidx) == USBD_FAIL) + 8007390: 4b11 ldr r3, [pc, #68] ; (80073d8 ) + 8007392: 781b ldrb r3, [r3, #0] + 8007394: 4619 mov r1, r3 + 8007396: 6878 ldr r0, [r7, #4] + 8007398: f7ff f996 bl 80066c8 + 800739c: 4603 mov r3, r0 + 800739e: 2b02 cmp r3, #2 + 80073a0: d104 bne.n 80073ac + USBD_CtlError(pdev, req); + 80073a2: 6839 ldr r1, [r7, #0] + 80073a4: 6878 ldr r0, [r7, #4] + 80073a6: f000 f8f2 bl 800758e + return; + 80073aa: e012 b.n 80073d2 + USBD_CtlSendStatus(pdev); + 80073ac: 6878 ldr r0, [r7, #4] + 80073ae: f000 f9b6 bl 800771e + break; + 80073b2: e00e b.n 80073d2 + USBD_CtlSendStatus(pdev); + 80073b4: 6878 ldr r0, [r7, #4] + 80073b6: f000 f9b2 bl 800771e + break; + 80073ba: e00a b.n 80073d2 + + default: + USBD_CtlError(pdev, req); + 80073bc: 6839 ldr r1, [r7, #0] + 80073be: 6878 ldr r0, [r7, #4] + 80073c0: f000 f8e5 bl 800758e + USBD_ClrClassConfig(pdev, cfgidx); + 80073c4: 4b04 ldr r3, [pc, #16] ; (80073d8 ) + 80073c6: 781b ldrb r3, [r3, #0] + 80073c8: 4619 mov r1, r3 + 80073ca: 6878 ldr r0, [r7, #4] + 80073cc: f7ff f99b bl 8006706 + break; + 80073d0: bf00 nop + } + } +} + 80073d2: 3708 adds r7, #8 + 80073d4: 46bd mov sp, r7 + 80073d6: bd80 pop {r7, pc} + 80073d8: 200001f7 .word 0x200001f7 + +080073dc : +* @param pdev: device instance +* @param req: usb request +* @retval status +*/ +static void USBD_GetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + 80073dc: b580 push {r7, lr} + 80073de: b082 sub sp, #8 + 80073e0: af00 add r7, sp, #0 + 80073e2: 6078 str r0, [r7, #4] + 80073e4: 6039 str r1, [r7, #0] + if (req->wLength != 1U) + 80073e6: 683b ldr r3, [r7, #0] + 80073e8: 88db ldrh r3, [r3, #6] + 80073ea: 2b01 cmp r3, #1 + 80073ec: d004 beq.n 80073f8 + { + USBD_CtlError(pdev, req); + 80073ee: 6839 ldr r1, [r7, #0] + 80073f0: 6878 ldr r0, [r7, #4] + 80073f2: f000 f8cc bl 800758e + default: + USBD_CtlError(pdev, req); + break; + } + } +} + 80073f6: e022 b.n 800743e + switch (pdev->dev_state) + 80073f8: 687b ldr r3, [r7, #4] + 80073fa: f893 329c ldrb.w r3, [r3, #668] ; 0x29c + 80073fe: 2b02 cmp r3, #2 + 8007400: dc02 bgt.n 8007408 + 8007402: 2b00 cmp r3, #0 + 8007404: dc03 bgt.n 800740e + 8007406: e015 b.n 8007434 + 8007408: 2b03 cmp r3, #3 + 800740a: d00b beq.n 8007424 + 800740c: e012 b.n 8007434 + pdev->dev_default_config = 0U; + 800740e: 687b ldr r3, [r7, #4] + 8007410: 2200 movs r2, #0 + 8007412: 609a str r2, [r3, #8] + USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_default_config, 1U); + 8007414: 687b ldr r3, [r7, #4] + 8007416: 3308 adds r3, #8 + 8007418: 2201 movs r2, #1 + 800741a: 4619 mov r1, r3 + 800741c: 6878 ldr r0, [r7, #4] + 800741e: f000 f920 bl 8007662 + break; + 8007422: e00c b.n 800743e + USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_config, 1U); + 8007424: 687b ldr r3, [r7, #4] + 8007426: 3304 adds r3, #4 + 8007428: 2201 movs r2, #1 + 800742a: 4619 mov r1, r3 + 800742c: 6878 ldr r0, [r7, #4] + 800742e: f000 f918 bl 8007662 + break; + 8007432: e004 b.n 800743e + USBD_CtlError(pdev, req); + 8007434: 6839 ldr r1, [r7, #0] + 8007436: 6878 ldr r0, [r7, #4] + 8007438: f000 f8a9 bl 800758e + break; + 800743c: bf00 nop +} + 800743e: bf00 nop + 8007440: 3708 adds r7, #8 + 8007442: 46bd mov sp, r7 + 8007444: bd80 pop {r7, pc} + +08007446 : +* @param pdev: device instance +* @param req: usb request +* @retval status +*/ +static void USBD_GetStatus(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + 8007446: b580 push {r7, lr} + 8007448: b082 sub sp, #8 + 800744a: af00 add r7, sp, #0 + 800744c: 6078 str r0, [r7, #4] + 800744e: 6039 str r1, [r7, #0] + switch (pdev->dev_state) + 8007450: 687b ldr r3, [r7, #4] + 8007452: f893 329c ldrb.w r3, [r3, #668] ; 0x29c + 8007456: 3b01 subs r3, #1 + 8007458: 2b02 cmp r3, #2 + 800745a: d81e bhi.n 800749a + { + case USBD_STATE_DEFAULT: + case USBD_STATE_ADDRESSED: + case USBD_STATE_CONFIGURED: + if (req->wLength != 0x2U) + 800745c: 683b ldr r3, [r7, #0] + 800745e: 88db ldrh r3, [r3, #6] + 8007460: 2b02 cmp r3, #2 + 8007462: d004 beq.n 800746e + { + USBD_CtlError(pdev, req); + 8007464: 6839 ldr r1, [r7, #0] + 8007466: 6878 ldr r0, [r7, #4] + 8007468: f000 f891 bl 800758e + break; + 800746c: e01a b.n 80074a4 + } + +#if (USBD_SELF_POWERED == 1U) + pdev->dev_config_status = USB_CONFIG_SELF_POWERED; + 800746e: 687b ldr r3, [r7, #4] + 8007470: 2201 movs r2, #1 + 8007472: 60da str r2, [r3, #12] +#else + pdev->dev_config_status = 0U; +#endif + + if (pdev->dev_remote_wakeup) + 8007474: 687b ldr r3, [r7, #4] + 8007476: f8d3 32a4 ldr.w r3, [r3, #676] ; 0x2a4 + 800747a: 2b00 cmp r3, #0 + 800747c: d005 beq.n 800748a + { + pdev->dev_config_status |= USB_CONFIG_REMOTE_WAKEUP; + 800747e: 687b ldr r3, [r7, #4] + 8007480: 68db ldr r3, [r3, #12] + 8007482: f043 0202 orr.w r2, r3, #2 + 8007486: 687b ldr r3, [r7, #4] + 8007488: 60da str r2, [r3, #12] + } + + USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_config_status, 2U); + 800748a: 687b ldr r3, [r7, #4] + 800748c: 330c adds r3, #12 + 800748e: 2202 movs r2, #2 + 8007490: 4619 mov r1, r3 + 8007492: 6878 ldr r0, [r7, #4] + 8007494: f000 f8e5 bl 8007662 + break; + 8007498: e004 b.n 80074a4 + + default: + USBD_CtlError(pdev, req); + 800749a: 6839 ldr r1, [r7, #0] + 800749c: 6878 ldr r0, [r7, #4] + 800749e: f000 f876 bl 800758e + break; + 80074a2: bf00 nop + } +} + 80074a4: bf00 nop + 80074a6: 3708 adds r7, #8 + 80074a8: 46bd mov sp, r7 + 80074aa: bd80 pop {r7, pc} + +080074ac : +* @param req: usb request +* @retval status +*/ +static void USBD_SetFeature(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 80074ac: b580 push {r7, lr} + 80074ae: b082 sub sp, #8 + 80074b0: af00 add r7, sp, #0 + 80074b2: 6078 str r0, [r7, #4] + 80074b4: 6039 str r1, [r7, #0] + if (req->wValue == USB_FEATURE_REMOTE_WAKEUP) + 80074b6: 683b ldr r3, [r7, #0] + 80074b8: 885b ldrh r3, [r3, #2] + 80074ba: 2b01 cmp r3, #1 + 80074bc: d106 bne.n 80074cc + { + pdev->dev_remote_wakeup = 1U; + 80074be: 687b ldr r3, [r7, #4] + 80074c0: 2201 movs r2, #1 + 80074c2: f8c3 22a4 str.w r2, [r3, #676] ; 0x2a4 + USBD_CtlSendStatus(pdev); + 80074c6: 6878 ldr r0, [r7, #4] + 80074c8: f000 f929 bl 800771e + } +} + 80074cc: bf00 nop + 80074ce: 3708 adds r7, #8 + 80074d0: 46bd mov sp, r7 + 80074d2: bd80 pop {r7, pc} + +080074d4 : +* @param req: usb request +* @retval status +*/ +static void USBD_ClrFeature(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 80074d4: b580 push {r7, lr} + 80074d6: b082 sub sp, #8 + 80074d8: af00 add r7, sp, #0 + 80074da: 6078 str r0, [r7, #4] + 80074dc: 6039 str r1, [r7, #0] + switch (pdev->dev_state) + 80074de: 687b ldr r3, [r7, #4] + 80074e0: f893 329c ldrb.w r3, [r3, #668] ; 0x29c + 80074e4: 3b01 subs r3, #1 + 80074e6: 2b02 cmp r3, #2 + 80074e8: d80b bhi.n 8007502 + { + case USBD_STATE_DEFAULT: + case USBD_STATE_ADDRESSED: + case USBD_STATE_CONFIGURED: + if (req->wValue == USB_FEATURE_REMOTE_WAKEUP) + 80074ea: 683b ldr r3, [r7, #0] + 80074ec: 885b ldrh r3, [r3, #2] + 80074ee: 2b01 cmp r3, #1 + 80074f0: d10c bne.n 800750c + { + pdev->dev_remote_wakeup = 0U; + 80074f2: 687b ldr r3, [r7, #4] + 80074f4: 2200 movs r2, #0 + 80074f6: f8c3 22a4 str.w r2, [r3, #676] ; 0x2a4 + USBD_CtlSendStatus(pdev); + 80074fa: 6878 ldr r0, [r7, #4] + 80074fc: f000 f90f bl 800771e + } + break; + 8007500: e004 b.n 800750c + + default: + USBD_CtlError(pdev, req); + 8007502: 6839 ldr r1, [r7, #0] + 8007504: 6878 ldr r0, [r7, #4] + 8007506: f000 f842 bl 800758e + break; + 800750a: e000 b.n 800750e + break; + 800750c: bf00 nop + } +} + 800750e: bf00 nop + 8007510: 3708 adds r7, #8 + 8007512: 46bd mov sp, r7 + 8007514: bd80 pop {r7, pc} + +08007516 : +* @param req: usb request +* @retval None +*/ + +void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata) +{ + 8007516: b480 push {r7} + 8007518: b083 sub sp, #12 + 800751a: af00 add r7, sp, #0 + 800751c: 6078 str r0, [r7, #4] + 800751e: 6039 str r1, [r7, #0] + req->bmRequest = *(uint8_t *)(pdata); + 8007520: 683b ldr r3, [r7, #0] + 8007522: 781a ldrb r2, [r3, #0] + 8007524: 687b ldr r3, [r7, #4] + 8007526: 701a strb r2, [r3, #0] + req->bRequest = *(uint8_t *)(pdata + 1U); + 8007528: 683b ldr r3, [r7, #0] + 800752a: 785a ldrb r2, [r3, #1] + 800752c: 687b ldr r3, [r7, #4] + 800752e: 705a strb r2, [r3, #1] + req->wValue = SWAPBYTE(pdata + 2U); + 8007530: 683b ldr r3, [r7, #0] + 8007532: 3302 adds r3, #2 + 8007534: 781b ldrb r3, [r3, #0] + 8007536: b29a uxth r2, r3 + 8007538: 683b ldr r3, [r7, #0] + 800753a: 3303 adds r3, #3 + 800753c: 781b ldrb r3, [r3, #0] + 800753e: b29b uxth r3, r3 + 8007540: 021b lsls r3, r3, #8 + 8007542: b29b uxth r3, r3 + 8007544: 4413 add r3, r2 + 8007546: b29a uxth r2, r3 + 8007548: 687b ldr r3, [r7, #4] + 800754a: 805a strh r2, [r3, #2] + req->wIndex = SWAPBYTE(pdata + 4U); + 800754c: 683b ldr r3, [r7, #0] + 800754e: 3304 adds r3, #4 + 8007550: 781b ldrb r3, [r3, #0] + 8007552: b29a uxth r2, r3 + 8007554: 683b ldr r3, [r7, #0] + 8007556: 3305 adds r3, #5 + 8007558: 781b ldrb r3, [r3, #0] + 800755a: b29b uxth r3, r3 + 800755c: 021b lsls r3, r3, #8 + 800755e: b29b uxth r3, r3 + 8007560: 4413 add r3, r2 + 8007562: b29a uxth r2, r3 + 8007564: 687b ldr r3, [r7, #4] + 8007566: 809a strh r2, [r3, #4] + req->wLength = SWAPBYTE(pdata + 6U); + 8007568: 683b ldr r3, [r7, #0] + 800756a: 3306 adds r3, #6 + 800756c: 781b ldrb r3, [r3, #0] + 800756e: b29a uxth r2, r3 + 8007570: 683b ldr r3, [r7, #0] + 8007572: 3307 adds r3, #7 + 8007574: 781b ldrb r3, [r3, #0] + 8007576: b29b uxth r3, r3 + 8007578: 021b lsls r3, r3, #8 + 800757a: b29b uxth r3, r3 + 800757c: 4413 add r3, r2 + 800757e: b29a uxth r2, r3 + 8007580: 687b ldr r3, [r7, #4] + 8007582: 80da strh r2, [r3, #6] + +} + 8007584: bf00 nop + 8007586: 370c adds r7, #12 + 8007588: 46bd mov sp, r7 + 800758a: bc80 pop {r7} + 800758c: 4770 bx lr + +0800758e : +* @retval None +*/ + +void USBD_CtlError(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 800758e: b580 push {r7, lr} + 8007590: b082 sub sp, #8 + 8007592: af00 add r7, sp, #0 + 8007594: 6078 str r0, [r7, #4] + 8007596: 6039 str r1, [r7, #0] + USBD_LL_StallEP(pdev, 0x80U); + 8007598: 2180 movs r1, #128 ; 0x80 + 800759a: 6878 ldr r0, [r7, #4] + 800759c: f000 fbc2 bl 8007d24 + USBD_LL_StallEP(pdev, 0U); + 80075a0: 2100 movs r1, #0 + 80075a2: 6878 ldr r0, [r7, #4] + 80075a4: f000 fbbe bl 8007d24 +} + 80075a8: bf00 nop + 80075aa: 3708 adds r7, #8 + 80075ac: 46bd mov sp, r7 + 80075ae: bd80 pop {r7, pc} + +080075b0 : + * @param unicode : Formatted string buffer (unicode) + * @param len : descriptor length + * @retval None + */ +void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len) +{ + 80075b0: b580 push {r7, lr} + 80075b2: b086 sub sp, #24 + 80075b4: af00 add r7, sp, #0 + 80075b6: 60f8 str r0, [r7, #12] + 80075b8: 60b9 str r1, [r7, #8] + 80075ba: 607a str r2, [r7, #4] + uint8_t idx = 0U; + 80075bc: 2300 movs r3, #0 + 80075be: 75fb strb r3, [r7, #23] + + if (desc != NULL) + 80075c0: 68fb ldr r3, [r7, #12] + 80075c2: 2b00 cmp r3, #0 + 80075c4: d032 beq.n 800762c + { + *len = (uint16_t)USBD_GetLen(desc) * 2U + 2U; + 80075c6: 68f8 ldr r0, [r7, #12] + 80075c8: f000 f834 bl 8007634 + 80075cc: 4603 mov r3, r0 + 80075ce: 3301 adds r3, #1 + 80075d0: b29b uxth r3, r3 + 80075d2: 005b lsls r3, r3, #1 + 80075d4: b29a uxth r2, r3 + 80075d6: 687b ldr r3, [r7, #4] + 80075d8: 801a strh r2, [r3, #0] + unicode[idx++] = *(uint8_t *)(void *)len; + 80075da: 7dfb ldrb r3, [r7, #23] + 80075dc: 1c5a adds r2, r3, #1 + 80075de: 75fa strb r2, [r7, #23] + 80075e0: 461a mov r2, r3 + 80075e2: 68bb ldr r3, [r7, #8] + 80075e4: 4413 add r3, r2 + 80075e6: 687a ldr r2, [r7, #4] + 80075e8: 7812 ldrb r2, [r2, #0] + 80075ea: 701a strb r2, [r3, #0] + unicode[idx++] = USB_DESC_TYPE_STRING; + 80075ec: 7dfb ldrb r3, [r7, #23] + 80075ee: 1c5a adds r2, r3, #1 + 80075f0: 75fa strb r2, [r7, #23] + 80075f2: 461a mov r2, r3 + 80075f4: 68bb ldr r3, [r7, #8] + 80075f6: 4413 add r3, r2 + 80075f8: 2203 movs r2, #3 + 80075fa: 701a strb r2, [r3, #0] + + while (*desc != '\0') + 80075fc: e012 b.n 8007624 + { + unicode[idx++] = *desc++; + 80075fe: 68fb ldr r3, [r7, #12] + 8007600: 1c5a adds r2, r3, #1 + 8007602: 60fa str r2, [r7, #12] + 8007604: 7dfa ldrb r2, [r7, #23] + 8007606: 1c51 adds r1, r2, #1 + 8007608: 75f9 strb r1, [r7, #23] + 800760a: 4611 mov r1, r2 + 800760c: 68ba ldr r2, [r7, #8] + 800760e: 440a add r2, r1 + 8007610: 781b ldrb r3, [r3, #0] + 8007612: 7013 strb r3, [r2, #0] + unicode[idx++] = 0U; + 8007614: 7dfb ldrb r3, [r7, #23] + 8007616: 1c5a adds r2, r3, #1 + 8007618: 75fa strb r2, [r7, #23] + 800761a: 461a mov r2, r3 + 800761c: 68bb ldr r3, [r7, #8] + 800761e: 4413 add r3, r2 + 8007620: 2200 movs r2, #0 + 8007622: 701a strb r2, [r3, #0] + while (*desc != '\0') + 8007624: 68fb ldr r3, [r7, #12] + 8007626: 781b ldrb r3, [r3, #0] + 8007628: 2b00 cmp r3, #0 + 800762a: d1e8 bne.n 80075fe + } + } +} + 800762c: bf00 nop + 800762e: 3718 adds r7, #24 + 8007630: 46bd mov sp, r7 + 8007632: bd80 pop {r7, pc} + +08007634 : + * return the string length + * @param buf : pointer to the ascii string buffer + * @retval string length + */ +static uint8_t USBD_GetLen(uint8_t *buf) +{ + 8007634: b480 push {r7} + 8007636: b085 sub sp, #20 + 8007638: af00 add r7, sp, #0 + 800763a: 6078 str r0, [r7, #4] + uint8_t len = 0U; + 800763c: 2300 movs r3, #0 + 800763e: 73fb strb r3, [r7, #15] + + while (*buf != '\0') + 8007640: e005 b.n 800764e + { + len++; + 8007642: 7bfb ldrb r3, [r7, #15] + 8007644: 3301 adds r3, #1 + 8007646: 73fb strb r3, [r7, #15] + buf++; + 8007648: 687b ldr r3, [r7, #4] + 800764a: 3301 adds r3, #1 + 800764c: 607b str r3, [r7, #4] + while (*buf != '\0') + 800764e: 687b ldr r3, [r7, #4] + 8007650: 781b ldrb r3, [r3, #0] + 8007652: 2b00 cmp r3, #0 + 8007654: d1f5 bne.n 8007642 + } + + return len; + 8007656: 7bfb ldrb r3, [r7, #15] +} + 8007658: 4618 mov r0, r3 + 800765a: 3714 adds r7, #20 + 800765c: 46bd mov sp, r7 + 800765e: bc80 pop {r7} + 8007660: 4770 bx lr + +08007662 : +* @param len: length of data to be sent +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlSendData(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint16_t len) +{ + 8007662: b580 push {r7, lr} + 8007664: b084 sub sp, #16 + 8007666: af00 add r7, sp, #0 + 8007668: 60f8 str r0, [r7, #12] + 800766a: 60b9 str r1, [r7, #8] + 800766c: 4613 mov r3, r2 + 800766e: 80fb strh r3, [r7, #6] + /* Set EP0 State */ + pdev->ep0_state = USBD_EP0_DATA_IN; + 8007670: 68fb ldr r3, [r7, #12] + 8007672: 2202 movs r2, #2 + 8007674: f8c3 2294 str.w r2, [r3, #660] ; 0x294 + pdev->ep_in[0].total_length = len; + 8007678: 88fa ldrh r2, [r7, #6] + 800767a: 68fb ldr r3, [r7, #12] + 800767c: 61da str r2, [r3, #28] + pdev->ep_in[0].rem_length = len; + 800767e: 88fa ldrh r2, [r7, #6] + 8007680: 68fb ldr r3, [r7, #12] + 8007682: 621a str r2, [r3, #32] + + /* Start the transfer */ + USBD_LL_Transmit(pdev, 0x00U, pbuf, len); + 8007684: 88fb ldrh r3, [r7, #6] + 8007686: 68ba ldr r2, [r7, #8] + 8007688: 2100 movs r1, #0 + 800768a: 68f8 ldr r0, [r7, #12] + 800768c: f000 fbd3 bl 8007e36 + + return USBD_OK; + 8007690: 2300 movs r3, #0 +} + 8007692: 4618 mov r0, r3 + 8007694: 3710 adds r7, #16 + 8007696: 46bd mov sp, r7 + 8007698: bd80 pop {r7, pc} + +0800769a : +* @param len: length of data to be sent +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlContinueSendData(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint16_t len) +{ + 800769a: b580 push {r7, lr} + 800769c: b084 sub sp, #16 + 800769e: af00 add r7, sp, #0 + 80076a0: 60f8 str r0, [r7, #12] + 80076a2: 60b9 str r1, [r7, #8] + 80076a4: 4613 mov r3, r2 + 80076a6: 80fb strh r3, [r7, #6] + /* Start the next transfer */ + USBD_LL_Transmit(pdev, 0x00U, pbuf, len); + 80076a8: 88fb ldrh r3, [r7, #6] + 80076aa: 68ba ldr r2, [r7, #8] + 80076ac: 2100 movs r1, #0 + 80076ae: 68f8 ldr r0, [r7, #12] + 80076b0: f000 fbc1 bl 8007e36 + + return USBD_OK; + 80076b4: 2300 movs r3, #0 +} + 80076b6: 4618 mov r0, r3 + 80076b8: 3710 adds r7, #16 + 80076ba: 46bd mov sp, r7 + 80076bc: bd80 pop {r7, pc} + +080076be : +* @param len: length of data to be received +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlPrepareRx(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint16_t len) +{ + 80076be: b580 push {r7, lr} + 80076c0: b084 sub sp, #16 + 80076c2: af00 add r7, sp, #0 + 80076c4: 60f8 str r0, [r7, #12] + 80076c6: 60b9 str r1, [r7, #8] + 80076c8: 4613 mov r3, r2 + 80076ca: 80fb strh r3, [r7, #6] + /* Set EP0 State */ + pdev->ep0_state = USBD_EP0_DATA_OUT; + 80076cc: 68fb ldr r3, [r7, #12] + 80076ce: 2203 movs r2, #3 + 80076d0: f8c3 2294 str.w r2, [r3, #660] ; 0x294 + pdev->ep_out[0].total_length = len; + 80076d4: 88fa ldrh r2, [r7, #6] + 80076d6: 68fb ldr r3, [r7, #12] + 80076d8: f8c3 215c str.w r2, [r3, #348] ; 0x15c + pdev->ep_out[0].rem_length = len; + 80076dc: 88fa ldrh r2, [r7, #6] + 80076de: 68fb ldr r3, [r7, #12] + 80076e0: f8c3 2160 str.w r2, [r3, #352] ; 0x160 + + /* Start the transfer */ + USBD_LL_PrepareReceive(pdev, 0U, pbuf, len); + 80076e4: 88fb ldrh r3, [r7, #6] + 80076e6: 68ba ldr r2, [r7, #8] + 80076e8: 2100 movs r1, #0 + 80076ea: 68f8 ldr r0, [r7, #12] + 80076ec: f000 fbc6 bl 8007e7c + + return USBD_OK; + 80076f0: 2300 movs r3, #0 +} + 80076f2: 4618 mov r0, r3 + 80076f4: 3710 adds r7, #16 + 80076f6: 46bd mov sp, r7 + 80076f8: bd80 pop {r7, pc} + +080076fa : +* @param len: length of data to be received +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlContinueRx(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint16_t len) +{ + 80076fa: b580 push {r7, lr} + 80076fc: b084 sub sp, #16 + 80076fe: af00 add r7, sp, #0 + 8007700: 60f8 str r0, [r7, #12] + 8007702: 60b9 str r1, [r7, #8] + 8007704: 4613 mov r3, r2 + 8007706: 80fb strh r3, [r7, #6] + USBD_LL_PrepareReceive(pdev, 0U, pbuf, len); + 8007708: 88fb ldrh r3, [r7, #6] + 800770a: 68ba ldr r2, [r7, #8] + 800770c: 2100 movs r1, #0 + 800770e: 68f8 ldr r0, [r7, #12] + 8007710: f000 fbb4 bl 8007e7c + + return USBD_OK; + 8007714: 2300 movs r3, #0 +} + 8007716: 4618 mov r0, r3 + 8007718: 3710 adds r7, #16 + 800771a: 46bd mov sp, r7 + 800771c: bd80 pop {r7, pc} + +0800771e : +* send zero lzngth packet on the ctl pipe +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlSendStatus(USBD_HandleTypeDef *pdev) +{ + 800771e: b580 push {r7, lr} + 8007720: b082 sub sp, #8 + 8007722: af00 add r7, sp, #0 + 8007724: 6078 str r0, [r7, #4] + /* Set EP0 State */ + pdev->ep0_state = USBD_EP0_STATUS_IN; + 8007726: 687b ldr r3, [r7, #4] + 8007728: 2204 movs r2, #4 + 800772a: f8c3 2294 str.w r2, [r3, #660] ; 0x294 + + /* Start the transfer */ + USBD_LL_Transmit(pdev, 0x00U, NULL, 0U); + 800772e: 2300 movs r3, #0 + 8007730: 2200 movs r2, #0 + 8007732: 2100 movs r1, #0 + 8007734: 6878 ldr r0, [r7, #4] + 8007736: f000 fb7e bl 8007e36 + + return USBD_OK; + 800773a: 2300 movs r3, #0 +} + 800773c: 4618 mov r0, r3 + 800773e: 3708 adds r7, #8 + 8007740: 46bd mov sp, r7 + 8007742: bd80 pop {r7, pc} + +08007744 : +* receive zero lzngth packet on the ctl pipe +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlReceiveStatus(USBD_HandleTypeDef *pdev) +{ + 8007744: b580 push {r7, lr} + 8007746: b082 sub sp, #8 + 8007748: af00 add r7, sp, #0 + 800774a: 6078 str r0, [r7, #4] + /* Set EP0 State */ + pdev->ep0_state = USBD_EP0_STATUS_OUT; + 800774c: 687b ldr r3, [r7, #4] + 800774e: 2205 movs r2, #5 + 8007750: f8c3 2294 str.w r2, [r3, #660] ; 0x294 + + /* Start the transfer */ + USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); + 8007754: 2300 movs r3, #0 + 8007756: 2200 movs r2, #0 + 8007758: 2100 movs r1, #0 + 800775a: 6878 ldr r0, [r7, #4] + 800775c: f000 fb8e bl 8007e7c + + return USBD_OK; + 8007760: 2300 movs r3, #0 +} + 8007762: 4618 mov r0, r3 + 8007764: 3708 adds r7, #8 + 8007766: 46bd mov sp, r7 + 8007768: bd80 pop {r7, pc} + ... + +0800776c : +/** + * Init USB device Library, add supported class and start the library + * @retval None + */ +void MX_USB_DEVICE_Init(void) +{ + 800776c: b580 push {r7, lr} + 800776e: af00 add r7, sp, #0 + /* USER CODE BEGIN USB_DEVICE_Init_PreTreatment */ + + /* USER CODE END USB_DEVICE_Init_PreTreatment */ + + /* Init Device Library, add supported class and start the library. */ + if (USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS) != USBD_OK) + 8007770: 2200 movs r2, #0 + 8007772: 4912 ldr r1, [pc, #72] ; (80077bc ) + 8007774: 4812 ldr r0, [pc, #72] ; (80077c0 ) + 8007776: f7fe ff37 bl 80065e8 + 800777a: 4603 mov r3, r0 + 800777c: 2b00 cmp r3, #0 + 800777e: d001 beq.n 8007784 + { + Error_Handler(); + 8007780: f7f8 fe36 bl 80003f0 + } + if (USBD_RegisterClass(&hUsbDeviceFS, &USBD_DFU) != USBD_OK) + 8007784: 490f ldr r1, [pc, #60] ; (80077c4 ) + 8007786: 480e ldr r0, [pc, #56] ; (80077c0 ) + 8007788: f7fe ff59 bl 800663e + 800778c: 4603 mov r3, r0 + 800778e: 2b00 cmp r3, #0 + 8007790: d001 beq.n 8007796 + { + Error_Handler(); + 8007792: f7f8 fe2d bl 80003f0 + } + if (USBD_DFU_RegisterMedia(&hUsbDeviceFS, &USBD_DFU_fops_FS) != USBD_OK) + 8007796: 490c ldr r1, [pc, #48] ; (80077c8 ) + 8007798: 4809 ldr r0, [pc, #36] ; (80077c0 ) + 800779a: f7fe fbc1 bl 8005f20 + 800779e: 4603 mov r3, r0 + 80077a0: 2b00 cmp r3, #0 + 80077a2: d001 beq.n 80077a8 + { + Error_Handler(); + 80077a4: f7f8 fe24 bl 80003f0 + } + if (USBD_Start(&hUsbDeviceFS) != USBD_OK) + 80077a8: 4805 ldr r0, [pc, #20] ; (80077c0 ) + 80077aa: f7fe ff61 bl 8006670 + 80077ae: 4603 mov r3, r0 + 80077b0: 2b00 cmp r3, #0 + 80077b2: d001 beq.n 80077b8 + { + Error_Handler(); + 80077b4: f7f8 fe1c bl 80003f0 + } + + /* USER CODE BEGIN USB_DEVICE_Init_PostTreatment */ + + /* USER CODE END USB_DEVICE_Init_PostTreatment */ +} + 80077b8: bf00 nop + 80077ba: bd80 pop {r7, pc} + 80077bc: 20000070 .word 0x20000070 + 80077c0: 200006e4 .word 0x200006e4 + 80077c4: 2000000c .word 0x2000000c + 80077c8: 200000c0 .word 0x200000c0 + +080077cc : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 80077cc: b480 push {r7} + 80077ce: b083 sub sp, #12 + 80077d0: af00 add r7, sp, #0 + 80077d2: 4603 mov r3, r0 + 80077d4: 6039 str r1, [r7, #0] + 80077d6: 71fb strb r3, [r7, #7] + UNUSED(speed); + *length = sizeof(USBD_FS_DeviceDesc); + 80077d8: 683b ldr r3, [r7, #0] + 80077da: 2212 movs r2, #18 + 80077dc: 801a strh r2, [r3, #0] + return USBD_FS_DeviceDesc; + 80077de: 4b03 ldr r3, [pc, #12] ; (80077ec ) +} + 80077e0: 4618 mov r0, r3 + 80077e2: 370c adds r7, #12 + 80077e4: 46bd mov sp, r7 + 80077e6: bc80 pop {r7} + 80077e8: 4770 bx lr + 80077ea: bf00 nop + 80077ec: 2000008c .word 0x2000008c + +080077f0 : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 80077f0: b480 push {r7} + 80077f2: b083 sub sp, #12 + 80077f4: af00 add r7, sp, #0 + 80077f6: 4603 mov r3, r0 + 80077f8: 6039 str r1, [r7, #0] + 80077fa: 71fb strb r3, [r7, #7] + UNUSED(speed); + *length = sizeof(USBD_LangIDDesc); + 80077fc: 683b ldr r3, [r7, #0] + 80077fe: 2204 movs r2, #4 + 8007800: 801a strh r2, [r3, #0] + return USBD_LangIDDesc; + 8007802: 4b03 ldr r3, [pc, #12] ; (8007810 ) +} + 8007804: 4618 mov r0, r3 + 8007806: 370c adds r7, #12 + 8007808: 46bd mov sp, r7 + 800780a: bc80 pop {r7} + 800780c: 4770 bx lr + 800780e: bf00 nop + 8007810: 200000a0 .word 0x200000a0 + +08007814 : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 8007814: b580 push {r7, lr} + 8007816: b082 sub sp, #8 + 8007818: af00 add r7, sp, #0 + 800781a: 4603 mov r3, r0 + 800781c: 6039 str r1, [r7, #0] + 800781e: 71fb strb r3, [r7, #7] + if(speed == 0) + 8007820: 79fb ldrb r3, [r7, #7] + 8007822: 2b00 cmp r3, #0 + 8007824: d105 bne.n 8007832 + { + USBD_GetString((uint8_t *)USBD_PRODUCT_STRING_FS, USBD_StrDesc, length); + 8007826: 683a ldr r2, [r7, #0] + 8007828: 4907 ldr r1, [pc, #28] ; (8007848 ) + 800782a: 4808 ldr r0, [pc, #32] ; (800784c ) + 800782c: f7ff fec0 bl 80075b0 + 8007830: e004 b.n 800783c + } + else + { + USBD_GetString((uint8_t *)USBD_PRODUCT_STRING_FS, USBD_StrDesc, length); + 8007832: 683a ldr r2, [r7, #0] + 8007834: 4904 ldr r1, [pc, #16] ; (8007848 ) + 8007836: 4805 ldr r0, [pc, #20] ; (800784c ) + 8007838: f7ff feba bl 80075b0 + } + return USBD_StrDesc; + 800783c: 4b02 ldr r3, [pc, #8] ; (8007848 ) +} + 800783e: 4618 mov r0, r3 + 8007840: 3708 adds r7, #8 + 8007842: 46bd mov sp, r7 + 8007844: bd80 pop {r7, pc} + 8007846: bf00 nop + 8007848: 200009a8 .word 0x200009a8 + 800784c: 08007fdc .word 0x08007fdc + +08007850 : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 8007850: b580 push {r7, lr} + 8007852: b082 sub sp, #8 + 8007854: af00 add r7, sp, #0 + 8007856: 4603 mov r3, r0 + 8007858: 6039 str r1, [r7, #0] + 800785a: 71fb strb r3, [r7, #7] + UNUSED(speed); + USBD_GetString((uint8_t *)USBD_MANUFACTURER_STRING, USBD_StrDesc, length); + 800785c: 683a ldr r2, [r7, #0] + 800785e: 4904 ldr r1, [pc, #16] ; (8007870 ) + 8007860: 4804 ldr r0, [pc, #16] ; (8007874 ) + 8007862: f7ff fea5 bl 80075b0 + return USBD_StrDesc; + 8007866: 4b02 ldr r3, [pc, #8] ; (8007870 ) +} + 8007868: 4618 mov r0, r3 + 800786a: 3708 adds r7, #8 + 800786c: 46bd mov sp, r7 + 800786e: bd80 pop {r7, pc} + 8007870: 200009a8 .word 0x200009a8 + 8007874: 08007ffc .word 0x08007ffc + +08007878 : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 8007878: b580 push {r7, lr} + 800787a: b082 sub sp, #8 + 800787c: af00 add r7, sp, #0 + 800787e: 4603 mov r3, r0 + 8007880: 6039 str r1, [r7, #0] + 8007882: 71fb strb r3, [r7, #7] + UNUSED(speed); + *length = USB_SIZ_STRING_SERIAL; + 8007884: 683b ldr r3, [r7, #0] + 8007886: 221a movs r2, #26 + 8007888: 801a strh r2, [r3, #0] + + /* Update the serial number string descriptor with the data from the unique + * ID */ + Get_SerialNum(); + 800788a: f000 f843 bl 8007914 + /* USER CODE BEGIN USBD_FS_SerialStrDescriptor */ + + /* USER CODE END USBD_FS_SerialStrDescriptor */ + return (uint8_t *) USBD_StringSerial; + 800788e: 4b02 ldr r3, [pc, #8] ; (8007898 ) +} + 8007890: 4618 mov r0, r3 + 8007892: 3708 adds r7, #8 + 8007894: 46bd mov sp, r7 + 8007896: bd80 pop {r7, pc} + 8007898: 200000a4 .word 0x200000a4 + +0800789c : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 800789c: b580 push {r7, lr} + 800789e: b082 sub sp, #8 + 80078a0: af00 add r7, sp, #0 + 80078a2: 4603 mov r3, r0 + 80078a4: 6039 str r1, [r7, #0] + 80078a6: 71fb strb r3, [r7, #7] + if(speed == USBD_SPEED_HIGH) + 80078a8: 79fb ldrb r3, [r7, #7] + 80078aa: 2b00 cmp r3, #0 + 80078ac: d105 bne.n 80078ba + { + USBD_GetString((uint8_t *)USBD_CONFIGURATION_STRING_FS, USBD_StrDesc, length); + 80078ae: 683a ldr r2, [r7, #0] + 80078b0: 4907 ldr r1, [pc, #28] ; (80078d0 ) + 80078b2: 4808 ldr r0, [pc, #32] ; (80078d4 ) + 80078b4: f7ff fe7c bl 80075b0 + 80078b8: e004 b.n 80078c4 + } + else + { + USBD_GetString((uint8_t *)USBD_CONFIGURATION_STRING_FS, USBD_StrDesc, length); + 80078ba: 683a ldr r2, [r7, #0] + 80078bc: 4904 ldr r1, [pc, #16] ; (80078d0 ) + 80078be: 4805 ldr r0, [pc, #20] ; (80078d4 ) + 80078c0: f7ff fe76 bl 80075b0 + } + return USBD_StrDesc; + 80078c4: 4b02 ldr r3, [pc, #8] ; (80078d0 ) +} + 80078c6: 4618 mov r0, r3 + 80078c8: 3708 adds r7, #8 + 80078ca: 46bd mov sp, r7 + 80078cc: bd80 pop {r7, pc} + 80078ce: bf00 nop + 80078d0: 200009a8 .word 0x200009a8 + 80078d4: 08008010 .word 0x08008010 + +080078d8 : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 80078d8: b580 push {r7, lr} + 80078da: b082 sub sp, #8 + 80078dc: af00 add r7, sp, #0 + 80078de: 4603 mov r3, r0 + 80078e0: 6039 str r1, [r7, #0] + 80078e2: 71fb strb r3, [r7, #7] + if(speed == 0) + 80078e4: 79fb ldrb r3, [r7, #7] + 80078e6: 2b00 cmp r3, #0 + 80078e8: d105 bne.n 80078f6 + { + USBD_GetString((uint8_t *)USBD_INTERFACE_STRING_FS, USBD_StrDesc, length); + 80078ea: 683a ldr r2, [r7, #0] + 80078ec: 4907 ldr r1, [pc, #28] ; (800790c ) + 80078ee: 4808 ldr r0, [pc, #32] ; (8007910 ) + 80078f0: f7ff fe5e bl 80075b0 + 80078f4: e004 b.n 8007900 + } + else + { + USBD_GetString((uint8_t *)USBD_INTERFACE_STRING_FS, USBD_StrDesc, length); + 80078f6: 683a ldr r2, [r7, #0] + 80078f8: 4904 ldr r1, [pc, #16] ; (800790c ) + 80078fa: 4805 ldr r0, [pc, #20] ; (8007910 ) + 80078fc: f7ff fe58 bl 80075b0 + } + return USBD_StrDesc; + 8007900: 4b02 ldr r3, [pc, #8] ; (800790c ) +} + 8007902: 4618 mov r0, r3 + 8007904: 3708 adds r7, #8 + 8007906: 46bd mov sp, r7 + 8007908: bd80 pop {r7, pc} + 800790a: bf00 nop + 800790c: 200009a8 .word 0x200009a8 + 8007910: 0800801c .word 0x0800801c + +08007914 : + * @brief Create the serial number string descriptor + * @param None + * @retval None + */ +static void Get_SerialNum(void) +{ + 8007914: b580 push {r7, lr} + 8007916: b084 sub sp, #16 + 8007918: af00 add r7, sp, #0 + uint32_t deviceserial0, deviceserial1, deviceserial2; + + deviceserial0 = *(uint32_t *) DEVICE_ID1; + 800791a: 4b0f ldr r3, [pc, #60] ; (8007958 ) + 800791c: 681b ldr r3, [r3, #0] + 800791e: 60fb str r3, [r7, #12] + deviceserial1 = *(uint32_t *) DEVICE_ID2; + 8007920: 4b0e ldr r3, [pc, #56] ; (800795c ) + 8007922: 681b ldr r3, [r3, #0] + 8007924: 60bb str r3, [r7, #8] + deviceserial2 = *(uint32_t *) DEVICE_ID3; + 8007926: 4b0e ldr r3, [pc, #56] ; (8007960 ) + 8007928: 681b ldr r3, [r3, #0] + 800792a: 607b str r3, [r7, #4] + + deviceserial0 += deviceserial2; + 800792c: 68fa ldr r2, [r7, #12] + 800792e: 687b ldr r3, [r7, #4] + 8007930: 4413 add r3, r2 + 8007932: 60fb str r3, [r7, #12] + + if (deviceserial0 != 0) + 8007934: 68fb ldr r3, [r7, #12] + 8007936: 2b00 cmp r3, #0 + 8007938: d009 beq.n 800794e + { + IntToUnicode(deviceserial0, &USBD_StringSerial[2], 8); + 800793a: 2208 movs r2, #8 + 800793c: 4909 ldr r1, [pc, #36] ; (8007964 ) + 800793e: 68f8 ldr r0, [r7, #12] + 8007940: f000 f814 bl 800796c + IntToUnicode(deviceserial1, &USBD_StringSerial[18], 4); + 8007944: 2204 movs r2, #4 + 8007946: 4908 ldr r1, [pc, #32] ; (8007968 ) + 8007948: 68b8 ldr r0, [r7, #8] + 800794a: f000 f80f bl 800796c + } +} + 800794e: bf00 nop + 8007950: 3710 adds r7, #16 + 8007952: 46bd mov sp, r7 + 8007954: bd80 pop {r7, pc} + 8007956: bf00 nop + 8007958: 1ffff7e8 .word 0x1ffff7e8 + 800795c: 1ffff7ec .word 0x1ffff7ec + 8007960: 1ffff7f0 .word 0x1ffff7f0 + 8007964: 200000a6 .word 0x200000a6 + 8007968: 200000b6 .word 0x200000b6 + +0800796c : + * @param pbuf: pointer to the buffer + * @param len: buffer length + * @retval None + */ +static void IntToUnicode(uint32_t value, uint8_t * pbuf, uint8_t len) +{ + 800796c: b480 push {r7} + 800796e: b087 sub sp, #28 + 8007970: af00 add r7, sp, #0 + 8007972: 60f8 str r0, [r7, #12] + 8007974: 60b9 str r1, [r7, #8] + 8007976: 4613 mov r3, r2 + 8007978: 71fb strb r3, [r7, #7] + uint8_t idx = 0; + 800797a: 2300 movs r3, #0 + 800797c: 75fb strb r3, [r7, #23] + + for (idx = 0; idx < len; idx++) + 800797e: 2300 movs r3, #0 + 8007980: 75fb strb r3, [r7, #23] + 8007982: e027 b.n 80079d4 + { + if (((value >> 28)) < 0xA) + 8007984: 68fb ldr r3, [r7, #12] + 8007986: 0f1b lsrs r3, r3, #28 + 8007988: 2b09 cmp r3, #9 + 800798a: d80b bhi.n 80079a4 + { + pbuf[2 * idx] = (value >> 28) + '0'; + 800798c: 68fb ldr r3, [r7, #12] + 800798e: 0f1b lsrs r3, r3, #28 + 8007990: b2da uxtb r2, r3 + 8007992: 7dfb ldrb r3, [r7, #23] + 8007994: 005b lsls r3, r3, #1 + 8007996: 4619 mov r1, r3 + 8007998: 68bb ldr r3, [r7, #8] + 800799a: 440b add r3, r1 + 800799c: 3230 adds r2, #48 ; 0x30 + 800799e: b2d2 uxtb r2, r2 + 80079a0: 701a strb r2, [r3, #0] + 80079a2: e00a b.n 80079ba + } + else + { + pbuf[2 * idx] = (value >> 28) + 'A' - 10; + 80079a4: 68fb ldr r3, [r7, #12] + 80079a6: 0f1b lsrs r3, r3, #28 + 80079a8: b2da uxtb r2, r3 + 80079aa: 7dfb ldrb r3, [r7, #23] + 80079ac: 005b lsls r3, r3, #1 + 80079ae: 4619 mov r1, r3 + 80079b0: 68bb ldr r3, [r7, #8] + 80079b2: 440b add r3, r1 + 80079b4: 3237 adds r2, #55 ; 0x37 + 80079b6: b2d2 uxtb r2, r2 + 80079b8: 701a strb r2, [r3, #0] + } + + value = value << 4; + 80079ba: 68fb ldr r3, [r7, #12] + 80079bc: 011b lsls r3, r3, #4 + 80079be: 60fb str r3, [r7, #12] + + pbuf[2 * idx + 1] = 0; + 80079c0: 7dfb ldrb r3, [r7, #23] + 80079c2: 005b lsls r3, r3, #1 + 80079c4: 3301 adds r3, #1 + 80079c6: 68ba ldr r2, [r7, #8] + 80079c8: 4413 add r3, r2 + 80079ca: 2200 movs r2, #0 + 80079cc: 701a strb r2, [r3, #0] + for (idx = 0; idx < len; idx++) + 80079ce: 7dfb ldrb r3, [r7, #23] + 80079d0: 3301 adds r3, #1 + 80079d2: 75fb strb r3, [r7, #23] + 80079d4: 7dfa ldrb r2, [r7, #23] + 80079d6: 79fb ldrb r3, [r7, #7] + 80079d8: 429a cmp r2, r3 + 80079da: d3d3 bcc.n 8007984 + } +} + 80079dc: bf00 nop + 80079de: bf00 nop + 80079e0: 371c adds r7, #28 + 80079e2: 46bd mov sp, r7 + 80079e4: bc80 pop {r7} + 80079e6: 4770 bx lr + +080079e8 : +/** + * @brief Memory initialization routine. + * @retval USBD_OK if operation is successful, MAL_FAIL else. + */ +uint16_t MEM_If_Init_FS(void) +{ + 80079e8: b480 push {r7} + 80079ea: af00 add r7, sp, #0 + /* USER CODE BEGIN 0 */ + return (USBD_OK); + 80079ec: 2300 movs r3, #0 + /* USER CODE END 0 */ +} + 80079ee: 4618 mov r0, r3 + 80079f0: 46bd mov sp, r7 + 80079f2: bc80 pop {r7} + 80079f4: 4770 bx lr + +080079f6 : +/** + * @brief De-Initializes Memory + * @retval USBD_OK if operation is successful, MAL_FAIL else + */ +uint16_t MEM_If_DeInit_FS(void) +{ + 80079f6: b480 push {r7} + 80079f8: af00 add r7, sp, #0 + /* USER CODE BEGIN 1 */ + return (USBD_OK); + 80079fa: 2300 movs r3, #0 + /* USER CODE END 1 */ +} + 80079fc: 4618 mov r0, r3 + 80079fe: 46bd mov sp, r7 + 8007a00: bc80 pop {r7} + 8007a02: 4770 bx lr + +08007a04 : + * @brief Erase sector. + * @param Add: Address of sector to be erased. + * @retval 0 if operation is successful, MAL_FAIL else. + */ +uint16_t MEM_If_Erase_FS(uint32_t Add) +{ + 8007a04: b480 push {r7} + 8007a06: b083 sub sp, #12 + 8007a08: af00 add r7, sp, #0 + 8007a0a: 6078 str r0, [r7, #4] + /* USER CODE BEGIN 2 */ + + return (USBD_OK); + 8007a0c: 2300 movs r3, #0 + /* USER CODE END 2 */ +} + 8007a0e: 4618 mov r0, r3 + 8007a10: 370c adds r7, #12 + 8007a12: 46bd mov sp, r7 + 8007a14: bc80 pop {r7} + 8007a16: 4770 bx lr + +08007a18 : + * @param dest: Pointer to the destination buffer. + * @param Len: Number of data to be written (in bytes). + * @retval USBD_OK if operation is successful, MAL_FAIL else. + */ +uint16_t MEM_If_Write_FS(uint8_t *src, uint8_t *dest, uint32_t Len) +{ + 8007a18: b480 push {r7} + 8007a1a: b085 sub sp, #20 + 8007a1c: af00 add r7, sp, #0 + 8007a1e: 60f8 str r0, [r7, #12] + 8007a20: 60b9 str r1, [r7, #8] + 8007a22: 607a str r2, [r7, #4] + /* USER CODE BEGIN 3 */ + return (USBD_OK); + 8007a24: 2300 movs r3, #0 + /* USER CODE END 3 */ +} + 8007a26: 4618 mov r0, r3 + 8007a28: 3714 adds r7, #20 + 8007a2a: 46bd mov sp, r7 + 8007a2c: bc80 pop {r7} + 8007a2e: 4770 bx lr + +08007a30 : + * @param dest: Pointer to the destination buffer. + * @param Len: Number of data to be read (in bytes). + * @retval Pointer to the physical address where data should be read. + */ +uint8_t *MEM_If_Read_FS(uint8_t *src, uint8_t *dest, uint32_t Len) +{ + 8007a30: b480 push {r7} + 8007a32: b085 sub sp, #20 + 8007a34: af00 add r7, sp, #0 + 8007a36: 60f8 str r0, [r7, #12] + 8007a38: 60b9 str r1, [r7, #8] + 8007a3a: 607a str r2, [r7, #4] + /* Return a valid address to avoid HardFault */ + /* USER CODE BEGIN 4 */ + return (uint8_t*)(USBD_OK); + 8007a3c: 2300 movs r3, #0 + /* USER CODE END 4 */ +} + 8007a3e: 4618 mov r0, r3 + 8007a40: 3714 adds r7, #20 + 8007a42: 46bd mov sp, r7 + 8007a44: bc80 pop {r7} + 8007a46: 4770 bx lr + +08007a48 : + * @param Cmd: Number of data to be read (in bytes) + * @param buffer: used for returning the time necessary for a program or an erase operation + * @retval USBD_OK if operation is successful + */ +uint16_t MEM_If_GetStatus_FS(uint32_t Add, uint8_t Cmd, uint8_t *buffer) +{ + 8007a48: b480 push {r7} + 8007a4a: b085 sub sp, #20 + 8007a4c: af00 add r7, sp, #0 + 8007a4e: 60f8 str r0, [r7, #12] + 8007a50: 460b mov r3, r1 + 8007a52: 607a str r2, [r7, #4] + 8007a54: 72fb strb r3, [r7, #11] + /* USER CODE BEGIN 5 */ + switch (Cmd) + 8007a56: 7afb ldrb r3, [r7, #11] + 8007a58: 2b01 cmp r3, #1 + break; + + case DFU_MEDIA_ERASE: + default: + + break; + 8007a5a: bf00 nop + } + return (USBD_OK); + 8007a5c: 2300 movs r3, #0 + /* USER CODE END 5 */ +} + 8007a5e: 4618 mov r0, r3 + 8007a60: 3714 adds r7, #20 + 8007a62: 46bd mov sp, r7 + 8007a64: bc80 pop {r7} + 8007a66: 4770 bx lr + +08007a68 : + LL Driver Callbacks (PCD -> USB Device Library) +*******************************************************************************/ +/* MSP Init */ + +void HAL_PCD_MspInit(PCD_HandleTypeDef* pcdHandle) +{ + 8007a68: b580 push {r7, lr} + 8007a6a: b084 sub sp, #16 + 8007a6c: af00 add r7, sp, #0 + 8007a6e: 6078 str r0, [r7, #4] + if(pcdHandle->Instance==USB) + 8007a70: 687b ldr r3, [r7, #4] + 8007a72: 681b ldr r3, [r3, #0] + 8007a74: 4a0d ldr r2, [pc, #52] ; (8007aac ) + 8007a76: 4293 cmp r3, r2 + 8007a78: d113 bne.n 8007aa2 + { + /* USER CODE BEGIN USB_MspInit 0 */ + + /* USER CODE END USB_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_USB_CLK_ENABLE(); + 8007a7a: 4b0d ldr r3, [pc, #52] ; (8007ab0 ) + 8007a7c: 69db ldr r3, [r3, #28] + 8007a7e: 4a0c ldr r2, [pc, #48] ; (8007ab0 ) + 8007a80: f443 0300 orr.w r3, r3, #8388608 ; 0x800000 + 8007a84: 61d3 str r3, [r2, #28] + 8007a86: 4b0a ldr r3, [pc, #40] ; (8007ab0 ) + 8007a88: 69db ldr r3, [r3, #28] + 8007a8a: f403 0300 and.w r3, r3, #8388608 ; 0x800000 + 8007a8e: 60fb str r3, [r7, #12] + 8007a90: 68fb ldr r3, [r7, #12] + + /* Peripheral interrupt init */ + HAL_NVIC_SetPriority(USB_LP_CAN1_RX0_IRQn, 0, 0); + 8007a92: 2200 movs r2, #0 + 8007a94: 2100 movs r1, #0 + 8007a96: 2014 movs r0, #20 + 8007a98: f7f9 f975 bl 8000d86 + HAL_NVIC_EnableIRQ(USB_LP_CAN1_RX0_IRQn); + 8007a9c: 2014 movs r0, #20 + 8007a9e: f7f9 f98e bl 8000dbe + /* USER CODE BEGIN USB_MspInit 1 */ + + /* USER CODE END USB_MspInit 1 */ + } +} + 8007aa2: bf00 nop + 8007aa4: 3710 adds r7, #16 + 8007aa6: 46bd mov sp, r7 + 8007aa8: bd80 pop {r7, pc} + 8007aaa: bf00 nop + 8007aac: 40005c00 .word 0x40005c00 + 8007ab0: 40021000 .word 0x40021000 + +08007ab4 : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 8007ab4: b580 push {r7, lr} + 8007ab6: b082 sub sp, #8 + 8007ab8: af00 add r7, sp, #0 + 8007aba: 6078 str r0, [r7, #4] + USBD_LL_SetupStage((USBD_HandleTypeDef*)hpcd->pData, (uint8_t *)hpcd->Setup); + 8007abc: 687b ldr r3, [r7, #4] + 8007abe: f8d3 22e8 ldr.w r2, [r3, #744] ; 0x2e8 + 8007ac2: 687b ldr r3, [r7, #4] + 8007ac4: f503 732c add.w r3, r3, #688 ; 0x2b0 + 8007ac8: 4619 mov r1, r3 + 8007aca: 4610 mov r0, r2 + 8007acc: f7fe fe2e bl 800672c +} + 8007ad0: bf00 nop + 8007ad2: 3708 adds r7, #8 + 8007ad4: 46bd mov sp, r7 + 8007ad6: bd80 pop {r7, pc} + +08007ad8 : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#else +void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 8007ad8: b580 push {r7, lr} + 8007ada: b082 sub sp, #8 + 8007adc: af00 add r7, sp, #0 + 8007ade: 6078 str r0, [r7, #4] + 8007ae0: 460b mov r3, r1 + 8007ae2: 70fb strb r3, [r7, #3] + USBD_LL_DataOutStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->OUT_ep[epnum].xfer_buff); + 8007ae4: 687b ldr r3, [r7, #4] + 8007ae6: f8d3 02e8 ldr.w r0, [r3, #744] ; 0x2e8 + 8007aea: 78fa ldrb r2, [r7, #3] + 8007aec: 6879 ldr r1, [r7, #4] + 8007aee: 4613 mov r3, r2 + 8007af0: 009b lsls r3, r3, #2 + 8007af2: 4413 add r3, r2 + 8007af4: 00db lsls r3, r3, #3 + 8007af6: 440b add r3, r1 + 8007af8: f503 73be add.w r3, r3, #380 ; 0x17c + 8007afc: 681a ldr r2, [r3, #0] + 8007afe: 78fb ldrb r3, [r7, #3] + 8007b00: 4619 mov r1, r3 + 8007b02: f7fe fe60 bl 80067c6 +} + 8007b06: bf00 nop + 8007b08: 3708 adds r7, #8 + 8007b0a: 46bd mov sp, r7 + 8007b0c: bd80 pop {r7, pc} + +08007b0e : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#else +void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 8007b0e: b580 push {r7, lr} + 8007b10: b082 sub sp, #8 + 8007b12: af00 add r7, sp, #0 + 8007b14: 6078 str r0, [r7, #4] + 8007b16: 460b mov r3, r1 + 8007b18: 70fb strb r3, [r7, #3] + USBD_LL_DataInStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->IN_ep[epnum].xfer_buff); + 8007b1a: 687b ldr r3, [r7, #4] + 8007b1c: f8d3 02e8 ldr.w r0, [r3, #744] ; 0x2e8 + 8007b20: 78fa ldrb r2, [r7, #3] + 8007b22: 6879 ldr r1, [r7, #4] + 8007b24: 4613 mov r3, r2 + 8007b26: 009b lsls r3, r3, #2 + 8007b28: 4413 add r3, r2 + 8007b2a: 00db lsls r3, r3, #3 + 8007b2c: 440b add r3, r1 + 8007b2e: 333c adds r3, #60 ; 0x3c + 8007b30: 681a ldr r2, [r3, #0] + 8007b32: 78fb ldrb r3, [r7, #3] + 8007b34: 4619 mov r1, r3 + 8007b36: f7fe feb7 bl 80068a8 +} + 8007b3a: bf00 nop + 8007b3c: 3708 adds r7, #8 + 8007b3e: 46bd mov sp, r7 + 8007b40: bd80 pop {r7, pc} + +08007b42 : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_SOFCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 8007b42: b580 push {r7, lr} + 8007b44: b082 sub sp, #8 + 8007b46: af00 add r7, sp, #0 + 8007b48: 6078 str r0, [r7, #4] + USBD_LL_SOF((USBD_HandleTypeDef*)hpcd->pData); + 8007b4a: 687b ldr r3, [r7, #4] + 8007b4c: f8d3 32e8 ldr.w r3, [r3, #744] ; 0x2e8 + 8007b50: 4618 mov r0, r3 + 8007b52: f7fe ffc7 bl 8006ae4 +} + 8007b56: bf00 nop + 8007b58: 3708 adds r7, #8 + 8007b5a: 46bd mov sp, r7 + 8007b5c: bd80 pop {r7, pc} + +08007b5e : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_ResetCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 8007b5e: b580 push {r7, lr} + 8007b60: b084 sub sp, #16 + 8007b62: af00 add r7, sp, #0 + 8007b64: 6078 str r0, [r7, #4] + USBD_SpeedTypeDef speed = USBD_SPEED_FULL; + 8007b66: 2301 movs r3, #1 + 8007b68: 73fb strb r3, [r7, #15] + + if ( hpcd->Init.speed != PCD_SPEED_FULL) + 8007b6a: 687b ldr r3, [r7, #4] + 8007b6c: 689b ldr r3, [r3, #8] + 8007b6e: 2b02 cmp r3, #2 + 8007b70: d001 beq.n 8007b76 + { + Error_Handler(); + 8007b72: f7f8 fc3d bl 80003f0 + } + /* Set Speed. */ + USBD_LL_SetSpeed((USBD_HandleTypeDef*)hpcd->pData, speed); + 8007b76: 687b ldr r3, [r7, #4] + 8007b78: f8d3 32e8 ldr.w r3, [r3, #744] ; 0x2e8 + 8007b7c: 7bfa ldrb r2, [r7, #15] + 8007b7e: 4611 mov r1, r2 + 8007b80: 4618 mov r0, r3 + 8007b82: f7fe ff77 bl 8006a74 + + /* Reset Device. */ + USBD_LL_Reset((USBD_HandleTypeDef*)hpcd->pData); + 8007b86: 687b ldr r3, [r7, #4] + 8007b88: f8d3 32e8 ldr.w r3, [r3, #744] ; 0x2e8 + 8007b8c: 4618 mov r0, r3 + 8007b8e: f7fe ff30 bl 80069f2 +} + 8007b92: bf00 nop + 8007b94: 3710 adds r7, #16 + 8007b96: 46bd mov sp, r7 + 8007b98: bd80 pop {r7, pc} + ... + +08007b9c : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 8007b9c: b580 push {r7, lr} + 8007b9e: b082 sub sp, #8 + 8007ba0: af00 add r7, sp, #0 + 8007ba2: 6078 str r0, [r7, #4] + /* Inform USB library that core enters in suspend Mode. */ + USBD_LL_Suspend((USBD_HandleTypeDef*)hpcd->pData); + 8007ba4: 687b ldr r3, [r7, #4] + 8007ba6: f8d3 32e8 ldr.w r3, [r3, #744] ; 0x2e8 + 8007baa: 4618 mov r0, r3 + 8007bac: f7fe ff71 bl 8006a92 + /* Enter in STOP mode. */ + /* USER CODE BEGIN 2 */ + if (hpcd->Init.low_power_enable) + 8007bb0: 687b ldr r3, [r7, #4] + 8007bb2: 699b ldr r3, [r3, #24] + 8007bb4: 2b00 cmp r3, #0 + 8007bb6: d005 beq.n 8007bc4 + { + /* Set SLEEPDEEP bit and SleepOnExit of Cortex System Control Register. */ + SCB->SCR |= (uint32_t)((uint32_t)(SCB_SCR_SLEEPDEEP_Msk | SCB_SCR_SLEEPONEXIT_Msk)); + 8007bb8: 4b04 ldr r3, [pc, #16] ; (8007bcc ) + 8007bba: 691b ldr r3, [r3, #16] + 8007bbc: 4a03 ldr r2, [pc, #12] ; (8007bcc ) + 8007bbe: f043 0306 orr.w r3, r3, #6 + 8007bc2: 6113 str r3, [r2, #16] + } + /* USER CODE END 2 */ +} + 8007bc4: bf00 nop + 8007bc6: 3708 adds r7, #8 + 8007bc8: 46bd mov sp, r7 + 8007bca: bd80 pop {r7, pc} + 8007bcc: e000ed00 .word 0xe000ed00 + +08007bd0 : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 8007bd0: b580 push {r7, lr} + 8007bd2: b082 sub sp, #8 + 8007bd4: af00 add r7, sp, #0 + 8007bd6: 6078 str r0, [r7, #4] + /* USER CODE BEGIN 3 */ + + /* USER CODE END 3 */ + USBD_LL_Resume((USBD_HandleTypeDef*)hpcd->pData); + 8007bd8: 687b ldr r3, [r7, #4] + 8007bda: f8d3 32e8 ldr.w r3, [r3, #744] ; 0x2e8 + 8007bde: 4618 mov r0, r3 + 8007be0: f7fe ff6b bl 8006aba +} + 8007be4: bf00 nop + 8007be6: 3708 adds r7, #8 + 8007be8: 46bd mov sp, r7 + 8007bea: bd80 pop {r7, pc} + +08007bec : + * @brief Initializes the low level portion of the device driver. + * @param pdev: Device handle + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev) +{ + 8007bec: b580 push {r7, lr} + 8007bee: b082 sub sp, #8 + 8007bf0: af00 add r7, sp, #0 + 8007bf2: 6078 str r0, [r7, #4] + /* Init USB Ip. */ + /* Link the driver to the stack. */ + hpcd_USB_FS.pData = pdev; + 8007bf4: 4a1b ldr r2, [pc, #108] ; (8007c64 ) + 8007bf6: 687b ldr r3, [r7, #4] + 8007bf8: f8c2 32e8 str.w r3, [r2, #744] ; 0x2e8 + pdev->pData = &hpcd_USB_FS; + 8007bfc: 687b ldr r3, [r7, #4] + 8007bfe: 4a19 ldr r2, [pc, #100] ; (8007c64 ) + 8007c00: f8c3 22c0 str.w r2, [r3, #704] ; 0x2c0 + + hpcd_USB_FS.Instance = USB; + 8007c04: 4b17 ldr r3, [pc, #92] ; (8007c64 ) + 8007c06: 4a18 ldr r2, [pc, #96] ; (8007c68 ) + 8007c08: 601a str r2, [r3, #0] + hpcd_USB_FS.Init.dev_endpoints = 8; + 8007c0a: 4b16 ldr r3, [pc, #88] ; (8007c64 ) + 8007c0c: 2208 movs r2, #8 + 8007c0e: 605a str r2, [r3, #4] + hpcd_USB_FS.Init.speed = PCD_SPEED_FULL; + 8007c10: 4b14 ldr r3, [pc, #80] ; (8007c64 ) + 8007c12: 2202 movs r2, #2 + 8007c14: 609a str r2, [r3, #8] + hpcd_USB_FS.Init.low_power_enable = DISABLE; + 8007c16: 4b13 ldr r3, [pc, #76] ; (8007c64 ) + 8007c18: 2200 movs r2, #0 + 8007c1a: 619a str r2, [r3, #24] + hpcd_USB_FS.Init.lpm_enable = DISABLE; + 8007c1c: 4b11 ldr r3, [pc, #68] ; (8007c64 ) + 8007c1e: 2200 movs r2, #0 + 8007c20: 61da str r2, [r3, #28] + hpcd_USB_FS.Init.battery_charging_enable = DISABLE; + 8007c22: 4b10 ldr r3, [pc, #64] ; (8007c64 ) + 8007c24: 2200 movs r2, #0 + 8007c26: 621a str r2, [r3, #32] + if (HAL_PCD_Init(&hpcd_USB_FS) != HAL_OK) + 8007c28: 480e ldr r0, [pc, #56] ; (8007c64 ) + 8007c2a: f7f9 fbab bl 8001384 + 8007c2e: 4603 mov r3, r0 + 8007c30: 2b00 cmp r3, #0 + 8007c32: d001 beq.n 8007c38 + { + Error_Handler( ); + 8007c34: f7f8 fbdc bl 80003f0 + HAL_PCD_RegisterDataInStageCallback(&hpcd_USB_FS, PCD_DataInStageCallback); + HAL_PCD_RegisterIsoOutIncpltCallback(&hpcd_USB_FS, PCD_ISOOUTIncompleteCallback); + HAL_PCD_RegisterIsoInIncpltCallback(&hpcd_USB_FS, PCD_ISOINIncompleteCallback); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + /* USER CODE BEGIN EndPoint_Configuration */ + HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x00 , PCD_SNG_BUF, 0x18); + 8007c38: 687b ldr r3, [r7, #4] + 8007c3a: f8d3 02c0 ldr.w r0, [r3, #704] ; 0x2c0 + 8007c3e: 2318 movs r3, #24 + 8007c40: 2200 movs r2, #0 + 8007c42: 2100 movs r1, #0 + 8007c44: f7fa ffe8 bl 8002c18 + HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x80 , PCD_SNG_BUF, 0x58); + 8007c48: 687b ldr r3, [r7, #4] + 8007c4a: f8d3 02c0 ldr.w r0, [r3, #704] ; 0x2c0 + 8007c4e: 2358 movs r3, #88 ; 0x58 + 8007c50: 2200 movs r2, #0 + 8007c52: 2180 movs r1, #128 ; 0x80 + 8007c54: f7fa ffe0 bl 8002c18 + /* USER CODE END EndPoint_Configuration */ + return USBD_OK; + 8007c58: 2300 movs r3, #0 +} + 8007c5a: 4618 mov r0, r3 + 8007c5c: 3708 adds r7, #8 + 8007c5e: 46bd mov sp, r7 + 8007c60: bd80 pop {r7, pc} + 8007c62: bf00 nop + 8007c64: 20000ba8 .word 0x20000ba8 + 8007c68: 40005c00 .word 0x40005c00 + +08007c6c : + * @brief Starts the low level portion of the device driver. + * @param pdev: Device handle + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev) +{ + 8007c6c: b580 push {r7, lr} + 8007c6e: b084 sub sp, #16 + 8007c70: af00 add r7, sp, #0 + 8007c72: 6078 str r0, [r7, #4] + HAL_StatusTypeDef hal_status = HAL_OK; + 8007c74: 2300 movs r3, #0 + 8007c76: 73fb strb r3, [r7, #15] + USBD_StatusTypeDef usb_status = USBD_OK; + 8007c78: 2300 movs r3, #0 + 8007c7a: 73bb strb r3, [r7, #14] + + hal_status = HAL_PCD_Start(pdev->pData); + 8007c7c: 687b ldr r3, [r7, #4] + 8007c7e: f8d3 32c0 ldr.w r3, [r3, #704] ; 0x2c0 + 8007c82: 4618 mov r0, r3 + 8007c84: f7f9 fc89 bl 800159a + 8007c88: 4603 mov r3, r0 + 8007c8a: 73fb strb r3, [r7, #15] + + usb_status = USBD_Get_USB_Status(hal_status); + 8007c8c: 7bfb ldrb r3, [r7, #15] + 8007c8e: 4618 mov r0, r3 + 8007c90: f000 f938 bl 8007f04 + 8007c94: 4603 mov r3, r0 + 8007c96: 73bb strb r3, [r7, #14] + + return usb_status; + 8007c98: 7bbb ldrb r3, [r7, #14] +} + 8007c9a: 4618 mov r0, r3 + 8007c9c: 3710 adds r7, #16 + 8007c9e: 46bd mov sp, r7 + 8007ca0: bd80 pop {r7, pc} + +08007ca2 : + * @brief Stops the low level portion of the device driver. + * @param pdev: Device handle + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_Stop(USBD_HandleTypeDef *pdev) +{ + 8007ca2: b580 push {r7, lr} + 8007ca4: b084 sub sp, #16 + 8007ca6: af00 add r7, sp, #0 + 8007ca8: 6078 str r0, [r7, #4] + HAL_StatusTypeDef hal_status = HAL_OK; + 8007caa: 2300 movs r3, #0 + 8007cac: 73fb strb r3, [r7, #15] + USBD_StatusTypeDef usb_status = USBD_OK; + 8007cae: 2300 movs r3, #0 + 8007cb0: 73bb strb r3, [r7, #14] + + hal_status = HAL_PCD_Stop(pdev->pData); + 8007cb2: 687b ldr r3, [r7, #4] + 8007cb4: f8d3 32c0 ldr.w r3, [r3, #704] ; 0x2c0 + 8007cb8: 4618 mov r0, r3 + 8007cba: f7f9 fc94 bl 80015e6 + 8007cbe: 4603 mov r3, r0 + 8007cc0: 73fb strb r3, [r7, #15] + + usb_status = USBD_Get_USB_Status(hal_status); + 8007cc2: 7bfb ldrb r3, [r7, #15] + 8007cc4: 4618 mov r0, r3 + 8007cc6: f000 f91d bl 8007f04 + 8007cca: 4603 mov r3, r0 + 8007ccc: 73bb strb r3, [r7, #14] + + return usb_status; + 8007cce: 7bbb ldrb r3, [r7, #14] +} + 8007cd0: 4618 mov r0, r3 + 8007cd2: 3710 adds r7, #16 + 8007cd4: 46bd mov sp, r7 + 8007cd6: bd80 pop {r7, pc} + +08007cd8 : + * @param ep_type: Endpoint type + * @param ep_mps: Endpoint max packet size + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t ep_type, uint16_t ep_mps) +{ + 8007cd8: b580 push {r7, lr} + 8007cda: b084 sub sp, #16 + 8007cdc: af00 add r7, sp, #0 + 8007cde: 6078 str r0, [r7, #4] + 8007ce0: 4608 mov r0, r1 + 8007ce2: 4611 mov r1, r2 + 8007ce4: 461a mov r2, r3 + 8007ce6: 4603 mov r3, r0 + 8007ce8: 70fb strb r3, [r7, #3] + 8007cea: 460b mov r3, r1 + 8007cec: 70bb strb r3, [r7, #2] + 8007cee: 4613 mov r3, r2 + 8007cf0: 803b strh r3, [r7, #0] + HAL_StatusTypeDef hal_status = HAL_OK; + 8007cf2: 2300 movs r3, #0 + 8007cf4: 73fb strb r3, [r7, #15] + USBD_StatusTypeDef usb_status = USBD_OK; + 8007cf6: 2300 movs r3, #0 + 8007cf8: 73bb strb r3, [r7, #14] + + hal_status = HAL_PCD_EP_Open(pdev->pData, ep_addr, ep_mps, ep_type); + 8007cfa: 687b ldr r3, [r7, #4] + 8007cfc: f8d3 02c0 ldr.w r0, [r3, #704] ; 0x2c0 + 8007d00: 78bb ldrb r3, [r7, #2] + 8007d02: 883a ldrh r2, [r7, #0] + 8007d04: 78f9 ldrb r1, [r7, #3] + 8007d06: f7f9 fe0e bl 8001926 + 8007d0a: 4603 mov r3, r0 + 8007d0c: 73fb strb r3, [r7, #15] + + usb_status = USBD_Get_USB_Status(hal_status); + 8007d0e: 7bfb ldrb r3, [r7, #15] + 8007d10: 4618 mov r0, r3 + 8007d12: f000 f8f7 bl 8007f04 + 8007d16: 4603 mov r3, r0 + 8007d18: 73bb strb r3, [r7, #14] + + return usb_status; + 8007d1a: 7bbb ldrb r3, [r7, #14] +} + 8007d1c: 4618 mov r0, r3 + 8007d1e: 3710 adds r7, #16 + 8007d20: 46bd mov sp, r7 + 8007d22: bd80 pop {r7, pc} + +08007d24 : + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + 8007d24: b580 push {r7, lr} + 8007d26: b084 sub sp, #16 + 8007d28: af00 add r7, sp, #0 + 8007d2a: 6078 str r0, [r7, #4] + 8007d2c: 460b mov r3, r1 + 8007d2e: 70fb strb r3, [r7, #3] + HAL_StatusTypeDef hal_status = HAL_OK; + 8007d30: 2300 movs r3, #0 + 8007d32: 73fb strb r3, [r7, #15] + USBD_StatusTypeDef usb_status = USBD_OK; + 8007d34: 2300 movs r3, #0 + 8007d36: 73bb strb r3, [r7, #14] + + hal_status = HAL_PCD_EP_SetStall(pdev->pData, ep_addr); + 8007d38: 687b ldr r3, [r7, #4] + 8007d3a: f8d3 32c0 ldr.w r3, [r3, #704] ; 0x2c0 + 8007d3e: 78fa ldrb r2, [r7, #3] + 8007d40: 4611 mov r1, r2 + 8007d42: 4618 mov r0, r3 + 8007d44: f7f9 fed5 bl 8001af2 + 8007d48: 4603 mov r3, r0 + 8007d4a: 73fb strb r3, [r7, #15] + + usb_status = USBD_Get_USB_Status(hal_status); + 8007d4c: 7bfb ldrb r3, [r7, #15] + 8007d4e: 4618 mov r0, r3 + 8007d50: f000 f8d8 bl 8007f04 + 8007d54: 4603 mov r3, r0 + 8007d56: 73bb strb r3, [r7, #14] + + return usb_status; + 8007d58: 7bbb ldrb r3, [r7, #14] +} + 8007d5a: 4618 mov r0, r3 + 8007d5c: 3710 adds r7, #16 + 8007d5e: 46bd mov sp, r7 + 8007d60: bd80 pop {r7, pc} + +08007d62 : + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + 8007d62: b580 push {r7, lr} + 8007d64: b084 sub sp, #16 + 8007d66: af00 add r7, sp, #0 + 8007d68: 6078 str r0, [r7, #4] + 8007d6a: 460b mov r3, r1 + 8007d6c: 70fb strb r3, [r7, #3] + HAL_StatusTypeDef hal_status = HAL_OK; + 8007d6e: 2300 movs r3, #0 + 8007d70: 73fb strb r3, [r7, #15] + USBD_StatusTypeDef usb_status = USBD_OK; + 8007d72: 2300 movs r3, #0 + 8007d74: 73bb strb r3, [r7, #14] + + hal_status = HAL_PCD_EP_ClrStall(pdev->pData, ep_addr); + 8007d76: 687b ldr r3, [r7, #4] + 8007d78: f8d3 32c0 ldr.w r3, [r3, #704] ; 0x2c0 + 8007d7c: 78fa ldrb r2, [r7, #3] + 8007d7e: 4611 mov r1, r2 + 8007d80: 4618 mov r0, r3 + 8007d82: f7f9 ff16 bl 8001bb2 + 8007d86: 4603 mov r3, r0 + 8007d88: 73fb strb r3, [r7, #15] + + usb_status = USBD_Get_USB_Status(hal_status); + 8007d8a: 7bfb ldrb r3, [r7, #15] + 8007d8c: 4618 mov r0, r3 + 8007d8e: f000 f8b9 bl 8007f04 + 8007d92: 4603 mov r3, r0 + 8007d94: 73bb strb r3, [r7, #14] + + return usb_status; + 8007d96: 7bbb ldrb r3, [r7, #14] +} + 8007d98: 4618 mov r0, r3 + 8007d9a: 3710 adds r7, #16 + 8007d9c: 46bd mov sp, r7 + 8007d9e: bd80 pop {r7, pc} + +08007da0 : + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval Stall (1: Yes, 0: No) + */ +uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + 8007da0: b480 push {r7} + 8007da2: b085 sub sp, #20 + 8007da4: af00 add r7, sp, #0 + 8007da6: 6078 str r0, [r7, #4] + 8007da8: 460b mov r3, r1 + 8007daa: 70fb strb r3, [r7, #3] + PCD_HandleTypeDef *hpcd = (PCD_HandleTypeDef*) pdev->pData; + 8007dac: 687b ldr r3, [r7, #4] + 8007dae: f8d3 32c0 ldr.w r3, [r3, #704] ; 0x2c0 + 8007db2: 60fb str r3, [r7, #12] + + if((ep_addr & 0x80) == 0x80) + 8007db4: f997 3003 ldrsb.w r3, [r7, #3] + 8007db8: 2b00 cmp r3, #0 + 8007dba: da0c bge.n 8007dd6 + { + return hpcd->IN_ep[ep_addr & 0x7F].is_stall; + 8007dbc: 78fb ldrb r3, [r7, #3] + 8007dbe: f003 037f and.w r3, r3, #127 ; 0x7f + 8007dc2: 68f9 ldr r1, [r7, #12] + 8007dc4: 1c5a adds r2, r3, #1 + 8007dc6: 4613 mov r3, r2 + 8007dc8: 009b lsls r3, r3, #2 + 8007dca: 4413 add r3, r2 + 8007dcc: 00db lsls r3, r3, #3 + 8007dce: 440b add r3, r1 + 8007dd0: 3302 adds r3, #2 + 8007dd2: 781b ldrb r3, [r3, #0] + 8007dd4: e00b b.n 8007dee + } + else + { + return hpcd->OUT_ep[ep_addr & 0x7F].is_stall; + 8007dd6: 78fb ldrb r3, [r7, #3] + 8007dd8: f003 027f and.w r2, r3, #127 ; 0x7f + 8007ddc: 68f9 ldr r1, [r7, #12] + 8007dde: 4613 mov r3, r2 + 8007de0: 009b lsls r3, r3, #2 + 8007de2: 4413 add r3, r2 + 8007de4: 00db lsls r3, r3, #3 + 8007de6: 440b add r3, r1 + 8007de8: f503 73b5 add.w r3, r3, #362 ; 0x16a + 8007dec: 781b ldrb r3, [r3, #0] + } +} + 8007dee: 4618 mov r0, r3 + 8007df0: 3714 adds r7, #20 + 8007df2: 46bd mov sp, r7 + 8007df4: bc80 pop {r7} + 8007df6: 4770 bx lr + +08007df8 : + * @param pdev: Device handle + * @param dev_addr: Device address + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr) +{ + 8007df8: b580 push {r7, lr} + 8007dfa: b084 sub sp, #16 + 8007dfc: af00 add r7, sp, #0 + 8007dfe: 6078 str r0, [r7, #4] + 8007e00: 460b mov r3, r1 + 8007e02: 70fb strb r3, [r7, #3] + HAL_StatusTypeDef hal_status = HAL_OK; + 8007e04: 2300 movs r3, #0 + 8007e06: 73fb strb r3, [r7, #15] + USBD_StatusTypeDef usb_status = USBD_OK; + 8007e08: 2300 movs r3, #0 + 8007e0a: 73bb strb r3, [r7, #14] + + hal_status = HAL_PCD_SetAddress(pdev->pData, dev_addr); + 8007e0c: 687b ldr r3, [r7, #4] + 8007e0e: f8d3 32c0 ldr.w r3, [r3, #704] ; 0x2c0 + 8007e12: 78fa ldrb r2, [r7, #3] + 8007e14: 4611 mov r1, r2 + 8007e16: 4618 mov r0, r3 + 8007e18: f7f9 fd60 bl 80018dc + 8007e1c: 4603 mov r3, r0 + 8007e1e: 73fb strb r3, [r7, #15] + + usb_status = USBD_Get_USB_Status(hal_status); + 8007e20: 7bfb ldrb r3, [r7, #15] + 8007e22: 4618 mov r0, r3 + 8007e24: f000 f86e bl 8007f04 + 8007e28: 4603 mov r3, r0 + 8007e2a: 73bb strb r3, [r7, #14] + + return usb_status; + 8007e2c: 7bbb ldrb r3, [r7, #14] +} + 8007e2e: 4618 mov r0, r3 + 8007e30: 3710 adds r7, #16 + 8007e32: 46bd mov sp, r7 + 8007e34: bd80 pop {r7, pc} + +08007e36 : + * @param pbuf: Pointer to data to be sent + * @param size: Data size + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size) +{ + 8007e36: b580 push {r7, lr} + 8007e38: b086 sub sp, #24 + 8007e3a: af00 add r7, sp, #0 + 8007e3c: 60f8 str r0, [r7, #12] + 8007e3e: 607a str r2, [r7, #4] + 8007e40: 461a mov r2, r3 + 8007e42: 460b mov r3, r1 + 8007e44: 72fb strb r3, [r7, #11] + 8007e46: 4613 mov r3, r2 + 8007e48: 813b strh r3, [r7, #8] + HAL_StatusTypeDef hal_status = HAL_OK; + 8007e4a: 2300 movs r3, #0 + 8007e4c: 75fb strb r3, [r7, #23] + USBD_StatusTypeDef usb_status = USBD_OK; + 8007e4e: 2300 movs r3, #0 + 8007e50: 75bb strb r3, [r7, #22] + + hal_status = HAL_PCD_EP_Transmit(pdev->pData, ep_addr, pbuf, size); + 8007e52: 68fb ldr r3, [r7, #12] + 8007e54: f8d3 02c0 ldr.w r0, [r3, #704] ; 0x2c0 + 8007e58: 893b ldrh r3, [r7, #8] + 8007e5a: 7af9 ldrb r1, [r7, #11] + 8007e5c: 687a ldr r2, [r7, #4] + 8007e5e: f7f9 fe05 bl 8001a6c + 8007e62: 4603 mov r3, r0 + 8007e64: 75fb strb r3, [r7, #23] + + usb_status = USBD_Get_USB_Status(hal_status); + 8007e66: 7dfb ldrb r3, [r7, #23] + 8007e68: 4618 mov r0, r3 + 8007e6a: f000 f84b bl 8007f04 + 8007e6e: 4603 mov r3, r0 + 8007e70: 75bb strb r3, [r7, #22] + + return usb_status; + 8007e72: 7dbb ldrb r3, [r7, #22] +} + 8007e74: 4618 mov r0, r3 + 8007e76: 3718 adds r7, #24 + 8007e78: 46bd mov sp, r7 + 8007e7a: bd80 pop {r7, pc} + +08007e7c : + * @param pbuf: Pointer to data to be received + * @param size: Data size + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size) +{ + 8007e7c: b580 push {r7, lr} + 8007e7e: b086 sub sp, #24 + 8007e80: af00 add r7, sp, #0 + 8007e82: 60f8 str r0, [r7, #12] + 8007e84: 607a str r2, [r7, #4] + 8007e86: 461a mov r2, r3 + 8007e88: 460b mov r3, r1 + 8007e8a: 72fb strb r3, [r7, #11] + 8007e8c: 4613 mov r3, r2 + 8007e8e: 813b strh r3, [r7, #8] + HAL_StatusTypeDef hal_status = HAL_OK; + 8007e90: 2300 movs r3, #0 + 8007e92: 75fb strb r3, [r7, #23] + USBD_StatusTypeDef usb_status = USBD_OK; + 8007e94: 2300 movs r3, #0 + 8007e96: 75bb strb r3, [r7, #22] + + hal_status = HAL_PCD_EP_Receive(pdev->pData, ep_addr, pbuf, size); + 8007e98: 68fb ldr r3, [r7, #12] + 8007e9a: f8d3 02c0 ldr.w r0, [r3, #704] ; 0x2c0 + 8007e9e: 893b ldrh r3, [r7, #8] + 8007ea0: 7af9 ldrb r1, [r7, #11] + 8007ea2: 687a ldr r2, [r7, #4] + 8007ea4: f7f9 fda5 bl 80019f2 + 8007ea8: 4603 mov r3, r0 + 8007eaa: 75fb strb r3, [r7, #23] + + usb_status = USBD_Get_USB_Status(hal_status); + 8007eac: 7dfb ldrb r3, [r7, #23] + 8007eae: 4618 mov r0, r3 + 8007eb0: f000 f828 bl 8007f04 + 8007eb4: 4603 mov r3, r0 + 8007eb6: 75bb strb r3, [r7, #22] + + return usb_status; + 8007eb8: 7dbb ldrb r3, [r7, #22] +} + 8007eba: 4618 mov r0, r3 + 8007ebc: 3718 adds r7, #24 + 8007ebe: 46bd mov sp, r7 + 8007ec0: bd80 pop {r7, pc} + ... + +08007ec4 : + * @brief Static single allocation. + * @param size: Size of allocated memory + * @retval None + */ +void *USBD_static_malloc(uint32_t size) +{ + 8007ec4: b480 push {r7} + 8007ec6: b083 sub sp, #12 + 8007ec8: af00 add r7, sp, #0 + 8007eca: 6078 str r0, [r7, #4] + static uint32_t mem[(sizeof(USBD_DFU_HandleTypeDef)/4)+1];/* On 32-bit boundary */ + return mem; + 8007ecc: 4b02 ldr r3, [pc, #8] ; (8007ed8 ) +} + 8007ece: 4618 mov r0, r3 + 8007ed0: 370c adds r7, #12 + 8007ed2: 46bd mov sp, r7 + 8007ed4: bc80 pop {r7} + 8007ed6: 4770 bx lr + 8007ed8: 200001f8 .word 0x200001f8 + +08007edc : + * @brief Dummy memory free + * @param p: Pointer to allocated memory address + * @retval None + */ +void USBD_static_free(void *p) +{ + 8007edc: b480 push {r7} + 8007ede: b083 sub sp, #12 + 8007ee0: af00 add r7, sp, #0 + 8007ee2: 6078 str r0, [r7, #4] + +} + 8007ee4: bf00 nop + 8007ee6: 370c adds r7, #12 + 8007ee8: 46bd mov sp, r7 + 8007eea: bc80 pop {r7} + 8007eec: 4770 bx lr + +08007eee : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state) +#else +void HAL_PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 8007eee: b480 push {r7} + 8007ef0: b083 sub sp, #12 + 8007ef2: af00 add r7, sp, #0 + 8007ef4: 6078 str r0, [r7, #4] + 8007ef6: 460b mov r3, r1 + 8007ef8: 70fb strb r3, [r7, #3] + { + /* Configure High connection state. */ + + } + /* USER CODE END 6 */ +} + 8007efa: bf00 nop + 8007efc: 370c adds r7, #12 + 8007efe: 46bd mov sp, r7 + 8007f00: bc80 pop {r7} + 8007f02: 4770 bx lr + +08007f04 : + * @brief Returns the USB status depending on the HAL status: + * @param hal_status: HAL status + * @retval USB status + */ +USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status) +{ + 8007f04: b480 push {r7} + 8007f06: b085 sub sp, #20 + 8007f08: af00 add r7, sp, #0 + 8007f0a: 4603 mov r3, r0 + 8007f0c: 71fb strb r3, [r7, #7] + USBD_StatusTypeDef usb_status = USBD_OK; + 8007f0e: 2300 movs r3, #0 + 8007f10: 73fb strb r3, [r7, #15] + + switch (hal_status) + 8007f12: 79fb ldrb r3, [r7, #7] + 8007f14: 2b03 cmp r3, #3 + 8007f16: d817 bhi.n 8007f48 + 8007f18: a201 add r2, pc, #4 ; (adr r2, 8007f20 ) + 8007f1a: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8007f1e: bf00 nop + 8007f20: 08007f31 .word 0x08007f31 + 8007f24: 08007f37 .word 0x08007f37 + 8007f28: 08007f3d .word 0x08007f3d + 8007f2c: 08007f43 .word 0x08007f43 + { + case HAL_OK : + usb_status = USBD_OK; + 8007f30: 2300 movs r3, #0 + 8007f32: 73fb strb r3, [r7, #15] + break; + 8007f34: e00b b.n 8007f4e + case HAL_ERROR : + usb_status = USBD_FAIL; + 8007f36: 2302 movs r3, #2 + 8007f38: 73fb strb r3, [r7, #15] + break; + 8007f3a: e008 b.n 8007f4e + case HAL_BUSY : + usb_status = USBD_BUSY; + 8007f3c: 2301 movs r3, #1 + 8007f3e: 73fb strb r3, [r7, #15] + break; + 8007f40: e005 b.n 8007f4e + case HAL_TIMEOUT : + usb_status = USBD_FAIL; + 8007f42: 2302 movs r3, #2 + 8007f44: 73fb strb r3, [r7, #15] + break; + 8007f46: e002 b.n 8007f4e + default : + usb_status = USBD_FAIL; + 8007f48: 2302 movs r3, #2 + 8007f4a: 73fb strb r3, [r7, #15] + break; + 8007f4c: bf00 nop + } + return usb_status; + 8007f4e: 7bfb ldrb r3, [r7, #15] +} + 8007f50: 4618 mov r0, r3 + 8007f52: 3714 adds r7, #20 + 8007f54: 46bd mov sp, r7 + 8007f56: bc80 pop {r7} + 8007f58: 4770 bx lr + 8007f5a: bf00 nop + +08007f5c <__libc_init_array>: + 8007f5c: b570 push {r4, r5, r6, lr} + 8007f5e: 2600 movs r6, #0 + 8007f60: 4d0c ldr r5, [pc, #48] ; (8007f94 <__libc_init_array+0x38>) + 8007f62: 4c0d ldr r4, [pc, #52] ; (8007f98 <__libc_init_array+0x3c>) + 8007f64: 1b64 subs r4, r4, r5 + 8007f66: 10a4 asrs r4, r4, #2 + 8007f68: 42a6 cmp r6, r4 + 8007f6a: d109 bne.n 8007f80 <__libc_init_array+0x24> + 8007f6c: f000 f822 bl 8007fb4 <_init> + 8007f70: 2600 movs r6, #0 + 8007f72: 4d0a ldr r5, [pc, #40] ; (8007f9c <__libc_init_array+0x40>) + 8007f74: 4c0a ldr r4, [pc, #40] ; (8007fa0 <__libc_init_array+0x44>) + 8007f76: 1b64 subs r4, r4, r5 + 8007f78: 10a4 asrs r4, r4, #2 + 8007f7a: 42a6 cmp r6, r4 + 8007f7c: d105 bne.n 8007f8a <__libc_init_array+0x2e> + 8007f7e: bd70 pop {r4, r5, r6, pc} + 8007f80: f855 3b04 ldr.w r3, [r5], #4 + 8007f84: 4798 blx r3 + 8007f86: 3601 adds r6, #1 + 8007f88: e7ee b.n 8007f68 <__libc_init_array+0xc> + 8007f8a: f855 3b04 ldr.w r3, [r5], #4 + 8007f8e: 4798 blx r3 + 8007f90: 3601 adds r6, #1 + 8007f92: e7f2 b.n 8007f7a <__libc_init_array+0x1e> + 8007f94: 080080a4 .word 0x080080a4 + 8007f98: 080080a4 .word 0x080080a4 + 8007f9c: 080080a4 .word 0x080080a4 + 8007fa0: 080080a8 .word 0x080080a8 + +08007fa4 : + 8007fa4: 4603 mov r3, r0 + 8007fa6: 4402 add r2, r0 + 8007fa8: 4293 cmp r3, r2 + 8007faa: d100 bne.n 8007fae + 8007fac: 4770 bx lr + 8007fae: f803 1b01 strb.w r1, [r3], #1 + 8007fb2: e7f9 b.n 8007fa8 + +08007fb4 <_init>: + 8007fb4: b5f8 push {r3, r4, r5, r6, r7, lr} + 8007fb6: bf00 nop + 8007fb8: bcf8 pop {r3, r4, r5, r6, r7} + 8007fba: bc08 pop {r3} + 8007fbc: 469e mov lr, r3 + 8007fbe: 4770 bx lr + +08007fc0 <_fini>: + 8007fc0: b5f8 push {r3, r4, r5, r6, r7, lr} + 8007fc2: bf00 nop + 8007fc4: bcf8 pop {r3, r4, r5, r6, r7} + 8007fc6: bc08 pop {r3} + 8007fc8: 469e mov lr, r3 + 8007fca: 4770 bx lr diff --git a/stm32f103/Debug/stm32f103.map b/stm32f103/Debug/stm32f103.map index 5d780da..571b1df 100644 --- a/stm32f103/Debug/stm32f103.map +++ b/stm32f103/Debug/stm32f103.map @@ -1,35 +1,81 @@ Archive member included to satisfy reference by file (symbol) -/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-errno.o) +c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-errno.o) ./Core/Src/syscalls.o (__errno) -/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-exit.o) - /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (exit) -/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-impure.o) - /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-exit.o) (_global_impure_ptr) -/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-init.o) - /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (__libc_init_array) -/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-memset.o) - /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (memset) +c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-exit.o) + c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (exit) +c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-impure.o) + c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-exit.o) (_global_impure_ptr) +c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-init.o) + c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (__libc_init_array) +c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-memset.o) + c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (memset) Allocating common symbols Common symbol size file +hUsbDeviceFS 0x2c4 ./USB_DEVICE/App/usb_device.o +hi2c1 0x54 ./Core/Src/main.o uwTick 0x4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o pFlash 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o +hadc1 0x30 ./Core/Src/main.o +huart1 0x44 ./Core/Src/main.o +hpcd_USB_FS 0x2ec ./USB_DEVICE/Target/usbd_conf.o +USBD_StrDesc 0x200 ./USB_DEVICE/App/usbd_desc.o Discarded input sections - .text 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crti.o - .data 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crti.o - .bss 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crti.o - .data 0x0000000000000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o - .text 0x0000000000000000 0x7c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o - .data 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o - .bss 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o - .ARM.extab 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o - .ARM.exidx 0x0000000000000000 0x10 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crti.o + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crti.o + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crti.o + .data 0x0000000000000000 0x4 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x0000000000000000 0x7c c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.extab 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.exidx 0x0000000000000000 0x10 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o .ARM.attributes - 0x0000000000000000 0x1b /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + 0x0000000000000000 0x1b c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o .group 0x0000000000000000 0xc ./Core/Src/main.o .group 0x0000000000000000 0xc ./Core/Src/main.o .group 0x0000000000000000 0xc ./Core/Src/main.o @@ -101,11 +147,23 @@ Discarded input sections .group 0x0000000000000000 0xc ./Core/Src/stm32f1xx_hal_msp.o .group 0x0000000000000000 0xc ./Core/Src/stm32f1xx_hal_msp.o .group 0x0000000000000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32f1xx_hal_msp.o .text 0x0000000000000000 0x0 ./Core/Src/stm32f1xx_hal_msp.o .data 0x0000000000000000 0x0 ./Core/Src/stm32f1xx_hal_msp.o .bss 0x0000000000000000 0x0 ./Core/Src/stm32f1xx_hal_msp.o + .text.HAL_ADC_MspDeInit + 0x0000000000000000 0x3c ./Core/Src/stm32f1xx_hal_msp.o + .text.HAL_I2C_MspDeInit + 0x0000000000000000 0x44 ./Core/Src/stm32f1xx_hal_msp.o + .text.HAL_UART_MspDeInit + 0x0000000000000000 0x3c ./Core/Src/stm32f1xx_hal_msp.o .debug_macro 0x0000000000000000 0xa9c ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x0000000000000000 0x20f ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x0000000000000000 0x227 ./Core/Src/stm32f1xx_hal_msp.o .debug_macro 0x0000000000000000 0x2e ./Core/Src/stm32f1xx_hal_msp.o .debug_macro 0x0000000000000000 0x22 ./Core/Src/stm32f1xx_hal_msp.o .debug_macro 0x0000000000000000 0x22 ./Core/Src/stm32f1xx_hal_msp.o @@ -134,9 +192,15 @@ Discarded input sections .debug_macro 0x0000000000000000 0x34 ./Core/Src/stm32f1xx_hal_msp.o .debug_macro 0x0000000000000000 0x3c ./Core/Src/stm32f1xx_hal_msp.o .debug_macro 0x0000000000000000 0x57 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x0000000000000000 0x46a ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x0000000000000000 0x1b5 ./Core/Src/stm32f1xx_hal_msp.o .debug_macro 0x0000000000000000 0x88 ./Core/Src/stm32f1xx_hal_msp.o .debug_macro 0x0000000000000000 0x241 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x0000000000000000 0x287 ./Core/Src/stm32f1xx_hal_msp.o .debug_macro 0x0000000000000000 0x141 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x0000000000000000 0x279 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x0000000000000000 0x65 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x0000000000000000 0x249 ./Core/Src/stm32f1xx_hal_msp.o .debug_macro 0x0000000000000000 0x83 ./Core/Src/stm32f1xx_hal_msp.o .group 0x0000000000000000 0xc ./Core/Src/stm32f1xx_it.o .group 0x0000000000000000 0xc ./Core/Src/stm32f1xx_it.o @@ -172,11 +236,17 @@ Discarded input sections .group 0x0000000000000000 0xc ./Core/Src/stm32f1xx_it.o .group 0x0000000000000000 0xc ./Core/Src/stm32f1xx_it.o .group 0x0000000000000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32f1xx_it.o .text 0x0000000000000000 0x0 ./Core/Src/stm32f1xx_it.o .data 0x0000000000000000 0x0 ./Core/Src/stm32f1xx_it.o .bss 0x0000000000000000 0x0 ./Core/Src/stm32f1xx_it.o .debug_macro 0x0000000000000000 0xa9c ./Core/Src/stm32f1xx_it.o - .debug_macro 0x0000000000000000 0x20f ./Core/Src/stm32f1xx_it.o + .debug_macro 0x0000000000000000 0x227 ./Core/Src/stm32f1xx_it.o .debug_macro 0x0000000000000000 0x2e ./Core/Src/stm32f1xx_it.o .debug_macro 0x0000000000000000 0x22 ./Core/Src/stm32f1xx_it.o .debug_macro 0x0000000000000000 0x22 ./Core/Src/stm32f1xx_it.o @@ -205,9 +275,15 @@ Discarded input sections .debug_macro 0x0000000000000000 0x34 ./Core/Src/stm32f1xx_it.o .debug_macro 0x0000000000000000 0x3c ./Core/Src/stm32f1xx_it.o .debug_macro 0x0000000000000000 0x57 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x0000000000000000 0x46a ./Core/Src/stm32f1xx_it.o + .debug_macro 0x0000000000000000 0x1b5 ./Core/Src/stm32f1xx_it.o .debug_macro 0x0000000000000000 0x88 ./Core/Src/stm32f1xx_it.o .debug_macro 0x0000000000000000 0x241 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x0000000000000000 0x287 ./Core/Src/stm32f1xx_it.o .debug_macro 0x0000000000000000 0x141 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x0000000000000000 0x279 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x0000000000000000 0x65 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x0000000000000000 0x249 ./Core/Src/stm32f1xx_it.o .debug_macro 0x0000000000000000 0x83 ./Core/Src/stm32f1xx_it.o .group 0x0000000000000000 0xc ./Core/Src/syscalls.o .group 0x0000000000000000 0xc ./Core/Src/syscalls.o @@ -333,8 +409,8 @@ Discarded input sections .debug_macro 0x0000000000000000 0x189 ./Core/Src/syscalls.o .debug_macro 0x0000000000000000 0x16 ./Core/Src/syscalls.o .debug_macro 0x0000000000000000 0xce ./Core/Src/syscalls.o - .debug_line 0x0000000000000000 0x83e ./Core/Src/syscalls.o - .debug_str 0x0000000000000000 0x8e8d ./Core/Src/syscalls.o + .debug_line 0x0000000000000000 0x802 ./Core/Src/syscalls.o + .debug_str 0x0000000000000000 0x8e89 ./Core/Src/syscalls.o .comment 0x0000000000000000 0x54 ./Core/Src/syscalls.o .debug_frame 0x0000000000000000 0x2ac ./Core/Src/syscalls.o .ARM.attributes @@ -395,8 +471,8 @@ Discarded input sections .debug_macro 0x0000000000000000 0x103 ./Core/Src/sysmem.o .debug_macro 0x0000000000000000 0x6a ./Core/Src/sysmem.o .debug_macro 0x0000000000000000 0x1df ./Core/Src/sysmem.o - .debug_line 0x0000000000000000 0x534 ./Core/Src/sysmem.o - .debug_str 0x0000000000000000 0x6260 ./Core/Src/sysmem.o + .debug_line 0x0000000000000000 0x4f8 ./Core/Src/sysmem.o + .debug_str 0x0000000000000000 0x625c ./Core/Src/sysmem.o .comment 0x0000000000000000 0x54 ./Core/Src/sysmem.o .debug_frame 0x0000000000000000 0x34 ./Core/Src/sysmem.o .ARM.attributes @@ -435,11 +511,15 @@ Discarded input sections .group 0x0000000000000000 0xc ./Core/Src/system_stm32f1xx.o .group 0x0000000000000000 0xc ./Core/Src/system_stm32f1xx.o .group 0x0000000000000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32f1xx.o .text 0x0000000000000000 0x0 ./Core/Src/system_stm32f1xx.o .data 0x0000000000000000 0x0 ./Core/Src/system_stm32f1xx.o .bss 0x0000000000000000 0x0 ./Core/Src/system_stm32f1xx.o - .rodata.APBPrescTable - 0x0000000000000000 0x8 ./Core/Src/system_stm32f1xx.o .text.SystemCoreClockUpdate 0x0000000000000000 0xe4 ./Core/Src/system_stm32f1xx.o .debug_macro 0x0000000000000000 0xa9c ./Core/Src/system_stm32f1xx.o @@ -457,7 +537,7 @@ Discarded input sections .debug_macro 0x0000000000000000 0xd23 ./Core/Src/system_stm32f1xx.o .debug_macro 0x0000000000000000 0xe09e ./Core/Src/system_stm32f1xx.o .debug_macro 0x0000000000000000 0x6d ./Core/Src/system_stm32f1xx.o - .debug_macro 0x0000000000000000 0x20f ./Core/Src/system_stm32f1xx.o + .debug_macro 0x0000000000000000 0x227 ./Core/Src/system_stm32f1xx.o .debug_macro 0x0000000000000000 0x3468 ./Core/Src/system_stm32f1xx.o .debug_macro 0x0000000000000000 0x174 ./Core/Src/system_stm32f1xx.o .debug_macro 0x0000000000000000 0x5c ./Core/Src/system_stm32f1xx.o @@ -472,9 +552,15 @@ Discarded input sections .debug_macro 0x0000000000000000 0x34 ./Core/Src/system_stm32f1xx.o .debug_macro 0x0000000000000000 0x3c ./Core/Src/system_stm32f1xx.o .debug_macro 0x0000000000000000 0x57 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x0000000000000000 0x46a ./Core/Src/system_stm32f1xx.o + .debug_macro 0x0000000000000000 0x1b5 ./Core/Src/system_stm32f1xx.o .debug_macro 0x0000000000000000 0x88 ./Core/Src/system_stm32f1xx.o .debug_macro 0x0000000000000000 0x241 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x0000000000000000 0x287 ./Core/Src/system_stm32f1xx.o .debug_macro 0x0000000000000000 0x141 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x0000000000000000 0x279 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x0000000000000000 0x65 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x0000000000000000 0x249 ./Core/Src/system_stm32f1xx.o .debug_macro 0x0000000000000000 0x83 ./Core/Src/system_stm32f1xx.o .text 0x0000000000000000 0x14 ./Core/Startup/startup_stm32f103c8tx.o .data 0x0000000000000000 0x0 ./Core/Startup/startup_stm32f103c8tx.o @@ -513,6 +599,12 @@ Discarded input sections .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .text 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .data 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .bss 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o @@ -528,8 +620,6 @@ Discarded input sections 0x0000000000000000 0x50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .text.HAL_GetTickFreq 0x0000000000000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_Delay - 0x0000000000000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .text.HAL_SuspendTick 0x0000000000000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .text.HAL_ResumeTick @@ -559,7 +649,7 @@ Discarded input sections .text.HAL_DBGMCU_DisableDBGStandbyMode 0x0000000000000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .debug_macro 0x0000000000000000 0xa9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x0000000000000000 0x20f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x0000000000000000 0x227 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o @@ -588,10 +678,274 @@ Discarded input sections .debug_macro 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .debug_macro 0x0000000000000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .debug_macro 0x0000000000000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x0000000000000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x0000000000000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .debug_macro 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .debug_macro 0x0000000000000000 0x241 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x0000000000000000 0x287 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .debug_macro 0x0000000000000000 0x141 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x0000000000000000 0x279 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x0000000000000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x0000000000000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .debug_macro 0x0000000000000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .data 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_DeInit + 0x0000000000000000 0x184 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_MspInit + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_MspDeInit + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_Start + 0x0000000000000000 0x15c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_Stop + 0x0000000000000000 0x58 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_PollForConversion + 0x0000000000000000 0x20c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_PollForEvent + 0x0000000000000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_Start_IT + 0x0000000000000000 0x16c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_Stop_IT + 0x0000000000000000 0x68 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_Start_DMA + 0x0000000000000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_Stop_DMA + 0x0000000000000000 0x96 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_GetValue + 0x0000000000000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_IRQHandler + 0x0000000000000000 0x186 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_ConvCpltCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_ConvHalfCpltCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_LevelOutOfWindowCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_ErrorCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_AnalogWDGConfig + 0x0000000000000000 0xac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_GetState + 0x0000000000000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_GetError + 0x0000000000000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.ADC_Enable + 0x0000000000000000 0xb4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.ADC_DMAConvCplt + 0x0000000000000000 0x7c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.ADC_DMAHalfConvCplt + 0x0000000000000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.ADC_DMAError + 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0xa9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x227 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0xc3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x3468 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x5be ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x241 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x287 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x141 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x279 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .data 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_Calibration_Start + 0x0000000000000000 0x158 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedStart + 0x0000000000000000 0x10c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedStop + 0x0000000000000000 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedPollForConversion + 0x0000000000000000 0x1f0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedStart_IT + 0x0000000000000000 0x11c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedStop_IT + 0x0000000000000000 0x94 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_MultiModeStart_DMA + 0x0000000000000000 0x16c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_MultiModeStop_DMA + 0x0000000000000000 0xd8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedGetValue + 0x0000000000000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_MultiModeGetValue + 0x0000000000000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedConvCpltCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedConfigChannel + 0x0000000000000000 0x334 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_MultiModeConfigChannel + 0x0000000000000000 0xa4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_info 0x0000000000000000 0xaa7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_abbrev 0x0000000000000000 0x21f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_aranges + 0x0000000000000000 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_ranges 0x0000000000000000 0x70 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x1e2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0xa9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x227 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0xc3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x3468 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x5be ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x241 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x287 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x141 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x279 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x0000000000000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_line 0x0000000000000000 0xd4b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_str 0x0000000000000000 0x85a57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .comment 0x0000000000000000 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_frame 0x0000000000000000 0x200 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .ARM.attributes + 0x0000000000000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o @@ -629,8 +983,6 @@ Discarded input sections .text 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .data 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .bss 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_EnableIRQ - 0x0000000000000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .text.__NVIC_DisableIRQ 0x0000000000000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .text.__NVIC_GetPendingIRQ @@ -647,8 +999,6 @@ Discarded input sections 0x0000000000000000 0x6c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .text.__NVIC_SystemReset 0x0000000000000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_NVIC_EnableIRQ - 0x0000000000000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .text.HAL_NVIC_DisableIRQ 0x0000000000000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .text.HAL_NVIC_SystemReset @@ -672,7 +1022,7 @@ Discarded input sections .text.HAL_SYSTICK_Callback 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .debug_macro 0x0000000000000000 0xa9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x0000000000000000 0x20f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x227 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o @@ -701,9 +1051,15 @@ Discarded input sections .debug_macro 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .debug_macro 0x0000000000000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .debug_macro 0x0000000000000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .debug_macro 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .debug_macro 0x0000000000000000 0x241 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x287 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .debug_macro 0x0000000000000000 0x141 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x279 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .debug_macro 0x0000000000000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o @@ -739,6 +1095,12 @@ Discarded input sections .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .text 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .data 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .bss 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o @@ -773,9 +1135,9 @@ Discarded input sections .debug_aranges 0x0000000000000000 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .debug_ranges 0x0000000000000000 0x70 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x0000000000000000 0x184 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x0000000000000000 0x1d0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .debug_macro 0x0000000000000000 0xa9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x0000000000000000 0x20f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x0000000000000000 0x227 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o @@ -804,12 +1166,18 @@ Discarded input sections .debug_macro 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .debug_macro 0x0000000000000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .debug_macro 0x0000000000000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x0000000000000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x0000000000000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .debug_macro 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .debug_macro 0x0000000000000000 0x241 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x0000000000000000 0x287 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .debug_macro 0x0000000000000000 0x141 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x0000000000000000 0x279 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x0000000000000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x0000000000000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .debug_macro 0x0000000000000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_line 0x0000000000000000 0xd67 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_str 0x0000000000000000 0x7b02f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_line 0x0000000000000000 0xdde ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_str 0x0000000000000000 0x857ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .comment 0x0000000000000000 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .debug_frame 0x0000000000000000 0x208 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o .ARM.attributes @@ -848,6 +1216,12 @@ Discarded input sections .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o .text 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o .data 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o .bss 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o @@ -874,9 +1248,9 @@ Discarded input sections .debug_aranges 0x0000000000000000 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o .debug_ranges 0x0000000000000000 0x50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x0000000000000000 0x184 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x0000000000000000 0x1d0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o .debug_macro 0x0000000000000000 0xa9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x0000000000000000 0x20f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x0000000000000000 0x227 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o @@ -905,12 +1279,18 @@ Discarded input sections .debug_macro 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o .debug_macro 0x0000000000000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o .debug_macro 0x0000000000000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x0000000000000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x0000000000000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o .debug_macro 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o .debug_macro 0x0000000000000000 0x241 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x0000000000000000 0x287 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o .debug_macro 0x0000000000000000 0x141 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x0000000000000000 0x279 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x0000000000000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x0000000000000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o .debug_macro 0x0000000000000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_line 0x0000000000000000 0x937 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_str 0x0000000000000000 0x7ae14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_line 0x0000000000000000 0x9ae ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_str 0x0000000000000000 0x855d2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o .comment 0x0000000000000000 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o .debug_frame 0x0000000000000000 0x174 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o .ARM.attributes @@ -949,6 +1329,12 @@ Discarded input sections .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o .text 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o .data 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o .bss 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o @@ -985,9 +1371,9 @@ Discarded input sections .debug_aranges 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o .debug_ranges 0x0000000000000000 0x78 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x0000000000000000 0x184 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x0000000000000000 0x1d0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o .debug_macro 0x0000000000000000 0xa9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x0000000000000000 0x20f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x0000000000000000 0x227 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o @@ -1016,12 +1402,18 @@ Discarded input sections .debug_macro 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o .debug_macro 0x0000000000000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o .debug_macro 0x0000000000000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x0000000000000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x0000000000000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o .debug_macro 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o .debug_macro 0x0000000000000000 0x241 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x0000000000000000 0x287 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o .debug_macro 0x0000000000000000 0x141 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x0000000000000000 0x279 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x0000000000000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x0000000000000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o .debug_macro 0x0000000000000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_line 0x0000000000000000 0x9ec ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_str 0x0000000000000000 0x7af2a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_line 0x0000000000000000 0xa63 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_str 0x0000000000000000 0x856e8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o .comment 0x0000000000000000 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o .debug_frame 0x0000000000000000 0x20c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o .ARM.attributes @@ -1061,6 +1453,12 @@ Discarded input sections .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o .text 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o .data 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o .bss 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o @@ -1101,9 +1499,9 @@ Discarded input sections .debug_aranges 0x0000000000000000 0x98 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o .debug_ranges 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x0000000000000000 0x196 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x1e2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o .debug_macro 0x0000000000000000 0xa9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x0000000000000000 0x20f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x227 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o @@ -1132,12 +1530,18 @@ Discarded input sections .debug_macro 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o .debug_macro 0x0000000000000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o .debug_macro 0x0000000000000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o .debug_macro 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o .debug_macro 0x0000000000000000 0x241 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x287 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o .debug_macro 0x0000000000000000 0x141 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x279 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o .debug_macro 0x0000000000000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_line 0x0000000000000000 0xadb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_str 0x0000000000000000 0x7b0ee ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_line 0x0000000000000000 0xb52 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_str 0x0000000000000000 0x858ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o .comment 0x0000000000000000 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o .debug_frame 0x0000000000000000 0x258 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o .ARM.attributes @@ -1176,11 +1580,15 @@ Discarded input sections .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .text 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .data 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .bss 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .text.HAL_GPIO_Init - 0x0000000000000000 0x308 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .text.HAL_GPIO_DeInit 0x0000000000000000 0x178 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .text.HAL_GPIO_ReadPin @@ -1195,14 +1603,8 @@ Discarded input sections 0x0000000000000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .text.HAL_GPIO_EXTI_Callback 0x0000000000000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_info 0x0000000000000000 0x701 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_abbrev 0x0000000000000000 0x1e8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_aranges - 0x0000000000000000 0x58 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_ranges 0x0000000000000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x0000000000000000 0x1ef ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .debug_macro 0x0000000000000000 0xa9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x0000000000000000 0x20f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x227 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o @@ -1231,16 +1633,22 @@ Discarded input sections .debug_macro 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .debug_macro 0x0000000000000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .debug_macro 0x0000000000000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .debug_macro 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .debug_macro 0x0000000000000000 0x241 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x287 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .debug_macro 0x0000000000000000 0x141 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x279 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .debug_macro 0x0000000000000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_line 0x0000000000000000 0x9a6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_str 0x0000000000000000 0x7b018 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .comment 0x0000000000000000 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_frame 0x0000000000000000 0x14c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .ARM.attributes - 0x0000000000000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o @@ -1289,9 +1697,9 @@ Discarded input sections .debug_aranges 0x0000000000000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o .debug_ranges 0x0000000000000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x0000000000000000 0x184 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x0000000000000000 0x1d0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o .debug_macro 0x0000000000000000 0xa9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x0000000000000000 0x20f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x0000000000000000 0x227 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o @@ -1320,16 +1728,489 @@ Discarded input sections .debug_macro 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o .debug_macro 0x0000000000000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o .debug_macro 0x0000000000000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x0000000000000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x0000000000000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o .debug_macro 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o .debug_macro 0x0000000000000000 0x241 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x0000000000000000 0x287 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o .debug_macro 0x0000000000000000 0x141 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x0000000000000000 0x279 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x0000000000000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x0000000000000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o .debug_macro 0x0000000000000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_line 0x0000000000000000 0x6a5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_str 0x0000000000000000 0x7ac95 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_line 0x0000000000000000 0x71c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_str 0x0000000000000000 0x85453 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o .comment 0x0000000000000000 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o .debug_frame 0x0000000000000000 0x78 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o .ARM.attributes 0x0000000000000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .data 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_DeInit + 0x0000000000000000 0x5e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_MspInit + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_MspDeInit + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Master_Transmit + 0x0000000000000000 0x1fc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Master_Receive + 0x0000000000000000 0x4c0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Slave_Transmit + 0x0000000000000000 0x22c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Slave_Receive + 0x0000000000000000 0x214 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Master_Transmit_IT + 0x0000000000000000 0x148 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Master_Receive_IT + 0x0000000000000000 0x158 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Slave_Transmit_IT + 0x0000000000000000 0xdc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Slave_Receive_IT + 0x0000000000000000 0xdc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Master_Transmit_DMA + 0x0000000000000000 0x250 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Master_Receive_DMA + 0x0000000000000000 0x250 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Slave_Transmit_DMA + 0x0000000000000000 0x194 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Slave_Receive_DMA + 0x0000000000000000 0x194 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Mem_Write + 0x0000000000000000 0x1f4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Mem_Read + 0x0000000000000000 0x4d0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Mem_Write_IT + 0x0000000000000000 0x160 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Mem_Read_IT + 0x0000000000000000 0x178 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Mem_Write_DMA + 0x0000000000000000 0x29c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Mem_Read_DMA + 0x0000000000000000 0x2fc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_IsDeviceReady + 0x0000000000000000 0x25c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Master_Seq_Transmit_IT + 0x0000000000000000 0x18c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Master_Seq_Transmit_DMA + 0x0000000000000000 0x2c4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Master_Seq_Receive_IT + 0x0000000000000000 0x1f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Master_Seq_Receive_DMA + 0x0000000000000000 0x36c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Slave_Seq_Transmit_IT + 0x0000000000000000 0xe4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Slave_Seq_Transmit_DMA + 0x0000000000000000 0x274 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Slave_Seq_Receive_IT + 0x0000000000000000 0xe4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Slave_Seq_Receive_DMA + 0x0000000000000000 0x274 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_EnableListen_IT + 0x0000000000000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_DisableListen_IT + 0x0000000000000000 0x74 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_Master_Abort_IT + 0x0000000000000000 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_EV_IRQHandler + 0x0000000000000000 0x2e2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_ER_IRQHandler + 0x0000000000000000 0x15e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_MasterTxCpltCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_MasterRxCpltCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_SlaveTxCpltCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_SlaveRxCpltCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_AddrCallback + 0x0000000000000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_ListenCpltCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_MemTxCpltCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_MemRxCpltCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_ErrorCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_AbortCpltCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_GetState + 0x0000000000000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_GetMode + 0x0000000000000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.HAL_I2C_GetError + 0x0000000000000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_MasterTransmit_TXE + 0x0000000000000000 0x138 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_MasterTransmit_BTF + 0x0000000000000000 0xec ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_MemoryTransmit_TXE_BTF + 0x0000000000000000 0x128 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_MasterReceive_RXNE + 0x0000000000000000 0x162 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_MasterReceive_BTF + 0x0000000000000000 0x1d4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_Master_SB + 0x0000000000000000 0x10a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_Master_ADD10 + 0x0000000000000000 0x52 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_Master_ADDR + 0x0000000000000000 0x336 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_SlaveTransmit_TXE + 0x0000000000000000 0x7a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_SlaveTransmit_BTF + 0x0000000000000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_SlaveReceive_RXNE + 0x0000000000000000 0x7c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_SlaveReceive_BTF + 0x0000000000000000 0x42 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_Slave_ADDR + 0x0000000000000000 0x94 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_Slave_STOPF + 0x0000000000000000 0x260 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_Slave_AF + 0x0000000000000000 0xe0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_ITError + 0x0000000000000000 0x264 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_MasterRequestWrite + 0x0000000000000000 0x104 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_MasterRequestRead + 0x0000000000000000 0x19c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_RequestMemoryWrite + 0x0000000000000000 0x12c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_RequestMemoryRead + 0x0000000000000000 0x1d0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_DMAXferCplt + 0x0000000000000000 0x1aa ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_DMAError + 0x0000000000000000 0x6e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_DMAAbort + 0x0000000000000000 0x150 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_WaitOnFlagUntilTimeout + 0x0000000000000000 0xae ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_WaitOnMasterAddressFlagUntilTimeout + 0x0000000000000000 0xfe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_WaitOnTXEFlagUntilTimeout + 0x0000000000000000 0x82 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_WaitOnBTFFlagUntilTimeout + 0x0000000000000000 0x82 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_WaitOnSTOPFlagUntilTimeout + 0x0000000000000000 0x7a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_WaitOnSTOPRequestThroughIT + 0x0000000000000000 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_WaitOnRXNEFlagUntilTimeout + 0x0000000000000000 0xac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_IsAcknowledgeFailed + 0x0000000000000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .text.I2C_ConvertOtherXferOptions + 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0xa9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x227 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0xc3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x3468 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x5be ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x241 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x287 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x141 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x279 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .data 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DeInit + 0x0000000000000000 0x46 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_MspInit + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_MspDeInit + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_WKUP_IRQHandler + 0x0000000000000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DataOutStageCallback + 0x0000000000000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DataInStageCallback + 0x0000000000000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_SetupStageCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_SOFCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_ResetCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_SuspendCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_ResumeCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_ISOOUTIncompleteCallback + 0x0000000000000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_ISOINIncompleteCallback + 0x0000000000000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_ConnectCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DisconnectCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DevConnect + 0x0000000000000000 0x42 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DevDisconnect + 0x0000000000000000 0x42 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_EP_Close + 0x0000000000000000 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_EP_GetRxCount + 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_EP_Flush + 0x0000000000000000 0x5a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_ActivateRemoteWakeup + 0x0000000000000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DeActivateRemoteWakeup + 0x0000000000000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_GetState + 0x0000000000000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0xa9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x227 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0xc3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x3468 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x5be ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x241 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x287 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x141 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x279 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .text 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .data 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .text.HAL_PCDEx_SetConnectionState + 0x0000000000000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .text.HAL_PCDEx_LPM_Callback + 0x0000000000000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .text.HAL_PCDEx_BCD_Callback + 0x0000000000000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0xa9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x227 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0xc3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x3468 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x5be ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x241 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x287 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x141 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x279 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o @@ -1408,9 +2289,9 @@ Discarded input sections .debug_aranges 0x0000000000000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o .debug_ranges 0x0000000000000000 0x98 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x0000000000000000 0x1e4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x230 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o .debug_macro 0x0000000000000000 0xa9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x0000000000000000 0x20f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x227 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o @@ -1439,12 +2320,18 @@ Discarded input sections .debug_macro 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o .debug_macro 0x0000000000000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o .debug_macro 0x0000000000000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o .debug_macro 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o .debug_macro 0x0000000000000000 0x241 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x287 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o .debug_macro 0x0000000000000000 0x141 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x279 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o .debug_macro 0x0000000000000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_line 0x0000000000000000 0x891 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_str 0x0000000000000000 0x7b1b7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_line 0x0000000000000000 0x908 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_str 0x0000000000000000 0x85975 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o .comment 0x0000000000000000 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o .debug_frame 0x0000000000000000 0x270 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o .ARM.attributes @@ -1483,6 +2370,12 @@ Discarded input sections .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .text 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .data 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .bss 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o @@ -1494,12 +2387,6 @@ Discarded input sections 0x0000000000000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .text.HAL_RCC_DisableCSS 0x0000000000000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_GetHCLKFreq - 0x0000000000000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_GetPCLK1Freq - 0x0000000000000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_GetPCLK2Freq - 0x0000000000000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .text.HAL_RCC_GetOscConfig 0x0000000000000000 0x104 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .text.HAL_RCC_GetClockConfig @@ -1509,7 +2396,7 @@ Discarded input sections .text.HAL_RCC_CSSCallback 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .debug_macro 0x0000000000000000 0xa9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x0000000000000000 0x20f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x227 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o @@ -1538,9 +2425,15 @@ Discarded input sections .debug_macro 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .debug_macro 0x0000000000000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .debug_macro 0x0000000000000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .debug_macro 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .debug_macro 0x0000000000000000 0x241 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x287 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .debug_macro 0x0000000000000000 0x141 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x279 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .debug_macro 0x0000000000000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o @@ -1576,24 +2469,22 @@ Discarded input sections .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .text 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .data 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .bss 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .text.HAL_RCCEx_PeriphCLKConfig - 0x0000000000000000 0x16c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .text.HAL_RCCEx_GetPeriphCLKConfig 0x0000000000000000 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .rodata 0x0000000000000000 0x10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .text.HAL_RCCEx_GetPeriphCLKFreq 0x0000000000000000 0x188 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_info 0x0000000000000000 0x480 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_abbrev 0x0000000000000000 0x193 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_aranges - 0x0000000000000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_ranges 0x0000000000000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x0000000000000000 0x184 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .debug_macro 0x0000000000000000 0xa9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x0000000000000000 0x20f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x227 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o @@ -1622,16 +2513,22 @@ Discarded input sections .debug_macro 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .debug_macro 0x0000000000000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .debug_macro 0x0000000000000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .debug_macro 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .debug_macro 0x0000000000000000 0x241 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x287 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .debug_macro 0x0000000000000000 0x141 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x279 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o .debug_macro 0x0000000000000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_line 0x0000000000000000 0x85b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_str 0x0000000000000000 0x7adde ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .comment 0x0000000000000000 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_frame 0x0000000000000000 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .ARM.attributes - 0x0000000000000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o @@ -1673,9 +2570,9 @@ Discarded input sections .debug_abbrev 0x0000000000000000 0x9a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .debug_aranges 0x0000000000000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x0000000000000000 0x185 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x0000000000000000 0x1d1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .debug_macro 0x0000000000000000 0xa9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x0000000000000000 0x20f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x0000000000000000 0x227 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o @@ -1704,12 +2601,18 @@ Discarded input sections .debug_macro 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .debug_macro 0x0000000000000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .debug_macro 0x0000000000000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x0000000000000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x0000000000000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .debug_macro 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .debug_macro 0x0000000000000000 0x241 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x0000000000000000 0x287 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .debug_macro 0x0000000000000000 0x141 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x0000000000000000 0x279 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x0000000000000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x0000000000000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .debug_macro 0x0000000000000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_line 0x0000000000000000 0x659 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_str 0x0000000000000000 0x7abf5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_line 0x0000000000000000 0x6d0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_str 0x0000000000000000 0x853b3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .comment 0x0000000000000000 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o .ARM.attributes 0x0000000000000000 0x33 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o @@ -1747,6 +2650,12 @@ Discarded input sections .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .text 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .data 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .bss 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o @@ -1754,9 +2663,9 @@ Discarded input sections .debug_abbrev 0x0000000000000000 0x9a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .debug_aranges 0x0000000000000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x0000000000000000 0x184 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x1d0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .debug_macro 0x0000000000000000 0xa9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x0000000000000000 0x20f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x227 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o @@ -1785,55 +2694,1623 @@ Discarded input sections .debug_macro 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .debug_macro 0x0000000000000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .debug_macro 0x0000000000000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .debug_macro 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .debug_macro 0x0000000000000000 0x241 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x287 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .debug_macro 0x0000000000000000 0x141 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x279 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .debug_macro 0x0000000000000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_line 0x0000000000000000 0x65c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_str 0x0000000000000000 0x7abf8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_line 0x0000000000000000 0x6d3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_str 0x0000000000000000 0x853b6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .comment 0x0000000000000000 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o .ARM.attributes 0x0000000000000000 0x33 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-errno.o) - .data 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-errno.o) - .bss 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-errno.o) - .text.__errno 0x0000000000000000 0xc /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-errno.o) - .debug_frame 0x0000000000000000 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-errno.o) + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .data 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_HalfDuplex_Init + 0x0000000000000000 0xaa ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_LIN_Init + 0x0000000000000000 0xcc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_MultiProcessor_Init + 0x0000000000000000 0xe0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_DeInit + 0x0000000000000000 0x5e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_MspInit + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_MspDeInit + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_Transmit + 0x0000000000000000 0x124 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_Receive + 0x0000000000000000 0x144 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_Transmit_IT + 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_Receive_IT + 0x0000000000000000 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_Transmit_DMA + 0x0000000000000000 0xd8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_Receive_DMA + 0x0000000000000000 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_DMAPause + 0x0000000000000000 0xc6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_DMAResume + 0x0000000000000000 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_DMAStop + 0x0000000000000000 0xb6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UARTEx_ReceiveToIdle + 0x0000000000000000 0x1ba ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UARTEx_ReceiveToIdle_IT + 0x0000000000000000 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UARTEx_ReceiveToIdle_DMA + 0x0000000000000000 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_Abort + 0x0000000000000000 0x122 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_AbortTransmit + 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_AbortReceive + 0x0000000000000000 0xb6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_Abort_IT + 0x0000000000000000 0x168 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_AbortTransmit_IT + 0x0000000000000000 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_AbortReceive_IT + 0x0000000000000000 0xd4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_IRQHandler + 0x0000000000000000 0x354 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_TxCpltCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_TxHalfCpltCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_RxCpltCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_RxHalfCpltCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_ErrorCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_AbortCpltCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_AbortTransmitCpltCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_AbortReceiveCpltCallback + 0x0000000000000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UARTEx_RxEventCallback + 0x0000000000000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_LIN_SendBreak + 0x0000000000000000 0x52 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_MultiProcessor_EnterMuteMode + 0x0000000000000000 0x52 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_MultiProcessor_ExitMuteMode + 0x0000000000000000 0x52 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_HalfDuplex_EnableTransmitter + 0x0000000000000000 0x66 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_HalfDuplex_EnableReceiver + 0x0000000000000000 0x66 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_GetState + 0x0000000000000000 0x3a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.HAL_UART_GetError + 0x0000000000000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.UART_DMATransmitCplt + 0x0000000000000000 0x52 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.UART_DMATxHalfCplt + 0x0000000000000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.UART_DMAReceiveCplt + 0x0000000000000000 0x96 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.UART_DMARxHalfCplt + 0x0000000000000000 0x36 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.UART_DMAError + 0x0000000000000000 0x94 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.UART_WaitOnFlagUntilTimeout + 0x0000000000000000 0x94 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.UART_Start_Receive_IT + 0x0000000000000000 0x72 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.UART_Start_Receive_DMA + 0x0000000000000000 0xc8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.UART_EndTxTransfer + 0x0000000000000000 0x2a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.UART_EndRxTransfer + 0x0000000000000000 0x58 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.UART_DMAAbortOnError + 0x0000000000000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.UART_DMATxAbortCallback + 0x0000000000000000 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.UART_DMARxAbortCallback + 0x0000000000000000 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.UART_DMATxOnlyAbortCallback + 0x0000000000000000 0x2a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.UART_DMARxOnlyAbortCallback + 0x0000000000000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.UART_Transmit_IT + 0x0000000000000000 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.UART_EndTransmit_IT + 0x0000000000000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.UART_Receive_IT + 0x0000000000000000 0x152 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0xa9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x227 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0xc3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x3468 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x5be ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x241 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x287 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x141 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x279 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x0000000000000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .data 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_FlushTxFifo + 0x0000000000000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_FlushRxFifo + 0x0000000000000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_DeactivateEndpoint + 0x0000000000000000 0x3d8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_StopDevice + 0x0000000000000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_ReadDevAllOutEpInterrupt + 0x0000000000000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_ReadDevAllInEpInterrupt + 0x0000000000000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_ReadDevOutEPInterrupt + 0x0000000000000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_ReadDevInEPInterrupt + 0x0000000000000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_ClearInterrupts + 0x0000000000000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_ActivateRemoteWakeup + 0x0000000000000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_DeActivateRemoteWakeup + 0x0000000000000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0xa9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x227 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0xc3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x3468 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x5be ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x241 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x287 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x141 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x279 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x0000000000000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text 0x0000000000000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .data 0x0000000000000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .bss 0x0000000000000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0xa9c ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x4c ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x94 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x339 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x58 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x71 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x12a ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x52 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x40 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0xd5 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x3d ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x145 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x35 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x29 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x227 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x103 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x1df ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0xd23 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0xe09e ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x6d ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x3468 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x5be ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x289 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x1cb ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x114 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x1b2 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x27 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x136 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x1bc ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x46a ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x1b5 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x88 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x241 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x287 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x141 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x279 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x65 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x249 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x83 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x72 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000000000 0x1c2 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .text 0x0000000000000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .data 0x0000000000000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .bss 0x0000000000000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .text.USBD_DeInit + 0x0000000000000000 0x3a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .text.USBD_LL_IsoINIncomplete + 0x0000000000000000 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .text.USBD_LL_IsoOUTIncomplete + 0x0000000000000000 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .text.USBD_LL_DevConnected + 0x0000000000000000 0x14 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .text.USBD_LL_DevDisconnected + 0x0000000000000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0xa9c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x4c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x94 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x97 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x339 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0xfd ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x58 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x71 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x12a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x52 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x40 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0xd5 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x3d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x145 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x35 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x29 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x227 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x103 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x1df ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0xbd ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0xd23 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0xe09e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x6d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x3468 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x5be ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x289 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x1cb ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x114 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x1b2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x27 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x136 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x1bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x46a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x1b5 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x88 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x241 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x287 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x141 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x279 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x65 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x249 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x83 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x0000000000000000 0x72 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text 0x0000000000000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .data 0x0000000000000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .bss 0x0000000000000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0xa9c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x4c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x94 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x97 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x339 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0xfd ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x58 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x71 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x12a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x52 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x40 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0xd5 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x3d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x145 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x35 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x29 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x227 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x103 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x1df ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0xbd ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0xd23 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0xe09e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x6d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x3468 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x5be ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x289 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x1cb ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x114 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x1b2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x27 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x136 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x1bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x46a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x1b5 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x88 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x241 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x287 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x141 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x279 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x65 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x249 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x83 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x72 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x0000000000000000 0x1c2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .text 0x0000000000000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .data 0x0000000000000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .bss 0x0000000000000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .text.USBD_GetRxCount + 0x0000000000000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0xa9c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x4c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x94 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x97 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x339 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0xfd ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x58 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x71 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x12a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x52 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x40 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0xd5 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x3d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x145 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x35 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x29 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x227 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x103 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x1df ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0xbd ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0xd23 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0xe09e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x6d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x3468 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x5be ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x289 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x1cb ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x114 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x1b2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x27 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x136 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x1bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x46a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x1b5 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x88 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x241 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x287 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x141 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x279 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x65 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x249 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x83 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x72 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000000000 0x1c2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usb_device.o + .text 0x0000000000000000 0x0 ./USB_DEVICE/App/usb_device.o + .data 0x0000000000000000 0x0 ./USB_DEVICE/App/usb_device.o + .bss 0x0000000000000000 0x0 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0xa9c ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x2e ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x22 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x22 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x8e ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x51 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x103 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x6a ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x1df ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x1c ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x22 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0xc3 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0xd23 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0xe09e ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x6d ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x227 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x3468 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x174 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x5c ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x5be ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x289 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x1cb ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x114 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x1b2 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x27 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x136 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x1bc ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x34 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x3c ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x57 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x46a ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x1b5 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x88 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x241 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x287 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x141 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x279 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x65 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x249 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x83 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x52 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x18 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x3c ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x34 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x35 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x333 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x10 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x43 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x34 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x10 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x58 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x71 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x1c ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x12a ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x10 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x1c ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x52 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x22 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x10 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x40 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0xd5 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x1c ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x3d ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x145 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x29 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x20 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x72 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x1c2 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000000000 0x10a ./USB_DEVICE/App/usb_device.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_desc.o + .text 0x0000000000000000 0x0 ./USB_DEVICE/App/usbd_desc.o + .data 0x0000000000000000 0x0 ./USB_DEVICE/App/usbd_desc.o + .bss 0x0000000000000000 0x0 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0xa9c ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x22 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x4c ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x18 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x94 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x3c ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x34 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x57 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x97 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x339 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0xfd ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x10 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x43 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x34 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x10 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x58 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x71 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x1c ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x12a ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x10 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x6a ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x1c ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x52 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x22 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x10 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x40 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0xd5 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x1c ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x3d ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x145 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x35 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x29 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x20 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x227 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x2e ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x22 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x103 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x1df ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x1c ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x22 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0xbd ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0xd23 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0xe09e ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x6d ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x3468 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x56 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x5be ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x289 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x1cb ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x114 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x1b2 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x27 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x136 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x1bc ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x34 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x3c ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x57 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x46a ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x1b5 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x88 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x241 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x287 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x141 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x279 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x65 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x249 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x83 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x72 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0000000000000000 0x1c8 ./USB_DEVICE/App/usbd_desc.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/App/usbd_dfu_if.o + .text 0x0000000000000000 0x0 ./USB_DEVICE/App/usbd_dfu_if.o + .data 0x0000000000000000 0x0 ./USB_DEVICE/App/usbd_dfu_if.o + .bss 0x0000000000000000 0x0 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0xa9c ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x22 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x4c ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x18 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x94 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x3c ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x34 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x57 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x97 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x339 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0xfd ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x10 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x43 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x34 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x10 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x58 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x71 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x1c ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x12a ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x10 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x6a ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x1c ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x52 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x22 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x10 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x40 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0xd5 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x1c ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x3d ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x145 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x35 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x29 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x20 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x227 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x2e ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x22 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x103 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x1df ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x1c ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x22 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0xbd ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0xd23 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0xe09e ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x6d ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x3468 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x56 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x5be ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x289 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x1cb ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x114 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x1b2 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x27 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x136 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x1bc ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x34 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x3c ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x57 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x46a ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x1b5 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x88 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x241 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x287 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x141 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x279 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x65 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x249 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x83 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x72 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x1c2 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x0000000000000000 0x10a ./USB_DEVICE/App/usbd_dfu_if.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x0000000000000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .text 0x0000000000000000 0x0 ./USB_DEVICE/Target/usbd_conf.o + .data 0x0000000000000000 0x0 ./USB_DEVICE/Target/usbd_conf.o + .bss 0x0000000000000000 0x0 ./USB_DEVICE/Target/usbd_conf.o + .text.HAL_PCD_MspDeInit + 0x0000000000000000 0x34 ./USB_DEVICE/Target/usbd_conf.o + .text.HAL_PCD_ISOOUTIncompleteCallback + 0x0000000000000000 0x24 ./USB_DEVICE/Target/usbd_conf.o + .text.HAL_PCD_ISOINIncompleteCallback + 0x0000000000000000 0x24 ./USB_DEVICE/Target/usbd_conf.o + .text.HAL_PCD_ConnectCallback + 0x0000000000000000 0x1c ./USB_DEVICE/Target/usbd_conf.o + .text.HAL_PCD_DisconnectCallback + 0x0000000000000000 0x1c ./USB_DEVICE/Target/usbd_conf.o + .text.USBD_LL_DeInit + 0x0000000000000000 0x36 ./USB_DEVICE/Target/usbd_conf.o + .text.USBD_LL_CloseEP + 0x0000000000000000 0x3e ./USB_DEVICE/Target/usbd_conf.o + .text.USBD_LL_FlushEP + 0x0000000000000000 0x3e ./USB_DEVICE/Target/usbd_conf.o + .text.USBD_LL_GetRxDataSize + 0x0000000000000000 0x26 ./USB_DEVICE/Target/usbd_conf.o + .text.USBD_LL_Delay + 0x0000000000000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0xa9c ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x2e ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x22 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x22 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x8e ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x51 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x103 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x6a ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x1df ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x1c ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x22 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0xc3 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0xd23 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0xe09e ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x6d ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x227 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x3468 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x174 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x5c ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x5be ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x289 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x1cb ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x114 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x1b2 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x27 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x136 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x1bc ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x34 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x3c ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x57 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x46a ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x1b5 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x88 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x241 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x287 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x141 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x279 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x65 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x249 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x83 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x52 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x18 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x3c ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x34 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x35 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x333 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x10 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x43 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x34 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x10 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x58 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x71 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x1c ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x12a ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x10 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x1c ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x52 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x22 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x10 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x40 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0xd5 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x1c ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x3d ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x145 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x29 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x20 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x72 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x1c2 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x0000000000000000 0x10a ./USB_DEVICE/Target/usbd_conf.o + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-errno.o) + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-errno.o) + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-errno.o) + .text.__errno 0x0000000000000000 0xc c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-errno.o) + .debug_frame 0x0000000000000000 0x20 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-errno.o) .ARM.attributes - 0x0000000000000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-errno.o) - .text 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-exit.o) - .data 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-exit.o) - .bss 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-exit.o) - .text.exit 0x0000000000000000 0x28 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-exit.o) - .debug_frame 0x0000000000000000 0x28 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-exit.o) + 0x0000000000000000 0x2d c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-errno.o) + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-exit.o) + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-exit.o) + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-exit.o) + .text.exit 0x0000000000000000 0x28 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-exit.o) + .debug_frame 0x0000000000000000 0x28 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-exit.o) .ARM.attributes - 0x0000000000000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-exit.o) - .text 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-impure.o) - .data 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-impure.o) - .bss 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-impure.o) + 0x0000000000000000 0x2d c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-exit.o) + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-impure.o) + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-impure.o) + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-impure.o) .data._impure_ptr - 0x0000000000000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-impure.o) + 0x0000000000000000 0x4 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-impure.o) .data.impure_data - 0x0000000000000000 0x60 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-impure.o) + 0x0000000000000000 0x60 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-impure.o) .rodata._global_impure_ptr - 0x0000000000000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-impure.o) + 0x0000000000000000 0x4 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-impure.o) .ARM.attributes - 0x0000000000000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-impure.o) - .text 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-init.o) - .data 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-init.o) - .bss 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-init.o) - .text 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-memset.o) - .data 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-memset.o) - .bss 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-memset.o) - .text 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtend.o - .data 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtend.o - .bss 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtend.o - .eh_frame 0x0000000000000000 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtend.o + 0x0000000000000000 0x2d c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-impure.o) + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-init.o) + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-init.o) + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-init.o) + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-memset.o) + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-memset.o) + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-memset.o) + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtend.o + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtend.o + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtend.o + .eh_frame 0x0000000000000000 0x4 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtend.o .ARM.attributes - 0x0000000000000000 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtend.o - .text 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtn.o - .data 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtn.o - .bss 0x0000000000000000 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtn.o + 0x0000000000000000 0x2d c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtend.o + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtn.o + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtn.o + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtn.o Memory Configuration @@ -1844,9 +4321,9 @@ FLASH 0x0000000008000000 0x0000000000010000 xr Linker script and memory map -LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crti.o -LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o -LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o +LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crti.o +LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o +LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o LOAD ./Core/Src/main.o LOAD ./Core/Src/stm32f1xx_hal_msp.o LOAD ./Core/Src/stm32f1xx_it.o @@ -1855,6 +4332,8 @@ LOAD ./Core/Src/sysmem.o LOAD ./Core/Src/system_stm32f1xx.o LOAD ./Core/Startup/startup_stm32f103c8tx.o LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o @@ -1862,31 +4341,44 @@ LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o +LOAD ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o +LOAD ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o +LOAD ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o +LOAD ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o +LOAD ./USB_DEVICE/App/usb_device.o +LOAD ./USB_DEVICE/App/usbd_desc.o +LOAD ./USB_DEVICE/App/usbd_dfu_if.o +LOAD ./USB_DEVICE/Target/usbd_conf.o START GROUP -LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a -LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libm.a +LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a +LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a END GROUP START GROUP -LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/libgcc.a -LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a +LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp\libgcc.a +LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a END GROUP START GROUP -LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/libgcc.a -LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a -LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a +LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp\libgcc.a +LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a +LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libnosys.a END GROUP START GROUP -LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/libgcc.a -LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a -LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a +LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp\libgcc.a +LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a +LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libnosys.a END GROUP -LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtend.o -LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtn.o +LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtend.o +LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtn.o 0x0000000020005000 _estack = (ORIGIN (RAM) + LENGTH (RAM)) 0x0000000000000200 _Min_Heap_Size = 0x200 0x0000000000000400 _Min_Stack_Size = 0x400 @@ -1898,232 +4390,642 @@ LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.id 0x0000000008000000 g_pfnVectors 0x000000000800010c . = ALIGN (0x4) -.text 0x000000000800010c 0xd1c +.text 0x000000000800010c 0x7ec0 0x000000000800010c . = ALIGN (0x4) *(.text) - .text 0x000000000800010c 0x40 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x000000000800010c 0x40 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o *(.text*) - .text.main 0x000000000800014c 0x12 ./Core/Src/main.o + .text.main 0x000000000800014c 0x22 ./Core/Src/main.o 0x000000000800014c main .text.SystemClock_Config - 0x000000000800015e 0x8a ./Core/Src/main.o - 0x000000000800015e SystemClock_Config + 0x000000000800016e 0xba ./Core/Src/main.o + 0x000000000800016e SystemClock_Config + .text.MX_ADC1_Init + 0x0000000008000228 0x7c ./Core/Src/main.o + .text.MX_I2C1_Init + 0x00000000080002a4 0x5c ./Core/Src/main.o + .text.MX_USART1_UART_Init + 0x0000000008000300 0x54 ./Core/Src/main.o .text.MX_GPIO_Init - 0x00000000080001e8 0x5c ./Core/Src/main.o + 0x0000000008000354 0x9c ./Core/Src/main.o .text.Error_Handler - 0x0000000008000244 0xa ./Core/Src/main.o - 0x0000000008000244 Error_Handler - *fill* 0x000000000800024e 0x2 + 0x00000000080003f0 0xa ./Core/Src/main.o + 0x00000000080003f0 Error_Handler + *fill* 0x00000000080003fa 0x2 .text.HAL_MspInit - 0x0000000008000250 0x64 ./Core/Src/stm32f1xx_hal_msp.o - 0x0000000008000250 HAL_MspInit + 0x00000000080003fc 0x64 ./Core/Src/stm32f1xx_hal_msp.o + 0x00000000080003fc HAL_MspInit + .text.HAL_ADC_MspInit + 0x0000000008000460 0x78 ./Core/Src/stm32f1xx_hal_msp.o + 0x0000000008000460 HAL_ADC_MspInit + .text.HAL_I2C_MspInit + 0x00000000080004d8 0x7c ./Core/Src/stm32f1xx_hal_msp.o + 0x00000000080004d8 HAL_I2C_MspInit + .text.HAL_UART_MspInit + 0x0000000008000554 0x98 ./Core/Src/stm32f1xx_hal_msp.o + 0x0000000008000554 HAL_UART_MspInit .text.NMI_Handler - 0x00000000080002b4 0x6 ./Core/Src/stm32f1xx_it.o - 0x00000000080002b4 NMI_Handler + 0x00000000080005ec 0x6 ./Core/Src/stm32f1xx_it.o + 0x00000000080005ec NMI_Handler .text.HardFault_Handler - 0x00000000080002ba 0x6 ./Core/Src/stm32f1xx_it.o - 0x00000000080002ba HardFault_Handler + 0x00000000080005f2 0x6 ./Core/Src/stm32f1xx_it.o + 0x00000000080005f2 HardFault_Handler .text.MemManage_Handler - 0x00000000080002c0 0x6 ./Core/Src/stm32f1xx_it.o - 0x00000000080002c0 MemManage_Handler + 0x00000000080005f8 0x6 ./Core/Src/stm32f1xx_it.o + 0x00000000080005f8 MemManage_Handler .text.BusFault_Handler - 0x00000000080002c6 0x6 ./Core/Src/stm32f1xx_it.o - 0x00000000080002c6 BusFault_Handler + 0x00000000080005fe 0x6 ./Core/Src/stm32f1xx_it.o + 0x00000000080005fe BusFault_Handler .text.UsageFault_Handler - 0x00000000080002cc 0x6 ./Core/Src/stm32f1xx_it.o - 0x00000000080002cc UsageFault_Handler + 0x0000000008000604 0x6 ./Core/Src/stm32f1xx_it.o + 0x0000000008000604 UsageFault_Handler .text.SVC_Handler - 0x00000000080002d2 0xc ./Core/Src/stm32f1xx_it.o - 0x00000000080002d2 SVC_Handler + 0x000000000800060a 0xc ./Core/Src/stm32f1xx_it.o + 0x000000000800060a SVC_Handler .text.DebugMon_Handler - 0x00000000080002de 0xc ./Core/Src/stm32f1xx_it.o - 0x00000000080002de DebugMon_Handler + 0x0000000008000616 0xc ./Core/Src/stm32f1xx_it.o + 0x0000000008000616 DebugMon_Handler .text.PendSV_Handler - 0x00000000080002ea 0xc ./Core/Src/stm32f1xx_it.o - 0x00000000080002ea PendSV_Handler + 0x0000000008000622 0xc ./Core/Src/stm32f1xx_it.o + 0x0000000008000622 PendSV_Handler .text.SysTick_Handler - 0x00000000080002f6 0xc ./Core/Src/stm32f1xx_it.o - 0x00000000080002f6 SysTick_Handler + 0x000000000800062e 0xc ./Core/Src/stm32f1xx_it.o + 0x000000000800062e SysTick_Handler + *fill* 0x000000000800063a 0x2 + .text.USB_LP_CAN1_RX0_IRQHandler + 0x000000000800063c 0x14 ./Core/Src/stm32f1xx_it.o + 0x000000000800063c USB_LP_CAN1_RX0_IRQHandler .text.SystemInit - 0x0000000008000302 0xc ./Core/Src/system_stm32f1xx.o - 0x0000000008000302 SystemInit - *fill* 0x000000000800030e 0x2 + 0x0000000008000650 0xc ./Core/Src/system_stm32f1xx.o + 0x0000000008000650 SystemInit .text.Reset_Handler - 0x0000000008000310 0x48 ./Core/Startup/startup_stm32f103c8tx.o - 0x0000000008000310 Reset_Handler + 0x000000000800065c 0x48 ./Core/Startup/startup_stm32f103c8tx.o + 0x000000000800065c Reset_Handler .text.Default_Handler - 0x0000000008000358 0x2 ./Core/Startup/startup_stm32f103c8tx.o - 0x0000000008000358 USBWakeUp_IRQHandler - 0x0000000008000358 EXTI2_IRQHandler - 0x0000000008000358 TIM1_CC_IRQHandler - 0x0000000008000358 PVD_IRQHandler - 0x0000000008000358 EXTI3_IRQHandler - 0x0000000008000358 EXTI0_IRQHandler - 0x0000000008000358 I2C2_EV_IRQHandler - 0x0000000008000358 ADC1_2_IRQHandler - 0x0000000008000358 SPI1_IRQHandler - 0x0000000008000358 TAMPER_IRQHandler - 0x0000000008000358 DMA1_Channel4_IRQHandler - 0x0000000008000358 USART3_IRQHandler - 0x0000000008000358 RTC_IRQHandler - 0x0000000008000358 DMA1_Channel7_IRQHandler - 0x0000000008000358 CAN1_RX1_IRQHandler - 0x0000000008000358 TIM4_IRQHandler - 0x0000000008000358 I2C1_EV_IRQHandler - 0x0000000008000358 DMA1_Channel6_IRQHandler - 0x0000000008000358 TIM3_IRQHandler - 0x0000000008000358 RCC_IRQHandler - 0x0000000008000358 TIM1_TRG_COM_IRQHandler - 0x0000000008000358 DMA1_Channel1_IRQHandler - 0x0000000008000358 Default_Handler - 0x0000000008000358 EXTI15_10_IRQHandler - 0x0000000008000358 EXTI9_5_IRQHandler - 0x0000000008000358 SPI2_IRQHandler - 0x0000000008000358 DMA1_Channel5_IRQHandler - 0x0000000008000358 EXTI4_IRQHandler - 0x0000000008000358 USB_LP_CAN1_RX0_IRQHandler - 0x0000000008000358 USB_HP_CAN1_TX_IRQHandler - 0x0000000008000358 DMA1_Channel3_IRQHandler - 0x0000000008000358 TIM1_UP_IRQHandler - 0x0000000008000358 WWDG_IRQHandler - 0x0000000008000358 TIM2_IRQHandler - 0x0000000008000358 TIM1_BRK_IRQHandler - 0x0000000008000358 EXTI1_IRQHandler - 0x0000000008000358 USART2_IRQHandler - 0x0000000008000358 I2C2_ER_IRQHandler - 0x0000000008000358 DMA1_Channel2_IRQHandler - 0x0000000008000358 CAN1_SCE_IRQHandler - 0x0000000008000358 FLASH_IRQHandler - 0x0000000008000358 USART1_IRQHandler - 0x0000000008000358 I2C1_ER_IRQHandler - 0x0000000008000358 RTC_Alarm_IRQHandler - *fill* 0x000000000800035a 0x2 + 0x00000000080006a4 0x2 ./Core/Startup/startup_stm32f103c8tx.o + 0x00000000080006a4 RTC_Alarm_IRQHandler + 0x00000000080006a4 EXTI2_IRQHandler + 0x00000000080006a4 TIM1_CC_IRQHandler + 0x00000000080006a4 PVD_IRQHandler + 0x00000000080006a4 EXTI3_IRQHandler + 0x00000000080006a4 EXTI0_IRQHandler + 0x00000000080006a4 I2C2_EV_IRQHandler + 0x00000000080006a4 ADC1_2_IRQHandler + 0x00000000080006a4 SPI1_IRQHandler + 0x00000000080006a4 TAMPER_IRQHandler + 0x00000000080006a4 DMA1_Channel4_IRQHandler + 0x00000000080006a4 USART3_IRQHandler + 0x00000000080006a4 RTC_IRQHandler + 0x00000000080006a4 DMA1_Channel7_IRQHandler + 0x00000000080006a4 CAN1_RX1_IRQHandler + 0x00000000080006a4 TIM4_IRQHandler + 0x00000000080006a4 I2C1_EV_IRQHandler + 0x00000000080006a4 DMA1_Channel6_IRQHandler + 0x00000000080006a4 TIM3_IRQHandler + 0x00000000080006a4 RCC_IRQHandler + 0x00000000080006a4 TIM1_TRG_COM_IRQHandler + 0x00000000080006a4 DMA1_Channel1_IRQHandler + 0x00000000080006a4 Default_Handler + 0x00000000080006a4 EXTI15_10_IRQHandler + 0x00000000080006a4 EXTI9_5_IRQHandler + 0x00000000080006a4 SPI2_IRQHandler + 0x00000000080006a4 DMA1_Channel5_IRQHandler + 0x00000000080006a4 EXTI4_IRQHandler + 0x00000000080006a4 USB_HP_CAN1_TX_IRQHandler + 0x00000000080006a4 DMA1_Channel3_IRQHandler + 0x00000000080006a4 TIM1_UP_IRQHandler + 0x00000000080006a4 WWDG_IRQHandler + 0x00000000080006a4 TIM2_IRQHandler + 0x00000000080006a4 TIM1_BRK_IRQHandler + 0x00000000080006a4 EXTI1_IRQHandler + 0x00000000080006a4 USART2_IRQHandler + 0x00000000080006a4 I2C2_ER_IRQHandler + 0x00000000080006a4 DMA1_Channel2_IRQHandler + 0x00000000080006a4 CAN1_SCE_IRQHandler + 0x00000000080006a4 FLASH_IRQHandler + 0x00000000080006a4 USART1_IRQHandler + 0x00000000080006a4 I2C1_ER_IRQHandler + 0x00000000080006a4 USBWakeUp_IRQHandler + *fill* 0x00000000080006a6 0x2 .text.HAL_Init - 0x000000000800035c 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x000000000800035c HAL_Init + 0x00000000080006a8 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x00000000080006a8 HAL_Init .text.HAL_InitTick - 0x0000000008000388 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x0000000008000388 HAL_InitTick + 0x00000000080006d4 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x00000000080006d4 HAL_InitTick .text.HAL_IncTick - 0x00000000080003e8 0x24 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x00000000080003e8 HAL_IncTick + 0x0000000008000734 0x24 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x0000000008000734 HAL_IncTick .text.HAL_GetTick - 0x000000000800040c 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x000000000800040c HAL_GetTick + 0x0000000008000758 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x0000000008000758 HAL_GetTick + .text.HAL_Delay + 0x000000000800076c 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x000000000800076c HAL_Delay + .text.HAL_ADC_Init + 0x00000000080007b4 0x1b0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + 0x00000000080007b4 HAL_ADC_Init + .text.HAL_ADC_ConfigChannel + 0x0000000008000964 0x1f0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + 0x0000000008000964 HAL_ADC_ConfigChannel + .text.ADC_ConversionStop_Disable + 0x0000000008000b54 0x82 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + 0x0000000008000b54 ADC_ConversionStop_Disable + *fill* 0x0000000008000bd6 0x2 .text.__NVIC_SetPriorityGrouping - 0x0000000008000420 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x0000000008000bd8 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .text.__NVIC_GetPriorityGrouping - 0x0000000008000468 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x0000000008000c20 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_EnableIRQ + 0x0000000008000c3c 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .text.__NVIC_SetPriority - 0x0000000008000484 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x0000000008000c74 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .text.NVIC_EncodePriority - 0x00000000080004d8 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x0000000008000cc8 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .text.SysTick_Config - 0x000000000800053c 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x0000000008000d2c 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .text.HAL_NVIC_SetPriorityGrouping - 0x0000000008000580 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - 0x0000000008000580 HAL_NVIC_SetPriorityGrouping + 0x0000000008000d70 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x0000000008000d70 HAL_NVIC_SetPriorityGrouping .text.HAL_NVIC_SetPriority - 0x0000000008000596 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - 0x0000000008000596 HAL_NVIC_SetPriority + 0x0000000008000d86 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x0000000008000d86 HAL_NVIC_SetPriority + .text.HAL_NVIC_EnableIRQ + 0x0000000008000dbe 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x0000000008000dbe HAL_NVIC_EnableIRQ .text.HAL_SYSTICK_Config - 0x00000000080005ce 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - 0x00000000080005ce HAL_SYSTICK_Config - *fill* 0x00000000080005e6 0x2 + 0x0000000008000dda 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x0000000008000dda HAL_SYSTICK_Config + *fill* 0x0000000008000df2 0x2 + .text.HAL_GPIO_Init + 0x0000000008000df4 0x308 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + 0x0000000008000df4 HAL_GPIO_Init + .text.HAL_I2C_Init + 0x00000000080010fc 0x288 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + 0x00000000080010fc HAL_I2C_Init + .text.HAL_PCD_Init + 0x0000000008001384 0x216 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x0000000008001384 HAL_PCD_Init + .text.HAL_PCD_Start + 0x000000000800159a 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x000000000800159a HAL_PCD_Start + .text.HAL_PCD_Stop + 0x00000000080015e6 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x00000000080015e6 HAL_PCD_Stop + .text.HAL_PCD_IRQHandler + 0x0000000008001632 0x2aa ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x0000000008001632 HAL_PCD_IRQHandler + .text.HAL_PCD_SetAddress + 0x00000000080018dc 0x4a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x00000000080018dc HAL_PCD_SetAddress + .text.HAL_PCD_EP_Open + 0x0000000008001926 0xcc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x0000000008001926 HAL_PCD_EP_Open + .text.HAL_PCD_EP_Receive + 0x00000000080019f2 0x7a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x00000000080019f2 HAL_PCD_EP_Receive + .text.HAL_PCD_EP_Transmit + 0x0000000008001a6c 0x86 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x0000000008001a6c HAL_PCD_EP_Transmit + .text.HAL_PCD_EP_SetStall + 0x0000000008001af2 0xc0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x0000000008001af2 HAL_PCD_EP_SetStall + .text.HAL_PCD_EP_ClrStall + 0x0000000008001bb2 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x0000000008001bb2 HAL_PCD_EP_ClrStall + .text.PCD_EP_ISR_Handler + 0x0000000008001c5a 0x600 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_EP_DB_Receive + 0x000000000800225a 0x21a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_EP_DB_Transmit + 0x0000000008002474 0x7a4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCDEx_PMAConfig + 0x0000000008002c18 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + 0x0000000008002c18 HAL_PCDEx_PMAConfig .text.HAL_RCC_OscConfig - 0x00000000080005e8 0x500 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - 0x00000000080005e8 HAL_RCC_OscConfig + 0x0000000008002c9c 0x500 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x0000000008002c9c HAL_RCC_OscConfig .text.HAL_RCC_ClockConfig - 0x0000000008000ae8 0x1d4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - 0x0000000008000ae8 HAL_RCC_ClockConfig + 0x000000000800319c 0x1d4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x000000000800319c HAL_RCC_ClockConfig .text.HAL_RCC_GetSysClockFreq - 0x0000000008000cbc 0xc0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - 0x0000000008000cbc HAL_RCC_GetSysClockFreq + 0x0000000008003370 0xc0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x0000000008003370 HAL_RCC_GetSysClockFreq + .text.HAL_RCC_GetHCLKFreq + 0x0000000008003430 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x0000000008003430 HAL_RCC_GetHCLKFreq + .text.HAL_RCC_GetPCLK1Freq + 0x0000000008003444 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x0000000008003444 HAL_RCC_GetPCLK1Freq + .text.HAL_RCC_GetPCLK2Freq + 0x000000000800346c 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x000000000800346c HAL_RCC_GetPCLK2Freq .text.RCC_Delay - 0x0000000008000d7c 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x0000000008003494 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCCEx_PeriphCLKConfig + 0x00000000080034d0 0x16c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + 0x00000000080034d0 HAL_RCCEx_PeriphCLKConfig + .text.HAL_UART_Init + 0x000000000800363c 0x9a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + 0x000000000800363c HAL_UART_Init + *fill* 0x00000000080036d6 0x2 + .text.UART_SetConfig + 0x00000000080036d8 0x11c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .text.USB_CoreInit + 0x00000000080037f4 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x00000000080037f4 USB_CoreInit + .text.USB_EnableGlobalInt + 0x0000000008003814 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x0000000008003814 USB_EnableGlobalInt + .text.USB_DisableGlobalInt + 0x0000000008003840 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x0000000008003840 USB_DisableGlobalInt + .text.USB_SetCurrentMode + 0x0000000008003874 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x0000000008003874 USB_SetCurrentMode + .text.USB_DevInit + 0x000000000800388c 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x000000000800388c USB_DevInit + .text.USB_ActivateEndpoint + 0x00000000080038cc 0x6d4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x00000000080038cc USB_ActivateEndpoint + .text.USB_EPStartXfer + 0x0000000008003fa0 0x15ee ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x0000000008003fa0 USB_EPStartXfer + .text.USB_EPSetStall + 0x000000000800558e 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x000000000800558e USB_EPSetStall + .text.USB_EPClearStall + 0x000000000800562e 0x15a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x000000000800562e USB_EPClearStall + .text.USB_SetDevAddress + 0x0000000008005788 0x26 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x0000000008005788 USB_SetDevAddress + .text.USB_DevConnect + 0x00000000080057ae 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x00000000080057ae USB_DevConnect + .text.USB_DevDisconnect + 0x00000000080057c2 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x00000000080057c2 USB_DevDisconnect + .text.USB_ReadInterrupts + 0x00000000080057d6 0x1e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x00000000080057d6 USB_ReadInterrupts + .text.USB_EP0_OutStart + 0x00000000080057f4 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x00000000080057f4 USB_EP0_OutStart + .text.USB_WritePMA + 0x000000000800580a 0x8a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x000000000800580a USB_WritePMA + .text.USB_ReadPMA + 0x0000000008005894 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x0000000008005894 USB_ReadPMA + *fill* 0x0000000008005932 0x2 + .text.__NVIC_SystemReset + 0x0000000008005934 0x2c ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text.USBD_DFU_Init + 0x0000000008005960 0xb2 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text.USBD_DFU_DeInit + 0x0000000008005a12 0x6e ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text.USBD_DFU_Setup + 0x0000000008005a80 0x1d4 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text.USBD_DFU_GetCfgDesc + 0x0000000008005c54 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text.USBD_DFU_DataIn + 0x0000000008005c74 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text.USBD_DFU_EP0_RxReady + 0x0000000008005c8c 0x14 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text.USBD_DFU_EP0_TxReady + 0x0000000008005ca0 0x1ca ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text.USBD_DFU_SOF + 0x0000000008005e6a 0x14 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text.USBD_DFU_IsoINIncomplete + 0x0000000008005e7e 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text.USBD_DFU_IsoOutIncomplete + 0x0000000008005e96 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text.USBD_DFU_DataOut + 0x0000000008005eae 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + *fill* 0x0000000008005ec6 0x2 + .text.USBD_DFU_GetDeviceQualifierDesc + 0x0000000008005ec8 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text.USBD_DFU_GetUsrStringDesc + 0x0000000008005ee8 0x38 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text.USBD_DFU_RegisterMedia + 0x0000000008005f20 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + 0x0000000008005f20 USBD_DFU_RegisterMedia + .text.DFU_Detach + 0x0000000008005f44 0xc0 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text.DFU_Download + 0x0000000008006004 0xd4 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text.DFU_Upload + 0x00000000080060d8 0x1b0 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text.DFU_GetStatus + 0x0000000008006288 0x164 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text.DFU_ClearStatus + 0x00000000080063ec 0x9e ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text.DFU_GetState + 0x000000000800648a 0x28 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text.DFU_Abort + 0x00000000080064b2 0x98 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + *fill* 0x000000000800654a 0x2 + .text.DFU_Leave + 0x000000000800654c 0x9c ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .text.USBD_Init + 0x00000000080065e8 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x00000000080065e8 USBD_Init + .text.USBD_RegisterClass + 0x000000000800663e 0x32 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x000000000800663e USBD_RegisterClass + .text.USBD_Start + 0x0000000008006670 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x0000000008006670 USBD_Start + .text.USBD_Stop + 0x0000000008006688 0x2c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x0000000008006688 USBD_Stop + .text.USBD_RunTestMode + 0x00000000080066b4 0x14 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x00000000080066b4 USBD_RunTestMode + .text.USBD_SetClassConfig + 0x00000000080066c8 0x3e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x00000000080066c8 USBD_SetClassConfig + .text.USBD_ClrClassConfig + 0x0000000008006706 0x26 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x0000000008006706 USBD_ClrClassConfig + .text.USBD_LL_SetupStage + 0x000000000800672c 0x9a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x000000000800672c USBD_LL_SetupStage + .text.USBD_LL_DataOutStage + 0x00000000080067c6 0xe2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x00000000080067c6 USBD_LL_DataOutStage + .text.USBD_LL_DataInStage + 0x00000000080068a8 0x14a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x00000000080068a8 USBD_LL_DataInStage + .text.USBD_LL_Reset + 0x00000000080069f2 0x82 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x00000000080069f2 USBD_LL_Reset + .text.USBD_LL_SetSpeed + 0x0000000008006a74 0x1e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x0000000008006a74 USBD_LL_SetSpeed + .text.USBD_LL_Suspend + 0x0000000008006a92 0x28 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x0000000008006a92 USBD_LL_Suspend + .text.USBD_LL_Resume + 0x0000000008006aba 0x2a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x0000000008006aba USBD_LL_Resume + .text.USBD_LL_SOF + 0x0000000008006ae4 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x0000000008006ae4 USBD_LL_SOF + .text.USBD_StdDevReq + 0x0000000008006b18 0xd4 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x0000000008006b18 USBD_StdDevReq + .text.USBD_StdItfReq + 0x0000000008006bec 0x90 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x0000000008006bec USBD_StdItfReq + .text.USBD_StdEPReq + 0x0000000008006c7c 0x2c6 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x0000000008006c7c USBD_StdEPReq + *fill* 0x0000000008006f42 0x2 + .text.USBD_GetDescriptor + 0x0000000008006f44 0x2f4 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_SetAddress + 0x0000000008007238 0x86 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + *fill* 0x00000000080072be 0x2 + .text.USBD_SetConfig + 0x00000000080072c0 0x11c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_GetConfig + 0x00000000080073dc 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_GetStatus + 0x0000000008007446 0x66 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_SetFeature + 0x00000000080074ac 0x28 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_ClrFeature + 0x00000000080074d4 0x42 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_ParseSetupRequest + 0x0000000008007516 0x78 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x0000000008007516 USBD_ParseSetupRequest + .text.USBD_CtlError + 0x000000000800758e 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x000000000800758e USBD_CtlError + .text.USBD_GetString + 0x00000000080075b0 0x84 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x00000000080075b0 USBD_GetString + .text.USBD_GetLen + 0x0000000008007634 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_CtlSendData + 0x0000000008007662 0x38 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x0000000008007662 USBD_CtlSendData + .text.USBD_CtlContinueSendData + 0x000000000800769a 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x000000000800769a USBD_CtlContinueSendData + .text.USBD_CtlPrepareRx + 0x00000000080076be 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x00000000080076be USBD_CtlPrepareRx + .text.USBD_CtlContinueRx + 0x00000000080076fa 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x00000000080076fa USBD_CtlContinueRx + .text.USBD_CtlSendStatus + 0x000000000800771e 0x26 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x000000000800771e USBD_CtlSendStatus + .text.USBD_CtlReceiveStatus + 0x0000000008007744 0x26 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x0000000008007744 USBD_CtlReceiveStatus + *fill* 0x000000000800776a 0x2 + .text.MX_USB_DEVICE_Init + 0x000000000800776c 0x60 ./USB_DEVICE/App/usb_device.o + 0x000000000800776c MX_USB_DEVICE_Init + .text.USBD_FS_DeviceDescriptor + 0x00000000080077cc 0x24 ./USB_DEVICE/App/usbd_desc.o + 0x00000000080077cc USBD_FS_DeviceDescriptor + .text.USBD_FS_LangIDStrDescriptor + 0x00000000080077f0 0x24 ./USB_DEVICE/App/usbd_desc.o + 0x00000000080077f0 USBD_FS_LangIDStrDescriptor + .text.USBD_FS_ProductStrDescriptor + 0x0000000008007814 0x3c ./USB_DEVICE/App/usbd_desc.o + 0x0000000008007814 USBD_FS_ProductStrDescriptor + .text.USBD_FS_ManufacturerStrDescriptor + 0x0000000008007850 0x28 ./USB_DEVICE/App/usbd_desc.o + 0x0000000008007850 USBD_FS_ManufacturerStrDescriptor + .text.USBD_FS_SerialStrDescriptor + 0x0000000008007878 0x24 ./USB_DEVICE/App/usbd_desc.o + 0x0000000008007878 USBD_FS_SerialStrDescriptor + .text.USBD_FS_ConfigStrDescriptor + 0x000000000800789c 0x3c ./USB_DEVICE/App/usbd_desc.o + 0x000000000800789c USBD_FS_ConfigStrDescriptor + .text.USBD_FS_InterfaceStrDescriptor + 0x00000000080078d8 0x3c ./USB_DEVICE/App/usbd_desc.o + 0x00000000080078d8 USBD_FS_InterfaceStrDescriptor + .text.Get_SerialNum + 0x0000000008007914 0x58 ./USB_DEVICE/App/usbd_desc.o + .text.IntToUnicode + 0x000000000800796c 0x7c ./USB_DEVICE/App/usbd_desc.o + .text.MEM_If_Init_FS + 0x00000000080079e8 0xe ./USB_DEVICE/App/usbd_dfu_if.o + .text.MEM_If_DeInit_FS + 0x00000000080079f6 0xe ./USB_DEVICE/App/usbd_dfu_if.o + .text.MEM_If_Erase_FS + 0x0000000008007a04 0x14 ./USB_DEVICE/App/usbd_dfu_if.o + .text.MEM_If_Write_FS + 0x0000000008007a18 0x18 ./USB_DEVICE/App/usbd_dfu_if.o + .text.MEM_If_Read_FS + 0x0000000008007a30 0x18 ./USB_DEVICE/App/usbd_dfu_if.o + .text.MEM_If_GetStatus_FS + 0x0000000008007a48 0x20 ./USB_DEVICE/App/usbd_dfu_if.o + .text.HAL_PCD_MspInit + 0x0000000008007a68 0x4c ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007a68 HAL_PCD_MspInit + .text.HAL_PCD_SetupStageCallback + 0x0000000008007ab4 0x24 ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007ab4 HAL_PCD_SetupStageCallback + .text.HAL_PCD_DataOutStageCallback + 0x0000000008007ad8 0x36 ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007ad8 HAL_PCD_DataOutStageCallback + .text.HAL_PCD_DataInStageCallback + 0x0000000008007b0e 0x34 ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007b0e HAL_PCD_DataInStageCallback + .text.HAL_PCD_SOFCallback + 0x0000000008007b42 0x1c ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007b42 HAL_PCD_SOFCallback + .text.HAL_PCD_ResetCallback + 0x0000000008007b5e 0x3c ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007b5e HAL_PCD_ResetCallback + *fill* 0x0000000008007b9a 0x2 + .text.HAL_PCD_SuspendCallback + 0x0000000008007b9c 0x34 ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007b9c HAL_PCD_SuspendCallback + .text.HAL_PCD_ResumeCallback + 0x0000000008007bd0 0x1c ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007bd0 HAL_PCD_ResumeCallback + .text.USBD_LL_Init + 0x0000000008007bec 0x80 ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007bec USBD_LL_Init + .text.USBD_LL_Start + 0x0000000008007c6c 0x36 ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007c6c USBD_LL_Start + .text.USBD_LL_Stop + 0x0000000008007ca2 0x36 ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007ca2 USBD_LL_Stop + .text.USBD_LL_OpenEP + 0x0000000008007cd8 0x4c ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007cd8 USBD_LL_OpenEP + .text.USBD_LL_StallEP + 0x0000000008007d24 0x3e ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007d24 USBD_LL_StallEP + .text.USBD_LL_ClearStallEP + 0x0000000008007d62 0x3e ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007d62 USBD_LL_ClearStallEP + .text.USBD_LL_IsStallEP + 0x0000000008007da0 0x58 ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007da0 USBD_LL_IsStallEP + .text.USBD_LL_SetUSBAddress + 0x0000000008007df8 0x3e ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007df8 USBD_LL_SetUSBAddress + .text.USBD_LL_Transmit + 0x0000000008007e36 0x46 ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007e36 USBD_LL_Transmit + .text.USBD_LL_PrepareReceive + 0x0000000008007e7c 0x46 ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007e7c USBD_LL_PrepareReceive + *fill* 0x0000000008007ec2 0x2 + .text.USBD_static_malloc + 0x0000000008007ec4 0x18 ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007ec4 USBD_static_malloc + .text.USBD_static_free + 0x0000000008007edc 0x12 ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007edc USBD_static_free + .text.HAL_PCDEx_SetConnectionState + 0x0000000008007eee 0x16 ./USB_DEVICE/Target/usbd_conf.o + 0x0000000008007eee HAL_PCDEx_SetConnectionState + .text.USBD_Get_USB_Status + 0x0000000008007f04 0x58 ./USB_DEVICE/Target/usbd_conf.o .text.__libc_init_array - 0x0000000008000db8 0x48 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-init.o) - 0x0000000008000db8 __libc_init_array - .text.memset 0x0000000008000e00 0x10 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-memset.o) - 0x0000000008000e00 memset + 0x0000000008007f5c 0x48 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-init.o) + 0x0000000008007f5c __libc_init_array + .text.memset 0x0000000008007fa4 0x10 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-memset.o) + 0x0000000008007fa4 memset *(.glue_7) - .glue_7 0x0000000008000e10 0x0 linker stubs + .glue_7 0x0000000008007fb4 0x0 linker stubs *(.glue_7t) - .glue_7t 0x0000000008000e10 0x0 linker stubs + .glue_7t 0x0000000008007fb4 0x0 linker stubs *(.eh_frame) - .eh_frame 0x0000000008000e10 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o + .eh_frame 0x0000000008007fb4 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o *(.init) - .init 0x0000000008000e10 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crti.o - 0x0000000008000e10 _init - .init 0x0000000008000e14 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtn.o + .init 0x0000000008007fb4 0x4 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crti.o + 0x0000000008007fb4 _init + .init 0x0000000008007fb8 0x8 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtn.o *(.fini) - .fini 0x0000000008000e1c 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crti.o - 0x0000000008000e1c _fini - .fini 0x0000000008000e20 0x8 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtn.o - 0x0000000008000e28 . = ALIGN (0x4) - 0x0000000008000e28 _etext = . + .fini 0x0000000008007fc0 0x4 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crti.o + 0x0000000008007fc0 _fini + .fini 0x0000000008007fc4 0x8 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtn.o + 0x0000000008007fcc . = ALIGN (0x4) + 0x0000000008007fcc _etext = . -.vfp11_veneer 0x0000000008000e28 0x0 - .vfp11_veneer 0x0000000008000e28 0x0 linker stubs +.vfp11_veneer 0x0000000008007fcc 0x0 + .vfp11_veneer 0x0000000008007fcc 0x0 linker stubs -.v4_bx 0x0000000008000e28 0x0 - .v4_bx 0x0000000008000e28 0x0 linker stubs +.v4_bx 0x0000000008007fcc 0x0 + .v4_bx 0x0000000008007fcc 0x0 linker stubs -.iplt 0x0000000008000e28 0x0 - .iplt 0x0000000008000e28 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o +.iplt 0x0000000008007fcc 0x0 + .iplt 0x0000000008007fcc 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o -.rodata 0x0000000008000e28 0x20 - 0x0000000008000e28 . = ALIGN (0x4) +.rodata 0x0000000008007fcc 0xd8 + 0x0000000008007fcc . = ALIGN (0x4) *(.rodata) - .rodata 0x0000000008000e28 0x10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .rodata 0x0000000008007fcc 0x10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .rodata 0x0000000008007fdc 0x4e ./USB_DEVICE/App/usbd_desc.o + *fill* 0x000000000800802a 0x2 + .rodata 0x000000000800802c 0x5d ./USB_DEVICE/App/usbd_dfu_if.o *(.rodata*) + *fill* 0x0000000008008089 0x3 .rodata.AHBPrescTable - 0x0000000008000e38 0x10 ./Core/Src/system_stm32f1xx.o - 0x0000000008000e38 AHBPrescTable - 0x0000000008000e48 . = ALIGN (0x4) + 0x000000000800808c 0x10 ./Core/Src/system_stm32f1xx.o + 0x000000000800808c AHBPrescTable + .rodata.APBPrescTable + 0x000000000800809c 0x8 ./Core/Src/system_stm32f1xx.o + 0x000000000800809c APBPrescTable + 0x00000000080080a4 . = ALIGN (0x4) -.rel.dyn 0x0000000008000e48 0x0 - .rel.iplt 0x0000000008000e48 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o +.rel.dyn 0x00000000080080a4 0x0 + .rel.iplt 0x00000000080080a4 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o -.ARM.extab 0x0000000008000e48 0x0 - 0x0000000008000e48 . = ALIGN (0x4) +.ARM.extab 0x00000000080080a4 0x0 + 0x00000000080080a4 . = ALIGN (0x4) *(.ARM.extab* .gnu.linkonce.armextab.*) - 0x0000000008000e48 . = ALIGN (0x4) + 0x00000000080080a4 . = ALIGN (0x4) -.ARM 0x0000000008000e48 0x0 - 0x0000000008000e48 . = ALIGN (0x4) - 0x0000000008000e48 __exidx_start = . +.ARM 0x00000000080080a4 0x0 + 0x00000000080080a4 . = ALIGN (0x4) + 0x00000000080080a4 __exidx_start = . *(.ARM.exidx*) - 0x0000000008000e48 __exidx_end = . - 0x0000000008000e48 . = ALIGN (0x4) + 0x00000000080080a4 __exidx_end = . + 0x00000000080080a4 . = ALIGN (0x4) -.preinit_array 0x0000000008000e48 0x0 - 0x0000000008000e48 . = ALIGN (0x4) - 0x0000000008000e48 PROVIDE (__preinit_array_start = .) +.preinit_array 0x00000000080080a4 0x0 + 0x00000000080080a4 . = ALIGN (0x4) + 0x00000000080080a4 PROVIDE (__preinit_array_start = .) *(.preinit_array*) - 0x0000000008000e48 PROVIDE (__preinit_array_end = .) - 0x0000000008000e48 . = ALIGN (0x4) + 0x00000000080080a4 PROVIDE (__preinit_array_end = .) + 0x00000000080080a4 . = ALIGN (0x4) -.init_array 0x0000000008000e48 0x4 - 0x0000000008000e48 . = ALIGN (0x4) - 0x0000000008000e48 PROVIDE (__init_array_start = .) +.init_array 0x00000000080080a4 0x4 + 0x00000000080080a4 . = ALIGN (0x4) + 0x00000000080080a4 PROVIDE (__init_array_start = .) *(SORT_BY_NAME(.init_array.*)) *(.init_array*) - .init_array 0x0000000008000e48 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o - 0x0000000008000e4c PROVIDE (__init_array_end = .) - 0x0000000008000e4c . = ALIGN (0x4) + .init_array 0x00000000080080a4 0x4 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o + 0x00000000080080a8 PROVIDE (__init_array_end = .) + 0x00000000080080a8 . = ALIGN (0x4) -.fini_array 0x0000000008000e4c 0x4 - 0x0000000008000e4c . = ALIGN (0x4) +.fini_array 0x00000000080080a8 0x4 + 0x00000000080080a8 . = ALIGN (0x4) [!provide] PROVIDE (__fini_array_start = .) *(SORT_BY_NAME(.fini_array.*)) *(.fini_array*) - .fini_array 0x0000000008000e4c 0x4 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o + .fini_array 0x00000000080080a8 0x4 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o [!provide] PROVIDE (__fini_array_end = .) - 0x0000000008000e50 . = ALIGN (0x4) - 0x0000000008000e50 _sidata = LOADADDR (.data) + 0x00000000080080ac . = ALIGN (0x4) + 0x00000000080080ac _sidata = LOADADDR (.data) -.data 0x0000000020000000 0xc load address 0x0000000008000e50 +.data 0x0000000020000000 0xdc load address 0x00000000080080ac 0x0000000020000000 . = ALIGN (0x4) 0x0000000020000000 _sdata = . *(.data) @@ -2137,40 +5039,80 @@ LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.id .data.uwTickFreq 0x0000000020000008 0x1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o 0x0000000020000008 uwTickFreq + *fill* 0x0000000020000009 0x3 + .data.USBD_DFU + 0x000000002000000c 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + 0x000000002000000c USBD_DFU + .data.USBD_DFU_CfgDesc + 0x0000000020000048 0x1b ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + *fill* 0x0000000020000063 0x1 + .data.USBD_DFU_DeviceQualifierDesc + 0x0000000020000064 0xa ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + *fill* 0x000000002000006e 0x2 + .data.FS_Desc 0x0000000020000070 0x1c ./USB_DEVICE/App/usbd_desc.o + 0x0000000020000070 FS_Desc + .data.USBD_FS_DeviceDesc + 0x000000002000008c 0x12 ./USB_DEVICE/App/usbd_desc.o + 0x000000002000008c USBD_FS_DeviceDesc + *fill* 0x000000002000009e 0x2 + .data.USBD_LangIDDesc + 0x00000000200000a0 0x4 ./USB_DEVICE/App/usbd_desc.o + 0x00000000200000a0 USBD_LangIDDesc + .data.USBD_StringSerial + 0x00000000200000a4 0x1a ./USB_DEVICE/App/usbd_desc.o + 0x00000000200000a4 USBD_StringSerial + *fill* 0x00000000200000be 0x2 + .data.USBD_DFU_fops_FS + 0x00000000200000c0 0x1c ./USB_DEVICE/App/usbd_dfu_if.o + 0x00000000200000c0 USBD_DFU_fops_FS *(.RamFunc) *(.RamFunc*) - 0x000000002000000c . = ALIGN (0x4) - *fill* 0x0000000020000009 0x3 - 0x000000002000000c _edata = . + 0x00000000200000dc . = ALIGN (0x4) + 0x00000000200000dc _edata = . -.igot.plt 0x000000002000000c 0x0 load address 0x0000000008000e5c - .igot.plt 0x000000002000000c 0x0 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o - 0x000000002000000c . = ALIGN (0x4) +.igot.plt 0x00000000200000dc 0x0 load address 0x0000000008008188 + .igot.plt 0x00000000200000dc 0x0 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o + 0x00000000200000dc . = ALIGN (0x4) -.bss 0x000000002000000c 0x20 load address 0x0000000008000e5c - 0x000000002000000c _sbss = . - 0x000000002000000c __bss_start__ = _sbss +.bss 0x00000000200000dc 0xdb8 load address 0x0000000008008188 + 0x00000000200000dc _sbss = . + 0x00000000200000dc __bss_start__ = _sbss *(.bss) - .bss 0x000000002000000c 0x1c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o + .bss 0x00000000200000dc 0x1c c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o *(.bss*) + .bss.USBD_StrDesc.8312 + 0x00000000200000f8 0xff ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .bss.cfgidx.8245 + 0x00000000200001f7 0x1 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .bss.mem.8320 0x00000000200001f8 0x420 ./USB_DEVICE/Target/usbd_conf.o *(COMMON) - COMMON 0x0000000020000028 0x4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x0000000020000028 uwTick - 0x000000002000002c . = ALIGN (0x4) - 0x000000002000002c _ebss = . - 0x000000002000002c __bss_end__ = _ebss + COMMON 0x0000000020000618 0xc8 ./Core/Src/main.o + 0x0000000020000618 hi2c1 + 0x000000002000066c hadc1 + 0x000000002000069c huart1 + COMMON 0x00000000200006e0 0x4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x00000000200006e0 uwTick + COMMON 0x00000000200006e4 0x2c4 ./USB_DEVICE/App/usb_device.o + 0x00000000200006e4 hUsbDeviceFS + COMMON 0x00000000200009a8 0x200 ./USB_DEVICE/App/usbd_desc.o + 0x00000000200009a8 USBD_StrDesc + COMMON 0x0000000020000ba8 0x2ec ./USB_DEVICE/Target/usbd_conf.o + 0x0000000020000ba8 hpcd_USB_FS + 0x0000000020000e94 . = ALIGN (0x4) + 0x0000000020000e94 _ebss = . + 0x0000000020000e94 __bss_end__ = _ebss ._user_heap_stack - 0x000000002000002c 0x604 load address 0x0000000008000e5c - 0x0000000020000030 . = ALIGN (0x8) - *fill* 0x000000002000002c 0x4 + 0x0000000020000e94 0x604 load address 0x0000000008008188 + 0x0000000020000e98 . = ALIGN (0x8) + *fill* 0x0000000020000e94 0x4 [!provide] PROVIDE (end = .) - 0x0000000020000030 PROVIDE (_end = .) - 0x0000000020000230 . = (. + _Min_Heap_Size) - *fill* 0x0000000020000030 0x200 - 0x0000000020000630 . = (. + _Min_Stack_Size) - *fill* 0x0000000020000230 0x400 - 0x0000000020000630 . = ALIGN (0x8) + 0x0000000020000e98 PROVIDE (_end = .) + 0x0000000020001098 . = (. + _Min_Heap_Size) + *fill* 0x0000000020000e98 0x200 + 0x0000000020001498 . = (. + _Min_Stack_Size) + *fill* 0x0000000020001098 0x400 + 0x0000000020001498 . = ALIGN (0x8) /DISCARD/ libc.a(*) @@ -2181,9 +5123,9 @@ LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.id 0x0000000000000000 0x29 *(.ARM.attributes) .ARM.attributes - 0x0000000000000000 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crti.o + 0x0000000000000000 0x1d c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crti.o .ARM.attributes - 0x000000000000001d 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o + 0x000000000000001d 0x2d c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtbegin.o .ARM.attributes 0x000000000000004a 0x2d ./Core/Src/main.o .ARM.attributes @@ -2197,139 +5139,363 @@ LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.id .ARM.attributes 0x000000000000011f 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .ARM.attributes - 0x000000000000014c 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x000000000000014c 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o .ARM.attributes - 0x0000000000000179 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x0000000000000179 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o .ARM.attributes - 0x00000000000001a6 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-init.o) + 0x00000000000001a6 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o .ARM.attributes - 0x00000000000001d3 0x2d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-memset.o) + 0x00000000000001d3 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o .ARM.attributes - 0x0000000000000200 0x1d /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtn.o + 0x0000000000000200 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .ARM.attributes + 0x000000000000022d 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .ARM.attributes + 0x000000000000025a 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .ARM.attributes + 0x0000000000000287 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .ARM.attributes + 0x00000000000002b4 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .ARM.attributes + 0x00000000000002e1 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .ARM.attributes + 0x000000000000030e 0x2d ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .ARM.attributes + 0x000000000000033b 0x2d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .ARM.attributes + 0x0000000000000368 0x2d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .ARM.attributes + 0x0000000000000395 0x2d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .ARM.attributes + 0x00000000000003c2 0x2d ./USB_DEVICE/App/usb_device.o + .ARM.attributes + 0x00000000000003ef 0x2d ./USB_DEVICE/App/usbd_desc.o + .ARM.attributes + 0x000000000000041c 0x2d ./USB_DEVICE/App/usbd_dfu_if.o + .ARM.attributes + 0x0000000000000449 0x2d ./USB_DEVICE/Target/usbd_conf.o + .ARM.attributes + 0x0000000000000476 0x2d c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-init.o) + .ARM.attributes + 0x00000000000004a3 0x2d c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-memset.o) + .ARM.attributes + 0x00000000000004d0 0x1d c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/crtn.o OUTPUT(stm32f103.elf elf32-littlearm) LOAD linker stubs -LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc.a -LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libm.a -LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp/libgcc.a +LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc.a +LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a +LOAD c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v7-m/nofp\libgcc.a -.debug_info 0x0000000000000000 0x2816 - .debug_info 0x0000000000000000 0x444 ./Core/Src/main.o - .debug_info 0x0000000000000444 0x2fc ./Core/Src/stm32f1xx_hal_msp.o - .debug_info 0x0000000000000740 0x222 ./Core/Src/stm32f1xx_it.o - .debug_info 0x0000000000000962 0x2be ./Core/Src/system_stm32f1xx.o - .debug_info 0x0000000000000c20 0x22 ./Core/Startup/startup_stm32f103c8tx.o - .debug_info 0x0000000000000c42 0x76a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_info 0x00000000000013ac 0xbdc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_info 0x0000000000001f88 0x88e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o +.debug_info 0x0000000000000000 0x17791 + .debug_info 0x0000000000000000 0x1849 ./Core/Src/main.o + .debug_info 0x0000000000001849 0xec9 ./Core/Src/stm32f1xx_hal_msp.o + .debug_info 0x0000000000002712 0x713 ./Core/Src/stm32f1xx_it.o + .debug_info 0x0000000000002e25 0x2be ./Core/Src/system_stm32f1xx.o + .debug_info 0x00000000000030e3 0x22 ./Core/Startup/startup_stm32f103c8tx.o + .debug_info 0x0000000000003105 0x76a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_info 0x000000000000386f 0xd2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_info 0x000000000000459c 0xbdc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_info 0x0000000000005178 0x701 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_info 0x0000000000005879 0x278e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_info 0x0000000000008007 0x1509 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_info 0x0000000000009510 0x7fc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_info 0x0000000000009d0c 0x88e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_info 0x000000000000a59a 0x480 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_info 0x000000000000aa1a 0x161a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_info 0x000000000000c034 0x19e6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_info 0x000000000000da1a 0x190f ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_info 0x000000000000f329 0x131b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_info 0x0000000000010644 0x1288 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_info 0x00000000000118cc 0x105a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_info 0x0000000000012926 0xfdb ./USB_DEVICE/App/usb_device.o + .debug_info 0x0000000000013901 0xde8 ./USB_DEVICE/App/usbd_desc.o + .debug_info 0x00000000000146e9 0x10f3 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_info 0x00000000000157dc 0x1fb5 ./USB_DEVICE/Target/usbd_conf.o -.debug_abbrev 0x0000000000000000 0xc75 - .debug_abbrev 0x0000000000000000 0x1b3 ./Core/Src/main.o - .debug_abbrev 0x00000000000001b3 0x11d ./Core/Src/stm32f1xx_hal_msp.o - .debug_abbrev 0x00000000000002d0 0xd2 ./Core/Src/stm32f1xx_it.o - .debug_abbrev 0x00000000000003a2 0x14e ./Core/Src/system_stm32f1xx.o - .debug_abbrev 0x00000000000004f0 0x12 ./Core/Startup/startup_stm32f103c8tx.o - .debug_abbrev 0x0000000000000502 0x1ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_abbrev 0x00000000000006ef 0x313 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_abbrev 0x0000000000000a02 0x273 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o +.debug_abbrev 0x0000000000000000 0x3424 + .debug_abbrev 0x0000000000000000 0x2b7 ./Core/Src/main.o + .debug_abbrev 0x00000000000002b7 0x1ac ./Core/Src/stm32f1xx_hal_msp.o + .debug_abbrev 0x0000000000000463 0x173 ./Core/Src/stm32f1xx_it.o + .debug_abbrev 0x00000000000005d6 0x14e ./Core/Src/system_stm32f1xx.o + .debug_abbrev 0x0000000000000724 0x12 ./Core/Startup/startup_stm32f103c8tx.o + .debug_abbrev 0x0000000000000736 0x1ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_abbrev 0x0000000000000923 0x1fb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_abbrev 0x0000000000000b1e 0x313 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_abbrev 0x0000000000000e31 0x1e8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_abbrev 0x0000000000001019 0x288 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_abbrev 0x00000000000012a1 0x29e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_abbrev 0x000000000000153f 0x1ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_abbrev 0x00000000000016eb 0x273 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_abbrev 0x000000000000195e 0x193 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_abbrev 0x0000000000001af1 0x28b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_abbrev 0x0000000000001d7c 0x1fa ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_abbrev 0x0000000000001f76 0x32c ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_abbrev 0x00000000000022a2 0x2a8 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_abbrev 0x000000000000254a 0x2de ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_abbrev 0x0000000000002828 0x20a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_abbrev 0x0000000000002a32 0x1e4 ./USB_DEVICE/App/usb_device.o + .debug_abbrev 0x0000000000002c16 0x2ca ./USB_DEVICE/App/usbd_desc.o + .debug_abbrev 0x0000000000002ee0 0x21e ./USB_DEVICE/App/usbd_dfu_if.o + .debug_abbrev 0x00000000000030fe 0x326 ./USB_DEVICE/Target/usbd_conf.o -.debug_aranges 0x0000000000000000 0x378 +.debug_aranges 0x0000000000000000 0x1080 .debug_aranges - 0x0000000000000000 0x38 ./Core/Src/main.o + 0x0000000000000000 0x50 ./Core/Src/main.o .debug_aranges - 0x0000000000000038 0x20 ./Core/Src/stm32f1xx_hal_msp.o + 0x0000000000000050 0x50 ./Core/Src/stm32f1xx_hal_msp.o .debug_aranges - 0x0000000000000058 0x60 ./Core/Src/stm32f1xx_it.o + 0x00000000000000a0 0x68 ./Core/Src/stm32f1xx_it.o .debug_aranges - 0x00000000000000b8 0x28 ./Core/Src/system_stm32f1xx.o + 0x0000000000000108 0x28 ./Core/Src/system_stm32f1xx.o .debug_aranges - 0x00000000000000e0 0x28 ./Core/Startup/startup_stm32f103c8tx.o + 0x0000000000000130 0x28 ./Core/Startup/startup_stm32f103c8tx.o .debug_aranges - 0x0000000000000108 0xe0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x0000000000000158 0xe0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o .debug_aranges - 0x00000000000001e8 0x100 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x0000000000000238 0xf0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o .debug_aranges - 0x00000000000002e8 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x0000000000000328 0x100 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_aranges + 0x0000000000000428 0x58 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_aranges + 0x0000000000000480 0x2a0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_aranges + 0x0000000000000720 0x138 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_aranges + 0x0000000000000858 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_aranges + 0x0000000000000890 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_aranges + 0x0000000000000920 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_aranges + 0x0000000000000950 0x200 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_aranges + 0x0000000000000b50 0xf0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_aranges + 0x0000000000000c40 0xd0 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_aranges + 0x0000000000000d10 0xb8 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_aranges + 0x0000000000000dc8 0x88 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_aranges + 0x0000000000000e50 0x50 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_aranges + 0x0000000000000ea0 0x20 ./USB_DEVICE/App/usb_device.o + .debug_aranges + 0x0000000000000ec0 0x60 ./USB_DEVICE/App/usbd_desc.o + .debug_aranges + 0x0000000000000f20 0x48 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_aranges + 0x0000000000000f68 0x118 ./USB_DEVICE/Target/usbd_conf.o -.debug_ranges 0x0000000000000000 0x300 - .debug_ranges 0x0000000000000000 0x28 ./Core/Src/main.o - .debug_ranges 0x0000000000000028 0x10 ./Core/Src/stm32f1xx_hal_msp.o - .debug_ranges 0x0000000000000038 0x50 ./Core/Src/stm32f1xx_it.o - .debug_ranges 0x0000000000000088 0x18 ./Core/Src/system_stm32f1xx.o - .debug_ranges 0x00000000000000a0 0x20 ./Core/Startup/startup_stm32f103c8tx.o - .debug_ranges 0x00000000000000c0 0xd0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_ranges 0x0000000000000190 0xf0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_ranges 0x0000000000000280 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o +.debug_ranges 0x0000000000000000 0xf60 + .debug_ranges 0x0000000000000000 0x40 ./Core/Src/main.o + .debug_ranges 0x0000000000000040 0x40 ./Core/Src/stm32f1xx_hal_msp.o + .debug_ranges 0x0000000000000080 0x58 ./Core/Src/stm32f1xx_it.o + .debug_ranges 0x00000000000000d8 0x18 ./Core/Src/system_stm32f1xx.o + .debug_ranges 0x00000000000000f0 0x20 ./Core/Startup/startup_stm32f103c8tx.o + .debug_ranges 0x0000000000000110 0xd0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_ranges 0x00000000000001e0 0xe0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_ranges 0x00000000000002c0 0xf0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_ranges 0x00000000000003b0 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_ranges 0x00000000000003f8 0x2b8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_ranges 0x00000000000006b0 0x128 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_ranges 0x00000000000007d8 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_ranges 0x0000000000000800 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_ranges 0x0000000000000880 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_ranges 0x00000000000008a0 0x220 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_ranges 0x0000000000000ac0 0xe0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_ranges 0x0000000000000ba0 0xc0 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_ranges 0x0000000000000c60 0xa8 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_ranges 0x0000000000000d08 0x78 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_ranges 0x0000000000000d80 0x40 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_ranges 0x0000000000000dc0 0x10 ./USB_DEVICE/App/usb_device.o + .debug_ranges 0x0000000000000dd0 0x50 ./USB_DEVICE/App/usbd_desc.o + .debug_ranges 0x0000000000000e20 0x38 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_ranges 0x0000000000000e58 0x108 ./USB_DEVICE/Target/usbd_conf.o -.debug_macro 0x0000000000000000 0x156ee - .debug_macro 0x0000000000000000 0x18e ./Core/Src/main.o - .debug_macro 0x000000000000018e 0xa9c ./Core/Src/main.o - .debug_macro 0x0000000000000c2a 0x20f ./Core/Src/main.o - .debug_macro 0x0000000000000e39 0x2e ./Core/Src/main.o - .debug_macro 0x0000000000000e67 0x22 ./Core/Src/main.o - .debug_macro 0x0000000000000e89 0x22 ./Core/Src/main.o - .debug_macro 0x0000000000000eab 0x8e ./Core/Src/main.o - .debug_macro 0x0000000000000f39 0x51 ./Core/Src/main.o - .debug_macro 0x0000000000000f8a 0x103 ./Core/Src/main.o - .debug_macro 0x000000000000108d 0x6a ./Core/Src/main.o - .debug_macro 0x00000000000010f7 0x1df ./Core/Src/main.o - .debug_macro 0x00000000000012d6 0x1c ./Core/Src/main.o - .debug_macro 0x00000000000012f2 0x22 ./Core/Src/main.o - .debug_macro 0x0000000000001314 0xc3 ./Core/Src/main.o - .debug_macro 0x00000000000013d7 0xd23 ./Core/Src/main.o - .debug_macro 0x00000000000020fa 0xe09e ./Core/Src/main.o - .debug_macro 0x0000000000010198 0x6d ./Core/Src/main.o - .debug_macro 0x0000000000010205 0x3468 ./Core/Src/main.o - .debug_macro 0x000000000001366d 0x174 ./Core/Src/main.o - .debug_macro 0x00000000000137e1 0x5c ./Core/Src/main.o - .debug_macro 0x000000000001383d 0x5be ./Core/Src/main.o - .debug_macro 0x0000000000013dfb 0x289 ./Core/Src/main.o - .debug_macro 0x0000000000014084 0x1cb ./Core/Src/main.o - .debug_macro 0x000000000001424f 0x114 ./Core/Src/main.o - .debug_macro 0x0000000000014363 0x1b2 ./Core/Src/main.o - .debug_macro 0x0000000000014515 0x27 ./Core/Src/main.o - .debug_macro 0x000000000001453c 0x136 ./Core/Src/main.o - .debug_macro 0x0000000000014672 0x1bc ./Core/Src/main.o - .debug_macro 0x000000000001482e 0x34 ./Core/Src/main.o - .debug_macro 0x0000000000014862 0x3c ./Core/Src/main.o - .debug_macro 0x000000000001489e 0x57 ./Core/Src/main.o - .debug_macro 0x00000000000148f5 0x88 ./Core/Src/main.o - .debug_macro 0x000000000001497d 0x241 ./Core/Src/main.o - .debug_macro 0x0000000000014bbe 0x141 ./Core/Src/main.o - .debug_macro 0x0000000000014cff 0x83 ./Core/Src/main.o - .debug_macro 0x0000000000014d82 0x18e ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x0000000000014f10 0x198 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000000150a8 0x184 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x000000000001522c 0x1a8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000000153d4 0x184 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x0000000000015558 0x196 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o +.debug_macro 0x0000000000000000 0x1aad7 + .debug_macro 0x0000000000000000 0x3c5 ./Core/Src/main.o + .debug_macro 0x00000000000003c5 0xa9c ./Core/Src/main.o + .debug_macro 0x0000000000000e61 0x227 ./Core/Src/main.o + .debug_macro 0x0000000000001088 0x2e ./Core/Src/main.o + .debug_macro 0x00000000000010b6 0x22 ./Core/Src/main.o + .debug_macro 0x00000000000010d8 0x22 ./Core/Src/main.o + .debug_macro 0x00000000000010fa 0x8e ./Core/Src/main.o + .debug_macro 0x0000000000001188 0x51 ./Core/Src/main.o + .debug_macro 0x00000000000011d9 0x103 ./Core/Src/main.o + .debug_macro 0x00000000000012dc 0x6a ./Core/Src/main.o + .debug_macro 0x0000000000001346 0x1df ./Core/Src/main.o + .debug_macro 0x0000000000001525 0x1c ./Core/Src/main.o + .debug_macro 0x0000000000001541 0x22 ./Core/Src/main.o + .debug_macro 0x0000000000001563 0xc3 ./Core/Src/main.o + .debug_macro 0x0000000000001626 0xd23 ./Core/Src/main.o + .debug_macro 0x0000000000002349 0xe09e ./Core/Src/main.o + .debug_macro 0x00000000000103e7 0x6d ./Core/Src/main.o + .debug_macro 0x0000000000010454 0x3468 ./Core/Src/main.o + .debug_macro 0x00000000000138bc 0x174 ./Core/Src/main.o + .debug_macro 0x0000000000013a30 0x5c ./Core/Src/main.o + .debug_macro 0x0000000000013a8c 0x5be ./Core/Src/main.o + .debug_macro 0x000000000001404a 0x289 ./Core/Src/main.o + .debug_macro 0x00000000000142d3 0x1cb ./Core/Src/main.o + .debug_macro 0x000000000001449e 0x114 ./Core/Src/main.o + .debug_macro 0x00000000000145b2 0x1b2 ./Core/Src/main.o + .debug_macro 0x0000000000014764 0x27 ./Core/Src/main.o + .debug_macro 0x000000000001478b 0x136 ./Core/Src/main.o + .debug_macro 0x00000000000148c1 0x1bc ./Core/Src/main.o + .debug_macro 0x0000000000014a7d 0x34 ./Core/Src/main.o + .debug_macro 0x0000000000014ab1 0x3c ./Core/Src/main.o + .debug_macro 0x0000000000014aed 0x57 ./Core/Src/main.o + .debug_macro 0x0000000000014b44 0x46a ./Core/Src/main.o + .debug_macro 0x0000000000014fae 0x1b5 ./Core/Src/main.o + .debug_macro 0x0000000000015163 0x88 ./Core/Src/main.o + .debug_macro 0x00000000000151eb 0x241 ./Core/Src/main.o + .debug_macro 0x000000000001542c 0x287 ./Core/Src/main.o + .debug_macro 0x00000000000156b3 0x141 ./Core/Src/main.o + .debug_macro 0x00000000000157f4 0x279 ./Core/Src/main.o + .debug_macro 0x0000000000015a6d 0x65 ./Core/Src/main.o + .debug_macro 0x0000000000015ad2 0x249 ./Core/Src/main.o + .debug_macro 0x0000000000015d1b 0x83 ./Core/Src/main.o + .debug_macro 0x0000000000015d9e 0x52 ./Core/Src/main.o + .debug_macro 0x0000000000015df0 0x18 ./Core/Src/main.o + .debug_macro 0x0000000000015e08 0x3c ./Core/Src/main.o + .debug_macro 0x0000000000015e44 0x34 ./Core/Src/main.o + .debug_macro 0x0000000000015e78 0x16 ./Core/Src/main.o + .debug_macro 0x0000000000015e8e 0x35 ./Core/Src/main.o + .debug_macro 0x0000000000015ec3 0x333 ./Core/Src/main.o + .debug_macro 0x00000000000161f6 0x10 ./Core/Src/main.o + .debug_macro 0x0000000000016206 0x16 ./Core/Src/main.o + .debug_macro 0x000000000001621c 0x43 ./Core/Src/main.o + .debug_macro 0x000000000001625f 0x34 ./Core/Src/main.o + .debug_macro 0x0000000000016293 0x10 ./Core/Src/main.o + .debug_macro 0x00000000000162a3 0x58 ./Core/Src/main.o + .debug_macro 0x00000000000162fb 0x71 ./Core/Src/main.o + .debug_macro 0x000000000001636c 0x1c ./Core/Src/main.o + .debug_macro 0x0000000000016388 0x12a ./Core/Src/main.o + .debug_macro 0x00000000000164b2 0x10 ./Core/Src/main.o + .debug_macro 0x00000000000164c2 0x1c ./Core/Src/main.o + .debug_macro 0x00000000000164de 0x52 ./Core/Src/main.o + .debug_macro 0x0000000000016530 0x22 ./Core/Src/main.o + .debug_macro 0x0000000000016552 0x10 ./Core/Src/main.o + .debug_macro 0x0000000000016562 0x40 ./Core/Src/main.o + .debug_macro 0x00000000000165a2 0xd5 ./Core/Src/main.o + .debug_macro 0x0000000000016677 0x1c ./Core/Src/main.o + .debug_macro 0x0000000000016693 0x3d ./Core/Src/main.o + .debug_macro 0x00000000000166d0 0x16 ./Core/Src/main.o + .debug_macro 0x00000000000166e6 0x145 ./Core/Src/main.o + .debug_macro 0x000000000001682b 0x16 ./Core/Src/main.o + .debug_macro 0x0000000000016841 0x16 ./Core/Src/main.o + .debug_macro 0x0000000000016857 0x29 ./Core/Src/main.o + .debug_macro 0x0000000000016880 0x16 ./Core/Src/main.o + .debug_macro 0x0000000000016896 0x20 ./Core/Src/main.o + .debug_macro 0x00000000000168b6 0x72 ./Core/Src/main.o + .debug_macro 0x0000000000016928 0x1c2 ./Core/Src/main.o + .debug_macro 0x0000000000016aea 0x1da ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x0000000000016cc4 0x1e4 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x0000000000016ea8 0x1d0 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x0000000000017078 0x1f4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x000000000001726c 0x1ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x0000000000017459 0x1d0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x0000000000017629 0x23b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x0000000000017864 0x217 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_macro 0x0000000000017a7b 0x1dc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x0000000000017c57 0x1d0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x0000000000017e27 0x1e2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x0000000000018009 0x1d0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000000181d9 0x1d1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_macro 0x00000000000183aa 0x1d0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x000000000001857a 0x3f0 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x000000000001896a 0x97 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000018a01 0xfd ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000018afe 0xbd ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000018bbb 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000018c11 0x10a ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_macro 0x0000000000018d1b 0x3d7 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000000190f2 0x1c8 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000000192ba 0x3e1 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x000000000001969b 0x3dd ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x0000000000019a78 0x417 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000019e8f 0x22 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0000000000019eb1 0x414 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x000000000001a2c5 0x1c ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x000000000001a2e1 0x3fc ./USB_DEVICE/App/usbd_dfu_if.o + .debug_macro 0x000000000001a6dd 0x3fa ./USB_DEVICE/Target/usbd_conf.o -.debug_line 0x0000000000000000 0x3d01 - .debug_line 0x0000000000000000 0x6ea ./Core/Src/main.o - .debug_line 0x00000000000006ea 0x665 ./Core/Src/stm32f1xx_hal_msp.o - .debug_line 0x0000000000000d4f 0x726 ./Core/Src/stm32f1xx_it.o - .debug_line 0x0000000000001475 0x6e2 ./Core/Src/system_stm32f1xx.o - .debug_line 0x0000000000001b57 0x87 ./Core/Startup/startup_stm32f103c8tx.o - .debug_line 0x0000000000001bde 0x90f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_line 0x00000000000024ed 0xaf7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_line 0x0000000000002fe4 0xd1d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o +.debug_line 0x0000000000000000 0x15028 + .debug_line 0x0000000000000000 0xb02 ./Core/Src/main.o + .debug_line 0x0000000000000b02 0x7bf ./Core/Src/stm32f1xx_hal_msp.o + .debug_line 0x00000000000012c1 0x7b5 ./Core/Src/stm32f1xx_it.o + .debug_line 0x0000000000001a76 0x759 ./Core/Src/system_stm32f1xx.o + .debug_line 0x00000000000021cf 0x87 ./Core/Startup/startup_stm32f103c8tx.o + .debug_line 0x0000000000002256 0x986 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_line 0x0000000000002bdc 0xffd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_line 0x0000000000003bd9 0xb6e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_line 0x0000000000004747 0xa1d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_line 0x0000000000005164 0x3a70 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_line 0x0000000000008bd4 0x1374 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_line 0x0000000000009f48 0x754 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_line 0x000000000000a69c 0xd94 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_line 0x000000000000b430 0x8d2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_line 0x000000000000bd02 0x1a61 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_line 0x000000000000d763 0x108e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_line 0x000000000000e7f1 0x11da ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_line 0x000000000000f9cb 0xde8 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_line 0x00000000000107b3 0x1022 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_line 0x00000000000117d5 0xa7e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_line 0x0000000000012253 0xa3e ./USB_DEVICE/App/usb_device.o + .debug_line 0x0000000000012c91 0xb07 ./USB_DEVICE/App/usbd_desc.o + .debug_line 0x0000000000013798 0xa7f ./USB_DEVICE/App/usbd_dfu_if.o + .debug_line 0x0000000000014217 0xe11 ./USB_DEVICE/Target/usbd_conf.o -.debug_str 0x0000000000000000 0x7b704 - .debug_str 0x0000000000000000 0x7aa69 ./Core/Src/main.o - 0x7ad97 (size before relaxing) - .debug_str 0x000000000007aa69 0x5a ./Core/Src/stm32f1xx_hal_msp.o - 0x7ac67 (size before relaxing) - .debug_str 0x000000000007aac3 0xbd ./Core/Src/stm32f1xx_it.o - 0x7ac84 (size before relaxing) - .debug_str 0x000000000007ab80 0x52 ./Core/Src/system_stm32f1xx.o - 0x7ac54 (size before relaxing) - .debug_str 0x000000000007abd2 0x36 ./Core/Startup/startup_stm32f103c8tx.o - 0x74 (size before relaxing) - .debug_str 0x000000000007ac08 0x56f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x7b2e5 (size before relaxing) - .debug_str 0x000000000007b177 0x300 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - 0x7b2ed (size before relaxing) - .debug_str 0x000000000007b477 0x28d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - 0x7b051 (size before relaxing) +.debug_str 0x0000000000000000 0x8e9a3 + .debug_str 0x0000000000000000 0x8a4eb ./Core/Src/main.o + 0x8a9e5 (size before relaxing) + .debug_str 0x000000000008a4eb 0xd2 ./Core/Src/stm32f1xx_hal_msp.o + 0x85c3e (size before relaxing) + .debug_str 0x000000000008a5bd 0x3ae ./Core/Src/stm32f1xx_it.o + 0x857c8 (size before relaxing) + .debug_str 0x000000000008a96b 0x52 ./Core/Src/system_stm32f1xx.o + 0x85412 (size before relaxing) + .debug_str 0x000000000008a9bd 0x36 ./Core/Startup/startup_stm32f103c8tx.o + 0x70 (size before relaxing) + .debug_str 0x000000000008a9f3 0x55e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x85aa3 (size before relaxing) + .debug_str 0x000000000008af51 0x356 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + 0x85aa2 (size before relaxing) + .debug_str 0x000000000008b2a7 0x2d8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x85aab (size before relaxing) + .debug_str 0x000000000008b57f 0x340 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + 0x857d6 (size before relaxing) + .debug_str 0x000000000008b8bf 0xb2a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + 0x8644e (size before relaxing) + .debug_str 0x000000000008c3e9 0x3e5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x85b65 (size before relaxing) + .debug_str 0x000000000008c7ce 0x18d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + 0x858b2 (size before relaxing) + .debug_str 0x000000000008c95b 0x244 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x8580f (size before relaxing) + .debug_str 0x000000000008cb9f 0xb9 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + 0x8559c (size before relaxing) + .debug_str 0x000000000008cc58 0x5e4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + 0x85e01 (size before relaxing) + .debug_str 0x000000000008d23c 0x2a1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x858e5 (size before relaxing) + .debug_str 0x000000000008d4dd 0xba0 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + 0x8ac4e (size before relaxing) + .debug_str 0x000000000008e07d 0x1b5 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x8a562 (size before relaxing) + .debug_str 0x000000000008e232 0x12f ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x8a4e8 (size before relaxing) + .debug_str 0x000000000008e361 0xc9 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x8a470 (size before relaxing) + .debug_str 0x000000000008e42a 0xe6 ./USB_DEVICE/App/usb_device.o + 0x8a9cc (size before relaxing) + .debug_str 0x000000000008e510 0x254 ./USB_DEVICE/App/usbd_desc.o + 0x8a3d0 (size before relaxing) + .debug_str 0x000000000008e764 0xf6 ./USB_DEVICE/App/usbd_dfu_if.o + 0x8a9ff (size before relaxing) + .debug_str 0x000000000008e85a 0x149 ./USB_DEVICE/Target/usbd_conf.o + 0x8b2bc (size before relaxing) .comment 0x0000000000000000 0x53 .comment 0x0000000000000000 0x53 ./Core/Src/main.o @@ -2338,16 +5504,48 @@ LOAD /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.id .comment 0x0000000000000053 0x54 ./Core/Src/stm32f1xx_it.o .comment 0x0000000000000053 0x54 ./Core/Src/system_stm32f1xx.o .comment 0x0000000000000053 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .comment 0x0000000000000053 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o .comment 0x0000000000000053 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .comment 0x0000000000000053 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .comment 0x0000000000000053 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .comment 0x0000000000000053 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .comment 0x0000000000000053 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o .comment 0x0000000000000053 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .comment 0x0000000000000053 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .comment 0x0000000000000053 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .comment 0x0000000000000053 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .comment 0x0000000000000053 0x54 ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .comment 0x0000000000000053 0x54 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .comment 0x0000000000000053 0x54 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .comment 0x0000000000000053 0x54 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .comment 0x0000000000000053 0x54 ./USB_DEVICE/App/usb_device.o + .comment 0x0000000000000053 0x54 ./USB_DEVICE/App/usbd_desc.o + .comment 0x0000000000000053 0x54 ./USB_DEVICE/App/usbd_dfu_if.o + .comment 0x0000000000000053 0x54 ./USB_DEVICE/Target/usbd_conf.o -.debug_frame 0x0000000000000000 0xbe8 - .debug_frame 0x0000000000000000 0x90 ./Core/Src/main.o - .debug_frame 0x0000000000000090 0x38 ./Core/Src/stm32f1xx_hal_msp.o - .debug_frame 0x00000000000000c8 0x104 ./Core/Src/stm32f1xx_it.o - .debug_frame 0x00000000000001cc 0x58 ./Core/Src/system_stm32f1xx.o - .debug_frame 0x0000000000000224 0x334 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_frame 0x0000000000000558 0x428 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_frame 0x0000000000000980 0x21c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_frame 0x0000000000000b9c 0x2c /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-init.o) - .debug_frame 0x0000000000000bc8 0x20 /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.macos64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a(lib_a-memset.o) +.debug_frame 0x0000000000000000 0x43a8 + .debug_frame 0x0000000000000000 0xe8 ./Core/Src/main.o + .debug_frame 0x00000000000000e8 0x110 ./Core/Src/stm32f1xx_hal_msp.o + .debug_frame 0x00000000000001f8 0x120 ./Core/Src/stm32f1xx_it.o + .debug_frame 0x0000000000000318 0x58 ./Core/Src/system_stm32f1xx.o + .debug_frame 0x0000000000000370 0x334 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_frame 0x00000000000006a4 0x40c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_frame 0x0000000000000ab0 0x428 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_frame 0x0000000000000ed8 0x14c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_frame 0x0000000000001024 0xc5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.o + .debug_frame 0x0000000000001c80 0x578 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_frame 0x00000000000021f8 0xb0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_frame 0x00000000000022a8 0x21c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_frame 0x00000000000024c4 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_frame 0x0000000000002548 0x914 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o + .debug_frame 0x0000000000002e5c 0x450 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_frame 0x00000000000032ac 0x36c ./Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.o + .debug_frame 0x0000000000003618 0x300 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_frame 0x0000000000003918 0x218 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_frame 0x0000000000003b30 0x10c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_frame 0x0000000000003c3c 0x2c ./USB_DEVICE/App/usb_device.o + .debug_frame 0x0000000000003c68 0x160 ./USB_DEVICE/App/usbd_desc.o + .debug_frame 0x0000000000003dc8 0xf0 ./USB_DEVICE/App/usbd_dfu_if.o + .debug_frame 0x0000000000003eb8 0x4a4 ./USB_DEVICE/Target/usbd_conf.o + .debug_frame 0x000000000000435c 0x2c c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-init.o) + .debug_frame 0x0000000000004388 0x20 c:/st/stm32cubeide_1.8.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(lib_a-memset.o) diff --git a/stm32f103/Drivers/CMSIS/Device/ST/STM32F1xx/License.md b/stm32f103/Drivers/CMSIS/Device/ST/STM32F1xx/License.md new file mode 100644 index 0000000..72fbf79 --- /dev/null +++ b/stm32f103/Drivers/CMSIS/Device/ST/STM32F1xx/License.md @@ -0,0 +1,83 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. + +Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. + +Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. + +You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: +1.You must give any other recipients of the Work or Derivative Works a copy of this License; and +2.You must cause any modified files to carry prominent notices stating that You changed the files; and +3.You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and +4.If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + +You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. + +Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. + +This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. + +Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. + +In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. + +While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: + + Copyright [2019] [STMicroelectronics] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/stm32f103/Drivers/CMSIS/LICENSE.txt b/stm32f103/Drivers/CMSIS/LICENSE.txt new file mode 100644 index 0000000..8dada3e --- /dev/null +++ b/stm32f103/Drivers/CMSIS/LICENSE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/stm32f103/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h b/stm32f103/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h new file mode 100644 index 0000000..9a613e1 --- /dev/null +++ b/stm32f103/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h @@ -0,0 +1,1065 @@ +/** + ****************************************************************************** + * @file stm32f1xx_hal_pcd.h + * @author MCD Application Team + * @brief Header file of PCD HAL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F1xx_HAL_PCD_H +#define STM32F1xx_HAL_PCD_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_usb.h" + +#if defined (USB) || defined (USB_OTG_FS) + +/** @addtogroup STM32F1xx_HAL_Driver + * @{ + */ + +/** @addtogroup PCD + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup PCD_Exported_Types PCD Exported Types + * @{ + */ + +/** + * @brief PCD State structure definition + */ +typedef enum +{ + HAL_PCD_STATE_RESET = 0x00, + HAL_PCD_STATE_READY = 0x01, + HAL_PCD_STATE_ERROR = 0x02, + HAL_PCD_STATE_BUSY = 0x03, + HAL_PCD_STATE_TIMEOUT = 0x04 +} PCD_StateTypeDef; + +/* Device LPM suspend state */ +typedef enum +{ + LPM_L0 = 0x00, /* on */ + LPM_L1 = 0x01, /* LPM L1 sleep */ + LPM_L2 = 0x02, /* suspend */ + LPM_L3 = 0x03, /* off */ +} PCD_LPM_StateTypeDef; + +typedef enum +{ + PCD_LPM_L0_ACTIVE = 0x00, /* on */ + PCD_LPM_L1_ACTIVE = 0x01, /* LPM L1 sleep */ +} PCD_LPM_MsgTypeDef; + +typedef enum +{ + PCD_BCD_ERROR = 0xFF, + PCD_BCD_CONTACT_DETECTION = 0xFE, + PCD_BCD_STD_DOWNSTREAM_PORT = 0xFD, + PCD_BCD_CHARGING_DOWNSTREAM_PORT = 0xFC, + PCD_BCD_DEDICATED_CHARGING_PORT = 0xFB, + PCD_BCD_DISCOVERY_COMPLETED = 0x00, + +} PCD_BCD_MsgTypeDef; + +#if defined (USB) + +#endif /* defined (USB) */ +#if defined (USB_OTG_FS) +typedef USB_OTG_GlobalTypeDef PCD_TypeDef; +typedef USB_OTG_CfgTypeDef PCD_InitTypeDef; +typedef USB_OTG_EPTypeDef PCD_EPTypeDef; +#endif /* defined (USB_OTG_FS) */ +#if defined (USB) +typedef USB_TypeDef PCD_TypeDef; +typedef USB_CfgTypeDef PCD_InitTypeDef; +typedef USB_EPTypeDef PCD_EPTypeDef; +#endif /* defined (USB) */ + +/** + * @brief PCD Handle Structure definition + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +typedef struct __PCD_HandleTypeDef +#else +typedef struct +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + PCD_TypeDef *Instance; /*!< Register base address */ + PCD_InitTypeDef Init; /*!< PCD required parameters */ + __IO uint8_t USB_Address; /*!< USB Address */ +#if defined (USB_OTG_FS) + PCD_EPTypeDef IN_ep[16]; /*!< IN endpoint parameters */ + PCD_EPTypeDef OUT_ep[16]; /*!< OUT endpoint parameters */ +#endif /* defined (USB_OTG_FS) */ +#if defined (USB) + PCD_EPTypeDef IN_ep[8]; /*!< IN endpoint parameters */ + PCD_EPTypeDef OUT_ep[8]; /*!< OUT endpoint parameters */ +#endif /* defined (USB) */ + HAL_LockTypeDef Lock; /*!< PCD peripheral status */ + __IO PCD_StateTypeDef State; /*!< PCD communication state */ + __IO uint32_t ErrorCode; /*!< PCD Error code */ + uint32_t Setup[12]; /*!< Setup packet buffer */ + PCD_LPM_StateTypeDef LPM_State; /*!< LPM State */ + uint32_t BESL; + + void *pData; /*!< Pointer to upper stack Handler */ + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + void (* SOFCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD SOF callback */ + void (* SetupStageCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Setup Stage callback */ + void (* ResetCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Reset callback */ + void (* SuspendCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Suspend callback */ + void (* ResumeCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Resume callback */ + void (* ConnectCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Connect callback */ + void (* DisconnectCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Disconnect callback */ + + void (* DataOutStageCallback)(struct __PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< USB OTG PCD Data OUT Stage callback */ + void (* DataInStageCallback)(struct __PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< USB OTG PCD Data IN Stage callback */ + void (* ISOOUTIncompleteCallback)(struct __PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< USB OTG PCD ISO OUT Incomplete callback */ + void (* ISOINIncompleteCallback)(struct __PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< USB OTG PCD ISO IN Incomplete callback */ + + void (* MspInitCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Msp Init callback */ + void (* MspDeInitCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Msp DeInit callback */ +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +} PCD_HandleTypeDef; + +/** + * @} + */ + +/* Include PCD HAL Extended module */ +#include "stm32f1xx_hal_pcd_ex.h" + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup PCD_Exported_Constants PCD Exported Constants + * @{ + */ + +/** @defgroup PCD_Speed PCD Speed + * @{ + */ +#define PCD_SPEED_FULL USBD_FS_SPEED +/** + * @} + */ + +/** @defgroup PCD_PHY_Module PCD PHY Module + * @{ + */ +#define PCD_PHY_ULPI 1U +#define PCD_PHY_EMBEDDED 2U +#define PCD_PHY_UTMI 3U +/** + * @} + */ + +/** @defgroup PCD_Error_Code_definition PCD Error Code definition + * @brief PCD Error Code definition + * @{ + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +#define HAL_PCD_ERROR_INVALID_CALLBACK (0x00000010U) /*!< Invalid Callback error */ +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macros -----------------------------------------------------------*/ +/** @defgroup PCD_Exported_Macros PCD Exported Macros + * @brief macros to handle interrupts and specific clock configurations + * @{ + */ +#if defined (USB_OTG_FS) +#define __HAL_PCD_ENABLE(__HANDLE__) (void)USB_EnableGlobalInt ((__HANDLE__)->Instance) +#define __HAL_PCD_DISABLE(__HANDLE__) (void)USB_DisableGlobalInt ((__HANDLE__)->Instance) + +#define __HAL_PCD_GET_FLAG(__HANDLE__, __INTERRUPT__) \ + ((USB_ReadInterrupts((__HANDLE__)->Instance) & (__INTERRUPT__)) == (__INTERRUPT__)) + +#define __HAL_PCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->GINTSTS) &= (__INTERRUPT__)) +#define __HAL_PCD_IS_INVALID_INTERRUPT(__HANDLE__) (USB_ReadInterrupts((__HANDLE__)->Instance) == 0U) + +#define __HAL_PCD_UNGATE_PHYCLOCK(__HANDLE__) \ + *(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE) &= ~(USB_OTG_PCGCCTL_STOPCLK) + +#define __HAL_PCD_GATE_PHYCLOCK(__HANDLE__) \ + *(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE) |= USB_OTG_PCGCCTL_STOPCLK + +#define __HAL_PCD_IS_PHY_SUSPENDED(__HANDLE__) \ + ((*(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE)) & 0x10U) + +#define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_IT() EXTI->IMR |= USB_OTG_FS_WAKEUP_EXTI_LINE +#define __HAL_USB_OTG_FS_WAKEUP_EXTI_DISABLE_IT() EXTI->IMR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE) +#define __HAL_USB_OTG_FS_WAKEUP_EXTI_GET_FLAG() EXTI->PR & (USB_OTG_FS_WAKEUP_EXTI_LINE) +#define __HAL_USB_OTG_FS_WAKEUP_EXTI_CLEAR_FLAG() EXTI->PR = USB_OTG_FS_WAKEUP_EXTI_LINE + +#define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_EDGE() \ + do { \ + EXTI->FTSR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE); \ + EXTI->RTSR |= USB_OTG_FS_WAKEUP_EXTI_LINE; \ + } while(0U) +#endif /* defined (USB_OTG_FS) */ + +#if defined (USB) +#define __HAL_PCD_ENABLE(__HANDLE__) (void)USB_EnableGlobalInt ((__HANDLE__)->Instance) +#define __HAL_PCD_DISABLE(__HANDLE__) (void)USB_DisableGlobalInt ((__HANDLE__)->Instance) +#define __HAL_PCD_GET_FLAG(__HANDLE__, __INTERRUPT__) ((USB_ReadInterrupts((__HANDLE__)->Instance)\ + & (__INTERRUPT__)) == (__INTERRUPT__)) + +#define __HAL_PCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->ISTR)\ + &= (uint16_t)(~(__INTERRUPT__))) + +#define __HAL_USB_WAKEUP_EXTI_ENABLE_IT() EXTI->IMR |= USB_WAKEUP_EXTI_LINE +#define __HAL_USB_WAKEUP_EXTI_DISABLE_IT() EXTI->IMR &= ~(USB_WAKEUP_EXTI_LINE) +#define __HAL_USB_WAKEUP_EXTI_GET_FLAG() EXTI->PR & (USB_WAKEUP_EXTI_LINE) +#define __HAL_USB_WAKEUP_EXTI_CLEAR_FLAG() EXTI->PR = USB_WAKEUP_EXTI_LINE + +#define __HAL_USB_WAKEUP_EXTI_ENABLE_RISING_EDGE() \ + do { \ + EXTI->FTSR &= ~(USB_WAKEUP_EXTI_LINE); \ + EXTI->RTSR |= USB_WAKEUP_EXTI_LINE; \ + } while(0U) + +#endif /* defined (USB) */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup PCD_Exported_Functions PCD Exported Functions + * @{ + */ + +/* Initialization/de-initialization functions ********************************/ +/** @addtogroup PCD_Exported_Functions_Group1 Initialization and de-initialization functions + * @{ + */ +HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd); +HAL_StatusTypeDef HAL_PCD_DeInit(PCD_HandleTypeDef *hpcd); +void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd); +void HAL_PCD_MspDeInit(PCD_HandleTypeDef *hpcd); + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +/** @defgroup HAL_PCD_Callback_ID_enumeration_definition HAL USB OTG PCD Callback ID enumeration definition + * @brief HAL USB OTG PCD Callback ID enumeration definition + * @{ + */ +typedef enum +{ + HAL_PCD_SOF_CB_ID = 0x01, /*!< USB PCD SOF callback ID */ + HAL_PCD_SETUPSTAGE_CB_ID = 0x02, /*!< USB PCD Setup Stage callback ID */ + HAL_PCD_RESET_CB_ID = 0x03, /*!< USB PCD Reset callback ID */ + HAL_PCD_SUSPEND_CB_ID = 0x04, /*!< USB PCD Suspend callback ID */ + HAL_PCD_RESUME_CB_ID = 0x05, /*!< USB PCD Resume callback ID */ + HAL_PCD_CONNECT_CB_ID = 0x06, /*!< USB PCD Connect callback ID */ + HAL_PCD_DISCONNECT_CB_ID = 0x07, /*!< USB PCD Disconnect callback ID */ + + HAL_PCD_MSPINIT_CB_ID = 0x08, /*!< USB PCD MspInit callback ID */ + HAL_PCD_MSPDEINIT_CB_ID = 0x09 /*!< USB PCD MspDeInit callback ID */ + +} HAL_PCD_CallbackIDTypeDef; +/** + * @} + */ + +/** @defgroup HAL_PCD_Callback_pointer_definition HAL USB OTG PCD Callback pointer definition + * @brief HAL USB OTG PCD Callback pointer definition + * @{ + */ + +typedef void (*pPCD_CallbackTypeDef)(PCD_HandleTypeDef *hpcd); /*!< pointer to a common USB OTG PCD callback function */ +typedef void (*pPCD_DataOutStageCallbackTypeDef)(PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< pointer to USB OTG PCD Data OUT Stage callback */ +typedef void (*pPCD_DataInStageCallbackTypeDef)(PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< pointer to USB OTG PCD Data IN Stage callback */ +typedef void (*pPCD_IsoOutIncpltCallbackTypeDef)(PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< pointer to USB OTG PCD ISO OUT Incomplete callback */ +typedef void (*pPCD_IsoInIncpltCallbackTypeDef)(PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< pointer to USB OTG PCD ISO IN Incomplete callback */ + +/** + * @} + */ + +HAL_StatusTypeDef HAL_PCD_RegisterCallback(PCD_HandleTypeDef *hpcd, + HAL_PCD_CallbackIDTypeDef CallbackID, + pPCD_CallbackTypeDef pCallback); + +HAL_StatusTypeDef HAL_PCD_UnRegisterCallback(PCD_HandleTypeDef *hpcd, + HAL_PCD_CallbackIDTypeDef CallbackID); + +HAL_StatusTypeDef HAL_PCD_RegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd, + pPCD_DataOutStageCallbackTypeDef pCallback); + +HAL_StatusTypeDef HAL_PCD_UnRegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd); + +HAL_StatusTypeDef HAL_PCD_RegisterDataInStageCallback(PCD_HandleTypeDef *hpcd, + pPCD_DataInStageCallbackTypeDef pCallback); + +HAL_StatusTypeDef HAL_PCD_UnRegisterDataInStageCallback(PCD_HandleTypeDef *hpcd); + +HAL_StatusTypeDef HAL_PCD_RegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd, + pPCD_IsoOutIncpltCallbackTypeDef pCallback); + +HAL_StatusTypeDef HAL_PCD_UnRegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd); + +HAL_StatusTypeDef HAL_PCD_RegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd, + pPCD_IsoInIncpltCallbackTypeDef pCallback); + +HAL_StatusTypeDef HAL_PCD_UnRegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd); + +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +/** + * @} + */ + +/* I/O operation functions ***************************************************/ +/* Non-Blocking mode: Interrupt */ +/** @addtogroup PCD_Exported_Functions_Group2 Input and Output operation functions + * @{ + */ +HAL_StatusTypeDef HAL_PCD_Start(PCD_HandleTypeDef *hpcd); +HAL_StatusTypeDef HAL_PCD_Stop(PCD_HandleTypeDef *hpcd); +void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd); +void HAL_PCD_WKUP_IRQHandler(PCD_HandleTypeDef *hpcd); + +void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd); +void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd); +void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd); +void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd); +void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd); +void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd); +void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd); + +void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum); +void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum); +void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum); +void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum); +/** + * @} + */ + +/* Peripheral Control functions **********************************************/ +/** @addtogroup PCD_Exported_Functions_Group3 Peripheral Control functions + * @{ + */ +HAL_StatusTypeDef HAL_PCD_DevConnect(PCD_HandleTypeDef *hpcd); +HAL_StatusTypeDef HAL_PCD_DevDisconnect(PCD_HandleTypeDef *hpcd); +HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address); +HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, + uint16_t ep_mps, uint8_t ep_type); + +HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); +HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, + uint8_t *pBuf, uint32_t len); + +HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, + uint8_t *pBuf, uint32_t len); + + +HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); +HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); +HAL_StatusTypeDef HAL_PCD_EP_Flush(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); +HAL_StatusTypeDef HAL_PCD_ActivateRemoteWakeup(PCD_HandleTypeDef *hpcd); +HAL_StatusTypeDef HAL_PCD_DeActivateRemoteWakeup(PCD_HandleTypeDef *hpcd); + +uint32_t HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); +/** + * @} + */ + +/* Peripheral State functions ************************************************/ +/** @addtogroup PCD_Exported_Functions_Group4 Peripheral State functions + * @{ + */ +PCD_StateTypeDef HAL_PCD_GetState(PCD_HandleTypeDef *hpcd); +/** + * @} + */ + +/** + * @} + */ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup PCD_Private_Constants PCD Private Constants + * @{ + */ +/** @defgroup USB_EXTI_Line_Interrupt USB EXTI line interrupt + * @{ + */ +#if defined (USB_OTG_FS) +#define USB_OTG_FS_WAKEUP_EXTI_LINE (0x1U << 18) /*!< USB FS EXTI Line WakeUp Interrupt */ +#endif /* defined (USB_OTG_FS) */ + +#if defined (USB) +#define USB_WAKEUP_EXTI_LINE (0x1U << 18) /*!< USB FS EXTI Line WakeUp Interrupt */ +#endif /* defined (USB) */ + +/** + * @} + */ +#if defined (USB) +/** @defgroup PCD_EP0_MPS PCD EP0 MPS + * @{ + */ +#define PCD_EP0MPS_64 EP_MPS_64 +#define PCD_EP0MPS_32 EP_MPS_32 +#define PCD_EP0MPS_16 EP_MPS_16 +#define PCD_EP0MPS_08 EP_MPS_8 +/** + * @} + */ + +/** @defgroup PCD_ENDP PCD ENDP + * @{ + */ +#define PCD_ENDP0 0U +#define PCD_ENDP1 1U +#define PCD_ENDP2 2U +#define PCD_ENDP3 3U +#define PCD_ENDP4 4U +#define PCD_ENDP5 5U +#define PCD_ENDP6 6U +#define PCD_ENDP7 7U +/** + * @} + */ + +/** @defgroup PCD_ENDP_Kind PCD Endpoint Kind + * @{ + */ +#define PCD_SNG_BUF 0U +#define PCD_DBL_BUF 1U +/** + * @} + */ +#endif /* defined (USB) */ +/** + * @} + */ + +#if defined (USB_OTG_FS) +#ifndef USB_OTG_DOEPINT_OTEPSPR +#define USB_OTG_DOEPINT_OTEPSPR (0x1UL << 5) /*!< Status Phase Received interrupt */ +#endif /* defined USB_OTG_DOEPINT_OTEPSPR */ + +#ifndef USB_OTG_DOEPMSK_OTEPSPRM +#define USB_OTG_DOEPMSK_OTEPSPRM (0x1UL << 5) /*!< Setup Packet Received interrupt mask */ +#endif /* defined USB_OTG_DOEPMSK_OTEPSPRM */ + +#ifndef USB_OTG_DOEPINT_NAK +#define USB_OTG_DOEPINT_NAK (0x1UL << 13) /*!< NAK interrupt */ +#endif /* defined USB_OTG_DOEPINT_NAK */ + +#ifndef USB_OTG_DOEPMSK_NAKM +#define USB_OTG_DOEPMSK_NAKM (0x1UL << 13) /*!< OUT Packet NAK interrupt mask */ +#endif /* defined USB_OTG_DOEPMSK_NAKM */ + +#ifndef USB_OTG_DOEPINT_STPKTRX +#define USB_OTG_DOEPINT_STPKTRX (0x1UL << 15) /*!< Setup Packet Received interrupt */ +#endif /* defined USB_OTG_DOEPINT_STPKTRX */ + +#ifndef USB_OTG_DOEPMSK_NYETM +#define USB_OTG_DOEPMSK_NYETM (0x1UL << 14) /*!< Setup Packet Received interrupt mask */ +#endif /* defined USB_OTG_DOEPMSK_NYETM */ +#endif /* defined (USB_OTG_FS) */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup PCD_Private_Macros PCD Private Macros + * @{ + */ +#if defined (USB) +/******************** Bit definition for USB_COUNTn_RX register *************/ +#define USB_CNTRX_NBLK_MSK (0x1FU << 10) +#define USB_CNTRX_BLSIZE (0x1U << 15) + +/* SetENDPOINT */ +#define PCD_SET_ENDPOINT(USBx, bEpNum, wRegValue) (*(__IO uint16_t *)\ + (&(USBx)->EP0R + ((bEpNum) * 2U)) = (uint16_t)(wRegValue)) + +/* GetENDPOINT */ +#define PCD_GET_ENDPOINT(USBx, bEpNum) (*(__IO uint16_t *)(&(USBx)->EP0R + ((bEpNum) * 2U))) + +/* ENDPOINT transfer */ +#define USB_EP0StartXfer USB_EPStartXfer + +/** + * @brief sets the type in the endpoint register(bits EP_TYPE[1:0]) + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @param wType Endpoint Type. + * @retval None + */ +#define PCD_SET_EPTYPE(USBx, bEpNum, wType) (PCD_SET_ENDPOINT((USBx), (bEpNum), ((PCD_GET_ENDPOINT((USBx), (bEpNum))\ + & USB_EP_T_MASK) | (wType) | USB_EP_CTR_TX | USB_EP_CTR_RX))) + + +/** + * @brief gets the type in the endpoint register(bits EP_TYPE[1:0]) + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @retval Endpoint Type + */ +#define PCD_GET_EPTYPE(USBx, bEpNum) (PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EP_T_FIELD) + +/** + * @brief free buffer used from the application realizing it to the line + * toggles bit SW_BUF in the double buffered endpoint register + * @param USBx USB device. + * @param bEpNum, bDir + * @retval None + */ +#define PCD_FreeUserBuffer(USBx, bEpNum, bDir) \ + do { \ + if ((bDir) == 0U) \ + { \ + /* OUT double buffered endpoint */ \ + PCD_TX_DTOG((USBx), (bEpNum)); \ + } \ + else if ((bDir) == 1U) \ + { \ + /* IN double buffered endpoint */ \ + PCD_RX_DTOG((USBx), (bEpNum)); \ + } \ + } while(0) + +/** + * @brief sets the status for tx transfer (bits STAT_TX[1:0]). + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @param wState new state + * @retval None + */ +#define PCD_SET_EP_TX_STATUS(USBx, bEpNum, wState) \ + do { \ + uint16_t _wRegVal; \ + \ + _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPTX_DTOGMASK; \ + /* toggle first bit ? */ \ + if ((USB_EPTX_DTOG1 & (wState))!= 0U) \ + { \ + _wRegVal ^= USB_EPTX_DTOG1; \ + } \ + /* toggle second bit ? */ \ + if ((USB_EPTX_DTOG2 & (wState))!= 0U) \ + { \ + _wRegVal ^= USB_EPTX_DTOG2; \ + } \ + PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX)); \ + } while(0) /* PCD_SET_EP_TX_STATUS */ + +/** + * @brief sets the status for rx transfer (bits STAT_TX[1:0]) + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @param wState new state + * @retval None + */ +#define PCD_SET_EP_RX_STATUS(USBx, bEpNum,wState) \ + do { \ + uint16_t _wRegVal; \ + \ + _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPRX_DTOGMASK; \ + /* toggle first bit ? */ \ + if ((USB_EPRX_DTOG1 & (wState))!= 0U) \ + { \ + _wRegVal ^= USB_EPRX_DTOG1; \ + } \ + /* toggle second bit ? */ \ + if ((USB_EPRX_DTOG2 & (wState))!= 0U) \ + { \ + _wRegVal ^= USB_EPRX_DTOG2; \ + } \ + PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX)); \ + } while(0) /* PCD_SET_EP_RX_STATUS */ + +/** + * @brief sets the status for rx & tx (bits STAT_TX[1:0] & STAT_RX[1:0]) + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @param wStaterx new state. + * @param wStatetx new state. + * @retval None + */ +#define PCD_SET_EP_TXRX_STATUS(USBx, bEpNum, wStaterx, wStatetx) \ + do { \ + uint16_t _wRegVal; \ + \ + _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & (USB_EPRX_DTOGMASK | USB_EPTX_STAT); \ + /* toggle first bit ? */ \ + if ((USB_EPRX_DTOG1 & (wStaterx))!= 0U) \ + { \ + _wRegVal ^= USB_EPRX_DTOG1; \ + } \ + /* toggle second bit ? */ \ + if ((USB_EPRX_DTOG2 & (wStaterx))!= 0U) \ + { \ + _wRegVal ^= USB_EPRX_DTOG2; \ + } \ + /* toggle first bit ? */ \ + if ((USB_EPTX_DTOG1 & (wStatetx))!= 0U) \ + { \ + _wRegVal ^= USB_EPTX_DTOG1; \ + } \ + /* toggle second bit ? */ \ + if ((USB_EPTX_DTOG2 & (wStatetx))!= 0U) \ + { \ + _wRegVal ^= USB_EPTX_DTOG2; \ + } \ + \ + PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX)); \ + } while(0) /* PCD_SET_EP_TXRX_STATUS */ + +/** + * @brief gets the status for tx/rx transfer (bits STAT_TX[1:0] + * /STAT_RX[1:0]) + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @retval status + */ +#define PCD_GET_EP_TX_STATUS(USBx, bEpNum) ((uint16_t)PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPTX_STAT) +#define PCD_GET_EP_RX_STATUS(USBx, bEpNum) ((uint16_t)PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPRX_STAT) + +/** + * @brief sets directly the VALID tx/rx-status into the endpoint register + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @retval None + */ +#define PCD_SET_EP_TX_VALID(USBx, bEpNum) (PCD_SET_EP_TX_STATUS((USBx), (bEpNum), USB_EP_TX_VALID)) +#define PCD_SET_EP_RX_VALID(USBx, bEpNum) (PCD_SET_EP_RX_STATUS((USBx), (bEpNum), USB_EP_RX_VALID)) + +/** + * @brief checks stall condition in an endpoint. + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @retval TRUE = endpoint in stall condition. + */ +#define PCD_GET_EP_TX_STALL_STATUS(USBx, bEpNum) (PCD_GET_EP_TX_STATUS((USBx), (bEpNum)) == USB_EP_TX_STALL) +#define PCD_GET_EP_RX_STALL_STATUS(USBx, bEpNum) (PCD_GET_EP_RX_STATUS((USBx), (bEpNum)) == USB_EP_RX_STALL) + +/** + * @brief set & clear EP_KIND bit. + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @retval None + */ +#define PCD_SET_EP_KIND(USBx, bEpNum) \ + do { \ + uint16_t _wRegVal; \ + \ + _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPREG_MASK; \ + \ + PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX | USB_EP_KIND)); \ + } while(0) /* PCD_SET_EP_KIND */ + +#define PCD_CLEAR_EP_KIND(USBx, bEpNum) \ + do { \ + uint16_t _wRegVal; \ + \ + _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPKIND_MASK; \ + \ + PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX)); \ + } while(0) /* PCD_CLEAR_EP_KIND */ + +/** + * @brief Sets/clears directly STATUS_OUT bit in the endpoint register. + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @retval None + */ +#define PCD_SET_OUT_STATUS(USBx, bEpNum) PCD_SET_EP_KIND((USBx), (bEpNum)) +#define PCD_CLEAR_OUT_STATUS(USBx, bEpNum) PCD_CLEAR_EP_KIND((USBx), (bEpNum)) + +/** + * @brief Sets/clears directly EP_KIND bit in the endpoint register. + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @retval None + */ +#define PCD_SET_EP_DBUF(USBx, bEpNum) PCD_SET_EP_KIND((USBx), (bEpNum)) +#define PCD_CLEAR_EP_DBUF(USBx, bEpNum) PCD_CLEAR_EP_KIND((USBx), (bEpNum)) + +/** + * @brief Clears bit CTR_RX / CTR_TX in the endpoint register. + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @retval None + */ +#define PCD_CLEAR_RX_EP_CTR(USBx, bEpNum) \ + do { \ + uint16_t _wRegVal; \ + \ + _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & (0x7FFFU & USB_EPREG_MASK); \ + \ + PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_TX)); \ + } while(0) /* PCD_CLEAR_RX_EP_CTR */ + +#define PCD_CLEAR_TX_EP_CTR(USBx, bEpNum) \ + do { \ + uint16_t _wRegVal; \ + \ + _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & (0xFF7FU & USB_EPREG_MASK); \ + \ + PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX)); \ + } while(0) /* PCD_CLEAR_TX_EP_CTR */ + +/** + * @brief Toggles DTOG_RX / DTOG_TX bit in the endpoint register. + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @retval None + */ +#define PCD_RX_DTOG(USBx, bEpNum) \ + do { \ + uint16_t _wEPVal; \ + \ + _wEPVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPREG_MASK; \ + \ + PCD_SET_ENDPOINT((USBx), (bEpNum), (_wEPVal | USB_EP_CTR_RX | USB_EP_CTR_TX | USB_EP_DTOG_RX)); \ + } while(0) /* PCD_RX_DTOG */ + +#define PCD_TX_DTOG(USBx, bEpNum) \ + do { \ + uint16_t _wEPVal; \ + \ + _wEPVal = PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPREG_MASK; \ + \ + PCD_SET_ENDPOINT((USBx), (bEpNum), (_wEPVal | USB_EP_CTR_RX | USB_EP_CTR_TX | USB_EP_DTOG_TX)); \ + } while(0) /* PCD_TX_DTOG */ +/** + * @brief Clears DTOG_RX / DTOG_TX bit in the endpoint register. + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @retval None + */ +#define PCD_CLEAR_RX_DTOG(USBx, bEpNum) \ + do { \ + uint16_t _wRegVal; \ + \ + _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)); \ + \ + if ((_wRegVal & USB_EP_DTOG_RX) != 0U)\ + { \ + PCD_RX_DTOG((USBx), (bEpNum)); \ + } \ + } while(0) /* PCD_CLEAR_RX_DTOG */ + +#define PCD_CLEAR_TX_DTOG(USBx, bEpNum) \ + do { \ + uint16_t _wRegVal; \ + \ + _wRegVal = PCD_GET_ENDPOINT((USBx), (bEpNum)); \ + \ + if ((_wRegVal & USB_EP_DTOG_TX) != 0U)\ + { \ + PCD_TX_DTOG((USBx), (bEpNum)); \ + } \ + } while(0) /* PCD_CLEAR_TX_DTOG */ + +/** + * @brief Sets address in an endpoint register. + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @param bAddr Address. + * @retval None + */ +#define PCD_SET_EP_ADDRESS(USBx, bEpNum, bAddr) \ + do { \ + uint16_t _wRegVal; \ + \ + _wRegVal = (PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPREG_MASK) | (bAddr); \ + \ + PCD_SET_ENDPOINT((USBx), (bEpNum), (_wRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX)); \ + } while(0) /* PCD_SET_EP_ADDRESS */ + +/** + * @brief Gets address in an endpoint register. + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @retval None + */ +#define PCD_GET_EP_ADDRESS(USBx, bEpNum) ((uint8_t)(PCD_GET_ENDPOINT((USBx), (bEpNum)) & USB_EPADDR_FIELD)) + +#define PCD_EP_TX_CNT(USBx, bEpNum) ((uint16_t *)((((uint32_t)(USBx)->BTABLE\ + + ((uint32_t)(bEpNum) * 8U) + 2U) * PMA_ACCESS) + ((uint32_t)(USBx) + 0x400U))) + +#define PCD_EP_RX_CNT(USBx, bEpNum) ((uint16_t *)((((uint32_t)(USBx)->BTABLE\ + + ((uint32_t)(bEpNum) * 8U) + 6U) * PMA_ACCESS) + ((uint32_t)(USBx) + 0x400U))) + + +/** + * @brief sets address of the tx/rx buffer. + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @param wAddr address to be set (must be word aligned). + * @retval None + */ +#define PCD_SET_EP_TX_ADDRESS(USBx, bEpNum, wAddr) \ + do { \ + __IO uint16_t *_wRegVal; \ + uint32_t _wRegBase = (uint32_t)USBx; \ + \ + _wRegBase += (uint32_t)(USBx)->BTABLE; \ + _wRegVal = (__IO uint16_t *)(_wRegBase + 0x400U + (((uint32_t)(bEpNum) * 8U) * PMA_ACCESS)); \ + *_wRegVal = ((wAddr) >> 1) << 1; \ + } while(0) /* PCD_SET_EP_TX_ADDRESS */ + +#define PCD_SET_EP_RX_ADDRESS(USBx, bEpNum, wAddr) \ + do { \ + __IO uint16_t *_wRegVal; \ + uint32_t _wRegBase = (uint32_t)USBx; \ + \ + _wRegBase += (uint32_t)(USBx)->BTABLE; \ + _wRegVal = (__IO uint16_t *)(_wRegBase + 0x400U + ((((uint32_t)(bEpNum) * 8U) + 4U) * PMA_ACCESS)); \ + *_wRegVal = ((wAddr) >> 1) << 1; \ + } while(0) /* PCD_SET_EP_RX_ADDRESS */ + +/** + * @brief Gets address of the tx/rx buffer. + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @retval address of the buffer. + */ +#define PCD_GET_EP_TX_ADDRESS(USBx, bEpNum) ((uint16_t)*PCD_EP_TX_ADDRESS((USBx), (bEpNum))) +#define PCD_GET_EP_RX_ADDRESS(USBx, bEpNum) ((uint16_t)*PCD_EP_RX_ADDRESS((USBx), (bEpNum))) + +/** + * @brief Sets counter of rx buffer with no. of blocks. + * @param pdwReg Register pointer + * @param wCount Counter. + * @param wNBlocks no. of Blocks. + * @retval None + */ +#define PCD_CALC_BLK32(pdwReg, wCount, wNBlocks) \ + do { \ + (wNBlocks) = (wCount) >> 5; \ + if (((wCount) & 0x1fU) == 0U) \ + { \ + (wNBlocks)--; \ + } \ + *(pdwReg) = (uint16_t)(((wNBlocks) << 10) | USB_CNTRX_BLSIZE); \ + } while(0) /* PCD_CALC_BLK32 */ + +#define PCD_CALC_BLK2(pdwReg, wCount, wNBlocks) \ + do { \ + (wNBlocks) = (wCount) >> 1; \ + if (((wCount) & 0x1U) != 0U) \ + { \ + (wNBlocks)++; \ + } \ + *(pdwReg) = (uint16_t)((wNBlocks) << 10); \ + } while(0) /* PCD_CALC_BLK2 */ + +#define PCD_SET_EP_CNT_RX_REG(pdwReg, wCount) \ + do { \ + uint32_t wNBlocks; \ + if ((wCount) == 0U) \ + { \ + *(pdwReg) &= (uint16_t)~USB_CNTRX_NBLK_MSK; \ + *(pdwReg) |= USB_CNTRX_BLSIZE; \ + } \ + else if((wCount) <= 62U) \ + { \ + PCD_CALC_BLK2((pdwReg), (wCount), wNBlocks); \ + } \ + else \ + { \ + PCD_CALC_BLK32((pdwReg), (wCount), wNBlocks); \ + } \ + } while(0) /* PCD_SET_EP_CNT_RX_REG */ + +#define PCD_SET_EP_RX_DBUF0_CNT(USBx, bEpNum, wCount) \ + do { \ + uint32_t _wRegBase = (uint32_t)(USBx); \ + __IO uint16_t *pdwReg; \ + \ + _wRegBase += (uint32_t)(USBx)->BTABLE; \ + pdwReg = (__IO uint16_t *)(_wRegBase + 0x400U + ((((uint32_t)(bEpNum) * 8U) + 2U) * PMA_ACCESS)); \ + PCD_SET_EP_CNT_RX_REG(pdwReg, (wCount)); \ + } while(0) + +/** + * @brief sets counter for the tx/rx buffer. + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @param wCount Counter value. + * @retval None + */ +#define PCD_SET_EP_TX_CNT(USBx, bEpNum, wCount) \ + do { \ + uint32_t _wRegBase = (uint32_t)(USBx); \ + __IO uint16_t *_wRegVal; \ + \ + _wRegBase += (uint32_t)(USBx)->BTABLE; \ + _wRegVal = (__IO uint16_t *)(_wRegBase + 0x400U + ((((uint32_t)(bEpNum) * 8U) + 2U) * PMA_ACCESS)); \ + *_wRegVal = (uint16_t)(wCount); \ + } while(0) + +#define PCD_SET_EP_RX_CNT(USBx, bEpNum, wCount) \ + do { \ + uint32_t _wRegBase = (uint32_t)(USBx); \ + __IO uint16_t *_wRegVal; \ + \ + _wRegBase += (uint32_t)(USBx)->BTABLE; \ + _wRegVal = (__IO uint16_t *)(_wRegBase + 0x400U + ((((uint32_t)(bEpNum) * 8U) + 6U) * PMA_ACCESS)); \ + PCD_SET_EP_CNT_RX_REG(_wRegVal, (wCount)); \ + } while(0) + +/** + * @brief gets counter of the tx buffer. + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @retval Counter value + */ +#define PCD_GET_EP_TX_CNT(USBx, bEpNum) ((uint32_t)(*PCD_EP_TX_CNT((USBx), (bEpNum))) & 0x3ffU) +#define PCD_GET_EP_RX_CNT(USBx, bEpNum) ((uint32_t)(*PCD_EP_RX_CNT((USBx), (bEpNum))) & 0x3ffU) + +/** + * @brief Sets buffer 0/1 address in a double buffer endpoint. + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @param wBuf0Addr buffer 0 address. + * @retval Counter value + */ +#define PCD_SET_EP_DBUF0_ADDR(USBx, bEpNum, wBuf0Addr) \ + do { \ + PCD_SET_EP_TX_ADDRESS((USBx), (bEpNum), (wBuf0Addr)); \ + } while(0) /* PCD_SET_EP_DBUF0_ADDR */ + +#define PCD_SET_EP_DBUF1_ADDR(USBx, bEpNum, wBuf1Addr) \ + do { \ + PCD_SET_EP_RX_ADDRESS((USBx), (bEpNum), (wBuf1Addr)); \ + } while(0) /* PCD_SET_EP_DBUF1_ADDR */ + +/** + * @brief Sets addresses in a double buffer endpoint. + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @param wBuf0Addr: buffer 0 address. + * @param wBuf1Addr = buffer 1 address. + * @retval None + */ +#define PCD_SET_EP_DBUF_ADDR(USBx, bEpNum, wBuf0Addr, wBuf1Addr) \ + do { \ + PCD_SET_EP_DBUF0_ADDR((USBx), (bEpNum), (wBuf0Addr)); \ + PCD_SET_EP_DBUF1_ADDR((USBx), (bEpNum), (wBuf1Addr)); \ + } while(0) /* PCD_SET_EP_DBUF_ADDR */ + +/** + * @brief Gets buffer 0/1 address of a double buffer endpoint. + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @retval None + */ +#define PCD_GET_EP_DBUF0_ADDR(USBx, bEpNum) (PCD_GET_EP_TX_ADDRESS((USBx), (bEpNum))) +#define PCD_GET_EP_DBUF1_ADDR(USBx, bEpNum) (PCD_GET_EP_RX_ADDRESS((USBx), (bEpNum))) + +/** + * @brief Gets buffer 0/1 address of a double buffer endpoint. + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @param bDir endpoint dir EP_DBUF_OUT = OUT + * EP_DBUF_IN = IN + * @param wCount: Counter value + * @retval None + */ +#define PCD_SET_EP_DBUF0_CNT(USBx, bEpNum, bDir, wCount) \ + do { \ + if ((bDir) == 0U) \ + /* OUT endpoint */ \ + { \ + PCD_SET_EP_RX_DBUF0_CNT((USBx), (bEpNum), (wCount)); \ + } \ + else \ + { \ + if ((bDir) == 1U) \ + { \ + /* IN endpoint */ \ + PCD_SET_EP_TX_CNT((USBx), (bEpNum), (wCount)); \ + } \ + } \ + } while(0) /* SetEPDblBuf0Count*/ + +#define PCD_SET_EP_DBUF1_CNT(USBx, bEpNum, bDir, wCount) \ + do { \ + uint32_t _wBase = (uint32_t)(USBx); \ + __IO uint16_t *_wEPRegVal; \ + \ + if ((bDir) == 0U) \ + { \ + /* OUT endpoint */ \ + PCD_SET_EP_RX_CNT((USBx), (bEpNum), (wCount)); \ + } \ + else \ + { \ + if ((bDir) == 1U) \ + { \ + /* IN endpoint */ \ + _wBase += (uint32_t)(USBx)->BTABLE; \ + _wEPRegVal = (__IO uint16_t *)(_wBase + 0x400U + ((((uint32_t)(bEpNum) * 8U) + 6U) * PMA_ACCESS)); \ + *_wEPRegVal = (uint16_t)(wCount); \ + } \ + } \ + } while(0) /* SetEPDblBuf1Count */ + +#define PCD_SET_EP_DBUF_CNT(USBx, bEpNum, bDir, wCount) \ + do { \ + PCD_SET_EP_DBUF0_CNT((USBx), (bEpNum), (bDir), (wCount)); \ + PCD_SET_EP_DBUF1_CNT((USBx), (bEpNum), (bDir), (wCount)); \ + } while(0) /* PCD_SET_EP_DBUF_CNT */ + +/** + * @brief Gets buffer 0/1 rx/tx counter for double buffering. + * @param USBx USB peripheral instance register address. + * @param bEpNum Endpoint Number. + * @retval None + */ +#define PCD_GET_EP_DBUF0_CNT(USBx, bEpNum) (PCD_GET_EP_TX_CNT((USBx), (bEpNum))) +#define PCD_GET_EP_DBUF1_CNT(USBx, bEpNum) (PCD_GET_EP_RX_CNT((USBx), (bEpNum))) + +#endif /* defined (USB) */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +#endif /* defined (USB) || defined (USB_OTG_FS) */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F1xx_HAL_PCD_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h b/stm32f103/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h new file mode 100644 index 0000000..4582702 --- /dev/null +++ b/stm32f103/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h @@ -0,0 +1,88 @@ +/** + ****************************************************************************** + * @file stm32f1xx_hal_pcd_ex.h + * @author MCD Application Team + * @brief Header file of PCD HAL Extension module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F1xx_HAL_PCD_EX_H +#define STM32F1xx_HAL_PCD_EX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_hal_def.h" + +#if defined (USB) || defined (USB_OTG_FS) +/** @addtogroup STM32F1xx_HAL_Driver + * @{ + */ + +/** @addtogroup PCDEx + * @{ + */ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macros -----------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup PCDEx_Exported_Functions PCDEx Exported Functions + * @{ + */ +/** @addtogroup PCDEx_Exported_Functions_Group1 Peripheral Control functions + * @{ + */ + +#if defined (USB_OTG_FS) +HAL_StatusTypeDef HAL_PCDEx_SetTxFiFo(PCD_HandleTypeDef *hpcd, uint8_t fifo, uint16_t size); +HAL_StatusTypeDef HAL_PCDEx_SetRxFiFo(PCD_HandleTypeDef *hpcd, uint16_t size); +#endif /* defined (USB_OTG_FS) */ + +#if defined (USB) +HAL_StatusTypeDef HAL_PCDEx_PMAConfig(PCD_HandleTypeDef *hpcd, uint16_t ep_addr, + uint16_t ep_kind, uint32_t pmaadress); + +void HAL_PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state); +#endif /* defined (USB) */ +void HAL_PCDEx_LPM_Callback(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg); +void HAL_PCDEx_BCD_Callback(PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +#endif /* defined (USB) || defined (USB_OTG_FS) */ + +#ifdef __cplusplus +} +#endif + + +#endif /* STM32F1xx_HAL_PCD_EX_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h b/stm32f103/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h new file mode 100644 index 0000000..0f991cc --- /dev/null +++ b/stm32f103/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h @@ -0,0 +1,678 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_usb.h + * @author MCD Application Team + * @brief Header file of USB Low Layer HAL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F1xx_LL_USB_H +#define STM32F1xx_LL_USB_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_hal_def.h" + +#if defined (USB) || defined (USB_OTG_FS) +/** @addtogroup STM32F1xx_HAL_Driver + * @{ + */ + +/** @addtogroup USB_LL + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** + * @brief USB Mode definition + */ +#if defined (USB_OTG_FS) + +typedef enum +{ + USB_DEVICE_MODE = 0, + USB_HOST_MODE = 1, + USB_DRD_MODE = 2 +} USB_ModeTypeDef; + +/** + * @brief URB States definition + */ +typedef enum +{ + URB_IDLE = 0, + URB_DONE, + URB_NOTREADY, + URB_NYET, + URB_ERROR, + URB_STALL +} USB_OTG_URBStateTypeDef; + +/** + * @brief Host channel States definition + */ +typedef enum +{ + HC_IDLE = 0, + HC_XFRC, + HC_HALTED, + HC_NAK, + HC_NYET, + HC_STALL, + HC_XACTERR, + HC_BBLERR, + HC_DATATGLERR +} USB_OTG_HCStateTypeDef; + +/** + * @brief USB Instance Initialization Structure definition + */ +typedef struct +{ + uint32_t dev_endpoints; /*!< Device Endpoints number. + This parameter depends on the used USB core. + This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ + + uint32_t Host_channels; /*!< Host Channels number. + This parameter Depends on the used USB core. + This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ + + uint32_t speed; /*!< USB Core speed. + This parameter can be any value of @ref PCD_Speed/HCD_Speed + (HCD_SPEED_xxx, HCD_SPEED_xxx) */ + + uint32_t dma_enable; /*!< Enable or disable of the USB embedded DMA used only for OTG HS. */ + + uint32_t ep0_mps; /*!< Set the Endpoint 0 Max Packet size. */ + + uint32_t phy_itface; /*!< Select the used PHY interface. + This parameter can be any value of @ref PCD_PHY_Module/HCD_PHY_Module */ + + uint32_t Sof_enable; /*!< Enable or disable the output of the SOF signal. */ + + uint32_t low_power_enable; /*!< Enable or disable the low power mode. */ + + uint32_t lpm_enable; /*!< Enable or disable Link Power Management. */ + + uint32_t battery_charging_enable; /*!< Enable or disable Battery charging. */ + + uint32_t vbus_sensing_enable; /*!< Enable or disable the VBUS Sensing feature. */ + + uint32_t use_dedicated_ep1; /*!< Enable or disable the use of the dedicated EP1 interrupt. */ + + uint32_t use_external_vbus; /*!< Enable or disable the use of the external VBUS. */ + +} USB_OTG_CfgTypeDef; + +typedef struct +{ + uint8_t num; /*!< Endpoint number + This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ + + uint8_t is_in; /*!< Endpoint direction + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint8_t is_stall; /*!< Endpoint stall condition + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint8_t type; /*!< Endpoint type + This parameter can be any value of @ref USB_LL_EP_Type */ + + uint8_t data_pid_start; /*!< Initial data PID + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint8_t even_odd_frame; /*!< IFrame parity + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint16_t tx_fifo_num; /*!< Transmission FIFO number + This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ + + uint32_t maxpacket; /*!< Endpoint Max packet size + This parameter must be a number between Min_Data = 0 and Max_Data = 64KB */ + + uint8_t *xfer_buff; /*!< Pointer to transfer buffer */ + + uint32_t dma_addr; /*!< 32 bits aligned transfer buffer address */ + + uint32_t xfer_len; /*!< Current transfer length */ + + uint32_t xfer_count; /*!< Partial transfer length in case of multi packet transfer */ +} USB_OTG_EPTypeDef; + +typedef struct +{ + uint8_t dev_addr; /*!< USB device address. + This parameter must be a number between Min_Data = 1 and Max_Data = 255 */ + + uint8_t ch_num; /*!< Host channel number. + This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ + + uint8_t ep_num; /*!< Endpoint number. + This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ + + uint8_t ep_is_in; /*!< Endpoint direction + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint8_t speed; /*!< USB Host Channel speed. + This parameter can be any value of @ref HCD_Device_Speed: + (HCD_DEVICE_SPEED_xxx) */ + + uint8_t do_ping; /*!< Enable or disable the use of the PING protocol for HS mode. */ + + uint8_t process_ping; /*!< Execute the PING protocol for HS mode. */ + + uint8_t ep_type; /*!< Endpoint Type. + This parameter can be any value of @ref USB_LL_EP_Type */ + + uint16_t max_packet; /*!< Endpoint Max packet size. + This parameter must be a number between Min_Data = 0 and Max_Data = 64KB */ + + uint8_t data_pid; /*!< Initial data PID. + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint8_t *xfer_buff; /*!< Pointer to transfer buffer. */ + + uint32_t XferSize; /*!< OTG Channel transfer size. */ + + uint32_t xfer_len; /*!< Current transfer length. */ + + uint32_t xfer_count; /*!< Partial transfer length in case of multi packet transfer. */ + + uint8_t toggle_in; /*!< IN transfer current toggle flag. + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint8_t toggle_out; /*!< OUT transfer current toggle flag + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint32_t dma_addr; /*!< 32 bits aligned transfer buffer address. */ + + uint32_t ErrCnt; /*!< Host channel error count. */ + + USB_OTG_URBStateTypeDef urb_state; /*!< URB state. + This parameter can be any value of @ref USB_OTG_URBStateTypeDef */ + + USB_OTG_HCStateTypeDef state; /*!< Host Channel state. + This parameter can be any value of @ref USB_OTG_HCStateTypeDef */ +} USB_OTG_HCTypeDef; +#endif /* defined (USB_OTG_FS) */ + +#if defined (USB) + +typedef enum +{ + USB_DEVICE_MODE = 0 +} USB_ModeTypeDef; + +/** + * @brief USB Initialization Structure definition + */ +typedef struct +{ + uint32_t dev_endpoints; /*!< Device Endpoints number. + This parameter depends on the used USB core. + This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ + + uint32_t speed; /*!< USB Core speed. + This parameter can be any value of @ref PCD_Speed/HCD_Speed + (HCD_SPEED_xxx, HCD_SPEED_xxx) */ + + uint32_t ep0_mps; /*!< Set the Endpoint 0 Max Packet size. */ + + uint32_t phy_itface; /*!< Select the used PHY interface. + This parameter can be any value of @ref PCD_PHY_Module/HCD_PHY_Module */ + + uint32_t Sof_enable; /*!< Enable or disable the output of the SOF signal. */ + + uint32_t low_power_enable; /*!< Enable or disable Low Power mode */ + + uint32_t lpm_enable; /*!< Enable or disable Battery charging. */ + + uint32_t battery_charging_enable; /*!< Enable or disable Battery charging. */ +} USB_CfgTypeDef; + +typedef struct +{ + uint8_t num; /*!< Endpoint number + This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ + + uint8_t is_in; /*!< Endpoint direction + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint8_t is_stall; /*!< Endpoint stall condition + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint8_t type; /*!< Endpoint type + This parameter can be any value of @ref USB_EP_Type */ + + uint8_t data_pid_start; /*!< Initial data PID + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint16_t pmaadress; /*!< PMA Address + This parameter can be any value between Min_addr = 0 and Max_addr = 1K */ + + uint16_t pmaaddr0; /*!< PMA Address0 + This parameter can be any value between Min_addr = 0 and Max_addr = 1K */ + + uint16_t pmaaddr1; /*!< PMA Address1 + This parameter can be any value between Min_addr = 0 and Max_addr = 1K */ + + uint8_t doublebuffer; /*!< Double buffer enable + This parameter can be 0 or 1 */ + + uint16_t tx_fifo_num; /*!< This parameter is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral + This parameter is added to ensure compatibility across USB peripherals */ + + uint32_t maxpacket; /*!< Endpoint Max packet size + This parameter must be a number between Min_Data = 0 and Max_Data = 64KB */ + + uint8_t *xfer_buff; /*!< Pointer to transfer buffer */ + + uint32_t xfer_len; /*!< Current transfer length */ + + uint32_t xfer_count; /*!< Partial transfer length in case of multi packet transfer */ + + uint32_t xfer_len_db; /*!< double buffer transfer length used with bulk double buffer in */ + + uint8_t xfer_fill_db; /*!< double buffer Need to Fill new buffer used with bulk_in */ + +} USB_EPTypeDef; +#endif /* defined (USB) */ + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup PCD_Exported_Constants PCD Exported Constants + * @{ + */ + +#if defined (USB_OTG_FS) +/** @defgroup USB_OTG_CORE VERSION ID + * @{ + */ +#define USB_OTG_CORE_ID_300A 0x4F54300AU +#define USB_OTG_CORE_ID_310A 0x4F54310AU +/** + * @} + */ + +/** @defgroup USB_Core_Mode_ USB Core Mode + * @{ + */ +#define USB_OTG_MODE_DEVICE 0U +#define USB_OTG_MODE_HOST 1U +#define USB_OTG_MODE_DRD 2U +/** + * @} + */ + +/** @defgroup USB_LL Device Speed + * @{ + */ +#define USBD_FS_SPEED 2U +#define USBH_FSLS_SPEED 1U +/** + * @} + */ + +/** @defgroup USB_LL_Core_Speed USB Low Layer Core Speed + * @{ + */ +#define USB_OTG_SPEED_FULL 3U +/** + * @} + */ + +/** @defgroup USB_LL_Core_PHY USB Low Layer Core PHY + * @{ + */ +#define USB_OTG_ULPI_PHY 1U +#define USB_OTG_EMBEDDED_PHY 2U +/** + * @} + */ + +/** @defgroup USB_LL_Turnaround_Timeout Turnaround Timeout Value + * @{ + */ +#ifndef USBD_FS_TRDT_VALUE +#define USBD_FS_TRDT_VALUE 5U +#define USBD_DEFAULT_TRDT_VALUE 9U +#endif /* USBD_HS_TRDT_VALUE */ +/** + * @} + */ + +/** @defgroup USB_LL_Core_MPS USB Low Layer Core MPS + * @{ + */ +#define USB_OTG_FS_MAX_PACKET_SIZE 64U +#define USB_OTG_MAX_EP0_SIZE 64U +/** + * @} + */ + +/** @defgroup USB_LL_Core_PHY_Frequency USB Low Layer Core PHY Frequency + * @{ + */ +#define DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ (0U << 1) +#define DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ (1U << 1) +#define DSTS_ENUMSPD_FS_PHY_48MHZ (3U << 1) +/** + * @} + */ + +/** @defgroup USB_LL_CORE_Frame_Interval USB Low Layer Core Frame Interval + * @{ + */ +#define DCFG_FRAME_INTERVAL_80 0U +#define DCFG_FRAME_INTERVAL_85 1U +#define DCFG_FRAME_INTERVAL_90 2U +#define DCFG_FRAME_INTERVAL_95 3U +/** + * @} + */ + +/** @defgroup USB_LL_EP0_MPS USB Low Layer EP0 MPS + * @{ + */ +#define EP_MPS_64 0U +#define EP_MPS_32 1U +#define EP_MPS_16 2U +#define EP_MPS_8 3U +/** + * @} + */ + +/** @defgroup USB_LL_EP_Speed USB Low Layer EP Speed + * @{ + */ +#define EP_SPEED_LOW 0U +#define EP_SPEED_FULL 1U +#define EP_SPEED_HIGH 2U +/** + * @} + */ + +/** @defgroup USB_LL_EP_Type USB Low Layer EP Type + * @{ + */ +#define EP_TYPE_CTRL 0U +#define EP_TYPE_ISOC 1U +#define EP_TYPE_BULK 2U +#define EP_TYPE_INTR 3U +#define EP_TYPE_MSK 3U +/** + * @} + */ + +/** @defgroup USB_LL_STS_Defines USB Low Layer STS Defines + * @{ + */ +#define STS_GOUT_NAK 1U +#define STS_DATA_UPDT 2U +#define STS_XFER_COMP 3U +#define STS_SETUP_COMP 4U +#define STS_SETUP_UPDT 6U +/** + * @} + */ + +/** @defgroup USB_LL_HCFG_SPEED_Defines USB Low Layer HCFG Speed Defines + * @{ + */ +#define HCFG_30_60_MHZ 0U +#define HCFG_48_MHZ 1U +#define HCFG_6_MHZ 2U +/** + * @} + */ + +/** @defgroup USB_LL_HPRT0_PRTSPD_SPEED_Defines USB Low Layer HPRT0 PRTSPD Speed Defines + * @{ + */ +#define HPRT0_PRTSPD_HIGH_SPEED 0U +#define HPRT0_PRTSPD_FULL_SPEED 1U +#define HPRT0_PRTSPD_LOW_SPEED 2U +/** + * @} + */ + +#define HCCHAR_CTRL 0U +#define HCCHAR_ISOC 1U +#define HCCHAR_BULK 2U +#define HCCHAR_INTR 3U + +#define HC_PID_DATA0 0U +#define HC_PID_DATA2 1U +#define HC_PID_DATA1 2U +#define HC_PID_SETUP 3U + +#define GRXSTS_PKTSTS_IN 2U +#define GRXSTS_PKTSTS_IN_XFER_COMP 3U +#define GRXSTS_PKTSTS_DATA_TOGGLE_ERR 5U +#define GRXSTS_PKTSTS_CH_HALTED 7U + +#define USBx_PCGCCTL *(__IO uint32_t *)((uint32_t)USBx_BASE + USB_OTG_PCGCCTL_BASE) +#define USBx_HPRT0 *(__IO uint32_t *)((uint32_t)USBx_BASE + USB_OTG_HOST_PORT_BASE) + +#define USBx_DEVICE ((USB_OTG_DeviceTypeDef *)(USBx_BASE + USB_OTG_DEVICE_BASE)) +#define USBx_INEP(i) ((USB_OTG_INEndpointTypeDef *)(USBx_BASE\ + + USB_OTG_IN_ENDPOINT_BASE + ((i) * USB_OTG_EP_REG_SIZE))) + +#define USBx_OUTEP(i) ((USB_OTG_OUTEndpointTypeDef *)(USBx_BASE\ + + USB_OTG_OUT_ENDPOINT_BASE + ((i) * USB_OTG_EP_REG_SIZE))) + +#define USBx_DFIFO(i) *(__IO uint32_t *)(USBx_BASE + USB_OTG_FIFO_BASE + ((i) * USB_OTG_FIFO_SIZE)) + +#define USBx_HOST ((USB_OTG_HostTypeDef *)(USBx_BASE + USB_OTG_HOST_BASE)) +#define USBx_HC(i) ((USB_OTG_HostChannelTypeDef *)(USBx_BASE\ + + USB_OTG_HOST_CHANNEL_BASE\ + + ((i) * USB_OTG_HOST_CHANNEL_SIZE))) + +#endif /* defined (USB_OTG_FS) */ + +#if defined (USB) +/** @defgroup USB_LL_EP0_MPS USB Low Layer EP0 MPS + * @{ + */ +#define EP_MPS_64 0U +#define EP_MPS_32 1U +#define EP_MPS_16 2U +#define EP_MPS_8 3U +/** + * @} + */ + +/** @defgroup USB_LL_EP_Type USB Low Layer EP Type + * @{ + */ +#define EP_TYPE_CTRL 0U +#define EP_TYPE_ISOC 1U +#define EP_TYPE_BULK 2U +#define EP_TYPE_INTR 3U +#define EP_TYPE_MSK 3U +/** + * @} + */ + +/** @defgroup USB_LL Device Speed + * @{ + */ +#define USBD_FS_SPEED 2U +/** + * @} + */ + +#define BTABLE_ADDRESS 0x000U +#define PMA_ACCESS 2U +#endif /* defined (USB) */ +#if defined (USB_OTG_FS) +#define EP_ADDR_MSK 0xFU +#endif /* defined (USB_OTG_FS) */ +#if defined (USB) +#define EP_ADDR_MSK 0x7U +#endif /* defined (USB) */ +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup USB_LL_Exported_Macros USB Low Layer Exported Macros + * @{ + */ +#if defined (USB_OTG_FS) +#define USB_MASK_INTERRUPT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->GINTMSK &= ~(__INTERRUPT__)) +#define USB_UNMASK_INTERRUPT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->GINTMSK |= (__INTERRUPT__)) + +#define CLEAR_IN_EP_INTR(__EPNUM__, __INTERRUPT__) (USBx_INEP(__EPNUM__)->DIEPINT = (__INTERRUPT__)) +#define CLEAR_OUT_EP_INTR(__EPNUM__, __INTERRUPT__) (USBx_OUTEP(__EPNUM__)->DOEPINT = (__INTERRUPT__)) +#endif /* defined (USB_OTG_FS) */ +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup USB_LL_Exported_Functions USB Low Layer Exported Functions + * @{ + */ +#if defined (USB_OTG_FS) +HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg); +HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg); +HAL_StatusTypeDef USB_EnableGlobalInt(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_DisableGlobalInt(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_SetTurnaroundTime(USB_OTG_GlobalTypeDef *USBx, uint32_t hclk, uint8_t speed); +HAL_StatusTypeDef USB_SetCurrentMode(USB_OTG_GlobalTypeDef *USBx, USB_ModeTypeDef mode); +HAL_StatusTypeDef USB_SetDevSpeed(USB_OTG_GlobalTypeDef *USBx, uint8_t speed); +HAL_StatusTypeDef USB_FlushRxFifo(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_FlushTxFifo(USB_OTG_GlobalTypeDef *USBx, uint32_t num); +HAL_StatusTypeDef USB_ActivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); +HAL_StatusTypeDef USB_DeactivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); +HAL_StatusTypeDef USB_ActivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); +HAL_StatusTypeDef USB_DeactivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); +HAL_StatusTypeDef USB_EPStartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); +HAL_StatusTypeDef USB_EP0StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); +HAL_StatusTypeDef USB_WritePacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *src, + uint8_t ch_ep_num, uint16_t len); + +void *USB_ReadPacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len); +HAL_StatusTypeDef USB_EPSetStall(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); +HAL_StatusTypeDef USB_EPClearStall(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); +HAL_StatusTypeDef USB_SetDevAddress(USB_OTG_GlobalTypeDef *USBx, uint8_t address); +HAL_StatusTypeDef USB_DevConnect(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_DevDisconnect(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_StopDevice(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_ActivateSetup(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_EP0_OutStart(USB_OTG_GlobalTypeDef *USBx, uint8_t *psetup); +uint8_t USB_GetDevSpeed(USB_OTG_GlobalTypeDef *USBx); +uint32_t USB_GetMode(USB_OTG_GlobalTypeDef *USBx); +uint32_t USB_ReadInterrupts(USB_OTG_GlobalTypeDef *USBx); +uint32_t USB_ReadDevAllOutEpInterrupt(USB_OTG_GlobalTypeDef *USBx); +uint32_t USB_ReadDevOutEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum); +uint32_t USB_ReadDevAllInEpInterrupt(USB_OTG_GlobalTypeDef *USBx); +uint32_t USB_ReadDevInEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum); +void USB_ClearInterrupts(USB_OTG_GlobalTypeDef *USBx, uint32_t interrupt); + +HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg); +HAL_StatusTypeDef USB_InitFSLSPClkSel(USB_OTG_GlobalTypeDef *USBx, uint8_t freq); +HAL_StatusTypeDef USB_ResetPort(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_DriveVbus(USB_OTG_GlobalTypeDef *USBx, uint8_t state); +uint32_t USB_GetHostSpeed(USB_OTG_GlobalTypeDef *USBx); +uint32_t USB_GetCurrentFrame(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_HC_Init(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num, + uint8_t epnum, uint8_t dev_address, uint8_t speed, + uint8_t ep_type, uint16_t mps); +HAL_StatusTypeDef USB_HC_StartXfer(USB_OTG_GlobalTypeDef *USBx, + USB_OTG_HCTypeDef *hc); + +uint32_t USB_HC_ReadInterrupt(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_HC_Halt(USB_OTG_GlobalTypeDef *USBx, uint8_t hc_num); +HAL_StatusTypeDef USB_DoPing(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num); +HAL_StatusTypeDef USB_StopHost(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_ActivateRemoteWakeup(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_DeActivateRemoteWakeup(USB_OTG_GlobalTypeDef *USBx); +#endif /* defined (USB_OTG_FS) */ + +#if defined (USB) +HAL_StatusTypeDef USB_CoreInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg); +HAL_StatusTypeDef USB_DevInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg); +HAL_StatusTypeDef USB_EnableGlobalInt(USB_TypeDef *USBx); +HAL_StatusTypeDef USB_DisableGlobalInt(USB_TypeDef *USBx); +HAL_StatusTypeDef USB_SetCurrentMode(USB_TypeDef *USBx, USB_ModeTypeDef mode); +HAL_StatusTypeDef USB_SetDevSpeed(USB_TypeDef *USBx, uint8_t speed); +HAL_StatusTypeDef USB_FlushRxFifo(USB_TypeDef *USBx); +HAL_StatusTypeDef USB_FlushTxFifo(USB_TypeDef *USBx, uint32_t num); + +#if defined (HAL_PCD_MODULE_ENABLED) +HAL_StatusTypeDef USB_ActivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep); +HAL_StatusTypeDef USB_DeactivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep); +HAL_StatusTypeDef USB_EPStartXfer(USB_TypeDef *USBx, USB_EPTypeDef *ep); +HAL_StatusTypeDef USB_EPSetStall(USB_TypeDef *USBx, USB_EPTypeDef *ep); +HAL_StatusTypeDef USB_EPClearStall(USB_TypeDef *USBx, USB_EPTypeDef *ep); +#endif + +HAL_StatusTypeDef USB_SetDevAddress(USB_TypeDef *USBx, uint8_t address); +HAL_StatusTypeDef USB_DevConnect(USB_TypeDef *USBx); +HAL_StatusTypeDef USB_DevDisconnect(USB_TypeDef *USBx); +HAL_StatusTypeDef USB_StopDevice(USB_TypeDef *USBx); +HAL_StatusTypeDef USB_EP0_OutStart(USB_TypeDef *USBx, uint8_t *psetup); +HAL_StatusTypeDef USB_WritePacket(USB_TypeDef *USBx, uint8_t *src, + uint8_t ch_ep_num, uint16_t len); + +void *USB_ReadPacket(USB_TypeDef *USBx, uint8_t *dest, uint16_t len); + +uint32_t USB_ReadInterrupts(USB_TypeDef *USBx); +uint32_t USB_ReadDevAllOutEpInterrupt(USB_TypeDef *USBx); +uint32_t USB_ReadDevOutEPInterrupt(USB_TypeDef *USBx, uint8_t epnum); +uint32_t USB_ReadDevAllInEpInterrupt(USB_TypeDef *USBx); +uint32_t USB_ReadDevInEPInterrupt(USB_TypeDef *USBx, uint8_t epnum); +void USB_ClearInterrupts(USB_TypeDef *USBx, uint32_t interrupt); +HAL_StatusTypeDef USB_ActivateRemoteWakeup(USB_TypeDef *USBx); +HAL_StatusTypeDef USB_DeActivateRemoteWakeup(USB_TypeDef *USBx); + +void USB_WritePMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf, + uint16_t wPMABufAddr, uint16_t wNBytes); + +void USB_ReadPMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf, + uint16_t wPMABufAddr, uint16_t wNBytes); +#endif /* defined (USB) */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +#endif /* defined (USB) || defined (USB_OTG_FS) */ + +#ifdef __cplusplus +} +#endif + + +#endif /* STM32F1xx_LL_USB_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/Drivers/STM32F1xx_HAL_Driver/License.md b/stm32f103/Drivers/STM32F1xx_HAL_Driver/License.md new file mode 100644 index 0000000..ff4e630 --- /dev/null +++ b/stm32f103/Drivers/STM32F1xx_HAL_Driver/License.md @@ -0,0 +1,27 @@ +Copyright 2016(-2021) STMicroelectronics. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors +may be used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/stm32f103/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c b/stm32f103/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c new file mode 100644 index 0000000..fc1645c --- /dev/null +++ b/stm32f103/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c @@ -0,0 +1,2579 @@ +/** + ****************************************************************************** + * @file stm32f1xx_hal_pcd.c + * @author MCD Application Team + * @brief PCD HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the USB Peripheral Controller: + * + Initialization and de-initialization functions + * + IO operation functions + * + Peripheral Control functions + * + Peripheral State functions + * + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The PCD HAL driver can be used as follows: + + (#) Declare a PCD_HandleTypeDef handle structure, for example: + PCD_HandleTypeDef hpcd; + + (#) Fill parameters of Init structure in HCD handle + + (#) Call HAL_PCD_Init() API to initialize the PCD peripheral (Core, Device core, ...) + + (#) Initialize the PCD low level resources through the HAL_PCD_MspInit() API: + (##) Enable the PCD/USB Low Level interface clock using + (+++) __HAL_RCC_USB_CLK_ENABLE(); For USB Device only FS peripheral + + (##) Initialize the related GPIO clocks + (##) Configure PCD pin-out + (##) Configure PCD NVIC interrupt + + (#)Associate the Upper USB device stack to the HAL PCD Driver: + (##) hpcd.pData = pdev; + + (#)Enable PCD transmission and reception: + (##) HAL_PCD_Start(); + + @endverbatim + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_hal.h" + +/** @addtogroup STM32F1xx_HAL_Driver + * @{ + */ + +/** @defgroup PCD PCD + * @brief PCD HAL module driver + * @{ + */ + +#ifdef HAL_PCD_MODULE_ENABLED + +#if defined (USB) || defined (USB_OTG_FS) + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @defgroup PCD_Private_Macros PCD Private Macros + * @{ + */ +#define PCD_MIN(a, b) (((a) < (b)) ? (a) : (b)) +#define PCD_MAX(a, b) (((a) > (b)) ? (a) : (b)) +/** + * @} + */ + +/* Private functions prototypes ----------------------------------------------*/ +/** @defgroup PCD_Private_Functions PCD Private Functions + * @{ + */ +#if defined (USB_OTG_FS) +static HAL_StatusTypeDef PCD_WriteEmptyTxFifo(PCD_HandleTypeDef *hpcd, uint32_t epnum); +static HAL_StatusTypeDef PCD_EP_OutXfrComplete_int(PCD_HandleTypeDef *hpcd, uint32_t epnum); +static HAL_StatusTypeDef PCD_EP_OutSetupPacket_int(PCD_HandleTypeDef *hpcd, uint32_t epnum); +#endif /* defined (USB_OTG_FS) */ + +#if defined (USB) +static HAL_StatusTypeDef PCD_EP_ISR_Handler(PCD_HandleTypeDef *hpcd); +static HAL_StatusTypeDef HAL_PCD_EP_DB_Transmit(PCD_HandleTypeDef *hpcd, PCD_EPTypeDef *ep, uint16_t wEPVal); +static uint16_t HAL_PCD_EP_DB_Receive(PCD_HandleTypeDef *hpcd, PCD_EPTypeDef *ep, uint16_t wEPVal); +#endif /* defined (USB) */ +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup PCD_Exported_Functions PCD Exported Functions + * @{ + */ + +/** @defgroup PCD_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and Configuration functions + * +@verbatim + =============================================================================== + ##### Initialization and de-initialization functions ##### + =============================================================================== + [..] This section provides functions allowing to: + +@endverbatim + * @{ + */ + +/** + * @brief Initializes the PCD according to the specified + * parameters in the PCD_InitTypeDef and initialize the associated handle. + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd) +{ +#if defined (USB_OTG_FS) + USB_OTG_GlobalTypeDef *USBx; +#endif /* defined (USB_OTG_FS) */ + uint8_t i; + + /* Check the PCD handle allocation */ + if (hpcd == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_PCD_ALL_INSTANCE(hpcd->Instance)); + +#if defined (USB_OTG_FS) + USBx = hpcd->Instance; +#endif /* defined (USB_OTG_FS) */ + + if (hpcd->State == HAL_PCD_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + hpcd->Lock = HAL_UNLOCKED; + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SOFCallback = HAL_PCD_SOFCallback; + hpcd->SetupStageCallback = HAL_PCD_SetupStageCallback; + hpcd->ResetCallback = HAL_PCD_ResetCallback; + hpcd->SuspendCallback = HAL_PCD_SuspendCallback; + hpcd->ResumeCallback = HAL_PCD_ResumeCallback; + hpcd->ConnectCallback = HAL_PCD_ConnectCallback; + hpcd->DisconnectCallback = HAL_PCD_DisconnectCallback; + hpcd->DataOutStageCallback = HAL_PCD_DataOutStageCallback; + hpcd->DataInStageCallback = HAL_PCD_DataInStageCallback; + hpcd->ISOOUTIncompleteCallback = HAL_PCD_ISOOUTIncompleteCallback; + hpcd->ISOINIncompleteCallback = HAL_PCD_ISOINIncompleteCallback; + + if (hpcd->MspInitCallback == NULL) + { + hpcd->MspInitCallback = HAL_PCD_MspInit; + } + + /* Init the low level hardware */ + hpcd->MspInitCallback(hpcd); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + HAL_PCD_MspInit(hpcd); +#endif /* (USE_HAL_PCD_REGISTER_CALLBACKS) */ + } + + hpcd->State = HAL_PCD_STATE_BUSY; + +#if defined (USB_OTG_FS) + /* Disable DMA mode for FS instance */ + if ((USBx->CID & (0x1U << 8)) == 0U) + { + hpcd->Init.dma_enable = 0U; + } +#endif /* defined (USB_OTG_FS) */ + + /* Disable the Interrupts */ + __HAL_PCD_DISABLE(hpcd); + + /*Init the Core (common init.) */ + if (USB_CoreInit(hpcd->Instance, hpcd->Init) != HAL_OK) + { + hpcd->State = HAL_PCD_STATE_ERROR; + return HAL_ERROR; + } + + /* Force Device Mode*/ + (void)USB_SetCurrentMode(hpcd->Instance, USB_DEVICE_MODE); + + /* Init endpoints structures */ + for (i = 0U; i < hpcd->Init.dev_endpoints; i++) + { + /* Init ep structure */ + hpcd->IN_ep[i].is_in = 1U; + hpcd->IN_ep[i].num = i; + hpcd->IN_ep[i].tx_fifo_num = i; + /* Control until ep is activated */ + hpcd->IN_ep[i].type = EP_TYPE_CTRL; + hpcd->IN_ep[i].maxpacket = 0U; + hpcd->IN_ep[i].xfer_buff = 0U; + hpcd->IN_ep[i].xfer_len = 0U; + } + + for (i = 0U; i < hpcd->Init.dev_endpoints; i++) + { + hpcd->OUT_ep[i].is_in = 0U; + hpcd->OUT_ep[i].num = i; + /* Control until ep is activated */ + hpcd->OUT_ep[i].type = EP_TYPE_CTRL; + hpcd->OUT_ep[i].maxpacket = 0U; + hpcd->OUT_ep[i].xfer_buff = 0U; + hpcd->OUT_ep[i].xfer_len = 0U; + } + + /* Init Device */ + if (USB_DevInit(hpcd->Instance, hpcd->Init) != HAL_OK) + { + hpcd->State = HAL_PCD_STATE_ERROR; + return HAL_ERROR; + } + + hpcd->USB_Address = 0U; + hpcd->State = HAL_PCD_STATE_READY; + (void)USB_DevDisconnect(hpcd->Instance); + + return HAL_OK; +} + +/** + * @brief DeInitializes the PCD peripheral. + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_DeInit(PCD_HandleTypeDef *hpcd) +{ + /* Check the PCD handle allocation */ + if (hpcd == NULL) + { + return HAL_ERROR; + } + + hpcd->State = HAL_PCD_STATE_BUSY; + + /* Stop Device */ + if (USB_StopDevice(hpcd->Instance) != HAL_OK) + { + return HAL_ERROR; + } + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + if (hpcd->MspDeInitCallback == NULL) + { + hpcd->MspDeInitCallback = HAL_PCD_MspDeInit; /* Legacy weak MspDeInit */ + } + + /* DeInit the low level hardware */ + hpcd->MspDeInitCallback(hpcd); +#else + /* DeInit the low level hardware: CLOCK, NVIC.*/ + HAL_PCD_MspDeInit(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + hpcd->State = HAL_PCD_STATE_RESET; + + return HAL_OK; +} + +/** + * @brief Initializes the PCD MSP. + * @param hpcd PCD handle + * @retval None + */ +__weak void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes PCD MSP. + * @param hpcd PCD handle + * @retval None + */ +__weak void HAL_PCD_MspDeInit(PCD_HandleTypeDef *hpcd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_MspDeInit could be implemented in the user file + */ +} + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +/** + * @brief Register a User USB PCD Callback + * To be used instead of the weak predefined callback + * @param hpcd USB PCD handle + * @param CallbackID ID of the callback to be registered + * This parameter can be one of the following values: + * @arg @ref HAL_PCD_SOF_CB_ID USB PCD SOF callback ID + * @arg @ref HAL_PCD_SETUPSTAGE_CB_ID USB PCD Setup callback ID + * @arg @ref HAL_PCD_RESET_CB_ID USB PCD Reset callback ID + * @arg @ref HAL_PCD_SUSPEND_CB_ID USB PCD Suspend callback ID + * @arg @ref HAL_PCD_RESUME_CB_ID USB PCD Resume callback ID + * @arg @ref HAL_PCD_CONNECT_CB_ID USB PCD Connect callback ID + * @arg @ref HAL_PCD_DISCONNECT_CB_ID OTG PCD Disconnect callback ID + * @arg @ref HAL_PCD_MSPINIT_CB_ID MspDeInit callback ID + * @arg @ref HAL_PCD_MSPDEINIT_CB_ID MspDeInit callback ID + * @param pCallback pointer to the Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_RegisterCallback(PCD_HandleTypeDef *hpcd, + HAL_PCD_CallbackIDTypeDef CallbackID, + pPCD_CallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + return HAL_ERROR; + } + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + switch (CallbackID) + { + case HAL_PCD_SOF_CB_ID : + hpcd->SOFCallback = pCallback; + break; + + case HAL_PCD_SETUPSTAGE_CB_ID : + hpcd->SetupStageCallback = pCallback; + break; + + case HAL_PCD_RESET_CB_ID : + hpcd->ResetCallback = pCallback; + break; + + case HAL_PCD_SUSPEND_CB_ID : + hpcd->SuspendCallback = pCallback; + break; + + case HAL_PCD_RESUME_CB_ID : + hpcd->ResumeCallback = pCallback; + break; + + case HAL_PCD_CONNECT_CB_ID : + hpcd->ConnectCallback = pCallback; + break; + + case HAL_PCD_DISCONNECT_CB_ID : + hpcd->DisconnectCallback = pCallback; + break; + + case HAL_PCD_MSPINIT_CB_ID : + hpcd->MspInitCallback = pCallback; + break; + + case HAL_PCD_MSPDEINIT_CB_ID : + hpcd->MspDeInitCallback = pCallback; + break; + + default : + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else if (hpcd->State == HAL_PCD_STATE_RESET) + { + switch (CallbackID) + { + case HAL_PCD_MSPINIT_CB_ID : + hpcd->MspInitCallback = pCallback; + break; + + case HAL_PCD_MSPDEINIT_CB_ID : + hpcd->MspDeInitCallback = pCallback; + break; + + default : + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + return status; +} + +/** + * @brief Unregister an USB PCD Callback + * USB PCD callabck is redirected to the weak predefined callback + * @param hpcd USB PCD handle + * @param CallbackID ID of the callback to be unregistered + * This parameter can be one of the following values: + * @arg @ref HAL_PCD_SOF_CB_ID USB PCD SOF callback ID + * @arg @ref HAL_PCD_SETUPSTAGE_CB_ID USB PCD Setup callback ID + * @arg @ref HAL_PCD_RESET_CB_ID USB PCD Reset callback ID + * @arg @ref HAL_PCD_SUSPEND_CB_ID USB PCD Suspend callback ID + * @arg @ref HAL_PCD_RESUME_CB_ID USB PCD Resume callback ID + * @arg @ref HAL_PCD_CONNECT_CB_ID USB PCD Connect callback ID + * @arg @ref HAL_PCD_DISCONNECT_CB_ID OTG PCD Disconnect callback ID + * @arg @ref HAL_PCD_MSPINIT_CB_ID MspDeInit callback ID + * @arg @ref HAL_PCD_MSPDEINIT_CB_ID MspDeInit callback ID + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_UnRegisterCallback(PCD_HandleTypeDef *hpcd, HAL_PCD_CallbackIDTypeDef CallbackID) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hpcd); + + /* Setup Legacy weak Callbacks */ + if (hpcd->State == HAL_PCD_STATE_READY) + { + switch (CallbackID) + { + case HAL_PCD_SOF_CB_ID : + hpcd->SOFCallback = HAL_PCD_SOFCallback; + break; + + case HAL_PCD_SETUPSTAGE_CB_ID : + hpcd->SetupStageCallback = HAL_PCD_SetupStageCallback; + break; + + case HAL_PCD_RESET_CB_ID : + hpcd->ResetCallback = HAL_PCD_ResetCallback; + break; + + case HAL_PCD_SUSPEND_CB_ID : + hpcd->SuspendCallback = HAL_PCD_SuspendCallback; + break; + + case HAL_PCD_RESUME_CB_ID : + hpcd->ResumeCallback = HAL_PCD_ResumeCallback; + break; + + case HAL_PCD_CONNECT_CB_ID : + hpcd->ConnectCallback = HAL_PCD_ConnectCallback; + break; + + case HAL_PCD_DISCONNECT_CB_ID : + hpcd->DisconnectCallback = HAL_PCD_DisconnectCallback; + break; + + case HAL_PCD_MSPINIT_CB_ID : + hpcd->MspInitCallback = HAL_PCD_MspInit; + break; + + case HAL_PCD_MSPDEINIT_CB_ID : + hpcd->MspDeInitCallback = HAL_PCD_MspDeInit; + break; + + default : + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else if (hpcd->State == HAL_PCD_STATE_RESET) + { + switch (CallbackID) + { + case HAL_PCD_MSPINIT_CB_ID : + hpcd->MspInitCallback = HAL_PCD_MspInit; + break; + + case HAL_PCD_MSPDEINIT_CB_ID : + hpcd->MspDeInitCallback = HAL_PCD_MspDeInit; + break; + + default : + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + return status; +} + +/** + * @brief Register USB PCD Data OUT Stage Callback + * To be used instead of the weak HAL_PCD_DataOutStageCallback() predefined callback + * @param hpcd PCD handle + * @param pCallback pointer to the USB PCD Data OUT Stage Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_RegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd, + pPCD_DataOutStageCallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + return HAL_ERROR; + } + + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + hpcd->DataOutStageCallback = pCallback; + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + + return status; +} + +/** + * @brief Unregister the USB PCD Data OUT Stage Callback + * USB PCD Data OUT Stage Callback is redirected to the weak HAL_PCD_DataOutStageCallback() predefined callback + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_UnRegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + hpcd->DataOutStageCallback = HAL_PCD_DataOutStageCallback; /* Legacy weak DataOutStageCallback */ + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + + return status; +} + +/** + * @brief Register USB PCD Data IN Stage Callback + * To be used instead of the weak HAL_PCD_DataInStageCallback() predefined callback + * @param hpcd PCD handle + * @param pCallback pointer to the USB PCD Data IN Stage Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_RegisterDataInStageCallback(PCD_HandleTypeDef *hpcd, + pPCD_DataInStageCallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + return HAL_ERROR; + } + + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + hpcd->DataInStageCallback = pCallback; + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + + return status; +} + +/** + * @brief Unregister the USB PCD Data IN Stage Callback + * USB PCD Data OUT Stage Callback is redirected to the weak HAL_PCD_DataInStageCallback() predefined callback + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_UnRegisterDataInStageCallback(PCD_HandleTypeDef *hpcd) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + hpcd->DataInStageCallback = HAL_PCD_DataInStageCallback; /* Legacy weak DataInStageCallback */ + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + + return status; +} + +/** + * @brief Register USB PCD Iso OUT incomplete Callback + * To be used instead of the weak HAL_PCD_ISOOUTIncompleteCallback() predefined callback + * @param hpcd PCD handle + * @param pCallback pointer to the USB PCD Iso OUT incomplete Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_RegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd, + pPCD_IsoOutIncpltCallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + return HAL_ERROR; + } + + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + hpcd->ISOOUTIncompleteCallback = pCallback; + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + + return status; +} + +/** + * @brief Unregister the USB PCD Iso OUT incomplete Callback + * USB PCD Iso OUT incomplete Callback is redirected + * to the weak HAL_PCD_ISOOUTIncompleteCallback() predefined callback + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_UnRegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + hpcd->ISOOUTIncompleteCallback = HAL_PCD_ISOOUTIncompleteCallback; /* Legacy weak ISOOUTIncompleteCallback */ + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + + return status; +} + +/** + * @brief Register USB PCD Iso IN incomplete Callback + * To be used instead of the weak HAL_PCD_ISOINIncompleteCallback() predefined callback + * @param hpcd PCD handle + * @param pCallback pointer to the USB PCD Iso IN incomplete Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_RegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd, + pPCD_IsoInIncpltCallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + return HAL_ERROR; + } + + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + hpcd->ISOINIncompleteCallback = pCallback; + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + + return status; +} + +/** + * @brief Unregister the USB PCD Iso IN incomplete Callback + * USB PCD Iso IN incomplete Callback is redirected + * to the weak HAL_PCD_ISOINIncompleteCallback() predefined callback + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_UnRegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + hpcd->ISOINIncompleteCallback = HAL_PCD_ISOINIncompleteCallback; /* Legacy weak ISOINIncompleteCallback */ + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + + return status; +} + +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + +/** + * @} + */ + +/** @defgroup PCD_Exported_Functions_Group2 Input and Output operation functions + * @brief Data transfers functions + * +@verbatim + =============================================================================== + ##### IO operation functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to manage the PCD data + transfers. + +@endverbatim + * @{ + */ + +/** + * @brief Start the USB device + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_Start(PCD_HandleTypeDef *hpcd) +{ + __HAL_LOCK(hpcd); + __HAL_PCD_ENABLE(hpcd); + +#if defined (USB) + HAL_PCDEx_SetConnectionState(hpcd, 1U); +#endif /* defined (USB) */ + + (void)USB_DevConnect(hpcd->Instance); + __HAL_UNLOCK(hpcd); + + return HAL_OK; +} + +/** + * @brief Stop the USB device. + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_Stop(PCD_HandleTypeDef *hpcd) +{ + __HAL_LOCK(hpcd); + __HAL_PCD_DISABLE(hpcd); + +#if defined (USB) + HAL_PCDEx_SetConnectionState(hpcd, 0U); +#endif /* defined (USB) */ + + (void)USB_DevDisconnect(hpcd->Instance); + +#if defined (USB_OTG_FS) + (void)USB_FlushTxFifo(hpcd->Instance, 0x10U); +#endif /* defined (USB_OTG_FS) */ + + __HAL_UNLOCK(hpcd); + + return HAL_OK; +} + +#if defined (USB_OTG_FS) +/** + * @brief Handles PCD interrupt request. + * @param hpcd PCD handle + * @retval HAL status + */ +void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd) +{ + USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; + uint32_t USBx_BASE = (uint32_t)USBx; + USB_OTG_EPTypeDef *ep; + uint32_t i; + uint32_t ep_intr; + uint32_t epint; + uint32_t epnum; + uint32_t fifoemptymsk; + uint32_t temp; + + /* ensure that we are in device mode */ + if (USB_GetMode(hpcd->Instance) == USB_OTG_MODE_DEVICE) + { + /* avoid spurious interrupt */ + if (__HAL_PCD_IS_INVALID_INTERRUPT(hpcd)) + { + return; + } + + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_MMIS)) + { + /* incorrect mode, acknowledge the interrupt */ + __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_MMIS); + } + + /* Handle RxQLevel Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_RXFLVL)) + { + USB_MASK_INTERRUPT(hpcd->Instance, USB_OTG_GINTSTS_RXFLVL); + + temp = USBx->GRXSTSP; + + ep = &hpcd->OUT_ep[temp & USB_OTG_GRXSTSP_EPNUM]; + + if (((temp & USB_OTG_GRXSTSP_PKTSTS) >> 17) == STS_DATA_UPDT) + { + if ((temp & USB_OTG_GRXSTSP_BCNT) != 0U) + { + (void)USB_ReadPacket(USBx, ep->xfer_buff, + (uint16_t)((temp & USB_OTG_GRXSTSP_BCNT) >> 4)); + + ep->xfer_buff += (temp & USB_OTG_GRXSTSP_BCNT) >> 4; + ep->xfer_count += (temp & USB_OTG_GRXSTSP_BCNT) >> 4; + } + } + else if (((temp & USB_OTG_GRXSTSP_PKTSTS) >> 17) == STS_SETUP_UPDT) + { + (void)USB_ReadPacket(USBx, (uint8_t *)hpcd->Setup, 8U); + ep->xfer_count += (temp & USB_OTG_GRXSTSP_BCNT) >> 4; + } + else + { + /* ... */ + } + USB_UNMASK_INTERRUPT(hpcd->Instance, USB_OTG_GINTSTS_RXFLVL); + } + + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_OEPINT)) + { + epnum = 0U; + + /* Read in the device interrupt bits */ + ep_intr = USB_ReadDevAllOutEpInterrupt(hpcd->Instance); + + while (ep_intr != 0U) + { + if ((ep_intr & 0x1U) != 0U) + { + epint = USB_ReadDevOutEPInterrupt(hpcd->Instance, (uint8_t)epnum); + + if ((epint & USB_OTG_DOEPINT_XFRC) == USB_OTG_DOEPINT_XFRC) + { + CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_XFRC); + (void)PCD_EP_OutXfrComplete_int(hpcd, epnum); + } + + if ((epint & USB_OTG_DOEPINT_STUP) == USB_OTG_DOEPINT_STUP) + { + CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STUP); + /* Class B setup phase done for previous decoded setup */ + (void)PCD_EP_OutSetupPacket_int(hpcd, epnum); + } + + if ((epint & USB_OTG_DOEPINT_OTEPDIS) == USB_OTG_DOEPINT_OTEPDIS) + { + CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_OTEPDIS); + } + + /* Clear Status Phase Received interrupt */ + if ((epint & USB_OTG_DOEPINT_OTEPSPR) == USB_OTG_DOEPINT_OTEPSPR) + { + CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_OTEPSPR); + } + + /* Clear OUT NAK interrupt */ + if ((epint & USB_OTG_DOEPINT_NAK) == USB_OTG_DOEPINT_NAK) + { + CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_NAK); + } + } + epnum++; + ep_intr >>= 1U; + } + } + + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_IEPINT)) + { + /* Read in the device interrupt bits */ + ep_intr = USB_ReadDevAllInEpInterrupt(hpcd->Instance); + + epnum = 0U; + + while (ep_intr != 0U) + { + if ((ep_intr & 0x1U) != 0U) /* In ITR */ + { + epint = USB_ReadDevInEPInterrupt(hpcd->Instance, (uint8_t)epnum); + + if ((epint & USB_OTG_DIEPINT_XFRC) == USB_OTG_DIEPINT_XFRC) + { + fifoemptymsk = (uint32_t)(0x1UL << (epnum & EP_ADDR_MSK)); + USBx_DEVICE->DIEPEMPMSK &= ~fifoemptymsk; + + CLEAR_IN_EP_INTR(epnum, USB_OTG_DIEPINT_XFRC); + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataInStageCallback(hpcd, (uint8_t)epnum); +#else + HAL_PCD_DataInStageCallback(hpcd, (uint8_t)epnum); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + if ((epint & USB_OTG_DIEPINT_TOC) == USB_OTG_DIEPINT_TOC) + { + CLEAR_IN_EP_INTR(epnum, USB_OTG_DIEPINT_TOC); + } + if ((epint & USB_OTG_DIEPINT_ITTXFE) == USB_OTG_DIEPINT_ITTXFE) + { + CLEAR_IN_EP_INTR(epnum, USB_OTG_DIEPINT_ITTXFE); + } + if ((epint & USB_OTG_DIEPINT_INEPNE) == USB_OTG_DIEPINT_INEPNE) + { + CLEAR_IN_EP_INTR(epnum, USB_OTG_DIEPINT_INEPNE); + } + if ((epint & USB_OTG_DIEPINT_EPDISD) == USB_OTG_DIEPINT_EPDISD) + { + CLEAR_IN_EP_INTR(epnum, USB_OTG_DIEPINT_EPDISD); + } + if ((epint & USB_OTG_DIEPINT_TXFE) == USB_OTG_DIEPINT_TXFE) + { + (void)PCD_WriteEmptyTxFifo(hpcd, epnum); + } + } + epnum++; + ep_intr >>= 1U; + } + } + + /* Handle Resume Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_WKUINT)) + { + /* Clear the Remote Wake-up Signaling */ + USBx_DEVICE->DCTL &= ~USB_OTG_DCTL_RWUSIG; + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->ResumeCallback(hpcd); +#else + HAL_PCD_ResumeCallback(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_WKUINT); + } + + /* Handle Suspend Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_USBSUSP)) + { + if ((USBx_DEVICE->DSTS & USB_OTG_DSTS_SUSPSTS) == USB_OTG_DSTS_SUSPSTS) + { +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SuspendCallback(hpcd); +#else + HAL_PCD_SuspendCallback(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_USBSUSP); + } + /* Handle Reset Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_USBRST)) + { + USBx_DEVICE->DCTL &= ~USB_OTG_DCTL_RWUSIG; + (void)USB_FlushTxFifo(hpcd->Instance, 0x10U); + + for (i = 0U; i < hpcd->Init.dev_endpoints; i++) + { + USBx_INEP(i)->DIEPINT = 0xFB7FU; + USBx_INEP(i)->DIEPCTL &= ~USB_OTG_DIEPCTL_STALL; + USBx_INEP(i)->DIEPCTL |= USB_OTG_DIEPCTL_SNAK; + USBx_OUTEP(i)->DOEPINT = 0xFB7FU; + USBx_OUTEP(i)->DOEPCTL &= ~USB_OTG_DOEPCTL_STALL; + USBx_OUTEP(i)->DOEPCTL |= USB_OTG_DOEPCTL_SNAK; + } + USBx_DEVICE->DAINTMSK |= 0x10001U; + + if (hpcd->Init.use_dedicated_ep1 != 0U) + { + USBx_DEVICE->DOUTEP1MSK |= USB_OTG_DOEPMSK_STUPM | + USB_OTG_DOEPMSK_XFRCM | + USB_OTG_DOEPMSK_EPDM; + + USBx_DEVICE->DINEP1MSK |= USB_OTG_DIEPMSK_TOM | + USB_OTG_DIEPMSK_XFRCM | + USB_OTG_DIEPMSK_EPDM; + } + else + { + USBx_DEVICE->DOEPMSK |= USB_OTG_DOEPMSK_STUPM | + USB_OTG_DOEPMSK_XFRCM | + USB_OTG_DOEPMSK_EPDM | + USB_OTG_DOEPMSK_OTEPSPRM | + USB_OTG_DOEPMSK_NAKM; + + USBx_DEVICE->DIEPMSK |= USB_OTG_DIEPMSK_TOM | + USB_OTG_DIEPMSK_XFRCM | + USB_OTG_DIEPMSK_EPDM; + } + + /* Set Default Address to 0 */ + USBx_DEVICE->DCFG &= ~USB_OTG_DCFG_DAD; + + /* setup EP0 to receive SETUP packets */ + (void)USB_EP0_OutStart(hpcd->Instance, (uint8_t *)hpcd->Setup); + + __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_USBRST); + } + + /* Handle Enumeration done Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_ENUMDNE)) + { + (void)USB_ActivateSetup(hpcd->Instance); + hpcd->Init.speed = USB_GetDevSpeed(hpcd->Instance); + + /* Set USB Turnaround time */ + (void)USB_SetTurnaroundTime(hpcd->Instance, + HAL_RCC_GetHCLKFreq(), + (uint8_t)hpcd->Init.speed); + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->ResetCallback(hpcd); +#else + HAL_PCD_ResetCallback(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_ENUMDNE); + } + + /* Handle SOF Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_SOF)) + { +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SOFCallback(hpcd); +#else + HAL_PCD_SOFCallback(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_SOF); + } + + /* Handle Incomplete ISO IN Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_IISOIXFR)) + { + /* Keep application checking the corresponding Iso IN endpoint + causing the incomplete Interrupt */ + epnum = 0U; + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->ISOINIncompleteCallback(hpcd, (uint8_t)epnum); +#else + HAL_PCD_ISOINIncompleteCallback(hpcd, (uint8_t)epnum); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_IISOIXFR); + } + + /* Handle Incomplete ISO OUT Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT)) + { + /* Keep application checking the corresponding Iso OUT endpoint + causing the incomplete Interrupt */ + epnum = 0U; + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->ISOOUTIncompleteCallback(hpcd, (uint8_t)epnum); +#else + HAL_PCD_ISOOUTIncompleteCallback(hpcd, (uint8_t)epnum); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT); + } + + /* Handle Connection event Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_SRQINT)) + { +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->ConnectCallback(hpcd); +#else + HAL_PCD_ConnectCallback(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_SRQINT); + } + + /* Handle Disconnection event Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_OTGINT)) + { + temp = hpcd->Instance->GOTGINT; + + if ((temp & USB_OTG_GOTGINT_SEDET) == USB_OTG_GOTGINT_SEDET) + { +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DisconnectCallback(hpcd); +#else + HAL_PCD_DisconnectCallback(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + hpcd->Instance->GOTGINT |= temp; + } + } +} + + +/** + * @brief Handles PCD Wakeup interrupt request. + * @param hpcd PCD handle + * @retval HAL status + */ +void HAL_PCD_WKUP_IRQHandler(PCD_HandleTypeDef *hpcd) +{ + /* Clear EXTI pending Bit */ + __HAL_USB_OTG_FS_WAKEUP_EXTI_CLEAR_FLAG(); +} +#endif /* defined (USB_OTG_FS) */ + +#if defined (USB) +/** + * @brief This function handles PCD interrupt request. + * @param hpcd PCD handle + * @retval HAL status + */ +void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd) +{ + uint16_t store_ep[8]; + uint8_t i; + + if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_CTR)) + { + /* servicing of the endpoint correct transfer interrupt */ + /* clear of the CTR flag into the sub */ + (void)PCD_EP_ISR_Handler(hpcd); + } + + if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_RESET)) + { + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_RESET); + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->ResetCallback(hpcd); +#else + HAL_PCD_ResetCallback(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + (void)HAL_PCD_SetAddress(hpcd, 0U); + } + + if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_PMAOVR)) + { + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_PMAOVR); + } + + if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_ERR)) + { + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ERR); + } + + if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_WKUP)) + { + hpcd->Instance->CNTR &= (uint16_t) ~(USB_CNTR_LP_MODE); + hpcd->Instance->CNTR &= (uint16_t) ~(USB_CNTR_FSUSP); + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->ResumeCallback(hpcd); +#else + HAL_PCD_ResumeCallback(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_WKUP); + } + + if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_SUSP)) + { + /* WA: To Clear Wakeup flag if raised with suspend signal */ + + /* Store Endpoint register */ + for (i = 0U; i < 8U; i++) + { + store_ep[i] = PCD_GET_ENDPOINT(hpcd->Instance, i); + } + + /* FORCE RESET */ + hpcd->Instance->CNTR |= (uint16_t)(USB_CNTR_FRES); + + /* CLEAR RESET */ + hpcd->Instance->CNTR &= (uint16_t)(~USB_CNTR_FRES); + + /* wait for reset flag in ISTR */ + while ((hpcd->Instance->ISTR & USB_ISTR_RESET) == 0U) + { + } + + /* Clear Reset Flag */ + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_RESET); + + /* Restore Registre */ + for (i = 0U; i < 8U; i++) + { + PCD_SET_ENDPOINT(hpcd->Instance, i, store_ep[i]); + } + + /* Force low-power mode in the macrocell */ + hpcd->Instance->CNTR |= (uint16_t)USB_CNTR_FSUSP; + + /* clear of the ISTR bit must be done after setting of CNTR_FSUSP */ + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SUSP); + + hpcd->Instance->CNTR |= (uint16_t)USB_CNTR_LP_MODE; + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SuspendCallback(hpcd); +#else + HAL_PCD_SuspendCallback(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + + if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_SOF)) + { + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SOF); + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SOFCallback(hpcd); +#else + HAL_PCD_SOFCallback(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + + if (__HAL_PCD_GET_FLAG(hpcd, USB_ISTR_ESOF)) + { + /* clear ESOF flag in ISTR */ + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ESOF); + } +} + + +/** + * @brief Handles PCD Wakeup interrupt request. + * @param hpcd PCD handle + * @retval HAL status + */ +void HAL_PCD_WKUP_IRQHandler(PCD_HandleTypeDef *hpcd) +{ + /* Clear EXTI pending Bit */ + __HAL_USB_WAKEUP_EXTI_CLEAR_FLAG(); +} +#endif /* defined (USB) */ + +/** + * @brief Data OUT stage callback. + * @param hpcd PCD handle + * @param epnum endpoint number + * @retval None + */ +__weak void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + UNUSED(epnum); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_DataOutStageCallback could be implemented in the user file + */ +} + +/** + * @brief Data IN stage callback + * @param hpcd PCD handle + * @param epnum endpoint number + * @retval None + */ +__weak void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + UNUSED(epnum); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_DataInStageCallback could be implemented in the user file + */ +} +/** + * @brief Setup stage callback + * @param hpcd PCD handle + * @retval None + */ +__weak void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_SetupStageCallback could be implemented in the user file + */ +} + +/** + * @brief USB Start Of Frame callback. + * @param hpcd PCD handle + * @retval None + */ +__weak void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_SOFCallback could be implemented in the user file + */ +} + +/** + * @brief USB Reset callback. + * @param hpcd PCD handle + * @retval None + */ +__weak void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_ResetCallback could be implemented in the user file + */ +} + +/** + * @brief Suspend event callback. + * @param hpcd PCD handle + * @retval None + */ +__weak void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_SuspendCallback could be implemented in the user file + */ +} + +/** + * @brief Resume event callback. + * @param hpcd PCD handle + * @retval None + */ +__weak void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_ResumeCallback could be implemented in the user file + */ +} + +/** + * @brief Incomplete ISO OUT callback. + * @param hpcd PCD handle + * @param epnum endpoint number + * @retval None + */ +__weak void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + UNUSED(epnum); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_ISOOUTIncompleteCallback could be implemented in the user file + */ +} + +/** + * @brief Incomplete ISO IN callback. + * @param hpcd PCD handle + * @param epnum endpoint number + * @retval None + */ +__weak void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + UNUSED(epnum); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_ISOINIncompleteCallback could be implemented in the user file + */ +} + +/** + * @brief Connection event callback. + * @param hpcd PCD handle + * @retval None + */ +__weak void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_ConnectCallback could be implemented in the user file + */ +} + +/** + * @brief Disconnection event callback. + * @param hpcd PCD handle + * @retval None + */ +__weak void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_DisconnectCallback could be implemented in the user file + */ +} + +/** + * @} + */ + +/** @defgroup PCD_Exported_Functions_Group3 Peripheral Control functions + * @brief management functions + * +@verbatim + =============================================================================== + ##### Peripheral Control functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to control the PCD data + transfers. + +@endverbatim + * @{ + */ + +/** + * @brief Connect the USB device + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_DevConnect(PCD_HandleTypeDef *hpcd) +{ + __HAL_LOCK(hpcd); + +#if defined (USB) + HAL_PCDEx_SetConnectionState(hpcd, 1U); +#endif /* defined (USB) */ + + (void)USB_DevConnect(hpcd->Instance); + __HAL_UNLOCK(hpcd); + + return HAL_OK; +} + +/** + * @brief Disconnect the USB device. + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_DevDisconnect(PCD_HandleTypeDef *hpcd) +{ + __HAL_LOCK(hpcd); + +#if defined (USB) + HAL_PCDEx_SetConnectionState(hpcd, 0U); +#endif /* defined (USB) */ + + (void)USB_DevDisconnect(hpcd->Instance); + __HAL_UNLOCK(hpcd); + + return HAL_OK; +} + +/** + * @brief Set the USB Device address. + * @param hpcd PCD handle + * @param address new device address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address) +{ + __HAL_LOCK(hpcd); + hpcd->USB_Address = address; + (void)USB_SetDevAddress(hpcd->Instance, address); + __HAL_UNLOCK(hpcd); + + return HAL_OK; +} +/** + * @brief Open and configure an endpoint. + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @param ep_mps endpoint max packet size + * @param ep_type endpoint type + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, + uint16_t ep_mps, uint8_t ep_type) +{ + HAL_StatusTypeDef ret = HAL_OK; + PCD_EPTypeDef *ep; + + if ((ep_addr & 0x80U) == 0x80U) + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + ep->is_in = 1U; + } + else + { + ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; + ep->is_in = 0U; + } + + ep->num = ep_addr & EP_ADDR_MSK; + ep->maxpacket = ep_mps; + ep->type = ep_type; + + if (ep->is_in != 0U) + { + /* Assign a Tx FIFO */ + ep->tx_fifo_num = ep->num; + } + /* Set initial data PID. */ + if (ep_type == EP_TYPE_BULK) + { + ep->data_pid_start = 0U; + } + + __HAL_LOCK(hpcd); + (void)USB_ActivateEndpoint(hpcd->Instance, ep); + __HAL_UNLOCK(hpcd); + + return ret; +} + +/** + * @brief Deactivate an endpoint. + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) +{ + PCD_EPTypeDef *ep; + + if ((ep_addr & 0x80U) == 0x80U) + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + ep->is_in = 1U; + } + else + { + ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; + ep->is_in = 0U; + } + ep->num = ep_addr & EP_ADDR_MSK; + + __HAL_LOCK(hpcd); + (void)USB_DeactivateEndpoint(hpcd->Instance, ep); + __HAL_UNLOCK(hpcd); + return HAL_OK; +} + + +/** + * @brief Receive an amount of data. + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @param pBuf pointer to the reception buffer + * @param len amount of data to be received + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len) +{ + PCD_EPTypeDef *ep; + + ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; + + /*setup and start the Xfer */ + ep->xfer_buff = pBuf; + ep->xfer_len = len; + ep->xfer_count = 0U; + ep->is_in = 0U; + ep->num = ep_addr & EP_ADDR_MSK; + + if ((ep_addr & EP_ADDR_MSK) == 0U) + { + (void)USB_EP0StartXfer(hpcd->Instance, ep); + } + else + { + (void)USB_EPStartXfer(hpcd->Instance, ep); + } + + return HAL_OK; +} + +/** + * @brief Get Received Data Size + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval Data Size + */ +uint32_t HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) +{ + return hpcd->OUT_ep[ep_addr & EP_ADDR_MSK].xfer_count; +} +/** + * @brief Send an amount of data + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @param pBuf pointer to the transmission buffer + * @param len amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len) +{ + PCD_EPTypeDef *ep; + + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + + /*setup and start the Xfer */ + ep->xfer_buff = pBuf; + ep->xfer_len = len; +#if defined (USB) + ep->xfer_fill_db = 1U; + ep->xfer_len_db = len; +#endif /* defined (USB) */ + ep->xfer_count = 0U; + ep->is_in = 1U; + ep->num = ep_addr & EP_ADDR_MSK; + + if ((ep_addr & EP_ADDR_MSK) == 0U) + { + (void)USB_EP0StartXfer(hpcd->Instance, ep); + } + else + { + (void)USB_EPStartXfer(hpcd->Instance, ep); + } + + return HAL_OK; +} + +/** + * @brief Set a STALL condition over an endpoint + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) +{ + PCD_EPTypeDef *ep; + + if (((uint32_t)ep_addr & EP_ADDR_MSK) > hpcd->Init.dev_endpoints) + { + return HAL_ERROR; + } + + if ((0x80U & ep_addr) == 0x80U) + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + ep->is_in = 1U; + } + else + { + ep = &hpcd->OUT_ep[ep_addr]; + ep->is_in = 0U; + } + + ep->is_stall = 1U; + ep->num = ep_addr & EP_ADDR_MSK; + + __HAL_LOCK(hpcd); + + (void)USB_EPSetStall(hpcd->Instance, ep); + + if ((ep_addr & EP_ADDR_MSK) == 0U) + { + (void)USB_EP0_OutStart(hpcd->Instance, (uint8_t *)hpcd->Setup); + } + + __HAL_UNLOCK(hpcd); + + return HAL_OK; +} + +/** + * @brief Clear a STALL condition over in an endpoint + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) +{ + PCD_EPTypeDef *ep; + + if (((uint32_t)ep_addr & 0x0FU) > hpcd->Init.dev_endpoints) + { + return HAL_ERROR; + } + + if ((0x80U & ep_addr) == 0x80U) + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + ep->is_in = 1U; + } + else + { + ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; + ep->is_in = 0U; + } + + ep->is_stall = 0U; + ep->num = ep_addr & EP_ADDR_MSK; + + __HAL_LOCK(hpcd); + (void)USB_EPClearStall(hpcd->Instance, ep); + __HAL_UNLOCK(hpcd); + + return HAL_OK; +} + +/** + * @brief Flush an endpoint + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Flush(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) +{ + __HAL_LOCK(hpcd); + + if ((ep_addr & 0x80U) == 0x80U) + { + (void)USB_FlushTxFifo(hpcd->Instance, (uint32_t)ep_addr & EP_ADDR_MSK); + } + else + { + (void)USB_FlushRxFifo(hpcd->Instance); + } + + __HAL_UNLOCK(hpcd); + + return HAL_OK; +} + +/** + * @brief Activate remote wakeup signalling + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_ActivateRemoteWakeup(PCD_HandleTypeDef *hpcd) +{ + return (USB_ActivateRemoteWakeup(hpcd->Instance)); +} + +/** + * @brief De-activate remote wakeup signalling. + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_DeActivateRemoteWakeup(PCD_HandleTypeDef *hpcd) +{ + return (USB_DeActivateRemoteWakeup(hpcd->Instance)); +} + +/** + * @} + */ + +/** @defgroup PCD_Exported_Functions_Group4 Peripheral State functions + * @brief Peripheral State functions + * +@verbatim + =============================================================================== + ##### Peripheral State functions ##### + =============================================================================== + [..] + This subsection permits to get in run-time the status of the peripheral + and the data flow. + +@endverbatim + * @{ + */ + +/** + * @brief Return the PCD handle state. + * @param hpcd PCD handle + * @retval HAL state + */ +PCD_StateTypeDef HAL_PCD_GetState(PCD_HandleTypeDef *hpcd) +{ + return hpcd->State; +} + +/** + * @} + */ + +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ +/** @addtogroup PCD_Private_Functions + * @{ + */ +#if defined (USB_OTG_FS) +/** + * @brief Check FIFO for the next packet to be loaded. + * @param hpcd PCD handle + * @param epnum endpoint number + * @retval HAL status + */ +static HAL_StatusTypeDef PCD_WriteEmptyTxFifo(PCD_HandleTypeDef *hpcd, uint32_t epnum) +{ + USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; + uint32_t USBx_BASE = (uint32_t)USBx; + USB_OTG_EPTypeDef *ep; + uint32_t len; + uint32_t len32b; + uint32_t fifoemptymsk; + + ep = &hpcd->IN_ep[epnum]; + + if (ep->xfer_count > ep->xfer_len) + { + return HAL_ERROR; + } + + len = ep->xfer_len - ep->xfer_count; + + if (len > ep->maxpacket) + { + len = ep->maxpacket; + } + + len32b = (len + 3U) / 4U; + + while (((USBx_INEP(epnum)->DTXFSTS & USB_OTG_DTXFSTS_INEPTFSAV) >= len32b) && + (ep->xfer_count < ep->xfer_len) && (ep->xfer_len != 0U)) + { + /* Write the FIFO */ + len = ep->xfer_len - ep->xfer_count; + + if (len > ep->maxpacket) + { + len = ep->maxpacket; + } + len32b = (len + 3U) / 4U; + + (void)USB_WritePacket(USBx, ep->xfer_buff, (uint8_t)epnum, (uint16_t)len); + + ep->xfer_buff += len; + ep->xfer_count += len; + } + + if (ep->xfer_len <= ep->xfer_count) + { + fifoemptymsk = (uint32_t)(0x1UL << (epnum & EP_ADDR_MSK)); + USBx_DEVICE->DIEPEMPMSK &= ~fifoemptymsk; + } + + return HAL_OK; +} + + +/** + * @brief process EP OUT transfer complete interrupt. + * @param hpcd PCD handle + * @param epnum endpoint number + * @retval HAL status + */ +static HAL_StatusTypeDef PCD_EP_OutXfrComplete_int(PCD_HandleTypeDef *hpcd, uint32_t epnum) +{ + USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t gSNPSiD = *(__IO uint32_t *)(&USBx->CID + 0x1U); + uint32_t DoepintReg = USBx_OUTEP(epnum)->DOEPINT; + + if (gSNPSiD == USB_OTG_CORE_ID_310A) + { + /* StupPktRcvd = 1 this is a setup packet */ + if ((DoepintReg & USB_OTG_DOEPINT_STPKTRX) == USB_OTG_DOEPINT_STPKTRX) + { + CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STPKTRX); + } + else + { + if ((DoepintReg & USB_OTG_DOEPINT_OTEPSPR) == USB_OTG_DOEPINT_OTEPSPR) + { + CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_OTEPSPR); + } + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum); +#else + HAL_PCD_DataOutStageCallback(hpcd, (uint8_t)epnum); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + } + else + { +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum); +#else + HAL_PCD_DataOutStageCallback(hpcd, (uint8_t)epnum); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + + return HAL_OK; +} + + +/** + * @brief process EP OUT setup packet received interrupt. + * @param hpcd PCD handle + * @param epnum endpoint number + * @retval HAL status + */ +static HAL_StatusTypeDef PCD_EP_OutSetupPacket_int(PCD_HandleTypeDef *hpcd, uint32_t epnum) +{ + USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t gSNPSiD = *(__IO uint32_t *)(&USBx->CID + 0x1U); + uint32_t DoepintReg = USBx_OUTEP(epnum)->DOEPINT; + + if ((gSNPSiD > USB_OTG_CORE_ID_300A) && + ((DoepintReg & USB_OTG_DOEPINT_STPKTRX) == USB_OTG_DOEPINT_STPKTRX)) + { + CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STPKTRX); + } + + /* Inform the upper layer that a setup packet is available */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SetupStageCallback(hpcd); +#else + HAL_PCD_SetupStageCallback(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + return HAL_OK; +} +#endif /* defined (USB_OTG_FS) */ + +#if defined (USB) +/** + * @brief This function handles PCD Endpoint interrupt request. + * @param hpcd PCD handle + * @retval HAL status + */ +static HAL_StatusTypeDef PCD_EP_ISR_Handler(PCD_HandleTypeDef *hpcd) +{ + PCD_EPTypeDef *ep; + uint16_t count, wIstr, wEPVal, TxByteNbre; + uint8_t epindex; + + /* stay in loop while pending interrupts */ + while ((hpcd->Instance->ISTR & USB_ISTR_CTR) != 0U) + { + wIstr = hpcd->Instance->ISTR; + + /* extract highest priority endpoint number */ + epindex = (uint8_t)(wIstr & USB_ISTR_EP_ID); + + if (epindex == 0U) + { + /* Decode and service control endpoint interrupt */ + + /* DIR bit = origin of the interrupt */ + if ((wIstr & USB_ISTR_DIR) == 0U) + { + /* DIR = 0 */ + + /* DIR = 0 => IN int */ + /* DIR = 0 implies that (EP_CTR_TX = 1) always */ + PCD_CLEAR_TX_EP_CTR(hpcd->Instance, PCD_ENDP0); + ep = &hpcd->IN_ep[0]; + + ep->xfer_count = PCD_GET_EP_TX_CNT(hpcd->Instance, ep->num); + ep->xfer_buff += ep->xfer_count; + + /* TX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataInStageCallback(hpcd, 0U); +#else + HAL_PCD_DataInStageCallback(hpcd, 0U); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + if ((hpcd->USB_Address > 0U) && (ep->xfer_len == 0U)) + { + hpcd->Instance->DADDR = ((uint16_t)hpcd->USB_Address | USB_DADDR_EF); + hpcd->USB_Address = 0U; + } + } + else + { + /* DIR = 1 */ + + /* DIR = 1 & CTR_RX => SETUP or OUT int */ + /* DIR = 1 & (CTR_TX | CTR_RX) => 2 int pending */ + ep = &hpcd->OUT_ep[0]; + wEPVal = PCD_GET_ENDPOINT(hpcd->Instance, PCD_ENDP0); + + if ((wEPVal & USB_EP_SETUP) != 0U) + { + /* Get SETUP Packet */ + ep->xfer_count = PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); + + USB_ReadPMA(hpcd->Instance, (uint8_t *)hpcd->Setup, + ep->pmaadress, (uint16_t)ep->xfer_count); + + /* SETUP bit kept frozen while CTR_RX = 1 */ + PCD_CLEAR_RX_EP_CTR(hpcd->Instance, PCD_ENDP0); + + /* Process SETUP Packet*/ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SetupStageCallback(hpcd); +#else + HAL_PCD_SetupStageCallback(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + else if ((wEPVal & USB_EP_CTR_RX) != 0U) + { + PCD_CLEAR_RX_EP_CTR(hpcd->Instance, PCD_ENDP0); + + /* Get Control Data OUT Packet */ + ep->xfer_count = PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); + + if ((ep->xfer_count != 0U) && (ep->xfer_buff != 0U)) + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, + ep->pmaadress, (uint16_t)ep->xfer_count); + + ep->xfer_buff += ep->xfer_count; + + /* Process Control Data OUT Packet */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataOutStageCallback(hpcd, 0U); +#else + HAL_PCD_DataOutStageCallback(hpcd, 0U); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + + if ((PCD_GET_ENDPOINT(hpcd->Instance, PCD_ENDP0) & USB_EP_SETUP) == 0U) + { + PCD_SET_EP_RX_CNT(hpcd->Instance, PCD_ENDP0, ep->maxpacket); + PCD_SET_EP_RX_STATUS(hpcd->Instance, PCD_ENDP0, USB_EP_RX_VALID); + } + } + } + } + else + { + /* Decode and service non control endpoints interrupt */ + /* process related endpoint register */ + wEPVal = PCD_GET_ENDPOINT(hpcd->Instance, epindex); + + if ((wEPVal & USB_EP_CTR_RX) != 0U) + { + /* clear int flag */ + PCD_CLEAR_RX_EP_CTR(hpcd->Instance, epindex); + ep = &hpcd->OUT_ep[epindex]; + + /* OUT Single Buffering */ + if (ep->doublebuffer == 0U) + { + count = (uint16_t)PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); + + if (count != 0U) + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaadress, count); + } + } + else + { + /* manage double buffer bulk out */ + if (ep->type == EP_TYPE_BULK) + { + count = HAL_PCD_EP_DB_Receive(hpcd, ep, wEPVal); + } + else /* manage double buffer iso out */ + { + /* free EP OUT Buffer */ + PCD_FreeUserBuffer(hpcd->Instance, ep->num, 0U); + + if ((PCD_GET_ENDPOINT(hpcd->Instance, ep->num) & USB_EP_DTOG_RX) != 0U) + { + /* read from endpoint BUF0Addr buffer */ + count = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); + + if (count != 0U) + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, count); + } + } + else + { + /* read from endpoint BUF1Addr buffer */ + count = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); + + if (count != 0U) + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, count); + } + } + } + } + /* multi-packet on the NON control OUT endpoint */ + ep->xfer_count += count; + ep->xfer_buff += count; + + if ((ep->xfer_len == 0U) || (count < ep->maxpacket)) + { + /* RX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataOutStageCallback(hpcd, ep->num); +#else + HAL_PCD_DataOutStageCallback(hpcd, ep->num); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + else + { + (void) USB_EPStartXfer(hpcd->Instance, ep); + } + + } + + if ((wEPVal & USB_EP_CTR_TX) != 0U) + { + ep = &hpcd->IN_ep[epindex]; + + /* clear int flag */ + PCD_CLEAR_TX_EP_CTR(hpcd->Instance, epindex); + + /* Manage all non bulk/isoc transaction Bulk Single Buffer Transaction */ + if ((ep->type == EP_TYPE_INTR) || (ep->type == EP_TYPE_CTRL) || + ((ep->type == EP_TYPE_BULK) && ((wEPVal & USB_EP_KIND) == 0U))) + { + /* multi-packet on the NON control IN endpoint */ + TxByteNbre = (uint16_t)PCD_GET_EP_TX_CNT(hpcd->Instance, ep->num); + + if (ep->xfer_len > TxByteNbre) + { + ep->xfer_len -= TxByteNbre; + } + else + { + ep->xfer_len = 0U; + } + + /* Zero Length Packet? */ + if (ep->xfer_len == 0U) + { + /* TX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataInStageCallback(hpcd, ep->num); +#else + HAL_PCD_DataInStageCallback(hpcd, ep->num); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + else + { + /* Transfer is not yet Done */ + ep->xfer_buff += TxByteNbre; + ep->xfer_count += TxByteNbre; + (void)USB_EPStartXfer(hpcd->Instance, ep); + } + } + /* Double Buffer Iso/bulk IN (bulk transfer Len > Ep_Mps) */ + else + { + (void)HAL_PCD_EP_DB_Transmit(hpcd, ep, wEPVal); + } + } + } + } + + return HAL_OK; +} + + +/** + * @brief Manage double buffer bulk out transaction from ISR + * @param hpcd PCD handle + * @param ep current endpoint handle + * @param wEPVal Last snapshot of EPRx register value taken in ISR + * @retval HAL status + */ +static uint16_t HAL_PCD_EP_DB_Receive(PCD_HandleTypeDef *hpcd, + PCD_EPTypeDef *ep, uint16_t wEPVal) +{ + uint16_t count; + + /* Manage Buffer0 OUT */ + if ((wEPVal & USB_EP_DTOG_RX) != 0U) + { + /* Get count of received Data on buffer0 */ + count = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); + + if (ep->xfer_len >= count) + { + ep->xfer_len -= count; + } + else + { + ep->xfer_len = 0U; + } + + if (ep->xfer_len == 0U) + { + /* set NAK to OUT endpoint since double buffer is enabled */ + PCD_SET_EP_RX_STATUS(hpcd->Instance, ep->num, USB_EP_RX_NAK); + } + + /* Check if Buffer1 is in blocked sate which requires to toggle */ + if ((wEPVal & USB_EP_DTOG_TX) != 0U) + { + PCD_FreeUserBuffer(hpcd->Instance, ep->num, 0U); + } + + if (count != 0U) + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, count); + } + } + /* Manage Buffer 1 DTOG_RX=0 */ + else + { + /* Get count of received data */ + count = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); + + if (ep->xfer_len >= count) + { + ep->xfer_len -= count; + } + else + { + ep->xfer_len = 0U; + } + + if (ep->xfer_len == 0U) + { + /* set NAK on the current endpoint */ + PCD_SET_EP_RX_STATUS(hpcd->Instance, ep->num, USB_EP_RX_NAK); + } + + /*Need to FreeUser Buffer*/ + if ((wEPVal & USB_EP_DTOG_TX) == 0U) + { + PCD_FreeUserBuffer(hpcd->Instance, ep->num, 0U); + } + + if (count != 0U) + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, count); + } + } + + return count; +} + + +/** + * @brief Manage double buffer bulk IN transaction from ISR + * @param hpcd PCD handle + * @param ep current endpoint handle + * @param wEPVal Last snapshot of EPRx register value taken in ISR + * @retval HAL status + */ +static HAL_StatusTypeDef HAL_PCD_EP_DB_Transmit(PCD_HandleTypeDef *hpcd, + PCD_EPTypeDef *ep, uint16_t wEPVal) +{ + uint32_t len; + uint16_t TxByteNbre; + + /* Data Buffer0 ACK received */ + if ((wEPVal & USB_EP_DTOG_TX) != 0U) + { + /* multi-packet on the NON control IN endpoint */ + TxByteNbre = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); + + if (ep->xfer_len > TxByteNbre) + { + ep->xfer_len -= TxByteNbre; + } + else + { + ep->xfer_len = 0U; + } + /* Transfer is completed */ + if (ep->xfer_len == 0U) + { + PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); + PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); + + /* TX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataInStageCallback(hpcd, ep->num); +#else + HAL_PCD_DataInStageCallback(hpcd, ep->num); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + if ((wEPVal & USB_EP_DTOG_RX) != 0U) + { + PCD_FreeUserBuffer(hpcd->Instance, ep->num, 1U); + } + } + else /* Transfer is not yet Done */ + { + /* need to Free USB Buff */ + if ((wEPVal & USB_EP_DTOG_RX) != 0U) + { + PCD_FreeUserBuffer(hpcd->Instance, ep->num, 1U); + } + + /* Still there is data to Fill in the next Buffer */ + if (ep->xfer_fill_db == 1U) + { + ep->xfer_buff += TxByteNbre; + ep->xfer_count += TxByteNbre; + + /* Calculate the len of the new buffer to fill */ + if (ep->xfer_len_db >= ep->maxpacket) + { + len = ep->maxpacket; + ep->xfer_len_db -= len; + } + else if (ep->xfer_len_db == 0U) + { + len = TxByteNbre; + ep->xfer_fill_db = 0U; + } + else + { + ep->xfer_fill_db = 0U; + len = ep->xfer_len_db; + ep->xfer_len_db = 0U; + } + + /* Write remaining Data to Buffer */ + /* Set the Double buffer counter for pma buffer1 */ + PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, len); + + /* Copy user buffer to USB PMA */ + USB_WritePMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, (uint16_t)len); + } + } + } + else /* Data Buffer1 ACK received */ + { + /* multi-packet on the NON control IN endpoint */ + TxByteNbre = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); + + if (ep->xfer_len >= TxByteNbre) + { + ep->xfer_len -= TxByteNbre; + } + else + { + ep->xfer_len = 0U; + } + + /* Transfer is completed */ + if (ep->xfer_len == 0U) + { + PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); + PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); + + /* TX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataInStageCallback(hpcd, ep->num); +#else + HAL_PCD_DataInStageCallback(hpcd, ep->num); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + /* need to Free USB Buff */ + if ((wEPVal & USB_EP_DTOG_RX) == 0U) + { + PCD_FreeUserBuffer(hpcd->Instance, ep->num, 1U); + } + } + else /* Transfer is not yet Done */ + { + /* need to Free USB Buff */ + if ((wEPVal & USB_EP_DTOG_RX) == 0U) + { + PCD_FreeUserBuffer(hpcd->Instance, ep->num, 1U); + } + + /* Still there is data to Fill in the next Buffer */ + if (ep->xfer_fill_db == 1U) + { + ep->xfer_buff += TxByteNbre; + ep->xfer_count += TxByteNbre; + + /* Calculate the len of the new buffer to fill */ + if (ep->xfer_len_db >= ep->maxpacket) + { + len = ep->maxpacket; + ep->xfer_len_db -= len; + } + else if (ep->xfer_len_db == 0U) + { + len = TxByteNbre; + ep->xfer_fill_db = 0U; + } + else + { + len = ep->xfer_len_db; + ep->xfer_len_db = 0U; + ep->xfer_fill_db = 0; + } + + /* Set the Double buffer counter for pmabuffer1 */ + PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, len); + + /* Copy the user buffer to USB PMA */ + USB_WritePMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, (uint16_t)len); + } + } + } + + /*enable endpoint IN*/ + PCD_SET_EP_TX_STATUS(hpcd->Instance, ep->num, USB_EP_TX_VALID); + + return HAL_OK; +} + +#endif /* defined (USB) */ + +/** + * @} + */ +#endif /* defined (USB) || defined (USB_OTG_FS) */ +#endif /* HAL_PCD_MODULE_ENABLED */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c b/stm32f103/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c new file mode 100644 index 0000000..42e135c --- /dev/null +++ b/stm32f103/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c @@ -0,0 +1,244 @@ +/** + ****************************************************************************** + * @file stm32f1xx_hal_pcd_ex.c + * @author MCD Application Team + * @brief PCD Extended HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the USB Peripheral Controller: + * + Extended features functions + * + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_hal.h" + +/** @addtogroup STM32F1xx_HAL_Driver + * @{ + */ + +/** @defgroup PCDEx PCDEx + * @brief PCD Extended HAL module driver + * @{ + */ + +#ifdef HAL_PCD_MODULE_ENABLED + +#if defined (USB) || defined (USB_OTG_FS) +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup PCDEx_Exported_Functions PCDEx Exported Functions + * @{ + */ + +/** @defgroup PCDEx_Exported_Functions_Group1 Peripheral Control functions + * @brief PCDEx control functions + * +@verbatim + =============================================================================== + ##### Extended features functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Update FIFO configuration + +@endverbatim + * @{ + */ +#if defined (USB_OTG_FS) +/** + * @brief Set Tx FIFO + * @param hpcd PCD handle + * @param fifo The number of Tx fifo + * @param size Fifo size + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCDEx_SetTxFiFo(PCD_HandleTypeDef *hpcd, uint8_t fifo, uint16_t size) +{ + uint8_t i; + uint32_t Tx_Offset; + + /* TXn min size = 16 words. (n : Transmit FIFO index) + When a TxFIFO is not used, the Configuration should be as follows: + case 1 : n > m and Txn is not used (n,m : Transmit FIFO indexes) + --> Txm can use the space allocated for Txn. + case2 : n < m and Txn is not used (n,m : Transmit FIFO indexes) + --> Txn should be configured with the minimum space of 16 words + The FIFO is used optimally when used TxFIFOs are allocated in the top + of the FIFO.Ex: use EP1 and EP2 as IN instead of EP1 and EP3 as IN ones. + When DMA is used 3n * FIFO locations should be reserved for internal DMA registers */ + + Tx_Offset = hpcd->Instance->GRXFSIZ; + + if (fifo == 0U) + { + hpcd->Instance->DIEPTXF0_HNPTXFSIZ = ((uint32_t)size << 16) | Tx_Offset; + } + else + { + Tx_Offset += (hpcd->Instance->DIEPTXF0_HNPTXFSIZ) >> 16; + for (i = 0U; i < (fifo - 1U); i++) + { + Tx_Offset += (hpcd->Instance->DIEPTXF[i] >> 16); + } + + /* Multiply Tx_Size by 2 to get higher performance */ + hpcd->Instance->DIEPTXF[fifo - 1U] = ((uint32_t)size << 16) | Tx_Offset; + } + + return HAL_OK; +} + +/** + * @brief Set Rx FIFO + * @param hpcd PCD handle + * @param size Size of Rx fifo + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCDEx_SetRxFiFo(PCD_HandleTypeDef *hpcd, uint16_t size) +{ + hpcd->Instance->GRXFSIZ = size; + + return HAL_OK; +} +#endif /* defined (USB_OTG_FS) */ +#if defined (USB) +/** + * @brief Configure PMA for EP + * @param hpcd Device instance + * @param ep_addr endpoint address + * @param ep_kind endpoint Kind + * USB_SNG_BUF: Single Buffer used + * USB_DBL_BUF: Double Buffer used + * @param pmaadress: EP address in The PMA: In case of single buffer endpoint + * this parameter is 16-bit value providing the address + * in PMA allocated to endpoint. + * In case of double buffer endpoint this parameter + * is a 32-bit value providing the endpoint buffer 0 address + * in the LSB part of 32-bit value and endpoint buffer 1 address + * in the MSB part of 32-bit value. + * @retval HAL status + */ + +HAL_StatusTypeDef HAL_PCDEx_PMAConfig(PCD_HandleTypeDef *hpcd, uint16_t ep_addr, + uint16_t ep_kind, uint32_t pmaadress) +{ + PCD_EPTypeDef *ep; + + /* initialize ep structure*/ + if ((0x80U & ep_addr) == 0x80U) + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + } + else + { + ep = &hpcd->OUT_ep[ep_addr]; + } + + /* Here we check if the endpoint is single or double Buffer*/ + if (ep_kind == PCD_SNG_BUF) + { + /* Single Buffer */ + ep->doublebuffer = 0U; + /* Configure the PMA */ + ep->pmaadress = (uint16_t)pmaadress; + } + else /* USB_DBL_BUF */ + { + /* Double Buffer Endpoint */ + ep->doublebuffer = 1U; + /* Configure the PMA */ + ep->pmaaddr0 = (uint16_t)(pmaadress & 0xFFFFU); + ep->pmaaddr1 = (uint16_t)((pmaadress & 0xFFFF0000U) >> 16); + } + + return HAL_OK; +} + +/** + * @brief Software Device Connection, + * this function is not required by USB OTG FS peripheral, it is used + * only by USB Device FS peripheral. + * @param hpcd PCD handle + * @param state connection state (0 : disconnected / 1: connected) + * @retval None + */ +__weak void HAL_PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + UNUSED(state); + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_PCDEx_SetConnectionState could be implemented in the user file + */ +} +#endif /* defined (USB) */ + +/** + * @brief Send LPM message to user layer callback. + * @param hpcd PCD handle + * @param msg LPM message + * @retval HAL status + */ +__weak void HAL_PCDEx_LPM_Callback(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + UNUSED(msg); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCDEx_LPM_Callback could be implemented in the user file + */ +} + +/** + * @brief Send BatteryCharging message to user layer callback. + * @param hpcd PCD handle + * @param msg LPM message + * @retval HAL status + */ +__weak void HAL_PCDEx_BCD_Callback(PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + UNUSED(msg); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCDEx_BCD_Callback could be implemented in the user file + */ +} + +/** + * @} + */ + +/** + * @} + */ +#endif /* defined (USB) || defined (USB_OTG_FS) */ +#endif /* HAL_PCD_MODULE_ENABLED */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c b/stm32f103/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c new file mode 100644 index 0000000..becbef4 --- /dev/null +++ b/stm32f103/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c @@ -0,0 +1,2771 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_usb.c + * @author MCD Application Team + * @brief USB Low Layer HAL module driver. + * + * This file provides firmware functions to manage the following + * functionalities of the USB Peripheral Controller: + * + Initialization/de-initialization functions + * + I/O operation functions + * + Peripheral Control functions + * + Peripheral State functions + * + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + (#) Fill parameters of Init structure in USB_OTG_CfgTypeDef structure. + + (#) Call USB_CoreInit() API to initialize the USB Core peripheral. + + (#) The upper HAL HCD/PCD driver will call the right routines for its internal processes. + + @endverbatim + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_hal.h" + +/** @addtogroup STM32F1xx_LL_USB_DRIVER + * @{ + */ + +#if defined (HAL_PCD_MODULE_ENABLED) || defined (HAL_HCD_MODULE_ENABLED) +#if defined (USB) || defined (USB_OTG_FS) +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +#if defined (USB_OTG_FS) +static HAL_StatusTypeDef USB_CoreReset(USB_OTG_GlobalTypeDef *USBx); + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup USB_LL_Exported_Functions USB Low Layer Exported Functions + * @{ + */ + +/** @defgroup USB_LL_Exported_Functions_Group1 Initialization/de-initialization functions + * @brief Initialization and Configuration functions + * +@verbatim + =============================================================================== + ##### Initialization/de-initialization functions ##### + =============================================================================== + +@endverbatim + * @{ + */ + +/** + * @brief Initializes the USB Core + * @param USBx USB Instance + * @param cfg pointer to a USB_OTG_CfgTypeDef structure that contains + * the configuration information for the specified USBx peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg) +{ + HAL_StatusTypeDef ret; + + + /* Select FS Embedded PHY */ + USBx->GUSBCFG |= USB_OTG_GUSBCFG_PHYSEL; + + /* Reset after a PHY select */ + ret = USB_CoreReset(USBx); + + /* Activate the USB Transceiver */ + USBx->GCCFG |= USB_OTG_GCCFG_PWRDWN; + + return ret; +} + + +/** + * @brief Set the USB turnaround time + * @param USBx USB Instance + * @param hclk: AHB clock frequency + * @retval USB turnaround time In PHY Clocks number + */ +HAL_StatusTypeDef USB_SetTurnaroundTime(USB_OTG_GlobalTypeDef *USBx, + uint32_t hclk, uint8_t speed) +{ + uint32_t UsbTrd; + + /* The USBTRD is configured according to the tables below, depending on AHB frequency + used by application. In the low AHB frequency range it is used to stretch enough the USB response + time to IN tokens, the USB turnaround time, so to compensate for the longer AHB read access + latency to the Data FIFO */ + if (speed == USBD_FS_SPEED) + { + if ((hclk >= 14200000U) && (hclk < 15000000U)) + { + /* hclk Clock Range between 14.2-15 MHz */ + UsbTrd = 0xFU; + } + else if ((hclk >= 15000000U) && (hclk < 16000000U)) + { + /* hclk Clock Range between 15-16 MHz */ + UsbTrd = 0xEU; + } + else if ((hclk >= 16000000U) && (hclk < 17200000U)) + { + /* hclk Clock Range between 16-17.2 MHz */ + UsbTrd = 0xDU; + } + else if ((hclk >= 17200000U) && (hclk < 18500000U)) + { + /* hclk Clock Range between 17.2-18.5 MHz */ + UsbTrd = 0xCU; + } + else if ((hclk >= 18500000U) && (hclk < 20000000U)) + { + /* hclk Clock Range between 18.5-20 MHz */ + UsbTrd = 0xBU; + } + else if ((hclk >= 20000000U) && (hclk < 21800000U)) + { + /* hclk Clock Range between 20-21.8 MHz */ + UsbTrd = 0xAU; + } + else if ((hclk >= 21800000U) && (hclk < 24000000U)) + { + /* hclk Clock Range between 21.8-24 MHz */ + UsbTrd = 0x9U; + } + else if ((hclk >= 24000000U) && (hclk < 27700000U)) + { + /* hclk Clock Range between 24-27.7 MHz */ + UsbTrd = 0x8U; + } + else if ((hclk >= 27700000U) && (hclk < 32000000U)) + { + /* hclk Clock Range between 27.7-32 MHz */ + UsbTrd = 0x7U; + } + else /* if(hclk >= 32000000) */ + { + /* hclk Clock Range between 32-200 MHz */ + UsbTrd = 0x6U; + } + } + else + { + UsbTrd = USBD_DEFAULT_TRDT_VALUE; + } + + USBx->GUSBCFG &= ~USB_OTG_GUSBCFG_TRDT; + USBx->GUSBCFG |= (uint32_t)((UsbTrd << 10) & USB_OTG_GUSBCFG_TRDT); + + return HAL_OK; +} + +/** + * @brief USB_EnableGlobalInt + * Enables the controller's Global Int in the AHB Config reg + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_EnableGlobalInt(USB_OTG_GlobalTypeDef *USBx) +{ + USBx->GAHBCFG |= USB_OTG_GAHBCFG_GINT; + return HAL_OK; +} + +/** + * @brief USB_DisableGlobalInt + * Disable the controller's Global Int in the AHB Config reg + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DisableGlobalInt(USB_OTG_GlobalTypeDef *USBx) +{ + USBx->GAHBCFG &= ~USB_OTG_GAHBCFG_GINT; + return HAL_OK; +} + +/** + * @brief USB_SetCurrentMode Set functional mode + * @param USBx Selected device + * @param mode current core mode + * This parameter can be one of these values: + * @arg USB_DEVICE_MODE Peripheral mode + * @arg USB_HOST_MODE Host mode + * @retval HAL status + */ +HAL_StatusTypeDef USB_SetCurrentMode(USB_OTG_GlobalTypeDef *USBx, USB_ModeTypeDef mode) +{ + uint32_t ms = 0U; + + USBx->GUSBCFG &= ~(USB_OTG_GUSBCFG_FHMOD | USB_OTG_GUSBCFG_FDMOD); + + if (mode == USB_HOST_MODE) + { + USBx->GUSBCFG |= USB_OTG_GUSBCFG_FHMOD; + + do + { + HAL_Delay(1U); + ms++; + } while ((USB_GetMode(USBx) != (uint32_t)USB_HOST_MODE) && (ms < 50U)); + } + else if (mode == USB_DEVICE_MODE) + { + USBx->GUSBCFG |= USB_OTG_GUSBCFG_FDMOD; + + do + { + HAL_Delay(1U); + ms++; + } while ((USB_GetMode(USBx) != (uint32_t)USB_DEVICE_MODE) && (ms < 50U)); + } + else + { + return HAL_ERROR; + } + + if (ms == 50U) + { + return HAL_ERROR; + } + + return HAL_OK; +} + +/** + * @brief USB_DevInit Initializes the USB_OTG controller registers + * for device mode + * @param USBx Selected device + * @param cfg pointer to a USB_OTG_CfgTypeDef structure that contains + * the configuration information for the specified USBx peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg) +{ + HAL_StatusTypeDef ret = HAL_OK; + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t i; + + for (i = 0U; i < 15U; i++) + { + USBx->DIEPTXF[i] = 0U; + } + + /* Enable HW VBUS sensing */ + USBx->GCCFG |= USB_OTG_GCCFG_VBUSBSEN; + + /* Restart the Phy Clock */ + USBx_PCGCCTL = 0U; + + /* Device mode configuration */ + USBx_DEVICE->DCFG |= DCFG_FRAME_INTERVAL_80; + + /* Set Core speed to Full speed mode */ + (void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_FULL); + + /* Flush the FIFOs */ + if (USB_FlushTxFifo(USBx, 0x10U) != HAL_OK) /* all Tx FIFOs */ + { + ret = HAL_ERROR; + } + + if (USB_FlushRxFifo(USBx) != HAL_OK) + { + ret = HAL_ERROR; + } + + /* Clear all pending Device Interrupts */ + USBx_DEVICE->DIEPMSK = 0U; + USBx_DEVICE->DOEPMSK = 0U; + USBx_DEVICE->DAINTMSK = 0U; + + for (i = 0U; i < cfg.dev_endpoints; i++) + { + if ((USBx_INEP(i)->DIEPCTL & USB_OTG_DIEPCTL_EPENA) == USB_OTG_DIEPCTL_EPENA) + { + if (i == 0U) + { + USBx_INEP(i)->DIEPCTL = USB_OTG_DIEPCTL_SNAK; + } + else + { + USBx_INEP(i)->DIEPCTL = USB_OTG_DIEPCTL_EPDIS | USB_OTG_DIEPCTL_SNAK; + } + } + else + { + USBx_INEP(i)->DIEPCTL = 0U; + } + + USBx_INEP(i)->DIEPTSIZ = 0U; + USBx_INEP(i)->DIEPINT = 0xFB7FU; + } + + for (i = 0U; i < cfg.dev_endpoints; i++) + { + if ((USBx_OUTEP(i)->DOEPCTL & USB_OTG_DOEPCTL_EPENA) == USB_OTG_DOEPCTL_EPENA) + { + if (i == 0U) + { + USBx_OUTEP(i)->DOEPCTL = USB_OTG_DOEPCTL_SNAK; + } + else + { + USBx_OUTEP(i)->DOEPCTL = USB_OTG_DOEPCTL_EPDIS | USB_OTG_DOEPCTL_SNAK; + } + } + else + { + USBx_OUTEP(i)->DOEPCTL = 0U; + } + + USBx_OUTEP(i)->DOEPTSIZ = 0U; + USBx_OUTEP(i)->DOEPINT = 0xFB7FU; + } + + USBx_DEVICE->DIEPMSK &= ~(USB_OTG_DIEPMSK_TXFURM); + + /* Disable all interrupts. */ + USBx->GINTMSK = 0U; + + /* Clear any pending interrupts */ + USBx->GINTSTS = 0xBFFFFFFFU; + + /* Enable the common interrupts */ + USBx->GINTMSK |= USB_OTG_GINTMSK_RXFLVLM; + + /* Enable interrupts matching to the Device mode ONLY */ + USBx->GINTMSK |= USB_OTG_GINTMSK_USBSUSPM | USB_OTG_GINTMSK_USBRST | + USB_OTG_GINTMSK_ENUMDNEM | USB_OTG_GINTMSK_IEPINT | + USB_OTG_GINTMSK_OEPINT | USB_OTG_GINTMSK_IISOIXFRM | + USB_OTG_GINTMSK_PXFRM_IISOOXFRM | USB_OTG_GINTMSK_WUIM; + + if (cfg.Sof_enable != 0U) + { + USBx->GINTMSK |= USB_OTG_GINTMSK_SOFM; + } + + if (cfg.vbus_sensing_enable == 1U) + { + USBx->GINTMSK |= (USB_OTG_GINTMSK_SRQIM | USB_OTG_GINTMSK_OTGINT); + } + + return ret; +} + +/** + * @brief USB_OTG_FlushTxFifo : Flush a Tx FIFO + * @param USBx Selected device + * @param num FIFO number + * This parameter can be a value from 1 to 15 + 15 means Flush all Tx FIFOs + * @retval HAL status + */ +HAL_StatusTypeDef USB_FlushTxFifo(USB_OTG_GlobalTypeDef *USBx, uint32_t num) +{ + uint32_t count = 0U; + + USBx->GRSTCTL = (USB_OTG_GRSTCTL_TXFFLSH | (num << 6)); + + do + { + if (++count > 200000U) + { + return HAL_TIMEOUT; + } + } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_TXFFLSH) == USB_OTG_GRSTCTL_TXFFLSH); + + return HAL_OK; +} + +/** + * @brief USB_FlushRxFifo : Flush Rx FIFO + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_FlushRxFifo(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t count = 0; + + USBx->GRSTCTL = USB_OTG_GRSTCTL_RXFFLSH; + + do + { + if (++count > 200000U) + { + return HAL_TIMEOUT; + } + } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_RXFFLSH) == USB_OTG_GRSTCTL_RXFFLSH); + + return HAL_OK; +} + +/** + * @brief USB_SetDevSpeed Initializes the DevSpd field of DCFG register + * depending the PHY type and the enumeration speed of the device. + * @param USBx Selected device + * @param speed device speed + * This parameter can be one of these values: + * @arg USB_OTG_SPEED_FULL: Full speed mode + * @retval Hal status + */ +HAL_StatusTypeDef USB_SetDevSpeed(USB_OTG_GlobalTypeDef *USBx, uint8_t speed) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + USBx_DEVICE->DCFG |= speed; + return HAL_OK; +} + +/** + * @brief USB_GetDevSpeed Return the Dev Speed + * @param USBx Selected device + * @retval speed device speed + * This parameter can be one of these values: + * @arg USBD_FS_SPEED: Full speed mode + */ +uint8_t USB_GetDevSpeed(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint8_t speed; + uint32_t DevEnumSpeed = USBx_DEVICE->DSTS & USB_OTG_DSTS_ENUMSPD; + + if ((DevEnumSpeed == DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ) || + (DevEnumSpeed == DSTS_ENUMSPD_FS_PHY_48MHZ)) + { + speed = USBD_FS_SPEED; + } + else + { + speed = 0xFU; + } + + return speed; +} + +/** + * @brief Activate and configure an endpoint + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_ActivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t epnum = (uint32_t)ep->num; + + if (ep->is_in == 1U) + { + USBx_DEVICE->DAINTMSK |= USB_OTG_DAINTMSK_IEPM & (uint32_t)(1UL << (ep->num & EP_ADDR_MSK)); + + if ((USBx_INEP(epnum)->DIEPCTL & USB_OTG_DIEPCTL_USBAEP) == 0U) + { + USBx_INEP(epnum)->DIEPCTL |= (ep->maxpacket & USB_OTG_DIEPCTL_MPSIZ) | + ((uint32_t)ep->type << 18) | (epnum << 22) | + USB_OTG_DIEPCTL_SD0PID_SEVNFRM | + USB_OTG_DIEPCTL_USBAEP; + } + } + else + { + USBx_DEVICE->DAINTMSK |= USB_OTG_DAINTMSK_OEPM & ((uint32_t)(1UL << (ep->num & EP_ADDR_MSK)) << 16); + + if (((USBx_OUTEP(epnum)->DOEPCTL) & USB_OTG_DOEPCTL_USBAEP) == 0U) + { + USBx_OUTEP(epnum)->DOEPCTL |= (ep->maxpacket & USB_OTG_DOEPCTL_MPSIZ) | + ((uint32_t)ep->type << 18) | + USB_OTG_DIEPCTL_SD0PID_SEVNFRM | + USB_OTG_DOEPCTL_USBAEP; + } + } + return HAL_OK; +} + +/** + * @brief Activate and configure a dedicated endpoint + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_ActivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t epnum = (uint32_t)ep->num; + + /* Read DEPCTLn register */ + if (ep->is_in == 1U) + { + if (((USBx_INEP(epnum)->DIEPCTL) & USB_OTG_DIEPCTL_USBAEP) == 0U) + { + USBx_INEP(epnum)->DIEPCTL |= (ep->maxpacket & USB_OTG_DIEPCTL_MPSIZ) | + ((uint32_t)ep->type << 18) | (epnum << 22) | + USB_OTG_DIEPCTL_SD0PID_SEVNFRM | + USB_OTG_DIEPCTL_USBAEP; + } + + USBx_DEVICE->DEACHMSK |= USB_OTG_DAINTMSK_IEPM & (uint32_t)(1UL << (ep->num & EP_ADDR_MSK)); + } + else + { + if (((USBx_OUTEP(epnum)->DOEPCTL) & USB_OTG_DOEPCTL_USBAEP) == 0U) + { + USBx_OUTEP(epnum)->DOEPCTL |= (ep->maxpacket & USB_OTG_DOEPCTL_MPSIZ) | + ((uint32_t)ep->type << 18) | (epnum << 22) | + USB_OTG_DOEPCTL_USBAEP; + } + + USBx_DEVICE->DEACHMSK |= USB_OTG_DAINTMSK_OEPM & ((uint32_t)(1UL << (ep->num & EP_ADDR_MSK)) << 16); + } + + return HAL_OK; +} + +/** + * @brief De-activate and de-initialize an endpoint + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_DeactivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t epnum = (uint32_t)ep->num; + + /* Read DEPCTLn register */ + if (ep->is_in == 1U) + { + if ((USBx_INEP(epnum)->DIEPCTL & USB_OTG_DIEPCTL_EPENA) == USB_OTG_DIEPCTL_EPENA) + { + USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_SNAK; + USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_EPDIS; + } + + USBx_DEVICE->DEACHMSK &= ~(USB_OTG_DAINTMSK_IEPM & (uint32_t)(1UL << (ep->num & EP_ADDR_MSK))); + USBx_DEVICE->DAINTMSK &= ~(USB_OTG_DAINTMSK_IEPM & (uint32_t)(1UL << (ep->num & EP_ADDR_MSK))); + USBx_INEP(epnum)->DIEPCTL &= ~(USB_OTG_DIEPCTL_USBAEP | + USB_OTG_DIEPCTL_MPSIZ | + USB_OTG_DIEPCTL_TXFNUM | + USB_OTG_DIEPCTL_SD0PID_SEVNFRM | + USB_OTG_DIEPCTL_EPTYP); + } + else + { + if ((USBx_OUTEP(epnum)->DOEPCTL & USB_OTG_DOEPCTL_EPENA) == USB_OTG_DOEPCTL_EPENA) + { + USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_SNAK; + USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_EPDIS; + } + + USBx_DEVICE->DEACHMSK &= ~(USB_OTG_DAINTMSK_OEPM & ((uint32_t)(1UL << (ep->num & EP_ADDR_MSK)) << 16)); + USBx_DEVICE->DAINTMSK &= ~(USB_OTG_DAINTMSK_OEPM & ((uint32_t)(1UL << (ep->num & EP_ADDR_MSK)) << 16)); + USBx_OUTEP(epnum)->DOEPCTL &= ~(USB_OTG_DOEPCTL_USBAEP | + USB_OTG_DOEPCTL_MPSIZ | + USB_OTG_DOEPCTL_SD0PID_SEVNFRM | + USB_OTG_DOEPCTL_EPTYP); + } + + return HAL_OK; +} + +/** + * @brief De-activate and de-initialize a dedicated endpoint + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_DeactivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t epnum = (uint32_t)ep->num; + + /* Read DEPCTLn register */ + if (ep->is_in == 1U) + { + if ((USBx_INEP(epnum)->DIEPCTL & USB_OTG_DIEPCTL_EPENA) == USB_OTG_DIEPCTL_EPENA) + { + USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_SNAK; + USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_EPDIS; + } + + USBx_INEP(epnum)->DIEPCTL &= ~ USB_OTG_DIEPCTL_USBAEP; + USBx_DEVICE->DAINTMSK &= ~(USB_OTG_DAINTMSK_IEPM & (uint32_t)(1UL << (ep->num & EP_ADDR_MSK))); + } + else + { + if ((USBx_OUTEP(epnum)->DOEPCTL & USB_OTG_DOEPCTL_EPENA) == USB_OTG_DOEPCTL_EPENA) + { + USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_SNAK; + USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_EPDIS; + } + + USBx_OUTEP(epnum)->DOEPCTL &= ~USB_OTG_DOEPCTL_USBAEP; + USBx_DEVICE->DAINTMSK &= ~(USB_OTG_DAINTMSK_OEPM & ((uint32_t)(1UL << (ep->num & EP_ADDR_MSK)) << 16)); + } + + return HAL_OK; +} + +/** + * @brief USB_EPStartXfer : setup and starts a transfer over an EP + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPStartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t epnum = (uint32_t)ep->num; + uint16_t pktcnt; + + /* IN endpoint */ + if (ep->is_in == 1U) + { + /* Zero Length Packet? */ + if (ep->xfer_len == 0U) + { + USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_PKTCNT); + USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_PKTCNT & (1U << 19)); + USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_XFRSIZ); + } + else + { + /* Program the transfer size and packet count + * as follows: xfersize = N * maxpacket + + * short_packet pktcnt = N + (short_packet + * exist ? 1 : 0) + */ + USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_XFRSIZ); + USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_PKTCNT); + USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_PKTCNT & + (((ep->xfer_len + ep->maxpacket - 1U) / ep->maxpacket) << 19)); + + USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_XFRSIZ & ep->xfer_len); + + if (ep->type == EP_TYPE_ISOC) + { + USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_MULCNT); + USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_MULCNT & (1U << 29)); + } + } + /* EP enable, IN data in FIFO */ + USBx_INEP(epnum)->DIEPCTL |= (USB_OTG_DIEPCTL_CNAK | USB_OTG_DIEPCTL_EPENA); + + if (ep->type != EP_TYPE_ISOC) + { + /* Enable the Tx FIFO Empty Interrupt for this EP */ + if (ep->xfer_len > 0U) + { + USBx_DEVICE->DIEPEMPMSK |= 1UL << (ep->num & EP_ADDR_MSK); + } + } + else + { + if ((USBx_DEVICE->DSTS & (1U << 8)) == 0U) + { + USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_SODDFRM; + } + else + { + USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_SD0PID_SEVNFRM; + } + + (void)USB_WritePacket(USBx, ep->xfer_buff, ep->num, (uint16_t)ep->xfer_len); + } + } + else /* OUT endpoint */ + { + /* Program the transfer size and packet count as follows: + * pktcnt = N + * xfersize = N * maxpacket + */ + USBx_OUTEP(epnum)->DOEPTSIZ &= ~(USB_OTG_DOEPTSIZ_XFRSIZ); + USBx_OUTEP(epnum)->DOEPTSIZ &= ~(USB_OTG_DOEPTSIZ_PKTCNT); + + if (ep->xfer_len == 0U) + { + USBx_OUTEP(epnum)->DOEPTSIZ |= (USB_OTG_DOEPTSIZ_XFRSIZ & ep->maxpacket); + USBx_OUTEP(epnum)->DOEPTSIZ |= (USB_OTG_DOEPTSIZ_PKTCNT & (1U << 19)); + } + else + { + pktcnt = (uint16_t)((ep->xfer_len + ep->maxpacket - 1U) / ep->maxpacket); + USBx_OUTEP(epnum)->DOEPTSIZ |= USB_OTG_DOEPTSIZ_PKTCNT & ((uint32_t)pktcnt << 19); + USBx_OUTEP(epnum)->DOEPTSIZ |= USB_OTG_DOEPTSIZ_XFRSIZ & (ep->maxpacket * pktcnt); + } + + if (ep->type == EP_TYPE_ISOC) + { + if ((USBx_DEVICE->DSTS & (1U << 8)) == 0U) + { + USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_SODDFRM; + } + else + { + USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_SD0PID_SEVNFRM; + } + } + /* EP enable */ + USBx_OUTEP(epnum)->DOEPCTL |= (USB_OTG_DOEPCTL_CNAK | USB_OTG_DOEPCTL_EPENA); + } + + return HAL_OK; +} + +/** + * @brief USB_EP0StartXfer : setup and starts a transfer over the EP 0 + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EP0StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t epnum = (uint32_t)ep->num; + + /* IN endpoint */ + if (ep->is_in == 1U) + { + /* Zero Length Packet? */ + if (ep->xfer_len == 0U) + { + USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_PKTCNT); + USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_PKTCNT & (1U << 19)); + USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_XFRSIZ); + } + else + { + /* Program the transfer size and packet count + * as follows: xfersize = N * maxpacket + + * short_packet pktcnt = N + (short_packet + * exist ? 1 : 0) + */ + USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_XFRSIZ); + USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_PKTCNT); + + if (ep->xfer_len > ep->maxpacket) + { + ep->xfer_len = ep->maxpacket; + } + USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_PKTCNT & (1U << 19)); + USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_XFRSIZ & ep->xfer_len); + } + + /* EP enable, IN data in FIFO */ + USBx_INEP(epnum)->DIEPCTL |= (USB_OTG_DIEPCTL_CNAK | USB_OTG_DIEPCTL_EPENA); + + /* Enable the Tx FIFO Empty Interrupt for this EP */ + if (ep->xfer_len > 0U) + { + USBx_DEVICE->DIEPEMPMSK |= 1UL << (ep->num & EP_ADDR_MSK); + } + } + else /* OUT endpoint */ + { + /* Program the transfer size and packet count as follows: + * pktcnt = N + * xfersize = N * maxpacket + */ + USBx_OUTEP(epnum)->DOEPTSIZ &= ~(USB_OTG_DOEPTSIZ_XFRSIZ); + USBx_OUTEP(epnum)->DOEPTSIZ &= ~(USB_OTG_DOEPTSIZ_PKTCNT); + + if (ep->xfer_len > 0U) + { + ep->xfer_len = ep->maxpacket; + } + + USBx_OUTEP(epnum)->DOEPTSIZ |= (USB_OTG_DOEPTSIZ_PKTCNT & (1U << 19)); + USBx_OUTEP(epnum)->DOEPTSIZ |= (USB_OTG_DOEPTSIZ_XFRSIZ & (ep->maxpacket)); + + /* EP enable */ + USBx_OUTEP(epnum)->DOEPCTL |= (USB_OTG_DOEPCTL_CNAK | USB_OTG_DOEPCTL_EPENA); + } + + return HAL_OK; +} + +/** + * @brief USB_WritePacket : Writes a packet into the Tx FIFO associated + * with the EP/channel + * @param USBx Selected device + * @param src pointer to source buffer + * @param ch_ep_num endpoint or host channel number + * @param len Number of bytes to write + * @retval HAL status + */ +HAL_StatusTypeDef USB_WritePacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *src, + uint8_t ch_ep_num, uint16_t len) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint8_t *pSrc = src; + uint32_t count32b; + uint32_t i; + + count32b = ((uint32_t)len + 3U) / 4U; + for (i = 0U; i < count32b; i++) + { + USBx_DFIFO((uint32_t)ch_ep_num) = __UNALIGNED_UINT32_READ(pSrc); + pSrc++; + pSrc++; + pSrc++; + pSrc++; + } + + return HAL_OK; +} + +/** + * @brief USB_ReadPacket : read a packet from the RX FIFO + * @param USBx Selected device + * @param dest source pointer + * @param len Number of bytes to read + * @retval pointer to destination buffer + */ +void *USB_ReadPacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint8_t *pDest = dest; + uint32_t pData; + uint32_t i; + uint32_t count32b = (uint32_t)len >> 2U; + uint16_t remaining_bytes = len % 4U; + + for (i = 0U; i < count32b; i++) + { + __UNALIGNED_UINT32_WRITE(pDest, USBx_DFIFO(0U)); + pDest++; + pDest++; + pDest++; + pDest++; + } + + /* When Number of data is not word aligned, read the remaining byte */ + if (remaining_bytes != 0U) + { + i = 0U; + __UNALIGNED_UINT32_WRITE(&pData, USBx_DFIFO(0U)); + + do + { + *(uint8_t *)pDest = (uint8_t)(pData >> (8U * (uint8_t)(i))); + i++; + pDest++; + remaining_bytes--; + } while (remaining_bytes != 0U); + } + + return ((void *)pDest); +} + +/** + * @brief USB_EPSetStall : set a stall condition over an EP + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPSetStall(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t epnum = (uint32_t)ep->num; + + if (ep->is_in == 1U) + { + if (((USBx_INEP(epnum)->DIEPCTL & USB_OTG_DIEPCTL_EPENA) == 0U) && (epnum != 0U)) + { + USBx_INEP(epnum)->DIEPCTL &= ~(USB_OTG_DIEPCTL_EPDIS); + } + USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_STALL; + } + else + { + if (((USBx_OUTEP(epnum)->DOEPCTL & USB_OTG_DOEPCTL_EPENA) == 0U) && (epnum != 0U)) + { + USBx_OUTEP(epnum)->DOEPCTL &= ~(USB_OTG_DOEPCTL_EPDIS); + } + USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_STALL; + } + + return HAL_OK; +} + +/** + * @brief USB_EPClearStall : Clear a stall condition over an EP + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPClearStall(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t epnum = (uint32_t)ep->num; + + if (ep->is_in == 1U) + { + USBx_INEP(epnum)->DIEPCTL &= ~USB_OTG_DIEPCTL_STALL; + if ((ep->type == EP_TYPE_INTR) || (ep->type == EP_TYPE_BULK)) + { + USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_SD0PID_SEVNFRM; /* DATA0 */ + } + } + else + { + USBx_OUTEP(epnum)->DOEPCTL &= ~USB_OTG_DOEPCTL_STALL; + if ((ep->type == EP_TYPE_INTR) || (ep->type == EP_TYPE_BULK)) + { + USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_SD0PID_SEVNFRM; /* DATA0 */ + } + } + return HAL_OK; +} + +/** + * @brief USB_StopDevice : Stop the usb device mode + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_StopDevice(USB_OTG_GlobalTypeDef *USBx) +{ + HAL_StatusTypeDef ret; + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t i; + + /* Clear Pending interrupt */ + for (i = 0U; i < 15U; i++) + { + USBx_INEP(i)->DIEPINT = 0xFB7FU; + USBx_OUTEP(i)->DOEPINT = 0xFB7FU; + } + + /* Clear interrupt masks */ + USBx_DEVICE->DIEPMSK = 0U; + USBx_DEVICE->DOEPMSK = 0U; + USBx_DEVICE->DAINTMSK = 0U; + + /* Flush the FIFO */ + ret = USB_FlushRxFifo(USBx); + if (ret != HAL_OK) + { + return ret; + } + + ret = USB_FlushTxFifo(USBx, 0x10U); + if (ret != HAL_OK) + { + return ret; + } + + return ret; +} + +/** + * @brief USB_SetDevAddress : Stop the usb device mode + * @param USBx Selected device + * @param address new device address to be assigned + * This parameter can be a value from 0 to 255 + * @retval HAL status + */ +HAL_StatusTypeDef USB_SetDevAddress(USB_OTG_GlobalTypeDef *USBx, uint8_t address) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + USBx_DEVICE->DCFG &= ~(USB_OTG_DCFG_DAD); + USBx_DEVICE->DCFG |= ((uint32_t)address << 4) & USB_OTG_DCFG_DAD; + + return HAL_OK; +} + +/** + * @brief USB_DevConnect : Connect the USB device by enabling Rpu + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevConnect(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + /* In case phy is stopped, ensure to ungate and restore the phy CLK */ + USBx_PCGCCTL &= ~(USB_OTG_PCGCCTL_STOPCLK | USB_OTG_PCGCCTL_GATECLK); + + USBx_DEVICE->DCTL &= ~USB_OTG_DCTL_SDIS; + + return HAL_OK; +} + +/** + * @brief USB_DevDisconnect : Disconnect the USB device by disabling Rpu + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevDisconnect(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + /* In case phy is stopped, ensure to ungate and restore the phy CLK */ + USBx_PCGCCTL &= ~(USB_OTG_PCGCCTL_STOPCLK | USB_OTG_PCGCCTL_GATECLK); + + USBx_DEVICE->DCTL |= USB_OTG_DCTL_SDIS; + + return HAL_OK; +} + +/** + * @brief USB_ReadInterrupts: return the global USB interrupt status + * @param USBx Selected device + * @retval HAL status + */ +uint32_t USB_ReadInterrupts(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t tmpreg; + + tmpreg = USBx->GINTSTS; + tmpreg &= USBx->GINTMSK; + + return tmpreg; +} + +/** + * @brief USB_ReadDevAllOutEpInterrupt: return the USB device OUT endpoints interrupt status + * @param USBx Selected device + * @retval HAL status + */ +uint32_t USB_ReadDevAllOutEpInterrupt(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t tmpreg; + + tmpreg = USBx_DEVICE->DAINT; + tmpreg &= USBx_DEVICE->DAINTMSK; + + return ((tmpreg & 0xffff0000U) >> 16); +} + +/** + * @brief USB_ReadDevAllInEpInterrupt: return the USB device IN endpoints interrupt status + * @param USBx Selected device + * @retval HAL status + */ +uint32_t USB_ReadDevAllInEpInterrupt(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t tmpreg; + + tmpreg = USBx_DEVICE->DAINT; + tmpreg &= USBx_DEVICE->DAINTMSK; + + return ((tmpreg & 0xFFFFU)); +} + +/** + * @brief Returns Device OUT EP Interrupt register + * @param USBx Selected device + * @param epnum endpoint number + * This parameter can be a value from 0 to 15 + * @retval Device OUT EP Interrupt register + */ +uint32_t USB_ReadDevOutEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t tmpreg; + + tmpreg = USBx_OUTEP((uint32_t)epnum)->DOEPINT; + tmpreg &= USBx_DEVICE->DOEPMSK; + + return tmpreg; +} + +/** + * @brief Returns Device IN EP Interrupt register + * @param USBx Selected device + * @param epnum endpoint number + * This parameter can be a value from 0 to 15 + * @retval Device IN EP Interrupt register + */ +uint32_t USB_ReadDevInEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t tmpreg; + uint32_t msk; + uint32_t emp; + + msk = USBx_DEVICE->DIEPMSK; + emp = USBx_DEVICE->DIEPEMPMSK; + msk |= ((emp >> (epnum & EP_ADDR_MSK)) & 0x1U) << 7; + tmpreg = USBx_INEP((uint32_t)epnum)->DIEPINT & msk; + + return tmpreg; +} + +/** + * @brief USB_ClearInterrupts: clear a USB interrupt + * @param USBx Selected device + * @param interrupt flag + * @retval None + */ +void USB_ClearInterrupts(USB_OTG_GlobalTypeDef *USBx, uint32_t interrupt) +{ + USBx->GINTSTS |= interrupt; +} + +/** + * @brief Returns USB core mode + * @param USBx Selected device + * @retval return core mode : Host or Device + * This parameter can be one of these values: + * 0 : Host + * 1 : Device + */ +uint32_t USB_GetMode(USB_OTG_GlobalTypeDef *USBx) +{ + return ((USBx->GINTSTS) & 0x1U); +} + +/** + * @brief Activate EP0 for Setup transactions + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_ActivateSetup(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + /* Set the MPS of the IN EP0 to 64 bytes */ + USBx_INEP(0U)->DIEPCTL &= ~USB_OTG_DIEPCTL_MPSIZ; + + USBx_DEVICE->DCTL |= USB_OTG_DCTL_CGINAK; + + return HAL_OK; +} + +/** + * @brief Prepare the EP0 to start the first control setup + * @param USBx Selected device + * @param psetup pointer to setup packet + * @retval HAL status + */ +HAL_StatusTypeDef USB_EP0_OutStart(USB_OTG_GlobalTypeDef *USBx, uint8_t *psetup) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t gSNPSiD = *(__IO uint32_t *)(&USBx->CID + 0x1U); + UNUSED(psetup); + + if (gSNPSiD > USB_OTG_CORE_ID_300A) + { + if ((USBx_OUTEP(0U)->DOEPCTL & USB_OTG_DOEPCTL_EPENA) == USB_OTG_DOEPCTL_EPENA) + { + return HAL_OK; + } + } + + USBx_OUTEP(0U)->DOEPTSIZ = 0U; + USBx_OUTEP(0U)->DOEPTSIZ |= (USB_OTG_DOEPTSIZ_PKTCNT & (1U << 19)); + USBx_OUTEP(0U)->DOEPTSIZ |= (3U * 8U); + USBx_OUTEP(0U)->DOEPTSIZ |= USB_OTG_DOEPTSIZ_STUPCNT; + + return HAL_OK; +} + +/** + * @brief Reset the USB Core (needed after USB clock settings change) + * @param USBx Selected device + * @retval HAL status + */ +static HAL_StatusTypeDef USB_CoreReset(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t count = 0U; + + /* Wait for AHB master IDLE state. */ + do + { + if (++count > 200000U) + { + return HAL_TIMEOUT; + } + } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_AHBIDL) == 0U); + + /* Core Soft Reset */ + count = 0U; + USBx->GRSTCTL |= USB_OTG_GRSTCTL_CSRST; + + do + { + if (++count > 200000U) + { + return HAL_TIMEOUT; + } + } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_CSRST) == USB_OTG_GRSTCTL_CSRST); + + return HAL_OK; +} + +/** + * @brief USB_HostInit : Initializes the USB OTG controller registers + * for Host mode + * @param USBx Selected device + * @param cfg pointer to a USB_OTG_CfgTypeDef structure that contains + * the configuration information for the specified USBx peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t i; + + /* Restart the Phy Clock */ + USBx_PCGCCTL = 0U; + + /* Disable VBUS sensing */ + USBx->GCCFG &= ~(USB_OTG_GCCFG_VBUSASEN); + USBx->GCCFG &= ~(USB_OTG_GCCFG_VBUSBSEN); + /* Set default Max speed support */ + USBx_HOST->HCFG &= ~(USB_OTG_HCFG_FSLSS); + + /* Make sure the FIFOs are flushed. */ + (void)USB_FlushTxFifo(USBx, 0x10U); /* all Tx FIFOs */ + (void)USB_FlushRxFifo(USBx); + + /* Clear all pending HC Interrupts */ + for (i = 0U; i < cfg.Host_channels; i++) + { + USBx_HC(i)->HCINT = 0xFFFFFFFFU; + USBx_HC(i)->HCINTMSK = 0U; + } + + /* Disable all interrupts. */ + USBx->GINTMSK = 0U; + + /* Clear any pending interrupts */ + USBx->GINTSTS = 0xFFFFFFFFU; + + /* set Rx FIFO size */ + USBx->GRXFSIZ = 0x80U; + USBx->DIEPTXF0_HNPTXFSIZ = (uint32_t)(((0x60U << 16) & USB_OTG_NPTXFD) | 0x80U); + USBx->HPTXFSIZ = (uint32_t)(((0x40U << 16)& USB_OTG_HPTXFSIZ_PTXFD) | 0xE0U); + /* Enable the common interrupts */ + USBx->GINTMSK |= USB_OTG_GINTMSK_RXFLVLM; + + /* Enable interrupts matching to the Host mode ONLY */ + USBx->GINTMSK |= (USB_OTG_GINTMSK_PRTIM | USB_OTG_GINTMSK_HCIM | \ + USB_OTG_GINTMSK_SOFM | USB_OTG_GINTSTS_DISCINT | \ + USB_OTG_GINTMSK_PXFRM_IISOOXFRM | USB_OTG_GINTMSK_WUIM); + + return HAL_OK; +} + +/** + * @brief USB_InitFSLSPClkSel : Initializes the FSLSPClkSel field of the + * HCFG register on the PHY type and set the right frame interval + * @param USBx Selected device + * @param freq clock frequency + * This parameter can be one of these values: + * HCFG_48_MHZ : Full Speed 48 MHz Clock + * HCFG_6_MHZ : Low Speed 6 MHz Clock + * @retval HAL status + */ +HAL_StatusTypeDef USB_InitFSLSPClkSel(USB_OTG_GlobalTypeDef *USBx, uint8_t freq) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + USBx_HOST->HCFG &= ~(USB_OTG_HCFG_FSLSPCS); + USBx_HOST->HCFG |= (uint32_t)freq & USB_OTG_HCFG_FSLSPCS; + + if (freq == HCFG_48_MHZ) + { + USBx_HOST->HFIR = 48000U; + } + else if (freq == HCFG_6_MHZ) + { + USBx_HOST->HFIR = 6000U; + } + else + { + /* ... */ + } + + return HAL_OK; +} + +/** + * @brief USB_OTG_ResetPort : Reset Host Port + * @param USBx Selected device + * @retval HAL status + * @note (1)The application must wait at least 10 ms + * before clearing the reset bit. + */ +HAL_StatusTypeDef USB_ResetPort(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + __IO uint32_t hprt0 = 0U; + + hprt0 = USBx_HPRT0; + + hprt0 &= ~(USB_OTG_HPRT_PENA | USB_OTG_HPRT_PCDET | + USB_OTG_HPRT_PENCHNG | USB_OTG_HPRT_POCCHNG); + + USBx_HPRT0 = (USB_OTG_HPRT_PRST | hprt0); + HAL_Delay(100U); /* See Note #1 */ + USBx_HPRT0 = ((~USB_OTG_HPRT_PRST) & hprt0); + HAL_Delay(10U); + + return HAL_OK; +} + +/** + * @brief USB_DriveVbus : activate or de-activate vbus + * @param state VBUS state + * This parameter can be one of these values: + * 0 : Deactivate VBUS + * 1 : Activate VBUS + * @retval HAL status + */ +HAL_StatusTypeDef USB_DriveVbus(USB_OTG_GlobalTypeDef *USBx, uint8_t state) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + __IO uint32_t hprt0 = 0U; + + hprt0 = USBx_HPRT0; + + hprt0 &= ~(USB_OTG_HPRT_PENA | USB_OTG_HPRT_PCDET | + USB_OTG_HPRT_PENCHNG | USB_OTG_HPRT_POCCHNG); + + if (((hprt0 & USB_OTG_HPRT_PPWR) == 0U) && (state == 1U)) + { + USBx_HPRT0 = (USB_OTG_HPRT_PPWR | hprt0); + } + if (((hprt0 & USB_OTG_HPRT_PPWR) == USB_OTG_HPRT_PPWR) && (state == 0U)) + { + USBx_HPRT0 = ((~USB_OTG_HPRT_PPWR) & hprt0); + } + return HAL_OK; +} + +/** + * @brief Return Host Core speed + * @param USBx Selected device + * @retval speed : Host speed + * This parameter can be one of these values: + * @arg HCD_SPEED_FULL: Full speed mode + * @arg HCD_SPEED_LOW: Low speed mode + */ +uint32_t USB_GetHostSpeed(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + __IO uint32_t hprt0 = 0U; + + hprt0 = USBx_HPRT0; + return ((hprt0 & USB_OTG_HPRT_PSPD) >> 17); +} + +/** + * @brief Return Host Current Frame number + * @param USBx Selected device + * @retval current frame number + */ +uint32_t USB_GetCurrentFrame(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + return (USBx_HOST->HFNUM & USB_OTG_HFNUM_FRNUM); +} + +/** + * @brief Initialize a host channel + * @param USBx Selected device + * @param ch_num Channel number + * This parameter can be a value from 1 to 15 + * @param epnum Endpoint number + * This parameter can be a value from 1 to 15 + * @param dev_address Current device address + * This parameter can be a value from 0 to 255 + * @param speed Current device speed + * This parameter can be one of these values: + * @arg USB_OTG_SPEED_FULL: Full speed mode + * @arg USB_OTG_SPEED_LOW: Low speed mode + * @param ep_type Endpoint Type + * This parameter can be one of these values: + * @arg EP_TYPE_CTRL: Control type + * @arg EP_TYPE_ISOC: Isochronous type + * @arg EP_TYPE_BULK: Bulk type + * @arg EP_TYPE_INTR: Interrupt type + * @param mps Max Packet Size + * This parameter can be a value from 0 to 32K + * @retval HAL state + */ +HAL_StatusTypeDef USB_HC_Init(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num, + uint8_t epnum, uint8_t dev_address, uint8_t speed, + uint8_t ep_type, uint16_t mps) +{ + HAL_StatusTypeDef ret = HAL_OK; + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t HCcharEpDir; + uint32_t HCcharLowSpeed; + uint32_t HostCoreSpeed; + + /* Clear old interrupt conditions for this host channel. */ + USBx_HC((uint32_t)ch_num)->HCINT = 0xFFFFFFFFU; + + /* Enable channel interrupts required for this transfer. */ + switch (ep_type) + { + case EP_TYPE_CTRL: + case EP_TYPE_BULK: + USBx_HC((uint32_t)ch_num)->HCINTMSK = USB_OTG_HCINTMSK_XFRCM | + USB_OTG_HCINTMSK_STALLM | + USB_OTG_HCINTMSK_TXERRM | + USB_OTG_HCINTMSK_DTERRM | + USB_OTG_HCINTMSK_AHBERR | + USB_OTG_HCINTMSK_NAKM; + + if ((epnum & 0x80U) == 0x80U) + { + USBx_HC((uint32_t)ch_num)->HCINTMSK |= USB_OTG_HCINTMSK_BBERRM; + } + break; + + case EP_TYPE_INTR: + USBx_HC((uint32_t)ch_num)->HCINTMSK = USB_OTG_HCINTMSK_XFRCM | + USB_OTG_HCINTMSK_STALLM | + USB_OTG_HCINTMSK_TXERRM | + USB_OTG_HCINTMSK_DTERRM | + USB_OTG_HCINTMSK_NAKM | + USB_OTG_HCINTMSK_AHBERR | + USB_OTG_HCINTMSK_FRMORM; + + if ((epnum & 0x80U) == 0x80U) + { + USBx_HC((uint32_t)ch_num)->HCINTMSK |= USB_OTG_HCINTMSK_BBERRM; + } + + break; + + case EP_TYPE_ISOC: + USBx_HC((uint32_t)ch_num)->HCINTMSK = USB_OTG_HCINTMSK_XFRCM | + USB_OTG_HCINTMSK_ACKM | + USB_OTG_HCINTMSK_AHBERR | + USB_OTG_HCINTMSK_FRMORM; + + if ((epnum & 0x80U) == 0x80U) + { + USBx_HC((uint32_t)ch_num)->HCINTMSK |= (USB_OTG_HCINTMSK_TXERRM | USB_OTG_HCINTMSK_BBERRM); + } + break; + + default: + ret = HAL_ERROR; + break; + } + + /* Enable the top level host channel interrupt. */ + USBx_HOST->HAINTMSK |= 1UL << (ch_num & 0xFU); + + /* Make sure host channel interrupts are enabled. */ + USBx->GINTMSK |= USB_OTG_GINTMSK_HCIM; + + /* Program the HCCHAR register */ + if ((epnum & 0x80U) == 0x80U) + { + HCcharEpDir = (0x1U << 15) & USB_OTG_HCCHAR_EPDIR; + } + else + { + HCcharEpDir = 0U; + } + + HostCoreSpeed = USB_GetHostSpeed(USBx); + + /* LS device plugged to HUB */ + if ((speed == HPRT0_PRTSPD_LOW_SPEED) && (HostCoreSpeed != HPRT0_PRTSPD_LOW_SPEED)) + { + HCcharLowSpeed = (0x1U << 17) & USB_OTG_HCCHAR_LSDEV; + } + else + { + HCcharLowSpeed = 0U; + } + + USBx_HC((uint32_t)ch_num)->HCCHAR = (((uint32_t)dev_address << 22) & USB_OTG_HCCHAR_DAD) | + ((((uint32_t)epnum & 0x7FU) << 11) & USB_OTG_HCCHAR_EPNUM) | + (((uint32_t)ep_type << 18) & USB_OTG_HCCHAR_EPTYP) | + ((uint32_t)mps & USB_OTG_HCCHAR_MPSIZ) | HCcharEpDir | HCcharLowSpeed; + + if (ep_type == EP_TYPE_INTR) + { + USBx_HC((uint32_t)ch_num)->HCCHAR |= USB_OTG_HCCHAR_ODDFRM ; + } + + return ret; +} + +/** + * @brief Start a transfer over a host channel + * @param USBx Selected device + * @param hc pointer to host channel structure + * @retval HAL state + */ +HAL_StatusTypeDef USB_HC_StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_HCTypeDef *hc) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t ch_num = (uint32_t)hc->ch_num; + __IO uint32_t tmpreg; + uint8_t is_oddframe; + uint16_t len_words; + uint16_t num_packets; + uint16_t max_hc_pkt_count = 256U; + + /* Compute the expected number of packets associated to the transfer */ + if (hc->xfer_len > 0U) + { + num_packets = (uint16_t)((hc->xfer_len + hc->max_packet - 1U) / hc->max_packet); + + if (num_packets > max_hc_pkt_count) + { + num_packets = max_hc_pkt_count; + hc->XferSize = (uint32_t)num_packets * hc->max_packet; + } + } + else + { + num_packets = 1U; + } + + /* + * For IN channel HCTSIZ.XferSize is expected to be an integer multiple of + * max_packet size. + */ + if (hc->ep_is_in != 0U) + { + hc->XferSize = (uint32_t)num_packets * hc->max_packet; + } + else + { + hc->XferSize = hc->xfer_len; + } + + /* Initialize the HCTSIZn register */ + USBx_HC(ch_num)->HCTSIZ = (hc->XferSize & USB_OTG_HCTSIZ_XFRSIZ) | + (((uint32_t)num_packets << 19) & USB_OTG_HCTSIZ_PKTCNT) | + (((uint32_t)hc->data_pid << 29) & USB_OTG_HCTSIZ_DPID); + + is_oddframe = (((uint32_t)USBx_HOST->HFNUM & 0x01U) != 0U) ? 0U : 1U; + USBx_HC(ch_num)->HCCHAR &= ~USB_OTG_HCCHAR_ODDFRM; + USBx_HC(ch_num)->HCCHAR |= (uint32_t)is_oddframe << 29; + + /* Set host channel enable */ + tmpreg = USBx_HC(ch_num)->HCCHAR; + tmpreg &= ~USB_OTG_HCCHAR_CHDIS; + + /* make sure to set the correct ep direction */ + if (hc->ep_is_in != 0U) + { + tmpreg |= USB_OTG_HCCHAR_EPDIR; + } + else + { + tmpreg &= ~USB_OTG_HCCHAR_EPDIR; + } + tmpreg |= USB_OTG_HCCHAR_CHENA; + USBx_HC(ch_num)->HCCHAR = tmpreg; + + if ((hc->ep_is_in == 0U) && (hc->xfer_len > 0U)) + { + switch (hc->ep_type) + { + /* Non periodic transfer */ + case EP_TYPE_CTRL: + case EP_TYPE_BULK: + + len_words = (uint16_t)((hc->xfer_len + 3U) / 4U); + + /* check if there is enough space in FIFO space */ + if (len_words > (USBx->HNPTXSTS & 0xFFFFU)) + { + /* need to process data in nptxfempty interrupt */ + USBx->GINTMSK |= USB_OTG_GINTMSK_NPTXFEM; + } + break; + + /* Periodic transfer */ + case EP_TYPE_INTR: + case EP_TYPE_ISOC: + len_words = (uint16_t)((hc->xfer_len + 3U) / 4U); + /* check if there is enough space in FIFO space */ + if (len_words > (USBx_HOST->HPTXSTS & 0xFFFFU)) /* split the transfer */ + { + /* need to process data in ptxfempty interrupt */ + USBx->GINTMSK |= USB_OTG_GINTMSK_PTXFEM; + } + break; + + default: + break; + } + + /* Write packet into the Tx FIFO. */ + (void)USB_WritePacket(USBx, hc->xfer_buff, hc->ch_num, (uint16_t)hc->xfer_len); + } + + return HAL_OK; +} + +/** + * @brief Read all host channel interrupts status + * @param USBx Selected device + * @retval HAL state + */ +uint32_t USB_HC_ReadInterrupt(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + return ((USBx_HOST->HAINT) & 0xFFFFU); +} + +/** + * @brief Halt a host channel + * @param USBx Selected device + * @param hc_num Host Channel number + * This parameter can be a value from 1 to 15 + * @retval HAL state + */ +HAL_StatusTypeDef USB_HC_Halt(USB_OTG_GlobalTypeDef *USBx, uint8_t hc_num) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t hcnum = (uint32_t)hc_num; + uint32_t count = 0U; + uint32_t HcEpType = (USBx_HC(hcnum)->HCCHAR & USB_OTG_HCCHAR_EPTYP) >> 18; + uint32_t ChannelEna = (USBx_HC(hcnum)->HCCHAR & USB_OTG_HCCHAR_CHENA) >> 31; + + if (((USBx->GAHBCFG & USB_OTG_GAHBCFG_DMAEN) == USB_OTG_GAHBCFG_DMAEN) && + (ChannelEna == 0U)) + { + return HAL_OK; + } + + /* Check for space in the request queue to issue the halt. */ + if ((HcEpType == HCCHAR_CTRL) || (HcEpType == HCCHAR_BULK)) + { + USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHDIS; + + if ((USBx->GAHBCFG & USB_OTG_GAHBCFG_DMAEN) == 0U) + { + if ((USBx->HNPTXSTS & (0xFFU << 16)) == 0U) + { + USBx_HC(hcnum)->HCCHAR &= ~USB_OTG_HCCHAR_CHENA; + USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHENA; + USBx_HC(hcnum)->HCCHAR &= ~USB_OTG_HCCHAR_EPDIR; + do + { + if (++count > 1000U) + { + break; + } + } while ((USBx_HC(hcnum)->HCCHAR & USB_OTG_HCCHAR_CHENA) == USB_OTG_HCCHAR_CHENA); + } + else + { + USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHENA; + } + } + } + else + { + USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHDIS; + + if ((USBx_HOST->HPTXSTS & (0xFFU << 16)) == 0U) + { + USBx_HC(hcnum)->HCCHAR &= ~USB_OTG_HCCHAR_CHENA; + USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHENA; + USBx_HC(hcnum)->HCCHAR &= ~USB_OTG_HCCHAR_EPDIR; + do + { + if (++count > 1000U) + { + break; + } + } while ((USBx_HC(hcnum)->HCCHAR & USB_OTG_HCCHAR_CHENA) == USB_OTG_HCCHAR_CHENA); + } + else + { + USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHENA; + } + } + + return HAL_OK; +} + +/** + * @brief Initiate Do Ping protocol + * @param USBx Selected device + * @param hc_num Host Channel number + * This parameter can be a value from 1 to 15 + * @retval HAL state + */ +HAL_StatusTypeDef USB_DoPing(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t chnum = (uint32_t)ch_num; + uint32_t num_packets = 1U; + uint32_t tmpreg; + + USBx_HC(chnum)->HCTSIZ = ((num_packets << 19) & USB_OTG_HCTSIZ_PKTCNT) | + USB_OTG_HCTSIZ_DOPING; + + /* Set host channel enable */ + tmpreg = USBx_HC(chnum)->HCCHAR; + tmpreg &= ~USB_OTG_HCCHAR_CHDIS; + tmpreg |= USB_OTG_HCCHAR_CHENA; + USBx_HC(chnum)->HCCHAR = tmpreg; + + return HAL_OK; +} + +/** + * @brief Stop Host Core + * @param USBx Selected device + * @retval HAL state + */ +HAL_StatusTypeDef USB_StopHost(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t count = 0U; + uint32_t value; + uint32_t i; + + (void)USB_DisableGlobalInt(USBx); + + /* Flush FIFO */ + (void)USB_FlushTxFifo(USBx, 0x10U); + (void)USB_FlushRxFifo(USBx); + + /* Flush out any leftover queued requests. */ + for (i = 0U; i <= 15U; i++) + { + value = USBx_HC(i)->HCCHAR; + value |= USB_OTG_HCCHAR_CHDIS; + value &= ~USB_OTG_HCCHAR_CHENA; + value &= ~USB_OTG_HCCHAR_EPDIR; + USBx_HC(i)->HCCHAR = value; + } + + /* Halt all channels to put them into a known state. */ + for (i = 0U; i <= 15U; i++) + { + value = USBx_HC(i)->HCCHAR; + value |= USB_OTG_HCCHAR_CHDIS; + value |= USB_OTG_HCCHAR_CHENA; + value &= ~USB_OTG_HCCHAR_EPDIR; + USBx_HC(i)->HCCHAR = value; + + do + { + if (++count > 1000U) + { + break; + } + } while ((USBx_HC(i)->HCCHAR & USB_OTG_HCCHAR_CHENA) == USB_OTG_HCCHAR_CHENA); + } + + /* Clear any pending Host interrupts */ + USBx_HOST->HAINT = 0xFFFFFFFFU; + USBx->GINTSTS = 0xFFFFFFFFU; + + return HAL_OK; +} + +/** + * @brief USB_ActivateRemoteWakeup active remote wakeup signalling + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_ActivateRemoteWakeup(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + if ((USBx_DEVICE->DSTS & USB_OTG_DSTS_SUSPSTS) == USB_OTG_DSTS_SUSPSTS) + { + /* active Remote wakeup signalling */ + USBx_DEVICE->DCTL |= USB_OTG_DCTL_RWUSIG; + } + + return HAL_OK; +} + +/** + * @brief USB_DeActivateRemoteWakeup de-active remote wakeup signalling + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DeActivateRemoteWakeup(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + /* active Remote wakeup signalling */ + USBx_DEVICE->DCTL &= ~(USB_OTG_DCTL_RWUSIG); + + return HAL_OK; +} +#endif /* defined (USB_OTG_FS) */ + +#if defined (USB) +/** + * @brief Initializes the USB Core + * @param USBx USB Instance + * @param cfg pointer to a USB_CfgTypeDef structure that contains + * the configuration information for the specified USBx peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef USB_CoreInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + UNUSED(cfg); + + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + + return HAL_OK; +} + +/** + * @brief USB_EnableGlobalInt + * Enables the controller's Global Int in the AHB Config reg + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_EnableGlobalInt(USB_TypeDef *USBx) +{ + uint32_t winterruptmask; + + /* Clear pending interrupts */ + USBx->ISTR = 0U; + + /* Set winterruptmask variable */ + winterruptmask = USB_CNTR_CTRM | USB_CNTR_WKUPM | + USB_CNTR_SUSPM | USB_CNTR_ERRM | + USB_CNTR_SOFM | USB_CNTR_ESOFM | + USB_CNTR_RESETM; + + /* Set interrupt mask */ + USBx->CNTR = (uint16_t)winterruptmask; + + return HAL_OK; +} + +/** + * @brief USB_DisableGlobalInt + * Disable the controller's Global Int in the AHB Config reg + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DisableGlobalInt(USB_TypeDef *USBx) +{ + uint32_t winterruptmask; + + /* Set winterruptmask variable */ + winterruptmask = USB_CNTR_CTRM | USB_CNTR_WKUPM | + USB_CNTR_SUSPM | USB_CNTR_ERRM | + USB_CNTR_SOFM | USB_CNTR_ESOFM | + USB_CNTR_RESETM; + + /* Clear interrupt mask */ + USBx->CNTR &= (uint16_t)(~winterruptmask); + + return HAL_OK; +} + +/** + * @brief USB_SetCurrentMode Set functional mode + * @param USBx Selected device + * @param mode current core mode + * This parameter can be one of the these values: + * @arg USB_DEVICE_MODE Peripheral mode + * @retval HAL status + */ +HAL_StatusTypeDef USB_SetCurrentMode(USB_TypeDef *USBx, USB_ModeTypeDef mode) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + UNUSED(mode); + + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + return HAL_OK; +} + +/** + * @brief USB_DevInit Initializes the USB controller registers + * for device mode + * @param USBx Selected device + * @param cfg pointer to a USB_CfgTypeDef structure that contains + * the configuration information for the specified USBx peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(cfg); + + /* Init Device */ + /* CNTR_FRES = 1 */ + USBx->CNTR = (uint16_t)USB_CNTR_FRES; + + /* CNTR_FRES = 0 */ + USBx->CNTR = 0U; + + /* Clear pending interrupts */ + USBx->ISTR = 0U; + + /*Set Btable Address*/ + USBx->BTABLE = BTABLE_ADDRESS; + + return HAL_OK; +} + +/** + * @brief USB_FlushTxFifo : Flush a Tx FIFO + * @param USBx : Selected device + * @param num : FIFO number + * This parameter can be a value from 1 to 15 + 15 means Flush all Tx FIFOs + * @retval HAL status + */ +HAL_StatusTypeDef USB_FlushTxFifo(USB_TypeDef *USBx, uint32_t num) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + UNUSED(num); + + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + + return HAL_OK; +} + +/** + * @brief USB_FlushRxFifo : Flush Rx FIFO + * @param USBx : Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_FlushRxFifo(USB_TypeDef *USBx) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + + return HAL_OK; +} + +#if defined (HAL_PCD_MODULE_ENABLED) +/** + * @brief Activate and configure an endpoint + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_ActivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + HAL_StatusTypeDef ret = HAL_OK; + uint16_t wEpRegVal; + + wEpRegVal = PCD_GET_ENDPOINT(USBx, ep->num) & USB_EP_T_MASK; + + /* initialize Endpoint */ + switch (ep->type) + { + case EP_TYPE_CTRL: + wEpRegVal |= USB_EP_CONTROL; + break; + + case EP_TYPE_BULK: + wEpRegVal |= USB_EP_BULK; + break; + + case EP_TYPE_INTR: + wEpRegVal |= USB_EP_INTERRUPT; + break; + + case EP_TYPE_ISOC: + wEpRegVal |= USB_EP_ISOCHRONOUS; + break; + + default: + ret = HAL_ERROR; + break; + } + + PCD_SET_ENDPOINT(USBx, ep->num, (wEpRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX)); + + PCD_SET_EP_ADDRESS(USBx, ep->num, ep->num); + + if (ep->doublebuffer == 0U) + { + if (ep->is_in != 0U) + { + /*Set the endpoint Transmit buffer address */ + PCD_SET_EP_TX_ADDRESS(USBx, ep->num, ep->pmaadress); + PCD_CLEAR_TX_DTOG(USBx, ep->num); + + if (ep->type != EP_TYPE_ISOC) + { + /* Configure NAK status for the Endpoint */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); + } + else + { + /* Configure TX Endpoint to disabled state */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + } + } + else + { + /*Set the endpoint Receive buffer address */ + PCD_SET_EP_RX_ADDRESS(USBx, ep->num, ep->pmaadress); + + /*Set the endpoint Receive buffer counter*/ + PCD_SET_EP_RX_CNT(USBx, ep->num, ep->maxpacket); + PCD_CLEAR_RX_DTOG(USBx, ep->num); + + /* Configure VALID status for the Endpoint*/ + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); + } + } + /*Double Buffer*/ + else + { + /* Set the endpoint as double buffered */ + PCD_SET_EP_DBUF(USBx, ep->num); + + /* Set buffer address for double buffered mode */ + PCD_SET_EP_DBUF_ADDR(USBx, ep->num, ep->pmaaddr0, ep->pmaaddr1); + + if (ep->is_in == 0U) + { + /* Clear the data toggle bits for the endpoint IN/OUT */ + PCD_CLEAR_RX_DTOG(USBx, ep->num); + PCD_CLEAR_TX_DTOG(USBx, ep->num); + + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + } + else + { + /* Clear the data toggle bits for the endpoint IN/OUT */ + PCD_CLEAR_RX_DTOG(USBx, ep->num); + PCD_CLEAR_TX_DTOG(USBx, ep->num); + + if (ep->type != EP_TYPE_ISOC) + { + /* Configure NAK status for the Endpoint */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); + } + else + { + /* Configure TX Endpoint to disabled state */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + } + + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); + } + } + + return ret; +} + +/** + * @brief De-activate and de-initialize an endpoint + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_DeactivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + if (ep->doublebuffer == 0U) + { + if (ep->is_in != 0U) + { + PCD_CLEAR_TX_DTOG(USBx, ep->num); + + /* Configure DISABLE status for the Endpoint*/ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + } + else + { + PCD_CLEAR_RX_DTOG(USBx, ep->num); + + /* Configure DISABLE status for the Endpoint*/ + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); + } + } + /*Double Buffer*/ + else + { + if (ep->is_in == 0U) + { + /* Clear the data toggle bits for the endpoint IN/OUT*/ + PCD_CLEAR_RX_DTOG(USBx, ep->num); + PCD_CLEAR_TX_DTOG(USBx, ep->num); + + /* Reset value of the data toggle bits for the endpoint out*/ + PCD_TX_DTOG(USBx, ep->num); + + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + } + else + { + /* Clear the data toggle bits for the endpoint IN/OUT*/ + PCD_CLEAR_RX_DTOG(USBx, ep->num); + PCD_CLEAR_TX_DTOG(USBx, ep->num); + PCD_RX_DTOG(USBx, ep->num); + + /* Configure DISABLE status for the Endpoint*/ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); + } + } + + return HAL_OK; +} + +/** + * @brief USB_EPStartXfer setup and starts a transfer over an EP + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPStartXfer(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + uint32_t len; + uint16_t pmabuffer; + uint16_t wEPVal; + + /* IN endpoint */ + if (ep->is_in == 1U) + { + /*Multi packet transfer*/ + if (ep->xfer_len > ep->maxpacket) + { + len = ep->maxpacket; + } + else + { + len = ep->xfer_len; + } + + /* configure and validate Tx endpoint */ + if (ep->doublebuffer == 0U) + { + USB_WritePMA(USBx, ep->xfer_buff, ep->pmaadress, (uint16_t)len); + PCD_SET_EP_TX_CNT(USBx, ep->num, len); + } + else + { + /* double buffer bulk management */ + if (ep->type == EP_TYPE_BULK) + { + if (ep->xfer_len_db > ep->maxpacket) + { + /* enable double buffer */ + PCD_SET_EP_DBUF(USBx, ep->num); + + /* each Time to write in PMA xfer_len_db will */ + ep->xfer_len_db -= len; + + /* Fill the two first buffer in the Buffer0 & Buffer1 */ + if ((PCD_GET_ENDPOINT(USBx, ep->num) & USB_EP_DTOG_TX) != 0U) + { + /* Set the Double buffer counter for pmabuffer1 */ + PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); + pmabuffer = ep->pmaaddr1; + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + ep->xfer_buff += len; + + if (ep->xfer_len_db > ep->maxpacket) + { + ep->xfer_len_db -= len; + } + else + { + len = ep->xfer_len_db; + ep->xfer_len_db = 0U; + } + + /* Set the Double buffer counter for pmabuffer0 */ + PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); + pmabuffer = ep->pmaaddr0; + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + } + else + { + /* Set the Double buffer counter for pmabuffer0 */ + PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); + pmabuffer = ep->pmaaddr0; + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + ep->xfer_buff += len; + + if (ep->xfer_len_db > ep->maxpacket) + { + ep->xfer_len_db -= len; + } + else + { + len = ep->xfer_len_db; + ep->xfer_len_db = 0U; + } + + /* Set the Double buffer counter for pmabuffer1 */ + PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); + pmabuffer = ep->pmaaddr1; + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + } + } + /* auto Switch to single buffer mode when transfer xfer_len_db; + + /* disable double buffer mode */ + PCD_CLEAR_EP_DBUF(USBx, ep->num); + + /* Set Tx count with nbre of byte to be transmitted */ + PCD_SET_EP_TX_CNT(USBx, ep->num, len); + pmabuffer = ep->pmaaddr0; + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + } + }/* end if bulk double buffer */ + + /* manage isochronous double buffer IN mode */ + else + { + /* enable double buffer */ + PCD_SET_EP_DBUF(USBx, ep->num); + + /* each Time to write in PMA xfer_len_db will */ + ep->xfer_len_db -= len; + + /* Fill the data buffer */ + if ((PCD_GET_ENDPOINT(USBx, ep->num) & USB_EP_DTOG_TX) != 0U) + { + /* Set the Double buffer counter for pmabuffer1 */ + PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); + pmabuffer = ep->pmaaddr1; + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + ep->xfer_buff += len; + + if (ep->xfer_len_db > ep->maxpacket) + { + ep->xfer_len_db -= len; + } + else + { + len = ep->xfer_len_db; + ep->xfer_len_db = 0U; + } + + if (len > 0U) + { + /* Set the Double buffer counter for pmabuffer0 */ + PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); + pmabuffer = ep->pmaaddr0; + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + } + } + else + { + /* Set the Double buffer counter for pmabuffer0 */ + PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); + pmabuffer = ep->pmaaddr0; + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + ep->xfer_buff += len; + + if (ep->xfer_len_db > ep->maxpacket) + { + ep->xfer_len_db -= len; + } + else + { + len = ep->xfer_len_db; + ep->xfer_len_db = 0U; + } + + if (len > 0U) + { + /* Set the Double buffer counter for pmabuffer1 */ + PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); + pmabuffer = ep->pmaaddr1; + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + } + } + } + } + + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_VALID); + } + else /* OUT endpoint */ + { + if (ep->doublebuffer == 0U) + { + /* Multi packet transfer */ + if (ep->xfer_len > ep->maxpacket) + { + len = ep->maxpacket; + ep->xfer_len -= len; + } + else + { + len = ep->xfer_len; + ep->xfer_len = 0U; + } + /* configure and validate Rx endpoint */ + PCD_SET_EP_RX_CNT(USBx, ep->num, len); + } + else + { + /* First Transfer Coming From HAL_PCD_EP_Receive & From ISR */ + /* Set the Double buffer counter */ + if (ep->type == EP_TYPE_BULK) + { + PCD_SET_EP_DBUF_CNT(USBx, ep->num, ep->is_in, ep->maxpacket); + + /* Coming from ISR */ + if (ep->xfer_count != 0U) + { + /* update last value to check if there is blocking state */ + wEPVal = PCD_GET_ENDPOINT(USBx, ep->num); + + /*Blocking State */ + if ((((wEPVal & USB_EP_DTOG_RX) != 0U) && ((wEPVal & USB_EP_DTOG_TX) != 0U)) || + (((wEPVal & USB_EP_DTOG_RX) == 0U) && ((wEPVal & USB_EP_DTOG_TX) == 0U))) + { + PCD_FreeUserBuffer(USBx, ep->num, 0U); + } + } + } + /* iso out double */ + else if (ep->type == EP_TYPE_ISOC) + { + /* Multi packet transfer */ + if (ep->xfer_len > ep->maxpacket) + { + len = ep->maxpacket; + ep->xfer_len -= len; + } + else + { + len = ep->xfer_len; + ep->xfer_len = 0U; + } + PCD_SET_EP_DBUF_CNT(USBx, ep->num, ep->is_in, len); + } + else + { + return HAL_ERROR; + } + } + + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); + } + + return HAL_OK; +} + + +/** + * @brief USB_EPSetStall set a stall condition over an EP + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPSetStall(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + if (ep->is_in != 0U) + { + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_STALL); + } + else + { + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_STALL); + } + + return HAL_OK; +} + +/** + * @brief USB_EPClearStall Clear a stall condition over an EP + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPClearStall(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + if (ep->doublebuffer == 0U) + { + if (ep->is_in != 0U) + { + PCD_CLEAR_TX_DTOG(USBx, ep->num); + + if (ep->type != EP_TYPE_ISOC) + { + /* Configure NAK status for the Endpoint */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); + } + } + else + { + PCD_CLEAR_RX_DTOG(USBx, ep->num); + + /* Configure VALID status for the Endpoint */ + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); + } + } + + return HAL_OK; +} +#endif + +/** + * @brief USB_StopDevice Stop the usb device mode + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_StopDevice(USB_TypeDef *USBx) +{ + /* disable all interrupts and force USB reset */ + USBx->CNTR = (uint16_t)USB_CNTR_FRES; + + /* clear interrupt status register */ + USBx->ISTR = 0U; + + /* switch-off device */ + USBx->CNTR = (uint16_t)(USB_CNTR_FRES | USB_CNTR_PDWN); + + return HAL_OK; +} + +/** + * @brief USB_SetDevAddress Stop the usb device mode + * @param USBx Selected device + * @param address new device address to be assigned + * This parameter can be a value from 0 to 255 + * @retval HAL status + */ +HAL_StatusTypeDef USB_SetDevAddress(USB_TypeDef *USBx, uint8_t address) +{ + if (address == 0U) + { + /* set device address and enable function */ + USBx->DADDR = (uint16_t)USB_DADDR_EF; + } + + return HAL_OK; +} + +/** + * @brief USB_DevConnect Connect the USB device by enabling the pull-up/pull-down + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevConnect(USB_TypeDef *USBx) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + + return HAL_OK; +} + +/** + * @brief USB_DevDisconnect Disconnect the USB device by disabling the pull-up/pull-down + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevDisconnect(USB_TypeDef *USBx) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + + return HAL_OK; +} + +/** + * @brief USB_ReadInterrupts return the global USB interrupt status + * @param USBx Selected device + * @retval HAL status + */ +uint32_t USB_ReadInterrupts(USB_TypeDef *USBx) +{ + uint32_t tmpreg; + + tmpreg = USBx->ISTR; + return tmpreg; +} + +/** + * @brief USB_ReadDevAllOutEpInterrupt return the USB device OUT endpoints interrupt status + * @param USBx Selected device + * @retval HAL status + */ +uint32_t USB_ReadDevAllOutEpInterrupt(USB_TypeDef *USBx) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + return (0); +} + +/** + * @brief USB_ReadDevAllInEpInterrupt return the USB device IN endpoints interrupt status + * @param USBx Selected device + * @retval HAL status + */ +uint32_t USB_ReadDevAllInEpInterrupt(USB_TypeDef *USBx) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + return (0); +} + +/** + * @brief Returns Device OUT EP Interrupt register + * @param USBx Selected device + * @param epnum endpoint number + * This parameter can be a value from 0 to 15 + * @retval Device OUT EP Interrupt register + */ +uint32_t USB_ReadDevOutEPInterrupt(USB_TypeDef *USBx, uint8_t epnum) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + UNUSED(epnum); + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + return (0); +} + +/** + * @brief Returns Device IN EP Interrupt register + * @param USBx Selected device + * @param epnum endpoint number + * This parameter can be a value from 0 to 15 + * @retval Device IN EP Interrupt register + */ +uint32_t USB_ReadDevInEPInterrupt(USB_TypeDef *USBx, uint8_t epnum) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + UNUSED(epnum); + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + return (0); +} + +/** + * @brief USB_ClearInterrupts: clear a USB interrupt + * @param USBx Selected device + * @param interrupt flag + * @retval None + */ +void USB_ClearInterrupts(USB_TypeDef *USBx, uint32_t interrupt) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + UNUSED(interrupt); + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ +} + +/** + * @brief Prepare the EP0 to start the first control setup + * @param USBx Selected device + * @param psetup pointer to setup packet + * @retval HAL status + */ +HAL_StatusTypeDef USB_EP0_OutStart(USB_TypeDef *USBx, uint8_t *psetup) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + UNUSED(psetup); + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + return HAL_OK; +} + +/** + * @brief USB_ActivateRemoteWakeup : active remote wakeup signalling + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_ActivateRemoteWakeup(USB_TypeDef *USBx) +{ + USBx->CNTR |= (uint16_t)USB_CNTR_RESUME; + + return HAL_OK; +} + +/** + * @brief USB_DeActivateRemoteWakeup de-active remote wakeup signalling + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DeActivateRemoteWakeup(USB_TypeDef *USBx) +{ + USBx->CNTR &= (uint16_t)(~USB_CNTR_RESUME); + + return HAL_OK; +} + +/** + * @brief Copy a buffer from user memory area to packet memory area (PMA) + * @param USBx USB peripheral instance register address. + * @param pbUsrBuf pointer to user memory area. + * @param wPMABufAddr address into PMA. + * @param wNBytes no. of bytes to be copied. + * @retval None + */ +void USB_WritePMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes) +{ + uint32_t n = ((uint32_t)wNBytes + 1U) >> 1; + uint32_t BaseAddr = (uint32_t)USBx; + uint32_t i, temp1, temp2; + __IO uint16_t *pdwVal; + uint8_t *pBuf = pbUsrBuf; + + pdwVal = (__IO uint16_t *)(BaseAddr + 0x400U + ((uint32_t)wPMABufAddr * PMA_ACCESS)); + + for (i = n; i != 0U; i--) + { + temp1 = *pBuf; + pBuf++; + temp2 = temp1 | ((uint16_t)((uint16_t) *pBuf << 8)); + *pdwVal = (uint16_t)temp2; + pdwVal++; + +#if PMA_ACCESS > 1U + pdwVal++; +#endif + + pBuf++; + } +} + +/** + * @brief Copy data from packet memory area (PMA) to user memory buffer + * @param USBx USB peripheral instance register address. + * @param pbUsrBuf pointer to user memory area. + * @param wPMABufAddr address into PMA. + * @param wNBytes no. of bytes to be copied. + * @retval None + */ +void USB_ReadPMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes) +{ + uint32_t n = (uint32_t)wNBytes >> 1; + uint32_t BaseAddr = (uint32_t)USBx; + uint32_t i, temp; + __IO uint16_t *pdwVal; + uint8_t *pBuf = pbUsrBuf; + + pdwVal = (__IO uint16_t *)(BaseAddr + 0x400U + ((uint32_t)wPMABufAddr * PMA_ACCESS)); + + for (i = n; i != 0U; i--) + { + temp = *(__IO uint16_t *)pdwVal; + pdwVal++; + *pBuf = (uint8_t)((temp >> 0) & 0xFFU); + pBuf++; + *pBuf = (uint8_t)((temp >> 8) & 0xFFU); + pBuf++; + +#if PMA_ACCESS > 1U + pdwVal++; +#endif + } + + if ((wNBytes % 2U) != 0U) + { + temp = *pdwVal; + *pBuf = (uint8_t)((temp >> 0) & 0xFFU); + } +} +#endif /* defined (USB) */ + +/** + * @} + */ + +/** + * @} + */ +#endif /* defined (USB) || defined (USB_OTG_FS) */ +#endif /* defined (HAL_PCD_MODULE_ENABLED) || defined (HAL_HCD_MODULE_ENABLED) */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc/usbd_dfu.h b/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc/usbd_dfu.h new file mode 100644 index 0000000..7b4035f --- /dev/null +++ b/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Inc/usbd_dfu.h @@ -0,0 +1,237 @@ +/** + ****************************************************************************** + * @file usbd_dfu.h + * @author MCD Application Team + * @brief Header file for the usbd_dfu.c file. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2015 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_DFU_H +#define __USB_DFU_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_ioreq.h" + +/** @addtogroup STM32_USB_DEVICE_LIBRARY + * @{ + */ + +/** @defgroup USBD_DFU + * @brief This file is the Header file for usbd_dfu.c + * @{ + */ + + +/** @defgroup USBD_DFU_Exported_Defines + * @{ + */ +#ifndef USBD_DFU_MAX_ITF_NUM +#define USBD_DFU_MAX_ITF_NUM 1U +#endif /* USBD_DFU_MAX_ITF_NUM */ + +#ifndef USBD_DFU_XFER_SIZE +#define USBD_DFU_XFER_SIZE 1024U +#endif /* USBD_DFU_XFER_SIZE */ + +#ifndef USBD_DFU_APP_DEFAULT_ADD +#define USBD_DFU_APP_DEFAULT_ADD 0x08008000U /* The first sector (32 KB) is reserved for DFU code */ +#endif /* USBD_DFU_APP_DEFAULT_ADD */ + +#define USB_DFU_CONFIG_DESC_SIZ (18U + (9U * USBD_DFU_MAX_ITF_NUM)) +#define USB_DFU_DESC_SIZ 9U + +#define DFU_DESCRIPTOR_TYPE 0x21U + + +/**************************************************/ +/* DFU Requests DFU states */ +/**************************************************/ +#define APP_STATE_IDLE 0U +#define APP_STATE_DETACH 1U +#define DFU_STATE_IDLE 2U +#define DFU_STATE_DNLOAD_SYNC 3U +#define DFU_STATE_DNLOAD_BUSY 4U +#define DFU_STATE_DNLOAD_IDLE 5U +#define DFU_STATE_MANIFEST_SYNC 6U +#define DFU_STATE_MANIFEST 7U +#define DFU_STATE_MANIFEST_WAIT_RESET 8U +#define DFU_STATE_UPLOAD_IDLE 9U +#define DFU_STATE_ERROR 10U + +/**************************************************/ +/* DFU errors */ +/**************************************************/ +#define DFU_ERROR_NONE 0x00U +#define DFU_ERROR_TARGET 0x01U +#define DFU_ERROR_FILE 0x02U +#define DFU_ERROR_WRITE 0x03U +#define DFU_ERROR_ERASE 0x04U +#define DFU_ERROR_CHECK_ERASED 0x05U +#define DFU_ERROR_PROG 0x06U +#define DFU_ERROR_VERIFY 0x07U +#define DFU_ERROR_ADDRESS 0x08U +#define DFU_ERROR_NOTDONE 0x09U +#define DFU_ERROR_FIRMWARE 0x0AU +#define DFU_ERROR_VENDOR 0x0BU +#define DFU_ERROR_USB 0x0CU +#define DFU_ERROR_POR 0x0DU +#define DFU_ERROR_UNKNOWN 0x0EU +#define DFU_ERROR_STALLEDPKT 0x0FU + +/**************************************************/ +/* DFU Manifestation State */ +/**************************************************/ +#define DFU_MANIFEST_COMPLETE 0x00U +#define DFU_MANIFEST_IN_PROGRESS 0x01U + + +/**************************************************/ +/* Special Commands with Download Request */ +/**************************************************/ +#define DFU_CMD_GETCOMMANDS 0x00U +#define DFU_CMD_SETADDRESSPOINTER 0x21U +#define DFU_CMD_ERASE 0x41U + +#define DFU_MEDIA_ERASE 0x00U +#define DFU_MEDIA_PROGRAM 0x01U + +/**************************************************/ +/* Other defines */ +/**************************************************/ +/* Bit Detach capable = bit 3 in bmAttributes field */ +#define DFU_DETACH_MASK (uint8_t)(1 << 4) +#define DFU_STATUS_DEPTH 6U + +typedef enum +{ + DFU_DETACH = 0U, + DFU_DNLOAD, + DFU_UPLOAD, + DFU_GETSTATUS, + DFU_CLRSTATUS, + DFU_GETSTATE, + DFU_ABORT +} DFU_RequestTypeDef; + +typedef void (*pFunction)(void); + + +/********** Descriptor of DFU interface 0 Alternate setting n ****************/ +#define USBD_DFU_IF_DESC(n) 0x09, /* bLength: Interface Descriptor size */ \ + USB_DESC_TYPE_INTERFACE, /* bDescriptorType */ \ + 0x00, /* bInterfaceNumber: Number of Interface */ \ + (n), /* bAlternateSetting: Alternate setting */ \ + 0x00, /* bNumEndpoints*/ \ + 0xFE, /* bInterfaceClass: Application Specific Class Code */ \ + 0x01, /* bInterfaceSubClass : Device Firmware Upgrade Code */ \ + 0x02, /* nInterfaceProtocol: DFU mode protocol */ \ + USBD_IDX_INTERFACE_STR + (n) + 1U /* iInterface: Index of string descriptor */ \ + +#define TRANSFER_SIZE_BYTES(size) ((uint8_t)(size)), /* XFERSIZEB0 */\ + ((uint8_t)((size) >> 8)) /* XFERSIZEB1 */ + +#define IS_PROTECTED_AREA(add) (uint8_t)((((add) >= 0x08000000) && ((add) < (APP_DEFAULT_ADD)))? 1:0) + +/** + * @} + */ + + +/** @defgroup USBD_CORE_Exported_TypesDefinitions + * @{ + */ + +typedef struct +{ + union + { + uint32_t d32[USBD_DFU_XFER_SIZE / 4U]; + uint8_t d8[USBD_DFU_XFER_SIZE]; + } buffer; + + uint32_t wblock_num; + uint32_t wlength; + uint32_t data_ptr; + uint32_t alt_setting; + + uint8_t dev_status[DFU_STATUS_DEPTH]; + uint8_t ReservedForAlign[2]; + uint8_t dev_state; + uint8_t manif_state; +} +USBD_DFU_HandleTypeDef; + +typedef struct +{ + const uint8_t *pStrDesc; + uint16_t (* Init)(void); + uint16_t (* DeInit)(void); + uint16_t (* Erase)(uint32_t Add); + uint16_t (* Write)(uint8_t *src, uint8_t *dest, uint32_t Len); + uint8_t *(* Read)(uint8_t *src, uint8_t *dest, uint32_t Len); + uint16_t (* GetStatus)(uint32_t Add, uint8_t cmd, uint8_t *buff); +} +USBD_DFU_MediaTypeDef; +/** + * @} + */ + + + +/** @defgroup USBD_CORE_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup USBD_CORE_Exported_Variables + * @{ + */ + +extern USBD_ClassTypeDef USBD_DFU; +#define USBD_DFU_CLASS &USBD_DFU +/** + * @} + */ + +/** @defgroup USB_CORE_Exported_Functions + * @{ + */ +uint8_t USBD_DFU_RegisterMedia(USBD_HandleTypeDef *pdev, + USBD_DFU_MediaTypeDef *fops); +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __USB_DFU_H */ +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.c b/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.c new file mode 100644 index 0000000..dc85d61 --- /dev/null +++ b/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.c @@ -0,0 +1,1133 @@ +/** + ****************************************************************************** + * @file usbd_dfu.c + * @author MCD Application Team + * @brief This file provides the DFU core functions. + * + * @verbatim + * + * =================================================================== + * DFU Class Driver Description + * =================================================================== + * This driver manages the DFU class V1.1 following the "Device Class Specification for + * Device Firmware Upgrade Version 1.1 Aug 5, 2004". + * This driver implements the following aspects of the specification: + * - Device descriptor management + * - Configuration descriptor management + * - Enumeration as DFU device (in DFU mode only) + * - Requests management (supporting ST DFU sub-protocol) + * - Memory operations management (Download/Upload/Erase/Detach/GetState/GetStatus) + * - DFU state machine implementation. + * + * @note + * ST DFU sub-protocol is compliant with DFU protocol and use sub-requests to manage + * memory addressing, commands processing, specific memories operations (ie. Erase) ... + * As required by the DFU specification, only endpoint 0 is used in this application. + * Other endpoints and functions may be added to the application (ie. DFU ...) + * + * These aspects may be enriched or modified for a specific user application. + * + * This driver doesn't implement the following aspects of the specification + * (but it is possible to manage these features with some modifications on this driver): + * - Manifestation Tolerant mode + * + * @endverbatim + * + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2015 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +/* BSPDependencies +- "stm32xxxxx_{eval}{discovery}{nucleo_144}.c" +- "stm32xxxxx_{eval}{discovery}_io.c" +EndBSPDependencies */ + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_dfu.h" +#include "usbd_ctlreq.h" + + +/** @addtogroup STM32_USB_DEVICE_LIBRARY + * @{ + */ + + +/** @defgroup USBD_DFU + * @brief usbd core module + * @{ + */ + +/** @defgroup USBD_DFU_Private_TypesDefinitions + * @{ + */ +/** + * @} + */ + + +/** @defgroup USBD_DFU_Private_Defines + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_DFU_Private_Macros + * @{ + */ + +/** + * @} + */ + + + + +/** @defgroup USBD_DFU_Private_FunctionPrototypes + * @{ + */ + + +static uint8_t USBD_DFU_Init(USBD_HandleTypeDef *pdev, + uint8_t cfgidx); + +static uint8_t USBD_DFU_DeInit(USBD_HandleTypeDef *pdev, + uint8_t cfgidx); + +static uint8_t USBD_DFU_Setup(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req); + +static uint8_t *USBD_DFU_GetCfgDesc(uint16_t *length); + +static uint8_t *USBD_DFU_GetDeviceQualifierDesc(uint16_t *length); + +static uint8_t USBD_DFU_DataIn(USBD_HandleTypeDef *pdev, uint8_t epnum); + +static uint8_t USBD_DFU_DataOut(USBD_HandleTypeDef *pdev, uint8_t epnum); + +static uint8_t USBD_DFU_EP0_RxReady(USBD_HandleTypeDef *pdev); + +static uint8_t USBD_DFU_EP0_TxReady(USBD_HandleTypeDef *pdev); + +static uint8_t USBD_DFU_SOF(USBD_HandleTypeDef *pdev); + +static uint8_t USBD_DFU_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum); + +static uint8_t USBD_DFU_IsoOutIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum); + +#if (USBD_SUPPORT_USER_STRING_DESC == 1U) +static uint8_t *USBD_DFU_GetUsrStringDesc(USBD_HandleTypeDef *pdev, uint8_t index, uint16_t *length); +#endif + +static void DFU_Detach(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); + +static void DFU_Download(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); + +static void DFU_Upload(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); + +static void DFU_GetStatus(USBD_HandleTypeDef *pdev); + +static void DFU_ClearStatus(USBD_HandleTypeDef *pdev); + +static void DFU_GetState(USBD_HandleTypeDef *pdev); + +static void DFU_Abort(USBD_HandleTypeDef *pdev); + +static void DFU_Leave(USBD_HandleTypeDef *pdev); + + +/** + * @} + */ + +/** @defgroup USBD_DFU_Private_Variables + * @{ + */ + +USBD_ClassTypeDef USBD_DFU = +{ + USBD_DFU_Init, + USBD_DFU_DeInit, + USBD_DFU_Setup, + USBD_DFU_EP0_TxReady, + USBD_DFU_EP0_RxReady, + USBD_DFU_DataIn, + USBD_DFU_DataOut, + USBD_DFU_SOF, + USBD_DFU_IsoINIncomplete, + USBD_DFU_IsoOutIncomplete, + USBD_DFU_GetCfgDesc, + USBD_DFU_GetCfgDesc, + USBD_DFU_GetCfgDesc, + USBD_DFU_GetDeviceQualifierDesc, +#if (USBD_SUPPORT_USER_STRING_DESC == 1U) + USBD_DFU_GetUsrStringDesc +#endif +}; + +/* USB DFU device Configuration Descriptor */ +__ALIGN_BEGIN static uint8_t USBD_DFU_CfgDesc[USB_DFU_CONFIG_DESC_SIZ] __ALIGN_END = +{ + 0x09, /* bLength: Configuation Descriptor size */ + USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType: Configuration */ + USB_DFU_CONFIG_DESC_SIZ, + /* wTotalLength: Bytes returned */ + 0x00, + 0x01, /*bNumInterfaces: 1 interface*/ + 0x01, /*bConfigurationValue: Configuration value*/ + 0x02, /*iConfiguration: Index of string descriptor describing the configuration*/ + 0xC0, /*bmAttributes: bus powered and Supprts Remote Wakeup */ + 0x32, /*MaxPower 100 mA: this current is used for detecting Vbus*/ + /* 09 */ + + /********** Descriptor of DFU interface 0 Alternate setting 0 **************/ + USBD_DFU_IF_DESC(0U), /* This interface is mandatory for all devices */ + +#if (USBD_DFU_MAX_ITF_NUM > 1U) + /********** Descriptor of DFU interface 0 Alternate setting 1 **************/ + USBD_DFU_IF_DESC(1), +#endif /* (USBD_DFU_MAX_ITF_NUM > 1) */ + +#if (USBD_DFU_MAX_ITF_NUM > 2U) + /********** Descriptor of DFU interface 0 Alternate setting 2 **************/ + USBD_DFU_IF_DESC(2), +#endif /* (USBD_DFU_MAX_ITF_NUM > 2) */ + +#if (USBD_DFU_MAX_ITF_NUM > 3U) + /********** Descriptor of DFU interface 0 Alternate setting 3 **************/ + USBD_DFU_IF_DESC(3), +#endif /* (USBD_DFU_MAX_ITF_NUM > 3) */ + +#if (USBD_DFU_MAX_ITF_NUM > 4U) + /********** Descriptor of DFU interface 0 Alternate setting 4 **************/ + USBD_DFU_IF_DESC(4), +#endif /* (USBD_DFU_MAX_ITF_NUM > 4) */ + +#if (USBD_DFU_MAX_ITF_NUM > 5U) + /********** Descriptor of DFU interface 0 Alternate setting 5 **************/ + USBD_DFU_IF_DESC(5), +#endif /* (USBD_DFU_MAX_ITF_NUM > 5) */ + +#if (USBD_DFU_MAX_ITF_NUM > 6U) +#error "ERROR: usbd_dfu_core.c: Modify the file to support more descriptors!" +#endif /* (USBD_DFU_MAX_ITF_NUM > 6) */ + + /******************** DFU Functional Descriptor********************/ + 0x09, /*blength = 9 Bytes*/ + DFU_DESCRIPTOR_TYPE, /* DFU Functional Descriptor*/ + 0x0B, /*bmAttribute + bitCanDnload = 1 (bit 0) + bitCanUpload = 1 (bit 1) + bitManifestationTolerant = 0 (bit 2) + bitWillDetach = 1 (bit 3) + Reserved (bit4-6) + bitAcceleratedST = 0 (bit 7)*/ + 0xFF, /*DetachTimeOut= 255 ms*/ + 0x00, + /*WARNING: In DMA mode the multiple MPS packets feature is still not supported + ==> In this case, when using DMA USBD_DFU_XFER_SIZE should be set to 64 in usbd_conf.h */ + TRANSFER_SIZE_BYTES(USBD_DFU_XFER_SIZE), /* TransferSize = 1024 Byte*/ + 0x1A, /* bcdDFUVersion*/ + 0x01 + /***********************************************************/ + /* 9*/ +}; + +/* USB Standard Device Descriptor */ +__ALIGN_BEGIN static uint8_t USBD_DFU_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] __ALIGN_END = +{ + USB_LEN_DEV_QUALIFIER_DESC, + USB_DESC_TYPE_DEVICE_QUALIFIER, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x40, + 0x01, + 0x00, +}; + +/** + * @} + */ + +/** @defgroup USBD_DFU_Private_Functions + * @{ + */ + +/** + * @brief USBD_DFU_Init + * Initialize the DFU interface + * @param pdev: device instance + * @param cfgidx: Configuration index + * @retval status + */ +static uint8_t USBD_DFU_Init(USBD_HandleTypeDef *pdev, + uint8_t cfgidx) +{ + USBD_DFU_HandleTypeDef *hdfu; + + /* Allocate Audio structure */ + pdev->pClassData = USBD_malloc(sizeof(USBD_DFU_HandleTypeDef)); + + if (pdev->pClassData == NULL) + { + return USBD_FAIL; + } + else + { + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + + hdfu->alt_setting = 0U; + hdfu->data_ptr = USBD_DFU_APP_DEFAULT_ADD; + hdfu->wblock_num = 0U; + hdfu->wlength = 0U; + + hdfu->manif_state = DFU_MANIFEST_COMPLETE; + hdfu->dev_state = DFU_STATE_IDLE; + + hdfu->dev_status[0] = DFU_ERROR_NONE; + hdfu->dev_status[1] = 0U; + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; + hdfu->dev_status[4] = DFU_STATE_IDLE; + hdfu->dev_status[5] = 0U; + + /* Initialize Hardware layer */ + if (((USBD_DFU_MediaTypeDef *)pdev->pUserData)->Init() != USBD_OK) + { + return USBD_FAIL; + } + } + return USBD_OK; +} + +/** + * @brief USBD_DFU_Init + * De-Initialize the DFU layer + * @param pdev: device instance + * @param cfgidx: Configuration index + * @retval status + */ +static uint8_t USBD_DFU_DeInit(USBD_HandleTypeDef *pdev, + uint8_t cfgidx) +{ + USBD_DFU_HandleTypeDef *hdfu; + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + + hdfu->wblock_num = 0U; + hdfu->wlength = 0U; + + hdfu->dev_state = DFU_STATE_IDLE; + hdfu->dev_status[0] = DFU_ERROR_NONE; + hdfu->dev_status[4] = DFU_STATE_IDLE; + + /* DeInit physical Interface components */ + if (pdev->pClassData != NULL) + { + /* De-Initialize Hardware layer */ + ((USBD_DFU_MediaTypeDef *)pdev->pUserData)->DeInit(); + USBD_free(pdev->pClassData); + pdev->pClassData = NULL; + } + + return USBD_OK; +} + +/** + * @brief USBD_DFU_Setup + * Handle the DFU specific requests + * @param pdev: instance + * @param req: usb requests + * @retval status + */ +static uint8_t USBD_DFU_Setup(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + USBD_DFU_HandleTypeDef *hdfu; + uint8_t *pbuf = 0U; + uint16_t len = 0U; + uint16_t status_info = 0U; + uint8_t ret = USBD_OK; + + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + { + case USB_REQ_TYPE_CLASS: + switch (req->bRequest) + { + case DFU_DNLOAD: + DFU_Download(pdev, req); + break; + + case DFU_UPLOAD: + DFU_Upload(pdev, req); + break; + + case DFU_GETSTATUS: + DFU_GetStatus(pdev); + break; + + case DFU_CLRSTATUS: + DFU_ClearStatus(pdev); + break; + + case DFU_GETSTATE: + DFU_GetState(pdev); + break; + + case DFU_ABORT: + DFU_Abort(pdev); + break; + + case DFU_DETACH: + DFU_Detach(pdev, req); + break; + + default: + USBD_CtlError(pdev, req); + ret = USBD_FAIL; + break; + } + break; + + case USB_REQ_TYPE_STANDARD: + switch (req->bRequest) + { + case USB_REQ_GET_STATUS: + if (pdev->dev_state == USBD_STATE_CONFIGURED) + { + USBD_CtlSendData(pdev, (uint8_t *)(void *)&status_info, 2U); + } + else + { + USBD_CtlError(pdev, req); + ret = USBD_FAIL; + } + break; + + case USB_REQ_GET_DESCRIPTOR: + if ((req->wValue >> 8) == DFU_DESCRIPTOR_TYPE) + { + pbuf = USBD_DFU_CfgDesc + (9U * (USBD_DFU_MAX_ITF_NUM + 1U)); + len = MIN(USB_DFU_DESC_SIZ, req->wLength); + } + + USBD_CtlSendData(pdev, pbuf, len); + break; + + case USB_REQ_GET_INTERFACE: + if (pdev->dev_state == USBD_STATE_CONFIGURED) + { + USBD_CtlSendData(pdev, (uint8_t *)(void *)&hdfu->alt_setting, 1U); + } + else + { + USBD_CtlError(pdev, req); + ret = USBD_FAIL; + } + break; + + case USB_REQ_SET_INTERFACE: + if ((uint8_t)(req->wValue) < USBD_DFU_MAX_ITF_NUM) + { + if (pdev->dev_state == USBD_STATE_CONFIGURED) + { + hdfu->alt_setting = (uint8_t)(req->wValue); + } + else + { + USBD_CtlError(pdev, req); + ret = USBD_FAIL; + } + } + else + { + /* Call the error management function (command will be nacked */ + USBD_CtlError(pdev, req); + ret = USBD_FAIL; + } + break; + + default: + USBD_CtlError(pdev, req); + ret = USBD_FAIL; + break; + } + break; + + default: + USBD_CtlError(pdev, req); + ret = USBD_FAIL; + break; + } + + return ret; +} + + +/** + * @brief USBD_DFU_GetCfgDesc + * return configuration descriptor + * @param speed : current device speed + * @param length : pointer data length + * @retval pointer to descriptor buffer + */ +static uint8_t *USBD_DFU_GetCfgDesc(uint16_t *length) +{ + *length = sizeof(USBD_DFU_CfgDesc); + return USBD_DFU_CfgDesc; +} + +/** + * @brief USBD_DFU_DataIn + * handle data IN Stage + * @param pdev: device instance + * @param epnum: endpoint index + * @retval status + */ +static uint8_t USBD_DFU_DataIn(USBD_HandleTypeDef *pdev, + uint8_t epnum) +{ + + return USBD_OK; +} + +/** + * @brief USBD_DFU_EP0_RxReady + * handle EP0 Rx Ready event + * @param pdev: device instance + * @retval status + */ +static uint8_t USBD_DFU_EP0_RxReady(USBD_HandleTypeDef *pdev) +{ + + return USBD_OK; +} +/** + * @brief USBD_DFU_EP0_TxReady + * handle EP0 TRx Ready event + * @param pdev: device instance + * @retval status + */ +static uint8_t USBD_DFU_EP0_TxReady(USBD_HandleTypeDef *pdev) +{ + uint32_t addr; + USBD_SetupReqTypedef req; + USBD_DFU_HandleTypeDef *hdfu; + + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + + if (hdfu->dev_state == DFU_STATE_DNLOAD_BUSY) + { + /* Decode the Special Command*/ + if (hdfu->wblock_num == 0U) + { + if ((hdfu->buffer.d8[0] == DFU_CMD_GETCOMMANDS) && (hdfu->wlength == 1U)) + { + + } + else if ((hdfu->buffer.d8[0] == DFU_CMD_SETADDRESSPOINTER) && (hdfu->wlength == 5U)) + { + hdfu->data_ptr = hdfu->buffer.d8[1]; + hdfu->data_ptr += (uint32_t)hdfu->buffer.d8[2] << 8; + hdfu->data_ptr += (uint32_t)hdfu->buffer.d8[3] << 16; + hdfu->data_ptr += (uint32_t)hdfu->buffer.d8[4] << 24; + } + else if ((hdfu->buffer.d8[0] == DFU_CMD_ERASE) && (hdfu->wlength == 5U)) + { + hdfu->data_ptr = hdfu->buffer.d8[1]; + hdfu->data_ptr += (uint32_t)hdfu->buffer.d8[2] << 8; + hdfu->data_ptr += (uint32_t)hdfu->buffer.d8[3] << 16; + hdfu->data_ptr += (uint32_t)hdfu->buffer.d8[4] << 24; + + if (((USBD_DFU_MediaTypeDef *)pdev->pUserData)->Erase(hdfu->data_ptr) != USBD_OK) + { + return USBD_FAIL; + } + } + else + { + /* Reset the global length and block number */ + hdfu->wlength = 0U; + hdfu->wblock_num = 0U; + /* Call the error management function (command will be nacked) */ + req.bmRequest = 0U; + req.wLength = 1U; + USBD_CtlError(pdev, &req); + } + } + /* Regular Download Command */ + else + { + if (hdfu->wblock_num > 1U) + { + /* Decode the required address */ + addr = ((hdfu->wblock_num - 2U) * USBD_DFU_XFER_SIZE) + hdfu->data_ptr; + + /* Preform the write operation */ + if (((USBD_DFU_MediaTypeDef *)pdev->pUserData)->Write(hdfu->buffer.d8, + (uint8_t *)addr, hdfu->wlength) != USBD_OK) + { + return USBD_FAIL; + } + } + } + + /* Reset the global length and block number */ + hdfu->wlength = 0U; + hdfu->wblock_num = 0U; + + /* Update the state machine */ + hdfu->dev_state = DFU_STATE_DNLOAD_SYNC; + + hdfu->dev_status[1] = 0U; + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; + hdfu->dev_status[4] = hdfu->dev_state; + return USBD_OK; + } + else + { + if (hdfu->dev_state == DFU_STATE_MANIFEST)/* Manifestation in progress */ + { + /* Start leaving DFU mode */ + DFU_Leave(pdev); + } + } + + return USBD_OK; +} +/** + * @brief USBD_DFU_SOF + * handle SOF event + * @param pdev: device instance + * @retval status + */ +static uint8_t USBD_DFU_SOF(USBD_HandleTypeDef *pdev) +{ + + return USBD_OK; +} +/** + * @brief USBD_DFU_IsoINIncomplete + * handle data ISO IN Incomplete event + * @param pdev: device instance + * @param epnum: endpoint index + * @retval status + */ +static uint8_t USBD_DFU_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum) +{ + + return USBD_OK; +} +/** + * @brief USBD_DFU_IsoOutIncomplete + * handle data ISO OUT Incomplete event + * @param pdev: device instance + * @param epnum: endpoint index + * @retval status + */ +static uint8_t USBD_DFU_IsoOutIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum) +{ + + return USBD_OK; +} +/** + * @brief USBD_DFU_DataOut + * handle data OUT Stage + * @param pdev: device instance + * @param epnum: endpoint index + * @retval status + */ +static uint8_t USBD_DFU_DataOut(USBD_HandleTypeDef *pdev, + uint8_t epnum) +{ + + return USBD_OK; +} + +/** +* @brief DeviceQualifierDescriptor +* return Device Qualifier descriptor +* @param length : pointer data length +* @retval pointer to descriptor buffer +*/ +static uint8_t *USBD_DFU_GetDeviceQualifierDesc(uint16_t *length) +{ + *length = sizeof(USBD_DFU_DeviceQualifierDesc); + return USBD_DFU_DeviceQualifierDesc; +} + +/** + * @brief USBD_DFU_GetUsrStringDesc + * Manages the transfer of memory interfaces string descriptors. + * @param speed : current device speed + * @param index: desciptor index + * @param length : pointer data length + * @retval pointer to the descriptor table or NULL if the descriptor is not supported. + */ +#if (USBD_SUPPORT_USER_STRING_DESC == 1U) +static uint8_t *USBD_DFU_GetUsrStringDesc(USBD_HandleTypeDef *pdev, uint8_t index, uint16_t *length) +{ + static uint8_t USBD_StrDesc[255]; + /* Check if the requested string interface is supported */ + if (index <= (USBD_IDX_INTERFACE_STR + USBD_DFU_MAX_ITF_NUM)) + { + USBD_GetString((uint8_t *)((USBD_DFU_MediaTypeDef *)pdev->pUserData)->pStrDesc, USBD_StrDesc, length); + return USBD_StrDesc; + } + /* Not supported Interface Descriptor index */ + else + { + return NULL; + } +} +#endif + +/** +* @brief USBD_MSC_RegisterStorage +* @param fops: storage callback +* @retval status +*/ +uint8_t USBD_DFU_RegisterMedia(USBD_HandleTypeDef *pdev, + USBD_DFU_MediaTypeDef *fops) +{ + if (fops != NULL) + { + pdev->pUserData = fops; + } + return 0U; +} + +/****************************************************************************** + DFU Class requests management +******************************************************************************/ +/** + * @brief DFU_Detach + * Handles the DFU DETACH request. + * @param pdev: device instance + * @param req: pointer to the request structure. + * @retval None. + */ +static void DFU_Detach(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + USBD_DFU_HandleTypeDef *hdfu; + + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + + if (hdfu->dev_state == DFU_STATE_IDLE || hdfu->dev_state == DFU_STATE_DNLOAD_SYNC + || hdfu->dev_state == DFU_STATE_DNLOAD_IDLE || hdfu->dev_state == DFU_STATE_MANIFEST_SYNC + || hdfu->dev_state == DFU_STATE_UPLOAD_IDLE) + { + /* Update the state machine */ + hdfu->dev_state = DFU_STATE_IDLE; + hdfu->dev_status[0] = DFU_ERROR_NONE; + hdfu->dev_status[1] = 0U; + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; /*bwPollTimeout=0ms*/ + hdfu->dev_status[4] = hdfu->dev_state; + hdfu->dev_status[5] = 0U; /*iString*/ + hdfu->wblock_num = 0U; + hdfu->wlength = 0U; + } + + /* Check the detach capability in the DFU functional descriptor */ + if ((USBD_DFU_CfgDesc[12U + (9U * USBD_DFU_MAX_ITF_NUM)]) & DFU_DETACH_MASK) + { + /* Perform an Attach-Detach operation on USB bus */ + USBD_Stop(pdev); + USBD_Start(pdev); + } + else + { + /* Wait for the period of time specified in Detach request */ + USBD_Delay((uint32_t)req->wValue); + } +} + +/** + * @brief DFU_Download + * Handles the DFU DNLOAD request. + * @param pdev: device instance + * @param req: pointer to the request structure + * @retval None + */ +static void DFU_Download(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + USBD_DFU_HandleTypeDef *hdfu; + + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + + /* Data setup request */ + if (req->wLength > 0U) + { + if ((hdfu->dev_state == DFU_STATE_IDLE) || (hdfu->dev_state == DFU_STATE_DNLOAD_IDLE)) + { + /* Update the global length and block number */ + hdfu->wblock_num = req->wValue; + hdfu->wlength = req->wLength; + + /* Update the state machine */ + hdfu->dev_state = DFU_STATE_DNLOAD_SYNC; + hdfu->dev_status[4] = hdfu->dev_state; + + /* Prepare the reception of the buffer over EP0 */ + USBD_CtlPrepareRx(pdev, (uint8_t *)hdfu->buffer.d8, + (uint16_t)hdfu->wlength); + } + /* Unsupported state */ + else + { + /* Call the error management function (command will be nacked */ + USBD_CtlError(pdev, req); + } + } + /* 0 Data DNLOAD request */ + else + { + /* End of DNLOAD operation*/ + if (hdfu->dev_state == DFU_STATE_DNLOAD_IDLE || hdfu->dev_state == DFU_STATE_IDLE) + { + hdfu->manif_state = DFU_MANIFEST_IN_PROGRESS; + hdfu->dev_state = DFU_STATE_MANIFEST_SYNC; + hdfu->dev_status[1] = 0U; + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; + hdfu->dev_status[4] = hdfu->dev_state; + } + else + { + /* Call the error management function (command will be nacked */ + USBD_CtlError(pdev, req); + } + } +} + +/** + * @brief DFU_Upload + * Handles the DFU UPLOAD request. + * @param pdev: instance + * @param req: pointer to the request structure + * @retval status + */ +static void DFU_Upload(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + USBD_DFU_HandleTypeDef *hdfu; + + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + + uint8_t *phaddr = NULL; + uint32_t addr = 0U; + + /* Data setup request */ + if (req->wLength > 0U) + { + if ((hdfu->dev_state == DFU_STATE_IDLE) || (hdfu->dev_state == DFU_STATE_UPLOAD_IDLE)) + { + /* Update the global length and block number */ + hdfu->wblock_num = req->wValue; + hdfu->wlength = req->wLength; + + /* DFU Get Command */ + if (hdfu->wblock_num == 0U) + { + /* Update the state machine */ + hdfu->dev_state = (hdfu->wlength > 3U) ? DFU_STATE_IDLE : DFU_STATE_UPLOAD_IDLE; + + hdfu->dev_status[1] = 0U; + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; + hdfu->dev_status[4] = hdfu->dev_state; + + /* Store the values of all supported commands */ + hdfu->buffer.d8[0] = DFU_CMD_GETCOMMANDS; + hdfu->buffer.d8[1] = DFU_CMD_SETADDRESSPOINTER; + hdfu->buffer.d8[2] = DFU_CMD_ERASE; + + /* Send the status data over EP0 */ + USBD_CtlSendData(pdev, (uint8_t *)(&(hdfu->buffer.d8[0])), 3U); + } + else if (hdfu->wblock_num > 1U) + { + hdfu->dev_state = DFU_STATE_UPLOAD_IDLE; + + hdfu->dev_status[1] = 0U; + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; + hdfu->dev_status[4] = hdfu->dev_state; + + addr = ((hdfu->wblock_num - 2U) * USBD_DFU_XFER_SIZE) + hdfu->data_ptr; /* Change is Accelerated*/ + + /* Return the physical address where data are stored */ + phaddr = ((USBD_DFU_MediaTypeDef *)pdev->pUserData)->Read((uint8_t *)addr, hdfu->buffer.d8, hdfu->wlength); + + /* Send the status data over EP0 */ + USBD_CtlSendData(pdev, phaddr, (uint16_t)hdfu->wlength); + } + else /* unsupported hdfu->wblock_num */ + { + hdfu->dev_state = DFU_ERROR_STALLEDPKT; + + hdfu->dev_status[1] = 0U; + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; + hdfu->dev_status[4] = hdfu->dev_state; + + /* Call the error management function (command will be nacked */ + USBD_CtlError(pdev, req); + } + } + /* Unsupported state */ + else + { + hdfu->wlength = 0U; + hdfu->wblock_num = 0U; + /* Call the error management function (command will be nacked */ + USBD_CtlError(pdev, req); + } + } + /* No Data setup request */ + else + { + hdfu->dev_state = DFU_STATE_IDLE; + + hdfu->dev_status[1] = 0U; + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; + hdfu->dev_status[4] = hdfu->dev_state; + } +} + +/** + * @brief DFU_GetStatus + * Handles the DFU GETSTATUS request. + * @param pdev: instance + * @retval status + */ +static void DFU_GetStatus(USBD_HandleTypeDef *pdev) +{ + USBD_DFU_HandleTypeDef *hdfu; + + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + + switch (hdfu->dev_state) + { + case DFU_STATE_DNLOAD_SYNC: + if (hdfu->wlength != 0U) + { + hdfu->dev_state = DFU_STATE_DNLOAD_BUSY; + + hdfu->dev_status[1] = 0U; + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; + hdfu->dev_status[4] = hdfu->dev_state; + + if ((hdfu->wblock_num == 0U) && (hdfu->buffer.d8[0] == DFU_CMD_ERASE)) + { + ((USBD_DFU_MediaTypeDef *)pdev->pUserData)->GetStatus(hdfu->data_ptr, DFU_MEDIA_ERASE, hdfu->dev_status); + } + else + { + ((USBD_DFU_MediaTypeDef *)pdev->pUserData)->GetStatus(hdfu->data_ptr, DFU_MEDIA_PROGRAM, hdfu->dev_status); + } + } + else /* (hdfu->wlength==0)*/ + { + hdfu->dev_state = DFU_STATE_DNLOAD_IDLE; + + hdfu->dev_status[1] = 0U; + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; + hdfu->dev_status[4] = hdfu->dev_state; + } + break; + + case DFU_STATE_MANIFEST_SYNC : + if (hdfu->manif_state == DFU_MANIFEST_IN_PROGRESS) + { + hdfu->dev_state = DFU_STATE_MANIFEST; + + hdfu->dev_status[1] = 1U; /*bwPollTimeout = 1ms*/ + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; + hdfu->dev_status[4] = hdfu->dev_state; + } + else + { + if ((hdfu->manif_state == DFU_MANIFEST_COMPLETE) && + ((USBD_DFU_CfgDesc[(11U + (9U * USBD_DFU_MAX_ITF_NUM))]) & 0x04U)) + { + hdfu->dev_state = DFU_STATE_IDLE; + + hdfu->dev_status[1] = 0U; + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; + hdfu->dev_status[4] = hdfu->dev_state; + } + } + break; + + default : + break; + } + + /* Send the status data over EP0 */ + USBD_CtlSendData(pdev, (uint8_t *)(&(hdfu->dev_status[0])), 6U); +} + +/** + * @brief DFU_ClearStatus + * Handles the DFU CLRSTATUS request. + * @param pdev: device instance + * @retval status + */ +static void DFU_ClearStatus(USBD_HandleTypeDef *pdev) +{ + USBD_DFU_HandleTypeDef *hdfu; + + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + + if (hdfu->dev_state == DFU_STATE_ERROR) + { + hdfu->dev_state = DFU_STATE_IDLE; + hdfu->dev_status[0] = DFU_ERROR_NONE;/*bStatus*/ + hdfu->dev_status[1] = 0U; + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; /*bwPollTimeout=0ms*/ + hdfu->dev_status[4] = hdfu->dev_state;/*bState*/ + hdfu->dev_status[5] = 0U;/*iString*/ + } + else + { + /*State Error*/ + hdfu->dev_state = DFU_STATE_ERROR; + hdfu->dev_status[0] = DFU_ERROR_UNKNOWN;/*bStatus*/ + hdfu->dev_status[1] = 0U; + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; /*bwPollTimeout=0ms*/ + hdfu->dev_status[4] = hdfu->dev_state;/*bState*/ + hdfu->dev_status[5] = 0U;/*iString*/ + } +} + +/** + * @brief DFU_GetState + * Handles the DFU GETSTATE request. + * @param pdev: device instance + * @retval None + */ +static void DFU_GetState(USBD_HandleTypeDef *pdev) +{ + USBD_DFU_HandleTypeDef *hdfu; + + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + + /* Return the current state of the DFU interface */ + USBD_CtlSendData(pdev, &hdfu->dev_state, 1U); +} + +/** + * @brief DFU_Abort + * Handles the DFU ABORT request. + * @param pdev: device instance + * @retval None + */ +static void DFU_Abort(USBD_HandleTypeDef *pdev) +{ + USBD_DFU_HandleTypeDef *hdfu; + + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + + if (hdfu->dev_state == DFU_STATE_IDLE || hdfu->dev_state == DFU_STATE_DNLOAD_SYNC + || hdfu->dev_state == DFU_STATE_DNLOAD_IDLE || hdfu->dev_state == DFU_STATE_MANIFEST_SYNC + || hdfu->dev_state == DFU_STATE_UPLOAD_IDLE) + { + hdfu->dev_state = DFU_STATE_IDLE; + hdfu->dev_status[0] = DFU_ERROR_NONE; + hdfu->dev_status[1] = 0U; + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; /*bwPollTimeout=0ms*/ + hdfu->dev_status[4] = hdfu->dev_state; + hdfu->dev_status[5] = 0U; /*iString*/ + hdfu->wblock_num = 0U; + hdfu->wlength = 0U; + } +} + +/** + * @brief DFU_Leave + * Handles the sub-protocol DFU leave DFU mode request (leaves DFU mode + * and resets device to jump to user loaded code). + * @param pdev: device instance + * @retval None + */ +static void DFU_Leave(USBD_HandleTypeDef *pdev) +{ + USBD_DFU_HandleTypeDef *hdfu; + + hdfu = (USBD_DFU_HandleTypeDef *) pdev->pClassData; + + hdfu->manif_state = DFU_MANIFEST_COMPLETE; + + if ((USBD_DFU_CfgDesc[(11U + (9U * USBD_DFU_MAX_ITF_NUM))]) & 0x04U) + { + hdfu->dev_state = DFU_STATE_MANIFEST_SYNC; + + hdfu->dev_status[1] = 0U; + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; + hdfu->dev_status[4] = hdfu->dev_state; + return; + } + else + { + hdfu->dev_state = DFU_STATE_MANIFEST_WAIT_RESET; + + hdfu->dev_status[1] = 0U; + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; + hdfu->dev_status[4] = hdfu->dev_state; + + /* Disconnect the USB device */ + USBD_Stop(pdev); + + /* DeInitilialize the MAL(Media Access Layer) */ + ((USBD_DFU_MediaTypeDef *)pdev->pUserData)->DeInit(); + + /* Generate system reset to allow jumping to the user code */ + NVIC_SystemReset(); + + /* The next instructions will not be reached (system reset) */ + } +} + +/** + * @} + */ + + +/** + * @} + */ + + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h b/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h new file mode 100644 index 0000000..2392815 --- /dev/null +++ b/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h @@ -0,0 +1,161 @@ +/** + ****************************************************************************** + * @file usbd_core.h + * @author MCD Application Team + * @brief Header file for usbd_core.c file + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2015 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USBD_CORE_H +#define __USBD_CORE_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_conf.h" +#include "usbd_def.h" +#include "usbd_ioreq.h" +#include "usbd_ctlreq.h" + +/** @addtogroup STM32_USB_DEVICE_LIBRARY + * @{ + */ + +/** @defgroup USBD_CORE + * @brief This file is the Header file for usbd_core.c file + * @{ + */ + + +/** @defgroup USBD_CORE_Exported_Defines + * @{ + */ +#ifndef USBD_DEBUG_LEVEL +#define USBD_DEBUG_LEVEL 0U +#endif /* USBD_DEBUG_LEVEL */ +/** + * @} + */ + + +/** @defgroup USBD_CORE_Exported_TypesDefinitions + * @{ + */ + + +/** + * @} + */ + + + +/** @defgroup USBD_CORE_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup USBD_CORE_Exported_Variables + * @{ + */ +#define USBD_SOF USBD_LL_SOF +/** + * @} + */ + +/** @defgroup USBD_CORE_Exported_FunctionsPrototype + * @{ + */ +USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, USBD_DescriptorsTypeDef *pdesc, uint8_t id); +USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_Start(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_Stop(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass); + +USBD_StatusTypeDef USBD_RunTestMode(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx); +USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx); + +USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup); +USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev, uint8_t epnum, uint8_t *pdata); +USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, uint8_t epnum, uint8_t *pdata); + +USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, USBD_SpeedTypeDef speed); +USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev); + +USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum); +USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum); + +USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev); + +/* USBD Low Level Driver */ +USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_LL_DeInit(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_LL_Stop(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, + uint8_t ep_addr, + uint8_t ep_type, + uint16_t ep_mps); + +USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr); +USBD_StatusTypeDef USBD_LL_FlushEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr); +USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr); +USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr); +uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr); +USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr); +USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, + uint8_t ep_addr, + uint8_t *pbuf, + uint16_t size); + +USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, + uint8_t ep_addr, + uint8_t *pbuf, + uint16_t size); + +uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr); +void USBD_LL_Delay(uint32_t Delay); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __USBD_CORE_H */ + +/** + * @} + */ + +/** +* @} +*/ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + + + diff --git a/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h b/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h new file mode 100644 index 0000000..047fe2e --- /dev/null +++ b/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h @@ -0,0 +1,105 @@ +/** + ****************************************************************************** + * @file usbd_req.h + * @author MCD Application Team + * @brief Header file for the usbd_req.c file + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2015 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_REQUEST_H +#define __USB_REQUEST_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_def.h" + + +/** @addtogroup STM32_USB_DEVICE_LIBRARY + * @{ + */ + +/** @defgroup USBD_REQ + * @brief header file for the usbd_req.c file + * @{ + */ + +/** @defgroup USBD_REQ_Exported_Defines + * @{ + */ +/** + * @} + */ + + +/** @defgroup USBD_REQ_Exported_Types + * @{ + */ +/** + * @} + */ + + + +/** @defgroup USBD_REQ_Exported_Macros + * @{ + */ +/** + * @} + */ + +/** @defgroup USBD_REQ_Exported_Variables + * @{ + */ +/** + * @} + */ + +/** @defgroup USBD_REQ_Exported_FunctionsPrototype + * @{ + */ + +USBD_StatusTypeDef USBD_StdDevReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); +USBD_StatusTypeDef USBD_StdItfReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); +USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); + + +void USBD_CtlError(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); + +void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata); + +void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len); +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __USB_REQUEST_H */ + +/** + * @} + */ + +/** +* @} +*/ + + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h b/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h new file mode 100644 index 0000000..a805e8b --- /dev/null +++ b/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h @@ -0,0 +1,348 @@ +/** + ****************************************************************************** + * @file usbd_def.h + * @author MCD Application Team + * @brief General defines for the usb device library + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2015 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USBD_DEF_H +#define __USBD_DEF_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_conf.h" + +/** @addtogroup STM32_USBD_DEVICE_LIBRARY + * @{ + */ + +/** @defgroup USB_DEF + * @brief general defines for the usb device library file + * @{ + */ + +/** @defgroup USB_DEF_Exported_Defines + * @{ + */ + +#ifndef NULL +#define NULL 0U +#endif /* NULL */ + +#ifndef USBD_MAX_NUM_INTERFACES +#define USBD_MAX_NUM_INTERFACES 1U +#endif /* USBD_MAX_NUM_CONFIGURATION */ + +#ifndef USBD_MAX_NUM_CONFIGURATION +#define USBD_MAX_NUM_CONFIGURATION 1U +#endif /* USBD_MAX_NUM_CONFIGURATION */ + +#ifndef USBD_LPM_ENABLED +#define USBD_LPM_ENABLED 0U +#endif /* USBD_LPM_ENABLED */ + +#ifndef USBD_SELF_POWERED +#define USBD_SELF_POWERED 1U +#endif /*USBD_SELF_POWERED */ + +#ifndef USBD_SUPPORT_USER_STRING_DESC +#define USBD_SUPPORT_USER_STRING_DESC 0U +#endif /* USBD_SUPPORT_USER_STRING_DESC */ + +#define USB_LEN_DEV_QUALIFIER_DESC 0x0AU +#define USB_LEN_DEV_DESC 0x12U +#define USB_LEN_CFG_DESC 0x09U +#define USB_LEN_IF_DESC 0x09U +#define USB_LEN_EP_DESC 0x07U +#define USB_LEN_OTG_DESC 0x03U +#define USB_LEN_LANGID_STR_DESC 0x04U +#define USB_LEN_OTHER_SPEED_DESC_SIZ 0x09U + +#define USBD_IDX_LANGID_STR 0x00U +#define USBD_IDX_MFC_STR 0x01U +#define USBD_IDX_PRODUCT_STR 0x02U +#define USBD_IDX_SERIAL_STR 0x03U +#define USBD_IDX_CONFIG_STR 0x04U +#define USBD_IDX_INTERFACE_STR 0x05U + +#define USB_REQ_TYPE_STANDARD 0x00U +#define USB_REQ_TYPE_CLASS 0x20U +#define USB_REQ_TYPE_VENDOR 0x40U +#define USB_REQ_TYPE_MASK 0x60U + +#define USB_REQ_RECIPIENT_DEVICE 0x00U +#define USB_REQ_RECIPIENT_INTERFACE 0x01U +#define USB_REQ_RECIPIENT_ENDPOINT 0x02U +#define USB_REQ_RECIPIENT_MASK 0x03U + +#define USB_REQ_GET_STATUS 0x00U +#define USB_REQ_CLEAR_FEATURE 0x01U +#define USB_REQ_SET_FEATURE 0x03U +#define USB_REQ_SET_ADDRESS 0x05U +#define USB_REQ_GET_DESCRIPTOR 0x06U +#define USB_REQ_SET_DESCRIPTOR 0x07U +#define USB_REQ_GET_CONFIGURATION 0x08U +#define USB_REQ_SET_CONFIGURATION 0x09U +#define USB_REQ_GET_INTERFACE 0x0AU +#define USB_REQ_SET_INTERFACE 0x0BU +#define USB_REQ_SYNCH_FRAME 0x0CU + +#define USB_DESC_TYPE_DEVICE 0x01U +#define USB_DESC_TYPE_CONFIGURATION 0x02U +#define USB_DESC_TYPE_STRING 0x03U +#define USB_DESC_TYPE_INTERFACE 0x04U +#define USB_DESC_TYPE_ENDPOINT 0x05U +#define USB_DESC_TYPE_DEVICE_QUALIFIER 0x06U +#define USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION 0x07U +#define USB_DESC_TYPE_BOS 0x0FU + +#define USB_CONFIG_REMOTE_WAKEUP 0x02U +#define USB_CONFIG_SELF_POWERED 0x01U + +#define USB_FEATURE_EP_HALT 0x00U +#define USB_FEATURE_REMOTE_WAKEUP 0x01U +#define USB_FEATURE_TEST_MODE 0x02U + +#define USB_DEVICE_CAPABITY_TYPE 0x10U + +#define USB_HS_MAX_PACKET_SIZE 512U +#define USB_FS_MAX_PACKET_SIZE 64U +#define USB_MAX_EP0_SIZE 64U + +/* Device Status */ +#define USBD_STATE_DEFAULT 0x01U +#define USBD_STATE_ADDRESSED 0x02U +#define USBD_STATE_CONFIGURED 0x03U +#define USBD_STATE_SUSPENDED 0x04U + + +/* EP0 State */ +#define USBD_EP0_IDLE 0x00U +#define USBD_EP0_SETUP 0x01U +#define USBD_EP0_DATA_IN 0x02U +#define USBD_EP0_DATA_OUT 0x03U +#define USBD_EP0_STATUS_IN 0x04U +#define USBD_EP0_STATUS_OUT 0x05U +#define USBD_EP0_STALL 0x06U + +#define USBD_EP_TYPE_CTRL 0x00U +#define USBD_EP_TYPE_ISOC 0x01U +#define USBD_EP_TYPE_BULK 0x02U +#define USBD_EP_TYPE_INTR 0x03U + + +/** + * @} + */ + + +/** @defgroup USBD_DEF_Exported_TypesDefinitions + * @{ + */ + +typedef struct usb_setup_req +{ + uint8_t bmRequest; + uint8_t bRequest; + uint16_t wValue; + uint16_t wIndex; + uint16_t wLength; +} USBD_SetupReqTypedef; + +struct _USBD_HandleTypeDef; + +typedef struct _Device_cb +{ + uint8_t (*Init)(struct _USBD_HandleTypeDef *pdev, uint8_t cfgidx); + uint8_t (*DeInit)(struct _USBD_HandleTypeDef *pdev, uint8_t cfgidx); + /* Control Endpoints*/ + uint8_t (*Setup)(struct _USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); + uint8_t (*EP0_TxSent)(struct _USBD_HandleTypeDef *pdev); + uint8_t (*EP0_RxReady)(struct _USBD_HandleTypeDef *pdev); + /* Class Specific Endpoints*/ + uint8_t (*DataIn)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum); + uint8_t (*DataOut)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum); + uint8_t (*SOF)(struct _USBD_HandleTypeDef *pdev); + uint8_t (*IsoINIncomplete)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum); + uint8_t (*IsoOUTIncomplete)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum); + + uint8_t *(*GetHSConfigDescriptor)(uint16_t *length); + uint8_t *(*GetFSConfigDescriptor)(uint16_t *length); + uint8_t *(*GetOtherSpeedConfigDescriptor)(uint16_t *length); + uint8_t *(*GetDeviceQualifierDescriptor)(uint16_t *length); +#if (USBD_SUPPORT_USER_STRING_DESC == 1U) + uint8_t *(*GetUsrStrDescriptor)(struct _USBD_HandleTypeDef *pdev, uint8_t index, uint16_t *length); +#endif + +} USBD_ClassTypeDef; + +/* Following USB Device Speed */ +typedef enum +{ + USBD_SPEED_HIGH = 0U, + USBD_SPEED_FULL = 1U, + USBD_SPEED_LOW = 2U, +} USBD_SpeedTypeDef; + +/* Following USB Device status */ +typedef enum +{ + USBD_OK = 0U, + USBD_BUSY, + USBD_FAIL, +} USBD_StatusTypeDef; + +/* USB Device descriptors structure */ +typedef struct +{ + uint8_t *(*GetDeviceDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); + uint8_t *(*GetLangIDStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); + uint8_t *(*GetManufacturerStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); + uint8_t *(*GetProductStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); + uint8_t *(*GetSerialStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); + uint8_t *(*GetConfigurationStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); + uint8_t *(*GetInterfaceStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); +#if (USBD_LPM_ENABLED == 1U) + uint8_t *(*GetBOSDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); +#endif +} USBD_DescriptorsTypeDef; + +/* USB Device handle structure */ +typedef struct +{ + uint32_t status; + uint32_t is_used; + uint32_t total_length; + uint32_t rem_length; + uint32_t maxpacket; +} USBD_EndpointTypeDef; + +/* USB Device handle structure */ +typedef struct _USBD_HandleTypeDef +{ + uint8_t id; + uint32_t dev_config; + uint32_t dev_default_config; + uint32_t dev_config_status; + USBD_SpeedTypeDef dev_speed; + USBD_EndpointTypeDef ep_in[16]; + USBD_EndpointTypeDef ep_out[16]; + uint32_t ep0_state; + uint32_t ep0_data_len; + uint8_t dev_state; + uint8_t dev_old_state; + uint8_t dev_address; + uint8_t dev_connection_status; + uint8_t dev_test_mode; + uint32_t dev_remote_wakeup; + + USBD_SetupReqTypedef request; + USBD_DescriptorsTypeDef *pDesc; + USBD_ClassTypeDef *pClass; + void *pClassData; + void *pUserData; + void *pData; +} USBD_HandleTypeDef; + +/** + * @} + */ + + + +/** @defgroup USBD_DEF_Exported_Macros + * @{ + */ +#define SWAPBYTE(addr) (((uint16_t)(*((uint8_t *)(addr)))) + \ + (((uint16_t)(*(((uint8_t *)(addr)) + 1U))) << 8U)) + +#define LOBYTE(x) ((uint8_t)((x) & 0x00FFU)) +#define HIBYTE(x) ((uint8_t)(((x) & 0xFF00U) >> 8U)) +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) + + +#if defined ( __GNUC__ ) +#ifndef __weak +#define __weak __attribute__((weak)) +#endif /* __weak */ +#ifndef __packed +#define __packed __attribute__((__packed__)) +#endif /* __packed */ +#endif /* __GNUC__ */ + + +/* In HS mode and when the DMA is used, all variables and data structures dealing + with the DMA during the transaction process should be 4-bytes aligned */ + +#if defined ( __GNUC__ ) && !defined (__CC_ARM) /* GNU Compiler */ +#ifndef __ALIGN_END +#define __ALIGN_END __attribute__ ((aligned (4U))) +#endif /* __ALIGN_END */ +#ifndef __ALIGN_BEGIN +#define __ALIGN_BEGIN +#endif /* __ALIGN_BEGIN */ +#else +#ifndef __ALIGN_END +#define __ALIGN_END +#endif /* __ALIGN_END */ +#ifndef __ALIGN_BEGIN +#if defined (__CC_ARM) /* ARM Compiler */ +#define __ALIGN_BEGIN __align(4U) +#elif defined (__ICCARM__) /* IAR Compiler */ +#define __ALIGN_BEGIN +#endif /* __CC_ARM */ +#endif /* __ALIGN_BEGIN */ +#endif /* __GNUC__ */ + + +/** + * @} + */ + +/** @defgroup USBD_DEF_Exported_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup USBD_DEF_Exported_FunctionsPrototype + * @{ + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __USBD_DEF_H */ + +/** + * @} + */ + +/** +* @} +*/ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h b/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h new file mode 100644 index 0000000..629369e --- /dev/null +++ b/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h @@ -0,0 +1,119 @@ +/** + ****************************************************************************** + * @file usbd_ioreq.h + * @author MCD Application Team + * @brief Header file for the usbd_ioreq.c file + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2015 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USBD_IOREQ_H +#define __USBD_IOREQ_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_def.h" +#include "usbd_core.h" + +/** @addtogroup STM32_USB_DEVICE_LIBRARY + * @{ + */ + +/** @defgroup USBD_IOREQ + * @brief header file for the usbd_ioreq.c file + * @{ + */ + +/** @defgroup USBD_IOREQ_Exported_Defines + * @{ + */ +/** + * @} + */ + + +/** @defgroup USBD_IOREQ_Exported_Types + * @{ + */ + + +/** + * @} + */ + + + +/** @defgroup USBD_IOREQ_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup USBD_IOREQ_Exported_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup USBD_IOREQ_Exported_FunctionsPrototype + * @{ + */ + +USBD_StatusTypeDef USBD_CtlSendData(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, + uint16_t len); + +USBD_StatusTypeDef USBD_CtlContinueSendData(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, + uint16_t len); + +USBD_StatusTypeDef USBD_CtlPrepareRx(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, + uint16_t len); + +USBD_StatusTypeDef USBD_CtlContinueRx(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, + uint16_t len); + +USBD_StatusTypeDef USBD_CtlSendStatus(USBD_HandleTypeDef *pdev); + +USBD_StatusTypeDef USBD_CtlReceiveStatus(USBD_HandleTypeDef *pdev); + +uint32_t USBD_GetRxCount(USBD_HandleTypeDef *pdev, uint8_t ep_addr); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __USBD_IOREQ_H */ + +/** + * @} + */ + +/** +* @} +*/ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c b/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c new file mode 100644 index 0000000..ca87977 --- /dev/null +++ b/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c @@ -0,0 +1,611 @@ +/** + ****************************************************************************** + * @file usbd_core.c + * @author MCD Application Team + * @brief This file provides all the USBD core functions. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2015 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_core.h" + +/** @addtogroup STM32_USBD_DEVICE_LIBRARY +* @{ +*/ + + +/** @defgroup USBD_CORE +* @brief usbd core module +* @{ +*/ + +/** @defgroup USBD_CORE_Private_TypesDefinitions +* @{ +*/ + +/** +* @} +*/ + + +/** @defgroup USBD_CORE_Private_Defines +* @{ +*/ + +/** +* @} +*/ + + +/** @defgroup USBD_CORE_Private_Macros +* @{ +*/ + +/** +* @} +*/ + + +/** @defgroup USBD_CORE_Private_FunctionPrototypes +* @{ +*/ + +/** +* @} +*/ + +/** @defgroup USBD_CORE_Private_Variables +* @{ +*/ + +/** +* @} +*/ + + +/** @defgroup USBD_CORE_Private_Functions +* @{ +*/ + +/** +* @brief USBD_Init +* Initializes the device stack and load the class driver +* @param pdev: device instance +* @param pdesc: Descriptor structure address +* @param id: Low level core index +* @retval None +*/ +USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, + USBD_DescriptorsTypeDef *pdesc, uint8_t id) +{ + /* Check whether the USB Host handle is valid */ + if (pdev == NULL) + { +#if (USBD_DEBUG_LEVEL > 1U) + USBD_ErrLog("Invalid Device handle"); +#endif + return USBD_FAIL; + } + + /* Unlink previous class*/ + if (pdev->pClass != NULL) + { + pdev->pClass = NULL; + } + + /* Assign USBD Descriptors */ + if (pdesc != NULL) + { + pdev->pDesc = pdesc; + } + + /* Set Device initial State */ + pdev->dev_state = USBD_STATE_DEFAULT; + pdev->id = id; + /* Initialize low level driver */ + USBD_LL_Init(pdev); + + return USBD_OK; +} + +/** +* @brief USBD_DeInit +* Re-Initialize th device library +* @param pdev: device instance +* @retval status: status +*/ +USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev) +{ + /* Set Default State */ + pdev->dev_state = USBD_STATE_DEFAULT; + + /* Free Class Resources */ + pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config); + + /* Stop the low level driver */ + USBD_LL_Stop(pdev); + + /* Initialize low level driver */ + USBD_LL_DeInit(pdev); + + return USBD_OK; +} + +/** + * @brief USBD_RegisterClass + * Link class driver to Device Core. + * @param pDevice : Device Handle + * @param pclass: Class handle + * @retval USBD Status + */ +USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass) +{ + USBD_StatusTypeDef status = USBD_OK; + if (pclass != NULL) + { + /* link the class to the USB Device handle */ + pdev->pClass = pclass; + status = USBD_OK; + } + else + { +#if (USBD_DEBUG_LEVEL > 1U) + USBD_ErrLog("Invalid Class handle"); +#endif + status = USBD_FAIL; + } + + return status; +} + +/** + * @brief USBD_Start + * Start the USB Device Core. + * @param pdev: Device Handle + * @retval USBD Status + */ +USBD_StatusTypeDef USBD_Start(USBD_HandleTypeDef *pdev) +{ + /* Start the low level driver */ + USBD_LL_Start(pdev); + + return USBD_OK; +} + +/** + * @brief USBD_Stop + * Stop the USB Device Core. + * @param pdev: Device Handle + * @retval USBD Status + */ +USBD_StatusTypeDef USBD_Stop(USBD_HandleTypeDef *pdev) +{ + /* Free Class Resources */ + pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config); + + /* Stop the low level driver */ + USBD_LL_Stop(pdev); + + return USBD_OK; +} + +/** +* @brief USBD_RunTestMode +* Launch test mode process +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_RunTestMode(USBD_HandleTypeDef *pdev) +{ + /* Prevent unused argument compilation warning */ + UNUSED(pdev); + + return USBD_OK; +} + +/** +* @brief USBD_SetClassConfig +* Configure device and start the interface +* @param pdev: device instance +* @param cfgidx: configuration index +* @retval status +*/ + +USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx) +{ + USBD_StatusTypeDef ret = USBD_FAIL; + + if (pdev->pClass != NULL) + { + /* Set configuration and Start the Class*/ + if (pdev->pClass->Init(pdev, cfgidx) == 0U) + { + ret = USBD_OK; + } + } + + return ret; +} + +/** +* @brief USBD_ClrClassConfig +* Clear current configuration +* @param pdev: device instance +* @param cfgidx: configuration index +* @retval status: USBD_StatusTypeDef +*/ +USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx) +{ + /* Clear configuration and De-initialize the Class process*/ + pdev->pClass->DeInit(pdev, cfgidx); + + return USBD_OK; +} + + +/** +* @brief USBD_SetupStage +* Handle the setup stage +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup) +{ + USBD_ParseSetupRequest(&pdev->request, psetup); + + pdev->ep0_state = USBD_EP0_SETUP; + + pdev->ep0_data_len = pdev->request.wLength; + + switch (pdev->request.bmRequest & 0x1FU) + { + case USB_REQ_RECIPIENT_DEVICE: + USBD_StdDevReq(pdev, &pdev->request); + break; + + case USB_REQ_RECIPIENT_INTERFACE: + USBD_StdItfReq(pdev, &pdev->request); + break; + + case USB_REQ_RECIPIENT_ENDPOINT: + USBD_StdEPReq(pdev, &pdev->request); + break; + + default: + USBD_LL_StallEP(pdev, (pdev->request.bmRequest & 0x80U)); + break; + } + + return USBD_OK; +} + +/** +* @brief USBD_DataOutStage +* Handle data OUT stage +* @param pdev: device instance +* @param epnum: endpoint index +* @retval status +*/ +USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev, + uint8_t epnum, uint8_t *pdata) +{ + USBD_EndpointTypeDef *pep; + + if (epnum == 0U) + { + pep = &pdev->ep_out[0]; + + if (pdev->ep0_state == USBD_EP0_DATA_OUT) + { + if (pep->rem_length > pep->maxpacket) + { + pep->rem_length -= pep->maxpacket; + + USBD_CtlContinueRx(pdev, pdata, + (uint16_t)MIN(pep->rem_length, pep->maxpacket)); + } + else + { + if ((pdev->pClass->EP0_RxReady != NULL) && + (pdev->dev_state == USBD_STATE_CONFIGURED)) + { + pdev->pClass->EP0_RxReady(pdev); + } + USBD_CtlSendStatus(pdev); + } + } + else + { + if (pdev->ep0_state == USBD_EP0_STATUS_OUT) + { + /* + * STATUS PHASE completed, update ep0_state to idle + */ + pdev->ep0_state = USBD_EP0_IDLE; + USBD_LL_StallEP(pdev, 0U); + } + } + } + else if ((pdev->pClass->DataOut != NULL) && + (pdev->dev_state == USBD_STATE_CONFIGURED)) + { + pdev->pClass->DataOut(pdev, epnum); + } + else + { + /* should never be in this condition */ + return USBD_FAIL; + } + + return USBD_OK; +} + +/** +* @brief USBD_DataInStage +* Handle data in stage +* @param pdev: device instance +* @param epnum: endpoint index +* @retval status +*/ +USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, + uint8_t epnum, uint8_t *pdata) +{ + USBD_EndpointTypeDef *pep; + + if (epnum == 0U) + { + pep = &pdev->ep_in[0]; + + if (pdev->ep0_state == USBD_EP0_DATA_IN) + { + if (pep->rem_length > pep->maxpacket) + { + pep->rem_length -= pep->maxpacket; + + USBD_CtlContinueSendData(pdev, pdata, (uint16_t)pep->rem_length); + + /* Prepare endpoint for premature end of transfer */ + USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); + } + else + { + /* last packet is MPS multiple, so send ZLP packet */ + if ((pep->total_length % pep->maxpacket == 0U) && + (pep->total_length >= pep->maxpacket) && + (pep->total_length < pdev->ep0_data_len)) + { + USBD_CtlContinueSendData(pdev, NULL, 0U); + pdev->ep0_data_len = 0U; + + /* Prepare endpoint for premature end of transfer */ + USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); + } + else + { + if ((pdev->pClass->EP0_TxSent != NULL) && + (pdev->dev_state == USBD_STATE_CONFIGURED)) + { + pdev->pClass->EP0_TxSent(pdev); + } + USBD_LL_StallEP(pdev, 0x80U); + USBD_CtlReceiveStatus(pdev); + } + } + } + else + { + if ((pdev->ep0_state == USBD_EP0_STATUS_IN) || + (pdev->ep0_state == USBD_EP0_IDLE)) + { + USBD_LL_StallEP(pdev, 0x80U); + } + } + + if (pdev->dev_test_mode == 1U) + { + USBD_RunTestMode(pdev); + pdev->dev_test_mode = 0U; + } + } + else if ((pdev->pClass->DataIn != NULL) && + (pdev->dev_state == USBD_STATE_CONFIGURED)) + { + pdev->pClass->DataIn(pdev, epnum); + } + else + { + /* should never be in this condition */ + return USBD_FAIL; + } + + return USBD_OK; +} + +/** +* @brief USBD_LL_Reset +* Handle Reset event +* @param pdev: device instance +* @retval status +*/ + +USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev) +{ + /* Open EP0 OUT */ + USBD_LL_OpenEP(pdev, 0x00U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE); + pdev->ep_out[0x00U & 0xFU].is_used = 1U; + + pdev->ep_out[0].maxpacket = USB_MAX_EP0_SIZE; + + /* Open EP0 IN */ + USBD_LL_OpenEP(pdev, 0x80U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE); + pdev->ep_in[0x80U & 0xFU].is_used = 1U; + + pdev->ep_in[0].maxpacket = USB_MAX_EP0_SIZE; + + /* Upon Reset call user call back */ + pdev->dev_state = USBD_STATE_DEFAULT; + pdev->ep0_state = USBD_EP0_IDLE; + pdev->dev_config = 0U; + pdev->dev_remote_wakeup = 0U; + + if (pdev->pClassData) + { + pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config); + } + + return USBD_OK; +} + +/** +* @brief USBD_LL_Reset +* Handle Reset event +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, + USBD_SpeedTypeDef speed) +{ + pdev->dev_speed = speed; + + return USBD_OK; +} + +/** +* @brief USBD_Suspend +* Handle Suspend event +* @param pdev: device instance +* @retval status +*/ + +USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev) +{ + pdev->dev_old_state = pdev->dev_state; + pdev->dev_state = USBD_STATE_SUSPENDED; + + return USBD_OK; +} + +/** +* @brief USBD_Resume +* Handle Resume event +* @param pdev: device instance +* @retval status +*/ + +USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev) +{ + if (pdev->dev_state == USBD_STATE_SUSPENDED) + { + pdev->dev_state = pdev->dev_old_state; + } + + return USBD_OK; +} + +/** +* @brief USBD_SOF +* Handle SOF event +* @param pdev: device instance +* @retval status +*/ + +USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev) +{ + if (pdev->dev_state == USBD_STATE_CONFIGURED) + { + if (pdev->pClass->SOF != NULL) + { + pdev->pClass->SOF(pdev); + } + } + + return USBD_OK; +} + +/** +* @brief USBD_IsoINIncomplete +* Handle iso in incomplete event +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, + uint8_t epnum) +{ + /* Prevent unused arguments compilation warning */ + UNUSED(pdev); + UNUSED(epnum); + + return USBD_OK; +} + +/** +* @brief USBD_IsoOUTIncomplete +* Handle iso out incomplete event +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, + uint8_t epnum) +{ + /* Prevent unused arguments compilation warning */ + UNUSED(pdev); + UNUSED(epnum); + + return USBD_OK; +} + +/** +* @brief USBD_DevConnected +* Handle device connection event +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev) +{ + /* Prevent unused argument compilation warning */ + UNUSED(pdev); + + return USBD_OK; +} + +/** +* @brief USBD_DevDisconnected +* Handle device disconnection event +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev) +{ + /* Free Class Resources */ + pdev->dev_state = USBD_STATE_DEFAULT; + pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config); + + return USBD_OK; +} +/** +* @} +*/ + + +/** +* @} +*/ + + +/** +* @} +*/ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c b/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c new file mode 100644 index 0000000..4561c8d --- /dev/null +++ b/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c @@ -0,0 +1,918 @@ +/** + ****************************************************************************** + * @file usbd_req.c + * @author MCD Application Team + * @brief This file provides the standard USB requests following chapter 9. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2015 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_ctlreq.h" +#include "usbd_ioreq.h" + + +/** @addtogroup STM32_USBD_STATE_DEVICE_LIBRARY + * @{ + */ + + +/** @defgroup USBD_REQ + * @brief USB standard requests module + * @{ + */ + +/** @defgroup USBD_REQ_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_REQ_Private_Defines + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_REQ_Private_Macros + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_REQ_Private_Variables + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_REQ_Private_FunctionPrototypes + * @{ + */ +static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req); + +static void USBD_SetAddress(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req); + +static void USBD_SetConfig(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req); + +static void USBD_GetConfig(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req); + +static void USBD_GetStatus(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req); + +static void USBD_SetFeature(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req); + +static void USBD_ClrFeature(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req); + +static uint8_t USBD_GetLen(uint8_t *buf); + +/** + * @} + */ + + +/** @defgroup USBD_REQ_Private_Functions + * @{ + */ + + +/** +* @brief USBD_StdDevReq +* Handle standard usb device requests +* @param pdev: device instance +* @param req: usb request +* @retval status +*/ +USBD_StatusTypeDef USBD_StdDevReq(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + USBD_StatusTypeDef ret = USBD_OK; + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + { + case USB_REQ_TYPE_CLASS: + case USB_REQ_TYPE_VENDOR: + pdev->pClass->Setup(pdev, req); + break; + + case USB_REQ_TYPE_STANDARD: + switch (req->bRequest) + { + case USB_REQ_GET_DESCRIPTOR: + USBD_GetDescriptor(pdev, req); + break; + + case USB_REQ_SET_ADDRESS: + USBD_SetAddress(pdev, req); + break; + + case USB_REQ_SET_CONFIGURATION: + USBD_SetConfig(pdev, req); + break; + + case USB_REQ_GET_CONFIGURATION: + USBD_GetConfig(pdev, req); + break; + + case USB_REQ_GET_STATUS: + USBD_GetStatus(pdev, req); + break; + + case USB_REQ_SET_FEATURE: + USBD_SetFeature(pdev, req); + break; + + case USB_REQ_CLEAR_FEATURE: + USBD_ClrFeature(pdev, req); + break; + + default: + USBD_CtlError(pdev, req); + break; + } + break; + + default: + USBD_CtlError(pdev, req); + break; + } + + return ret; +} + +/** +* @brief USBD_StdItfReq +* Handle standard usb interface requests +* @param pdev: device instance +* @param req: usb request +* @retval status +*/ +USBD_StatusTypeDef USBD_StdItfReq(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + USBD_StatusTypeDef ret = USBD_OK; + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + { + case USB_REQ_TYPE_CLASS: + case USB_REQ_TYPE_VENDOR: + case USB_REQ_TYPE_STANDARD: + switch (pdev->dev_state) + { + case USBD_STATE_DEFAULT: + case USBD_STATE_ADDRESSED: + case USBD_STATE_CONFIGURED: + + if (LOBYTE(req->wIndex) <= USBD_MAX_NUM_INTERFACES) + { + ret = (USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req); + + if ((req->wLength == 0U) && (ret == USBD_OK)) + { + USBD_CtlSendStatus(pdev); + } + } + else + { + USBD_CtlError(pdev, req); + } + break; + + default: + USBD_CtlError(pdev, req); + break; + } + break; + + default: + USBD_CtlError(pdev, req); + break; + } + + return USBD_OK; +} + +/** +* @brief USBD_StdEPReq +* Handle standard usb endpoint requests +* @param pdev: device instance +* @param req: usb request +* @retval status +*/ +USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + USBD_EndpointTypeDef *pep; + uint8_t ep_addr; + USBD_StatusTypeDef ret = USBD_OK; + ep_addr = LOBYTE(req->wIndex); + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + { + case USB_REQ_TYPE_CLASS: + case USB_REQ_TYPE_VENDOR: + pdev->pClass->Setup(pdev, req); + break; + + case USB_REQ_TYPE_STANDARD: + /* Check if it is a class request */ + if ((req->bmRequest & 0x60U) == 0x20U) + { + ret = (USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req); + + return ret; + } + + switch (req->bRequest) + { + case USB_REQ_SET_FEATURE: + switch (pdev->dev_state) + { + case USBD_STATE_ADDRESSED: + if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) + { + USBD_LL_StallEP(pdev, ep_addr); + USBD_LL_StallEP(pdev, 0x80U); + } + else + { + USBD_CtlError(pdev, req); + } + break; + + case USBD_STATE_CONFIGURED: + if (req->wValue == USB_FEATURE_EP_HALT) + { + if ((ep_addr != 0x00U) && + (ep_addr != 0x80U) && (req->wLength == 0x00U)) + { + USBD_LL_StallEP(pdev, ep_addr); + } + } + USBD_CtlSendStatus(pdev); + + break; + + default: + USBD_CtlError(pdev, req); + break; + } + break; + + case USB_REQ_CLEAR_FEATURE: + + switch (pdev->dev_state) + { + case USBD_STATE_ADDRESSED: + if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) + { + USBD_LL_StallEP(pdev, ep_addr); + USBD_LL_StallEP(pdev, 0x80U); + } + else + { + USBD_CtlError(pdev, req); + } + break; + + case USBD_STATE_CONFIGURED: + if (req->wValue == USB_FEATURE_EP_HALT) + { + if ((ep_addr & 0x7FU) != 0x00U) + { + USBD_LL_ClearStallEP(pdev, ep_addr); + } + USBD_CtlSendStatus(pdev); + } + break; + + default: + USBD_CtlError(pdev, req); + break; + } + break; + + case USB_REQ_GET_STATUS: + switch (pdev->dev_state) + { + case USBD_STATE_ADDRESSED: + if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) + { + USBD_CtlError(pdev, req); + break; + } + pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ + &pdev->ep_out[ep_addr & 0x7FU]; + + pep->status = 0x0000U; + + USBD_CtlSendData(pdev, (uint8_t *)(void *)&pep->status, 2U); + break; + + case USBD_STATE_CONFIGURED: + if ((ep_addr & 0x80U) == 0x80U) + { + if (pdev->ep_in[ep_addr & 0xFU].is_used == 0U) + { + USBD_CtlError(pdev, req); + break; + } + } + else + { + if (pdev->ep_out[ep_addr & 0xFU].is_used == 0U) + { + USBD_CtlError(pdev, req); + break; + } + } + + pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ + &pdev->ep_out[ep_addr & 0x7FU]; + + if ((ep_addr == 0x00U) || (ep_addr == 0x80U)) + { + pep->status = 0x0000U; + } + else if (USBD_LL_IsStallEP(pdev, ep_addr)) + { + pep->status = 0x0001U; + } + else + { + pep->status = 0x0000U; + } + + USBD_CtlSendData(pdev, (uint8_t *)(void *)&pep->status, 2U); + break; + + default: + USBD_CtlError(pdev, req); + break; + } + break; + + default: + USBD_CtlError(pdev, req); + break; + } + break; + + default: + USBD_CtlError(pdev, req); + break; + } + + return ret; +} + + +/** +* @brief USBD_GetDescriptor +* Handle Get Descriptor requests +* @param pdev: device instance +* @param req: usb request +* @retval status +*/ +static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + uint16_t len = 0U; + uint8_t *pbuf = NULL; + uint8_t err = 0U; + + switch (req->wValue >> 8) + { +#if (USBD_LPM_ENABLED == 1U) + case USB_DESC_TYPE_BOS: + if (pdev->pDesc->GetBOSDescriptor != NULL) + { + pbuf = pdev->pDesc->GetBOSDescriptor(pdev->dev_speed, &len); + } + else + { + USBD_CtlError(pdev, req); + err++; + } + break; +#endif + case USB_DESC_TYPE_DEVICE: + pbuf = pdev->pDesc->GetDeviceDescriptor(pdev->dev_speed, &len); + break; + + case USB_DESC_TYPE_CONFIGURATION: + if (pdev->dev_speed == USBD_SPEED_HIGH) + { + pbuf = pdev->pClass->GetHSConfigDescriptor(&len); + pbuf[1] = USB_DESC_TYPE_CONFIGURATION; + } + else + { + pbuf = pdev->pClass->GetFSConfigDescriptor(&len); + pbuf[1] = USB_DESC_TYPE_CONFIGURATION; + } + break; + + case USB_DESC_TYPE_STRING: + switch ((uint8_t)(req->wValue)) + { + case USBD_IDX_LANGID_STR: + if (pdev->pDesc->GetLangIDStrDescriptor != NULL) + { + pbuf = pdev->pDesc->GetLangIDStrDescriptor(pdev->dev_speed, &len); + } + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + + case USBD_IDX_MFC_STR: + if (pdev->pDesc->GetManufacturerStrDescriptor != NULL) + { + pbuf = pdev->pDesc->GetManufacturerStrDescriptor(pdev->dev_speed, &len); + } + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + + case USBD_IDX_PRODUCT_STR: + if (pdev->pDesc->GetProductStrDescriptor != NULL) + { + pbuf = pdev->pDesc->GetProductStrDescriptor(pdev->dev_speed, &len); + } + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + + case USBD_IDX_SERIAL_STR: + if (pdev->pDesc->GetSerialStrDescriptor != NULL) + { + pbuf = pdev->pDesc->GetSerialStrDescriptor(pdev->dev_speed, &len); + } + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + + case USBD_IDX_CONFIG_STR: + if (pdev->pDesc->GetConfigurationStrDescriptor != NULL) + { + pbuf = pdev->pDesc->GetConfigurationStrDescriptor(pdev->dev_speed, &len); + } + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + + case USBD_IDX_INTERFACE_STR: + if (pdev->pDesc->GetInterfaceStrDescriptor != NULL) + { + pbuf = pdev->pDesc->GetInterfaceStrDescriptor(pdev->dev_speed, &len); + } + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + + default: +#if (USBD_SUPPORT_USER_STRING_DESC == 1U) + if (pdev->pClass->GetUsrStrDescriptor != NULL) + { + pbuf = pdev->pClass->GetUsrStrDescriptor(pdev, (req->wValue), &len); + } + else + { + USBD_CtlError(pdev, req); + err++; + } + break; +#else + USBD_CtlError(pdev, req); + err++; +#endif + } + break; + + case USB_DESC_TYPE_DEVICE_QUALIFIER: + if (pdev->dev_speed == USBD_SPEED_HIGH) + { + pbuf = pdev->pClass->GetDeviceQualifierDescriptor(&len); + } + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + + case USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION: + if (pdev->dev_speed == USBD_SPEED_HIGH) + { + pbuf = pdev->pClass->GetOtherSpeedConfigDescriptor(&len); + pbuf[1] = USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION; + } + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + + default: + USBD_CtlError(pdev, req); + err++; + break; + } + + if (err != 0U) + { + return; + } + else + { + if ((len != 0U) && (req->wLength != 0U)) + { + len = MIN(len, req->wLength); + (void)USBD_CtlSendData(pdev, pbuf, len); + } + + if (req->wLength == 0U) + { + (void)USBD_CtlSendStatus(pdev); + } + } +} + +/** +* @brief USBD_SetAddress +* Set device address +* @param pdev: device instance +* @param req: usb request +* @retval status +*/ +static void USBD_SetAddress(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + uint8_t dev_addr; + + if ((req->wIndex == 0U) && (req->wLength == 0U) && (req->wValue < 128U)) + { + dev_addr = (uint8_t)(req->wValue) & 0x7FU; + + if (pdev->dev_state == USBD_STATE_CONFIGURED) + { + USBD_CtlError(pdev, req); + } + else + { + pdev->dev_address = dev_addr; + USBD_LL_SetUSBAddress(pdev, dev_addr); + USBD_CtlSendStatus(pdev); + + if (dev_addr != 0U) + { + pdev->dev_state = USBD_STATE_ADDRESSED; + } + else + { + pdev->dev_state = USBD_STATE_DEFAULT; + } + } + } + else + { + USBD_CtlError(pdev, req); + } +} + +/** +* @brief USBD_SetConfig +* Handle Set device configuration request +* @param pdev: device instance +* @param req: usb request +* @retval status +*/ +static void USBD_SetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + static uint8_t cfgidx; + + cfgidx = (uint8_t)(req->wValue); + + if (cfgidx > USBD_MAX_NUM_CONFIGURATION) + { + USBD_CtlError(pdev, req); + } + else + { + switch (pdev->dev_state) + { + case USBD_STATE_ADDRESSED: + if (cfgidx) + { + pdev->dev_config = cfgidx; + pdev->dev_state = USBD_STATE_CONFIGURED; + if (USBD_SetClassConfig(pdev, cfgidx) == USBD_FAIL) + { + USBD_CtlError(pdev, req); + return; + } + USBD_CtlSendStatus(pdev); + } + else + { + USBD_CtlSendStatus(pdev); + } + break; + + case USBD_STATE_CONFIGURED: + if (cfgidx == 0U) + { + pdev->dev_state = USBD_STATE_ADDRESSED; + pdev->dev_config = cfgidx; + USBD_ClrClassConfig(pdev, cfgidx); + USBD_CtlSendStatus(pdev); + } + else if (cfgidx != pdev->dev_config) + { + /* Clear old configuration */ + USBD_ClrClassConfig(pdev, (uint8_t)pdev->dev_config); + + /* set new configuration */ + pdev->dev_config = cfgidx; + if (USBD_SetClassConfig(pdev, cfgidx) == USBD_FAIL) + { + USBD_CtlError(pdev, req); + return; + } + USBD_CtlSendStatus(pdev); + } + else + { + USBD_CtlSendStatus(pdev); + } + break; + + default: + USBD_CtlError(pdev, req); + USBD_ClrClassConfig(pdev, cfgidx); + break; + } + } +} + +/** +* @brief USBD_GetConfig +* Handle Get device configuration request +* @param pdev: device instance +* @param req: usb request +* @retval status +*/ +static void USBD_GetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + if (req->wLength != 1U) + { + USBD_CtlError(pdev, req); + } + else + { + switch (pdev->dev_state) + { + case USBD_STATE_DEFAULT: + case USBD_STATE_ADDRESSED: + pdev->dev_default_config = 0U; + USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_default_config, 1U); + break; + + case USBD_STATE_CONFIGURED: + USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_config, 1U); + break; + + default: + USBD_CtlError(pdev, req); + break; + } + } +} + +/** +* @brief USBD_GetStatus +* Handle Get Status request +* @param pdev: device instance +* @param req: usb request +* @retval status +*/ +static void USBD_GetStatus(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + switch (pdev->dev_state) + { + case USBD_STATE_DEFAULT: + case USBD_STATE_ADDRESSED: + case USBD_STATE_CONFIGURED: + if (req->wLength != 0x2U) + { + USBD_CtlError(pdev, req); + break; + } + +#if (USBD_SELF_POWERED == 1U) + pdev->dev_config_status = USB_CONFIG_SELF_POWERED; +#else + pdev->dev_config_status = 0U; +#endif + + if (pdev->dev_remote_wakeup) + { + pdev->dev_config_status |= USB_CONFIG_REMOTE_WAKEUP; + } + + USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_config_status, 2U); + break; + + default: + USBD_CtlError(pdev, req); + break; + } +} + + +/** +* @brief USBD_SetFeature +* Handle Set device feature request +* @param pdev: device instance +* @param req: usb request +* @retval status +*/ +static void USBD_SetFeature(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + if (req->wValue == USB_FEATURE_REMOTE_WAKEUP) + { + pdev->dev_remote_wakeup = 1U; + USBD_CtlSendStatus(pdev); + } +} + + +/** +* @brief USBD_ClrFeature +* Handle clear device feature request +* @param pdev: device instance +* @param req: usb request +* @retval status +*/ +static void USBD_ClrFeature(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + switch (pdev->dev_state) + { + case USBD_STATE_DEFAULT: + case USBD_STATE_ADDRESSED: + case USBD_STATE_CONFIGURED: + if (req->wValue == USB_FEATURE_REMOTE_WAKEUP) + { + pdev->dev_remote_wakeup = 0U; + USBD_CtlSendStatus(pdev); + } + break; + + default: + USBD_CtlError(pdev, req); + break; + } +} + +/** +* @brief USBD_ParseSetupRequest +* Copy buffer into setup structure +* @param pdev: device instance +* @param req: usb request +* @retval None +*/ + +void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata) +{ + req->bmRequest = *(uint8_t *)(pdata); + req->bRequest = *(uint8_t *)(pdata + 1U); + req->wValue = SWAPBYTE(pdata + 2U); + req->wIndex = SWAPBYTE(pdata + 4U); + req->wLength = SWAPBYTE(pdata + 6U); + +} + +/** +* @brief USBD_CtlError +* Handle USB low level Error +* @param pdev: device instance +* @param req: usb request +* @retval None +*/ + +void USBD_CtlError(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + USBD_LL_StallEP(pdev, 0x80U); + USBD_LL_StallEP(pdev, 0U); +} + + +/** + * @brief USBD_GetString + * Convert Ascii string into unicode one + * @param desc : descriptor buffer + * @param unicode : Formatted string buffer (unicode) + * @param len : descriptor length + * @retval None + */ +void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len) +{ + uint8_t idx = 0U; + + if (desc != NULL) + { + *len = (uint16_t)USBD_GetLen(desc) * 2U + 2U; + unicode[idx++] = *(uint8_t *)(void *)len; + unicode[idx++] = USB_DESC_TYPE_STRING; + + while (*desc != '\0') + { + unicode[idx++] = *desc++; + unicode[idx++] = 0U; + } + } +} + +/** + * @brief USBD_GetLen + * return the string length + * @param buf : pointer to the ascii string buffer + * @retval string length + */ +static uint8_t USBD_GetLen(uint8_t *buf) +{ + uint8_t len = 0U; + + while (*buf != '\0') + { + len++; + buf++; + } + + return len; +} +/** + * @} + */ + + +/** + * @} + */ + + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c b/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c new file mode 100644 index 0000000..7e969de --- /dev/null +++ b/stm32f103/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c @@ -0,0 +1,216 @@ +/** + ****************************************************************************** + * @file usbd_ioreq.c + * @author MCD Application Team + * @brief This file provides the IO requests APIs for control endpoints. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2015 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_ioreq.h" + +/** @addtogroup STM32_USB_DEVICE_LIBRARY + * @{ + */ + + +/** @defgroup USBD_IOREQ + * @brief control I/O requests module + * @{ + */ + +/** @defgroup USBD_IOREQ_Private_TypesDefinitions + * @{ + */ +/** + * @} + */ + + +/** @defgroup USBD_IOREQ_Private_Defines + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_IOREQ_Private_Macros + * @{ + */ +/** + * @} + */ + + +/** @defgroup USBD_IOREQ_Private_Variables + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_IOREQ_Private_FunctionPrototypes + * @{ + */ +/** + * @} + */ + + +/** @defgroup USBD_IOREQ_Private_Functions + * @{ + */ + +/** +* @brief USBD_CtlSendData +* send data on the ctl pipe +* @param pdev: device instance +* @param buff: pointer to data buffer +* @param len: length of data to be sent +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlSendData(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint16_t len) +{ + /* Set EP0 State */ + pdev->ep0_state = USBD_EP0_DATA_IN; + pdev->ep_in[0].total_length = len; + pdev->ep_in[0].rem_length = len; + + /* Start the transfer */ + USBD_LL_Transmit(pdev, 0x00U, pbuf, len); + + return USBD_OK; +} + +/** +* @brief USBD_CtlContinueSendData +* continue sending data on the ctl pipe +* @param pdev: device instance +* @param buff: pointer to data buffer +* @param len: length of data to be sent +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlContinueSendData(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint16_t len) +{ + /* Start the next transfer */ + USBD_LL_Transmit(pdev, 0x00U, pbuf, len); + + return USBD_OK; +} + +/** +* @brief USBD_CtlPrepareRx +* receive data on the ctl pipe +* @param pdev: device instance +* @param buff: pointer to data buffer +* @param len: length of data to be received +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlPrepareRx(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint16_t len) +{ + /* Set EP0 State */ + pdev->ep0_state = USBD_EP0_DATA_OUT; + pdev->ep_out[0].total_length = len; + pdev->ep_out[0].rem_length = len; + + /* Start the transfer */ + USBD_LL_PrepareReceive(pdev, 0U, pbuf, len); + + return USBD_OK; +} + +/** +* @brief USBD_CtlContinueRx +* continue receive data on the ctl pipe +* @param pdev: device instance +* @param buff: pointer to data buffer +* @param len: length of data to be received +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlContinueRx(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint16_t len) +{ + USBD_LL_PrepareReceive(pdev, 0U, pbuf, len); + + return USBD_OK; +} + +/** +* @brief USBD_CtlSendStatus +* send zero lzngth packet on the ctl pipe +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlSendStatus(USBD_HandleTypeDef *pdev) +{ + /* Set EP0 State */ + pdev->ep0_state = USBD_EP0_STATUS_IN; + + /* Start the transfer */ + USBD_LL_Transmit(pdev, 0x00U, NULL, 0U); + + return USBD_OK; +} + +/** +* @brief USBD_CtlReceiveStatus +* receive zero lzngth packet on the ctl pipe +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlReceiveStatus(USBD_HandleTypeDef *pdev) +{ + /* Set EP0 State */ + pdev->ep0_state = USBD_EP0_STATUS_OUT; + + /* Start the transfer */ + USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); + + return USBD_OK; +} + +/** +* @brief USBD_GetRxCount +* returns the received data length +* @param pdev: device instance +* @param ep_addr: endpoint address +* @retval Rx Data blength +*/ +uint32_t USBD_GetRxCount(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + return USBD_LL_GetRxDataSize(pdev, ep_addr); +} + +/** + * @} + */ + + +/** + * @} + */ + + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/USB_DEVICE/App/usb_device.c b/stm32f103/USB_DEVICE/App/usb_device.c new file mode 100644 index 0000000..5a8ebd7 --- /dev/null +++ b/stm32f103/USB_DEVICE/App/usb_device.c @@ -0,0 +1,102 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : usb_device.c + * @version : v2.0_Cube + * @brief : This file implements the USB Device + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2022 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ + +#include "usb_device.h" +#include "usbd_core.h" +#include "usbd_desc.h" +#include "usbd_dfu.h" +#include "usbd_dfu_if.h" + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* USER CODE BEGIN PV */ +/* Private variables ---------------------------------------------------------*/ + +/* USER CODE END PV */ + +/* USER CODE BEGIN PFP */ +/* Private function prototypes -----------------------------------------------*/ + +/* USER CODE END PFP */ + +/* USB Device Core handle declaration. */ +USBD_HandleTypeDef hUsbDeviceFS; + +/* + * -- Insert your variables declaration here -- + */ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/* + * -- Insert your external function declaration here -- + */ +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +/** + * Init USB device Library, add supported class and start the library + * @retval None + */ +void MX_USB_DEVICE_Init(void) +{ + /* USER CODE BEGIN USB_DEVICE_Init_PreTreatment */ + + /* USER CODE END USB_DEVICE_Init_PreTreatment */ + + /* Init Device Library, add supported class and start the library. */ + if (USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS) != USBD_OK) + { + Error_Handler(); + } + if (USBD_RegisterClass(&hUsbDeviceFS, &USBD_DFU) != USBD_OK) + { + Error_Handler(); + } + if (USBD_DFU_RegisterMedia(&hUsbDeviceFS, &USBD_DFU_fops_FS) != USBD_OK) + { + Error_Handler(); + } + if (USBD_Start(&hUsbDeviceFS) != USBD_OK) + { + Error_Handler(); + } + + /* USER CODE BEGIN USB_DEVICE_Init_PostTreatment */ + + /* USER CODE END USB_DEVICE_Init_PostTreatment */ +} + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/USB_DEVICE/App/usb_device.h b/stm32f103/USB_DEVICE/App/usb_device.h new file mode 100644 index 0000000..ccdd74d --- /dev/null +++ b/stm32f103/USB_DEVICE/App/usb_device.h @@ -0,0 +1,105 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : usb_device.h + * @version : v2.0_Cube + * @brief : Header for usb_device.c file. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2022 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_DEVICE__H__ +#define __USB_DEVICE__H__ + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" +#include "stm32f1xx_hal.h" +#include "usbd_def.h" + +/* USER CODE BEGIN INCLUDE */ + +/* USER CODE END INCLUDE */ + +/** @addtogroup USBD_OTG_DRIVER + * @{ + */ + +/** @defgroup USBD_DEVICE USBD_DEVICE + * @brief Device file for Usb otg low level driver. + * @{ + */ + +/** @defgroup USBD_DEVICE_Exported_Variables USBD_DEVICE_Exported_Variables + * @brief Public variables. + * @{ + */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* + * -- Insert your variables declaration here -- + */ +/* USER CODE BEGIN VARIABLES */ + +/* USER CODE END VARIABLES */ +/** + * @} + */ + +/** @defgroup USBD_DEVICE_Exported_FunctionsPrototype USBD_DEVICE_Exported_FunctionsPrototype + * @brief Declaration of public functions for Usb device. + * @{ + */ + +/** USB Device initialization function. */ +void MX_USB_DEVICE_Init(void); + +/* + * -- Insert functions declaration here -- + */ +/* USER CODE BEGIN FD */ + +/* USER CODE END FD */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __USB_DEVICE__H__ */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/USB_DEVICE/App/usbd_desc.c b/stm32f103/USB_DEVICE/App/usbd_desc.c new file mode 100644 index 0000000..1a0b332 --- /dev/null +++ b/stm32f103/USB_DEVICE/App/usbd_desc.c @@ -0,0 +1,394 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : App/usbd_desc.c + * @version : v2.0_Cube + * @brief : This file implements the USB device descriptors. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2022 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_core.h" +#include "usbd_desc.h" +#include "usbd_conf.h" + +/* USER CODE BEGIN INCLUDE */ + +/* USER CODE END INCLUDE */ + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ + +/* USER CODE BEGIN PV */ +/* Private variables ---------------------------------------------------------*/ + +/* USER CODE END PV */ + +/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY + * @{ + */ + +/** @addtogroup USBD_DESC + * @{ + */ + +/** @defgroup USBD_DESC_Private_TypesDefinitions USBD_DESC_Private_TypesDefinitions + * @brief Private types. + * @{ + */ + +/* USER CODE BEGIN PRIVATE_TYPES */ + +/* USER CODE END PRIVATE_TYPES */ + +/** + * @} + */ + +/** @defgroup USBD_DESC_Private_Defines USBD_DESC_Private_Defines + * @brief Private defines. + * @{ + */ + +#define USBD_VID 1155 +#define USBD_LANGID_STRING 1033 +#define USBD_MANUFACTURER_STRING "STMicroelectronics" +#define USBD_PID_FS 57105 +#define USBD_PRODUCT_STRING_FS "STM32 DownLoad Firmware Update" +#define USBD_CONFIGURATION_STRING_FS "DFU Config" +#define USBD_INTERFACE_STRING_FS "DFU Interface" + +/* USER CODE BEGIN PRIVATE_DEFINES */ + +/* USER CODE END PRIVATE_DEFINES */ + +/** + * @} + */ + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** @defgroup USBD_DESC_Private_Macros USBD_DESC_Private_Macros + * @brief Private macros. + * @{ + */ + +/* USER CODE BEGIN PRIVATE_MACRO */ + +/* USER CODE END PRIVATE_MACRO */ + +/** + * @} + */ + +/** @defgroup USBD_DESC_Private_FunctionPrototypes USBD_DESC_Private_FunctionPrototypes + * @brief Private functions declaration. + * @{ + */ + +static void Get_SerialNum(void); +static void IntToUnicode(uint32_t value, uint8_t * pbuf, uint8_t len); + +/** + * @} + */ + +/** @defgroup USBD_DESC_Private_FunctionPrototypes USBD_DESC_Private_FunctionPrototypes + * @brief Private functions declaration for FS. + * @{ + */ + +uint8_t * USBD_FS_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); +uint8_t * USBD_FS_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); +uint8_t * USBD_FS_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); +uint8_t * USBD_FS_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); +uint8_t * USBD_FS_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); +uint8_t * USBD_FS_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); +uint8_t * USBD_FS_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); + +/** + * @} + */ + +/** @defgroup USBD_DESC_Private_Variables USBD_DESC_Private_Variables + * @brief Private variables. + * @{ + */ + +USBD_DescriptorsTypeDef FS_Desc = +{ + USBD_FS_DeviceDescriptor +, USBD_FS_LangIDStrDescriptor +, USBD_FS_ManufacturerStrDescriptor +, USBD_FS_ProductStrDescriptor +, USBD_FS_SerialStrDescriptor +, USBD_FS_ConfigStrDescriptor +, USBD_FS_InterfaceStrDescriptor +}; + +#if defined ( __ICCARM__ ) /* IAR Compiler */ + #pragma data_alignment=4 +#endif /* defined ( __ICCARM__ ) */ +/** USB standard device descriptor. */ +__ALIGN_BEGIN uint8_t USBD_FS_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END = +{ + 0x12, /*bLength */ + USB_DESC_TYPE_DEVICE, /*bDescriptorType*/ + 0x00, /*bcdUSB */ + 0x02, + 0x00, /*bDeviceClass*/ + 0x00, /*bDeviceSubClass*/ + 0x00, /*bDeviceProtocol*/ + USB_MAX_EP0_SIZE, /*bMaxPacketSize*/ + LOBYTE(USBD_VID), /*idVendor*/ + HIBYTE(USBD_VID), /*idVendor*/ + LOBYTE(USBD_PID_FS), /*idProduct*/ + HIBYTE(USBD_PID_FS), /*idProduct*/ + 0x00, /*bcdDevice rel. 2.00*/ + 0x02, + USBD_IDX_MFC_STR, /*Index of manufacturer string*/ + USBD_IDX_PRODUCT_STR, /*Index of product string*/ + USBD_IDX_SERIAL_STR, /*Index of serial number string*/ + USBD_MAX_NUM_CONFIGURATION /*bNumConfigurations*/ +}; + +/* USB_DeviceDescriptor */ + +/** + * @} + */ + +/** @defgroup USBD_DESC_Private_Variables USBD_DESC_Private_Variables + * @brief Private variables. + * @{ + */ + +#if defined ( __ICCARM__ ) /* IAR Compiler */ + #pragma data_alignment=4 +#endif /* defined ( __ICCARM__ ) */ + +/** USB lang identifier descriptor. */ +__ALIGN_BEGIN uint8_t USBD_LangIDDesc[USB_LEN_LANGID_STR_DESC] __ALIGN_END = +{ + USB_LEN_LANGID_STR_DESC, + USB_DESC_TYPE_STRING, + LOBYTE(USBD_LANGID_STRING), + HIBYTE(USBD_LANGID_STRING) +}; + +#if defined ( __ICCARM__ ) /* IAR Compiler */ + #pragma data_alignment=4 +#endif /* defined ( __ICCARM__ ) */ +/* Internal string descriptor. */ +__ALIGN_BEGIN uint8_t USBD_StrDesc[USBD_MAX_STR_DESC_SIZ] __ALIGN_END; + +#if defined ( __ICCARM__ ) /*!< IAR Compiler */ + #pragma data_alignment=4 +#endif +__ALIGN_BEGIN uint8_t USBD_StringSerial[USB_SIZ_STRING_SERIAL] __ALIGN_END = { + USB_SIZ_STRING_SERIAL, + USB_DESC_TYPE_STRING, +}; + +/** + * @} + */ + +/** @defgroup USBD_DESC_Private_Functions USBD_DESC_Private_Functions + * @brief Private functions. + * @{ + */ + +/** + * @brief Return the device descriptor + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + UNUSED(speed); + *length = sizeof(USBD_FS_DeviceDesc); + return USBD_FS_DeviceDesc; +} + +/** + * @brief Return the LangID string descriptor + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + UNUSED(speed); + *length = sizeof(USBD_LangIDDesc); + return USBD_LangIDDesc; +} + +/** + * @brief Return the product string descriptor + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + if(speed == 0) + { + USBD_GetString((uint8_t *)USBD_PRODUCT_STRING_FS, USBD_StrDesc, length); + } + else + { + USBD_GetString((uint8_t *)USBD_PRODUCT_STRING_FS, USBD_StrDesc, length); + } + return USBD_StrDesc; +} + +/** + * @brief Return the manufacturer string descriptor + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + UNUSED(speed); + USBD_GetString((uint8_t *)USBD_MANUFACTURER_STRING, USBD_StrDesc, length); + return USBD_StrDesc; +} + +/** + * @brief Return the serial number string descriptor + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + UNUSED(speed); + *length = USB_SIZ_STRING_SERIAL; + + /* Update the serial number string descriptor with the data from the unique + * ID */ + Get_SerialNum(); + /* USER CODE BEGIN USBD_FS_SerialStrDescriptor */ + + /* USER CODE END USBD_FS_SerialStrDescriptor */ + return (uint8_t *) USBD_StringSerial; +} + +/** + * @brief Return the configuration string descriptor + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + if(speed == USBD_SPEED_HIGH) + { + USBD_GetString((uint8_t *)USBD_CONFIGURATION_STRING_FS, USBD_StrDesc, length); + } + else + { + USBD_GetString((uint8_t *)USBD_CONFIGURATION_STRING_FS, USBD_StrDesc, length); + } + return USBD_StrDesc; +} + +/** + * @brief Return the interface string descriptor + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + if(speed == 0) + { + USBD_GetString((uint8_t *)USBD_INTERFACE_STRING_FS, USBD_StrDesc, length); + } + else + { + USBD_GetString((uint8_t *)USBD_INTERFACE_STRING_FS, USBD_StrDesc, length); + } + return USBD_StrDesc; +} + +/** + * @brief Create the serial number string descriptor + * @param None + * @retval None + */ +static void Get_SerialNum(void) +{ + uint32_t deviceserial0, deviceserial1, deviceserial2; + + deviceserial0 = *(uint32_t *) DEVICE_ID1; + deviceserial1 = *(uint32_t *) DEVICE_ID2; + deviceserial2 = *(uint32_t *) DEVICE_ID3; + + deviceserial0 += deviceserial2; + + if (deviceserial0 != 0) + { + IntToUnicode(deviceserial0, &USBD_StringSerial[2], 8); + IntToUnicode(deviceserial1, &USBD_StringSerial[18], 4); + } +} + +/** + * @brief Convert Hex 32Bits value into char + * @param value: value to convert + * @param pbuf: pointer to the buffer + * @param len: buffer length + * @retval None + */ +static void IntToUnicode(uint32_t value, uint8_t * pbuf, uint8_t len) +{ + uint8_t idx = 0; + + for (idx = 0; idx < len; idx++) + { + if (((value >> 28)) < 0xA) + { + pbuf[2 * idx] = (value >> 28) + '0'; + } + else + { + pbuf[2 * idx] = (value >> 28) + 'A' - 10; + } + + value = value << 4; + + pbuf[2 * idx + 1] = 0; + } +} +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/USB_DEVICE/App/usbd_desc.h b/stm32f103/USB_DEVICE/App/usbd_desc.h new file mode 100644 index 0000000..de7f6a3 --- /dev/null +++ b/stm32f103/USB_DEVICE/App/usbd_desc.h @@ -0,0 +1,145 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : usbd_desc.c + * @version : v2.0_Cube + * @brief : Header for usbd_conf.c file. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2022 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USBD_DESC__C__ +#define __USBD_DESC__C__ + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_def.h" + +/* USER CODE BEGIN INCLUDE */ + +/* USER CODE END INCLUDE */ + +/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY + * @{ + */ + +/** @defgroup USBD_DESC USBD_DESC + * @brief Usb device descriptors module. + * @{ + */ + +/** @defgroup USBD_DESC_Exported_Constants USBD_DESC_Exported_Constants + * @brief Constants. + * @{ + */ +#define DEVICE_ID1 (UID_BASE) +#define DEVICE_ID2 (UID_BASE + 0x4) +#define DEVICE_ID3 (UID_BASE + 0x8) + +#define USB_SIZ_STRING_SERIAL 0x1A + +/* USER CODE BEGIN EXPORTED_CONSTANTS */ + +/* USER CODE END EXPORTED_CONSTANTS */ + +/** + * @} + */ + +/** @defgroup USBD_DESC_Exported_Defines USBD_DESC_Exported_Defines + * @brief Defines. + * @{ + */ + +/* USER CODE BEGIN EXPORTED_DEFINES */ + +/* USER CODE END EXPORTED_DEFINES */ + +/** + * @} + */ + +/** @defgroup USBD_DESC_Exported_TypesDefinitions USBD_DESC_Exported_TypesDefinitions + * @brief Types. + * @{ + */ + +/* USER CODE BEGIN EXPORTED_TYPES */ + +/* USER CODE END EXPORTED_TYPES */ + +/** + * @} + */ + +/** @defgroup USBD_DESC_Exported_Macros USBD_DESC_Exported_Macros + * @brief Aliases. + * @{ + */ + +/* USER CODE BEGIN EXPORTED_MACRO */ + +/* USER CODE END EXPORTED_MACRO */ + +/** + * @} + */ + +/** @defgroup USBD_DESC_Exported_Variables USBD_DESC_Exported_Variables + * @brief Public variables. + * @{ + */ + +/** Descriptor for the Usb device. */ +extern USBD_DescriptorsTypeDef FS_Desc; + +/* USER CODE BEGIN EXPORTED_VARIABLES */ + +/* USER CODE END EXPORTED_VARIABLES */ + +/** + * @} + */ + +/** @defgroup USBD_DESC_Exported_FunctionsPrototype USBD_DESC_Exported_FunctionsPrototype + * @brief Public functions declaration. + * @{ + */ + +/* USER CODE BEGIN EXPORTED_FUNCTIONS */ + +/* USER CODE END EXPORTED_FUNCTIONS */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __USBD_DESC__C__ */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/USB_DEVICE/App/usbd_dfu_if.c b/stm32f103/USB_DEVICE/App/usbd_dfu_if.c new file mode 100644 index 0000000..0714fd4 --- /dev/null +++ b/stm32f103/USB_DEVICE/App/usbd_dfu_if.c @@ -0,0 +1,252 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : usbd_dfu_if.c + * @brief : Usb device for Download Firmware Update. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2022 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_dfu_if.h" + +/* USER CODE BEGIN INCLUDE */ + +/* USER CODE END INCLUDE */ + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ + +/* USER CODE BEGIN PV */ +/* Private variables ---------------------------------------------------------*/ + +/* USER CODE END PV */ + +/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY + * @brief Usb device. + * @{ + */ + +/** @defgroup USBD_DFU + * @brief Usb DFU device module. + * @{ + */ + +/** @defgroup USBD_DFU_Private_TypesDefinitions + * @brief Private types. + * @{ + */ + +/* USER CODE BEGIN PRIVATE_TYPES */ + +/* USER CODE END PRIVATE_TYPES */ + +/** + * @} + */ + +/** @defgroup USBD_DFU_Private_Defines + * @brief Private defines. + * @{ + */ + +#define FLASH_DESC_STR "@Internal Flash /0x08000000/03*016Ka,01*016Kg,01*064Kg,07*128Kg,04*016Kg,01*064Kg,07*128Kg" + +/* USER CODE BEGIN PRIVATE_DEFINES */ + +/* USER CODE END PRIVATE_DEFINES */ + +/** + * @} + */ + +/** @defgroup USBD_DFU_Private_Macros + * @brief Private macros. + * @{ + */ + +/* USER CODE BEGIN PRIVATE_MACRO */ + +/* USER CODE END PRIVATE_MACRO */ + +/** + * @} + */ + +/** @defgroup USBD_DFU_Private_Variables + * @brief Private variables. + * @{ + */ + +/* USER CODE BEGIN PRIVATE_VARIABLES */ + +/* USER CODE END PRIVATE_VARIABLES */ + +/** + * @} + */ + +/** @defgroup USBD_DFU_Exported_Variables + * @brief Public variables. + * @{ + */ + +extern USBD_HandleTypeDef hUsbDeviceFS; + +/* USER CODE BEGIN EXPORTED_VARIABLES */ + +/* USER CODE END EXPORTED_VARIABLES */ + +/** + * @} + */ + +/** @defgroup USBD_DFU_Private_FunctionPrototypes + * @brief Private functions declaration. + * @{ + */ + +static uint16_t MEM_If_Init_FS(void); +static uint16_t MEM_If_Erase_FS(uint32_t Add); +static uint16_t MEM_If_Write_FS(uint8_t *src, uint8_t *dest, uint32_t Len); +static uint8_t *MEM_If_Read_FS(uint8_t *src, uint8_t *dest, uint32_t Len); +static uint16_t MEM_If_DeInit_FS(void); +static uint16_t MEM_If_GetStatus_FS(uint32_t Add, uint8_t Cmd, uint8_t *buffer); + +/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */ + +/* USER CODE END PRIVATE_FUNCTIONS_DECLARATION */ + +/** + * @} + */ + +#if defined ( __ICCARM__ ) /* IAR Compiler */ + #pragma data_alignment=4 +#endif +__ALIGN_BEGIN USBD_DFU_MediaTypeDef USBD_DFU_fops_FS __ALIGN_END = +{ + (uint8_t*)FLASH_DESC_STR, + MEM_If_Init_FS, + MEM_If_DeInit_FS, + MEM_If_Erase_FS, + MEM_If_Write_FS, + MEM_If_Read_FS, + MEM_If_GetStatus_FS +}; + +/* Private functions ---------------------------------------------------------*/ +/** + * @brief Memory initialization routine. + * @retval USBD_OK if operation is successful, MAL_FAIL else. + */ +uint16_t MEM_If_Init_FS(void) +{ + /* USER CODE BEGIN 0 */ + return (USBD_OK); + /* USER CODE END 0 */ +} + +/** + * @brief De-Initializes Memory + * @retval USBD_OK if operation is successful, MAL_FAIL else + */ +uint16_t MEM_If_DeInit_FS(void) +{ + /* USER CODE BEGIN 1 */ + return (USBD_OK); + /* USER CODE END 1 */ +} + +/** + * @brief Erase sector. + * @param Add: Address of sector to be erased. + * @retval 0 if operation is successful, MAL_FAIL else. + */ +uint16_t MEM_If_Erase_FS(uint32_t Add) +{ + /* USER CODE BEGIN 2 */ + + return (USBD_OK); + /* USER CODE END 2 */ +} + +/** + * @brief Memory write routine. + * @param src: Pointer to the source buffer. Address to be written to. + * @param dest: Pointer to the destination buffer. + * @param Len: Number of data to be written (in bytes). + * @retval USBD_OK if operation is successful, MAL_FAIL else. + */ +uint16_t MEM_If_Write_FS(uint8_t *src, uint8_t *dest, uint32_t Len) +{ + /* USER CODE BEGIN 3 */ + return (USBD_OK); + /* USER CODE END 3 */ +} + +/** + * @brief Memory read routine. + * @param src: Pointer to the source buffer. Address to be written to. + * @param dest: Pointer to the destination buffer. + * @param Len: Number of data to be read (in bytes). + * @retval Pointer to the physical address where data should be read. + */ +uint8_t *MEM_If_Read_FS(uint8_t *src, uint8_t *dest, uint32_t Len) +{ + /* Return a valid address to avoid HardFault */ + /* USER CODE BEGIN 4 */ + return (uint8_t*)(USBD_OK); + /* USER CODE END 4 */ +} + +/** + * @brief Get status routine + * @param Add: Address to be read from + * @param Cmd: Number of data to be read (in bytes) + * @param buffer: used for returning the time necessary for a program or an erase operation + * @retval USBD_OK if operation is successful + */ +uint16_t MEM_If_GetStatus_FS(uint32_t Add, uint8_t Cmd, uint8_t *buffer) +{ + /* USER CODE BEGIN 5 */ + switch (Cmd) + { + case DFU_MEDIA_PROGRAM: + + break; + + case DFU_MEDIA_ERASE: + default: + + break; + } + return (USBD_OK); + /* USER CODE END 5 */ +} + +/* USER CODE BEGIN PRIVATE_FUNCTIONS_IMPLEMENTATION */ + +/* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/USB_DEVICE/App/usbd_dfu_if.h b/stm32f103/USB_DEVICE/App/usbd_dfu_if.h new file mode 100644 index 0000000..15056f3 --- /dev/null +++ b/stm32f103/USB_DEVICE/App/usbd_dfu_if.h @@ -0,0 +1,128 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : usbd_dfu_if.h + * @brief : Header for usbd_dfu_if.c file. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2022 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USBD_DFU_IF_H__ +#define __USBD_DFU_IF_H__ + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_dfu.h" + +/* USER CODE BEGIN INCLUDE */ + +/* USER CODE END INCLUDE */ + +/** @addtogroup STM32_USB_DEVICE_LIBRARY + * @brief For Usb device. + * @{ + */ + +/** @defgroup USBD_MEDIA USBD_MEDIA + * @brief Header file for the usbd_dfu_if.c file. + * @{ + */ + +/** @defgroup USBD_MEDIA_Exported_Defines USBD_MEDIA_Exported_Defines + * @brief Defines. + * @{ + */ + +/* USER CODE BEGIN EXPORTED_DEFINES */ + +/* USER CODE END EXPORTED_DEFINES */ + +/** + * @} + */ + +/** @defgroup USBD_MEDIA_Exported_Types USBD_MEDIA_Exported_Types + * @brief Types. + * @{ + */ + +/* USER CODE BEGIN EXPORTED_TYPES */ + +/* USER CODE END EXPORTED_TYPES */ + +/** + * @} + */ + +/** @defgroup USBD_MEDIA_Exported_Macros USBD_MEDIA_Exported_Macros + * @brief Aliases. + * @{ + */ + +/* USER CODE BEGIN EXPORTED_MACRO */ + +/* USER CODE END EXPORTED_MACRO */ + +/** + * @} + */ + +/** @defgroup USBD_MEDIA_Exported_Variables USBD_MEDIA_Exported_Variables + * @brief Public variables. + * @{ + */ + +/** MEDIA Interface callback. */ +extern USBD_DFU_MediaTypeDef USBD_DFU_fops_FS; + +/* USER CODE BEGIN EXPORTED_VARIABLES */ + +/* USER CODE END EXPORTED_VARIABLES */ + +/** + * @} + */ + +/** @defgroup USBD_MEDIA_Exported_FunctionsPrototype USBD_MEDIA_Exported_FunctionsPrototype + * @brief Public functions declaration. + * @{ + */ + +/* USER CODE BEGIN EXPORTED_FUNCTIONS */ + +/* USER CODE END EXPORTED_FUNCTIONS */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __USBD_DFU_IF_H__ */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/USB_DEVICE/Target/usbd_conf.c b/stm32f103/USB_DEVICE/Target/usbd_conf.c new file mode 100644 index 0000000..9e052d5 --- /dev/null +++ b/stm32f103/USB_DEVICE/Target/usbd_conf.c @@ -0,0 +1,658 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : Target/usbd_conf.c + * @version : v2.0_Cube + * @brief : This file implements the board support package for the USB device library + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2022 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" +#include "stm32f1xx_hal.h" +#include "usbd_def.h" +#include "usbd_core.h" +#include "usbd_dfu.h" + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ + +/* USER CODE BEGIN PV */ +/* Private variables ---------------------------------------------------------*/ + +/* USER CODE END PV */ + +PCD_HandleTypeDef hpcd_USB_FS; +void Error_Handler(void); + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/* USER CODE BEGIN PFP */ +/* Private function prototypes -----------------------------------------------*/ + +/* USER CODE END PFP */ + +/* Private functions ---------------------------------------------------------*/ +static USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status); +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state); +#else +void HAL_PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + +/******************************************************************************* + LL Driver Callbacks (PCD -> USB Device Library) +*******************************************************************************/ +/* MSP Init */ + +void HAL_PCD_MspInit(PCD_HandleTypeDef* pcdHandle) +{ + if(pcdHandle->Instance==USB) + { + /* USER CODE BEGIN USB_MspInit 0 */ + + /* USER CODE END USB_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_USB_CLK_ENABLE(); + + /* Peripheral interrupt init */ + HAL_NVIC_SetPriority(USB_LP_CAN1_RX0_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(USB_LP_CAN1_RX0_IRQn); + /* USER CODE BEGIN USB_MspInit 1 */ + + /* USER CODE END USB_MspInit 1 */ + } +} + +void HAL_PCD_MspDeInit(PCD_HandleTypeDef* pcdHandle) +{ + if(pcdHandle->Instance==USB) + { + /* USER CODE BEGIN USB_MspDeInit 0 */ + + /* USER CODE END USB_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_USB_CLK_DISABLE(); + + /* Peripheral interrupt Deinit*/ + HAL_NVIC_DisableIRQ(USB_LP_CAN1_RX0_IRQn); + + /* USER CODE BEGIN USB_MspDeInit 1 */ + + /* USER CODE END USB_MspDeInit 1 */ + } +} + +/** + * @brief Setup stage callback + * @param hpcd: PCD handle + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + USBD_LL_SetupStage((USBD_HandleTypeDef*)hpcd->pData, (uint8_t *)hpcd->Setup); +} + +/** + * @brief Data Out stage callback. + * @param hpcd: PCD handle + * @param epnum: Endpoint number + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#else +void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + USBD_LL_DataOutStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->OUT_ep[epnum].xfer_buff); +} + +/** + * @brief Data In stage callback. + * @param hpcd: PCD handle + * @param epnum: Endpoint number + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#else +void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + USBD_LL_DataInStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->IN_ep[epnum].xfer_buff); +} + +/** + * @brief SOF callback. + * @param hpcd: PCD handle + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_SOFCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + USBD_LL_SOF((USBD_HandleTypeDef*)hpcd->pData); +} + +/** + * @brief Reset callback. + * @param hpcd: PCD handle + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_ResetCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + USBD_SpeedTypeDef speed = USBD_SPEED_FULL; + + if ( hpcd->Init.speed != PCD_SPEED_FULL) + { + Error_Handler(); + } + /* Set Speed. */ + USBD_LL_SetSpeed((USBD_HandleTypeDef*)hpcd->pData, speed); + + /* Reset Device. */ + USBD_LL_Reset((USBD_HandleTypeDef*)hpcd->pData); +} + +/** + * @brief Suspend callback. + * When Low power mode is enabled the debug cannot be used (IAR, Keil doesn't support it) + * @param hpcd: PCD handle + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + /* Inform USB library that core enters in suspend Mode. */ + USBD_LL_Suspend((USBD_HandleTypeDef*)hpcd->pData); + /* Enter in STOP mode. */ + /* USER CODE BEGIN 2 */ + if (hpcd->Init.low_power_enable) + { + /* Set SLEEPDEEP bit and SleepOnExit of Cortex System Control Register. */ + SCB->SCR |= (uint32_t)((uint32_t)(SCB_SCR_SLEEPDEEP_Msk | SCB_SCR_SLEEPONEXIT_Msk)); + } + /* USER CODE END 2 */ +} + +/** + * @brief Resume callback. + * When Low power mode is enabled the debug cannot be used (IAR, Keil doesn't support it) + * @param hpcd: PCD handle + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + /* USER CODE BEGIN 3 */ + + /* USER CODE END 3 */ + USBD_LL_Resume((USBD_HandleTypeDef*)hpcd->pData); +} + +/** + * @brief ISOOUTIncomplete callback. + * @param hpcd: PCD handle + * @param epnum: Endpoint number + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#else +void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + USBD_LL_IsoOUTIncomplete((USBD_HandleTypeDef*)hpcd->pData, epnum); +} + +/** + * @brief ISOINIncomplete callback. + * @param hpcd: PCD handle + * @param epnum: Endpoint number + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#else +void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + USBD_LL_IsoINIncomplete((USBD_HandleTypeDef*)hpcd->pData, epnum); +} + +/** + * @brief Connect callback. + * @param hpcd: PCD handle + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_ConnectCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + USBD_LL_DevConnected((USBD_HandleTypeDef*)hpcd->pData); +} + +/** + * @brief Disconnect callback. + * @param hpcd: PCD handle + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + USBD_LL_DevDisconnected((USBD_HandleTypeDef*)hpcd->pData); +} + +/******************************************************************************* + LL Driver Interface (USB Device Library --> PCD) +*******************************************************************************/ + +/** + * @brief Initializes the low level portion of the device driver. + * @param pdev: Device handle + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev) +{ + /* Init USB Ip. */ + /* Link the driver to the stack. */ + hpcd_USB_FS.pData = pdev; + pdev->pData = &hpcd_USB_FS; + + hpcd_USB_FS.Instance = USB; + hpcd_USB_FS.Init.dev_endpoints = 8; + hpcd_USB_FS.Init.speed = PCD_SPEED_FULL; + hpcd_USB_FS.Init.low_power_enable = DISABLE; + hpcd_USB_FS.Init.lpm_enable = DISABLE; + hpcd_USB_FS.Init.battery_charging_enable = DISABLE; + if (HAL_PCD_Init(&hpcd_USB_FS) != HAL_OK) + { + Error_Handler( ); + } + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + /* Register USB PCD CallBacks */ + HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_SOF_CB_ID, PCD_SOFCallback); + HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_SETUPSTAGE_CB_ID, PCD_SetupStageCallback); + HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_RESET_CB_ID, PCD_ResetCallback); + HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_SUSPEND_CB_ID, PCD_SuspendCallback); + HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_RESUME_CB_ID, PCD_ResumeCallback); + HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_CONNECT_CB_ID, PCD_ConnectCallback); + HAL_PCD_RegisterCallback(&hpcd_USB_FS, HAL_PCD_DISCONNECT_CB_ID, PCD_DisconnectCallback); + + HAL_PCD_RegisterDataOutStageCallback(&hpcd_USB_FS, PCD_DataOutStageCallback); + HAL_PCD_RegisterDataInStageCallback(&hpcd_USB_FS, PCD_DataInStageCallback); + HAL_PCD_RegisterIsoOutIncpltCallback(&hpcd_USB_FS, PCD_ISOOUTIncompleteCallback); + HAL_PCD_RegisterIsoInIncpltCallback(&hpcd_USB_FS, PCD_ISOINIncompleteCallback); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + /* USER CODE BEGIN EndPoint_Configuration */ + HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x00 , PCD_SNG_BUF, 0x18); + HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x80 , PCD_SNG_BUF, 0x58); + /* USER CODE END EndPoint_Configuration */ + return USBD_OK; +} + +/** + * @brief De-Initializes the low level portion of the device driver. + * @param pdev: Device handle + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_DeInit(USBD_HandleTypeDef *pdev) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_DeInit(pdev->pData); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Starts the low level portion of the device driver. + * @param pdev: Device handle + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_Start(pdev->pData); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Stops the low level portion of the device driver. + * @param pdev: Device handle + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_Stop(USBD_HandleTypeDef *pdev) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_Stop(pdev->pData); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Opens an endpoint of the low level driver. + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @param ep_type: Endpoint type + * @param ep_mps: Endpoint max packet size + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t ep_type, uint16_t ep_mps) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_EP_Open(pdev->pData, ep_addr, ep_mps, ep_type); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Closes an endpoint of the low level driver. + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_EP_Close(pdev->pData, ep_addr); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Flushes an endpoint of the Low Level Driver. + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_FlushEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_EP_Flush(pdev->pData, ep_addr); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Sets a Stall condition on an endpoint of the Low Level Driver. + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_EP_SetStall(pdev->pData, ep_addr); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Clears a Stall condition on an endpoint of the Low Level Driver. + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_EP_ClrStall(pdev->pData, ep_addr); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Returns Stall condition. + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval Stall (1: Yes, 0: No) + */ +uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + PCD_HandleTypeDef *hpcd = (PCD_HandleTypeDef*) pdev->pData; + + if((ep_addr & 0x80) == 0x80) + { + return hpcd->IN_ep[ep_addr & 0x7F].is_stall; + } + else + { + return hpcd->OUT_ep[ep_addr & 0x7F].is_stall; + } +} + +/** + * @brief Assigns a USB address to the device. + * @param pdev: Device handle + * @param dev_addr: Device address + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_SetAddress(pdev->pData, dev_addr); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Transmits data over an endpoint. + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @param pbuf: Pointer to data to be sent + * @param size: Data size + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_EP_Transmit(pdev->pData, ep_addr, pbuf, size); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Prepares an endpoint for reception. + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @param pbuf: Pointer to data to be received + * @param size: Data size + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_EP_Receive(pdev->pData, ep_addr, pbuf, size); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Returns the last transferred packet size. + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval Received Data Size + */ +uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + return HAL_PCD_EP_GetRxCount((PCD_HandleTypeDef*) pdev->pData, ep_addr); +} + +/** + * @brief Delays routine for the USB device library. + * @param Delay: Delay in ms + * @retval None + */ +void USBD_LL_Delay(uint32_t Delay) +{ + HAL_Delay(Delay); +} + +/** + * @brief Static single allocation. + * @param size: Size of allocated memory + * @retval None + */ +void *USBD_static_malloc(uint32_t size) +{ + static uint32_t mem[(sizeof(USBD_DFU_HandleTypeDef)/4)+1];/* On 32-bit boundary */ + return mem; +} + +/** + * @brief Dummy memory free + * @param p: Pointer to allocated memory address + * @retval None + */ +void USBD_static_free(void *p) +{ + +} + +/** + * @brief Software Device Connection + * @param hpcd: PCD handle + * @param state: Connection state (0: disconnected / 1: connected) + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state) +#else +void HAL_PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + /* USER CODE BEGIN 6 */ + if (state == 1) + { + /* Configure Low connection state. */ + + } + else + { + /* Configure High connection state. */ + + } + /* USER CODE END 6 */ +} + +/** + * @brief Returns the USB status depending on the HAL status: + * @param hal_status: HAL status + * @retval USB status + */ +USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status) +{ + USBD_StatusTypeDef usb_status = USBD_OK; + + switch (hal_status) + { + case HAL_OK : + usb_status = USBD_OK; + break; + case HAL_ERROR : + usb_status = USBD_FAIL; + break; + case HAL_BUSY : + usb_status = USBD_BUSY; + break; + case HAL_TIMEOUT : + usb_status = USBD_FAIL; + break; + default : + usb_status = USBD_FAIL; + break; + } + return usb_status; +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/USB_DEVICE/Target/usbd_conf.h b/stm32f103/USB_DEVICE/Target/usbd_conf.h new file mode 100644 index 0000000..e116f35 --- /dev/null +++ b/stm32f103/USB_DEVICE/Target/usbd_conf.h @@ -0,0 +1,183 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : usbd_conf.h + * @version : v2.0_Cube + * @brief : Header for usbd_conf.c file. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2022 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USBD_CONF__H__ +#define __USBD_CONF__H__ + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include +#include +#include +#include "main.h" +#include "stm32f1xx.h" +#include "stm32f1xx_hal.h" + +/* USER CODE BEGIN INCLUDE */ + +/* USER CODE END INCLUDE */ + +/** @addtogroup USBD_OTG_DRIVER + * @{ + */ + +/** @defgroup USBD_CONF USBD_CONF + * @brief Configuration file for Usb otg low level driver. + * @{ + */ + +/** @defgroup USBD_CONF_Exported_Variables USBD_CONF_Exported_Variables + * @brief Public variables. + * @{ + */ + +/** + * @} + */ + +/** @defgroup USBD_CONF_Exported_Defines USBD_CONF_Exported_Defines + * @brief Defines for configuration of the Usb device. + * @{ + */ + +/*---------- -----------*/ +#define USBD_MAX_NUM_INTERFACES 1 +/*---------- -----------*/ +#define USBD_MAX_NUM_CONFIGURATION 1 +/*---------- -----------*/ +#define USBD_MAX_STR_DESC_SIZ 512 +/*---------- -----------*/ +#define USBD_SUPPORT_USER_STRING_DESC 1 +/*---------- -----------*/ +#define USBD_DEBUG_LEVEL 0 +/*---------- -----------*/ +#define USBD_SELF_POWERED 1 +/*---------- -----------*/ +#define USBD_DFU_MAX_ITF_NUM 1 +/*---------- -----------*/ +#define USBD_DFU_XFER_SIZE 1024 +/*---------- -----------*/ +#define USBD_DFU_APP_DEFAULT_ADD 0x08000000 + +/****************************************/ +/* #define for FS and HS identification */ +#define DEVICE_FS 0 + +/** + * @} + */ + +/** @defgroup USBD_CONF_Exported_Macros USBD_CONF_Exported_Macros + * @brief Aliases. + * @{ + */ + +/* Memory management macros */ + +/** Alias for memory allocation. */ +#define USBD_malloc (uint32_t *)USBD_static_malloc + +/** Alias for memory release. */ +#define USBD_free USBD_static_free + +/** Alias for memory set. */ +#define USBD_memset /* Not used */ + +/** Alias for memory copy. */ +#define USBD_memcpy /* Not used */ + +/** Alias for delay. */ +#define USBD_Delay HAL_Delay + +/* For footprint reasons and since only one allocation is handled in the HID class + driver, the malloc/free is changed into a static allocation method */ +void *USBD_static_malloc(uint32_t size); +void USBD_static_free(void *p); + +/* DEBUG macros */ + +#if (USBD_DEBUG_LEVEL > 0) +#define USBD_UsrLog(...) printf(__VA_ARGS__);\ + printf("\n"); +#else +#define USBD_UsrLog(...) +#endif + +#if (USBD_DEBUG_LEVEL > 1) + +#define USBD_ErrLog(...) printf("ERROR: ") ;\ + printf(__VA_ARGS__);\ + printf("\n"); +#else +#define USBD_ErrLog(...) +#endif + +#if (USBD_DEBUG_LEVEL > 2) +#define USBD_DbgLog(...) printf("DEBUG : ") ;\ + printf(__VA_ARGS__);\ + printf("\n"); +#else +#define USBD_DbgLog(...) +#endif + +/** + * @} + */ + +/** @defgroup USBD_CONF_Exported_Types USBD_CONF_Exported_Types + * @brief Types. + * @{ + */ + +/** + * @} + */ + +/** @defgroup USBD_CONF_Exported_FunctionsPrototype USBD_CONF_Exported_FunctionsPrototype + * @brief Declaration of public functions for Usb device. + * @{ + */ + +/* Exported functions -------------------------------------------------------*/ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __USBD_CONF__H__ */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/stm32f103/stm32f103.ioc b/stm32f103/stm32f103.ioc index ba16d82..8705f4b 100644 --- a/stm32f103/stm32f103.ioc +++ b/stm32f103/stm32f103.ioc @@ -14,23 +14,28 @@ Mcu.IP2=NVIC Mcu.IP3=RCC Mcu.IP4=SYS Mcu.IP5=USART1 -Mcu.IPNb=6 +Mcu.IP6=USB +Mcu.IP7=USB_DEVICE +Mcu.IPNb=8 Mcu.Name=STM32F103C(8-B)Tx Mcu.Package=LQFP48 Mcu.Pin0=PC14-OSC32_IN Mcu.Pin1=PC15-OSC32_OUT -Mcu.Pin10=PB6 -Mcu.Pin11=PB7 -Mcu.Pin12=VP_SYS_VS_Systick +Mcu.Pin10=PA13 +Mcu.Pin11=PA14 +Mcu.Pin12=PB6 +Mcu.Pin13=PB7 +Mcu.Pin14=VP_SYS_VS_Systick +Mcu.Pin15=VP_USB_DEVICE_VS_USB_DEVICE_DFU_FS Mcu.Pin2=PD0-OSC_IN Mcu.Pin3=PD1-OSC_OUT Mcu.Pin4=PA0-WKUP Mcu.Pin5=PA1 Mcu.Pin6=PA9 Mcu.Pin7=PA10 -Mcu.Pin8=PA13 -Mcu.Pin9=PA14 -Mcu.PinsNb=13 +Mcu.Pin8=PA11 +Mcu.Pin9=PA12 +Mcu.PinsNb=16 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F103C8Tx @@ -46,12 +51,17 @@ NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true +NVIC.USB_LP_CAN1_RX0_IRQn=true\:0\:0\:false\:false\:true\:false\:true NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false PA0-WKUP.Signal=ADCx_IN0 PA1.Locked=true PA1.Signal=GPIO_Input PA10.Mode=Asynchronous PA10.Signal=USART1_RX +PA11.Mode=Device +PA11.Signal=USB_DM +PA12.Mode=Device +PA12.Signal=USB_DP PA13.Mode=Serial_Wire PA13.Signal=SYS_JTMS-SWDIO PA14.Mode=Serial_Wire @@ -98,8 +108,9 @@ ProjectManager.StackSize=0x400 ProjectManager.TargetToolchain=STM32CubeIDE ProjectManager.ToolChainLocation= ProjectManager.UnderRoot=true -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true -RCC.ADCFreqValue=36000000 +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_ADC1_Init-ADC1-false-HAL-true,4-MX_I2C1_Init-I2C1-false-HAL-true,5-MX_USART1_UART_Init-USART1-false-HAL-true,6-MX_USB_PCD_Init-USB-false-HAL-true +RCC.ADCFreqValue=12000000 +RCC.ADCPresc=RCC_ADCPCLK2_DIV6 RCC.AHBFreq_Value=72000000 RCC.APB1CLKDivider=RCC_HCLK_DIV2 RCC.APB1Freq_Value=36000000 @@ -109,7 +120,7 @@ RCC.APB2TimFreq_Value=72000000 RCC.FCLKCortexFreq_Value=72000000 RCC.FamilyName=M RCC.HCLKFreq_Value=72000000 -RCC.IPParameters=ADCFreqValue,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,MCOFreq_Value,PLLCLKFreq_Value,PLLMCOFreq_Value,PLLMUL,PLLSourceVirtual,SYSCLKFreq_VALUE,SYSCLKSource,TimSysFreq_Value,USBFreq_Value,VCOOutput2Freq_Value +RCC.IPParameters=ADCFreqValue,ADCPresc,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,MCOFreq_Value,PLLCLKFreq_Value,PLLMCOFreq_Value,PLLMUL,PLLSourceVirtual,SYSCLKFreq_VALUE,SYSCLKSource,TimSysFreq_Value,USBFreq_Value,USBPrescaler,VCOOutput2Freq_Value RCC.MCOFreq_Value=72000000 RCC.PLLCLKFreq_Value=72000000 RCC.PLLMCOFreq_Value=36000000 @@ -118,13 +129,20 @@ RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE RCC.SYSCLKFreq_VALUE=72000000 RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK RCC.TimSysFreq_Value=72000000 -RCC.USBFreq_Value=72000000 +RCC.USBFreq_Value=48000000 +RCC.USBPrescaler=RCC_USBCLKSOURCE_PLL_DIV1_5 RCC.VCOOutput2Freq_Value=8000000 SH.ADCx_IN0.0=ADC1_IN0,IN0 SH.ADCx_IN0.ConfNb=1 USART1.IPParameters=VirtualMode USART1.VirtualMode=VM_ASYNC +USB_DEVICE.CLASS_NAME_FS=DFU +USB_DEVICE.IPParameters=VirtualMode,VirtualModeFS,CLASS_NAME_FS +USB_DEVICE.VirtualMode=Dfu +USB_DEVICE.VirtualModeFS=Dfu_FS VP_SYS_VS_Systick.Mode=SysTick VP_SYS_VS_Systick.Signal=SYS_VS_Systick +VP_USB_DEVICE_VS_USB_DEVICE_DFU_FS.Mode=DFU_FS +VP_USB_DEVICE_VS_USB_DEVICE_DFU_FS.Signal=USB_DEVICE_VS_USB_DEVICE_DFU_FS board=custom isbadioc=false