From 177fca8b4efe0f598615df640d71e26f6d9267a1 Mon Sep 17 00:00:00 2001 From: "jazz (gitea)" Date: Sun, 21 Sep 2025 01:26:23 -0500 Subject: [PATCH] new traffic light code. walk signal works --- .metadata/.ide.log | 2257 +- .metadata/.ide.log-2025-09-20.log | 2956 ++ .metadata/.log | 18 + .metadata/.plugins/org.eclipse.cdt.core/.log | 1 + .../TrafficLightsPlus.1758137370837.pdom | Bin 8794112 -> 8847360 bytes .../TrafficLightsPlus.build.log | 7 +- .../org.eclipse.cdt.ui/dialog_settings.xml | 4 + .../org.eclipse.cdt.ui/global-build.log | 5 +- .../0/2055ea26af9600101605f36318c5a03f | 95 + .../0/60bf74b0f695001014a1b349f7adbbd1 | 48 - .../10/a0de2e24af9600101605f36318c5a03f | 95 + .../11/30372612a59600101605f36318c5a03f | 13 + .../13/d01a6f4faf9600101605f36318c5a03f | 95 + .../16/c0dac6ec5f96001013e892f2240cdbac | 731 + .../16/d0c9bb40ae9600101605f36318c5a03f | 85 + .../17/9055d7ebaa9600101605f36318c5a03f | 79 + .../18/10d57df6a49600101605f36318c5a03f | 731 + .../19/50275262f695001014a1b349f7adbbd1 | 47 - .../605074f75f96001013e892f2240cdbac} | 33 +- .../1d/c00fabc8f795001014a1b349f7adbbd1 | 54 - .../1e/20e775f0ae9600101605f36318c5a03f | 98 + .../1f/d0e648806596001013e892f2240cdbac | 731 + .../2/606f4d90f795001014a1b349f7adbbd1 | 50 - .../2/b0780877f795001014a1b349f7adbbd1 | 50 - .../20/90acb2416496001013e892f2240cdbac | 85 + .../21/e010a3106996001013e892f2240cdbac | 87 + .../22/9084cb54f795001014a1b349f7adbbd1 | 49 - .../23/90b966be6296001013e892f2240cdbac | 83 + .../24/707b75faac9600101605f36318c5a03f | 87 + .../25/d00985166b96001013e892f2240cdbac | 87 + .../27/d0b3bcefaf9600101605f36318c5a03f | 95 + .../28/60df89739e9600101605f36318c5a03f | 731 + .../28/f08ed78fae9600101605f36318c5a03f | 92 + .../2d/00faf8a26396001013e892f2240cdbac | 86 + .../2e/008b3c54f795001014a1b349f7adbbd1 | 49 - .../2f/2052be29ae9600101605f36318c5a03f | 82 + .../2f/50c89b5bad9600101605f36318c5a03f | 69 + .../e06b590b5d96001013e892f2240cdbac} | 25 +- .../30/50ace7bff695001014a1b349f7adbbd1 | 49 - .../37/800222e56596001013e892f2240cdbac | 731 + .../38/30af6cc7ae9600101605f36318c5a03f | 97 + .../39/a07dbaddf895001014a1b349f7adbbd1 | 34 - .../3a/60863702ac9600101605f36318c5a03f | 85 + .../3c/90438fe66496001013e892f2240cdbac | 87 + .../3c/a0b2fcd56096001013e892f2240cdbac | 19 + .../3d/003eff459e9600101605f36318c5a03f | 730 + .../3e/9066b761f995001014a1b349f7adbbd1 | 45 - .../3f/30d9ed3d6096001013e892f2240cdbac | 69 + .../40/5083bbb8f895001014a1b349f7adbbd1 | 60 - .../43/30f91ec5af9600101605f36318c5a03f | 730 + .../46/30928108f995001014a1b349f7adbbd1 | 35 - .../4b/90c0f519ad9600101605f36318c5a03f | 71 + .../4d/a0c2a7b46296001013e892f2240cdbac | 81 + .../4e/f00d65b6ad9600101605f36318c5a03f | 72 + .../5/200721b5ab9600101605f36318c5a03f | 83 + .../5/d00022ed6496001013e892f2240cdbac | 731 + .../51/605b0d3af795001014a1b349f7adbbd1 | 49 - .../53/200e52fd6296001013e892f2240cdbac | 81 + .../54/109966649e9600101605f36318c5a03f | 13 + .../54/50b578956396001013e892f2240cdbac | 86 + .../54/a0755e216496001013e892f2240cdbac | 85 + .../f0a56a195d96001013e892f2240cdbac} | 27 +- .../55/9053c3ecf795001014a1b349f7adbbd1 | 56 - .../56/90558020af9600101605f36318c5a03f | 95 + .../58/1043da216996001013e892f2240cdbac | 19 + .../58/409cec3ef795001014a1b349f7adbbd1 | 49 - .../5c/5012e6e46296001013e892f2240cdbac | 731 + .../5e/30359e6d6a96001013e892f2240cdbac | 732 + .../5e/505739c26096001013e892f2240cdbac | 79 + .../5f/3099ecc0f695001014a1b349f7adbbd1 | 51 - .../5f/708bc2d0ab9600101605f36318c5a03f | 84 + .../63/00c742e76296001013e892f2240cdbac | 731 + .../63/80047dfead9600101605f36318c5a03f | 74 + .../65/8093c37b6a96001013e892f2240cdbac | 732 + .../66/c05318c3af9600101605f36318c5a03f | 730 + .../68/d0cc52d6ab9600101605f36318c5a03f | 85 + .../69/108c02a26396001013e892f2240cdbac | 86 + .../69/30006aa0af9600101605f36318c5a03f | 730 + .../69/50b960c3ad9600101605f36318c5a03f | 72 + .../71/009bf612af9600101605f36318c5a03f | 101 + .../71/30d1116eaf9600101605f36318c5a03f | 15 + .../71/e0e62d3cf695001014a1b349f7adbbd1 | 39 - .../72/30b6a0e26296001013e892f2240cdbac | 731 + .../78/e09529e56096001013e892f2240cdbac | 84 + .../7a/e06b0351ae9600101605f36318c5a03f | 89 + .../7c/40a221316096001013e892f2240cdbac | 63 + .../8/206f3334ad9600101605f36318c5a03f | 74 + .../81/80e16946b09600101605f36318c5a03f | 730 + .../83/006beaa85f96001013e892f2240cdbac | 63 + .../83/c00f9d0faf9600101605f36318c5a03f | 100 + .../86/208938c16096001013e892f2240cdbac | 76 + .../86/a002320f9396001013e892f2240cdbac | 87 + .../87/70300f56ad9600101605f36318c5a03f | 68 + .../89/c0192844ae9600101605f36318c5a03f | 88 + .../8a/107d9637f995001014a1b349f7adbbd1 | 37 - .../92/402d992dac9600101605f36318c5a03f | 89 + .../93/e09b2fcef895001014a1b349f7adbbd1 | 48 - .../95/10c05cdd6296001013e892f2240cdbac | 731 + .../95/b0c2a6a7f795001014a1b349f7adbbd1 | 56 - .../99/b03e3fbcaf9600101605f36318c5a03f | 730 + .../9b/b0755bc1f895001014a1b349f7adbbd1 | 53 - .../9d/6095fd066996001013e892f2240cdbac | 87 + .../9e/b0d3ae29ac9600101605f36318c5a03f | 85 + .../9f/00375fd4a79600101605f36318c5a03f | 730 + .../9f/606e3aeb5f96001013e892f2240cdbac | 730 + .../9f/f0feb5996596001013e892f2240cdbac | 87 + .../a3/802bf57ff795001014a1b349f7adbbd1 | 50 - .../a7/d0d817729e9600101605f36318c5a03f | 730 + .../a9/400946666396001013e892f2240cdbac | 81 + .../ab/6068d747f995001014a1b349f7adbbd1 | 44 - .../ab/a0b4fd6eab9600101605f36318c5a03f | 83 + .../ac/20b37dd26296001013e892f2240cdbac | 731 + .../ae/30f326956096001013e892f2240cdbac | 14 + .../af/40262d69f895001014a1b349f7adbbd1 | 56 - .../b6/001207d2ae9600101605f36318c5a03f | 97 + .../b6/d0024abeaf9600101605f36318c5a03f | 730 + .../b6/e05dffdbad9600101605f36318c5a03f | 73 + .../b7/90a12443b09600101605f36318c5a03f | 730 + .../b8/d08c47e86296001013e892f2240cdbac | 731 + .../b8/e0162da3f695001014a1b349f7adbbd1 | 47 - .../ba/d07d3ff4a49600101605f36318c5a03f | 14 + .../ba/e02cebb46596001013e892f2240cdbac | 87 + .../bc/e02ce408af9600101605f36318c5a03f | 99 + .../be/80bf12f5f895001014a1b349f7adbbd1 | 34 - .../be/80c0fdd76596001013e892f2240cdbac | 731 + .../be/a0280d0fab9600101605f36318c5a03f | 81 + .../bf/40d5cb70f895001014a1b349f7adbbd1 | 56 - .../c1/206820039e9600101605f36318c5a03f | 730 + .../c1/20e546c9f895001014a1b349f7adbbd1 | 52 - .../c3/604082e56496001013e892f2240cdbac | 86 + .../c3/80f5d29bf795001014a1b349f7adbbd1 | 54 - .../c5/e069d2d16096001013e892f2240cdbac | 82 + .../c6/907e0364ab9600101605f36318c5a03f | 83 + .../c7/00af95d6f795001014a1b349f7adbbd1 | 55 - .../c9/60d0fdccad9600101605f36318c5a03f | 74 + .../c9/703e7b01b09600101605f36318c5a03f | 81 + .../c9/80777c98f795001014a1b349f7adbbd1 | 52 - .../c9/f0746affb19600101605f36318c5a03f | 81 + .../ca/80ba58ed5f96001013e892f2240cdbac | 731 + .../cf/80a38f69f695001014a1b349f7adbbd1 | 47 - .../cf/d011d58df695001014a1b349f7adbbd1 | 47 - .../d0/2083c150f995001014a1b349f7adbbd1 | 44 - .../d0/2091273cad9600101605f36318c5a03f | 70 + .../d0/50dcc24dad9600101605f36318c5a03f | 68 + .../d0/609aff18a59600101605f36318c5a03f | 14 + .../d2/40d83561ae9600101605f36318c5a03f | 91 + .../d3/b08c4786ad9600101605f36318c5a03f | 70 + .../d6/e0904406b19600101605f36318c5a03f | 81 + .../d7/00e1369ff795001014a1b349f7adbbd1 | 55 - .../d8/e09e5470f795001014a1b349f7adbbd1 | 50 - .../d9/20b8d3d8f795001014a1b349f7adbbd1 | 56 - .../d9/602cf59e6096001013e892f2240cdbac | 17 + .../d9/7042f353f695001014a1b349f7adbbd1 | 46 - .../d9/90a1f0076196001013e892f2240cdbac | 80 + .../db/3025ff806a96001013e892f2240cdbac | 19 + .../db/404345429e9600101605f36318c5a03f | 13 + .../db/70a286846396001013e892f2240cdbac | 83 + .../dc/e0fd74a56096001013e892f2240cdbac | 75 + .../de/2074be925f96001013e892f2240cdbac | 13 + .../e1/20bf2853f995001014a1b349f7adbbd1 | 44 - .../e2/00fd4f9c6096001013e892f2240cdbac | 15 + .../e3/1072b9b26096001013e892f2240cdbac | 76 + .../e3/30588babad9600101605f36318c5a03f | 71 + .../e4/0024b5206996001013e892f2240cdbac | 89 + .../e4/a0ce147bf695001014a1b349f7adbbd1 | 47 - .../e5/7011b93ead9600101605f36318c5a03f | 68 + .../e5/d06e10f26296001013e892f2240cdbac | 731 + .../1044c4015d96001013e892f2240cdbac} | 27 +- .../e8/b05b77126996001013e892f2240cdbac | 89 + .../e8/f014bbe36496001013e892f2240cdbac | 86 + .../ea/e02bed10ae9600101605f36318c5a03f | 79 + .../eb/302699bdab9600101605f36318c5a03f | 83 + .../ef/30302e02af9600101605f36318c5a03f | 98 + .../ef/e012d765f795001014a1b349f7adbbd1 | 50 - .../f/a0c87389f895001014a1b349f7adbbd1 | 56 - .../f/c0b69abbae9600101605f36318c5a03f | 94 + .../f7/a0d46dd26296001013e892f2240cdbac | 19 + .../b0a5b4a35f96001013e892f2240cdbac} | 29 +- .../fb/c0aca9835f96001013e892f2240cdbac | 57 + .../fc/10a6a16b6396001013e892f2240cdbac | 82 + .../fc/606ef369f695001014a1b349f7adbbd1 | 47 - .../fc/908fa088f795001014a1b349f7adbbd1 | 50 - .../fc/d012730f5d96001013e892f2240cdbac | 56 + .../fc/f01b5cb9af9600101605f36318c5a03f | 730 + .../fe/704da1c0f895001014a1b349f7adbbd1 | 60 - .../ff/a0fc1d32ad9600101605f36318c5a03f | 72 + .../.projects/Calc2/.markers.snap | Bin 32 -> 0 bytes .../.projects/Calc2/.syncinfo.snap | Bin 32 -> 0 bytes .../.projects/Calculator/.markers.snap | Bin 32 -> 0 bytes .../.projects/Calculator/.syncinfo.snap | Bin 32 -> 0 bytes .../.projects/MyNewProject/.markers.snap | Bin 32 -> 0 bytes .../.projects/MyNewProject/.syncinfo.snap | Bin 32 -> 0 bytes .../.indexes/bf/be/history.index | Bin 79 -> 223 bytes .../.indexes/bf/c4/history.index | Bin 1347 -> 1683 bytes .../.projects/TrafficLightsPlus/.markers | Bin 651 -> 843 bytes .../.projects/TrafficLightsPlus/.markers.snap | Bin 32 -> 0 bytes .../TrafficLightsPlus/.syncinfo.snap | Bin 32 -> 0 bytes .../.root/.markers.snap | Bin 32 -> 0 bytes .../.root/{16.tree => 17.tree} | Bin 99559 -> 99559 bytes .../.safetable/org.eclipse.core.resources | Bin 823 -> 584 bytes .../org.eclipse.core.resources/16.snap | Bin 710 -> 0 bytes .../.settings/org.eclipse.debug.ui.prefs | 9 - .../org.eclipse.e4.workbench/workbench.xmi | 46 +- .metadata/version.ini | 2 +- TrafficLightsPlus/.cproject | 1 + TrafficLightsPlus/Core/Inc/breadboard.h | 4 +- TrafficLightsPlus/Core/Inc/main.h | 2 + TrafficLightsPlus/Core/Src/breadboard.c | 65 +- TrafficLightsPlus/Core/Src/main.c | 9 +- .../Debug/Core/Src/breadboard.cyclo | 3 +- TrafficLightsPlus/Debug/Core/Src/breadboard.o | Bin 1231560 -> 1233244 bytes .../Debug/Core/Src/breadboard.su | 3 +- TrafficLightsPlus/Debug/Core/Src/freertos.o | Bin 1256816 -> 1256896 bytes TrafficLightsPlus/Debug/Core/Src/main.cyclo | 26 +- TrafficLightsPlus/Debug/Core/Src/main.o | Bin 1295364 -> 1295520 bytes TrafficLightsPlus/Debug/Core/Src/main.su | 26 +- .../Debug/Core/Src/stm32f4xx_hal_msp.o | Bin 1261104 -> 1261188 bytes .../Debug/Core/Src/stm32f4xx_it.o | Bin 1244528 -> 1244612 bytes .../Class/CDC/Src/usbh_cdc.o | Bin 1326464 -> 1326544 bytes .../Core/Src/usbh_core.o | Bin 1328684 -> 1328764 bytes .../Core/Src/usbh_ctlreq.o | Bin 1321172 -> 1321252 bytes .../Core/Src/usbh_ioreq.o | Bin 1311948 -> 1312028 bytes .../Core/Src/usbh_pipes.o | Bin 1309648 -> 1309732 bytes TrafficLightsPlus/Debug/TrafficLightsPlus.elf | Bin 1598652 -> 1599416 bytes .../Debug/TrafficLightsPlus.list | 27694 ++++++++-------- TrafficLightsPlus/Debug/TrafficLightsPlus.map | 1784 +- .../Debug/USB_HOST/App/usb_host.o | Bin 1311608 -> 1311692 bytes .../Debug/USB_HOST/Target/usbh_conf.o | Bin 1330592 -> 1330672 bytes TrafficLightsPlus/TrafficLightsPlus.ioc | 203 +- 229 files changed, 47128 insertions(+), 19400 deletions(-) create mode 100644 .metadata/.ide.log-2025-09-20.log create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/0/2055ea26af9600101605f36318c5a03f delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/0/60bf74b0f695001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/10/a0de2e24af9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/11/30372612a59600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/13/d01a6f4faf9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/16/c0dac6ec5f96001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/16/d0c9bb40ae9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/17/9055d7ebaa9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/18/10d57df6a49600101605f36318c5a03f delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/19/50275262f695001014a1b349f7adbbd1 rename .metadata/.plugins/org.eclipse.core.resources/.history/{27/80efb76af995001014a1b349f7adbbd1 => 1b/605074f75f96001013e892f2240cdbac} (52%) delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/1d/c00fabc8f795001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/1e/20e775f0ae9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/1f/d0e648806596001013e892f2240cdbac delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/2/606f4d90f795001014a1b349f7adbbd1 delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/2/b0780877f795001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/20/90acb2416496001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/21/e010a3106996001013e892f2240cdbac delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/22/9084cb54f795001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/23/90b966be6296001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/24/707b75faac9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/25/d00985166b96001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/27/d0b3bcefaf9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/28/60df89739e9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/28/f08ed78fae9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/2d/00faf8a26396001013e892f2240cdbac delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/2e/008b3c54f795001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/2f/2052be29ae9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/2f/50c89b5bad9600101605f36318c5a03f rename .metadata/.plugins/org.eclipse.core.resources/.history/{1e/a0424880f995001014a1b349f7adbbd1 => 2f/e06b590b5d96001013e892f2240cdbac} (53%) delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/30/50ace7bff695001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/37/800222e56596001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/38/30af6cc7ae9600101605f36318c5a03f delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/39/a07dbaddf895001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/3a/60863702ac9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/3c/90438fe66496001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/3c/a0b2fcd56096001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/3d/003eff459e9600101605f36318c5a03f delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/3e/9066b761f995001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/3f/30d9ed3d6096001013e892f2240cdbac delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/40/5083bbb8f895001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/43/30f91ec5af9600101605f36318c5a03f delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/46/30928108f995001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/4b/90c0f519ad9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/4d/a0c2a7b46296001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/4e/f00d65b6ad9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/5/200721b5ab9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/5/d00022ed6496001013e892f2240cdbac delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/51/605b0d3af795001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/53/200e52fd6296001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/54/109966649e9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/54/50b578956396001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/54/a0755e216496001013e892f2240cdbac rename .metadata/.plugins/org.eclipse.core.resources/.history/{47/104caa77f995001014a1b349f7adbbd1 => 54/f0a56a195d96001013e892f2240cdbac} (53%) delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/55/9053c3ecf795001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/56/90558020af9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/58/1043da216996001013e892f2240cdbac delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/58/409cec3ef795001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/5c/5012e6e46296001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/5e/30359e6d6a96001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/5e/505739c26096001013e892f2240cdbac delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/5f/3099ecc0f695001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/5f/708bc2d0ab9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/63/00c742e76296001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/63/80047dfead9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/65/8093c37b6a96001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/66/c05318c3af9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/68/d0cc52d6ab9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/69/108c02a26396001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/69/30006aa0af9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/69/50b960c3ad9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/71/009bf612af9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/71/30d1116eaf9600101605f36318c5a03f delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/71/e0e62d3cf695001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/72/30b6a0e26296001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/78/e09529e56096001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/7a/e06b0351ae9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/7c/40a221316096001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/8/206f3334ad9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/81/80e16946b09600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/83/006beaa85f96001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/83/c00f9d0faf9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/86/208938c16096001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/86/a002320f9396001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/87/70300f56ad9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/89/c0192844ae9600101605f36318c5a03f delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/8a/107d9637f995001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/92/402d992dac9600101605f36318c5a03f delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/93/e09b2fcef895001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/95/10c05cdd6296001013e892f2240cdbac delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/95/b0c2a6a7f795001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/99/b03e3fbcaf9600101605f36318c5a03f delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/9b/b0755bc1f895001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/9d/6095fd066996001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/9e/b0d3ae29ac9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/9f/00375fd4a79600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/9f/606e3aeb5f96001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/9f/f0feb5996596001013e892f2240cdbac delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/a3/802bf57ff795001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/a7/d0d817729e9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/a9/400946666396001013e892f2240cdbac delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/ab/6068d747f995001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/ab/a0b4fd6eab9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/ac/20b37dd26296001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/ae/30f326956096001013e892f2240cdbac delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/af/40262d69f895001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/b6/001207d2ae9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/b6/d0024abeaf9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/b6/e05dffdbad9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/b7/90a12443b09600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/b8/d08c47e86296001013e892f2240cdbac delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/b8/e0162da3f695001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/ba/d07d3ff4a49600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/ba/e02cebb46596001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/bc/e02ce408af9600101605f36318c5a03f delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/be/80bf12f5f895001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/be/80c0fdd76596001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/be/a0280d0fab9600101605f36318c5a03f delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/bf/40d5cb70f895001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/c1/206820039e9600101605f36318c5a03f delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/c1/20e546c9f895001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/c3/604082e56496001013e892f2240cdbac delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/c3/80f5d29bf795001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/c5/e069d2d16096001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/c6/907e0364ab9600101605f36318c5a03f delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/c7/00af95d6f795001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/c9/60d0fdccad9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/c9/703e7b01b09600101605f36318c5a03f delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/c9/80777c98f795001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/c9/f0746affb19600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/ca/80ba58ed5f96001013e892f2240cdbac delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/cf/80a38f69f695001014a1b349f7adbbd1 delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/cf/d011d58df695001014a1b349f7adbbd1 delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/d0/2083c150f995001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/d0/2091273cad9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/d0/50dcc24dad9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/d0/609aff18a59600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/d2/40d83561ae9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/d3/b08c4786ad9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/d6/e0904406b19600101605f36318c5a03f delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/d7/00e1369ff795001014a1b349f7adbbd1 delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/d8/e09e5470f795001014a1b349f7adbbd1 delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/d9/20b8d3d8f795001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/d9/602cf59e6096001013e892f2240cdbac delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/d9/7042f353f695001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/d9/90a1f0076196001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/db/3025ff806a96001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/db/404345429e9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/db/70a286846396001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/dc/e0fd74a56096001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/de/2074be925f96001013e892f2240cdbac delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/e1/20bf2853f995001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/e2/00fd4f9c6096001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/e3/1072b9b26096001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/e3/30588babad9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/e4/0024b5206996001013e892f2240cdbac delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/e4/a0ce147bf695001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/e5/7011b93ead9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/e5/d06e10f26296001013e892f2240cdbac rename .metadata/.plugins/org.eclipse.core.resources/.history/{ed/30bda43cf995001014a1b349f7adbbd1 => e6/1044c4015d96001013e892f2240cdbac} (53%) create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/e8/b05b77126996001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/e8/f014bbe36496001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/ea/e02bed10ae9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/eb/302699bdab9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/ef/30302e02af9600101605f36318c5a03f delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/ef/e012d765f795001014a1b349f7adbbd1 delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/f/a0c87389f895001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/f/c0b69abbae9600101605f36318c5a03f create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/f7/a0d46dd26296001013e892f2240cdbac rename .metadata/.plugins/org.eclipse.core.resources/.history/{ee/8079c479f995001014a1b349f7adbbd1 => f9/b0a5b4a35f96001013e892f2240cdbac} (52%) create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/fb/c0aca9835f96001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/fc/10a6a16b6396001013e892f2240cdbac delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/fc/606ef369f695001014a1b349f7adbbd1 delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/fc/908fa088f795001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/fc/d012730f5d96001013e892f2240cdbac create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/fc/f01b5cb9af9600101605f36318c5a03f delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/fe/704da1c0f895001014a1b349f7adbbd1 create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/ff/a0fc1d32ad9600101605f36318c5a03f delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/Calc2/.markers.snap delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/Calc2/.syncinfo.snap delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/Calculator/.markers.snap delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/Calculator/.syncinfo.snap delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/MyNewProject/.markers.snap delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/MyNewProject/.syncinfo.snap delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/TrafficLightsPlus/.markers.snap delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.projects/TrafficLightsPlus/.syncinfo.snap delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/.root/.markers.snap rename .metadata/.plugins/org.eclipse.core.resources/.root/{16.tree => 17.tree} (76%) delete mode 100644 .metadata/.plugins/org.eclipse.core.resources/16.snap diff --git a/.metadata/.ide.log b/.metadata/.ide.log index 3438e72..2a4a4f5 100644 --- a/.metadata/.ide.log +++ b/.metadata/.ide.log @@ -1,2256 +1 @@ -2025-09-20 00:17:48,329 [INFO] Activator:176 - - - -2025-09-20 00:17:48,336 [INFO] Activator:177 - !SESSION log4j initialized -2025-09-20 00:18:00,868 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] -2025-09-20 00:18:04,686 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 -2025-09-20 00:18:04,728 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ -2025-09-20 00:18:04,729 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ -2025-09-20 00:18:04,729 [WARN] ApiDb:259 - Overriding images path with different value: => /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ -2025-09-20 00:18:04,742 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ -2025-09-20 00:18:04,745 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ -2025-09-20 00:18:04,749 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ -2025-09-20 00:18:05,074 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) -2025-09-20 00:18:05,242 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ -2025-09-20 00:18:05,242 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ -2025-09-20 00:18:05,243 [INFO] ApiDb:261 - Set plugin images path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ -2025-09-20 00:18:05,243 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 00:18:05,243 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ -2025-09-20 00:18:05,244 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 00:18:05,245 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ -2025-09-20 00:18:05,245 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 00:18:05,245 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 00:18:05,245 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ -2025-09-20 00:18:05,395 [INFO] MainPanel:274 - HeapMemory: 268435456 -2025-09-20 00:18:06,229 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ -2025-09-20 00:18:06,229 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ -2025-09-20 00:18:06,230 [INFO] ApiDb:261 - Set plugin images path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ -2025-09-20 00:18:06,230 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 00:18:06,231 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ -2025-09-20 00:18:06,231 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 00:18:06,231 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ -2025-09-20 00:18:06,231 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 00:18:06,231 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 00:18:06,231 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ -2025-09-20 00:18:06,259 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 -2025-09-20 00:18:06,262 [INFO] PluginManage:196 - Search for loadable plugins [exclusion list=, ] -2025-09-20 00:18:06,265 [INFO] PluginManage:310 - Check plugin analytics -2025-09-20 00:18:06,791 [INFO] AnalyticsPlugin:253 - Accepted Software Licenses: STM32CubeMX.6.15.0 -2025-09-20 00:18:06,791 [INFO] AnalyticsPlugin:255 - Accepted CMSIS Pack Licenses: -2025-09-20 00:18:06,791 [INFO] AnalyticsPlugin:257 - Accepted Firmware Licenses: FW.F4.1.28.0 -2025-09-20 00:18:06,802 [INFO] PluginManage:359 - Loaded plugin analytics (category:tool,tabindex:-1) -2025-09-20 00:18:06,803 [INFO] PluginManage:310 - Check plugin cadmodel -2025-09-20 00:18:06,812 [INFO] CADModel:105 - Init CAD model plugin -2025-09-20 00:18:06,812 [INFO] PluginManage:359 - Loaded plugin cadmodel (category:power,tabindex:5) -2025-09-20 00:18:06,813 [INFO] PluginManage:310 - Check plugin clock -2025-09-20 00:18:06,835 [INFO] PluginManage:359 - Loaded plugin clock (category:base,tabindex:2) -2025-09-20 00:18:06,835 [INFO] PluginManage:310 - Check plugin ddr -2025-09-20 00:18:06,838 [INFO] PluginManage:359 - Loaded plugin ddr (category:tool,tabindex:6) -2025-09-20 00:18:06,839 [INFO] PluginManage:310 - Check plugin filemanager -2025-09-20 00:18:07,143 [INFO] PluginManage:359 - Loaded plugin filemanager (category:base,tabindex:10) -2025-09-20 00:18:07,143 [INFO] PluginManage:310 - Check plugin ipmanager -2025-09-20 00:18:07,157 [INFO] PluginManage:359 - Loaded plugin ipmanager (category:base,tabindex:5) -2025-09-20 00:18:07,158 [INFO] PluginManage:310 - Check plugin lpbam -2025-09-20 00:18:07,179 [INFO] PluginManage:359 - Loaded plugin lpbam (category:base,tabindex:0) -2025-09-20 00:18:07,179 [INFO] PluginManage:310 - Check plugin memorymap -2025-09-20 00:18:07,206 [INFO] PluginManage:359 - Loaded plugin memorymap (category:base,tabindex:4) -2025-09-20 00:18:07,206 [INFO] PluginManage:310 - Check plugin pinoutandconfiguration -2025-09-20 00:18:07,226 [INFO] PluginManage:359 - Loaded plugin pinoutandconfiguration (category:base,tabindex:1) -2025-09-20 00:18:07,226 [INFO] PluginManage:310 - Check plugin pinoutconfig -2025-09-20 00:18:07,453 [WARN] SupportedApi:132 - Cannot load RTOS API schema: s4s-elt-must-match.1: The content of 'definitions' must match (annotation?, (simpleType | complexType)?, (unique | key | keyref)*)). A problem was found starting at: attribute. -2025-09-20 00:18:07,807 [INFO] PluginManage:359 - Loaded plugin pinoutconfig (category:base,tabindex:0) -2025-09-20 00:18:07,807 [INFO] PluginManage:310 - Check plugin power -2025-09-20 00:18:07,838 [INFO] PluginManage:359 - Loaded plugin power (category:power,tabindex:4) -2025-09-20 00:18:07,839 [INFO] PluginManage:310 - Check plugin projectmanager -2025-09-20 00:18:07,888 [INFO] PluginManage:359 - Loaded plugin projectmanager (category:projectmanager,tabindex:4) -2025-09-20 00:18:07,889 [INFO] PluginManage:310 - Check plugin rif -2025-09-20 00:18:07,912 [INFO] PluginManage:359 - Loaded plugin rif (category:base,tabindex:3) -2025-09-20 00:18:07,913 [INFO] PluginManage:310 - Check plugin thirdparty -2025-09-20 00:18:08,213 [INFO] PluginManage:359 - Loaded plugin thirdparty (category:base,tabindex:-1) -2025-09-20 00:18:08,213 [WARN] IntegrityCheckThread:84 - waiting for thirdparty lock release [integrity check] -2025-09-20 00:18:08,214 [INFO] IntegrityCheckThread:86 - entering critical section [integrity check] -2025-09-20 00:18:08,214 [INFO] PluginManage:310 - Check plugin tools -2025-09-20 00:18:08,215 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [1/15] -2025-09-20 00:18:08,218 [INFO] PluginManage:359 - Loaded plugin tools (category:base,tabindex:7) -2025-09-20 00:18:08,219 [INFO] PluginManage:310 - Check plugin tutovideos -2025-09-20 00:18:08,792 [INFO] PluginManage:359 - Loaded plugin tutovideos (category:base,tabindex:-1) -2025-09-20 00:18:08,792 [INFO] PluginManage:310 - Check plugin updater -2025-09-20 00:18:08,984 [INFO] PluginManage:359 - Loaded plugin updater (category:base,tabindex:12) -2025-09-20 00:18:08,985 [INFO] PluginManage:310 - Check plugin userauth -2025-09-20 00:18:09,002 [INFO] UserAuth:118 - Init User Auth plugin -2025-09-20 00:18:09,005 [INFO] PluginManage:359 - Loaded plugin userauth (category:base,tabindex:14) -2025-09-20 00:18:09,007 [INFO] PluginManage:283 - PluginManage : Loaded plugins [18] -2025-09-20 00:18:09,573 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) -2025-09-20 00:18:09,757 [INFO] CADModel:165 - CPN selected for project level -2025-09-20 00:18:09,757 [INFO] CADModel:114 - Register for checkConnection events -2025-09-20 00:18:09,788 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:09,789 [INFO] PluginManager:220 - loadIPPluginJar : add gtzc -2025-09-20 00:18:09,808 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:09,810 [INFO] PluginManager:220 - loadIPPluginJar : add usbx -2025-09-20 00:18:09,814 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:09,815 [INFO] PluginManager:220 - loadIPPluginJar : add fatfs -2025-09-20 00:18:09,822 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:09,822 [INFO] PluginManager:220 - loadIPPluginJar : add i2c -2025-09-20 00:18:09,828 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:09,828 [INFO] PluginManager:220 - loadIPPluginJar : add tim -2025-09-20 00:18:09,834 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:09,834 [INFO] PluginManager:220 - loadIPPluginJar : add quadspi -2025-09-20 00:18:09,850 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:09,853 [INFO] PluginManager:220 - loadIPPluginJar : add ipddr -2025-09-20 00:18:09,867 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:09,870 [INFO] PluginManager:220 - loadIPPluginJar : add i2s -2025-09-20 00:18:09,883 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:09,884 [INFO] PluginManager:220 - loadIPPluginJar : add openamp -2025-09-20 00:18:09,892 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:09,893 [INFO] PluginManager:220 - loadIPPluginJar : add i3c -2025-09-20 00:18:09,897 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:09,897 [INFO] PluginManager:220 - loadIPPluginJar : add ucpd -2025-09-20 00:18:09,903 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:09,903 [INFO] PluginManager:220 - loadIPPluginJar : add cryp -2025-09-20 00:18:09,908 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:09,909 [INFO] PluginManager:220 - loadIPPluginJar : add comp -2025-09-20 00:18:09,916 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:09,917 [INFO] PluginManager:220 - loadIPPluginJar : add spi -2025-09-20 00:18:09,925 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:09,925 [INFO] PluginManager:220 - loadIPPluginJar : add touchsensing -2025-09-20 00:18:09,932 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:09,932 [INFO] PluginManager:220 - loadIPPluginJar : add can -2025-09-20 00:18:09,939 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:09,940 [INFO] PluginManager:220 - loadIPPluginJar : add aes -2025-09-20 00:18:09,978 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:09,979 [INFO] PluginManager:220 - loadIPPluginJar : add adc -2025-09-20 00:18:09,992 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:09,994 [INFO] PluginManager:220 - loadIPPluginJar : add nvic -2025-09-20 00:18:10,018 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,019 [INFO] PluginManager:220 - loadIPPluginJar : add freertos -2025-09-20 00:18:10,049 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,050 [INFO] PluginManager:220 - loadIPPluginJar : add dma -2025-09-20 00:18:10,063 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,066 [INFO] PluginManager:220 - loadIPPluginJar : add resmgrutility -2025-09-20 00:18:10,077 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,077 [INFO] PluginManager:220 - loadIPPluginJar : add pdm2pcm -2025-09-20 00:18:10,089 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,093 [INFO] PluginManager:220 - loadIPPluginJar : add hash -2025-09-20 00:18:10,106 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,107 [INFO] PluginManager:220 - loadIPPluginJar : add dfsdm -2025-09-20 00:18:10,111 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,114 [INFO] PluginManager:220 - loadIPPluginJar : add radio -2025-09-20 00:18:10,136 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,142 [INFO] PluginManager:220 - loadIPPluginJar : add plateformsettings -2025-09-20 00:18:10,157 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,158 [INFO] PluginManager:220 - loadIPPluginJar : add gic -2025-09-20 00:18:10,163 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,163 [INFO] PluginManager:220 - loadIPPluginJar : add ltdc -2025-09-20 00:18:10,168 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,168 [INFO] PluginManager:220 - loadIPPluginJar : add tracer_emb -2025-09-20 00:18:10,174 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,175 [INFO] PluginManager:220 - loadIPPluginJar : add lorawan -2025-09-20 00:18:10,181 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,181 [INFO] PluginManager:220 - loadIPPluginJar : add tsc -2025-09-20 00:18:10,188 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,189 [INFO] PluginManager:220 - loadIPPluginJar : add ts -2025-09-20 00:18:10,194 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,194 [INFO] PluginManager:220 - loadIPPluginJar : add gfxmmu -2025-09-20 00:18:10,201 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,203 [INFO] PluginManager:220 - loadIPPluginJar : add dma3 -2025-09-20 00:18:10,211 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,211 [INFO] PluginManager:220 - loadIPPluginJar : add ddr_ctrl_phy -2025-09-20 00:18:10,216 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,217 [INFO] PluginManager:220 - loadIPPluginJar : add genericplugin -2025-09-20 00:18:10,226 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,227 [INFO] PluginManager:220 - loadIPPluginJar : add opamp -2025-09-20 00:18:10,270 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,271 [INFO] PluginManager:220 - loadIPPluginJar : add stm32_wpan -2025-09-20 00:18:10,281 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,282 [INFO] PluginManager:220 - loadIPPluginJar : add usart -2025-09-20 00:18:10,298 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,298 [INFO] PluginManager:220 - loadIPPluginJar : add sai -2025-09-20 00:18:10,321 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,321 [INFO] PluginManager:220 - loadIPPluginJar : add linkedlist -2025-09-20 00:18:10,328 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,329 [INFO] PluginManager:220 - loadIPPluginJar : add extmemmanager -2025-09-20 00:18:10,347 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,347 [INFO] PluginManager:220 - loadIPPluginJar : add fmc -2025-09-20 00:18:10,364 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,365 [INFO] PluginManager:220 - loadIPPluginJar : add gpio -2025-09-20 00:18:10,390 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 00:18:10,392 [INFO] PluginManager:220 - loadIPPluginJar : add mdma -2025-09-20 00:18:10,627 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 00:18:10,764 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) -2025-09-20 00:18:10,813 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) -2025-09-20 00:18:10,925 [INFO] CADModel:165 - CPN selected for project level -2025-09-20 00:18:10,926 [INFO] CADModel:114 - Register for checkConnection events -2025-09-20 00:18:10,926 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 00:18:10,927 [ERROR] CADModel:125 - Updater not yet initialized, retry later -2025-09-20 00:18:11,216 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [2/15] -2025-09-20 00:18:11,529 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 00:18:11,558 [INFO] CADModel:165 - CPN selected for project level -2025-09-20 00:18:11,565 [INFO] CADModel:114 - Register for checkConnection events -2025-09-20 00:18:11,566 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 00:18:11,566 [ERROR] CADModel:125 - Updater not yet initialized, retry later -2025-09-20 00:18:11,605 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 00:18:12,162 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 00:18:12,177 [INFO] DbMcusAds:53 - JSON generation date=Tue Jul 08 03:14:23 CDT 2025 (1751962463524) -2025-09-20 00:18:12,177 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 00:18:12,294 [WARN] DetailPanel:346 - Failed to get advertising image, set to default -2025-09-20 00:18:12,540 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 00:18:12,545 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 00:18:12,546 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 00:18:12,546 [WARN] DetailPanel:346 - Failed to get advertising image, set to default -2025-09-20 00:18:12,550 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 00:18:12,670 [ERROR] Updater:1198 - MainUpdater not yet initialized. External WinMGr cannot be set. -2025-09-20 00:18:12,674 [INFO] Updater:1134 - Updater Version found : 6.15.0 -2025-09-20 00:18:12,733 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 -2025-09-20 00:18:13,880 [INFO] MainUpdater:2872 - connection check result : 10 -2025-09-20 00:18:13,881 [INFO] MainUpdater:289 - Updater Check For Update Now. -2025-09-20 00:18:13,881 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 -2025-09-20 00:18:13,891 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated) -2025-09-20 00:18:13,894 [INFO] UserAuth:487 - Internet connection configuration mode: 1 -2025-09-20 00:18:13,963 [INFO] JxBrowserEngine:152 - Initiate JxBrowser Engine with user profile folder -2025-09-20 00:18:14,221 [WARN] MainUpdater:1193 - Updater busy. Cannot search thirdparties -2025-09-20 00:18:14,222 [INFO] ThirdPartyUpdaterWithRetryManager:96 - Updater plugin is busy. [1/15] -2025-09-20 00:18:14,365 [INFO] CheckServerUpdateThread:120 - End of CheckServer Thread -2025-09-20 00:18:16,311 [INFO] WebApp:169 - Instantiating new browser for Auth -2025-09-20 00:18:17,881 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENVWB1.1.4.0 -2025-09-20 00:18:17,940 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-ASTRA1.2.0.2 -2025-09-20 00:18:17,967 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SMBUS.2.1.0 -2025-09-20 00:18:17,989 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST60.1.0.0 -2025-09-20 00:18:18,194 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F7.1.1.0 -2025-09-20 00:18:18,236 [WARN] PackLoader:240 - Cannot read IP mode file for WES.I-CUBE-Cesium.1.4.0 -2025-09-20 00:18:18,449 [WARN] PackLoader:240 - Cannot read IP mode file for Infineon.AIROC-Wi-Fi-Bluetooth-STM32.1.7.1 -2025-09-20 00:18:18,610 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7.3.4.0 -2025-09-20 00:18:18,654 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DISPLAY.3.0.0 -2025-09-20 00:18:18,710 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC10.1.0.0 -2025-09-20 00:18:18,742 [WARN] PackLoader:240 - Cannot read IP mode file for emotas.I-CUBE-CANOPEN.1.3.0 -2025-09-20 00:18:18,791 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.1.0 -2025-09-20 00:18:18,825 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-SMARTAG2.1.2.0 -2025-09-20 00:18:18,846 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-FLIGHT1.5.1.0 -2025-09-20 00:18:18,923 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null -2025-09-20 00:18:18,929 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null -2025-09-20 00:18:18,930 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null -2025-09-20 00:18:18,931 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null -2025-09-20 00:18:18,932 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null -2025-09-20 00:18:18,951 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WL.2.0.0 -2025-09-20 00:18:18,968 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENV1.5.0.0 -2025-09-20 00:18:19,000 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE2.3.3.0 -2025-09-20 00:18:19,024 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC9.1.0.0 -2025-09-20 00:18:19,050 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSL.5.8.2 -2025-09-20 00:18:19,071 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE1.7.1.0 -2025-09-20 00:18:19,100 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfMQTT.1.19.2 -2025-09-20 00:18:19,171 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-EEPRMA1.5.2.0 -2025-09-20 00:18:19,290 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G0.1.1.0 -2025-09-20 00:18:19,317 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SAFEA1.1.2.2 -2025-09-20 00:18:19,341 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC4.3.0.0 -2025-09-20 00:18:19,440 [WARN] PackLoader:240 - Cannot read IP mode file for EmbeddedOffice.I-CUBE-FS-RTOS.1.0.1 -2025-09-20 00:18:19,492 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-WB05N.2.0.0 -2025-09-20 00:18:19,572 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfTPM.3.8.0 -2025-09-20 00:18:19,634 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TCPP.4.2.0 -2025-09-20 00:18:19,688 [WARN] PackLoader:240 - Cannot read IP mode file for RealThread.X-CUBE-RT-Thread_Nano.4.1.1 -2025-09-20 00:18:19,714 [INFO] WebApp:463 - Apply proxy settings -2025-09-20 00:18:19,716 [INFO] WebApp:548 - Chromium requires no authentication -2025-09-20 00:18:19,722 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-SIGFOX1.3.2.0 -2025-09-20 00:18:19,765 [WARN] PackLoader:240 - Cannot read IP mode file for ITTIA_DB.I-CUBE-ITTIADB.8.9.0 -2025-09-20 00:18:19,766 [INFO] WebApp:491 - Direct internet connection detected -2025-09-20 00:18:19,798 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST67W61.1.0.0 -2025-09-20 00:18:19,822 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.2.0 -2025-09-20 00:18:19,865 [INFO] WebApp:900 - Register for checkConnection events -2025-09-20 00:18:19,866 [INFO] WebApp:463 - Apply proxy settings -2025-09-20 00:18:19,866 [INFO] WebApp:548 - Chromium requires no authentication -2025-09-20 00:18:19,868 [INFO] WebApp:491 - Direct internet connection detected -2025-09-20 00:18:19,986 [WARN] PackLoader:240 - Cannot read IP mode file for SEGGER.I-CUBE-embOS.1.3.1 -2025-09-20 00:18:20,190 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0 -2025-09-20 00:18:20,440 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-MEMS1.11.3.0 -2025-09-20 00:18:20,500 [INFO] WebApp:225 - Starting web application -2025-09-20 00:18:20,500 [INFO] WebApp:593 - Web application path used /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659/db/plugins/mcufinder/reactClient1/index.html -2025-09-20 00:18:21,099 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-PM33A1.1.0.0 -2025-09-20 00:18:21,116 [INFO] WebApp:191 - Connection restablished -2025-09-20 00:18:21,195 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F4.1.1.0 -2025-09-20 00:18:21,213 [WARN] PackLoader:240 - Cannot read IP mode file for Avnet-IotConnect.X-CUBE-IoTC-DA16k-PMOD.1.0.0 -2025-09-20 00:18:21,223 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ISPU.2.1.0 -2025-09-20 00:18:21,249 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC12.1.0.0 -2025-09-20 00:18:21,325 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L5.2.0.0 -2025-09-20 00:18:21,362 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC6.3.1.0 -2025-09-20 00:18:21,383 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-FREERTOS.1.3.1 -2025-09-20 00:18:21,415 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STAIOTCFT.1.0.0 -2025-09-20 00:18:21,533 [INFO] UserAuth:487 - Internet connection configuration mode: 1 -2025-09-20 00:18:21,548 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DPower.1.3.0 -2025-09-20 00:18:21,751 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : LAN8742 Phy interface Condition cause : null -2025-09-20 00:18:21,762 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L4.2.0.0 -2025-09-20 00:18:21,782 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null -2025-09-20 00:18:21,783 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null -2025-09-20 00:18:21,793 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null -2025-09-20 00:18:21,858 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SFXS2LP1.4.0.0 -2025-09-20 00:18:21,999 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.1.0 -2025-09-20 00:18:22,204 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 00:18:22,206 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 00:18:22,230 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WB.2.0.0 -2025-09-20 00:18:22,234 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 00:18:22,237 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 00:18:22,241 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 00:18:22,242 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 00:18:22,242 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 00:18:22,288 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-GNSS1.7.0.1 -2025-09-20 00:18:22,315 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOUCHGFX.4.25.0 -2025-09-20 00:18:22,323 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : Cortex-A Device cause : null -2025-09-20 00:18:22,361 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null -2025-09-20 00:18:22,362 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null -2025-09-20 00:18:22,364 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null -2025-09-20 00:18:22,405 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SUBG2.5.0.0 -2025-09-20 00:18:22,522 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7RS.1.1.0 -2025-09-20 00:18:22,540 [WARN] PackLoader:240 - Cannot read IP mode file for Cesanta.I-CUBE-Mongoose.7.13.0 -2025-09-20 00:18:22,670 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G4.2.0.0 -2025-09-20 00:18:22,686 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSH.1.4.20 -2025-09-20 00:18:22,700 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC7.2.0.0 -2025-09-20 00:18:22,751 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-IPS.3.1.0 -2025-09-20 00:18:22,782 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALS.1.0.2 -2025-09-20 00:18:22,827 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-STSE01.1.0.0 -2025-09-20 00:18:22,857 [WARN] PackLoader:240 - Cannot read IP mode file for portGmbH.I-Cube-SoM-uGOAL.1.1.0 -2025-09-20 00:18:22,909 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOF1.3.4.3 -2025-09-20 00:18:22,981 [INFO] ThirdParty:978 - Integrity check success = true -2025-09-20 00:18:22,983 [INFO] IntegrityCheckThread:100 - exiting critical section [integrity check] -2025-09-20 00:18:22,983 [INFO] IntegrityCheckThread:103 - End integrity checks thread -2025-09-20 00:28:55,985 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] -2025-09-20 02:01:19,323 [INFO] Activator:176 - - - -2025-09-20 02:01:19,326 [INFO] Activator:177 - !SESSION log4j initialized -2025-09-20 02:01:29,979 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] -2025-09-20 02:01:34,491 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 -2025-09-20 02:01:34,519 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ -2025-09-20 02:01:34,519 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ -2025-09-20 02:01:34,520 [WARN] ApiDb:259 - Overriding images path with different value: => /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ -2025-09-20 02:01:34,525 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ -2025-09-20 02:01:34,527 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ -2025-09-20 02:01:34,530 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ -2025-09-20 02:01:34,757 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) -2025-09-20 02:01:34,903 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ -2025-09-20 02:01:34,903 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ -2025-09-20 02:01:34,903 [INFO] ApiDb:261 - Set plugin images path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ -2025-09-20 02:01:34,904 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 02:01:34,904 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ -2025-09-20 02:01:34,904 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 02:01:34,904 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ -2025-09-20 02:01:34,904 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 02:01:34,905 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 02:01:34,905 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ -2025-09-20 02:01:35,033 [INFO] MainPanel:274 - HeapMemory: 268435456 -2025-09-20 02:01:35,440 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ -2025-09-20 02:01:35,441 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ -2025-09-20 02:01:35,441 [INFO] ApiDb:261 - Set plugin images path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ -2025-09-20 02:01:35,442 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 02:01:35,442 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ -2025-09-20 02:01:35,442 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 02:01:35,443 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ -2025-09-20 02:01:35,443 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 02:01:35,443 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 02:01:35,443 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ -2025-09-20 02:01:35,480 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 -2025-09-20 02:01:35,483 [INFO] PluginManage:196 - Search for loadable plugins [exclusion list=, ] -2025-09-20 02:01:35,487 [INFO] PluginManage:310 - Check plugin analytics -2025-09-20 02:01:36,187 [INFO] AnalyticsPlugin:253 - Accepted Software Licenses: STM32CubeMX.6.15.0 -2025-09-20 02:01:36,187 [INFO] AnalyticsPlugin:255 - Accepted CMSIS Pack Licenses: -2025-09-20 02:01:36,188 [INFO] AnalyticsPlugin:257 - Accepted Firmware Licenses: FW.F4.1.28.0 -2025-09-20 02:01:36,204 [INFO] PluginManage:359 - Loaded plugin analytics (category:tool,tabindex:-1) -2025-09-20 02:01:36,211 [INFO] PluginManage:310 - Check plugin cadmodel -2025-09-20 02:01:36,229 [INFO] CADModel:105 - Init CAD model plugin -2025-09-20 02:01:36,229 [INFO] PluginManage:359 - Loaded plugin cadmodel (category:power,tabindex:5) -2025-09-20 02:01:36,230 [INFO] PluginManage:310 - Check plugin clock -2025-09-20 02:01:36,264 [INFO] PluginManage:359 - Loaded plugin clock (category:base,tabindex:2) -2025-09-20 02:01:36,265 [INFO] PluginManage:310 - Check plugin ddr -2025-09-20 02:01:36,271 [INFO] PluginManage:359 - Loaded plugin ddr (category:tool,tabindex:6) -2025-09-20 02:01:36,273 [INFO] PluginManage:310 - Check plugin filemanager -2025-09-20 02:01:36,733 [INFO] PluginManage:359 - Loaded plugin filemanager (category:base,tabindex:10) -2025-09-20 02:01:36,734 [INFO] PluginManage:310 - Check plugin ipmanager -2025-09-20 02:01:36,755 [INFO] PluginManage:359 - Loaded plugin ipmanager (category:base,tabindex:5) -2025-09-20 02:01:36,756 [INFO] PluginManage:310 - Check plugin lpbam -2025-09-20 02:01:36,776 [INFO] PluginManage:359 - Loaded plugin lpbam (category:base,tabindex:0) -2025-09-20 02:01:36,776 [INFO] PluginManage:310 - Check plugin memorymap -2025-09-20 02:01:36,805 [INFO] PluginManage:359 - Loaded plugin memorymap (category:base,tabindex:4) -2025-09-20 02:01:36,805 [INFO] PluginManage:310 - Check plugin pinoutandconfiguration -2025-09-20 02:01:36,837 [INFO] PluginManage:359 - Loaded plugin pinoutandconfiguration (category:base,tabindex:1) -2025-09-20 02:01:36,840 [INFO] PluginManage:310 - Check plugin pinoutconfig -2025-09-20 02:01:37,068 [WARN] SupportedApi:132 - Cannot load RTOS API schema: s4s-elt-must-match.1: The content of 'definitions' must match (annotation?, (simpleType | complexType)?, (unique | key | keyref)*)). A problem was found starting at: attribute. -2025-09-20 02:01:37,335 [INFO] PluginManage:359 - Loaded plugin pinoutconfig (category:base,tabindex:0) -2025-09-20 02:01:37,335 [INFO] PluginManage:310 - Check plugin power -2025-09-20 02:01:37,351 [INFO] PluginManage:359 - Loaded plugin power (category:power,tabindex:4) -2025-09-20 02:01:37,352 [INFO] PluginManage:310 - Check plugin projectmanager -2025-09-20 02:01:37,387 [INFO] PluginManage:359 - Loaded plugin projectmanager (category:projectmanager,tabindex:4) -2025-09-20 02:01:37,387 [INFO] PluginManage:310 - Check plugin rif -2025-09-20 02:01:37,404 [INFO] PluginManage:359 - Loaded plugin rif (category:base,tabindex:3) -2025-09-20 02:01:37,405 [INFO] PluginManage:310 - Check plugin thirdparty -2025-09-20 02:01:37,639 [INFO] PluginManage:359 - Loaded plugin thirdparty (category:base,tabindex:-1) -2025-09-20 02:01:37,638 [WARN] IntegrityCheckThread:84 - waiting for thirdparty lock release [integrity check] -2025-09-20 02:01:37,639 [INFO] PluginManage:310 - Check plugin tools -2025-09-20 02:01:37,639 [INFO] IntegrityCheckThread:86 - entering critical section [integrity check] -2025-09-20 02:01:37,640 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [1/15] -2025-09-20 02:01:37,643 [INFO] PluginManage:359 - Loaded plugin tools (category:base,tabindex:7) -2025-09-20 02:01:37,643 [INFO] PluginManage:310 - Check plugin tutovideos -2025-09-20 02:01:37,977 [INFO] PluginManage:359 - Loaded plugin tutovideos (category:base,tabindex:-1) -2025-09-20 02:01:37,977 [INFO] PluginManage:310 - Check plugin updater -2025-09-20 02:01:38,014 [INFO] PluginManage:359 - Loaded plugin updater (category:base,tabindex:12) -2025-09-20 02:01:38,014 [INFO] PluginManage:310 - Check plugin userauth -2025-09-20 02:01:38,021 [INFO] UserAuth:118 - Init User Auth plugin -2025-09-20 02:01:38,024 [INFO] PluginManage:359 - Loaded plugin userauth (category:base,tabindex:14) -2025-09-20 02:01:38,025 [INFO] PluginManage:283 - PluginManage : Loaded plugins [18] -2025-09-20 02:01:38,300 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) -2025-09-20 02:01:38,407 [INFO] CADModel:165 - CPN selected for project level -2025-09-20 02:01:38,407 [INFO] CADModel:114 - Register for checkConnection events -2025-09-20 02:01:38,425 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,426 [INFO] PluginManager:220 - loadIPPluginJar : add gtzc -2025-09-20 02:01:38,434 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,434 [INFO] PluginManager:220 - loadIPPluginJar : add usbx -2025-09-20 02:01:38,436 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,436 [INFO] PluginManager:220 - loadIPPluginJar : add fatfs -2025-09-20 02:01:38,440 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,441 [INFO] PluginManager:220 - loadIPPluginJar : add i2c -2025-09-20 02:01:38,443 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,443 [INFO] PluginManager:220 - loadIPPluginJar : add tim -2025-09-20 02:01:38,445 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,445 [INFO] PluginManager:220 - loadIPPluginJar : add quadspi -2025-09-20 02:01:38,450 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,450 [INFO] PluginManager:220 - loadIPPluginJar : add ipddr -2025-09-20 02:01:38,456 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,456 [INFO] PluginManager:220 - loadIPPluginJar : add i2s -2025-09-20 02:01:38,461 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,462 [INFO] PluginManager:220 - loadIPPluginJar : add openamp -2025-09-20 02:01:38,465 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,465 [INFO] PluginManager:220 - loadIPPluginJar : add i3c -2025-09-20 02:01:38,468 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,468 [INFO] PluginManager:220 - loadIPPluginJar : add ucpd -2025-09-20 02:01:38,471 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,471 [INFO] PluginManager:220 - loadIPPluginJar : add cryp -2025-09-20 02:01:38,474 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,474 [INFO] PluginManager:220 - loadIPPluginJar : add comp -2025-09-20 02:01:38,477 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,477 [INFO] PluginManager:220 - loadIPPluginJar : add spi -2025-09-20 02:01:38,482 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,483 [INFO] PluginManager:220 - loadIPPluginJar : add touchsensing -2025-09-20 02:01:38,488 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,488 [INFO] PluginManager:220 - loadIPPluginJar : add can -2025-09-20 02:01:38,493 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,493 [INFO] PluginManager:220 - loadIPPluginJar : add aes -2025-09-20 02:01:38,505 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,505 [INFO] PluginManager:220 - loadIPPluginJar : add adc -2025-09-20 02:01:38,510 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,511 [INFO] PluginManager:220 - loadIPPluginJar : add nvic -2025-09-20 02:01:38,519 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,520 [INFO] PluginManager:220 - loadIPPluginJar : add freertos -2025-09-20 02:01:38,531 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,532 [INFO] PluginManager:220 - loadIPPluginJar : add dma -2025-09-20 02:01:38,536 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,536 [INFO] PluginManager:220 - loadIPPluginJar : add resmgrutility -2025-09-20 02:01:38,540 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,541 [INFO] PluginManager:220 - loadIPPluginJar : add pdm2pcm -2025-09-20 02:01:38,544 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,544 [INFO] PluginManager:220 - loadIPPluginJar : add hash -2025-09-20 02:01:38,547 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,548 [INFO] PluginManager:220 - loadIPPluginJar : add dfsdm -2025-09-20 02:01:38,550 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,551 [INFO] PluginManager:220 - loadIPPluginJar : add radio -2025-09-20 02:01:38,563 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,568 [INFO] PluginManager:220 - loadIPPluginJar : add plateformsettings -2025-09-20 02:01:38,576 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,576 [INFO] PluginManager:220 - loadIPPluginJar : add gic -2025-09-20 02:01:38,578 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,578 [INFO] PluginManager:220 - loadIPPluginJar : add ltdc -2025-09-20 02:01:38,580 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,581 [INFO] PluginManager:220 - loadIPPluginJar : add tracer_emb -2025-09-20 02:01:38,585 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,585 [INFO] PluginManager:220 - loadIPPluginJar : add lorawan -2025-09-20 02:01:38,588 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,589 [INFO] PluginManager:220 - loadIPPluginJar : add tsc -2025-09-20 02:01:38,592 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,593 [INFO] PluginManager:220 - loadIPPluginJar : add ts -2025-09-20 02:01:38,595 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,595 [INFO] PluginManager:220 - loadIPPluginJar : add gfxmmu -2025-09-20 02:01:38,598 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,599 [INFO] PluginManager:220 - loadIPPluginJar : add dma3 -2025-09-20 02:01:38,602 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,602 [INFO] PluginManager:220 - loadIPPluginJar : add ddr_ctrl_phy -2025-09-20 02:01:38,604 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,605 [INFO] PluginManager:220 - loadIPPluginJar : add genericplugin -2025-09-20 02:01:38,608 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,609 [INFO] PluginManager:220 - loadIPPluginJar : add opamp -2025-09-20 02:01:38,620 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,621 [INFO] PluginManager:220 - loadIPPluginJar : add stm32_wpan -2025-09-20 02:01:38,626 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,627 [INFO] PluginManager:220 - loadIPPluginJar : add usart -2025-09-20 02:01:38,631 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,631 [INFO] PluginManager:220 - loadIPPluginJar : add sai -2025-09-20 02:01:38,642 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,643 [INFO] PluginManager:220 - loadIPPluginJar : add linkedlist -2025-09-20 02:01:38,647 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,647 [INFO] PluginManager:220 - loadIPPluginJar : add extmemmanager -2025-09-20 02:01:38,656 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,657 [INFO] PluginManager:220 - loadIPPluginJar : add fmc -2025-09-20 02:01:38,664 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,664 [INFO] PluginManager:220 - loadIPPluginJar : add gpio -2025-09-20 02:01:38,674 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:01:38,674 [INFO] PluginManager:220 - loadIPPluginJar : add mdma -2025-09-20 02:01:38,813 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 02:01:38,875 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) -2025-09-20 02:01:38,906 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) -2025-09-20 02:01:38,926 [INFO] CADModel:165 - CPN selected for project level -2025-09-20 02:01:38,927 [INFO] CADModel:114 - Register for checkConnection events -2025-09-20 02:01:38,927 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 02:01:38,927 [ERROR] CADModel:125 - Updater not yet initialized, retry later -2025-09-20 02:01:39,268 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 02:01:39,271 [INFO] CADModel:165 - CPN selected for project level -2025-09-20 02:01:39,271 [INFO] CADModel:114 - Register for checkConnection events -2025-09-20 02:01:39,272 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 02:01:39,272 [ERROR] CADModel:125 - Updater not yet initialized, retry later -2025-09-20 02:01:39,280 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 02:01:39,649 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 02:01:39,663 [INFO] DbMcusAds:53 - JSON generation date=Tue Jul 08 03:14:23 CDT 2025 (1751962463524) -2025-09-20 02:01:39,663 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 02:01:39,743 [WARN] DetailPanel:346 - Failed to get advertising image, set to default -2025-09-20 02:01:39,904 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 02:01:39,907 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 02:01:39,907 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 02:01:39,907 [WARN] DetailPanel:346 - Failed to get advertising image, set to default -2025-09-20 02:01:39,909 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 02:01:39,978 [ERROR] Updater:1198 - MainUpdater not yet initialized. External WinMGr cannot be set. -2025-09-20 02:01:39,981 [INFO] Updater:1134 - Updater Version found : 6.15.0 -2025-09-20 02:01:40,011 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 -2025-09-20 02:01:40,640 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [2/15] -2025-09-20 02:01:40,942 [INFO] MainUpdater:2872 - connection check result : 10 -2025-09-20 02:01:40,943 [INFO] MainUpdater:289 - Updater Check For Update Now. -2025-09-20 02:01:40,943 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 -2025-09-20 02:01:40,951 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated) -2025-09-20 02:01:40,952 [INFO] UserAuth:487 - Internet connection configuration mode: 1 -2025-09-20 02:01:40,982 [INFO] JxBrowserEngine:152 - Initiate JxBrowser Engine with user profile folder -2025-09-20 02:01:41,258 [INFO] CheckServerUpdateThread:120 - End of CheckServer Thread -2025-09-20 02:01:42,340 [INFO] WebApp:169 - Instantiating new browser for Auth -2025-09-20 02:01:44,133 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENVWB1.1.4.0 -2025-09-20 02:01:44,181 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-ASTRA1.2.0.2 -2025-09-20 02:01:44,214 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SMBUS.2.1.0 -2025-09-20 02:01:44,229 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST60.1.0.0 -2025-09-20 02:01:44,387 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F7.1.1.0 -2025-09-20 02:01:44,458 [WARN] PackLoader:240 - Cannot read IP mode file for WES.I-CUBE-Cesium.1.4.0 -2025-09-20 02:01:44,561 [WARN] PackLoader:240 - Cannot read IP mode file for Infineon.AIROC-Wi-Fi-Bluetooth-STM32.1.7.1 -2025-09-20 02:01:44,738 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7.3.4.0 -2025-09-20 02:01:44,797 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DISPLAY.3.0.0 -2025-09-20 02:01:44,839 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC10.1.0.0 -2025-09-20 02:01:44,871 [WARN] PackLoader:240 - Cannot read IP mode file for emotas.I-CUBE-CANOPEN.1.3.0 -2025-09-20 02:01:44,914 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.1.0 -2025-09-20 02:01:44,948 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-SMARTAG2.1.2.0 -2025-09-20 02:01:44,958 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-FLIGHT1.5.1.0 -2025-09-20 02:01:44,988 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null -2025-09-20 02:01:44,991 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null -2025-09-20 02:01:44,992 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null -2025-09-20 02:01:44,992 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null -2025-09-20 02:01:44,993 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null -2025-09-20 02:01:45,005 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WL.2.0.0 -2025-09-20 02:01:45,185 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENV1.5.0.0 -2025-09-20 02:01:45,207 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE2.3.3.0 -2025-09-20 02:01:45,226 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC9.1.0.0 -2025-09-20 02:01:45,245 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSL.5.8.2 -2025-09-20 02:01:45,256 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE1.7.1.0 -2025-09-20 02:01:45,261 [INFO] WebApp:463 - Apply proxy settings -2025-09-20 02:01:45,263 [INFO] WebApp:548 - Chromium requires no authentication -2025-09-20 02:01:45,264 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfMQTT.1.19.2 -2025-09-20 02:01:45,281 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-EEPRMA1.5.2.0 -2025-09-20 02:01:45,314 [INFO] WebApp:491 - Direct internet connection detected -2025-09-20 02:01:45,345 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G0.1.1.0 -2025-09-20 02:01:45,376 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SAFEA1.1.2.2 -2025-09-20 02:01:45,405 [INFO] WebApp:900 - Register for checkConnection events -2025-09-20 02:01:45,406 [INFO] WebApp:463 - Apply proxy settings -2025-09-20 02:01:45,406 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC4.3.0.0 -2025-09-20 02:01:45,406 [INFO] WebApp:548 - Chromium requires no authentication -2025-09-20 02:01:45,407 [INFO] WebApp:491 - Direct internet connection detected -2025-09-20 02:01:45,444 [WARN] PackLoader:240 - Cannot read IP mode file for EmbeddedOffice.I-CUBE-FS-RTOS.1.0.1 -2025-09-20 02:01:45,459 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-WB05N.2.0.0 -2025-09-20 02:01:45,470 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfTPM.3.8.0 -2025-09-20 02:01:45,485 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TCPP.4.2.0 -2025-09-20 02:01:45,500 [WARN] PackLoader:240 - Cannot read IP mode file for RealThread.X-CUBE-RT-Thread_Nano.4.1.1 -2025-09-20 02:01:45,507 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-SIGFOX1.3.2.0 -2025-09-20 02:01:45,517 [WARN] PackLoader:240 - Cannot read IP mode file for ITTIA_DB.I-CUBE-ITTIADB.8.9.0 -2025-09-20 02:01:45,531 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST67W61.1.0.0 -2025-09-20 02:01:45,543 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.2.0 -2025-09-20 02:01:45,618 [WARN] PackLoader:240 - Cannot read IP mode file for SEGGER.I-CUBE-embOS.1.3.1 -2025-09-20 02:01:45,842 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0 -2025-09-20 02:01:46,193 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-MEMS1.11.3.0 -2025-09-20 02:01:46,341 [INFO] WebApp:225 - Starting web application -2025-09-20 02:01:46,342 [INFO] WebApp:593 - Web application path used /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659/db/plugins/mcufinder/reactClient1/index.html -2025-09-20 02:01:46,427 [INFO] WebApp:191 - Connection restablished -2025-09-20 02:01:47,072 [INFO] UserAuth:487 - Internet connection configuration mode: 1 -2025-09-20 02:01:47,279 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-PM33A1.1.0.0 -2025-09-20 02:01:47,330 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F4.1.1.0 -2025-09-20 02:01:47,352 [WARN] PackLoader:240 - Cannot read IP mode file for Avnet-IotConnect.X-CUBE-IoTC-DA16k-PMOD.1.0.0 -2025-09-20 02:01:47,377 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ISPU.2.1.0 -2025-09-20 02:01:47,398 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC12.1.0.0 -2025-09-20 02:01:47,515 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L5.2.0.0 -2025-09-20 02:01:47,564 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC6.3.1.0 -2025-09-20 02:01:47,603 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-FREERTOS.1.3.1 -2025-09-20 02:01:47,616 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STAIOTCFT.1.0.0 -2025-09-20 02:01:47,632 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DPower.1.3.0 -2025-09-20 02:01:47,689 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : LAN8742 Phy interface Condition cause : null -2025-09-20 02:01:47,691 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L4.2.0.0 -2025-09-20 02:01:47,695 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null -2025-09-20 02:01:47,696 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null -2025-09-20 02:01:47,698 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null -2025-09-20 02:01:47,718 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SFXS2LP1.4.0.0 -2025-09-20 02:01:47,754 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.1.0 -2025-09-20 02:01:47,792 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 02:01:47,792 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 02:01:47,799 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WB.2.0.0 -2025-09-20 02:01:47,800 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 02:01:47,801 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 02:01:47,803 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 02:01:47,805 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 02:01:47,805 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 02:01:47,818 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-GNSS1.7.0.1 -2025-09-20 02:01:47,834 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOUCHGFX.4.25.0 -2025-09-20 02:01:47,843 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : Cortex-A Device cause : null -2025-09-20 02:01:47,884 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null -2025-09-20 02:01:47,884 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null -2025-09-20 02:01:47,885 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null -2025-09-20 02:01:47,913 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SUBG2.5.0.0 -2025-09-20 02:01:47,982 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7RS.1.1.0 -2025-09-20 02:01:47,996 [WARN] PackLoader:240 - Cannot read IP mode file for Cesanta.I-CUBE-Mongoose.7.13.0 -2025-09-20 02:01:48,036 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G4.2.0.0 -2025-09-20 02:01:48,047 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSH.1.4.20 -2025-09-20 02:01:48,113 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC7.2.0.0 -2025-09-20 02:01:48,162 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-IPS.3.1.0 -2025-09-20 02:01:48,187 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALS.1.0.2 -2025-09-20 02:01:48,200 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-STSE01.1.0.0 -2025-09-20 02:01:48,214 [WARN] PackLoader:240 - Cannot read IP mode file for portGmbH.I-Cube-SoM-uGOAL.1.1.0 -2025-09-20 02:01:48,242 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOF1.3.4.3 -2025-09-20 02:01:48,277 [INFO] ThirdParty:978 - Integrity check success = true -2025-09-20 02:01:48,278 [INFO] IntegrityCheckThread:100 - exiting critical section [integrity check] -2025-09-20 02:01:48,278 [INFO] IntegrityCheckThread:103 - End integrity checks thread -2025-09-20 02:03:14,349 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated) -2025-09-20 02:03:14,354 [INFO] MainUpdater:2872 - connection check result : 10 -2025-09-20 02:03:14,354 [INFO] MainUpdater:2872 - connection check result : 10 -2025-09-20 02:03:14,411 [INFO] MicroXplorer:468 - Change Database Path : -2025-09-20 02:03:14,412 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 -2025-09-20 02:03:14,424 [WARN] ThirdParty:871 - waiting for thirdparty lock release [close project] -2025-09-20 02:03:14,424 [INFO] ThirdParty:873 - entering critical section [close project] -2025-09-20 02:03:14,427 [INFO] ThirdParty:883 - exiting critical section [close project] -2025-09-20 02:03:14,434 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) -2025-09-20 02:03:14,438 [INFO] UtilMem:75 - Begin LoadConfig() Used Memory: 520691672 Bytes (655360000) -2025-09-20 02:03:14,442 [INFO] MicroXplorer:468 - Change Database Path : -2025-09-20 02:03:14,443 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 -2025-09-20 02:03:14,443 [INFO] OpenFileManager:355 - Change cursor -2025-09-20 02:03:14,500 [INFO] Mcu:2029 - Initializing MCU STM32F429ZITx STM32F429ZITx STM32F429ZIT6 -2025-09-20 02:03:22,938 [INFO] Context:786 - Trying to add GPIOservice into a context which must be forbidden -2025-09-20 02:03:25,714 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) Pin98 (VP_RIF_VS_RIF1) cannot be retrieved for this MCU -2025-09-20 02:03:26,345 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS, mode=CMSIS_V1, owner=FREERTOS -2025-09-20 02:03:26,345 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS2, mode=CMSIS_V2, owner=FREERTOS -2025-09-20 02:03:26,346 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V1, owner=FREERTOS -2025-09-20 02:03:26,346 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V2, owner=FREERTOS -2025-09-20 02:03:26,347 [WARN] ModelIntegratedComponent:184 - Missing modes for component STMicroelectronics:FreeRTOS:0.0.1:STMicroelectronics:RTOS:FreeRTOS:Core:::10.2.0: -2025-09-20 02:03:26,472 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,472 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,473 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,473 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,473 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,473 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,473 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,476 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,476 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,476 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,479 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,479 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,479 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,480 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,480 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,480 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,480 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,480 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,481 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,484 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,484 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,487 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,487 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,488 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,488 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,488 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,488 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,489 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,489 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,489 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,489 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,490 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,490 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,490 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,490 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:03:26,491 [WARN] ModelPack:524 - Component already loaded: STMicroelectronics:HAL Drivers:0.0.0:STMicroelectronics:Device:STMicro_Driver:XSPI:HAL::0.0.1:HAL_XSPI -2025-09-20 02:03:27,037 [INFO] ThirdPartyModel:298 - Start build external matchings -2025-09-20 02:03:28,578 [INFO] ThirdPartyModel:316 - End build external matchings -2025-09-20 02:03:28,617 [INFO] RtosManager:1018 - Current active RTOS is FREERTOS [Cortex-M4NS] -2025-09-20 02:03:28,646 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:03:28,649 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Invalid parameter (FamilyName) -2025-09-20 02:03:28,651 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Parameter (RTCHSEDivFreq_Value) has invalid value (4000000) -2025-09-20 02:03:29,571 [INFO] ApiDb:581 - Connected to CubeFinder SQLite database (/home/ja/.stmcufinder/plugins/mcufinder/mcu/cube-finder-db.db) -2025-09-20 02:03:29,751 [INFO] ApiDb:668 - CubeFinder database Data Model version=2.1 -2025-09-20 02:03:29,752 [INFO] ApiDb:669 - CubeFinder database Configuration version=3.0.39 -2025-09-20 02:03:29,752 [INFO] ApiDb:670 - CubeFinder database generation date=2025-08-25 (1756130511) -2025-09-20 02:03:29,753 [INFO] ApiDb:671 - CubeFinder database FW Pack versions=[FP-ATR-ASTRA1_V2.0.0, FP-SNS-FLIGHT1_V5.1.0, FP-SNS-MOTENV1_V5.0.0, FP-SNS-MOTENVWB1_V1.4.0, FP-SNS-SMARTAG2_V1.2.0, FP-SNS-STBOX1_V2.1.0, STM32Cube_FW_C0_V1.4.0, STM32Cube_FW_F4_V1.28.3, STM32Cube_FW_F7_V1.17.4, STM32Cube_FW_G0_V1.6.2, STM32Cube_FW_G4_V1.6.1, STM32Cube_FW_H5_V1.5.0, STM32Cube_FW_H7RS_V1.2.0, STM32Cube_FW_H7_V1.12.1, STM32Cube_FW_L0_V1.12.2, STM32Cube_FW_L4_V1.18.1, STM32Cube_FW_L5_V1.5.1, STM32Cube_FW_N6_V1.2.0, STM32Cube_FW_U0_V1.3.0, STM32Cube_FW_U3_V1.2.0, STM32Cube_FW_U5_V1.8.0, STM32Cube_FW_WB0_V1.3.0, STM32Cube_FW_WBA_V1.7.0, STM32Cube_FW_WB_V1.23.0, STM32Cube_FW_WL3_V1.2.0, STM32Cube_FW_WL_V1.3.1, X-CUBE-ALGOBUILD_V1.4.0, X-CUBE-ALS_V1.0.2, X-CUBE-AZRTOS-F4_V1.1.0, X-CUBE-AZRTOS-F7_V1.1.0, X-CUBE-AZRTOS-G0_V1.1.0, X-CUBE-AZRTOS-G4_V2.0.0, X-CUBE-AZRTOS-H7RS_V1.1.0, X-CUBE-AZRTOS-H7_V3.4.0, X-CUBE-AZRTOS-L4_V2.0.0, X-CUBE-AZRTOS-L5_V2.0.0, X-CUBE-AZRTOS-WB_V2.0.0, X-CUBE-AZRTOS-WL_V2.0.0, X-CUBE-BLE1_V7.1.0, X-CUBE-BLE2_V3.3.0, X-CUBE-BLEMGR_V4.1.0, X-CUBE-EEPRMA1_V5.2.0, X-CUBE-FREERTOS_V1.3.1, X-CUBE-GNSS1_V6.0.0, X-CUBE-MEMS1_V11.3.0, X-CUBE-NFC4_V3.0.0, X-CUBE-NFC7_V2.0.0, X-CUBE-SFXS2LP1_V4.0.0, X-CUBE-ST67W61_V1.0.0, X-CUBE-SUBG2_V5.0.0, X-CUBE-TOF1_V3.4.3] -2025-09-20 02:03:29,999 [INFO] DbBoardsSqlite:226 - include board P-NUCLEO-WB55-NUCLEO as a kit item of type 'Nucleo-64' -2025-09-20 02:03:30,000 [INFO] DbBoardsSqlite:226 - include board P-NUCLEO-WB55-USBDONGLE as a kit item of type 'Nucleo USB Dongle' -2025-09-20 02:03:30,001 [INFO] DbBoardsSqlite:226 - include board STEVAL-IDP005V1 as a kit item of type 'Evaluation Board' -2025-09-20 02:03:30,002 [INFO] DbBoardsSqlite:226 - include board STEVAL-IDP005V2 as a kit item of type 'Evaluation Board' -2025-09-20 02:03:30,232 [INFO] ApiDb:240 - Found 880 in-development CPN: [B-G473E-ZEST1S, B-WB1M-WPAN1, B-WBA5M-WPAN, B-WL5M-SUBG1, NUCLEO-C031C6, NUCLEO-C051C8, NUCLEO-C071RB, NUCLEO-C092RC, NUCLEO-H503RB, NUCLEO-H533RE, NUCLEO-H563ZI, NUCLEO-H7S3L8, NUCLEO-N657X0-Q, NUCLEO-U031R8, NUCLEO-U083RC, NUCLEO-U385RG-Q, NUCLEO-U545RE-Q, NUCLEO-U5A5ZJ-Q, NUCLEO-WB05KZ, NUCLEO-WB07CC, NUCLEO-WB09KE, NUCLEO-WBA52CG, NUCLEO-WBA55CG, NUCLEO-WL33CC1, NUCLEO-WL33CC2, STEVAL-PROTEUS1, STEVAL-SMARTAG2, STEVAL-STWINBX1, STM320518-EVAL, STM32C0116-DK, STM32C011D6Y3TR, STM32C011D6Y6TR, STM32C011F4P3, STM32C011F4P6, STM32C011F4U3, STM32C011F4U6TR, STM32C011F6P3, STM32C011F6P6, STM32C011F6U3, STM32C011F6U6TR, STM32C011J4M3, STM32C011J4M6, STM32C011J6M3, STM32C011J6M6, STM32C0316-DK, STM32C031C4T3, STM32C031C4T6, STM32C031C4U3, STM32C031C4U6, STM32C031C6T3, STM32C031C6T6, STM32C031C6U3, STM32C031C6U6, STM32C031F4P3, STM32C031F4P6, STM32C031F6P3, STM32C031F6P6, STM32C031G4U3, STM32C031G4U6, STM32C031G6U3, STM32C031G6U6, STM32C031K4T3, STM32C031K4T6, STM32C031K4U3, STM32C031K4U6, STM32C031K6T3, STM32C031K6T6, STM32C031K6U3, STM32C031K6U6, STM32C051C6T6, STM32C051C6U6, STM32C051C8T6, STM32C051C8U6, STM32C051D8Y6TR, STM32C051F6P6, STM32C051F8P6, STM32C051G6U6, STM32C051G8U6, STM32C051K6T6, STM32C051K6U6, STM32C051K8T6, STM32C071C8T6, STM32C071C8T6N, STM32C071C8U6, STM32C071C8U6N, STM32C071CBT6, STM32C071CBT6N, STM32C071CBU6, STM32C071CBU6N, STM32C071F8P6, STM32C071F8P6N, STM32C071FBP6, STM32C071FBP6N, STM32C071FBY6TR, STM32C071G8U6, STM32C071G8U6N, STM32C071GBU6, STM32C071GBU6N, STM32C071K8T6, STM32C071K8T6N, STM32C071K8U6, STM32C071K8U6N, STM32C071KBT6, STM32C071KBT6N, STM32C071KBU6, STM32C071KBU6N, STM32C071R8T6, STM32C071R8T6N, STM32C071RBI6N, STM32C071RBT6, STM32C071RBT6N, STM32C091CBT6, STM32C091CBU6, STM32C091CCT6, STM32C091CCU6, STM32C091ECY6TR, STM32C091FBP6, STM32C091FCP6, STM32C091GBU6, STM32C091GCU6, STM32C091KBT6, STM32C091KBU6, STM32C091KCT6, STM32C091KCU6, STM32C091RBT6, STM32C091RCI6, STM32C091RCT6, STM32C092CBT6, STM32C092CBU6, STM32C092CCT6, STM32C092CCU6, STM32C092ECY6TR, STM32C092FBP6, STM32C092FCP6, STM32C092GBU6, STM32C092GCU6, STM32C092KBT6, STM32C092KBU6, STM32C092KCT6, STM32C092KCU6, STM32C092RBT6, STM32C092RCI6, STM32C092RCT6, STM32G071K8TXN, STM32G071K8UXN, STM32G081GBU6N, STM32G081KBT6N, STM32G081KBUXN, STM32G0B1CCT6N, STM32G0B1KCT6, STM32G0B1NEY6TR, STM32G0B1RCT6N, STM32G0C1CCT6, STM32G0C1CCT6N, STM32G0C1CCU6N, STM32G0C1CET6N, STM32G0C1CEU6N, STM32G0C1KCT6, STM32G0C1NEY6TR, STM32G0C1RCI6N, STM32G0C1RCT6N, STM32G0C1REI6N, STM32G0C1RET6N, STM32G0C1VCI6, STM32G0C1VEI6, STM32G411C6T3, STM32G411C6T6, STM32G411C6U3, STM32G411C6U6, STM32G411C8T3, STM32G411C8T6, STM32G411C8U3, STM32G411C8U6, STM32G411CBT3, STM32G411CBT6, STM32G411CBU3, STM32G411CBU6, STM32G411K6T3, STM32G411K6T6, STM32G411K6U3, STM32G411K6U6, STM32G411K8T3, STM32G411K8T6, STM32G411K8U3, STM32G411K8U6, STM32G411KBT3, STM32G411KBT6, STM32G411KBU3, STM32G411KBU6, STM32G411M6T3, STM32G411M6T6, STM32G411M8T3, STM32G411M8T6, STM32G411MBT3, STM32G411MBT6, STM32G411R6T3, STM32G411R6T6, STM32G411R8T3, STM32G411R8T6, STM32G411RBT3, STM32G411RBT6, STM32G414CBT3, STM32G414CBT6, STM32G414CBU3, STM32G414CBU6, STM32G414CCT3, STM32G414CCT6, STM32G414CCU3, STM32G414CCU6, STM32G414MBT3, STM32G414MBT6, STM32G414MCT3, STM32G414MCT6, STM32G414RBT3, STM32G414RBT6, STM32G414RCT3, STM32G414RCT6, STM32G414VBT3, STM32G414VBT6, STM32G414VCT3, STM32G414VCT6, STM32G431CBT3Z, STM32G431RBT3Z, STM32G471CCT6, STM32G471CCU6, STM32G471CET3, STM32G471CET6, STM32G471CEU3, STM32G471CEU6, STM32G471MCT6, STM32G471MET3, STM32G471MET6, STM32G471MEY6TR, STM32G471QCT6, STM32G471QET3, STM32G471RCT6, STM32G471RET3, STM32G471RET6, STM32G471VCH6, STM32G471VCI6, STM32G471VCT6, STM32G471VEH3, STM32G471VEH6, STM32G471VEI3, STM32G471VEI6, STM32G471VET3, STM32G471VET6, STM32G473QET3Z, STM32G473RET3Z, STM32G474CCT6, STM32G491RET3Z, STM32H503CBT6, STM32H503CBU6, STM32H503EBY6TR, STM32H503KBU6, STM32H503RBT6, STM32H523CCT6, STM32H523CCU6, STM32H523CET6, STM32H523CEU6, STM32H523HEY6TR, STM32H523RCT6, STM32H523RET6, STM32H523VCI6, STM32H523VCT6, STM32H523VEI6, STM32H523VET6, STM32H523ZCJ6, STM32H523ZCT6, STM32H523ZEJ6, STM32H523ZET6, STM32H533CET6, STM32H533CEU6, STM32H533HEY6TR, STM32H533RET6, STM32H533VEI6, STM32H533VET6, STM32H533ZEJ6, STM32H533ZET6, STM32H562AGI6, STM32H562AII6, STM32H562IGK6, STM32H562IGT6, STM32H562IIK6, STM32H562IIT6, STM32H562RGT6, STM32H562RGV6, STM32H562RIT6, STM32H562RIV6, STM32H562VGT6, STM32H562VIT6, STM32H562ZGT6, STM32H562ZIT6, STM32H563AGI6, STM32H563AII3Q, STM32H563AII6, STM32H563IGK6, STM32H563IGT6, STM32H563IIK3Q, STM32H563IIK6, STM32H563IIT3Q, STM32H563IIT6, STM32H563MIY3QTR, STM32H563RGT6, STM32H563RGV6, STM32H563RIT6, STM32H563RIV6, STM32H563VGT6, STM32H563VIT3Q, STM32H563VIT6, STM32H563ZGT6, STM32H563ZIT3Q, STM32H563ZIT6, STM32H573AII3Q, STM32H573AII6, STM32H573I-DK, STM32H573IIK3Q, STM32H573IIK6, STM32H573IIT3Q, STM32H573IIT6, STM32H573MIY3QTR, STM32H573RIT6, STM32H573RIV6, STM32H573VIT3Q, STM32H573VIT6, STM32H573ZIT3Q, STM32H573ZIT6, STM32H7R3A8I6, STM32H7R3I8K6, STM32H7R3I8T6, STM32H7R3L8H6, STM32H7R3L8H6H, STM32H7R3R8V6, STM32H7R3V8H6, STM32H7R3V8T6, STM32H7R3V8Y6TR, STM32H7R3Z8J6, STM32H7R3Z8T6, STM32H7R7A8I6, STM32H7R7I8K6, STM32H7R7I8T6, STM32H7R7L8H6, STM32H7R7L8H6H, STM32H7R7Z8J6, STM32H7S3A8I6, STM32H7S3I8K6, STM32H7S3I8T6, STM32H7S3L8H6, STM32H7S3L8H6H, STM32H7S3R8V6, STM32H7S3V8H6, STM32H7S3V8T6, STM32H7S3V8Y6TR, STM32H7S3Z8J6, STM32H7S3Z8T6, STM32H7S78-DK, STM32H7S7A8I6, STM32H7S7I8K6, STM32H7S7I8T6, STM32H7S7L8H6, STM32H7S7L8H6H, STM32H7S7Z8J6, STM32L4R5QGI6STR, STM32MP131AAE3, STM32MP131AAF3, STM32MP131AAG3, STM32MP131CAE3, STM32MP131CAF3, STM32MP131CAG3, STM32MP131DAE7, STM32MP131DAF7, STM32MP131DAG7, STM32MP131FAE7, STM32MP131FAF7, STM32MP131FAG7, STM32MP133AAE3, STM32MP133AAF3, STM32MP133AAG3, STM32MP133CAE3, STM32MP133CAF3, STM32MP133CAG3, STM32MP133DAE7, STM32MP133DAF7, STM32MP133DAG7, STM32MP133FAE7, STM32MP133FAF7, STM32MP133FAG7, STM32MP135AAE3, STM32MP135AAF3, STM32MP135AAG3, STM32MP135CAE3, STM32MP135CAF3, STM32MP135CAG3, STM32MP135DAE7, STM32MP135DAF7, STM32MP135DAG7, STM32MP135F-DK, STM32MP135FAE7, STM32MP135FAF7, STM32MP135FAF7T, STM32MP135FAF7U, STM32MP135FAG7, STM32MP211AAL3, STM32MP211AAM3, STM32MP211AAN3, STM32MP211AAO3, STM32MP211CAL3, STM32MP211CAM3, STM32MP211CAN3, STM32MP211CAO3, STM32MP211DAL3, STM32MP211DAM3, STM32MP211DAN3, STM32MP211DAO3, STM32MP211FAL3, STM32MP211FAM3, STM32MP211FAN3, STM32MP211FAO3, STM32MP213AAL3, STM32MP213AAM3, STM32MP213AAN3, STM32MP213AAO3, STM32MP213CAL3, STM32MP213CAM3, STM32MP213CAN3, STM32MP213CAO3, STM32MP213DAL3, STM32MP213DAM3, STM32MP213DAN3, STM32MP213DAO3, STM32MP213FAL3, STM32MP213FAM3, STM32MP213FAN3, STM32MP213FAO3, STM32MP215AAL3, STM32MP215AAM3, STM32MP215AAN3, STM32MP215AAO3, STM32MP215CAL3, STM32MP215CAM3, STM32MP215CAN3, STM32MP215CAO3, STM32MP215DAL3, STM32MP215DAM3, STM32MP215DAN3, STM32MP215DAO3, STM32MP215F-DK, STM32MP215FAL3, STM32MP215FAM3, STM32MP215FAN3, STM32MP215FAO3, STM32MP231AAJ3, STM32MP231AAK3, STM32MP231AAL3, STM32MP231CAJ3, STM32MP231CAK3, STM32MP231CAL3, STM32MP231DAJ3, STM32MP231DAK3, STM32MP231DAL3, STM32MP231FAJ3, STM32MP231FAK3, STM32MP231FAL3, STM32MP233AAJ3, STM32MP233AAK3, STM32MP233AAL3, STM32MP233CAJ3, STM32MP233CAK3, STM32MP233CAL3, STM32MP233DAJ3, STM32MP233DAK3, STM32MP233DAL3, STM32MP233FAJ3, STM32MP233FAK3, STM32MP233FAL3, STM32MP235AAJ3, STM32MP235AAK3, STM32MP235AAL3, STM32MP235CAJ3, STM32MP235CAK3, STM32MP235CAL3, STM32MP235DAJ3, STM32MP235DAK3, STM32MP235DAL3, STM32MP235FAJ3, STM32MP235FAK3, STM32MP235FAL3, STM32MP251AAI3, STM32MP251AAK3, STM32MP251AAL3, STM32MP251CAI3, STM32MP251CAK3, STM32MP251CAL3, STM32MP251DAI3, STM32MP251DAK3, STM32MP251DAL3, STM32MP251FAI3, STM32MP251FAK3, STM32MP251FAL3, STM32MP253AAI3, STM32MP253AAK3, STM32MP253AAL3, STM32MP253CAI3, STM32MP253CAK3, STM32MP253CAL3, STM32MP253DAI3, STM32MP253DAK3, STM32MP253DAL3, STM32MP253FAI3, STM32MP253FAK3, STM32MP253FAL3, STM32MP255AAI3, STM32MP255AAK3, STM32MP255AAL3, STM32MP255CAI3, STM32MP255CAK3, STM32MP255CAL3, STM32MP255DAI3, STM32MP255DAK3, STM32MP255DAL3, STM32MP255FAI3, STM32MP255FAK3, STM32MP255FAL3, STM32MP257AAI3, STM32MP257AAK3, STM32MP257AAL3, STM32MP257CAI3, STM32MP257CAK3, STM32MP257CAL3, STM32MP257DAI3, STM32MP257DAK3, STM32MP257DAL3, STM32MP257F-DK, STM32MP257F-EV1, STM32MP257FAI3, STM32MP257FAK3, STM32MP257FAL3, STM32N645A0H3Q, STM32N645B0H3Q, STM32N645I0H3Q, STM32N645L0H3Q, STM32N645X0H3Q, STM32N645Z0H3Q, STM32N647A0H3Q, STM32N647B0H3Q, STM32N647I0H3Q, STM32N647L0H3Q, STM32N647X0H3Q, STM32N647Z0H3Q, STM32N655A0H3Q, STM32N655B0H3Q, STM32N655I0H3Q, STM32N655L0H3Q, STM32N655X0H3Q, STM32N655Z0H3Q, STM32N6570-DK, STM32N657A0H3Q, STM32N657B0H3Q, STM32N657I0H3Q, STM32N657L0H3Q, STM32N657X0H3Q, STM32N657Z0H3Q, STM32U031C6T6, STM32U031C6U6, STM32U031C8T6, STM32U031C8U6, STM32U031F4P6, STM32U031F6P6, STM32U031F8P6, STM32U031G6Y6TR, STM32U031G8Y6TR, STM32U031K4U6, STM32U031K6U6, STM32U031K8U6, STM32U031R6I6, STM32U031R6T6, STM32U031R8I6, STM32U031R8T6, STM32U073C8T6, STM32U073C8U6, STM32U073CBT6, STM32U073CBU6, STM32U073CCT6, STM32U073CCU6, STM32U073H8Y6TR, STM32U073HBY6TR, STM32U073HCY6TR, STM32U073K8U6, STM32U073KBU6, STM32U073KCU6, STM32U073M8I6, STM32U073M8T6, STM32U073MBI6, STM32U073MBT6, STM32U073MCI6, STM32U073MCT6, STM32U073R8I6, STM32U073R8T6, STM32U073RBI6, STM32U073RBT6, STM32U073RCI6, STM32U073RCT6, STM32U083C-DK, STM32U083CCT6, STM32U083CCU6, STM32U083HCY6TR, STM32U083KCU6, STM32U083MCI6, STM32U083MCT6, STM32U083RCI6, STM32U083RCT6, STM32U375CET6, STM32U375CET6Q, STM32U375CEU6, STM32U375CEU6Q, STM32U375CEY6QTR, STM32U375CGT6, STM32U375CGT6Q, STM32U375CGU6, STM32U375CGU6Q, STM32U375CGY6QTR, STM32U375KEU6, STM32U375KGU6, STM32U375REI6, STM32U375REI6Q, STM32U375RET6, STM32U375RET6Q, STM32U375REY6GTR, STM32U375REY6QTR, STM32U375RGI6, STM32U375RGI6Q, STM32U375RGT6, STM32U375RGT6Q, STM32U375RGY6GTR, STM32U375RGY6QTR, STM32U375VEI6, STM32U375VEI6Q, STM32U375VET6, STM32U375VET6Q, STM32U375VGI6, STM32U375VGI6Q, STM32U375VGT6, STM32U375VGT6Q, STM32U385CGT6, STM32U385CGT6Q, STM32U385CGU6, STM32U385CGU6Q, STM32U385CGY6QTR, STM32U385KGU6, STM32U385RGI6, STM32U385RGI6Q, STM32U385RGT6, STM32U385RGT6Q, STM32U385RGY6GTR, STM32U385RGY6QTR, STM32U385VGI6, STM32U385VGI6Q, STM32U385VGT6, STM32U385VGT6Q, STM32U535CBT6, STM32U535CBT6Q, STM32U535CBU6, STM32U535CBU6Q, STM32U535CCT6, STM32U535CCT6Q, STM32U535CCU6, STM32U535CCU6Q, STM32U535CET6, STM32U535CET6Q, STM32U535CEU6, STM32U535CEU6Q, STM32U535JEY6QTR, STM32U535NCY6QTR, STM32U535NEY6QTR, STM32U535RBI6, STM32U535RBI6Q, STM32U535RBT6, STM32U535RBT6Q, STM32U535RCI6, STM32U535RCI6Q, STM32U535RCT6, STM32U535RCT6Q, STM32U535REI6, STM32U535REI6Q, STM32U535RET6, STM32U535RET6Q, STM32U535VCI6, STM32U535VCI6Q, STM32U535VCT6, STM32U535VCT6Q, STM32U535VEI6, STM32U535VEI6Q, STM32U535VET6, STM32U535VET6Q, STM32U545CET6, STM32U545CET6Q, STM32U545CEU6, STM32U545CEU6Q, STM32U545JEY6QTR, STM32U545NEY6QTR, STM32U545REI6, STM32U545REI6Q, STM32U545RET6, STM32U545RET6Q, STM32U545VEI6, STM32U545VEI6Q, STM32U545VET6, STM32U545VET6Q, STM32U595AIH6, STM32U595AIH6Q, STM32U595AJH6, STM32U595AJH6Q, STM32U595QII6, STM32U595QII6Q, STM32U595QJI6, STM32U595QJI6Q, STM32U595RIT6, STM32U595RIT6Q, STM32U595RJT6, STM32U595RJT6Q, STM32U595VIT6, STM32U595VIT6Q, STM32U595VJT6, STM32U595VJT6Q, STM32U595ZIT6, STM32U595ZIT6Q, STM32U595ZIY6QTR, STM32U595ZJT6, STM32U595ZJT6Q, STM32U595ZJY6QTR, STM32U599BJY6QTR, STM32U599NIH6Q, STM32U599NJH6Q, STM32U599VIT6Q, STM32U599VJT6, STM32U599VJT6Q, STM32U599ZIT6Q, STM32U599ZIY6QTR, STM32U599ZJT6Q, STM32U599ZJY6QTR, STM32U5A5AJH6, STM32U5A5AJH6Q, STM32U5A5QII3Q , STM32U5A5QJI6, STM32U5A5QJI6Q, STM32U5A5RJT6, STM32U5A5RJT6Q, STM32U5A5VJT6, STM32U5A5VJT6Q, STM32U5A5ZJT6, STM32U5A5ZJT6Q, STM32U5A5ZJY6QTR, STM32U5A9BJY6QTR, STM32U5A9J-DK, STM32U5A9NJH6Q, STM32U5A9VJT6Q, STM32U5A9ZJT6Q, STM32U5A9ZJY6QTR, STM32U5F7VIT6, STM32U5F7VIT6Q, STM32U5F7VJT6, STM32U5F7VJT6Q, STM32U5F9BJY6QTR, STM32U5F9NJH6Q, STM32U5F9VIT6Q, STM32U5F9VJT6Q, STM32U5F9ZIJ6QTR, STM32U5F9ZIT6Q, STM32U5F9ZJJ6QTR, STM32U5F9ZJT6Q, STM32U5G7VJT6, STM32U5G7VJT6Q, STM32U5G9BJY6QTR, STM32U5G9J-DK1, STM32U5G9J-DK2, STM32U5G9NJH6Q, STM32U5G9VJT6Q, STM32U5G9ZJJ6QTR, STM32U5G9ZJT6Q, STM32WB05KZV6TR, STM32WB05KZV7TR, STM32WB05TZF6TR, STM32WB05TZF7TR, STM32WB06CCF6TR, STM32WB06CCF7TR, STM32WB06CCV6TR, STM32WB06CCV7TR, STM32WB06KCV6TR, STM32WB06KCV7TR, STM32WB07CCF6TR, STM32WB07CCF7TR, STM32WB07CCV6TR, STM32WB07CCV7TR, STM32WB07KCV6TR, STM32WB07KCV7TR, STM32WB09KEV6TR, STM32WB09KEV7TR, STM32WB09TEF6TR, STM32WB09TEF7TR, STM32WB1MMCH6, STM32WBA50KGU6, STM32WBA50KGU6TR, STM32WBA52CEU6, STM32WBA52CEU6TR, STM32WBA52CEU7, STM32WBA52CEU7TR, STM32WBA52CGU6, STM32WBA52CGU6TR, STM32WBA52CGU6U, STM32WBA52CGU7, STM32WBA52CGU7TR, STM32WBA52KEU6, STM32WBA52KEU6TR, STM32WBA52KGU6, STM32WBA52KGU6TR, STM32WBA54CEU6, STM32WBA54CEU6TR, STM32WBA54CEU7, STM32WBA54CEU7TR, STM32WBA54CGU6, STM32WBA54CGU6TR, STM32WBA54CGU7, STM32WBA54CGU7TR, STM32WBA54KEU6, STM32WBA54KEU6TR, STM32WBA54KEU7, STM32WBA54KEU7TR, STM32WBA54KGU6, STM32WBA54KGU6TR, STM32WBA54KGU7, STM32WBA54KGU7TR, STM32WBA55CEU6, STM32WBA55CEU6TR, STM32WBA55CEU7, STM32WBA55CEU7TR, STM32WBA55CGU6, STM32WBA55CGU6TR, STM32WBA55CGU6U, STM32WBA55CGU7, STM32WBA55CGU7TR, STM32WBA55G-DK1, STM32WBA55HEF6, STM32WBA55HEF7, STM32WBA55HGF6, STM32WBA55HGF7, STM32WBA55UEI6, STM32WBA55UEI6TR, STM32WBA55UEI7, STM32WBA55UEI7TR, STM32WBA55UGI6, STM32WBA55UGI6TR, STM32WBA55UGI7, STM32WBA55UGI7TR, STM32WBA5MMGH6TR, STM32WBA62MGF6, STM32WBA62MIF6, STM32WBA65MGF7, STM32WBA65MIF6, STM32WBA65MIF7, STM32WL30K8V6, STM32WL30KBV6, STM32WL31C8V6, STM32WL31CBV6, STM32WL31K8V6, STM32WL31KBV6, STM32WL33C8V6, STM32WL33C8V6X, STM32WL33CBV6, STM32WL33CBV6X, STM32WL33CCV6, STM32WL33CCV6A, STM32WL33CCV6X, STM32WL33K8V7, STM32WL33K8V7X, STM32WL33KBV7 , STM32WL33KBV7X, STM32WL33KCV7, STM32WL33KCV7X, STM32WL5MOCH6, STM32WL5MOCH6TR] -2025-09-20 02:03:30,602 [INFO] BoardInfo:889 - No configuration file found for board P-NUCLEO-WB55 -2025-09-20 02:03:30,604 [INFO] DbBoards:161 - Kit is not supported: P-NUCLEO-WB55 -2025-09-20 02:03:30,614 [INFO] BoardInfo:889 - No configuration file found for board STEVAL-BFA001V1B -2025-09-20 02:03:30,615 [INFO] DbBoards:161 - Kit is not supported: STEVAL-BFA001V1B -2025-09-20 02:03:30,619 [INFO] BoardInfo:889 - No configuration file found for board STEVAL-BFA001V2B -2025-09-20 02:03:30,620 [INFO] DbBoards:161 - Kit is not supported: STEVAL-BFA001V2B -2025-09-20 02:03:31,030 [INFO] DbBoards:168 - Found 212 boards, 209 are supported -2025-09-20 02:03:31,030 [INFO] DbBoards:169 - Found 212 boards, 43 of them is supported for Bsp -2025-09-20 02:03:31,039 [INFO] ApiDb:668 - CubeFinder database Data Model version=2.1 -2025-09-20 02:03:31,039 [INFO] ApiDb:669 - CubeFinder database Configuration version=3.0.39 -2025-09-20 02:03:31,040 [INFO] ApiDb:670 - CubeFinder database generation date=2025-08-25 (1756130511) -2025-09-20 02:03:31,040 [INFO] ApiDb:671 - CubeFinder database FW Pack versions=[FP-ATR-ASTRA1_V2.0.0, FP-SNS-FLIGHT1_V5.1.0, FP-SNS-MOTENV1_V5.0.0, FP-SNS-MOTENVWB1_V1.4.0, FP-SNS-SMARTAG2_V1.2.0, FP-SNS-STBOX1_V2.1.0, STM32Cube_FW_C0_V1.4.0, STM32Cube_FW_F4_V1.28.3, STM32Cube_FW_F7_V1.17.4, STM32Cube_FW_G0_V1.6.2, STM32Cube_FW_G4_V1.6.1, STM32Cube_FW_H5_V1.5.0, STM32Cube_FW_H7RS_V1.2.0, STM32Cube_FW_H7_V1.12.1, STM32Cube_FW_L0_V1.12.2, STM32Cube_FW_L4_V1.18.1, STM32Cube_FW_L5_V1.5.1, STM32Cube_FW_N6_V1.2.0, STM32Cube_FW_U0_V1.3.0, STM32Cube_FW_U3_V1.2.0, STM32Cube_FW_U5_V1.8.0, STM32Cube_FW_WB0_V1.3.0, STM32Cube_FW_WBA_V1.7.0, STM32Cube_FW_WB_V1.23.0, STM32Cube_FW_WL3_V1.2.0, STM32Cube_FW_WL_V1.3.1, X-CUBE-ALGOBUILD_V1.4.0, X-CUBE-ALS_V1.0.2, X-CUBE-AZRTOS-F4_V1.1.0, X-CUBE-AZRTOS-F7_V1.1.0, X-CUBE-AZRTOS-G0_V1.1.0, X-CUBE-AZRTOS-G4_V2.0.0, X-CUBE-AZRTOS-H7RS_V1.1.0, X-CUBE-AZRTOS-H7_V3.4.0, X-CUBE-AZRTOS-L4_V2.0.0, X-CUBE-AZRTOS-L5_V2.0.0, X-CUBE-AZRTOS-WB_V2.0.0, X-CUBE-AZRTOS-WL_V2.0.0, X-CUBE-BLE1_V7.1.0, X-CUBE-BLE2_V3.3.0, X-CUBE-BLEMGR_V4.1.0, X-CUBE-EEPRMA1_V5.2.0, X-CUBE-FREERTOS_V1.3.1, X-CUBE-GNSS1_V6.0.0, X-CUBE-MEMS1_V11.3.0, X-CUBE-NFC4_V3.0.0, X-CUBE-NFC7_V2.0.0, X-CUBE-SFXS2LP1_V4.0.0, X-CUBE-ST67W61_V1.0.0, X-CUBE-SUBG2_V5.0.0, X-CUBE-TOF1_V3.4.3] -2025-09-20 02:03:38,146 [INFO] ApiDb:240 - Found 880 in-development CPN: [B-G473E-ZEST1S, B-WB1M-WPAN1, B-WBA5M-WPAN, B-WL5M-SUBG1, NUCLEO-C031C6, NUCLEO-C051C8, NUCLEO-C071RB, NUCLEO-C092RC, NUCLEO-H503RB, NUCLEO-H533RE, NUCLEO-H563ZI, NUCLEO-H7S3L8, NUCLEO-N657X0-Q, NUCLEO-U031R8, NUCLEO-U083RC, NUCLEO-U385RG-Q, NUCLEO-U545RE-Q, NUCLEO-U5A5ZJ-Q, NUCLEO-WB05KZ, NUCLEO-WB07CC, NUCLEO-WB09KE, NUCLEO-WBA52CG, NUCLEO-WBA55CG, NUCLEO-WL33CC1, NUCLEO-WL33CC2, STEVAL-PROTEUS1, STEVAL-SMARTAG2, STEVAL-STWINBX1, STM320518-EVAL, STM32C0116-DK, STM32C011D6Y3TR, STM32C011D6Y6TR, STM32C011F4P3, STM32C011F4P6, STM32C011F4U3, STM32C011F4U6TR, STM32C011F6P3, STM32C011F6P6, STM32C011F6U3, STM32C011F6U6TR, STM32C011J4M3, STM32C011J4M6, STM32C011J6M3, STM32C011J6M6, STM32C0316-DK, STM32C031C4T3, STM32C031C4T6, STM32C031C4U3, STM32C031C4U6, STM32C031C6T3, STM32C031C6T6, STM32C031C6U3, STM32C031C6U6, STM32C031F4P3, STM32C031F4P6, STM32C031F6P3, STM32C031F6P6, STM32C031G4U3, STM32C031G4U6, STM32C031G6U3, STM32C031G6U6, STM32C031K4T3, STM32C031K4T6, STM32C031K4U3, STM32C031K4U6, STM32C031K6T3, STM32C031K6T6, STM32C031K6U3, STM32C031K6U6, STM32C051C6T6, STM32C051C6U6, STM32C051C8T6, STM32C051C8U6, STM32C051D8Y6TR, STM32C051F6P6, STM32C051F8P6, STM32C051G6U6, STM32C051G8U6, STM32C051K6T6, STM32C051K6U6, STM32C051K8T6, STM32C071C8T6, STM32C071C8T6N, STM32C071C8U6, STM32C071C8U6N, STM32C071CBT6, STM32C071CBT6N, STM32C071CBU6, STM32C071CBU6N, STM32C071F8P6, STM32C071F8P6N, STM32C071FBP6, STM32C071FBP6N, STM32C071FBY6TR, STM32C071G8U6, STM32C071G8U6N, STM32C071GBU6, STM32C071GBU6N, STM32C071K8T6, STM32C071K8T6N, STM32C071K8U6, STM32C071K8U6N, STM32C071KBT6, STM32C071KBT6N, STM32C071KBU6, STM32C071KBU6N, STM32C071R8T6, STM32C071R8T6N, STM32C071RBI6N, STM32C071RBT6, STM32C071RBT6N, STM32C091CBT6, STM32C091CBU6, STM32C091CCT6, STM32C091CCU6, STM32C091ECY6TR, STM32C091FBP6, STM32C091FCP6, STM32C091GBU6, STM32C091GCU6, STM32C091KBT6, STM32C091KBU6, STM32C091KCT6, STM32C091KCU6, STM32C091RBT6, STM32C091RCI6, STM32C091RCT6, STM32C092CBT6, STM32C092CBU6, STM32C092CCT6, STM32C092CCU6, STM32C092ECY6TR, STM32C092FBP6, STM32C092FCP6, STM32C092GBU6, STM32C092GCU6, STM32C092KBT6, STM32C092KBU6, STM32C092KCT6, STM32C092KCU6, STM32C092RBT6, STM32C092RCI6, STM32C092RCT6, STM32G071K8TXN, STM32G071K8UXN, STM32G081GBU6N, STM32G081KBT6N, STM32G081KBUXN, STM32G0B1CCT6N, STM32G0B1KCT6, STM32G0B1NEY6TR, STM32G0B1RCT6N, STM32G0C1CCT6, STM32G0C1CCT6N, STM32G0C1CCU6N, STM32G0C1CET6N, STM32G0C1CEU6N, STM32G0C1KCT6, STM32G0C1NEY6TR, STM32G0C1RCI6N, STM32G0C1RCT6N, STM32G0C1REI6N, STM32G0C1RET6N, STM32G0C1VCI6, STM32G0C1VEI6, STM32G411C6T3, STM32G411C6T6, STM32G411C6U3, STM32G411C6U6, STM32G411C8T3, STM32G411C8T6, STM32G411C8U3, STM32G411C8U6, STM32G411CBT3, STM32G411CBT6, STM32G411CBU3, STM32G411CBU6, STM32G411K6T3, STM32G411K6T6, STM32G411K6U3, STM32G411K6U6, STM32G411K8T3, STM32G411K8T6, STM32G411K8U3, STM32G411K8U6, STM32G411KBT3, STM32G411KBT6, STM32G411KBU3, STM32G411KBU6, STM32G411M6T3, STM32G411M6T6, STM32G411M8T3, STM32G411M8T6, STM32G411MBT3, STM32G411MBT6, STM32G411R6T3, STM32G411R6T6, STM32G411R8T3, STM32G411R8T6, STM32G411RBT3, STM32G411RBT6, STM32G414CBT3, STM32G414CBT6, STM32G414CBU3, STM32G414CBU6, STM32G414CCT3, STM32G414CCT6, STM32G414CCU3, STM32G414CCU6, STM32G414MBT3, STM32G414MBT6, STM32G414MCT3, STM32G414MCT6, STM32G414RBT3, STM32G414RBT6, STM32G414RCT3, STM32G414RCT6, STM32G414VBT3, STM32G414VBT6, STM32G414VCT3, STM32G414VCT6, STM32G431CBT3Z, STM32G431RBT3Z, STM32G471CCT6, STM32G471CCU6, STM32G471CET3, STM32G471CET6, STM32G471CEU3, STM32G471CEU6, STM32G471MCT6, STM32G471MET3, STM32G471MET6, STM32G471MEY6TR, STM32G471QCT6, STM32G471QET3, STM32G471RCT6, STM32G471RET3, STM32G471RET6, STM32G471VCH6, STM32G471VCI6, STM32G471VCT6, STM32G471VEH3, STM32G471VEH6, STM32G471VEI3, STM32G471VEI6, STM32G471VET3, STM32G471VET6, STM32G473QET3Z, STM32G473RET3Z, STM32G474CCT6, STM32G491RET3Z, STM32H503CBT6, STM32H503CBU6, STM32H503EBY6TR, STM32H503KBU6, STM32H503RBT6, STM32H523CCT6, STM32H523CCU6, STM32H523CET6, STM32H523CEU6, STM32H523HEY6TR, STM32H523RCT6, STM32H523RET6, STM32H523VCI6, STM32H523VCT6, STM32H523VEI6, STM32H523VET6, STM32H523ZCJ6, STM32H523ZCT6, STM32H523ZEJ6, STM32H523ZET6, STM32H533CET6, STM32H533CEU6, STM32H533HEY6TR, STM32H533RET6, STM32H533VEI6, STM32H533VET6, STM32H533ZEJ6, STM32H533ZET6, STM32H562AGI6, STM32H562AII6, STM32H562IGK6, STM32H562IGT6, STM32H562IIK6, STM32H562IIT6, STM32H562RGT6, STM32H562RGV6, STM32H562RIT6, STM32H562RIV6, STM32H562VGT6, STM32H562VIT6, STM32H562ZGT6, STM32H562ZIT6, STM32H563AGI6, STM32H563AII3Q, STM32H563AII6, STM32H563IGK6, STM32H563IGT6, STM32H563IIK3Q, STM32H563IIK6, STM32H563IIT3Q, STM32H563IIT6, STM32H563MIY3QTR, STM32H563RGT6, STM32H563RGV6, STM32H563RIT6, STM32H563RIV6, STM32H563VGT6, STM32H563VIT3Q, STM32H563VIT6, STM32H563ZGT6, STM32H563ZIT3Q, STM32H563ZIT6, STM32H573AII3Q, STM32H573AII6, STM32H573I-DK, STM32H573IIK3Q, STM32H573IIK6, STM32H573IIT3Q, STM32H573IIT6, STM32H573MIY3QTR, STM32H573RIT6, STM32H573RIV6, STM32H573VIT3Q, STM32H573VIT6, STM32H573ZIT3Q, STM32H573ZIT6, STM32H7R3A8I6, STM32H7R3I8K6, STM32H7R3I8T6, STM32H7R3L8H6, STM32H7R3L8H6H, STM32H7R3R8V6, STM32H7R3V8H6, STM32H7R3V8T6, STM32H7R3V8Y6TR, STM32H7R3Z8J6, STM32H7R3Z8T6, STM32H7R7A8I6, STM32H7R7I8K6, STM32H7R7I8T6, STM32H7R7L8H6, STM32H7R7L8H6H, STM32H7R7Z8J6, STM32H7S3A8I6, STM32H7S3I8K6, STM32H7S3I8T6, STM32H7S3L8H6, STM32H7S3L8H6H, STM32H7S3R8V6, STM32H7S3V8H6, STM32H7S3V8T6, STM32H7S3V8Y6TR, STM32H7S3Z8J6, STM32H7S3Z8T6, STM32H7S78-DK, STM32H7S7A8I6, STM32H7S7I8K6, STM32H7S7I8T6, STM32H7S7L8H6, STM32H7S7L8H6H, STM32H7S7Z8J6, STM32L4R5QGI6STR, STM32MP131AAE3, STM32MP131AAF3, STM32MP131AAG3, STM32MP131CAE3, STM32MP131CAF3, STM32MP131CAG3, STM32MP131DAE7, STM32MP131DAF7, STM32MP131DAG7, STM32MP131FAE7, STM32MP131FAF7, STM32MP131FAG7, STM32MP133AAE3, STM32MP133AAF3, STM32MP133AAG3, STM32MP133CAE3, STM32MP133CAF3, STM32MP133CAG3, STM32MP133DAE7, STM32MP133DAF7, STM32MP133DAG7, STM32MP133FAE7, STM32MP133FAF7, STM32MP133FAG7, STM32MP135AAE3, STM32MP135AAF3, STM32MP135AAG3, STM32MP135CAE3, STM32MP135CAF3, STM32MP135CAG3, STM32MP135DAE7, STM32MP135DAF7, STM32MP135DAG7, STM32MP135F-DK, STM32MP135FAE7, STM32MP135FAF7, STM32MP135FAF7T, STM32MP135FAF7U, STM32MP135FAG7, STM32MP211AAL3, STM32MP211AAM3, STM32MP211AAN3, STM32MP211AAO3, STM32MP211CAL3, STM32MP211CAM3, STM32MP211CAN3, STM32MP211CAO3, STM32MP211DAL3, STM32MP211DAM3, STM32MP211DAN3, STM32MP211DAO3, STM32MP211FAL3, STM32MP211FAM3, STM32MP211FAN3, STM32MP211FAO3, STM32MP213AAL3, STM32MP213AAM3, STM32MP213AAN3, STM32MP213AAO3, STM32MP213CAL3, STM32MP213CAM3, STM32MP213CAN3, STM32MP213CAO3, STM32MP213DAL3, STM32MP213DAM3, STM32MP213DAN3, STM32MP213DAO3, STM32MP213FAL3, STM32MP213FAM3, STM32MP213FAN3, STM32MP213FAO3, STM32MP215AAL3, STM32MP215AAM3, STM32MP215AAN3, STM32MP215AAO3, STM32MP215CAL3, STM32MP215CAM3, STM32MP215CAN3, STM32MP215CAO3, STM32MP215DAL3, STM32MP215DAM3, STM32MP215DAN3, STM32MP215DAO3, STM32MP215F-DK, STM32MP215FAL3, STM32MP215FAM3, STM32MP215FAN3, STM32MP215FAO3, STM32MP231AAJ3, STM32MP231AAK3, STM32MP231AAL3, STM32MP231CAJ3, STM32MP231CAK3, STM32MP231CAL3, STM32MP231DAJ3, STM32MP231DAK3, STM32MP231DAL3, STM32MP231FAJ3, STM32MP231FAK3, STM32MP231FAL3, STM32MP233AAJ3, STM32MP233AAK3, STM32MP233AAL3, STM32MP233CAJ3, STM32MP233CAK3, STM32MP233CAL3, STM32MP233DAJ3, STM32MP233DAK3, STM32MP233DAL3, STM32MP233FAJ3, STM32MP233FAK3, STM32MP233FAL3, STM32MP235AAJ3, STM32MP235AAK3, STM32MP235AAL3, STM32MP235CAJ3, STM32MP235CAK3, STM32MP235CAL3, STM32MP235DAJ3, STM32MP235DAK3, STM32MP235DAL3, STM32MP235FAJ3, STM32MP235FAK3, STM32MP235FAL3, STM32MP251AAI3, STM32MP251AAK3, STM32MP251AAL3, STM32MP251CAI3, STM32MP251CAK3, STM32MP251CAL3, STM32MP251DAI3, STM32MP251DAK3, STM32MP251DAL3, STM32MP251FAI3, STM32MP251FAK3, STM32MP251FAL3, STM32MP253AAI3, STM32MP253AAK3, STM32MP253AAL3, STM32MP253CAI3, STM32MP253CAK3, STM32MP253CAL3, STM32MP253DAI3, STM32MP253DAK3, STM32MP253DAL3, STM32MP253FAI3, STM32MP253FAK3, STM32MP253FAL3, STM32MP255AAI3, STM32MP255AAK3, STM32MP255AAL3, STM32MP255CAI3, STM32MP255CAK3, STM32MP255CAL3, STM32MP255DAI3, STM32MP255DAK3, STM32MP255DAL3, STM32MP255FAI3, STM32MP255FAK3, STM32MP255FAL3, STM32MP257AAI3, STM32MP257AAK3, STM32MP257AAL3, STM32MP257CAI3, STM32MP257CAK3, STM32MP257CAL3, STM32MP257DAI3, STM32MP257DAK3, STM32MP257DAL3, STM32MP257F-DK, STM32MP257F-EV1, STM32MP257FAI3, STM32MP257FAK3, STM32MP257FAL3, STM32N645A0H3Q, STM32N645B0H3Q, STM32N645I0H3Q, STM32N645L0H3Q, STM32N645X0H3Q, STM32N645Z0H3Q, STM32N647A0H3Q, STM32N647B0H3Q, STM32N647I0H3Q, STM32N647L0H3Q, STM32N647X0H3Q, STM32N647Z0H3Q, STM32N655A0H3Q, STM32N655B0H3Q, STM32N655I0H3Q, STM32N655L0H3Q, STM32N655X0H3Q, STM32N655Z0H3Q, STM32N6570-DK, STM32N657A0H3Q, STM32N657B0H3Q, STM32N657I0H3Q, STM32N657L0H3Q, STM32N657X0H3Q, STM32N657Z0H3Q, STM32U031C6T6, STM32U031C6U6, STM32U031C8T6, STM32U031C8U6, STM32U031F4P6, STM32U031F6P6, STM32U031F8P6, STM32U031G6Y6TR, STM32U031G8Y6TR, STM32U031K4U6, STM32U031K6U6, STM32U031K8U6, STM32U031R6I6, STM32U031R6T6, STM32U031R8I6, STM32U031R8T6, STM32U073C8T6, STM32U073C8U6, STM32U073CBT6, STM32U073CBU6, STM32U073CCT6, STM32U073CCU6, STM32U073H8Y6TR, STM32U073HBY6TR, STM32U073HCY6TR, STM32U073K8U6, STM32U073KBU6, STM32U073KCU6, STM32U073M8I6, STM32U073M8T6, STM32U073MBI6, STM32U073MBT6, STM32U073MCI6, STM32U073MCT6, STM32U073R8I6, STM32U073R8T6, STM32U073RBI6, STM32U073RBT6, STM32U073RCI6, STM32U073RCT6, STM32U083C-DK, STM32U083CCT6, STM32U083CCU6, STM32U083HCY6TR, STM32U083KCU6, STM32U083MCI6, STM32U083MCT6, STM32U083RCI6, STM32U083RCT6, STM32U375CET6, STM32U375CET6Q, STM32U375CEU6, STM32U375CEU6Q, STM32U375CEY6QTR, STM32U375CGT6, STM32U375CGT6Q, STM32U375CGU6, STM32U375CGU6Q, STM32U375CGY6QTR, STM32U375KEU6, STM32U375KGU6, STM32U375REI6, STM32U375REI6Q, STM32U375RET6, STM32U375RET6Q, STM32U375REY6GTR, STM32U375REY6QTR, STM32U375RGI6, STM32U375RGI6Q, STM32U375RGT6, STM32U375RGT6Q, STM32U375RGY6GTR, STM32U375RGY6QTR, STM32U375VEI6, STM32U375VEI6Q, STM32U375VET6, STM32U375VET6Q, STM32U375VGI6, STM32U375VGI6Q, STM32U375VGT6, STM32U375VGT6Q, STM32U385CGT6, STM32U385CGT6Q, STM32U385CGU6, STM32U385CGU6Q, STM32U385CGY6QTR, STM32U385KGU6, STM32U385RGI6, STM32U385RGI6Q, STM32U385RGT6, STM32U385RGT6Q, STM32U385RGY6GTR, STM32U385RGY6QTR, STM32U385VGI6, STM32U385VGI6Q, STM32U385VGT6, STM32U385VGT6Q, STM32U535CBT6, STM32U535CBT6Q, STM32U535CBU6, STM32U535CBU6Q, STM32U535CCT6, STM32U535CCT6Q, STM32U535CCU6, STM32U535CCU6Q, STM32U535CET6, STM32U535CET6Q, STM32U535CEU6, STM32U535CEU6Q, STM32U535JEY6QTR, STM32U535NCY6QTR, STM32U535NEY6QTR, STM32U535RBI6, STM32U535RBI6Q, STM32U535RBT6, STM32U535RBT6Q, STM32U535RCI6, STM32U535RCI6Q, STM32U535RCT6, STM32U535RCT6Q, STM32U535REI6, STM32U535REI6Q, STM32U535RET6, STM32U535RET6Q, STM32U535VCI6, STM32U535VCI6Q, STM32U535VCT6, STM32U535VCT6Q, STM32U535VEI6, STM32U535VEI6Q, STM32U535VET6, STM32U535VET6Q, STM32U545CET6, STM32U545CET6Q, STM32U545CEU6, STM32U545CEU6Q, STM32U545JEY6QTR, STM32U545NEY6QTR, STM32U545REI6, STM32U545REI6Q, STM32U545RET6, STM32U545RET6Q, STM32U545VEI6, STM32U545VEI6Q, STM32U545VET6, STM32U545VET6Q, STM32U595AIH6, STM32U595AIH6Q, STM32U595AJH6, STM32U595AJH6Q, STM32U595QII6, STM32U595QII6Q, STM32U595QJI6, STM32U595QJI6Q, STM32U595RIT6, STM32U595RIT6Q, STM32U595RJT6, STM32U595RJT6Q, STM32U595VIT6, STM32U595VIT6Q, STM32U595VJT6, STM32U595VJT6Q, STM32U595ZIT6, STM32U595ZIT6Q, STM32U595ZIY6QTR, STM32U595ZJT6, STM32U595ZJT6Q, STM32U595ZJY6QTR, STM32U599BJY6QTR, STM32U599NIH6Q, STM32U599NJH6Q, STM32U599VIT6Q, STM32U599VJT6, STM32U599VJT6Q, STM32U599ZIT6Q, STM32U599ZIY6QTR, STM32U599ZJT6Q, STM32U599ZJY6QTR, STM32U5A5AJH6, STM32U5A5AJH6Q, STM32U5A5QII3Q , STM32U5A5QJI6, STM32U5A5QJI6Q, STM32U5A5RJT6, STM32U5A5RJT6Q, STM32U5A5VJT6, STM32U5A5VJT6Q, STM32U5A5ZJT6, STM32U5A5ZJT6Q, STM32U5A5ZJY6QTR, STM32U5A9BJY6QTR, STM32U5A9J-DK, STM32U5A9NJH6Q, STM32U5A9VJT6Q, STM32U5A9ZJT6Q, STM32U5A9ZJY6QTR, STM32U5F7VIT6, STM32U5F7VIT6Q, STM32U5F7VJT6, STM32U5F7VJT6Q, STM32U5F9BJY6QTR, STM32U5F9NJH6Q, STM32U5F9VIT6Q, STM32U5F9VJT6Q, STM32U5F9ZIJ6QTR, STM32U5F9ZIT6Q, STM32U5F9ZJJ6QTR, STM32U5F9ZJT6Q, STM32U5G7VJT6, STM32U5G7VJT6Q, STM32U5G9BJY6QTR, STM32U5G9J-DK1, STM32U5G9J-DK2, STM32U5G9NJH6Q, STM32U5G9VJT6Q, STM32U5G9ZJJ6QTR, STM32U5G9ZJT6Q, STM32WB05KZV6TR, STM32WB05KZV7TR, STM32WB05TZF6TR, STM32WB05TZF7TR, STM32WB06CCF6TR, STM32WB06CCF7TR, STM32WB06CCV6TR, STM32WB06CCV7TR, STM32WB06KCV6TR, STM32WB06KCV7TR, STM32WB07CCF6TR, STM32WB07CCF7TR, STM32WB07CCV6TR, STM32WB07CCV7TR, STM32WB07KCV6TR, STM32WB07KCV7TR, STM32WB09KEV6TR, STM32WB09KEV7TR, STM32WB09TEF6TR, STM32WB09TEF7TR, STM32WB1MMCH6, STM32WBA50KGU6, STM32WBA50KGU6TR, STM32WBA52CEU6, STM32WBA52CEU6TR, STM32WBA52CEU7, STM32WBA52CEU7TR, STM32WBA52CGU6, STM32WBA52CGU6TR, STM32WBA52CGU6U, STM32WBA52CGU7, STM32WBA52CGU7TR, STM32WBA52KEU6, STM32WBA52KEU6TR, STM32WBA52KGU6, STM32WBA52KGU6TR, STM32WBA54CEU6, STM32WBA54CEU6TR, STM32WBA54CEU7, STM32WBA54CEU7TR, STM32WBA54CGU6, STM32WBA54CGU6TR, STM32WBA54CGU7, STM32WBA54CGU7TR, STM32WBA54KEU6, STM32WBA54KEU6TR, STM32WBA54KEU7, STM32WBA54KEU7TR, STM32WBA54KGU6, STM32WBA54KGU6TR, STM32WBA54KGU7, STM32WBA54KGU7TR, STM32WBA55CEU6, STM32WBA55CEU6TR, STM32WBA55CEU7, STM32WBA55CEU7TR, STM32WBA55CGU6, STM32WBA55CGU6TR, STM32WBA55CGU6U, STM32WBA55CGU7, STM32WBA55CGU7TR, STM32WBA55G-DK1, STM32WBA55HEF6, STM32WBA55HEF7, STM32WBA55HGF6, STM32WBA55HGF7, STM32WBA55UEI6, STM32WBA55UEI6TR, STM32WBA55UEI7, STM32WBA55UEI7TR, STM32WBA55UGI6, STM32WBA55UGI6TR, STM32WBA55UGI7, STM32WBA55UGI7TR, STM32WBA5MMGH6TR, STM32WBA62MGF6, STM32WBA62MIF6, STM32WBA65MGF7, STM32WBA65MIF6, STM32WBA65MIF7, STM32WL30K8V6, STM32WL30KBV6, STM32WL31C8V6, STM32WL31CBV6, STM32WL31K8V6, STM32WL31KBV6, STM32WL33C8V6, STM32WL33C8V6X, STM32WL33CBV6, STM32WL33CBV6X, STM32WL33CCV6, STM32WL33CCV6A, STM32WL33CCV6X, STM32WL33K8V7, STM32WL33K8V7X, STM32WL33KBV7 , STM32WL33KBV7X, STM32WL33KCV7, STM32WL33KCV7X, STM32WL5MOCH6, STM32WL5MOCH6TR] -2025-09-20 02:03:38,160 [INFO] DbMcus:218 - Found 4801 MCUs, 4801 are supported -2025-09-20 02:03:38,161 [INFO] ApiDb:423 - Load user favorites file /home/ja/.stm32cubeide/favorites.mcus.txt: 0 item(s) -2025-09-20 02:03:38,162 [INFO] ApiDb:427 - User favorites MCUs=[] -2025-09-20 02:03:38,162 [INFO] DbMcus:224 - Set 0 / 0 favorites MCUs -2025-09-20 02:03:39,907 [INFO] ApiDb:414 - User favorites file not found: /home/ja/.stm32cubeide/favorites.boards.txt -2025-09-20 02:03:39,908 [INFO] DbBoards:198 - Set 0 / 0 favorites Boards -2025-09-20 02:03:39,963 [INFO] UtilMem:75 - End LoadConfig() Used Memory: 681168496 Bytes (912261120) -2025-09-20 02:03:40,343 [WARN] ThirdParty:833 - waiting for thirdparty lock release [change project] -2025-09-20 02:03:40,344 [INFO] ThirdParty:835 - entering critical section [change project] -2025-09-20 02:03:40,344 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-PM33A1 1.0.0 -2025-09-20 02:03:40,344 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USBPD 4.1 -2025-09-20 02:03:40,345 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC9 1.0.0 -2025-09-20 02:03:40,345 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 2.0.0 -2025-09-20 02:03:40,345 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENVWB1 1.4.0 -2025-09-20 02:03:40,345 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F4 1.1.0 -2025-09-20 02:03:40,345 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics LIBJPEG 8.0.0 -2025-09-20 02:03:40,345 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-ASTRA1 2.0.2 -2025-09-20 02:03:40,345 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSL 5.8.2 -2025-09-20 02:03:40,345 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE1 7.1.0 -2025-09-20 02:03:40,345 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Avnet-IotConnect X-CUBE-IoTC-DA16k-PMOD 1.0.0 -2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SMBUS 2.1.0 -2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfMQTT 1.19.2 -2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 3.0.0 -2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ISPU 2.1.0 -2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-EEPRMA1 5.2.0 -2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLEMGR 4.1.0 -2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WB 2.0.0 -2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST60 1.0.0 -2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-GNSS1 7.0.1 -2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC12 1.0.0 -2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F7 1.1.0 -2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L5 2.0.0 -2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOUCHGFX 4.25.0 -2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 2.0.0 -2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC6 3.1.0 -2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :quantropi X-CUBE-qispace-sdk-base 2.1.0 -2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FreeRTOS 0.0.1 -2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G0 1.1.0 -2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SAFEA1 1.2.2 -2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC4 3.0.0 -2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SUBG2 5.0.0 -2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7RS 1.1.0 -2025-09-20 02:03:40,348 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics STM32_WPAN 1.0.0 -2025-09-20 02:03:40,348 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :EmbeddedOffice I-CUBE-FS-RTOS 1.0.1 -2025-09-20 02:03:40,348 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.0.3 -2025-09-20 02:03:40,348 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :WES I-CUBE-Cesium 1.4.0 -2025-09-20 02:03:40,348 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Cesanta I-CUBE-Mongoose 7.13.0 -2025-09-20 02:03:40,348 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 1.0.0 -2025-09-20 02:03:40,348 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Infineon AIROC-Wi-Fi-Bluetooth-STM32 1.7.1 -2025-09-20 02:03:40,348 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G4 2.0.0 -2025-09-20 02:03:40,348 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-WB05N 2.0.0 -2025-09-20 02:03:40,349 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.1.0 -2025-09-20 02:03:40,349 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.3.0 -2025-09-20 02:03:40,349 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfTPM 3.8.0 -2025-09-20 02:03:40,349 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7 3.4.0 -2025-09-20 02:03:40,349 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DISPLAY 3.0.0 -2025-09-20 02:03:40,349 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSH 1.4.20 -2025-09-20 02:03:40,350 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC7 2.0.0 -2025-09-20 02:03:40,350 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TCPP 4.2.0 -2025-09-20 02:03:40,350 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :RealThread X-CUBE-RT-Thread_Nano 4.1.1 -2025-09-20 02:03:40,350 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-SIGFOX1 3.2.0 -2025-09-20 02:03:40,350 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC10 1.0.0 -2025-09-20 02:03:40,350 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-FREERTOS 1.3.1 -2025-09-20 02:03:40,351 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics HAL Drivers 0.0.0 -2025-09-20 02:03:40,351 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.16.2 -2025-09-20 02:03:40,351 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-IPS 3.1.0 -2025-09-20 02:03:40,351 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALS 1.0.2 -2025-09-20 02:03:40,351 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :emotas I-CUBE-CANOPEN 1.3.0 -2025-09-20 02:03:40,351 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.14.1 -2025-09-20 02:03:40,351 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :ITTIA_DB I-CUBE-ITTIADB 8.9.0 -2025-09-20 02:03:40,351 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-STSE01 1.0.0 -2025-09-20 02:03:40,352 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :portGmbH I-Cube-SoM-uGOAL 1.1.0 -2025-09-20 02:03:40,352 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST67W61 1.0.0 -2025-09-20 02:03:40,352 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STBOX1 2.1.0 -2025-09-20 02:03:40,352 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AI 10.2.0 -2025-09-20 02:03:40,352 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STAIOTCFT 1.0.0 -2025-09-20 02:03:40,352 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 1.0.0 -2025-09-20 02:03:40,352 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-SMARTAG2 1.2.0 -2025-09-20 02:03:40,352 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-FLIGHT1 5.1.0 -2025-09-20 02:03:40,352 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WL 2.0.0 -2025-09-20 02:03:40,352 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :SEGGER I-CUBE-embOS 1.3.1 -2025-09-20 02:03:40,353 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALGOBUILD 1.4.0 -2025-09-20 02:03:40,353 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DPower 1.3.0 -2025-09-20 02:03:40,353 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-MEMS1 11.3.0 -2025-09-20 02:03:40,353 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENV1 5.0.0 -2025-09-20 02:03:40,353 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 1.0.0 -2025-09-20 02:03:40,353 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L4 2.0.0 -2025-09-20 02:03:40,353 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 0.0.2 -2025-09-20 02:03:40,354 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.1.2 -2025-09-20 02:03:40,354 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SFXS2LP1 4.0.0 -2025-09-20 02:03:40,354 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE2 3.3.0 -2025-09-20 02:03:40,354 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOF1 3.4.3 -2025-09-20 02:03:40,354 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.2.0 -2025-09-20 02:03:40,354 [INFO] ThirdParty:841 - exiting critical section [change project] -2025-09-20 02:03:41,895 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) -2025-09-20 02:03:41,900 [INFO] PinOutPanel:1589 - setPackage(STM32F429ZITx,LQFP144) -2025-09-20 02:03:43,685 [INFO] UtilMem:75 - Before build in PCC Used Memory: 660889184 Bytes (931135488) -2025-09-20 02:03:46,004 [INFO] UtilMem:75 - After build in PCC Used Memory: 884374320 Bytes (931135488) -2025-09-20 02:03:46,293 [INFO] ApiDbMcu:532 - Load IP Config File for FREERTOS -2025-09-20 02:03:46,376 [INFO] ApiDbMcu:532 - Load IP Config File for USB_HOST -2025-09-20 02:03:46,668 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,671 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,672 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,672 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,672 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,675 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,676 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,676 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,677 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,677 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,678 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,678 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,679 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,679 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,680 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,680 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,681 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,681 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,682 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,682 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,683 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,684 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,685 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,686 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,687 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,687 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,688 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,689 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,690 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,691 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,754 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,763 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,763 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,764 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,764 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,765 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,766 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,767 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,768 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,769 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,769 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,769 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,770 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,770 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,770 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,771 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,771 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,771 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,772 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,773 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,773 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,775 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,778 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,785 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,787 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,790 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,792 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,794 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,801 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,808 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,814 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,817 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,820 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,822 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,824 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,826 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:03:46,856 [INFO] ApiDbMcu:532 - Load IP Config File for PDM2PCM -2025-09-20 02:03:47,093 [WARN] FreeRTOS:1023 - Null or empty value: should not occur! (nothing added to the table) -2025-09-20 02:03:48,720 [INFO] CADModel:165 - CPN selected for project levelSTM32F429ZIT6 -2025-09-20 02:03:48,720 [INFO] CADModel:114 - Register for checkConnection events -2025-09-20 02:03:48,733 [INFO] RtosManager:728 - Active RTOS found at IOC load: FREERTOS [Cortex-M4NS] -2025-09-20 02:03:48,834 [INFO] OpenFileManager:386 - Restore cursor -2025-09-20 02:03:49,932 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:04:53,421 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:04:53,688 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:04:53,879 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:05:07,215 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:05:07,460 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:05:07,670 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:05:24,373 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:05:24,615 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:05:24,812 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:06:43,157 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:07:00,737 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:07:03,844 [INFO] CADModel:198 - CPN selected (Project mode): STM32F429ZIT6 -2025-09-20 02:07:03,844 [INFO] CADModel:200 - Internet connection configuration mode: 1 -2025-09-20 02:07:03,844 [INFO] CADModel:203 - rpn retrievedSTM32F429ZI -2025-09-20 02:07:03,852 [INFO] WebAppUi:336 - Instantiating new browser for Project -2025-09-20 02:07:04,060 [INFO] WebAppUi:1235 - Register for checkConnection events -2025-09-20 02:07:04,061 [INFO] WebAppUi:1270 - Apply proxy settings -2025-09-20 02:07:04,062 [INFO] WebAppUi:1308 - Chromium requires no authentication -2025-09-20 02:07:04,063 [INFO] WebAppUi:1294 - Direct internet connection detected -2025-09-20 02:07:04,075 [INFO] WebAppUi:1166 - Web application path used /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659/db/plugins/mcufinder/reactClient/index.html -2025-09-20 02:07:04,099 [INFO] WebAppUi:938 - Path where api_config.json is located /home/ja/.stmcufinder/plugins/mcufinder//mcu/api_config.json -2025-09-20 02:07:04,100 [INFO] WebAppUi:939 - Setting api config in window object -2025-09-20 02:07:04,163 [INFO] WebAppUi:947 - Path where cad_preferences.json is located /home/ja/.stm32cubeide/ -2025-09-20 02:07:04,163 [INFO] WebAppUi:948 - Setting consent info in window object -2025-09-20 02:07:05,379 [INFO] WebAppUi:843 - Allow Downloads -2025-09-20 02:07:05,381 [INFO] WebAppUi:336 - Instantiating new browser for Finder -2025-09-20 02:07:05,604 [INFO] WebAppUi:1100 - Web application message: [UlApiManager component] Connected to Ultra Librarian SSO -2025-09-20 02:07:05,604 [INFO] WebAppUi:1100 - Web application message: [UlApiManager component] Connected to Ultra Librarian API -2025-09-20 02:07:05,642 [INFO] WebAppUi:1235 - Register for checkConnection events -2025-09-20 02:07:05,642 [INFO] WebAppUi:1270 - Apply proxy settings -2025-09-20 02:07:05,643 [INFO] WebAppUi:1308 - Chromium requires no authentication -2025-09-20 02:07:05,643 [INFO] WebAppUi:1294 - Direct internet connection detected -2025-09-20 02:07:05,659 [INFO] WebAppUi:1166 - Web application path used /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659/db/plugins/mcufinder/reactClient/index.html -2025-09-20 02:07:05,685 [INFO] WebAppUi:938 - Path where api_config.json is located /home/ja/.stmcufinder/plugins/mcufinder//mcu/api_config.json -2025-09-20 02:07:05,685 [INFO] WebAppUi:939 - Setting api config in window object -2025-09-20 02:07:05,741 [INFO] WebAppUi:947 - Path where cad_preferences.json is located /home/ja/.stm32cubeide/ -2025-09-20 02:07:05,741 [INFO] WebAppUi:948 - Setting consent info in window object -2025-09-20 02:07:06,876 [INFO] WebAppUi:843 - Allow Downloads -2025-09-20 02:07:06,877 [INFO] WebAppUi:664 - RPN selected STM32F429ZI -2025-09-20 02:07:06,877 [INFO] WebAppUi:665 - RefName selected STM32F429ZITx -2025-09-20 02:07:06,878 [INFO] WebAppUi:666 - CPN selected STM32F429ZIT6 -2025-09-20 02:07:06,881 [INFO] WebAppUi:829 - Which Bigleton in use 2 and which CPN is about STM32F429ZIT6 -2025-09-20 02:07:06,891 [INFO] WebAppUi:703 - Have injected Javascript into web application -2025-09-20 02:07:06,892 [INFO] WebAppUiContainer:153 - Web application run mode: Project CPN: STM32F429ZIT6 -2025-09-20 02:07:09,274 [INFO] WebAppUi:938 - Path where api_config.json is located /home/ja/.stmcufinder/plugins/mcufinder//mcu/api_config.json -2025-09-20 02:07:09,275 [INFO] WebAppUi:939 - Setting api config in window object -2025-09-20 02:07:09,326 [INFO] WebAppUi:947 - Path where cad_preferences.json is located /home/ja/.stm32cubeide/ -2025-09-20 02:07:09,326 [INFO] WebAppUi:948 - Setting consent info in window object -2025-09-20 02:07:09,619 [INFO] WebAppUi:1100 - Web application message: THREE.WebGLRenderer 101 -2025-09-20 02:07:13,023 [INFO] WebAppUi:305 - Path where cad_preferences.json is located /home/ja/.stm32cubeide/ -2025-09-20 02:07:13,023 [INFO] WebAppUi:306 - Updating consent from JSON file -2025-09-20 02:07:13,030 [INFO] WebAppUi:305 - Path where cad_preferences.json is located /home/ja/.stm32cubeide/ -2025-09-20 02:07:13,030 [INFO] WebAppUi:306 - Updating consent from JSON file -2025-09-20 02:07:13,040 [INFO] WebAppUi:305 - Path where cad_preferences.json is located /home/ja/.stm32cubeide/ -2025-09-20 02:07:13,041 [INFO] WebAppUi:306 - Updating consent from JSON file -2025-09-20 02:07:13,714 [INFO] WebAppUi:305 - Path where cad_preferences.json is located /home/ja/.stm32cubeide/ -2025-09-20 02:07:13,714 [INFO] WebAppUi:306 - Updating consent from JSON file -2025-09-20 02:07:13,720 [INFO] WebAppUi:305 - Path where cad_preferences.json is located /home/ja/.stm32cubeide/ -2025-09-20 02:07:13,721 [INFO] WebAppUi:306 - Updating consent from JSON file -2025-09-20 02:07:13,726 [INFO] WebAppUi:305 - Path where cad_preferences.json is located /home/ja/.stm32cubeide/ -2025-09-20 02:07:13,726 [INFO] WebAppUi:306 - Updating consent from JSON file -2025-09-20 02:07:15,502 [INFO] MainUpdater:2872 - connection check result : 10 -2025-09-20 02:07:15,502 [INFO] MainUpdater:2872 - connection check result : 10 -2025-09-20 02:07:16,705 [INFO] MicroXplorer:468 - Change Database Path : -2025-09-20 02:07:16,705 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 -2025-09-20 02:07:16,731 [ERROR] ProjectManagerView:395 - -java.lang.NullPointerException: Cannot invoke "javax.swing.JTextField.getText()" because the return value of "java.util.List.get(int)" is null - at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab$9.caretUpdate(ProjectChoiceTab.java:2706) ~[filemanager.jar:?] - at javax.swing.text.JTextComponent.fireCaretUpdate(JTextComponent.java:408) ~[?:?] - at javax.swing.text.JTextComponent$MutableCaretEvent.fire(JTextComponent.java:4484) ~[?:?] - at javax.swing.text.JTextComponent$MutableCaretEvent.stateChanged(JTextComponent.java:4506) ~[?:?] - at javax.swing.text.DefaultCaret.fireStateChanged(DefaultCaret.java:857) ~[?:?] - at javax.swing.text.DefaultCaret.changeCaretPosition(DefaultCaret.java:1343) ~[?:?] - at javax.swing.text.DefaultCaret.handleSetDot(DefaultCaret.java:1242) ~[?:?] - at javax.swing.text.DefaultCaret.setDot(DefaultCaret.java:1223) ~[?:?] - at javax.swing.text.DefaultCaret$Handler.insertUpdate(DefaultCaret.java:1819) ~[?:?] - at javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:227) ~[?:?] - at javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:781) ~[?:?] - at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:740) ~[?:?] - at javax.swing.text.PlainDocument.insertString(PlainDocument.java:131) ~[?:?] - at javax.swing.text.AbstractDocument.replace(AbstractDocument.java:699) ~[?:?] - at javax.swing.text.JTextComponent.setText(JTextComponent.java:1725) ~[?:?] - at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.createHeapStackFields(ProjectChoiceTab.java:993) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.buildLinkSettingsPanel(ProjectChoiceTab.java:3813) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.defineWindowsFields(ProjectChoiceTab.java:1987) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.updateSettings(ProjectChoiceTab.java:558) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.projectmanager.gui.ProjectSettingsPanel.UpdateDialog(ProjectSettingsPanel.java:247) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.projectmanager.ProjectManagerView.propertyChange(ProjectManagerView.java:392) ~[filemanager.jar:?] - at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:343) ~[?:?] - at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:335) ~[?:?] - at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:268) ~[?:?] - at com.st.microxplorer.util.MXPropertyChangeSupport.firePropertyChange(MXPropertyChangeSupport.java:54) ~[STM32CubeMX.jar:?] - at com.st.microxplorer.mxsystem.MxSystem.closeConfig(MxSystem.java:899) ~[STM32CubeMX.jar:?] - at com.st.microxplorer.maingui.MainPanel.closeConfig(MainPanel.java:792) ~[STM32CubeMX.jar:?] - at com.st.microxplorer.plugins.filemanager.engine.OpenFileManager.loadConfigurationFile(OpenFileManager.java:288) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.filemanager.engine.MainFileManager.userLoadConfig(MainFileManager.java:364) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.filemanager.engine.MainFileManager.userLoadConfig(MainFileManager.java:342) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.filemanager.FileManagerView.getSpecificTask(FileManagerView.java:264) ~[filemanager.jar:?] - at com.st.stm32cube.common.mx.editor.CubeMxEditor.getMxTabbedPaneInstance(CubeMxEditor.java:1198) ~[com.st.stm32cube.common.mx_6.15.0.202507011659/:?] - at com.st.stm32cube.common.mx.editor.CubeMxEditor$12$1.createSwingComponent(CubeMxEditor.java:1068) ~[com.st.stm32cube.common.mx_6.15.0.202507011659/:?] - at com.st.stm32cube.common.mx.oss.core.awtswtbridge.EmbeddedSwingComposite.doComponentCreation(EmbeddedSwingComposite.java:492) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?] - at com.st.stm32cube.common.mx.oss.core.awtswtbridge.EmbeddedSwingComposite$4.run(EmbeddedSwingComposite.java:291) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?] - at com.st.stm32cube.common.mx.oss.core.awtswtbridge.AwtEnvironment$2.run(AwtEnvironment.java:166) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?] - at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) ~[?:?] - at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) ~[?:?] - at java.awt.EventQueue$4.run(EventQueue.java:720) ~[?:?] - at java.awt.EventQueue$4.run(EventQueue.java:714) ~[?:?] - at java.security.AccessController.doPrivileged(AccessController.java:400) ~[?:?] - at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) ~[?:?] - at java.awt.EventQueue.dispatchEvent(EventQueue.java:742) ~[?:?] - at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) ~[?:?] - at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) ~[?:?] - at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) ~[?:?] - at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) ~[?:?] - at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) ~[?:?] - at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) ~[?:?] -2025-09-20 02:07:16,742 [WARN] ThirdParty:871 - waiting for thirdparty lock release [close project] -2025-09-20 02:07:16,743 [INFO] ThirdParty:873 - entering critical section [close project] -2025-09-20 02:07:16,743 [INFO] ThirdParty:883 - exiting critical section [close project] -2025-09-20 02:07:16,747 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) -2025-09-20 02:07:16,779 [WARN] IpParametersView:155 - Warning: This peripheral hasn't parameters -2025-09-20 02:07:16,806 [WARN] MainPanel:289 -
Warning: This peripheral has no parameters to be configured
-2025-09-20 02:07:16,824 [INFO] UtilMem:75 - Begin LoadConfig() Used Memory: 937710736 Bytes (1073741824) -2025-09-20 02:07:16,826 [INFO] MicroXplorer:468 - Change Database Path : -2025-09-20 02:07:16,826 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 -2025-09-20 02:07:16,826 [INFO] OpenFileManager:355 - Change cursor -2025-09-20 02:07:16,844 [INFO] Mcu:2029 - Initializing MCU STM32F429ZITx STM32F429ZITx STM32F429ZIT6 -2025-09-20 02:07:20,064 [INFO] Context:786 - Trying to add GPIOservice into a context which must be forbidden -2025-09-20 02:07:20,970 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) Pin98 (VP_RIF_VS_RIF1) cannot be retrieved for this MCU -2025-09-20 02:07:21,028 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS, mode=CMSIS_V1, owner=FREERTOS -2025-09-20 02:07:21,029 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS2, mode=CMSIS_V2, owner=FREERTOS -2025-09-20 02:07:21,029 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V1, owner=FREERTOS -2025-09-20 02:07:21,029 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V2, owner=FREERTOS -2025-09-20 02:07:21,029 [WARN] ModelIntegratedComponent:184 - Missing modes for component STMicroelectronics:FreeRTOS:0.0.1:STMicroelectronics:RTOS:FreeRTOS:Core:::10.2.0: -2025-09-20 02:07:21,044 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,045 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,046 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,046 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,046 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,046 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,046 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,046 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,046 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,046 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,046 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,046 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,048 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,048 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,048 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,048 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,048 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,048 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,048 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,048 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,048 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,048 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,049 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:07:21,049 [WARN] ModelPack:524 - Component already loaded: STMicroelectronics:HAL Drivers:0.0.0:STMicroelectronics:Device:STMicro_Driver:XSPI:HAL::0.0.1:HAL_XSPI -2025-09-20 02:07:21,238 [INFO] ThirdPartyModel:298 - Start build external matchings -2025-09-20 02:07:22,430 [INFO] ThirdPartyModel:316 - End build external matchings -2025-09-20 02:07:22,458 [INFO] RtosManager:1018 - Current active RTOS is FREERTOS [Cortex-M4NS] -2025-09-20 02:07:22,473 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:07:22,474 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Invalid parameter (FamilyName) -2025-09-20 02:07:22,475 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Parameter (RTCHSEDivFreq_Value) has invalid value (4000000) -2025-09-20 02:07:22,781 [INFO] UtilMem:75 - End LoadConfig() Used Memory: 898155800 Bytes (1073741824) -2025-09-20 02:07:22,800 [WARN] ThirdParty:833 - waiting for thirdparty lock release [change project] -2025-09-20 02:07:22,800 [INFO] ThirdParty:835 - entering critical section [change project] -2025-09-20 02:07:22,801 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-PM33A1 1.0.0 -2025-09-20 02:07:22,801 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USBPD 4.1 -2025-09-20 02:07:22,801 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC9 1.0.0 -2025-09-20 02:07:22,801 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 2.0.0 -2025-09-20 02:07:22,801 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENVWB1 1.4.0 -2025-09-20 02:07:22,801 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F4 1.1.0 -2025-09-20 02:07:22,801 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics LIBJPEG 8.0.0 -2025-09-20 02:07:22,801 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-ASTRA1 2.0.2 -2025-09-20 02:07:22,801 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSL 5.8.2 -2025-09-20 02:07:22,802 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE1 7.1.0 -2025-09-20 02:07:22,802 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Avnet-IotConnect X-CUBE-IoTC-DA16k-PMOD 1.0.0 -2025-09-20 02:07:22,802 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SMBUS 2.1.0 -2025-09-20 02:07:22,802 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfMQTT 1.19.2 -2025-09-20 02:07:22,802 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 3.0.0 -2025-09-20 02:07:22,802 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ISPU 2.1.0 -2025-09-20 02:07:22,803 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-EEPRMA1 5.2.0 -2025-09-20 02:07:22,803 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLEMGR 4.1.0 -2025-09-20 02:07:22,803 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WB 2.0.0 -2025-09-20 02:07:22,803 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST60 1.0.0 -2025-09-20 02:07:22,803 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-GNSS1 7.0.1 -2025-09-20 02:07:22,803 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC12 1.0.0 -2025-09-20 02:07:22,803 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F7 1.1.0 -2025-09-20 02:07:22,804 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L5 2.0.0 -2025-09-20 02:07:22,804 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOUCHGFX 4.25.0 -2025-09-20 02:07:22,804 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 2.0.0 -2025-09-20 02:07:22,804 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC6 3.1.0 -2025-09-20 02:07:22,804 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :quantropi X-CUBE-qispace-sdk-base 2.1.0 -2025-09-20 02:07:22,804 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FreeRTOS 0.0.1 -2025-09-20 02:07:22,804 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G0 1.1.0 -2025-09-20 02:07:22,805 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SAFEA1 1.2.2 -2025-09-20 02:07:22,805 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC4 3.0.0 -2025-09-20 02:07:22,805 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SUBG2 5.0.0 -2025-09-20 02:07:22,805 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7RS 1.1.0 -2025-09-20 02:07:22,805 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics STM32_WPAN 1.0.0 -2025-09-20 02:07:22,805 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :EmbeddedOffice I-CUBE-FS-RTOS 1.0.1 -2025-09-20 02:07:22,805 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.0.3 -2025-09-20 02:07:22,805 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :WES I-CUBE-Cesium 1.4.0 -2025-09-20 02:07:22,805 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Cesanta I-CUBE-Mongoose 7.13.0 -2025-09-20 02:07:22,805 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 1.0.0 -2025-09-20 02:07:22,806 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Infineon AIROC-Wi-Fi-Bluetooth-STM32 1.7.1 -2025-09-20 02:07:22,806 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G4 2.0.0 -2025-09-20 02:07:22,806 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-WB05N 2.0.0 -2025-09-20 02:07:22,806 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.1.0 -2025-09-20 02:07:22,806 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.3.0 -2025-09-20 02:07:22,806 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfTPM 3.8.0 -2025-09-20 02:07:22,806 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7 3.4.0 -2025-09-20 02:07:22,806 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DISPLAY 3.0.0 -2025-09-20 02:07:22,806 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSH 1.4.20 -2025-09-20 02:07:22,807 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC7 2.0.0 -2025-09-20 02:07:22,807 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TCPP 4.2.0 -2025-09-20 02:07:22,807 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :RealThread X-CUBE-RT-Thread_Nano 4.1.1 -2025-09-20 02:07:22,807 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-SIGFOX1 3.2.0 -2025-09-20 02:07:22,807 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC10 1.0.0 -2025-09-20 02:07:22,807 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-FREERTOS 1.3.1 -2025-09-20 02:07:22,807 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics HAL Drivers 0.0.0 -2025-09-20 02:07:22,807 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.16.2 -2025-09-20 02:07:22,807 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-IPS 3.1.0 -2025-09-20 02:07:22,808 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALS 1.0.2 -2025-09-20 02:07:22,808 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :emotas I-CUBE-CANOPEN 1.3.0 -2025-09-20 02:07:22,808 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.14.1 -2025-09-20 02:07:22,808 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :ITTIA_DB I-CUBE-ITTIADB 8.9.0 -2025-09-20 02:07:22,808 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-STSE01 1.0.0 -2025-09-20 02:07:22,808 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :portGmbH I-Cube-SoM-uGOAL 1.1.0 -2025-09-20 02:07:22,809 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST67W61 1.0.0 -2025-09-20 02:07:22,809 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STBOX1 2.1.0 -2025-09-20 02:07:22,809 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AI 10.2.0 -2025-09-20 02:07:22,809 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STAIOTCFT 1.0.0 -2025-09-20 02:07:22,809 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 1.0.0 -2025-09-20 02:07:22,809 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-SMARTAG2 1.2.0 -2025-09-20 02:07:22,809 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-FLIGHT1 5.1.0 -2025-09-20 02:07:22,810 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WL 2.0.0 -2025-09-20 02:07:22,810 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :SEGGER I-CUBE-embOS 1.3.1 -2025-09-20 02:07:22,810 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALGOBUILD 1.4.0 -2025-09-20 02:07:22,810 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DPower 1.3.0 -2025-09-20 02:07:22,810 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-MEMS1 11.3.0 -2025-09-20 02:07:22,810 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENV1 5.0.0 -2025-09-20 02:07:22,810 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 1.0.0 -2025-09-20 02:07:22,810 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L4 2.0.0 -2025-09-20 02:07:22,810 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 0.0.2 -2025-09-20 02:07:22,810 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.1.2 -2025-09-20 02:07:22,811 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SFXS2LP1 4.0.0 -2025-09-20 02:07:22,811 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE2 3.3.0 -2025-09-20 02:07:22,811 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOF1 3.4.3 -2025-09-20 02:07:22,811 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.2.0 -2025-09-20 02:07:22,811 [INFO] ThirdParty:841 - exiting critical section [change project] -2025-09-20 02:07:23,397 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) -2025-09-20 02:07:23,398 [INFO] PinOutPanel:1589 - setPackage(STM32F429ZITx,LQFP144) -2025-09-20 02:07:23,916 [INFO] UtilMem:75 - Before build in PCC Used Memory: 644194520 Bytes (1073741824) -2025-09-20 02:07:24,500 [INFO] UtilMem:75 - After build in PCC Used Memory: 692955352 Bytes (1073741824) -2025-09-20 02:07:24,513 [INFO] ApiDbMcu:532 - Load IP Config File for FREERTOS -2025-09-20 02:07:24,528 [INFO] ApiDbMcu:532 - Load IP Config File for USB_HOST -2025-09-20 02:07:24,615 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,615 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,615 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,615 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,616 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,616 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,617 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,617 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,617 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,618 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,618 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,619 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,619 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,620 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,620 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,621 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,621 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,621 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,622 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,623 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,624 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,624 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,625 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,626 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,627 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,628 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,628 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,629 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,630 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,631 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,631 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,632 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,633 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,633 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,633 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,634 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,634 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,635 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,635 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,636 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,636 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,636 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,636 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,637 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,637 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,637 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,637 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,638 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,638 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,638 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,638 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,639 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,639 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,640 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,641 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,642 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,643 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,644 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,645 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,646 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,647 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,649 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,650 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,652 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,654 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,656 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:07:24,663 [INFO] ApiDbMcu:532 - Load IP Config File for PDM2PCM -2025-09-20 02:07:24,701 [WARN] FreeRTOS:1023 - Null or empty value: should not occur! (nothing added to the table) -2025-09-20 02:07:24,921 [INFO] CADModel:165 - CPN selected for project levelSTM32F429ZIT6 -2025-09-20 02:07:24,921 [INFO] CADModel:114 - Register for checkConnection events -2025-09-20 02:07:24,927 [INFO] RtosManager:728 - Active RTOS found at IOC load: FREERTOS [Cortex-M4NS] -2025-09-20 02:07:25,036 [INFO] OpenFileManager:386 - Restore cursor -2025-09-20 02:07:25,566 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:08:35,466 [INFO] WebAppUi:1100 - Web application message: WebGL: CONTEXT_LOST_WEBGL: loseContext: context lost -2025-09-20 02:08:35,470 [INFO] WebAppUi:1100 - Web application message: THREE.WebGLRenderer: Context Lost. -2025-09-20 02:09:08,705 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:09:09,025 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:09:09,282 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:09:21,020 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:09:21,201 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:09:21,348 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:09:31,550 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:09:31,837 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:09:32,083 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:17:31,086 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:18:24,367 [INFO] UtilMem:75 - End SaveConfig() Used Memory: 444424424 Bytes (940572672) -2025-09-20 02:18:27,273 [INFO] UtilMem:75 - End SaveConfig() Used Memory: 467920792 Bytes (940572672) -2025-09-20 02:18:33,675 [INFO] UtilMem:75 - End SaveConfig() Used Memory: 520875928 Bytes (940572672) -2025-09-20 02:18:52,676 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USB_OTG_HS -2025-09-20 02:18:52,676 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: SPI -2025-09-20 02:18:52,676 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: FREERTOS -2025-09-20 02:18:52,676 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: TIM1_8 -2025-09-20 02:18:52,676 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: LTDC -2025-09-20 02:18:52,676 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: SYS -2025-09-20 02:18:52,676 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: RCC -2025-09-20 02:18:52,676 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: CRC -2025-09-20 02:18:52,676 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: I2C -2025-09-20 02:18:52,676 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: NVIC -2025-09-20 02:18:52,677 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USB_HOST -2025-09-20 02:18:52,677 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: DMA2D -2025-09-20 02:18:52,677 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USART -2025-09-20 02:18:52,677 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: FMC -2025-09-20 02:18:52,678 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: GPIO -2025-09-20 02:18:52,679 [INFO] CodeGenerator:892 - code generatio: config db path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db/ -2025-09-20 02:18:52,697 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:18:53,170 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/license.tmp_save -2025-09-20 02:18:53,831 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/license.tmp -2025-09-20 02:18:54,250 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/gpio.tmp_save -2025-09-20 02:18:54,610 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/gpio.tmp -2025-09-20 02:18:55,142 [WARN] IPConfigManager:3238 - Warning: the RefConfig PWREx_EnableUSBVoltageDetector is not available in your config.xml file -2025-09-20 02:18:55,151 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_vars.tmp_save -2025-09-20 02:18:55,324 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_vars.tmp -2025-09-20 02:18:55,329 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_inc.tmp_save -2025-09-20 02:18:55,483 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_inc.tmp -2025-09-20 02:18:55,488 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_HalInit.tmp_save -2025-09-20 02:18:55,690 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_HalInit.tmp -2025-09-20 02:18:55,693 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_Msp.tmp_save -2025-09-20 02:18:55,917 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_Msp.tmp -2025-09-20 02:18:58,853 [INFO] Middleware:1452 - No code input for Bsp Dependency -2025-09-20 02:18:58,862 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_inc.tmp_save -2025-09-20 02:18:58,999 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_inc.tmp -2025-09-20 02:18:59,003 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_vars.tmp_save -2025-09-20 02:18:59,150 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_vars.tmp -2025-09-20 02:18:59,156 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_pfp.tmp_save -2025-09-20 02:18:59,304 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_pfp.tmp -2025-09-20 02:18:59,307 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_obj_creat.tmp_save -2025-09-20 02:18:59,459 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_obj_creat.tmp -2025-09-20 02:18:59,463 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_kernelStart.tmp_save -2025-09-20 02:18:59,629 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_kernelStart.tmp -2025-09-20 02:18:59,635 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_default_thread.tmp_save -2025-09-20 02:18:59,768 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_default_thread.tmp -2025-09-20 02:18:59,773 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_threads.tmp_save -2025-09-20 02:18:59,903 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_threads.tmp -2025-09-20 02:18:59,946 [INFO] Middleware:1452 - No code input for Bsp Dependency -2025-09-20 02:18:59,951 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_inc.tmp_save -2025-09-20 02:19:00,070 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_inc.tmp -2025-09-20 02:19:00,072 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_vars.tmp_save -2025-09-20 02:19:00,183 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_vars.tmp -2025-09-20 02:19:00,187 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_pfp.tmp_save -2025-09-20 02:19:00,294 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_pfp.tmp -2025-09-20 02:19:00,297 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_obj_creat.tmp_save -2025-09-20 02:19:00,444 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_obj_creat.tmp -2025-09-20 02:19:00,446 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_kernelStart.tmp_save -2025-09-20 02:19:00,549 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_kernelStart.tmp -2025-09-20 02:19:00,553 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_default_thread.tmp_save -2025-09-20 02:19:00,663 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_default_thread.tmp -2025-09-20 02:19:00,664 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_threads.tmp_save -2025-09-20 02:19:00,763 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_threads.tmp -2025-09-20 02:19:00,768 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Inc/FreeRTOSConfig.h_save -2025-09-20 02:19:00,903 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Inc/FreeRTOSConfig.h -2025-09-20 02:19:00,906 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Src/freertos.c_save -2025-09-20 02:19:01,027 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Src/freertos.c -2025-09-20 02:19:01,038 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_HC.tmp_save -2025-09-20 02:19:01,161 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_HC.tmp -2025-09-20 02:19:01,164 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_GV.tmp_save -2025-09-20 02:19:01,275 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_GV.tmp -2025-09-20 02:19:01,278 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_MSP.tmp_save -2025-09-20 02:19:01,486 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_MSP.tmp -2025-09-20 02:19:01,531 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/USB_HOST/App/usb_host.c_save -2025-09-20 02:19:01,754 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/USB_HOST/App/usb_host.c -2025-09-20 02:19:01,758 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/USB_HOST/App/usb_host.h_save -2025-09-20 02:19:01,894 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/USB_HOST/App/usb_host.h -2025-09-20 02:19:01,896 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_conf.h_save -2025-09-20 02:19:02,050 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_conf.h -2025-09-20 02:19:02,053 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_conf.c_save -2025-09-20 02:19:02,196 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_conf.c -2025-09-20 02:19:02,199 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_platform.c_save -2025-09-20 02:19:02,341 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_platform.c -2025-09-20 02:19:02,343 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_platform.h_save -2025-09-20 02:19:02,470 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_platform.h -2025-09-20 02:19:02,490 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Src/stm32f4xx_it.c_save -2025-09-20 02:19:02,641 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Src/stm32f4xx_it.c -2025-09-20 02:19:02,643 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Inc/stm32f4xx_it.h_save -2025-09-20 02:19:02,810 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Inc/stm32f4xx_it.h -2025-09-20 02:19:02,815 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_HC.tmp_save -2025-09-20 02:19:02,947 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_HC.tmp -2025-09-20 02:19:02,949 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_GV.tmp_save -2025-09-20 02:19:03,042 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_GV.tmp -2025-09-20 02:19:03,043 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_MSP.tmp_save -2025-09-20 02:19:03,178 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_MSP.tmp -2025-09-20 02:19:03,203 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Src/stm32f4xx_hal_msp.c_save -2025-09-20 02:19:03,413 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Src/stm32f4xx_hal_msp.c -2025-09-20 02:19:03,416 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/system.tmp_save -2025-09-20 02:19:03,558 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/system.tmp -2025-09-20 02:19:03,579 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Src/stm32f4xx_hal_timebase_tim.c_save -2025-09-20 02:19:03,711 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Src/stm32f4xx_hal_timebase_tim.c -2025-09-20 02:19:03,720 [INFO] CodeEngine:321 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Inc/stm32f4xx_hal_conf.h_save -2025-09-20 02:19:03,876 [INFO] CodeEngine:345 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Inc/stm32f4xx_hal_conf.h -2025-09-20 02:19:03,954 [INFO] ApiDbMcu:532 - Load IP Config File for CRC -2025-09-20 02:19:03,959 [INFO] ApiDbMcu:532 - Load IP Config File for DMA2D -2025-09-20 02:19:03,977 [INFO] ApiDbMcu:532 - Load IP Config File for FMC -2025-09-20 02:19:03,984 [INFO] ApiDbMcu:532 - Load IP Config File for I2C3 -2025-09-20 02:19:03,990 [INFO] ApiDbMcu:532 - Load IP Config File for LTDC -2025-09-20 02:19:03,995 [INFO] ApiDbMcu:532 - Load IP Config File for SPI5 -2025-09-20 02:19:04,025 [INFO] ApiDbMcu:532 - Load IP Config File for TIM1 -2025-09-20 02:19:04,033 [INFO] ApiDbMcu:532 - Load IP Config File for USART1 -2025-09-20 02:19:04,043 [INFO] ApiDbMcu:532 - Load IP Config File for RCC -2025-09-20 02:19:04,057 [WARN] IPConfigManager:3811 - IP not found : TIM -2025-09-20 02:19:04,058 [WARN] CodeGenerator:4259 - IP not found : null -2025-09-20 02:19:04,073 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Inc/main.h_save -2025-09-20 02:19:04,311 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Inc/main.h -2025-09-20 02:19:04,314 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Src/main.c_save -2025-09-20 02:19:04,708 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Src/main.c -2025-09-20 02:19:05,315 [INFO] ProjectBuilder:3606 - Time for Copy HAL[1] : 108mS. -2025-09-20 02:19:05,334 [INFO] ProjectBuilder:5216 - Project Generator version: 4.7.0-B52 -2025-09-20 02:19:05,518 [INFO] ConfigFileManager:1595 - The Die is : DIE419 -2025-09-20 02:19:05,525 [INFO] ApiDbMcu:532 - Load IP Config File for FATFS -2025-09-20 02:19:05,529 [INFO] ApiDbMcu:532 - Load IP Config File for LIBJPEG -2025-09-20 02:19:05,554 [INFO] ApiDbMcu:532 - Load IP Config File for LWIP -2025-09-20 02:19:05,564 [INFO] ApiDbMcu:532 - Load IP Config File for MBEDTLS -2025-09-20 02:19:05,577 [INFO] ApiDbMcu:532 - Load IP Config File for USB_DEVICE -2025-09-20 02:19:09,852 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] -2025-09-20 02:19:11,507 [INFO] ProjectBuilder:5496 - Time for Generating toolchain IDE Files: 6172mS. -2025-09-20 02:19:11,508 [INFO] ProjectBuilder:3463 - Time for Copy CMSIS : 0mS. -2025-09-20 02:19:11,511 [INFO] ProjectBuilder:3463 - Time for Copy CMSIS : 0mS. -2025-09-20 02:22:38,224 [INFO] MainUpdater:2872 - connection check result : 10 -2025-09-20 02:22:38,225 [INFO] MainUpdater:2872 - connection check result : 10 -2025-09-20 02:22:38,280 [INFO] MicroXplorer:468 - Change Database Path : -2025-09-20 02:22:38,280 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 -2025-09-20 02:22:38,300 [ERROR] ProjectManagerView:395 - -java.lang.NullPointerException: Cannot invoke "javax.swing.JTextField.getText()" because the return value of "java.util.List.get(int)" is null - at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab$9.caretUpdate(ProjectChoiceTab.java:2706) ~[filemanager.jar:?] - at javax.swing.text.JTextComponent.fireCaretUpdate(JTextComponent.java:408) ~[?:?] - at javax.swing.text.JTextComponent$MutableCaretEvent.fire(JTextComponent.java:4484) ~[?:?] - at javax.swing.text.JTextComponent$MutableCaretEvent.stateChanged(JTextComponent.java:4506) ~[?:?] - at javax.swing.text.DefaultCaret.fireStateChanged(DefaultCaret.java:857) ~[?:?] - at javax.swing.text.DefaultCaret.changeCaretPosition(DefaultCaret.java:1343) ~[?:?] - at javax.swing.text.DefaultCaret.handleSetDot(DefaultCaret.java:1242) ~[?:?] - at javax.swing.text.DefaultCaret.setDot(DefaultCaret.java:1223) ~[?:?] - at javax.swing.text.DefaultCaret$Handler.insertUpdate(DefaultCaret.java:1819) ~[?:?] - at javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:227) ~[?:?] - at javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:781) ~[?:?] - at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:740) ~[?:?] - at javax.swing.text.PlainDocument.insertString(PlainDocument.java:131) ~[?:?] - at javax.swing.text.AbstractDocument.replace(AbstractDocument.java:699) ~[?:?] - at javax.swing.text.JTextComponent.setText(JTextComponent.java:1725) ~[?:?] - at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.createHeapStackFields(ProjectChoiceTab.java:993) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.buildLinkSettingsPanel(ProjectChoiceTab.java:3813) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.defineWindowsFields(ProjectChoiceTab.java:1987) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.updateSettings(ProjectChoiceTab.java:558) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.projectmanager.gui.ProjectSettingsPanel.UpdateDialog(ProjectSettingsPanel.java:247) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.projectmanager.ProjectManagerView.propertyChange(ProjectManagerView.java:392) ~[filemanager.jar:?] - at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:343) ~[?:?] - at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:335) ~[?:?] - at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:268) ~[?:?] - at com.st.microxplorer.util.MXPropertyChangeSupport.firePropertyChange(MXPropertyChangeSupport.java:54) ~[STM32CubeMX.jar:?] - at com.st.microxplorer.mxsystem.MxSystem.closeConfig(MxSystem.java:899) ~[STM32CubeMX.jar:?] - at com.st.microxplorer.maingui.MainPanel.closeConfig(MainPanel.java:792) ~[STM32CubeMX.jar:?] - at com.st.microxplorer.plugins.filemanager.engine.OpenFileManager.loadConfigurationFile(OpenFileManager.java:288) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.filemanager.engine.MainFileManager.userLoadConfig(MainFileManager.java:364) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.filemanager.engine.MainFileManager.userLoadConfig(MainFileManager.java:342) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.filemanager.FileManagerView.getSpecificTask(FileManagerView.java:264) ~[filemanager.jar:?] - at com.st.stm32cube.common.mx.editor.CubeMxEditor.getMxTabbedPaneInstance(CubeMxEditor.java:1198) ~[com.st.stm32cube.common.mx_6.15.0.202507011659/:?] - at com.st.stm32cube.common.mx.editor.CubeMxEditor$12$1.createSwingComponent(CubeMxEditor.java:1068) ~[com.st.stm32cube.common.mx_6.15.0.202507011659/:?] - at com.st.stm32cube.common.mx.oss.core.awtswtbridge.EmbeddedSwingComposite.doComponentCreation(EmbeddedSwingComposite.java:492) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?] - at com.st.stm32cube.common.mx.oss.core.awtswtbridge.EmbeddedSwingComposite$4.run(EmbeddedSwingComposite.java:291) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?] - at com.st.stm32cube.common.mx.oss.core.awtswtbridge.AwtEnvironment$2.run(AwtEnvironment.java:166) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?] - at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) ~[?:?] - at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) ~[?:?] - at java.awt.EventQueue$4.run(EventQueue.java:720) ~[?:?] - at java.awt.EventQueue$4.run(EventQueue.java:714) ~[?:?] - at java.security.AccessController.doPrivileged(AccessController.java:400) ~[?:?] - at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) ~[?:?] - at java.awt.EventQueue.dispatchEvent(EventQueue.java:742) ~[?:?] - at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) ~[?:?] - at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) ~[?:?] - at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) ~[?:?] - at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) ~[?:?] - at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) ~[?:?] - at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) ~[?:?] -2025-09-20 02:22:38,301 [WARN] ThirdParty:871 - waiting for thirdparty lock release [close project] -2025-09-20 02:22:38,302 [INFO] ThirdParty:873 - entering critical section [close project] -2025-09-20 02:22:38,302 [INFO] ThirdParty:883 - exiting critical section [close project] -2025-09-20 02:22:38,304 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) -2025-09-20 02:22:38,311 [WARN] IpParametersView:155 - Warning: This peripheral hasn't parameters -2025-09-20 02:22:38,315 [WARN] MainPanel:289 -
Warning: This peripheral has no parameters to be configured
-2025-09-20 02:22:38,317 [INFO] UtilMem:75 - Begin LoadConfig() Used Memory: 563928608 Bytes (940572672) -2025-09-20 02:22:38,318 [INFO] MicroXplorer:468 - Change Database Path : -2025-09-20 02:22:38,318 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 -2025-09-20 02:22:38,318 [INFO] OpenFileManager:355 - Change cursor -2025-09-20 02:22:38,342 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) -2025-09-20 02:22:38,352 [INFO] Mcu:2029 - Initializing MCU STM32F429ZITx STM32F429ZITx STM32F429ZIT6 -2025-09-20 02:22:39,587 [INFO] Context:786 - Trying to add GPIOservice into a context which must be forbidden -2025-09-20 02:22:40,873 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) Pin101 (VP_RIF_VS_RIF1) cannot be retrieved for this MCU -2025-09-20 02:22:40,958 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS, mode=CMSIS_V1, owner=FREERTOS -2025-09-20 02:22:40,958 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS2, mode=CMSIS_V2, owner=FREERTOS -2025-09-20 02:22:40,959 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V1, owner=FREERTOS -2025-09-20 02:22:40,959 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V2, owner=FREERTOS -2025-09-20 02:22:40,959 [WARN] ModelIntegratedComponent:184 - Missing modes for component STMicroelectronics:FreeRTOS:0.0.1:STMicroelectronics:RTOS:FreeRTOS:Core:::10.2.0: -2025-09-20 02:22:40,996 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,997 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,997 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,997 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,997 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,997 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,997 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,997 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,997 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,999 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,999 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,999 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,999 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,999 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,999 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,999 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,999 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,999 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:40,999 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:41,000 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:41,000 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:41,000 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:41,000 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:41,000 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:22:41,000 [WARN] ModelPack:524 - Component already loaded: STMicroelectronics:HAL Drivers:0.0.0:STMicroelectronics:Device:STMicro_Driver:XSPI:HAL::0.0.1:HAL_XSPI -2025-09-20 02:22:41,217 [INFO] ThirdPartyModel:298 - Start build external matchings -2025-09-20 02:22:42,424 [INFO] ThirdPartyModel:316 - End build external matchings -2025-09-20 02:22:42,449 [INFO] RtosManager:1018 - Current active RTOS is FREERTOS [Cortex-M4NS] -2025-09-20 02:22:42,460 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:22:42,461 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Invalid parameter (FamilyName) -2025-09-20 02:22:42,461 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Parameter (RTCHSEDivFreq_Value) has invalid value (4000000) -2025-09-20 02:22:42,744 [INFO] UtilMem:75 - End LoadConfig() Used Memory: 527279784 Bytes (979369984) -2025-09-20 02:22:42,761 [WARN] ThirdParty:833 - waiting for thirdparty lock release [change project] -2025-09-20 02:22:42,762 [INFO] ThirdParty:835 - entering critical section [change project] -2025-09-20 02:22:42,762 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-PM33A1 1.0.0 -2025-09-20 02:22:42,762 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USBPD 4.1 -2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC9 1.0.0 -2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 2.0.0 -2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENVWB1 1.4.0 -2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F4 1.1.0 -2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics LIBJPEG 8.0.0 -2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-ASTRA1 2.0.2 -2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSL 5.8.2 -2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE1 7.1.0 -2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Avnet-IotConnect X-CUBE-IoTC-DA16k-PMOD 1.0.0 -2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SMBUS 2.1.0 -2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfMQTT 1.19.2 -2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 3.0.0 -2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ISPU 2.1.0 -2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-EEPRMA1 5.2.0 -2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLEMGR 4.1.0 -2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WB 2.0.0 -2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST60 1.0.0 -2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-GNSS1 7.0.1 -2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC12 1.0.0 -2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F7 1.1.0 -2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L5 2.0.0 -2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOUCHGFX 4.25.0 -2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 2.0.0 -2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC6 3.1.0 -2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :quantropi X-CUBE-qispace-sdk-base 2.1.0 -2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FreeRTOS 0.0.1 -2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G0 1.1.0 -2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SAFEA1 1.2.2 -2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC4 3.0.0 -2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SUBG2 5.0.0 -2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7RS 1.1.0 -2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics STM32_WPAN 1.0.0 -2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :EmbeddedOffice I-CUBE-FS-RTOS 1.0.1 -2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.0.3 -2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :WES I-CUBE-Cesium 1.4.0 -2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Cesanta I-CUBE-Mongoose 7.13.0 -2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 1.0.0 -2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Infineon AIROC-Wi-Fi-Bluetooth-STM32 1.7.1 -2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G4 2.0.0 -2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-WB05N 2.0.0 -2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.1.0 -2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.3.0 -2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfTPM 3.8.0 -2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7 3.4.0 -2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DISPLAY 3.0.0 -2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSH 1.4.20 -2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC7 2.0.0 -2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TCPP 4.2.0 -2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :RealThread X-CUBE-RT-Thread_Nano 4.1.1 -2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-SIGFOX1 3.2.0 -2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC10 1.0.0 -2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-FREERTOS 1.3.1 -2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics HAL Drivers 0.0.0 -2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.16.2 -2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-IPS 3.1.0 -2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALS 1.0.2 -2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :emotas I-CUBE-CANOPEN 1.3.0 -2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.14.1 -2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :ITTIA_DB I-CUBE-ITTIADB 8.9.0 -2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-STSE01 1.0.0 -2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :portGmbH I-Cube-SoM-uGOAL 1.1.0 -2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST67W61 1.0.0 -2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STBOX1 2.1.0 -2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AI 10.2.0 -2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STAIOTCFT 1.0.0 -2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 1.0.0 -2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-SMARTAG2 1.2.0 -2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-FLIGHT1 5.1.0 -2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WL 2.0.0 -2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :SEGGER I-CUBE-embOS 1.3.1 -2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALGOBUILD 1.4.0 -2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DPower 1.3.0 -2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-MEMS1 11.3.0 -2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENV1 5.0.0 -2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 1.0.0 -2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L4 2.0.0 -2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 0.0.2 -2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.1.2 -2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SFXS2LP1 4.0.0 -2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE2 3.3.0 -2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOF1 3.4.3 -2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.2.0 -2025-09-20 02:22:42,768 [INFO] ThirdParty:841 - exiting critical section [change project] -2025-09-20 02:22:43,346 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) -2025-09-20 02:22:43,346 [INFO] PinOutPanel:1589 - setPackage(STM32F429ZITx,LQFP144) -2025-09-20 02:22:44,091 [INFO] UtilMem:75 - Before build in PCC Used Memory: 376833528 Bytes (979369984) -2025-09-20 02:22:45,385 [INFO] UtilMem:75 - After build in PCC Used Memory: 428735992 Bytes (979369984) -2025-09-20 02:22:45,396 [INFO] ApiDbMcu:532 - Load IP Config File for FREERTOS -2025-09-20 02:22:45,402 [INFO] ApiDbMcu:532 - Load IP Config File for USB_HOST -2025-09-20 02:22:45,468 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,468 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,469 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,469 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,469 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,469 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,470 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,470 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,471 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,471 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,472 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,472 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,472 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,473 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,473 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,474 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,474 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,474 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,474 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,474 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,475 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,476 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,476 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,477 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,477 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,478 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,478 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,479 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,480 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,480 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,481 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,482 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,483 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,483 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,484 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,484 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,485 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,486 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,487 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,487 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,488 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,488 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,489 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,489 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,489 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,490 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,490 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,490 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,490 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,490 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,491 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,491 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,491 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,492 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,493 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,494 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,495 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,496 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,497 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,498 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,499 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,500 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,501 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,502 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,504 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,505 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:22:45,509 [INFO] ApiDbMcu:532 - Load IP Config File for PDM2PCM -2025-09-20 02:22:45,535 [WARN] FreeRTOS:1023 - Null or empty value: should not occur! (nothing added to the table) -2025-09-20 02:22:45,673 [INFO] CADModel:165 - CPN selected for project levelSTM32F429ZIT6 -2025-09-20 02:22:45,673 [INFO] CADModel:114 - Register for checkConnection events -2025-09-20 02:22:45,677 [INFO] RtosManager:728 - Active RTOS found at IOC load: FREERTOS [Cortex-M4NS] -2025-09-20 02:22:45,725 [INFO] OpenFileManager:386 - Restore cursor -2025-09-20 02:22:46,028 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:28:22,703 [INFO] MainUpdater:2872 - connection check result : 10 -2025-09-20 02:28:22,704 [INFO] MainUpdater:2872 - connection check result : 10 -2025-09-20 02:28:22,768 [INFO] MicroXplorer:468 - Change Database Path : -2025-09-20 02:28:22,769 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 -2025-09-20 02:28:22,792 [ERROR] ProjectManagerView:395 - -java.lang.NullPointerException: Cannot invoke "javax.swing.JTextField.getText()" because the return value of "java.util.List.get(int)" is null - at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab$9.caretUpdate(ProjectChoiceTab.java:2706) ~[filemanager.jar:?] - at javax.swing.text.JTextComponent.fireCaretUpdate(JTextComponent.java:408) ~[?:?] - at javax.swing.text.JTextComponent$MutableCaretEvent.fire(JTextComponent.java:4484) ~[?:?] - at javax.swing.text.JTextComponent$MutableCaretEvent.stateChanged(JTextComponent.java:4506) ~[?:?] - at javax.swing.text.DefaultCaret.fireStateChanged(DefaultCaret.java:857) ~[?:?] - at javax.swing.text.DefaultCaret.changeCaretPosition(DefaultCaret.java:1343) ~[?:?] - at javax.swing.text.DefaultCaret.handleSetDot(DefaultCaret.java:1242) ~[?:?] - at javax.swing.text.DefaultCaret.setDot(DefaultCaret.java:1223) ~[?:?] - at javax.swing.text.DefaultCaret$Handler.insertUpdate(DefaultCaret.java:1819) ~[?:?] - at javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:227) ~[?:?] - at javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:781) ~[?:?] - at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:740) ~[?:?] - at javax.swing.text.PlainDocument.insertString(PlainDocument.java:131) ~[?:?] - at javax.swing.text.AbstractDocument.replace(AbstractDocument.java:699) ~[?:?] - at javax.swing.text.JTextComponent.setText(JTextComponent.java:1725) ~[?:?] - at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.createHeapStackFields(ProjectChoiceTab.java:993) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.buildLinkSettingsPanel(ProjectChoiceTab.java:3813) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.defineWindowsFields(ProjectChoiceTab.java:1987) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.updateSettings(ProjectChoiceTab.java:558) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.projectmanager.gui.ProjectSettingsPanel.UpdateDialog(ProjectSettingsPanel.java:247) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.projectmanager.ProjectManagerView.propertyChange(ProjectManagerView.java:392) ~[filemanager.jar:?] - at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:343) ~[?:?] - at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:335) ~[?:?] - at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:268) ~[?:?] - at com.st.microxplorer.util.MXPropertyChangeSupport.firePropertyChange(MXPropertyChangeSupport.java:54) ~[STM32CubeMX.jar:?] - at com.st.microxplorer.mxsystem.MxSystem.closeConfig(MxSystem.java:899) ~[STM32CubeMX.jar:?] - at com.st.microxplorer.maingui.MainPanel.closeConfig(MainPanel.java:792) ~[STM32CubeMX.jar:?] - at com.st.microxplorer.plugins.filemanager.engine.OpenFileManager.loadConfigurationFile(OpenFileManager.java:288) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.filemanager.engine.MainFileManager.userLoadConfig(MainFileManager.java:364) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.filemanager.engine.MainFileManager.userLoadConfig(MainFileManager.java:342) ~[filemanager.jar:?] - at com.st.microxplorer.plugins.filemanager.FileManagerView.getSpecificTask(FileManagerView.java:264) ~[filemanager.jar:?] - at com.st.stm32cube.common.mx.editor.CubeMxEditor.getMxTabbedPaneInstance(CubeMxEditor.java:1198) ~[com.st.stm32cube.common.mx_6.15.0.202507011659/:?] - at com.st.stm32cube.common.mx.editor.CubeMxEditor$12$1.createSwingComponent(CubeMxEditor.java:1068) ~[com.st.stm32cube.common.mx_6.15.0.202507011659/:?] - at com.st.stm32cube.common.mx.oss.core.awtswtbridge.EmbeddedSwingComposite.doComponentCreation(EmbeddedSwingComposite.java:492) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?] - at com.st.stm32cube.common.mx.oss.core.awtswtbridge.EmbeddedSwingComposite$4.run(EmbeddedSwingComposite.java:291) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?] - at com.st.stm32cube.common.mx.oss.core.awtswtbridge.AwtEnvironment$2.run(AwtEnvironment.java:166) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?] - at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) ~[?:?] - at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) ~[?:?] - at java.awt.EventQueue$4.run(EventQueue.java:720) ~[?:?] - at java.awt.EventQueue$4.run(EventQueue.java:714) ~[?:?] - at java.security.AccessController.doPrivileged(AccessController.java:400) ~[?:?] - at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) ~[?:?] - at java.awt.EventQueue.dispatchEvent(EventQueue.java:742) ~[?:?] - at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) ~[?:?] - at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) ~[?:?] - at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) ~[?:?] - at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) ~[?:?] - at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) ~[?:?] - at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) ~[?:?] -2025-09-20 02:28:22,794 [WARN] ThirdParty:871 - waiting for thirdparty lock release [close project] -2025-09-20 02:28:22,794 [INFO] ThirdParty:873 - entering critical section [close project] -2025-09-20 02:28:22,794 [INFO] ThirdParty:883 - exiting critical section [close project] -2025-09-20 02:28:22,798 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) -2025-09-20 02:28:22,814 [WARN] IpParametersView:155 - Warning: This peripheral hasn't parameters -2025-09-20 02:28:22,819 [WARN] MainPanel:289 -
Warning: This peripheral has no parameters to be configured
-2025-09-20 02:28:22,823 [INFO] UtilMem:75 - Begin LoadConfig() Used Memory: 337899672 Bytes (979369984) -2025-09-20 02:28:22,824 [INFO] MicroXplorer:468 - Change Database Path : -2025-09-20 02:28:22,824 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 -2025-09-20 02:28:22,824 [INFO] OpenFileManager:355 - Change cursor -2025-09-20 02:28:22,838 [INFO] Mcu:2029 - Initializing MCU STM32F429ZITx STM32F429ZITx STM32F429ZIT6 -2025-09-20 02:28:25,913 [INFO] Context:786 - Trying to add GPIOservice into a context which must be forbidden -2025-09-20 02:28:26,609 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) Pin101 (VP_RIF_VS_RIF1) cannot be retrieved for this MCU -2025-09-20 02:28:26,664 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS, mode=CMSIS_V1, owner=FREERTOS -2025-09-20 02:28:26,664 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS2, mode=CMSIS_V2, owner=FREERTOS -2025-09-20 02:28:26,664 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V1, owner=FREERTOS -2025-09-20 02:28:26,664 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V2, owner=FREERTOS -2025-09-20 02:28:26,664 [WARN] ModelIntegratedComponent:184 - Missing modes for component STMicroelectronics:FreeRTOS:0.0.1:STMicroelectronics:RTOS:FreeRTOS:Core:::10.2.0: -2025-09-20 02:28:26,680 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null -2025-09-20 02:28:26,682 [WARN] ModelPack:524 - Component already loaded: STMicroelectronics:HAL Drivers:0.0.0:STMicroelectronics:Device:STMicro_Driver:XSPI:HAL::0.0.1:HAL_XSPI -2025-09-20 02:28:26,868 [INFO] ThirdPartyModel:298 - Start build external matchings -2025-09-20 02:28:27,937 [INFO] ThirdPartyModel:316 - End build external matchings -2025-09-20 02:28:27,957 [INFO] RtosManager:1018 - Current active RTOS is FREERTOS [Cortex-M4NS] -2025-09-20 02:28:27,967 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 02:28:27,967 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Invalid parameter (FamilyName) -2025-09-20 02:28:27,968 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Parameter (RTCHSEDivFreq_Value) has invalid value (4000000) -2025-09-20 02:28:28,283 [INFO] UtilMem:75 - End LoadConfig() Used Memory: 744418984 Bytes (979369984) -2025-09-20 02:28:28,308 [WARN] ThirdParty:833 - waiting for thirdparty lock release [change project] -2025-09-20 02:28:28,309 [INFO] ThirdParty:835 - entering critical section [change project] -2025-09-20 02:28:28,309 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-PM33A1 1.0.0 -2025-09-20 02:28:28,309 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USBPD 4.1 -2025-09-20 02:28:28,309 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC9 1.0.0 -2025-09-20 02:28:28,309 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 2.0.0 -2025-09-20 02:28:28,309 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENVWB1 1.4.0 -2025-09-20 02:28:28,309 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F4 1.1.0 -2025-09-20 02:28:28,309 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics LIBJPEG 8.0.0 -2025-09-20 02:28:28,309 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-ASTRA1 2.0.2 -2025-09-20 02:28:28,309 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSL 5.8.2 -2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE1 7.1.0 -2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Avnet-IotConnect X-CUBE-IoTC-DA16k-PMOD 1.0.0 -2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SMBUS 2.1.0 -2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfMQTT 1.19.2 -2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 3.0.0 -2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ISPU 2.1.0 -2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-EEPRMA1 5.2.0 -2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLEMGR 4.1.0 -2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WB 2.0.0 -2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST60 1.0.0 -2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-GNSS1 7.0.1 -2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC12 1.0.0 -2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F7 1.1.0 -2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L5 2.0.0 -2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOUCHGFX 4.25.0 -2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 2.0.0 -2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC6 3.1.0 -2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :quantropi X-CUBE-qispace-sdk-base 2.1.0 -2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FreeRTOS 0.0.1 -2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G0 1.1.0 -2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SAFEA1 1.2.2 -2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC4 3.0.0 -2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SUBG2 5.0.0 -2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7RS 1.1.0 -2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics STM32_WPAN 1.0.0 -2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :EmbeddedOffice I-CUBE-FS-RTOS 1.0.1 -2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.0.3 -2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :WES I-CUBE-Cesium 1.4.0 -2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Cesanta I-CUBE-Mongoose 7.13.0 -2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 1.0.0 -2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Infineon AIROC-Wi-Fi-Bluetooth-STM32 1.7.1 -2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G4 2.0.0 -2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-WB05N 2.0.0 -2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.1.0 -2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.3.0 -2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfTPM 3.8.0 -2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7 3.4.0 -2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DISPLAY 3.0.0 -2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSH 1.4.20 -2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC7 2.0.0 -2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TCPP 4.2.0 -2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :RealThread X-CUBE-RT-Thread_Nano 4.1.1 -2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-SIGFOX1 3.2.0 -2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC10 1.0.0 -2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-FREERTOS 1.3.1 -2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics HAL Drivers 0.0.0 -2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.16.2 -2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-IPS 3.1.0 -2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALS 1.0.2 -2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :emotas I-CUBE-CANOPEN 1.3.0 -2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.14.1 -2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :ITTIA_DB I-CUBE-ITTIADB 8.9.0 -2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-STSE01 1.0.0 -2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :portGmbH I-Cube-SoM-uGOAL 1.1.0 -2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST67W61 1.0.0 -2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STBOX1 2.1.0 -2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AI 10.2.0 -2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STAIOTCFT 1.0.0 -2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 1.0.0 -2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-SMARTAG2 1.2.0 -2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-FLIGHT1 5.1.0 -2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WL 2.0.0 -2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :SEGGER I-CUBE-embOS 1.3.1 -2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALGOBUILD 1.4.0 -2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DPower 1.3.0 -2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-MEMS1 11.3.0 -2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENV1 5.0.0 -2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 1.0.0 -2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L4 2.0.0 -2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 0.0.2 -2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.1.2 -2025-09-20 02:28:28,315 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SFXS2LP1 4.0.0 -2025-09-20 02:28:28,315 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE2 3.3.0 -2025-09-20 02:28:28,315 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOF1 3.4.3 -2025-09-20 02:28:28,315 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.2.0 -2025-09-20 02:28:28,316 [INFO] ThirdParty:841 - exiting critical section [change project] -2025-09-20 02:28:29,200 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) -2025-09-20 02:28:29,202 [INFO] PinOutPanel:1589 - setPackage(STM32F429ZITx,LQFP144) -2025-09-20 02:28:30,463 [INFO] UtilMem:75 - Before build in PCC Used Memory: 388951720 Bytes (979369984) -2025-09-20 02:28:30,890 [INFO] UtilMem:75 - After build in PCC Used Memory: 437186216 Bytes (979369984) -2025-09-20 02:28:30,900 [INFO] ApiDbMcu:532 - Load IP Config File for FREERTOS -2025-09-20 02:28:30,907 [INFO] ApiDbMcu:532 - Load IP Config File for USB_HOST -2025-09-20 02:28:30,978 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,979 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,979 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,979 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,979 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,980 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,981 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,981 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,982 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,983 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,983 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,984 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,984 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,984 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,985 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,986 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,986 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,987 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,987 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,987 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,988 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,988 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,989 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,990 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,990 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,991 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,991 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,992 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,993 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,994 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,995 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,996 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,997 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,997 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,997 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,998 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,998 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,998 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,999 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,999 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:30,999 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,000 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,000 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,000 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,000 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,000 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,001 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,001 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,001 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,001 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,001 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,002 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,002 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,003 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,004 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,005 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,006 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,007 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,009 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,010 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,011 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,012 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,014 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,016 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,018 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,020 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 02:28:31,026 [INFO] ApiDbMcu:532 - Load IP Config File for PDM2PCM -2025-09-20 02:28:31,050 [WARN] FreeRTOS:1023 - Null or empty value: should not occur! (nothing added to the table) -2025-09-20 02:28:31,326 [INFO] CADModel:165 - CPN selected for project levelSTM32F429ZIT6 -2025-09-20 02:28:31,326 [INFO] CADModel:114 - Register for checkConnection events -2025-09-20 02:28:31,331 [INFO] RtosManager:728 - Active RTOS found at IOC load: FREERTOS [Cortex-M4NS] -2025-09-20 02:28:31,385 [INFO] OpenFileManager:386 - Restore cursor -2025-09-20 02:28:31,548 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. -2025-09-20 03:16:22,966 [INFO] WebAppUi:305 - Path where cad_preferences.json is located /home/ja/.stm32cubeide/ -2025-09-20 03:16:22,966 [INFO] WebAppUi:306 - Updating consent from JSON file -2025-09-20 03:16:23,086 [INFO] WebApp:403 - JxBrowser engine has been closed -2025-09-20 03:16:23,086 [INFO] WebAppUi:504 - JxBrowser engine has been closed -2025-09-20 03:16:23,087 [INFO] WebAppUi:541 - Close the Jxbrowser engine manually -2025-09-20 03:16:23,814 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] -2025-09-20 14:37:35,081 [INFO] Activator:176 - - - -2025-09-20 14:37:35,083 [INFO] Activator:177 - !SESSION log4j initialized -2025-09-20 14:37:41,375 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] -2025-09-20 14:37:44,360 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 -2025-09-20 14:37:44,399 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ -2025-09-20 14:37:44,399 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ -2025-09-20 14:37:44,400 [WARN] ApiDb:259 - Overriding images path with different value: => /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ -2025-09-20 14:37:44,410 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ -2025-09-20 14:37:44,413 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ -2025-09-20 14:37:44,418 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ -2025-09-20 14:37:44,662 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) -2025-09-20 14:37:44,768 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ -2025-09-20 14:37:44,768 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ -2025-09-20 14:37:44,769 [INFO] ApiDb:261 - Set plugin images path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ -2025-09-20 14:37:44,769 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 14:37:44,769 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ -2025-09-20 14:37:44,770 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 14:37:44,770 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ -2025-09-20 14:37:44,770 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 14:37:44,770 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 14:37:44,771 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ -2025-09-20 14:37:44,873 [INFO] MainPanel:274 - HeapMemory: 268435456 -2025-09-20 14:37:45,230 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ -2025-09-20 14:37:45,230 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ -2025-09-20 14:37:45,230 [INFO] ApiDb:261 - Set plugin images path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ -2025-09-20 14:37:45,231 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 14:37:45,231 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ -2025-09-20 14:37:45,231 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 14:37:45,231 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ -2025-09-20 14:37:45,232 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 14:37:45,232 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder -2025-09-20 14:37:45,232 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ -2025-09-20 14:37:45,254 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 -2025-09-20 14:37:45,257 [INFO] PluginManage:196 - Search for loadable plugins [exclusion list=, ] -2025-09-20 14:37:45,259 [INFO] PluginManage:310 - Check plugin analytics -2025-09-20 14:37:45,664 [INFO] AnalyticsPlugin:253 - Accepted Software Licenses: STM32CubeMX.6.15.0 -2025-09-20 14:37:45,665 [INFO] AnalyticsPlugin:255 - Accepted CMSIS Pack Licenses: -2025-09-20 14:37:45,665 [INFO] AnalyticsPlugin:257 - Accepted Firmware Licenses: FW.F4.1.28.0 -2025-09-20 14:37:45,670 [INFO] PluginManage:359 - Loaded plugin analytics (category:tool,tabindex:-1) -2025-09-20 14:37:45,671 [INFO] PluginManage:310 - Check plugin cadmodel -2025-09-20 14:37:45,679 [INFO] CADModel:105 - Init CAD model plugin -2025-09-20 14:37:45,680 [INFO] PluginManage:359 - Loaded plugin cadmodel (category:power,tabindex:5) -2025-09-20 14:37:45,680 [INFO] PluginManage:310 - Check plugin clock -2025-09-20 14:37:45,695 [INFO] PluginManage:359 - Loaded plugin clock (category:base,tabindex:2) -2025-09-20 14:37:45,695 [INFO] PluginManage:310 - Check plugin ddr -2025-09-20 14:37:45,698 [INFO] PluginManage:359 - Loaded plugin ddr (category:tool,tabindex:6) -2025-09-20 14:37:45,698 [INFO] PluginManage:310 - Check plugin filemanager -2025-09-20 14:37:45,910 [INFO] PluginManage:359 - Loaded plugin filemanager (category:base,tabindex:10) -2025-09-20 14:37:45,910 [INFO] PluginManage:310 - Check plugin ipmanager -2025-09-20 14:37:45,918 [INFO] PluginManage:359 - Loaded plugin ipmanager (category:base,tabindex:5) -2025-09-20 14:37:45,918 [INFO] PluginManage:310 - Check plugin lpbam -2025-09-20 14:37:45,933 [INFO] PluginManage:359 - Loaded plugin lpbam (category:base,tabindex:0) -2025-09-20 14:37:45,933 [INFO] PluginManage:310 - Check plugin memorymap -2025-09-20 14:37:45,952 [INFO] PluginManage:359 - Loaded plugin memorymap (category:base,tabindex:4) -2025-09-20 14:37:45,952 [INFO] PluginManage:310 - Check plugin pinoutandconfiguration -2025-09-20 14:37:45,962 [INFO] PluginManage:359 - Loaded plugin pinoutandconfiguration (category:base,tabindex:1) -2025-09-20 14:37:45,963 [INFO] PluginManage:310 - Check plugin pinoutconfig -2025-09-20 14:37:46,099 [WARN] SupportedApi:132 - Cannot load RTOS API schema: s4s-elt-must-match.1: The content of 'definitions' must match (annotation?, (simpleType | complexType)?, (unique | key | keyref)*)). A problem was found starting at: attribute. -2025-09-20 14:37:46,289 [INFO] PluginManage:359 - Loaded plugin pinoutconfig (category:base,tabindex:0) -2025-09-20 14:37:46,290 [INFO] PluginManage:310 - Check plugin power -2025-09-20 14:37:46,305 [INFO] PluginManage:359 - Loaded plugin power (category:power,tabindex:4) -2025-09-20 14:37:46,305 [INFO] PluginManage:310 - Check plugin projectmanager -2025-09-20 14:37:46,329 [INFO] PluginManage:359 - Loaded plugin projectmanager (category:projectmanager,tabindex:4) -2025-09-20 14:37:46,330 [INFO] PluginManage:310 - Check plugin rif -2025-09-20 14:37:46,342 [INFO] PluginManage:359 - Loaded plugin rif (category:base,tabindex:3) -2025-09-20 14:37:46,342 [INFO] PluginManage:310 - Check plugin thirdparty -2025-09-20 14:37:46,530 [WARN] IntegrityCheckThread:84 - waiting for thirdparty lock release [integrity check] -2025-09-20 14:37:46,531 [INFO] PluginManage:359 - Loaded plugin thirdparty (category:base,tabindex:-1) -2025-09-20 14:37:46,531 [INFO] IntegrityCheckThread:86 - entering critical section [integrity check] -2025-09-20 14:37:46,531 [INFO] PluginManage:310 - Check plugin tools -2025-09-20 14:37:46,531 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [1/15] -2025-09-20 14:37:46,535 [INFO] PluginManage:359 - Loaded plugin tools (category:base,tabindex:7) -2025-09-20 14:37:46,536 [INFO] PluginManage:310 - Check plugin tutovideos -2025-09-20 14:37:46,809 [INFO] PluginManage:359 - Loaded plugin tutovideos (category:base,tabindex:-1) -2025-09-20 14:37:46,809 [INFO] PluginManage:310 - Check plugin updater -2025-09-20 14:37:46,836 [INFO] PluginManage:359 - Loaded plugin updater (category:base,tabindex:12) -2025-09-20 14:37:46,836 [INFO] PluginManage:310 - Check plugin userauth -2025-09-20 14:37:46,841 [INFO] UserAuth:118 - Init User Auth plugin -2025-09-20 14:37:46,842 [INFO] PluginManage:359 - Loaded plugin userauth (category:base,tabindex:14) -2025-09-20 14:37:46,842 [INFO] PluginManage:283 - PluginManage : Loaded plugins [18] -2025-09-20 14:37:47,072 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) -2025-09-20 14:37:47,155 [INFO] CADModel:165 - CPN selected for project level -2025-09-20 14:37:47,155 [INFO] CADModel:114 - Register for checkConnection events -2025-09-20 14:37:47,170 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,170 [INFO] PluginManager:220 - loadIPPluginJar : add gtzc -2025-09-20 14:37:47,177 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,177 [INFO] PluginManager:220 - loadIPPluginJar : add usbx -2025-09-20 14:37:47,178 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,179 [INFO] PluginManager:220 - loadIPPluginJar : add fatfs -2025-09-20 14:37:47,182 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,182 [INFO] PluginManager:220 - loadIPPluginJar : add i2c -2025-09-20 14:37:47,184 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,184 [INFO] PluginManager:220 - loadIPPluginJar : add tim -2025-09-20 14:37:47,185 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,186 [INFO] PluginManager:220 - loadIPPluginJar : add quadspi -2025-09-20 14:37:47,189 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,190 [INFO] PluginManager:220 - loadIPPluginJar : add ipddr -2025-09-20 14:37:47,192 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,193 [INFO] PluginManager:220 - loadIPPluginJar : add i2s -2025-09-20 14:37:47,196 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,196 [INFO] PluginManager:220 - loadIPPluginJar : add openamp -2025-09-20 14:37:47,199 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,199 [INFO] PluginManager:220 - loadIPPluginJar : add i3c -2025-09-20 14:37:47,201 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,201 [INFO] PluginManager:220 - loadIPPluginJar : add ucpd -2025-09-20 14:37:47,204 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,204 [INFO] PluginManager:220 - loadIPPluginJar : add cryp -2025-09-20 14:37:47,206 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,206 [INFO] PluginManager:220 - loadIPPluginJar : add comp -2025-09-20 14:37:47,208 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,209 [INFO] PluginManager:220 - loadIPPluginJar : add spi -2025-09-20 14:37:47,212 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,213 [INFO] PluginManager:220 - loadIPPluginJar : add touchsensing -2025-09-20 14:37:47,215 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,216 [INFO] PluginManager:220 - loadIPPluginJar : add can -2025-09-20 14:37:47,218 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,218 [INFO] PluginManager:220 - loadIPPluginJar : add aes -2025-09-20 14:37:47,227 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,227 [INFO] PluginManager:220 - loadIPPluginJar : add adc -2025-09-20 14:37:47,232 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,233 [INFO] PluginManager:220 - loadIPPluginJar : add nvic -2025-09-20 14:37:47,239 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,240 [INFO] PluginManager:220 - loadIPPluginJar : add freertos -2025-09-20 14:37:47,247 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,247 [INFO] PluginManager:220 - loadIPPluginJar : add dma -2025-09-20 14:37:47,251 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,251 [INFO] PluginManager:220 - loadIPPluginJar : add resmgrutility -2025-09-20 14:37:47,254 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,254 [INFO] PluginManager:220 - loadIPPluginJar : add pdm2pcm -2025-09-20 14:37:47,257 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,257 [INFO] PluginManager:220 - loadIPPluginJar : add hash -2025-09-20 14:37:47,259 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,260 [INFO] PluginManager:220 - loadIPPluginJar : add dfsdm -2025-09-20 14:37:47,261 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,262 [INFO] PluginManager:220 - loadIPPluginJar : add radio -2025-09-20 14:37:47,269 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,273 [INFO] PluginManager:220 - loadIPPluginJar : add plateformsettings -2025-09-20 14:37:47,279 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,279 [INFO] PluginManager:220 - loadIPPluginJar : add gic -2025-09-20 14:37:47,281 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,281 [INFO] PluginManager:220 - loadIPPluginJar : add ltdc -2025-09-20 14:37:47,283 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,283 [INFO] PluginManager:220 - loadIPPluginJar : add tracer_emb -2025-09-20 14:37:47,286 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,286 [INFO] PluginManager:220 - loadIPPluginJar : add lorawan -2025-09-20 14:37:47,288 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,288 [INFO] PluginManager:220 - loadIPPluginJar : add tsc -2025-09-20 14:37:47,290 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,290 [INFO] PluginManager:220 - loadIPPluginJar : add ts -2025-09-20 14:37:47,292 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,293 [INFO] PluginManager:220 - loadIPPluginJar : add gfxmmu -2025-09-20 14:37:47,296 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,296 [INFO] PluginManager:220 - loadIPPluginJar : add dma3 -2025-09-20 14:37:47,299 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,299 [INFO] PluginManager:220 - loadIPPluginJar : add ddr_ctrl_phy -2025-09-20 14:37:47,301 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,301 [INFO] PluginManager:220 - loadIPPluginJar : add genericplugin -2025-09-20 14:37:47,304 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,304 [INFO] PluginManager:220 - loadIPPluginJar : add opamp -2025-09-20 14:37:47,312 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,312 [INFO] PluginManager:220 - loadIPPluginJar : add stm32_wpan -2025-09-20 14:37:47,316 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,316 [INFO] PluginManager:220 - loadIPPluginJar : add usart -2025-09-20 14:37:47,319 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,319 [INFO] PluginManager:220 - loadIPPluginJar : add sai -2025-09-20 14:37:47,328 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,328 [INFO] PluginManager:220 - loadIPPluginJar : add linkedlist -2025-09-20 14:37:47,331 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,331 [INFO] PluginManager:220 - loadIPPluginJar : add extmemmanager -2025-09-20 14:37:47,336 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,336 [INFO] PluginManager:220 - loadIPPluginJar : add fmc -2025-09-20 14:37:47,341 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,341 [INFO] PluginManager:220 - loadIPPluginJar : add gpio -2025-09-20 14:37:47,348 [INFO] IPUIPlugin:80 - create IPUIPlugin -2025-09-20 14:37:47,348 [INFO] PluginManager:220 - loadIPPluginJar : add mdma -2025-09-20 14:37:47,458 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 14:37:47,494 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) -2025-09-20 14:37:47,511 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) -2025-09-20 14:37:47,520 [INFO] CADModel:165 - CPN selected for project level -2025-09-20 14:37:47,520 [INFO] CADModel:114 - Register for checkConnection events -2025-09-20 14:37:47,520 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 14:37:47,520 [ERROR] CADModel:125 - Updater not yet initialized, retry later -2025-09-20 14:37:47,705 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 14:37:47,707 [INFO] CADModel:165 - CPN selected for project level -2025-09-20 14:37:47,707 [INFO] CADModel:114 - Register for checkConnection events -2025-09-20 14:37:47,708 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 14:37:47,708 [ERROR] CADModel:125 - Updater not yet initialized, retry later -2025-09-20 14:37:47,712 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 14:37:47,871 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 14:37:47,877 [INFO] DbMcusAds:53 - JSON generation date=Tue Jul 08 03:14:23 CDT 2025 (1751962463524) -2025-09-20 14:37:47,877 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 14:37:47,963 [WARN] DetailPanel:346 - Failed to get advertising image, set to default -2025-09-20 14:37:48,092 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 14:37:48,094 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 14:37:48,095 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 14:37:48,095 [WARN] DetailPanel:346 - Failed to get advertising image, set to default -2025-09-20 14:37:48,096 [FATAL] Updater:351 - Updater called before beeing initialized -2025-09-20 14:37:48,148 [ERROR] Updater:1198 - MainUpdater not yet initialized. External WinMGr cannot be set. -2025-09-20 14:37:48,150 [INFO] Updater:1134 - Updater Version found : 6.15.0 -2025-09-20 14:37:48,176 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 -2025-09-20 14:37:49,186 [INFO] MainUpdater:2872 - connection check result : 10 -2025-09-20 14:37:49,186 [INFO] MainUpdater:3604 - Updater definition file requires update -2025-09-20 14:37:49,186 [INFO] MainUpdater:289 - Updater Check For Update Now. -2025-09-20 14:37:49,187 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 -2025-09-20 14:37:49,193 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated) -2025-09-20 14:37:49,193 [INFO] UserAuth:487 - Internet connection configuration mode: 1 -2025-09-20 14:37:49,208 [INFO] JxBrowserEngine:152 - Initiate JxBrowser Engine with user profile folder -2025-09-20 14:37:49,383 [INFO] ServerAccessManage:452 - Complete download http(s) 200 -2025-09-20 14:37:49,384 [INFO] ServerAccessManage:509 - Download File updaters.zip -2025-09-20 14:37:49,532 [WARN] MainUpdater:1193 - Updater busy. Cannot search thirdparties -2025-09-20 14:37:49,532 [INFO] ThirdPartyUpdaterWithRetryManager:96 - Updater plugin is busy. [1/15] -2025-09-20 14:37:49,930 [INFO] FileExtend:248 - Unzip File : updaters.zip -2025-09-20 14:37:49,931 [INFO] FileExtend:263 - Standard Zip Deflate -2025-09-20 14:37:50,040 [INFO] WebApp:169 - Instantiating new browser for Auth -2025-09-20 14:37:50,566 [INFO] ServerAccessManage:452 - Complete download http(s) 200 -2025-09-20 14:37:50,567 [INFO] ServerAccessManage:509 - Download File PacksControlFlags.xml -2025-09-20 14:37:50,832 [INFO] ServerAccessManage:452 - Complete download http(s) 200 -2025-09-20 14:37:50,832 [INFO] ServerAccessManage:509 - Download File cubemx.pidx -2025-09-20 14:37:51,200 [INFO] LoadServerUpdatesThread:375 - End of LoadServerUpdate Thread -2025-09-20 14:37:51,510 [INFO] CheckServerUpdateThread:120 - End of CheckServer Thread -2025-09-20 14:37:51,831 [INFO] WebApp:463 - Apply proxy settings -2025-09-20 14:37:51,833 [INFO] WebApp:548 - Chromium requires no authentication -2025-09-20 14:37:51,852 [INFO] WebApp:491 - Direct internet connection detected -2025-09-20 14:37:51,884 [INFO] WebApp:900 - Register for checkConnection events -2025-09-20 14:37:51,884 [INFO] WebApp:463 - Apply proxy settings -2025-09-20 14:37:51,884 [INFO] WebApp:548 - Chromium requires no authentication -2025-09-20 14:37:51,885 [INFO] WebApp:491 - Direct internet connection detected -2025-09-20 14:37:52,172 [INFO] WebApp:225 - Starting web application -2025-09-20 14:37:52,172 [INFO] WebApp:593 - Web application path used /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659/db/plugins/mcufinder/reactClient1/index.html -2025-09-20 14:37:52,350 [INFO] UserAuth:487 - Internet connection configuration mode: 1 -2025-09-20 14:37:52,869 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENVWB1.1.4.0 -2025-09-20 14:37:52,889 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-ASTRA1.2.0.2 -2025-09-20 14:37:52,904 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SMBUS.2.1.0 -2025-09-20 14:37:52,921 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST60.1.0.0 -2025-09-20 14:37:53,007 [INFO] WebApp:191 - Connection restablished -2025-09-20 14:37:53,058 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F7.1.1.0 -2025-09-20 14:37:53,110 [WARN] PackLoader:240 - Cannot read IP mode file for WES.I-CUBE-Cesium.1.4.0 -2025-09-20 14:37:53,191 [WARN] PackLoader:240 - Cannot read IP mode file for Infineon.AIROC-Wi-Fi-Bluetooth-STM32.1.7.1 -2025-09-20 14:37:53,284 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7.3.4.0 -2025-09-20 14:37:53,309 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DISPLAY.3.0.0 -2025-09-20 14:37:53,346 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC10.1.0.0 -2025-09-20 14:37:53,363 [WARN] PackLoader:240 - Cannot read IP mode file for emotas.I-CUBE-CANOPEN.1.3.0 -2025-09-20 14:37:53,387 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.1.0 -2025-09-20 14:37:53,411 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-SMARTAG2.1.2.0 -2025-09-20 14:37:53,433 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-FLIGHT1.5.1.0 -2025-09-20 14:37:53,460 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null -2025-09-20 14:37:53,464 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null -2025-09-20 14:37:53,465 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null -2025-09-20 14:37:53,465 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null -2025-09-20 14:37:53,470 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null -2025-09-20 14:37:53,483 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WL.2.0.0 -2025-09-20 14:37:53,496 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENV1.5.0.0 -2025-09-20 14:37:53,512 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE2.3.3.0 -2025-09-20 14:37:53,527 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC9.1.0.0 -2025-09-20 14:37:53,549 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSL.5.8.2 -2025-09-20 14:37:53,561 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE1.7.1.0 -2025-09-20 14:37:53,570 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfMQTT.1.19.2 -2025-09-20 14:37:53,582 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-EEPRMA1.5.2.0 -2025-09-20 14:37:53,629 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G0.1.1.0 -2025-09-20 14:37:53,646 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SAFEA1.1.2.2 -2025-09-20 14:37:53,655 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC4.3.0.0 -2025-09-20 14:37:53,675 [WARN] PackLoader:240 - Cannot read IP mode file for EmbeddedOffice.I-CUBE-FS-RTOS.1.0.1 -2025-09-20 14:37:53,687 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-WB05N.2.0.0 -2025-09-20 14:37:53,697 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfTPM.3.8.0 -2025-09-20 14:37:53,717 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TCPP.4.2.0 -2025-09-20 14:37:53,733 [WARN] PackLoader:240 - Cannot read IP mode file for RealThread.X-CUBE-RT-Thread_Nano.4.1.1 -2025-09-20 14:37:53,746 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-SIGFOX1.3.2.0 -2025-09-20 14:37:53,760 [WARN] PackLoader:240 - Cannot read IP mode file for ITTIA_DB.I-CUBE-ITTIADB.8.9.0 -2025-09-20 14:37:53,774 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST67W61.1.0.0 -2025-09-20 14:37:53,786 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.2.0 -2025-09-20 14:37:53,861 [WARN] PackLoader:240 - Cannot read IP mode file for SEGGER.I-CUBE-embOS.1.3.1 -2025-09-20 14:37:53,995 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0 -2025-09-20 14:37:54,180 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-MEMS1.11.3.0 -2025-09-20 14:37:54,522 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-PM33A1.1.0.0 -2025-09-20 14:37:54,573 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F4.1.1.0 -2025-09-20 14:37:54,585 [WARN] PackLoader:240 - Cannot read IP mode file for Avnet-IotConnect.X-CUBE-IoTC-DA16k-PMOD.1.0.0 -2025-09-20 14:37:54,593 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ISPU.2.1.0 -2025-09-20 14:37:54,608 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC12.1.0.0 -2025-09-20 14:37:54,642 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L5.2.0.0 -2025-09-20 14:37:54,659 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC6.3.1.0 -2025-09-20 14:37:54,673 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-FREERTOS.1.3.1 -2025-09-20 14:37:54,683 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STAIOTCFT.1.0.0 -2025-09-20 14:37:54,691 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DPower.1.3.0 -2025-09-20 14:37:54,733 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : LAN8742 Phy interface Condition cause : null -2025-09-20 14:37:54,735 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L4.2.0.0 -2025-09-20 14:37:54,738 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null -2025-09-20 14:37:54,739 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null -2025-09-20 14:37:54,740 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null -2025-09-20 14:37:54,758 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SFXS2LP1.4.0.0 -2025-09-20 14:37:54,788 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.1.0 -2025-09-20 14:37:54,826 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 14:37:54,826 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 14:37:54,832 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WB.2.0.0 -2025-09-20 14:37:54,833 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 14:37:54,834 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 14:37:54,835 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 14:37:54,836 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 14:37:54,836 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null -2025-09-20 14:37:54,847 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-GNSS1.7.0.1 -2025-09-20 14:37:54,855 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOUCHGFX.4.25.0 -2025-09-20 14:37:54,860 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : Cortex-A Device cause : null -2025-09-20 14:37:54,878 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null -2025-09-20 14:37:54,879 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null -2025-09-20 14:37:54,879 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null -2025-09-20 14:37:54,910 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SUBG2.5.0.0 -2025-09-20 14:37:54,966 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7RS.1.1.0 -2025-09-20 14:37:54,983 [WARN] PackLoader:240 - Cannot read IP mode file for Cesanta.I-CUBE-Mongoose.7.13.0 -2025-09-20 14:37:55,019 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G4.2.0.0 -2025-09-20 14:37:55,027 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSH.1.4.20 -2025-09-20 14:37:55,034 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC7.2.0.0 -2025-09-20 14:37:55,067 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-IPS.3.1.0 -2025-09-20 14:37:55,092 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALS.1.0.2 -2025-09-20 14:37:55,124 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-STSE01.1.0.0 -2025-09-20 14:37:55,141 [WARN] PackLoader:240 - Cannot read IP mode file for portGmbH.I-Cube-SoM-uGOAL.1.1.0 -2025-09-20 14:37:55,173 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOF1.3.4.3 -2025-09-20 14:37:55,199 [INFO] ThirdParty:978 - Integrity check success = true -2025-09-20 14:37:55,199 [INFO] IntegrityCheckThread:100 - exiting critical section [integrity check] -2025-09-20 14:37:55,200 [INFO] IntegrityCheckThread:103 - End integrity checks thread +2025-09-21 01:25:27,798 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] diff --git a/.metadata/.ide.log-2025-09-20.log b/.metadata/.ide.log-2025-09-20.log new file mode 100644 index 0000000..9fcc122 --- /dev/null +++ b/.metadata/.ide.log-2025-09-20.log @@ -0,0 +1,2956 @@ +2025-09-20 00:17:48,329 [INFO] Activator:176 - + + +2025-09-20 00:17:48,336 [INFO] Activator:177 - !SESSION log4j initialized +2025-09-20 00:18:00,868 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] +2025-09-20 00:18:04,686 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-09-20 00:18:04,728 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ +2025-09-20 00:18:04,729 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ +2025-09-20 00:18:04,729 [WARN] ApiDb:259 - Overriding images path with different value: => /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ +2025-09-20 00:18:04,742 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 00:18:04,745 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 00:18:04,749 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ +2025-09-20 00:18:05,074 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-09-20 00:18:05,242 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ +2025-09-20 00:18:05,242 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ +2025-09-20 00:18:05,243 [INFO] ApiDb:261 - Set plugin images path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ +2025-09-20 00:18:05,243 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 00:18:05,243 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 00:18:05,244 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 00:18:05,245 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 00:18:05,245 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 00:18:05,245 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 00:18:05,245 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ +2025-09-20 00:18:05,395 [INFO] MainPanel:274 - HeapMemory: 268435456 +2025-09-20 00:18:06,229 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ +2025-09-20 00:18:06,229 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ +2025-09-20 00:18:06,230 [INFO] ApiDb:261 - Set plugin images path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ +2025-09-20 00:18:06,230 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 00:18:06,231 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 00:18:06,231 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 00:18:06,231 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 00:18:06,231 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 00:18:06,231 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 00:18:06,231 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ +2025-09-20 00:18:06,259 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-09-20 00:18:06,262 [INFO] PluginManage:196 - Search for loadable plugins [exclusion list=, ] +2025-09-20 00:18:06,265 [INFO] PluginManage:310 - Check plugin analytics +2025-09-20 00:18:06,791 [INFO] AnalyticsPlugin:253 - Accepted Software Licenses: STM32CubeMX.6.15.0 +2025-09-20 00:18:06,791 [INFO] AnalyticsPlugin:255 - Accepted CMSIS Pack Licenses: +2025-09-20 00:18:06,791 [INFO] AnalyticsPlugin:257 - Accepted Firmware Licenses: FW.F4.1.28.0 +2025-09-20 00:18:06,802 [INFO] PluginManage:359 - Loaded plugin analytics (category:tool,tabindex:-1) +2025-09-20 00:18:06,803 [INFO] PluginManage:310 - Check plugin cadmodel +2025-09-20 00:18:06,812 [INFO] CADModel:105 - Init CAD model plugin +2025-09-20 00:18:06,812 [INFO] PluginManage:359 - Loaded plugin cadmodel (category:power,tabindex:5) +2025-09-20 00:18:06,813 [INFO] PluginManage:310 - Check plugin clock +2025-09-20 00:18:06,835 [INFO] PluginManage:359 - Loaded plugin clock (category:base,tabindex:2) +2025-09-20 00:18:06,835 [INFO] PluginManage:310 - Check plugin ddr +2025-09-20 00:18:06,838 [INFO] PluginManage:359 - Loaded plugin ddr (category:tool,tabindex:6) +2025-09-20 00:18:06,839 [INFO] PluginManage:310 - Check plugin filemanager +2025-09-20 00:18:07,143 [INFO] PluginManage:359 - Loaded plugin filemanager (category:base,tabindex:10) +2025-09-20 00:18:07,143 [INFO] PluginManage:310 - Check plugin ipmanager +2025-09-20 00:18:07,157 [INFO] PluginManage:359 - Loaded plugin ipmanager (category:base,tabindex:5) +2025-09-20 00:18:07,158 [INFO] PluginManage:310 - Check plugin lpbam +2025-09-20 00:18:07,179 [INFO] PluginManage:359 - Loaded plugin lpbam (category:base,tabindex:0) +2025-09-20 00:18:07,179 [INFO] PluginManage:310 - Check plugin memorymap +2025-09-20 00:18:07,206 [INFO] PluginManage:359 - Loaded plugin memorymap (category:base,tabindex:4) +2025-09-20 00:18:07,206 [INFO] PluginManage:310 - Check plugin pinoutandconfiguration +2025-09-20 00:18:07,226 [INFO] PluginManage:359 - Loaded plugin pinoutandconfiguration (category:base,tabindex:1) +2025-09-20 00:18:07,226 [INFO] PluginManage:310 - Check plugin pinoutconfig +2025-09-20 00:18:07,453 [WARN] SupportedApi:132 - Cannot load RTOS API schema: s4s-elt-must-match.1: The content of 'definitions' must match (annotation?, (simpleType | complexType)?, (unique | key | keyref)*)). A problem was found starting at: attribute. +2025-09-20 00:18:07,807 [INFO] PluginManage:359 - Loaded plugin pinoutconfig (category:base,tabindex:0) +2025-09-20 00:18:07,807 [INFO] PluginManage:310 - Check plugin power +2025-09-20 00:18:07,838 [INFO] PluginManage:359 - Loaded plugin power (category:power,tabindex:4) +2025-09-20 00:18:07,839 [INFO] PluginManage:310 - Check plugin projectmanager +2025-09-20 00:18:07,888 [INFO] PluginManage:359 - Loaded plugin projectmanager (category:projectmanager,tabindex:4) +2025-09-20 00:18:07,889 [INFO] PluginManage:310 - Check plugin rif +2025-09-20 00:18:07,912 [INFO] PluginManage:359 - Loaded plugin rif (category:base,tabindex:3) +2025-09-20 00:18:07,913 [INFO] PluginManage:310 - Check plugin thirdparty +2025-09-20 00:18:08,213 [INFO] PluginManage:359 - Loaded plugin thirdparty (category:base,tabindex:-1) +2025-09-20 00:18:08,213 [WARN] IntegrityCheckThread:84 - waiting for thirdparty lock release [integrity check] +2025-09-20 00:18:08,214 [INFO] IntegrityCheckThread:86 - entering critical section [integrity check] +2025-09-20 00:18:08,214 [INFO] PluginManage:310 - Check plugin tools +2025-09-20 00:18:08,215 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [1/15] +2025-09-20 00:18:08,218 [INFO] PluginManage:359 - Loaded plugin tools (category:base,tabindex:7) +2025-09-20 00:18:08,219 [INFO] PluginManage:310 - Check plugin tutovideos +2025-09-20 00:18:08,792 [INFO] PluginManage:359 - Loaded plugin tutovideos (category:base,tabindex:-1) +2025-09-20 00:18:08,792 [INFO] PluginManage:310 - Check plugin updater +2025-09-20 00:18:08,984 [INFO] PluginManage:359 - Loaded plugin updater (category:base,tabindex:12) +2025-09-20 00:18:08,985 [INFO] PluginManage:310 - Check plugin userauth +2025-09-20 00:18:09,002 [INFO] UserAuth:118 - Init User Auth plugin +2025-09-20 00:18:09,005 [INFO] PluginManage:359 - Loaded plugin userauth (category:base,tabindex:14) +2025-09-20 00:18:09,007 [INFO] PluginManage:283 - PluginManage : Loaded plugins [18] +2025-09-20 00:18:09,573 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-09-20 00:18:09,757 [INFO] CADModel:165 - CPN selected for project level +2025-09-20 00:18:09,757 [INFO] CADModel:114 - Register for checkConnection events +2025-09-20 00:18:09,788 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:09,789 [INFO] PluginManager:220 - loadIPPluginJar : add gtzc +2025-09-20 00:18:09,808 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:09,810 [INFO] PluginManager:220 - loadIPPluginJar : add usbx +2025-09-20 00:18:09,814 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:09,815 [INFO] PluginManager:220 - loadIPPluginJar : add fatfs +2025-09-20 00:18:09,822 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:09,822 [INFO] PluginManager:220 - loadIPPluginJar : add i2c +2025-09-20 00:18:09,828 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:09,828 [INFO] PluginManager:220 - loadIPPluginJar : add tim +2025-09-20 00:18:09,834 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:09,834 [INFO] PluginManager:220 - loadIPPluginJar : add quadspi +2025-09-20 00:18:09,850 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:09,853 [INFO] PluginManager:220 - loadIPPluginJar : add ipddr +2025-09-20 00:18:09,867 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:09,870 [INFO] PluginManager:220 - loadIPPluginJar : add i2s +2025-09-20 00:18:09,883 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:09,884 [INFO] PluginManager:220 - loadIPPluginJar : add openamp +2025-09-20 00:18:09,892 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:09,893 [INFO] PluginManager:220 - loadIPPluginJar : add i3c +2025-09-20 00:18:09,897 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:09,897 [INFO] PluginManager:220 - loadIPPluginJar : add ucpd +2025-09-20 00:18:09,903 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:09,903 [INFO] PluginManager:220 - loadIPPluginJar : add cryp +2025-09-20 00:18:09,908 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:09,909 [INFO] PluginManager:220 - loadIPPluginJar : add comp +2025-09-20 00:18:09,916 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:09,917 [INFO] PluginManager:220 - loadIPPluginJar : add spi +2025-09-20 00:18:09,925 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:09,925 [INFO] PluginManager:220 - loadIPPluginJar : add touchsensing +2025-09-20 00:18:09,932 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:09,932 [INFO] PluginManager:220 - loadIPPluginJar : add can +2025-09-20 00:18:09,939 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:09,940 [INFO] PluginManager:220 - loadIPPluginJar : add aes +2025-09-20 00:18:09,978 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:09,979 [INFO] PluginManager:220 - loadIPPluginJar : add adc +2025-09-20 00:18:09,992 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:09,994 [INFO] PluginManager:220 - loadIPPluginJar : add nvic +2025-09-20 00:18:10,018 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,019 [INFO] PluginManager:220 - loadIPPluginJar : add freertos +2025-09-20 00:18:10,049 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,050 [INFO] PluginManager:220 - loadIPPluginJar : add dma +2025-09-20 00:18:10,063 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,066 [INFO] PluginManager:220 - loadIPPluginJar : add resmgrutility +2025-09-20 00:18:10,077 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,077 [INFO] PluginManager:220 - loadIPPluginJar : add pdm2pcm +2025-09-20 00:18:10,089 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,093 [INFO] PluginManager:220 - loadIPPluginJar : add hash +2025-09-20 00:18:10,106 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,107 [INFO] PluginManager:220 - loadIPPluginJar : add dfsdm +2025-09-20 00:18:10,111 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,114 [INFO] PluginManager:220 - loadIPPluginJar : add radio +2025-09-20 00:18:10,136 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,142 [INFO] PluginManager:220 - loadIPPluginJar : add plateformsettings +2025-09-20 00:18:10,157 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,158 [INFO] PluginManager:220 - loadIPPluginJar : add gic +2025-09-20 00:18:10,163 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,163 [INFO] PluginManager:220 - loadIPPluginJar : add ltdc +2025-09-20 00:18:10,168 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,168 [INFO] PluginManager:220 - loadIPPluginJar : add tracer_emb +2025-09-20 00:18:10,174 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,175 [INFO] PluginManager:220 - loadIPPluginJar : add lorawan +2025-09-20 00:18:10,181 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,181 [INFO] PluginManager:220 - loadIPPluginJar : add tsc +2025-09-20 00:18:10,188 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,189 [INFO] PluginManager:220 - loadIPPluginJar : add ts +2025-09-20 00:18:10,194 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,194 [INFO] PluginManager:220 - loadIPPluginJar : add gfxmmu +2025-09-20 00:18:10,201 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,203 [INFO] PluginManager:220 - loadIPPluginJar : add dma3 +2025-09-20 00:18:10,211 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,211 [INFO] PluginManager:220 - loadIPPluginJar : add ddr_ctrl_phy +2025-09-20 00:18:10,216 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,217 [INFO] PluginManager:220 - loadIPPluginJar : add genericplugin +2025-09-20 00:18:10,226 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,227 [INFO] PluginManager:220 - loadIPPluginJar : add opamp +2025-09-20 00:18:10,270 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,271 [INFO] PluginManager:220 - loadIPPluginJar : add stm32_wpan +2025-09-20 00:18:10,281 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,282 [INFO] PluginManager:220 - loadIPPluginJar : add usart +2025-09-20 00:18:10,298 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,298 [INFO] PluginManager:220 - loadIPPluginJar : add sai +2025-09-20 00:18:10,321 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,321 [INFO] PluginManager:220 - loadIPPluginJar : add linkedlist +2025-09-20 00:18:10,328 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,329 [INFO] PluginManager:220 - loadIPPluginJar : add extmemmanager +2025-09-20 00:18:10,347 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,347 [INFO] PluginManager:220 - loadIPPluginJar : add fmc +2025-09-20 00:18:10,364 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,365 [INFO] PluginManager:220 - loadIPPluginJar : add gpio +2025-09-20 00:18:10,390 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 00:18:10,392 [INFO] PluginManager:220 - loadIPPluginJar : add mdma +2025-09-20 00:18:10,627 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 00:18:10,764 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-09-20 00:18:10,813 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-09-20 00:18:10,925 [INFO] CADModel:165 - CPN selected for project level +2025-09-20 00:18:10,926 [INFO] CADModel:114 - Register for checkConnection events +2025-09-20 00:18:10,926 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 00:18:10,927 [ERROR] CADModel:125 - Updater not yet initialized, retry later +2025-09-20 00:18:11,216 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [2/15] +2025-09-20 00:18:11,529 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 00:18:11,558 [INFO] CADModel:165 - CPN selected for project level +2025-09-20 00:18:11,565 [INFO] CADModel:114 - Register for checkConnection events +2025-09-20 00:18:11,566 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 00:18:11,566 [ERROR] CADModel:125 - Updater not yet initialized, retry later +2025-09-20 00:18:11,605 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 00:18:12,162 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 00:18:12,177 [INFO] DbMcusAds:53 - JSON generation date=Tue Jul 08 03:14:23 CDT 2025 (1751962463524) +2025-09-20 00:18:12,177 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 00:18:12,294 [WARN] DetailPanel:346 - Failed to get advertising image, set to default +2025-09-20 00:18:12,540 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 00:18:12,545 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 00:18:12,546 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 00:18:12,546 [WARN] DetailPanel:346 - Failed to get advertising image, set to default +2025-09-20 00:18:12,550 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 00:18:12,670 [ERROR] Updater:1198 - MainUpdater not yet initialized. External WinMGr cannot be set. +2025-09-20 00:18:12,674 [INFO] Updater:1134 - Updater Version found : 6.15.0 +2025-09-20 00:18:12,733 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-09-20 00:18:13,880 [INFO] MainUpdater:2872 - connection check result : 10 +2025-09-20 00:18:13,881 [INFO] MainUpdater:289 - Updater Check For Update Now. +2025-09-20 00:18:13,881 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-09-20 00:18:13,891 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated) +2025-09-20 00:18:13,894 [INFO] UserAuth:487 - Internet connection configuration mode: 1 +2025-09-20 00:18:13,963 [INFO] JxBrowserEngine:152 - Initiate JxBrowser Engine with user profile folder +2025-09-20 00:18:14,221 [WARN] MainUpdater:1193 - Updater busy. Cannot search thirdparties +2025-09-20 00:18:14,222 [INFO] ThirdPartyUpdaterWithRetryManager:96 - Updater plugin is busy. [1/15] +2025-09-20 00:18:14,365 [INFO] CheckServerUpdateThread:120 - End of CheckServer Thread +2025-09-20 00:18:16,311 [INFO] WebApp:169 - Instantiating new browser for Auth +2025-09-20 00:18:17,881 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENVWB1.1.4.0 +2025-09-20 00:18:17,940 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-ASTRA1.2.0.2 +2025-09-20 00:18:17,967 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SMBUS.2.1.0 +2025-09-20 00:18:17,989 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST60.1.0.0 +2025-09-20 00:18:18,194 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F7.1.1.0 +2025-09-20 00:18:18,236 [WARN] PackLoader:240 - Cannot read IP mode file for WES.I-CUBE-Cesium.1.4.0 +2025-09-20 00:18:18,449 [WARN] PackLoader:240 - Cannot read IP mode file for Infineon.AIROC-Wi-Fi-Bluetooth-STM32.1.7.1 +2025-09-20 00:18:18,610 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7.3.4.0 +2025-09-20 00:18:18,654 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DISPLAY.3.0.0 +2025-09-20 00:18:18,710 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC10.1.0.0 +2025-09-20 00:18:18,742 [WARN] PackLoader:240 - Cannot read IP mode file for emotas.I-CUBE-CANOPEN.1.3.0 +2025-09-20 00:18:18,791 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.1.0 +2025-09-20 00:18:18,825 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-SMARTAG2.1.2.0 +2025-09-20 00:18:18,846 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-FLIGHT1.5.1.0 +2025-09-20 00:18:18,923 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-09-20 00:18:18,929 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-09-20 00:18:18,930 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-09-20 00:18:18,931 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-09-20 00:18:18,932 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-09-20 00:18:18,951 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WL.2.0.0 +2025-09-20 00:18:18,968 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENV1.5.0.0 +2025-09-20 00:18:19,000 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE2.3.3.0 +2025-09-20 00:18:19,024 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC9.1.0.0 +2025-09-20 00:18:19,050 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSL.5.8.2 +2025-09-20 00:18:19,071 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE1.7.1.0 +2025-09-20 00:18:19,100 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfMQTT.1.19.2 +2025-09-20 00:18:19,171 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-EEPRMA1.5.2.0 +2025-09-20 00:18:19,290 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G0.1.1.0 +2025-09-20 00:18:19,317 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SAFEA1.1.2.2 +2025-09-20 00:18:19,341 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC4.3.0.0 +2025-09-20 00:18:19,440 [WARN] PackLoader:240 - Cannot read IP mode file for EmbeddedOffice.I-CUBE-FS-RTOS.1.0.1 +2025-09-20 00:18:19,492 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-WB05N.2.0.0 +2025-09-20 00:18:19,572 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfTPM.3.8.0 +2025-09-20 00:18:19,634 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TCPP.4.2.0 +2025-09-20 00:18:19,688 [WARN] PackLoader:240 - Cannot read IP mode file for RealThread.X-CUBE-RT-Thread_Nano.4.1.1 +2025-09-20 00:18:19,714 [INFO] WebApp:463 - Apply proxy settings +2025-09-20 00:18:19,716 [INFO] WebApp:548 - Chromium requires no authentication +2025-09-20 00:18:19,722 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-SIGFOX1.3.2.0 +2025-09-20 00:18:19,765 [WARN] PackLoader:240 - Cannot read IP mode file for ITTIA_DB.I-CUBE-ITTIADB.8.9.0 +2025-09-20 00:18:19,766 [INFO] WebApp:491 - Direct internet connection detected +2025-09-20 00:18:19,798 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST67W61.1.0.0 +2025-09-20 00:18:19,822 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.2.0 +2025-09-20 00:18:19,865 [INFO] WebApp:900 - Register for checkConnection events +2025-09-20 00:18:19,866 [INFO] WebApp:463 - Apply proxy settings +2025-09-20 00:18:19,866 [INFO] WebApp:548 - Chromium requires no authentication +2025-09-20 00:18:19,868 [INFO] WebApp:491 - Direct internet connection detected +2025-09-20 00:18:19,986 [WARN] PackLoader:240 - Cannot read IP mode file for SEGGER.I-CUBE-embOS.1.3.1 +2025-09-20 00:18:20,190 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0 +2025-09-20 00:18:20,440 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-MEMS1.11.3.0 +2025-09-20 00:18:20,500 [INFO] WebApp:225 - Starting web application +2025-09-20 00:18:20,500 [INFO] WebApp:593 - Web application path used /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659/db/plugins/mcufinder/reactClient1/index.html +2025-09-20 00:18:21,099 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-PM33A1.1.0.0 +2025-09-20 00:18:21,116 [INFO] WebApp:191 - Connection restablished +2025-09-20 00:18:21,195 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F4.1.1.0 +2025-09-20 00:18:21,213 [WARN] PackLoader:240 - Cannot read IP mode file for Avnet-IotConnect.X-CUBE-IoTC-DA16k-PMOD.1.0.0 +2025-09-20 00:18:21,223 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ISPU.2.1.0 +2025-09-20 00:18:21,249 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC12.1.0.0 +2025-09-20 00:18:21,325 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L5.2.0.0 +2025-09-20 00:18:21,362 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC6.3.1.0 +2025-09-20 00:18:21,383 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-FREERTOS.1.3.1 +2025-09-20 00:18:21,415 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STAIOTCFT.1.0.0 +2025-09-20 00:18:21,533 [INFO] UserAuth:487 - Internet connection configuration mode: 1 +2025-09-20 00:18:21,548 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DPower.1.3.0 +2025-09-20 00:18:21,751 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-09-20 00:18:21,762 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L4.2.0.0 +2025-09-20 00:18:21,782 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-09-20 00:18:21,783 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-09-20 00:18:21,793 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-09-20 00:18:21,858 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SFXS2LP1.4.0.0 +2025-09-20 00:18:21,999 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.1.0 +2025-09-20 00:18:22,204 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 00:18:22,206 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 00:18:22,230 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WB.2.0.0 +2025-09-20 00:18:22,234 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 00:18:22,237 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 00:18:22,241 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 00:18:22,242 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 00:18:22,242 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 00:18:22,288 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-GNSS1.7.0.1 +2025-09-20 00:18:22,315 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOUCHGFX.4.25.0 +2025-09-20 00:18:22,323 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : Cortex-A Device cause : null +2025-09-20 00:18:22,361 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null +2025-09-20 00:18:22,362 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null +2025-09-20 00:18:22,364 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null +2025-09-20 00:18:22,405 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SUBG2.5.0.0 +2025-09-20 00:18:22,522 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7RS.1.1.0 +2025-09-20 00:18:22,540 [WARN] PackLoader:240 - Cannot read IP mode file for Cesanta.I-CUBE-Mongoose.7.13.0 +2025-09-20 00:18:22,670 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G4.2.0.0 +2025-09-20 00:18:22,686 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSH.1.4.20 +2025-09-20 00:18:22,700 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC7.2.0.0 +2025-09-20 00:18:22,751 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-IPS.3.1.0 +2025-09-20 00:18:22,782 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALS.1.0.2 +2025-09-20 00:18:22,827 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-STSE01.1.0.0 +2025-09-20 00:18:22,857 [WARN] PackLoader:240 - Cannot read IP mode file for portGmbH.I-Cube-SoM-uGOAL.1.1.0 +2025-09-20 00:18:22,909 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOF1.3.4.3 +2025-09-20 00:18:22,981 [INFO] ThirdParty:978 - Integrity check success = true +2025-09-20 00:18:22,983 [INFO] IntegrityCheckThread:100 - exiting critical section [integrity check] +2025-09-20 00:18:22,983 [INFO] IntegrityCheckThread:103 - End integrity checks thread +2025-09-20 00:28:55,985 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] +2025-09-20 02:01:19,323 [INFO] Activator:176 - + + +2025-09-20 02:01:19,326 [INFO] Activator:177 - !SESSION log4j initialized +2025-09-20 02:01:29,979 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] +2025-09-20 02:01:34,491 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-09-20 02:01:34,519 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ +2025-09-20 02:01:34,519 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ +2025-09-20 02:01:34,520 [WARN] ApiDb:259 - Overriding images path with different value: => /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ +2025-09-20 02:01:34,525 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 02:01:34,527 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 02:01:34,530 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ +2025-09-20 02:01:34,757 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-09-20 02:01:34,903 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ +2025-09-20 02:01:34,903 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ +2025-09-20 02:01:34,903 [INFO] ApiDb:261 - Set plugin images path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ +2025-09-20 02:01:34,904 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 02:01:34,904 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 02:01:34,904 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 02:01:34,904 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 02:01:34,904 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 02:01:34,905 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 02:01:34,905 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ +2025-09-20 02:01:35,033 [INFO] MainPanel:274 - HeapMemory: 268435456 +2025-09-20 02:01:35,440 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ +2025-09-20 02:01:35,441 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ +2025-09-20 02:01:35,441 [INFO] ApiDb:261 - Set plugin images path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ +2025-09-20 02:01:35,442 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 02:01:35,442 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 02:01:35,442 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 02:01:35,443 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 02:01:35,443 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 02:01:35,443 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 02:01:35,443 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ +2025-09-20 02:01:35,480 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-09-20 02:01:35,483 [INFO] PluginManage:196 - Search for loadable plugins [exclusion list=, ] +2025-09-20 02:01:35,487 [INFO] PluginManage:310 - Check plugin analytics +2025-09-20 02:01:36,187 [INFO] AnalyticsPlugin:253 - Accepted Software Licenses: STM32CubeMX.6.15.0 +2025-09-20 02:01:36,187 [INFO] AnalyticsPlugin:255 - Accepted CMSIS Pack Licenses: +2025-09-20 02:01:36,188 [INFO] AnalyticsPlugin:257 - Accepted Firmware Licenses: FW.F4.1.28.0 +2025-09-20 02:01:36,204 [INFO] PluginManage:359 - Loaded plugin analytics (category:tool,tabindex:-1) +2025-09-20 02:01:36,211 [INFO] PluginManage:310 - Check plugin cadmodel +2025-09-20 02:01:36,229 [INFO] CADModel:105 - Init CAD model plugin +2025-09-20 02:01:36,229 [INFO] PluginManage:359 - Loaded plugin cadmodel (category:power,tabindex:5) +2025-09-20 02:01:36,230 [INFO] PluginManage:310 - Check plugin clock +2025-09-20 02:01:36,264 [INFO] PluginManage:359 - Loaded plugin clock (category:base,tabindex:2) +2025-09-20 02:01:36,265 [INFO] PluginManage:310 - Check plugin ddr +2025-09-20 02:01:36,271 [INFO] PluginManage:359 - Loaded plugin ddr (category:tool,tabindex:6) +2025-09-20 02:01:36,273 [INFO] PluginManage:310 - Check plugin filemanager +2025-09-20 02:01:36,733 [INFO] PluginManage:359 - Loaded plugin filemanager (category:base,tabindex:10) +2025-09-20 02:01:36,734 [INFO] PluginManage:310 - Check plugin ipmanager +2025-09-20 02:01:36,755 [INFO] PluginManage:359 - Loaded plugin ipmanager (category:base,tabindex:5) +2025-09-20 02:01:36,756 [INFO] PluginManage:310 - Check plugin lpbam +2025-09-20 02:01:36,776 [INFO] PluginManage:359 - Loaded plugin lpbam (category:base,tabindex:0) +2025-09-20 02:01:36,776 [INFO] PluginManage:310 - Check plugin memorymap +2025-09-20 02:01:36,805 [INFO] PluginManage:359 - Loaded plugin memorymap (category:base,tabindex:4) +2025-09-20 02:01:36,805 [INFO] PluginManage:310 - Check plugin pinoutandconfiguration +2025-09-20 02:01:36,837 [INFO] PluginManage:359 - Loaded plugin pinoutandconfiguration (category:base,tabindex:1) +2025-09-20 02:01:36,840 [INFO] PluginManage:310 - Check plugin pinoutconfig +2025-09-20 02:01:37,068 [WARN] SupportedApi:132 - Cannot load RTOS API schema: s4s-elt-must-match.1: The content of 'definitions' must match (annotation?, (simpleType | complexType)?, (unique | key | keyref)*)). A problem was found starting at: attribute. +2025-09-20 02:01:37,335 [INFO] PluginManage:359 - Loaded plugin pinoutconfig (category:base,tabindex:0) +2025-09-20 02:01:37,335 [INFO] PluginManage:310 - Check plugin power +2025-09-20 02:01:37,351 [INFO] PluginManage:359 - Loaded plugin power (category:power,tabindex:4) +2025-09-20 02:01:37,352 [INFO] PluginManage:310 - Check plugin projectmanager +2025-09-20 02:01:37,387 [INFO] PluginManage:359 - Loaded plugin projectmanager (category:projectmanager,tabindex:4) +2025-09-20 02:01:37,387 [INFO] PluginManage:310 - Check plugin rif +2025-09-20 02:01:37,404 [INFO] PluginManage:359 - Loaded plugin rif (category:base,tabindex:3) +2025-09-20 02:01:37,405 [INFO] PluginManage:310 - Check plugin thirdparty +2025-09-20 02:01:37,639 [INFO] PluginManage:359 - Loaded plugin thirdparty (category:base,tabindex:-1) +2025-09-20 02:01:37,638 [WARN] IntegrityCheckThread:84 - waiting for thirdparty lock release [integrity check] +2025-09-20 02:01:37,639 [INFO] PluginManage:310 - Check plugin tools +2025-09-20 02:01:37,639 [INFO] IntegrityCheckThread:86 - entering critical section [integrity check] +2025-09-20 02:01:37,640 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [1/15] +2025-09-20 02:01:37,643 [INFO] PluginManage:359 - Loaded plugin tools (category:base,tabindex:7) +2025-09-20 02:01:37,643 [INFO] PluginManage:310 - Check plugin tutovideos +2025-09-20 02:01:37,977 [INFO] PluginManage:359 - Loaded plugin tutovideos (category:base,tabindex:-1) +2025-09-20 02:01:37,977 [INFO] PluginManage:310 - Check plugin updater +2025-09-20 02:01:38,014 [INFO] PluginManage:359 - Loaded plugin updater (category:base,tabindex:12) +2025-09-20 02:01:38,014 [INFO] PluginManage:310 - Check plugin userauth +2025-09-20 02:01:38,021 [INFO] UserAuth:118 - Init User Auth plugin +2025-09-20 02:01:38,024 [INFO] PluginManage:359 - Loaded plugin userauth (category:base,tabindex:14) +2025-09-20 02:01:38,025 [INFO] PluginManage:283 - PluginManage : Loaded plugins [18] +2025-09-20 02:01:38,300 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-09-20 02:01:38,407 [INFO] CADModel:165 - CPN selected for project level +2025-09-20 02:01:38,407 [INFO] CADModel:114 - Register for checkConnection events +2025-09-20 02:01:38,425 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,426 [INFO] PluginManager:220 - loadIPPluginJar : add gtzc +2025-09-20 02:01:38,434 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,434 [INFO] PluginManager:220 - loadIPPluginJar : add usbx +2025-09-20 02:01:38,436 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,436 [INFO] PluginManager:220 - loadIPPluginJar : add fatfs +2025-09-20 02:01:38,440 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,441 [INFO] PluginManager:220 - loadIPPluginJar : add i2c +2025-09-20 02:01:38,443 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,443 [INFO] PluginManager:220 - loadIPPluginJar : add tim +2025-09-20 02:01:38,445 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,445 [INFO] PluginManager:220 - loadIPPluginJar : add quadspi +2025-09-20 02:01:38,450 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,450 [INFO] PluginManager:220 - loadIPPluginJar : add ipddr +2025-09-20 02:01:38,456 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,456 [INFO] PluginManager:220 - loadIPPluginJar : add i2s +2025-09-20 02:01:38,461 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,462 [INFO] PluginManager:220 - loadIPPluginJar : add openamp +2025-09-20 02:01:38,465 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,465 [INFO] PluginManager:220 - loadIPPluginJar : add i3c +2025-09-20 02:01:38,468 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,468 [INFO] PluginManager:220 - loadIPPluginJar : add ucpd +2025-09-20 02:01:38,471 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,471 [INFO] PluginManager:220 - loadIPPluginJar : add cryp +2025-09-20 02:01:38,474 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,474 [INFO] PluginManager:220 - loadIPPluginJar : add comp +2025-09-20 02:01:38,477 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,477 [INFO] PluginManager:220 - loadIPPluginJar : add spi +2025-09-20 02:01:38,482 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,483 [INFO] PluginManager:220 - loadIPPluginJar : add touchsensing +2025-09-20 02:01:38,488 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,488 [INFO] PluginManager:220 - loadIPPluginJar : add can +2025-09-20 02:01:38,493 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,493 [INFO] PluginManager:220 - loadIPPluginJar : add aes +2025-09-20 02:01:38,505 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,505 [INFO] PluginManager:220 - loadIPPluginJar : add adc +2025-09-20 02:01:38,510 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,511 [INFO] PluginManager:220 - loadIPPluginJar : add nvic +2025-09-20 02:01:38,519 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,520 [INFO] PluginManager:220 - loadIPPluginJar : add freertos +2025-09-20 02:01:38,531 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,532 [INFO] PluginManager:220 - loadIPPluginJar : add dma +2025-09-20 02:01:38,536 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,536 [INFO] PluginManager:220 - loadIPPluginJar : add resmgrutility +2025-09-20 02:01:38,540 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,541 [INFO] PluginManager:220 - loadIPPluginJar : add pdm2pcm +2025-09-20 02:01:38,544 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,544 [INFO] PluginManager:220 - loadIPPluginJar : add hash +2025-09-20 02:01:38,547 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,548 [INFO] PluginManager:220 - loadIPPluginJar : add dfsdm +2025-09-20 02:01:38,550 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,551 [INFO] PluginManager:220 - loadIPPluginJar : add radio +2025-09-20 02:01:38,563 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,568 [INFO] PluginManager:220 - loadIPPluginJar : add plateformsettings +2025-09-20 02:01:38,576 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,576 [INFO] PluginManager:220 - loadIPPluginJar : add gic +2025-09-20 02:01:38,578 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,578 [INFO] PluginManager:220 - loadIPPluginJar : add ltdc +2025-09-20 02:01:38,580 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,581 [INFO] PluginManager:220 - loadIPPluginJar : add tracer_emb +2025-09-20 02:01:38,585 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,585 [INFO] PluginManager:220 - loadIPPluginJar : add lorawan +2025-09-20 02:01:38,588 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,589 [INFO] PluginManager:220 - loadIPPluginJar : add tsc +2025-09-20 02:01:38,592 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,593 [INFO] PluginManager:220 - loadIPPluginJar : add ts +2025-09-20 02:01:38,595 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,595 [INFO] PluginManager:220 - loadIPPluginJar : add gfxmmu +2025-09-20 02:01:38,598 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,599 [INFO] PluginManager:220 - loadIPPluginJar : add dma3 +2025-09-20 02:01:38,602 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,602 [INFO] PluginManager:220 - loadIPPluginJar : add ddr_ctrl_phy +2025-09-20 02:01:38,604 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,605 [INFO] PluginManager:220 - loadIPPluginJar : add genericplugin +2025-09-20 02:01:38,608 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,609 [INFO] PluginManager:220 - loadIPPluginJar : add opamp +2025-09-20 02:01:38,620 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,621 [INFO] PluginManager:220 - loadIPPluginJar : add stm32_wpan +2025-09-20 02:01:38,626 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,627 [INFO] PluginManager:220 - loadIPPluginJar : add usart +2025-09-20 02:01:38,631 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,631 [INFO] PluginManager:220 - loadIPPluginJar : add sai +2025-09-20 02:01:38,642 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,643 [INFO] PluginManager:220 - loadIPPluginJar : add linkedlist +2025-09-20 02:01:38,647 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,647 [INFO] PluginManager:220 - loadIPPluginJar : add extmemmanager +2025-09-20 02:01:38,656 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,657 [INFO] PluginManager:220 - loadIPPluginJar : add fmc +2025-09-20 02:01:38,664 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,664 [INFO] PluginManager:220 - loadIPPluginJar : add gpio +2025-09-20 02:01:38,674 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:01:38,674 [INFO] PluginManager:220 - loadIPPluginJar : add mdma +2025-09-20 02:01:38,813 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 02:01:38,875 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-09-20 02:01:38,906 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-09-20 02:01:38,926 [INFO] CADModel:165 - CPN selected for project level +2025-09-20 02:01:38,927 [INFO] CADModel:114 - Register for checkConnection events +2025-09-20 02:01:38,927 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 02:01:38,927 [ERROR] CADModel:125 - Updater not yet initialized, retry later +2025-09-20 02:01:39,268 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 02:01:39,271 [INFO] CADModel:165 - CPN selected for project level +2025-09-20 02:01:39,271 [INFO] CADModel:114 - Register for checkConnection events +2025-09-20 02:01:39,272 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 02:01:39,272 [ERROR] CADModel:125 - Updater not yet initialized, retry later +2025-09-20 02:01:39,280 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 02:01:39,649 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 02:01:39,663 [INFO] DbMcusAds:53 - JSON generation date=Tue Jul 08 03:14:23 CDT 2025 (1751962463524) +2025-09-20 02:01:39,663 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 02:01:39,743 [WARN] DetailPanel:346 - Failed to get advertising image, set to default +2025-09-20 02:01:39,904 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 02:01:39,907 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 02:01:39,907 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 02:01:39,907 [WARN] DetailPanel:346 - Failed to get advertising image, set to default +2025-09-20 02:01:39,909 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 02:01:39,978 [ERROR] Updater:1198 - MainUpdater not yet initialized. External WinMGr cannot be set. +2025-09-20 02:01:39,981 [INFO] Updater:1134 - Updater Version found : 6.15.0 +2025-09-20 02:01:40,011 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-09-20 02:01:40,640 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [2/15] +2025-09-20 02:01:40,942 [INFO] MainUpdater:2872 - connection check result : 10 +2025-09-20 02:01:40,943 [INFO] MainUpdater:289 - Updater Check For Update Now. +2025-09-20 02:01:40,943 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-09-20 02:01:40,951 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated) +2025-09-20 02:01:40,952 [INFO] UserAuth:487 - Internet connection configuration mode: 1 +2025-09-20 02:01:40,982 [INFO] JxBrowserEngine:152 - Initiate JxBrowser Engine with user profile folder +2025-09-20 02:01:41,258 [INFO] CheckServerUpdateThread:120 - End of CheckServer Thread +2025-09-20 02:01:42,340 [INFO] WebApp:169 - Instantiating new browser for Auth +2025-09-20 02:01:44,133 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENVWB1.1.4.0 +2025-09-20 02:01:44,181 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-ASTRA1.2.0.2 +2025-09-20 02:01:44,214 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SMBUS.2.1.0 +2025-09-20 02:01:44,229 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST60.1.0.0 +2025-09-20 02:01:44,387 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F7.1.1.0 +2025-09-20 02:01:44,458 [WARN] PackLoader:240 - Cannot read IP mode file for WES.I-CUBE-Cesium.1.4.0 +2025-09-20 02:01:44,561 [WARN] PackLoader:240 - Cannot read IP mode file for Infineon.AIROC-Wi-Fi-Bluetooth-STM32.1.7.1 +2025-09-20 02:01:44,738 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7.3.4.0 +2025-09-20 02:01:44,797 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DISPLAY.3.0.0 +2025-09-20 02:01:44,839 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC10.1.0.0 +2025-09-20 02:01:44,871 [WARN] PackLoader:240 - Cannot read IP mode file for emotas.I-CUBE-CANOPEN.1.3.0 +2025-09-20 02:01:44,914 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.1.0 +2025-09-20 02:01:44,948 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-SMARTAG2.1.2.0 +2025-09-20 02:01:44,958 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-FLIGHT1.5.1.0 +2025-09-20 02:01:44,988 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-09-20 02:01:44,991 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-09-20 02:01:44,992 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-09-20 02:01:44,992 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-09-20 02:01:44,993 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-09-20 02:01:45,005 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WL.2.0.0 +2025-09-20 02:01:45,185 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENV1.5.0.0 +2025-09-20 02:01:45,207 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE2.3.3.0 +2025-09-20 02:01:45,226 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC9.1.0.0 +2025-09-20 02:01:45,245 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSL.5.8.2 +2025-09-20 02:01:45,256 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE1.7.1.0 +2025-09-20 02:01:45,261 [INFO] WebApp:463 - Apply proxy settings +2025-09-20 02:01:45,263 [INFO] WebApp:548 - Chromium requires no authentication +2025-09-20 02:01:45,264 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfMQTT.1.19.2 +2025-09-20 02:01:45,281 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-EEPRMA1.5.2.0 +2025-09-20 02:01:45,314 [INFO] WebApp:491 - Direct internet connection detected +2025-09-20 02:01:45,345 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G0.1.1.0 +2025-09-20 02:01:45,376 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SAFEA1.1.2.2 +2025-09-20 02:01:45,405 [INFO] WebApp:900 - Register for checkConnection events +2025-09-20 02:01:45,406 [INFO] WebApp:463 - Apply proxy settings +2025-09-20 02:01:45,406 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC4.3.0.0 +2025-09-20 02:01:45,406 [INFO] WebApp:548 - Chromium requires no authentication +2025-09-20 02:01:45,407 [INFO] WebApp:491 - Direct internet connection detected +2025-09-20 02:01:45,444 [WARN] PackLoader:240 - Cannot read IP mode file for EmbeddedOffice.I-CUBE-FS-RTOS.1.0.1 +2025-09-20 02:01:45,459 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-WB05N.2.0.0 +2025-09-20 02:01:45,470 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfTPM.3.8.0 +2025-09-20 02:01:45,485 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TCPP.4.2.0 +2025-09-20 02:01:45,500 [WARN] PackLoader:240 - Cannot read IP mode file for RealThread.X-CUBE-RT-Thread_Nano.4.1.1 +2025-09-20 02:01:45,507 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-SIGFOX1.3.2.0 +2025-09-20 02:01:45,517 [WARN] PackLoader:240 - Cannot read IP mode file for ITTIA_DB.I-CUBE-ITTIADB.8.9.0 +2025-09-20 02:01:45,531 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST67W61.1.0.0 +2025-09-20 02:01:45,543 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.2.0 +2025-09-20 02:01:45,618 [WARN] PackLoader:240 - Cannot read IP mode file for SEGGER.I-CUBE-embOS.1.3.1 +2025-09-20 02:01:45,842 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0 +2025-09-20 02:01:46,193 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-MEMS1.11.3.0 +2025-09-20 02:01:46,341 [INFO] WebApp:225 - Starting web application +2025-09-20 02:01:46,342 [INFO] WebApp:593 - Web application path used /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659/db/plugins/mcufinder/reactClient1/index.html +2025-09-20 02:01:46,427 [INFO] WebApp:191 - Connection restablished +2025-09-20 02:01:47,072 [INFO] UserAuth:487 - Internet connection configuration mode: 1 +2025-09-20 02:01:47,279 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-PM33A1.1.0.0 +2025-09-20 02:01:47,330 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F4.1.1.0 +2025-09-20 02:01:47,352 [WARN] PackLoader:240 - Cannot read IP mode file for Avnet-IotConnect.X-CUBE-IoTC-DA16k-PMOD.1.0.0 +2025-09-20 02:01:47,377 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ISPU.2.1.0 +2025-09-20 02:01:47,398 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC12.1.0.0 +2025-09-20 02:01:47,515 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L5.2.0.0 +2025-09-20 02:01:47,564 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC6.3.1.0 +2025-09-20 02:01:47,603 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-FREERTOS.1.3.1 +2025-09-20 02:01:47,616 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STAIOTCFT.1.0.0 +2025-09-20 02:01:47,632 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DPower.1.3.0 +2025-09-20 02:01:47,689 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-09-20 02:01:47,691 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L4.2.0.0 +2025-09-20 02:01:47,695 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-09-20 02:01:47,696 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-09-20 02:01:47,698 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-09-20 02:01:47,718 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SFXS2LP1.4.0.0 +2025-09-20 02:01:47,754 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.1.0 +2025-09-20 02:01:47,792 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 02:01:47,792 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 02:01:47,799 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WB.2.0.0 +2025-09-20 02:01:47,800 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 02:01:47,801 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 02:01:47,803 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 02:01:47,805 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 02:01:47,805 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 02:01:47,818 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-GNSS1.7.0.1 +2025-09-20 02:01:47,834 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOUCHGFX.4.25.0 +2025-09-20 02:01:47,843 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : Cortex-A Device cause : null +2025-09-20 02:01:47,884 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null +2025-09-20 02:01:47,884 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null +2025-09-20 02:01:47,885 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null +2025-09-20 02:01:47,913 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SUBG2.5.0.0 +2025-09-20 02:01:47,982 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7RS.1.1.0 +2025-09-20 02:01:47,996 [WARN] PackLoader:240 - Cannot read IP mode file for Cesanta.I-CUBE-Mongoose.7.13.0 +2025-09-20 02:01:48,036 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G4.2.0.0 +2025-09-20 02:01:48,047 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSH.1.4.20 +2025-09-20 02:01:48,113 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC7.2.0.0 +2025-09-20 02:01:48,162 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-IPS.3.1.0 +2025-09-20 02:01:48,187 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALS.1.0.2 +2025-09-20 02:01:48,200 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-STSE01.1.0.0 +2025-09-20 02:01:48,214 [WARN] PackLoader:240 - Cannot read IP mode file for portGmbH.I-Cube-SoM-uGOAL.1.1.0 +2025-09-20 02:01:48,242 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOF1.3.4.3 +2025-09-20 02:01:48,277 [INFO] ThirdParty:978 - Integrity check success = true +2025-09-20 02:01:48,278 [INFO] IntegrityCheckThread:100 - exiting critical section [integrity check] +2025-09-20 02:01:48,278 [INFO] IntegrityCheckThread:103 - End integrity checks thread +2025-09-20 02:03:14,349 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated) +2025-09-20 02:03:14,354 [INFO] MainUpdater:2872 - connection check result : 10 +2025-09-20 02:03:14,354 [INFO] MainUpdater:2872 - connection check result : 10 +2025-09-20 02:03:14,411 [INFO] MicroXplorer:468 - Change Database Path : +2025-09-20 02:03:14,412 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-09-20 02:03:14,424 [WARN] ThirdParty:871 - waiting for thirdparty lock release [close project] +2025-09-20 02:03:14,424 [INFO] ThirdParty:873 - entering critical section [close project] +2025-09-20 02:03:14,427 [INFO] ThirdParty:883 - exiting critical section [close project] +2025-09-20 02:03:14,434 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-09-20 02:03:14,438 [INFO] UtilMem:75 - Begin LoadConfig() Used Memory: 520691672 Bytes (655360000) +2025-09-20 02:03:14,442 [INFO] MicroXplorer:468 - Change Database Path : +2025-09-20 02:03:14,443 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-09-20 02:03:14,443 [INFO] OpenFileManager:355 - Change cursor +2025-09-20 02:03:14,500 [INFO] Mcu:2029 - Initializing MCU STM32F429ZITx STM32F429ZITx STM32F429ZIT6 +2025-09-20 02:03:22,938 [INFO] Context:786 - Trying to add GPIOservice into a context which must be forbidden +2025-09-20 02:03:25,714 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) Pin98 (VP_RIF_VS_RIF1) cannot be retrieved for this MCU +2025-09-20 02:03:26,345 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS, mode=CMSIS_V1, owner=FREERTOS +2025-09-20 02:03:26,345 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS2, mode=CMSIS_V2, owner=FREERTOS +2025-09-20 02:03:26,346 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V1, owner=FREERTOS +2025-09-20 02:03:26,346 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V2, owner=FREERTOS +2025-09-20 02:03:26,347 [WARN] ModelIntegratedComponent:184 - Missing modes for component STMicroelectronics:FreeRTOS:0.0.1:STMicroelectronics:RTOS:FreeRTOS:Core:::10.2.0: +2025-09-20 02:03:26,472 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,472 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,473 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,473 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,473 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,473 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,473 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,476 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,476 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,476 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,479 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,479 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,479 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,480 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,480 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,480 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,480 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,480 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,481 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,484 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,484 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,487 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,487 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,488 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,488 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,488 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,488 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,489 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,489 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,489 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,489 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,490 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,490 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,490 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,490 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:03:26,491 [WARN] ModelPack:524 - Component already loaded: STMicroelectronics:HAL Drivers:0.0.0:STMicroelectronics:Device:STMicro_Driver:XSPI:HAL::0.0.1:HAL_XSPI +2025-09-20 02:03:27,037 [INFO] ThirdPartyModel:298 - Start build external matchings +2025-09-20 02:03:28,578 [INFO] ThirdPartyModel:316 - End build external matchings +2025-09-20 02:03:28,617 [INFO] RtosManager:1018 - Current active RTOS is FREERTOS [Cortex-M4NS] +2025-09-20 02:03:28,646 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:03:28,649 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Invalid parameter (FamilyName) +2025-09-20 02:03:28,651 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Parameter (RTCHSEDivFreq_Value) has invalid value (4000000) +2025-09-20 02:03:29,571 [INFO] ApiDb:581 - Connected to CubeFinder SQLite database (/home/ja/.stmcufinder/plugins/mcufinder/mcu/cube-finder-db.db) +2025-09-20 02:03:29,751 [INFO] ApiDb:668 - CubeFinder database Data Model version=2.1 +2025-09-20 02:03:29,752 [INFO] ApiDb:669 - CubeFinder database Configuration version=3.0.39 +2025-09-20 02:03:29,752 [INFO] ApiDb:670 - CubeFinder database generation date=2025-08-25 (1756130511) +2025-09-20 02:03:29,753 [INFO] ApiDb:671 - CubeFinder database FW Pack versions=[FP-ATR-ASTRA1_V2.0.0, FP-SNS-FLIGHT1_V5.1.0, FP-SNS-MOTENV1_V5.0.0, FP-SNS-MOTENVWB1_V1.4.0, FP-SNS-SMARTAG2_V1.2.0, FP-SNS-STBOX1_V2.1.0, STM32Cube_FW_C0_V1.4.0, STM32Cube_FW_F4_V1.28.3, STM32Cube_FW_F7_V1.17.4, STM32Cube_FW_G0_V1.6.2, STM32Cube_FW_G4_V1.6.1, STM32Cube_FW_H5_V1.5.0, STM32Cube_FW_H7RS_V1.2.0, STM32Cube_FW_H7_V1.12.1, STM32Cube_FW_L0_V1.12.2, STM32Cube_FW_L4_V1.18.1, STM32Cube_FW_L5_V1.5.1, STM32Cube_FW_N6_V1.2.0, STM32Cube_FW_U0_V1.3.0, STM32Cube_FW_U3_V1.2.0, STM32Cube_FW_U5_V1.8.0, STM32Cube_FW_WB0_V1.3.0, STM32Cube_FW_WBA_V1.7.0, STM32Cube_FW_WB_V1.23.0, STM32Cube_FW_WL3_V1.2.0, STM32Cube_FW_WL_V1.3.1, X-CUBE-ALGOBUILD_V1.4.0, X-CUBE-ALS_V1.0.2, X-CUBE-AZRTOS-F4_V1.1.0, X-CUBE-AZRTOS-F7_V1.1.0, X-CUBE-AZRTOS-G0_V1.1.0, X-CUBE-AZRTOS-G4_V2.0.0, X-CUBE-AZRTOS-H7RS_V1.1.0, X-CUBE-AZRTOS-H7_V3.4.0, X-CUBE-AZRTOS-L4_V2.0.0, X-CUBE-AZRTOS-L5_V2.0.0, X-CUBE-AZRTOS-WB_V2.0.0, X-CUBE-AZRTOS-WL_V2.0.0, X-CUBE-BLE1_V7.1.0, X-CUBE-BLE2_V3.3.0, X-CUBE-BLEMGR_V4.1.0, X-CUBE-EEPRMA1_V5.2.0, X-CUBE-FREERTOS_V1.3.1, X-CUBE-GNSS1_V6.0.0, X-CUBE-MEMS1_V11.3.0, X-CUBE-NFC4_V3.0.0, X-CUBE-NFC7_V2.0.0, X-CUBE-SFXS2LP1_V4.0.0, X-CUBE-ST67W61_V1.0.0, X-CUBE-SUBG2_V5.0.0, X-CUBE-TOF1_V3.4.3] +2025-09-20 02:03:29,999 [INFO] DbBoardsSqlite:226 - include board P-NUCLEO-WB55-NUCLEO as a kit item of type 'Nucleo-64' +2025-09-20 02:03:30,000 [INFO] DbBoardsSqlite:226 - include board P-NUCLEO-WB55-USBDONGLE as a kit item of type 'Nucleo USB Dongle' +2025-09-20 02:03:30,001 [INFO] DbBoardsSqlite:226 - include board STEVAL-IDP005V1 as a kit item of type 'Evaluation Board' +2025-09-20 02:03:30,002 [INFO] DbBoardsSqlite:226 - include board STEVAL-IDP005V2 as a kit item of type 'Evaluation Board' +2025-09-20 02:03:30,232 [INFO] ApiDb:240 - Found 880 in-development CPN: [B-G473E-ZEST1S, B-WB1M-WPAN1, B-WBA5M-WPAN, B-WL5M-SUBG1, NUCLEO-C031C6, NUCLEO-C051C8, NUCLEO-C071RB, NUCLEO-C092RC, NUCLEO-H503RB, NUCLEO-H533RE, NUCLEO-H563ZI, NUCLEO-H7S3L8, NUCLEO-N657X0-Q, NUCLEO-U031R8, NUCLEO-U083RC, NUCLEO-U385RG-Q, NUCLEO-U545RE-Q, NUCLEO-U5A5ZJ-Q, NUCLEO-WB05KZ, NUCLEO-WB07CC, NUCLEO-WB09KE, NUCLEO-WBA52CG, NUCLEO-WBA55CG, NUCLEO-WL33CC1, NUCLEO-WL33CC2, STEVAL-PROTEUS1, STEVAL-SMARTAG2, STEVAL-STWINBX1, STM320518-EVAL, STM32C0116-DK, STM32C011D6Y3TR, STM32C011D6Y6TR, STM32C011F4P3, STM32C011F4P6, STM32C011F4U3, STM32C011F4U6TR, STM32C011F6P3, STM32C011F6P6, STM32C011F6U3, STM32C011F6U6TR, STM32C011J4M3, STM32C011J4M6, STM32C011J6M3, STM32C011J6M6, STM32C0316-DK, STM32C031C4T3, STM32C031C4T6, STM32C031C4U3, STM32C031C4U6, STM32C031C6T3, STM32C031C6T6, STM32C031C6U3, STM32C031C6U6, STM32C031F4P3, STM32C031F4P6, STM32C031F6P3, STM32C031F6P6, STM32C031G4U3, STM32C031G4U6, STM32C031G6U3, STM32C031G6U6, STM32C031K4T3, STM32C031K4T6, STM32C031K4U3, STM32C031K4U6, STM32C031K6T3, STM32C031K6T6, STM32C031K6U3, STM32C031K6U6, STM32C051C6T6, STM32C051C6U6, STM32C051C8T6, STM32C051C8U6, STM32C051D8Y6TR, STM32C051F6P6, STM32C051F8P6, STM32C051G6U6, STM32C051G8U6, STM32C051K6T6, STM32C051K6U6, STM32C051K8T6, STM32C071C8T6, STM32C071C8T6N, STM32C071C8U6, STM32C071C8U6N, STM32C071CBT6, STM32C071CBT6N, STM32C071CBU6, STM32C071CBU6N, STM32C071F8P6, STM32C071F8P6N, STM32C071FBP6, STM32C071FBP6N, STM32C071FBY6TR, STM32C071G8U6, STM32C071G8U6N, STM32C071GBU6, STM32C071GBU6N, STM32C071K8T6, STM32C071K8T6N, STM32C071K8U6, STM32C071K8U6N, STM32C071KBT6, STM32C071KBT6N, STM32C071KBU6, STM32C071KBU6N, STM32C071R8T6, STM32C071R8T6N, STM32C071RBI6N, STM32C071RBT6, STM32C071RBT6N, STM32C091CBT6, STM32C091CBU6, STM32C091CCT6, STM32C091CCU6, STM32C091ECY6TR, STM32C091FBP6, STM32C091FCP6, STM32C091GBU6, STM32C091GCU6, STM32C091KBT6, STM32C091KBU6, STM32C091KCT6, STM32C091KCU6, STM32C091RBT6, STM32C091RCI6, STM32C091RCT6, STM32C092CBT6, STM32C092CBU6, STM32C092CCT6, STM32C092CCU6, STM32C092ECY6TR, STM32C092FBP6, STM32C092FCP6, STM32C092GBU6, STM32C092GCU6, STM32C092KBT6, STM32C092KBU6, STM32C092KCT6, STM32C092KCU6, STM32C092RBT6, STM32C092RCI6, STM32C092RCT6, STM32G071K8TXN, STM32G071K8UXN, STM32G081GBU6N, STM32G081KBT6N, STM32G081KBUXN, STM32G0B1CCT6N, STM32G0B1KCT6, STM32G0B1NEY6TR, STM32G0B1RCT6N, STM32G0C1CCT6, STM32G0C1CCT6N, STM32G0C1CCU6N, STM32G0C1CET6N, STM32G0C1CEU6N, STM32G0C1KCT6, STM32G0C1NEY6TR, STM32G0C1RCI6N, STM32G0C1RCT6N, STM32G0C1REI6N, STM32G0C1RET6N, STM32G0C1VCI6, STM32G0C1VEI6, STM32G411C6T3, STM32G411C6T6, STM32G411C6U3, STM32G411C6U6, STM32G411C8T3, STM32G411C8T6, STM32G411C8U3, STM32G411C8U6, STM32G411CBT3, STM32G411CBT6, STM32G411CBU3, STM32G411CBU6, STM32G411K6T3, STM32G411K6T6, STM32G411K6U3, STM32G411K6U6, STM32G411K8T3, STM32G411K8T6, STM32G411K8U3, STM32G411K8U6, STM32G411KBT3, STM32G411KBT6, STM32G411KBU3, STM32G411KBU6, STM32G411M6T3, STM32G411M6T6, STM32G411M8T3, STM32G411M8T6, STM32G411MBT3, STM32G411MBT6, STM32G411R6T3, STM32G411R6T6, STM32G411R8T3, STM32G411R8T6, STM32G411RBT3, STM32G411RBT6, STM32G414CBT3, STM32G414CBT6, STM32G414CBU3, STM32G414CBU6, STM32G414CCT3, STM32G414CCT6, STM32G414CCU3, STM32G414CCU6, STM32G414MBT3, STM32G414MBT6, STM32G414MCT3, STM32G414MCT6, STM32G414RBT3, STM32G414RBT6, STM32G414RCT3, STM32G414RCT6, STM32G414VBT3, STM32G414VBT6, STM32G414VCT3, STM32G414VCT6, STM32G431CBT3Z, STM32G431RBT3Z, STM32G471CCT6, STM32G471CCU6, STM32G471CET3, STM32G471CET6, STM32G471CEU3, STM32G471CEU6, STM32G471MCT6, STM32G471MET3, STM32G471MET6, STM32G471MEY6TR, STM32G471QCT6, STM32G471QET3, STM32G471RCT6, STM32G471RET3, STM32G471RET6, STM32G471VCH6, STM32G471VCI6, STM32G471VCT6, STM32G471VEH3, STM32G471VEH6, STM32G471VEI3, STM32G471VEI6, STM32G471VET3, STM32G471VET6, STM32G473QET3Z, STM32G473RET3Z, STM32G474CCT6, STM32G491RET3Z, STM32H503CBT6, STM32H503CBU6, STM32H503EBY6TR, STM32H503KBU6, STM32H503RBT6, STM32H523CCT6, STM32H523CCU6, STM32H523CET6, STM32H523CEU6, STM32H523HEY6TR, STM32H523RCT6, STM32H523RET6, STM32H523VCI6, STM32H523VCT6, STM32H523VEI6, STM32H523VET6, STM32H523ZCJ6, STM32H523ZCT6, STM32H523ZEJ6, STM32H523ZET6, STM32H533CET6, STM32H533CEU6, STM32H533HEY6TR, STM32H533RET6, STM32H533VEI6, STM32H533VET6, STM32H533ZEJ6, STM32H533ZET6, STM32H562AGI6, STM32H562AII6, STM32H562IGK6, STM32H562IGT6, STM32H562IIK6, STM32H562IIT6, STM32H562RGT6, STM32H562RGV6, STM32H562RIT6, STM32H562RIV6, STM32H562VGT6, STM32H562VIT6, STM32H562ZGT6, STM32H562ZIT6, STM32H563AGI6, STM32H563AII3Q, STM32H563AII6, STM32H563IGK6, STM32H563IGT6, STM32H563IIK3Q, STM32H563IIK6, STM32H563IIT3Q, STM32H563IIT6, STM32H563MIY3QTR, STM32H563RGT6, STM32H563RGV6, STM32H563RIT6, STM32H563RIV6, STM32H563VGT6, STM32H563VIT3Q, STM32H563VIT6, STM32H563ZGT6, STM32H563ZIT3Q, STM32H563ZIT6, STM32H573AII3Q, STM32H573AII6, STM32H573I-DK, STM32H573IIK3Q, STM32H573IIK6, STM32H573IIT3Q, STM32H573IIT6, STM32H573MIY3QTR, STM32H573RIT6, STM32H573RIV6, STM32H573VIT3Q, STM32H573VIT6, STM32H573ZIT3Q, STM32H573ZIT6, STM32H7R3A8I6, STM32H7R3I8K6, STM32H7R3I8T6, STM32H7R3L8H6, STM32H7R3L8H6H, STM32H7R3R8V6, STM32H7R3V8H6, STM32H7R3V8T6, STM32H7R3V8Y6TR, STM32H7R3Z8J6, STM32H7R3Z8T6, STM32H7R7A8I6, STM32H7R7I8K6, STM32H7R7I8T6, STM32H7R7L8H6, STM32H7R7L8H6H, STM32H7R7Z8J6, STM32H7S3A8I6, STM32H7S3I8K6, STM32H7S3I8T6, STM32H7S3L8H6, STM32H7S3L8H6H, STM32H7S3R8V6, STM32H7S3V8H6, STM32H7S3V8T6, STM32H7S3V8Y6TR, STM32H7S3Z8J6, STM32H7S3Z8T6, STM32H7S78-DK, STM32H7S7A8I6, STM32H7S7I8K6, STM32H7S7I8T6, STM32H7S7L8H6, STM32H7S7L8H6H, STM32H7S7Z8J6, STM32L4R5QGI6STR, STM32MP131AAE3, STM32MP131AAF3, STM32MP131AAG3, STM32MP131CAE3, STM32MP131CAF3, STM32MP131CAG3, STM32MP131DAE7, STM32MP131DAF7, STM32MP131DAG7, STM32MP131FAE7, STM32MP131FAF7, STM32MP131FAG7, STM32MP133AAE3, STM32MP133AAF3, STM32MP133AAG3, STM32MP133CAE3, STM32MP133CAF3, STM32MP133CAG3, STM32MP133DAE7, STM32MP133DAF7, STM32MP133DAG7, STM32MP133FAE7, STM32MP133FAF7, STM32MP133FAG7, STM32MP135AAE3, STM32MP135AAF3, STM32MP135AAG3, STM32MP135CAE3, STM32MP135CAF3, STM32MP135CAG3, STM32MP135DAE7, STM32MP135DAF7, STM32MP135DAG7, STM32MP135F-DK, STM32MP135FAE7, STM32MP135FAF7, STM32MP135FAF7T, STM32MP135FAF7U, STM32MP135FAG7, STM32MP211AAL3, STM32MP211AAM3, STM32MP211AAN3, STM32MP211AAO3, STM32MP211CAL3, STM32MP211CAM3, STM32MP211CAN3, STM32MP211CAO3, STM32MP211DAL3, STM32MP211DAM3, STM32MP211DAN3, STM32MP211DAO3, STM32MP211FAL3, STM32MP211FAM3, STM32MP211FAN3, STM32MP211FAO3, STM32MP213AAL3, STM32MP213AAM3, STM32MP213AAN3, STM32MP213AAO3, STM32MP213CAL3, STM32MP213CAM3, STM32MP213CAN3, STM32MP213CAO3, STM32MP213DAL3, STM32MP213DAM3, STM32MP213DAN3, STM32MP213DAO3, STM32MP213FAL3, STM32MP213FAM3, STM32MP213FAN3, STM32MP213FAO3, STM32MP215AAL3, STM32MP215AAM3, STM32MP215AAN3, STM32MP215AAO3, STM32MP215CAL3, STM32MP215CAM3, STM32MP215CAN3, STM32MP215CAO3, STM32MP215DAL3, STM32MP215DAM3, STM32MP215DAN3, STM32MP215DAO3, STM32MP215F-DK, STM32MP215FAL3, STM32MP215FAM3, STM32MP215FAN3, STM32MP215FAO3, STM32MP231AAJ3, STM32MP231AAK3, STM32MP231AAL3, STM32MP231CAJ3, STM32MP231CAK3, STM32MP231CAL3, STM32MP231DAJ3, STM32MP231DAK3, STM32MP231DAL3, STM32MP231FAJ3, STM32MP231FAK3, STM32MP231FAL3, STM32MP233AAJ3, STM32MP233AAK3, STM32MP233AAL3, STM32MP233CAJ3, STM32MP233CAK3, STM32MP233CAL3, STM32MP233DAJ3, STM32MP233DAK3, STM32MP233DAL3, STM32MP233FAJ3, STM32MP233FAK3, STM32MP233FAL3, STM32MP235AAJ3, STM32MP235AAK3, STM32MP235AAL3, STM32MP235CAJ3, STM32MP235CAK3, STM32MP235CAL3, STM32MP235DAJ3, STM32MP235DAK3, STM32MP235DAL3, STM32MP235FAJ3, STM32MP235FAK3, STM32MP235FAL3, STM32MP251AAI3, STM32MP251AAK3, STM32MP251AAL3, STM32MP251CAI3, STM32MP251CAK3, STM32MP251CAL3, STM32MP251DAI3, STM32MP251DAK3, STM32MP251DAL3, STM32MP251FAI3, STM32MP251FAK3, STM32MP251FAL3, STM32MP253AAI3, STM32MP253AAK3, STM32MP253AAL3, STM32MP253CAI3, STM32MP253CAK3, STM32MP253CAL3, STM32MP253DAI3, STM32MP253DAK3, STM32MP253DAL3, STM32MP253FAI3, STM32MP253FAK3, STM32MP253FAL3, STM32MP255AAI3, STM32MP255AAK3, STM32MP255AAL3, STM32MP255CAI3, STM32MP255CAK3, STM32MP255CAL3, STM32MP255DAI3, STM32MP255DAK3, STM32MP255DAL3, STM32MP255FAI3, STM32MP255FAK3, STM32MP255FAL3, STM32MP257AAI3, STM32MP257AAK3, STM32MP257AAL3, STM32MP257CAI3, STM32MP257CAK3, STM32MP257CAL3, STM32MP257DAI3, STM32MP257DAK3, STM32MP257DAL3, STM32MP257F-DK, STM32MP257F-EV1, STM32MP257FAI3, STM32MP257FAK3, STM32MP257FAL3, STM32N645A0H3Q, STM32N645B0H3Q, STM32N645I0H3Q, STM32N645L0H3Q, STM32N645X0H3Q, STM32N645Z0H3Q, STM32N647A0H3Q, STM32N647B0H3Q, STM32N647I0H3Q, STM32N647L0H3Q, STM32N647X0H3Q, STM32N647Z0H3Q, STM32N655A0H3Q, STM32N655B0H3Q, STM32N655I0H3Q, STM32N655L0H3Q, STM32N655X0H3Q, STM32N655Z0H3Q, STM32N6570-DK, STM32N657A0H3Q, STM32N657B0H3Q, STM32N657I0H3Q, STM32N657L0H3Q, STM32N657X0H3Q, STM32N657Z0H3Q, STM32U031C6T6, STM32U031C6U6, STM32U031C8T6, STM32U031C8U6, STM32U031F4P6, STM32U031F6P6, STM32U031F8P6, STM32U031G6Y6TR, STM32U031G8Y6TR, STM32U031K4U6, STM32U031K6U6, STM32U031K8U6, STM32U031R6I6, STM32U031R6T6, STM32U031R8I6, STM32U031R8T6, STM32U073C8T6, STM32U073C8U6, STM32U073CBT6, STM32U073CBU6, STM32U073CCT6, STM32U073CCU6, STM32U073H8Y6TR, STM32U073HBY6TR, STM32U073HCY6TR, STM32U073K8U6, STM32U073KBU6, STM32U073KCU6, STM32U073M8I6, STM32U073M8T6, STM32U073MBI6, STM32U073MBT6, STM32U073MCI6, STM32U073MCT6, STM32U073R8I6, STM32U073R8T6, STM32U073RBI6, STM32U073RBT6, STM32U073RCI6, STM32U073RCT6, STM32U083C-DK, STM32U083CCT6, STM32U083CCU6, STM32U083HCY6TR, STM32U083KCU6, STM32U083MCI6, STM32U083MCT6, STM32U083RCI6, STM32U083RCT6, STM32U375CET6, STM32U375CET6Q, STM32U375CEU6, STM32U375CEU6Q, STM32U375CEY6QTR, STM32U375CGT6, STM32U375CGT6Q, STM32U375CGU6, STM32U375CGU6Q, STM32U375CGY6QTR, STM32U375KEU6, STM32U375KGU6, STM32U375REI6, STM32U375REI6Q, STM32U375RET6, STM32U375RET6Q, STM32U375REY6GTR, STM32U375REY6QTR, STM32U375RGI6, STM32U375RGI6Q, STM32U375RGT6, STM32U375RGT6Q, STM32U375RGY6GTR, STM32U375RGY6QTR, STM32U375VEI6, STM32U375VEI6Q, STM32U375VET6, STM32U375VET6Q, STM32U375VGI6, STM32U375VGI6Q, STM32U375VGT6, STM32U375VGT6Q, STM32U385CGT6, STM32U385CGT6Q, STM32U385CGU6, STM32U385CGU6Q, STM32U385CGY6QTR, STM32U385KGU6, STM32U385RGI6, STM32U385RGI6Q, STM32U385RGT6, STM32U385RGT6Q, STM32U385RGY6GTR, STM32U385RGY6QTR, STM32U385VGI6, STM32U385VGI6Q, STM32U385VGT6, STM32U385VGT6Q, STM32U535CBT6, STM32U535CBT6Q, STM32U535CBU6, STM32U535CBU6Q, STM32U535CCT6, STM32U535CCT6Q, STM32U535CCU6, STM32U535CCU6Q, STM32U535CET6, STM32U535CET6Q, STM32U535CEU6, STM32U535CEU6Q, STM32U535JEY6QTR, STM32U535NCY6QTR, STM32U535NEY6QTR, STM32U535RBI6, STM32U535RBI6Q, STM32U535RBT6, STM32U535RBT6Q, STM32U535RCI6, STM32U535RCI6Q, STM32U535RCT6, STM32U535RCT6Q, STM32U535REI6, STM32U535REI6Q, STM32U535RET6, STM32U535RET6Q, STM32U535VCI6, STM32U535VCI6Q, STM32U535VCT6, STM32U535VCT6Q, STM32U535VEI6, STM32U535VEI6Q, STM32U535VET6, STM32U535VET6Q, STM32U545CET6, STM32U545CET6Q, STM32U545CEU6, STM32U545CEU6Q, STM32U545JEY6QTR, STM32U545NEY6QTR, STM32U545REI6, STM32U545REI6Q, STM32U545RET6, STM32U545RET6Q, STM32U545VEI6, STM32U545VEI6Q, STM32U545VET6, STM32U545VET6Q, STM32U595AIH6, STM32U595AIH6Q, STM32U595AJH6, STM32U595AJH6Q, STM32U595QII6, STM32U595QII6Q, STM32U595QJI6, STM32U595QJI6Q, STM32U595RIT6, STM32U595RIT6Q, STM32U595RJT6, STM32U595RJT6Q, STM32U595VIT6, STM32U595VIT6Q, STM32U595VJT6, STM32U595VJT6Q, STM32U595ZIT6, STM32U595ZIT6Q, STM32U595ZIY6QTR, STM32U595ZJT6, STM32U595ZJT6Q, STM32U595ZJY6QTR, STM32U599BJY6QTR, STM32U599NIH6Q, STM32U599NJH6Q, STM32U599VIT6Q, STM32U599VJT6, STM32U599VJT6Q, STM32U599ZIT6Q, STM32U599ZIY6QTR, STM32U599ZJT6Q, STM32U599ZJY6QTR, STM32U5A5AJH6, STM32U5A5AJH6Q, STM32U5A5QII3Q , STM32U5A5QJI6, STM32U5A5QJI6Q, STM32U5A5RJT6, STM32U5A5RJT6Q, STM32U5A5VJT6, STM32U5A5VJT6Q, STM32U5A5ZJT6, STM32U5A5ZJT6Q, STM32U5A5ZJY6QTR, STM32U5A9BJY6QTR, STM32U5A9J-DK, STM32U5A9NJH6Q, STM32U5A9VJT6Q, STM32U5A9ZJT6Q, STM32U5A9ZJY6QTR, STM32U5F7VIT6, STM32U5F7VIT6Q, STM32U5F7VJT6, STM32U5F7VJT6Q, STM32U5F9BJY6QTR, STM32U5F9NJH6Q, STM32U5F9VIT6Q, STM32U5F9VJT6Q, STM32U5F9ZIJ6QTR, STM32U5F9ZIT6Q, STM32U5F9ZJJ6QTR, STM32U5F9ZJT6Q, STM32U5G7VJT6, STM32U5G7VJT6Q, STM32U5G9BJY6QTR, STM32U5G9J-DK1, STM32U5G9J-DK2, STM32U5G9NJH6Q, STM32U5G9VJT6Q, STM32U5G9ZJJ6QTR, STM32U5G9ZJT6Q, STM32WB05KZV6TR, STM32WB05KZV7TR, STM32WB05TZF6TR, STM32WB05TZF7TR, STM32WB06CCF6TR, STM32WB06CCF7TR, STM32WB06CCV6TR, STM32WB06CCV7TR, STM32WB06KCV6TR, STM32WB06KCV7TR, STM32WB07CCF6TR, STM32WB07CCF7TR, STM32WB07CCV6TR, STM32WB07CCV7TR, STM32WB07KCV6TR, STM32WB07KCV7TR, STM32WB09KEV6TR, STM32WB09KEV7TR, STM32WB09TEF6TR, STM32WB09TEF7TR, STM32WB1MMCH6, STM32WBA50KGU6, STM32WBA50KGU6TR, STM32WBA52CEU6, STM32WBA52CEU6TR, STM32WBA52CEU7, STM32WBA52CEU7TR, STM32WBA52CGU6, STM32WBA52CGU6TR, STM32WBA52CGU6U, STM32WBA52CGU7, STM32WBA52CGU7TR, STM32WBA52KEU6, STM32WBA52KEU6TR, STM32WBA52KGU6, STM32WBA52KGU6TR, STM32WBA54CEU6, STM32WBA54CEU6TR, STM32WBA54CEU7, STM32WBA54CEU7TR, STM32WBA54CGU6, STM32WBA54CGU6TR, STM32WBA54CGU7, STM32WBA54CGU7TR, STM32WBA54KEU6, STM32WBA54KEU6TR, STM32WBA54KEU7, STM32WBA54KEU7TR, STM32WBA54KGU6, STM32WBA54KGU6TR, STM32WBA54KGU7, STM32WBA54KGU7TR, STM32WBA55CEU6, STM32WBA55CEU6TR, STM32WBA55CEU7, STM32WBA55CEU7TR, STM32WBA55CGU6, STM32WBA55CGU6TR, STM32WBA55CGU6U, STM32WBA55CGU7, STM32WBA55CGU7TR, STM32WBA55G-DK1, STM32WBA55HEF6, STM32WBA55HEF7, STM32WBA55HGF6, STM32WBA55HGF7, STM32WBA55UEI6, STM32WBA55UEI6TR, STM32WBA55UEI7, STM32WBA55UEI7TR, STM32WBA55UGI6, STM32WBA55UGI6TR, STM32WBA55UGI7, STM32WBA55UGI7TR, STM32WBA5MMGH6TR, STM32WBA62MGF6, STM32WBA62MIF6, STM32WBA65MGF7, STM32WBA65MIF6, STM32WBA65MIF7, STM32WL30K8V6, STM32WL30KBV6, STM32WL31C8V6, STM32WL31CBV6, STM32WL31K8V6, STM32WL31KBV6, STM32WL33C8V6, STM32WL33C8V6X, STM32WL33CBV6, STM32WL33CBV6X, STM32WL33CCV6, STM32WL33CCV6A, STM32WL33CCV6X, STM32WL33K8V7, STM32WL33K8V7X, STM32WL33KBV7 , STM32WL33KBV7X, STM32WL33KCV7, STM32WL33KCV7X, STM32WL5MOCH6, STM32WL5MOCH6TR] +2025-09-20 02:03:30,602 [INFO] BoardInfo:889 - No configuration file found for board P-NUCLEO-WB55 +2025-09-20 02:03:30,604 [INFO] DbBoards:161 - Kit is not supported: P-NUCLEO-WB55 +2025-09-20 02:03:30,614 [INFO] BoardInfo:889 - No configuration file found for board STEVAL-BFA001V1B +2025-09-20 02:03:30,615 [INFO] DbBoards:161 - Kit is not supported: STEVAL-BFA001V1B +2025-09-20 02:03:30,619 [INFO] BoardInfo:889 - No configuration file found for board STEVAL-BFA001V2B +2025-09-20 02:03:30,620 [INFO] DbBoards:161 - Kit is not supported: STEVAL-BFA001V2B +2025-09-20 02:03:31,030 [INFO] DbBoards:168 - Found 212 boards, 209 are supported +2025-09-20 02:03:31,030 [INFO] DbBoards:169 - Found 212 boards, 43 of them is supported for Bsp +2025-09-20 02:03:31,039 [INFO] ApiDb:668 - CubeFinder database Data Model version=2.1 +2025-09-20 02:03:31,039 [INFO] ApiDb:669 - CubeFinder database Configuration version=3.0.39 +2025-09-20 02:03:31,040 [INFO] ApiDb:670 - CubeFinder database generation date=2025-08-25 (1756130511) +2025-09-20 02:03:31,040 [INFO] ApiDb:671 - CubeFinder database FW Pack versions=[FP-ATR-ASTRA1_V2.0.0, FP-SNS-FLIGHT1_V5.1.0, FP-SNS-MOTENV1_V5.0.0, FP-SNS-MOTENVWB1_V1.4.0, FP-SNS-SMARTAG2_V1.2.0, FP-SNS-STBOX1_V2.1.0, STM32Cube_FW_C0_V1.4.0, STM32Cube_FW_F4_V1.28.3, STM32Cube_FW_F7_V1.17.4, STM32Cube_FW_G0_V1.6.2, STM32Cube_FW_G4_V1.6.1, STM32Cube_FW_H5_V1.5.0, STM32Cube_FW_H7RS_V1.2.0, STM32Cube_FW_H7_V1.12.1, STM32Cube_FW_L0_V1.12.2, STM32Cube_FW_L4_V1.18.1, STM32Cube_FW_L5_V1.5.1, STM32Cube_FW_N6_V1.2.0, STM32Cube_FW_U0_V1.3.0, STM32Cube_FW_U3_V1.2.0, STM32Cube_FW_U5_V1.8.0, STM32Cube_FW_WB0_V1.3.0, STM32Cube_FW_WBA_V1.7.0, STM32Cube_FW_WB_V1.23.0, STM32Cube_FW_WL3_V1.2.0, STM32Cube_FW_WL_V1.3.1, X-CUBE-ALGOBUILD_V1.4.0, X-CUBE-ALS_V1.0.2, X-CUBE-AZRTOS-F4_V1.1.0, X-CUBE-AZRTOS-F7_V1.1.0, X-CUBE-AZRTOS-G0_V1.1.0, X-CUBE-AZRTOS-G4_V2.0.0, X-CUBE-AZRTOS-H7RS_V1.1.0, X-CUBE-AZRTOS-H7_V3.4.0, X-CUBE-AZRTOS-L4_V2.0.0, X-CUBE-AZRTOS-L5_V2.0.0, X-CUBE-AZRTOS-WB_V2.0.0, X-CUBE-AZRTOS-WL_V2.0.0, X-CUBE-BLE1_V7.1.0, X-CUBE-BLE2_V3.3.0, X-CUBE-BLEMGR_V4.1.0, X-CUBE-EEPRMA1_V5.2.0, X-CUBE-FREERTOS_V1.3.1, X-CUBE-GNSS1_V6.0.0, X-CUBE-MEMS1_V11.3.0, X-CUBE-NFC4_V3.0.0, X-CUBE-NFC7_V2.0.0, X-CUBE-SFXS2LP1_V4.0.0, X-CUBE-ST67W61_V1.0.0, X-CUBE-SUBG2_V5.0.0, X-CUBE-TOF1_V3.4.3] +2025-09-20 02:03:38,146 [INFO] ApiDb:240 - Found 880 in-development CPN: [B-G473E-ZEST1S, B-WB1M-WPAN1, B-WBA5M-WPAN, B-WL5M-SUBG1, NUCLEO-C031C6, NUCLEO-C051C8, NUCLEO-C071RB, NUCLEO-C092RC, NUCLEO-H503RB, NUCLEO-H533RE, NUCLEO-H563ZI, NUCLEO-H7S3L8, NUCLEO-N657X0-Q, NUCLEO-U031R8, NUCLEO-U083RC, NUCLEO-U385RG-Q, NUCLEO-U545RE-Q, NUCLEO-U5A5ZJ-Q, NUCLEO-WB05KZ, NUCLEO-WB07CC, NUCLEO-WB09KE, NUCLEO-WBA52CG, NUCLEO-WBA55CG, NUCLEO-WL33CC1, NUCLEO-WL33CC2, STEVAL-PROTEUS1, STEVAL-SMARTAG2, STEVAL-STWINBX1, STM320518-EVAL, STM32C0116-DK, STM32C011D6Y3TR, STM32C011D6Y6TR, STM32C011F4P3, STM32C011F4P6, STM32C011F4U3, STM32C011F4U6TR, STM32C011F6P3, STM32C011F6P6, STM32C011F6U3, STM32C011F6U6TR, STM32C011J4M3, STM32C011J4M6, STM32C011J6M3, STM32C011J6M6, STM32C0316-DK, STM32C031C4T3, STM32C031C4T6, STM32C031C4U3, STM32C031C4U6, STM32C031C6T3, STM32C031C6T6, STM32C031C6U3, STM32C031C6U6, STM32C031F4P3, STM32C031F4P6, STM32C031F6P3, STM32C031F6P6, STM32C031G4U3, STM32C031G4U6, STM32C031G6U3, STM32C031G6U6, STM32C031K4T3, STM32C031K4T6, STM32C031K4U3, STM32C031K4U6, STM32C031K6T3, STM32C031K6T6, STM32C031K6U3, STM32C031K6U6, STM32C051C6T6, STM32C051C6U6, STM32C051C8T6, STM32C051C8U6, STM32C051D8Y6TR, STM32C051F6P6, STM32C051F8P6, STM32C051G6U6, STM32C051G8U6, STM32C051K6T6, STM32C051K6U6, STM32C051K8T6, STM32C071C8T6, STM32C071C8T6N, STM32C071C8U6, STM32C071C8U6N, STM32C071CBT6, STM32C071CBT6N, STM32C071CBU6, STM32C071CBU6N, STM32C071F8P6, STM32C071F8P6N, STM32C071FBP6, STM32C071FBP6N, STM32C071FBY6TR, STM32C071G8U6, STM32C071G8U6N, STM32C071GBU6, STM32C071GBU6N, STM32C071K8T6, STM32C071K8T6N, STM32C071K8U6, STM32C071K8U6N, STM32C071KBT6, STM32C071KBT6N, STM32C071KBU6, STM32C071KBU6N, STM32C071R8T6, STM32C071R8T6N, STM32C071RBI6N, STM32C071RBT6, STM32C071RBT6N, STM32C091CBT6, STM32C091CBU6, STM32C091CCT6, STM32C091CCU6, STM32C091ECY6TR, STM32C091FBP6, STM32C091FCP6, STM32C091GBU6, STM32C091GCU6, STM32C091KBT6, STM32C091KBU6, STM32C091KCT6, STM32C091KCU6, STM32C091RBT6, STM32C091RCI6, STM32C091RCT6, STM32C092CBT6, STM32C092CBU6, STM32C092CCT6, STM32C092CCU6, STM32C092ECY6TR, STM32C092FBP6, STM32C092FCP6, STM32C092GBU6, STM32C092GCU6, STM32C092KBT6, STM32C092KBU6, STM32C092KCT6, STM32C092KCU6, STM32C092RBT6, STM32C092RCI6, STM32C092RCT6, STM32G071K8TXN, STM32G071K8UXN, STM32G081GBU6N, STM32G081KBT6N, STM32G081KBUXN, STM32G0B1CCT6N, STM32G0B1KCT6, STM32G0B1NEY6TR, STM32G0B1RCT6N, STM32G0C1CCT6, STM32G0C1CCT6N, STM32G0C1CCU6N, STM32G0C1CET6N, STM32G0C1CEU6N, STM32G0C1KCT6, STM32G0C1NEY6TR, STM32G0C1RCI6N, STM32G0C1RCT6N, STM32G0C1REI6N, STM32G0C1RET6N, STM32G0C1VCI6, STM32G0C1VEI6, STM32G411C6T3, STM32G411C6T6, STM32G411C6U3, STM32G411C6U6, STM32G411C8T3, STM32G411C8T6, STM32G411C8U3, STM32G411C8U6, STM32G411CBT3, STM32G411CBT6, STM32G411CBU3, STM32G411CBU6, STM32G411K6T3, STM32G411K6T6, STM32G411K6U3, STM32G411K6U6, STM32G411K8T3, STM32G411K8T6, STM32G411K8U3, STM32G411K8U6, STM32G411KBT3, STM32G411KBT6, STM32G411KBU3, STM32G411KBU6, STM32G411M6T3, STM32G411M6T6, STM32G411M8T3, STM32G411M8T6, STM32G411MBT3, STM32G411MBT6, STM32G411R6T3, STM32G411R6T6, STM32G411R8T3, STM32G411R8T6, STM32G411RBT3, STM32G411RBT6, STM32G414CBT3, STM32G414CBT6, STM32G414CBU3, STM32G414CBU6, STM32G414CCT3, STM32G414CCT6, STM32G414CCU3, STM32G414CCU6, STM32G414MBT3, STM32G414MBT6, STM32G414MCT3, STM32G414MCT6, STM32G414RBT3, STM32G414RBT6, STM32G414RCT3, STM32G414RCT6, STM32G414VBT3, STM32G414VBT6, STM32G414VCT3, STM32G414VCT6, STM32G431CBT3Z, STM32G431RBT3Z, STM32G471CCT6, STM32G471CCU6, STM32G471CET3, STM32G471CET6, STM32G471CEU3, STM32G471CEU6, STM32G471MCT6, STM32G471MET3, STM32G471MET6, STM32G471MEY6TR, STM32G471QCT6, STM32G471QET3, STM32G471RCT6, STM32G471RET3, STM32G471RET6, STM32G471VCH6, STM32G471VCI6, STM32G471VCT6, STM32G471VEH3, STM32G471VEH6, STM32G471VEI3, STM32G471VEI6, STM32G471VET3, STM32G471VET6, STM32G473QET3Z, STM32G473RET3Z, STM32G474CCT6, STM32G491RET3Z, STM32H503CBT6, STM32H503CBU6, STM32H503EBY6TR, STM32H503KBU6, STM32H503RBT6, STM32H523CCT6, STM32H523CCU6, STM32H523CET6, STM32H523CEU6, STM32H523HEY6TR, STM32H523RCT6, STM32H523RET6, STM32H523VCI6, STM32H523VCT6, STM32H523VEI6, STM32H523VET6, STM32H523ZCJ6, STM32H523ZCT6, STM32H523ZEJ6, STM32H523ZET6, STM32H533CET6, STM32H533CEU6, STM32H533HEY6TR, STM32H533RET6, STM32H533VEI6, STM32H533VET6, STM32H533ZEJ6, STM32H533ZET6, STM32H562AGI6, STM32H562AII6, STM32H562IGK6, STM32H562IGT6, STM32H562IIK6, STM32H562IIT6, STM32H562RGT6, STM32H562RGV6, STM32H562RIT6, STM32H562RIV6, STM32H562VGT6, STM32H562VIT6, STM32H562ZGT6, STM32H562ZIT6, STM32H563AGI6, STM32H563AII3Q, STM32H563AII6, STM32H563IGK6, STM32H563IGT6, STM32H563IIK3Q, STM32H563IIK6, STM32H563IIT3Q, STM32H563IIT6, STM32H563MIY3QTR, STM32H563RGT6, STM32H563RGV6, STM32H563RIT6, STM32H563RIV6, STM32H563VGT6, STM32H563VIT3Q, STM32H563VIT6, STM32H563ZGT6, STM32H563ZIT3Q, STM32H563ZIT6, STM32H573AII3Q, STM32H573AII6, STM32H573I-DK, STM32H573IIK3Q, STM32H573IIK6, STM32H573IIT3Q, STM32H573IIT6, STM32H573MIY3QTR, STM32H573RIT6, STM32H573RIV6, STM32H573VIT3Q, STM32H573VIT6, STM32H573ZIT3Q, STM32H573ZIT6, STM32H7R3A8I6, STM32H7R3I8K6, STM32H7R3I8T6, STM32H7R3L8H6, STM32H7R3L8H6H, STM32H7R3R8V6, STM32H7R3V8H6, STM32H7R3V8T6, STM32H7R3V8Y6TR, STM32H7R3Z8J6, STM32H7R3Z8T6, STM32H7R7A8I6, STM32H7R7I8K6, STM32H7R7I8T6, STM32H7R7L8H6, STM32H7R7L8H6H, STM32H7R7Z8J6, STM32H7S3A8I6, STM32H7S3I8K6, STM32H7S3I8T6, STM32H7S3L8H6, STM32H7S3L8H6H, STM32H7S3R8V6, STM32H7S3V8H6, STM32H7S3V8T6, STM32H7S3V8Y6TR, STM32H7S3Z8J6, STM32H7S3Z8T6, STM32H7S78-DK, STM32H7S7A8I6, STM32H7S7I8K6, STM32H7S7I8T6, STM32H7S7L8H6, STM32H7S7L8H6H, STM32H7S7Z8J6, STM32L4R5QGI6STR, STM32MP131AAE3, STM32MP131AAF3, STM32MP131AAG3, STM32MP131CAE3, STM32MP131CAF3, STM32MP131CAG3, STM32MP131DAE7, STM32MP131DAF7, STM32MP131DAG7, STM32MP131FAE7, STM32MP131FAF7, STM32MP131FAG7, STM32MP133AAE3, STM32MP133AAF3, STM32MP133AAG3, STM32MP133CAE3, STM32MP133CAF3, STM32MP133CAG3, STM32MP133DAE7, STM32MP133DAF7, STM32MP133DAG7, STM32MP133FAE7, STM32MP133FAF7, STM32MP133FAG7, STM32MP135AAE3, STM32MP135AAF3, STM32MP135AAG3, STM32MP135CAE3, STM32MP135CAF3, STM32MP135CAG3, STM32MP135DAE7, STM32MP135DAF7, STM32MP135DAG7, STM32MP135F-DK, STM32MP135FAE7, STM32MP135FAF7, STM32MP135FAF7T, STM32MP135FAF7U, STM32MP135FAG7, STM32MP211AAL3, STM32MP211AAM3, STM32MP211AAN3, STM32MP211AAO3, STM32MP211CAL3, STM32MP211CAM3, STM32MP211CAN3, STM32MP211CAO3, STM32MP211DAL3, STM32MP211DAM3, STM32MP211DAN3, STM32MP211DAO3, STM32MP211FAL3, STM32MP211FAM3, STM32MP211FAN3, STM32MP211FAO3, STM32MP213AAL3, STM32MP213AAM3, STM32MP213AAN3, STM32MP213AAO3, STM32MP213CAL3, STM32MP213CAM3, STM32MP213CAN3, STM32MP213CAO3, STM32MP213DAL3, STM32MP213DAM3, STM32MP213DAN3, STM32MP213DAO3, STM32MP213FAL3, STM32MP213FAM3, STM32MP213FAN3, STM32MP213FAO3, STM32MP215AAL3, STM32MP215AAM3, STM32MP215AAN3, STM32MP215AAO3, STM32MP215CAL3, STM32MP215CAM3, STM32MP215CAN3, STM32MP215CAO3, STM32MP215DAL3, STM32MP215DAM3, STM32MP215DAN3, STM32MP215DAO3, STM32MP215F-DK, STM32MP215FAL3, STM32MP215FAM3, STM32MP215FAN3, STM32MP215FAO3, STM32MP231AAJ3, STM32MP231AAK3, STM32MP231AAL3, STM32MP231CAJ3, STM32MP231CAK3, STM32MP231CAL3, STM32MP231DAJ3, STM32MP231DAK3, STM32MP231DAL3, STM32MP231FAJ3, STM32MP231FAK3, STM32MP231FAL3, STM32MP233AAJ3, STM32MP233AAK3, STM32MP233AAL3, STM32MP233CAJ3, STM32MP233CAK3, STM32MP233CAL3, STM32MP233DAJ3, STM32MP233DAK3, STM32MP233DAL3, STM32MP233FAJ3, STM32MP233FAK3, STM32MP233FAL3, STM32MP235AAJ3, STM32MP235AAK3, STM32MP235AAL3, STM32MP235CAJ3, STM32MP235CAK3, STM32MP235CAL3, STM32MP235DAJ3, STM32MP235DAK3, STM32MP235DAL3, STM32MP235FAJ3, STM32MP235FAK3, STM32MP235FAL3, STM32MP251AAI3, STM32MP251AAK3, STM32MP251AAL3, STM32MP251CAI3, STM32MP251CAK3, STM32MP251CAL3, STM32MP251DAI3, STM32MP251DAK3, STM32MP251DAL3, STM32MP251FAI3, STM32MP251FAK3, STM32MP251FAL3, STM32MP253AAI3, STM32MP253AAK3, STM32MP253AAL3, STM32MP253CAI3, STM32MP253CAK3, STM32MP253CAL3, STM32MP253DAI3, STM32MP253DAK3, STM32MP253DAL3, STM32MP253FAI3, STM32MP253FAK3, STM32MP253FAL3, STM32MP255AAI3, STM32MP255AAK3, STM32MP255AAL3, STM32MP255CAI3, STM32MP255CAK3, STM32MP255CAL3, STM32MP255DAI3, STM32MP255DAK3, STM32MP255DAL3, STM32MP255FAI3, STM32MP255FAK3, STM32MP255FAL3, STM32MP257AAI3, STM32MP257AAK3, STM32MP257AAL3, STM32MP257CAI3, STM32MP257CAK3, STM32MP257CAL3, STM32MP257DAI3, STM32MP257DAK3, STM32MP257DAL3, STM32MP257F-DK, STM32MP257F-EV1, STM32MP257FAI3, STM32MP257FAK3, STM32MP257FAL3, STM32N645A0H3Q, STM32N645B0H3Q, STM32N645I0H3Q, STM32N645L0H3Q, STM32N645X0H3Q, STM32N645Z0H3Q, STM32N647A0H3Q, STM32N647B0H3Q, STM32N647I0H3Q, STM32N647L0H3Q, STM32N647X0H3Q, STM32N647Z0H3Q, STM32N655A0H3Q, STM32N655B0H3Q, STM32N655I0H3Q, STM32N655L0H3Q, STM32N655X0H3Q, STM32N655Z0H3Q, STM32N6570-DK, STM32N657A0H3Q, STM32N657B0H3Q, STM32N657I0H3Q, STM32N657L0H3Q, STM32N657X0H3Q, STM32N657Z0H3Q, STM32U031C6T6, STM32U031C6U6, STM32U031C8T6, STM32U031C8U6, STM32U031F4P6, STM32U031F6P6, STM32U031F8P6, STM32U031G6Y6TR, STM32U031G8Y6TR, STM32U031K4U6, STM32U031K6U6, STM32U031K8U6, STM32U031R6I6, STM32U031R6T6, STM32U031R8I6, STM32U031R8T6, STM32U073C8T6, STM32U073C8U6, STM32U073CBT6, STM32U073CBU6, STM32U073CCT6, STM32U073CCU6, STM32U073H8Y6TR, STM32U073HBY6TR, STM32U073HCY6TR, STM32U073K8U6, STM32U073KBU6, STM32U073KCU6, STM32U073M8I6, STM32U073M8T6, STM32U073MBI6, STM32U073MBT6, STM32U073MCI6, STM32U073MCT6, STM32U073R8I6, STM32U073R8T6, STM32U073RBI6, STM32U073RBT6, STM32U073RCI6, STM32U073RCT6, STM32U083C-DK, STM32U083CCT6, STM32U083CCU6, STM32U083HCY6TR, STM32U083KCU6, STM32U083MCI6, STM32U083MCT6, STM32U083RCI6, STM32U083RCT6, STM32U375CET6, STM32U375CET6Q, STM32U375CEU6, STM32U375CEU6Q, STM32U375CEY6QTR, STM32U375CGT6, STM32U375CGT6Q, STM32U375CGU6, STM32U375CGU6Q, STM32U375CGY6QTR, STM32U375KEU6, STM32U375KGU6, STM32U375REI6, STM32U375REI6Q, STM32U375RET6, STM32U375RET6Q, STM32U375REY6GTR, STM32U375REY6QTR, STM32U375RGI6, STM32U375RGI6Q, STM32U375RGT6, STM32U375RGT6Q, STM32U375RGY6GTR, STM32U375RGY6QTR, STM32U375VEI6, STM32U375VEI6Q, STM32U375VET6, STM32U375VET6Q, STM32U375VGI6, STM32U375VGI6Q, STM32U375VGT6, STM32U375VGT6Q, STM32U385CGT6, STM32U385CGT6Q, STM32U385CGU6, STM32U385CGU6Q, STM32U385CGY6QTR, STM32U385KGU6, STM32U385RGI6, STM32U385RGI6Q, STM32U385RGT6, STM32U385RGT6Q, STM32U385RGY6GTR, STM32U385RGY6QTR, STM32U385VGI6, STM32U385VGI6Q, STM32U385VGT6, STM32U385VGT6Q, STM32U535CBT6, STM32U535CBT6Q, STM32U535CBU6, STM32U535CBU6Q, STM32U535CCT6, STM32U535CCT6Q, STM32U535CCU6, STM32U535CCU6Q, STM32U535CET6, STM32U535CET6Q, STM32U535CEU6, STM32U535CEU6Q, STM32U535JEY6QTR, STM32U535NCY6QTR, STM32U535NEY6QTR, STM32U535RBI6, STM32U535RBI6Q, STM32U535RBT6, STM32U535RBT6Q, STM32U535RCI6, STM32U535RCI6Q, STM32U535RCT6, STM32U535RCT6Q, STM32U535REI6, STM32U535REI6Q, STM32U535RET6, STM32U535RET6Q, STM32U535VCI6, STM32U535VCI6Q, STM32U535VCT6, STM32U535VCT6Q, STM32U535VEI6, STM32U535VEI6Q, STM32U535VET6, STM32U535VET6Q, STM32U545CET6, STM32U545CET6Q, STM32U545CEU6, STM32U545CEU6Q, STM32U545JEY6QTR, STM32U545NEY6QTR, STM32U545REI6, STM32U545REI6Q, STM32U545RET6, STM32U545RET6Q, STM32U545VEI6, STM32U545VEI6Q, STM32U545VET6, STM32U545VET6Q, STM32U595AIH6, STM32U595AIH6Q, STM32U595AJH6, STM32U595AJH6Q, STM32U595QII6, STM32U595QII6Q, STM32U595QJI6, STM32U595QJI6Q, STM32U595RIT6, STM32U595RIT6Q, STM32U595RJT6, STM32U595RJT6Q, STM32U595VIT6, STM32U595VIT6Q, STM32U595VJT6, STM32U595VJT6Q, STM32U595ZIT6, STM32U595ZIT6Q, STM32U595ZIY6QTR, STM32U595ZJT6, STM32U595ZJT6Q, STM32U595ZJY6QTR, STM32U599BJY6QTR, STM32U599NIH6Q, STM32U599NJH6Q, STM32U599VIT6Q, STM32U599VJT6, STM32U599VJT6Q, STM32U599ZIT6Q, STM32U599ZIY6QTR, STM32U599ZJT6Q, STM32U599ZJY6QTR, STM32U5A5AJH6, STM32U5A5AJH6Q, STM32U5A5QII3Q , STM32U5A5QJI6, STM32U5A5QJI6Q, STM32U5A5RJT6, STM32U5A5RJT6Q, STM32U5A5VJT6, STM32U5A5VJT6Q, STM32U5A5ZJT6, STM32U5A5ZJT6Q, STM32U5A5ZJY6QTR, STM32U5A9BJY6QTR, STM32U5A9J-DK, STM32U5A9NJH6Q, STM32U5A9VJT6Q, STM32U5A9ZJT6Q, STM32U5A9ZJY6QTR, STM32U5F7VIT6, STM32U5F7VIT6Q, STM32U5F7VJT6, STM32U5F7VJT6Q, STM32U5F9BJY6QTR, STM32U5F9NJH6Q, STM32U5F9VIT6Q, STM32U5F9VJT6Q, STM32U5F9ZIJ6QTR, STM32U5F9ZIT6Q, STM32U5F9ZJJ6QTR, STM32U5F9ZJT6Q, STM32U5G7VJT6, STM32U5G7VJT6Q, STM32U5G9BJY6QTR, STM32U5G9J-DK1, STM32U5G9J-DK2, STM32U5G9NJH6Q, STM32U5G9VJT6Q, STM32U5G9ZJJ6QTR, STM32U5G9ZJT6Q, STM32WB05KZV6TR, STM32WB05KZV7TR, STM32WB05TZF6TR, STM32WB05TZF7TR, STM32WB06CCF6TR, STM32WB06CCF7TR, STM32WB06CCV6TR, STM32WB06CCV7TR, STM32WB06KCV6TR, STM32WB06KCV7TR, STM32WB07CCF6TR, STM32WB07CCF7TR, STM32WB07CCV6TR, STM32WB07CCV7TR, STM32WB07KCV6TR, STM32WB07KCV7TR, STM32WB09KEV6TR, STM32WB09KEV7TR, STM32WB09TEF6TR, STM32WB09TEF7TR, STM32WB1MMCH6, STM32WBA50KGU6, STM32WBA50KGU6TR, STM32WBA52CEU6, STM32WBA52CEU6TR, STM32WBA52CEU7, STM32WBA52CEU7TR, STM32WBA52CGU6, STM32WBA52CGU6TR, STM32WBA52CGU6U, STM32WBA52CGU7, STM32WBA52CGU7TR, STM32WBA52KEU6, STM32WBA52KEU6TR, STM32WBA52KGU6, STM32WBA52KGU6TR, STM32WBA54CEU6, STM32WBA54CEU6TR, STM32WBA54CEU7, STM32WBA54CEU7TR, STM32WBA54CGU6, STM32WBA54CGU6TR, STM32WBA54CGU7, STM32WBA54CGU7TR, STM32WBA54KEU6, STM32WBA54KEU6TR, STM32WBA54KEU7, STM32WBA54KEU7TR, STM32WBA54KGU6, STM32WBA54KGU6TR, STM32WBA54KGU7, STM32WBA54KGU7TR, STM32WBA55CEU6, STM32WBA55CEU6TR, STM32WBA55CEU7, STM32WBA55CEU7TR, STM32WBA55CGU6, STM32WBA55CGU6TR, STM32WBA55CGU6U, STM32WBA55CGU7, STM32WBA55CGU7TR, STM32WBA55G-DK1, STM32WBA55HEF6, STM32WBA55HEF7, STM32WBA55HGF6, STM32WBA55HGF7, STM32WBA55UEI6, STM32WBA55UEI6TR, STM32WBA55UEI7, STM32WBA55UEI7TR, STM32WBA55UGI6, STM32WBA55UGI6TR, STM32WBA55UGI7, STM32WBA55UGI7TR, STM32WBA5MMGH6TR, STM32WBA62MGF6, STM32WBA62MIF6, STM32WBA65MGF7, STM32WBA65MIF6, STM32WBA65MIF7, STM32WL30K8V6, STM32WL30KBV6, STM32WL31C8V6, STM32WL31CBV6, STM32WL31K8V6, STM32WL31KBV6, STM32WL33C8V6, STM32WL33C8V6X, STM32WL33CBV6, STM32WL33CBV6X, STM32WL33CCV6, STM32WL33CCV6A, STM32WL33CCV6X, STM32WL33K8V7, STM32WL33K8V7X, STM32WL33KBV7 , STM32WL33KBV7X, STM32WL33KCV7, STM32WL33KCV7X, STM32WL5MOCH6, STM32WL5MOCH6TR] +2025-09-20 02:03:38,160 [INFO] DbMcus:218 - Found 4801 MCUs, 4801 are supported +2025-09-20 02:03:38,161 [INFO] ApiDb:423 - Load user favorites file /home/ja/.stm32cubeide/favorites.mcus.txt: 0 item(s) +2025-09-20 02:03:38,162 [INFO] ApiDb:427 - User favorites MCUs=[] +2025-09-20 02:03:38,162 [INFO] DbMcus:224 - Set 0 / 0 favorites MCUs +2025-09-20 02:03:39,907 [INFO] ApiDb:414 - User favorites file not found: /home/ja/.stm32cubeide/favorites.boards.txt +2025-09-20 02:03:39,908 [INFO] DbBoards:198 - Set 0 / 0 favorites Boards +2025-09-20 02:03:39,963 [INFO] UtilMem:75 - End LoadConfig() Used Memory: 681168496 Bytes (912261120) +2025-09-20 02:03:40,343 [WARN] ThirdParty:833 - waiting for thirdparty lock release [change project] +2025-09-20 02:03:40,344 [INFO] ThirdParty:835 - entering critical section [change project] +2025-09-20 02:03:40,344 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-PM33A1 1.0.0 +2025-09-20 02:03:40,344 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USBPD 4.1 +2025-09-20 02:03:40,345 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC9 1.0.0 +2025-09-20 02:03:40,345 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 2.0.0 +2025-09-20 02:03:40,345 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENVWB1 1.4.0 +2025-09-20 02:03:40,345 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F4 1.1.0 +2025-09-20 02:03:40,345 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics LIBJPEG 8.0.0 +2025-09-20 02:03:40,345 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-ASTRA1 2.0.2 +2025-09-20 02:03:40,345 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSL 5.8.2 +2025-09-20 02:03:40,345 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE1 7.1.0 +2025-09-20 02:03:40,345 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Avnet-IotConnect X-CUBE-IoTC-DA16k-PMOD 1.0.0 +2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SMBUS 2.1.0 +2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfMQTT 1.19.2 +2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 3.0.0 +2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ISPU 2.1.0 +2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-EEPRMA1 5.2.0 +2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLEMGR 4.1.0 +2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WB 2.0.0 +2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST60 1.0.0 +2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-GNSS1 7.0.1 +2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC12 1.0.0 +2025-09-20 02:03:40,346 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F7 1.1.0 +2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L5 2.0.0 +2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOUCHGFX 4.25.0 +2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 2.0.0 +2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC6 3.1.0 +2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :quantropi X-CUBE-qispace-sdk-base 2.1.0 +2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FreeRTOS 0.0.1 +2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G0 1.1.0 +2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SAFEA1 1.2.2 +2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC4 3.0.0 +2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SUBG2 5.0.0 +2025-09-20 02:03:40,347 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7RS 1.1.0 +2025-09-20 02:03:40,348 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics STM32_WPAN 1.0.0 +2025-09-20 02:03:40,348 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :EmbeddedOffice I-CUBE-FS-RTOS 1.0.1 +2025-09-20 02:03:40,348 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.0.3 +2025-09-20 02:03:40,348 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :WES I-CUBE-Cesium 1.4.0 +2025-09-20 02:03:40,348 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Cesanta I-CUBE-Mongoose 7.13.0 +2025-09-20 02:03:40,348 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 1.0.0 +2025-09-20 02:03:40,348 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Infineon AIROC-Wi-Fi-Bluetooth-STM32 1.7.1 +2025-09-20 02:03:40,348 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G4 2.0.0 +2025-09-20 02:03:40,348 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-WB05N 2.0.0 +2025-09-20 02:03:40,349 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.1.0 +2025-09-20 02:03:40,349 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.3.0 +2025-09-20 02:03:40,349 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfTPM 3.8.0 +2025-09-20 02:03:40,349 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7 3.4.0 +2025-09-20 02:03:40,349 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DISPLAY 3.0.0 +2025-09-20 02:03:40,349 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSH 1.4.20 +2025-09-20 02:03:40,350 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC7 2.0.0 +2025-09-20 02:03:40,350 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TCPP 4.2.0 +2025-09-20 02:03:40,350 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :RealThread X-CUBE-RT-Thread_Nano 4.1.1 +2025-09-20 02:03:40,350 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-SIGFOX1 3.2.0 +2025-09-20 02:03:40,350 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC10 1.0.0 +2025-09-20 02:03:40,350 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-FREERTOS 1.3.1 +2025-09-20 02:03:40,351 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics HAL Drivers 0.0.0 +2025-09-20 02:03:40,351 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.16.2 +2025-09-20 02:03:40,351 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-IPS 3.1.0 +2025-09-20 02:03:40,351 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALS 1.0.2 +2025-09-20 02:03:40,351 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :emotas I-CUBE-CANOPEN 1.3.0 +2025-09-20 02:03:40,351 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.14.1 +2025-09-20 02:03:40,351 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :ITTIA_DB I-CUBE-ITTIADB 8.9.0 +2025-09-20 02:03:40,351 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-STSE01 1.0.0 +2025-09-20 02:03:40,352 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :portGmbH I-Cube-SoM-uGOAL 1.1.0 +2025-09-20 02:03:40,352 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST67W61 1.0.0 +2025-09-20 02:03:40,352 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STBOX1 2.1.0 +2025-09-20 02:03:40,352 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AI 10.2.0 +2025-09-20 02:03:40,352 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STAIOTCFT 1.0.0 +2025-09-20 02:03:40,352 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 1.0.0 +2025-09-20 02:03:40,352 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-SMARTAG2 1.2.0 +2025-09-20 02:03:40,352 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-FLIGHT1 5.1.0 +2025-09-20 02:03:40,352 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WL 2.0.0 +2025-09-20 02:03:40,352 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :SEGGER I-CUBE-embOS 1.3.1 +2025-09-20 02:03:40,353 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALGOBUILD 1.4.0 +2025-09-20 02:03:40,353 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DPower 1.3.0 +2025-09-20 02:03:40,353 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-MEMS1 11.3.0 +2025-09-20 02:03:40,353 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENV1 5.0.0 +2025-09-20 02:03:40,353 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 1.0.0 +2025-09-20 02:03:40,353 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L4 2.0.0 +2025-09-20 02:03:40,353 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 0.0.2 +2025-09-20 02:03:40,354 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.1.2 +2025-09-20 02:03:40,354 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SFXS2LP1 4.0.0 +2025-09-20 02:03:40,354 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE2 3.3.0 +2025-09-20 02:03:40,354 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOF1 3.4.3 +2025-09-20 02:03:40,354 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.2.0 +2025-09-20 02:03:40,354 [INFO] ThirdParty:841 - exiting critical section [change project] +2025-09-20 02:03:41,895 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-09-20 02:03:41,900 [INFO] PinOutPanel:1589 - setPackage(STM32F429ZITx,LQFP144) +2025-09-20 02:03:43,685 [INFO] UtilMem:75 - Before build in PCC Used Memory: 660889184 Bytes (931135488) +2025-09-20 02:03:46,004 [INFO] UtilMem:75 - After build in PCC Used Memory: 884374320 Bytes (931135488) +2025-09-20 02:03:46,293 [INFO] ApiDbMcu:532 - Load IP Config File for FREERTOS +2025-09-20 02:03:46,376 [INFO] ApiDbMcu:532 - Load IP Config File for USB_HOST +2025-09-20 02:03:46,668 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,671 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,672 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,672 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,672 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,675 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,676 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,676 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,677 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,677 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,678 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,678 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,679 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,679 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,680 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,680 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,681 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,681 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,682 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,682 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,683 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,684 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,685 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,686 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,687 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,687 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,688 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,689 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,690 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,691 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,754 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,763 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,763 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,764 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,764 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,765 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,766 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,767 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,768 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,769 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,769 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,769 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,770 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,770 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,770 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,771 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,771 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,771 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,772 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,773 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,773 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,775 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,778 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,785 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,787 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,790 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,792 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,794 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,801 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,808 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,814 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,817 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,820 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,822 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,824 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,826 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:03:46,856 [INFO] ApiDbMcu:532 - Load IP Config File for PDM2PCM +2025-09-20 02:03:47,093 [WARN] FreeRTOS:1023 - Null or empty value: should not occur! (nothing added to the table) +2025-09-20 02:03:48,720 [INFO] CADModel:165 - CPN selected for project levelSTM32F429ZIT6 +2025-09-20 02:03:48,720 [INFO] CADModel:114 - Register for checkConnection events +2025-09-20 02:03:48,733 [INFO] RtosManager:728 - Active RTOS found at IOC load: FREERTOS [Cortex-M4NS] +2025-09-20 02:03:48,834 [INFO] OpenFileManager:386 - Restore cursor +2025-09-20 02:03:49,932 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:04:53,421 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:04:53,688 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:04:53,879 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:05:07,215 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:05:07,460 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:05:07,670 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:05:24,373 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:05:24,615 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:05:24,812 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:06:43,157 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:07:00,737 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:07:03,844 [INFO] CADModel:198 - CPN selected (Project mode): STM32F429ZIT6 +2025-09-20 02:07:03,844 [INFO] CADModel:200 - Internet connection configuration mode: 1 +2025-09-20 02:07:03,844 [INFO] CADModel:203 - rpn retrievedSTM32F429ZI +2025-09-20 02:07:03,852 [INFO] WebAppUi:336 - Instantiating new browser for Project +2025-09-20 02:07:04,060 [INFO] WebAppUi:1235 - Register for checkConnection events +2025-09-20 02:07:04,061 [INFO] WebAppUi:1270 - Apply proxy settings +2025-09-20 02:07:04,062 [INFO] WebAppUi:1308 - Chromium requires no authentication +2025-09-20 02:07:04,063 [INFO] WebAppUi:1294 - Direct internet connection detected +2025-09-20 02:07:04,075 [INFO] WebAppUi:1166 - Web application path used /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659/db/plugins/mcufinder/reactClient/index.html +2025-09-20 02:07:04,099 [INFO] WebAppUi:938 - Path where api_config.json is located /home/ja/.stmcufinder/plugins/mcufinder//mcu/api_config.json +2025-09-20 02:07:04,100 [INFO] WebAppUi:939 - Setting api config in window object +2025-09-20 02:07:04,163 [INFO] WebAppUi:947 - Path where cad_preferences.json is located /home/ja/.stm32cubeide/ +2025-09-20 02:07:04,163 [INFO] WebAppUi:948 - Setting consent info in window object +2025-09-20 02:07:05,379 [INFO] WebAppUi:843 - Allow Downloads +2025-09-20 02:07:05,381 [INFO] WebAppUi:336 - Instantiating new browser for Finder +2025-09-20 02:07:05,604 [INFO] WebAppUi:1100 - Web application message: [UlApiManager component] Connected to Ultra Librarian SSO +2025-09-20 02:07:05,604 [INFO] WebAppUi:1100 - Web application message: [UlApiManager component] Connected to Ultra Librarian API +2025-09-20 02:07:05,642 [INFO] WebAppUi:1235 - Register for checkConnection events +2025-09-20 02:07:05,642 [INFO] WebAppUi:1270 - Apply proxy settings +2025-09-20 02:07:05,643 [INFO] WebAppUi:1308 - Chromium requires no authentication +2025-09-20 02:07:05,643 [INFO] WebAppUi:1294 - Direct internet connection detected +2025-09-20 02:07:05,659 [INFO] WebAppUi:1166 - Web application path used /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659/db/plugins/mcufinder/reactClient/index.html +2025-09-20 02:07:05,685 [INFO] WebAppUi:938 - Path where api_config.json is located /home/ja/.stmcufinder/plugins/mcufinder//mcu/api_config.json +2025-09-20 02:07:05,685 [INFO] WebAppUi:939 - Setting api config in window object +2025-09-20 02:07:05,741 [INFO] WebAppUi:947 - Path where cad_preferences.json is located /home/ja/.stm32cubeide/ +2025-09-20 02:07:05,741 [INFO] WebAppUi:948 - Setting consent info in window object +2025-09-20 02:07:06,876 [INFO] WebAppUi:843 - Allow Downloads +2025-09-20 02:07:06,877 [INFO] WebAppUi:664 - RPN selected STM32F429ZI +2025-09-20 02:07:06,877 [INFO] WebAppUi:665 - RefName selected STM32F429ZITx +2025-09-20 02:07:06,878 [INFO] WebAppUi:666 - CPN selected STM32F429ZIT6 +2025-09-20 02:07:06,881 [INFO] WebAppUi:829 - Which Bigleton in use 2 and which CPN is about STM32F429ZIT6 +2025-09-20 02:07:06,891 [INFO] WebAppUi:703 - Have injected Javascript into web application +2025-09-20 02:07:06,892 [INFO] WebAppUiContainer:153 - Web application run mode: Project CPN: STM32F429ZIT6 +2025-09-20 02:07:09,274 [INFO] WebAppUi:938 - Path where api_config.json is located /home/ja/.stmcufinder/plugins/mcufinder//mcu/api_config.json +2025-09-20 02:07:09,275 [INFO] WebAppUi:939 - Setting api config in window object +2025-09-20 02:07:09,326 [INFO] WebAppUi:947 - Path where cad_preferences.json is located /home/ja/.stm32cubeide/ +2025-09-20 02:07:09,326 [INFO] WebAppUi:948 - Setting consent info in window object +2025-09-20 02:07:09,619 [INFO] WebAppUi:1100 - Web application message: THREE.WebGLRenderer 101 +2025-09-20 02:07:13,023 [INFO] WebAppUi:305 - Path where cad_preferences.json is located /home/ja/.stm32cubeide/ +2025-09-20 02:07:13,023 [INFO] WebAppUi:306 - Updating consent from JSON file +2025-09-20 02:07:13,030 [INFO] WebAppUi:305 - Path where cad_preferences.json is located /home/ja/.stm32cubeide/ +2025-09-20 02:07:13,030 [INFO] WebAppUi:306 - Updating consent from JSON file +2025-09-20 02:07:13,040 [INFO] WebAppUi:305 - Path where cad_preferences.json is located /home/ja/.stm32cubeide/ +2025-09-20 02:07:13,041 [INFO] WebAppUi:306 - Updating consent from JSON file +2025-09-20 02:07:13,714 [INFO] WebAppUi:305 - Path where cad_preferences.json is located /home/ja/.stm32cubeide/ +2025-09-20 02:07:13,714 [INFO] WebAppUi:306 - Updating consent from JSON file +2025-09-20 02:07:13,720 [INFO] WebAppUi:305 - Path where cad_preferences.json is located /home/ja/.stm32cubeide/ +2025-09-20 02:07:13,721 [INFO] WebAppUi:306 - Updating consent from JSON file +2025-09-20 02:07:13,726 [INFO] WebAppUi:305 - Path where cad_preferences.json is located /home/ja/.stm32cubeide/ +2025-09-20 02:07:13,726 [INFO] WebAppUi:306 - Updating consent from JSON file +2025-09-20 02:07:15,502 [INFO] MainUpdater:2872 - connection check result : 10 +2025-09-20 02:07:15,502 [INFO] MainUpdater:2872 - connection check result : 10 +2025-09-20 02:07:16,705 [INFO] MicroXplorer:468 - Change Database Path : +2025-09-20 02:07:16,705 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-09-20 02:07:16,731 [ERROR] ProjectManagerView:395 - +java.lang.NullPointerException: Cannot invoke "javax.swing.JTextField.getText()" because the return value of "java.util.List.get(int)" is null + at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab$9.caretUpdate(ProjectChoiceTab.java:2706) ~[filemanager.jar:?] + at javax.swing.text.JTextComponent.fireCaretUpdate(JTextComponent.java:408) ~[?:?] + at javax.swing.text.JTextComponent$MutableCaretEvent.fire(JTextComponent.java:4484) ~[?:?] + at javax.swing.text.JTextComponent$MutableCaretEvent.stateChanged(JTextComponent.java:4506) ~[?:?] + at javax.swing.text.DefaultCaret.fireStateChanged(DefaultCaret.java:857) ~[?:?] + at javax.swing.text.DefaultCaret.changeCaretPosition(DefaultCaret.java:1343) ~[?:?] + at javax.swing.text.DefaultCaret.handleSetDot(DefaultCaret.java:1242) ~[?:?] + at javax.swing.text.DefaultCaret.setDot(DefaultCaret.java:1223) ~[?:?] + at javax.swing.text.DefaultCaret$Handler.insertUpdate(DefaultCaret.java:1819) ~[?:?] + at javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:227) ~[?:?] + at javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:781) ~[?:?] + at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:740) ~[?:?] + at javax.swing.text.PlainDocument.insertString(PlainDocument.java:131) ~[?:?] + at javax.swing.text.AbstractDocument.replace(AbstractDocument.java:699) ~[?:?] + at javax.swing.text.JTextComponent.setText(JTextComponent.java:1725) ~[?:?] + at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.createHeapStackFields(ProjectChoiceTab.java:993) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.buildLinkSettingsPanel(ProjectChoiceTab.java:3813) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.defineWindowsFields(ProjectChoiceTab.java:1987) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.updateSettings(ProjectChoiceTab.java:558) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.projectmanager.gui.ProjectSettingsPanel.UpdateDialog(ProjectSettingsPanel.java:247) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.projectmanager.ProjectManagerView.propertyChange(ProjectManagerView.java:392) ~[filemanager.jar:?] + at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:343) ~[?:?] + at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:335) ~[?:?] + at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:268) ~[?:?] + at com.st.microxplorer.util.MXPropertyChangeSupport.firePropertyChange(MXPropertyChangeSupport.java:54) ~[STM32CubeMX.jar:?] + at com.st.microxplorer.mxsystem.MxSystem.closeConfig(MxSystem.java:899) ~[STM32CubeMX.jar:?] + at com.st.microxplorer.maingui.MainPanel.closeConfig(MainPanel.java:792) ~[STM32CubeMX.jar:?] + at com.st.microxplorer.plugins.filemanager.engine.OpenFileManager.loadConfigurationFile(OpenFileManager.java:288) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.filemanager.engine.MainFileManager.userLoadConfig(MainFileManager.java:364) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.filemanager.engine.MainFileManager.userLoadConfig(MainFileManager.java:342) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.filemanager.FileManagerView.getSpecificTask(FileManagerView.java:264) ~[filemanager.jar:?] + at com.st.stm32cube.common.mx.editor.CubeMxEditor.getMxTabbedPaneInstance(CubeMxEditor.java:1198) ~[com.st.stm32cube.common.mx_6.15.0.202507011659/:?] + at com.st.stm32cube.common.mx.editor.CubeMxEditor$12$1.createSwingComponent(CubeMxEditor.java:1068) ~[com.st.stm32cube.common.mx_6.15.0.202507011659/:?] + at com.st.stm32cube.common.mx.oss.core.awtswtbridge.EmbeddedSwingComposite.doComponentCreation(EmbeddedSwingComposite.java:492) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?] + at com.st.stm32cube.common.mx.oss.core.awtswtbridge.EmbeddedSwingComposite$4.run(EmbeddedSwingComposite.java:291) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?] + at com.st.stm32cube.common.mx.oss.core.awtswtbridge.AwtEnvironment$2.run(AwtEnvironment.java:166) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?] + at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) ~[?:?] + at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) ~[?:?] + at java.awt.EventQueue$4.run(EventQueue.java:720) ~[?:?] + at java.awt.EventQueue$4.run(EventQueue.java:714) ~[?:?] + at java.security.AccessController.doPrivileged(AccessController.java:400) ~[?:?] + at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) ~[?:?] + at java.awt.EventQueue.dispatchEvent(EventQueue.java:742) ~[?:?] + at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) ~[?:?] + at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) ~[?:?] + at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) ~[?:?] + at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) ~[?:?] + at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) ~[?:?] + at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) ~[?:?] +2025-09-20 02:07:16,742 [WARN] ThirdParty:871 - waiting for thirdparty lock release [close project] +2025-09-20 02:07:16,743 [INFO] ThirdParty:873 - entering critical section [close project] +2025-09-20 02:07:16,743 [INFO] ThirdParty:883 - exiting critical section [close project] +2025-09-20 02:07:16,747 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-09-20 02:07:16,779 [WARN] IpParametersView:155 - Warning: This peripheral hasn't parameters +2025-09-20 02:07:16,806 [WARN] MainPanel:289 -
Warning: This peripheral has no parameters to be configured
+2025-09-20 02:07:16,824 [INFO] UtilMem:75 - Begin LoadConfig() Used Memory: 937710736 Bytes (1073741824) +2025-09-20 02:07:16,826 [INFO] MicroXplorer:468 - Change Database Path : +2025-09-20 02:07:16,826 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-09-20 02:07:16,826 [INFO] OpenFileManager:355 - Change cursor +2025-09-20 02:07:16,844 [INFO] Mcu:2029 - Initializing MCU STM32F429ZITx STM32F429ZITx STM32F429ZIT6 +2025-09-20 02:07:20,064 [INFO] Context:786 - Trying to add GPIOservice into a context which must be forbidden +2025-09-20 02:07:20,970 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) Pin98 (VP_RIF_VS_RIF1) cannot be retrieved for this MCU +2025-09-20 02:07:21,028 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS, mode=CMSIS_V1, owner=FREERTOS +2025-09-20 02:07:21,029 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS2, mode=CMSIS_V2, owner=FREERTOS +2025-09-20 02:07:21,029 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V1, owner=FREERTOS +2025-09-20 02:07:21,029 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V2, owner=FREERTOS +2025-09-20 02:07:21,029 [WARN] ModelIntegratedComponent:184 - Missing modes for component STMicroelectronics:FreeRTOS:0.0.1:STMicroelectronics:RTOS:FreeRTOS:Core:::10.2.0: +2025-09-20 02:07:21,044 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,045 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,046 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,046 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,046 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,046 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,046 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,046 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,046 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,046 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,046 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,046 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,047 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,048 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,048 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,048 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,048 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,048 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,048 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,048 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,048 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,048 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,048 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,049 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:07:21,049 [WARN] ModelPack:524 - Component already loaded: STMicroelectronics:HAL Drivers:0.0.0:STMicroelectronics:Device:STMicro_Driver:XSPI:HAL::0.0.1:HAL_XSPI +2025-09-20 02:07:21,238 [INFO] ThirdPartyModel:298 - Start build external matchings +2025-09-20 02:07:22,430 [INFO] ThirdPartyModel:316 - End build external matchings +2025-09-20 02:07:22,458 [INFO] RtosManager:1018 - Current active RTOS is FREERTOS [Cortex-M4NS] +2025-09-20 02:07:22,473 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:07:22,474 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Invalid parameter (FamilyName) +2025-09-20 02:07:22,475 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Parameter (RTCHSEDivFreq_Value) has invalid value (4000000) +2025-09-20 02:07:22,781 [INFO] UtilMem:75 - End LoadConfig() Used Memory: 898155800 Bytes (1073741824) +2025-09-20 02:07:22,800 [WARN] ThirdParty:833 - waiting for thirdparty lock release [change project] +2025-09-20 02:07:22,800 [INFO] ThirdParty:835 - entering critical section [change project] +2025-09-20 02:07:22,801 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-PM33A1 1.0.0 +2025-09-20 02:07:22,801 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USBPD 4.1 +2025-09-20 02:07:22,801 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC9 1.0.0 +2025-09-20 02:07:22,801 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 2.0.0 +2025-09-20 02:07:22,801 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENVWB1 1.4.0 +2025-09-20 02:07:22,801 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F4 1.1.0 +2025-09-20 02:07:22,801 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics LIBJPEG 8.0.0 +2025-09-20 02:07:22,801 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-ASTRA1 2.0.2 +2025-09-20 02:07:22,801 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSL 5.8.2 +2025-09-20 02:07:22,802 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE1 7.1.0 +2025-09-20 02:07:22,802 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Avnet-IotConnect X-CUBE-IoTC-DA16k-PMOD 1.0.0 +2025-09-20 02:07:22,802 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SMBUS 2.1.0 +2025-09-20 02:07:22,802 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfMQTT 1.19.2 +2025-09-20 02:07:22,802 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 3.0.0 +2025-09-20 02:07:22,802 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ISPU 2.1.0 +2025-09-20 02:07:22,803 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-EEPRMA1 5.2.0 +2025-09-20 02:07:22,803 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLEMGR 4.1.0 +2025-09-20 02:07:22,803 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WB 2.0.0 +2025-09-20 02:07:22,803 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST60 1.0.0 +2025-09-20 02:07:22,803 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-GNSS1 7.0.1 +2025-09-20 02:07:22,803 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC12 1.0.0 +2025-09-20 02:07:22,803 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F7 1.1.0 +2025-09-20 02:07:22,804 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L5 2.0.0 +2025-09-20 02:07:22,804 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOUCHGFX 4.25.0 +2025-09-20 02:07:22,804 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 2.0.0 +2025-09-20 02:07:22,804 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC6 3.1.0 +2025-09-20 02:07:22,804 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :quantropi X-CUBE-qispace-sdk-base 2.1.0 +2025-09-20 02:07:22,804 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FreeRTOS 0.0.1 +2025-09-20 02:07:22,804 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G0 1.1.0 +2025-09-20 02:07:22,805 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SAFEA1 1.2.2 +2025-09-20 02:07:22,805 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC4 3.0.0 +2025-09-20 02:07:22,805 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SUBG2 5.0.0 +2025-09-20 02:07:22,805 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7RS 1.1.0 +2025-09-20 02:07:22,805 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics STM32_WPAN 1.0.0 +2025-09-20 02:07:22,805 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :EmbeddedOffice I-CUBE-FS-RTOS 1.0.1 +2025-09-20 02:07:22,805 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.0.3 +2025-09-20 02:07:22,805 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :WES I-CUBE-Cesium 1.4.0 +2025-09-20 02:07:22,805 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Cesanta I-CUBE-Mongoose 7.13.0 +2025-09-20 02:07:22,805 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 1.0.0 +2025-09-20 02:07:22,806 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Infineon AIROC-Wi-Fi-Bluetooth-STM32 1.7.1 +2025-09-20 02:07:22,806 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G4 2.0.0 +2025-09-20 02:07:22,806 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-WB05N 2.0.0 +2025-09-20 02:07:22,806 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.1.0 +2025-09-20 02:07:22,806 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.3.0 +2025-09-20 02:07:22,806 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfTPM 3.8.0 +2025-09-20 02:07:22,806 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7 3.4.0 +2025-09-20 02:07:22,806 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DISPLAY 3.0.0 +2025-09-20 02:07:22,806 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSH 1.4.20 +2025-09-20 02:07:22,807 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC7 2.0.0 +2025-09-20 02:07:22,807 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TCPP 4.2.0 +2025-09-20 02:07:22,807 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :RealThread X-CUBE-RT-Thread_Nano 4.1.1 +2025-09-20 02:07:22,807 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-SIGFOX1 3.2.0 +2025-09-20 02:07:22,807 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC10 1.0.0 +2025-09-20 02:07:22,807 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-FREERTOS 1.3.1 +2025-09-20 02:07:22,807 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics HAL Drivers 0.0.0 +2025-09-20 02:07:22,807 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.16.2 +2025-09-20 02:07:22,807 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-IPS 3.1.0 +2025-09-20 02:07:22,808 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALS 1.0.2 +2025-09-20 02:07:22,808 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :emotas I-CUBE-CANOPEN 1.3.0 +2025-09-20 02:07:22,808 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.14.1 +2025-09-20 02:07:22,808 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :ITTIA_DB I-CUBE-ITTIADB 8.9.0 +2025-09-20 02:07:22,808 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-STSE01 1.0.0 +2025-09-20 02:07:22,808 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :portGmbH I-Cube-SoM-uGOAL 1.1.0 +2025-09-20 02:07:22,809 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST67W61 1.0.0 +2025-09-20 02:07:22,809 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STBOX1 2.1.0 +2025-09-20 02:07:22,809 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AI 10.2.0 +2025-09-20 02:07:22,809 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STAIOTCFT 1.0.0 +2025-09-20 02:07:22,809 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 1.0.0 +2025-09-20 02:07:22,809 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-SMARTAG2 1.2.0 +2025-09-20 02:07:22,809 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-FLIGHT1 5.1.0 +2025-09-20 02:07:22,810 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WL 2.0.0 +2025-09-20 02:07:22,810 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :SEGGER I-CUBE-embOS 1.3.1 +2025-09-20 02:07:22,810 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALGOBUILD 1.4.0 +2025-09-20 02:07:22,810 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DPower 1.3.0 +2025-09-20 02:07:22,810 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-MEMS1 11.3.0 +2025-09-20 02:07:22,810 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENV1 5.0.0 +2025-09-20 02:07:22,810 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 1.0.0 +2025-09-20 02:07:22,810 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L4 2.0.0 +2025-09-20 02:07:22,810 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 0.0.2 +2025-09-20 02:07:22,810 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.1.2 +2025-09-20 02:07:22,811 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SFXS2LP1 4.0.0 +2025-09-20 02:07:22,811 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE2 3.3.0 +2025-09-20 02:07:22,811 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOF1 3.4.3 +2025-09-20 02:07:22,811 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.2.0 +2025-09-20 02:07:22,811 [INFO] ThirdParty:841 - exiting critical section [change project] +2025-09-20 02:07:23,397 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-09-20 02:07:23,398 [INFO] PinOutPanel:1589 - setPackage(STM32F429ZITx,LQFP144) +2025-09-20 02:07:23,916 [INFO] UtilMem:75 - Before build in PCC Used Memory: 644194520 Bytes (1073741824) +2025-09-20 02:07:24,500 [INFO] UtilMem:75 - After build in PCC Used Memory: 692955352 Bytes (1073741824) +2025-09-20 02:07:24,513 [INFO] ApiDbMcu:532 - Load IP Config File for FREERTOS +2025-09-20 02:07:24,528 [INFO] ApiDbMcu:532 - Load IP Config File for USB_HOST +2025-09-20 02:07:24,615 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,615 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,615 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,615 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,616 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,616 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,617 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,617 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,617 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,618 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,618 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,619 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,619 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,620 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,620 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,621 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,621 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,621 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,622 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,623 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,624 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,624 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,625 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,626 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,627 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,628 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,628 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,629 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,630 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,631 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,631 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,632 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,633 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,633 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,633 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,634 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,634 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,635 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,635 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,636 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,636 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,636 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,636 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,637 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,637 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,637 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,637 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,638 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,638 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,638 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,638 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,639 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,639 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,640 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,641 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,642 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,643 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,644 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,645 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,646 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,647 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,649 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,650 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,652 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,654 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,656 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:07:24,663 [INFO] ApiDbMcu:532 - Load IP Config File for PDM2PCM +2025-09-20 02:07:24,701 [WARN] FreeRTOS:1023 - Null or empty value: should not occur! (nothing added to the table) +2025-09-20 02:07:24,921 [INFO] CADModel:165 - CPN selected for project levelSTM32F429ZIT6 +2025-09-20 02:07:24,921 [INFO] CADModel:114 - Register for checkConnection events +2025-09-20 02:07:24,927 [INFO] RtosManager:728 - Active RTOS found at IOC load: FREERTOS [Cortex-M4NS] +2025-09-20 02:07:25,036 [INFO] OpenFileManager:386 - Restore cursor +2025-09-20 02:07:25,566 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:08:35,466 [INFO] WebAppUi:1100 - Web application message: WebGL: CONTEXT_LOST_WEBGL: loseContext: context lost +2025-09-20 02:08:35,470 [INFO] WebAppUi:1100 - Web application message: THREE.WebGLRenderer: Context Lost. +2025-09-20 02:09:08,705 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:09:09,025 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:09:09,282 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:09:21,020 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:09:21,201 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:09:21,348 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:09:31,550 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:09:31,837 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:09:32,083 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:17:31,086 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:18:24,367 [INFO] UtilMem:75 - End SaveConfig() Used Memory: 444424424 Bytes (940572672) +2025-09-20 02:18:27,273 [INFO] UtilMem:75 - End SaveConfig() Used Memory: 467920792 Bytes (940572672) +2025-09-20 02:18:33,675 [INFO] UtilMem:75 - End SaveConfig() Used Memory: 520875928 Bytes (940572672) +2025-09-20 02:18:52,676 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USB_OTG_HS +2025-09-20 02:18:52,676 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: SPI +2025-09-20 02:18:52,676 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: FREERTOS +2025-09-20 02:18:52,676 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: TIM1_8 +2025-09-20 02:18:52,676 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: LTDC +2025-09-20 02:18:52,676 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: SYS +2025-09-20 02:18:52,676 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: RCC +2025-09-20 02:18:52,676 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: CRC +2025-09-20 02:18:52,676 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: I2C +2025-09-20 02:18:52,676 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: NVIC +2025-09-20 02:18:52,677 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USB_HOST +2025-09-20 02:18:52,677 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: DMA2D +2025-09-20 02:18:52,677 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USART +2025-09-20 02:18:52,677 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: FMC +2025-09-20 02:18:52,678 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: GPIO +2025-09-20 02:18:52,679 [INFO] CodeGenerator:892 - code generatio: config db path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db/ +2025-09-20 02:18:52,697 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:18:53,170 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/license.tmp_save +2025-09-20 02:18:53,831 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/license.tmp +2025-09-20 02:18:54,250 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/gpio.tmp_save +2025-09-20 02:18:54,610 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/gpio.tmp +2025-09-20 02:18:55,142 [WARN] IPConfigManager:3238 - Warning: the RefConfig PWREx_EnableUSBVoltageDetector is not available in your config.xml file +2025-09-20 02:18:55,151 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_vars.tmp_save +2025-09-20 02:18:55,324 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_vars.tmp +2025-09-20 02:18:55,329 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_inc.tmp_save +2025-09-20 02:18:55,483 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_inc.tmp +2025-09-20 02:18:55,488 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_HalInit.tmp_save +2025-09-20 02:18:55,690 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_HalInit.tmp +2025-09-20 02:18:55,693 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_Msp.tmp_save +2025-09-20 02:18:55,917 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_Msp.tmp +2025-09-20 02:18:58,853 [INFO] Middleware:1452 - No code input for Bsp Dependency +2025-09-20 02:18:58,862 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_inc.tmp_save +2025-09-20 02:18:58,999 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_inc.tmp +2025-09-20 02:18:59,003 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_vars.tmp_save +2025-09-20 02:18:59,150 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_vars.tmp +2025-09-20 02:18:59,156 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_pfp.tmp_save +2025-09-20 02:18:59,304 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_pfp.tmp +2025-09-20 02:18:59,307 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_obj_creat.tmp_save +2025-09-20 02:18:59,459 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_obj_creat.tmp +2025-09-20 02:18:59,463 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_kernelStart.tmp_save +2025-09-20 02:18:59,629 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_kernelStart.tmp +2025-09-20 02:18:59,635 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_default_thread.tmp_save +2025-09-20 02:18:59,768 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_default_thread.tmp +2025-09-20 02:18:59,773 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_threads.tmp_save +2025-09-20 02:18:59,903 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_threads.tmp +2025-09-20 02:18:59,946 [INFO] Middleware:1452 - No code input for Bsp Dependency +2025-09-20 02:18:59,951 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_inc.tmp_save +2025-09-20 02:19:00,070 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_inc.tmp +2025-09-20 02:19:00,072 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_vars.tmp_save +2025-09-20 02:19:00,183 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_vars.tmp +2025-09-20 02:19:00,187 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_pfp.tmp_save +2025-09-20 02:19:00,294 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_pfp.tmp +2025-09-20 02:19:00,297 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_obj_creat.tmp_save +2025-09-20 02:19:00,444 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_obj_creat.tmp +2025-09-20 02:19:00,446 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_kernelStart.tmp_save +2025-09-20 02:19:00,549 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_kernelStart.tmp +2025-09-20 02:19:00,553 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_default_thread.tmp_save +2025-09-20 02:19:00,663 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_default_thread.tmp +2025-09-20 02:19:00,664 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_threads.tmp_save +2025-09-20 02:19:00,763 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_threads.tmp +2025-09-20 02:19:00,768 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Inc/FreeRTOSConfig.h_save +2025-09-20 02:19:00,903 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Inc/FreeRTOSConfig.h +2025-09-20 02:19:00,906 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Src/freertos.c_save +2025-09-20 02:19:01,027 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Src/freertos.c +2025-09-20 02:19:01,038 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_HC.tmp_save +2025-09-20 02:19:01,161 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_HC.tmp +2025-09-20 02:19:01,164 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_GV.tmp_save +2025-09-20 02:19:01,275 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_GV.tmp +2025-09-20 02:19:01,278 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_MSP.tmp_save +2025-09-20 02:19:01,486 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_MSP.tmp +2025-09-20 02:19:01,531 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/USB_HOST/App/usb_host.c_save +2025-09-20 02:19:01,754 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/USB_HOST/App/usb_host.c +2025-09-20 02:19:01,758 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/USB_HOST/App/usb_host.h_save +2025-09-20 02:19:01,894 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/USB_HOST/App/usb_host.h +2025-09-20 02:19:01,896 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_conf.h_save +2025-09-20 02:19:02,050 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_conf.h +2025-09-20 02:19:02,053 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_conf.c_save +2025-09-20 02:19:02,196 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_conf.c +2025-09-20 02:19:02,199 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_platform.c_save +2025-09-20 02:19:02,341 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_platform.c +2025-09-20 02:19:02,343 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_platform.h_save +2025-09-20 02:19:02,470 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_platform.h +2025-09-20 02:19:02,490 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Src/stm32f4xx_it.c_save +2025-09-20 02:19:02,641 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Src/stm32f4xx_it.c +2025-09-20 02:19:02,643 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Inc/stm32f4xx_it.h_save +2025-09-20 02:19:02,810 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Inc/stm32f4xx_it.h +2025-09-20 02:19:02,815 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_HC.tmp_save +2025-09-20 02:19:02,947 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_HC.tmp +2025-09-20 02:19:02,949 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_GV.tmp_save +2025-09-20 02:19:03,042 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_GV.tmp +2025-09-20 02:19:03,043 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_MSP.tmp_save +2025-09-20 02:19:03,178 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_MSP.tmp +2025-09-20 02:19:03,203 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Src/stm32f4xx_hal_msp.c_save +2025-09-20 02:19:03,413 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Src/stm32f4xx_hal_msp.c +2025-09-20 02:19:03,416 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/system.tmp_save +2025-09-20 02:19:03,558 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/system.tmp +2025-09-20 02:19:03,579 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Src/stm32f4xx_hal_timebase_tim.c_save +2025-09-20 02:19:03,711 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Src/stm32f4xx_hal_timebase_tim.c +2025-09-20 02:19:03,720 [INFO] CodeEngine:321 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Inc/stm32f4xx_hal_conf.h_save +2025-09-20 02:19:03,876 [INFO] CodeEngine:345 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Inc/stm32f4xx_hal_conf.h +2025-09-20 02:19:03,954 [INFO] ApiDbMcu:532 - Load IP Config File for CRC +2025-09-20 02:19:03,959 [INFO] ApiDbMcu:532 - Load IP Config File for DMA2D +2025-09-20 02:19:03,977 [INFO] ApiDbMcu:532 - Load IP Config File for FMC +2025-09-20 02:19:03,984 [INFO] ApiDbMcu:532 - Load IP Config File for I2C3 +2025-09-20 02:19:03,990 [INFO] ApiDbMcu:532 - Load IP Config File for LTDC +2025-09-20 02:19:03,995 [INFO] ApiDbMcu:532 - Load IP Config File for SPI5 +2025-09-20 02:19:04,025 [INFO] ApiDbMcu:532 - Load IP Config File for TIM1 +2025-09-20 02:19:04,033 [INFO] ApiDbMcu:532 - Load IP Config File for USART1 +2025-09-20 02:19:04,043 [INFO] ApiDbMcu:532 - Load IP Config File for RCC +2025-09-20 02:19:04,057 [WARN] IPConfigManager:3811 - IP not found : TIM +2025-09-20 02:19:04,058 [WARN] CodeGenerator:4259 - IP not found : null +2025-09-20 02:19:04,073 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Inc/main.h_save +2025-09-20 02:19:04,311 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Inc/main.h +2025-09-20 02:19:04,314 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Src/main.c_save +2025-09-20 02:19:04,708 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Src/main.c +2025-09-20 02:19:05,315 [INFO] ProjectBuilder:3606 - Time for Copy HAL[1] : 108mS. +2025-09-20 02:19:05,334 [INFO] ProjectBuilder:5216 - Project Generator version: 4.7.0-B52 +2025-09-20 02:19:05,518 [INFO] ConfigFileManager:1595 - The Die is : DIE419 +2025-09-20 02:19:05,525 [INFO] ApiDbMcu:532 - Load IP Config File for FATFS +2025-09-20 02:19:05,529 [INFO] ApiDbMcu:532 - Load IP Config File for LIBJPEG +2025-09-20 02:19:05,554 [INFO] ApiDbMcu:532 - Load IP Config File for LWIP +2025-09-20 02:19:05,564 [INFO] ApiDbMcu:532 - Load IP Config File for MBEDTLS +2025-09-20 02:19:05,577 [INFO] ApiDbMcu:532 - Load IP Config File for USB_DEVICE +2025-09-20 02:19:09,852 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] +2025-09-20 02:19:11,507 [INFO] ProjectBuilder:5496 - Time for Generating toolchain IDE Files: 6172mS. +2025-09-20 02:19:11,508 [INFO] ProjectBuilder:3463 - Time for Copy CMSIS : 0mS. +2025-09-20 02:19:11,511 [INFO] ProjectBuilder:3463 - Time for Copy CMSIS : 0mS. +2025-09-20 02:22:38,224 [INFO] MainUpdater:2872 - connection check result : 10 +2025-09-20 02:22:38,225 [INFO] MainUpdater:2872 - connection check result : 10 +2025-09-20 02:22:38,280 [INFO] MicroXplorer:468 - Change Database Path : +2025-09-20 02:22:38,280 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-09-20 02:22:38,300 [ERROR] ProjectManagerView:395 - +java.lang.NullPointerException: Cannot invoke "javax.swing.JTextField.getText()" because the return value of "java.util.List.get(int)" is null + at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab$9.caretUpdate(ProjectChoiceTab.java:2706) ~[filemanager.jar:?] + at javax.swing.text.JTextComponent.fireCaretUpdate(JTextComponent.java:408) ~[?:?] + at javax.swing.text.JTextComponent$MutableCaretEvent.fire(JTextComponent.java:4484) ~[?:?] + at javax.swing.text.JTextComponent$MutableCaretEvent.stateChanged(JTextComponent.java:4506) ~[?:?] + at javax.swing.text.DefaultCaret.fireStateChanged(DefaultCaret.java:857) ~[?:?] + at javax.swing.text.DefaultCaret.changeCaretPosition(DefaultCaret.java:1343) ~[?:?] + at javax.swing.text.DefaultCaret.handleSetDot(DefaultCaret.java:1242) ~[?:?] + at javax.swing.text.DefaultCaret.setDot(DefaultCaret.java:1223) ~[?:?] + at javax.swing.text.DefaultCaret$Handler.insertUpdate(DefaultCaret.java:1819) ~[?:?] + at javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:227) ~[?:?] + at javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:781) ~[?:?] + at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:740) ~[?:?] + at javax.swing.text.PlainDocument.insertString(PlainDocument.java:131) ~[?:?] + at javax.swing.text.AbstractDocument.replace(AbstractDocument.java:699) ~[?:?] + at javax.swing.text.JTextComponent.setText(JTextComponent.java:1725) ~[?:?] + at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.createHeapStackFields(ProjectChoiceTab.java:993) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.buildLinkSettingsPanel(ProjectChoiceTab.java:3813) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.defineWindowsFields(ProjectChoiceTab.java:1987) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.updateSettings(ProjectChoiceTab.java:558) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.projectmanager.gui.ProjectSettingsPanel.UpdateDialog(ProjectSettingsPanel.java:247) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.projectmanager.ProjectManagerView.propertyChange(ProjectManagerView.java:392) ~[filemanager.jar:?] + at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:343) ~[?:?] + at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:335) ~[?:?] + at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:268) ~[?:?] + at com.st.microxplorer.util.MXPropertyChangeSupport.firePropertyChange(MXPropertyChangeSupport.java:54) ~[STM32CubeMX.jar:?] + at com.st.microxplorer.mxsystem.MxSystem.closeConfig(MxSystem.java:899) ~[STM32CubeMX.jar:?] + at com.st.microxplorer.maingui.MainPanel.closeConfig(MainPanel.java:792) ~[STM32CubeMX.jar:?] + at com.st.microxplorer.plugins.filemanager.engine.OpenFileManager.loadConfigurationFile(OpenFileManager.java:288) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.filemanager.engine.MainFileManager.userLoadConfig(MainFileManager.java:364) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.filemanager.engine.MainFileManager.userLoadConfig(MainFileManager.java:342) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.filemanager.FileManagerView.getSpecificTask(FileManagerView.java:264) ~[filemanager.jar:?] + at com.st.stm32cube.common.mx.editor.CubeMxEditor.getMxTabbedPaneInstance(CubeMxEditor.java:1198) ~[com.st.stm32cube.common.mx_6.15.0.202507011659/:?] + at com.st.stm32cube.common.mx.editor.CubeMxEditor$12$1.createSwingComponent(CubeMxEditor.java:1068) ~[com.st.stm32cube.common.mx_6.15.0.202507011659/:?] + at com.st.stm32cube.common.mx.oss.core.awtswtbridge.EmbeddedSwingComposite.doComponentCreation(EmbeddedSwingComposite.java:492) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?] + at com.st.stm32cube.common.mx.oss.core.awtswtbridge.EmbeddedSwingComposite$4.run(EmbeddedSwingComposite.java:291) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?] + at com.st.stm32cube.common.mx.oss.core.awtswtbridge.AwtEnvironment$2.run(AwtEnvironment.java:166) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?] + at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) ~[?:?] + at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) ~[?:?] + at java.awt.EventQueue$4.run(EventQueue.java:720) ~[?:?] + at java.awt.EventQueue$4.run(EventQueue.java:714) ~[?:?] + at java.security.AccessController.doPrivileged(AccessController.java:400) ~[?:?] + at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) ~[?:?] + at java.awt.EventQueue.dispatchEvent(EventQueue.java:742) ~[?:?] + at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) ~[?:?] + at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) ~[?:?] + at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) ~[?:?] + at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) ~[?:?] + at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) ~[?:?] + at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) ~[?:?] +2025-09-20 02:22:38,301 [WARN] ThirdParty:871 - waiting for thirdparty lock release [close project] +2025-09-20 02:22:38,302 [INFO] ThirdParty:873 - entering critical section [close project] +2025-09-20 02:22:38,302 [INFO] ThirdParty:883 - exiting critical section [close project] +2025-09-20 02:22:38,304 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-09-20 02:22:38,311 [WARN] IpParametersView:155 - Warning: This peripheral hasn't parameters +2025-09-20 02:22:38,315 [WARN] MainPanel:289 -
Warning: This peripheral has no parameters to be configured
+2025-09-20 02:22:38,317 [INFO] UtilMem:75 - Begin LoadConfig() Used Memory: 563928608 Bytes (940572672) +2025-09-20 02:22:38,318 [INFO] MicroXplorer:468 - Change Database Path : +2025-09-20 02:22:38,318 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-09-20 02:22:38,318 [INFO] OpenFileManager:355 - Change cursor +2025-09-20 02:22:38,342 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-09-20 02:22:38,352 [INFO] Mcu:2029 - Initializing MCU STM32F429ZITx STM32F429ZITx STM32F429ZIT6 +2025-09-20 02:22:39,587 [INFO] Context:786 - Trying to add GPIOservice into a context which must be forbidden +2025-09-20 02:22:40,873 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) Pin101 (VP_RIF_VS_RIF1) cannot be retrieved for this MCU +2025-09-20 02:22:40,958 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS, mode=CMSIS_V1, owner=FREERTOS +2025-09-20 02:22:40,958 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS2, mode=CMSIS_V2, owner=FREERTOS +2025-09-20 02:22:40,959 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V1, owner=FREERTOS +2025-09-20 02:22:40,959 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V2, owner=FREERTOS +2025-09-20 02:22:40,959 [WARN] ModelIntegratedComponent:184 - Missing modes for component STMicroelectronics:FreeRTOS:0.0.1:STMicroelectronics:RTOS:FreeRTOS:Core:::10.2.0: +2025-09-20 02:22:40,996 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,997 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,997 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,997 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,997 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,997 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,997 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,997 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,997 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,998 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,999 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,999 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,999 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,999 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,999 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,999 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,999 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,999 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,999 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:40,999 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:41,000 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:41,000 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:41,000 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:41,000 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:41,000 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:22:41,000 [WARN] ModelPack:524 - Component already loaded: STMicroelectronics:HAL Drivers:0.0.0:STMicroelectronics:Device:STMicro_Driver:XSPI:HAL::0.0.1:HAL_XSPI +2025-09-20 02:22:41,217 [INFO] ThirdPartyModel:298 - Start build external matchings +2025-09-20 02:22:42,424 [INFO] ThirdPartyModel:316 - End build external matchings +2025-09-20 02:22:42,449 [INFO] RtosManager:1018 - Current active RTOS is FREERTOS [Cortex-M4NS] +2025-09-20 02:22:42,460 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:22:42,461 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Invalid parameter (FamilyName) +2025-09-20 02:22:42,461 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Parameter (RTCHSEDivFreq_Value) has invalid value (4000000) +2025-09-20 02:22:42,744 [INFO] UtilMem:75 - End LoadConfig() Used Memory: 527279784 Bytes (979369984) +2025-09-20 02:22:42,761 [WARN] ThirdParty:833 - waiting for thirdparty lock release [change project] +2025-09-20 02:22:42,762 [INFO] ThirdParty:835 - entering critical section [change project] +2025-09-20 02:22:42,762 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-PM33A1 1.0.0 +2025-09-20 02:22:42,762 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USBPD 4.1 +2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC9 1.0.0 +2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 2.0.0 +2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENVWB1 1.4.0 +2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F4 1.1.0 +2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics LIBJPEG 8.0.0 +2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-ASTRA1 2.0.2 +2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSL 5.8.2 +2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE1 7.1.0 +2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Avnet-IotConnect X-CUBE-IoTC-DA16k-PMOD 1.0.0 +2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SMBUS 2.1.0 +2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfMQTT 1.19.2 +2025-09-20 02:22:42,763 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 3.0.0 +2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ISPU 2.1.0 +2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-EEPRMA1 5.2.0 +2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLEMGR 4.1.0 +2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WB 2.0.0 +2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST60 1.0.0 +2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-GNSS1 7.0.1 +2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC12 1.0.0 +2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F7 1.1.0 +2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L5 2.0.0 +2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOUCHGFX 4.25.0 +2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 2.0.0 +2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC6 3.1.0 +2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :quantropi X-CUBE-qispace-sdk-base 2.1.0 +2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FreeRTOS 0.0.1 +2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G0 1.1.0 +2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SAFEA1 1.2.2 +2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC4 3.0.0 +2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SUBG2 5.0.0 +2025-09-20 02:22:42,764 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7RS 1.1.0 +2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics STM32_WPAN 1.0.0 +2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :EmbeddedOffice I-CUBE-FS-RTOS 1.0.1 +2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.0.3 +2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :WES I-CUBE-Cesium 1.4.0 +2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Cesanta I-CUBE-Mongoose 7.13.0 +2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 1.0.0 +2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Infineon AIROC-Wi-Fi-Bluetooth-STM32 1.7.1 +2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G4 2.0.0 +2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-WB05N 2.0.0 +2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.1.0 +2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.3.0 +2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfTPM 3.8.0 +2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7 3.4.0 +2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DISPLAY 3.0.0 +2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSH 1.4.20 +2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC7 2.0.0 +2025-09-20 02:22:42,765 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TCPP 4.2.0 +2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :RealThread X-CUBE-RT-Thread_Nano 4.1.1 +2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-SIGFOX1 3.2.0 +2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC10 1.0.0 +2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-FREERTOS 1.3.1 +2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics HAL Drivers 0.0.0 +2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.16.2 +2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-IPS 3.1.0 +2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALS 1.0.2 +2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :emotas I-CUBE-CANOPEN 1.3.0 +2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.14.1 +2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :ITTIA_DB I-CUBE-ITTIADB 8.9.0 +2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-STSE01 1.0.0 +2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :portGmbH I-Cube-SoM-uGOAL 1.1.0 +2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST67W61 1.0.0 +2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STBOX1 2.1.0 +2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AI 10.2.0 +2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STAIOTCFT 1.0.0 +2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 1.0.0 +2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-SMARTAG2 1.2.0 +2025-09-20 02:22:42,766 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-FLIGHT1 5.1.0 +2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WL 2.0.0 +2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :SEGGER I-CUBE-embOS 1.3.1 +2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALGOBUILD 1.4.0 +2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DPower 1.3.0 +2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-MEMS1 11.3.0 +2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENV1 5.0.0 +2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 1.0.0 +2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L4 2.0.0 +2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 0.0.2 +2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.1.2 +2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SFXS2LP1 4.0.0 +2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE2 3.3.0 +2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOF1 3.4.3 +2025-09-20 02:22:42,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.2.0 +2025-09-20 02:22:42,768 [INFO] ThirdParty:841 - exiting critical section [change project] +2025-09-20 02:22:43,346 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-09-20 02:22:43,346 [INFO] PinOutPanel:1589 - setPackage(STM32F429ZITx,LQFP144) +2025-09-20 02:22:44,091 [INFO] UtilMem:75 - Before build in PCC Used Memory: 376833528 Bytes (979369984) +2025-09-20 02:22:45,385 [INFO] UtilMem:75 - After build in PCC Used Memory: 428735992 Bytes (979369984) +2025-09-20 02:22:45,396 [INFO] ApiDbMcu:532 - Load IP Config File for FREERTOS +2025-09-20 02:22:45,402 [INFO] ApiDbMcu:532 - Load IP Config File for USB_HOST +2025-09-20 02:22:45,468 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,468 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,469 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,469 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,469 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,469 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,470 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,470 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,471 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,471 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,472 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,472 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,472 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,473 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,473 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,474 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,474 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,474 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,474 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,474 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,475 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,476 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,476 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,477 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,477 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,478 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,478 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,479 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,480 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,480 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,481 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,482 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,483 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,483 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,484 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,484 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,485 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,486 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,487 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,487 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,488 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,488 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,489 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,489 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,489 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,490 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,490 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,490 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,490 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,490 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,491 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,491 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,491 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,492 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,493 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,494 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,495 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,496 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,497 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,498 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,499 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,500 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,501 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,502 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,504 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,505 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:22:45,509 [INFO] ApiDbMcu:532 - Load IP Config File for PDM2PCM +2025-09-20 02:22:45,535 [WARN] FreeRTOS:1023 - Null or empty value: should not occur! (nothing added to the table) +2025-09-20 02:22:45,673 [INFO] CADModel:165 - CPN selected for project levelSTM32F429ZIT6 +2025-09-20 02:22:45,673 [INFO] CADModel:114 - Register for checkConnection events +2025-09-20 02:22:45,677 [INFO] RtosManager:728 - Active RTOS found at IOC load: FREERTOS [Cortex-M4NS] +2025-09-20 02:22:45,725 [INFO] OpenFileManager:386 - Restore cursor +2025-09-20 02:22:46,028 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:28:22,703 [INFO] MainUpdater:2872 - connection check result : 10 +2025-09-20 02:28:22,704 [INFO] MainUpdater:2872 - connection check result : 10 +2025-09-20 02:28:22,768 [INFO] MicroXplorer:468 - Change Database Path : +2025-09-20 02:28:22,769 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-09-20 02:28:22,792 [ERROR] ProjectManagerView:395 - +java.lang.NullPointerException: Cannot invoke "javax.swing.JTextField.getText()" because the return value of "java.util.List.get(int)" is null + at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab$9.caretUpdate(ProjectChoiceTab.java:2706) ~[filemanager.jar:?] + at javax.swing.text.JTextComponent.fireCaretUpdate(JTextComponent.java:408) ~[?:?] + at javax.swing.text.JTextComponent$MutableCaretEvent.fire(JTextComponent.java:4484) ~[?:?] + at javax.swing.text.JTextComponent$MutableCaretEvent.stateChanged(JTextComponent.java:4506) ~[?:?] + at javax.swing.text.DefaultCaret.fireStateChanged(DefaultCaret.java:857) ~[?:?] + at javax.swing.text.DefaultCaret.changeCaretPosition(DefaultCaret.java:1343) ~[?:?] + at javax.swing.text.DefaultCaret.handleSetDot(DefaultCaret.java:1242) ~[?:?] + at javax.swing.text.DefaultCaret.setDot(DefaultCaret.java:1223) ~[?:?] + at javax.swing.text.DefaultCaret$Handler.insertUpdate(DefaultCaret.java:1819) ~[?:?] + at javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:227) ~[?:?] + at javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:781) ~[?:?] + at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:740) ~[?:?] + at javax.swing.text.PlainDocument.insertString(PlainDocument.java:131) ~[?:?] + at javax.swing.text.AbstractDocument.replace(AbstractDocument.java:699) ~[?:?] + at javax.swing.text.JTextComponent.setText(JTextComponent.java:1725) ~[?:?] + at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.createHeapStackFields(ProjectChoiceTab.java:993) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.buildLinkSettingsPanel(ProjectChoiceTab.java:3813) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.defineWindowsFields(ProjectChoiceTab.java:1987) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.projectmanager.gui.ProjectChoiceTab.updateSettings(ProjectChoiceTab.java:558) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.projectmanager.gui.ProjectSettingsPanel.UpdateDialog(ProjectSettingsPanel.java:247) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.projectmanager.ProjectManagerView.propertyChange(ProjectManagerView.java:392) ~[filemanager.jar:?] + at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:343) ~[?:?] + at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:335) ~[?:?] + at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:268) ~[?:?] + at com.st.microxplorer.util.MXPropertyChangeSupport.firePropertyChange(MXPropertyChangeSupport.java:54) ~[STM32CubeMX.jar:?] + at com.st.microxplorer.mxsystem.MxSystem.closeConfig(MxSystem.java:899) ~[STM32CubeMX.jar:?] + at com.st.microxplorer.maingui.MainPanel.closeConfig(MainPanel.java:792) ~[STM32CubeMX.jar:?] + at com.st.microxplorer.plugins.filemanager.engine.OpenFileManager.loadConfigurationFile(OpenFileManager.java:288) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.filemanager.engine.MainFileManager.userLoadConfig(MainFileManager.java:364) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.filemanager.engine.MainFileManager.userLoadConfig(MainFileManager.java:342) ~[filemanager.jar:?] + at com.st.microxplorer.plugins.filemanager.FileManagerView.getSpecificTask(FileManagerView.java:264) ~[filemanager.jar:?] + at com.st.stm32cube.common.mx.editor.CubeMxEditor.getMxTabbedPaneInstance(CubeMxEditor.java:1198) ~[com.st.stm32cube.common.mx_6.15.0.202507011659/:?] + at com.st.stm32cube.common.mx.editor.CubeMxEditor$12$1.createSwingComponent(CubeMxEditor.java:1068) ~[com.st.stm32cube.common.mx_6.15.0.202507011659/:?] + at com.st.stm32cube.common.mx.oss.core.awtswtbridge.EmbeddedSwingComposite.doComponentCreation(EmbeddedSwingComposite.java:492) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?] + at com.st.stm32cube.common.mx.oss.core.awtswtbridge.EmbeddedSwingComposite$4.run(EmbeddedSwingComposite.java:291) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?] + at com.st.stm32cube.common.mx.oss.core.awtswtbridge.AwtEnvironment$2.run(AwtEnvironment.java:166) ~[com.st.stm32cube.common.mx.oss_6.15.0.202507011659/:?] + at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) ~[?:?] + at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) ~[?:?] + at java.awt.EventQueue$4.run(EventQueue.java:720) ~[?:?] + at java.awt.EventQueue$4.run(EventQueue.java:714) ~[?:?] + at java.security.AccessController.doPrivileged(AccessController.java:400) ~[?:?] + at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) ~[?:?] + at java.awt.EventQueue.dispatchEvent(EventQueue.java:742) ~[?:?] + at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) ~[?:?] + at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) ~[?:?] + at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) ~[?:?] + at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) ~[?:?] + at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) ~[?:?] + at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) ~[?:?] +2025-09-20 02:28:22,794 [WARN] ThirdParty:871 - waiting for thirdparty lock release [close project] +2025-09-20 02:28:22,794 [INFO] ThirdParty:873 - entering critical section [close project] +2025-09-20 02:28:22,794 [INFO] ThirdParty:883 - exiting critical section [close project] +2025-09-20 02:28:22,798 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-09-20 02:28:22,814 [WARN] IpParametersView:155 - Warning: This peripheral hasn't parameters +2025-09-20 02:28:22,819 [WARN] MainPanel:289 -
Warning: This peripheral has no parameters to be configured
+2025-09-20 02:28:22,823 [INFO] UtilMem:75 - Begin LoadConfig() Used Memory: 337899672 Bytes (979369984) +2025-09-20 02:28:22,824 [INFO] MicroXplorer:468 - Change Database Path : +2025-09-20 02:28:22,824 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-09-20 02:28:22,824 [INFO] OpenFileManager:355 - Change cursor +2025-09-20 02:28:22,838 [INFO] Mcu:2029 - Initializing MCU STM32F429ZITx STM32F429ZITx STM32F429ZIT6 +2025-09-20 02:28:25,913 [INFO] Context:786 - Trying to add GPIOservice into a context which must be forbidden +2025-09-20 02:28:26,609 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) Pin101 (VP_RIF_VS_RIF1) cannot be retrieved for this MCU +2025-09-20 02:28:26,664 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS, mode=CMSIS_V1, owner=FREERTOS +2025-09-20 02:28:26,664 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS2, mode=CMSIS_V2, owner=FREERTOS +2025-09-20 02:28:26,664 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V1, owner=FREERTOS +2025-09-20 02:28:26,664 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V2, owner=FREERTOS +2025-09-20 02:28:26,664 [WARN] ModelIntegratedComponent:184 - Missing modes for component STMicroelectronics:FreeRTOS:0.0.1:STMicroelectronics:RTOS:FreeRTOS:Core:::10.2.0: +2025-09-20 02:28:26,680 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,681 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,682 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 02:28:26,682 [WARN] ModelPack:524 - Component already loaded: STMicroelectronics:HAL Drivers:0.0.0:STMicroelectronics:Device:STMicro_Driver:XSPI:HAL::0.0.1:HAL_XSPI +2025-09-20 02:28:26,868 [INFO] ThirdPartyModel:298 - Start build external matchings +2025-09-20 02:28:27,937 [INFO] ThirdPartyModel:316 - End build external matchings +2025-09-20 02:28:27,957 [INFO] RtosManager:1018 - Current active RTOS is FREERTOS [Cortex-M4NS] +2025-09-20 02:28:27,967 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 02:28:27,967 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Invalid parameter (FamilyName) +2025-09-20 02:28:27,968 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Parameter (RTCHSEDivFreq_Value) has invalid value (4000000) +2025-09-20 02:28:28,283 [INFO] UtilMem:75 - End LoadConfig() Used Memory: 744418984 Bytes (979369984) +2025-09-20 02:28:28,308 [WARN] ThirdParty:833 - waiting for thirdparty lock release [change project] +2025-09-20 02:28:28,309 [INFO] ThirdParty:835 - entering critical section [change project] +2025-09-20 02:28:28,309 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-PM33A1 1.0.0 +2025-09-20 02:28:28,309 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USBPD 4.1 +2025-09-20 02:28:28,309 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC9 1.0.0 +2025-09-20 02:28:28,309 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 2.0.0 +2025-09-20 02:28:28,309 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENVWB1 1.4.0 +2025-09-20 02:28:28,309 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F4 1.1.0 +2025-09-20 02:28:28,309 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics LIBJPEG 8.0.0 +2025-09-20 02:28:28,309 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-ASTRA1 2.0.2 +2025-09-20 02:28:28,309 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSL 5.8.2 +2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE1 7.1.0 +2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Avnet-IotConnect X-CUBE-IoTC-DA16k-PMOD 1.0.0 +2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SMBUS 2.1.0 +2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfMQTT 1.19.2 +2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 3.0.0 +2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ISPU 2.1.0 +2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-EEPRMA1 5.2.0 +2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLEMGR 4.1.0 +2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WB 2.0.0 +2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST60 1.0.0 +2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-GNSS1 7.0.1 +2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC12 1.0.0 +2025-09-20 02:28:28,310 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F7 1.1.0 +2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L5 2.0.0 +2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOUCHGFX 4.25.0 +2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 2.0.0 +2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC6 3.1.0 +2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :quantropi X-CUBE-qispace-sdk-base 2.1.0 +2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FreeRTOS 0.0.1 +2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G0 1.1.0 +2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SAFEA1 1.2.2 +2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC4 3.0.0 +2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SUBG2 5.0.0 +2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7RS 1.1.0 +2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics STM32_WPAN 1.0.0 +2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :EmbeddedOffice I-CUBE-FS-RTOS 1.0.1 +2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.0.3 +2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :WES I-CUBE-Cesium 1.4.0 +2025-09-20 02:28:28,311 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Cesanta I-CUBE-Mongoose 7.13.0 +2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 1.0.0 +2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Infineon AIROC-Wi-Fi-Bluetooth-STM32 1.7.1 +2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G4 2.0.0 +2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-WB05N 2.0.0 +2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.1.0 +2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.3.0 +2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfTPM 3.8.0 +2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7 3.4.0 +2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DISPLAY 3.0.0 +2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSH 1.4.20 +2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC7 2.0.0 +2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TCPP 4.2.0 +2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :RealThread X-CUBE-RT-Thread_Nano 4.1.1 +2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-SIGFOX1 3.2.0 +2025-09-20 02:28:28,312 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC10 1.0.0 +2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-FREERTOS 1.3.1 +2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics HAL Drivers 0.0.0 +2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.16.2 +2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-IPS 3.1.0 +2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALS 1.0.2 +2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :emotas I-CUBE-CANOPEN 1.3.0 +2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.14.1 +2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :ITTIA_DB I-CUBE-ITTIADB 8.9.0 +2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-STSE01 1.0.0 +2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :portGmbH I-Cube-SoM-uGOAL 1.1.0 +2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST67W61 1.0.0 +2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STBOX1 2.1.0 +2025-09-20 02:28:28,313 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AI 10.2.0 +2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STAIOTCFT 1.0.0 +2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 1.0.0 +2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-SMARTAG2 1.2.0 +2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-FLIGHT1 5.1.0 +2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WL 2.0.0 +2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :SEGGER I-CUBE-embOS 1.3.1 +2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALGOBUILD 1.4.0 +2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DPower 1.3.0 +2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-MEMS1 11.3.0 +2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENV1 5.0.0 +2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 1.0.0 +2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L4 2.0.0 +2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 0.0.2 +2025-09-20 02:28:28,314 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.1.2 +2025-09-20 02:28:28,315 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SFXS2LP1 4.0.0 +2025-09-20 02:28:28,315 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE2 3.3.0 +2025-09-20 02:28:28,315 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOF1 3.4.3 +2025-09-20 02:28:28,315 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.2.0 +2025-09-20 02:28:28,316 [INFO] ThirdParty:841 - exiting critical section [change project] +2025-09-20 02:28:29,200 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-09-20 02:28:29,202 [INFO] PinOutPanel:1589 - setPackage(STM32F429ZITx,LQFP144) +2025-09-20 02:28:30,463 [INFO] UtilMem:75 - Before build in PCC Used Memory: 388951720 Bytes (979369984) +2025-09-20 02:28:30,890 [INFO] UtilMem:75 - After build in PCC Used Memory: 437186216 Bytes (979369984) +2025-09-20 02:28:30,900 [INFO] ApiDbMcu:532 - Load IP Config File for FREERTOS +2025-09-20 02:28:30,907 [INFO] ApiDbMcu:532 - Load IP Config File for USB_HOST +2025-09-20 02:28:30,978 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,979 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,979 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,979 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,979 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,980 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,981 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,981 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,982 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,983 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,983 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,984 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,984 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,984 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,985 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,986 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,986 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,987 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,987 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,987 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,988 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,988 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,989 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,990 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,990 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,991 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,991 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,992 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,993 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,994 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,995 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,996 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,997 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,997 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,997 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,998 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,998 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,998 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,999 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,999 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:30,999 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,000 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,000 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,000 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,000 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,000 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,001 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,001 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,001 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,001 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,001 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,002 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,002 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,003 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,004 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,005 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,006 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,007 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,009 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,010 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,011 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,012 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,014 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,016 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,018 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,020 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 02:28:31,026 [INFO] ApiDbMcu:532 - Load IP Config File for PDM2PCM +2025-09-20 02:28:31,050 [WARN] FreeRTOS:1023 - Null or empty value: should not occur! (nothing added to the table) +2025-09-20 02:28:31,326 [INFO] CADModel:165 - CPN selected for project levelSTM32F429ZIT6 +2025-09-20 02:28:31,326 [INFO] CADModel:114 - Register for checkConnection events +2025-09-20 02:28:31,331 [INFO] RtosManager:728 - Active RTOS found at IOC load: FREERTOS [Cortex-M4NS] +2025-09-20 02:28:31,385 [INFO] OpenFileManager:386 - Restore cursor +2025-09-20 02:28:31,548 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 03:16:22,966 [INFO] WebAppUi:305 - Path where cad_preferences.json is located /home/ja/.stm32cubeide/ +2025-09-20 03:16:22,966 [INFO] WebAppUi:306 - Updating consent from JSON file +2025-09-20 03:16:23,086 [INFO] WebApp:403 - JxBrowser engine has been closed +2025-09-20 03:16:23,086 [INFO] WebAppUi:504 - JxBrowser engine has been closed +2025-09-20 03:16:23,087 [INFO] WebAppUi:541 - Close the Jxbrowser engine manually +2025-09-20 03:16:23,814 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] +2025-09-20 14:37:35,081 [INFO] Activator:176 - + + +2025-09-20 14:37:35,083 [INFO] Activator:177 - !SESSION log4j initialized +2025-09-20 14:37:41,375 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] +2025-09-20 14:37:44,360 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-09-20 14:37:44,399 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ +2025-09-20 14:37:44,399 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ +2025-09-20 14:37:44,400 [WARN] ApiDb:259 - Overriding images path with different value: => /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ +2025-09-20 14:37:44,410 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 14:37:44,413 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 14:37:44,418 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ +2025-09-20 14:37:44,662 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-09-20 14:37:44,768 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ +2025-09-20 14:37:44,768 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ +2025-09-20 14:37:44,769 [INFO] ApiDb:261 - Set plugin images path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ +2025-09-20 14:37:44,769 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 14:37:44,769 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 14:37:44,770 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 14:37:44,770 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 14:37:44,770 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 14:37:44,770 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 14:37:44,771 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ +2025-09-20 14:37:44,873 [INFO] MainPanel:274 - HeapMemory: 268435456 +2025-09-20 14:37:45,230 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ +2025-09-20 14:37:45,230 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ +2025-09-20 14:37:45,230 [INFO] ApiDb:261 - Set plugin images path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ +2025-09-20 14:37:45,231 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 14:37:45,231 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 14:37:45,231 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 14:37:45,231 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 14:37:45,232 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 14:37:45,232 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 14:37:45,232 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ +2025-09-20 14:37:45,254 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-09-20 14:37:45,257 [INFO] PluginManage:196 - Search for loadable plugins [exclusion list=, ] +2025-09-20 14:37:45,259 [INFO] PluginManage:310 - Check plugin analytics +2025-09-20 14:37:45,664 [INFO] AnalyticsPlugin:253 - Accepted Software Licenses: STM32CubeMX.6.15.0 +2025-09-20 14:37:45,665 [INFO] AnalyticsPlugin:255 - Accepted CMSIS Pack Licenses: +2025-09-20 14:37:45,665 [INFO] AnalyticsPlugin:257 - Accepted Firmware Licenses: FW.F4.1.28.0 +2025-09-20 14:37:45,670 [INFO] PluginManage:359 - Loaded plugin analytics (category:tool,tabindex:-1) +2025-09-20 14:37:45,671 [INFO] PluginManage:310 - Check plugin cadmodel +2025-09-20 14:37:45,679 [INFO] CADModel:105 - Init CAD model plugin +2025-09-20 14:37:45,680 [INFO] PluginManage:359 - Loaded plugin cadmodel (category:power,tabindex:5) +2025-09-20 14:37:45,680 [INFO] PluginManage:310 - Check plugin clock +2025-09-20 14:37:45,695 [INFO] PluginManage:359 - Loaded plugin clock (category:base,tabindex:2) +2025-09-20 14:37:45,695 [INFO] PluginManage:310 - Check plugin ddr +2025-09-20 14:37:45,698 [INFO] PluginManage:359 - Loaded plugin ddr (category:tool,tabindex:6) +2025-09-20 14:37:45,698 [INFO] PluginManage:310 - Check plugin filemanager +2025-09-20 14:37:45,910 [INFO] PluginManage:359 - Loaded plugin filemanager (category:base,tabindex:10) +2025-09-20 14:37:45,910 [INFO] PluginManage:310 - Check plugin ipmanager +2025-09-20 14:37:45,918 [INFO] PluginManage:359 - Loaded plugin ipmanager (category:base,tabindex:5) +2025-09-20 14:37:45,918 [INFO] PluginManage:310 - Check plugin lpbam +2025-09-20 14:37:45,933 [INFO] PluginManage:359 - Loaded plugin lpbam (category:base,tabindex:0) +2025-09-20 14:37:45,933 [INFO] PluginManage:310 - Check plugin memorymap +2025-09-20 14:37:45,952 [INFO] PluginManage:359 - Loaded plugin memorymap (category:base,tabindex:4) +2025-09-20 14:37:45,952 [INFO] PluginManage:310 - Check plugin pinoutandconfiguration +2025-09-20 14:37:45,962 [INFO] PluginManage:359 - Loaded plugin pinoutandconfiguration (category:base,tabindex:1) +2025-09-20 14:37:45,963 [INFO] PluginManage:310 - Check plugin pinoutconfig +2025-09-20 14:37:46,099 [WARN] SupportedApi:132 - Cannot load RTOS API schema: s4s-elt-must-match.1: The content of 'definitions' must match (annotation?, (simpleType | complexType)?, (unique | key | keyref)*)). A problem was found starting at: attribute. +2025-09-20 14:37:46,289 [INFO] PluginManage:359 - Loaded plugin pinoutconfig (category:base,tabindex:0) +2025-09-20 14:37:46,290 [INFO] PluginManage:310 - Check plugin power +2025-09-20 14:37:46,305 [INFO] PluginManage:359 - Loaded plugin power (category:power,tabindex:4) +2025-09-20 14:37:46,305 [INFO] PluginManage:310 - Check plugin projectmanager +2025-09-20 14:37:46,329 [INFO] PluginManage:359 - Loaded plugin projectmanager (category:projectmanager,tabindex:4) +2025-09-20 14:37:46,330 [INFO] PluginManage:310 - Check plugin rif +2025-09-20 14:37:46,342 [INFO] PluginManage:359 - Loaded plugin rif (category:base,tabindex:3) +2025-09-20 14:37:46,342 [INFO] PluginManage:310 - Check plugin thirdparty +2025-09-20 14:37:46,530 [WARN] IntegrityCheckThread:84 - waiting for thirdparty lock release [integrity check] +2025-09-20 14:37:46,531 [INFO] PluginManage:359 - Loaded plugin thirdparty (category:base,tabindex:-1) +2025-09-20 14:37:46,531 [INFO] IntegrityCheckThread:86 - entering critical section [integrity check] +2025-09-20 14:37:46,531 [INFO] PluginManage:310 - Check plugin tools +2025-09-20 14:37:46,531 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [1/15] +2025-09-20 14:37:46,535 [INFO] PluginManage:359 - Loaded plugin tools (category:base,tabindex:7) +2025-09-20 14:37:46,536 [INFO] PluginManage:310 - Check plugin tutovideos +2025-09-20 14:37:46,809 [INFO] PluginManage:359 - Loaded plugin tutovideos (category:base,tabindex:-1) +2025-09-20 14:37:46,809 [INFO] PluginManage:310 - Check plugin updater +2025-09-20 14:37:46,836 [INFO] PluginManage:359 - Loaded plugin updater (category:base,tabindex:12) +2025-09-20 14:37:46,836 [INFO] PluginManage:310 - Check plugin userauth +2025-09-20 14:37:46,841 [INFO] UserAuth:118 - Init User Auth plugin +2025-09-20 14:37:46,842 [INFO] PluginManage:359 - Loaded plugin userauth (category:base,tabindex:14) +2025-09-20 14:37:46,842 [INFO] PluginManage:283 - PluginManage : Loaded plugins [18] +2025-09-20 14:37:47,072 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-09-20 14:37:47,155 [INFO] CADModel:165 - CPN selected for project level +2025-09-20 14:37:47,155 [INFO] CADModel:114 - Register for checkConnection events +2025-09-20 14:37:47,170 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,170 [INFO] PluginManager:220 - loadIPPluginJar : add gtzc +2025-09-20 14:37:47,177 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,177 [INFO] PluginManager:220 - loadIPPluginJar : add usbx +2025-09-20 14:37:47,178 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,179 [INFO] PluginManager:220 - loadIPPluginJar : add fatfs +2025-09-20 14:37:47,182 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,182 [INFO] PluginManager:220 - loadIPPluginJar : add i2c +2025-09-20 14:37:47,184 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,184 [INFO] PluginManager:220 - loadIPPluginJar : add tim +2025-09-20 14:37:47,185 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,186 [INFO] PluginManager:220 - loadIPPluginJar : add quadspi +2025-09-20 14:37:47,189 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,190 [INFO] PluginManager:220 - loadIPPluginJar : add ipddr +2025-09-20 14:37:47,192 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,193 [INFO] PluginManager:220 - loadIPPluginJar : add i2s +2025-09-20 14:37:47,196 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,196 [INFO] PluginManager:220 - loadIPPluginJar : add openamp +2025-09-20 14:37:47,199 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,199 [INFO] PluginManager:220 - loadIPPluginJar : add i3c +2025-09-20 14:37:47,201 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,201 [INFO] PluginManager:220 - loadIPPluginJar : add ucpd +2025-09-20 14:37:47,204 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,204 [INFO] PluginManager:220 - loadIPPluginJar : add cryp +2025-09-20 14:37:47,206 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,206 [INFO] PluginManager:220 - loadIPPluginJar : add comp +2025-09-20 14:37:47,208 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,209 [INFO] PluginManager:220 - loadIPPluginJar : add spi +2025-09-20 14:37:47,212 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,213 [INFO] PluginManager:220 - loadIPPluginJar : add touchsensing +2025-09-20 14:37:47,215 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,216 [INFO] PluginManager:220 - loadIPPluginJar : add can +2025-09-20 14:37:47,218 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,218 [INFO] PluginManager:220 - loadIPPluginJar : add aes +2025-09-20 14:37:47,227 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,227 [INFO] PluginManager:220 - loadIPPluginJar : add adc +2025-09-20 14:37:47,232 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,233 [INFO] PluginManager:220 - loadIPPluginJar : add nvic +2025-09-20 14:37:47,239 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,240 [INFO] PluginManager:220 - loadIPPluginJar : add freertos +2025-09-20 14:37:47,247 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,247 [INFO] PluginManager:220 - loadIPPluginJar : add dma +2025-09-20 14:37:47,251 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,251 [INFO] PluginManager:220 - loadIPPluginJar : add resmgrutility +2025-09-20 14:37:47,254 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,254 [INFO] PluginManager:220 - loadIPPluginJar : add pdm2pcm +2025-09-20 14:37:47,257 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,257 [INFO] PluginManager:220 - loadIPPluginJar : add hash +2025-09-20 14:37:47,259 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,260 [INFO] PluginManager:220 - loadIPPluginJar : add dfsdm +2025-09-20 14:37:47,261 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,262 [INFO] PluginManager:220 - loadIPPluginJar : add radio +2025-09-20 14:37:47,269 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,273 [INFO] PluginManager:220 - loadIPPluginJar : add plateformsettings +2025-09-20 14:37:47,279 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,279 [INFO] PluginManager:220 - loadIPPluginJar : add gic +2025-09-20 14:37:47,281 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,281 [INFO] PluginManager:220 - loadIPPluginJar : add ltdc +2025-09-20 14:37:47,283 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,283 [INFO] PluginManager:220 - loadIPPluginJar : add tracer_emb +2025-09-20 14:37:47,286 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,286 [INFO] PluginManager:220 - loadIPPluginJar : add lorawan +2025-09-20 14:37:47,288 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,288 [INFO] PluginManager:220 - loadIPPluginJar : add tsc +2025-09-20 14:37:47,290 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,290 [INFO] PluginManager:220 - loadIPPluginJar : add ts +2025-09-20 14:37:47,292 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,293 [INFO] PluginManager:220 - loadIPPluginJar : add gfxmmu +2025-09-20 14:37:47,296 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,296 [INFO] PluginManager:220 - loadIPPluginJar : add dma3 +2025-09-20 14:37:47,299 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,299 [INFO] PluginManager:220 - loadIPPluginJar : add ddr_ctrl_phy +2025-09-20 14:37:47,301 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,301 [INFO] PluginManager:220 - loadIPPluginJar : add genericplugin +2025-09-20 14:37:47,304 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,304 [INFO] PluginManager:220 - loadIPPluginJar : add opamp +2025-09-20 14:37:47,312 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,312 [INFO] PluginManager:220 - loadIPPluginJar : add stm32_wpan +2025-09-20 14:37:47,316 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,316 [INFO] PluginManager:220 - loadIPPluginJar : add usart +2025-09-20 14:37:47,319 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,319 [INFO] PluginManager:220 - loadIPPluginJar : add sai +2025-09-20 14:37:47,328 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,328 [INFO] PluginManager:220 - loadIPPluginJar : add linkedlist +2025-09-20 14:37:47,331 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,331 [INFO] PluginManager:220 - loadIPPluginJar : add extmemmanager +2025-09-20 14:37:47,336 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,336 [INFO] PluginManager:220 - loadIPPluginJar : add fmc +2025-09-20 14:37:47,341 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,341 [INFO] PluginManager:220 - loadIPPluginJar : add gpio +2025-09-20 14:37:47,348 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 14:37:47,348 [INFO] PluginManager:220 - loadIPPluginJar : add mdma +2025-09-20 14:37:47,458 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 14:37:47,494 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-09-20 14:37:47,511 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-09-20 14:37:47,520 [INFO] CADModel:165 - CPN selected for project level +2025-09-20 14:37:47,520 [INFO] CADModel:114 - Register for checkConnection events +2025-09-20 14:37:47,520 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 14:37:47,520 [ERROR] CADModel:125 - Updater not yet initialized, retry later +2025-09-20 14:37:47,705 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 14:37:47,707 [INFO] CADModel:165 - CPN selected for project level +2025-09-20 14:37:47,707 [INFO] CADModel:114 - Register for checkConnection events +2025-09-20 14:37:47,708 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 14:37:47,708 [ERROR] CADModel:125 - Updater not yet initialized, retry later +2025-09-20 14:37:47,712 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 14:37:47,871 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 14:37:47,877 [INFO] DbMcusAds:53 - JSON generation date=Tue Jul 08 03:14:23 CDT 2025 (1751962463524) +2025-09-20 14:37:47,877 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 14:37:47,963 [WARN] DetailPanel:346 - Failed to get advertising image, set to default +2025-09-20 14:37:48,092 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 14:37:48,094 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 14:37:48,095 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 14:37:48,095 [WARN] DetailPanel:346 - Failed to get advertising image, set to default +2025-09-20 14:37:48,096 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 14:37:48,148 [ERROR] Updater:1198 - MainUpdater not yet initialized. External WinMGr cannot be set. +2025-09-20 14:37:48,150 [INFO] Updater:1134 - Updater Version found : 6.15.0 +2025-09-20 14:37:48,176 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-09-20 14:37:49,186 [INFO] MainUpdater:2872 - connection check result : 10 +2025-09-20 14:37:49,186 [INFO] MainUpdater:3604 - Updater definition file requires update +2025-09-20 14:37:49,186 [INFO] MainUpdater:289 - Updater Check For Update Now. +2025-09-20 14:37:49,187 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-09-20 14:37:49,193 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated) +2025-09-20 14:37:49,193 [INFO] UserAuth:487 - Internet connection configuration mode: 1 +2025-09-20 14:37:49,208 [INFO] JxBrowserEngine:152 - Initiate JxBrowser Engine with user profile folder +2025-09-20 14:37:49,383 [INFO] ServerAccessManage:452 - Complete download http(s) 200 +2025-09-20 14:37:49,384 [INFO] ServerAccessManage:509 - Download File updaters.zip +2025-09-20 14:37:49,532 [WARN] MainUpdater:1193 - Updater busy. Cannot search thirdparties +2025-09-20 14:37:49,532 [INFO] ThirdPartyUpdaterWithRetryManager:96 - Updater plugin is busy. [1/15] +2025-09-20 14:37:49,930 [INFO] FileExtend:248 - Unzip File : updaters.zip +2025-09-20 14:37:49,931 [INFO] FileExtend:263 - Standard Zip Deflate +2025-09-20 14:37:50,040 [INFO] WebApp:169 - Instantiating new browser for Auth +2025-09-20 14:37:50,566 [INFO] ServerAccessManage:452 - Complete download http(s) 200 +2025-09-20 14:37:50,567 [INFO] ServerAccessManage:509 - Download File PacksControlFlags.xml +2025-09-20 14:37:50,832 [INFO] ServerAccessManage:452 - Complete download http(s) 200 +2025-09-20 14:37:50,832 [INFO] ServerAccessManage:509 - Download File cubemx.pidx +2025-09-20 14:37:51,200 [INFO] LoadServerUpdatesThread:375 - End of LoadServerUpdate Thread +2025-09-20 14:37:51,510 [INFO] CheckServerUpdateThread:120 - End of CheckServer Thread +2025-09-20 14:37:51,831 [INFO] WebApp:463 - Apply proxy settings +2025-09-20 14:37:51,833 [INFO] WebApp:548 - Chromium requires no authentication +2025-09-20 14:37:51,852 [INFO] WebApp:491 - Direct internet connection detected +2025-09-20 14:37:51,884 [INFO] WebApp:900 - Register for checkConnection events +2025-09-20 14:37:51,884 [INFO] WebApp:463 - Apply proxy settings +2025-09-20 14:37:51,884 [INFO] WebApp:548 - Chromium requires no authentication +2025-09-20 14:37:51,885 [INFO] WebApp:491 - Direct internet connection detected +2025-09-20 14:37:52,172 [INFO] WebApp:225 - Starting web application +2025-09-20 14:37:52,172 [INFO] WebApp:593 - Web application path used /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659/db/plugins/mcufinder/reactClient1/index.html +2025-09-20 14:37:52,350 [INFO] UserAuth:487 - Internet connection configuration mode: 1 +2025-09-20 14:37:52,869 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENVWB1.1.4.0 +2025-09-20 14:37:52,889 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-ASTRA1.2.0.2 +2025-09-20 14:37:52,904 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SMBUS.2.1.0 +2025-09-20 14:37:52,921 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST60.1.0.0 +2025-09-20 14:37:53,007 [INFO] WebApp:191 - Connection restablished +2025-09-20 14:37:53,058 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F7.1.1.0 +2025-09-20 14:37:53,110 [WARN] PackLoader:240 - Cannot read IP mode file for WES.I-CUBE-Cesium.1.4.0 +2025-09-20 14:37:53,191 [WARN] PackLoader:240 - Cannot read IP mode file for Infineon.AIROC-Wi-Fi-Bluetooth-STM32.1.7.1 +2025-09-20 14:37:53,284 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7.3.4.0 +2025-09-20 14:37:53,309 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DISPLAY.3.0.0 +2025-09-20 14:37:53,346 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC10.1.0.0 +2025-09-20 14:37:53,363 [WARN] PackLoader:240 - Cannot read IP mode file for emotas.I-CUBE-CANOPEN.1.3.0 +2025-09-20 14:37:53,387 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.1.0 +2025-09-20 14:37:53,411 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-SMARTAG2.1.2.0 +2025-09-20 14:37:53,433 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-FLIGHT1.5.1.0 +2025-09-20 14:37:53,460 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-09-20 14:37:53,464 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-09-20 14:37:53,465 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-09-20 14:37:53,465 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-09-20 14:37:53,470 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-09-20 14:37:53,483 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WL.2.0.0 +2025-09-20 14:37:53,496 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENV1.5.0.0 +2025-09-20 14:37:53,512 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE2.3.3.0 +2025-09-20 14:37:53,527 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC9.1.0.0 +2025-09-20 14:37:53,549 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSL.5.8.2 +2025-09-20 14:37:53,561 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE1.7.1.0 +2025-09-20 14:37:53,570 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfMQTT.1.19.2 +2025-09-20 14:37:53,582 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-EEPRMA1.5.2.0 +2025-09-20 14:37:53,629 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G0.1.1.0 +2025-09-20 14:37:53,646 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SAFEA1.1.2.2 +2025-09-20 14:37:53,655 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC4.3.0.0 +2025-09-20 14:37:53,675 [WARN] PackLoader:240 - Cannot read IP mode file for EmbeddedOffice.I-CUBE-FS-RTOS.1.0.1 +2025-09-20 14:37:53,687 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-WB05N.2.0.0 +2025-09-20 14:37:53,697 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfTPM.3.8.0 +2025-09-20 14:37:53,717 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TCPP.4.2.0 +2025-09-20 14:37:53,733 [WARN] PackLoader:240 - Cannot read IP mode file for RealThread.X-CUBE-RT-Thread_Nano.4.1.1 +2025-09-20 14:37:53,746 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-SIGFOX1.3.2.0 +2025-09-20 14:37:53,760 [WARN] PackLoader:240 - Cannot read IP mode file for ITTIA_DB.I-CUBE-ITTIADB.8.9.0 +2025-09-20 14:37:53,774 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST67W61.1.0.0 +2025-09-20 14:37:53,786 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.2.0 +2025-09-20 14:37:53,861 [WARN] PackLoader:240 - Cannot read IP mode file for SEGGER.I-CUBE-embOS.1.3.1 +2025-09-20 14:37:53,995 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0 +2025-09-20 14:37:54,180 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-MEMS1.11.3.0 +2025-09-20 14:37:54,522 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-PM33A1.1.0.0 +2025-09-20 14:37:54,573 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F4.1.1.0 +2025-09-20 14:37:54,585 [WARN] PackLoader:240 - Cannot read IP mode file for Avnet-IotConnect.X-CUBE-IoTC-DA16k-PMOD.1.0.0 +2025-09-20 14:37:54,593 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ISPU.2.1.0 +2025-09-20 14:37:54,608 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC12.1.0.0 +2025-09-20 14:37:54,642 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L5.2.0.0 +2025-09-20 14:37:54,659 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC6.3.1.0 +2025-09-20 14:37:54,673 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-FREERTOS.1.3.1 +2025-09-20 14:37:54,683 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STAIOTCFT.1.0.0 +2025-09-20 14:37:54,691 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DPower.1.3.0 +2025-09-20 14:37:54,733 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-09-20 14:37:54,735 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L4.2.0.0 +2025-09-20 14:37:54,738 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-09-20 14:37:54,739 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-09-20 14:37:54,740 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-09-20 14:37:54,758 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SFXS2LP1.4.0.0 +2025-09-20 14:37:54,788 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.1.0 +2025-09-20 14:37:54,826 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 14:37:54,826 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 14:37:54,832 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WB.2.0.0 +2025-09-20 14:37:54,833 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 14:37:54,834 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 14:37:54,835 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 14:37:54,836 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 14:37:54,836 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 14:37:54,847 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-GNSS1.7.0.1 +2025-09-20 14:37:54,855 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOUCHGFX.4.25.0 +2025-09-20 14:37:54,860 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : Cortex-A Device cause : null +2025-09-20 14:37:54,878 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null +2025-09-20 14:37:54,879 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null +2025-09-20 14:37:54,879 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null +2025-09-20 14:37:54,910 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SUBG2.5.0.0 +2025-09-20 14:37:54,966 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7RS.1.1.0 +2025-09-20 14:37:54,983 [WARN] PackLoader:240 - Cannot read IP mode file for Cesanta.I-CUBE-Mongoose.7.13.0 +2025-09-20 14:37:55,019 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G4.2.0.0 +2025-09-20 14:37:55,027 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSH.1.4.20 +2025-09-20 14:37:55,034 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC7.2.0.0 +2025-09-20 14:37:55,067 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-IPS.3.1.0 +2025-09-20 14:37:55,092 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALS.1.0.2 +2025-09-20 14:37:55,124 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-STSE01.1.0.0 +2025-09-20 14:37:55,141 [WARN] PackLoader:240 - Cannot read IP mode file for portGmbH.I-Cube-SoM-uGOAL.1.1.0 +2025-09-20 14:37:55,173 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOF1.3.4.3 +2025-09-20 14:37:55,199 [INFO] ThirdParty:978 - Integrity check success = true +2025-09-20 14:37:55,199 [INFO] IntegrityCheckThread:100 - exiting critical section [integrity check] +2025-09-20 14:37:55,200 [INFO] IntegrityCheckThread:103 - End integrity checks thread +2025-09-20 22:34:38,849 [INFO] Activator:176 - + + +2025-09-20 22:34:38,851 [INFO] Activator:177 - !SESSION log4j initialized +2025-09-20 22:34:44,837 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] +2025-09-20 22:34:46,885 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-09-20 22:34:46,903 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ +2025-09-20 22:34:46,904 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ +2025-09-20 22:34:46,904 [WARN] ApiDb:259 - Overriding images path with different value: => /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ +2025-09-20 22:34:46,909 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 22:34:46,911 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 22:34:46,913 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ +2025-09-20 22:34:47,064 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-09-20 22:34:47,120 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ +2025-09-20 22:34:47,120 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ +2025-09-20 22:34:47,121 [INFO] ApiDb:261 - Set plugin images path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ +2025-09-20 22:34:47,121 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 22:34:47,121 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 22:34:47,121 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 22:34:47,121 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 22:34:47,121 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 22:34:47,121 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 22:34:47,122 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ +2025-09-20 22:34:47,192 [INFO] MainPanel:274 - HeapMemory: 268435456 +2025-09-20 22:34:47,536 [INFO] DbMcusXml:78 - Set database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//mcu/ +2025-09-20 22:34:47,536 [INFO] ApiDb:274 - Set plugin database path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/boardmanager/ +2025-09-20 22:34:47,537 [INFO] ApiDb:261 - Set plugin images path to: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db//plugins/mcufinder/images/ +2025-09-20 22:34:47,537 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 22:34:47,537 [INFO] ApiDb:250 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 22:34:47,537 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 22:34:47,537 [INFO] DbMcusAds:125 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/ +2025-09-20 22:34:47,537 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 22:34:47,537 [WARN] DbFile:41 - Overriding database path with different value: /home/ja/.stmcufinder/plugins/mcufinder/ => /home/ja/.stmcufinder/plugins/mcufinder +2025-09-20 22:34:47,538 [INFO] CrossReferenceDbSqlite:203 - Set database path to: /home/ja/.stmcufinder/plugins/mcufinder//mcu/cs/ +2025-09-20 22:34:47,554 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-09-20 22:34:47,556 [INFO] PluginManage:196 - Search for loadable plugins [exclusion list=, ] +2025-09-20 22:34:47,557 [INFO] PluginManage:310 - Check plugin analytics +2025-09-20 22:34:47,933 [INFO] AnalyticsPlugin:253 - Accepted Software Licenses: STM32CubeMX.6.15.0 +2025-09-20 22:34:47,933 [INFO] AnalyticsPlugin:255 - Accepted CMSIS Pack Licenses: +2025-09-20 22:34:47,933 [INFO] AnalyticsPlugin:257 - Accepted Firmware Licenses: FW.F4.1.28.0 +2025-09-20 22:34:47,936 [INFO] PluginManage:359 - Loaded plugin analytics (category:tool,tabindex:-1) +2025-09-20 22:34:47,936 [INFO] PluginManage:310 - Check plugin cadmodel +2025-09-20 22:34:47,940 [INFO] CADModel:105 - Init CAD model plugin +2025-09-20 22:34:47,941 [INFO] PluginManage:359 - Loaded plugin cadmodel (category:power,tabindex:5) +2025-09-20 22:34:47,941 [INFO] PluginManage:310 - Check plugin clock +2025-09-20 22:34:47,951 [INFO] PluginManage:359 - Loaded plugin clock (category:base,tabindex:2) +2025-09-20 22:34:47,951 [INFO] PluginManage:310 - Check plugin ddr +2025-09-20 22:34:47,954 [INFO] PluginManage:359 - Loaded plugin ddr (category:tool,tabindex:6) +2025-09-20 22:34:47,954 [INFO] PluginManage:310 - Check plugin filemanager +2025-09-20 22:34:48,100 [INFO] PluginManage:359 - Loaded plugin filemanager (category:base,tabindex:10) +2025-09-20 22:34:48,101 [INFO] PluginManage:310 - Check plugin ipmanager +2025-09-20 22:34:48,106 [INFO] PluginManage:359 - Loaded plugin ipmanager (category:base,tabindex:5) +2025-09-20 22:34:48,106 [INFO] PluginManage:310 - Check plugin lpbam +2025-09-20 22:34:48,117 [INFO] PluginManage:359 - Loaded plugin lpbam (category:base,tabindex:0) +2025-09-20 22:34:48,118 [INFO] PluginManage:310 - Check plugin memorymap +2025-09-20 22:34:48,130 [INFO] PluginManage:359 - Loaded plugin memorymap (category:base,tabindex:4) +2025-09-20 22:34:48,130 [INFO] PluginManage:310 - Check plugin pinoutandconfiguration +2025-09-20 22:34:48,140 [INFO] PluginManage:359 - Loaded plugin pinoutandconfiguration (category:base,tabindex:1) +2025-09-20 22:34:48,140 [INFO] PluginManage:310 - Check plugin pinoutconfig +2025-09-20 22:34:48,246 [WARN] SupportedApi:132 - Cannot load RTOS API schema: s4s-elt-must-match.1: The content of 'definitions' must match (annotation?, (simpleType | complexType)?, (unique | key | keyref)*)). A problem was found starting at: attribute. +2025-09-20 22:34:48,373 [INFO] PluginManage:359 - Loaded plugin pinoutconfig (category:base,tabindex:0) +2025-09-20 22:34:48,373 [INFO] PluginManage:310 - Check plugin power +2025-09-20 22:34:48,389 [INFO] PluginManage:359 - Loaded plugin power (category:power,tabindex:4) +2025-09-20 22:34:48,390 [INFO] PluginManage:310 - Check plugin projectmanager +2025-09-20 22:34:48,413 [INFO] PluginManage:359 - Loaded plugin projectmanager (category:projectmanager,tabindex:4) +2025-09-20 22:34:48,413 [INFO] PluginManage:310 - Check plugin rif +2025-09-20 22:34:48,424 [INFO] PluginManage:359 - Loaded plugin rif (category:base,tabindex:3) +2025-09-20 22:34:48,425 [INFO] PluginManage:310 - Check plugin thirdparty +2025-09-20 22:34:48,564 [INFO] PluginManage:359 - Loaded plugin thirdparty (category:base,tabindex:-1) +2025-09-20 22:34:48,564 [WARN] IntegrityCheckThread:84 - waiting for thirdparty lock release [integrity check] +2025-09-20 22:34:48,564 [INFO] IntegrityCheckThread:86 - entering critical section [integrity check] +2025-09-20 22:34:48,564 [INFO] PluginManage:310 - Check plugin tools +2025-09-20 22:34:48,565 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [1/15] +2025-09-20 22:34:48,566 [INFO] PluginManage:359 - Loaded plugin tools (category:base,tabindex:7) +2025-09-20 22:34:48,567 [INFO] PluginManage:310 - Check plugin tutovideos +2025-09-20 22:34:48,781 [INFO] PluginManage:359 - Loaded plugin tutovideos (category:base,tabindex:-1) +2025-09-20 22:34:48,781 [INFO] PluginManage:310 - Check plugin updater +2025-09-20 22:34:48,807 [INFO] PluginManage:359 - Loaded plugin updater (category:base,tabindex:12) +2025-09-20 22:34:48,807 [INFO] PluginManage:310 - Check plugin userauth +2025-09-20 22:34:48,811 [INFO] UserAuth:118 - Init User Auth plugin +2025-09-20 22:34:48,812 [INFO] PluginManage:359 - Loaded plugin userauth (category:base,tabindex:14) +2025-09-20 22:34:48,813 [INFO] PluginManage:283 - PluginManage : Loaded plugins [18] +2025-09-20 22:34:49,015 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-09-20 22:34:49,108 [INFO] CADModel:165 - CPN selected for project level +2025-09-20 22:34:49,108 [INFO] CADModel:114 - Register for checkConnection events +2025-09-20 22:34:49,123 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,123 [INFO] PluginManager:220 - loadIPPluginJar : add gtzc +2025-09-20 22:34:49,130 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,130 [INFO] PluginManager:220 - loadIPPluginJar : add usbx +2025-09-20 22:34:49,132 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,132 [INFO] PluginManager:220 - loadIPPluginJar : add fatfs +2025-09-20 22:34:49,136 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,136 [INFO] PluginManager:220 - loadIPPluginJar : add i2c +2025-09-20 22:34:49,138 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,138 [INFO] PluginManager:220 - loadIPPluginJar : add tim +2025-09-20 22:34:49,140 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,140 [INFO] PluginManager:220 - loadIPPluginJar : add quadspi +2025-09-20 22:34:49,144 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,145 [INFO] PluginManager:220 - loadIPPluginJar : add ipddr +2025-09-20 22:34:49,147 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,148 [INFO] PluginManager:220 - loadIPPluginJar : add i2s +2025-09-20 22:34:49,152 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,152 [INFO] PluginManager:220 - loadIPPluginJar : add openamp +2025-09-20 22:34:49,155 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,155 [INFO] PluginManager:220 - loadIPPluginJar : add i3c +2025-09-20 22:34:49,157 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,157 [INFO] PluginManager:220 - loadIPPluginJar : add ucpd +2025-09-20 22:34:49,160 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,160 [INFO] PluginManager:220 - loadIPPluginJar : add cryp +2025-09-20 22:34:49,162 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,162 [INFO] PluginManager:220 - loadIPPluginJar : add comp +2025-09-20 22:34:49,164 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,164 [INFO] PluginManager:220 - loadIPPluginJar : add spi +2025-09-20 22:34:49,169 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,169 [INFO] PluginManager:220 - loadIPPluginJar : add touchsensing +2025-09-20 22:34:49,172 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,172 [INFO] PluginManager:220 - loadIPPluginJar : add can +2025-09-20 22:34:49,174 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,175 [INFO] PluginManager:220 - loadIPPluginJar : add aes +2025-09-20 22:34:49,185 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,185 [INFO] PluginManager:220 - loadIPPluginJar : add adc +2025-09-20 22:34:49,190 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,191 [INFO] PluginManager:220 - loadIPPluginJar : add nvic +2025-09-20 22:34:49,198 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,198 [INFO] PluginManager:220 - loadIPPluginJar : add freertos +2025-09-20 22:34:49,206 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,206 [INFO] PluginManager:220 - loadIPPluginJar : add dma +2025-09-20 22:34:49,210 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,211 [INFO] PluginManager:220 - loadIPPluginJar : add resmgrutility +2025-09-20 22:34:49,214 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,214 [INFO] PluginManager:220 - loadIPPluginJar : add pdm2pcm +2025-09-20 22:34:49,217 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,218 [INFO] PluginManager:220 - loadIPPluginJar : add hash +2025-09-20 22:34:49,220 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,221 [INFO] PluginManager:220 - loadIPPluginJar : add dfsdm +2025-09-20 22:34:49,222 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,223 [INFO] PluginManager:220 - loadIPPluginJar : add radio +2025-09-20 22:34:49,230 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,235 [INFO] PluginManager:220 - loadIPPluginJar : add plateformsettings +2025-09-20 22:34:49,242 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,242 [INFO] PluginManager:220 - loadIPPluginJar : add gic +2025-09-20 22:34:49,243 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,243 [INFO] PluginManager:220 - loadIPPluginJar : add ltdc +2025-09-20 22:34:49,245 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,246 [INFO] PluginManager:220 - loadIPPluginJar : add tracer_emb +2025-09-20 22:34:49,249 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,249 [INFO] PluginManager:220 - loadIPPluginJar : add lorawan +2025-09-20 22:34:49,252 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,252 [INFO] PluginManager:220 - loadIPPluginJar : add tsc +2025-09-20 22:34:49,255 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,255 [INFO] PluginManager:220 - loadIPPluginJar : add ts +2025-09-20 22:34:49,257 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,257 [INFO] PluginManager:220 - loadIPPluginJar : add gfxmmu +2025-09-20 22:34:49,260 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,260 [INFO] PluginManager:220 - loadIPPluginJar : add dma3 +2025-09-20 22:34:49,264 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,264 [INFO] PluginManager:220 - loadIPPluginJar : add ddr_ctrl_phy +2025-09-20 22:34:49,266 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,266 [INFO] PluginManager:220 - loadIPPluginJar : add genericplugin +2025-09-20 22:34:49,270 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,270 [INFO] PluginManager:220 - loadIPPluginJar : add opamp +2025-09-20 22:34:49,279 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,279 [INFO] PluginManager:220 - loadIPPluginJar : add stm32_wpan +2025-09-20 22:34:49,282 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,282 [INFO] PluginManager:220 - loadIPPluginJar : add usart +2025-09-20 22:34:49,286 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,287 [INFO] PluginManager:220 - loadIPPluginJar : add sai +2025-09-20 22:34:49,295 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,295 [INFO] PluginManager:220 - loadIPPluginJar : add linkedlist +2025-09-20 22:34:49,298 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,299 [INFO] PluginManager:220 - loadIPPluginJar : add extmemmanager +2025-09-20 22:34:49,305 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,305 [INFO] PluginManager:220 - loadIPPluginJar : add fmc +2025-09-20 22:34:49,311 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,311 [INFO] PluginManager:220 - loadIPPluginJar : add gpio +2025-09-20 22:34:49,320 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:34:49,321 [INFO] PluginManager:220 - loadIPPluginJar : add mdma +2025-09-20 22:34:49,445 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 22:34:49,511 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-09-20 22:34:49,543 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-09-20 22:34:49,556 [INFO] CADModel:165 - CPN selected for project level +2025-09-20 22:34:49,556 [INFO] CADModel:114 - Register for checkConnection events +2025-09-20 22:34:49,556 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 22:34:49,557 [ERROR] CADModel:125 - Updater not yet initialized, retry later +2025-09-20 22:34:49,862 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 22:34:49,866 [INFO] CADModel:165 - CPN selected for project level +2025-09-20 22:34:49,866 [INFO] CADModel:114 - Register for checkConnection events +2025-09-20 22:34:49,866 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 22:34:49,867 [ERROR] CADModel:125 - Updater not yet initialized, retry later +2025-09-20 22:34:49,877 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 22:34:50,104 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 22:34:50,112 [INFO] DbMcusAds:53 - JSON generation date=Tue Jul 08 03:14:23 CDT 2025 (1751962463524) +2025-09-20 22:34:50,112 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 22:34:50,179 [WARN] DetailPanel:346 - Failed to get advertising image, set to default +2025-09-20 22:34:50,305 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 22:34:50,307 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 22:34:50,307 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 22:34:50,307 [WARN] DetailPanel:346 - Failed to get advertising image, set to default +2025-09-20 22:34:50,309 [FATAL] Updater:351 - Updater called before beeing initialized +2025-09-20 22:34:50,360 [ERROR] Updater:1198 - MainUpdater not yet initialized. External WinMGr cannot be set. +2025-09-20 22:34:50,363 [INFO] Updater:1134 - Updater Version found : 6.15.0 +2025-09-20 22:34:50,390 [INFO] ApplicationProperties:184 - Using Application install path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-09-20 22:34:51,222 [INFO] MainUpdater:2872 - connection check result : 10 +2025-09-20 22:34:51,223 [INFO] MainUpdater:289 - Updater Check For Update Now. +2025-09-20 22:34:51,223 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-09-20 22:34:51,231 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated) +2025-09-20 22:34:51,233 [INFO] UserAuth:487 - Internet connection configuration mode: 1 +2025-09-20 22:34:51,266 [INFO] JxBrowserEngine:152 - Initiate JxBrowser Engine with user profile folder +2025-09-20 22:34:51,523 [INFO] CheckServerUpdateThread:120 - End of CheckServer Thread +2025-09-20 22:34:51,906 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENVWB1.1.4.0 +2025-09-20 22:34:51,923 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-ASTRA1.2.0.2 +2025-09-20 22:34:51,939 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SMBUS.2.1.0 +2025-09-20 22:34:51,953 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST60.1.0.0 +2025-09-20 22:34:52,039 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F7.1.1.0 +2025-09-20 22:34:52,063 [WARN] PackLoader:240 - Cannot read IP mode file for WES.I-CUBE-Cesium.1.4.0 +2025-09-20 22:34:52,161 [WARN] PackLoader:240 - Cannot read IP mode file for Infineon.AIROC-Wi-Fi-Bluetooth-STM32.1.7.1 +2025-09-20 22:34:52,275 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7.3.4.0 +2025-09-20 22:34:52,316 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DISPLAY.3.0.0 +2025-09-20 22:34:52,349 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC10.1.0.0 +2025-09-20 22:34:52,371 [WARN] PackLoader:240 - Cannot read IP mode file for emotas.I-CUBE-CANOPEN.1.3.0 +2025-09-20 22:34:52,394 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.1.0 +2025-09-20 22:34:52,410 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-SMARTAG2.1.2.0 +2025-09-20 22:34:52,417 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-FLIGHT1.5.1.0 +2025-09-20 22:34:52,436 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-09-20 22:34:52,437 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-09-20 22:34:52,438 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-09-20 22:34:52,438 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-09-20 22:34:52,441 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-09-20 22:34:52,452 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WL.2.0.0 +2025-09-20 22:34:52,462 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENV1.5.0.0 +2025-09-20 22:34:52,476 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE2.3.3.0 +2025-09-20 22:34:52,490 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC9.1.0.0 +2025-09-20 22:34:52,505 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSL.5.8.2 +2025-09-20 22:34:52,516 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE1.7.1.0 +2025-09-20 22:34:52,522 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfMQTT.1.19.2 +2025-09-20 22:34:52,532 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-EEPRMA1.5.2.0 +2025-09-20 22:34:52,586 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G0.1.1.0 +2025-09-20 22:34:52,604 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SAFEA1.1.2.2 +2025-09-20 22:34:52,613 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC4.3.0.0 +2025-09-20 22:34:52,637 [WARN] PackLoader:240 - Cannot read IP mode file for EmbeddedOffice.I-CUBE-FS-RTOS.1.0.1 +2025-09-20 22:34:52,647 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-WB05N.2.0.0 +2025-09-20 22:34:52,653 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfTPM.3.8.0 +2025-09-20 22:34:52,682 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TCPP.4.2.0 +2025-09-20 22:34:52,693 [WARN] PackLoader:240 - Cannot read IP mode file for RealThread.X-CUBE-RT-Thread_Nano.4.1.1 +2025-09-20 22:34:52,700 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-SIGFOX1.3.2.0 +2025-09-20 22:34:52,711 [WARN] PackLoader:240 - Cannot read IP mode file for ITTIA_DB.I-CUBE-ITTIADB.8.9.0 +2025-09-20 22:34:52,718 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST67W61.1.0.0 +2025-09-20 22:34:52,725 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.2.0 +2025-09-20 22:34:52,728 [INFO] WebApp:169 - Instantiating new browser for Auth +2025-09-20 22:34:52,790 [WARN] PackLoader:240 - Cannot read IP mode file for SEGGER.I-CUBE-embOS.1.3.1 +2025-09-20 22:34:52,892 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0 +2025-09-20 22:34:52,994 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-MEMS1.11.3.0 +2025-09-20 22:34:53,592 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-PM33A1.1.0.0 +2025-09-20 22:34:53,673 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F4.1.1.0 +2025-09-20 22:34:53,684 [WARN] PackLoader:240 - Cannot read IP mode file for Avnet-IotConnect.X-CUBE-IoTC-DA16k-PMOD.1.0.0 +2025-09-20 22:34:53,690 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ISPU.2.1.0 +2025-09-20 22:34:53,704 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC12.1.0.0 +2025-09-20 22:34:53,746 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L5.2.0.0 +2025-09-20 22:34:53,766 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC6.3.1.0 +2025-09-20 22:34:53,781 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-FREERTOS.1.3.1 +2025-09-20 22:34:53,792 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STAIOTCFT.1.0.0 +2025-09-20 22:34:53,812 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DPower.1.3.0 +2025-09-20 22:34:53,862 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-09-20 22:34:53,864 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L4.2.0.0 +2025-09-20 22:34:53,868 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-09-20 22:34:53,872 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-09-20 22:34:53,874 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-09-20 22:34:53,913 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SFXS2LP1.4.0.0 +2025-09-20 22:34:53,975 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.1.0 +2025-09-20 22:34:54,066 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 22:34:54,067 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 22:34:54,089 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WB.2.0.0 +2025-09-20 22:34:54,095 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 22:34:54,099 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 22:34:54,100 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 22:34:54,106 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 22:34:54,110 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-09-20 22:34:54,133 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-GNSS1.7.0.1 +2025-09-20 22:34:54,145 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOUCHGFX.4.25.0 +2025-09-20 22:34:54,153 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : Cortex-A Device cause : null +2025-09-20 22:34:54,195 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null +2025-09-20 22:34:54,195 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null +2025-09-20 22:34:54,196 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null +2025-09-20 22:34:54,224 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SUBG2.5.0.0 +2025-09-20 22:34:54,309 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7RS.1.1.0 +2025-09-20 22:34:54,322 [WARN] PackLoader:240 - Cannot read IP mode file for Cesanta.I-CUBE-Mongoose.7.13.0 +2025-09-20 22:34:54,368 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G4.2.0.0 +2025-09-20 22:34:54,398 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSH.1.4.20 +2025-09-20 22:34:54,414 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC7.2.0.0 +2025-09-20 22:34:54,472 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-IPS.3.1.0 +2025-09-20 22:34:54,494 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALS.1.0.2 +2025-09-20 22:34:54,508 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-STSE01.1.0.0 +2025-09-20 22:34:54,522 [WARN] PackLoader:240 - Cannot read IP mode file for portGmbH.I-Cube-SoM-uGOAL.1.1.0 +2025-09-20 22:34:54,561 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOF1.3.4.3 +2025-09-20 22:34:54,601 [INFO] ThirdParty:978 - Integrity check success = true +2025-09-20 22:34:54,601 [INFO] IntegrityCheckThread:100 - exiting critical section [integrity check] +2025-09-20 22:34:54,602 [INFO] IntegrityCheckThread:103 - End integrity checks thread +2025-09-20 22:34:54,636 [INFO] WebApp:463 - Apply proxy settings +2025-09-20 22:34:54,637 [INFO] WebApp:548 - Chromium requires no authentication +2025-09-20 22:34:54,655 [INFO] WebApp:491 - Direct internet connection detected +2025-09-20 22:34:54,697 [INFO] WebApp:900 - Register for checkConnection events +2025-09-20 22:34:54,698 [INFO] WebApp:463 - Apply proxy settings +2025-09-20 22:34:54,698 [INFO] WebApp:548 - Chromium requires no authentication +2025-09-20 22:34:54,699 [INFO] WebApp:491 - Direct internet connection detected +2025-09-20 22:34:54,949 [INFO] WebApp:225 - Starting web application +2025-09-20 22:34:54,950 [INFO] WebApp:593 - Web application path used /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659/db/plugins/mcufinder/reactClient1/index.html +2025-09-20 22:34:55,089 [INFO] UserAuth:487 - Internet connection configuration mode: 1 +2025-09-20 22:34:55,511 [INFO] WebApp:191 - Connection restablished +2025-09-20 22:43:22,562 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated) +2025-09-20 22:43:22,565 [INFO] MainUpdater:2872 - connection check result : 10 +2025-09-20 22:43:22,566 [INFO] MainUpdater:2872 - connection check result : 10 +2025-09-20 22:43:22,612 [INFO] MicroXplorer:468 - Change Database Path : +2025-09-20 22:43:22,614 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-09-20 22:43:22,623 [WARN] ThirdParty:871 - waiting for thirdparty lock release [close project] +2025-09-20 22:43:22,623 [INFO] ThirdParty:873 - entering critical section [close project] +2025-09-20 22:43:22,626 [INFO] ThirdParty:883 - exiting critical section [close project] +2025-09-20 22:43:22,633 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-09-20 22:43:22,638 [INFO] UtilMem:75 - Begin LoadConfig() Used Memory: 716525584 Bytes (944766976) +2025-09-20 22:43:22,646 [INFO] MicroXplorer:468 - Change Database Path : +2025-09-20 22:43:22,646 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-09-20 22:43:22,646 [INFO] OpenFileManager:355 - Change cursor +2025-09-20 22:43:22,743 [INFO] Mcu:2029 - Initializing MCU STM32F429ZITx STM32F429ZITx STM32F429ZIT6 +2025-09-20 22:43:25,399 [INFO] Context:786 - Trying to add GPIOservice into a context which must be forbidden +2025-09-20 22:43:26,978 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) Pin101 (VP_RIF_VS_RIF1) cannot be retrieved for this MCU +2025-09-20 22:43:27,171 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS, mode=CMSIS_V1, owner=FREERTOS +2025-09-20 22:43:27,175 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS2, mode=CMSIS_V2, owner=FREERTOS +2025-09-20 22:43:27,175 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V1, owner=FREERTOS +2025-09-20 22:43:27,175 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V2, owner=FREERTOS +2025-09-20 22:43:27,176 [WARN] ModelIntegratedComponent:184 - Missing modes for component STMicroelectronics:FreeRTOS:0.0.1:STMicroelectronics:RTOS:FreeRTOS:Core:::10.2.0: +2025-09-20 22:43:27,237 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,238 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,238 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,239 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,239 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,239 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,239 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,239 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,240 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,240 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,240 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,240 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,240 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,240 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,241 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,241 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,241 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,241 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,241 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,241 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,242 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,242 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,242 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,242 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,242 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,242 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,243 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,243 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,243 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,243 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,243 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,243 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,244 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,244 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,244 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-09-20 22:43:27,244 [WARN] ModelPack:524 - Component already loaded: STMicroelectronics:HAL Drivers:0.0.0:STMicroelectronics:Device:STMicro_Driver:XSPI:HAL::0.0.1:HAL_XSPI +2025-09-20 22:43:27,517 [INFO] ThirdPartyModel:298 - Start build external matchings +2025-09-20 22:43:28,274 [INFO] ThirdPartyModel:316 - End build external matchings +2025-09-20 22:43:28,295 [INFO] RtosManager:1018 - Current active RTOS is FREERTOS [Cortex-M4NS] +2025-09-20 22:43:28,313 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 22:43:28,314 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Invalid parameter (FamilyName) +2025-09-20 22:43:28,315 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Parameter (RTCHSEDivFreq_Value) has invalid value (4000000) +2025-09-20 22:43:28,845 [INFO] ApiDb:581 - Connected to CubeFinder SQLite database (/home/ja/.stmcufinder/plugins/mcufinder/mcu/cube-finder-db.db) +2025-09-20 22:43:28,931 [INFO] ApiDb:668 - CubeFinder database Data Model version=2.1 +2025-09-20 22:43:28,931 [INFO] ApiDb:669 - CubeFinder database Configuration version=3.0.39 +2025-09-20 22:43:28,931 [INFO] ApiDb:670 - CubeFinder database generation date=2025-08-25 (1756130511) +2025-09-20 22:43:28,931 [INFO] ApiDb:671 - CubeFinder database FW Pack versions=[FP-ATR-ASTRA1_V2.0.0, FP-SNS-FLIGHT1_V5.1.0, FP-SNS-MOTENV1_V5.0.0, FP-SNS-MOTENVWB1_V1.4.0, FP-SNS-SMARTAG2_V1.2.0, FP-SNS-STBOX1_V2.1.0, STM32Cube_FW_C0_V1.4.0, STM32Cube_FW_F4_V1.28.3, STM32Cube_FW_F7_V1.17.4, STM32Cube_FW_G0_V1.6.2, STM32Cube_FW_G4_V1.6.1, STM32Cube_FW_H5_V1.5.0, STM32Cube_FW_H7RS_V1.2.0, STM32Cube_FW_H7_V1.12.1, STM32Cube_FW_L0_V1.12.2, STM32Cube_FW_L4_V1.18.1, STM32Cube_FW_L5_V1.5.1, STM32Cube_FW_N6_V1.2.0, STM32Cube_FW_U0_V1.3.0, STM32Cube_FW_U3_V1.2.0, STM32Cube_FW_U5_V1.8.0, STM32Cube_FW_WB0_V1.3.0, STM32Cube_FW_WBA_V1.7.0, STM32Cube_FW_WB_V1.23.0, STM32Cube_FW_WL3_V1.2.0, STM32Cube_FW_WL_V1.3.1, X-CUBE-ALGOBUILD_V1.4.0, X-CUBE-ALS_V1.0.2, X-CUBE-AZRTOS-F4_V1.1.0, X-CUBE-AZRTOS-F7_V1.1.0, X-CUBE-AZRTOS-G0_V1.1.0, X-CUBE-AZRTOS-G4_V2.0.0, X-CUBE-AZRTOS-H7RS_V1.1.0, X-CUBE-AZRTOS-H7_V3.4.0, X-CUBE-AZRTOS-L4_V2.0.0, X-CUBE-AZRTOS-L5_V2.0.0, X-CUBE-AZRTOS-WB_V2.0.0, X-CUBE-AZRTOS-WL_V2.0.0, X-CUBE-BLE1_V7.1.0, X-CUBE-BLE2_V3.3.0, X-CUBE-BLEMGR_V4.1.0, X-CUBE-EEPRMA1_V5.2.0, X-CUBE-FREERTOS_V1.3.1, X-CUBE-GNSS1_V6.0.0, X-CUBE-MEMS1_V11.3.0, X-CUBE-NFC4_V3.0.0, X-CUBE-NFC7_V2.0.0, X-CUBE-SFXS2LP1_V4.0.0, X-CUBE-ST67W61_V1.0.0, X-CUBE-SUBG2_V5.0.0, X-CUBE-TOF1_V3.4.3] +2025-09-20 22:43:29,061 [INFO] DbBoardsSqlite:226 - include board P-NUCLEO-WB55-NUCLEO as a kit item of type 'Nucleo-64' +2025-09-20 22:43:29,061 [INFO] DbBoardsSqlite:226 - include board P-NUCLEO-WB55-USBDONGLE as a kit item of type 'Nucleo USB Dongle' +2025-09-20 22:43:29,062 [INFO] DbBoardsSqlite:226 - include board STEVAL-IDP005V1 as a kit item of type 'Evaluation Board' +2025-09-20 22:43:29,063 [INFO] DbBoardsSqlite:226 - include board STEVAL-IDP005V2 as a kit item of type 'Evaluation Board' +2025-09-20 22:43:29,220 [INFO] ApiDb:240 - Found 880 in-development CPN: [B-G473E-ZEST1S, B-WB1M-WPAN1, B-WBA5M-WPAN, B-WL5M-SUBG1, NUCLEO-C031C6, NUCLEO-C051C8, NUCLEO-C071RB, NUCLEO-C092RC, NUCLEO-H503RB, NUCLEO-H533RE, NUCLEO-H563ZI, NUCLEO-H7S3L8, NUCLEO-N657X0-Q, NUCLEO-U031R8, NUCLEO-U083RC, NUCLEO-U385RG-Q, NUCLEO-U545RE-Q, NUCLEO-U5A5ZJ-Q, NUCLEO-WB05KZ, NUCLEO-WB07CC, NUCLEO-WB09KE, NUCLEO-WBA52CG, NUCLEO-WBA55CG, NUCLEO-WL33CC1, NUCLEO-WL33CC2, STEVAL-PROTEUS1, STEVAL-SMARTAG2, STEVAL-STWINBX1, STM320518-EVAL, STM32C0116-DK, STM32C011D6Y3TR, STM32C011D6Y6TR, STM32C011F4P3, STM32C011F4P6, STM32C011F4U3, STM32C011F4U6TR, STM32C011F6P3, STM32C011F6P6, STM32C011F6U3, STM32C011F6U6TR, STM32C011J4M3, STM32C011J4M6, STM32C011J6M3, STM32C011J6M6, STM32C0316-DK, STM32C031C4T3, STM32C031C4T6, STM32C031C4U3, STM32C031C4U6, STM32C031C6T3, STM32C031C6T6, STM32C031C6U3, STM32C031C6U6, STM32C031F4P3, STM32C031F4P6, STM32C031F6P3, STM32C031F6P6, STM32C031G4U3, STM32C031G4U6, STM32C031G6U3, STM32C031G6U6, STM32C031K4T3, STM32C031K4T6, STM32C031K4U3, STM32C031K4U6, STM32C031K6T3, STM32C031K6T6, STM32C031K6U3, STM32C031K6U6, STM32C051C6T6, STM32C051C6U6, STM32C051C8T6, STM32C051C8U6, STM32C051D8Y6TR, STM32C051F6P6, STM32C051F8P6, STM32C051G6U6, STM32C051G8U6, STM32C051K6T6, STM32C051K6U6, STM32C051K8T6, STM32C071C8T6, STM32C071C8T6N, STM32C071C8U6, STM32C071C8U6N, STM32C071CBT6, STM32C071CBT6N, STM32C071CBU6, STM32C071CBU6N, STM32C071F8P6, STM32C071F8P6N, STM32C071FBP6, STM32C071FBP6N, STM32C071FBY6TR, STM32C071G8U6, STM32C071G8U6N, STM32C071GBU6, STM32C071GBU6N, STM32C071K8T6, STM32C071K8T6N, STM32C071K8U6, STM32C071K8U6N, STM32C071KBT6, STM32C071KBT6N, STM32C071KBU6, STM32C071KBU6N, STM32C071R8T6, STM32C071R8T6N, STM32C071RBI6N, STM32C071RBT6, STM32C071RBT6N, STM32C091CBT6, STM32C091CBU6, STM32C091CCT6, STM32C091CCU6, STM32C091ECY6TR, STM32C091FBP6, STM32C091FCP6, STM32C091GBU6, STM32C091GCU6, STM32C091KBT6, STM32C091KBU6, STM32C091KCT6, STM32C091KCU6, STM32C091RBT6, STM32C091RCI6, STM32C091RCT6, STM32C092CBT6, STM32C092CBU6, STM32C092CCT6, STM32C092CCU6, STM32C092ECY6TR, STM32C092FBP6, STM32C092FCP6, STM32C092GBU6, STM32C092GCU6, STM32C092KBT6, STM32C092KBU6, STM32C092KCT6, STM32C092KCU6, STM32C092RBT6, STM32C092RCI6, STM32C092RCT6, STM32G071K8TXN, STM32G071K8UXN, STM32G081GBU6N, STM32G081KBT6N, STM32G081KBUXN, STM32G0B1CCT6N, STM32G0B1KCT6, STM32G0B1NEY6TR, STM32G0B1RCT6N, STM32G0C1CCT6, STM32G0C1CCT6N, STM32G0C1CCU6N, STM32G0C1CET6N, STM32G0C1CEU6N, STM32G0C1KCT6, STM32G0C1NEY6TR, STM32G0C1RCI6N, STM32G0C1RCT6N, STM32G0C1REI6N, STM32G0C1RET6N, STM32G0C1VCI6, STM32G0C1VEI6, STM32G411C6T3, STM32G411C6T6, STM32G411C6U3, STM32G411C6U6, STM32G411C8T3, STM32G411C8T6, STM32G411C8U3, STM32G411C8U6, STM32G411CBT3, STM32G411CBT6, STM32G411CBU3, STM32G411CBU6, STM32G411K6T3, STM32G411K6T6, STM32G411K6U3, STM32G411K6U6, STM32G411K8T3, STM32G411K8T6, STM32G411K8U3, STM32G411K8U6, STM32G411KBT3, STM32G411KBT6, STM32G411KBU3, STM32G411KBU6, STM32G411M6T3, STM32G411M6T6, STM32G411M8T3, STM32G411M8T6, STM32G411MBT3, STM32G411MBT6, STM32G411R6T3, STM32G411R6T6, STM32G411R8T3, STM32G411R8T6, STM32G411RBT3, STM32G411RBT6, STM32G414CBT3, STM32G414CBT6, STM32G414CBU3, STM32G414CBU6, STM32G414CCT3, STM32G414CCT6, STM32G414CCU3, STM32G414CCU6, STM32G414MBT3, STM32G414MBT6, STM32G414MCT3, STM32G414MCT6, STM32G414RBT3, STM32G414RBT6, STM32G414RCT3, STM32G414RCT6, STM32G414VBT3, STM32G414VBT6, STM32G414VCT3, STM32G414VCT6, STM32G431CBT3Z, STM32G431RBT3Z, STM32G471CCT6, STM32G471CCU6, STM32G471CET3, STM32G471CET6, STM32G471CEU3, STM32G471CEU6, STM32G471MCT6, STM32G471MET3, STM32G471MET6, STM32G471MEY6TR, STM32G471QCT6, STM32G471QET3, STM32G471RCT6, STM32G471RET3, STM32G471RET6, STM32G471VCH6, STM32G471VCI6, STM32G471VCT6, STM32G471VEH3, STM32G471VEH6, STM32G471VEI3, STM32G471VEI6, STM32G471VET3, STM32G471VET6, STM32G473QET3Z, STM32G473RET3Z, STM32G474CCT6, STM32G491RET3Z, STM32H503CBT6, STM32H503CBU6, STM32H503EBY6TR, STM32H503KBU6, STM32H503RBT6, STM32H523CCT6, STM32H523CCU6, STM32H523CET6, STM32H523CEU6, STM32H523HEY6TR, STM32H523RCT6, STM32H523RET6, STM32H523VCI6, STM32H523VCT6, STM32H523VEI6, STM32H523VET6, STM32H523ZCJ6, STM32H523ZCT6, STM32H523ZEJ6, STM32H523ZET6, STM32H533CET6, STM32H533CEU6, STM32H533HEY6TR, STM32H533RET6, STM32H533VEI6, STM32H533VET6, STM32H533ZEJ6, STM32H533ZET6, STM32H562AGI6, STM32H562AII6, STM32H562IGK6, STM32H562IGT6, STM32H562IIK6, STM32H562IIT6, STM32H562RGT6, STM32H562RGV6, STM32H562RIT6, STM32H562RIV6, STM32H562VGT6, STM32H562VIT6, STM32H562ZGT6, STM32H562ZIT6, STM32H563AGI6, STM32H563AII3Q, STM32H563AII6, STM32H563IGK6, STM32H563IGT6, STM32H563IIK3Q, STM32H563IIK6, STM32H563IIT3Q, STM32H563IIT6, STM32H563MIY3QTR, STM32H563RGT6, STM32H563RGV6, STM32H563RIT6, STM32H563RIV6, STM32H563VGT6, STM32H563VIT3Q, STM32H563VIT6, STM32H563ZGT6, STM32H563ZIT3Q, STM32H563ZIT6, STM32H573AII3Q, STM32H573AII6, STM32H573I-DK, STM32H573IIK3Q, STM32H573IIK6, STM32H573IIT3Q, STM32H573IIT6, STM32H573MIY3QTR, STM32H573RIT6, STM32H573RIV6, STM32H573VIT3Q, STM32H573VIT6, STM32H573ZIT3Q, STM32H573ZIT6, STM32H7R3A8I6, STM32H7R3I8K6, STM32H7R3I8T6, STM32H7R3L8H6, STM32H7R3L8H6H, STM32H7R3R8V6, STM32H7R3V8H6, STM32H7R3V8T6, STM32H7R3V8Y6TR, STM32H7R3Z8J6, STM32H7R3Z8T6, STM32H7R7A8I6, STM32H7R7I8K6, STM32H7R7I8T6, STM32H7R7L8H6, STM32H7R7L8H6H, STM32H7R7Z8J6, STM32H7S3A8I6, STM32H7S3I8K6, STM32H7S3I8T6, STM32H7S3L8H6, STM32H7S3L8H6H, STM32H7S3R8V6, STM32H7S3V8H6, STM32H7S3V8T6, STM32H7S3V8Y6TR, STM32H7S3Z8J6, STM32H7S3Z8T6, STM32H7S78-DK, STM32H7S7A8I6, STM32H7S7I8K6, STM32H7S7I8T6, STM32H7S7L8H6, STM32H7S7L8H6H, STM32H7S7Z8J6, STM32L4R5QGI6STR, STM32MP131AAE3, STM32MP131AAF3, STM32MP131AAG3, STM32MP131CAE3, STM32MP131CAF3, STM32MP131CAG3, STM32MP131DAE7, STM32MP131DAF7, STM32MP131DAG7, STM32MP131FAE7, STM32MP131FAF7, STM32MP131FAG7, STM32MP133AAE3, STM32MP133AAF3, STM32MP133AAG3, STM32MP133CAE3, STM32MP133CAF3, STM32MP133CAG3, STM32MP133DAE7, STM32MP133DAF7, STM32MP133DAG7, STM32MP133FAE7, STM32MP133FAF7, STM32MP133FAG7, STM32MP135AAE3, STM32MP135AAF3, STM32MP135AAG3, STM32MP135CAE3, STM32MP135CAF3, STM32MP135CAG3, STM32MP135DAE7, STM32MP135DAF7, STM32MP135DAG7, STM32MP135F-DK, STM32MP135FAE7, STM32MP135FAF7, STM32MP135FAF7T, STM32MP135FAF7U, STM32MP135FAG7, STM32MP211AAL3, STM32MP211AAM3, STM32MP211AAN3, STM32MP211AAO3, STM32MP211CAL3, STM32MP211CAM3, STM32MP211CAN3, STM32MP211CAO3, STM32MP211DAL3, STM32MP211DAM3, STM32MP211DAN3, STM32MP211DAO3, STM32MP211FAL3, STM32MP211FAM3, STM32MP211FAN3, STM32MP211FAO3, STM32MP213AAL3, STM32MP213AAM3, STM32MP213AAN3, STM32MP213AAO3, STM32MP213CAL3, STM32MP213CAM3, STM32MP213CAN3, STM32MP213CAO3, STM32MP213DAL3, STM32MP213DAM3, STM32MP213DAN3, STM32MP213DAO3, STM32MP213FAL3, STM32MP213FAM3, STM32MP213FAN3, STM32MP213FAO3, STM32MP215AAL3, STM32MP215AAM3, STM32MP215AAN3, STM32MP215AAO3, STM32MP215CAL3, STM32MP215CAM3, STM32MP215CAN3, STM32MP215CAO3, STM32MP215DAL3, STM32MP215DAM3, STM32MP215DAN3, STM32MP215DAO3, STM32MP215F-DK, STM32MP215FAL3, STM32MP215FAM3, STM32MP215FAN3, STM32MP215FAO3, STM32MP231AAJ3, STM32MP231AAK3, STM32MP231AAL3, STM32MP231CAJ3, STM32MP231CAK3, STM32MP231CAL3, STM32MP231DAJ3, STM32MP231DAK3, STM32MP231DAL3, STM32MP231FAJ3, STM32MP231FAK3, STM32MP231FAL3, STM32MP233AAJ3, STM32MP233AAK3, STM32MP233AAL3, STM32MP233CAJ3, STM32MP233CAK3, STM32MP233CAL3, STM32MP233DAJ3, STM32MP233DAK3, STM32MP233DAL3, STM32MP233FAJ3, STM32MP233FAK3, STM32MP233FAL3, STM32MP235AAJ3, STM32MP235AAK3, STM32MP235AAL3, STM32MP235CAJ3, STM32MP235CAK3, STM32MP235CAL3, STM32MP235DAJ3, STM32MP235DAK3, STM32MP235DAL3, STM32MP235FAJ3, STM32MP235FAK3, STM32MP235FAL3, STM32MP251AAI3, STM32MP251AAK3, STM32MP251AAL3, STM32MP251CAI3, STM32MP251CAK3, STM32MP251CAL3, STM32MP251DAI3, STM32MP251DAK3, STM32MP251DAL3, STM32MP251FAI3, STM32MP251FAK3, STM32MP251FAL3, STM32MP253AAI3, STM32MP253AAK3, STM32MP253AAL3, STM32MP253CAI3, STM32MP253CAK3, STM32MP253CAL3, STM32MP253DAI3, STM32MP253DAK3, STM32MP253DAL3, STM32MP253FAI3, STM32MP253FAK3, STM32MP253FAL3, STM32MP255AAI3, STM32MP255AAK3, STM32MP255AAL3, STM32MP255CAI3, STM32MP255CAK3, STM32MP255CAL3, STM32MP255DAI3, STM32MP255DAK3, STM32MP255DAL3, STM32MP255FAI3, STM32MP255FAK3, STM32MP255FAL3, STM32MP257AAI3, STM32MP257AAK3, STM32MP257AAL3, STM32MP257CAI3, STM32MP257CAK3, STM32MP257CAL3, STM32MP257DAI3, STM32MP257DAK3, STM32MP257DAL3, STM32MP257F-DK, STM32MP257F-EV1, STM32MP257FAI3, STM32MP257FAK3, STM32MP257FAL3, STM32N645A0H3Q, STM32N645B0H3Q, STM32N645I0H3Q, STM32N645L0H3Q, STM32N645X0H3Q, STM32N645Z0H3Q, STM32N647A0H3Q, STM32N647B0H3Q, STM32N647I0H3Q, STM32N647L0H3Q, STM32N647X0H3Q, STM32N647Z0H3Q, STM32N655A0H3Q, STM32N655B0H3Q, STM32N655I0H3Q, STM32N655L0H3Q, STM32N655X0H3Q, STM32N655Z0H3Q, STM32N6570-DK, STM32N657A0H3Q, STM32N657B0H3Q, STM32N657I0H3Q, STM32N657L0H3Q, STM32N657X0H3Q, STM32N657Z0H3Q, STM32U031C6T6, STM32U031C6U6, STM32U031C8T6, STM32U031C8U6, STM32U031F4P6, STM32U031F6P6, STM32U031F8P6, STM32U031G6Y6TR, STM32U031G8Y6TR, STM32U031K4U6, STM32U031K6U6, STM32U031K8U6, STM32U031R6I6, STM32U031R6T6, STM32U031R8I6, STM32U031R8T6, STM32U073C8T6, STM32U073C8U6, STM32U073CBT6, STM32U073CBU6, STM32U073CCT6, STM32U073CCU6, STM32U073H8Y6TR, STM32U073HBY6TR, STM32U073HCY6TR, STM32U073K8U6, STM32U073KBU6, STM32U073KCU6, STM32U073M8I6, STM32U073M8T6, STM32U073MBI6, STM32U073MBT6, STM32U073MCI6, STM32U073MCT6, STM32U073R8I6, STM32U073R8T6, STM32U073RBI6, STM32U073RBT6, STM32U073RCI6, STM32U073RCT6, STM32U083C-DK, STM32U083CCT6, STM32U083CCU6, STM32U083HCY6TR, STM32U083KCU6, STM32U083MCI6, STM32U083MCT6, STM32U083RCI6, STM32U083RCT6, STM32U375CET6, STM32U375CET6Q, STM32U375CEU6, STM32U375CEU6Q, STM32U375CEY6QTR, STM32U375CGT6, STM32U375CGT6Q, STM32U375CGU6, STM32U375CGU6Q, STM32U375CGY6QTR, STM32U375KEU6, STM32U375KGU6, STM32U375REI6, STM32U375REI6Q, STM32U375RET6, STM32U375RET6Q, STM32U375REY6GTR, STM32U375REY6QTR, STM32U375RGI6, STM32U375RGI6Q, STM32U375RGT6, STM32U375RGT6Q, STM32U375RGY6GTR, STM32U375RGY6QTR, STM32U375VEI6, STM32U375VEI6Q, STM32U375VET6, STM32U375VET6Q, STM32U375VGI6, STM32U375VGI6Q, STM32U375VGT6, STM32U375VGT6Q, STM32U385CGT6, STM32U385CGT6Q, STM32U385CGU6, STM32U385CGU6Q, STM32U385CGY6QTR, STM32U385KGU6, STM32U385RGI6, STM32U385RGI6Q, STM32U385RGT6, STM32U385RGT6Q, STM32U385RGY6GTR, STM32U385RGY6QTR, STM32U385VGI6, STM32U385VGI6Q, STM32U385VGT6, STM32U385VGT6Q, STM32U535CBT6, STM32U535CBT6Q, STM32U535CBU6, STM32U535CBU6Q, STM32U535CCT6, STM32U535CCT6Q, STM32U535CCU6, STM32U535CCU6Q, STM32U535CET6, STM32U535CET6Q, STM32U535CEU6, STM32U535CEU6Q, STM32U535JEY6QTR, STM32U535NCY6QTR, STM32U535NEY6QTR, STM32U535RBI6, STM32U535RBI6Q, STM32U535RBT6, STM32U535RBT6Q, STM32U535RCI6, STM32U535RCI6Q, STM32U535RCT6, STM32U535RCT6Q, STM32U535REI6, STM32U535REI6Q, STM32U535RET6, STM32U535RET6Q, STM32U535VCI6, STM32U535VCI6Q, STM32U535VCT6, STM32U535VCT6Q, STM32U535VEI6, STM32U535VEI6Q, STM32U535VET6, STM32U535VET6Q, STM32U545CET6, STM32U545CET6Q, STM32U545CEU6, STM32U545CEU6Q, STM32U545JEY6QTR, STM32U545NEY6QTR, STM32U545REI6, STM32U545REI6Q, STM32U545RET6, STM32U545RET6Q, STM32U545VEI6, STM32U545VEI6Q, STM32U545VET6, STM32U545VET6Q, STM32U595AIH6, STM32U595AIH6Q, STM32U595AJH6, STM32U595AJH6Q, STM32U595QII6, STM32U595QII6Q, STM32U595QJI6, STM32U595QJI6Q, STM32U595RIT6, STM32U595RIT6Q, STM32U595RJT6, STM32U595RJT6Q, STM32U595VIT6, STM32U595VIT6Q, STM32U595VJT6, STM32U595VJT6Q, STM32U595ZIT6, STM32U595ZIT6Q, STM32U595ZIY6QTR, STM32U595ZJT6, STM32U595ZJT6Q, STM32U595ZJY6QTR, STM32U599BJY6QTR, STM32U599NIH6Q, STM32U599NJH6Q, STM32U599VIT6Q, STM32U599VJT6, STM32U599VJT6Q, STM32U599ZIT6Q, STM32U599ZIY6QTR, STM32U599ZJT6Q, STM32U599ZJY6QTR, STM32U5A5AJH6, STM32U5A5AJH6Q, STM32U5A5QII3Q , STM32U5A5QJI6, STM32U5A5QJI6Q, STM32U5A5RJT6, STM32U5A5RJT6Q, STM32U5A5VJT6, STM32U5A5VJT6Q, STM32U5A5ZJT6, STM32U5A5ZJT6Q, STM32U5A5ZJY6QTR, STM32U5A9BJY6QTR, STM32U5A9J-DK, STM32U5A9NJH6Q, STM32U5A9VJT6Q, STM32U5A9ZJT6Q, STM32U5A9ZJY6QTR, STM32U5F7VIT6, STM32U5F7VIT6Q, STM32U5F7VJT6, STM32U5F7VJT6Q, STM32U5F9BJY6QTR, STM32U5F9NJH6Q, STM32U5F9VIT6Q, STM32U5F9VJT6Q, STM32U5F9ZIJ6QTR, STM32U5F9ZIT6Q, STM32U5F9ZJJ6QTR, STM32U5F9ZJT6Q, STM32U5G7VJT6, STM32U5G7VJT6Q, STM32U5G9BJY6QTR, STM32U5G9J-DK1, STM32U5G9J-DK2, STM32U5G9NJH6Q, STM32U5G9VJT6Q, STM32U5G9ZJJ6QTR, STM32U5G9ZJT6Q, STM32WB05KZV6TR, STM32WB05KZV7TR, STM32WB05TZF6TR, STM32WB05TZF7TR, STM32WB06CCF6TR, STM32WB06CCF7TR, STM32WB06CCV6TR, STM32WB06CCV7TR, STM32WB06KCV6TR, STM32WB06KCV7TR, STM32WB07CCF6TR, STM32WB07CCF7TR, STM32WB07CCV6TR, STM32WB07CCV7TR, STM32WB07KCV6TR, STM32WB07KCV7TR, STM32WB09KEV6TR, STM32WB09KEV7TR, STM32WB09TEF6TR, STM32WB09TEF7TR, STM32WB1MMCH6, STM32WBA50KGU6, STM32WBA50KGU6TR, STM32WBA52CEU6, STM32WBA52CEU6TR, STM32WBA52CEU7, STM32WBA52CEU7TR, STM32WBA52CGU6, STM32WBA52CGU6TR, STM32WBA52CGU6U, STM32WBA52CGU7, STM32WBA52CGU7TR, STM32WBA52KEU6, STM32WBA52KEU6TR, STM32WBA52KGU6, STM32WBA52KGU6TR, STM32WBA54CEU6, STM32WBA54CEU6TR, STM32WBA54CEU7, STM32WBA54CEU7TR, STM32WBA54CGU6, STM32WBA54CGU6TR, STM32WBA54CGU7, STM32WBA54CGU7TR, STM32WBA54KEU6, STM32WBA54KEU6TR, STM32WBA54KEU7, STM32WBA54KEU7TR, STM32WBA54KGU6, STM32WBA54KGU6TR, STM32WBA54KGU7, STM32WBA54KGU7TR, STM32WBA55CEU6, STM32WBA55CEU6TR, STM32WBA55CEU7, STM32WBA55CEU7TR, STM32WBA55CGU6, STM32WBA55CGU6TR, STM32WBA55CGU6U, STM32WBA55CGU7, STM32WBA55CGU7TR, STM32WBA55G-DK1, STM32WBA55HEF6, STM32WBA55HEF7, STM32WBA55HGF6, STM32WBA55HGF7, STM32WBA55UEI6, STM32WBA55UEI6TR, STM32WBA55UEI7, STM32WBA55UEI7TR, STM32WBA55UGI6, STM32WBA55UGI6TR, STM32WBA55UGI7, STM32WBA55UGI7TR, STM32WBA5MMGH6TR, STM32WBA62MGF6, STM32WBA62MIF6, STM32WBA65MGF7, STM32WBA65MIF6, STM32WBA65MIF7, STM32WL30K8V6, STM32WL30KBV6, STM32WL31C8V6, STM32WL31CBV6, STM32WL31K8V6, STM32WL31KBV6, STM32WL33C8V6, STM32WL33C8V6X, STM32WL33CBV6, STM32WL33CBV6X, STM32WL33CCV6, STM32WL33CCV6A, STM32WL33CCV6X, STM32WL33K8V7, STM32WL33K8V7X, STM32WL33KBV7 , STM32WL33KBV7X, STM32WL33KCV7, STM32WL33KCV7X, STM32WL5MOCH6, STM32WL5MOCH6TR] +2025-09-20 22:43:29,431 [INFO] BoardInfo:889 - No configuration file found for board P-NUCLEO-WB55 +2025-09-20 22:43:29,432 [INFO] DbBoards:161 - Kit is not supported: P-NUCLEO-WB55 +2025-09-20 22:43:29,439 [INFO] BoardInfo:889 - No configuration file found for board STEVAL-BFA001V1B +2025-09-20 22:43:29,440 [INFO] DbBoards:161 - Kit is not supported: STEVAL-BFA001V1B +2025-09-20 22:43:29,442 [INFO] BoardInfo:889 - No configuration file found for board STEVAL-BFA001V2B +2025-09-20 22:43:29,442 [INFO] DbBoards:161 - Kit is not supported: STEVAL-BFA001V2B +2025-09-20 22:43:29,628 [INFO] DbBoards:168 - Found 212 boards, 209 are supported +2025-09-20 22:43:29,629 [INFO] DbBoards:169 - Found 212 boards, 43 of them is supported for Bsp +2025-09-20 22:43:29,634 [INFO] ApiDb:668 - CubeFinder database Data Model version=2.1 +2025-09-20 22:43:29,635 [INFO] ApiDb:669 - CubeFinder database Configuration version=3.0.39 +2025-09-20 22:43:29,635 [INFO] ApiDb:670 - CubeFinder database generation date=2025-08-25 (1756130511) +2025-09-20 22:43:29,635 [INFO] ApiDb:671 - CubeFinder database FW Pack versions=[FP-ATR-ASTRA1_V2.0.0, FP-SNS-FLIGHT1_V5.1.0, FP-SNS-MOTENV1_V5.0.0, FP-SNS-MOTENVWB1_V1.4.0, FP-SNS-SMARTAG2_V1.2.0, FP-SNS-STBOX1_V2.1.0, STM32Cube_FW_C0_V1.4.0, STM32Cube_FW_F4_V1.28.3, STM32Cube_FW_F7_V1.17.4, STM32Cube_FW_G0_V1.6.2, STM32Cube_FW_G4_V1.6.1, STM32Cube_FW_H5_V1.5.0, STM32Cube_FW_H7RS_V1.2.0, STM32Cube_FW_H7_V1.12.1, STM32Cube_FW_L0_V1.12.2, STM32Cube_FW_L4_V1.18.1, STM32Cube_FW_L5_V1.5.1, STM32Cube_FW_N6_V1.2.0, STM32Cube_FW_U0_V1.3.0, STM32Cube_FW_U3_V1.2.0, STM32Cube_FW_U5_V1.8.0, STM32Cube_FW_WB0_V1.3.0, STM32Cube_FW_WBA_V1.7.0, STM32Cube_FW_WB_V1.23.0, STM32Cube_FW_WL3_V1.2.0, STM32Cube_FW_WL_V1.3.1, X-CUBE-ALGOBUILD_V1.4.0, X-CUBE-ALS_V1.0.2, X-CUBE-AZRTOS-F4_V1.1.0, X-CUBE-AZRTOS-F7_V1.1.0, X-CUBE-AZRTOS-G0_V1.1.0, X-CUBE-AZRTOS-G4_V2.0.0, X-CUBE-AZRTOS-H7RS_V1.1.0, X-CUBE-AZRTOS-H7_V3.4.0, X-CUBE-AZRTOS-L4_V2.0.0, X-CUBE-AZRTOS-L5_V2.0.0, X-CUBE-AZRTOS-WB_V2.0.0, X-CUBE-AZRTOS-WL_V2.0.0, X-CUBE-BLE1_V7.1.0, X-CUBE-BLE2_V3.3.0, X-CUBE-BLEMGR_V4.1.0, X-CUBE-EEPRMA1_V5.2.0, X-CUBE-FREERTOS_V1.3.1, X-CUBE-GNSS1_V6.0.0, X-CUBE-MEMS1_V11.3.0, X-CUBE-NFC4_V3.0.0, X-CUBE-NFC7_V2.0.0, X-CUBE-SFXS2LP1_V4.0.0, X-CUBE-ST67W61_V1.0.0, X-CUBE-SUBG2_V5.0.0, X-CUBE-TOF1_V3.4.3] +2025-09-20 22:43:33,496 [INFO] ApiDb:240 - Found 880 in-development CPN: [B-G473E-ZEST1S, B-WB1M-WPAN1, B-WBA5M-WPAN, B-WL5M-SUBG1, NUCLEO-C031C6, NUCLEO-C051C8, NUCLEO-C071RB, NUCLEO-C092RC, NUCLEO-H503RB, NUCLEO-H533RE, NUCLEO-H563ZI, NUCLEO-H7S3L8, NUCLEO-N657X0-Q, NUCLEO-U031R8, NUCLEO-U083RC, NUCLEO-U385RG-Q, NUCLEO-U545RE-Q, NUCLEO-U5A5ZJ-Q, NUCLEO-WB05KZ, NUCLEO-WB07CC, NUCLEO-WB09KE, NUCLEO-WBA52CG, NUCLEO-WBA55CG, NUCLEO-WL33CC1, NUCLEO-WL33CC2, STEVAL-PROTEUS1, STEVAL-SMARTAG2, STEVAL-STWINBX1, STM320518-EVAL, STM32C0116-DK, STM32C011D6Y3TR, STM32C011D6Y6TR, STM32C011F4P3, STM32C011F4P6, STM32C011F4U3, STM32C011F4U6TR, STM32C011F6P3, STM32C011F6P6, STM32C011F6U3, STM32C011F6U6TR, STM32C011J4M3, STM32C011J4M6, STM32C011J6M3, STM32C011J6M6, STM32C0316-DK, STM32C031C4T3, STM32C031C4T6, STM32C031C4U3, STM32C031C4U6, STM32C031C6T3, STM32C031C6T6, STM32C031C6U3, STM32C031C6U6, STM32C031F4P3, STM32C031F4P6, STM32C031F6P3, STM32C031F6P6, STM32C031G4U3, STM32C031G4U6, STM32C031G6U3, STM32C031G6U6, STM32C031K4T3, STM32C031K4T6, STM32C031K4U3, STM32C031K4U6, STM32C031K6T3, STM32C031K6T6, STM32C031K6U3, STM32C031K6U6, STM32C051C6T6, STM32C051C6U6, STM32C051C8T6, STM32C051C8U6, STM32C051D8Y6TR, STM32C051F6P6, STM32C051F8P6, STM32C051G6U6, STM32C051G8U6, STM32C051K6T6, STM32C051K6U6, STM32C051K8T6, STM32C071C8T6, STM32C071C8T6N, STM32C071C8U6, STM32C071C8U6N, STM32C071CBT6, STM32C071CBT6N, STM32C071CBU6, STM32C071CBU6N, STM32C071F8P6, STM32C071F8P6N, STM32C071FBP6, STM32C071FBP6N, STM32C071FBY6TR, STM32C071G8U6, STM32C071G8U6N, STM32C071GBU6, STM32C071GBU6N, STM32C071K8T6, STM32C071K8T6N, STM32C071K8U6, STM32C071K8U6N, STM32C071KBT6, STM32C071KBT6N, STM32C071KBU6, STM32C071KBU6N, STM32C071R8T6, STM32C071R8T6N, STM32C071RBI6N, STM32C071RBT6, STM32C071RBT6N, STM32C091CBT6, STM32C091CBU6, STM32C091CCT6, STM32C091CCU6, STM32C091ECY6TR, STM32C091FBP6, STM32C091FCP6, STM32C091GBU6, STM32C091GCU6, STM32C091KBT6, STM32C091KBU6, STM32C091KCT6, STM32C091KCU6, STM32C091RBT6, STM32C091RCI6, STM32C091RCT6, STM32C092CBT6, STM32C092CBU6, STM32C092CCT6, STM32C092CCU6, STM32C092ECY6TR, STM32C092FBP6, STM32C092FCP6, STM32C092GBU6, STM32C092GCU6, STM32C092KBT6, STM32C092KBU6, STM32C092KCT6, STM32C092KCU6, STM32C092RBT6, STM32C092RCI6, STM32C092RCT6, STM32G071K8TXN, STM32G071K8UXN, STM32G081GBU6N, STM32G081KBT6N, STM32G081KBUXN, STM32G0B1CCT6N, STM32G0B1KCT6, STM32G0B1NEY6TR, STM32G0B1RCT6N, STM32G0C1CCT6, STM32G0C1CCT6N, STM32G0C1CCU6N, STM32G0C1CET6N, STM32G0C1CEU6N, STM32G0C1KCT6, STM32G0C1NEY6TR, STM32G0C1RCI6N, STM32G0C1RCT6N, STM32G0C1REI6N, STM32G0C1RET6N, STM32G0C1VCI6, STM32G0C1VEI6, STM32G411C6T3, STM32G411C6T6, STM32G411C6U3, STM32G411C6U6, STM32G411C8T3, STM32G411C8T6, STM32G411C8U3, STM32G411C8U6, STM32G411CBT3, STM32G411CBT6, STM32G411CBU3, STM32G411CBU6, STM32G411K6T3, STM32G411K6T6, STM32G411K6U3, STM32G411K6U6, STM32G411K8T3, STM32G411K8T6, STM32G411K8U3, STM32G411K8U6, STM32G411KBT3, STM32G411KBT6, STM32G411KBU3, STM32G411KBU6, STM32G411M6T3, STM32G411M6T6, STM32G411M8T3, STM32G411M8T6, STM32G411MBT3, STM32G411MBT6, STM32G411R6T3, STM32G411R6T6, STM32G411R8T3, STM32G411R8T6, STM32G411RBT3, STM32G411RBT6, STM32G414CBT3, STM32G414CBT6, STM32G414CBU3, STM32G414CBU6, STM32G414CCT3, STM32G414CCT6, STM32G414CCU3, STM32G414CCU6, STM32G414MBT3, STM32G414MBT6, STM32G414MCT3, STM32G414MCT6, STM32G414RBT3, STM32G414RBT6, STM32G414RCT3, STM32G414RCT6, STM32G414VBT3, STM32G414VBT6, STM32G414VCT3, STM32G414VCT6, STM32G431CBT3Z, STM32G431RBT3Z, STM32G471CCT6, STM32G471CCU6, STM32G471CET3, STM32G471CET6, STM32G471CEU3, STM32G471CEU6, STM32G471MCT6, STM32G471MET3, STM32G471MET6, STM32G471MEY6TR, STM32G471QCT6, STM32G471QET3, STM32G471RCT6, STM32G471RET3, STM32G471RET6, STM32G471VCH6, STM32G471VCI6, STM32G471VCT6, STM32G471VEH3, STM32G471VEH6, STM32G471VEI3, STM32G471VEI6, STM32G471VET3, STM32G471VET6, STM32G473QET3Z, STM32G473RET3Z, STM32G474CCT6, STM32G491RET3Z, STM32H503CBT6, STM32H503CBU6, STM32H503EBY6TR, STM32H503KBU6, STM32H503RBT6, STM32H523CCT6, STM32H523CCU6, STM32H523CET6, STM32H523CEU6, STM32H523HEY6TR, STM32H523RCT6, STM32H523RET6, STM32H523VCI6, STM32H523VCT6, STM32H523VEI6, STM32H523VET6, STM32H523ZCJ6, STM32H523ZCT6, STM32H523ZEJ6, STM32H523ZET6, STM32H533CET6, STM32H533CEU6, STM32H533HEY6TR, STM32H533RET6, STM32H533VEI6, STM32H533VET6, STM32H533ZEJ6, STM32H533ZET6, STM32H562AGI6, STM32H562AII6, STM32H562IGK6, STM32H562IGT6, STM32H562IIK6, STM32H562IIT6, STM32H562RGT6, STM32H562RGV6, STM32H562RIT6, STM32H562RIV6, STM32H562VGT6, STM32H562VIT6, STM32H562ZGT6, STM32H562ZIT6, STM32H563AGI6, STM32H563AII3Q, STM32H563AII6, STM32H563IGK6, STM32H563IGT6, STM32H563IIK3Q, STM32H563IIK6, STM32H563IIT3Q, STM32H563IIT6, STM32H563MIY3QTR, STM32H563RGT6, STM32H563RGV6, STM32H563RIT6, STM32H563RIV6, STM32H563VGT6, STM32H563VIT3Q, STM32H563VIT6, STM32H563ZGT6, STM32H563ZIT3Q, STM32H563ZIT6, STM32H573AII3Q, STM32H573AII6, STM32H573I-DK, STM32H573IIK3Q, STM32H573IIK6, STM32H573IIT3Q, STM32H573IIT6, STM32H573MIY3QTR, STM32H573RIT6, STM32H573RIV6, STM32H573VIT3Q, STM32H573VIT6, STM32H573ZIT3Q, STM32H573ZIT6, STM32H7R3A8I6, STM32H7R3I8K6, STM32H7R3I8T6, STM32H7R3L8H6, STM32H7R3L8H6H, STM32H7R3R8V6, STM32H7R3V8H6, STM32H7R3V8T6, STM32H7R3V8Y6TR, STM32H7R3Z8J6, STM32H7R3Z8T6, STM32H7R7A8I6, STM32H7R7I8K6, STM32H7R7I8T6, STM32H7R7L8H6, STM32H7R7L8H6H, STM32H7R7Z8J6, STM32H7S3A8I6, STM32H7S3I8K6, STM32H7S3I8T6, STM32H7S3L8H6, STM32H7S3L8H6H, STM32H7S3R8V6, STM32H7S3V8H6, STM32H7S3V8T6, STM32H7S3V8Y6TR, STM32H7S3Z8J6, STM32H7S3Z8T6, STM32H7S78-DK, STM32H7S7A8I6, STM32H7S7I8K6, STM32H7S7I8T6, STM32H7S7L8H6, STM32H7S7L8H6H, STM32H7S7Z8J6, STM32L4R5QGI6STR, STM32MP131AAE3, STM32MP131AAF3, STM32MP131AAG3, STM32MP131CAE3, STM32MP131CAF3, STM32MP131CAG3, STM32MP131DAE7, STM32MP131DAF7, STM32MP131DAG7, STM32MP131FAE7, STM32MP131FAF7, STM32MP131FAG7, STM32MP133AAE3, STM32MP133AAF3, STM32MP133AAG3, STM32MP133CAE3, STM32MP133CAF3, STM32MP133CAG3, STM32MP133DAE7, STM32MP133DAF7, STM32MP133DAG7, STM32MP133FAE7, STM32MP133FAF7, STM32MP133FAG7, STM32MP135AAE3, STM32MP135AAF3, STM32MP135AAG3, STM32MP135CAE3, STM32MP135CAF3, STM32MP135CAG3, STM32MP135DAE7, STM32MP135DAF7, STM32MP135DAG7, STM32MP135F-DK, STM32MP135FAE7, STM32MP135FAF7, STM32MP135FAF7T, STM32MP135FAF7U, STM32MP135FAG7, STM32MP211AAL3, STM32MP211AAM3, STM32MP211AAN3, STM32MP211AAO3, STM32MP211CAL3, STM32MP211CAM3, STM32MP211CAN3, STM32MP211CAO3, STM32MP211DAL3, STM32MP211DAM3, STM32MP211DAN3, STM32MP211DAO3, STM32MP211FAL3, STM32MP211FAM3, STM32MP211FAN3, STM32MP211FAO3, STM32MP213AAL3, STM32MP213AAM3, STM32MP213AAN3, STM32MP213AAO3, STM32MP213CAL3, STM32MP213CAM3, STM32MP213CAN3, STM32MP213CAO3, STM32MP213DAL3, STM32MP213DAM3, STM32MP213DAN3, STM32MP213DAO3, STM32MP213FAL3, STM32MP213FAM3, STM32MP213FAN3, STM32MP213FAO3, STM32MP215AAL3, STM32MP215AAM3, STM32MP215AAN3, STM32MP215AAO3, STM32MP215CAL3, STM32MP215CAM3, STM32MP215CAN3, STM32MP215CAO3, STM32MP215DAL3, STM32MP215DAM3, STM32MP215DAN3, STM32MP215DAO3, STM32MP215F-DK, STM32MP215FAL3, STM32MP215FAM3, STM32MP215FAN3, STM32MP215FAO3, STM32MP231AAJ3, STM32MP231AAK3, STM32MP231AAL3, STM32MP231CAJ3, STM32MP231CAK3, STM32MP231CAL3, STM32MP231DAJ3, STM32MP231DAK3, STM32MP231DAL3, STM32MP231FAJ3, STM32MP231FAK3, STM32MP231FAL3, STM32MP233AAJ3, STM32MP233AAK3, STM32MP233AAL3, STM32MP233CAJ3, STM32MP233CAK3, STM32MP233CAL3, STM32MP233DAJ3, STM32MP233DAK3, STM32MP233DAL3, STM32MP233FAJ3, STM32MP233FAK3, STM32MP233FAL3, STM32MP235AAJ3, STM32MP235AAK3, STM32MP235AAL3, STM32MP235CAJ3, STM32MP235CAK3, STM32MP235CAL3, STM32MP235DAJ3, STM32MP235DAK3, STM32MP235DAL3, STM32MP235FAJ3, STM32MP235FAK3, STM32MP235FAL3, STM32MP251AAI3, STM32MP251AAK3, STM32MP251AAL3, STM32MP251CAI3, STM32MP251CAK3, STM32MP251CAL3, STM32MP251DAI3, STM32MP251DAK3, STM32MP251DAL3, STM32MP251FAI3, STM32MP251FAK3, STM32MP251FAL3, STM32MP253AAI3, STM32MP253AAK3, STM32MP253AAL3, STM32MP253CAI3, STM32MP253CAK3, STM32MP253CAL3, STM32MP253DAI3, STM32MP253DAK3, STM32MP253DAL3, STM32MP253FAI3, STM32MP253FAK3, STM32MP253FAL3, STM32MP255AAI3, STM32MP255AAK3, STM32MP255AAL3, STM32MP255CAI3, STM32MP255CAK3, STM32MP255CAL3, STM32MP255DAI3, STM32MP255DAK3, STM32MP255DAL3, STM32MP255FAI3, STM32MP255FAK3, STM32MP255FAL3, STM32MP257AAI3, STM32MP257AAK3, STM32MP257AAL3, STM32MP257CAI3, STM32MP257CAK3, STM32MP257CAL3, STM32MP257DAI3, STM32MP257DAK3, STM32MP257DAL3, STM32MP257F-DK, STM32MP257F-EV1, STM32MP257FAI3, STM32MP257FAK3, STM32MP257FAL3, STM32N645A0H3Q, STM32N645B0H3Q, STM32N645I0H3Q, STM32N645L0H3Q, STM32N645X0H3Q, STM32N645Z0H3Q, STM32N647A0H3Q, STM32N647B0H3Q, STM32N647I0H3Q, STM32N647L0H3Q, STM32N647X0H3Q, STM32N647Z0H3Q, STM32N655A0H3Q, STM32N655B0H3Q, STM32N655I0H3Q, STM32N655L0H3Q, STM32N655X0H3Q, STM32N655Z0H3Q, STM32N6570-DK, STM32N657A0H3Q, STM32N657B0H3Q, STM32N657I0H3Q, STM32N657L0H3Q, STM32N657X0H3Q, STM32N657Z0H3Q, STM32U031C6T6, STM32U031C6U6, STM32U031C8T6, STM32U031C8U6, STM32U031F4P6, STM32U031F6P6, STM32U031F8P6, STM32U031G6Y6TR, STM32U031G8Y6TR, STM32U031K4U6, STM32U031K6U6, STM32U031K8U6, STM32U031R6I6, STM32U031R6T6, STM32U031R8I6, STM32U031R8T6, STM32U073C8T6, STM32U073C8U6, STM32U073CBT6, STM32U073CBU6, STM32U073CCT6, STM32U073CCU6, STM32U073H8Y6TR, STM32U073HBY6TR, STM32U073HCY6TR, STM32U073K8U6, STM32U073KBU6, STM32U073KCU6, STM32U073M8I6, STM32U073M8T6, STM32U073MBI6, STM32U073MBT6, STM32U073MCI6, STM32U073MCT6, STM32U073R8I6, STM32U073R8T6, STM32U073RBI6, STM32U073RBT6, STM32U073RCI6, STM32U073RCT6, STM32U083C-DK, STM32U083CCT6, STM32U083CCU6, STM32U083HCY6TR, STM32U083KCU6, STM32U083MCI6, STM32U083MCT6, STM32U083RCI6, STM32U083RCT6, STM32U375CET6, STM32U375CET6Q, STM32U375CEU6, STM32U375CEU6Q, STM32U375CEY6QTR, STM32U375CGT6, STM32U375CGT6Q, STM32U375CGU6, STM32U375CGU6Q, STM32U375CGY6QTR, STM32U375KEU6, STM32U375KGU6, STM32U375REI6, STM32U375REI6Q, STM32U375RET6, STM32U375RET6Q, STM32U375REY6GTR, STM32U375REY6QTR, STM32U375RGI6, STM32U375RGI6Q, STM32U375RGT6, STM32U375RGT6Q, STM32U375RGY6GTR, STM32U375RGY6QTR, STM32U375VEI6, STM32U375VEI6Q, STM32U375VET6, STM32U375VET6Q, STM32U375VGI6, STM32U375VGI6Q, STM32U375VGT6, STM32U375VGT6Q, STM32U385CGT6, STM32U385CGT6Q, STM32U385CGU6, STM32U385CGU6Q, STM32U385CGY6QTR, STM32U385KGU6, STM32U385RGI6, STM32U385RGI6Q, STM32U385RGT6, STM32U385RGT6Q, STM32U385RGY6GTR, STM32U385RGY6QTR, STM32U385VGI6, STM32U385VGI6Q, STM32U385VGT6, STM32U385VGT6Q, STM32U535CBT6, STM32U535CBT6Q, STM32U535CBU6, STM32U535CBU6Q, STM32U535CCT6, STM32U535CCT6Q, STM32U535CCU6, STM32U535CCU6Q, STM32U535CET6, STM32U535CET6Q, STM32U535CEU6, STM32U535CEU6Q, STM32U535JEY6QTR, STM32U535NCY6QTR, STM32U535NEY6QTR, STM32U535RBI6, STM32U535RBI6Q, STM32U535RBT6, STM32U535RBT6Q, STM32U535RCI6, STM32U535RCI6Q, STM32U535RCT6, STM32U535RCT6Q, STM32U535REI6, STM32U535REI6Q, STM32U535RET6, STM32U535RET6Q, STM32U535VCI6, STM32U535VCI6Q, STM32U535VCT6, STM32U535VCT6Q, STM32U535VEI6, STM32U535VEI6Q, STM32U535VET6, STM32U535VET6Q, STM32U545CET6, STM32U545CET6Q, STM32U545CEU6, STM32U545CEU6Q, STM32U545JEY6QTR, STM32U545NEY6QTR, STM32U545REI6, STM32U545REI6Q, STM32U545RET6, STM32U545RET6Q, STM32U545VEI6, STM32U545VEI6Q, STM32U545VET6, STM32U545VET6Q, STM32U595AIH6, STM32U595AIH6Q, STM32U595AJH6, STM32U595AJH6Q, STM32U595QII6, STM32U595QII6Q, STM32U595QJI6, STM32U595QJI6Q, STM32U595RIT6, STM32U595RIT6Q, STM32U595RJT6, STM32U595RJT6Q, STM32U595VIT6, STM32U595VIT6Q, STM32U595VJT6, STM32U595VJT6Q, STM32U595ZIT6, STM32U595ZIT6Q, STM32U595ZIY6QTR, STM32U595ZJT6, STM32U595ZJT6Q, STM32U595ZJY6QTR, STM32U599BJY6QTR, STM32U599NIH6Q, STM32U599NJH6Q, STM32U599VIT6Q, STM32U599VJT6, STM32U599VJT6Q, STM32U599ZIT6Q, STM32U599ZIY6QTR, STM32U599ZJT6Q, STM32U599ZJY6QTR, STM32U5A5AJH6, STM32U5A5AJH6Q, STM32U5A5QII3Q , STM32U5A5QJI6, STM32U5A5QJI6Q, STM32U5A5RJT6, STM32U5A5RJT6Q, STM32U5A5VJT6, STM32U5A5VJT6Q, STM32U5A5ZJT6, STM32U5A5ZJT6Q, STM32U5A5ZJY6QTR, STM32U5A9BJY6QTR, STM32U5A9J-DK, STM32U5A9NJH6Q, STM32U5A9VJT6Q, STM32U5A9ZJT6Q, STM32U5A9ZJY6QTR, STM32U5F7VIT6, STM32U5F7VIT6Q, STM32U5F7VJT6, STM32U5F7VJT6Q, STM32U5F9BJY6QTR, STM32U5F9NJH6Q, STM32U5F9VIT6Q, STM32U5F9VJT6Q, STM32U5F9ZIJ6QTR, STM32U5F9ZIT6Q, STM32U5F9ZJJ6QTR, STM32U5F9ZJT6Q, STM32U5G7VJT6, STM32U5G7VJT6Q, STM32U5G9BJY6QTR, STM32U5G9J-DK1, STM32U5G9J-DK2, STM32U5G9NJH6Q, STM32U5G9VJT6Q, STM32U5G9ZJJ6QTR, STM32U5G9ZJT6Q, STM32WB05KZV6TR, STM32WB05KZV7TR, STM32WB05TZF6TR, STM32WB05TZF7TR, STM32WB06CCF6TR, STM32WB06CCF7TR, STM32WB06CCV6TR, STM32WB06CCV7TR, STM32WB06KCV6TR, STM32WB06KCV7TR, STM32WB07CCF6TR, STM32WB07CCF7TR, STM32WB07CCV6TR, STM32WB07CCV7TR, STM32WB07KCV6TR, STM32WB07KCV7TR, STM32WB09KEV6TR, STM32WB09KEV7TR, STM32WB09TEF6TR, STM32WB09TEF7TR, STM32WB1MMCH6, STM32WBA50KGU6, STM32WBA50KGU6TR, STM32WBA52CEU6, STM32WBA52CEU6TR, STM32WBA52CEU7, STM32WBA52CEU7TR, STM32WBA52CGU6, STM32WBA52CGU6TR, STM32WBA52CGU6U, STM32WBA52CGU7, STM32WBA52CGU7TR, STM32WBA52KEU6, STM32WBA52KEU6TR, STM32WBA52KGU6, STM32WBA52KGU6TR, STM32WBA54CEU6, STM32WBA54CEU6TR, STM32WBA54CEU7, STM32WBA54CEU7TR, STM32WBA54CGU6, STM32WBA54CGU6TR, STM32WBA54CGU7, STM32WBA54CGU7TR, STM32WBA54KEU6, STM32WBA54KEU6TR, STM32WBA54KEU7, STM32WBA54KEU7TR, STM32WBA54KGU6, STM32WBA54KGU6TR, STM32WBA54KGU7, STM32WBA54KGU7TR, STM32WBA55CEU6, STM32WBA55CEU6TR, STM32WBA55CEU7, STM32WBA55CEU7TR, STM32WBA55CGU6, STM32WBA55CGU6TR, STM32WBA55CGU6U, STM32WBA55CGU7, STM32WBA55CGU7TR, STM32WBA55G-DK1, STM32WBA55HEF6, STM32WBA55HEF7, STM32WBA55HGF6, STM32WBA55HGF7, STM32WBA55UEI6, STM32WBA55UEI6TR, STM32WBA55UEI7, STM32WBA55UEI7TR, STM32WBA55UGI6, STM32WBA55UGI6TR, STM32WBA55UGI7, STM32WBA55UGI7TR, STM32WBA5MMGH6TR, STM32WBA62MGF6, STM32WBA62MIF6, STM32WBA65MGF7, STM32WBA65MIF6, STM32WBA65MIF7, STM32WL30K8V6, STM32WL30KBV6, STM32WL31C8V6, STM32WL31CBV6, STM32WL31K8V6, STM32WL31KBV6, STM32WL33C8V6, STM32WL33C8V6X, STM32WL33CBV6, STM32WL33CBV6X, STM32WL33CCV6, STM32WL33CCV6A, STM32WL33CCV6X, STM32WL33K8V7, STM32WL33K8V7X, STM32WL33KBV7 , STM32WL33KBV7X, STM32WL33KCV7, STM32WL33KCV7X, STM32WL5MOCH6, STM32WL5MOCH6TR] +2025-09-20 22:43:33,502 [INFO] DbMcus:218 - Found 4801 MCUs, 4801 are supported +2025-09-20 22:43:33,503 [INFO] ApiDb:423 - Load user favorites file /home/ja/.stm32cubeide/favorites.mcus.txt: 0 item(s) +2025-09-20 22:43:33,503 [INFO] ApiDb:427 - User favorites MCUs=[] +2025-09-20 22:43:33,503 [INFO] DbMcus:224 - Set 0 / 0 favorites MCUs +2025-09-20 22:43:34,356 [INFO] ApiDb:414 - User favorites file not found: /home/ja/.stm32cubeide/favorites.boards.txt +2025-09-20 22:43:34,356 [INFO] DbBoards:198 - Set 0 / 0 favorites Boards +2025-09-20 22:43:34,408 [INFO] UtilMem:75 - End LoadConfig() Used Memory: 576062072 Bytes (1073741824) +2025-09-20 22:43:34,663 [WARN] ThirdParty:833 - waiting for thirdparty lock release [change project] +2025-09-20 22:43:34,664 [INFO] ThirdParty:835 - entering critical section [change project] +2025-09-20 22:43:34,665 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-PM33A1 1.0.0 +2025-09-20 22:43:34,665 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USBPD 4.1 +2025-09-20 22:43:34,666 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC9 1.0.0 +2025-09-20 22:43:34,666 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 2.0.0 +2025-09-20 22:43:34,666 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENVWB1 1.4.0 +2025-09-20 22:43:34,666 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F4 1.1.0 +2025-09-20 22:43:34,666 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics LIBJPEG 8.0.0 +2025-09-20 22:43:34,666 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-ASTRA1 2.0.2 +2025-09-20 22:43:34,666 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSL 5.8.2 +2025-09-20 22:43:34,666 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE1 7.1.0 +2025-09-20 22:43:34,666 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Avnet-IotConnect X-CUBE-IoTC-DA16k-PMOD 1.0.0 +2025-09-20 22:43:34,666 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SMBUS 2.1.0 +2025-09-20 22:43:34,666 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfMQTT 1.19.2 +2025-09-20 22:43:34,666 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 3.0.0 +2025-09-20 22:43:34,667 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ISPU 2.1.0 +2025-09-20 22:43:34,667 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-EEPRMA1 5.2.0 +2025-09-20 22:43:34,667 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLEMGR 4.1.0 +2025-09-20 22:43:34,667 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WB 2.0.0 +2025-09-20 22:43:34,667 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST60 1.0.0 +2025-09-20 22:43:34,667 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-GNSS1 7.0.1 +2025-09-20 22:43:34,667 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC12 1.0.0 +2025-09-20 22:43:34,667 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F7 1.1.0 +2025-09-20 22:43:34,667 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L5 2.0.0 +2025-09-20 22:43:34,667 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOUCHGFX 4.25.0 +2025-09-20 22:43:34,667 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 2.0.0 +2025-09-20 22:43:34,667 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC6 3.1.0 +2025-09-20 22:43:34,667 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :quantropi X-CUBE-qispace-sdk-base 2.1.0 +2025-09-20 22:43:34,668 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FreeRTOS 0.0.1 +2025-09-20 22:43:34,668 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G0 1.1.0 +2025-09-20 22:43:34,668 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SAFEA1 1.2.2 +2025-09-20 22:43:34,668 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC4 3.0.0 +2025-09-20 22:43:34,668 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SUBG2 5.0.0 +2025-09-20 22:43:34,668 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7RS 1.1.0 +2025-09-20 22:43:34,668 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics STM32_WPAN 1.0.0 +2025-09-20 22:43:34,668 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :EmbeddedOffice I-CUBE-FS-RTOS 1.0.1 +2025-09-20 22:43:34,668 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.0.3 +2025-09-20 22:43:34,668 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :WES I-CUBE-Cesium 1.4.0 +2025-09-20 22:43:34,669 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Cesanta I-CUBE-Mongoose 7.13.0 +2025-09-20 22:43:34,669 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 1.0.0 +2025-09-20 22:43:34,669 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Infineon AIROC-Wi-Fi-Bluetooth-STM32 1.7.1 +2025-09-20 22:43:34,669 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G4 2.0.0 +2025-09-20 22:43:34,669 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-WB05N 2.0.0 +2025-09-20 22:43:34,669 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.1.0 +2025-09-20 22:43:34,669 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.3.0 +2025-09-20 22:43:34,669 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfTPM 3.8.0 +2025-09-20 22:43:34,669 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7 3.4.0 +2025-09-20 22:43:34,669 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DISPLAY 3.0.0 +2025-09-20 22:43:34,669 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSH 1.4.20 +2025-09-20 22:43:34,669 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC7 2.0.0 +2025-09-20 22:43:34,669 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TCPP 4.2.0 +2025-09-20 22:43:34,670 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :RealThread X-CUBE-RT-Thread_Nano 4.1.1 +2025-09-20 22:43:34,670 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-SIGFOX1 3.2.0 +2025-09-20 22:43:34,670 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC10 1.0.0 +2025-09-20 22:43:34,670 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-FREERTOS 1.3.1 +2025-09-20 22:43:34,670 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics HAL Drivers 0.0.0 +2025-09-20 22:43:34,670 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.16.2 +2025-09-20 22:43:34,670 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-IPS 3.1.0 +2025-09-20 22:43:34,670 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALS 1.0.2 +2025-09-20 22:43:34,670 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :emotas I-CUBE-CANOPEN 1.3.0 +2025-09-20 22:43:34,670 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.14.1 +2025-09-20 22:43:34,670 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :ITTIA_DB I-CUBE-ITTIADB 8.9.0 +2025-09-20 22:43:34,670 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-STSE01 1.0.0 +2025-09-20 22:43:34,670 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :portGmbH I-Cube-SoM-uGOAL 1.1.0 +2025-09-20 22:43:34,671 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST67W61 1.0.0 +2025-09-20 22:43:34,671 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STBOX1 2.1.0 +2025-09-20 22:43:34,671 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AI 10.2.0 +2025-09-20 22:43:34,671 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STAIOTCFT 1.0.0 +2025-09-20 22:43:34,671 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 1.0.0 +2025-09-20 22:43:34,671 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-SMARTAG2 1.2.0 +2025-09-20 22:43:34,671 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-FLIGHT1 5.1.0 +2025-09-20 22:43:34,671 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WL 2.0.0 +2025-09-20 22:43:34,671 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :SEGGER I-CUBE-embOS 1.3.1 +2025-09-20 22:43:34,671 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALGOBUILD 1.4.0 +2025-09-20 22:43:34,671 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DPower 1.3.0 +2025-09-20 22:43:34,671 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-MEMS1 11.3.0 +2025-09-20 22:43:34,671 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENV1 5.0.0 +2025-09-20 22:43:34,672 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 1.0.0 +2025-09-20 22:43:34,672 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L4 2.0.0 +2025-09-20 22:43:34,672 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 0.0.2 +2025-09-20 22:43:34,672 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.1.2 +2025-09-20 22:43:34,672 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SFXS2LP1 4.0.0 +2025-09-20 22:43:34,672 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE2 3.3.0 +2025-09-20 22:43:34,672 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOF1 3.4.3 +2025-09-20 22:43:34,672 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.2.0 +2025-09-20 22:43:34,672 [INFO] ThirdParty:841 - exiting critical section [change project] +2025-09-20 22:43:36,096 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-09-20 22:43:36,098 [INFO] PinOutPanel:1589 - setPackage(STM32F429ZITx,LQFP144) +2025-09-20 22:43:37,325 [INFO] UtilMem:75 - Before build in PCC Used Memory: 624999232 Bytes (1073741824) +2025-09-20 22:43:39,412 [INFO] UtilMem:75 - After build in PCC Used Memory: 749748992 Bytes (1073741824) +2025-09-20 22:43:39,559 [INFO] ApiDbMcu:532 - Load IP Config File for FREERTOS +2025-09-20 22:43:39,587 [INFO] ApiDbMcu:532 - Load IP Config File for USB_HOST +2025-09-20 22:43:39,712 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,713 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,713 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,714 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,715 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,716 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,717 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,717 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,718 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,718 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,719 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,719 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,720 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,721 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,721 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,722 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,722 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,722 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,723 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,723 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,724 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,725 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,726 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,727 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,728 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,729 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,730 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,734 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,736 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,737 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,737 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,739 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,740 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,740 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,741 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,741 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,742 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,742 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,743 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,743 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,744 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,744 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,744 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,745 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,745 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,745 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,745 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,746 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,747 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,747 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,747 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,748 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,748 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,749 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,750 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,750 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,751 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,752 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,753 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,755 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,756 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,758 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,759 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,761 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,762 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,764 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-09-20 22:43:39,777 [INFO] ApiDbMcu:532 - Load IP Config File for PDM2PCM +2025-09-20 22:43:39,876 [WARN] FreeRTOS:1023 - Null or empty value: should not occur! (nothing added to the table) +2025-09-20 22:43:40,443 [INFO] CADModel:165 - CPN selected for project levelSTM32F429ZIT6 +2025-09-20 22:43:40,443 [INFO] CADModel:114 - Register for checkConnection events +2025-09-20 22:43:40,457 [INFO] RtosManager:728 - Active RTOS found at IOC load: FREERTOS [Cortex-M4NS] +2025-09-20 22:43:40,535 [INFO] OpenFileManager:386 - Restore cursor +2025-09-20 22:43:41,131 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 22:44:04,549 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 22:44:04,836 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 22:44:05,059 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 22:44:15,621 [INFO] UtilMem:75 - End SaveConfig() Used Memory: 699902752 Bytes (1073741824) +2025-09-20 22:44:16,522 [INFO] UtilMem:75 - End SaveConfig() Used Memory: 749598080 Bytes (1073741824) +2025-09-20 22:44:18,935 [INFO] UtilMem:75 - End SaveConfig() Used Memory: 893239760 Bytes (1073741824) +2025-09-20 22:44:26,031 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USB_OTG_HS +2025-09-20 22:44:26,031 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: SPI +2025-09-20 22:44:26,031 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: FREERTOS +2025-09-20 22:44:26,032 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: TIM1_8 +2025-09-20 22:44:26,032 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: LTDC +2025-09-20 22:44:26,032 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: SYS +2025-09-20 22:44:26,032 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: RCC +2025-09-20 22:44:26,033 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: CRC +2025-09-20 22:44:26,033 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: I2C +2025-09-20 22:44:26,033 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: NVIC +2025-09-20 22:44:26,033 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USB_HOST +2025-09-20 22:44:26,033 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: DMA2D +2025-09-20 22:44:26,033 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: USART +2025-09-20 22:44:26,033 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: FMC +2025-09-20 22:44:26,035 [INFO] BlockDiagram:2775 - set Specific Code input for plugin: GPIO +2025-09-20 22:44:26,037 [INFO] CodeGenerator:892 - code generatio: config db path: /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.common.mx_6.15.0.202507011659//db/ +2025-09-20 22:44:26,076 [WARN] IP:2250 - LayerIdx_L1 not found: check if there is a RefParameter without a condition. +2025-09-20 22:44:26,475 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/license.tmp_save +2025-09-20 22:44:27,461 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/license.tmp +2025-09-20 22:44:27,987 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/gpio.tmp_save +2025-09-20 22:44:28,473 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/gpio.tmp +2025-09-20 22:44:29,407 [WARN] IPConfigManager:3238 - Warning: the RefConfig PWREx_EnableUSBVoltageDetector is not available in your config.xml file +2025-09-20 22:44:29,423 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_vars.tmp_save +2025-09-20 22:44:29,669 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_vars.tmp +2025-09-20 22:44:29,674 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_inc.tmp_save +2025-09-20 22:44:29,914 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_inc.tmp +2025-09-20 22:44:29,924 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_HalInit.tmp_save +2025-09-20 22:44:30,238 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_HalInit.tmp +2025-09-20 22:44:30,243 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_Msp.tmp_save +2025-09-20 22:44:30,515 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/usb_otg_hs_Msp.tmp +2025-09-20 22:44:33,738 [INFO] Middleware:1452 - No code input for Bsp Dependency +2025-09-20 22:44:33,747 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_inc.tmp_save +2025-09-20 22:44:33,921 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_inc.tmp +2025-09-20 22:44:33,926 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_vars.tmp_save +2025-09-20 22:44:34,209 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_vars.tmp +2025-09-20 22:44:34,223 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_pfp.tmp_save +2025-09-20 22:44:34,423 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_pfp.tmp +2025-09-20 22:44:34,428 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_obj_creat.tmp_save +2025-09-20 22:44:34,574 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_obj_creat.tmp +2025-09-20 22:44:34,579 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_kernelStart.tmp_save +2025-09-20 22:44:34,701 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_kernelStart.tmp +2025-09-20 22:44:34,705 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_default_thread.tmp_save +2025-09-20 22:44:34,871 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_default_thread.tmp +2025-09-20 22:44:34,873 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_threads.tmp_save +2025-09-20 22:44:35,009 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_threads.tmp +2025-09-20 22:44:35,052 [INFO] Middleware:1452 - No code input for Bsp Dependency +2025-09-20 22:44:35,057 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_inc.tmp_save +2025-09-20 22:44:35,207 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_inc.tmp +2025-09-20 22:44:35,210 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_vars.tmp_save +2025-09-20 22:44:35,339 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_vars.tmp +2025-09-20 22:44:35,343 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_pfp.tmp_save +2025-09-20 22:44:35,497 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_pfp.tmp +2025-09-20 22:44:35,500 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_obj_creat.tmp_save +2025-09-20 22:44:35,607 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_obj_creat.tmp +2025-09-20 22:44:35,610 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_kernelStart.tmp_save +2025-09-20 22:44:35,715 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_kernelStart.tmp +2025-09-20 22:44:35,717 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_default_thread.tmp_save +2025-09-20 22:44:35,823 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_default_thread.tmp +2025-09-20 22:44:35,825 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_threads.tmp_save +2025-09-20 22:44:35,921 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/rtos_threads.tmp +2025-09-20 22:44:35,923 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Inc/FreeRTOSConfig.h_save +2025-09-20 22:44:36,059 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Inc/FreeRTOSConfig.h +2025-09-20 22:44:36,062 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Src/freertos.c_save +2025-09-20 22:44:36,174 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Src/freertos.c +2025-09-20 22:44:36,183 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_HC.tmp_save +2025-09-20 22:44:36,317 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_HC.tmp +2025-09-20 22:44:36,321 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_GV.tmp_save +2025-09-20 22:44:36,455 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_GV.tmp +2025-09-20 22:44:36,460 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_MSP.tmp_save +2025-09-20 22:44:36,583 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_MSP.tmp +2025-09-20 22:44:36,616 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/USB_HOST/App/usb_host.c_save +2025-09-20 22:44:36,746 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/USB_HOST/App/usb_host.c +2025-09-20 22:44:36,749 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/USB_HOST/App/usb_host.h_save +2025-09-20 22:44:36,848 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/USB_HOST/App/usb_host.h +2025-09-20 22:44:36,850 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_conf.h_save +2025-09-20 22:44:36,941 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_conf.h +2025-09-20 22:44:36,943 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_conf.c_save +2025-09-20 22:44:37,043 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_conf.c +2025-09-20 22:44:37,045 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_platform.c_save +2025-09-20 22:44:37,134 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_platform.c +2025-09-20 22:44:37,136 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_platform.h_save +2025-09-20 22:44:37,228 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/USB_HOST/Target/usbh_platform.h +2025-09-20 22:44:37,249 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Src/stm32f4xx_it.c_save +2025-09-20 22:44:37,391 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Src/stm32f4xx_it.c +2025-09-20 22:44:37,393 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Inc/stm32f4xx_it.h_save +2025-09-20 22:44:37,522 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Inc/stm32f4xx_it.h +2025-09-20 22:44:37,527 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_HC.tmp_save +2025-09-20 22:44:37,697 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_HC.tmp +2025-09-20 22:44:37,700 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_GV.tmp_save +2025-09-20 22:44:37,866 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_GV.tmp +2025-09-20 22:44:37,869 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_MSP.tmp_save +2025-09-20 22:44:38,028 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/mx_fmc_MSP.tmp +2025-09-20 22:44:38,072 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Src/stm32f4xx_hal_msp.c_save +2025-09-20 22:44:38,339 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Src/stm32f4xx_hal_msp.c +2025-09-20 22:44:38,341 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/system.tmp_save +2025-09-20 22:44:38,481 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/MXTmpFiles/system.tmp +2025-09-20 22:44:38,485 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Src/stm32f4xx_hal_timebase_tim.c_save +2025-09-20 22:44:38,622 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Src/stm32f4xx_hal_timebase_tim.c +2025-09-20 22:44:38,633 [INFO] CodeEngine:321 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Inc/stm32f4xx_hal_conf.h_save +2025-09-20 22:44:38,795 [INFO] CodeEngine:345 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Inc/stm32f4xx_hal_conf.h +2025-09-20 22:44:38,882 [INFO] ApiDbMcu:532 - Load IP Config File for CRC +2025-09-20 22:44:38,888 [INFO] ApiDbMcu:532 - Load IP Config File for DMA2D +2025-09-20 22:44:38,908 [INFO] ApiDbMcu:532 - Load IP Config File for FMC +2025-09-20 22:44:38,915 [INFO] ApiDbMcu:532 - Load IP Config File for I2C3 +2025-09-20 22:44:38,921 [INFO] ApiDbMcu:532 - Load IP Config File for LTDC +2025-09-20 22:44:38,927 [INFO] ApiDbMcu:532 - Load IP Config File for SPI5 +2025-09-20 22:44:38,961 [INFO] ApiDbMcu:532 - Load IP Config File for TIM1 +2025-09-20 22:44:38,969 [INFO] ApiDbMcu:532 - Load IP Config File for USART1 +2025-09-20 22:44:38,978 [INFO] ApiDbMcu:532 - Load IP Config File for RCC +2025-09-20 22:44:38,993 [WARN] IPConfigManager:3811 - IP not found : TIM +2025-09-20 22:44:38,995 [WARN] CodeGenerator:4259 - IP not found : null +2025-09-20 22:44:39,006 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Inc/main.h_save +2025-09-20 22:44:39,208 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Inc/main.h +2025-09-20 22:44:39,211 [INFO] CodeEngine:265 - oldGeneratedFile, /home/ja/st/Home/TrafficLightsPlus/Core/Src/main.c_save +2025-09-20 22:44:39,638 [INFO] CodeEngine:289 - Generated code: /home/ja/st/Home/TrafficLightsPlus/Core/Src/main.c +2025-09-20 22:44:40,332 [INFO] ProjectBuilder:3606 - Time for Copy HAL[1] : 139mS. +2025-09-20 22:44:40,348 [INFO] ProjectBuilder:5216 - Project Generator version: 4.7.0-B52 +2025-09-20 22:44:40,631 [INFO] ConfigFileManager:1595 - The Die is : DIE419 +2025-09-20 22:44:40,639 [INFO] ApiDbMcu:532 - Load IP Config File for FATFS +2025-09-20 22:44:40,644 [INFO] ApiDbMcu:532 - Load IP Config File for LIBJPEG +2025-09-20 22:44:40,660 [INFO] ApiDbMcu:532 - Load IP Config File for LWIP +2025-09-20 22:44:40,674 [INFO] ApiDbMcu:532 - Load IP Config File for MBEDTLS +2025-09-20 22:44:40,687 [INFO] ApiDbMcu:532 - Load IP Config File for USB_DEVICE +2025-09-20 22:44:41,802 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] +2025-09-20 22:44:44,761 [INFO] ProjectBuilder:5496 - Time for Generating toolchain IDE Files: 4412mS. +2025-09-20 22:44:44,761 [INFO] ProjectBuilder:3463 - Time for Copy CMSIS : 0mS. +2025-09-20 22:44:44,765 [INFO] ProjectBuilder:3463 - Time for Copy CMSIS : 0mS. diff --git a/.metadata/.log b/.metadata/.log index 77dd70d..bd1b354 100644 --- a/.metadata/.log +++ b/.metadata/.log @@ -478,3 +478,21 @@ Command-line arguments: -os linux -ws gtk -arch x86_64 !ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-09-20 14:37:43.944 !MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-09-20 22:34:31.654 ----------------------------------------------- +eclipse.buildId=Version 1.19.0 +java.version=21.0.3 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US +Command-line arguments: -os linux -ws gtk -arch x86_64 + +!ENTRY org.eclipse.core.resources 2 10035 2025-09-20 22:34:34.412 +!MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-09-20 22:34:38.306 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-09-20 22:34:38.307 +!MESSAGE Log4j2 initialized with config file /home/ja/st/Home/.metadata/.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-09-20 22:34:46.694 +!MESSAGE Started RMI Server, listening on port 41337 diff --git a/.metadata/.plugins/org.eclipse.cdt.core/.log b/.metadata/.plugins/org.eclipse.cdt.core/.log index da92812..2767f8d 100644 --- a/.metadata/.plugins/org.eclipse.cdt.core/.log +++ b/.metadata/.plugins/org.eclipse.cdt.core/.log @@ -14,3 +14,4 @@ *** SESSION Sep 17, 2025 14:27:19.507 ------------------------------------------ *** SESSION Sep 20, 2025 00:17:43.78 ------------------------------------------- *** SESSION Sep 20, 2025 02:01:15.749 ------------------------------------------ +*** SESSION Sep 20, 2025 22:34:37.42 ------------------------------------------- diff --git a/.metadata/.plugins/org.eclipse.cdt.core/TrafficLightsPlus.1758137370837.pdom b/.metadata/.plugins/org.eclipse.cdt.core/TrafficLightsPlus.1758137370837.pdom index 54edb62ed723cd825ba115b8fcb6a5bf328bad1c..983e27a8b700159a420af24c3c221a741e0f2f78 100644 GIT binary patch delta 262076 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 "TrafficLightsPlus.list" text data bss dec hex filename - 32576 16 3480 36072 8ce8 TrafficLightsPlus.elf + 32656 16 3496 36168 8d48 TrafficLightsPlus.elf Finished building: default.size.stdout Finished building: TrafficLightsPlus.list -14:43:50 Build Finished. 0 errors, 0 warnings. (took 703ms) +01:20:42 Build Finished. 0 errors, 0 warnings. (took 593ms) diff --git a/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml index 1d2e473..c8f01dd 100644 --- a/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml +++ b/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml @@ -24,4 +24,8 @@ +

+
+
+
diff --git a/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log b/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log index 0c53285..76bf488 100644 --- a/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log +++ b/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log @@ -1,13 +1,14 @@ -14:43:49 **** Incremental Build of configuration Debug for project TrafficLightsPlus **** +01:20:42 **** Incremental Build of configuration Debug for project TrafficLightsPlus **** make -j8 all arm-none-eabi-gcc "../Core/Src/breadboard.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../USB_HOST/App -I../USB_HOST/Target -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Core/Src/breadboard.d" -MT"Core/Src/breadboard.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Core/Src/breadboard.o" +arm-none-eabi-gcc "../Core/Src/main.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../USB_HOST/App -I../USB_HOST/Target -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Core/Src/main.d" -MT"Core/Src/main.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Core/Src/main.o" arm-none-eabi-gcc -o "TrafficLightsPlus.elf" @"objects.list" -mcpu=cortex-m4 -T"/home/ja/st/Home/TrafficLightsPlus/STM32F429ZITX_FLASH.ld" --specs=nosys.specs -Wl,-Map="TrafficLightsPlus.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group Finished building target: TrafficLightsPlus.elf arm-none-eabi-size TrafficLightsPlus.elf arm-none-eabi-objdump -h -S TrafficLightsPlus.elf > "TrafficLightsPlus.list" text data bss dec hex filename - 32576 16 3480 36072 8ce8 TrafficLightsPlus.elf + 32656 16 3496 36168 8d48 TrafficLightsPlus.elf Finished building: default.size.stdout Finished building: TrafficLightsPlus.list diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/0/2055ea26af9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/0/2055ea26af9600101605f36318c5a03f new file mode 100644 index 0000000..634aaca --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/0/2055ea26af9600101605f36318c5a03f @@ -0,0 +1,95 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; +uint32_t walktick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_RESET); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_SET); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_SET); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin); + break; + } + + trafflight_i = (trafflight_i + 1) % 3; + trafftick_last = trafftick_curr; + } + + if ((trafftick_curr - walktick_last) >= walkSPD) { + HAL_GPIO_TogglePin(W_Prt, W_Pin); + walktick_last = trafftick_curr; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/0/60bf74b0f695001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/0/60bf74b0f695001014a1b349f7adbbd1 deleted file mode 100644 index 053fa06..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/0/60bf74b0f695001014a1b349f7adbbd1 +++ /dev/null @@ -1,48 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(); - HAL_Delay(); - - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/10/a0de2e24af9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/10/a0de2e24af9600101605f36318c5a03f new file mode 100644 index 0000000..a4b2b3a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/10/a0de2e24af9600101605f36318c5a03f @@ -0,0 +1,95 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; +uint32_t walktick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_RESET); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_SET); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin); + break; + } + + trafflight_i = (trafflight_i + 1) % 3; + trafftick_last = trafftick_curr; + } + + if ((trafftick_curr - walktick_last) >= walkSPD) { + HAL_GPIO_TogglePin(W_Prt, W_Pin); + walktick_last = trafftick_curr; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/11/30372612a59600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/11/30372612a59600101605f36318c5a03f new file mode 100644 index 0000000..7674c5e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/11/30372612a59600101605f36318c5a03f @@ -0,0 +1,13 @@ +/* + * breadboard.h + * + * Created on: Sep 20, 2025 + * Author: ja + */ + +#ifndef INC_BREADBOARD_H_ +#define INC_BREADBOARD_H_ + +void trafflight(int); + +#endif /* INC_BREADBOARD_H_ */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/13/d01a6f4faf9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/13/d01a6f4faf9600101605f36318c5a03f new file mode 100644 index 0000000..ddb1214 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/13/d01a6f4faf9600101605f36318c5a03f @@ -0,0 +1,95 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; +uint32_t walktick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_RESET); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_SET); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_SET); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_SET); + break; + } + + trafflight_i = (trafflight_i + 1) % 3; + trafftick_last = trafftick_curr; + } + + if ((trafftick_curr - walktick_last) >= walkSPD) { + HAL_GPIO_TogglePin(W_Prt, W_Pin); + walktick_last = trafftick_curr; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/16/c0dac6ec5f96001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/16/c0dac6ec5f96001013e892f2240cdbac new file mode 100644 index 0000000..a447c9e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/16/c0dac6ec5f96001013e892f2240cdbac @@ -0,0 +1,731 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + ticksync(); + while (1) + { + breadboard(333); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/16/d0c9bb40ae9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/16/d0c9bb40ae9600101605f36318c5a03f new file mode 100644 index 0000000..99d589b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/16/d0c9bb40ae9600101605f36318c5a03f @@ -0,0 +1,85 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin( + R_Prt, R_Pin | + Y_Prt, Y_Pin | + G_Prt, G_Pin, + GPIO_PIN_RESET + ); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin); + break; + case 0: + HAL_GPIO_WritePin(Y_Prt, Y_Pin); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/17/9055d7ebaa9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/17/9055d7ebaa9600101605f36318c5a03f new file mode 100644 index 0000000..9d20acd --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/17/9055d7ebaa9600101605f36318c5a03f @@ -0,0 +1,79 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + trafftick_last = trafftick_curr; + HAL_GPIO_TogglePin(R_Prt, R_Pin); + } + + if ((trafftick_curr - trafftick_last) >= ldelay2) { + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + } + + if ((trafftick_curr - trafftick_last) >= ldelay3) { + HAL_GPIO_TogglePin(G_Prt, G_Pin); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/18/10d57df6a49600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/18/10d57df6a49600101605f36318c5a03f new file mode 100644 index 0000000..0a34a6b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/18/10d57df6a49600101605f36318c5a03f @@ -0,0 +1,731 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + trafflight(333); + walksig(1000); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/19/50275262f695001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/19/50275262f695001014a1b349f7adbbd1 deleted file mode 100644 index 3a12540..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/19/50275262f695001014a1b349f7adbbd1 +++ /dev/null @@ -1,47 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(); - HAL_Delay(); - - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/27/80efb76af995001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/1b/605074f75f96001013e892f2240cdbac similarity index 52% rename from .metadata/.plugins/org.eclipse.core.resources/.history/27/80efb76af995001014a1b349f7adbbd1 rename to .metadata/.plugins/org.eclipse.core.resources/.history/1b/605074f75f96001013e892f2240cdbac index 5b412f3..f83889f 100644 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/27/80efb76af995001014a1b349f7adbbd1 +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1b/605074f75f96001013e892f2240cdbac @@ -23,24 +23,41 @@ #include "main.h" #include "breadboard.h" -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + +void +ticksync(void) +{ + last_tick = HAL_GetTick(); +} + void breadboard(int traffSPD) { + // ============= // Traffic Light - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_SET); - HAL_Delay(traffSPD); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); + HAL_GPIO_TogglePin(R_Prt, R_Pin); HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + + // =========== // Walk signal + // ============ // Light dimmer } diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1d/c00fabc8f795001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/1d/c00fabc8f795001014a1b349f7adbbd1 deleted file mode 100644 index 7553c21..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/1d/c00fabc8f795001014a1b349f7adbbd1 +++ /dev/null @@ -1,54 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(500); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - HAL_Delay(500); - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - HAL_DELAY(500); - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1e/20e775f0ae9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/1e/20e775f0ae9600101605f36318c5a03f new file mode 100644 index 0000000..080c062 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1e/20e775f0ae9600101605f36318c5a03f @@ -0,0 +1,98 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; +uint32_t walktick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin( + R_Prt, R_Pin | + Y_Prt, Y_Pin | + G_Prt, G_Pin, + GPIO_PIN_RESET + ); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin); + break; + } + + trafflight_i = (trafflight_i + 1) % 3; + trafftick_last = trafftick_curr; + } + + if ((trafftick_curr - walktick_last) >= walkSPD) { + HAL_GPIO_TogglePin(W_Prt, W_Pin); + walktick_last = trafftick_curr; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1f/d0e648806596001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/1f/d0e648806596001013e892f2240cdbac new file mode 100644 index 0000000..e545896 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1f/d0e648806596001013e892f2240cdbac @@ -0,0 +1,731 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + tickinit(); + while (1) + { + breadboard(333, 1000); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2/606f4d90f795001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/2/606f4d90f795001014a1b349f7adbbd1 deleted file mode 100644 index dc9f4d3..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/2/606f4d90f795001014a1b349f7adbbd1 +++ /dev/null @@ -1,50 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(500); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2/b0780877f795001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/2/b0780877f795001014a1b349f7adbbd1 deleted file mode 100644 index e35d7bb..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/2/b0780877f795001014a1b349f7adbbd1 +++ /dev/null @@ -1,50 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(500); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/20/90acb2416496001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/20/90acb2416496001013e892f2240cdbac new file mode 100644 index 0000000..fcb29e9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/20/90acb2416496001013e892f2240cdbac @@ -0,0 +1,85 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +void +tickinit(void) +{ + last_tick = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + HAL_GPIO_TogglePin(W_Prt, W_Pin); + HAL_Delay(pedSPD); + HAL_GPIO_TogglePin(W_Prt, W_Pin); +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + return; // placeholder +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + walkingman(pedSPD); + dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/21/e010a3106996001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/21/e010a3106996001013e892f2240cdbac new file mode 100644 index 0000000..7973466 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/21/e010a3106996001013e892f2240cdbac @@ -0,0 +1,87 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +void +tickinit(void) +{ + //last_tick = HAL_GetTick(); + return; //placeholder +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + HAL_GPIO_TogglePin(W_Prt, W_Pin); + HAL_Delay(pedSPD); + HAL_GPIO_TogglePin(W_Prt, W_Pin); +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + return; // placeholder +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + //walkingman(pedSPD); + //dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/22/9084cb54f795001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/22/9084cb54f795001014a1b349f7adbbd1 deleted file mode 100644 index f7a5461..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/22/9084cb54f795001014a1b349f7adbbd1 +++ /dev/null @@ -1,49 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(500); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/23/90b966be6296001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/23/90b966be6296001013e892f2240cdbac new file mode 100644 index 0000000..d4327ae --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/23/90b966be6296001013e892f2240cdbac @@ -0,0 +1,83 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + +void +ticksync(void) +{ + last_tick = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + walkingman(pedSPD); + dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/24/707b75faac9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/24/707b75faac9600101605f36318c5a03f new file mode 100644 index 0000000..be35d2d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/24/707b75faac9600101605f36318c5a03f @@ -0,0 +1,87 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t redlight_last; +uint32_t ylwlight_last; +uint32_t grnlight_last; + +void +starttick(void) +{ + redlight_last = HAL_GetTick(); + ylwlight_last = HAL_GetTick(); + grnlight_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + int ldelay2 = traffSPD * 2; + int ldelay3 = traffSPD * 3; + + if ((trafftick_curr - redlight_last) >= traffSPD) { + redlight_last = trafftick_curr; + HAL_GPIO_TogglePin(R_Prt, R_Pin); + } + + if ((trafftick_curr - ylwlight_last) >= ldelay2) { + ylwlight_last = trafftick_curr; + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + } + + if ((trafftick_curr - grnlight_last) >= ldelay3) { + grnlight_last = trafftick_curr; + HAL_GPIO_TogglePin(G_Prt, G_Pin); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/25/d00985166b96001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/25/d00985166b96001013e892f2240cdbac new file mode 100644 index 0000000..7973466 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/25/d00985166b96001013e892f2240cdbac @@ -0,0 +1,87 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +void +tickinit(void) +{ + //last_tick = HAL_GetTick(); + return; //placeholder +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + HAL_GPIO_TogglePin(W_Prt, W_Pin); + HAL_Delay(pedSPD); + HAL_GPIO_TogglePin(W_Prt, W_Pin); +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + return; // placeholder +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + //walkingman(pedSPD); + //dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/27/d0b3bcefaf9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/27/d0b3bcefaf9600101605f36318c5a03f new file mode 100644 index 0000000..2e60fba --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/27/d0b3bcefaf9600101605f36318c5a03f @@ -0,0 +1,95 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; +uint32_t walktick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD, int walkSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_RESET); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_SET); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_SET); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_SET); + break; + } + + trafflight_i = (trafflight_i + 1) % 3; + trafftick_last = trafftick_curr; + } + + if ((trafftick_curr - walktick_last) >= walkSPD) { + HAL_GPIO_TogglePin(W_Prt, W_Pin); + walktick_last = trafftick_curr; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/28/60df89739e9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/28/60df89739e9600101605f36318c5a03f new file mode 100644 index 0000000..bf4d781 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/28/60df89739e9600101605f36318c5a03f @@ -0,0 +1,731 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + trafflight(333); + walksig(1000) + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/28/f08ed78fae9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/28/f08ed78fae9600101605f36318c5a03f new file mode 100644 index 0000000..53995f0 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/28/f08ed78fae9600101605f36318c5a03f @@ -0,0 +1,92 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin( + R_Prt, R_Pin | + Y_Prt, Y_Pin | + G_Prt, G_Pin, + GPIO_PIN_RESET + ); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin); + break; + } + + trafflight_i = (trafflight_i + 1) % 3; + trafftick_last = trafftick_curr; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2d/00faf8a26396001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/2d/00faf8a26396001013e892f2240cdbac new file mode 100644 index 0000000..bbba531 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2d/00faf8a26396001013e892f2240cdbac @@ -0,0 +1,86 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +void +tickinit(void) +{ + last_tick = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + HAL_GPIO_TogglePin(W_Prt, W_Pin); + HAL_Delay(pedSPD); + HAL_GPIO_TogglePin(W_Prt, W_Pin); + +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + return; +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + walkingman(pedSPD); + dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2e/008b3c54f795001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/2e/008b3c54f795001014a1b349f7adbbd1 deleted file mode 100644 index bb27d4e..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/2e/008b3c54f795001014a1b349f7adbbd1 +++ /dev/null @@ -1,49 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(500); - - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2f/2052be29ae9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/2f/2052be29ae9600101605f36318c5a03f new file mode 100644 index 0000000..c3a04f4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2f/2052be29ae9600101605f36318c5a03f @@ -0,0 +1,82 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin( + R_Prt, R_Pin | + Y_Prt, Y_Pin | + G_Prt, G_Pin, + GPIO_PIN_RESET + ); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2f/50c89b5bad9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/2f/50c89b5bad9600101605f36318c5a03f new file mode 100644 index 0000000..ba3d973 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2f/50c89b5bad9600101605f36318c5a03f @@ -0,0 +1,69 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1e/a0424880f995001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/2f/e06b590b5d96001013e892f2240cdbac similarity index 53% rename from .metadata/.plugins/org.eclipse.core.resources/.history/1e/a0424880f995001014a1b349f7adbbd1 rename to .metadata/.plugins/org.eclipse.core.resources/.history/2f/e06b590b5d96001013e892f2240cdbac index 521842f..008c9cb 100644 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/1e/a0424880f995001014a1b349f7adbbd1 +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2f/e06b590b5d96001013e892f2240cdbac @@ -23,23 +23,32 @@ #include "main.h" #include "breadboard.h" -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + void breadboard(int traffSPD) { // Traffic Light - HAL_GPIO_WritePin(GreenLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_SET); - HAL_Delay(traffSPD); - HAL_GPIO_WritePin(RedLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_SET); + HAL_GPIO_TogglePin(R_Prt, R_Pin); HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_SET); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + + // =========== // Walk signal // Light dimmer diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/30/50ace7bff695001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/30/50ace7bff695001014a1b349f7adbbd1 deleted file mode 100644 index f913ee9..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/30/50ace7bff695001014a1b349f7adbbd1 +++ /dev/null @@ -1,49 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(); - HAL_Delay(); - - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/37/800222e56596001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/37/800222e56596001013e892f2240cdbac new file mode 100644 index 0000000..4740d05 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/37/800222e56596001013e892f2240cdbac @@ -0,0 +1,731 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + //tickinit(); + while (1) + { + //breadboard(333, 1000); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/38/30af6cc7ae9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/38/30af6cc7ae9600101605f36318c5a03f new file mode 100644 index 0000000..683cab9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/38/30af6cc7ae9600101605f36318c5a03f @@ -0,0 +1,97 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; +uint32_t walktick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin( + R_Prt, R_Pin | + Y_Prt, Y_Pin | + G_Prt, G_Pin, + GPIO_PIN_RESET + ); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin); + break; + } + + trafflight_i = (trafflight_i + 1) % 3; + trafftick_last = trafftick_curr; + } + + if ((trafftick_curr - walktick_last) >= walkSPD) { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/39/a07dbaddf895001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/39/a07dbaddf895001014a1b349f7adbbd1 deleted file mode 100644 index b38242c..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/39/a07dbaddf895001014a1b349f7adbbd1 +++ /dev/null @@ -1,34 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -breadboard(void) -{ - // Traffic Light - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3a/60863702ac9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/3a/60863702ac9600101605f36318c5a03f new file mode 100644 index 0000000..ae1a96f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/3a/60863702ac9600101605f36318c5a03f @@ -0,0 +1,85 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t redlight_last; +uint32_t ylwlight_last; +uint32_t grnlight_last; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + int ldelay2 = traffSPD * 2; + int ldelay3 = traffSPD * 3; + + if ((trafftick_curr - redlight_last) >= traffSPD) { + redlight_last = trafftick_curr; + HAL_GPIO_TogglePin(R_Prt, R_Pin); + } + + if ((trafftick_curr - ylwlight_last) >= ldelay2) { + ylwlight_last = trafftick_curr; + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + } + + if ((trafftick_curr - trafftick_last) >= ldelay3) { + grnlight_last = trafftick_curr; + HAL_GPIO_TogglePin(G_Prt, G_Pin); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3c/90438fe66496001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/3c/90438fe66496001013e892f2240cdbac new file mode 100644 index 0000000..73335c5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/3c/90438fe66496001013e892f2240cdbac @@ -0,0 +1,87 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +void +tickinit(void) +{ + //last_tick = HAL_GetTick(); + return; +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + HAL_GPIO_TogglePin(W_Prt, W_Pin); + HAL_Delay(pedSPD); + HAL_GPIO_TogglePin(W_Prt, W_Pin); +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + return; // placeholder +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + walkingman(pedSPD); + dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3c/a0b2fcd56096001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/3c/a0b2fcd56096001013e892f2240cdbac new file mode 100644 index 0000000..46f8823 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/3c/a0b2fcd56096001013e892f2240cdbac @@ -0,0 +1,19 @@ +/* + * breadboard.h + * + * Created on: Sep 20, 2025 + * Author: ja + */ + +#ifndef INC_BREADBOARD_H_ +#define INC_BREADBOARD_H_ + +void ticksync(void); + +void trafflight(int); +void walkingman(int); +void dimmer(void); + +void breadboard(int); + +#endif /* INC_BREADBOARD_H_ */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3d/003eff459e9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/3d/003eff459e9600101605f36318c5a03f new file mode 100644 index 0000000..d538725 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/3d/003eff459e9600101605f36318c5a03f @@ -0,0 +1,730 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + breadboard(333); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3e/9066b761f995001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/3e/9066b761f995001014a1b349f7adbbd1 deleted file mode 100644 index a425af3..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/3e/9066b761f995001014a1b349f7adbbd1 +++ /dev/null @@ -1,45 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -breadboard(int traffSPD) -{ - // Traffic Light - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_SET); - HAL_Delay(traffSPD); - - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_Delay(traffSPD); - - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); - HAL_Delay(traffSPD); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3f/30d9ed3d6096001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/3f/30d9ed3d6096001013e892f2240cdbac new file mode 100644 index 0000000..3ee16d8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/3f/30d9ed3d6096001013e892f2240cdbac @@ -0,0 +1,69 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + +void +ticksync(void) +{ + last_tick = HAL_GetTick(); +} + +void +breadboard(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + + // =========== + // Walk signal + + // ============ + // Light dimmer +} + +void +walkingman(int pedSPD) +{ + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/40/5083bbb8f895001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/40/5083bbb8f895001014a1b349f7adbbd1 deleted file mode 100644 index 6291a60..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/40/5083bbb8f895001014a1b349f7adbbd1 +++ /dev/null @@ -1,60 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -#define RedLight_Port RedLight_GPIO_Port -#define YellowLight_Port YellowLight_GPIO_Port -#define GreenLight_Port GreenLight_GPIO_Port - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(333); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - // Yellow Light - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - HAL_Delay(333); - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - - // Green Light - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - HAL_DELAY(333); - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/43/30f91ec5af9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/43/30f91ec5af9600101605f36318c5a03f new file mode 100644 index 0000000..38387e8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/43/30f91ec5af9600101605f36318c5a03f @@ -0,0 +1,730 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + trafflight(2000, 10*1000); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/46/30928108f995001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/46/30928108f995001014a1b349f7adbbd1 deleted file mode 100644 index 33729d1..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/46/30928108f995001014a1b349f7adbbd1 +++ /dev/null @@ -1,35 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -breadboard(int traffSPD) -{ - // Traffic Light - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/4b/90c0f519ad9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/4b/90c0f519ad9600101605f36318c5a03f new file mode 100644 index 0000000..80d1190 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/4b/90c0f519ad9600101605f36318c5a03f @@ -0,0 +1,71 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t redlight_last; +uint32_t ylwlight_last; +uint32_t grnlight_last; + +void +starttick(void) +{ + redlight_last = HAL_GetTick(); + ylwlight_last = HAL_GetTick(); + grnlight_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + int ldelay2 = traffSPD * 2; +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/4d/a0c2a7b46296001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/4d/a0c2a7b46296001013e892f2240cdbac new file mode 100644 index 0000000..290d299 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/4d/a0c2a7b46296001013e892f2240cdbac @@ -0,0 +1,81 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + +void +ticksync(void) +{ + last_tick = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + walkingman(pedSPD); + dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/4e/f00d65b6ad9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/4e/f00d65b6ad9600101605f36318c5a03f new file mode 100644 index 0000000..e925800 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/4e/f00d65b6ad9600101605f36318c5a03f @@ -0,0 +1,72 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5/200721b5ab9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/5/200721b5ab9600101605f36318c5a03f new file mode 100644 index 0000000..530e25f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5/200721b5ab9600101605f36318c5a03f @@ -0,0 +1,83 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t redlight_last; +uint32_t ylwlight_last; +uint32_t grnlight_last; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + int ldelay2 = traffSPD * 2; + int ldelay3 = traffSPD * 3; + + if ((trafftick_curr - redlight_last) >= traffSPD) { + trafftick_last = trafftick_curr; + HAL_GPIO_TogglePin(R_Prt, R_Pin); + } + + if ((trafftick_curr - trafftick_last) >= ldelay2) { + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + } + + if ((trafftick_curr - trafftick_last) >= ldelay3) { + HAL_GPIO_TogglePin(G_Prt, G_Pin); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5/d00022ed6496001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/5/d00022ed6496001013e892f2240cdbac new file mode 100644 index 0000000..60e1492 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5/d00022ed6496001013e892f2240cdbac @@ -0,0 +1,731 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + //tickinit(); + while (1) + { + breadboard(333, 1000); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/51/605b0d3af795001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/51/605b0d3af795001014a1b349f7adbbd1 deleted file mode 100644 index f913ee9..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/51/605b0d3af795001014a1b349f7adbbd1 +++ /dev/null @@ -1,49 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(); - HAL_Delay(); - - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/53/200e52fd6296001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/53/200e52fd6296001013e892f2240cdbac new file mode 100644 index 0000000..290d299 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/53/200e52fd6296001013e892f2240cdbac @@ -0,0 +1,81 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + +void +ticksync(void) +{ + last_tick = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + walkingman(pedSPD); + dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/54/109966649e9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/54/109966649e9600101605f36318c5a03f new file mode 100644 index 0000000..7674c5e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/54/109966649e9600101605f36318c5a03f @@ -0,0 +1,13 @@ +/* + * breadboard.h + * + * Created on: Sep 20, 2025 + * Author: ja + */ + +#ifndef INC_BREADBOARD_H_ +#define INC_BREADBOARD_H_ + +void trafflight(int); + +#endif /* INC_BREADBOARD_H_ */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/54/50b578956396001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/54/50b578956396001013e892f2240cdbac new file mode 100644 index 0000000..c8f56c8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/54/50b578956396001013e892f2240cdbac @@ -0,0 +1,86 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +void +tickinit(void) +{ + last_tick = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + HAL_GPIO_TogglePin(W_Prt, W_Pin); + HAL_Delay(pedSPD); + HAL_GPIO_TogglePin(W_Prt, W_Pin); + +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + walkingman(pedSPD); + dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/54/a0755e216496001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/54/a0755e216496001013e892f2240cdbac new file mode 100644 index 0000000..6f50d24 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/54/a0755e216496001013e892f2240cdbac @@ -0,0 +1,85 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +void +tickinit(void) +{ + last_tick = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + HAL_GPIO_TogglePin(W_Prt, W_Pin); + HAL_Delay(pedSPD); + HAL_GPIO_TogglePin(W_Prt, W_Pin); +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + return; +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + walkingman(pedSPD); + dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/47/104caa77f995001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/54/f0a56a195d96001013e892f2240cdbac similarity index 53% rename from .metadata/.plugins/org.eclipse.core.resources/.history/47/104caa77f995001014a1b349f7adbbd1 rename to .metadata/.plugins/org.eclipse.core.resources/.history/54/f0a56a195d96001013e892f2240cdbac index 98c6087..29393b2 100644 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/47/104caa77f995001014a1b349f7adbbd1 +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/54/f0a56a195d96001013e892f2240cdbac @@ -23,24 +23,35 @@ #include "main.h" #include "breadboard.h" -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + void breadboard(int traffSPD) { + // ============= // Traffic Light - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_SET); - HAL_Delay(traffSPD); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_SET); + HAL_GPIO_TogglePin(R_Prt, R_Pin); HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_SET); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + + // =========== // Walk signal + // ============ // Light dimmer } diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/55/9053c3ecf795001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/55/9053c3ecf795001014a1b349f7adbbd1 deleted file mode 100644 index 9959d4e..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/55/9053c3ecf795001014a1b349f7adbbd1 +++ /dev/null @@ -1,56 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(500); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - // Yellow Light - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - HAL_Delay(500); - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - - // Green Light - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - HAL_DELAY(500); - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/56/90558020af9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/56/90558020af9600101605f36318c5a03f new file mode 100644 index 0000000..f51383a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/56/90558020af9600101605f36318c5a03f @@ -0,0 +1,95 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; +uint32_t walktick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_RESET); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin); + break; + } + + trafflight_i = (trafflight_i + 1) % 3; + trafftick_last = trafftick_curr; + } + + if ((trafftick_curr - walktick_last) >= walkSPD) { + HAL_GPIO_TogglePin(W_Prt, W_Pin); + walktick_last = trafftick_curr; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/58/1043da216996001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/58/1043da216996001013e892f2240cdbac new file mode 100644 index 0000000..8456b93 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/58/1043da216996001013e892f2240cdbac @@ -0,0 +1,19 @@ +/* + * breadboard.h + * + * Created on: Sep 20, 2025 + * Author: ja + */ + +#ifndef INC_BREADBOARD_H_ +#define INC_BREADBOARD_H_ + +void tickinit(void); + +void trafflight(int); +void walkingman(int); +void dimmer(void); + +void breadboard(int, int); + +#endif /* INC_BREADBOARD_H_ */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/58/409cec3ef795001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/58/409cec3ef795001014a1b349f7adbbd1 deleted file mode 100644 index c8ea58b..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/58/409cec3ef795001014a1b349f7adbbd1 +++ /dev/null @@ -1,49 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(); - - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5c/5012e6e46296001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/5c/5012e6e46296001013e892f2240cdbac new file mode 100644 index 0000000..47feeed --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5c/5012e6e46296001013e892f2240cdbac @@ -0,0 +1,731 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + tickinit(); + while (1) + { + breadboard(333); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5e/30359e6d6a96001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/5e/30359e6d6a96001013e892f2240cdbac new file mode 100644 index 0000000..6bd047f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5e/30359e6d6a96001013e892f2240cdbac @@ -0,0 +1,732 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + //tickinit(); + while (1) + { + //breadboard(333, 1000); + trafflight(333); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5e/505739c26096001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/5e/505739c26096001013e892f2240cdbac new file mode 100644 index 0000000..5a899ef --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5e/505739c26096001013e892f2240cdbac @@ -0,0 +1,79 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + +void +ticksync(void) +{ + last_tick = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + + // =========== + // Walk signal + + // ============ + // Light dimmer +} + +void +walkingman(int pedSPD) +{ + // + +} + +void +dimmer(void) +{ + // +} + +void +breadboard(int traffSpd, int pedSPD) diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5f/3099ecc0f695001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/5f/3099ecc0f695001014a1b349f7adbbd1 deleted file mode 100644 index 1aa1abe..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/5f/3099ecc0f695001014a1b349f7adbbd1 +++ /dev/null @@ -1,51 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - - - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(); - HAL_Delay(); - - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5f/708bc2d0ab9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/5f/708bc2d0ab9600101605f36318c5a03f new file mode 100644 index 0000000..fe5cee9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5f/708bc2d0ab9600101605f36318c5a03f @@ -0,0 +1,84 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t redlight_last; +uint32_t ylwlight_last; +uint32_t grnlight_last; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + int ldelay2 = traffSPD * 2; + int ldelay3 = traffSPD * 3; + + if ((trafftick_curr - redlight_last) >= traffSPD) { + redlight_last = trafftick_curr; + HAL_GPIO_TogglePin(R_Prt, R_Pin); + } + + if ((trafftick_curr - grnlight_last) >= ldelay2) { + grnlight_last = trafftick_curr; + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + } + + if ((trafftick_curr - trafftick_last) >= ldelay3) { + HAL_GPIO_TogglePin(G_Prt, G_Pin); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/63/00c742e76296001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/63/00c742e76296001013e892f2240cdbac new file mode 100644 index 0000000..9381c03 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/63/00c742e76296001013e892f2240cdbac @@ -0,0 +1,731 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + //tickinit(); + while (1) + { + breadboard(333); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/63/80047dfead9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/63/80047dfead9600101605f36318c5a03f new file mode 100644 index 0000000..e534eb9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/63/80047dfead9600101605f36318c5a03f @@ -0,0 +1,74 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin(); + switch (trafflight_i) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/65/8093c37b6a96001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/65/8093c37b6a96001013e892f2240cdbac new file mode 100644 index 0000000..ee94d83 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/65/8093c37b6a96001013e892f2240cdbac @@ -0,0 +1,732 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + //tickinit(); + while (1) + { + breadboard(333, 1000); + //trafflight(333); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/66/c05318c3af9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/66/c05318c3af9600101605f36318c5a03f new file mode 100644 index 0000000..25e1466 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/66/c05318c3af9600101605f36318c5a03f @@ -0,0 +1,730 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + trafflight(2000, 10000); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/68/d0cc52d6ab9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/68/d0cc52d6ab9600101605f36318c5a03f new file mode 100644 index 0000000..e64d732 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/68/d0cc52d6ab9600101605f36318c5a03f @@ -0,0 +1,85 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t redlight_last; +uint32_t ylwlight_last; +uint32_t grnlight_last; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + int ldelay2 = traffSPD * 2; + int ldelay3 = traffSPD * 3; + + if ((trafftick_curr - redlight_last) >= traffSPD) { + redlight_last = trafftick_curr; + HAL_GPIO_TogglePin(R_Prt, R_Pin); + } + + if ((trafftick_curr - ylwlight_last) >= ldelay2) { + ylwlight_last = trafftick_curr; + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + } + + if ((trafftick_curr - trafftick_last) >= ldelay3) { + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/69/108c02a26396001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/69/108c02a26396001013e892f2240cdbac new file mode 100644 index 0000000..c8f56c8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/69/108c02a26396001013e892f2240cdbac @@ -0,0 +1,86 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +void +tickinit(void) +{ + last_tick = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + HAL_GPIO_TogglePin(W_Prt, W_Pin); + HAL_Delay(pedSPD); + HAL_GPIO_TogglePin(W_Prt, W_Pin); + +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + walkingman(pedSPD); + dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/69/30006aa0af9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/69/30006aa0af9600101605f36318c5a03f new file mode 100644 index 0000000..c540f16 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/69/30006aa0af9600101605f36318c5a03f @@ -0,0 +1,730 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + trafflight(333); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/69/50b960c3ad9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/69/50b960c3ad9600101605f36318c5a03f new file mode 100644 index 0000000..4a2b5f1 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/69/50b960c3ad9600101605f36318c5a03f @@ -0,0 +1,72 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + switch (trafflight_i) + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/71/009bf612af9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/71/009bf612af9600101605f36318c5a03f new file mode 100644 index 0000000..46148ce --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/71/009bf612af9600101605f36318c5a03f @@ -0,0 +1,101 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; +uint32_t walktick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin( + R_Prt, R_Pin && + Y_Prt, Y_Pin && + G_Prt, G_Pin, + GPIO_PIN_RESET + ); + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_RESET); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin); + break; + } + + trafflight_i = (trafflight_i + 1) % 3; + trafftick_last = trafftick_curr; + } + + if ((trafftick_curr - walktick_last) >= walkSPD) { + HAL_GPIO_TogglePin(W_Prt, W_Pin); + walktick_last = trafftick_curr; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/71/30d1116eaf9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/71/30d1116eaf9600101605f36318c5a03f new file mode 100644 index 0000000..cbd6deb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/71/30d1116eaf9600101605f36318c5a03f @@ -0,0 +1,15 @@ +/* + * breadboard.h + * + * Created on: Sep 20, 2025 + * Author: ja + */ + +#ifndef INC_BREADBOARD_H_ +#define INC_BREADBOARD_H_ + +void starttick(void); + +void trafflight(int); + +#endif /* INC_BREADBOARD_H_ */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/71/e0e62d3cf695001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/71/e0e62d3cf695001014a1b349f7adbbd1 deleted file mode 100644 index 5892306..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/71/e0e62d3cf695001014a1b349f7adbbd1 +++ /dev/null @@ -1,39 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/72/30b6a0e26296001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/72/30b6a0e26296001013e892f2240cdbac new file mode 100644 index 0000000..9381c03 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/72/30b6a0e26296001013e892f2240cdbac @@ -0,0 +1,731 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + //tickinit(); + while (1) + { + breadboard(333); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/78/e09529e56096001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/78/e09529e56096001013e892f2240cdbac new file mode 100644 index 0000000..d5ee26d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/78/e09529e56096001013e892f2240cdbac @@ -0,0 +1,84 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + +void +ticksync(void) +{ + last_tick = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + + // =========== + // Walk signal + + // ============ + // Light dimmer +} + +void +walkingman(int pedSPD) +{ + // + +} + +void +dimmer(void) +{ + // +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + walkingman(pedSPD); + dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/7a/e06b0351ae9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/7a/e06b0351ae9600101605f36318c5a03f new file mode 100644 index 0000000..1bb08ea --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/7a/e06b0351ae9600101605f36318c5a03f @@ -0,0 +1,89 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin( + R_Prt, R_Pin | + Y_Prt, Y_Pin | + G_Prt, G_Pin, + GPIO_PIN_RESET + ); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin); + break; + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/7c/40a221316096001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/7c/40a221316096001013e892f2240cdbac new file mode 100644 index 0000000..f83889f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/7c/40a221316096001013e892f2240cdbac @@ -0,0 +1,63 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + +void +ticksync(void) +{ + last_tick = HAL_GetTick(); +} + +void +breadboard(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + + // =========== + // Walk signal + + // ============ + // Light dimmer +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/8/206f3334ad9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/8/206f3334ad9600101605f36318c5a03f new file mode 100644 index 0000000..387c932 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/8/206f3334ad9600101605f36318c5a03f @@ -0,0 +1,74 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t redlight_last; +uint32_t ylwlight_last; +uint32_t grnlight_last; + +void +starttick(void) +{ + redlight_last = HAL_GetTick(); + ylwlight_last = HAL_GetTick(); + grnlight_last = HAL_GetTick(); + + trafflight_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if (trafftick_curr) +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/81/80e16946b09600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/81/80e16946b09600101605f36318c5a03f new file mode 100644 index 0000000..a0af75d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/81/80e16946b09600101605f36318c5a03f @@ -0,0 +1,730 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + trafflight(2*1000, 10*1000); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/83/006beaa85f96001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/83/006beaa85f96001013e892f2240cdbac new file mode 100644 index 0000000..f83889f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/83/006beaa85f96001013e892f2240cdbac @@ -0,0 +1,63 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + +void +ticksync(void) +{ + last_tick = HAL_GetTick(); +} + +void +breadboard(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + + // =========== + // Walk signal + + // ============ + // Light dimmer +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/83/c00f9d0faf9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/83/c00f9d0faf9600101605f36318c5a03f new file mode 100644 index 0000000..10528c6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/83/c00f9d0faf9600101605f36318c5a03f @@ -0,0 +1,100 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; +uint32_t walktick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin( + R_Prt, R_Pin && + Y_Prt, Y_Pin && + G_Prt, G_Pin, + GPIO_PIN_RESET + ); + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_RESET); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin); + break; + } + + trafflight_i = (trafflight_i + 1) % 3; + trafftick_last = trafftick_curr; + } + + if ((trafftick_curr - walktick_last) >= walkSPD) { + HAL_GPIO_TogglePin(W_Prt, W_Pin); + walktick_last = trafftick_curr; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/86/208938c16096001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/86/208938c16096001013e892f2240cdbac new file mode 100644 index 0000000..61eaa56 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/86/208938c16096001013e892f2240cdbac @@ -0,0 +1,76 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + +void +ticksync(void) +{ + last_tick = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + + // =========== + // Walk signal + + // ============ + // Light dimmer +} + +void +walkingman(int pedSPD) +{ + // + +} + +void +dimmer(void) +{ + // +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/86/a002320f9396001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/86/a002320f9396001013e892f2240cdbac new file mode 100644 index 0000000..6b68947 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/86/a002320f9396001013e892f2240cdbac @@ -0,0 +1,87 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +void +tickinit(void) +{ + //last_tick = HAL_GetTick(); + return; //placeholder +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + HAL_GPIO_TogglePin(W_Prt, W_Pin); + HAL_Delay(pedSPD); + HAL_GPIO_TogglePin(W_Prt, W_Pin); +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + return; // placeholder +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + walkingman(pedSPD); + dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/87/70300f56ad9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/87/70300f56ad9600101605f36318c5a03f new file mode 100644 index 0000000..499c077 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/87/70300f56ad9600101605f36318c5a03f @@ -0,0 +1,68 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last)) +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/89/c0192844ae9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/89/c0192844ae9600101605f36318c5a03f new file mode 100644 index 0000000..8fc238f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/89/c0192844ae9600101605f36318c5a03f @@ -0,0 +1,88 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin( + R_Prt, R_Pin | + Y_Prt, Y_Pin | + G_Prt, G_Pin, + GPIO_PIN_RESET + ); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/8a/107d9637f995001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/8a/107d9637f995001014a1b349f7adbbd1 deleted file mode 100644 index c85762b..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/8a/107d9637f995001014a1b349f7adbbd1 +++ /dev/null @@ -1,37 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -breadboard(int traffSPD) -{ - // Traffic Light - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_SET); - HAL_Delay(traffSPD); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/92/402d992dac9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/92/402d992dac9600101605f36318c5a03f new file mode 100644 index 0000000..63298d3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/92/402d992dac9600101605f36318c5a03f @@ -0,0 +1,89 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t redlight_last; +uint32_t ylwlight_last; +uint32_t grnlight_last; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); + + redlight_last = HAL_GetTick(); + ylwlight_last = HAL_GetTick(); + grnlight_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + int ldelay2 = traffSPD * 2; + int ldelay3 = traffSPD * 3; + + if ((trafftick_curr - redlight_last) >= traffSPD) { + redlight_last = trafftick_curr; + HAL_GPIO_TogglePin(R_Prt, R_Pin); + } + + if ((trafftick_curr - ylwlight_last) >= ldelay2) { + ylwlight_last = trafftick_curr; + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + } + + if ((trafftick_curr - grnlight_last) >= ldelay3) { + grnlight_last = trafftick_curr; + HAL_GPIO_TogglePin(G_Prt, G_Pin); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/93/e09b2fcef895001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/93/e09b2fcef895001014a1b349f7adbbd1 deleted file mode 100644 index baf9c1d..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/93/e09b2fcef895001014a1b349f7adbbd1 +++ /dev/null @@ -1,48 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(333); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - // Yellow Light - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - HAL_Delay(333); - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - - // Green Light - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - HAL_DELAY(333); - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/95/10c05cdd6296001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/95/10c05cdd6296001013e892f2240cdbac new file mode 100644 index 0000000..47feeed --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/95/10c05cdd6296001013e892f2240cdbac @@ -0,0 +1,731 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + tickinit(); + while (1) + { + breadboard(333); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/95/b0c2a6a7f795001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/95/b0c2a6a7f795001014a1b349f7adbbd1 deleted file mode 100644 index 9a7e13c..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/95/b0c2a6a7f795001014a1b349f7adbbd1 +++ /dev/null @@ -1,56 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(500); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - HAL_Delay(500); - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - HAL_DELAY(500); - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/99/b03e3fbcaf9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/99/b03e3fbcaf9600101605f36318c5a03f new file mode 100644 index 0000000..92e6d85 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/99/b03e3fbcaf9600101605f36318c5a03f @@ -0,0 +1,730 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + trafflight(2000, 500); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9b/b0755bc1f895001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/9b/b0755bc1f895001014a1b349f7adbbd1 deleted file mode 100644 index 0f37ab6..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/9b/b0755bc1f895001014a1b349f7adbbd1 +++ /dev/null @@ -1,53 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -#define RedLight_Port RedLight_GPIO_Port -#define YellowLight_Port YellowLight_GPIO_Port -#define GreenLight_Port GreenLight_GPIO_Port - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(333); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - // Yellow Light - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - HAL_Delay(333); - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - - // Green Light - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - HAL_DELAY(333); - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9d/6095fd066996001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/9d/6095fd066996001013e892f2240cdbac new file mode 100644 index 0000000..7973466 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/9d/6095fd066996001013e892f2240cdbac @@ -0,0 +1,87 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +void +tickinit(void) +{ + //last_tick = HAL_GetTick(); + return; //placeholder +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + HAL_GPIO_TogglePin(W_Prt, W_Pin); + HAL_Delay(pedSPD); + HAL_GPIO_TogglePin(W_Prt, W_Pin); +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + return; // placeholder +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + //walkingman(pedSPD); + //dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9e/b0d3ae29ac9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/9e/b0d3ae29ac9600101605f36318c5a03f new file mode 100644 index 0000000..e4b85fa --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/9e/b0d3ae29ac9600101605f36318c5a03f @@ -0,0 +1,85 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t redlight_last; +uint32_t ylwlight_last; +uint32_t grnlight_last; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + int ldelay2 = traffSPD * 2; + int ldelay3 = traffSPD * 3; + + if ((trafftick_curr - redlight_last) >= traffSPD) { + redlight_last = trafftick_curr; + HAL_GPIO_TogglePin(R_Prt, R_Pin); + } + + if ((trafftick_curr - ylwlight_last) >= ldelay2) { + ylwlight_last = trafftick_curr; + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + } + + if ((trafftick_curr - grnlight_last) >= ldelay3) { + grnlight_last = trafftick_curr; + HAL_GPIO_TogglePin(G_Prt, G_Pin); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9f/00375fd4a79600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/9f/00375fd4a79600101605f36318c5a03f new file mode 100644 index 0000000..c540f16 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/9f/00375fd4a79600101605f36318c5a03f @@ -0,0 +1,730 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + trafflight(333); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9f/606e3aeb5f96001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/9f/606e3aeb5f96001013e892f2240cdbac new file mode 100644 index 0000000..c569d6d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/9f/606e3aeb5f96001013e892f2240cdbac @@ -0,0 +1,730 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + breadboard(333); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9f/f0feb5996596001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/9f/f0feb5996596001013e892f2240cdbac new file mode 100644 index 0000000..6b68947 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/9f/f0feb5996596001013e892f2240cdbac @@ -0,0 +1,87 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +void +tickinit(void) +{ + //last_tick = HAL_GetTick(); + return; //placeholder +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + HAL_GPIO_TogglePin(W_Prt, W_Pin); + HAL_Delay(pedSPD); + HAL_GPIO_TogglePin(W_Prt, W_Pin); +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + return; // placeholder +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + walkingman(pedSPD); + dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a3/802bf57ff795001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/a3/802bf57ff795001014a1b349f7adbbd1 deleted file mode 100644 index e35d7bb..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/a3/802bf57ff795001014a1b349f7adbbd1 +++ /dev/null @@ -1,50 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(500); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a7/d0d817729e9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/a7/d0d817729e9600101605f36318c5a03f new file mode 100644 index 0000000..c540f16 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/a7/d0d817729e9600101605f36318c5a03f @@ -0,0 +1,730 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + trafflight(333); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a9/400946666396001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/a9/400946666396001013e892f2240cdbac new file mode 100644 index 0000000..095a38a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/a9/400946666396001013e892f2240cdbac @@ -0,0 +1,81 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + +void +tickinit(void) +{ + last_tick = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + walkingman(pedSPD); + dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ab/6068d747f995001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/ab/6068d747f995001014a1b349f7adbbd1 deleted file mode 100644 index db14d76..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/ab/6068d747f995001014a1b349f7adbbd1 +++ /dev/null @@ -1,44 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -breadboard(int traffSPD) -{ - // Traffic Light - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_SET); - HAL_Delay(traffSPD); - - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_Delay(traffSPD); - - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_Delay(traffSPD); - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ab/a0b4fd6eab9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/ab/a0b4fd6eab9600101605f36318c5a03f new file mode 100644 index 0000000..b3b7fc0 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ab/a0b4fd6eab9600101605f36318c5a03f @@ -0,0 +1,83 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t redlight_last; +uint32_t ylwlight_last; +uint32_t grnlight_last; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + int ldelay2 = traffSPD * 2; + int ldelay3 = traffSPD * 3; + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + trafftick_last = trafftick_curr; + HAL_GPIO_TogglePin(R_Prt, R_Pin); + } + + if ((trafftick_curr - trafftick_last) >= ldelay2) { + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + } + + if ((trafftick_curr - trafftick_last) >= ldelay3) { + HAL_GPIO_TogglePin(G_Prt, G_Pin); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ac/20b37dd26296001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/ac/20b37dd26296001013e892f2240cdbac new file mode 100644 index 0000000..a447c9e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ac/20b37dd26296001013e892f2240cdbac @@ -0,0 +1,731 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + ticksync(); + while (1) + { + breadboard(333); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ae/30f326956096001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/ae/30f326956096001013e892f2240cdbac new file mode 100644 index 0000000..9dc366f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ae/30f326956096001013e892f2240cdbac @@ -0,0 +1,14 @@ +/* + * breadboard.h + * + * Created on: Sep 20, 2025 + * Author: ja + */ + +#ifndef INC_BREADBOARD_H_ +#define INC_BREADBOARD_H_ + +void ticksync(void); +void breadboard(int); + +#endif /* INC_BREADBOARD_H_ */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/af/40262d69f895001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/af/40262d69f895001014a1b349f7adbbd1 deleted file mode 100644 index ce2774c..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/af/40262d69f895001014a1b349f7adbbd1 +++ /dev/null @@ -1,56 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(333); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - // Yellow Light - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - HAL_Delay(333); - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - - // Green Light - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - HAL_DELAY(333); - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b6/001207d2ae9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/b6/001207d2ae9600101605f36318c5a03f new file mode 100644 index 0000000..24d99d3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b6/001207d2ae9600101605f36318c5a03f @@ -0,0 +1,97 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; +uint32_t walktick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin( + R_Prt, R_Pin | + Y_Prt, Y_Pin | + G_Prt, G_Pin, + GPIO_PIN_RESET + ); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin); + break; + } + + trafflight_i = (trafflight_i + 1) % 3; + trafftick_last = trafftick_curr; + } + + if ((trafftick_curr - walktick_last) >= walkSPD) { + HAL_GPIO_TogglePin(W_Prt, W_Pin); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b6/d0024abeaf9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/b6/d0024abeaf9600101605f36318c5a03f new file mode 100644 index 0000000..cb0434a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b6/d0024abeaf9600101605f36318c5a03f @@ -0,0 +1,730 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + trafflight(2000, 1000); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b6/e05dffdbad9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/b6/e05dffdbad9600101605f36318c5a03f new file mode 100644 index 0000000..0453ae2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b6/e05dffdbad9600101605f36318c5a03f @@ -0,0 +1,73 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + switch (trafflight_i) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b7/90a12443b09600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/b7/90a12443b09600101605f36318c5a03f new file mode 100644 index 0000000..a0af75d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b7/90a12443b09600101605f36318c5a03f @@ -0,0 +1,730 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + trafflight(2*1000, 10*1000); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b8/d08c47e86296001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/b8/d08c47e86296001013e892f2240cdbac new file mode 100644 index 0000000..da8e410 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b8/d08c47e86296001013e892f2240cdbac @@ -0,0 +1,731 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + // tickinit(); + while (1) + { + breadboard(333); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b8/e0162da3f695001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/b8/e0162da3f695001014a1b349f7adbbd1 deleted file mode 100644 index 7abb660..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/b8/e0162da3f695001014a1b349f7adbbd1 +++ /dev/null @@ -1,47 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePiN(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(); - HAL_Delay(); - - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ba/d07d3ff4a49600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/ba/d07d3ff4a49600101605f36318c5a03f new file mode 100644 index 0000000..733c8b2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ba/d07d3ff4a49600101605f36318c5a03f @@ -0,0 +1,14 @@ +/* + * breadboard.h + * + * Created on: Sep 20, 2025 + * Author: ja + */ + +#ifndef INC_BREADBOARD_H_ +#define INC_BREADBOARD_H_ + +void trafflight(int); +void walksig(int); + +#endif /* INC_BREADBOARD_H_ */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ba/e02cebb46596001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/ba/e02cebb46596001013e892f2240cdbac new file mode 100644 index 0000000..8b42c49 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ba/e02cebb46596001013e892f2240cdbac @@ -0,0 +1,87 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +void +tickinit(void) +{ + //last_tick = HAL_GetTick(); + return; //placeholder +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + HAL_GPIO_TogglePin(W_Prt, W_Pin); + HAL_Delay(pedSPD); + HAL_GPIO_TogglePin(W_Prt, W_Pin); +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + return; // placeholder +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + walkingman(pedSPD); + //dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/bc/e02ce408af9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/bc/e02ce408af9600101605f36318c5a03f new file mode 100644 index 0000000..4263ff5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/bc/e02ce408af9600101605f36318c5a03f @@ -0,0 +1,99 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; +uint32_t walktick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin( + R_Prt, R_Pin && + Y_Prt, Y_Pin && + G_Prt, G_Pin, + GPIO_PIN_RESET + ); + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_RESET); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin); + break; + } + + trafflight_i = (trafflight_i + 1) % 3; + trafftick_last = trafftick_curr; + } + + if ((trafftick_curr - walktick_last) >= walkSPD) { + HAL_GPIO_TogglePin(W_Prt, W_Pin); + walktick_last = trafftick_curr; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/be/80bf12f5f895001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/be/80bf12f5f895001014a1b349f7adbbd1 deleted file mode 100644 index bf05c5d..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/be/80bf12f5f895001014a1b349f7adbbd1 +++ /dev/null @@ -1,34 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -breadboard(int traffSPD) -{ - // Traffic Light - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/be/80c0fdd76596001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/be/80c0fdd76596001013e892f2240cdbac new file mode 100644 index 0000000..60e1492 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/be/80c0fdd76596001013e892f2240cdbac @@ -0,0 +1,731 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + //tickinit(); + while (1) + { + breadboard(333, 1000); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/be/a0280d0fab9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/be/a0280d0fab9600101605f36318c5a03f new file mode 100644 index 0000000..2e05cca --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/be/a0280d0fab9600101605f36318c5a03f @@ -0,0 +1,81 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + int ldelay2 = traffSPD * 2; + int ldelay3 = traffSPD * 3; + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + trafftick_last = trafftick_curr; + HAL_GPIO_TogglePin(R_Prt, R_Pin); + } + + if ((trafftick_curr - trafftick_last) >= ldelay2) { + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + } + + if ((trafftick_curr - trafftick_last) >= ldelay3) { + HAL_GPIO_TogglePin(G_Prt, G_Pin); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/bf/40d5cb70f895001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/bf/40d5cb70f895001014a1b349f7adbbd1 deleted file mode 100644 index aa96b21..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/bf/40d5cb70f895001014a1b349f7adbbd1 +++ /dev/null @@ -1,56 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(333); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - // Yellow Light - HAL_GPIO_TogglePin(YellowLight_GPIO_Port, YellowLight_Pin); - HAL_Delay(333); - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - - // Green Light - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - HAL_DELAY(333); - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c1/206820039e9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/c1/206820039e9600101605f36318c5a03f new file mode 100644 index 0000000..0e78adf --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c1/206820039e9600101605f36318c5a03f @@ -0,0 +1,730 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + breadboard(333); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c1/20e546c9f895001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/c1/20e546c9f895001014a1b349f7adbbd1 deleted file mode 100644 index f92b4c5..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/c1/20e546c9f895001014a1b349f7adbbd1 +++ /dev/null @@ -1,52 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -#define RedLight_Port RedLight_GPIO_Port -#define YellowLight_Port YellowLight_GPIO_Port -#define GreenLight_Port GreenLight_GPIO_Port - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(333); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - // Yellow Light - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - HAL_Delay(333); - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - - // Green Light - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - HAL_DELAY(333); - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c3/604082e56496001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/c3/604082e56496001013e892f2240cdbac new file mode 100644 index 0000000..9815e41 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c3/604082e56496001013e892f2240cdbac @@ -0,0 +1,86 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +void +tickinit(void) +{ + //last_tick = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + HAL_GPIO_TogglePin(W_Prt, W_Pin); + HAL_Delay(pedSPD); + HAL_GPIO_TogglePin(W_Prt, W_Pin); +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + return; // placeholder +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + walkingman(pedSPD); + dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c3/80f5d29bf795001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/c3/80f5d29bf795001014a1b349f7adbbd1 deleted file mode 100644 index 283db42..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/c3/80f5d29bf795001014a1b349f7adbbd1 +++ /dev/null @@ -1,54 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(500); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - HAL_Delay(500); - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c5/e069d2d16096001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/c5/e069d2d16096001013e892f2240cdbac new file mode 100644 index 0000000..9b1b96a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c5/e069d2d16096001013e892f2240cdbac @@ -0,0 +1,82 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + +void +ticksync(void) +{ + last_tick = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + + // =========== + // Walk signal + + // ============ + // Light dimmer +} + +void +walkingman(int pedSPD) +{ + // + +} + +void +dimmer(void) +{ + // +} + +void +breadboard(int traffSpd, int pedSPD) +{ + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c6/907e0364ab9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/c6/907e0364ab9600101605f36318c5a03f new file mode 100644 index 0000000..b3b7fc0 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c6/907e0364ab9600101605f36318c5a03f @@ -0,0 +1,83 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t redlight_last; +uint32_t ylwlight_last; +uint32_t grnlight_last; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + int ldelay2 = traffSPD * 2; + int ldelay3 = traffSPD * 3; + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + trafftick_last = trafftick_curr; + HAL_GPIO_TogglePin(R_Prt, R_Pin); + } + + if ((trafftick_curr - trafftick_last) >= ldelay2) { + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + } + + if ((trafftick_curr - trafftick_last) >= ldelay3) { + HAL_GPIO_TogglePin(G_Prt, G_Pin); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c7/00af95d6f795001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/c7/00af95d6f795001014a1b349f7adbbd1 deleted file mode 100644 index 9aca328..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/c7/00af95d6f795001014a1b349f7adbbd1 +++ /dev/null @@ -1,55 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(500); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - // Yellow Light - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - HAL_Delay(500); - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - HAL_DELAY(500); - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c9/60d0fdccad9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/c9/60d0fdccad9600101605f36318c5a03f new file mode 100644 index 0000000..b1f4510 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c9/60d0fdccad9600101605f36318c5a03f @@ -0,0 +1,74 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + switch (trafflight_i) { + + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c9/703e7b01b09600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/c9/703e7b01b09600101605f36318c5a03f new file mode 100644 index 0000000..04a28d5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c9/703e7b01b09600101605f36318c5a03f @@ -0,0 +1,81 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; +uint32_t walktick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD, int walkSPD) +{ + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_RESET); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_SET); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_SET); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_SET); + break; + } + + trafflight_i = (trafflight_i + 1) % 3; + trafftick_last = trafftick_curr; + } + + if ((trafftick_curr - walktick_last) >= walkSPD) { + HAL_GPIO_TogglePin(W_Prt, W_Pin); + walktick_last = trafftick_curr; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c9/80777c98f795001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/c9/80777c98f795001014a1b349f7adbbd1 deleted file mode 100644 index cce27e1..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/c9/80777c98f795001014a1b349f7adbbd1 +++ /dev/null @@ -1,52 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(500); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - HAL_Delay(500); - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c9/f0746affb19600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/c9/f0746affb19600101605f36318c5a03f new file mode 100644 index 0000000..538d2d1 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c9/f0746affb19600101605f36318c5a03f @@ -0,0 +1,81 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; +uint32_t walktick_last; + +uint8_t trafflight_index = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD, int walkSPD) +{ + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_RESET); + + switch (trafflight_index) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_SET); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_SET); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_SET); + break; + } + + trafflight_index = (trafflight_index + 1) % 3; + trafftick_last = trafftick_curr; + } + + if ((trafftick_curr - walktick_last) >= walkSPD) { + HAL_GPIO_TogglePin(W_Prt, W_Pin); + walktick_last = trafftick_curr; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ca/80ba58ed5f96001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/ca/80ba58ed5f96001013e892f2240cdbac new file mode 100644 index 0000000..2641ee9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ca/80ba58ed5f96001013e892f2240cdbac @@ -0,0 +1,731 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + ticksync(void); + while (1) + { + breadboard(333); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/cf/80a38f69f695001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/cf/80a38f69f695001014a1b349f7adbbd1 deleted file mode 100644 index 3a12540..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/cf/80a38f69f695001014a1b349f7adbbd1 +++ /dev/null @@ -1,47 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(); - HAL_Delay(); - - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/cf/d011d58df695001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/cf/d011d58df695001014a1b349f7adbbd1 deleted file mode 100644 index 2825851..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/cf/d011d58df695001014a1b349f7adbbd1 +++ /dev/null @@ -1,47 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePiN(RedLight_GPIO_Port, RedLight_Pin); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(); - HAL_Delay(); - - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d0/2083c150f995001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/d0/2083c150f995001014a1b349f7adbbd1 deleted file mode 100644 index 9320759..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/d0/2083c150f995001014a1b349f7adbbd1 +++ /dev/null @@ -1,44 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -breadboard(int traffSPD) -{ - // Traffic Light - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_SET); - HAL_Delay(traffSPD); - - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_Delay(traffSPD); - - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_Delay(traffSPD); - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d0/2091273cad9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/d0/2091273cad9600101605f36318c5a03f new file mode 100644 index 0000000..4c3f5d6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d0/2091273cad9600101605f36318c5a03f @@ -0,0 +1,70 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t redlight_last; +uint32_t ylwlight_last; +uint32_t grnlight_last; + +void +starttick(void) +{ + trafflight_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if (trafftick_curr) +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d0/50dcc24dad9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/d0/50dcc24dad9600101605f36318c5a03f new file mode 100644 index 0000000..84fac95 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d0/50dcc24dad9600101605f36318c5a03f @@ -0,0 +1,68 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if (trafftick_curr) +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d0/609aff18a59600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/d0/609aff18a59600101605f36318c5a03f new file mode 100644 index 0000000..45ca502 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d0/609aff18a59600101605f36318c5a03f @@ -0,0 +1,14 @@ +/* + * breadboard.h + * + * Created on: Sep 20, 2025 + * Author: ja + */ + +#ifndef INC_BREADBOARD_H_ +#define INC_BREADBOARD_H_ + +void trafflight(int); +void startticking(void); + +#endif /* INC_BREADBOARD_H_ */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d2/40d83561ae9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/d2/40d83561ae9600101605f36318c5a03f new file mode 100644 index 0000000..898bba0 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d2/40d83561ae9600101605f36318c5a03f @@ -0,0 +1,91 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin( + R_Prt, R_Pin | + Y_Prt, Y_Pin | + G_Prt, G_Pin, + GPIO_PIN_RESET + ); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin); + break; + } + + trafflight_i = (trafflight_i + 1) % 3; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d3/b08c4786ad9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/d3/b08c4786ad9600101605f36318c5a03f new file mode 100644 index 0000000..99ddace --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d3/b08c4786ad9600101605f36318c5a03f @@ -0,0 +1,70 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d6/e0904406b19600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/d6/e0904406b19600101605f36318c5a03f new file mode 100644 index 0000000..b268557 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d6/e0904406b19600101605f36318c5a03f @@ -0,0 +1,81 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; +uint32_t walktick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD, int walkSPD) +{ + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_RESET); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_SET); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_SET); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_SET); + break; + } + + trafflight_i = (trafflight_i + 1) % 3; + trafftick_last = trafftick_curr; + } + + if ((trafftick_curr - walktick_last) >= walkSPD) { + HAL_GPIO_TogglePin(W_Prt, W_Pin); + walktick_last = trafftick_curr; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d7/00e1369ff795001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/d7/00e1369ff795001014a1b349f7adbbd1 deleted file mode 100644 index 94eed6b..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/d7/00e1369ff795001014a1b349f7adbbd1 +++ /dev/null @@ -1,55 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(500); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - HAL_Delay(500); - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - HAL_DELAY(500); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d8/e09e5470f795001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/d8/e09e5470f795001014a1b349f7adbbd1 deleted file mode 100644 index e35d7bb..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/d8/e09e5470f795001014a1b349f7adbbd1 +++ /dev/null @@ -1,50 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(500); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d9/20b8d3d8f795001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/d9/20b8d3d8f795001014a1b349f7adbbd1 deleted file mode 100644 index 9959d4e..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/d9/20b8d3d8f795001014a1b349f7adbbd1 +++ /dev/null @@ -1,56 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(500); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - // Yellow Light - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - HAL_Delay(500); - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - - // Green Light - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - HAL_DELAY(500); - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d9/602cf59e6096001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/d9/602cf59e6096001013e892f2240cdbac new file mode 100644 index 0000000..b202dc8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d9/602cf59e6096001013e892f2240cdbac @@ -0,0 +1,17 @@ +/* + * breadboard.h + * + * Created on: Sep 20, 2025 + * Author: ja + */ + +#ifndef INC_BREADBOARD_H_ +#define INC_BREADBOARD_H_ + +void ticksync(void); +void trafflight(int); +void walkingman(int); +void dimmer(void); +void breadboard(int); + +#endif /* INC_BREADBOARD_H_ */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d9/7042f353f695001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/d9/7042f353f695001014a1b349f7adbbd1 deleted file mode 100644 index bc7c98f..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/d9/7042f353f695001014a1b349f7adbbd1 +++ /dev/null @@ -1,46 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -void -reset_traffic(void) -{ - -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(); - HAL_Delay(); - - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d9/90a1f0076196001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/d9/90a1f0076196001013e892f2240cdbac new file mode 100644 index 0000000..0090c59 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d9/90a1f0076196001013e892f2240cdbac @@ -0,0 +1,80 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + +void +ticksync(void) +{ + last_tick = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + +} + +void +dimmer(void) +{ + // ============ + // Light dimmer +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + walkingman(pedSPD); + dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/db/3025ff806a96001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/db/3025ff806a96001013e892f2240cdbac new file mode 100644 index 0000000..46f8823 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/db/3025ff806a96001013e892f2240cdbac @@ -0,0 +1,19 @@ +/* + * breadboard.h + * + * Created on: Sep 20, 2025 + * Author: ja + */ + +#ifndef INC_BREADBOARD_H_ +#define INC_BREADBOARD_H_ + +void ticksync(void); + +void trafflight(int); +void walkingman(int); +void dimmer(void); + +void breadboard(int); + +#endif /* INC_BREADBOARD_H_ */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/db/404345429e9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/db/404345429e9600101605f36318c5a03f new file mode 100644 index 0000000..01b9536 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/db/404345429e9600101605f36318c5a03f @@ -0,0 +1,13 @@ +/* + * breadboard.h + * + * Created on: Sep 20, 2025 + * Author: ja + */ + +#ifndef INC_BREADBOARD_H_ +#define INC_BREADBOARD_H_ + +void breadboard(int); + +#endif /* INC_BREADBOARD_H_ */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/db/70a286846396001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/db/70a286846396001013e892f2240cdbac new file mode 100644 index 0000000..2795872 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/db/70a286846396001013e892f2240cdbac @@ -0,0 +1,83 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +void +tickinit(void) +{ + last_tick = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + walkingman(pedSPD); + dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/dc/e0fd74a56096001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/dc/e0fd74a56096001013e892f2240cdbac new file mode 100644 index 0000000..f4b3597 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/dc/e0fd74a56096001013e892f2240cdbac @@ -0,0 +1,75 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + +void +ticksync(void) +{ + last_tick = HAL_GetTick(); +} + +void +breadboard(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + + // =========== + // Walk signal + + // ============ + // Light dimmer +} + +void +walkingman(int pedSPD) +{ + // +} + +void +dimmer(void) +{ + // +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/de/2074be925f96001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/de/2074be925f96001013e892f2240cdbac new file mode 100644 index 0000000..01b9536 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/de/2074be925f96001013e892f2240cdbac @@ -0,0 +1,13 @@ +/* + * breadboard.h + * + * Created on: Sep 20, 2025 + * Author: ja + */ + +#ifndef INC_BREADBOARD_H_ +#define INC_BREADBOARD_H_ + +void breadboard(int); + +#endif /* INC_BREADBOARD_H_ */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e1/20bf2853f995001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/e1/20bf2853f995001014a1b349f7adbbd1 deleted file mode 100644 index 5267282..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/e1/20bf2853f995001014a1b349f7adbbd1 +++ /dev/null @@ -1,44 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -breadboard(int traffSPD) -{ - // Traffic Light - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_SET); - HAL_Delay(traffSPD); - - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_Delay(traffSPD); - - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); - HAL_Delay(traffSPD); - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e2/00fd4f9c6096001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/e2/00fd4f9c6096001013e892f2240cdbac new file mode 100644 index 0000000..6d288ff --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e2/00fd4f9c6096001013e892f2240cdbac @@ -0,0 +1,15 @@ +/* + * breadboard.h + * + * Created on: Sep 20, 2025 + * Author: ja + */ + +#ifndef INC_BREADBOARD_H_ +#define INC_BREADBOARD_H_ + +void ticksync(void); +void trafflight(int); +void breadboard(int); + +#endif /* INC_BREADBOARD_H_ */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e3/1072b9b26096001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/e3/1072b9b26096001013e892f2240cdbac new file mode 100644 index 0000000..9498331 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e3/1072b9b26096001013e892f2240cdbac @@ -0,0 +1,76 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + +void +ticksync(void) +{ + last_tick = HAL_GetTick(); +} + +void +walkingman(int pedSPD) +{ + // + +} + +void +dimmer(void) +{ + // +} + +void +breadboard(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + + // =========== + // Walk signal + + // ============ + // Light dimmer +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e3/30588babad9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/e3/30588babad9600101605f36318c5a03f new file mode 100644 index 0000000..3b1be5e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e3/30588babad9600101605f36318c5a03f @@ -0,0 +1,71 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; +uint8_t trafflight_i; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e4/0024b5206996001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/e4/0024b5206996001013e892f2240cdbac new file mode 100644 index 0000000..3eec312 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e4/0024b5206996001013e892f2240cdbac @@ -0,0 +1,89 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +void +tickinit(void) +{ + //last_tick = HAL_GetTick(); + return; //placeholder +} + +void +breadboard(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +/* +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + HAL_GPIO_TogglePin(W_Prt, W_Pin); + HAL_Delay(pedSPD); + HAL_GPIO_TogglePin(W_Prt, W_Pin); +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + return; // placeholder +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + //walkingman(pedSPD); + //dimmer(); +} +*/ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e4/a0ce147bf695001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/e4/a0ce147bf695001014a1b349f7adbbd1 deleted file mode 100644 index 82c36b2..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/e4/a0ce147bf695001014a1b349f7adbbd1 +++ /dev/null @@ -1,47 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePiN(); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(); - HAL_Delay(); - - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e5/7011b93ead9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/e5/7011b93ead9600101605f36318c5a03f new file mode 100644 index 0000000..f9ffdca --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e5/7011b93ead9600101605f36318c5a03f @@ -0,0 +1,68 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; + +void +starttick(void) +{ + trafflight_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if (trafftick_curr) +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e5/d06e10f26296001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/e5/d06e10f26296001013e892f2240cdbac new file mode 100644 index 0000000..9381c03 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e5/d06e10f26296001013e892f2240cdbac @@ -0,0 +1,731 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + //tickinit(); + while (1) + { + breadboard(333); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ed/30bda43cf995001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/e6/1044c4015d96001013e892f2240cdbac similarity index 53% rename from .metadata/.plugins/org.eclipse.core.resources/.history/ed/30bda43cf995001014a1b349f7adbbd1 rename to .metadata/.plugins/org.eclipse.core.resources/.history/e6/1044c4015d96001013e892f2240cdbac index 2e05642..0493565 100644 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/ed/30bda43cf995001014a1b349f7adbbd1 +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e6/1044c4015d96001013e892f2240cdbac @@ -21,19 +21,34 @@ */ #include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); void breadboard(int traffSPD) { // Traffic Light - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_SET); - HAL_Delay(traffSPD); - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); + HAL_GPIO_TogglePin(R_Prt, R_Pin); HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + + // Walk signal // Light dimmer diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e8/b05b77126996001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/e8/b05b77126996001013e892f2240cdbac new file mode 100644 index 0000000..fc007a9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e8/b05b77126996001013e892f2240cdbac @@ -0,0 +1,89 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +void +tickinit(void) +{ + //last_tick = HAL_GetTick(); + return; //placeholder +} + +void +breadboard(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +/* +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + HAL_GPIO_TogglePin(W_Prt, W_Pin); + HAL_Delay(pedSPD); + HAL_GPIO_TogglePin(W_Prt, W_Pin); +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + return; // placeholder +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + //walkingman(pedSPD); + //dimmer(); +} +*. diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e8/f014bbe36496001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/e8/f014bbe36496001013e892f2240cdbac new file mode 100644 index 0000000..5bfa001 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e8/f014bbe36496001013e892f2240cdbac @@ -0,0 +1,86 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +void +tickinit(void) +{ + last_tick = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + HAL_GPIO_TogglePin(W_Prt, W_Pin); + HAL_Delay(pedSPD); + HAL_GPIO_TogglePin(W_Prt, W_Pin); +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + return; // placeholder +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + walkingman(pedSPD); + dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ea/e02bed10ae9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/ea/e02bed10ae9600101605f36318c5a03f new file mode 100644 index 0000000..0e2bc46 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ea/e02bed10ae9600101605f36318c5a03f @@ -0,0 +1,79 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin( + R_Prt, R_Pin | + Y_Prt, Y_Pin | + G_Prt, G_Pin, + GPIO_PIN_RESET + ); + switch (trafflight_i) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/eb/302699bdab9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/eb/302699bdab9600101605f36318c5a03f new file mode 100644 index 0000000..73152f2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/eb/302699bdab9600101605f36318c5a03f @@ -0,0 +1,83 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t redlight_last; +uint32_t ylwlight_last; +uint32_t grnlight_last; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + int ldelay2 = traffSPD * 2; + int ldelay3 = traffSPD * 3; + + if ((trafftick_curr - redlight_last) >= traffSPD) { + redlight_last = trafftick_curr; + HAL_GPIO_TogglePin(R_Prt, R_Pin); + } + + if ((trafftick_curr - grnlight_last) >= ldelay2) { + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + } + + if ((trafftick_curr - trafftick_last) >= ldelay3) { + HAL_GPIO_TogglePin(G_Prt, G_Pin); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ef/30302e02af9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/ef/30302e02af9600101605f36318c5a03f new file mode 100644 index 0000000..feed2b8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ef/30302e02af9600101605f36318c5a03f @@ -0,0 +1,98 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; +uint32_t walktick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin( + R_Prt, R_Pin && + Y_Prt, Y_Pin && + G_Prt, G_Pin, + GPIO_PIN_RESET + ); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin); + break; + } + + trafflight_i = (trafflight_i + 1) % 3; + trafftick_last = trafftick_curr; + } + + if ((trafftick_curr - walktick_last) >= walkSPD) { + HAL_GPIO_TogglePin(W_Prt, W_Pin); + walktick_last = trafftick_curr; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ef/e012d765f795001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/ef/e012d765f795001014a1b349f7adbbd1 deleted file mode 100644 index e35d7bb..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/ef/e012d765f795001014a1b349f7adbbd1 +++ /dev/null @@ -1,50 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(500); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f/a0c87389f895001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/f/a0c87389f895001014a1b349f7adbbd1 deleted file mode 100644 index ce2774c..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/f/a0c87389f895001014a1b349f7adbbd1 +++ /dev/null @@ -1,56 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(333); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - // Yellow Light - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - HAL_Delay(333); - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - - // Green Light - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - HAL_DELAY(333); - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f/c0b69abbae9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/f/c0b69abbae9600101605f36318c5a03f new file mode 100644 index 0000000..7e695b4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f/c0b69abbae9600101605f36318c5a03f @@ -0,0 +1,94 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; +uint32_t walktick_last; + +uint8_t trafflight_i = 0; + +void +starttick(void) +{ + trafftick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin( + R_Prt, R_Pin | + Y_Prt, Y_Pin | + G_Prt, G_Pin, + GPIO_PIN_RESET + ); + + switch (trafflight_i) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin); + break; + } + + trafflight_i = (trafflight_i + 1) % 3; + trafftick_last = trafftick_curr; + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f7/a0d46dd26296001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/f7/a0d46dd26296001013e892f2240cdbac new file mode 100644 index 0000000..11a6737 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f7/a0d46dd26296001013e892f2240cdbac @@ -0,0 +1,19 @@ +/* + * breadboard.h + * + * Created on: Sep 20, 2025 + * Author: ja + */ + +#ifndef INC_BREADBOARD_H_ +#define INC_BREADBOARD_H_ + +void ticksync(void); + +void trafflight(int); +void walkingman(int); +void dimmer(void); + +void breadboard(int, int); + +#endif /* INC_BREADBOARD_H_ */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ee/8079c479f995001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/f9/b0a5b4a35f96001013e892f2240cdbac similarity index 52% rename from .metadata/.plugins/org.eclipse.core.resources/.history/ee/8079c479f995001014a1b349f7adbbd1 rename to .metadata/.plugins/org.eclipse.core.resources/.history/f9/b0a5b4a35f96001013e892f2240cdbac index aedbc59..c71b5ac 100644 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/ee/8079c479f995001014a1b349f7adbbd1 +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f9/b0a5b4a35f96001013e892f2240cdbac @@ -23,24 +23,37 @@ #include "main.h" #include "breadboard.h" -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + + + void breadboard(int traffSPD) { + // ============= // Traffic Light - HAL_GPIO_WritePin(GreenLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_SET); - HAL_Delay(traffSPD); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_SET); + HAL_GPIO_TogglePin(R_Prt, R_Pin); HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_SET); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + + // =========== // Walk signal + // ============ // Light dimmer } diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/fb/c0aca9835f96001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/fb/c0aca9835f96001013e892f2240cdbac new file mode 100644 index 0000000..29393b2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/fb/c0aca9835f96001013e892f2240cdbac @@ -0,0 +1,57 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + +void +breadboard(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + + // =========== + // Walk signal + + // ============ + // Light dimmer +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/fc/10a6a16b6396001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/fc/10a6a16b6396001013e892f2240cdbac new file mode 100644 index 0000000..13aa73d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/fc/10a6a16b6396001013e892f2240cdbac @@ -0,0 +1,82 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + +void +tickinit(void) +{ + last_tick = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + // ============= + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); +} + +void +walkingman(int pedSPD) +{ + // =========== + // Walk signal + +} + +void +dimmer(void) +{ + // ============ + // Light dimmer + +} + +void +breadboard(int traffSPD, int pedSPD) +{ + trafflight(traffSPD); + walkingman(pedSPD); + dimmer(); +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/fc/606ef369f695001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/fc/606ef369f695001014a1b349f7adbbd1 deleted file mode 100644 index 1f3e004..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/fc/606ef369f695001014a1b349f7adbbd1 +++ /dev/null @@ -1,47 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePiN(s=); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(); - HAL_Delay(); - - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/fc/908fa088f795001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/fc/908fa088f795001014a1b349f7adbbd1 deleted file mode 100644 index e35d7bb..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/fc/908fa088f795001014a1b349f7adbbd1 +++ /dev/null @@ -1,50 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(500); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - HAL_GPIO_TogglePin(); - - HAL_GPIO_TogglePin(); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/fc/d012730f5d96001013e892f2240cdbac b/.metadata/.plugins/org.eclipse.core.resources/.history/fc/d012730f5d96001013e892f2240cdbac new file mode 100644 index 0000000..9c0f9d1 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/fc/d012730f5d96001013e892f2240cdbac @@ -0,0 +1,56 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port + +void +breadboard(int traffSPD) +{ + // Traffic Light + + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + + // =========== + // Walk signal + + // ============ + // Light dimmer +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/fc/f01b5cb9af9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/fc/f01b5cb9af9600101605f36318c5a03f new file mode 100644 index 0000000..b5e1971 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/fc/f01b5cb9af9600101605f36318c5a03f @@ -0,0 +1,730 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "cmsis_os.h" +#include "usb_host.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "breadboard.h" + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +CRC_HandleTypeDef hcrc; + +DMA2D_HandleTypeDef hdma2d; + +I2C_HandleTypeDef hi2c3; + +LTDC_HandleTypeDef hltdc; + +SPI_HandleTypeDef hspi5; + +TIM_HandleTypeDef htim1; + +UART_HandleTypeDef huart1; + +SDRAM_HandleTypeDef hsdram1; + +osThreadId defaultTaskHandle; +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_CRC_Init(void); +static void MX_DMA2D_Init(void); +static void MX_FMC_Init(void); +static void MX_I2C3_Init(void); +static void MX_LTDC_Init(void); +static void MX_SPI5_Init(void); +static void MX_TIM1_Init(void); +static void MX_USART1_UART_Init(void); +void StartDefaultTask(void const * argument); + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_CRC_Init(); + MX_DMA2D_Init(); + MX_FMC_Init(); + MX_I2C3_Init(); + MX_LTDC_Init(); + MX_SPI5_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + /* USER CODE BEGIN 2 */ + + /* USER CODE END 2 */ + + /* USER CODE BEGIN RTOS_MUTEX */ + /* add mutexes, ... */ + /* USER CODE END RTOS_MUTEX */ + + /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* add semaphores, ... */ + /* USER CODE END RTOS_SEMAPHORES */ + + /* USER CODE BEGIN RTOS_TIMERS */ + /* start timers, add new ones, ... */ + /* USER CODE END RTOS_TIMERS */ + + /* USER CODE BEGIN RTOS_QUEUES */ + /* add queues, ... */ + /* USER CODE END RTOS_QUEUES */ + + /* Create the thread(s) */ + /* definition and creation of defaultTask */ + //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 4096); + //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + + /* USER CODE BEGIN RTOS_THREADS */ + /* add threads, ... */ + /* USER CODE END RTOS_THREADS */ + + /* Start scheduler */ + //osKernelStart(); + + /* We should never get here as control is now taken by the scheduler */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + trafflight(333, 500); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 4; + RCC_OscInitStruct.PLL.PLLN = 72; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 3; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief CRC Initialization Function + * @param None + * @retval None + */ +static void MX_CRC_Init(void) +{ + + /* USER CODE BEGIN CRC_Init 0 */ + + /* USER CODE END CRC_Init 0 */ + + /* USER CODE BEGIN CRC_Init 1 */ + + /* USER CODE END CRC_Init 1 */ + hcrc.Instance = CRC; + if (HAL_CRC_Init(&hcrc) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN CRC_Init 2 */ + + /* USER CODE END CRC_Init 2 */ + +} + +/** + * @brief DMA2D Initialization Function + * @param None + * @retval None + */ +static void MX_DMA2D_Init(void) +{ + + /* USER CODE BEGIN DMA2D_Init 0 */ + + /* USER CODE END DMA2D_Init 0 */ + + /* USER CODE BEGIN DMA2D_Init 1 */ + + /* USER CODE END DMA2D_Init 1 */ + hdma2d.Instance = DMA2D; + hdma2d.Init.Mode = DMA2D_M2M; + hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d.Init.OutputOffset = 0; + hdma2d.LayerCfg[1].InputOffset = 0; + hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d.LayerCfg[1].InputAlpha = 0; + if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) + { + Error_Handler(); + } + if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN DMA2D_Init 2 */ + + /* USER CODE END DMA2D_Init 2 */ + +} + +/** + * @brief I2C3 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C3_Init(void) +{ + + /* USER CODE BEGIN I2C3_Init 0 */ + + /* USER CODE END I2C3_Init 0 */ + + /* USER CODE BEGIN I2C3_Init 1 */ + + /* USER CODE END I2C3_Init 1 */ + hi2c3.Instance = I2C3; + hi2c3.Init.ClockSpeed = 100000; + hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; + hi2c3.Init.OwnAddress1 = 0; + hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c3.Init.OwnAddress2 = 0; + hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C3_Init 2 */ + + /* USER CODE END I2C3_Init 2 */ + +} + +/** + * @brief LTDC Initialization Function + * @param None + * @retval None + */ +static void MX_LTDC_Init(void) +{ + + /* USER CODE BEGIN LTDC_Init 0 */ + + /* USER CODE END LTDC_Init 0 */ + + LTDC_LayerCfgTypeDef pLayerCfg = {0}; + + /* USER CODE BEGIN LTDC_Init 1 */ + + /* USER CODE END LTDC_Init 1 */ + hltdc.Instance = LTDC; + hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc.Init.HorizontalSync = 9; + hltdc.Init.VerticalSync = 1; + hltdc.Init.AccumulatedHBP = 29; + hltdc.Init.AccumulatedVBP = 3; + hltdc.Init.AccumulatedActiveW = 269; + hltdc.Init.AccumulatedActiveH = 323; + hltdc.Init.TotalWidth = 279; + hltdc.Init.TotalHeigh = 327; + hltdc.Init.Backcolor.Blue = 0; + hltdc.Init.Backcolor.Green = 0; + hltdc.Init.Backcolor.Red = 0; + if (HAL_LTDC_Init(&hltdc) != HAL_OK) + { + Error_Handler(); + } + pLayerCfg.WindowX0 = 0; + pLayerCfg.WindowX1 = 240; + pLayerCfg.WindowY0 = 0; + pLayerCfg.WindowY1 = 320; + pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + pLayerCfg.Alpha = 255; + pLayerCfg.Alpha0 = 0; + pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + pLayerCfg.FBStartAdress = 0xD0000000; + pLayerCfg.ImageWidth = 240; + pLayerCfg.ImageHeight = 320; + pLayerCfg.Backcolor.Blue = 0; + pLayerCfg.Backcolor.Green = 0; + pLayerCfg.Backcolor.Red = 0; + if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN LTDC_Init 2 */ + + /* USER CODE END LTDC_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + hspi5.Instance = SPI5; + hspi5.Init.Mode = SPI_MODE_MASTER; + hspi5.Init.Direction = SPI_DIRECTION_2LINES; + hspi5.Init.DataSize = SPI_DATASIZE_8BIT; + hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi5.Init.NSS = SPI_NSS_SOFT; + hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi5.Init.TIMode = SPI_TIMODE_DISABLE; + hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi5.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi5) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = 65535; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* FMC initialization function */ +static void MX_FMC_Init(void) +{ + + /* USER CODE BEGIN FMC_Init 0 */ + + /* USER CODE END FMC_Init 0 */ + + FMC_SDRAM_TimingTypeDef SdramTiming = {0}; + + /* USER CODE BEGIN FMC_Init 1 */ + + /* USER CODE END FMC_Init 1 */ + + /** Perform the SDRAM1 memory initialization sequence + */ + hsdram1.Instance = FMC_SDRAM_DEVICE; + /* hsdram1.Init */ + hsdram1.Init.SDBank = FMC_SDRAM_BANK2; + hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; + hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; + hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; + hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; + hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; + hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; + hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; + hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; + hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; + /* SdramTiming */ + SdramTiming.LoadToActiveDelay = 2; + SdramTiming.ExitSelfRefreshDelay = 7; + SdramTiming.SelfRefreshTime = 4; + SdramTiming.RowCycleDelay = 7; + SdramTiming.WriteRecoveryTime = 3; + SdramTiming.RPDelay = 2; + SdramTiming.RCDDelay = 2; + + if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) + { + Error_Handler( ); + } + + /* USER CODE BEGIN FMC_Init 2 */ + + /* USER CODE END FMC_Init 2 */ +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ + GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pins : LD3_Pin LD4_Pin */ + GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/* USER CODE BEGIN Header_StartDefaultTask */ +/** + * @brief Function implementing the defaultTask thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_StartDefaultTask */ +void StartDefaultTask(void const * argument) +{ + /* init code for USB_HOST */ + MX_USB_HOST_Init(); + /* USER CODE BEGIN 5 */ + /* Infinite loop */ + for(;;) + { + osDelay(1); + } + /* USER CODE END 5 */ +} + +/** + * @brief Period elapsed callback in non blocking mode + * @note This function is called when TIM6 interrupt took place, inside + * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment + * a global variable "uwTick" used as application time base. + * @param htim : TIM handle + * @retval None + */ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* USER CODE BEGIN Callback 0 */ + + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM6) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ + + /* USER CODE END Callback 1 */ +} + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/fe/704da1c0f895001014a1b349f7adbbd1 b/.metadata/.plugins/org.eclipse.core.resources/.history/fe/704da1c0f895001014a1b349f7adbbd1 deleted file mode 100644 index 6291a60..0000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.history/fe/704da1c0f895001014a1b349f7adbbd1 +++ /dev/null @@ -1,60 +0,0 @@ -/* - * breadboard.c - * - * Created on: Sep 17, 2025 - * Author: ja - */ - -/* - * #define RedLight_Pin GPIO_PIN_2 - * #define RedLight_GPIO_Port GPIOE - * - * #define YellowLight_Pin GPIO_PIN_3 - * #define YellowLight_GPIO_Port GPIOE - * - * #define GreenLight_Pin GPIO_PIN_4 - * #define GreenLight_GPIO_Port GPIOE - * - * RedLight: PE2 - * YellowLight: PE3 - * GreenLight: PE4 - */ - -#include "main.h" - -#define RedLight_Port RedLight_GPIO_Port -#define YellowLight_Port YellowLight_GPIO_Port -#define GreenLight_Port GreenLight_GPIO_Port - -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); -void -reset_traffic(void) -{ - HAL_GPIO_WritePin(RedLight_GPIO_Port, RedLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(YellowLight_GPIO_Port, YellowLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); -} - -void -breadboard(void) -{ - // Traffic Light - // Red Light - HAL_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - HAL_Delay(333); - Hal_GPIO_TogglePin(RedLight_Port, RedLight_Pin); - - // Yellow Light - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - HAL_Delay(333); - HAL_GPIO_TogglePin(YellowLight_Port, YellowLight_Pin); - - // Green Light - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - HAL_DELAY(333); - HAL_GPIO_TogglePin(GreenLight_Port, GreenLight_Pin); - - // Walk signal - - // Light dimmer -} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ff/a0fc1d32ad9600101605f36318c5a03f b/.metadata/.plugins/org.eclipse.core.resources/.history/ff/a0fc1d32ad9600101605f36318c5a03f new file mode 100644 index 0000000..5119ff3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ff/a0fc1d32ad9600101605f36318c5a03f @@ -0,0 +1,72 @@ +/* + * breadboard.c + * + * Created on: Sep 17, 2025 + * Author: ja + */ + +/* + * #define RedLight_Pin GPIO_PIN_2 + * #define RedLight_GPIO_Port GPIOE + * + * #define YellowLight_Pin GPIO_PIN_3 + * #define YellowLight_GPIO_Port GPIOE + * + * #define GreenLight_Pin GPIO_PIN_4 + * #define GreenLight_GPIO_Port GPIOE + * + * RedLight: PE2 + * YellowLight: PE3 + * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: async? Walk Signal, Light Dimmer + */ + +#include "main.h" +#include "breadboard.h" + +#define R_Pin RedLight_Pin +#define Y_Pin YellowLight_Pin +#define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin + +#define R_Prt RedLight_GPIO_Port +#define Y_Prt YellowLight_GPIO_Port +#define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t redlight_last; +uint32_t ylwlight_last; +uint32_t grnlight_last; + +void +starttick(void) +{ + redlight_last = HAL_GetTick(); + ylwlight_last = HAL_GetTick(); + grnlight_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD) +{ + /* + HAL_GPIO_TogglePin(R_Prt, R_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(R_Prt, R_Pin); + + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(Y_Prt, Y_Pin); + + HAL_GPIO_TogglePin(G_Prt, G_Pin); + HAL_Delay(traffSPD); + HAL_GPIO_TogglePin(G_Prt, G_Pin); + */ + + uint32_t trafftick_curr = HAL_GetTick(); + + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/Calc2/.markers.snap b/.metadata/.plugins/org.eclipse.core.resources/.projects/Calc2/.markers.snap deleted file mode 100644 index 0b368ce14fbcdffc79d020bc00b88646cda52674..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32 acmZ?R*xjhShe1S2b=vdAllRFvpz#6ORt=>%YWOByr_g5OD)@H6dhi-D?xU>MzvVe_4X0Uh!%gSX^LcTFN{m@#3$k yU~va$S0`lgc*iiXxWf52DnF+(2#74)?D>7|?u%}lCGfjCFmfaL(+RTN8 zi84cy;4)5`qPZ|>E|tqkGc{8ukfO~d!^%o6|4-<>eRz4l^Z)RFN5XNOgmdu^Q>qpI zG3sRhB()+jB}tj6PLU;ZftGXWOZRSaQkT`=l3hD>duJ@>^x{<C2~z{9*)gc}xQEujUdo?b8b?nRpD~w<3%%$HEqPRv zyaPQlnA~EgXh7dO_muSr$MdVue{jy5Q$Gz`i`KX?fc=Vr-$yI`V9C}gVO8#~G z5p)~hmApe!2zr1!Ij`LujPCTVo6Y5wTeqR7kCE&CtPezY+e5A~&AFjhWOlJ0)%l!X z)o{;FvPaBA{fhn2Gn~ndLk4g3E(a6K%P;Scps$~8V=neazpR4(yM5%U{B{xDDT-Y1 zEN(^Dx{~v@o9fX&9ByI#x(5r{==0X(nhRDb=su%Ol=rf;M^F3O$XpXU^05-W^U4%C zC;h+4vJ%s>|LrixyfzN=5pyebfux3IkzL>MFpJIJgsFe9nSq;4j#Mn6m$91 z)w5;b6EbpfbgdfQY?n&?Axrzw^~X|}^QU<$^kG8+bK~Uf(0mamb=KD%{87{VJnOW7 k>heFqv|C<_ULCaJ{rU>@TdGCHa$YbLZl8r7iGG3kU)ke@_W%F@ literal 1347 zcmY+^Ur3Wt7zXgK;e|%&6r0O}mO*A~ZU`xeglK<^T&<=QS+J>-Et?yw*hWb+y-1`S z(JC=)YyN?|xbzFh7titxg!SOR)5B4tJ8+j#6$#3Xd!ErY0Gb_4cNy408 zdB==y?kBf>^_@VsG?LpJd}{RcRpcW77A5+@pW9f!s5PiSpAV9&v@?6qFIdQBk9$kd zRfoy>&DV<1Cv(KCUv{M>8QtREO7Hb&#Nsdq>q>HG^YAMMG0>(7(yaIgjHt`lDzL>j|XY9Ya5wP40ctKY*S#w~^(!kA=6; zXD7&QvB_@q_``&o&)q<;ZXs70bb(wIrL-Lmu*Q zPn8ipwK3rtGaB?GOB-mOZR1tw-bHe*qhy&Uog^>48QFpPHI?M5n$^YVf)Q|1y305_-Fq+!@L|i@qzqmin6( zbm+bqxy{|V%y*8GD{>FjVm?btZY*0+qVJy&vi|VAqy+u=Y!-8l|9_L|)w-s?J1oij rK01Z}v|cM^*+8+%gFd)D;UU)m`gP-P&A*)|yMMVb3Nz-pelh<8{?txi diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/TrafficLightsPlus/.markers b/.metadata/.plugins/org.eclipse.core.resources/.projects/TrafficLightsPlus/.markers index 14e38b994842537771561f0edbaa29eab9a61d9e..303c7d50e5e3d27b2d7fb902bc194002aae3c412 100644 GIT binary patch delta 129 zcmeBXJ5X9kW*T$@0?$hsvlgGte;ernwXN5pIDTl zmkdj9(c6I{OAP diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/TrafficLightsPlus/.markers.snap b/.metadata/.plugins/org.eclipse.core.resources/.projects/TrafficLightsPlus/.markers.snap deleted file mode 100644 index 0b368ce14fbcdffc79d020bc00b88646cda52674..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32 acmZ?R*xjhShe1S2b=vdAllRFvpz#6ORtSMx?^QQ zTy)hHp8i&BRAnuzKvZmWTLK{=tn0e2B74rvoSS*?^K<^VH*db*Q)cGOnYlBmS$AE{ zy6d_$Z+6W!9$DCX>P=6puCmMDx>(9%{kfPQB7$N?`ZvZ?VdoqHSC)5 zoQCzEXsJW$jZX$Hwn;C_3S_3|2Z}NWWP(!>mh#^f@a_ht*600us6f6cupvrmMy*sB z_}VtTNW^!yqGJswbQ6%q4hyHd1$`c9%u-^$Y7+N&d>@PQ?iO^qi+W!HRCkhhk9bL= z7qslhhU_QeRCg=ZkoDGU4PRX90=M6M@YisMXfu73mvqEQbWUHkEbi&{$^)>qNojeLRO%j3R}Xj7R4jD zMOCpS1VKkE<(pea8E$HhBY;C*Ji#OPLWHF+|5YnkYA9I7pDgZTYF}o6%Y`-3>a^#N zJz;7i=P9jVxxrb%EAygw{(jjBn&9jJ0-1kS5`HU{gnF%Eg`r_3Ph6Z}s$Xe1J)y4M} zk613j>8i%}6+tj@Pw-%`|u{qJb7FU-}Sci?3mVY!q9M%zqK6V zK5(AYpESTzBBH_|6&9U-Q(mD86lFJ41u- zYlH9&-xP(Td|{@l^nGK1--^VWEgVHcy%;=X{7cX+L7lgJ-x{LdVMj*s&1DgWxbHiI z@jb7Imcv}7Dt+G@V2zkG&x+>p@5+|lst_+m30XfS8De%a=D@&({aT66rTEKNE6S6t z#Lh6(WI|_fiJtd(VtLA{4*W=&?47|{1JqOTT@YIetr*^Vm9(K5UJMCxOa z;DSy7KD{8J9$y`-pwdp+DoApH3uFiCsrWAP?W<%2EK*gziv)p!dU0@`)iKFjivkxk z(TjskzI-Q%Jh@zYON*k;IjGRrP!%gjjLb9`W-jrK<-O6tpsMs;GQdV&uq}?CSDH1! zi=#=l&m$qpTm%Dky|ki6L(yeuX$(L6esdntsSS1+S-WhI{^{`~ax1P2-&rAtriE4n z^;CR6h}0r0o?onxjm2dLiWdiuT&h=$0hN+*MG`!|AJiM4zJKw_m3^_vWZ+*0_#;n^ zyAi-TrYe0u8sNWqbtTSc0=?MFWcV_#oEF0qR-@gzy;}O;hV)OoF%IW6N&9{>!2gJ{ zK{5r^=>+2YkAeOyE)RmG|HvR2_C)bw?~(Z*k%F1%;v6OD``J+NU(x$EOS*naqyII~ zUwFGNI4Lh))!;7%_$$A>I+~|-!FCbBi@idYe+B{?u76ES>m?U|`L2i?2Fuw)H|l>{MGr)QQ=w*k30 zh88&`%{m=Eg6hE{=G)?6gsZrudv1sxfzxuN4)5x8AN$P=p8LI22w zYkBqfPCY|r;>Avi$F4QBT!;Cux?2qYQ@qSeWC`l2uogVBTF!wORmJo~!C&n9ssz~& zI~C@ja&n?&RYDA(m>?siwZhr;>WxpK&?mI#;q*2HIL!tziaC zx>L=7eF}0=0awi>+9;Mp+wv`mxHi@uQI)K%0p7rm zC1NaI+@LBQ1j&I&0AoYPpx)L>^p^wvV(l<0DQ%@@l>#49Pel97NZ(1vd`i!b}qTx+mbOHi)RK1>SEQ(~oLNqikiYNELU4p9~ zrFCI3eE8>4V!v%6!&RZ921%@=h#v;6{MA;i)K(k}d2*pEQeRRa zL|1*Rfp!v`hglc}^?g+>(~}8*u{fSGGd6T-CZ5w32;@N`^7yvzwJhF16ZocH(PF<=zE&a5jqoP>y@7$FaOpWMo}k|N zWQii~ZaE6Ba&%o6*1hT`%tQ54R0Zo!2uLRJ$VoAwW6*Gi!kymmCiDG~C(hh0TYpK% zIZHA$_29d1!mQ+)>0y93^6C>&V$uj1iH#IU*gjoYPqBLhY+5HhfTK(dr$4~tLJBgl z3odU|LaZlALqmG;7aqWjN}^0}ppe3D5{V;a99~M*qWZf`qP_XK=VSSu>(DY0oD_h_ z@*qh_>myy$ZD!azy0AXbJPg1~!&ME_fr!6YU%tN&_J1SIVLcZl*pDagh~a4`rRu3l z+8G3IvVA)e#MV)=;~R0ggu?o%xBR=mI5^6}o_7skuj#@Dh+js@&yY)5s)`LD4D{U0 zQ%=Q4fa4l;ZU?ZLXg9`+6=kF4I^IZ=>SjYOnNRK~qmh&*8(@k!Ia-=*)FKQ!Qx|rN z=s3oLLx}*P&QO4;xv64;LNDtYb_+>@ySMU+(`c4N*{udRP@On@Hpa@a%Hg{uUtvst zjN&f_J=?0ZIDLUXBQqo9)Xt?l7$M}%D3cztD>$$Bm8g*lyUpWit+ewu&f-SQ^#Kqn zY_Rx#tn~zVSgXG!nO;AU!G^dx@{6)UT_nB(Zn-Xw4dI9SxJubXom3bMa2xcok3Rzq zxW{RDn%3kIhJh~Z4$;SJb%WN_o>x^&CkXt-?i6WWE6zY2@W}OUJRg>V;Q4GVdZ&8h zlikG&Q}FoG)vFg-2@VxMc`ZC&silmMVWJDOML);tWT4J?fN0nzi#ZBCpQZ$u-ap_k zHcV`El*gobm|{tExH#Y_yT?^68*ZSfyzv`pR)fxD0Ld)liQjheLSxgE1k=d|f3dsa zJXgj>L3Tk_ad^LzEnrb$BRst8LmkD>#qriIXl+e}LfLd;f#w-JVIZFK66h2H zNIsSFi3)sJOU^JPXNu|x@|c%I*-QhSh4X1FD%P70@W?G}ByTrJTGiRiVStg<8Dh&s zdG=gGTf>pAq=$_X2PP`Bq!qX~n?j^S@?z?i9-s45+751F0A z>lHXhOO7!l@8Jm>@ubgHdyfH*6$d9-9rKzxkzo|;!p6Zl^`h+JlF;c$o#vo5av?y} zkeOKXpi+gJs4y>2t&K9qjd=-zb~-$MaJ0C8vbAOeIHji}n`JO&gQbG}qHw1))hPuk zIkk+R+tgts=d>M2%#wDz3>m_r2c zWjv3pi^6tm(1Fo$UCDxW7nWv~W(^1(s^7FCOengr3EZlZZ6Yf=G!bVL`G6{1lxkj8 zbf!a7f|Gc~9Wv@P=zv+*g>3$Kl>|>|$w}%hB`5PERha)=wU}yjVfU)WuVb?DwK~q( zy+i=FrtkpA#@FgNcQ6IhIOIa(O9I6Ui$fb89#&|00*SvpBV>oUaA=_&z|<_rVP6j!HPrD&JJLXQe^ zSe95nL&<8?sf22>yH>oV&{}PeVZ76(N=T$A6Z=ef! z>SYztkvByret>l@}KCvoj1Q#ZrCs^Vv7WCV(G z!$in+{Bj@>*tECH5P5#pFBrd2?Edf|MvB<#$D#8F^_H+Y4KKo* z1_(bINZW1VsWhCaO=Eyx4TKIBAEsHcI0!U;VBJMw=S-g58s^Cgph2;55hP`>__o%L z-x|(eF6kcoHiHiv={AxtG6Gg4I#HonxNjn@uxBPG28KCNuIb>XONU)FIWcHZ7$0*5 z6dN3M`9n#4c}DKwF#Zxr_t@a5%ZI%*=^qlVf3@a=%Pt>w*Q$}l8Oh1v<4K(kPJ3EX zgNKV1>6oXQ0v&vG^`(jz)75BGFn~ucdbc=}uHuvW;RZTV49ie< zsU4{XI!Y91S&G@a4Ro~Fre&!~BMfwmn|&}lK(RZ)gS_f0tW4_#Z0|w|dh90*^iRBS zD`Z}OFh_%<3~(&oC5wnGt969Iz#Vfl@kEx@i6{RGAEN%?A}xzM1v2Xu3$rlcH<`t) z0-+AyK2Cx39nT(fpuyFf>dWo_p80fulodyRk{-9oj?1=_AMO|!txJ@c225!8_ zz7KDp#OC?dwN2|0@o*1DJjR0#9Qrhw!QB^uQ{`0?Z~RS~$pi$7joT_>Ov4Kyan}OX z$~;N%*toYM#&o!`iA|FK@Z_dg;xU6a1Mf}5?l4Wbogz&$;aWqwO5(VkB5)R5H-uTq z1sIAw9UerRt*#E{WUEjk$_%84x@;?sZ=TR9zG*Qa!c0TQTy>~^OzWW7m?d@0&4F-D zc)C4yDTVrMLpV*IRdfH-AzeDhUSgguXU8;9J_FRLJj;FXXaHuEn1B9BGAx~i& zwLHaUn!(6~W6(I!f1%X^y`(1MzL0cesdG&KBJWXu7BcvHfB*J_+ z@=L_&OdeqPG!ubERxDq(Lr!PCZ?mzDB$my$?T}5Q&O;J`IsB^~aOl>Q2yo&MxR6Ia zBS9Jv40i$-@q3<;I~bbgNFp$oS3Z+~t`dm0n~7byaDF&F7tarydI@tI$>odkTuTa) zNmS5Gbj<_7ceNl55q2{P7K(;kJRN8X5o8fsBqFZ`1w-@H_)v1dek4k|^q{)Bu;cYex^Lg<^Mx2el_&oXWRGqFJ1YP;A`&61p6h2R@O>SR(>1>O@!}|0QT$ zftoTnSE1Oruo7b>{A*4$->+0)LV#i~g9j1H`0i(A+>tacyacX-|8t2=%772Grp!P} za0w<}x%!Wkyh7y&&RHlnuCzp{z;!|P5*fn%CZUz;|2NJ|l}*L`2E|?l4`Qqqjn`Xp zT_6;9PlVow>p~ywM{=*iK-a*UAWai!e014sRjxleO`68c48_JR1S$W6%=ImcRpT(J zL9y?H2Qlu)T+g@tMXJD@2E|?j4B{~bh%Z) zoD0RiA0Ev_MTyl(^ej;mmY@d^LK4u{B!m*HXt#a<5&GPN19z1(8ZaBeWbE%Lgq^Z)PgMkI>J#o*1h zUd_c`ZG?hulc9&p`>{|p)IXaI-oq;G?|WVjAg@DyhcOQYYFWn`u$^ic;uYtDB zlG5Y{HwZ!m+p7FQ!T+#PkEi*F{31~~$BGf>mRjTSO9k^D6nhsuNX;vB$emHLs3@y2>|=r? zb{i7^2Ol5uSUfXp-tW+Z2K{g9_G0z|e>Qwm{+@xC4T)FveTQG2yNB+k$RqIEZNnby ziq4|Pa+ND^<%VK|qb}t&5m=5l2>u|U;FpWO&bRpG#|werf(yPOc1NmD3_|x9=$me; z?+LX~>__22z5AqyY>%tk3hPz0jk^vg_G|DU%3J)(i}0V>O{4R=0q%uEKWFTSQ4^+& zG7irCL9(^Y;68&Ng+=+LCE0md146?ecT7<1?eHMGe}=<{ti@S*CI0zE`C>x{l}L#B zw87jd-dkynK>u;wg<`(}57M)bC#H9BnwAP&d7;>E!h<;bJ)Y|WCHcA8;in=rnr|88 z1H2+#e*2R(=mb~OK@ludqfF>N13kpgz9bJ72n55f=-VQ3mDRy)#sLF;hugd4sR@Z5 zG{D26a+M{IeF!~dpnr#+%q=MOFDVKX6l4_@hfN9+dD{?q7sd)t@B`_Kvcl-pfA1Ld z_mEyRH9rTYT)2ATA2#^!y9ec=lZUwAvD+;l@WMvV+itn1*L~Ij>wiI)loJ2| delta 13339 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 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources index a5ea2a7408658f6e5adb46c264b3ad9905a164c0..96c4b5b769c85eadf25a3c35c4e0ff9e5106c908 100644 GIT binary patch delta 144 zcmdnac7kPsf@*1=LU3wKL z&WUM@IE_us3@wb!j0`6WG8&Sidp%CAh9*`f##Tl~_$;mzI1ussv+^DW5vjn>J=MF* Gj{yJyi#8|# diff --git a/.metadata/.plugins/org.eclipse.core.resources/16.snap b/.metadata/.plugins/org.eclipse.core.resources/16.snap deleted file mode 100644 index baea677afb8175e76122fc3ff545d2f12064c2e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 710 zcmZ?R*xjhShe1S2b=vdAllRH7Ff%bRfI)~Tgocrf&L9>e5HT_`2!<3Trln;j`(&nP zloSW#lom5HGO#%37o`Ge=HQ}aAjOkZl$w~5l%H6XqL&QR!y*VYnQ>;ua)zl8GwmJ& zX>SPI{Tsu9h~J;VP6_a?E>46H7x zNu}w`ET{&tFbE*~u`)R)ALvg3MyNk493cjTh`}7nzz`zNfD$k%*fe-=0BV3ngZE}s z4X8FWL2Uq<3Iib$3=F(T&MGd&W(7zU41@rKQxqdY^-^=vkaborg{VhP7a*UBVd~7u oEG|LO3W{hT@aX~)P=ERKVzo3ku>eKqa\n\n -org.eclipse.debug.ui.changedDebugElement=255,128,128 -org.eclipse.debug.ui.consoleBackground=53,53,53 -org.eclipse.debug.ui.errorColor=225,30,70 -org.eclipse.debug.ui.inColor=140,175,210 -org.eclipse.debug.ui.outColor=235,235,235 -overriddenByCSS=,org.eclipse.debug.ui.MemoryHistoryKnownColor,org.eclipse.debug.ui.MemoryHistoryUnknownColor,org.eclipse.debug.ui.PREF_CHANGED_VALUE_BACKGROUND,org.eclipse.debug.ui.changedDebugElement,org.eclipse.debug.ui.consoleBackground,org.eclipse.debug.ui.errorColor,org.eclipse.debug.ui.inColor,org.eclipse.debug.ui.outColor, preferredTargets=org.eclipse.cdt.debug.ui.toggleCBreakpointTarget,org.eclipse.cdt.debug.ui.toggleCDynamicPrintfTarget\:org.eclipse.cdt.debug.ui.toggleCBreakpointTarget| diff --git a/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi b/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi index 1e46af5..6ec711f 100644 --- a/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi +++ b/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi @@ -1,6 +1,6 @@ - + activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration @@ -226,11 +226,24 @@ active noFocus - + Editor removeOnHide org.eclipse.cdt.ui.editor.CEditor active + activeOnClose + + + + Editor + removeOnHide + org.eclipse.cdt.ui.editor.CEditor + + + + Editor + removeOnHide + org.eclipse.cdt.ui.editor.CEditor @@ -244,7 +257,7 @@ ViewMenu menuContribution:menu - + @@ -261,7 +274,7 @@ - + View categoryTag:General @@ -292,7 +305,7 @@ ViewMenu menuContribution:menu - + @@ -316,7 +329,7 @@ ViewMenu menuContribution:menu - + @@ -346,7 +359,7 @@ ViewMenu menuContribution:menu - + @@ -385,7 +398,7 @@ Draggable - + toolbarSeparator @@ -393,8 +406,8 @@ Draggable - - + + toolbarSeparator @@ -418,10 +431,7 @@ Draggable - - - - Draggable + toolbarSeparator @@ -1310,18 +1320,18 @@ View categoryTag:General - - + + glue move_after:PerspectiveSpacer SHOW_RESTORE_MENU - + move_after:Spacer Glue HIDEABLE SHOW_RESTORE_MENU - + glue move_after:SearchField SHOW_RESTORE_MENU diff --git a/.metadata/version.ini b/.metadata/version.ini index da1a4f1..b7c9a0c 100644 --- a/.metadata/version.ini +++ b/.metadata/version.ini @@ -1,3 +1,3 @@ -#Sat Sep 20 14:37:30 CDT 2025 +#Sat Sep 20 22:34:34 CDT 2025 org.eclipse.core.runtime=2 org.eclipse.platform=4.33.0.v20240903-0240 diff --git a/TrafficLightsPlus/.cproject b/TrafficLightsPlus/.cproject index 60ad164..cfc367e 100644 --- a/TrafficLightsPlus/.cproject +++ b/TrafficLightsPlus/.cproject @@ -219,4 +219,5 @@ + \ No newline at end of file diff --git a/TrafficLightsPlus/Core/Inc/breadboard.h b/TrafficLightsPlus/Core/Inc/breadboard.h index 01b9536..7eda2d7 100644 --- a/TrafficLightsPlus/Core/Inc/breadboard.h +++ b/TrafficLightsPlus/Core/Inc/breadboard.h @@ -8,6 +8,8 @@ #ifndef INC_BREADBOARD_H_ #define INC_BREADBOARD_H_ -void breadboard(int); +void starttick(void); + +void trafflight(int, int); #endif /* INC_BREADBOARD_H_ */ diff --git a/TrafficLightsPlus/Core/Inc/main.h b/TrafficLightsPlus/Core/Inc/main.h index ba578ff..4ac0ec9 100644 --- a/TrafficLightsPlus/Core/Inc/main.h +++ b/TrafficLightsPlus/Core/Inc/main.h @@ -63,6 +63,8 @@ void Error_Handler(void); #define YellowLight_GPIO_Port GPIOE #define GreenLight_Pin GPIO_PIN_4 #define GreenLight_GPIO_Port GPIOE +#define WalkLight_Pin GPIO_PIN_5 +#define WalkLight_GPIO_Port GPIOE #define PC14_OSC32_IN_Pin GPIO_PIN_14 #define PC14_OSC32_IN_GPIO_Port GPIOC #define PC15_OSC32_OUT_Pin GPIO_PIN_15 diff --git a/TrafficLightsPlus/Core/Src/breadboard.c b/TrafficLightsPlus/Core/Src/breadboard.c index 0493565..56e00f5 100644 --- a/TrafficLightsPlus/Core/Src/breadboard.c +++ b/TrafficLightsPlus/Core/Src/breadboard.c @@ -18,6 +18,10 @@ * RedLight: PE2 * YellowLight: PE3 * GreenLight: PE4 + * WalkLight: PE5 + * + * Done: Traffic Light + * TODO: Light Dimmer */ #include "main.h" @@ -26,30 +30,53 @@ #define R_Pin RedLight_Pin #define Y_Pin YellowLight_Pin #define G_Pin GreenLight_Pin +#define W_Pin WalkLight_Pin #define R_Prt RedLight_GPIO_Port #define Y_Prt YellowLight_GPIO_Port #define G_Prt GreenLight_GPIO_Port +#define W_Prt WalkLight_GPIO_Port + +uint32_t trafftick_last; +uint32_t walktick_last; + +uint8_t trafflight_index = 0; void -breadboard(int traffSPD) +starttick(void) { - // Traffic Light - - HAL_GPIO_TogglePin(R_Prt, R_Pin); - HAL_Delay(traffSPD); - HAL_GPIO_TogglePin(R_Prt, R_Pin); - - HAL_GPIO_TogglePin(Y_Prt, Y_Pin); - HAL_Delay(traffSPD); - HAL_GPIO_TogglePin(Y_Prt, Y_Pin); - - HAL_GPIO_TogglePin(G_Prt, G_Pin); - HAL_Delay(traffSPD); - HAL_GPIO_TogglePin(G_Prt, G_Pin); - - - // Walk signal - - // Light dimmer + trafftick_last = HAL_GetTick(); + walktick_last = HAL_GetTick(); +} + +void +trafflight(int traffSPD, int walkSPD) +{ + uint32_t trafftick_curr = HAL_GetTick(); + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_RESET); + + switch (trafflight_index) { + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_SET); + break; + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_SET); + break; + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_SET); + break; + } + + trafflight_index = (trafflight_index + 1) % 3; + trafftick_last = trafftick_curr; + } + + if ((trafftick_curr - walktick_last) >= walkSPD) { + HAL_GPIO_TogglePin(W_Prt, W_Pin); + walktick_last = trafftick_curr; + } } diff --git a/TrafficLightsPlus/Core/Src/main.c b/TrafficLightsPlus/Core/Src/main.c index c569d6d..a40e2fd 100644 --- a/TrafficLightsPlus/Core/Src/main.c +++ b/TrafficLightsPlus/Core/Src/main.c @@ -159,9 +159,10 @@ int main(void) /* Infinite loop */ /* USER CODE BEGIN WHILE */ + starttick(); while (1) { - breadboard(333); + trafflight(2*1000, 10*1000); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ @@ -574,7 +575,7 @@ static void MX_GPIO_Init(void) __HAL_RCC_GPIOD_CLK_ENABLE(); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); @@ -588,8 +589,8 @@ static void MX_GPIO_Init(void) /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); - /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin */ - GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin; + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; diff --git a/TrafficLightsPlus/Debug/Core/Src/breadboard.cyclo b/TrafficLightsPlus/Debug/Core/Src/breadboard.cyclo index f4fec1a..5d62bac 100644 --- a/TrafficLightsPlus/Debug/Core/Src/breadboard.cyclo +++ b/TrafficLightsPlus/Debug/Core/Src/breadboard.cyclo @@ -1 +1,2 @@ -../Core/Src/breadboard.c:36:1:breadboard 1 +../Core/Src/breadboard.c:46:1:starttick 1 +../Core/Src/breadboard.c:53:1:trafflight 7 diff --git a/TrafficLightsPlus/Debug/Core/Src/breadboard.o b/TrafficLightsPlus/Debug/Core/Src/breadboard.o index e8679976ecb17b351f05ce2145dc62294368fa30..17e5cf74495b30d171b741256dc981ac2c73696f 100644 GIT binary patch delta 320375 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
=eS$xms_q7n{9eFPEcR3Wmxx)7$2TBoNsR6fQ zesMgwmGEV>6DsAuND;8B{FQW{Z5e;34aSu74PyWm{7?yaU*rEkF7WI8-sNCc$v;CW z1y%gtOkj3{FQcPcHGi@Va&Ph%ErS*{`~yt1YWW`(({`hdpF=NeJzuTF;4S`n+WR!{ zlOBamjrIEhANu$&(~k2F-~S89z02S95Uqaxp&uY= zfG;K2?jZjuaxmZHANm|)_xaPSfH}l>raj^V{>KdvG0bnx!z7IG7t#vxkpC@RB{0f& z(9dCvZyG>roF6cQ)&&0w6^l;t-;1RB_bL9aC%|o*-|;SZ&+rxh%Zn7e^bEv%2tK61 zpQm6Co$9;=#dLe>Zo$@3(EA92X$|xf*y7OIEBJ&wQ~rXid_1NA!Tm^pKtXLH=z;`` z$!8ucxa5f`2@y<=0fY(${({<$1A@JjKz2|tp@yU|LEk-~9ujy^+CjMBod5_tET}mG zZbt+vA-F{dDyRxEQn2hSFrx$uR|7-~o^Az~qk_v+33E*FGX+s%1h3HzLdOL!xI*9w z!IQC2G*)n#0?}~-_I-55I|N%P?3o}~N8kHI!7|E{OcFft9F$2GaO=P{MR0T)gsFn0 z(?CfRL_ffLkuG?m0w^a1E6L@UA$acs#xe!5>i|v({-6WrX#w+jD4HdxvO?e)fu#|2 zX9a&yHcYnQPXoX?fg_iW899PE^k-Xng2Kn4e!gHHeHrZu3i7Az;X;7vgqRnFE3 z=H7*(wSs#JfI2~sJLaNZ;6?Qhje@_oVAh%hkJDbf8NLOuZWG*!ft~Gw%Pp9T4nglt z5OhKd2Vj@rtQ3RYf|6%Je_ODw0iZ|lP87y^1^N(xKEY2Lq3|7nE7jWF6^-D0@BOF4R3GTlZIw-)i zSGehAi1!zIQiffCu$*@9fx->@G5JA4-Dwc+6QU{=pCh4f0O*5-1LQ^x5&lGFfT6;u zG|ck>p*ID<4+^U&g(6HC8wHd@!mCR$CE>zjbTBw9yh7N*lz{HX8)%CQYX~G6GB%}-fb4BM#VLWYGGK7~lpfl4UtgeBiQ^GNdGM^Eq z9{|N!;f<@n$rk!h?!`HwcMb&R2;X}N6uH8UCBQr{oHGKHJfW73#QDM=itJnv&K-oI zmxKe9XjdqFdjptV7FM!BP%Lb|i?I@6Ddnw|3WsTBDHl3?CFrdX#)?3HP59m~K&=vH z(Mp#vTfH-U7E#VT>GLLinu}os+__cL1h@Q$K*fRa86> zN**K{%tmLhX!2)(5K+_)fKbtSAB=^GHWB$DQCT6lg^P-|LyHIz>pEJIqTmN;MTz1m z9(_!tr@&B*$Rip$9Ty!y<$+V2$Ul_)FKMEHX>dyyaaEK~ zbsJ@(TDm%=T=WW65L^?j8^SzY7cF}n%2bMW%7IxW!b^r%N0dXmyK2#@OVFuC^spSA zwW5zGy{S%=PF~4+Q8=wEj$5L4{}0VZ(HpN}5}HKE=xf+4Qe}d^MU?(2M6`-lliRmV zv?UQ*w2KxT0O$}krh<2;Xe%Wsbcs}y8qh5=U4?14MT1KKdPFIIf@iPj%au^APxMkX z=$(S=rsA8?37Ye7FK`u1N4yeG0#a`k;tayGaPiFUG~+K9-Tj)4zF$0tEJ zD%#Kn!ZFd49UvGNornR-gh=uU2&P2&bQG8tJwcJT8Bs31WQyBnL5tJkKj}ifEb;r7fO1BBpSWQ(s;Oyr#SiAl6_#5c^Cyj=0xJy7Pn_>dg)lrPSu+ffR{C3NNNCGpJ}x__cj z?DH|E?Xvh+a!p+kdyp5lNSw+Cw_@>6>maE_d^#J1SH*Tpy($xLryEep#bZ1WREQtl zi8;I`-bta@N^w&p#;U{}bXd6|=5SzWwb+?QG;J3L(1D~wylN>7?G(F^SEWn* zC#9ivi~H__?zTANH7MF6uJ{Tly<$};wCEGxzYCN*;>fF*!@J_&s9?#_FaGa)h!_xG zdKGd9#RWeD=bm^KIs5L5<>cTR68}9HC?n$GztDOpKK3D)j*27ci#I0TwGsly#o8!v zn-JUR05&PsQ1n7RuF*@BHlFleV56KMGICx6z z@xbwtJX#A$yCiR&gEHQdddh#ys{qa@?aXhloh5HN8%DydUK?lDO# zIf`N=PqHv}T=FHYOeZ9J%Fv3H{Fw~8IEj+Z^@$RHMk|BR%NTv}%(dqv=#E!p`BI&&p!j$pdZOJXUYl_y#9B?$5*+bO%`f@H`Gie8j> zZNbDANaE@GnM;y=bfzqn^lk>hWy#f@Q09uHWFGlHizKg+U%o`5p>(oRi69-|s>DYH zxn+_?9%z+IqG&&NO>(RelCDd}r$ARJIYL#$Rg#0tq09|QCDr;=OP+rOty+nSBEfZ% zV}8J_mwded5*j6MQX*uNWZh%n(k$^((C@ER@&z4~+ay!;&b3RL+99b!Qb8Z7P6?O3 z4&9QQ5nyv$5>E%e9?5rfr&O;bh`9AhhBm;MJCa4@+`KC}mI!_OB^@3hACQEK!E8`c zXa?(hl4sIDeqR#(B~XSW3S_Z4oE}K>UIOo7N&5oyjz~6qjn+fSwJ=QEs3hS_fH6r5 zC6|p$3bSCvgrqwZnA4Ib+C*tk0wr4d2SwhFN=yC)`7!CmOialMX%EHkVx`L{ z4LeTy8I{GwONI1_OK?bkC+}jSbYlrLO_KJKdoNj9Ok2JbX(LU3s#HyR18LG^8@Q!Q zi^`xyhI9wHNHe7l@PDjM-?Squ<^Au;jB>n3cco#~SlD(Iu zpSJ@POT|)v66psspevQ;xxwsm=_DoUR7hW;L*X^)lM0|*mp0#m+Lh7^RA5yl%~n8} z8`2oZWe`?NO?qf?Q`-FZDsxCgW5u4WUb{Zb{D`2568rQ5svL zbW{y)P0|L6$Tmv@*f63+`ocBn+bYf203+I@+e-o3rE?V+>yZAHg0W8N>*QJLl2+sY zpYe7}&(O5pmd^e^Fzu0+&_65oN_WwnHht0pip<=R7SLzquJk}M#`>ijyn#6&b*EF# zpwvS5s^62|cmj{&zVwR^q2ZA9)e_J>klr)Gz+vg1%YZo|owkGSq4e!0a2b^zYg&Nc z-k*^nEn66cvE8zGs=N1*iD}jHl|_`2|8tK_Itv2* zWO*miyI1xU?Nj_^KgnjE2h&%n5=Rez#-XOx=0~h)<&Mv!?Hc(t2iRF41-w&CE?)r7l}diM#(AyVN-aNLz!bT2L+a5WXrYz^|&nY2cVpgouKQxV`ZzJ2b(yV^*G4mWy2IBNRZuK zidLd5>^zJ}l8LC?D_Q0cf;>gGg?7QIvhy2ZM4GI?518o=S=@0jJt_O|V@S%7G3Zfd z%Is9`d`h;D{Boyd4=8;uOSYySm}g`$a49&QmF09m!))2#G*9Pbf?v>?BkQGLey%LU z6Ozu$dMS{6L6-FkP%g^Ue4rG_F3>*vl5CJp8HF;(HgfG=mTmkAy;o#Kl;u$*`{YM- z7Rz=ez={%?BLv(^W%p?Nd{yR76%S>yudJAaa@i>gu2;xjIDzTDCR;WP@z-U)(;=x+ zCRh*ct7L*o*n2}3l>jc)vS6x=yeWH70`WC6ql5AUYh}kOpkkd&<%w3k%t70RTe9=Z z02*XcJtQ^CmS$isn`9Xs5Z^2_UIb{7xgG#YtL*<4f_IzD=R0WME{oWU&JNihaUkfF zeM)EHF4>m}P_0{LdmEj%WoKj{?~#3Qg7%-ivaXlV?31bJzN$O2_H=-|vQt~2Ouww< zCs;8cTOR;6gR*~5gUvk|vlZ&!mmQ#Fx*=If%jp8^ zQQ0VMMaE=0%1|AbB~q@{glzgO)xS^5KBw*Tl0tpcFWzWFt$g2kTT-^}}G73r-$lX!^F3H1W;9V$RxB%iW%g@r@>5BXl zI@c7*$4`N-Snl`|m?iR$xM-EhE4#t8T>jBVz^ss`(RBgWLx4=6BPE$3vQ_oh5!5WO|>#&&ep%9C$kO6ufS4x&{r&!hmrE%}G5FbNIv zZG70cFM<`la{CsT)+f)TEXg}^2i#-qjR@n z56#*h1?v+q^;5{6M{BQQ!78v0RD7U8XOO}`CARw%)ASh&QH)Z~VW^@lkNlqp6f;^V z9HzKW$#91h?=^uwTydTbB!?As`RF{NxUv$H5UH5j1f8N3)-rI5RxGCgz%fPLZ$ODr zG?ziqy3#VJ-;HD2iZenrb_a2Zg1{0(#(RNSJF=sks*T%`9Ecl8(>QaC!uv;06ICNJTz!Zr+LMilkr zM|r4tIR>bsiqKPFI;ME`BFvsrEL;J((~4(qqjN^lNN=vI^2KbByD6Wc$`E&@@7vJH zL+K^K%y=sMsSL?W8MOxFyOc-iyX&odhuk54%0k4y@vV(`#R0ut`-uMkn$#rPB?Jr7LU5+jdg^OjrG|7I-OGnj=|6zWzA1uldBA02j1tE%bLJDPx=1$ zpvYIIPNMUI@|`>oUR2H!q4SEeSOR5=l&Rz~DOR4P&0&f1#=Dr&QssMeioB}aPRneW zav9}OmMfoo8$2tNGn1ISYsz&D`u~;d%Kzxk18yp3Q9@*m^5i-wT&w)r2cS;5o_s%gdqLpcuiXDBOdC*E900`wZ9 zs|vgYz4xe|EQdfpRV@`<1gRos(AuZ^C=%rRRUx-mS^#mQ4Lsdca1vsFR zd;={Gs@|1C!!VVjfxP>NRO$rqj#Q1&u{TQ9MJsu1#QPnIy#|xx&m~us{Q-HElyQu1bMQmhu-cK)v_@tld77cmpe`M7QNi*D)-p{Csiw~ zV3wh3aYVq-OjSO)Z%?Tb7Gd&FtI}%0?VQT}JE)eUdS?Ju znXmeZoctG5ACrgnqG~c9ybDxow*g#IDP>T!NVPW<%!*ZIYGkzF`}Ab0X$S~xQek+)&6gQIi?y&2A6SF{ObS{svW_2B9kiRJo0}|sZysP z&|ST(5~v>Pdiu*tPxYJ-bb6_mQ{aA=x?hTxxBA6wXt-M)djXw3YM%kLeAO$cRAG<$ z)wy`~{_5ovXbDiydmA879YSIFAhmfe`ZgWR!_|GcAaER3cTr~U5w)i$ z1|!r<#_2^=XWs{Xl)B^)aH7@2^!YuizE4}@V`~3@FbOg00@`yOS1)Kr=Lz*%Dtd`k z&-)lU#i_>^Lc@4m+s0|A9-g`u<$drKk%iFqG<0|3bf`boCvonLDX| zl!_EG)K1%B(#fM7?`9R4i4Wc^oKZYG;ZxmaFGc=|F{g2kpnMsU6YK_qzI98$?v9IqeWpr4A6l z-W%$_7J*B(x|CA1Z>o3F7rI8BodL^g)$2V#UZ-|*&<~+reVcANyrq7U2f_yRmn5lC z{a7z}H>tNapw+BiQv#G0HJ8e8Th-f-Lj5*%Yy$+gt4k=J-Jy=A$JDJZqO_3PYAq$j z^r#;rpIxuoL`80W>V=d6az`CWsh0ifKTQr04yeDn0i_1jp;9otr;h&|g!k1)eg+s) z|3gQRVf8z7P#saT4Y28r7f($qtv+6w3ngIctw}$F)^5#CJEqM?)8-B> zd^I_4P;HN4Li76n zVw##W6!eYK_)_o)nop>>Hb(O`?d*?hHrD{0(98`3msri>31G%) z4qkzTc+E7qI1@DYGoXbdQPVgL-I6rB8en0vrh7e5Q#9;Rh)C6ZL2kA*jV%dm(ltR^ zfRh^UBOuJsgwpvSQ?qBEkEjriNSy1)6_7pv)x=pME)onj8LLb6Jx{ z`{pZ}m6Q@xq=|SHn8g~G|3ytTE|iT{sxf4P;HqXx06>{$&MH@6@Poc9>!>283lO~Lo*=Ef(%B*YAJP`wwR!sy|U3O?TZwKhq z1Usn0ze`g^QQK}!DY-gtYwl4oRF7uS?~vQ8`I;&``ZTUWu(_iNr(}Y=8qT-i-LI+G ziHA0zNu&D-1~n~6Xmq-#d4Upj?rVM^r}dC#UpY`7XqH}wPQ#jKEMPXGN&X204>hYp zD1bhyxe<-tG0ps~=pENoQqlH=rg1sAO>2ImRenYzo(*MOwMBzq>ZZ+j3tG5q2X{k~ zr*Vt@V+Mg*sWWV+=a@_}OKYRwfL$!PgPaV+mPNMUm_6Is9glV5H z1?C~`6O)j8Si6D15$)gKL*EFkh}>0?S|goVqO|kB0f^SlTL)&xv>HTt9ZoS?4Nd8B zt>zyvJ)w==2Z~tj=w?WY)9$50#{{j39CC@;Ry(F7N&9Ocj7ihJNI}JPZCN%tPilSV z17v7BMxj%tc7hyor?sEH31(T^1`Y(C(JrNHOV4Wmdj@pbS|>3&9p|)iy1^kwn@wM* z^VJf;n!h|sw9yUUO}p{*c?=Zv<>u^p(cx{Z{!;HJx@U8%dyFo{7A-QTnn zdg-E;0A-i%i*LZ&TepU)U3Tk+DC5OP_u4hIe059S2g)9ug517)b)SWU&R^GC27Lo` zU(>NQP{*GGxk0+njnHDhZjuF^f_2?5()lk$w~4B+LUqntpzs0Rb`vJypzcE^P{VW) zbWlF5^J{}nM|4+w@C+h!-sHiL)Ct5Oh|<-Ovmsi?qwImBy0_`dhhw^L=KwQC_bKJe z9oOx<2h~pKhO(ea?-c;RJBN$85O_Q%MUHAGB2u|wSu0U>v?#>}_$<&$X*5XsTv`5f+TIUprR+etj zdob{fu52O5&*~B=z>=-|3H}6!(>a}kjv_faO%u4~>K@Sf@w~3c6ISHuc9+2JG}m;L@w}p=)pY zbW09GUcat^ZX_6R=;|nEc~Hk9H_VXkzhclo(9L=usKdIV9k6~xw}i?qAL`~W1sK&` zPl7UII+tnCkLzrNIidTH>Lw<2&*uV6>8k$%%8c&CMofaMKJ6Nwq?`WjRLFJL&-)#~ zL+?Rz=%shOvKbV+^h_5}c~)-^oO4Uy|3Qbfw4XM^ncOv(=Xf#4fpDs z=~@SWeZVWwDL_A$9&DgqLGOByzQP4u_UUbO_TR7H97*rGeq$w2LiDytFbmZ$z6_Kw z{YnRUwhrkh$gLQzpZNvguzq_cI*;gOnV6CYecI1JjnqGO35G`LpN|K(qx#>pn6+d2 z?etNM(LYKzo*mcwuE5v{y)XTWWA)oJpiG?JNY@?5>xbwEpQL~AD2zzf2N$6;MZa+| zW%;M;50k_7r2g}lAR`hl0B(^>tZOpImgD`~TJ zPG3bAZRF^M+kly?cO=8Y^ZGZ)WuK>C{tD>w_1p|tR;)LE4a^e#zdR^Ys^8;7_YYpx z@25P@GQA(&%U7VmF`qF#S)4Nz|BvuWSjpuhSrT8;XDQ6KGaYSJ(L z3syAi74#pfE&9(FLsF}L-5Yp6+Vl}Epl{cEQeJR}zBCJ+o%)Zdj-gB6P0MVLzL08c zd-aP(K;Ea%qjjoZpAZNw2J}f95De;5;?Q|d@A|(0seavKz#P)+W`VV1M8AfzqaW%w zKMAu(_1%wRX2ru!?V^xhu1|ju4KBMKhK{en+s9Ba1Z{i` z^O+djV>nEKT|dJbny2*7@Ws}kA= z8=R;xI>hkBLZE~i9?(zhfZ;y5~jI(VZ$?gh(BUj zdF|Ep5Ju(0R}AsAmK7OB??8O9 z!Fm&|62p~mA+XdCT>_M=hL6{Rpv<7MfoZv6H~C#F3_%GXxMp~sGK;PocG}RYG`vOy zuvLZy6xz69*v67*^|n(rOrHVlLVY&OMOZZWyE~=`ifS2$W94GV*wK z8Ad4Uz1wg>4b0nyKX9OMIQ19=FQR$J@b$Y;@vgz|E1>op;;8I@z)(c1*P!9VUC6y> zc;6eC_YGIYuy@GNMa%31!}i6X8#ctg4oM>hMJKc$H6)z@7&EM=NX57z_$+|CF{}x| z!?>Q}JD$c_TR`scG9DQP;V$EAApqXSm&u>M+xXP?(89+!D*-sZ##!_`+GAYzDCF)n z{+$EhZ`4M@&;X;81sVn#Qz+{%$T&kDrhUdw-h;mTjbD0W)u?cf)+=Oee@`f z83$a@dEEFpIU7zG*I+GkiZ!L$;LwzW=%0J zvw%F+=m;T?K$>xazBTDaUy86~7-zkYdCoL0Uk0Y9jXT}~N|rH<>Nd_8ox368oRQ0e zqB+LT$zhXgyiC4|%f`U3(0Rpp_GMUDWbETW-(ur>O57|luAxm@sd3ip0Odw;7z9-q zA3A!0dd+xsEmXX2EX{=8mBw%L!L-VF?sLe!VHA)Hui6;djMZXVwQ^wIHFA7mOux}e z0pS6oH{CBXXk0{P4EKz`Jr33G8xx&DK4ko95(E#7rzxRn*!XNDn2i|Q&QbjDp|P3v zilfGFU&P>;F_8ind?Q^wxIp_Aq%Z2JkffL+K=5rtir`y36zSF|hfE3dl*3KeY43B`G(o$%Bc=y`W4as>rd1Ibj5HN~f@YLS zFT_Meo4%ko|EMW+8_sNY1unat;i&!dZ%KOi+&0rER6pNt`knOcFxCA6f=*L2k`|r1Om37S(`_;>gH5+hQ?ya;G4)aSzSne% zj&Xgax5#DDZ~B=wI|HVZRPZopQtRmach3|^#Yy)~o9W*qhD;8sjDBFcQVv6hO(WzL z88K;}gx(KLl?L!0HO2LzbIkMxxp>A+I!Y^b_E&tHJrZsrsHkl=1ktf%;chk2CzYo2Bqd1}4PEB*uhE_0|m1bUkfwV<`z%=-#0 zA9G3>9E^!{i?@|3qQLL+0SmfEsRQwL{ax=J}Kd9ck7` zz$VJP^Ia$!ZT@Kv=wi&BB7o!OR0~u)VYbje633bq^!tl58=Ei*@#eP^pkab}|5B)y zXrB8$K$3Y~6PP)Y&35{@rI^17M>ExYuNiXF%)(QkNH<@s0GpHM7wHR-VeX}xs7&+6 zw9h|fe&Hf`pEkeqBRaFp7t7E(V_t9?s+~2LP;Pg&dF>k*J7@lO6LiWkPt#^8*Q~pV z_u{-c!UdC%=P$*E$GYzIn+LHxwa5o@+_ax=_cRubUfr}SQ2RWe#vs@3y3JR zEPe@WE?aWwK87on7uzv2MV4@Kj~83SF`y{1OdP^ksU;H7Rimdip=6(m>eU>&~P~5S66b*rQ zEiY0YXTK$ivh4>fCQ7g!w5SmQce-b}Nu{#)E%UL^ISpC*Xao1al1{;@Vao#AF^*bR zQ8nL~rJe$-;}#`FsU|FAj{{}W(pL{7rYxxra^1UHZT|-xH|sDRU)`AtxU({@39VTK+DhSI1CYcttaSF92y$@~&tV3O3bI{sG{_!yD3*==uWc`}l znc>zy=$3^D>y!;Bk=C9gpo_Bpun3ZlS@$mhN{ls>LZZj5g4aQQ!dj)E--y*x11@pa zys7G;*6C|OXyi^XfMcftn5x=xO{XlW66?j)Xq8&~Y3aXeokcOPGV9G|kYBR~lEd}7HIZ&BsI(5#p{~yQ+g+Gl zZ_Ovy!7Zzu0^g1XtL8X*8?9xuQE0L%J_TX3mC+4>E!N}fK-g+sNlDIa)lEZe`+D@PLQETscfHCX+5srcBo7T|ID+LE#$aF0zw#|3{|a6eiBHZO0C1=_5%mIc|~w1V3{ z+h@fPzu#sX0(r3Q6-sstv0WfvQmAco99o3gR(uXy4%yU{Ivj4RSpbv>+fBzJu!*$w z(d`aVwsmO`am<#tA53FxU!J7**~X}b-f=dj2(5SJ`Pw;)3nSi%{mG?I$XVD6qMF4wOr_f9dpFXj@I5smr#%^P$BR8@2*?Ep277u)f$9 zSqJeYw&~SCDYd;tUYx78_sEr8X0y{lrrfr)3S25|C1VhO&G!6a+J9cR1)PQYl{WwX zAh61ImE0*eY)|z;Zne#A5a6b5do!%4v4wt$BG=upjYpWHwk@=?9$_H2`k* zwOhf>-M*H-N?!K2tq{M<{_rT~!rQ)K6UKJie@+D(AN!SHjQQGUJkYt<{`9{<@wfB7 z0$qT;H5_1{{TbTD?zf+zxKyxxmKv%Zu&*YQ4m#}FLJWr4e~AYDVY~Ss^d7NqTo1D& z>@T@MwMhH9DX@vMKiUBGqwR&o0CDyea)^(&TVDW3um{b@Yu+aVp{hTh_cTw8<75nrMtSGX#Pzrvreef{G zO6(Jqb6jeF!T|cK_Wcy_D6@}j!gQ6}H&R7dg?)y!xMrWX2U=XWC!|7rrTz2^FrvzC zp>Na;`(P}lx!V3bmGRxQfATYZ|7z@e*Md#0y=o;|b#?{4*7f#U3aQ?*|J(!m20LQ~ zP#W$3K8~>_yYV)3YPL6(fuO}+y&avc_Q1OUZT6BpV7A-iuL7mRob0-EO#lDTXaAXeC3o!VpFuxhKWB!DgZ8uJPPu1ye*>rw>>oaa!o&8S z3baP-2M%H`#_Zj6;o7)8l|P5nCDZn`e}mbKJ--gX)nzfoJ=|Ozn}Oo)a^(TY zJzVbgqUGrleURc0UM~K0jNIjtMlpJC7dyQPyIt&O@hE&;{yPPo_P7|Ru+z^)w-~Lx zF0+4uTz{9dbnFdqSxO}bfi54FfFQ`_5XBGnxxBv*;`h5mji58wW#VT{LWoNzO;D)I z<2#|~0hb;B&(U>2MRjyxABfUrh3%|BOff}Gj7e-UnwS_(tcj*+)aV~eOiW_3efRCs zq)QVJQ9)EtDGCZA2uN2zsnSHc6s4m`|G%4aJZGGlTfRH*?VFil=fGnmLi>+3z@g1YyW_-ROx#?5S=DvR~FbWT(rdnt!k=jyBrBtda zL1UTp#ZEMqOQ)VeQ-yRtgeI$J^0?_KEr&^)@vGkvpkl7%e?+0j&($NU=e>O?$X`|dMT}J_c7O9Zlz*cEH zO=oS=rl*koM0$x12X#uhEE>C{hO}>dDorRt?U^*83hdp|`!o;rNb@O=xmW7<3Hth^ zjc-6$zf>Ith5@NH-N!H}ol61EA*r7m{r%hLQpXr@ypVqRDT-lfbt%NWlpfPV?})U& z5`agg?MdJtlkVFKP2n6Dja2b_26@o zRn|bSv&_l^BrdXZzk|e8wgc&ytkE&q+d&|8lZ9*1>MlEU7b-ktf6;{NDQl<6*h|Kz z8$rBfOX;FSAKCUz=sPY;-G;(f_BR9BezIK3clDPYodQXK%!*Dp2FhNe7|;pXf@nwy zlGPMIbg=Bl?Pv^YGS+(+S~Fz_Rzl1j+541!nk9SpHFRdns`jClBm0y-rMa>irFunYN3Vn|9{qv#MNzPjhc4zq#%FA$(Ybe{#RlePg&OaQJ z>sv8wZt~vGP`Jx~qU>1@`R0v~<|$v31b#1hnI8aq%Y70c+edzXAyD|schZX(AXh0N zEl~cLTv;dNKTw`Rko@3hkP<9EmH@sG`Tfnnds2RMEij#yH_~);MlQi6L#)wR`MoUA zgv-B70b_)m8;;sJ`Fh$0M#@)z0)^-0(iYPft$1S7f=?y3@$%VV1{<7TE z5wfqy{l0*v7*JneyLi0rZYM zfznvA};x&K@+K9`5Rh1M7HHWSbc%S-9k z{8HY=pl?LJA|LQa<&WqL=9oNYCe)A1`|8m+A(zl^Y*PN}VKh$3qYgp6PN9Akje12Q z`5_$@f&J)nQv8iOPmG)u!zHM>DAWS_{kbZ#-$dcAus?*tL$PZb4E0pZxeG8piv6@} zKdxB33h;du)BXk~KSlSCcv<`vO`oDKKrz^Wz97ZgV#p3wyy63r5XFlBGJ6!2nmL5suliql&m zG)l2`5Jj}YI|`;(O{c@c{*PV-)WUL0GIJ>o*t?r)Z^jE?&Vi#E4#1 zoT6{ZHN`itp_ZT+JUk7*zeL3c*%-v@3hC<@*&B+&hu}|AB+*HjWQE5isJN-Ps6k(f zqL7EiTME}t@Oq^yQYnumL$QS%+nI_fI&F4Gv7LNpS&C`ZV8~W@XFzn0qMepExr$7nBI4ir_2TuLOaR+PPh zXHcWKNK2nuR`I$qTI&?CiC}!BFn<7r^@>+;)0@#_#r|4|X;8fO0TebW4wM5^lcFR8 z_BJaHmqB5RLPK|awkqo9LRy>Rq(6i`QEVti(XJTw1hfvtbUHcEsW?s{l`h2|+MzyG zsOebSGX<;r5JTFn@S{K5)}u)K5Sn@wM=5u)PqEe$Nc$C^#X{kLVlJik4=UbXiM}Dl zyX2mGuHc+S;|qn=UZ@yW^pThErQ$8hWExTIdxpkQMQ$V-CluEcp>R?$z6vHyDZ=Pa zY3P)5Sh{#nubkQo4oBr?N`!P$UVj@XoRxVz^tmX5rh(s8=}pebV@l6rjHR10K?4$Z z*=yDY=vu;;)=dd!+znEoEW^DmjIe z|8he4355!Sl-KEuU$F8}C`L9!S!e{aPb&Kiz!<9BNcUHqQodaU#xqKj@4lO z3s;VkV>&{4@(GG_N>e&_5vf$rHt@W1CB=>|C^s|%(?wQ>rZ}Zf8!*Ky6?AFIRb}vBu=ko$Oy)G1Owov3rAG%a5&G^cReH#Lpo|&B$gm~Kf5;P2s&sn`)e5Cc zJ>XX=GduzDq4JY(j75!d3Ega5t9*6^{B_Dn4xl|!u6!GO^~zm$LGoDXvkFCn@&;WG z)Tmr~3w=#W;S*?TR$ib$R*TY62liHF6y1^3rhJz+&rew8(GFm1S3a?Tg&oS&OaSgw zemH`G>QcJ4LfTX1JxU~bro6EZecj4;g;3w445O89ud;X*WcMl8g@V0bxsP`11IjER zY#CHK(n*OS<+ar)o-6d= zW#~K5G^za235-)pOL9HvR11HDG`*^rW>ZJia%+${sX8e)+ga6?h(;Gx4|z3QRRI(k zJ*GN9BkHDl+77ebRRiP}^ibt2LgA@uWvTR1MJj;8TP3~_SAEt1F##%G4;lki?^9^ygsLwEDuPrW&~H0fRrx6zLsSbW4t`Q)Pgy0Q zsuY@qPpPEdm*PtmvHM$bg&Z&0K18Jlx zjt=FXS51Bfh6}0|x|`yns_#SaMX7@6v~;w}HyFhwRWkW|FRM%_0Cz<-{R7luRG*Vm zB~~>^e>5jfwaNlTyy^^x;(u3F=~1x$nkwu$6eg%<)c}5?>ZTHm*Hrb+o4CaYHN1E!m*MQ(UnDJrW@@ZC~qQ|3PTVR<-{OF*&M?r4X8{`izqO^Hf{Of10maOBXp5s3xaj z5bvrQ)}!&Bs*!?o=wP*JL?;)9_~^{F9@C|8A0dSQhs z@dKc*RPCf>HujYoPv_O7UMxp6V#2eD$c7k(aJlb$BoM`&1?L zyX{x`e~a3Hs`xgFK@~?16+^00a-2L@#h*g)LRB9Ogu^QFP4vA~oiBrw5mjp*Fpa9% zdzWCvm}->PN8_rbA%K}sWsqBAQdK}4Q>tzM%~k3NN^a4se+fgQqne!#5+`-=-)MAJ zSAGsnF6vp^!0xJ^83OEC}?WvY6f?6;21@?d7@K(20 zK&X#;@*FyktH1jU9KPy0H^}x=e}56C`Kv#F2OI(FBjo4}RG)tXLvlj>7JaUQ)Kiq` z6Ra-&2`EC;``(1Glj=>0=nGZ9MoWTIY6AmEIit2M0?AqR{s1t9s}CeE_3= zPMui@h>_|kdLkFq`~vVtso(1aW3<|m&H-If7oCIp81-APLTIeIcQ4+AIQ2}L2;$XF zbjJ3oI)YA{T~oX5ge?i`Sz}O`sLrlOab5ks4;XH!e_%n9q_z*G{Oc6;QhF6`sXsA> z>{N9$<$tEB(>(y~wmOpX9MaW&JyZ?$BK0qF^cAavX-9ouJg;|<>s5cb7$kk_Vw&9g)yO-;o3B2_f^ty3=Vw40Qb&9R6wlR*iQ$F% z6$1>yuzCaez(&;h)H+HcA6M^x7bFv`T6+rBNp)&4s#EHJ=(nQRbkWMfQFG`N z_?)Vwu+k)y~*v+5XX$2EuPM5UjG9i++4Uo%WQiU5r*eJ%qvwfSf~p^2rrCP=d+ z4~@Z^urt6EqWO(Q<4H{=opKA+1X1GHDb2zzpbyhzQegMA#+N4JGn#bTJDk-dHNvEG znyb^%7^$(l4}|A6k4j;6lt#$5qZ+L_*N;)Zq;aL3*2|jyZNPm+(@WvY7|ljo)Z#UN zehQMSnlc`0*EFGS=u6PlQ^sbZ#(O#tUe`451ne6cOS*O=Nn;iby~&z+v!VBjex=C8r^~TC*$=C~7o<2=vuzvM4*G zPLsGD{EsxxDY{m#Sw!Fb$C`vIP}rdPc{flrYW^$*dy^)l0??W@m&oVPqWPU}32N2o z4?tL(<|Ev##2P)(T%ZtgyJn6GW7(l`rTtK+<`*B3c4-F4soJfHr?q&G<}13EuUB({ z91(q*KenQ=U-QZ=@C|5!M6hsBb4US(AVAFUG_J{^CW)U?>3Hl;~<6MZ_Z=`vWM*KS@821jj5 zJft~kEsP<}S^M)3fbF6UoefG??J7!6Ii@Y552L&GC;D^F9@^0fP={qIUD?XUzS z-mG>f?NoiVk#uh3xVH6m*yO8ygMMTF+VM>&0<>MU4h+=VZ2_1Q+OTh+K1kb7k+WcJ z2Zf$PwEe!&6srA@z9px$t87sV(?-vN*{8LcOF(i)`vnDbBec18XgsI=_Yx>0wd`_Q z@}1WX(t*?q+6_xkT-0W!f;38db0;81YY(fT@RBx_yyTa)@sGi9MZ0<*iWu$hAwU?b z-AL(1aaz-huq9r5l#Y^I)t>(neAl$E)5(qm?Su+=6Sbi`A?3PuPa{y=&~9M=!UIau zIy#`5tbOAaK;6{NUJjutT5q~X;+A$9o!w5=a>=2drfs6H*KO@NTJWZ8U00*X&~^*K zm#G~+3Ke&>`)DtmqrEW`jk(%56Nt{!HrS(#2=+!OO zn*8VW(tcwH{s&rR9MqR+-@XVirP|>zs4vr2)6%V6+hv2s3hm0nkXET3G)D1IdvGNh ztF&D|fTTuyz#l+swVjuNuui*q4T?wF%AIJe*A7yw`mxsAhx{)MT8B#TH)`V|Q8a6N zTY$7hyW<>4TebdlxUWq+^IJU8C)&6YFt%&M$(Ro988Wm}yEGdlU0Nq{*gVy~GKtzV z?Y-x)uv^Q%gCXhB?x3h?uXa-%hO$pPNIs!{?Fl4+u|@;hZFf-})HaPn=#WBoS?#wEerskKf90CHv#Of6b#7;wyG8~gV^2ln1b0w zvRBYc-PP4y}Z|4mA1+AOUvYBf@6V8sWLJ`4Ur#sHh zu@RJW9LWmlT|LiM(Ewdwo#~TwkM--cQ8=9h7%^K7$v8R8B5trGcZjf??J?swH zF>G`JidgnlT7z6;*?qFJMEhL35W~Nb&c3?4pMtEo2w%g^D6p9tWVsYy_Ra zxz8rd1l|Yi=ajTm!X9`Je5Gv8HbARjz3BqKO7YBYASn*^vmWqnzi|DLfS$xzYF zX49$K9(J-DMK7C2pVB^d9!017*&oXQcz|^!|JWd#{tz$35Nl4UQ^V}mx4`g{U2+3b zM%WePJsM?q$pLhX{X7MIwBa(Ed7R25n~o zbj$>$f40f&Ne(b3O*`r*sVa z01Cr&Ob#VxoYpa^lkZCql>g`_iO)PRDc`q9YOjyuo-L0x5ELLB||vL3vTf z_|U5urDKZ82NJDghG=5Fq+?8I5qeq2Y&n7vxT0fj(dmsC9n(<;d9gZ1bRLT1bj+$= zJcf9TEafI%)iD9zp}eMJ4zd3Q^L0#_83+>bDCm6Lbsf{&0YNvwKz`9A9pm~rMj%j@yOI%XlQg4-~1^vmhM%R3ImojS&01d6-xGVX%BZdS+i)5@s_789ag z9aFmjjD0$0vp>py9n>+1V$4r@{ zKBi;7OhbKK$E>B0@`R3=_bSRsyu{Z4WJ<^UMt=%})#({Eg>v)B6V;2Izo_gj$ zKlr@#OmGGidh40L=b-e_GuLPfe_YSJm{0d#`0ANL3ZVGunS;i#%wNwKQRYN|p83fg z^*{hL2IC1m6Z0n&1nHT3H&F&7yJHyuhv=C0q8Y7)BX#6{}c2~M>+@-^~@nY09@BIn;l@$4LzfyB=ICYv%?htlVLF( zqP?kS_!N>z(K9~(K;bPY9K=wk>X{HqjZM=tJ1O*jThB!7Mti!RdH)dP+`-7u;m#~Q zbIt^1wjN*7Pk}r~&&<=JAr}Z~t(=FU`wM~#^o%zhe!r_{M(0A{Jw0P+3ZR8}ru7(+ zB0aPC4FG+hXFe!}Atidoow5T;^~{&2VPTn`VYZ@X~=zAh=1-g!_W7 z884q50Ji9vIV&*&t$N1veegZeGi&I~O}n0Xi}*Xx?g@iCF*3er@6xl3Gi3)p(=%ff z@b1<#FX^ya51#oJ2=3K0-%xbC50Byi>iv4=b{s4nz#|C<{g9p!*g?>9J>x>T059~+ zmR9r+>zPmJ=loL7yjp`tFrsJXQ@Zk~p81vBO5=Jag~DJHte#mxiAj?fLds*A(leiJ zKwam^*qWiPcVv1~0Kn0a$)klh&RssEp$>Fp=F+bq$dNJJgYu*!#t49YotW@A7!c~jn5+cdIVZ*qf8&KUy6nV!Nr?|}PRzR}K#=6b6i|FL(}~Hg zgTewQ=G-vaOPrXaV*pz1#Oz!Epv_K9TquV0sS`8H3qX6JU_KNMgO83Rjyo}n&Veq; znORR)J!LsFvuN>j&za#_L0+{pb9IQ$U)MV`+A;`kb7uA$0%@-^v)~2@hMk!N+JWg^ zm{ai(;OW8~q}-X~E({}tpb!`4@y967x-idai5Tg^oS?YjB^Txm1?Uo8nAuD5P9(W7 zE1e)W)rEPRlD*Si7>ym|<+v~fMHH#H@4|>pP?otc%kP8Xp$l`8u0^YHVHQ*1=#dNa zQyZ5exA7#SVr>~mqhe}b~#g>m1F_5l~>EjcV10#e!o zKX+k%rAIRC!lXAq&`TG_O@{Un7e>7SBR1;7tf5Wvm{Y+e383p;wkGV3}art@_`sbnhNfxs%p`#J#EFiCVq zs*YJno4k5vx(ltp8klIhqpFGdlkT8xW1L-4>tTMOtgB(>AWfS(gIC^1;coDdu3z;x z_;fyH7vLYSXeRK?&7*5mUcEkyQGRVJU6}Lwp{-E#MmjlTKX~&rdOsYbB&CnU(U7_% zfQEUgRU++wmreW((&YyoFtRHih#>Cc=jjl!^7|UJd?KaEY}Hvx5MF)N0PUYT(%S2@ zS-lXwhEG?jeU1dnX+~eT6@Yi`LRx`+`8jRi*3GL$%lb+!{{NL^A0&KT{wvJbVD<;h z-}tQs-M_f$%}5Y!{)U`=TV9ty=++gBAoQD9$_V|o^BCHmzXOxp@}7zii6_{oc8+;s5)B zG9iIg1-7DaW=t01X}K^Pwu8l$u_x)r80&NtZdeZhgFEB*2%W*hFNq~jbz^Q{1yYq-1* zMV_I{3JgNNq313z6c`S@j&Z+h_&deX?-?#V2wMsbub+gJBE!T3&`@l6EuP~4_YGqx zE$x9}?`L2vF|_#@HkBF{m4LC#up$jbx#8bEkX>P@{0k(NhO2f%_CrIs?@ZdVYZZuqc6}2YAml|kjHuQd-&fm8fmXa%? z)i98vdu@ixc0t+`LxWS$)NXi@BFY_x)~`cor(vlYxVsFUXe0O3@KXy=J~N!8%YC~I zd3P`fJ%(YkfvMNfVKrp-8S-gP>Njkqw{O7kEAlxG8vgz*Y#B1VjTA`M=((XSoojtz z*c90mX zw)=D&N`mm1ZdVO{&*@G1=<}U!m8VlXeAqN-bgc^H?ARRV(REoxzMs{~0EoepzISYelWKqU;$P7QqrVE?V zOKXnPGr}m%_{@w4l=F3VM#pjhji0fF4nB3w2<=4ibjH7D(D!TxdxL(s-7_xG9SS`& zWVEjBonbTu6@4=v?T6m}8Q*;aj)58e1bAqM!zLhnK4ZTj8eh!#p&6QnXSlop_LnpE z(8^;J#;0g{3NcQ3 zf}uHS{FIKJgc=|J4g6P(e>(*J7-QeNAh}^&Pk#9%<8kt*Bpci92a21<`Afie$GGw< zP-Yo_YK_Kh7{|k*@r>$6#@s14C zij9pLQ7biW3P(|9eDod~%Z-PAMp0wzK~BmpwO->G zN}}yIe&rA-2aK`|LAUNM{eKaGv>Y9B>;PIuoml z=+v87YazzTV9gm{aByk?z&N7n%x(lS- z7CDQ=yp~*3tD{4%8VNfUZ8kpvVzWb^q8Eb$*I@GryfH4Ob+^iq~An+ z9>t)^IL*96CezZ<_uOP1`A}Y%G);r`!zTXjXdGcp40x!Hnl!jV)0m0>OT0qkCWk2& zG->kV1Mp9oe18Ll&QwitL`Tz)e4xi+N&Zahdp()YSmqMf0O-rj#OEUd)GsZC4 z)QKGVH%%)jpp{~3N>f~_>2FuTmu5P@36$xk>?t{n$uM0^PUr&DB63aNHGM__-g~Bk zX4DEzS5!cKk?9j2_=`;qj-j}3`kWHDADA{|0#k{p_P=Lf`X+5F%S>5H%d9nhPNy2` zOs(nHSZ})cC}2M}H5Nm3qiHxf&6`YH*(y{=OrOyzaMbiZMZ3mL=hF6g!t~}O4T9-g zGf_;L+Wmz>XO^)Oc=cxAQFe=?nMVkqIhpxrAjR2C`#l<6%(`g#;%c@a3dJ$APsv;1 zW@bnStKH2OTmrj?+21)}@HBJxWMPb#*_K+M@iyboF4@N{h(5u`&F<1wUcP2m$r0se z_A7bK{mpiapfA9z>^3L^&HU(nJYi;njk!^fnQ1D}hnRiwHDsPNtEAMtP_z9MZaQVQ zi1PEp%%aGdd)jQZF{GR^3r(i;hiA?9(<=~emh}pXb7o5xfHcy~n_L0s&Eo0o>IJia zCIG%@HY$d+D6?OWKz+1X2d(xmnFW)V|FW6qY4BY!+d-!(V$3FfKx3@g(Rn}-XQm`i zO1#-1r7mAJTRaDfu9@w^!jCmdFjMV9XQJ6}v=XW_`y>p-BeS2kfU(sqgw7hZnYr!8 z$UZSEal!L#H(O_ezD_eH87jKW1lC}GX6Bm)+1+OA-$q}L*$FKgd(Cciqp{y?t1YAq znB^RYltDB501U#ASza7aurJJRKElYpG)tyTt`W1&5vXuB|ECPHUCjTcbkJkwcAr70 zn|aey2=z4|r&Oww=HWc_g_^4@GY#`0)cg*?kLrj*rWiM*k=3cZ8%rVcQ=v=P3&ICoixwkzO-Zgik zJ!PRekFN46GWYu)vWv~%q`Q0`nD^2hBBkaVX}?i!u4qE7!hAjtnkvmh=&qzH^AA<9 zv&KAZJ_hKKc_vE_w%)wI3J?9Uc|RpaHkluJ4Jum9H?IKvR`dT=fWOV$DH)ocm>=Sy zvE97&OVm2dOIAQkm-(M>gKyB>id-f`<~5aIcy2zY3dIX^?|hi_(tMJxlNd1%qgPTt`=jrD0${7SrAq?eVb5$D-{ptT=A5 zZWJhdEnfEpP(O?9^i%V<*i#Pn01Jz6!4PQCLCgIU7NHan3$mC-(bIDl_nM(T*}`iJ z8jCGtAJF>qp+(0PK&-OZT?vkAizT@rt+B`_F|`(v+W@A{;-U;H8Y~7Vv$xS=9c8~a zSzM}yv}OxlJ4|b}_+c~p+ANk(sJ`7|&VJN7EHdb@_%n+|zhQv7E%>JB>#~_XMs~=e;Suz{uo#X6Ml86up?=K5 z)*NESE$kP9eZt}kKcJYjcqJB;ZkB84G8}iy5ZY#VSnBOynWyF1qu}$hlu<^Lx1~We z_*fsyCHp|?XQ@s{tH0$HI`MnLl1YMT!Im3nBNbw~UJkvNEj=mQ|B7Y)H9(88yygPR zSWBKW_~I;2K7{&s%NW9R)$&X7U!+)O(doKdmhVs;J=Ie81}M`kT}pr=-LhVU#$49& z6glwoEE{Pfn{V0O384j+%Vp41Y#Bi-n){Y7r@;8Ya)5@k#By*8jH$59K8vE#GVni- ziRGe?Ag#*sZU=x?Tdt&qV~u613P#jg8c=$1o#pHFgMDiG26;T5Sz0ed(QU~VuRz&j zc_;R>1)=z8;NcFQu zX|8gdRh@;xdDck|RJhFgiGHK5vs!jS%&}SZbmN8lEYnRGE{|CvT90|o`k0atyk^A& zq41t14S_J9Szl8&`0-iA6o~VkWw#rAezO!yq1S)bd{0HLLkakdk2KL!YZeD@{M$f1hWygPg|s zR>uy4rod_gt!+!JGGjqgYW0sb`pT^QwnJ07)pc6=Rakk^&a2WYV$8^Y{#%jh1JiA&eZ+{4@v-;sVFg>#Rek0J=Th;AC(O@OTK9@CWwECA)K$@)n zJqj_+R!$U*XtBCH7qYvp8V^EDk5v{WxAj_GYXO)(E2F<4t>5azKR`HO^?3pM2CY_Y z!H^7DS?mGHbE{hV>b@(|j~%zVX@hdY>R0mB zOj>;u4>40#ZM0s{ah@bVlb$1|16z)qFKj{S#M%2f#=@C%?{oCIaIENHnk#3+YhXXd z>3jn^y3^J zK;h3>N!fn^94Sr4ft*o_v!38I3o$Z5oPQ|l8_ZcKL}Li&1bv`Rax`?(_!MWQ7iwXg zup0E8<}{H<=nN-{7QAOUoIX8k@5@(3D0)H|`Ol!THoKti))*VhdWvpg# zD(7M>vpEK|Kgi)cqg0z>PH`Ye?sFU|zwrS_Nm;ZdoN3`Orj)ahvKPuYODEA-&iQc? zgHXYVF91U&$BE8HJ>(42AXIV6DM_W8qu5F_d<{pl9@SdT!)Z`a$2k`Pjz^rf7BoKQ zY+mqKl7&pu1{PPxp!LHP!*vkS`U_jhdeLHYxNZnK>z!s|ZUIUDLdX0Ip)hv#fRFDUey z{X-6fp0~bT3)~m2ubsk!jkYe8Ld<3B)Du7-W1Tt=eR0;e&V%8q^`WcKn_ykA8zf2A z2lhZig>`ZSMyAo)h)y*$SvS%(32d|VT4Rv5Sj*{=v|7(0pGBK>!`o2UYrU4XbA8tP zCm?&sI<*DG3+prF+Znco0~$YSYw>p&wGr#Wzrj9gy|~n_G|}I*QH%pqicL9PKb&oI zp1z1VHdd5&n`;xILSLQ@dw}+x`8My(0)K(cgPGvJYt#8VklwTD{|SwSHn9sZ2t_uQ zi=n>QW=VDa%t7s7*h7ZBb(9PXsox{w+gk#HeH_p zZ-dPi$~tVc$^RNflT8cj4P%;ZI@Y4vVw0#wt<|QIP8qb>c(eh<6Pw?E2c~wL&*&6n zhfUL3i0QQPc@+%LZ0;CBMYqj@UtmO!O*AFW^xE910bifZH35Y6+w@V|(SXf6VQ3t* z5zmC^A)8$K2o2jT^``jisLggtY8|uT`=K^&6GUl_6E=fOp?A`zn;f50HWTE4*Kz+x zUQIo>AO`%-+y}6>Hhl&ZaKxh&v847pfHlV_(#}uo_pyRz`ww4p~>wc_wxG~*(mPL?;$jr z`yQnaUE=0%f-#r5SN?^HD_s64pv7>lErBVP>k|%=IPT^tki>Hh^U!ydyOTnM*SKc% zU=p}v7Sr+jOXS9W0n+Q-mPW|F!QD%q)+FxR%fXS%&Ab4>H@TJpXiVWQSd9U`#f_s~ zcPh7=){$wr*av*Kx!vRzOy}bGt>#{{gUlN4Z}bzZ<*uZ;t&W@WKR|oL&5nVvdX_u0 z9G#E3Asf)yz_p->vyuA>B{(&4d;S7VGk5m_)LOWebd5$Um!TtJZQR4QD4uY$DVEXB z^?4NvJGh@ON72b0GKAhP?ne}pe##x;K;|>yORoJM6eHY^>A2=7 zmrpL5F|HpygK_SYOAt1}-A^I@Nv@on)>GWEH}LFryrKqZ(DOL#0&qC;lyvsZiI=ki z3Y~eOV7_d8H{^3sHm?ZsQX8YsMZ z89tEW!&8j_+Hs!2htS~5d$bUJemoZiDE)aY925b()&v%22l579N9PINFO=sS#QW(N zC=BN9x(|gRyp0rhKgqkW2qdArInSZ~6fZ6bePO(euYvG1&qNAC&+yh|qIQ;NNhfy0 zdB^jhK7uz+tI2b`Ih2?f$=hL##`C<*G>Ko}rRUK4^CE9?EUHnwH_Ra>nzz;-G?#e$ z_d?TU-d#Uny2AUBj$g&_7E>Z;EU$bG5XSMorafsq?=0;}ukz+pK*crQPC7u8z+3$S zC=z)~cLVly-ZnFk+~Aqf3z5WA(l;TQ_xD#6f4Irxy@ZMsUOmmGw|GXs08A=xaXmQF zc)M=H`rADBtALiyb0*hA2JaM2Ihnj|&8XesU8ZN3#XCF;MK*5+tvYgevuU@U%WEnD z&^%tA3blORY)aHA;7$7(wY$98B1mEH@oqc@M;%SAp2i9mmhln-z*o*Q7(r3N3(i4N$s3u0;vp~eIY_E_>PGNY^W;eY zTEkoRA%xZP*8KuI>v#tAvwy_$nl?aaJx}@(NFVcNeu|-K;C*Nh6pg&HC=^XR|2BYW z=4H}HsD(F!vO8OO!`so<#ELaqKTOxj`{low25*rDn4a=% zDSPl4FJ&L3bn`-s!QR7T9Vl+n%k!WUi+#MPJn;APVitjPfTxxL=^*duS=5Gj`EK9|-$OZluKb_>MdLC4fmOim z#=lLWI(PobgOKgPZ*YWOPyUK=FnIAT$RF>`-@6ffKK$*kf#EoRb}kh8@8C|6^w!WzeZ4;;2((uV-P=?916kwF3N)o;qT%>{Yn0JAEOq^H>B;{ zDSjy($_V3&?t$SnKe_}YXZS4#0p=|K#11ru^AD4wD1!fNHW<$FyUF_$$*(1c=Xw5| zcPank0^gW+-52@giC~Q4zy2FIlKK6GXuQeqmVz;b&)EdMxA;~xx2E!6p9g4Z{N_h^ zpKtTWXuF-xpHFMV41Pl^EX?HJ%Y%wLd?UI}DU1J+FG#Za8yH~9;eTrfzFhvYAL#yz zJbn;ej*-t_MqBa%{=am4!CgL&a`^A@pQgaVLjKMFL17X9@NAG2^Usf=cAsCh7_|rd zKhhzsg#Yyi&{WFT-ULG#e;R%4%lUuLhP@U1&4Hk-1T57iP<0!qdjjw8k*-!XkgKfMLg2KmeAOFYD{AeY5+ z{@3KKe!(Ak1A2$~oM%Azl3zg=2#)aoeh%wL`8%^AWsDy&4$5&pTc`%M34Z6tuws(m zw-aEd_)iX_rW2S`o}OOt2BmH~3hM5la1ykbLZP$Z?jI29BAERz5V{J+pF+wpfd?)A z-2_7vfO8jo6$VNV!Q#uX%u}%b6)5x)?4U)Zx8U<&u=@xi{<}c*xZuI};P(}n=Yzvf z@CWVv{RK^OhzSssQ%o{YF!L)|ctQ};4=aKMG4uup3pf-K4H4|6`TnG!i9(a1g1|ix zc1jSq51PUR?^HwYX+c##iZgYWQv_epsrp-jKPi-(DoBn8Wtw1BAo^|#D!&3ly1*;|eHnr)f1@!| zAg6ckj$rc@NXZhk(^@NAkdzO~9Kn;>6#vT=M2KKap5WbYpgvzPa+!ee@ ze?04+U>oGu?koHKB zDS_Gbg0+Rv^jPpl3K|;(zT}{46bu|kW0T<9i;&VRSV6mu7QrX9T4@!$O-rvfLDd5E zJrR682FiB9Xe}B$1beeE7M-lXCjy;af@KQ;_^Dv$6ij<2c%vD(y9FL}AfQL^Io%N6 zD@dVq_&&i@2uS(`ODL&*K#=|+C4L8(A1;3M&F#-E_8$gWkQI$`8WJQ%%@(+>_u z;RQ3)oP;7ee&sCufX>>w2p@PrimUJ*rL7+mx!3 zSs23u!Ye`{E%{=E7szoLD_kIi-ZZimbS;p#%bP88;l z%s7Mid(#?angt?Symnu9&zPmKxwg}+8 zE&QEQY%+v1=ow@R%Xa|G9pPK&z>p;z`x%tk!nKr2lp}nfqP4lgU&&RHC)CmOnJ@H9 zqx+u=3K!-;Op%c71MXtsogdJ5Ux;g7@vaL$qEJDJFuD>7 zONDxBEE87z1r_DOp_wqdLMWh|=t^PkUZ8j=ymAu4s)UOJ0H#_P{tYN=gbQ(P2WwO- z^e3Nio$yTqpm-$gx&@kgVOJkG9t*dVGq*u#KY~ZmDEwOwg-yb3loZ@7{F2_17UBMR zC|ZSyagy6iqka&HyOAMUOrPrH?3vA{EC)kuE^!D`H0$fyPg?kyfStqL0bb z8X&5m?8!jU`ek4|A?hpx;2_aT3cd!5K3@e*AtD_`#ZQX-Noc6ZQUHXfME$>mBuw=C zBQ%~C32Ci&M&#W9*k?tpbnq!$bbS((5hD9^ken0EWoMy`6g^4+<9U%SElw|p+GvM- zQDjM{`=UgJ2f-07a-@&;C6QAo2Jy0JA`|Mbh+K+M#EAT9KNKr+r8h86beZy-;zf4* z(05g2<_eRpiQcBrRf5QaGU^jW$0>*5y6D<-dTDNmQjdZrNfb-@`pF`}8UVg2x{?iO zDWZ<|FbKCq1?0U-6$NZVElu=2tr2gF-l3N?T@>AeB16Qr0!gMwScT$_D4$NLW{Cpn zL}#{W9ewq3M0;qdm@6uJ0FpdW^f389^F{fOeO$Pw9;M)yQLbn#lD=qE9X zB2h4nY_aIbS@7Q%X}f^%foS<-=q(YIz5&>!qP91oqC)h}XQ)+*X3*?iB?|rvD5^yt zlUu$K2J|A*DyO`ZVyey`t_xlzpP(wC3s;eY78921I4_)CNV_v|$|*HIQrRxo9T2 z!d{4u-+|C!kpl&*UW(c%tUV(7{#%$fDmri((8ff~T`0yyA1?uz36YLs-IJnJiY`xy zj?*PAdhtvF_#9cWka9Pi#0kkLoW-t(z~~}&Acw81cpja{J0@OE55`R#LDP}Dm_wJ) zd5AYFq25y*l8Qzz@kv+kd5e#bJJLryYaWW@;@&V&`ij>cf!TiIunn-qUwqRCU;@P1 zv{4Ndv+q%2;t6qL07!$xFSY_juy~R_Ng?82--Yax;srwRhl*{?A@r2^eLFCOiKFSl z?$hGX{pdR*wxey)S@8}j_`=0oDQ7l9EGGxoIdR}58Y9K&6rDaVj$I1&3*uYkp1UZH zXQ#u$D6!WEKoc!C+y$CTVpGayyDV;?eEcioJbKw;#D4y$#frCgKxmx!@g5ZMVma*; zuZnm10?ak>)jG&d5D$>^I8khQ5_+$TpKpey8{$Cv5+{jm-hq^4aR-g|P4VIbEUGEu zbaQar63K0z%<{14qlkSku?3}JcV&}%62#q-ufLxK1%xliwkKmHtV!aecyKFU8U6z{Ev z>>@E|HfV~)mX0v(zL>p+#s^|UIv83ae#HbFrQ!iP%Ty-*;62pJ#hXjeS0OH@T%t;` zIjyoDir3P@u}XY<88lUkV+|mzM*QRiP}GXWagbRj4)_YSN8+rv$p2C=-qMZM$KvC3 z3rB;v^B1US6la&g>?ZMFUXa}^HgJW#E#h^NFs)Vm0l8?}#6Fdvd?H>&;nH^T%WAN9 zh->MgcZz>(0ZEs5H^qgYierLMJQIJUMqjsh+gj9m#I2n`$o7gIyin~EpDzRaezD_Y zNE;9fuF&sKET)*qkhn|^Lv^+*hJZ?C}AicKh_d?pJZQLhNIAMF(9<@o^Pw9P} zvNi0-$mk@G>mfxi8K7U9qa>a-22PTm)fE48mMH0#6<0}kE|4CRY|H=(H%U8r&D5=&QI_(*o0gV5s=djVAVO5UY+-B0qC5gPp^@6l8j zAbHIkje(Ng$Iy5}@*O401xem-r}#s#M4ArSA(B6z1NTWu98II4lDZ#3b4n6jgvKyQ zz(!~~E%^;0JEJp_54@r2tfZPk9O07kVbmfdec>3Oa}s-6Y(+|(u7Ul$WYY-vE=c_B zAu~#{o9>Z_mdw^c$|cD(+{J_QKa!8rpyG-o`6$LKM)G4LgvLsKjDdx5l4MF-kCz;N z6JoAPTo0nSCb9Dde}ZKFAxKMyl}W7{eP9uVFMMNn~^ZMY7~7C3mGr+Wmm( zmc*e0qEjV|7z}9=b~A>Ay)8*6e`JQldn+{Ek(>(zX_jP|l6i6@k+CRpB?faqk|$X? z1ikqZn;-E+3M8{u0qK<`GLfY9O)&Jzp5dn zRC3}PFqKJ4>4}uH5}g9pS4eF6C@Li@*TIU15?=~dS4kYmjan@!IRnxfN#Q0m)=I>5 zGhLm;lsuk~B)2+&>9J%EEtVQ2pVXnRS+Z#mZ%K<}&tlYCC7z$dh&D+yc{-m+cF|g` zT{1&}LFkaM>8HWpKIgBUkoJ7e#>40wo-?-@j4$VWv84Qb9UeP0ZgRb zPIu@#Z#Tk{bLN6w)fh(aqTScDsEx9lMLAp1b~rMM*TinuQlPkOcX=9w#@OwrMAcZk zbCjBzW>-vkMz`%&tH6HOZbK=A-LuP}`yLDJmIZ;Y$Zk0oB*k{`_`}ZocHcz;#RI$L zl;lxjcQl7ZXQ|z5iy^Jd&TR!4%k4gDglQFaM@dYjU051~KD6`JfTPN82VJ^XZD%}z z#u~fIBnYjwTi6Hd>+DKCLgOR5XS8g7YYS4{)&CsRunPzrsQmowQuMFWt{zP`ku$z|1%5}SM6`poSI_q zfS5jObjv==14Ei>f02&)<=T5)#E|6K*X)7Ne0v^kf(z__hzI{Y`;8QNE3y~Slv8Yf zk6y%T`}9Ka)!1w20b#9u7KIV&?5&OQeCzE~EuLbN0 z`vUsKP1`*(7J{O0hJ%H`%ur?1Q$5@A% zw4!lyFw;Y?yF+^f;Cnh$Yy^#$!_qII-rGS#zY!k?Gh>h(cfd{$pIL`~I^pW)aPw<0 z_&dByp4LDI4Y@T=ID9dHQ44lhOX?n8W{hd+WF=llBkz%-nJM9M^W$wR`Q(wYy_& zv14`ZTvrc>ilBm&N5KLEJ3u{(g@G6-C91_ml&W4+(&c6=TmKkw)B{{DK;x_r+y zbJfh9bImn#y3@n>Q;Cqz5dU1_YylL0DN#DXfj;?KV%BDua4(revmhQN8*M=0ypp$k z0iGq-#DR5w$s}4iw7KL`Y)7Fjyentg1}o+F&}Cim$#eKNpH&+Sz#2qanzfLP83-4> z*gneoUBrgb%)2+UPK3A*+eiG@D!a+eZl6?9eptmy9hN)xPvl+ zm-0qq!Q#uG(qa%l{;n9PWxVM}IO@;0=Z8Q5-*p!d$m`Q+Cx|bnx0YaDW z)yYHpqDxlrLEY&2yOK|$NtF=Z^r?khJ-5=2W&+M81!W|zra}Qd&lm%QzYYwt*xlnkD*^v&XDbE}D3`(-3#T2;D zmexN(gI-Bq6b5`PEu+x!8|f+CE8j{RlHtHRDe5jbm&sYTVbEWm)foC#%Qa|!?=|uY zN=sTR&t66Ghjp^&bX3O5V`*!K)AAR}$BmPXXqS>8SM>sGqWmBdmM+Ow$}95FI|_qy zp1x*HXbaP?@H;2d@4jmU|uzNu~+K~4t>>f9?p*+zOh6l6`=A>aCg$hm?+$q8zYq&(O?xzix`qKWl zafSrC^_?-CYlmi^H7HK-oHKM9frg$pENucc@diJ-675Fv9~b)*ci79@XF|w2KgN00-FBzH~sDa1el6mMb z4`?E1i>dGvG;O!(Ce8f1O#P~YI%-Or0}o@rLA>d=tq@2ub#+9;x0@!%S~MorG^IBr zo|sl{K?^fX?i6l)Yua5Bo_;o^)&l2z^LvU?EjGWekAoIqo|_7vR+`^a{_#3<({z}K zFt0J85u44~BO$)UY&Zg)Tg^%1;l(!dskUg+c60h})a@|WGEx53PIJH!kh{zQ)yZ%3 zv_+8LV;<5FN+ZnyXHXYqjvEh4d(B0rLEAp_tW$vf=1!EQ=Q5jUa`}LHVt=&$l=+SV z@mTYRix4<%4xriSICHhPU^!!MOktO^=FJJvdCvT5ofdyEm!T<~c=Ox3sJvhv@Chxv zXpW&VY=Swd76cQ`Arx}EWUfL%iOc4Sv|=X7%tpZc74rofntjz=oz|OQHQB+Sc&%DGaD#|lxl84 z%eC*DPrpIk19Ov$pdOkVy3p&7%(JUOX`1YStgHyGpUvve}Uz`MQ)422bMv!PU4}%a`O?KdSuDf5j<%Y1BHtoTe{Hf?o-Ri z7O?xwayvJCO1IpnS*_=m5Rqu-2UnYN2)RUWj{H9iy9}bdh!YVU&7XyPSqWA1m((ON*_Q52A31 zwNMm1U21K89*+82_pO36e%9+0V)VDR_JTlw^%u&U476qq180!62HhHht(5l*GOpFYOTKwJlm{st>NN!>qT12 zw9}f8B3Zkv2S$K%w>1ytr0lVdqq>vU1)Xs|p0S$f@qX4?`3-cQvo@RyD%r}e0B%^5 zAK}2M~#(=BT}%_!cscJ592A1T)1@sPMyaKJmO$2}Cjw+{9O%LnW32zZfWok~~ZM{D|5=>BAlu8q3S)`;p*?PH7l4V0hl zciP%)nJwTK^o74|synTJ3$P`If(*1tq2LL!+0TLswzcy_&pK^8DGy_XO{E!;mA0>) z(U=fhsS;obwaqp{V3jSM(%n|uDzydYI$JY324S|E?l^XPZMp|=W}mG`D(d#z>Qo1~ zY(;25e83hk6K*>W+FDU^WVG!Sg%}UnGMvzM*tTpa)Eu#$3P;^h+x^3UW44tvgpRTO zS{$uEZo8BXZ6|Ere?#u1tw#csp0c@jKqti7{*4CbXMqaC|tw(o5A3`Wy|n`g(tQ!`ca0b zw*IsiV!F-od>FJnw{4~us+YEQ3&4|MyGDm{zI_u-#4fOxrz^*4uPZ}hg?+?SIu!PH zG?)vq|9Tb>Y9D_EEnH>KHxzbP+qaHFlh)WRWl^}+K8nK1>+F|%Ls^)8G=-(Z?e!^z zb-g{xLGgeM_Oc&fVxzsuMs(>Wd-yt3M%a(i@N2XEei_)^YM)UYEZgi$PeILgyZ4`{ z+hLzR0G4*zNAyF}x}z4ke6LG82O=>?zm z+aKO_K;C74{0=4#*ay*So`d$Dl!_B=4=|!>hwLv;K=6$HQCA3_wXdTojdS)URZw@{ zzHSyE-d>sl2N&!MDni*sd+C4SMS}eez4Rp7Yu7{JW&4$BC`_`qdQ|!@OP+36_GYZn%b{b*Jj%y>Qf{TC@{(y{pC7gEPU^ z@?lQfp=_#VK8OC=RjtidNF1+L;|jb;thRA3sN1#NDZl4&tua@@l3uG^517xWb)zKO z^t#rjeW?3T>&aEXvD$+vJ2$4bAs%%nYCp;Y@$;x}v)c$ZC zUfitRj>b!ld$og$Kt8Q@etK3tuHB4YUY^!|*%*F%);WI;5`lHjMZ>3{Iz1Yp&RJ)F zcUanA=l6dgA6+L-4{e9*6we2{N9(+94bGT4)n=oEPSoj5uOg@FGz^5m={ou6!$DMV%0rehi z&{3Q+Ygrt&_$9=Y) zW>_DvWis0QkWIRV7CvGd?!j&v`$#kBkJ)m{33|eulVI>E`z;ynXR+b57A%`}rrYQ% z#wq^#nhl)`fj8`GZ&>=wY6U{)7dDCZ68OqInxf8~_oa7T5B}jE+@9y)i;959lfT^# zn9plaV0{6Ps{~66dG`c>7oT+<1{d*43=-bFx*5*+@RsznTg)r0f!q>4qaBXkQvU1> z-1g<66=BJb@1X>=Wqb-fb^N(k1yBLpMdw5y|8pP2gScY|-eWL855Eka<-C|bv^jaz z{IIlw_fJ5ZR`M1d;eH7Jg;t-0a;YdhT*VL5%-w1}nxepKczaLCZQ|o76C{F<{0D`* zxMvnRVK?8=2m*Wf!qI3;B=1YBpQHH`4-_8a0gmG+J2CCydJ&ho#B5`wC^nM6bt!tyb!%bo#zu?Ks=roC;+&{EA4{ZZN7r0kW;w1Jml{1 z{zK5-RQ{O8G7tI4hiLXAzC0HojZYgwt$54>Y0>Hvp4JlXKjj%+VfPuINfY?#ykH(Q z&0XsB0rFl_l>%V#m2ON#VX*X`UeH!a?P4LmUV6C`u5FVBhoW%1G>lH*9a2;nT-zyK zrR3jT(jFS+?UuSOM%`iQn2zGFN2KO2VeqKrNiR&tB$eXaF;d!axOiN;RUKV&QkoQr z)}NBL*wM6DX>~Z@wA6yaUU8DXBXpmU2GMK86{#}iE8LQ@Xb5;;ip&QsPo-pf0%uB- z9z)=rG$;|~zesgtioYzB-%{GVm%N|?+Pg?DasX<)!mE3$Yyk9N%w?l4?oH_$?>*V`oVK+=(I2r=s za!hH|t(Paz(i_JH`H>$gH_8wD(02&_;X zdIPkrRBlB=cZg!78N5)X9ZkQiQYJ2fwlzwL2Jm7ne&-MJ>y(}~(X=q-eKqP!C5%>m zu2<#`1GPc%JppQm(uG3VJCy@LFuzM#PBEL^iW^PD?ZNaDAW~`56arD$IGM83_9^}6 z!khidItq}ul-XL&rBaWEHV2hPG3b(LrTPnKJERPn051+Jf#Gm1RyqC@ET@%D?a_!h zrQcJqoKboY0d-a}(M~4kl!67J`n)2=qb^>_ODO^um7I6zgajohh~EDb6(35^yri^^ z19e$xNizURO3!tWzoNKPUh`F@#a_r?Q~r$uJWy`Xi`GNMI|X|a~G@MCSO0|NP=gPWf@cxC8T#?QTrDY>}|Ibj4(Y7$3l%|wf_*t3h z4d1>fMW#dPSEcp@fV*1mGt_vfSKQHrKamw;LK7}bSbFuH8rIab3fDd-K51dhQjIrrZ7sk z2r~H$hFq|zYh5_A(zLiQREL=M{0){+lOxx5$geiN83Ud*rX|H;Fx-?)D_Pf@8sA?I_cTY&g2lG=C0E>^B9|UEXEN zq0{PssRCWo=S*2gp&Ie8n&3<@g*ZHMMqD;oVxjwrsoX)hc+IrlA6_JzTJJ>REmLqK zu-r3sG{XxIbEin?_B2nwgSrLgjw@l;%bcejoLOpqOi?&Lb4Vcw1e&LY!$h!oD}}LE zn1{uqFx0%*L9<8rmv3w=%6mC{X{z?m0u}JLcZv;v`=nF)ci&eOIqf&F1DN{nq>1AJ z?n_ZV@C4;64I0Ft&8;>CfCk&opa+LMq}+j_tB&FCu!)q1K75oJJR{cb0RO1AW#Qno zU>$0wuhHTA48wb9o*Ckx$JDG7CrbH>2!I{9c*m%52G8&DZMrVLG|ZK?^$b>)`J(ixw#N^ymYfy>`$T zpr36HjlcS*P)_536_oliuq=({2W6IqS8neqEphPkEpTN-iCR!SGO0IIjM_^H9^*Wg zLH6&a4ByA!rqggjG~I@$MpLrtwChh%JN@HMe4kN=axQ1S*1FeYH8|&{pMp+Dx$2aE z@6OuLt1tG_EdvLzed-cOda>S9QMicRq#2H-tZZ@A1+Wl$)d*xNEiDLQwHASMB`Z4+ zeX@q_?TNbe>;v8Lz8WhvKm(7OX2s~hgMVLG9+@hb5A~fpzqB8od2mP0FbL1%JKLkd zo;>0=l+Nez2kGqQ;gqhwkS896%U*oIF0^71e?afs-n_RDwiO#Lg{)Gnd({foOXYi!A^unJtlvQndK#Ag_HIu0`|OG`>H?8*GJ|!~87` zCt`WUi6}hHZ{Ek@kK>sXv_8W#%fQ4X-e)(Qxy(;cl6(@+@&d~hevk$_DSU2a8vozn zZ|PO`F4xg(-#uZj#{IJFZ-%_~(0GxDez&a9?`8 z&f)9(Kc1sYo=Y$hB9)*Wc*3OS7odByG@G2+Bb}xMj94jw z63cH$2aV{i7t&&SK6=R6zrn(4c{M%HcgfWUfh9(MNTF~1Lc;rE5WFLwzKPOT@@yK3 zew0JTiW@?rGF*k!P36UP=(wY}Q(D_S<@Y0i2TH$^Xl0r*>mRT@QQ_+n)%7jJZPAhUc>y%7Pcmh;^qUb1Jp=B2g#4h@HmDxl zA_=u)rnN!${Wa7dXTsF}BcNg0Vp>EnJ-iu|&Nx9C2JWoxQwU(+aJo5pGxi7!J}i;e zAqB7=jp2MC>q{)5EQ!>uVpsptq5n6qy%dhw$O=)S!48&2!T+6XWdh`PvDLqVal7E(6bFmOm8K6E<@Nc%Cv_E!cg=EEM5OXQqFk`#F0- zkGmJlJplqQnHSCRMDdWu==_6R3P6(%afN<4;Rr8X09uamXnOxR$q#;jY6LfyQOmgF z0woj0^GXQHDG59;g-kB;|B8A%yfi;cq8VyUH(!C55O7Sn>jB?P_uQNp! zhPm|If2Nk5L!TJSdoWf%$X=%SASa=F}2c4T`p2XS154 z_mf#ynk>1&(o;}(lhr#2&RcBHXlS|3`n8963aem3o9?h74tjUE%UUM^?y;woJCe$p z2Sd$Mc0Df~e#RE6C`@P0%W&oc>%R|F4%?6l6Z5!tX%u?$MFRlyc@c^vEZ|#c=g@_m zQOMGZJLtyg$CH~u*)r}v1(ZLJIR=&hUa)}!E(Y?36vzzX0c&s&4)flpP#DX5`)UVa z_8RDZ#4nTkuX*+x$a_j*gP=P=@~jN_B5f=S-3w*!ixBXYr{9Ka%jM)10H-`=CFIu1 z?KeR#LXJ&^>do?{m#Et<4=+UduSexv&*1lQdEYXWo|2nUhVMDqbrXf><%zG*-gtR{ z9~{0QXSaok1i5fGP`BjY=-u~$tmZ-CLs{+&XCBEPY1@J{`ThkIK9zIfHBdWS^1i23 z(mtoM!PK`Ny;Ao33%UOerGJtO76#mV3;uzheZe$n3guCa{89_wM?I!9a&+2xv|@~d zW^5;`lovH+8l}Tb9Z(r9pY~SG1)K%7hEquAf{9c2)&rZ=|vvhXz zZ@^pD(yypvhn;qopPL-+FC>^a4<53u1qK^=6kqLhyp z&6>@H#7P!Ip&5`&+OR{boCb&)er&!e9TSw6v*QoXgK1(@=Mqa=A&s9%yRA* z4OS<=u7Fy>FJ{BVmAu$IG&_X5=Z3aWj@TmF%cs#@bTv=g4QJNy;G%%F+&Ttw>-fkj z&>hA<)3EV4??G>sCwLFa!#l}GUgq9A!=8ukp^9?W293H;ql?OxjJMKx-1Mm5URLFhcO|HY= z9KPi+I`1Q2HwlHGco`$X$6ljMsuFuNkRqlm^;x!4^XplkB!rjWQUccXcMWckbi)ZLKV z=|J6-cl{25TkD3&9p=xvn)NE5f zyQB3xRZ9?>7NuJ0$-7_8z6-kt)HRLK35V557r=5<9YKSo71=XS)cNWG@5$BFVGJ!Wbw6i;PV@PmI53f_=Q{O2rsGnSos@wz8Q(At`yuCB2_~+ zP@t;%$(<0a)uAgKs=H(fzBf&}4O1;gg~L+ovVGuv+frBIb$fkf{O$Ov8l*bkqVYx7 zMU}wc-S0H`d(PPg4ZYrdMs4p^_aW6c)gLAOe2cWG>bqxHC9-o88=cDt_ ztvrp42XBvtijf06AUwAGVhH@*p&HCj*m(v1POiEhwKKz;p)s>IpM=tXe&37^o9#{W z-~WDW3Z6O5DF12h=z`ETkL9JG4PR)P2$wvF-_*0Q%W?Xr&f(S0q9)uN2iaOOP#)OyBmKwtx_Qy7*uvMcmR-^5yu zgbxv{>t0Zs+08#;a0^SL)fC&9_ZQS5eDDrFMY7XlQMZ?kkAxOSEF04dm8aPy8VR0d z&RJ;mMb?bA%e%zp_lMo9?0G$?xyG7hq3#Bo@)B@|74U|9D%0=5fpyB6c67uF`Jx3T zR?4%z;eCkgK?^&>~P34_MlDsTq1>G*W z>jg+0lhx)#oymA_EV+9i3m7YZ-S*Pnp8C6}X<=eAtf9R?rDgZ!cM zkzDWyJbWP!t&Ntwl;tFFzLi@Cg5{kY&=1ahl^vCqLaDpbkQO>GQhue^Kulv$*ur1w zG#M@iC}nCwB2d{%gSQ~8K1I(gSN^6Hr8P>|Ao#mh$;p9<2&FSk#cozy>!9qgQkYUY zjwo+h0gfu=XnOsa(x*7Nt&F9`5m)fjg>=f^RvPU^Wr{NYD@xOp%QI2b&`?lpC->JyRU5U#Ob@0H>Gg;Rf*) zYL$<$yHedr4~#Ii(+aSJt0zL}{=Z&5K(nWaq@RMp?P{MqaAt>EH6NVWsa~XXy#4Ap ziYd6%Y0p6&P?bsOwHWn=3T?;L=Wk)+tU7`wU(cz3({#^yHGt+llGIX^w{%6lHX0Ug ztH&v@lcL6VgWMhU&)SrKou+vPWf;j)Hn2oo1<2_ z25lcz|6zbn>dXk#eO6oChxsq++9B}ptNO>Uu;itWm-FvK!Qck{%khwp&~NL6zSyH5sDtiEeF)79N9lLdPAYr# z@keo9xb!^+f%AaAJ&o}W>fh2@+w1zz^k}=MFL4aY-s=-8g44$^WGL#w49P{ox!Ev? zmU+e)j$MaOjwD0HyI_56@NR)a^3l+IB`BvcnW6yejT7I(?rvj^EAab>F>MtjE*pDec z57O_SZ((mP!sb@Czz3zd#W7JRbm$xI5)BJmUrF{WP6R`=RtLZ%mt?z2pDTiSnK| ze+kM%%A|Ed^Q7FAA?hier8dr&1~f^E0K2SK;<2X-Y|SQ81AbL|Fb(ch zPn?av13ucoGpIOztVrYVQj%z`_#*6Y1ohrZUYbJOuy;YuG`nX*ASzLCxw zrTI;?ZmV*dUS78=DbxWwm4G|wx!p>2dQ?OzsZ$}aS7}`bTJ|fQq5v)>@i~+oz#>j? z9#l@z`{{9|_d2+JN@-57+_6f+LEJqY+9}(dZiy{QE<^${AQX$<36ae2VAk51x3Q*&2lxcs4CPy2?AAL*X@^ zCj*wQ^L3YCBAL7B(Q$)+PC^@R@>yf)kn;<46T8iO)6(0AJa`4D=e%S^D0{*CHGwl3 zyxaq{Hj~$;xV+;%_ojaTz{6>CxE$WZ4s8hkHHRfnsWSxx=1U&l)Ox8J1u+*&xw}A{ zuk@S@`bpPrz>CdN@dl{dE%o#TxTO9kp)5u!FbACHq{{`td0A>lGj}(nR9c?#Sn5M# z{?`tv*Jq%I?1-T*m95(Wp>nCMVok|H<#s)|=dA>uMN52??KfdW_*>DR487i zjJ*uS0ob|^?FvNp0Tc!)e{Te5uyX7GTv)CgZixECz@v<)cQ5`PDtpylp^9#p}1w|*9M zz~C{Bz%!&~Wt99i=n^~}TbF_tQ$AioXH5+^f@fOO80efE6hQG0$6ZP_cSjx;d|AZu z9EKa-tY%H{`LHUPaBVTW8Vi;sEQJ!1cCkS-A?;%0eh14DR^9~oC1g1Hy@9`9g`@S_?%eh-3O#wd+t59q2MmOq7jK5$crZ)W`#e|zx$jE!X%OF+ z3@YW%^!S)mLptNad+14KbLvWf5CT)r!|Gq+x%)V7){|Hs-m5Dc&XY@b(i0x zyvV0KUoz^R@d+0}z2NmJ!ugVi(FWgHTt5l=v$-!lray60AN0Uye)Kjtmr8x#!l=JA zCks9YOQ$m-w?fLgL$~}@(nV}p^z9k&o??E7*(RDiJ;HKmY0goW`!5t8V-j^j469*; zTgTZ1nqWA=UYJpLlG&Y5aFIRQj=BW)7sU#%v*H`joMh%rxkNXZ!Hj-NWxd+M*ZXYA zd(=H+j;Ce7n$GU`hR?6q%tEMq&2GM>7O*Sjq5CsyyczOeSnnK|SjejmMxhs9I~?X0 z@d%nF@#Zs*0DSl{e{|Ji-i9JAOL&cXP_~p?p2Kc1S83F{oHyzVduw<$39LmF<}P$c za9#nrH*<9h?C$1!%A;@(?@b~2NFMbC+M>A^U2cbX;28)W=3fk;j__c5sXof@(HV4% z&!&Ws7=D%}j*j!~E8t8DZ}%E3&-nTUaON%lx&Y0dCmA?61EtFzH2w^cTD_#3jI^0% z!FEbBQ{mzvY2QM;2L1-h zTjJnMsCzp)$=Gx9nnf)OVFI^Z4e=bNB0zqAremM*i3DTPp5J;3-(rz1YnQiJnM)dK5mDR#PhJ zGifX>(9M>%)`s0zQem3m{3x~YfQe61g*|}J(jSy|@54_cCBPAmDZ$ohsb zcw26@5Qb9Z?EVmcB)3YV{NFUWPdwW6SU$EGl^L@B1SB%$?e`$@Ufwt!o%lh1NK=G4 zvTh{m<|(mpDD+ge(QM#+#e;%N3zS=wU$azkYXiH!%D8L@ELS!xN1ao#QhQe@O$MP8 z)+udhO?sH(x`sMOxH9uOTCrZ)Pz3TDlp?Fqi5r!Y9+23iT%lBs2&GVKNbFLsmxsh| zWeGi#4k*LvesWOhPyZb_X0$hR=fdQRNn0x~G*x^q`4TW`)AF z1jUc0L=zoK0m{p}q->7_&t;|KW2i||o>RIR5}YXc?5dI(0@iCvcM98GSIXtUwPfX8 zNwC~dF42(UrZSTr%=eWm<6z=}GU_4Z9x5#<&;60Ii^6VcN_rUxyi``4MqP%ollm!B zacpZ0%u-?~gCJWm9s|!S#ZH^yzE(o2!r&X_&2iMdRf>5-@SSpxUIe}>H#(t(?&@5+ z8GEP)D1JUq4W(hcr`kscFBYo-?a-A=)SYw!FI9UlfET{1=`1*xt0igZ>Qs9=Xn4F< zjsJp9Sf@_O5BV^)SbmrYS7$W`>sEDfJ+yb5I9Vg9_Fs?t!J{`lY`?z^T7T$qy^^e-;MIO8xxqs0-1L41MxY|}xh7EjZL|IiO_uJ~*QQB>J^IV}Kt<|D zR6~2C^!)~d^^krOF<;67~6xgS@1lMYBkk^=Bv< zGD$xt0ZOmv-*-dZReck>O{VAz(<{y$ef|qjdRPDKFsOU_ZlQD}^&a$wbYGw6H3S~$ zlWD}6uJ2w3TAu3b(l%VvjEW@Hhu;gJ3qE~AC>R?&atu-1c>>Xw7M4Q&c852hVl8u|%pzf(LXAuOl zjY;c4-7yMwH(DN^19`yWD2*P9wrr=(vSKWKqab+7(k2}c zXK6(N&U09;3AkVhIt8~AEzi0^F3D0h4FcCJh3CNS8bQ-=d%*hnGmXEFTc=2fp36@N&$3|FsW$k_$y}r;kqzmd6**e^WoR94;MR}Ll;y1u2U)yrJ zu?5-c=^+qe(>J31PuAI_CXm=<8#fPLY`6VO$&Qh>T))7@Xxr;yFc@PSFc!K`+gjw- zp%nk}HKt7Bj$srW=)8c^FuSy<3h%pCrTqbVMA7~qJug!5tXCU43;ukagrnbQVP|~r zJDKh!VQlNo|HL2q`~$z-`E*Jm@ZhfekekQ1%z-1Gya&CGVPQ%P3@+eBTBB|mk7)oE z{`}7hIH)UmWs(cwvB>99!ugudIA7ND&r4Cafsd!XPqy>(+G+?sj>ecf`NAE5T|9qH zTL0kU5u;)L09V(b^dQeK!_skHE(_XD@N>OEo#RY_iSs-x91Td~!;3=T3V%ZVf15`? zqC>|9Z)1{eqs$ z;C6bjW%B%aVB#y!X$*OHDT-dOJ*0;&v}vB?J_mxHQWCw?ERgnoMxB>*f^ugUNn`1! zZI(%~r_l(1De?taR!T9Hff^!>`WKxLD!ro@G?(Pj8cjMOWz_|XO?4DDr(-MmWwTd68M0M^x)Lm9L+=YoN z>O{mDkli(q-UzR&o)RqGQ0EtevYTp9HBh%z(;=8mQ623(Ab3YT?vB#?s<8q!M(svn zzQ<~_(P+gJb-{c(YHC}&iGDlzUw%bFg>qBzxAI*ILg%myZy5f_Zl*wuC$B@>7|iE! z3Vd6@|Jngq%6;ad&X?~g1ucGj8zm??xg)6w+O~pMro5pr-h@nT;B9GrSkf-cM6QlWI%APpEjdavc^7*k4KgGB90!u89^@I2Y zo`(Wd7kN`smcW0t!h9m13xGT%U<=NsIMuEU$$K=8K2EAFzO~LUUl0VJ6@08*;fpeGiG64OwTRMedoDwMw zbEDtCh?3gVeBNH^#x}HYpOiBLUbv(RH9;Me%yi3)mWt4m?Xa{g0fI*)-MA-0(xRRaI4R}50lTN9%{2kB(#9bujFSRSp=D>JF%&E~Cso7%z=4rn z8CoE7QEF5ha7mg;+h-+7dqzUyiZmnx25(69R{$PLscq1vM^d>lQ1e)dodlLAQdT(; zDjFX{;pz#KZb8q)ZFL|qbEO5}XH}=Ex_=CmDm9PYh(%v}vc;5+x|%r-(Tv?1HhUsi z*0DWa=)3hSkp_F4m|+F#B3P*;6mDTn?O@r;Y&0LcjdeH-SGKbiwV`wedqh3BleKM% zhV5e855TeAY|9eiSetZrFt^QL7wXy#^o8#BDW}md9n4iI{@3ve0>MhBDfATWe2500 zT^dkYb=O)4A=YjDH0bUg7>C*(M`+mF^FCeIy|z?`u|FH9Ktu21ukpQ4`@^u?H~2Z+ z?KiPGIQv)Jhx2Seq5fDmvKYpe>j3_7zs`k=f6pim&hderQ8J;I6a6!> z)j!~zG(88dOfEtT&8GB^$KM%o^ddVuZ*7!&u=%U$`Qy)OQ1ZT$^4rw5 zTS8UitUpoQ#Gk^zed+hK95W zr}xmd2^9Bk_eWK@-F^>UfE{Mh5VGT#7>a*%noFr#o$bY;v`gLAP}en%;v?Ns=#8tp z91qn!f+#V*=h*Gk@f#Gl`{$*7km^091dk?*sBqgX}=( zB=q1Q48PI+fj3by__i1H4B3bHltURBLUFBOO@D<)!-q={9{)(W;%h)g{42*k8yGi_=M#M+z! zX+u-2Q~fA3HO-r{Z>CS32>p&3n-2hH&Pjw{vvRZxr7i`RX3wT|MgMl8gqb;4>Okq- zUg2=m;Y-6ZcXmD=o_er5bcxJk7fXQ6lX+5_%6#^R3Y803vp>PIkXb?@;Kk~Ufdh-! zKsq|uhl>K!KFsWB54(%meVQF!!d7IVQA^qRYbf+(!z#mBKbA%_q03k_Jp}z(X?lYR zV0GyM8OR3F%`u2gqoWqgaxaF1%UP3L=pZKx-2_;{-q77?C0m&aEg|d*O%;T)OiHU+ z#R?Xp_utj*6TMHaVV;yIx0VIk0PEO?AS(;QKaIdEyvg=nq!Dzf7hn_?{PM`4YZwLQ*Xfh zNp`*rn}(nQO7Hs>95$FuNp z@CjMLL|tT~Ye7o_J24h+C$jl(AaIH8eGlp~t9BRuI+EBx%2c_+DpD@zRmLgCbB%d) zfx+v{kCNq**#b%&zri-tf#6M+b`OQOSOtpY-e$G^K&7yG39x&I?cM>FyUaW2TPiI%d49{5JU&vuQF@#|#_mHg3q2sjgpl$PGp~JLWbRU7d3) z?JTaa-;{#+oe?k8U!0D$#(b`WwUi^JoS~;Aiz}*+5?0dXIU7G3;XIOVsp_f~jBT_n znw75YI=l5~)zeja4}Q(d)T3)Vw;tWydbRBC^q(x{QN{PB$>#jdC7o@*xN_o@r-mPV z88&V5WS8}la^iQnd(Reb&J=@O$ll$pM^Cq|6Q)$qxw-Xd*3MadkFj9zQpMo1e^Kf; zFuJ)-8#8`tJ-4Z@`SsK?d7Vj1r9#f7Z!IQg{0qI+IqsR!=sMO>4PND%^i*xioQ`t# zO0NCS)VdX%*Arx`t8QNXvnkGm&q`reiADNjL!G(u>hn2yUVV9&oUWgf+gZ1*p{ldq z9|oJt@3a25y3Qd540)aP&YCJXd(X96UDsOO(|BJ zYf+eCWo=iV>xTIq3-xyEI(cgG-b2QX?MO%J+d=6%Ve(XGVtzHhb3+i%?UG6x>v3n* z?zT#$)?xnwWpte0%b<6QRMWOD6UYkZQc(Ep2~;&cRBxmN5pF7$M@ zu4OvX-qNc_bGI%%+qkvt+ODP3e~lr(vx~dl=#m_!4>qUI0Bcp(r=_Oy4U4qy*sMoe zx2`?f^=qY_oH!?|iBB)r;IpR31zg=zO+KxiL&FROomutud0ZLg%%OR6{rA*!8#8|R zh?y?$M&>(BjZ>x$nLL%wE@!o0ZTVgQ&M}X+Iggs`1(}<(>JoDS=is%n*;Q?cIeLXN zDn*~)IjEjm&UqzKpW9WWjAiOr{S5R|kFG6Ue#T> z#v$&y#cXoA86}fz-$RQ*?+kosDd~EiZdqi?EzZDBU0SxLQ>b|P+RmW2mP5{nYmf_= zs^oJn%QotrtM^I2-2BdGr6F9>X7wrWoZdvWIY$iV6`XA($?A;fvc=h_x1}I` zGrDTkwf*-t`XRGQuvd21kopV7ci`_M*yRGsx zS8SZEk(3)}!kFxIc4QAq#&l-^U?evv!ttTx*V)NIxH zTN7&3>{UV6qFHCR*43+bui^AtAr*AiKV~z#E|s%?S?laGTdC;!7-yfaSifD8W5)NG zI%Mhy*W3&CV98lyu{F2zTBIePv+Z?5E?3)2_OBHR{`YJm*Zy-Q*LJo3Xy3`4UEW#x zxITQccea|f`^ku@J#lPZtxdVi)~*=z>b~N`bo^hN#i}bvH&yW|4QysJcyV9W%&OPv zihr*FBGUYyI$J?h^L{o%Gpp6Ps6eg_&PD}u*&OwBwjTs^x_bXZNxJ$!)z|;2zJU%w zsvkZLH2xz0DQWPZZ}dgdHTqxvTqqz1VyKor&M^gZRd+P|Mu@+X4*3i}d?a0~A1Km_ zC+-g)Nw@0bwfljhdW745_+Uj`ryodS=<*ZY?I*g&Pjs)J=-xlkeSf0+ z{}1hubO`$V@R4*#Ec@Xj>4yA3k%Pm2qDTBhkNSxo^AnA?qyK&!Q26(MNqm!Z2#5Ue zk#rbP{P2-CTiJ*Z#ww z>XCHupAYfthE8^_Et$(A57(8R>e^K@*ATN~Nc}qX>ed)hWB9NdBZk$fTf2Jwq1A>| zuQjp`6%89vOZUGoUb_EzsC}!{-sHYLPIdozkm`Q8@&3T}t@yw1caAaR|69~^!l+T> z=$(&zrA{#&&}la`Lb?lbgf5B`?n9lZr_M1&>vUBF(mj{xJ_3geoG1{h8+E2b-)@q8 zFOJ6<6!85zT_PbABhN_3F)v^xEI>W`4Y6WYqkkpLtJ9SvL}6LNd^%laQC~w~Q-N&+ zb`;o8;1EIw42%>7Qw7q+ONQqOTqck%0V)p@xIH^yf#EJ=> zgBZq%0z_dn0gO8}M7UH#e?oNqazTd^qNgGR9Yu&9M3hY9NB*LQF9d!NsKfY$;{jzS zgxw+tmuO!qh=Te8n-b#W#e9m6=wFVO`Fp+Gw{pz{b?BE+H44jq_qbTqw11(qQ! zq|;RuG@T>lKvTL8avV^4gz>^U9X)xd!c8FJ0T3-$N$u&6?8f?VMW|d2rKDym{rs9-*J@?;*7+2SI4X9bTtXl{Q88|bh;LV)zJ`4 zvgkNYS*+sMJjGm{j@Q)bMiJK1=_V1@*6C&w)!QVk=*N|WXd$B6I$mF=+bZZt z!Uj5Bw4hHBHq_}Z5H`~3v~#2}Ix>X{kQ|LX4NZ}D()^**y(79QH5dPy;anhWj&p&q z1zJkjQl~3L*b3J_VQaLI5DpAHyWUW7Q_ScszI?a}`uM8!CPlLgKc zh(&^$Li`4ehCTw930y8vAzxt_=cR@?Z#6`bhTl&{9Da?)(ffA&e?KeH%UT6`NkcSR z!|ykcPJ;e^lJ*s}o4^qQ#|r#@(#{a{9D$w!y@A^GPtRiVJXm0;z%YRk0=2UkeA-zI zJSfVK35*qZUf?Bx*9Cq*sUHaXDP2fpI71Y?5%^Ky_d6I;7&Jbsz&rvA2`nb?`<?T|`AMfmj`&m1CAeL+xsSz~6$NB5;;KhrsW5%*BG% z?wpWw3VOA`^#Zqi7u+QZ_6a;B@VLM@f!gH*h1%r!5XF*Hi zq;(j@m+$vvT7*Z3q_Dse0ih=}zR|Vb@ zm@4qGz!w6MqN^GDAn>a|gr2o>4YAN( z!!`mt3B(>JT6tfASeK>IBLpIyU!x}poFQlVY4uG0hI)Zkfq4WL z5?D-N8G)4qRu_nc)0)1<0$U(mOe<(73c3iySz^4fp&pdtEZJ?DU6257SgbsK+H;MG$xKUtS|5nfvp5$c22ABCa|}_ zf#1-f8zu_I2%I1gYcMpy*#bQTdI?-AFi;?txoP}s1#T3$P2e7ZE`dih#PL5V3eE~l z5O`JKErF>59}9dT@Rh(10>27W@b*e4H?qt${6$~^fkg@F`Y$C4koKZ6Vp>x}%;sp= zP+&8GZ3K1_h^Y;YudhHifg=Qt6*x)Y41sfi+V$@#3XqSgDe@B-EHG4Hn7{~uI|N1v zr1e+S;$s3aF|X0*1tPszqmhxLA!fS2UH=b6!Bc@50^bPyD3IyD3F-w>h>i?mnoq+* z0*eX6QUtBMlECT$v7k{aZ;a_;?Mn+$fCO8O#tsP@_7d1%;1GeM1pX~>ia;#H)a0-V zR>K7X7Ypc1-=l7`BhCZHs#dtt3bv0jW!GXMPLC!y8erbf>Hu22&^iww!nr0 zk=LdfXd@8Q=^EWbU|)f50vo&vGfUZat7pdqr8HAF_R zhG7CD1nv+RCGeoYV*+CZo)?HDCr!_FESJ>2q=y$M&L(*SV^pv>jhc` z<`Gy(U@?J6)Ytg2AWXyR0_$SCTCJe5C}<(Doxm;vdkMsb3>yCsfujWeEpUoJEK|_< z90IXER-+dS#KvP9?flNLS`@4oxJ4j#5zrX-2|Oh5xWG7p7X)JUjmD2>kcR(XgHcB* z!B|1y|IdR_hZbq3d$_l7;Cr;oDd;r7 zK_iwKX#zioYNm+te*}IXD=reWpTO@Sn$?2dAaEPf)iuSDqTryw7=i!S%joB;=>IGS z`8qWpHis^DYGInB$T1dndit< zGL(6qXEJQFBxTM#7LhSyh>RIS2@ypRMJbgu{?=aWb-qK__xC*4b6wBlpI)EOd+)Q) zaj$bby4P822a~sOU!JjQ7Pa|2o3J%Iu_ya;C==WF-(TSWW(pQdNc@W@7)pj;SrG;! z!Ej%ZiR1JC!%y%ZGvCAt{P*cvQ2)w4!T*c#TKq4ne^1wD`g{xG#`}MXU==rTD|hoC zkMb1H@hY$LZ~m_;7WV)DIGGH-u>adX3;u^MB>MRue6H|V|L?w#VE!CFuM{h=I_ofT zGTPL>4Lh?J2L%8A2w!lR;1!PNRLo<>2#&U%)l~&cw-Q z@Qc3T<0%>Z@^-j?fDbcq;#ttX7|XCSYcg@r84E5W4qvbZ+p`<{GI3Bj(ta!_aR$S4 zL&5P}Y#;oNfB5?AxrMtTV+p~porX_HoM@i3{~x|t!sjJ^ul(;GPyAl`Uq3IXf8rDW z{df5P?eG2$4sAE~jT`U(#P5NT9vI6>oWc2A%#~cvE!@TMoKo=mpV*(|SzZhb`~L^Q zue^iz@P1}uHvXUf)m_)eHDt5+pFRFpWLrTO_U1qi=NL}lG|uHBF6UZq<__-Tk;MK# zA^3t9c!fXn4~D1Tf-n3o->j*aj=>c@;U6pq^Rf_&vut8pRS_hfhzNeuI(&f_*peOi z?^Csd<)av$o(sOf$@Vjuc;X@PG+k_!2NKWSZnfXd#1jrj?N9L>FYzi9Pc-~(fBUV` zA0)U_Ncac3kKyUNbV2dt9{c)b*d0uAXd4u2M`*{D~ zk|cVe;QpiG3#MdRCY~?|t|bj0f0PATjAfX3o}i}vvuw;33~mAv^?%|Cg5X{f;U@@w zV=6Rwmypo0oW#WQ0`u(`b0ya^xRG-B@rmaH4%mOflZo^Hvx19EJP#1u1}=Pozj&Le zbutETBN{%QIRDRTpNqk5Q^UufU~qkCxG&FYiSz&3g5ZV%;S-v$H52Fk!S9rZkN4+L zj^;Qf&iQBCzs03o&5eok|HS!za67c{6CC0(p61s~oa+bIrH0SH!T9xj@xM`%G6fUI z`N2II!pE~S7To$f41#-}g$8$03r(EkSF*3cdThkzOdQ{LwGXa23twjtM=<#1{4h7R zk0neO%wurrMfijj3@)Jy_tCsQAz`Qeeg@ZngpUUoJA?+mh98;R636htEjPmbEC#ow3irWPTcPhVas2*){f7*$uMD5}DL-d?>K^|5|5orL zf8#$4?$;l_K;pPPc*lltpNZKR+|D)3gDWya6UXeq#pvO_BA;g6;C9*J1Hr8`LlejA zZSA|THwQAfs5E?j;#hrx{WQ+yA}(j*G(EV(LHO}I66gQ>1i^K^;R7d_I7Yu}@Om^dEaV84~Sd62>{PQ}mJU*c6>XK=&V@cD_;@Z@)e z`&dG7TiWn};D&0U4>30rr{KZmpW)-dT_!?pxtGC>0>kGAQ|{2i=tk z;3~cF35nC~;En9UeQ=p-Xj(qN;KI8wPn>EOv@gaotjyq!7~%61huMvTec1mkJkXxq z7+m)jen8@odZhhWPT~v(cMA`npE$f;X}_LZxQhpZ+ZBZ$kT|tI>4CGn$RGGC|6*{R zYxwcO8-j(VW(EdVv4(jr=4Wt?Z4n%!#ub%TWE0UVqkFm{}dz% z{&zQC%DZ_lgUctwJa|`|(BPfdLh~`Wj5XYsU~rSAa9@?RSf9Z)gyG}CHM>#&cNFws za5KX22}AfYgIoWE`4k4%B!>Gp8NBCXxPOIffHBjdQt(%egj% z{@*Ov!F@c!6a0b~c!fXn58j$Gs?c3b#dLg-Ibs%hS%}41mR0x+pW_Q`$qww!ejLnE ze2uZm7BjhkOSp;~xRtwkkVkon=Xi-%d7Xbp2A4~xib|E7!9UN#@6zBeu+aa_355SR zfAE;+|Ic&&|GzPRaQqX8#ZA0GD|TSwysnRZ;!tXs{b;_<$xIyE&9h&`WeiVX#{d2Q zo?t6?aX*jnI8XB{UgA|==YP!qjbf7XK4uIIfBpym%nwT)w0G$L!+Br$`fYulF2Uyy zgPS++i~fNBIquW{7koum`2TF)r}Y0Z?n|8i-K=@vzsG&Cn>_FP_qZ>XaC7H<{~q@R z$N#3z`+|1=Z{xmr|KH4cU;H09|8?9K_Ww$orM|C>1P3;X}SjQgVgzj^b%sQ>?S+^7F<+Pu#c>_5hRiSxgkHShcPxG#2- z=Y9Vk_XX$wOucT-yzk%RzTo)Z)Olafe*bOU7w`X@Iq!@2|9>6#h5dgM=Y3)S|Ce!J z)c-ec-WT=%e~$a~|4p0s8O#00xG!=3ceCbw{~q_nZt}eE-{ZdE{GajL&6)T8d)yZs z|C>7R3)=6$jr-#Le>3NO@&5m>pT^S)^6 zmGB?qzQp<8&6@Z9d)ybh$@9K{kNbl2f98G}`4DsSF+RystibB5!v<{1Htft^91t2D z|6zhxIG$5EhYPukYq*KqxtE7|oM(8Rm*d9!|C-=;-V%&F<9&K3Q!*_d;KO{B1zC(` zSeZ5XEE@-g{og{+p554&F^=R|PT~yC=VGqpdT!w^9=JF0{GZ??&+;OF;II6Pw*|lc z9#-4=vmLv#4+n8XWN`jZ zFp<+ak8g7Y*YSPsJ#EX)!t$EvKw z`h1bC;>P>Gqo4<0;t;;f*Exl=_$J@syL^uy@I!vYPXojL|6K4DzvYkojsNhDG*PAQ z;r-0SYbZUD%rgIhGtrMsAl>G&XX#4Pf%5R0=ctMC~<#~0X=9oU`yIGCgO8e@|!W^w_S za1}RjD|hoCkMb1H@e;4{I{%Ig&i@5vikB)m?_)+j#N2$0PqGv%usZ9o0h_W7JBJ3x zzn5SDhw&AT=Ty$&LN4PPZsKn0eCsQ&lAK=4$lm%Ig zWmuUt1H=A*R?wI&*q+_kmobjySWe;$&gWvT72*6xq|EXK6i3IKjvrrlHY^|$Nzi5FZ`29g3Ddv-xGK9UZ!Uj=43t=W(k&KRn}tt zxbgmfQP7GV*@G`}2w&#woWfarlkf0dzQ+&vVPM$*9|=C?=lqJ_@<;y0e|Sgcs8aXv zer94eKElUYB(wg1N>Gtcvo0I58QZc8dvhR%a||bN8s~CRX8pfhu$G&-gZp@dC-?;~ z@CtwCAB^8CF#f%C7gI4^%;G`jU|tqtah7EjKEvnu0$Z{JyR#n$Gd9ZNHBRPCF5nWb z;s$QzZXV=Op5i%P;?>Al!gayly#2wbRLOZCGx8zk=3{)4rC5R0S%(eSG&DH=Z3La! zivu`}uW&r4at;@A8P{+Vw{tHK$Bp;@alsj$=Ve~w@4O{TRG~YWl4ALgSh$YLxL z81{c#-4=vt48?p{t+|2XO>nBJig5p zT*vphll%EGKMM_x|CfSq_&tB&pG=Z1s?^=Qm+6^>Ihl`zS%T$QHEz8BYYFP}MYdu` z_TWn#!k76vr*IbEX zj|+vYp@<0MaB}E3)-gbeZI(6?8x8^ro#WJe2GK& zGGFHu&f=SVCot^)cLne91AfSl_$fc*9LV7ulSltg5KQA-F5+^oLdPURdf_ z8}I*3g6-VP!#vJ2JkQI##@~5MzNkWXG9}aU0X`fU_Wz@Tf-J@|tjwBxmW|nh?b(fe z8RJNf<)nQ2e}-T_7jq@oa|?Iz06*bLp5;aUz+d?nZ_BU$ljV;}mYNxumAROoPp~A* zvl?sjc{X8dc4E(%MSl+EXpZ9>oXxkml&iUs+qj2^c#NkR``Y3={=^%M-vloH7gJKE zU>as-cIIIL7G-HxVvWdHLOnqvHfK9_WgiaW2)@dRoX&ZCn=81E?}rA*f2UwSKjvrr zlHc%q{=z?*FcJM}eqP_Y~0o_X{#H8z150EW)Q)kx#QO8?qVO zvI~22U;+IkJjHXo#H+l{zj=G1 zs8Y#!A2aeH=H_F3GBh~;r34jNopsoNP1%N>*^2`>jIVG!r*aM##*O#?GQk>d;&$%k zVIJohp66v=Rr&+;OF;ID=C|6hXJo`_17jH#J{S(%IZ`2jdv}C-?JXe#S5P4Zr6v{F6zF zM3uUm_cA@R#EtiVPC-5vW(k&KRn}sCzQ|VW$R2!&L-;aZ4-ET%ieMJsK%-%&Iw)jhnQnV5}_@NpL5Q>@6RS(gpjjBVMasQ&LQ7|7uq z!wH!~TC+@H(e(7T@GMe3$R>1AfSl_$fc< zSNxVgKBfPE6a2$FN=K!-hxaoRv+)r=&LVt@75OylvLTz5jzyoSt)L5gb0CLv3@30J z=W-F3b1gS>2lw$v%;E&U;00dc&-{b8mWjUbyO@gU_#ksIFAK3aV`VL>@EJbG7ub>= z*q!}2n4|a_Cvzqja7kn=VU=J5w{kZR@+eR7953-Iuk&x-UN)*!a^A;`p|OO7hXlF# z7@uS*R$z73VFNa08+K+d4&X4p5;xxe;{{VWhYPukYq*KqxtE7|oM(8RmwAo92ZsHB zOSz~-cQPf@@&P`~M_G`?Sca8Zlh3j-Td;jO{ohT{mobjySWe;$&gWvT5B!yX@wW2O^OG?(GcYT2F+ZPRNtS1|m_=as-_Q+U59zg*XWocGo4c22L zHfK9_WgiaW2)@dRp~3N=E||x+xq|EXK6i3IKjvrrlHc%q{=z?*q+(F1c>muWUj*LE z^vuGX%*Vnk!E&t1TCC3(*@_+6BQWg$mjpxjGGFHu&f=SVhwt(|e!vg;5kKYU{Hmh< z|5orLf8#&Aqf%6%dw4%HF&iJ@<1E6bSdmY&ZYBNSP|%ER*@eA1ki$8K6F7}?xrocT zmYcaFX0eY)c!FQ>0+|7eL%2PbYOT5bK{F}E|i7J&mG&uhE2{Q5_=H_F3lBHOI z)meuP*pzM9nY}n5ZoL1830~oNPURdfd|F;mdXE*j`j3YUglQ@I(xtJ@to?Ez!2de7-PXs4< zmKXU0f8}4ity)y6WK7Kr%*tHM&nH+i{{DOMzAevctj*`ygss_$J=vc_Ihy16250jv z#+F*F=0jg*lmz zg;|2-Se3O{pD(giVA%g11wHr@hwx>-&MBP5H~9|V<$L^qAMzu9`n3N4T<{gY<&XT0 z|L~3)QKjzT{mjH{e1wm)2%lob8v6ffL0vXvGqznSoiEi}_;~Pp~A*vl?sjc{X8dc4ANV=TMI3IKIKyY>T(Jl&iUs+qj2^ zc#Nm{HNWFeyupMzQH7F5#u8Ep(l9f#GY<=}C`+>vYp@<0u{qnZEBk~7$A6Gu1YhMu zPUk$n%@th7_qmh%`7uA^m;5Gfy#K!!{K7w(q;6EIyLm6uGYfMv9}BYt%dskJv3_9K z|1Sz!u_Jr%B@W@se4SG`i*NEBzRUOc0Y9v(|34CZ%Fp=~zvYkojsNhDdQqkB;r-0S zYI56!0@s6ux#CDZZ&KFmj1ki}T0zW%Q) zsL5y9m@U|z-Po5gj^tQQ;tbB`Vy>*O|JMt)a2F5o6Q1N*UgQt_m4ETJ=c7s`V`^q# z)|f>u=I0YE$?~km+I*f(*qWW#ll?iAqZu1#@djt}EiUD1Zsa!Z;UOO5X@1S`_!DnL z2K8?cl_)7wFby*^JM*vri?TE;u?Fk05u3AJXz=;F3i@ymNAOin@mv1L-}n#jXcSfI9^TJP%*IC=>Ho(CMfeme z@@dv(LpEbuc42Q0uA>lqr~o znVFq=Sb#-Ynw40C_1GvhmXOd~(2iZ%hl4nRuW}-%a~|L33a;b(+{yiMfb;h#*>EUMJqyqD>jg*lmzg;^pn?Ei9ts;tHOe37l#kv;elhwx>-&MBP5H~CI8 z{r|4uJ$}Fs`4KEGP#dLg-IhdD) zSe#{9h0pLgzQC4|v4jqS?(E0G9L3i-nKQY7OSp;~xRtwkkViv<<9|wUj+c0q*ZDVZ zZy8l8IqzdeKE&L7j8C!@E5wcWe|13}Hege>VQ2Q@01o3T9M7qo!-ZVNHGyIOZxU?h zULNLgp5b|3<~9D#TUtdGx|1oHmJjgZR{H-@K|vN{8CGUZKFh{z!S?LNzKn4s$8u6D z{Xau6pNqMY>$!!ycz~bqB+v39f8ekDi?_vEN2N-})Xc!F%*FhCf+bm=)mWR)vk6%T+NN##yvd5V>}%hOZZyw9e?5tCbWqvl$0r$hMAe2d02o& zS(=qtBQ!Yv^#qOBobA|^eK?3C_$nuII_L3iuHZVpA2;6rI|cjsF+by%{D$B27yij4 zZKF!v&3l=iS(uag0>l09od5~aR^`L>zu+_ZT0_~f_L~X-{S}T zkRS0=e$KD>Eq~;1{D*h6iz;Xtsgf}@GcYT2F+ZPRNtS0d*5>nU!dPpIPVCA49Lmug z$2T~eZ*eJCb0fEL4-ZAg5{?N@^J{*`pLl}_oudjRWeTQYW@cv|7GP194h@cfB|#0= zV8I;>P=bo#1`$U9lp!=_yIrUNBoqZ^DBPK zANd>q>7xJd=o*#k9^TJP%*IFfIE(NpR^-#H%Z6;mw(JtK=*@u~&M}<8X`IVNT+X%J z%pKgvBRs*_7Zw+Ig+KET-r6my&|OT$bbOFGn3siEoMl-hGM4a+;5oj)mh8ap?8m_z z#n(8QGr53ExQZJ>gX6zdu$u>Yl&5%(mw1)e`8RLx9#twi?_)+j#N2V?{r{NYNtR*- zR%abHU{khXXZGR%4&y5vf7|IZODHU7?9dPEhvvxojq zDM-r)_%I)3K^9{fR%T5;%f@WM_Uy*KJ@kJ}Fp^_Ai8DB#i@B2PxrMuUfS>Rr&+=m8 zC;mb3EC1qcJ)=@3V`^q#R_0=UKEaYK&uXmA*z*=m*qWW#ll?iAqdAUma5mrKQm*Dk zZi|d1>=7K|F`nkv{Ek2I1`~Qk6-vq!OvB8~&O9s-8XW(kg3_$S8mz}gY|eJ<%03*# z5qy;sIi2(3#{2(m!3wV9``pR>{FtBdOMb)e`3wJKlHO6J?&iILVgIKWWMNL`V_}wH zIaXyY*5`|C#g6R3mpG)i{(o8UI;U_J-{d=dm+$cde#npbDL>~|{FXoV*8jf={^1>c zqEg+%`a874>AYyvJi_$#uCa3s_+>;#~0X=9oU`yIGCgO8Ygom7jQ{v zaQs&ZHgGF<^B|A%6wmPzukt$o=I#BWN+sug%osP`{|^ar^D#cjQmnx0tiuLu$~NrG zUL3$-d?hgK|M7yUoWq4&#x>l;?cB@5JkB#b&&#~V-}~wRTV9GvbSG0XEg#^+e3S)Q zjAdAvHTf(Xvjy9~r2o4K`ZC6m9Lq_Z!TDUwm0Zs)+{FX@geMa}(OJPo{=i@P7jNqy zRVo=%GXt|S7xVK8mSlOxs#(Ql?-UW@h%#;P~ee6kt)7W+m2OJvL%i^G3!J3JHp{EUWMtKF1f>k{#Hc{WzGT_!=j3W@zxA1%f49#SPrb-8{&n zJjHXo#H+l{zj^!M=zA%7+<5=rC&@fWK7Kr%*tHM z&nFlwX;GflSewtY30t!hd$K==ax};B4bJ9Uk+FoOg4Nu}ZQR2{JjT=fn&0s!-eAJ8 zs6t7Zf@wm7#rk}at%mFWj)ES1i9`4@ zU*{Cg;+uSj@A5r#`x6u`Ro>HwSV!$8Z9taV{5eIb&-rHggB}@d!`w3tr$A{>(pk>&U1=cQF;y@xjPg zLJmP*7GiOhWfeZd=lB9!vID!b9|v<3UkeS6|75{TF5nWb;s$QzZXV=Op5i%P;#FSf z-*MypfBUGYRLOZCGx8zk=3{)4rC5R0S%(eSlx^5KFzo+cf&m=HS2&(iIfo0mjBB`w z+qsvAd7NiP>HqVB%e= zKF=m>%}(se{v68D9LF~zV+pebZ*eJCb0fEL4-fGePxEVj$DeqE39m#IN*Wp*{}h5W z%*^b}!vZYI(yYW9tj9)d&UWm|K5^syKS(fwuW}-%a~|L33a;b(+{yj?n4j@WeiIn> z|M!Al_$QN$iAr@h?`3*sVNT{_VU}PyR%I>LAEW0q{^DBPKANd>q;T^9=mAZ%bGZVA%5kAf$F^i{Ikx#QO8?qVOvI~22 zAcu1dCvY0)GPcNKIoEPCcW@t%@C3i$1zzFL{DZfSjVg2(Q$@xS(g_}94(4Sc7H3&j z;WK=WFR&#$usi#4aAw>>|`)g6D zlJh=hz~J4jZs(VA%g{1fAK712~MYa6G4S4i|D6*KiZJb1x6SrvHx% z&hR`h^BRBWEw4uvx|1oHmJje@KFWeD#xk$#|H^`ze3p&bg6-LjeHr6Oj^!lI;CwFT z%ES*`FWACeJit$Ql4p65Kk!%n#oNY3l}g6c%)nSyi(JglCs>l@S&g;%Je#mJJFzGG zb0|kg#uCN}-r#J$#id-$joijPJj7!>&9C_#f8veM;P@wuk4lu3DVTaWcPb8+MSe@Sqa*ZDVZpB#NNCFgz2$cLDl zkMT*CVg*)boxrgF8wi@R4Lh?J2XGi);doBv94_QCuHhzbpRE7)3J&u)&+t4i^BRBW zEmNWj-N}?p%Ln){A7#NQ`oEZ<3@fuHpJijVV0(6BU&c6+V>yX4I6v`;iv=sWo?Ez! z2lxq3@+>d%2mZ>xc-tFMrIIn0+9Ct9G8gmn36^AeR%2~G&n9fmPVCA4k+FoKg3%nu zH#nPbaVb}GBe!u65AhgJ^J{(=8XW(h1UHy4H7Ze3reGRoW_IRb0TyLxR$>j-W23n7 z{%|0|34Od#xMB|zvnOflS!sUmAaevGCi{} zC-bo|OH9-M;Td^a1@Ffo6%Y2l*Y#ACH{|v^!d*PTPk54Nd67Tx zSN_G=ZL_0NC1Yx4U{>a0em=pHEYE7J&F9&Kt=TCume5nspF=sC1+^AA_^IoQB7UpEWx%$7bpajdY zDr>PmUt}wGWDmZ?A$*yya|&n8jYVJan}T=vF5lw^{E#2>nTgr>2p?w=KE;ZBnswQb&DfS**qgC|7Q;D)6F7}?xrocTmYcbQ`*?&W_ysRS z#uBawe&!#%b$(Q$yO@gU_#ksIFAK3a%d!fe;d7zE@qa|GLM3qX;`d|5p;!U_CZsbGBnw_TeCo;H#X->72*6 zxgs#^|8;`*xs&_(F+by%{D$B27yij4i=s;1&3l=iSr+O4oPvBT%n~fes;tHOe37l# zkv;elhwx>-zDWO15zOM7e24GyJ$}Fs`4K1H=A*Ozz~J4jZs3+psfxaR7($6^`fB zCHjAkU?G=r4L5N+_wq20^9;}PGOzJ>-ttaVp*!Ev|0xA&`2Zj0qb$f`EW^sI$!FP^ zE!dvj*f(a8=t%pqoWvQN&&6EH_1wZ;Jit$Ql4lvaXz>Gol@S&g+LV+qd-ny@uHu_ya;C`WS~-{5S%#id-$jocO*9REFnLp;XQ{F>kKC*EMf zvZz8ynSyDUnc10#1>(m0zo?)zE3pRau@RfI9lNp*2XO>nByuh&k-xjRkI=;`H z+|Q5s8NcK={GPw?PbOI&RqAfuyIlXL7i3{h=3`-&U^!N0E!O9YY{ic3!IwB>x&D7y z@H(e(7T@GMe3$R>1AfSl_$fcp0KfGf_RH}P;KQl2KAK~LH!lzh~PqQu? zGSHqP9shq=wT*fur z#O>V6!#vJ2JkQI##@`dK^}OZXs6=-%CDZZ&KFmj1ki}Srm06R|vN2n*eaxa8`!X>f zX+M^eID_-Km@B!STeyn{_z7btEza^Hf8ekDi?^+gDwT|>nSoiEi~0EkOR{`qETNj9 zHlJq`wq_^xWPc9jXpZ9>oXxkml&eF7{@*Cr#yvd5V?52T`5k}a4JNFKDwLEdn1-2| zJ#M`J^9TyCC`+>vYp@<0u{qnZEBkN|NAOin3=I2!x?mpP<_fOk``pR>{FtBdOMb)e z`3wJKlC}E(?zK_L?qzyrVNT{_VU}PyR%I>L=ZkE`j_k44&;OSML-;aZ=M>K3n|z1w z@;!dQ5BU*4<>&k=X7Me5=5kZ5uV@|yud5`nSb!s^-+cHVk)NNgUrFap~3MlBq+|Z ztiosb9A98dc3^k*<6w^BYn;rPapV2JK(K_XxPe=_n+JK6r+AK+c$L@rH*en%RVsO4 z*#GwlGV&qj=3{)4rC5R0S%(eSlx^6Vy*OZl{vRfIh2uGubGVSpxQ3g!oqKth$9ab5 zc{%YO57z|0^OpCb65Yv^Ov?xOFdt<>7GoJ!W=%fJ#xaW)Y|n1&%f#o6v>(e!oWc2A z%#~cvE!@S}0gF#~l4p65Kk!%n#oIPUl}g6c%)qS7#r%9CGL}$MP@dITo6oZeTeA~; zvOkA%G{^A`&gNU8LH{omtmZ~;;~pO3F`nkv{Ek2I1`{?#6-vq!OcOWW|Ct5ZnTG{f zl%-jTHCT_0*qrUym3=sfBLc(ze^oG%(>afCa|PG&eeUFbe$3DKCBNbK{AH8=|5K1; zb5yFkc`ws53v)6b3$p~vu_|k^K3`<3&3^uO6!hRr9Kx6RI;U_J-{d=dm+$cde#npb zY0Tnte#LM3BY)#RyyN|-QupwFW@0uz!pB*JPcc@};%U}pLpEbuc42Q0dYSi)MtX71oV9^nao!3(^?pZN!G-4a#kE~a8SJ{TGt{~Ut6EX3k0%PM?^&+!Ge zWCwO7GoJ!X3dzzvuw;3Y|n1&%fycxX+M^eID_-Km@B!Su`L$6 zcz~bqB+v39f8ekDi??lyDwT|>nSoiED>9alU+@G=vOKG?HlJq`wq_^xWPc9jXpZ9> zp|OO7*@CyYl&iUs+qj2^c#Nm{HNWFeyupO+QH7GmjrV^FK^kUecIIIL7G-HxVhz?~ zBQ|F{c4eQyu>S`MM(|Zm;LZszwl2c*%6iMZr;oE z%)*?^$HFYZa;(Z)tiK~T{_#5>z9?wLj_kpgID{|rbxz?dzR7p^F5lw^{4i$m5kKYU z{EFZ5NB+itc*oA@4{{IhXC`LjBYd2(A{I}vBA;emHe@rlWf%75Kn~{^PT(}ojf^EM z5-jIhZsrc|;}M?V7rekL{F#67)?HDB?qaIY;P|H#Jjfi(%R(&9vaG^q_#9tgOLky) z_T%8V@%|qrc#V@elMA?ntGIz%xtj-hl&5%(mv}WW?EmY6zj^!as8q>$A2aeH=H_F3 zlBHOI)meuP*mSr4ZzJf;UL3$-e1+pVm2IPsp2#|3A2o|k!zzw?$4 zqYB;0luXM9_%I)3K^9|~m_=pQ=6$|Hld5 z;B3CdrCiO8+{QgT#A7_oulXH+;*GfR{!iE&l_)7wFby*^JM*vri?TE;u?Fk05u3AJ zVA%g%1${V(Bls#OaysYnZLZ)tzR#W9&yV@pUj6^2;2VC=U-&1J?29UOH}7S7W?@d| zV_}wHIab~0=YK6heZI(6?8qK`i9`4@U*{Cg;+uSj@AAEv#RvS5AMsOu&ae0_f8=lc zhj;9cDs>O=BE{S%goqBA;emHe@rlWf%75Kn~{^PKb;pOcTuIA};4zZsrc| z;}M?V7rekL{F#67)&ubh1;_ucaFLLZis|?ub1*Lpu{g`J3ZLO~e1R?5f!*WA`@f%H zFh}t=E|1Sxy@;d+K?FXZ8rsTYj8Tk-%^D#cjQmnx0 ztaDKRHxM*s8+K+d4&X4p!ttESIb6tPT*FP=o_H_ky@JC$&NDpE%e=(e!oRRpv`4)@0lIyvJyLf<~@FdUj zB7fko{EN38iYk>XGM129kbzm5i~0EkOR_wxu{NJ)6Sih2_GJIip#O&oMspnB;B3Cd zrCiO8+{QgT#A7_oulZfvc>n(-xWR~Q2-sfySux)ySux)yYq^mf+C;- z7N{tS3K)Qaf`B5RAPSO_lG5Gv-Fx5t{c!DvGc0B}@0=OJ#q1Rv=1HFCRo>xa#@Q1z zm6)lRkvW*3#aNbA_W1l?ThNFt*@4~Jk3%_zlR1O4IiHKUl*_p?j#qd)YWVp-62$&Hs3;LrG6SM=3+sXV0l(! z-F^1oM9`X@*pmY|oZ~o^Gx;)K<6C^6pKvwT{r_t?{3!UDzws{~Y5Kjdfpir?`k{>oka zoB!}%{>N*)%O`=Mn79Xms**4@GchL%usF-HD(kQ@Td^a1us?@I4ex)fU<#k-94_FS ze2*V<71#0yZs898$pbtVF|z+Nf=j%~2aGuwG?akJnT}bRhlN>+6wrH4cBusw{ti5^C(aAB5&|MpE3U7 zps7$YM_OiKZWdxmR$z73V^g+aXZGSij^OyfP|P&JEWX0m`8Ge`3Vy+FxPia$ckbaK zp5VEt;pcxvaGQ@9`=6kqL`=yH%+7o)$}+6XT5QM`Y#%YQ|89c59Kz9@#OL@D=W!92 z@FRZCulYSUaa-8v{{Il{;}M?X1zzVpK4rWkK~qVYhMAd*1zCdSkJx`TL0vXsYj$E! z4&ZQ(<5bS%%Y2P*@qK>s|F7M&TCk2k@@M|Wzj%K{K{x7xv~Lj^qSR=L?+6 zH~0>h@l$?z-2T56Y~)t%RN-@O8e;54eI~@EdO6FZ`W*cqnQpCgz0T9Ix;; zA2Ig7K|_g{k{Ott`B;=?SedohFk)o?Ed=e^jeR+UqdAGs@g>gVA}--a{G4C&`>@gd zZxU?dAKb?yJjDyV&U<{yc&CD~Lp;HAyu#aj#Mu7@4JBeq zW?**aV^Nl2<%p5}*Ag^j3$|xB_T>=$~4S;!Txgz3bF*tvl{EN30t!hdvXAWa~!8~CSSf_|E~$&;`{uB ztGSLp@@M|Wzj%okaJ1`XUkKkYa$7{UHCyaY3XetR)GZS;N0E@F6tFlhi z@bhmhXvL1~!Tub^v7Ex^Ifo1QCg0=7T*b8!Bm4hBu!TGLClBx#&+rm&@&RKm2Mr}) za;9Te<_R0!e_=r>R%8vlclP5@jtMy?a|UN~J{NN-mvbf8 za6LD3J9l$Gk1}-HagjH8pU)WoYS2(Jrezl9W+9ej1y*N0HVq8Lv=MY>FAn4gj^{Ma z;wyZeZ}S7L;1~Rc8={7v|1W~yxrc{%g6DXJxA};%uLTVyVoGLUcIIQzh>`u55maU^ zHe?I7XE*lc5RT>~KF60hkBhh@Y;^x02|nl7{GOY*jel?-kMI;P@H+4DDdSxano4@z z{?iCDGZzc81k1A;>#_-3vlDxA0EcrNr(U=JnSz)38sFmk{DiByjz98e{>Hy}kjHtJ zmqU(Qe8^Zgf{GF{1=BMd^Rfs_vl45v0h_ZOLtPzxIGCe2ks-dwSGkby@culOB* z;;(_Bm|cRu`49i)f4s)Ke8RXlgQk)&H8U|M3$QrLMGZgys)9Of%vS8k9_-Iy9Lp(u zo^!Z>Z}L5U95J&0Rf4trfm^tPfARp2@eD8VCLb{7R?tuaCTF^^(fwx?3Syo|fHeyS5V0ZQlIfil!Cvyg8b3PYyDVK94*Kj>Ib31o4wBK=*r+JY# zc%RQ0|4z_UGNxq~=4K(5WCd0a48_zFG-VrhW-kup2#)78&f+V4op194uHY9@!_WU4 z!3O@q-?@i}c!KA6g}3>LvF`>AC1OfuVD^ZS{pS-DWf@jxEjDBewr4l?-Zyo=5PFq2YEc?ILpht#fOY_KWHc+Q!qWV zF)xd-G%K+t8!*(|(T-i&hl4qa6B*)*e3c9NEN*) z%O{NcAZRKHQ!^8DvOv`E^Diza$EvKu#%#ro?7{vV#<85j=Q)Q9_-4e&{@)XP%vD^= zAGn1(_$LqW7|-w$Z}I_S9tI612piphazQ#~WgZr0DOO|+)@L)eWf%75AdcjOhxR{R z@B-)Z4Zg!={FGnvTW;i5?&Mw`=1HD^X#ZCQclelb9tBk;W-4Z64(4YumSq*zW+S#_ zhmfN?`*A48a586bHs^COmvT8*at+sWGeg@QySbl7d72k_gZKH2@gE0GC1YA4DPU3T6qx*kJFprD4gdg#9e$DT> ziQD)G_wfi%@dB?uvHyF5r;PVBs46MbFf((pAWN`3tFbPdur)ie=TrM1AQ;YZoXVMe znXmCJzRyp%n(O!@f97xeE95xH<2=jDyv2u%^(<&8AyY6tvoSA=urw<%RMXLb&DoA! z*@uHUiW3>)i+q&}`7S@?XMv%ZuLR%mC;rM^{G0#qU;f8yyvrwy8xt$~SG-A>nwg@8 zVq$U%3a~iKu`27ZFcM8#xuOc zn|u&9y8oD1K}89eoavaAd03dGSdleYpUv2oUD%t0V#NwYpUp_Y1WxA*oXa=(4wvy$ ze#vjSkz2WwdwDokDEOJ56rAT(-r-}$i5-0Z#7xDE%)$ID#re`+hWf6u-J1Vgz8?ZUsu`By5oiJO0F9xr=}EAO6e#c#U`YgmDuDO(lsM-hXOACgx-T7H2tD zWgRwVD|TcL_UAB;<&=n#{XZ|5!v%bk@9|@<;#&T|E!@FBd4R`whL^%d_kUCHfH4V! ziV`q6(=jXaurN!pB5SZdo3SmsB((qDfY72`Wm&l+3{F%*UcE!^*71 zhHSz1?8d%fqx&Bs7|lt1jxTW@7jX$c;^+LD-*XeU@el4xV*f`3r+9(ad5=#SFKN(J zQl?>M=3+sXV0l(!-K6&4M9`X@*pmY|oZ~o^Gx;)K<6C^6pKvwTg&aTfXa2^&c#y|= zmX~>p4;d?2&`?6AV0va_D6gXkOS2MdvH_d39lNp*2XhoBGQ=18YG5d4q2OJ9$j|r{ zzvEB*mAm*i|KY#R8T|T*LL;%iQ7`!{~v;VJi=4F!0Wunr;L{-XeuewFf((pAWN`(8vCy% zsLLj7%}(se0UXY8oXVMenXmCJzRyoWj@4YpANezX<6k_;<2=jDyv2u%l{RQ7AyY7v z-jR)YS%jroi8a}P&DoA!*@uHUiW34K_~Ff}tVCkwDR%dsl!urXV)BYQ-Q?7zQY7{_u7pXVGd;G2ApA9EGg z@&|6=4*nT7y8i=$V?4u4yvYZQNgp(nfXSJTS(%50S&9`|Bfb6C7c^sAc42Q0;z&;5 zbiTm3e1q?B89(Kh>Fxhp!A5T7PVVJlp5%F6$ zY{?Gn&VC%qF`Ud9oXyaD$6_w!a<1eWuIFZM=Wg!jQJ&^S-r)VfP|Pzy{ER_W$(WW| zn45)Ik`-8;_1Khc*qOaJFlu=JBLw3)jkEX)U+3HWfGhX~zu^Y{!r!@vhayJye?oAM zS9qI`7&}wYP$H&e24-hI7G)V$W-T@h8{K~kL3?&%Uk>4DPU3TXiSxLKOZX8#=hyr` zll^ZJY~vr?$0Iz&3%t&Ie9Cy4gQk))4Kp(r3udDB^2~#r@ zbFu)7vmC3k4jZ#o#K`_T3VN_VhjA>Y@OjSR0=~)j_%T;;Eq~yau+jbR5d6slJjOG; z#G8D;m~25q37DMen3Z{0n5DAWe?>tJ)@L)eWf%75Adch&PUj1p%QyHAmu0j6PX%A{ zTW;i5?&Mw`=1HFCRo>xa#>pNum6)kQj*QH~{4B<@tisxC#Fp&9?(D~*9K*>B&2Y@- zd@klvF6TRN-@O8e;54eI~@EdO6FZ?}XWdC~vhj@bLc!jt5h_Q194JBeqW?**a zV^Nl2<*?EH*Ag^j3$|xB_T>!D`+Yy(=c&2{{d zKl3;K#e+P~v%Jh(3_Wzj${jS3kSUm+*_f9_SelhslMUFM?bwxl0z)x_1*15TA->30 zxsdPjLw?4u_#J=ZuiVAIqlWkYkKkYa$7{UHCybjXXetR)GZS;N0E@F6tFlhS$o?A( zTCpR0us?@!ET`~!&fx;S$@lm%S8;9F=>C5YY~c?6$pbvbGrYu`e88BzK|=|coavaA zdGgwSVL>TYWDVA5Gqzj=4(!f;9Lmrb$7IgnY|iImF6DBr0cb9{;OxQI&%*#Ad@&-pdK=O%9BAKb?yJjDyV&U<{ycm;!|k`}c8G=j{` z#eyus@~p&2{{dKl3;K#e+P~vkYB!+~PyV zDilt6A->30xsdPjLw?4u_#J=ZuTjJM z-zE5)|L|Y_$7{UHCyZM-XetR)GZS;N0E@F+#K``u3hJ;iTd^a1us?@!ET`~!&fx;S z$@lni*y#RO3D)ulZs898$pbvbGrYu`e889@K|=|coau_#e^x;r7G^0{WDVA5GqzYm67*6I4&gOhB=29-_O0MC0ZsvCG4h+TY7aZkjUgQnl=QGAH z7BrQNX_~KF60huekj$ z5-j0I{G4C&dv4-3{=t1b!c)A!>%7OO#qB>{iJ+>aOvB8~#eyus@~p&2{{dKl3;K#e)nTcbw&A-r_^XDj77CkSUm+*_f9_Selhs zlMMnxG0g?-*p+=an4>t6A->30xsdPjLw?4u_+8ZS{(lnu%3b`M|L|Y_$7{UHCyZMv zXetR)GZS;NK*Y%YiwnxJD(kQ@Td^a1us?@!ET`~!&fx;S88*8A_XHnv71#0yZs898 z$pbvbGrYu`e88B}K|={j+kbLFI%Z`a7G^0{WDVA5Gqz~K3C5EUlPpYA}--a{G4C&dv4-3{=t1b z!c)A!>*ehKp5Q6tl@F>)$~4T(Tr9{EEYE7J%O-5iPV56 z)m+CP`7?iG=r6}X9_LwJ<}E&CtO`Lx37LZFnT>f_gr!+2Fcec$(16X^j$PS@gE@*5 z8RCn4l?(YUKjddo!~6eA@Ew2RuiVAI`49i)f4s)Ke8RXDgQk)&H8Vww>_4ZV0E@F6 ztFjIovlTnC2m5mv$8rjv=bW(7{Vx!_$@lm%S8*+W;1=%SpFF^0Ji|-8$p;nfKc-Sp zQ357sI%Z`a7G^0{WDVA5Gqz=63Gpejep%UgQnl=QGBy5;T>JX_`ujE%<;d_yxb=2L8g|xrc{%g6DXJxA};%tJ;5}@Dcq72$+G{nU6(ThLu^1 z4cUV2*^PZUgrlq4|0Kb4e2Me8h)ehpKj+u{o}0Lhe{dg<@Kja%zaY5Idwj}x)q;kS zG7U2`7Ynik%d;BmvI$#<9G%#c12~-HIF&Q`GGF6ce4n3iHP`V+hJJSZ#=m%w$9a~Q zd5aGjt9sB-LZ)DPW@BC!2@J)Q7F1$QHehqMV^{X!V2cM8#xuNB!~Smy9x$e6P*DOVXF6tO9u{UPR%8v< zXEU~CmztsA74;Sj;z&;5biTm3e1q?B89(Kh{FWQJl{-U@y*$j5JkP7V!^ezMEBFZ{ zW-4Z64(4YumSw1lqc$6{B|ES?`*A48a586bHs^COmvVVvC}yQ#4cBusw{ti5^C(aA zB5&|MpD}*zps8d`8#TQDEP~uD#FDJQ>a546Y{Sm%#ep2b@tnq45hMG5MesV`<_BEC zFZc~N@E88hJv_t{JjW}%9X7iEM}pXOf{GF`B{MKP^RXz)urh10AzQFLyRmN_`yV10 z%}IQYFL53haS1=-=lq)Aa}&4m5ALgD|3?I;c!Ae>k53t|ZqQUxreS90VnLQ*c~)cH zkfRA(vlDxA0EcrNr*bA==4*V5@ADI`W@w$`NB+#;_!kfIIM4DjZ}A~x)e9O*$P`S^ zY=NPeyn-Su%}T7v25ioD?8-hI%u$@k5MSi0QN#ORD0r72@-u$L@AwmcT_F)Q=1FiWu_Yp_0>HL(A-f-daMK^(~m zoX!_Gmv8VLF5{>ClHYP;$g!0>xtE7|lIMAqclelb8U{@zW-4Z64(4a5n4>JKur?d9 zB|ES?`*A48a586bHs^D3U?^s(U^!QE4cBusw{ti5^C(aAB5&|MpD});NK@hcCyO32 zF=?5Fxmk!MS%KAAk4@Qzo!N^6IfCOOM)p5VFpID7b-v9HxPo8s8*bn){GEGvh$nb1 zY;^xu1h@H!u^R{POo^D18JL~iQ5|6{~v;VJi=4F!0Wunr;OJmXeuewFf((pAWN`($We`T*@Ugxi9I=h!#R#q zIg>B*HNM678T!Prn(O!@f97xeiwAj}XL*^o_>i%h1`Q=-ioj4zdO}!Ed;MzwmeN;i0h6{htt=;}zcKBgSqOG?a)b znSt4vk40IAm061oTiJgLL3?&%Uk>4DPU3TXiSxLKOZX8#=hytcmHlrLY~vr?$0Iz& z3%t&Ie9CyOgQk))4Kp(r3x*seSf15bmrdB3o!FBDIGp1+l{5J=Ut{Pk$NT(*tGSLp z@@M|Wzj%DyfYl9 zUgaG=W}NmxQ;8W$<;ch!%+F#h%POqRMr_Fr?9P51$}yZA7>b!8n9ccI%%xn;m0ZL1 z+|2FV&HX&e)4Uipy#E`5`+Uau9fGQoF)gz&Hw&>OE3i82u_@cIbHvF0dkF?|1jln4 zXYm!j&bRpiSMUpd!wvj}zlV+Pe~;i0Pw*VC@HQVYcE_NhL`=yH%+7o)$}+6n(f(@* z8nOl3vm5(z2uE`gpW{oM$38Ds#_JR`m6U0i zIpoO2f-J%Etj4-*!q)7>o*cm89LK4g${EydomroeCOVCsjre-GQWC0duIaXzzu+jZD7PMkV_F#Vw<5*7N z^PIy4e3S3-W3J-bF82R}U<-HfPafbgp5Z0lU*KH65pul4W&D(1@>_1?R_^3p9_C4&=T+X}V}{~%3#v-YRLsa6 z%+F#h%POqRMr_Fr?9P518W@ThBbdw?oXz=M%%xn;m0ZL1+|2FV&HX$YHN5}Rf{VPt z`+Uau-Gio*F)gz&Hw&>OE3i82v1!D}{@VyTvlj<)1jln4XYm!j&bRpiSMUpd!wq4h z`~OAoJNNJqPw*VC@HQVYc8{Q;L`=yH%+7o)+Qa_K2r9D{8?pu4vm5(z2uE`gpW{oM z$32kRuH#_-3 zvlDxA0EcrNLsK0y`7&SQTYR6Na5dNQNB+#;_!kfIIL`)#VlE4A@gZaN3Mxv-6im-- z%*!Gy%}T7v25ioDQN#Q1D(J((9L0$Y@kPGMg?yJE@-u$L@AwmcjTqVgF2UdYhyU_F zUgKRpVcgz9Q%RVbnV6FWSe)g;M)zM;P=}4#iXGX5{W*+dIfc)24j1rEzQ>Py+y5%T zTK>Q-+`&J2fX8@-mw1y87}FkYhk26cd6l6%j>nACH)td=Q!yiRFh7g2EUU0K8?hxj zuzO%Ark`La$8a)da5m?2F_&^VS8@&4b2GPdchvCy_Y02lG%xZ7@ADbs_Y0az#Xv#M1%w8PG5ggBHoW)o8I^X68T){8GM)&`XU;}^Q@7%*fJi&9k z!rOer*!_cs5-}w+FnfRd&nGC#GOWy6Y{(XD&u;9?Aso#~e2y=1UVr;vBv`_a_&LAk z_uRy7{Db>=gr|6c*LjamLymX@f~t}-4Kp(r3$g^uvl{EN30t!hdvX9n!yV%|l{5J= zU*lVRpPz6w*YQXG%-{GI4+e%}jtkE6GH>xAV+{-%O2`yU&uq-gA}q~HtjPvZ!~1V8 zXvePX!@(TIi45^YzRHDsmml&oe#P%1M)v=c;8*VA-~5OF@;_eVT|QylK|xbVn3|cG zlLf*?_g`F4j#XKQjoFGF*@OK#jAJ>4&vOnJ@XbN?|DNDuuHst$z%AUtKY4)1c!rmF zlMfg(IA|!rVEa!lNXM+q!@?}Zimbu~6Oy>)n%QyHAm+@16$#1!l zTe*{ad6*{|I`6p3JABMILxQRjGZiy32lKNS%d!eb0ybsJvT=U?|-{sH}~@>PxB&g@IIe0{?MSQWK7E}%*{e988Nc|3WDma$EIw< z&g{j39KrFN##wxYuk&qw5H`C16@oAL4L9%?{?0u-#1lNnE4yZJgc!To3J%IG1SvBfWtYCQ#q3_^EJN3_xTA|a~*%=&-^Vg z6!VwhAdmAbFY^{3GS-Nop@dAq^vuS*EW*;P6g9m6nt}#w&UWm|J{-(ZoX8Mg^{*FaP5;-sKa<9T_y0gsGV+Y;^xQ1qE1~H~Cb0ybA4ex)wU^BOK zH}~@>PxB&g@IIe0{+OVtWK7E}%pEbZ|3ZS2tibB5$EIw<&g{j39KrFN##wxYuZNB9 z|82nsT){8+4L9%?{?0u-#1lNnE4=gr`D|3%t&Ie9Cy^f`*bZ4Kp(r3$g^u zvl{EN2}7+No!FBDIGp1+l{5J=U*lVRpPz6w*KtE&C}yi*7x(cf&+syD^D*O&*9_A# zEAz4_%d%?J@c!!xnzAjsvM+~nET?i7=W-#Ja5-0T9XCXb?0>6Z7x(cf&+syD^D*O2 z&;ZjiEAz4_%d%?N=>F>pnzAjsvM+~nET?i7=W-#Ja5-0T9XCv{|E+>u+{dFl!^^zQ z$Ba8s15C@T%*&!I%c>LYzpkJu+p;VBawx}gDra#n7jg-ga~0QdL&&j}ySR@>d4`vH zn~xcHk_MQTS(%qbS(c%yj=F5hw(QEj9Llkr%2}MtgZDA|to;8My(t?0c69$`y`U=VvMJlLEBkUN|NpD# z|F3D5d@dJq372zK$o|&}HgGFiNA6u_wXQ(@iZ^+T3{&Vj^Ghv#R?ipz+_CrOw7T2 zEW%Q(z-p|+#%vWe+=lBxmaS@mB zBYqw>y8o{Q-*XeU@el6f5uV}&UgteNWxVj`=SWjYnTDC;+kY-WL6%^7R%2Z@VQY3` zPY&R4j^k9$p6es@w1$>dOav|U4hy09R@jL#+U%88a2Zmz)5&X;lc#U`Y zgmDuFO(kJ!W@1hjU~!gXRo00be*TRGt=N%0*q_5VmQ(mV=WqevtGG5|WdA=1 zwr~gk$Y{?Gn z&VC%qF(Jof&fsj$=VC79a<1eWuIFZM=Wg!jQHD-CF7gKN^BLoZe~T0O7@mx2nT5Go zh$UHp)me{C14A)w1fAK7137}@IgPXU3SZ~j{D3R?1;62jsNv`Ti{N+e;US*jIbPvy zK4R>oK|_g{k{Ott`B*e!WdCIZm061o*@ErajeR+UqdAGs@g>gVA}$FV-Ty~|&-pdK z=O%9BAKb?yJjDyV&U<{yc;VltM}Iw#%>L5|GBXzovINVs8tbwNTeA~;asY>O9H%C; z|Cxf9`5NEi`}~BfxsE^bXa2^&c#y|=mX|}0TYSh^$%Bd#G6mB!8}qUVOS2MdvH_d3 z9Yb9meK?q-IFTW~$XB_L@A5-_#;^Dtf8wu!p_pBQzxfaU<$t`!yL`g9DT1bwFf}tV zCkwDR%S8=8|EhvIY|K{d$R6y^VI0dTe4cZ-fN%0WejG8f|5bvu{DE7zgMab>kMRsI z@g^TICS}l20w!m=u+jZz735)ImSRQLV0|`YTXtb@4&q2o;B>x_(*EZP-rzf2#!vYr zzvV`5l9Uge#X_WxKAC;SI^k&jG?nTi>igZWvEWm$!_*@!LKf!*0JH1RMAZf9D<^;t8JP72f6}#!eG7l!z&r zf!QNQ_McBslx0|%wb+m?*q+_kmqR$3llUB8;=HiY{Vx(M;Ya+OU-Nrz;x_)leLTWb zyujas-E*4}7mS;8AWfQh$C-&q34o_?U;{;PVlP~i%zQyre`+hWf7KUCDvpEhMGItu`ByoK%uj+}xr=}EAO6e#c#U`YgmKdcO(kJ!W@1hjh#G$W#RcV9 zm37#dt=N%0*q_5VmQ(mV=Wqevj2PMfdxDR-ifj1;w{Qplze4Z@zu^Y{!r!@vhj@bLc!jt5h_N#V4JBgAh>`tg5M*aQ z7G)V$W-T^k3$|xB_T>1e>_Y{#zb!@(TIi45^YzRHDs zmml)8z);Lrg75eff8{Rz&42hW|Kl~@Mh`;W;URFr_p znT}bRhlN>+6hjSdKawcEqYkZ6E^AoP-I{wI?Lyq707Z36{ z&+;;F@gZa734S68nS$w=jd@vwq0){@tjPv!&UWm|J{-(ZoX8Mg zSNx7Y@mKER-~5OF@;_eVT|Qylyg^e*qK2P;YC$IEWC0duIaXyIHfAe!WDoY|FplMv zh>_3#&kN>o0pH|%{Ftk_mOpR{ckoXh;4z-zrLfWc-xNGxOunF^1We9!%*s40%u=k# z8m!M|Y|AeB?7z2Q5Jz$Xr}G8QlclP5@j^Sj^;B3z4VlL%!hE_V(a6LD3J9l$GkMcAx z@&@no8RHiSno7pBf&XjoKER_W-Up5^p;yC!N|lI66GEh`RFU4L3P=(l6ai_Wi%V4y z=_M4AB2}b_G!+2_1ObsEf(nA7Qk15kC@8;oX1|kME_dez4tW00^S{UQvp1Q0cXxJX zZ)O{|m79e8SOg=m99F{WSPz?ED~!g@*aQ3F5FDwM?LU@;$v6||;SyYl>u?ip!`*lQ zkKzgZ8PDStrE34zNeC(I6j6E%#Ru^rd=!geDSQ&EVl8Zl&GC8cAnNwtm4x0n5QpNc zI3B0r8~7H!jql<{+=8Ft=lEq|+W)sC{D5ci68?$*V(KDJNoB%pm!VnuwW z2<^Wv3D4ql7=@kiMeK_&;Rt*UC*cg7i;HmuuC0!~9Lrz@tcG>4F}B1=?1|4EJ+VK&jHB>%oPx7(J}$*oxE?<$M*H7R!X7+`U*kzUjTi7L-oTW_ zos!CcSuqFZ!-81cW}-Acg->H`Y=kYaEyiFs?1O`F7>>pXI34XdOf1CZxCYHJb*{>1pcg4?f*OpSMWN9lyE9jdJM$}@gaN^i(x5z602e@ zY>3T8-Tt2^p#yfs-Z&74;;T3wr{Np;7QT(|;zrzppO&Ege@?=e_$~f`XYmsLiT`5i z2&benVK&T#4`X30fn_6T{}oAi2J7Op_#8%ICwvk6;!8LJU&Bc_1Lxvmn~4>;7C*#K z@H5pzUZ| zuaGbfr{Zi}fXi?-ZotjB1NY(~{06_rGk8%e+y4&|{=rlwoubN!F3gExSO~+h3|7Eu zSO*(pON>;i_TQ0&?ih=MaX5~_i5Q1(;v#$p-@^~^W88&bh`RlMMZ$6X5r4to@GrDV zIVF@9v*7)h2Oq(r_&Aow%B5)kHAtwBO|dn$!!Fnp`{TOj+6~sSKDEb6`H3iGo-hOXE}cG}gvO*aF*P40gjlI0%Q~ zXtXCVF&*dNLR^k(@O|8hJ8>T##$$L2&*5df=4e|tNk~)1DXPqv9dl!TEP@eO4l7}G ztcOjo6-Hxct!)1uB=o}}I1W zN+>;s;)D1QK8nS#6h4Vnv6iUYe?taJS=#>= z5rA}&}!l$t| zHo_Lz7Gtm*_Q63o3`gSxnZKUVbew|=aXGHR_i-!k#C>=ekKrjihnMjh+Bca8_2-KC z4A#YG@j0bx|4}4#!WXeGzJw$2HJpSqa4s&!6}T2Z#82=uQMdp7Bpku-@F)Bgf5*Sk zJgOlbo9I4#0P|u2G>>Q~$>%5J`6Ifhs*q3<8(=eRgYs`w==}0*YHcr+hhXW?Hok)6 za4OEm1-ML}Kcc_5nuHCw8F%1bJcQri_jm>`;ve`ArV4T9lM!8*(`F(J3t>2x!3tOn z>tJJSiILb5yJIX4#^Gp>VPYc2;hVS!-@*6r1N<0w;TQN79>*W?7yQl9w*Df)O6e3) zTFip?V;+12i{j&09xG!FtdC8xHMY~r_U}SMPwbB`<0yO`r{FA{k4teCuE&pXJMO`Q zO4a_qCgCKW#tV2AZ(zz)PDy3Jte6AyVL>d8rSU0zTGZ{oHVKWe1-8W)?1p`C5Dvr9 zI02{Q99)RYaZM`P|NA6t#hthh592XBh3D`xUc;N1M)u+A^nPZ{j=3>^YTADh5+bl1 zR>JC751U{sjK+t6B}SNY=iCb1?+_b(8gDA98SgA>1h88NLYreaRY9~9k>?{;Wzj_p23Uw2mXVp z(mN%U(PqMhIWY_iVK|n-3Rn&6U}J2Fk=PNtV=UT(nHY{^a3aRxo45$y!T0b3{1|uP z7x)z(#~&SS>lYG!!@tnV;1p3>%!2o09()9g;^SBzD`O3;k4?3*{acgJ4!dAa?2j+w zD105K;4GYvOK}yh$B%HkQnmj*Bpk%A@g$zc3wRZ8U`iR@s$aPbm=$wiJ}ijEv9ze$ z|5GG9jkU26w!pR+gWa$X4#HtL8Ykd%oP!H9(*Bo|um<19t+*5S;bA<6r|=wJ#%p*J z)5us(_XjY0Cfa{)67pjajKFeO39Dm0Y=W&Y8arbT?1w{eq|L-woQyMZ9xlO^xDMrK zT(6O=pw=AWkm{g6|JSJ4PS$8uqDB$86W-=v)wUKBD3H;r+IGPmtjhLJ#%NU+X;25N zs{IE(T6MN*FbAu;{Rcc+WvCX!!KyR<4|KE|{J|>iKfuvy@CU2r`G0|pR)arSwUaek zmC73A!K!T~XSAx?e{ct@vi*}WTGj18sDoA2{sSMaI_*E0gH_%B10Jn1Xbj?D)oK5M zj#h&|Sf%|3I9d(?S%W-SwXNigR#p2C?qF56e=?inRh9YcN>vl< zV-wUTiKLE1@;L^(VlV8ELvRF+!3j7GXQMrzi6yua*Wo7IhP&|q9>o**GoHsQcpXDH zBa+_Hwn9k=deJgN|0OHsf2WGpvt-Qx=RFoopUPG3e+vmaa1WXyKEmhYcnZ(rMf?N* z!BmuNMs%Thf_j*I*6qI#e+b7iSOL91I^DA5z^JagnK3)&#{5_Wzv%%Ban#~0A-83*v$>@i>A^EjM}rf0K&&&zN%Zoti2iME4;y?6+}!SC@5-pX%x{JSmfnVWq{1Jb_0REv8r~L==FO{gG z3$#*t=5w*>a$*=3lKzKo4&fx2-}MT7u7-86F}B1=?1SG~Mxue2z1<`ArfQ z;X7zLiy!d$W88&b;8$q+h(GfA7yJ$XLW@mgr)44w-j8|k5iE+2V|lEMHLyN5#n#vk zyI@a8+v-ok%Qy;O$0;}q=i^dbh3oMn+>U$jAbyP}wNn14Nw|Pl@dl>ksJCaO3d$Z) zwf|&y8rgOFXJeD9jD+doR3RI-TqgRupU3c?YIXI;@5Z*PvZr=iZ?JNC7A)U zVh(ftUp^8FVsSJ@o{2z#_34t+rK9~vF@sL{BKF0Xa0I@Flkk==!8GkZxM#HjKdEKQ zHJEx27}T>`QmF&%(%IHB79f~swbXA#U|l*X|D3e%AfDCIB^pqdPPPBwpVe|UX&@)H zbo;-DmtZ=-|M%_^Oxk~t&uRsJWW=<8v!}aL-R=79sG8t&Xh$*;gI&?{$Hg3CF?&GM zlbJyNX=u9N^ZC34SD@+8yzhLrZ~5rgIRakBYj_jWuwU_iLxYrmknd>ld4OUh3p5rd zD^>fSNy0o_f-7+yZo+N28xP=7Jb^#sdAx$xF+_HJy8WkT4;YFM;zRf-7Q<5bBv!>* z*btlJ^Vk8qVsG>B{|zKzD87p0aT>mXZ{gecE^fpv_$hvlU*fm;Lx^mD^<#0CgiH7* z{)?$oI{7kTHq3<&V___TWw9bYgLUy)bN>H15~8pZzKDJCB^-gT;Ut`ab8#`Qz_s`x z+Mh7-8Scj;_#OU)zvA!sH>ODClu$an4 zppCEKIGl>JwX*#ekgyC_;|AP}J8&-^!f)_8nK%zkM`9(P z*Wo7IhP&|qdX`M$V?nb0!^l_&@9ME2)&AoT2C)El^H`8>{}vsBdvGksY5yDy3iw!% zXDz<ZI^Umz3mt81ISFf!fq}J^&pUA+9>!yM3U6&ZAm#6QhqLDn<5r8h0t;3R>tJKl z$B}|c zB<D=m^ZvS_?(z(?+r~TjMO6OMRX#WWh z1h^ZO&aKXw^Z)S=1n{VIclvn%w&w!@?()HCx&Mzf=79jgzr`Y@vq`<*VIkW;@dE*Z ze~X3RJ1kWDPxL?l`5f$n(f;nR(Cy#-fdJ~)Fu1o^_`SozY5#5y1kk^RLA}L7R>=1q z7PS9_2Ld>iC78EZs1o&ghlRQSKmLIL@++gh5X4(7bUa^oSlFHq1PJ~u7S0O!xWmG> zJRS%T{97!f7pqFt`yCdt{S!YBAo#af_`SnIwf{s91dz``zQw}t9TvL%yFU;>6;*I= zvG99`h134s9tfbfRZwrSkQMTMhXw6F;eh~7WeMgj7OF(e9Tuh!nUOA7R++zEW67hv z)p2|+zHep_=*YKAK^%wI3S4%~wW@CY79bF}*` zpD*H7ypHD4jOLV%xe6v5yZT&cKg>j7EP;1vlh~FyacB;?MzRKXXOl?zdt8xp%NHcw z(k4;u-)xhd6n#E?6wRSobLq8t zifyh~n#AAZ@J+mp`v;u%e;YRt=++bH{R8DW)>Ij5nCpM)lh71fV>|4EJ+VK&jHB>% zoPx7(J}$*oxZWK9`-p_?xCam7*LV_7;|08mH!vkfy)s}{%z^pPF33c2ER9d$(^wlD zVGC@FG1v|J;2<1^qj7?xZA~X(4lcyyxCYI$udTUx);w+Y>Pq){#EZvQk^a!=fmd~Y?S>jwPT_x;xefosQ z_Kxn@F}6$lu94lM`@~w|Dy@HXx2_&ZI$O6cojS)xc6qTw%m6FAcTBhN*q8ya;eBGG zd&jEmZfObGox~0??fQ0-Z+7fqg*(&H?b^llSm|1A7ndDWR#_9=RTDw1yUsZNitd@6>?*C1&=_2cfm)VW@hv7t=+3fRFdUn4*HR1eFN~~ zjOsj-uNjYa%cp*kedU|#manOweDhR3wf?H8o5|Z(z;{$e@-_F9Z=+kj7Jl+=cgtt1 zV)r%U{cagm-@{ivb)A7(Ky`7GuY70R@~MuoDy5={YmwC_nik-10?x%cr)#da36Kn1Jo%v#%no<(99# zpM2`xG83izIYDwf#M7zq&}> zEMX6m(M!G`-SVluov#^Ra?97tBcJVF`_=7yX2!ieGP>tWCp{>WuaBR6+1>KRde7(7 ze|7zU3E0E&HT-s*L-WT+J;s^7;a z<*o9msKewfHC5k1Bv_kdX}?qxyi7b*4({=+QlXamxs!OdRY4|9!09rr0-D!EDTlfe z)V$2!CQE{Qz?KqlwER&mU?q8*cnf6Od`Bj&Z{}?()u1SbcNmC)J$=ihZR;JxU43rS+ zHWKqPe>)-x?u(SJOsJ*mor+go-X8I!Y7;~~kNBv(%_~Vj@{KMRYW0-PvkF*K-W~zt zQc&t*C( zA=q@DA$m%P2tt^yvZ}}N<<6|q<*=;$-j`yYgeXi1(>eAQqNs!z?>)pW2{DfljYVID zyHP?kb}EqPigd0MYDE#k^nkrBMf#kwD=`~c@|#J|c)KK?>LIDJH638Lcv2H6nM}DX z>jm%2bgizmL6)h7=xeq5NeFcq+q}%A=Q0hgCnYVjRm)`hyk3{7Ssu&E+6lv@!enkbUdOeS7QdA74`f?e`QwSZld28@rl{&Whf zjrVn&(aL4@l&`7~ro-y3m|SO4SRbg)0xw^Sl&-bQ8qIFo^jF>DB~*;Pa(m@j^$YSJ z0Vj5GSuN$DiCRF@VRZ`_zmDtvO<~<{mP+!P$;4$Q^FI?S0Vy=oVf7Yp_stYma}&j9 zK+CGq&t#(FT;+JWZgpmK@ zUp|XT;;GSrTE`Jd<0Vx7aT!7^brG+5nMuzD+%;TUr~FX`93^jG6=O@r5KG-LYF^&s z$zHMiNU5xnQ3ZTe-o64JyDx-JP?ADBGujp3gBjx|M2651t9fd(M7|oN92FhovZ}~M zXKIngCXJU+S)=5%g}S%fyv(F$p|zagvMy0*Ub^ecL{MacfOVs2CIcgeWH= zzVcq*drF8)@>R83ll+9poFl}VVOB-*nMu#Jikh6zrl%y0mr&mq<@C8s5mOVEXmSoW{U&|CWP1-ai9Vaq~vMc(STgBA6jD}EHdLXu3yxF*wTts>;DUIQzHSci^hc0S1e)!)=x4XoVr z)yoxXJrkcRAzvu@%%3JozDAAACsEBplCFyIU3r@Y%q#h%_Vkn_ z{W>WDOY5x~*J!sZG;{Xcp_cmBXx7PJ*T!|n9@84vxaOSJv}@Ki?V49z)0%Tw!=MOaL`4J<0R=%(P(*?X zB8r$$1QY==0U{y@20&EweV3ni&U>EY+^V|yc6W8vt=r@rAAZYY_`Zhr&tZBA{;{3u zSJFaqUJ@>0&>DdM1M#2QgYf^i+V<~&gKOJE0EgDLhXD?+ZI1vPS=$~3IJ&m|2jH06 z_E^Ai5{bP=!FY5g)FS=_{HwM-5pYs%dotjZ+V)hyX|?U?fPdGvX8_KuZO;Pyr?x#C za87M|F5tY{_I&7<{9D^u0JyNWy$En|ZF>pe(%SYiz~!~=6@V*i+p7Rq*S6OHuB~ma z16*I*{ts|NZF?i&CTc^!WHbH~q)BW34Q$RsjFe^DasVXL{RrHZR{fswO!mI)Hs?K_-AI@(rq zN68gEHb^B5$NDz}0jF4Dy(*AEb z$-tVnQa*IhSjnK8wpKnG?cZwJM(HDqO!9k8+bS)4C`ty`wCmaB{eK@T86qVM8cI~F z7OEujp;Fl;bQwWUfn3gYYk0{z1SX&bVCi@MMTIf!I0QX z>>&;{NF;KVM8^I96f7$tj6;_iplHkdYOCdFyrdNx^|}8c-K9KhoHR)xk<}Gg zv+MotxP|JA|HJLZjYaZgp^TDkxX!>yWQ|oaUd;*vcHq8MN?C`w8*!U*8rEFT{jH)S z)7rfOXO()laPQ7F`01B_aE)bQjG6t(z6?)9jjURUep1$bHP?o5a6itql|B!5PviPE zuB+qzFO@7$+LSeM51_n3v;Q%&TbK~{&U_nYyZcOjjQzq7m{707|07h+7RnMr75`Vn z|1dIZN0#4&DOAqZxzvP}uyxZ^G6`Ex+sHw}Hb_ZB=zh}Q#f{f6ZxIENrC5&s1f*pA z59-eRtibP?Rv?i${09M&$0yLXOD0}bqSGGtAS+Qc5%GIIkPWxy)wiihY9KzwZ&mE$% zuRaGiB;Eta-l}=j9#oHh@92qPv6@tFT1ssFU1>aO4vnnMr*<6^wXfop$x5bACC|F{ zC9aJFNOW~6868nXZYYKjw4 zQ8sF?o=$$Sr-}Z@X;Lt11z{IVpti?ZqG|e)%=%tV#xu+ zr>BvGR(4`OkxfMZ{YyspDXHDsO5!$zkSUVc^gA?`u(oCtiJ}F>H8YSr_|%eq7rrK% zL2HS3_ze1;G=V5*MUoubO)_hwl-g&VNO9IIlJ;LKxgFrOiiW1R6GLPP2}*lO9`t-g zf!(u#{ND4Pu!csYY?Bj>3?4@9*?o!E+L{zZ=*i>wr=;eOni#xpND>yL6OB_%B%*SN zvTZ`mh%YCB|LX)2H^Yy_Ra_tuo~dL+Q7-urQAU>5aiL#L%`LXFCAAGRNksD;QqZV1 zNjQCg6!-KY1+L9W&a#Olq2pQ_XC6`e6y^-vG5PfSilT0pbg!|L8%*MEoF~!UekKvu zc9F*;w8Zx3B{D9tH$_GLgp3=vnP{xRBxqF+qFGW%5=IOrY}eCd*5gw8opX;&xl!{R zO)%57Up1;mR|SpR+XoYo>NX*s{YeVWk0-@r7ZG}(3yFSGLfDi!bk&!dN#((fsL2HUf*-aXsl}v2@4QRxFF<~cT zX~IgrrjgKwczLiApPCym3d<{2@>4F2U-2W}4I+6w=mNEU@!G`=NK>U``Yn#`|4zNh z?~!;Hu#(FCWU0dlB2Ai4f=*AOahn^dT&1I5(_AvqCy7LCZcUe_au;!R@u88P-zXBl zXAxJToQxj6n&`O+g#B$HVHI=fcgXab`#)|LS@#D|A}ZGtQFSDFcBv;3-P=S8cDvK~ z$YrEHr-(dzyM`3Bm67O{u4Haz6B?P|O_brk)p%cH#0WV_YdD^?1ihzre}-a^hj$q6 z|K80>adQPR{QQgrRn^RfuM$c0uzVsFI?->F5>n5^&~N=2gmtY)^tKDso*G8x25u$F z*sWyrG&hpj{2IykEToZ!9f)Ryk=pubGS@z>K8ctxk$!J?B^%5ADQJJ1$x@GCVhD4g zk$w$G+|pa*AHR#n$7~>)S-nZ+$(dwCi@HQpQICGT4ik3MSh|S&{fNtBZjC`HB<h$pJGH|i$*idFq%86!{pLi`$dsDrh2cn7^m#imPsk*;ZSTmGBRmOhYA1B(9>nnd zDg7?rSo3Qp(Vufj+@lrryLl2(t{Y8qW{f792Cd2Hw3;`ny)AjUsu_*%-cOR-_8`;m z*36GhN66^@Pmz((b@3#EIZO<3%gB^uD={ppc~QF6Ork&iOoG-1kpgxFaaGNtYbh}j zz2h}9#fpstrrw$tSlS(mqT5`Ox%e6Vei%)^KJQ3Exht+eNCSzj)RP2-tR|sDv9-h$ z6hI@ZmlH$AcT(UrfySFpC;GBiBw}REtEF>$YX6&07wF_VqU;n#rpIriwxFXp?O#qb zk|Y`*u##ML#(oa>e?nVAZ0}2IQU+3RN-}Arfj`#Fk~-Hh8%XL@N%8yrFo_%3pT^Ig z!rh|w%F)(L%rDv#_H27n|Lz+}crk!P zH*G^|b{3Gw-!vri(>ucMdZ)nn-loLW#6E!(NM{o1sYld)vW3BK!&DK!FS-+H^-%JA zXO;und1r{m_h<5{eJEXsT|+6nr8O%=z5yBi60@Fzq)`be9{ZdwisCZ;7S|`qZW1zd zAf5sT$(%Sl3GMGlh-*!W?dNn-nbn2Ve9R=#t!i$ZYtbb7Ma|9C^8wu@t5(v*`Vini z2nlQZsR*M#ucLPBW3)VN7vKf8U6)rtO80|(;cu^Xw8HG4ZUuG#_XQ*NfqRh-V22&K z4(9QXpTM>W=DlG1^Y2S&|D{?4(usw>@O09;IE+u8LwET}EU}&>mve9tN2wbGsOHUd-b#^bRw(#{hWSna8-q>=EY6V;FFh z+1C{`zDy`K1gsy^I~!vBnWADSKF0jo9hAqJ@nZo3nDO)$3S>gQf#C$>e+o_pF^fCm z9tma?v^qJ-#H@!4rA zOUzCwL|^}s#+kWr_=wMUF`3>Y$)HmNW)i_y~iAe%|b1K$(Ik!H*s z#y$n$CFAh~3iFt?c1U@}_#XhnYi7$J)7{AY;{J|Wi%ezJT`#zd~w@UNwz{FkBaW{}@q1*T8BQz&n3Yw4i+ z(6mhV2iTYElA&P5W=gaWb>m~So@_Tg38U@PHo(me@%=E~Q8f_MoqFNbS3@UndK*SN zSn%w!3Y!?_5z7Qi^unmCZjN(RXm>G?O%uw6Rh5oEbZFD(M4r?insN#4Wt|Wjua&Gnx&M7{t`~CxOf_6A^~{%nBdOGM|{4qiO>yH0lO{+E#(^sCDZP z@Y3Gq(tWt_%jEl*!`nW7#!IB_C>Q0>e*9WN;?N=45z}qQE+L3qr{1HXqI1+EM77Jr z8L*>kx6V-0t$tTn)BVwC{PyTYtDT-tX+<>9qYK;_Rz`d3v3KcZGwrK8B09g14??kg z!5z@Avv)$i3Mqks2jQJ7vj^!Q)}7gO1((H>`HLRvVQQ?u z$kbSWiK#LFGE-xJEK}n^979$+Tw`h+xz3O$H5XY3DMb)WSFYpNX8(h(S>2w~A-hr8 zV3^u0HU$A~-eUv;`Agys{B~%CWF*^Zm;;>ZQU4J}`jix7NZ7adTug z(fWJ~bF>PAwledIV2c;?<^UpanE9BEo;Neu3qd;0G?@g;1DH=y;0t7CyoVKG%thim z%S7yiu5*my5pXfg)TO{(WM2J)-X*4DB&Ji%mRNU(_asTpBd$Bu)9bre*)!pX)iBGah0~p z1?3^>x*`Bi>Cfw7ua|Tvt$Tx{ZfzkfSZW_I9E>NWD`tW*N;>9G&_qjDHYK~Ii|#{3 zlC@ z&>lQ_Eq>>PwPyauUB_P40sgmK`wCXINn8wP+Et%GyJK{7P;|LE4=!{+ft3Nb=~yL*B%T%PeS)FsHB6Cm@b=1M<+6PljGplOTl^>tA0(8)j4 zh9`{4cClmV1v9iOxN?~wcSy`*+R?kMfEgbR+-s(K444ay)+lb9+w8sfXo1C!3I#CkgoK{V34%5aTB&sI1BiJq{W}M}57L#-Alq5iIu$(^*^vIw>niJs;|6wzOw$SG?~rVa+!S?7^CImTrql4zV9kR zdP%-x0L+h*Z&JhHEAkzg&~#Nk<`wu8ASOrt{wcsSc_Gc^&*dK{p!ZU~J^&zBuBLoIzWm-$nD$DJ z6BXP#a@9;oc_ZJb1b8cVaRRPbUQHRNcXCajfakANp1uUg5Ayb2;P@zaqX3u7doXac zLjLbBko{S{M*w4$+$@2GU*#R>wfIdwGXsO)<^P>V?}xmqErf1imr@d7D?0^eHmoz- zFC6SHY!?xOt}HhZLD<1wD8}F}Hnq75&);tLA7?P`W$T;(hZ~zX64Lgw4}ZXz1MG`v zs5r=)>H&DL{`BB^vXz?2Z4x?#s@5fI&aDiwRfq7@PDfoH))l zzlW5zC(hdoep?FdQvm3!P!8v%}y20k}AHnTJ7Fho`ha-{Iis z3}bdV$e%&xZU=i7y*Ktc44#6nn?pMsbg~B=22#Gw-C-7Gybd{JuEC(E!{x?s#@nG) z2814QIEd5(d(@%x4aCXUq47(Q_&e}xL2}F?pZ0BO4(Z|Or8_uhAr=`9A8Eb$*r7Sj zLD?*a7QcZZ+u@77JEY|}EDVB}rw(IrV9Gvs7(pq_7Y^66OD3 z9ICMe4x1_4QRq-biiY7WW@hY!8%ApPvn;UbV#4t@jB3shwF0yv?VR0lx_R>%`z(@6z85{8B-&M$#6 zrxlS^0HKP;o&aGA-D*fXrzjf>Dd7rh0vwG{xKIk&D>C|>w}v#Nx{+k z;Fe+y?ecFcPSNdkS7DwDkgT}W88+Qltie$*o1$3$8$ha};4-A7DPGc9z(a*Ij=tGP zid*S2Jb#ZBTPXLCsrbwXd-i5qqfj^5-BqX>q*&6NztHMqkmS^(VRZYO~6KDU{c{|`9T z49HI991CFfL+*DT!X9x~>3}YilhN`qi~Fz}3ZHQ6{{$|FGsl7b8E3a(8_hoF_HwZM zB`0YP*}2?YoUF6?T&Eite8pvV2gz%0+7y67?!iXjin#l9TJe^v7>B`k+}S~}qLeG8 zmCSpt&I<+OA;5X7f*p&}y4A*w?e$g1*&HFk+?_Rzz z4?Q>Dfp#AU_{Ox6bLVf}2ROvf&4%@!{BK&QJd)}{(*U9T)%oxx znIB0LMGBuY6^1_GbH_ti8gJaIvMsl3PYEIa*Gf&73@yJxosfXCcN8#K^I{fotJJGjOk$CA@nRqoOTL_ zWEk8nETQRnk8pwB74}m?;Xe=>BB;B8@r;nj!TV65!(wop6`Y5_igUtddSuQEU7CV1 zLiq9?xJY3;<+Y=PGb8Xc#t0Q9&~#Dw$qW^j1z{%`Vg)5_b*~8V7FZZBeCYs^1mT}S zka`JR1z;9pU2{3?>UV>1gGiFz`6|Q-obHQ20OyuM1q7 zaDh$&(}k%`AT&eR`Ubtng4ZkflqH;`9c#95nocQmgx{8;_f$xx7xi-?H3!082*bO= z&|Ja(=mU^>!Y`BseI@)n93B=3?c2bLLSbGmaBqYiO>w#23iVJ5#1;z?$WODS!qTe% zWr7n6?>`8^&d~Hx7&Qt`lnddj!B8Q*+6tMUg;h;4SS9>=0VLJJvxboQU1-r9>JN!) z?AU{_o}y+0q#YJd7lOlEY_uInA92A}C_E}YJPc#}#96eC^cSag05~o#3WT%((bWuw z6XI@~A%euFcOdMf=taAuQ{wO4(K{_B(IViCsG&7pn7FJn6rB~_={!4J?6{xaf9J*Y z0}yjTyqg5?BgJLkAuU>*_7NaPoE?I}%i^tVpo|q8B%pUiTtX)#@uHhAde_9G#qjC6 z*yJ>NH^lK@AUjD6ybVKdiNPAEzb$I$;kYZVqlHPbm`(4P`(oiNT7Ra9S#&F;irqcI zpC)?H4)~$C$`!pw;)d6BVa2dPh;ybmmkvX-#ouWQ@c3=)v$ zP?+{o+)BxkJn=1M_VPu?eBcViHu#^#0qTTo;ab?Nwf+b)=gzx)hG? zQ+A^AiTz5x8sLEP^1q0syYlKM;0`Kxw}cfQ%0DBa!c+N?&i1^Nd$wTku+sJbHhC+> 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

Lpv3A?xx>Py)x>77!>UjII9Dra|X zgJ1>Qn<6fi>|=kziz@bkR9I2XUO|VQTxK7;3{5rcN?*8kg}sR8tykIWC^mDAec^S; zU1yKhL7|bfGPYe54Cd6CWKOTX28{0(HFzsx6 zN=kIF4?cuTo$Mu4wa~>bR{*n{Z5=6v`48FO52M+`PKgF+FMGy*82pHx{Rc=N`)dk7 zK4v>L!0vwbEh=dkV7EmAbdddn7Al^w<%w`~h@DKc;9+*+5m-3F_In!&pR!F6{#@LH5YBwcfSuqBa-lGk^8%%{!Z@DGp*NiK@iW|pfG_m|1Y!>IlrtzD~a!%=EoV8-O8|C`6Cwsm zDyMLW;-6`pS*5XV!=4E99h6#Yzz;i_%lY98CgRmpI!f&|1Q|wg-6i`L{4Nl-H^wo2+pMz;PIayS_)4=&V0*Y=~Ikg|4 zd7G243(Y&6v|6CuE&q z2Nk`XFj~Mp;;dCcqK`8`MP83Nqu;~PeopmCv<5hVG=UuC9HqU?PdL9#K<^Nzj&^1Z zbJ8hQKEe@FIrCGFd<3mgPTAKG7~|xB27AXjL$lz-GtO(#kelG#_%Hu3$r+>Y>tSvP z?H94*K9~fnJ$Kt|7~{ZwgHmpeTpexGbmA^&!Zc^Da~xVO+;^$6$d#+u3>G)8o>Cm{ zT$KkUD0dDO(fV-@ za)Et}8~Gc&@aKL`DUJZH@n?`gZV6T91##6$5D4bZTmzQl+=M)|Lb#qCXr16*b;kV( z<%UQ>!noV$Z5hrz-T{RXT#E@Pk=!-(A&B9+9HjhTEO!PE@^Rc1MIa}+7e@gT&yAtE z(<$y2ilLq6#(F~H3|II+*qgwe=ztZ8+?BNCO5$eE0828rXf66uxPNM(;w*P{B*4yb z^^|x|<^B=|mNah0Otj8(gQvizbS@u1Ih;Si&8M|^CU?=7Ffofe(g(o{-21c?&*nB$ z@H&UP{&z^^avzHDgUaK6K*8&L?n`uDO#yd+mf{z=36uvYXf2$XQkAEU37TeTLLW!&xb7+TA@RbN8Bg4xAjCVk7u#`vI=RhMr_jZn zO)=zdu0KsmA95cCL46O`dXH)udb!_FQNSZ^UL@rExDVEW=P`Hjd9?bubM^pjfUDaK z6@%Ots3zbEw}YloL)`kG05i-@Iu6%HxV5x~e#%Xp0y4_I{}TGfxPQL}GS2mT9!@;t z=Fv8y32r9oo8*pK=~TPJJOS;9vE%u?02TJUT*?SJ@b)YPs57sSGD3~;iXOoiU-f1o+eM;N9O?M#nVy1)SH*`48(_*OjBE5UhNfd9_4lX zi`(nRvlP8Xb&~%PBnu)$tUh+1OG~RDCr9RIao&vCR-XcmZX7IA4H2=)x zohP5Nc;`dVd4ac`$|bUS4)meV;jNUe1<(RYJ4jb@|uyy5B4bdz_e1>z07f7>B`i?_iM(6@QrAA{wNmFNE}1n=^`IS1Bz zysgjSY9lX|DiND_8~+COeO~bxKpSN0k-^zwM;!19Qx}0SV*J7>8Uq|Lbi4i{MYEuTms`$sdr5 z;&%)|Z!}*lgN7J>Zy@ZA<@eeGC650>9zB02`PZnDKb}9w84{=X(;Cq_&A+oAgK&nw z#sg>x{F0BLB9Wg$&vp{uJQID%{H6k6r|^#@!r!y}pXg5`&hd40C`Bq?_B}ME@q0|* zJkJ->aygxU;xbwp{Q7wS%j8c(DB5b1#Sd8og%|j?%YdED|D+q8IeaHRBy#yR|AkZd z@s#k$=Wi2$6!5il*uq7A5G_Fp`43|tP{e;H7seFx|6Po6y2L+7DYFv(UOxIt`QDWG zui$46LA;WmO|@lJ{AHye)@ptky@D_EzxPLH4S$+FV6O1>6oR|T|AvYCbdA6BJXo&t zTkO!P<-biuB6a+KcSHRR{(71W*Yp3P2=7gPmKCIdzl{%w)$;@X_6+p3@OLG`v{ruFUbNcy z>(XFFJHKihusisYJfL;*zkLMK#jmBfLO0)Q8Pq@IPtZ@khwt(nID7f;Jq6|?{&e~_ z_VI&gE6HQN)j*F^KmXAT@C@+xmjZi`Uv&|JPx!5W0d0uCnIag&{GVxEGQxkG3T&V9 z7rh0WM)`YQKx>Te`4DpB{0r`2dB)$d7uXa09Cu(&@}E(J=&+#sAx6ed5Ig})d%@wA zu+TxU+!~BdN5R5hpu$N|O;4k<;2D*Zxd?8g;~uyQ?B~N^H^IyIAnz`4)I#uxAY~6& zJOo-_^mz(a8!?t%0!|t9dJ9^A1o07k7Z2hq5YX!PsKELI#Qg-^SE1pUAjl40`wKJ+ zDgGHCm>LhzK*5g}fEFb9lqTW90x2D4b6l{9!l)sFfuCW_3Bh3<+zu6Nw1L@Sf*`6F z2p8=00ZW9y=UcQQ1z$V{OO&8q3x&~wraTNnj6kp*#>5KNZ^XqoLEd`UbW+f-r}LNN z1w)Hr#VNrjsW2)*klhOGM8Ww4C`=Ok+mDOMf}J~{B1N!rKhVw!yuOG0Il=Z(u%rqC zra^C-V5bsJoEOwkGBRE8?~AY^L(shd(3yfi6+p=nM9~Z8g5U%##j^zxWKXO%If7?2 z*UJ@bPXkPzV6hh1`GUK&i=#l`^*mrM3NCJe`GtaYDS#;w?55h^V!_2G^j#9XL-VQ< zfkPiqN(G_x?kp3?qXAYf*hrDb3c){4&|4|63jk)7fJHg(YQe}t2v{!*;!i@pM)2-W zz`i1ArgLYm3g)taeNE6#;mGTPwG`Z}6|_+1yiSlg2(%l5Wv^f?>jg0^keh1qPw*(iC0Q0sW?G!ZK5hUHhsNEH83J1$QLD9=-H3}-cpuWi}@P7dc?+ad>2AF0+ z9~HAc5De0*zeVs1o#EOlnB@+;+XTyLcGfP~=n3yT1R5%5=@ht7IHXG;`0tEzfgLUN z9ts>OGTbA0i$43kf~ho5cqHh16{Js)c@rp)1+@l1_Y15h+AKaGD5sa-pg=~a05#if374Z_jO!EwHq4qu83LoJ?Aujp~?dV_RjtW=43*sldhU2|# zjtL+A3KoCil@YK62)9wFF;F-{B?UpkX-jF{87%yO-nPeu<8xtKi10-^^Xr6g+5~QT zsF2+bo5F-C|2=BL$U|@@LKs2`yhtJEcUTc6jHLNov~cZd2*e1@jZhdX99-SbRAv`!6a+$)gO8Al` zjG*7l1>u}u(3dT|?E|nJVN)D^|8j+k%Yl|Bl+Y8KFLb4!K!I@bKAgEIJWMaDLSZ4* zQx*yLe2Z}^7H+!=3oi+G+k%t`Mf3_S6&^@|6=lMUUcfFF8fkxLg)nO>?p>vD^c*f$ z39FN#p<38^1ag;!uCyGp)(Fp1!sLo@Z!|iu3ftB~@R~4vD>|z>5B(7DTZOl1w|28|9;Fi=2&Xq-fLnwg(S2$aPEt`!oAA>WaIIZ9iz>J} zgfZ`+uT!X_sBxEY6HUarg%1}4<)QE(&5(P9+ZC{>Pq>P{-j9V-sW75nX!#he0ij(Y z`UZvGbOiYmp;behpNE9&X;nBZe1UccjR;?)*WFX$hDO*lDx8`E!7{zi&Y9m}m)o4gE#aD4iW3Dxg4MpeTlR>;;KdQe|wg zXz|BX|8iUuybdrSqG=|yPKd6$frN?-6#NPkrBE~`T=Ws`E{_o9QlKePv^)u*QKFrc zagP>Fp`UDw=+-K*#EJs{fW2{|IzCz_Mbl`S6E6yV6&Fv5WP4!6X;Ctjo1YOql;i)G zZ4yMyw9z9`R7m?Sl0=^r11(v!b`JzoM7b3IJS(!af}9f_F9Asvt)WdIX`=LlP;p+g z(G3^VMV^#~&k%i{hE}F%8NIc#L>p>>c|jzd2@TnzdQW(tBRWW@+~tZscK;uqzdVs_ zCluz3%=^(lx@$zMmZD|7CUT<9f!9Tc zD4tO(dYPWTI?;&`VBZj>z5>>I(aM=1H$~-hVN8SQL=6Viq27ZuvPS}7p!O# zap^f~7tLvd!5tza-O*0bZ&P4emuTQ;2zHAey@$bnC`zLjYmcapezLuyJr>A45{tV8$4s84Ya-(7dhqt`mtzd z5HF+kkf(SFExEkJuTb5px44JSRqzp~z5`HS@d#y6j*2(Z>EC{0TY57c6TeD+~585l8w!{)Bkzf0IjbC%ucp#CvFK zf4DgH5LhC_DX+uPNO4~$1f#@RG^L0Zmpj6W81cXM5Qr6TS^^R$p1Tu$C&e>*LE^;~ zyP)@!_*4csPm2%Iw(v9J@+REZ1o5)V^!z1?f1(<-B(eQ>z)lu>Zvae+SVFU`v*LEz z%918_{|*CuUd*LjYPvWs5Pccq+jGI0DYnp|GFjr~?J)F$_$O~*XNz^UxR@jU@HAL* z#m@7gAy3@qguZ<7n^a0$AeKy}=kKC;h83NK;?7W*SS0?8rgg>QWLmyn602)*D@w#~ zQ&go?%%LNi%EVq2e<>GNQy`*3Tu#}SO7RlYm~(`vn1oI4Agm&Jqsz=|4iYCFgk zaUpH_xhnqD8H%on&(A{3dR?4MYxr96IurEPi8CnJenV`c+(y0lds=nh6#w1;v9^i5{$wl69uRMmf((jN0s;L*ToVXm zhQu;Td=HDQ=l%zY5pif2h z`(IFhShB|-0(KJaY!G|N+S?ds2T7G1SR5t3U&Ave$-l`M1ZRm83m07^4q^~j$*=;( zxJh`{y^wI1y!&6Rvn1&N?x=@k)AK;{lsLCR&`Z)zKQ?d42UL{pBYDLMHu*}vNrU>M z623ps{3P3IKmsK1Zh&inl8OQhP>|#oDl!R{yi38WRI)B~>SHC{G`)(G$aX^R zq$HM(I*XUM(G2R8q@6;JrzKDKL*R^L21OteB#(LlohbQxIXIIfx~=d&St58u>%SDq zDHlkbmDE$L*c8KdF8 zAi2H(t!&AT-@%z9IZM-&T*;aPXyr*#x5AiwNdpz06-YKwiP=TT&x2I|Stxn>J2VwZ z;whz5ELlrQ#Y>V_+UiguX&*;lsicrju_=>$qk;M5lJk^ws*r4^Z*rxio0j=ilI82s zS1oygVzQSdYbe}RBe9$X$`#3-L+HCIxt9-tYm&!>P=8%AFa;N_wUW&TU{sxC)>1fn zL$dC5j90zn4*imDO3VQu4U%ad@b{MF$7v9}ExEB5f_EeX^iH`e*-Sf??nyTEf;39j zc%ZLIawHdh_a%%UA}?Xg7B4)K1; zyM5pskgQz*ltIbP8|Zr?NuizcBa*AMqXY145@8!fq>NlK~6 zWI{4=4XsJZJCPuVrL&q~g`IRJ&DHFs;d-cWkh(1ZsG~H3A~jA@lO8P2(&`fU;vzj| zgTZ%|PN&LcH|cj0^tnry+o5$t+HeOb9@5>`2cVwPsFxt&CH;{iTi()NX*KC1Js$)U zeWj0YgXO4HNndC`smJ?p=9sjXHrM(~)8yz2kUpinVW4!d19Cyqt*^n}U};GpTF0ed z@gNW)T^a*{6VexRpeR(@N)`NJ(%`8SE(@2oQuZc7`u#Y(h?G{p1HDmFHx2}&rO`C& zh>`B0W8Y$>ssqpzC;g0)iYKKtbSQ7UbY~|No{}Dzj-fm)y|WtRjI<*hatYFjLvTA$ zx_=qulB5o=0VP?wp$L5`()3n3fAFj{h8BnCq~0`RO_ka%LT8%P`3zK?m-6F4(xtyr zm12f;Iu$l$N;6ZTB1;-bBYQ#GN73$VsSiEkIZ~qwY|54H(Lo?j+DP9qC)9ve50&3MN;pd0a`4T7-8Eb>AYCTmq=H&!0uA1l;Y}T(vnKZmrE0e zps+$3PFvk8rT>(IrAk^c2cXr`7Fr5imO68QQX}0!NwO=_OA!#bDt(?-k=LXF(dfG_ z4Z^vHHnma}ZDX+3N#plG{S9gKYOvNzcTri&E$If@FL_(K>NoJ*kzTn0a#y;VYH;sK zt(2f?l+IGarY7lnD(JW`z4A5snx$*=Kpsc~sRp-2`V&i1f`ID0(Wjr`64?O*@ILoe4*?@~Io$4rEWs!5i;wF2JN>1Em!!(aOB8#BopFCuT%P}OLvbk1g zpn1vGaiPgu)|mn;d}Lah_xj5ED8+G9cF++mKbbxQ1|O3>^+n5H*7ybb0%UuyLSdln zc@8cH$+|m1f@SwKaP+v0Wd;e6`O>QUgiN^-;-Rv(QYZ?OU8L!6xab#<8+Cs_KlBC1jv=Qudq&#v)!;OtG_5vgLH7$7xvt z&CJipJn3tgAbUWiSBWzJWpF!5#(su7k}Q)*A(tX6kAkAJGGh;&KXFcWk9Low%3gjB zBu%D20dih8QV31yGFLBHm?2A83H6z>LzFYik_FSr962&ON}}emn><DOi3=tEE|OQ5-4ovfTjknRkG%pOq&j#3EBLg;pn8So^lL_<-TgD zu#+29P;W0!pjD28JdM8oj`EMf(dQ)J=?NHT`AgZ*AOWBtI`Dawx6DWUu2;xC7Ekdw6grUT&pr zW~b!yVt{s9zB?LLoRPmnk&6VmVHhll^0`LzCCTUC0cNuNLLx4v$YX9})XvJ?`a#ag z`%lA)RJq+Gz|!Qhzo+8)J1^(c4!U&tB3eym$jvQ< z1w(I+{NGr#a^;3!(8`nBx&Sm^ZrlmI1@g1BNV+Khi-Ht|@}fUrQ<3~|1~e4Q?Un=c zlKk~Pv`XX?YTEx^Dt}CGO461pokk7e+n_elO!iA@8?rlRx(&`mW1!--k`L@>TSytCOF41IFBt+kFc0dU?YN zD7qmNS2aX%FN-^+0`#{HHz8+bW++|Ao;eKTDykcKHee#;HU8vLiHf%KxBPdzZX+ zK1jD!{ug}}AIfvxp`u6LLDA!0xsf7>kL17o0@wQFaTme*SneN$i~aJ6T%Zle-@Ss1 zgK{1vGoQ#cZ-NZTt3zS$u)LY31S9gdKgT#fmFLpmTaC)Qzd>tEo?j2Sak<-J81qbS zT_1za!-~NcNZ2WUj{}drB3cR$9TbzVfz?q_F&ivSiZcR8I4dS8OG%-4+c%4q$@>hhdgZBZ77s4PIs4z((7^Jv*1+8F(J$IDCWEg>_kN%I%-+9Hk1GN7kU16cuR)%6| zAFRk!r1V04mZFlP3>Ost)`K-$F=PbEQ4IYzxm28g6=-=1@0sAtR~#-xUxC7h9*&EO zDfFZkD%McwuSju`;y%TSy);F=q?m7n`VvJ$G5Sgs3Hzx2vrO?m9gbG6SjB|-6^bCT zyHfEX6)IFIjPy~gR#eeus>_OR^FV48v426u6~!q^MqX9ay#;}5iqo%R5UwkN@-Z^C ziZVC!)hU{)F`_pVFH#*!y~2Mdn+7N?HIhR*i-@eJBnml9^F+m z(ueb&BI+tUY*Z*4VQ{mew+yWZiudTLXi>NqF`@?X-^eBw2m58oN&7k zC*_N@)5%$RfI<&0${q?9xGHN4pu$Z#o!(mRO0NK5A5jL<*WW{#mkNJ9l^s*T;-x%P z2WW5Q%L*v+QGU1xEWXN(wtzmWWLn)|ji1tS4X}?XR~^C7_$ytv0xdwfkAgaZ%2^a# z2~rl&d_7qCW*g*>E3eRdIYjA5lb#bw7b>g>Ret9Qv%{2Zdf$XAPgD3bLitq+T9L}# zLbRfkuReo#v~s-|&@sv(HO)U`mCI&epyHH=cEi$>%D<>kAzsN^0kl)fPyWl*Db4iS zI-}%Lgf>CBKo0eZ%47*hl5!*Mcu!V}ccL#v`Ix3xXO*{xA%0F7mVmxgWk01R)093` z+j(C3K2^h{E2FPb{dI=YvJWts%4u^!vXtl6LemAMPXb7`aubE%a+L4T$2eE1=mJ`v zGJO~@`N|~vG#4npj|Y_ z`6nd+tb@wlN@#kbEZYm8hLoRu3(#Su-+Yh}WgLBnMwK()1KODKONvpBD?Mic?U~Yr z>U$@YEg2A>RQ^GOcUWcpj(*3gQkq0NsNSd8nWKt12~AF_ZN6Y}R&_~XsEcYI7nrVA z)#@c+byM9s0OGFF&qL=C)zsSn^-!_41I<%qcME-9Dj`Kayj3qH;pX|Mj_yb6s4D+Y zVEd_lrv&RURbCvt_g67D10_IpWI0d*RUs6J2v$|mzbYJ89it^}h$^BN#+*=DM?VK^ zsOtI*poOc(=3r+0MKwqnBI28hIs@1fVZdYxchOy{SeQ=cKpPj0klxpZw&Ao{6 z>QPC!Fs4`a)|()YRC{P8(yxlA4QT_azHk^bs1nWu=dh}*5v>u`?-VR}stV(SjH=%L z4JyV|?Z03w##P({aL`fx{g=4tq&7ZJK!qFi3ruW*fokv@8f%kE_Sh!4sk`qjPpnsF!=51oov40}GFVAgb^J*vOja+ggi$GK4owSF)rk`@KTRF@ z9msig3{9cZ)gMw?EknJRQr4O3$`DwQrS^Fltqbbe^fAs>Z^;Bpj(W>xIGU^elIoH3 z)YUiPM84XG9?AlBau!DPqPmMdrbTM2l+K?hR_lbY=8`&p01_qY?NX1S z)~cV-i?L2!*#vS!{nlIzSG_vZY7aARsyXyfH>ekH1i7t_dj-ziQ(q`Ut5MAv227KB z1{}AE5O>J%ehqThu?e0JK$Y2}56-`mQ@jyE>cZdL8O*vtWIvdLFHz zyVUPdj=NhOoDcF){hmL4{~oD7E`l|E>djR6@>tEG8u)(ohmKG&pe`(j+e7L&nxqY@ z*V31EM4d>v#i#1@8xS8=2U1P=nEH)mu#Bt!q&k#m>X(L~enR~Tt)nK@mVS`KnmJAw zW;=~O0>oaka0TTb95mtdes$EWzJ;qUnpq4O(YtsIN_!&(X1xJ!JD{ey|S!1Pda*9U& zJDjkd)#QHw`EweN<7lR8j?=KEYf>rnkfD+BU`3`TmqNl>np__GE@+H22-%vNAb{p* za_A(=T+K`012j)_zZ;{LuenF(xEE+V_rc$bnq1odP_CKl2$l-XUI)lkYO=q9T$NRG zmS$kpnym^9+hxsmFUZ$uqEFNBS@W9)nyzZR3ek5>lQRr*U4!jr_&savXcADTNnb+0 zXN{CL{MKv!`UT{s=K5i%XwWR9Jr1`tTWSBpZB2<6F5c1P)2sikW*Nml?`f<{G@y-| z*nZg7q^Y3S`+d#r0jOx!JQoPo2bzzb2Wio~IvZors&VcEXq(2P3K!co&Lbclnpiie z=+qcOVN921a|*og)@;3x)=N|6QPsX!584<*6o?!Z4$n&9oXE)7)PI zmT`@SN>!d|hG_fYgysz@1ew&_nU22xQoJY9pye%u5^Y z2jZ<2eGdzLv^}4L#ZOya0CG(G`HQ#*{@Mass0L}-S@iq`Yx56*^|;o}2_!_DGzp#) z+WqwM3)L2`09u&V%)^j|Yk!o$(FpC9N>~x8E&URPMrjXG*eF_?It4bxXl-Z#7OPcK zt~*Y<<|H^zYF+Pw#B1G3Futd>y?UUW*6u;(8s{%*XCV)7lcYUtflU+6B|ms?sk11Dw^`B02>8vUYR< zG}UNhCee3AdxHk{s`fW3C%LBOJq7f2tM)~zXsXq|K)V9#w5jwpy`hb!;7q+%-2tAP z+QG{(twH;mD`0ME`$pmRZ7rW_(eG%R$kDr62g-Zg(;j&Mlt%4W%OKaJZTKGKzV_wc zVNA1j-vvNF(2CvAYSD&JEqSZf%B4AZoA&N2Xtrx*eK5E~+eN#?JGCcILSdIyR}a#y z9sdX{54FBL=WTLGDySdQ9;8{_ur|m_QHBxi&r5Kho@$3FayhDXTne5s?RDC(JfTgX$A41m@*-S2 ztV^KUZadxmFQCv~=SRtP2VFxj#2s}HC@$`#Q|Cj@S@($Y$u7EAXg=kt`z#kIZo1?S z=yTWE(+lc|PIr{%pB}o^lxy?UmDr%=r7NdYpSSKa8RUI*1$QtOzPh%VP=8ccvl4p! zbPs&Na!hx27O?$wKhx%s0A2RCxEQE&%ZC#|x@~s27_8fC3tx`wil_u5M0bWxuQ{P> z>Vh$$I)xjZe-@@2&4G$=-P?$V*hJ{It^-V@?(;FUqIB!&NYrSZObxv;y4h|ZvATkN zP!Xr=p@SAr>WZ{*CSJFLw(6bIJ*3Tfr*(hahuj&RnPyN4I@LPJCF=GbL@P<>Or|C4 z$_`QdB}MlKWw6ico~K%bbGlD1;jX3XWbeU>G~KqpLC)(I2SQ=GZXIpS$k4I>1D&2f4b*a|% z(uRx6x}gYISfd;G04!H@F|M%is!sYIthlBtm<>(Wb!D{AxK{VSsj#9>XV`~9zhTwY zTt~BBms2_(M;<0XVE-v=#KHCGE z26U$uVk`!A#Wf&LbQ!d#Vo1k&1e9T2@ik}|)oq}O*qCn79H<}H8LXe+>NDMSI(1+| z_x>TUPU`F_BYRl?z6V(C^kT|Q*y}4&;Dv+!HOhxM>RY!#p_5)h#Tw4~OSIZ>(KqqX z=c;F3fnGQLMtY3g_48=yb40&}iWNQde)NX$)Gzh}@zS%8QT)?e|5_Y~kG}3l!1(IF zxQEtJJ>LQzKmEmSoBD?nf60~LY#vz)^{*?Zd6)dOq0aJl?MjtZ;niBL&rvfEW|Jf8= zOwt?NL6Y@9(uU3yy@Bel&+4zn0PLLp9lV)v{)B!C6}P16J83a{Uhhe@Vww8Se}+w2 z`psnU1$`F%5Oej*Xl9wib^Twh5UABB3!&Cpr+;lbJiMVlkOske{bs6ryQ$Ao;$nk7UWtph z^c!wtfN$%Y_d~@U{WV&%+|?I-g}!_G&@QwZ^(_jpH0k@K0KKpOh;Dkbeu$E65A?Ht z#>lkjcd^lG)&EW-)22_OA4I!V|MDoB9r|iI@}X1jGX$6}eJyR3=+?jYFR&l#1Kn}4 zM;}@R^LzC=nq~FtPfX%A4d_>efMrl0FoGd@qW7eoWJCJD7Jv-vKcr)$M)a>xIm%Og z8%2Ld^`|_*Ii~-ewwI0Ttz18#J=2HL-JZ~^M*%vif0wdGhYcs_6>MktmU86whQ%E8 zIT#w2;^w&+%(NxT)v$XIEjL5`D){Seuq%KsM+`HjL)^n~Hx8JdhC14}MZ>d8hHIUW zD={SBrv2}whUY#7Pnn@)H@q)5+{Do%r&o{M|9UOyP;UhILdAcF)j4C-5~IQt8F`z)(cm4B zIl-9@!zC6#I}Mj(Al_xzbqA!|5KDV99vb35!QJXHWPgr}y@o4dU_LUa-GSL>*i?o- z>tlm@9j^8pexlma0fRe*5C#nnH26;pgN2UO zVc!YEDM}hm8j9Fx9X7rg4Hi4&#{Xe}?2Y?=hV>4{nHPcLXjIYxH%`WBzu=;?)tE)U zGI!%dE+mc^-%baNhfzgi;bR;K1COt<>2G*=)Hr<~SOSb)^nMI9y4AtMAY-c*&IB8U z(_!y%qt7z1gczf!NGsB4e+wka_>3k9(MAWVkBBjTmI3IK#_BGRc%!vF8|qIPohi+m zV9ckTG>OI!X)KbAr!hgXNjA#bfPK!`OS_;_jp3B0O*0PAqW`=xWIp7wjJ99k;sxW6 z6hz84zCrs_@{LLLXcZWr(Dde_(TSE*myGv+fLw`jHr0rg8q=*cP*G-FO6Mq*8&6P4 zUxjh*Yhb->>^lIS8soP#QNLmg-vLdv#{REiOr7z6BEZ}*3YNn9dgG6@dF!UJzX8M5 zVEniT>f4OlBhhL%9(9F4hfzW~uTJBoW(af{-#Q4EZsV!VR$P5(9M}rdW7N}XrPs)$ zLZL^-6I2-AXH3=u`>`?aFTnI09S;I@!1#_Fh7KBgX%YRz_%DUDhKwWhejPS${T?hM z#-dfQ{;6>;2PmV)ud_hLj9=1LpK;@q)6na9X2GpHK)P+O$Oq>=;u$eQ9G&S1IWfXWDrQnogRI z(UTr;T0s@pr%Y}X^E+({UJjCI8sdQ@nZ9uXcCu-lsx4AXypv!;3USvY4Z!A2{a zRFgyjg=r?~5qNgqG_3`g=~mMWnhj@|KBA9Xrpcai`&lMM4$v-`e*6atvrW6Nqc6ww z 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

  • 7`C;B7> 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 =6Qo}phMDEKn!vyq4_r0!Q2s$p$=j-*za_> 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 delta 106205 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

    OMlMo<05tx)@@{;d{$Ui$I0_1RnR_BYsl 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 delta 154946 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℞%Pu>k!+zX=vxx&7nrr% zlBgNbw^j133z)S@+-Qq=M^Z@HMt3F4(qK}DB$}cZ_aq3HEPz4kWG=;~JFQJq-~i&T}tWG9@0sR!P{H9n)d!aQg>P<`AUDE z4=($qWwSxxCoL&}PX5we+b|X&{o_kaexS7CFVF=^?X-FhaY)~!qhms)JqqB2N&Vgi z?{F#W6SN|vkJG^|O4>^f@o4D>|KCbTmnlFHD?Lvs-Eq>{#o!h%Eq@Au3DN~#u;rk1 zFdc%YRct@{V9RO!tpz&tEz3LZe7)J*%ReCexU(Eg;f ztO^9Dq+YLMf(oSWLm)UU&27WAE0q3s3OtLX90z$^ily&w#o$?K(sb}XC%yR?oh8!0 zN5HgHy7h0+Uyz1hgx(jWE6HDUNh+gI=oRT#^clP=?IDlaHR;FCfOnbn&EJ7pE}cP3 zkqYVW-59HsHk825YH2=&C~BlON_MZ6=GQvFtxmci2^96x?euPFkh(90GS{UiC1~A{ z-f4!2CaDwMdN-y1l$FvfUGyG6i?ou`BW_7sxlp@JdYuA&cceR(pmkSzZ5fnlmmVVD zW{31}4O;i4rJfkOFP%WSOPx}A2t9vYQU&EcbV~(qf@zQRZHm7=lornc=#?HP&s3k( zizE$5ms4rqpwvL;9Slil{)Dl|(qG8cIV^quIz)^}uYLjTpGa4eCty@s|0RrgDjg%Q z@tCydD0n)_7A*j9md!p*f5Wv$wqzG3!$o#%3^=Z`+jF6Xn@mrqFYc8|$gSZa3oXT% zr|jA*7~3b?v<#E)C3}kwV)d2$5%B2yMq1i4u<4ee{PWgJ>d9Fg&9 zxqno)vk;iaWP2%r^0-X22LvZ%cc{1~NA}DB#&Ts3hA;_vGS`=2V7_cSwxm5-!UI1JJr6b8mz8S7qXDAh;&mW`fyevL^C~mCF=U zF?kg-yW?x4z5B9x3aHj8(^Dqm16d&*jMpvOwiw)cWbc!2=b11oLD_dHARm%Vqf^En$@(`z?yxM~59A}VZ-yvi z^NDQbD;OM=&7)=AQ`r_Ob{~@k27u|fELa28oaEuOWpkDfl2>z&+=YrYUF0Yqz%wGB zLT^iVdAkId9`fY_==79-Q3Zm1@|GIthQJzhN z{G}!s5h0r~j%po@{eZo-tr%D2$5A#w7I5wzmv9upzRksuGH(uRZb z3H|_y@;{=$CP|)3Z-GPdbSYjm$@2c)AWW6FQ=aW%`FRRsr^&x07kaw9^AYGW%-?l((5Lb;CFa$gUCBk~dYDjk(Coe%P3@*eVQ=g5~(gfiD5|1<@YktcuUDsb}U zuTUz(N%^<4(RoUqz70$ZtUn`HYhlb;`491+J12jf z41yB5h*q4X@=0t=-g)^cN;|zEcm56HFUlt`h1^T>2>PRq%W_BIN*HrR?)ev(UX`~T z14Ws93&lIj<++vMT_Nu}2-Pa(W?Gq7$-k#;lxq3!G_y7G-f3W3EC2TmaH*5$?*)0i zd^2qt8swu7fY~UYDggNnxo-hFo8&)y1`Th@zoz>1W_gxF44fAE50uJxOaAH43eiihGn@=%$#n5OVh_JX%2RuK2@uBK`)?Lt&=HmZ#zkT8r;fc>M+oy%o3+rOGNAY={FXu|f5p;JruW2)2=E~A)12A6s5?afL zF2x$E2Jcqf--EFp#kx;``B0HXJL6u3;X3A`PqFs^bm~`Zo`eY+P#D+XQVc2<6#@(? z5`F>sBgMlL5dT;)XBYH!JW(8=8+cT))r!HViU7*e7*kw*AH2sE!X%72Db;i&xU({A z4m$TJFHkYMi*lUK#&K2tKML=r^re-IyE2xltUQ#s zvNsJ}e3avK_?E9j$yGq$ex;KXO+Tf94qf(FewPZ0K&4~>^bS%E(q}MO8F~t>5ar}W zFfCN+r3YP@a@rbzaOG<9!$&BsiJ*&A{z{ooQOe7ikQA-V*a$;ol%H%vXRMO%iD`~g zwtR!mc%@_CFHkB$S$iM72bE>ZAtF)9{0^N-%I~^h%pqlu0LCOMU)~Ff6y@3f0MeC= z5zKmqa-a-jnaa>5AU~q~Fb4vUDx<0)>6lX5gs~juGzuT)D(6yiNS@MpK0vQr*?0(2>_ z(psxq8AzV69_8|Rkn~Xb))(mPRX#_b-9BaU1uz>>a%dShsQmH&$4Dz*yM#;sNEs>u zm&eK}9Z+pVxs_tuPn6~XV(w$W-dKc|c6$#Pl zs#5%jmYb@U0}*>w;$uMZQ2j|RFi+KwO6astb>|sa=%rdU1;AT1HWT7~Rnsp6>{snh zfp|aFMe;EOs3gDA$sd8LS3iR`L8?8JbQi3uzX1@UGB!g*xC+}S+_I|Jb5Jc(^=2C+ zMX4szqA*%D%>-@-RGy2_icu}0EQvVP>=Cr$RlD<`Xo8AE9_)iEpY@QCsH*6NPD!ds ze`D;BN|8aq=@iwwYBUMVcys3dqt`s&$~xP%U{D^qH!hyWpLz`t$_G zj;Job51Wpv&edYpkEt$S1l@7fC_Ek$PpIaKASqYXk_UbBRBw?ZEnme{L+(k{{tqDN zlvxV z8LAwrDbGS+wdxA(y=zrpkSDrM_4Prz$yE<2WwAk(Hyz-*YVa&TqpFl{@*AppT6El0 zT|0`-W)%i=ms-BKZzOCBD17@pgxf%MlsiLX2`mSnWG+OPd`A(46p>llw z3)tLK4ZjbC@2j@aZmd)FxgE3qK;;vPv2K-vmXSTG_bHF}q3V;j0D4s>O1JA%eL|IM z1FB!BW^7Qk<|xRARQ~TlnMbNmr5JmxYO4Uju*x$P;-9FNe+MwC`i?RlpQ@r9<~by_FrUDdfXdv5CG<1l8gI*i=J?&=q{u+T$2V+v6AspWJe ziR~;1zy8Y_U24IArdKP^+0@NQo#aN))jY1PaY9!}Ce6ae5d`w1& zdT$?akh({c7^ZeD0AYms422{k)&B-SV3hiO`nbfXg&UxLta|2dkjJU*UjZbjA5+fY zLG@HBT}f2u(AXjMqF~S^tK%uAkfNSPp~y7#E+3eiu9hyKG<4>w2i^kjJhfT~WAfFTXti-t{kZ@r zr__2nm$pDHZiMzFY7woWOVz2}Xq{I-rc=8vsIyQc=9qXzyEMQKyqv;+8s!@)2*VH5b9VRegZ`t!--iN3i~m`s?kuXYQ)IQoyBM{n4wK zgbwv-HU!>N*U&5YzWNb)bUW2=QpSCkI`2NXJaDKN>;iqa`rnCY_Nc=G!RDd*KU$>q zs=H_>(Wh>E9iU&W6G7ntwViTt2G!rvzf2CPkI`4~k$Uml7<;U)%z&c9Y7IH!M%01+ zn35;z_eD^2RK4;8@O-LvrLzLY)SeWYA6Gjz+kxt&`DG1ooHc8!@%^> zcu|$VuO@m3DEl?OYti!4?2Z8N*UWJgfOmkVgKm>R%^2;PgETw7L1(CDoaQ-9^LH!= z!!^GzgH92e|Af#YQuA9XP@*)8zQtIy<^m;*9ni2p$5@PJHpNF{HDk_b#c66w`fU_s`+#`=nreW zDBzx^$)$L3y5>)E6K80~=vA1hNfSctEX@mI$j#QQNJQrm%~X1Pk81KlaeaSD?j9<3AO~jvJbPiqLG*|mm@0KzH4Et# z-lo~T65x(z|EEB?s|o!DBJOF{(W##IHC;S(c4~g41!I@y>@Xxf&}^m;P`BoH4~+F_ z{4!t?{&aNiDl~gF1(dVcr#VK4T=#3n>2T};O{WkzgBoWlSsBvY+6l}@nmj5^c&ynz z4LS{Ln9IO)MAQ8Q)<4nYMq+GKb0Qp=Pc?HF0%c6|?h>GkYtC%}aMG&312bps$$wzy z9<5_jE>K;xQ|dtIs(tk-)OXW;R(V}?L3MghiRXol(&ksQ{<6uhJ5xK%4stuGVSoPn&^Ks7?F`5{k4l zset5+_Q2PWUaUP%IsRw0M_Yk;PP^_pdIyf!fu@-Ar4uEcCz)IQS< za7pW<0=TT@IcV0eXs5pjBd%(VeDq$^-h2tIGVLbv#+PgF(r&Cm+prS?E4Ah%fGTYo zo%2ww?HGsn8f}aX;%l{9KIGPE%@Sx)uPylvV+~sMYmjhV+x{{L8nyGkg-$oLGRg>V z(ssE!Kyg#Mi|&hN?HW?JMZ27G_ikyk4}#*hcK2t{qE-8XC$wnOX7xk0JKFcDr1h@$ z=j$-7UHiiKAn(wwNrAw7S{BvR+}FlWMrWsX!$x3sX*aup*#m77?Nz$9bsIp}qqW!5 z!s4M;OW(L&?b0kr>eGI>88>jhcJFFfF`%_1L774AxAX=c(tf%Fn2)qy9|oJp+V3b) zdRW_b90EtQtLdBiM0+s-8jfn^W{{6-RzXn>OS3uame-3sowz`ZyoPVi15+XH^4Ms z-4=2+?AJXRK+8{;5ea7gy4R;e!vI~O3Ud*tGtu%fNZ0%oFoShrX0%=j(PcdkNufGx z1WXIlbvuVHd+(W79qYe_s3_gblsy-%)Bg*J2Xtu>&?ZKAv=x-GInNZ`9ZsjvDEm=1w4$M+?PpMckRkubCO%Ln* zZh}ji?z?iJr0do?=+xy5orE0l*}9rtpg*EJzZ~GG&iydPj_G10U~^pe4<$vP(7iAX z;&XIA{{fU--9mDz)I$arcjsm2y{id z)@c|!qx)vS0a&d2gZ^^stnM~>xzFjU=xbb}>#+f~RCl=mdY{*QOka=-x@lCHcu^;z zRnjG0@*-$>S+}_fC|7h|ry%#L?u)-++BMy@EHEq6rThu;<+_SE7+9gxeFN(&buqM2 ztk2=Hy^Xp_{%GCM zMNpu=Nf$_qh?}~UTTrc8_s=b$wCF+>0p*sinNBFWt&{sgV5`n3!|m0kLjooqF5MT1 z-N2QlyBH2l+jX^1K-i&k{S)AxZYsTS?(5W6pmypq=n&a1-5t6i9_ZetWQ%UyZ?6ON z==2UqdZ;TPM^CSAZ~?UF(+yKnbH9#3FSr5SFl`|Qbq}9~_#vJ2cZ@yKRnrF7@mQBm zVT57bQd%^P=r~fad7|4%PWDmV)IZRAs{4z4BxAaUVu&Bty|NH&ob+wvkaN-J?|^t$ zeF-`B-SkU$Li@e?g^$tcu0PiV@g8~)^09mB&tii;ai6|~9&s=IXY{W3cIc}I(d(m^ zkT=v@a6@BT8zBJ^jdgg8=PMeCC&z1R*3(fZ4@yg8tEY@j)b(KD#>EmrSB zFRVEI94bAF*Y|6nT7rHF2NQKr@4XNL6ZNx5wIuxudjSsVt7)T}tS_}drxg8mE+nPu z4}6HH@vy#%p7b=mbRV=&*U$I|m>K$Rdf8{{zo!pwmj2JrM}U*9Uq}ImBl;vNV>qsF zTnd3F^d3vWG)Esj3vzSy>77t5PtTyBLcTsd1mL9p(k_sn(*Jo81O@sn6p1~p|1~sg z5x#gn3Amue`t{_yKC3@ZtNwF(n+l*r|H5a$EY*KPYs>R`{XY;#5ZIu9WiG6~uIJGjuTg*gO^CRm-$m=9 zCjI+VT6$CeGbJQ6>)C5yb&KAcz7@Ch{uKPUtzR4qX07@Tdik{Jo6R6-*KckJEnbY* zt71I{JN4dWVA`dhHvl#d^wQ5U3Eg_@32^Jt|3pE+hkA23RO{9E(|y>dPa!W|zdn#m z8_-wIMQc#MeG2G?^t$CB7}no*gGnR$8rnQR(SM}^=BR#nDvWrlkD+AsG5x2GQZOCY zi|I@2WO&#L;B4@4RDN^tWu zcv8%CpFv43N-x9h6|lwIFn1$Rd<+Jp;efAR!Pp^XFprMMkMTv&; z4h$w40;^!tAwwLUjgV}JB^PI^K|BYo!-kjn;Fe}+jz=rqAR*6ThT)xA&?3_i;|0tt z!&?-}%r?A1h8{7jssyv6hE+7b#|-CpL;K@~!!J*nV4Qfu@GKGL7;5C;mTQ4?$OEDCq$~xgmZ7 z2r3L&pTd?(!*nX*t1|3M0bRA>r3xrfW7tf88c=KS9DrtZhAH2{&U(W~js!4mFuX$h znd^ofR^T)m){=wvhG7y#!I&~PHdl7=}8BQI9YWEEvTyQ||PQ#z?pxI^E zF&E&0;V(Kgs@rgH5$JmiwYivthlVJcl3v4WrJ(OK3=M%>zhMr&HU00UKvy8s#PIF>cuffi6bBWtaq4|*u`lV@IYL{)-&pwX5EtRUlg z1C$Il{!44~5Mz8Ku5hUFz86TtjD2gNRk(3Ed3qy^ee{WrG!D?q=z#Gg2O!4yE)}E4 z8qbqgCC(V}4G7|m&&x5EV3ct&DF=<0|HN3Lv7O2Zl8o~lTYz)OSVBc|$;Ky>aKTcH zA(S_oYW#(g*$x}0MFFH4-y<#3jiXHf8OBZ1L6B)ox(6+?j1M*7mTfFqge!E!*mMMA zM~&sZ7&~U1+YDyMjoWB1eZp9php`-^KP`20jd}|?Df5gX%39Ai%JpD#(l|z&pHs#& zbZl9HF^JYFr;U}A4O3|Rycd{7#>X!}i!;W*$|0iIs1&2~tWioXgmcFAnF%lACb(=&*#(L##+y{xeAU=SVYO?j!|+U|dc)HP?;1Xvf%S*E&qgy9bylHf%Jj!OHJ8f87j4@Qga?ALb zvW{*W1JcmhYK)!_&}RIORu*@Rcca1Pu2K5{;@geW*P_*74C)5BXLL@1zW0rr?9jf` z7)iM}T}ID182G^W@#h%pF=o?~;CN{C?}UoI#>yE`zt8AJ3%Y*e@=1_1V4O4+orA_s zDm)r8`UPR09vNTt1-HjWr*ME_<5NoI8!_G+1(zqror{1nYHT1c-&3RJPt3)baW$=* z$Bp~XK(3SNjW&!qn+%k7zUO1piB&M$#Z>bZ23<{mk`KYnlrDh4y`~*!(Q-G<`~++~ zOwOTOKf_vN${e)3O~0xj$;Wh(9H73YdU9p&H{I(1Ge46*Ue^=-O}>Q~3otDvZ(X2i z67AuGOy5w(bFgU<@eDCd`37o-niej>G>4gd5G0wlE(gjX z)9Zd1OE%@vOC`m$wi+PS)JTZieaEDwvdM3ZQ!}%j7Yi z5*xBj9Y135h^dFR&qqzqwuA7Pi9~0aOIgc(ndMo z)KrPilcq1e!pxj9X_tdpfvJRnvD2m*w7)1cHISFR$fWQ>>x}9CR9IGQ+HaMMn$a?@r4`r%QyA^ox=nWa z9`%^AC^P(_X-tK=?=?BS2iAS2)hsaUHw8QoFkpJo@jC1sG_|Bbiy_m71Q_$kw40VI zk4^Kn0K=w{c>p6O9<3^$n8Jd=bktN$kKa?1qZv%cOq!Db;-|dd50Ks z_n2qD1mI#$?S!JP=CrLqaW_w6gNujxjS7lYdzworRJhL^M@+rUf8B)@-sTH@Sm9%y z;t$|!_FV=x`^~=x1NfPLrW?uMJkSB10?h2!Kptp5&c|4gc?X4ig3VXSyB=a5w4pQ9 z+*AzlVdm5H2Ylh?!Ve)n!d(0@{TpM48*a22QkjYBj_kFniDmw=w1tihReK zk5Bo8wu&2=HbIcJXA0#IU}5xSZ4%!dvM`7^GV zpB{nUSIzPSj9oLQQF2z9c^mmn%grfY;=)##IX{D0rMYV@RI4&SpmklfSw>YCHRk!_ zkXvgO(xs>~Te2Xp-n=Cf)74=9I|Ag_&G%&B*=W8@^LxWQ{u0QW%v=Y>A8wktG~LbS z59sl4F}Kqz<(4`6G$?MHZ%`3%tNH7jKxs2ySp{x)%o=BCao7A!99r#WIR%?K%qvep zi(d2R?}MPvT=6@^_nVhcb>@IsOWU|X^X_r*95O$py2?l9Q#a@)eQZwt9!d?HZ@mp} zBj%yW(Bg^tP!mu`&D(rH_|*I#g?Y!!^TR+eZZ0F|rjsSP3|2T>BquSp$MV|`5a?n_ zq}l>k%ZmF@#?A80AUgM2Cdz^7ZuzDGm>!n>OJSg=C7n-yr@7A(ra;rnGX5`^dRwm1 zQozS@_y}6Q7B2mb;C_pNmhFC)cUJ+^-*R;gS^<_wHa#4c3shzmWYO+`q+pA}8+S>F zrK1SqLoEU19t*RmX_*jiS(pOM2ur#gAlmXZ)+P9-5X;21FgwQ5O$*;x%VH-mjkCN> z(ZqO55G6?^SVGr;%|XjMRFIiyiTD|6SU`p<0HeG6|MtS}MuMk!6XU2wNQ4mN!2J#Su$sJq$f+8KBgSW0tjZa1D-I zoS9&gYpK}>HhGq9l)P}#GT|@KpR#PGuWx}RXCVkqTihvBS7-^L9F-!=;)zi0jAi|O z$St<4i397imdRA9bI!7h!ssOy6B$_Qur!c=?7Stl3WFCcvnQf;(bDiPbh~6(O8Ekp zEe5)SuUOPOKylTwm)sfGELSNwUS`og0YSONm(CKbuw-R}pwjaG=a`Zz%M8lvtF{bu zK(!jn_82HrYuQPe*>#q#1wg5{IM$Mz?7HQ9S_U>+DvE)6!}1CRUz;sUsIH{N@)PY; zZ&?^RXmQ(877WZ*OVT~?ZnGp70km5NJ^}9ziz}hrvy8Q))n!>951k%Zj?!|s+v4qv zR*%I@m++yb?jSIGEi)Y-U`qRNLqbHq#X`5&faSwN7&>TClk0xSvMLB79$A9PBlg%* zcM80REjv@u8nN7b2W*~LmQwEQsO5KhXFs)Uq4R0REc41>;kf0`(-7!ny-r_WXX}GH zFxz82w+>@2)`lorSh!ku{y!pXT}ve-d#!US0Nkx*I0DdRzBX;f{~BM1+>F^}=Boy5E{fnFW5bb1Vb)*B%NK6-rDb4*^}lyuTBP;;jQ~;Bwx?hkZOy1a>wwjVHmot$g`1&a ztaT^_AkJDqX)N*92@TLN!8$YzTn<|6$>)}6O=|{7vOY`s$A_%jmqJjoHHB&mQmjTK z@w_rI)%wh4&>yy@(aoA>%?y1*gvEn`Qge=3HM9smZVkHw-Y2XF>6Mma{e!ZVa;;5g zL6>KJk_60r>&K%|w7|OV1x(3l>vwegWubLsG6;&TF0>vxYhBL;<~i&7*TJ*IYNkrp zQtN&%7;)bEuoA5@t2doYR&LD*Jt=x-hU5HZbk!ht1tFz`kht7IyyaZet zth|??*$wL;xg(maBmV*1v>wj3MKpC)}bqrx}(7KFjbB3%ls3c;!<;*sf4gh_CHAPZ+V^wqpf33;b+ew9fUn-M$0y!M0cUKn=02l0!tOO@17_!)&u& zh4^q=;D_KHVN0j09BK2TuV9p|o7`j3w!QT4p$BY{mjGgH$T-0bWE;qZ_&6J*2Xyha z>-6*`*jCc zvR#>hnQ>IxRwV$Z#+FEfwYE*c7`$$qM2q%D+vU$N>o;uu^!aPDy%7WPH*M{-^l7%8 zq#WTETaOpm+_L3S@xyJKgtCcSZC`W(rOo!B2dwYdJSh5b&$i?%@VsxcehUpdZEZ4; zcR6f&Hq?J$JN69*yKMn2kkn)Qoe#MWZM}cPieB4^w=frdwv+P#`fW?Q0S0U-k1_Vx z7VrT?4BLJuPuhqrf{G-^Y^t+hHg0>#8x!PYZ^#8tXZu9@8tt*SoCCRw{j>ED?{0TE z(W=bDzH%K1J?(CRpx9^cp>%C8`)vB$d)wQ|+w5cin|5lxcKvSv`|W}BN%gZU$yMlY zPdWgm0rvQI(1q9^(9S#5u6-3C%)XpfH{tdbZO|gZ{{A`;MB0;SN}}wgj(ivzZI5{e zg9q%}7XrlFeWn2<*w^*Jri1p6o`>Fvb`xc4CfV0a1mPjOl-v-9?MzB?O0!?2r!n2` zy&KFj><@QC?M(YticDtNH&GPem_6}lOv!P3CG9m%*!zD1>m2(>T#EVT+EeKyxI8;= z6L9kF&(ptlowT4m*UqZXE3--6D z3gC);KDno_+DqOAxMtr)%lk6>hZ#UAw+~-IXN7%NGPJ0)e`BW|M3sHgTBulUuX+yx zYwSaQ;9YAEp`?X6dpbS$jrPr?_YJ$xX^b`5Z<25Hrv0PO0GjO^Y5Ub;e}i&i+U&29 z7e|KsSo|1yD518G*?xSQ#8dx`n zmY9R4AtI77Z!dU9GnRh^!V`=mRPzzTxWEMJNyaitDLuvL{sr7lGk#A4${9xb zPS|voQ85UVbBwr|Ac$ooTn6TO#_&HFi({0W!Po`Hl*IrS8M+=wh-a*x2(uFyXW}6? zk>U8+0hq*SyAR&UjB)gcr!f901-Dd2J{^vFi7|~fk!g$#*9-=d!Q9TWk3K^FviLHn+e-LBEjNOf(zs*pM0F*J78vx1~ z|Gt2v3dZYnfZZKN$Z=SIm+`@B@T_F4rjv%M7;gKZeKkWD3}*KjNfcSEVN9>21cO>e zKBczRF_z|o@IK=Jt@i5~cB-ssU_{&kN+V+vdElEE*DIk~Gb2ul)&quR3Q$@Yf0B>l zA>)mFv>q|0EeH8y#;Rd}Cyce_=xk-gQdZPc#^YJ&Y-6O+=_~CF|I%@I{yG@T*`V)a zyg3_8yBW>pn7tv!tBZj;%y@DR3Xd@Uqx3OnrpIQWxG*m<(do(@^)Wj4Fn1>axG|@m z1)V!nMTUAXqn846FVi{~z>~S|ISBSKS9k*KXL?nG-~iKe<4bt{yqR<6z-%98VH8k( znWj}}`7uYR#K50fFbIl+%*iWpLmXnhDS@H^%t$J04rJ~lcTW&AIT3Ri%uKLg>ZzDIY7ZY$1&yva(PEGqs{>wXD*_} zM-;Q3KC017M>_~lFvTB&X$BW-vWfrl;WWGs<3dJ*<$zhnl6jLlRk;$I~E~!k}DRibem;q-XBAuzt1$_qd;dOw^%)v0= zWHQBOP-HQeT7a6v94Uf@SDE!I(YnTzUj#}n^P&s{*O^srkaUBY(*GXyRT(gAnZ*auy3f3~ z3Fcz-+4nvqt8~JJ7y~ndtZ&*P@wO|1X*km^ar0=OObHr6N3HZl@HP$4o2L zJU(Hbpp@ZO=6{so`IOmn9g4OwO@|<S;vvyD&s0-`Y6|l*bC8L$!9+s#Za@|-D zL?Co$^{V%d-?iWZ1+w0G3=qURm(bc1j{8Kl8&)H{tcMNSx+fDB8qk580?K^xgQ3~36^6Q#$s4c zs227#YXxP;pJ92=qLaSPvOJHX_Z;iXsZc+b^(AdH&a>R;uiF<`BlH!&$eNf15YO5b z2h|c-hslqg$aGqyTp>MgNA9WZ*4$HX9-)uI)ioLGw6Gn6-y}> znXKJZnSO<(uzHfZRe>wE<&Atf+99UCdfs2`(k9k8c6=sfgP>)>r$XMGfmW5h!X|Ewm7;XYINK%m!BeILK{e zDZ-&)6YEPtX=YU_LH>Z{OmbUTZYj|4A?rG220UVYz=IKwSsOAz_kbZ4svCQo7h3M@1TSdl!9Mj4T6@_m7Gcbj?eP`F z?_)PC1lZ3$^f%rq2iO_^Pt##fnE;+X>?f4K;mcl5-!DJ*Bg&!iXRCW5_8|MK4;*M7 zVt1IJX#o4*{ZK!U{nrw33t~@52hL&kkJ}+Pm_6}FfFtZhdjUe&yJ!Iz%Fg{81YzuX z_h9c)b|?K&C7k^OEdnCg@7%#WA7gKQ3tS@EGqON;oZb8;%#LFFH$dJA_FJndP8h@f zAQZ-&WcP?cc!r%yKE|``ekznb$JWyRF_t|*%ir_tujzXb$4)Y%b%C8r!MKa;QS>#8 zXODG>s~@h%9!>L1>Z9E}&zNuCUKm!rmPAv?*YEl|4eWu-DiI zF1X~f>-i9Poh`TkaD#n|HqUu%<#LeUWVe3>*7@vVDhlU*Yk3we&`%k)|O4$YUjk?W#V?X4Uv8OttRnG2Q2Z0sr%x4gBhpo5>fp^)0 zW#CfDHr)rPVvi@kNj2M@54wBo_D;~%us!LBq5JG%nyz{W+liua4eXLVnC?dQ%HwD? zu`RA(+RV1li}3-wZy`Vn`}Ehiy&kgPqbl&n?B16Ep0E{EsMpGN{~ahD>^h1VKVzTW z3L`q%E9r+SUF_YrfbyK}q6a}Y+unt-7r3jTVGr9en#wwR*{f!w*~gwv+l+p;FD;V> z*e{=j`h)C^_rPX|y;F&?VfGr@yNs}P0~mAWOr%Y_3#T^9%y|xI_bZaNa+F&b^%X=&ttU)H`;9+dj^;e;|H8M_LHoyf{T#3?ATUreNB< zIR!^S;lr6S7cF1Ts8i6_j}t~;Q-4kjMQaXnMpK2vA_oDF#wn+IN`KVj^Wf$2<9YbfdtG>abBSm^wXS{ zR_J?%^Ysj9f0kpt4$N~L_Oywp^p52O(~|EzXUa9)ka3(l6u`Q`S@sADU*vrJGuXs) zYVW|91kR_~5SYkW(+xIB9H*eVf01uf@h4_IgOhR|D3>{#DX^Kzc}70bEKYnI^+txzDFsGGX9wVG4M=>;X z=BnR@hAv$0ZJ6fD{cJWpF?(y|7CV+dCyy}76hb`b1#2rg}{=?iFGxk*Pr7tf8LYP1AyY6Dt{+a-@I#es=&O8lfx4EST=v2o2NCOSaxjrPQf?N4DxZL5Mqin3Z+DyAxy++30;~E^VLqrW%)dcai+)z5UwvHQ4f8e~&ji3XU>$!E9N+o^F?WL#T33tkBbhdJ}Z-L+` zw}U=rZQR5-2iUZ8dqyzW!EH$Zn`c}*d5=1|;k4B2;wrX);yHH_ogC23Jx`{+;Bv{Y z*2B#r$73(|rB^}T$DPm*(9a#c8FB}>`}JrIaxc|nW<;?qh zCxuB|cq4hx#+5gNPL0^j`+OC6@8Olj;KI1^-UxsQcV0|7E}92#-b~Q%<=x8#@Z^18 z2-WuShI1isKd)yrfEO=kBRUW83hsiZH}Auz5bwkL?rV(s@_x5q%#SxA9%KGIJKTAW zu?KlJUtGgOyq7-)2;db(ViE#*W67Hm#9JQ&@rQY5$$t{edqI`cM|c-*10{r)LQ@jT zlaZm}yepm1FoJjD9Zb+M-swPKM)LA#4v+IvLqQ(Jdz}*DqIutk;9{TPO(VyJBZhZ{ zQg}}CtXF|^iYFuyr+LOU;GE&f&O+g{yz6^ zct4U`?jp}^5sZlE{Yr;BCh%sZ!R$od%O?SncvmQuI+=Hvj@eA%`Ox72sSY0J3F&QY=czgXZmdkscYWA=58b_eh4PG>T4D)!eO~=?xUd|8TlFxJ8AAqD=yhACF zTfl3h8jM2TZ--!S5ihbCpqQtoz_4_;~<*U^5esM>u zfj2t;}^oUeYbt`;hnA0$@Jk9U}wB7aOe|QtB?c?ty@6mpK6M37x_yeTq0lsMqn0oUIsRY=EFOdV&m#;sFPCtIe zF3g2LKal~Rhxmq9K@h-Coef0;`O8ph9aO~|^|qs6Du$2nmqdU=2>%}&vV$btM9^jPoh|_73cr_b?;QTWT{J6K`EBEZI{2d|IU0XMcOL&Dc@%H*3)g{b zK0mDrX58X`^d=Y-@R!kQqL4qA{GmnsxFIN9%pbW7%o6@r=P;M0{56!JbDO{CHWV)7 zdliFOIltE#bQSy^y+FCczeKyVyZpdskXOl1`U4lbitp^8ZDlq8F74az@iQr(tA?-T zfUuUoV=I`}@tbJTZL)+7E$lK~#{&*p;Q3IC;Rkhk*VJ1BAHDL;kYe{K9I+O)OvRa>A%2mh;l zOw==eI(-Q{`SS09(#8Ly4usG7ztHIn-Tb5PK;R4hz-dV8;pY`%te3Cc4laHCXsU?r z=bxqs!~lPb0GNaPy&+&W#D6gttzrJS;8A!YM);RbqUkL7E)T#(F!KQB*;Noj@ijMr z_cvhbF8H7a%6JG$C@EmCV1WQ*o`MbJS=%S@ONKK01*Md7;wAX~F31lECeUi!TkwPm zvV8=HDFWv!c&QgHKSAp281omr`RS|lMG^=onf;Jpb{*IR2+mNbB~UPl&eaMM{4))5 z4-1-TIUOuGPOrKng8fFY2@!;qpcN_@qE~vDU_}{Fjta^;VPUx7_t$WXGOZQF4s_%t3fb6GI(At*8h z%gGs?CGep@ZMNWA1qiMPBL0D*If4^$u>PuG@#i4FCKy)%3$F{(4xsafpz>X`@&vQ! zoWz@g&K;1KFZl0Um{cHe)COR%P++A9V38o`5#$yNrUZg_iD0`3W2J&3%84%*WX%Rj zg}{0jOz#Nh)7#*#V0nd!d1C4hJbLp^FcVQ77ZRR0dv;zctg==Z?<|*9Ngw{Uc zU$g0-rTc|(Ghv07FfR$b4+xhrpoO>4u^u=+!b4IR<16eUzowsX;RWzMDC{7|?IGdm zjpz&zuA)0AQ222=2!e#48X)(ua5ZH>1`AU!gY^;NC>97pger=5g$j=hfoGWTzK(k|@!9dsSS#kFAi zO!y@wLp&EAUJTGJ42ggdFNEi_A)!YYO1`vSVSx~seL}ti_rTbG;UML-4hY}f0z(Id z(K=W^Bz&D*y~Dz64O%0@J=?&>S!A3ArY@qbW^}rWTqrfkOZ1qcg9k*-^dmVRQQ>!( zSznQJC0c$W<`JOyi{y=H9TeH{LFz$Q?ne+P1dL^tVhiNm6VpP^H* zXmS&9j)+EX0wqNB&EG%?6@5xsgJGhZ6x%r}8afW0!bPWOiyk3zN{6IlqFuD|jugE% z16+=aS|}hFC90>@akMCvN~BJR=668D7}4m_v?4qya--vVPKl0Hfc~_|o6;Q5i1vk{ z^Q`EXCUl+?RZ~zWR+LV^6+SNtqECCAC_Wow7ew1A+3TWcBPkOviu?rEH$fDxKxd+8 z<*&d@5_xn3Gg-8q!bX=wt7v(dCYn7viJfg(fHN++9M7ES1dZkeL7Du67} z?Fe*ci?)-4;)>|SePHH@mK?^+Tot`RM`K(Q?WfOCu4rih2(F8U%Rz8MloYg133m|V zJBYs}ny7&-1tNPP$O}bl*WgkViDF(yXR+wJ2~e~|r27OKmWtZPf#+?}xL#;jCW^iR zlycG9Wgw^!arZ!pJEF-fblw&5x*)Go^b7g!szl$Accxl2hqi9_M6Xa}wMO*B@c~e4 zMSL0btrNwpfok_fkrZLA7v)kmb%SVQ9y%LEZ+#8S2cpDV(4s}OlH#ooMFPs7ek7{c z1C+<2zoMZ16VYds^Vlj{Kwr_PqDvHvX%h|58@OHc2OT8dA>ve`^O>#i(%3FKo~J1@}(c8IE(w}J>w#NPC+kMaphs?yIb5ANtrKu#EIP?bQ8}V z02_C48zqi%ztHI?zD@CAf3fc;;CWE|-WLFe#LKp0EI{mpow8$Wpm-8RtAoTYls$V` zoV^IT1&eP`-sutXb~?!?M7)b?#zMvV76=RzZ=u6Rj*6d}Fi+v)ZzEuDgm@<9SsW9O zrn8_T#hYdT92Y-yg`!d7Y|8SD7T>rA%oF0Wc_5Dw|LO+Tj+5diR7rPAJb`v=XT`h8 zd467ekOJ^=;#+S)iwolY6hpo!&hvx7cyT$MC6yq4@H+?+#UXU?N|N~RNJvT+2keE2 z6!8Y~Dy545qlA!4;yX)0mnKf2mq)tTg|clk#8*w=a@isNk+ShJ#VM4xnkD{V2(4^! zM>h<;BA!h%n z6h$1pB!zV5-2sWqYG8UxmSZK1>7os`pQLdsQ2ix0RzdHBl2;Z'N2 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°)9^ARoz}g!a3Duim2(&t1QV$ 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 diff --git a/TrafficLightsPlus/Debug/Core/Src/main.su b/TrafficLightsPlus/Debug/Core/Src/main.su index 65f38ca..91393cf 100644 --- a/TrafficLightsPlus/Debug/Core/Src/main.su +++ b/TrafficLightsPlus/Debug/Core/Src/main.su @@ -1,14 +1,14 @@ ../Core/Src/main.c:93:5:main 8 static -../Core/Src/main.c:176:6:SystemClock_Config 88 static -../Core/Src/main.c:222:13:MX_CRC_Init 8 static -../Core/Src/main.c:248:13:MX_DMA2D_Init 8 static -../Core/Src/main.c:285:13:MX_I2C3_Init 8 static -../Core/Src/main.c:333:13:MX_LTDC_Init 64 static -../Core/Src/main.c:395:13:MX_SPI5_Init 8 static -../Core/Src/main.c:433:13:MX_TIM1_Init 32 static -../Core/Src/main.c:479:13:MX_USART1_UART_Init 8 static -../Core/Src/main.c:508:13:MX_FMC_Init 40 static -../Core/Src/main.c:559:13:MX_GPIO_Init 64 static -../Core/Src/main.c:666:6:StartDefaultTask 16 static -../Core/Src/main.c:687:6:HAL_TIM_PeriodElapsedCallback 16 static -../Core/Src/main.c:705:6:Error_Handler 4 static,ignoring_inline_asm +../Core/Src/main.c:177:6:SystemClock_Config 88 static +../Core/Src/main.c:223:13:MX_CRC_Init 8 static +../Core/Src/main.c:249:13:MX_DMA2D_Init 8 static +../Core/Src/main.c:286:13:MX_I2C3_Init 8 static +../Core/Src/main.c:334:13:MX_LTDC_Init 64 static +../Core/Src/main.c:396:13:MX_SPI5_Init 8 static +../Core/Src/main.c:434:13:MX_TIM1_Init 32 static +../Core/Src/main.c:480:13:MX_USART1_UART_Init 8 static +../Core/Src/main.c:509:13:MX_FMC_Init 40 static +../Core/Src/main.c:560:13:MX_GPIO_Init 64 static +../Core/Src/main.c:667:6:StartDefaultTask 16 static +../Core/Src/main.c:688:6:HAL_TIM_PeriodElapsedCallback 16 static +../Core/Src/main.c:706:6:Error_Handler 4 static,ignoring_inline_asm diff --git a/TrafficLightsPlus/Debug/Core/Src/stm32f4xx_hal_msp.o b/TrafficLightsPlus/Debug/Core/Src/stm32f4xx_hal_msp.o index 1d0fd6ffc2433d1adff4019e5dfcaa302ab60ff9..64b0d888cf78815e85dc316497870246f324ec84 100644 GIT binary patch delta 108830 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%0D42NjY=-ztgAjn_S2nu_X%P#?5d5 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 X0W`onfM!cu7}mp6`~Us1|9<@+D`%Pi delta 108782 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 diff --git a/TrafficLightsPlus/Debug/Core/Src/stm32f4xx_it.o b/TrafficLightsPlus/Debug/Core/Src/stm32f4xx_it.o index c056e853bed64a73e7064b379507c794897130bd..72658453e2c30d1514cdb005219838a2b8e380d5 100644 GIT binary patch delta 106275 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

    @t^V$wkNtmYF<;}SG~ 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%0DqXLthljByk(>NI*#?)H77>o)-DGHSnv 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 diff --git a/TrafficLightsPlus/Debug/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.o b/TrafficLightsPlus/Debug/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.o index 928bdf230109bf30729d86b57785926dd47ac012..556c1c0552254cf61d7bd2f545d13647a79ef2e1 100644 GIT binary patch delta 152761 zcma%j2UHYE*LGJ=_e`hBCd7nUG3V@>b9T*Zj%!}Ct~;P2Dwr5E28<{QiXw^%V$O<+ z7*Rx&XhKmj@jrKP-|zj-`Oo=(&u-V$ts9U+wNg1Q_d_&2y#qfv6qAMRwcfylraHuv|Zt6Wf-P8R#Zl+}01(IJwea zMowR&bV;I?CF;DLQ0x}SbA~sCen4D5$l1xY46$cWdF!g^Irl(kj=9Q^ zX- zCbDg%V4cse>DfuAm&M&t+o%I@W+G{Y{k#DVIlrc{Dl(i>^7&1y$wcT<^J``nwiBFM ze$B$}4A3~qm|wGU`umrG$jq1q;N}@8C0MYsjyjHGE-&o)j2!bXZ-O5M@~ezBxah2C zt?1a90#A$N6ZM=vKteQ&GL}Zl_RTeNMWtfw{eP5|V5%!7PzGHk^J|P{ln2^U`8A&1 zT!N^0RI0gaI9Q@&A?_1fztB%HHj^B zezAHsXkXjNHIu5aO~SwKRr??JfT;Sv-U$+dQiJ`vPd%LjZSEbrUqke3|8kX`FUmNn zPJYe6{Lqu7y7@JUc{re}9xF>`6wb&{gy4S@b#%t*FF9jv#ogj389BxuRE-?ZH&z&@ z;|=q5oWSpKezKM5>oy!gOLzm44s5y8;e5O1Ln2^HO4w7-~oKd++4keopqw^5p(Nc zAV|3d5&6f=ts%l%O#IW?ys-O-x228TQ|5Lbn!I%4_+A?KjJf5)$|9XuVY0#{F}D|J zJFgQD6f|-#^Eof;DvcY-Nw4y6;&q+qeNM-vGPhuG#_7br^%|GPR5x_lc%A6$j4te6 z@cSYomz^)2g#I222zcUO7jEka(F0=+)5Q}i>hjBaQ(qq|pw4gbg;V^zC3v^;D|~4< zaGRuXc-{Unh;j02<_T7p(3+(rv~9AAYkWl-AAWu!q0>Pcgu=oE5_)tL4__b~3RX`^ z-l@Bb9}NtpGSRfBD20GCjB3ksa&S@CJv5wef>-{2S4A|ens4Id@M6@0*IUsW&Ws{8 zD)4tOv_vpcRG|4Dfz!*EEWLoi^{$hzm|cC=;O}hVR-r=P7TAenRx}r=iaCKOzq5q> zhd0~wFYih>w^kdU8#p<~Mba5Mwt|sQt_n1y-_~>T7d8Zv=Gz^OoFEs%V1_W!i%BlR z^7Sx(XQrEb1DBp+`7{gz-V-2Og0T}M+{?m%p(-2pAK~i%BiyX0`|o4%x|D1E5@t{5 zLVcb58XWz73=r1Ciy6{p_iYkaKyJVyNR?z1Ik^$5NO9m;^NN_PG-egaQ#~ua-5FNY zy~P(BCMnGsn*{!Xn%s)%j9~rq8^YZt{{iCIjAu~OHowN$Fn3H~+OZ!aSWN zidE{L+6x?`SUGwuy0F)M;Lzy&T32Qo1YKkDhpKLzhUq4!U%m~%#xb@LP^z|{3U|Dj z`+Ypp)g}|}`2|G0G%%LUcLo)!#QdCBixp+o;=lrv{XR-Sg zB+fLTKq_8!fo8l}4nl*@)lrq^&hX+z**E9);w5?AQ0MF7UD#jF#wAJ??w@Ypj1vqr z7!0(4eT~c7GUwD1McF8)e~GfN7G9#jpcBC=S60`ARPw8*bA{{U0dsRfD*y?$`6Yw} zVsg_p`VZ6diVA1?FDAwMi^-&G{4Z09YCWAECG90iHkz-OPaY{njN`b|e4#;*fIVr6 zvscLm?1a<5WbuAWD(JXLe3AL|LR>wKvo&aF;Ck{dw+Z}67aqm-%T!OkVZP1@f?Ek< z>_GRKUp-c6`i?`jKiye=^++kz$x4-AOP!@kxmgKJeg2mtB}MHqgdR|K3Q>Ub39?cIm58dh0n;|TXxuGg;h5ecrz>F< z-J{Y~PFLI}NWj zIu}>;;A=E??yJ~_ZFat`*t+pKO~aI=NExw&eKJOHm%J{Tl@$b?M>(RSIBR7@)gAbGo6zvl`($7{76^2s!pyZD)pROD-~zgoTn-k;Tv9YCR8e+SxcCp zK8)27OV$dgJdQ71#5un5Z)}D0K;><9N7aH0#k&1BaxqQU4>Q$Ye*9O9Zn#0$pu1T7 zrqj!_1j}=7^Q^)CaK?ESu2G_gj?2wK3_`Lq`z1^=ow;DM*nYH(*a`fKb(cD zRB&v-UC|ZCI@c97T?vy|u);Lh)s@u#%jmCWv0KbLdTV1^BXa9I8E|dsfk`;$9D!*q z_Z2T{k-Hs>X*T!f0{xzdMX$&`tAn>1ck3*1Y9>9dYpf*O^MU3-@d=Amk=qog;QC;! z3D=6Q>sXF{Hw+|op9j$Ow@pMz@}=JoN)f+q7oj=(f(-P3rQzD{7(wY>fXpZ%MBm?< z;I>??!?ifx+afpiD#4n+Md2JG*Q_{I>K>tn!C16FQ2|oAYZn<9(36Bu&LwYBz7S_g zA2Q!<0GS!ug7_~!B+g=u$k^hIWVoG$fJR|OE^Yp9Z>ELFL zA%Q1r$z+prBryCV8EA|ZzQ}dhM88vXB%oS}XL4~;)Mph@qVU=hx$x>F)w43DFWkC1 zbp5joQT!*6tTcvrETc&F+fr)v8%-7?CX#-~o6pp|Y6OMu>@B)hI7DK%N00{(lF8$Z zKIFm9ZzR0t1zp!NqMwlo#E2XMw5>ZSoxPC^9~Vha@4;m9ehH$et%%=VpJKUMBK{s9 z=(pK%l$f6Hq2@gg>8eE&rKUjUg&rhaw4Vnm6bOFYik#G_OuH|A(0 zoBfC=o;Cv7zbR1~4JOVq?sUt>eTG1uCVWO0WCFvw0ZR>D=#{e z2B9&z+IFpx`hS+ok23w}eyDTEeDq#odj6GETcXI!L7rOQJ|F{H1i@1C=(@iy`E>LF zspj93(&xj-*ymwHZ-=y$$OZpK8tl_a!yBw<5&Y`}aj@p<|K-L}vtd8o^%En>WT8m% zc(&{Qb$LpyzQak;r-fvGUVFN}JxLJ9_9V`d!Sws`UE&ElO08|G(eFx_7l~XgSGWD* z;&F35>UYx#ZU;Zua&Wni2us~hWadygGGD6?HNP8A!a@S!{o^P7cH2yM@mWjaUviub z=jzDV^tQyGyo`8)w-J5T8shxq8Z8>TVi`A>^wf7F`sb3Qp(m1f=>IWD{fOKo0|_TI zB$7RbK-@*f5uK|sg)tM;ERhRzbwFBBiQLvsMBmkoWT$T;5U)qk@9dVYuJ@Mod}&S^ zCXAritd5{-UVQ?Z{+X_0CX$|Phc`9Mdrl_(hfqT~55ia>gH#wck(pJsh+g0nQC4;& z&Xp2*=~lf%c~IEZP~ z5o&lJORA%K6XjG8!J0CeJQ!D>JX_a^D0NN{r@DgzXpqUg(VKXRr;^ghf9Sf=N-^LE z5zm!NWOyi2k|OtWHR;*+l_ag6Zyk|i?$qpik^JsFoqiYl zOn4`5AkMAVi9R=*INyz<-z%pPPyOk{6XHz{cp+&ca)T~W>pp=D2VNp@^BxoE!fOch zmAAP6KzfEq6=#vUhFRoa>pP_AV;(W3bS0Di#mK&=xF?|O71iN_OZA^6yaI1e--%As4N$M-x*wNNQy(-qRGOeU#C zg^1#ImN?}|0`#T7gBohiCxOScs9~n-mC|XNOOYR`ep#Maw>&27bC8jsfSx(y8|0I6FHMC8^)K|}S*O2_<#+RZb;O-8tcfhb#)NmbX z4?UOB9~n)~!-L25`(RR((~;;i%yd1s1Svpn_5q}4IRjS0dag*$~J*Ohpi{Lvu10! zj$LEG^+68BwOn=lc5odZxeyH?*5fznM(l8qfd*$u^~Dl|x;;ias3=bKTRtRQdN^H2 zVD_WuzDyvXN74KBTreh=(1Uz3B8tU($AFUvP{qds(0P`yH>=PMm$Ium83_k= zBNq}Y*v1^xR7#Q+@za;4V-}%!pZ?{uL{O`zdCy z9W*R|VKa*W>UY+pJ!~%IYjrT8$1UY;G|^he7wZcMJ9x$TOGn8C!O&eQejr*sR|>PI83Cz=}vLSNCs zXQ0EQ-a#0v9uY)OeA82j5bCvh6QVqEcQUU2%x@)-?qSQ0lb0;s27NbKje*EHePpA) zBL737k75b8p!fv4l?iPp*^mr?JjEihGa^Q_XHU@@cc!_nIfqQY8U8gQ|g-xG_wm3F|wh&*l z28YnISL%`rf^&^7h*F%JbVV@|x!~0_xZy{wTX`^9JFgPd)cZCF;c9q?9-T&IJ#lq3 zS$Z9$rhn{5bF(xgDaGcEx5JH=qk=$hH68gnvGwRzXzluUZBTlg$pg>efOUW~WcG5j zj?eLffeB@4Ava|%y)LHyvkZo(t;GhDIOBR5JT|inW1mKx)8!@Ta~J*zr{_n^gwz5D z`;rB%i&z+v!=evsx)<`k%%>9Am$4qS81ZA>_M_&{ycjrFusORxT*)@h0D{#l^9kgf zY=}2d?PA+$yxz^K_(01Z7Ip%Vg4vJ@Xxq!`VLw0&VcztT-_Kq*0Eh$3F=rmMJ!Gw$ zK=&&)K!9K>lQyGBV;g9Op3bI{uNkaIX$WSrb+;gx#pY%~>07pE2E2I3G`cOHST&jo z-{C`kgPSS**1rHIgKs_<7Bcx^*bx)6`7<`KeBm85MgGZ0I(7nL9{Sk+neY>J^3b%I&E$Dp_EG#x7B>RQ#J>W&CFw_Dtal(@ikc$^q6o>8y!m3;-dm=0>jkY9V zC{6EDgjPs zK}Z&BO^3uQ@dZukGQ_Gw;l&%VmIrEY#dH+{@5F~oevJwh<`su`6?b}rTsfR>_ae6a zAE5DJ>#uC&@AV}e?sXBeiSWiR`TbN@fKI{BL~8Z)w~yWn#2IU zOd}ATd{LS^t>N4M4o+b$UtzYhO0%LJkI_4H6aTuM%ISmoNwJt)B=T{{Wc*(T82vWg zBwCaP=@y;_-rc%nEG%f$(U;!mT-B_g!!-mKma!}3qW&-JzZ8qfd~O)#0qOjDBu4)~ z%(yf;szf4A0ql>z@j6?>N^V8)j<9L#VCN(o&>6K@HhsMV@xH>IV5gIWL|eZSAQTFG z{HxAy_y^vWF@HjM%3U1*4=Nm_n^JkpAKG~p&cy*-ErbhanB&lh#Gy`*lC#LZAYP=?G>TL8UiQ(DGUErs6h!g@=$tv+-- z)a`OZk*qtJ3Zt)d?P{P~Wa=IdgTtS6)v7~ruFlIj^|u0!?h4#lCd{e}$lC?mbLiP6 zOy7lCurOdAr1uJbWgxasuwg+Zh6tT3u()4vTZP&I!L}Wop@OFZb78{Jk3fDPuSp%@_ql!O0Ag{2M=+9Cz72{3U?m`ZP~mv1AN}KG5EtvacYvI) zeu@a<68)8>5MQeAwFPa<^fx#N_~~y%IDph&KddLH%k_yL0C=UoK26Ow>5qR0v>^S| z4dkJI;5Yz2q(5W^@vuI)D9k$z6=qWh!GEoeH36YZpBK3Hw76p=CEyChMB2Y zu>Qec)4;xNfoSVDZ6*NqcT~g{oH(F=ePA7wItAB18s>t1@XP0bG~~_&`jZPLg6{71|x%F@%kX5b$rCZqtFVwcP#Fw}|yI3n)vh88- zaMl5@;FZ|C!7F%PT@XXqv^rqf&oqo+EII!^RSlMHhXYNFwDfKId<&p8 zx6J_RR^c@F-OEa2ah5M0nhHU)3zy|zL}EA_avBaqu=?c?j$=&v4m~H>0?fT>b;gNq zU9jCQmS0Q*j^|RE=U1;c6Z-32stvgY^qbFI@Y=$_|~(*bHTTPN%ZF2$VzJ{HnAylAQs3z&j5fetXd?j zZe{QN5vpx$F^vR4tn?Zf+s?KO0p||(ngn*Tk(2}5#R~aBr(-uOo`O5Shb^L6S1_AO z3BA2+cRHfHk9Fw;-68DJEkN7Ps$pXco$GZ=KnrD;C?6HZPP{}E4zemH5D&2>Wl#%e zFR&yO53`4)^9Wns4qzf!NIMuh%1qdx6(d<7WuK2ZnDZidjX9(hnduld4iuY4Xnlur$Sf8g`~O?u*}l z<#k2Jr+#1BG~5CC>Q)0(*J#%O*P4mgK^1G|hJ(F!QDoj+jLJ$MAhMVXV|w7(iDCXy zh2{wQs&qtCUu`Z{ReW_E>BJGt5*p?@H49Y7TB_E|?(ntt$YdC;)3_^KtLr`r3hO<5 z4S4mtj)!}W1_nHKVng9iur{hh>yK8qF{+Cl?dK7_o_i_b^GEMkcsuq$IVhSsQ$*|R zhXq0RW?r8WjU{X+P6S~HJvs$?*Ryzf3+!Nv=@k{qdQpNPlHFJgq{o>He3Wa3qd&nq zXLkhkBy%}%in%<9W&~S*mbpAR$H5*L?b`b`(Ds_r2m8x(7YbK4pso1F zI{00Nr`$`Wm+`pPUDE|YZ{FY|=p9Uyd+w!D$MRygDG%<=mii(d3s{x~!P&qz+@Nr7 zWZgJaH?bv@oZG=>?}Lt=>9ViGsx(qi6`0M(;gfGi= z(E{2w=rW6;ZKH0{NYr-ej?f%ww{FO86ydsZ3*q2lo!K!DCeG+ujE9M{x(1Vfb)8bp zRzRrCUmm!Y^`afGat#sME&= z0IEv56@1lS|AybS`c{H`-JR&!VuOQ7#fgm_iGPFCEQyk4EnfYFK(#Ir0M^cX@K}ny zL#Kj1sC;**8~M69kWct)EO;iLUWjo2^^+27Go*BY+{2pe22%(N8Gv9GVdc9?Cy zfVN2HUH}*#v$hAI;R$O^iJ?SR`6ysGQrNq>K#;-04Fp1yc9M`#$CH2>ein`?YpkQ61et5 z7fxGEdAdThd*~$`B7YYMMbd$Lp>UJZi;IQD|Dfh8R2u~GWkQcYaQX>;XJBx-kU+E8 z6~g|TAg&VBAi!QNl%>(jDfFe8+Zy4+bLx8V%U|la94}$rPg7-7jHVKVOLg{9~ z+lFF`;7PlILBi@6VA(G0mLR`VNUH(jE8sXfK8Ov88K`dsn;ksaf=?zSJ_y?vAr?8pln@X<3AH9e z_ZQ)!FO=pAljsEJHzATG+mN4ZG!h^3+fhlNEy@n{ml<}Z#s1i=;JhmJ6~Qmi}!+E$C}`+ze*oZAv6)`-hD z!TegW@B+xK7f*SDxIxrvBcy?1SXG$VEKVo|@vUNN0}!`~vu;53cJXTlh&#luts%Zk z?B^%~-Mht*70?|lo~HEmUa{y_>Ox{xUEKTqqGu)~!bAfl6Ay}$X%8q|Y_uJmhsBI? zP#PgNq}lCJF)$5s$Hifx&>bZz^r}25KKln+PKnvifG|efPRDLei(P2j>Wt{FQcpT7 z&h&@;c`<-82p7aJ=OFk*EV%-;MA4mQ+(}}Y^|1R~EOHelUWl!0p)EyxTNbXp5<8rO zc&b>4PWhyZ&nU~9AvS#nmMk$7=Z(eJ;?6o~^U-g{v1B9y`X_+6M4#J3!SlCN-!~9w z{PbttAmOj?O|OI%`kMi;v{GO8HFO8)kI9==8ElJYOmVK#zKO6>M>D$rH zVVZu-OPEO4?^009)Th)!ElVHS4{~qx?T&!+t$s=_3}x#LlnHfw&@adSoS37p-W9B$ z^gB;N@QXfa4(?j6e$`pjb{UotakqitG@%%5s52Ot_8R0|01Yurj6l@(8^rbi6KeR5 z{Y5d%kiHel4jH;odLi5}={rJs#L%2hc|{m*Q#K>g;6-PXjx{o5(V!h=7}5-aCk$C* zK|N)-E5k&zA%?QcrwvIl032&5OsR~s27i16CZ02dI-B>Zv^+Bmr4(V3 z;pPQsd11I)1H=@=)nss{8VY9uLz*Fs5;BR$W$>1SI9NU|m}&PmD@m_IL_OGa@~a`yx0C27^~PRN8=bp7>09Uk$LIOW&tMcd``s5O!0f3Ll&`f44if(7r;3G-3$EGbPV{ z5O^c?r2OVvspb<{crQITj#{==Dg3wpq8ieW+c~T$v;wK-7 z1JPfecL{b^$c2BRwo=y9Dj`4)9D{;sQm2S8r+90p&=)4PEuMea2PJgKru>C!Yg zr8T_BkhfF*D^upWI^XxPJN#%bGh6N)3THmbVq=Ks$o=-f(r3AUTZn&=Ul<|qRi2IS zt;BEgwwb8?kUO6M%TM{e9tgdZX2Ia}R=zHR_(G)(C8`%GQ|Q3pV&y$exO^4Q&k$d# zTssHiGUdhr*z;HPjwZmgTo<|AEjiUhKZBP`BD%#r7WlXeT?GQ3~i^C zz^(vuMycwgl;K&W&NisIpln}&J91HJH5?LGl*DytyQ;ja2Ta$M4&A_VL%DYo^0$<0 zA7C&}nRgH-?kLyjz{p)Cpc#}VC}H(byRYbmLfJ!Q!Et!@NU2Ka^qwf=o}!khZVUiDlB zk2b1ni-2X5YO4pGo7EQE;lmcS#%oyJrj~ky&K0CiqtjYD)Q3;Oxl?WGXbKa%)q0H( z(LHMOkr3Rgo~8xLKDEddfZ4AWuLR-&wGKX15yMnnTUa`%+Gy<+uAXuO%VD(&ZA(R{ zVO0U`s2Yy1Z^dKk2p+|8^{yGjlWL{{&Qt13d_^I~sMROK-f8tK??CmenmPs%Ij7#W zpmss6x)ZuDsweHheOc`gh1wN0BLTH*YHgZ8Tvt!f3*)Bxl#bcmQp*Iv(rs1zhA7`r z<7v_uuMVMO0{7GFP|R=0>eCLW2ZwhzI0s$LFhGv8zBEm^`T>nsjAQeoikUxQ3=|-wOMx&t`%CTYEZgTt27^& zR%x^7r0{BO#5lMVptYv`LZ_BSxy&`%h3=4BtKGn+t3zC`aj}r!pfx=J>P9V-mf4%M zPPEnx)J_nX&6?2+!7ZAt8fsg$^QU2HyH-37uy<(ZDMPtin@MMb_h@~xq2;ocf+IKL z6)k~|*j&~A#5Z^1H7zLyn67KN_^Lv@p*2MoU3A>kTCPU*mKH{Waay;-C~j*TW<&QK zP233hceNe#Vt%51*oL-5t=SH=C28wu%Q{6XyA4e?23d4?rQnBF_G*|koBJ@=* z`w|d68+?aPRR&Q0p{kt@)KC=Wx8Fot`k`E#0Ss7Yn2q6^0f{%W0;tNcv|q zjQB_&Xf=shNN*VSm8^8KdWm#-6u>N%j?sK$nN)Qj3P0(iKSJOyJ*5=Da%sN=;tFXg zrDs-3BmRNsj#X0I-=Wkg6{m&c8mUkT)YePY@ln3GLHe8Wf*U1E4YX~N#?S(Li`2yp zEL)`yg#dJ$RD3wvf}}=u(6(KwRS?Av>BTgF*(p6=1-rYX055d#-O_~h@Oh7Pn3Dd% zQo)Wuztrxm8iSEG?sH_Z8_w3&>rS=J|klO?o{6%C1X8FQ9fqszyi9Z%WhXsKG61q=Qn3 zagz5X@Z6RJn&jS*deYkCu5`%`-SN`VBapZ!J^GHwJdlip>7lf}Flvt^|7bvaECug^ z_!H?XCHxYl2yDb-me-N;HqRus1zM7%S%m(%v~&iPB})&_;=aC+rZsY)nj*DXgWL5| z>T?y;S5g`s=uDNCzJ^4a9H#~5Bqc0%z+ip@kQ z-%9If8TU?dqfM>%Qq@6d%a(@xjoJq(WFs(rlwNd)vK-0qw~X=klN3r>`p;7R&Oq@+ zS}+$~(@Ww88^hL?vWFL_BJSn`%bV!^UV9$E!mz(;OP zPyJ%KoeqVsT;v8=mdLYWAnq?m&x4^A@}yQMR?6uXJ;vYF@&n3j1;`bvz!|6f=65u% zk*m?Z-CB8LBLrxj%&kUky*yzyY8&Ja^-7mS4$o8(A4Oa#hFqk(s`T*Mp7w#xJI zCnPYv{JS99g5-cawC$Cv)8nvD-oF&kLgYS42&`kjyu2wwb3ndJ!*Hk^jL#;;F!`7d z8V}0ji$l#JdDttoh09LLj~$k?tYA4J4<84ABjo1vmBUeak1tpvWt%tJj>%6cA%9$c zGz`Qjc~unTPRJAKIXEewSpl7=WN!l=m1u{YK%Xqc$bEYv>Zj#|b*RP4D-wb9j6Av~ zLULB_Kr@|l^7Izac3$pEC!{aP$*HJal*iLV^pd>dK9pXT8@vISEAr-Ns9lw(7J=Ps za!33L0nCvN323_^YhgfmOYYwr7UE>bsYj5%EkCb~Al#9YGNJpf>`mVW#mk46L*kws zbq`1r^u8RYf%ri7rS!r>`FSziibwKb6SO>*dv1l6C-OI%rzOhz9T0dbZypLu z&*TAK@FhuZL+(D8+bZBpmP#WdVO~0yA!J z+VV}8J68ishP;)|K4i)x%c3ny{`m@8Udziypm-zKtpiMN<=0bS{+)c4ddYjaO$^Lu z%hkdF=7StUhXp^%4w2?RIdU)^Z}}u=e1_m>IinniU*yCcV9k|NXgBDqyeSK{Z*nFj z`@YMubdK+boY)q`pK{boSjv-4gwRWQN82yniiw8M1a@qG|p{M_WcFjp~?{o=^^C-ZG49- z;q;BbVI__7(?^s98oDEty}!fJql(uth({`~uR;8nB6dS$jw@?u=PgRvMX&r5$`7nm z9hlV@p-uf$N`?C9(`PqsPv*ev!{xG8swfSYZrqhNvS#>EYBUv5ZahcR%!%5 z_Y0-!EwH92iF9=8rLuzZwy%^&X+W5&(OyvZf3C>cA z(wA(nl?M1rB;p%o4}H1tRykrs@lNSW8KU>fm&y>&R_2+&@;lce+F^#QHykh_+s@=JbHq!I^JPJ;}W$>2~d}+R{Er9nR=Fz zeSYdhnke|IHFkiwTrG`1mLaZCC;FncQVm~)Ag)qlN5aHvbvz}+1Jnc>-kqx50OA@o zj<(L%ssql!!a8*dEp^wcM>3&vgSw*%@NQK9-0pzHCiPfj#3WD^Y3j9EO`_AWThxqf zux?cwltSA!b%X?iLF(FUDBZ5sr~&yMYG!A&?NnFC!tGt^c_S?CR)Z<6xJRu-JAT1x zDc4C9wR{b5?o(4lupCgQe1)=5HR?8fh#98ppQCzEtuz4U52?$O5vXuAmXsb=du74x zBkJUZup6Ovnh)Yp)t|n6h*SgrMl6o0P29n9TrIT@CZg1WflzirHPb@rq#8q6#Zzk3 z0{9ZG&c6eJ7_4bfJFONt#NqjiRVUKI<&1i_C2*frTNgs@oZ5>HHJn%7=^4AAZlm4n zi)!~|)Gn#@Tf?=>YTjrB?}~b#W^Py2{hLv{rbhk=gx6L5D~R7vGy9ud6o~KC?TIMft0(AyUAEep7P}wRp_B#ts0y@D%27Ksf%#ABUSF_$R*yY_ z`7f%YIelH1s}86LFTScfXt(*Bx?unyepe5Cftnv`N*n_9Qw^92mOQmNou&5Dc27gi zThnGj+X5}9Gz1oE-zLJ~BJFPjYCf7u#bRwQPSA_K+GP5|Vu^OG4NxrAk^{iGO#7oC zJx6}pGB>F4*UTZf2g|j`&gSFX9gAw9DL_*x!{yZK(q70KEukj-T&uaQh0b-_csf6} zUOTu85!s-n&4Iv1Z6nRtHfau;;{|GRN62l~I^BhVE!rGP?QYd(zK6gzt-Ta6xNI3!sbIy19_Jq;>lX#bwQl_HeFfK_1||s+9|Znrqr> z+Pk@~?WKg(4XrKh8{E`pjDo-|ZPp|daoRBYlIgbga6T;E(WcVzpS#*B+CPrh))j?k z_p~+x>GPxn?HT2L?`v!Jf%Sp*_B4EYsQKK3{3C62anv4bZ)qdyiI(aK6p7m8S&)CK zr8I-mXWF`vFrTC~=TSV@UeeH+tSNzLd!bdJP4*P6ZfA6hms-7=kb9+-=?{eIT5lwu z9b$$S(F-OrwdzUeELobz->~#r>$4DQ-e?63fc94F(E`xkX;HKqd#^=jKzFv*s1Oi- z(2CDREIw-W>1*^H&AuINpR~W6Q1)4?9Rqop!aojN!C=_cq>gN818p^WyM+p|Nl&2re?NSOGa7p+q(>`>7v1eDvJB{Py3|T-L}E# zLur;kk7#-azK-*5^ zXi6{aGF}>qu zphz`_Q@GQN-!7m?H#)U$2GGVuu5kwaC55lX(M#deH)GolX!~ibFag9o zW4X(yd6{ss4^NCKXE>lOGWouNoR3LI`@u_0iJ7qHSZZ>A2NTOo4QMOM&y-UO9{QX5 z(@bW$sRK=WSD9L#L@ZXD%6N%g{3{F>&rn5Htn=R%U%;d8RGj)jeNlp zVyYaAV!x?DODH>Fnm711AvX=Gu@oi^=0jw05yvpw8BV|wc-0WZ#)g6UqIGiA(1<9Sof{U|P&X6%DA zmrdh7KarjMUsKF(Ckj9Yly)bKEzxMMmq8pU1H zlpPR{Hx;=BfqSNNbi5(KwD1)K?whtYaKO?7ldcgwd}!KF2WB6c;%NwfY-&R1_@9{G zQin=3)wmD&r>0tTYV(=t2yK`rncNqE_}nylAe1JXCNl`UFin{PmK4(r5nx`L9_GNa zSEkmK%}6z^p?po6DJl>G>866aDKnp8%C(^}(^RVp>}HuBQ%e7}DRKnVyfM|GSiUy} z)5dkSDVqA#2UA_z75r!#MaS@SOrLe&{A8-&k0RHUu?x_?no3bpdZGC${fWdyW^ekm z-pBlI0kkYOFQV6&uX!f25%^fh+`Ju>E;Toy<1fq1JAOjY&s?hj;QO1aQ!akFIlTxh ztuRM~fpevKEv0r=nRVr%X0>_yYqSNJHx)+VG@rZ;gKNy5A!u7`j`v1wow?U;2&^|3 z$OVcG=J~XxztOyta>T7RnfuYaHPAek5;mL7n`sQ(V*afXkZv_gbn17T`Lr3(g3RA! z)OMK5Qvz_OIlvC3yUeBAIF)Hd9TAjA*k>M3xq=Y$-8Zni-&~n;3BL*}~s0W{ov_6v%`=5UJP5%WBn&_|eSw1U~A=5}-nEYkeFG>FH{ z!Eu0l+)c`-ve2vlqx6M8@B;7HWz6|-h=CL$B#+ye|BJG~} zeF|y`=J}L{xNrVQdkYWDW!?eBL-U2%K=H`D;x-UIHhb-b_!E5Agcv58k1WA0cxvuJ zM<$+`C+vcQNoJ4B^d5O`o;(uflg%p{g8IVzWC7Hqn1`go;7haqC2FtCwMPR}s`)ei z(wvxPE<>N=rki{12QkCEzXgby=8tqFCd(XH2E^Cq3fH0Rjd}h>)ZUo|%D%iehtq+r zZ1Vy-Uh%;!;L~o0_|d#_1z2;;Ra=Al$vn3j)O>=7Y2@&oz(U1A|}9b7BGJ zn|TPWZ-1E2)5_(i`R-tt&oeVx@_SjX)pC}Gk25>+TYWYetzA#G*3B-ezUV(7pkY!Q> zw1rz7x9&mPVM{V)9*$V5J%Ygq%iMV|c+?`&xtT~y<3+H0%#usb^l^(XO-iFIrmFyY z!t#+i%SlT~T5g`Q6b-?>i?(#w2)P(bSTcyGExm_>GuG0F&Q_kWT%iD+wRCC;xpS5+ zjvwGTZ|OV+x8#B)mHrmWMN2|1OkA>T5@7eT<>h*`U9r5QZS|{`4Q~Mdnx)Wq5U*SM zo&w7aO8|9`o0eL&fbf=O`hIAMv;0K|I&SA2ZE4l84?A9X_glWkW068T7X)H<=#+mzP1c@r*+gDi{BEU zcxzeM9MpG~r-#7v-r{@(yV;iKw4?ID^5!e#KU(T)z?5SNrpfFlOQmZF!e>h}+5r4w zX+eLSDcAC9BE-L1x($N(H%n+=aDKP6r;-1Mh0!?m(~@ilXP#vUM&}Bmm(_hFs@~RV zw8_7~`gk0`EVPcMKi;*-+5(%SqK`Gf89Tdx!+s0m%dI7ggSNuz*$LKHTIwsmw^(1YUY_KNI2j@oXu2Rss z$-0&%8(XY*=o65w)^ipJY_qnC0x`(y?V!xccB|haXxm{8q1nPt>%oe+*}JU6DATap zYHb4)d#wr$i2JOigWyq!wF_;z@3(fPY0UxaY|40tS~tSML)P)M zL<+YKw8HLT>$Vm^f5f_$_TnO~#pls()G=#YI^=iU`e!gCqO5N8WzIkqecf7)cDim@d((vErnL!uEOW~mPN!Al ztcwbvxNU8+8@lgUXKwK_}GiTh~v6_yg-B2Wk(k<$59bkF1wzbM>+H z2WwqBGO|uSJ4wiIl6%9p(bs2qOkZCR78nJj|{W=i>Z>no_p<$DFyU=076`lxY$*j$EVO0NSg^2i)~%# z2#BxEN?+|Qu}$s_^GhAJs>`5znaz*#(93OaHiEjswuIuf()N=MLanlWn+`RrZJpY~ z`v98{{Z#~~EtFo~Yi!?3BkF5yZ@!_n!4^&L#ErJ!J;AccW+n51wxO3{aI!<`Zr!v>hlS zY*Te;J8H{x^nzfd?KeuT9J7rLL*sGVgbMH?%JzvCTqkU^D9$Hsc6vrm*}~`yMYOFF zZ9m7@GPmNUpSG2y?@`a%ZXCpoIcM9k48-%cyiCBpU^_h*b}!lvHw4Qi+wk9E;j*m= zttzhAF6B7DbJezr&UxOjeWOXoP1{z=*W9v=NQOk5t#UeIaohHyC)C`rg*-v+uFX~- znBr}j^m)TQ+nu`LOt4*{b36BK_n(3Iz{Xzz`o}iQ9ke~MHRuKLL|X){*Phz`o{Qp{ zZOm&9&tH50h$SNAzCW{+bWsD_a7c#!0vN6+l~t zEqFNEGHoL&z;2f9R0IsZw#}J_+8bMYN{YX=HM$N=~Gmhzso%cR+5DeL2m_eC%Fy&~35(=M>a@?FHx<{u28tn!PTyzdVDQ zW0}1?rGEYFJ?ZZv`P;)j!{Bmzse-7jvWK1krq%X_lsFHtvxbPQ)4uu&P^__U+XdZg z?akjq_d0uTnl!AppQT;O4fdTm5Z`EjHv;0D>>l*j%>wPS$j@!|bNF-TVvv0h<ctX*hAjo=AVYFT&n!3ZNaeH{3)i z#z=dQp{UI2*`_K`i&cG4b2dF4~~cXJ>ZZSU#KbGSQlY181W zJ(gC-=j=H&H9T+sK?~sv_Jhq(yJ*jT2I))oL6jQ5Y(G!0#w+%isZes&ezg~zzGjcy z1M%zj;xv@puvck<*xj^moq@Jn_A*O>FV6nxDEzx^A5X^^@7ROrtGm1Q7mm)b6mNI0 z1#S22*)JfUU>`>t68G&*zQXPU`@Q~Pd1z1fL+z1$Oi5UJY#&|}#3%N&TF{+nzt#!0 zr*`KS=zeC8D-UH!_TFQl?77|Z2ilVD8)icMh5dUoxSL|15dnlR?aivvc>KzKjP^WI z?SHtkOm#Qo{PVbw|9Q;{3WuqF7jWmC_4s8OtdR z-j1=7Y7dSucHe+b_KeD%XdD<5-vj2z_&NZM6T@>DBAglfJ_p@VM#T=8pPS(J6@GD>KgPcbfs0v5-3 zhwi_NXZ%%)NlRe((FWu+ zjj`)A6DP*3`2w6(cLk5HMG=Q0mNLnPb7?GKvILBz}fxX#`4sz+`FrMBE3v(IQ zgJFFhJKz^R_ycxSq0ME+Oe=oZN`}4>s8x*8QZT*3V3TX1ni1^-SPkPS zMOoyY`PgYC_UvWBWM@suQ8rI04=UFI_byjVRR?J>|Tb$IPC3X z=$1lKKjWeOAh^LeM`xOwjH|SC4KR+9H)@da96d-w48ilzVwe#}1=qJ2rct2WW}LKx zgb~JXl$J8ec;t6_W9~5iT@R(k7uist92^mzIV633WW0LV)E96cw1mupI zW;D_{V1}`JAGpmjo;3kB$M}azC*~OgQ;@X4_~2`hFET!+ER%bTwfWB?_U zIg<}=Vazw{AwHZbpbESQ<^z;Z7Rk)_gZL?-;YD0KEj}H><$rH1m^pfs@D_xCp{C%;PU$W|ElVB48#nxBZ2= zOk+Ma0S(VGM-le5NoN*)4Yf0vxs)l8$-MbFW<87f-9vz#W8TxEm(5&D&r=Tb@NH<3 zYh~`<1GDp(pVI@C&kQEN!FlH1SuibNA|{BpirFy<*afCNMNW#CPtfu3BGZ$+L&eN} zcY#vEyeUCb%G}WjMa!5TWOh08B4x~6VyK&@eJVF6gnRFL<)j`?XL=CYpoaXXp@W<&=D8=2`8ZEj*Z-iM}{>AC~T zv@m6Ah-hW{(3{@I9HOM=c4mheJUf^x-h%d>%z-rYx|ms%KG)6cu~LNUDpNsTglkOu zL9n^bw5JlQ9%eB`Q+t`-+rXxe>D>-v`k5EIfq8@Z7db|5GW%lC8(^AM;5Nv#{)(9y zVtz!y{bA;XCD7s)a~owJ-DW;bN0bp}c>#EiGPk%unLA836M3=6nB@wv8E5uVMZ{eu z|4ne4VD6{w`6RRa8hTUA^(!HMnz>{-5OGvm)qfG7r|B9!TwK+Kg(bX2?4CxCQRjVmaYW7K-NzR{1*Y6AlBdry1^_}BSeI-vLrC=1nU*w z4_x@xO^Yx$lI6vRN>QwzB@h(N;(ra5Vpu=kKrfbcMG3JdSzH&8onn1U@sl{#cG{)J zv+gHPR{|?311gLR=3Rqj|EK|r@L-(OxU`-2vQp9>a8eA^29BFG;%(^#14x|#+ z5=tm8W!(=t{*ed)?si$iEGu~tlBu!6O@11OhSMoKQLWZk80Nfqm(bKrf2wZ8@^ z)hyG?FrtRFWE48pvQGYuIj>{wc@0fH>q9AE4Xp70p=o3twga;!*3BhU_Snq2^)cvM zSPvyI5`Hw(e%NyocZ5DyyBMPS;p9 z6o$Oca;yMB56eimY4x&3=@8V%GUM)in|{^-@_yZ5C3Rr%CMz2m-d39dRx90;I>^eU z8rvb(DylBI&8l34q!HE+xZ=WQl$8|&4ezk-CwIvh%QYI}$64R6gcWyLtLPXo!Mc(K z*d$9p2dpX9E0j1k&5HaMI?b>;wgNWG%Atg)Io1ceA!wd;_kGY=7g&dQ04}mN1i_el zmW=tpcFEkg<>{T=gN7)wI zP`I$~xx)xocK2Oyabq`9o`gHw=PbxQ*uSp>%#&?PZh9{(TQL9&z1d+T$%nm~e5J?O zZ&1kHm)%2;wI4g$2&VpQuZ>VNfc-mt4vw=oP=eLmWe?Rt*bFD2 zoM1n;3Cu#-MHEI1W0$=Tp5bi4D^N6o9Y|4_NVe6t3HC;@S5aPMH2b+gpvJI+)&M7# zy+%(j9$Q#~<`g?+3n=2)`4j_=XFuZ!)e_imk>B7nd*?I;6WMP)3!ToeU9Di2#6CI& zF3IfebUIC8ckhJwRQ9f;n1nQT_N$;f%jW*Kpr*4MpMr=Cb~z=ZX0k{A1br5JJsr2s zv3dV_;n>mTK*?d>p|>iR{h%{uHjn-9uMm;X9())^oM$^0LZ<@uOEplYko_)QYI}h# z3qY@k{lG?`Tx1`kFjX=8-%Eg%u>F1~=U6HG%a!0(#;%$JPC45)0!%NlpEqK#f<2Z7 zoi4L)e200iWbY{fN)oH`r5Dczcum@Y7Ij zfSs;|_(8Tn0`ejDvTOG*dEaK3z4v+0-(n}GgZFLr6Fe9?!hV@b4o2C_KZW&o*i|n9 zHpcd#ul6{57u9s!Wv6@xn_%Y!#4uoD=#3D+oe4#e?XDakhN`JHt88{z4B|1m~TnfEvlkq$KVr zPRspZ8qIlGfF_1hy&HtFoIUS>;w0x?5%fOAG1UVW$MK~-Sv)6#%4icf+vyX0no}-< z+KC*G1@z8vI-Y=pB+e!JrX_Rwo`aw?&T=XbIm;>el>*r59MLwg$>6LQhuN8&bM$Iv zaXR8be~wd4`B>SU8cJNw;oL_nSuQ8(aWr|H?svf^pChC=_IXY~4MY@h*3w?Tkn_YE zFuTC%`V0b#ILloy>lZl}=qj9IPBX25B^>|7C0N``Ip1^UpwX2FFAYaB6&c-&tsyR=RQ>lj2@LzQb=XoW1b)1pwK&j`H zQV^wqbDByF8aV;i0oqi1d5R8Tf^D`#62^lszGXbEfQ)JDMU4$dP2 zOhPB;vmU^@I47LY>*hRD4-r>6ZsbG1#@YQV)V|KSifj99dN_&CLBn2-W+N=@o&~S>AN(JQ8oSl@G zIKy$IWXxGk1g%nYoD)9rw-8!T$*N zK|0Oab4Mtx)PXC15Gan^$y*TP#9cwr8fUKPC@_z5qqxw^g)5>+mn-+vT|jZ;j(-Yi z?%bdUA;E+D#o09fCC}OxzkTWTkn?rHjlid6r(CHNS^5f7Vj{CL;WD=tIkdwjv z$akk7!&*dn0NLCh=w5^z?oVZCa=Cfm!h}3-a1fZ}bK4W4(0Oh=rNS3*uW2E>kULxl zx(nPlX-z8PX3?8>k-MQ3D8=0O$w^hh{g$%eO1X!+fLX@kcI5&D4gOl8c zqabIBEB_y;r@3GDqM6|)kUMIY>rdzCIj-t8=r_+@LyOM>H`Epci`*n~A>QMz>;f}e zo`yU*cDz5ysdj{CU_-b)Z}ALz4m^RCZbftCy>kYrPQ3Vw(88HFeFuX_c^XQxcj1jS z1Ln%JP+hkhuaS}_+<6}kpy$Ecn+!}(p4<`Bn-XdAEOoQh~gjFf>6tAKJPH^Aev2?+{)PWqqIEEuqAQ zP~P?_42JREbqCXM-XV&@NARZU*^lHE)1EGh_l_JIM)N8PFbOfdAC=HPmX}T6y_3An zgJ@3iey2A#j#vG{8hm5od0#yOZV5bj3wWRAHT;2IBJY0kexKnz!H0%Pyr3j-OXej$ zh(@)S8@;;0M$_3tQ_W@SK zYkvrnc#(IW>KuxB36zOc!fT2L(^B3MD$FS3{gwh|<-CgB5O|3f{RmX6;DsH=9A4&e zZ-Qqf@BT#$TB~>;Q#JAx-WJLXujWM!0$9VFEJIVvQ)fX^9d8uLjyCnYyN^Lq1Mlj` z_Pw+vcb zD-l+p1?Bm%{)Tp1=@dXBN@a9P2n>^utFm!;o znFG0lydUZKKg8Q2fri7p-wr|TTfD8$gZFKog;J(Qc)KKMMtK#Ekb8&c{y%UTYp4tr!g8uct%uasFGSwo({{vTfeR>V)U?uBU= z`Ti-8Tg-RtMz4hb)IqQ*<@dh~)ynunPY5jMeKUE=>mF^>wq1ARX(^C$ekrjnmS zd#x&dKe?5z@Y}lV$Qw%)DNLkAAcEnGW+?_?i4h>!T*siD!j=*NpYhA ze&NRuG03mjg=UDqmR_}C{xH?>-s0b;%Li`rZ~hnV;*XKDb(FtN43sBtrM+5`3&$1UhdKOF_1P{|e*in!` z9&#r^=1wqk7OXJ?^Qb^Oj)`>o}t8^`ekHC%G0mlUCSHaX*@Wn}(<|lY91mgV#97<#i5QKdMg5!eo4iFe9 zc#u|zAVHrabUGn;Z4`8&fW1gQdR6=kHS33luU&RKya4^6rtgS?0tf;Y67#7u!P z7FJ{l!hQzDIl=PHAjlRZllw16;6xc2xq=I{PUQ)9(h89;`0XW#I4`(DX%+eGa4P|rmjxdk0cNFOh^~IC5?rS*iAm z7c}gG5eeZxM#7dfp>^jxn4T3L zxC|@Og>O<_bB6H92{6qR;%ti-Pk7@PP|gX5DY}v^{GOt*Il@|sy5$P@{)Aqhu-qLw z984?4rGCt#FENUaAxBV}h<;$UOvt24N(b+bDEs2dqixWKU;+W}(9=jJ6187a+b> z_z_hayy@VzQ9y)Jxp0XFprOQ{g1SJ+$& z@;+f~9SHh`k5ih-4PiSaVcZnz)`4z7nDQLB3<_UJpc4Ke;bHpGhlNQFn6F#H!*63Q zZwo)TPJz+Z4z1oTv z4r9?h&DGteMgZGt&dKkoL9ijS@ggspgSshFcdnuh;DrZ zlUzkzyP%qz=vfMDx{D4{zP5+x(iWh2ig<3&$?7Glrz9P3k%o5BJ|dMDxE&M4QzDJ8 zs4fU{{X{L~8HBYygvxCVKrTa5*coa-IN1I{t+)w8#)O{R3{9qKfx1m?a9^1e|lC!&GOL zE&B2;XqY1k{|3{QD@vf)VV-Co9T@XPixxEJMGoZODiEEee`Hi7@}$g=i=s{n85N7@ zUrF1Ph)Tx6x>V#72=X$K+$smRa#5c@2rr5JpF&e1+DRA0UlxTt2fZsrN#t>;5*gh= zaYeL=BFxnyCr2n#Bbt5?D7B(PKftCs(KaDO)Qe0;7||g5f&r99(E~-`*(7qI{}0eC zGCc~_T100kOQu!yR6O~4+eCj*f=RpRyYJEK5VcT%yi*iM3U`TiQyy8jXv-N$x++r8 zU5M92k4HhobbqaDPMO+8;rbHi*D|uSPMnMZx^xrQ>f-Du3bdqCjNq!BzG|a%y{v{%M&2iQ~cbAXuQO4 zQze(xTbv{YHy`oi9OXP0~r0j=U~lwj2+p4$k{?c)EH0i#2F;}iVWo#Hc;N7IGp z0KIOp%MM^(6|c1QU6a7GO0NR5PrR)MDE(s3Yv|n&yFUrcn_}~C&|yGa{U9U^inIIh zTMdbq?*;j=*qIijTjDIr9JnpU71Ma7#A}$Cf>E*8J3zT3K1?3;G4Vdi3K$pP9|8$? z#p&>*+f0aGjKZ8viV+3^nNwPP9 zwg<@)?L3T0k*t`5im8(Gl?UZC<%>jjC7 zjx$9P7Yf2%l>AZ%HpP-_CE#5m@m>u>OC_H4?JkpeVVScjm;Ag1+%8G%sZ69o@;BY8 zaapqRbI7ffye)+?Rg$0RPM#~0^T(k@wdBL6p+$`(_D@Vgt>n!wAgE4ql448sR>`OP zfYTu1bU|RFB$2|RO%howdd-qw(;%=#vTqFZt&-D@pl_2Ho58zX(jJDv4#_sU$f;8j z_c?UxlH5;O5Z#jJDZ}ro-k7a(F-;`ueKza=?z9`_TEox<)&^pw0b zCUKp93 zdjCZ;FKO)p;ezBZ3T!V*z95hJJ;@`q0kV}wtN@{%H2NVJb40p{_OSNSNZNlnNYnXH z+fmA)s|TH=8T9YBoTaG~;CWP9Q4F~*((_b>>MGrH4-(v@F>4MfzU%bLf4mg zO6xv?TrX*8J$QRdHN6n%Bh4cx=rQTk%h1$Wsv|{g-O6qNR&kh=`HC0HK$a*qccVEY zJxniglJs}l$0ti;+Ms-j^aDyNOO(EO z<399yqzhXB>y_rw``ssvpFq3yY0C`h7zXHq#q(5y!GbsI$PX9yF#FsE> z!_p}$J-)Z3v$QL?E&c5aFddQZrSIIRG>~d0?nvLDS7S_?@fc9XrKKAIyDL5L2`rkB zI#z+{r1aZg(3_I3q0_^(wC+#voRR(-4`#Dc9=$Ge((SJSb6z@83zP+^mco{c(vunF z2f8N>B1ev`>^1TZ*~xTtGC3j}d<`nv%bu5kn}f`mvW6UGLVB~DWcgH*;4B;Z1~Yk7 zR$PO|MfUVGrruTNW&xd>>@gy6mzmy#z8vZZF|zixaZP!XYA5#-L)BFj@99kQ6Ta_bH%6$k=I^gh*M=LBOJ9`Ylwv6D?B>V-jLy z2k5{MD+~S#TAY;G`$MNwvTuqYK2FA{2h zohdR&IC`nFQo8&$O=e96%30YorMafdHXC6?hU_ugre(@^#Mz>tq+myHhVaMlQ$(nHLQ<%0Bl6 zU6agPim7at?YIRaT4dgr0c({tU4h&-8UD`*-aDD~CKb_j$Q~f4f2VALGK{)pE{}tv zTlNkWjbD{jrJ%Vc^JIYAb=kJ}LEj_ed<@K98Jq4K?URLiL+yT<2ko?O$hsJ?{-*59 ziy#<~h5v-XLD|d2&}m2(K?ky7SvUD_Z^_nM=@WiiHn0rhM`XTFL++@oS^*JvWDj?N z_n7S9*D!lr_Wiej-IYy|4{<_vYZ6Q+WhcWScS^Rw70tBFDGW?!WSJDzn3Xlq>pv$u zyd28R%LG*Rxgh)VUkonF5^sU$J=tWN72Is)OJbm#ojk}6y(4n*8Yp8g&nSfm2l-JA z=pE%p$l2l~-*gu!&hpoHWALba(;V2i$e%I*<|==00Y8kJJZ=M&@s!_3TLv%rVgnj) z`E~^cedI6EQh!W7O0(uGKVTt0ke_^?4aED)pT8e$0_3a7BY0fCmlE&;Xcc>`_D zqU9-ct#^$4mqU;jE04Od3h&=ZdG0CToRT*f@l(XfWBITtUjExI;3UWcBcRi1d6Evj zM7h&Jpq!DfCZ|-A{AJqcCCjtuE1x2_BPVvM{Dw0OO_R460Xr*yw-wCNP!+yeN-Y11*Z>`+tC>61gLN^GoF-T0+a@enXhpa`{KE zgXbmrZmMIfu*#pO$NI8--!B-gl-nwxRF%B-EdZ~`zo0`@wR{Dw-8J%eS%B5bmr}(} zo%~rB!0P3Tl$_EazwZfH*eHMPAec4DU6LTMSmE&q^$GFRoP`=IbO`5oUYS$t~@rJD51U;P(jH{{Py z($h`(-ycExfZUC|xP$T?KVe3OkU&qY70b>~v9Vqcgax;$AsmZi+u%w4&>-IMolJhvE>e;GT+iXk+N5 z5Osp7x8gtrnEEIzv_Ckecvy|O@Kpqp``1q)rSG1!iac99hJol%$`kFbAPYQ>^_9%~?g`Lr^ANA@YKV z3`H0vL1Zfac7;w^isfIScTO>&2P|6=`#J>XDA*?;K3DPE8PMe^j*J5{UlDr=lFlnO zTtKft;pzuip@KUP)h;ONMlfhCQbf?Qd{J?GBY?#U=M88|6tT1gDOIdsV%EzP{9w#w zxgwBMyQGM{31cc0*_9A~S+O?;gO!T10hm^$F#AG_D~h9Z`ERv?Q;S}mLY)gq^@_iF z;L@P*OMp&|iam70W|LLnuLo+gqDYOVMdA4l=BrgkI`NtO(mnnDgo`OZ|ldUo+0qWZ+1LPRk_CtJvZfpLgVs*Ze=-&2J2nDS3rI(?NR9|F@)xrrR7{>opL zV!8s9x#X)nuKaij#0M&?sQM>J*+fy0U}cLKhK4BJgFtXXITr?_J{C!HfLj;ZDl(N;36R#YgESLmk z(M2eBTDgWUbW2oT=Rn*UWf`SxCMn&gF%!wkoOdBEMOk|cj8l~f3h0ooY@)laGL&CX zC^J*}ml?1urR_Rko>PARBVgIeT~B~njF?!@fnzXMR`~cEvl7!PN1n#hUlS8tunC? zsC7zPx>~GW`3AWO8k9X0lxtMBH$YO8ay^9>nw36{fVC(eT7=wI<$W7~(x$YffNHyP zR|!x$l-;YqtW&w?dkl6dpV>_Rk*{0%UK?z>s@%Q@b8=1DLK&9Vl@HH?qDT24o%(x~ zxdlM!Q#vdI(|%d{y<@tn@Z1MFda|^y$kX|Wf(d8hLk%fATzA=^8?*2r8FNX zx0Sv2uyaJY{UPuiRkp!ZX|=hd+(FOwnDS#PdKg!Fzl7$lQj-OW3FS^YF;6O+a8sYn zlyVQnqo$Sj(}8(Ld4e29vr2cm;A~F$EFGBVl_gY(w4k*22G2$16-r{er~H<}l(wo@ zGeBUcdRhyej;Q{oEMcp?%9buFb5QM~{4GaS<#J4-lj~uIGwrUL5`(FSs{A?7d8%^gVe?X5+J-@IRrw@z@=RV)-3~DG zRYmhKPXVel@-`e_ri%4_q>y3#jV?V4QT;>5$`h(=XJ{X)`q>L8VXCj`gb}XV`#88n zsMyybJyNxT$~>b~@7IDZS`|iFxG}1R1;~q4t^N_Pld4OUCw59@+X#7as_$v7iC0aN zyD34XRlt)81$in|Z_+pSvZ|5(L3E{RcO+m{DmQ=dyrN=}52{)< zM>TgfsvUK7BTcR90dhjssrYX|e7)*rx(1~|HTy3nu~C)$D^zPzwUGDY zTS3sO3V9VjQ=3X}2X5`Ezl%WEp~|5(q*Ik&2=Xq~@dY&9s;Vx)uBs*n0lTJhxdnpj zDyxY$^*t(`2}<>)s&A~|J*_%Tr_&kLPqZtURXtD!iaAvyg(>G%K6H3mP@TR8*rJL#h2A~YjtgjP z)&IVV-@s1o@i{P$s55_sGWP1~kHOPHy_tM2j_PghP}E87_&scKR)7982#%@;qM(I~ zRc&hvpsRXY0eHKqKb!&^cXh}D8V~i}co^fUzDr&xFZFkHF7#I0ZbQ#Uy>SvK$JB9; zLWHk6bQ_HEQ>zvs*I(`QEMNiZ_vxQR9alU2j#&#-?=?f;Aa$Vxyy%A|`dKGXM5>n#10_nmRSd#twXYKuN^29z`Em#iruOj7^7 z8*Gx*cj#8F6m>E^!KvyWP54F9)NZsRJ*yt6fEMZMAJQQrL;Z9znoRX0bbiiKH_(p% zoVxKgL}aV|D9<`ao%{gA=c=`Ou+CH8qi|oo`juKpIIliJXP^T0W2-6SqfmXuH?o*v z4WUB+V)d`TgP=scYz73S>SH^gV3|6byxZk!k6G}%r0$|!P=)#}D&)Sb{=@{7O7%NY z7_3s)(%$}xy66*dsaCW1qgSJTohkup)#2gz3F_2)h5)NqmwyN04eGs=?cb=Lv{IC* zNv*Afq-OOMdl0s%H)g=jcJ)J4x6+~h^#w@kRIh#?Y`WCBH-Oo#{^T9#bXDDT6U{Ys zGDVoLtLMK&)1#iGMAlxlPz^49YNtQJrC*&ZMsq{GPnJvz_Mi8Sp-$*-9zg_8Qk`&~wnNSO-HLHGfb@#7Wcm zJuGzA*ioY5QO&oMnCYU4r*EjMW{@^!Zkp@Q0Oqc_Yk}GxnnCP%tTvt+C))FRX_9Dt z^wwO>L*t{Frxf2~niCH~lCLJb7Yh4n?5U8>UsFU$lmVL09s<+jnvxSB2-N)Z2Vg;( zZz$jvtf{B(M~G$%AFvaemwyC#s3v6yg2FW8w4V*v*ag5AYlOyU1N4s6`0@aZ(tJnx z)zO-BN^pzO9HPx`tmbh#`<>M6_!Byv(%8r`-Eo?Ea(l&Vp86TQ6ErTg)jqBHhCY9Z z8qI3(JfrEfhlWX-k5@xdvS#@?@J!K+6+uv{=71l_(|nW5Sk^MCl*rVy#R4r$bMY{Q zoztXKoGM%MHU0OJJk5_cL6om~Z3!5j*XYT?U!ZYiLrS40suxOL(ELglI}~ZEDcSd; zX3Y+;FV;LlZqgD>`1>Fz)fA8ixJ*;o0A}Ty+Hu%%NpsUm$?FxG0NS!%)|8)sz)DT= z2FzTQ=9zBbT+uv5{<~_;r=7s8(KvGftJSccDY`zdoqnsi}DY+`2R$UWKG? z%?tV9c2(m_RkPPLf6|WXx+ZKJEbP%_H=)<7DWk1lpQgMC1pS(kQ8YI+8>(RMO^qw1 zKn!TUrWo>|h9d;#kmi9WAa7W6=nIhF(l8&Sn!ekb;qx$bL?e#`&Zy=OO18hFIU5IM z#x(ZyVvKA4UW74sHF*-~J)wDT3?e2q_%A(p%{1=h@|xD{U_$(ihF1!dSxssKB+Y4l zpxytx<|YGLEND)C1e8V1HGRL*w z?SL_X+M8686r|<9hbCBipDmgYtx61TVcNoK2n^TSQtUZGdy4jjk=kB5QbuWiXn@>k z?XVMiG1{*g=*4Qo>ES;4qV_3wh&ZK9Pr)R{X=|wVDqef=a{v>x=2xM`Y3*6cqfFF3 z5CDbGXxoQjQE(6S-IT&~R=ZpU@^tO*6pPK!{_`zV%hU?aIDF&=zVx zqf^cWZRj2l6lpn>$A3|Kh90Y8t)KN3FfGx3y$9V=?QJUDDbq^GK~%2w835rW?e`Ri zuh9Pa2Dn|;PLLO{Qu`65C01!~Z3nk2+RR1}RBOWnU|@~bma=zAQLooV zQoVPB_AmO9HEP`{INzkztfNm!vvwujnb)Fq+KFDPcK?Hz*f#AaAnJ5MM7Ztbl%0lTWT;?Qk#O)EJFTdr$g=!R-N+T19J@71c(A-7K(@&$VR zT0inV-O%1w4h?T=Yoh2i8ql)I4L+##(xDmB{!SmgVQutUNV=t+Cco}&Z7O;EMzoL6 zL4H)bza5x&w1Yz!9MdM!7j#_97{uUR?PC;3oY1yVb@QZl>y!9lrnCp?i$AU1a}KO$ zw43`eIIG=NuoAD)oc5715YB65^vPe)>b8TMt?sBjaO`x#RWRm=F62X4Xs=WLh@OLP zM-pI;x@((2;G}!=KJa$dmC;t}sIHy@F)lhcsy=en4biUDO_%=$2;6m>=_}`<8w~{) zPhH;*z#jF|9im6TTeqD4i@A?ZeA+j%YMr&4zB>N84S&Mk09`8`<&W#MLBI^uHLn6@ zkd7h8ZxF28aTmNpbWL%v_k>P#5!#39_Lu<+(|r*M5#hRz4uBv+C;k?&NL}jp&^Jow zMghTSo#s6ViqU;T`~6s5E9HBh)QPOM;C4!vO=$pex@U@k6R%7A9_lCPHe3Vjv<~In zc(-)RUW14;y7Ls~OVa)FD^QYkj0+H$qAQ?+gH#=xw(V)UblU8l)%jDga=Nao4dfZR zm6U;-sf%-i5m`F@di2ie9@t8&d$w-)G}z?mdgzvxTwQe(DDrfjZ4jTYJLHAI^ST=! zqF12%=Na@0b^6ype?fPaR@oxm@>&dD)GZyydjemfqR5$V_P|9?A`ka^R zZc~QBCEd0Xm|LN1*+>zT%euF=f_J6vG5YXT>E0-VX;*X!l=)JvbA1>J*XRz0gIldG zYAfjLbPvhFtzNfVggOOB(A7|}%AjtHd}TwrL*y|T);UyR@Rn|m5p=h8*TP}hh_34b zrfXE!z`&sOj;Za&_l27SuXib^cy%Y_( zGrA%=3C-#%m!mhQYoe3tye@_kD;9Jjs#{ppy)*@$_jE6kr^i;mZvt~+r(f^{!4W-c zF9z+c`k(1=>7e%+0XIke)?1)=(&v)%z*)ci6vQ9Z571%QMbD*m%2khl;*D2LpS}yf zh`avdouKp3FZmZRPyJRsU|#xWdJnwyshOg;7|0elE0`)J_kuOLur+W~B^(^}Egy>@^2ysGRN@)zC`U8GYJ4_#e z^Oa4w{yX{*MCdv1;fIOTFMfeul>QGB$fNbno54Cpzx@U9jMe{5b=@cRck&?Uls?f) zIRkNe*;b z-?kD2Y5I_-06VK^kfT3czl5?OGxQ=I=rZ;5YG|LOpDTj+b9zr&CbRY8&nS~UM}Myv zO|JenC1K?0f1&SfzW&9}L4RH!M#(V+dKP(S3iXCUXm~-tw+p>Xdi!Q*U!iZ<1T8M> zUw#x^s`cpWxAgagLGEq+nPpIB zME?hU21oTi6y?98HxidIz3cP9ysN+P5(G`?oz7wMCiU;yQmWdNKJ#(#p4KbK??0>W z+YN4W`YW5jZC=lK5!@E^oeO9d^(_X_-_tLN25(!#Vmb(p7}nCdY;TzP&vj>5<_Vai z;U6sqoeTjKeAdODBsa?NAl>U1ZFsH^JYx)NXb&E1Xd(y9DZ{wc1EX<< zia(%5yy2y6@J=vXq7P_hj#?T6ZVhKHS?TE5|>DQFTk1A$%$5%MJbH;ksW zgN=s%QP4FRl9QlCvmt9Gc(xcWPJph}&_cVFHp9LHP`lHxb)Fu}F2nN-=+|m?G?PxQrRns90;<5OD*Of7j4Kc@t9xv4L)do;H-wL4U^Z@gFdI*03ms zh&e;#Z_s<*&`fs)IN<*YV$jj(^Bb5t8QJ7Ea5i@LLhe!HFkNlxVyq)4u&Yr^J3cpK z0i9#qjVr$b7Z2m~QjmKZyJ(g5G8T}#%iH)GCCXWSj4NqJbIka$1VCS7x)&zV&uB+U z!v4m&8o&aKD{C-q$Blnel6|1DDHtMxj2-PD2sYkNC?Q5M-4k=dcs&t=p~l=;m=tCd z(EcLa$hF5W5@A%w!um+#COR8O8DCF=_-Lzf?FMsf-+zx8~=I{Q<`GTqB!AM<1_z2(R5>OJ&edO zK0!X+Oyix$p=g#-Px0e(##cw6MYhpu8v<@Q#^jv<<{C@rCCM{>)dKo_8jbC2GlwL62rSIlNqlRu+C^ibHxU|IR@&o8fjqwx%Dl=9+1z5Q;f(q3y z8*QoJuF{yD1fEsKNm}Hu811c}1E<>f69*JE#!L!h)EcX0(5=q6i*}XuMn4;fZ!l)k zbJ1u_^+VHSe3tGSY&L$xL9fMFvS&jV8!cF$jUdCOxGygqTXHyzzvo zfg-1&rhRlLQJ86kJD7%>5~?v6VJfH9D$=yN3^N*K`l1iLXj9~?=$$m}+6W1!OxqvD zV4UfHlsFM@DyXIFJQGY0P)^}#lYt!DNv3sgL2j~XY%OLc#k6b&gQ=$6a_F6A%8Y_d zXHAc3V0Na-fgA@}rkqcq#W|DLWr)Z&bx`S5j;W>?yw@W4&Eie_P75yN*Y+6m;$x73TSD;~)NpKmkE2j2x zh_5ysTm)T>>G*j_sx`g0A8OZ`JR{K5n?}RXG?@0#_r1|HNcBxkrWh-1X*Ru071u2$ zVGkr&TTKiq3urSvK_vt2rk*<(?J#XU3DizgD>*B>Oo_YEbemQ_1P!m6&d_>(&4hnK zh^N~0GL;+km^M(VU9TyJe&#;Y5-;%VH+}Lyz;2jkenoTBbS4hu1Ey9=Wf?R@Wn(Ib ztfqZb_C9PfY5=@tN_iGG-8S{Ef=wf)b>u=HHOc4=zhmm%3b|vZUL{b*O;1dK?yl)= zS{ElwNlp+yY1%_>qA64TGUz*PdXG|~W=sy`M42_+q=$6Q^c%%@=1o6Pp2&j9+VeWB zSTx=H1x)XmUXo+f*8KGn(A$}J>Op_RT*3o|y*ZEEp$_JO3xGMA7pXAU$s9%(OFEku zC^7h`xvvY2i#d*b!mef}WxTqX*WL%#?&h&(2=XvL+6}cm&0)Jh=ViWSU5Qa|b4NG` zea-k6%Xl5k9{XUZzd4u=p@HTbyTL8U+(fx!!RG6FG$Cg8LD+l3%-H~CLd~0(f?Jq* zOoAy5H*fI+EW&)@ThK+Czy1e`MwwT{foHUN?IGwCV=kgw1!B$j>8+qRY2NiBP*0gl z|3MRH_T&RK-dsa#QG$6rT~cty%%`AulKG8m5T9($=mnb;^P7XvH`V+;g;~?g-%-WF zS+kmn!E|#A{qwvGGlz}`nPy!lp8PDcV+SzLnG@dvEZgj4Lyn6abNv;}Nv?VQB>?lx z?X;QAHygYlu+W@IIiDBIjxL=(4p|bL16>Xft1m z#yqu~r|HAqVcxs~5<1Q6zrtXbS$qUsy3PMknzQw)`S1N`ubKb72=Uj=c@j|cm>=pu zuh+bmva{VQV?g<%yEajJLc!;Ssk;Q(?5l7ww50#h1$+?UpJ=Y zh{c(TDeNsL-^WAhV5!Hf+c;W&p~PY*iBQgCH-{#`vg8y7k6ZS)LZ?8>i`M5MH^>r1H?#&@PEkTch~;m}3q4^e{t|3LE!lL( zRG6iD2$I4rUWpJNVJY+ln@G#SXV64hwrs(yM_U}|ycc89Jq+?#OScPpCoTSzwtLFb z>Y6!Dg)sG1?cl5Tw&gr_YZ(4HyLa-BRaXDlBNpqFI%id0Lsymt-)Q!Jf@ z&?42+Pbuzc;088lEtef3KHXyU4Zg~^ZlE;bYzu>OCGspzG!^+4_LsmoZ{d9c&IOjO zkE2&;sdfO$1&hlZgcn&}76J33MNg?d#g>*vm|0@EAi!*uTD}y3XPKpoR_=1kR0YT{ zS%UL0SYi3a8H1NC&(Z}nm6pPlF929&dBS(&HNJIS8ce9O)KF1ny+uuhv<;S;NJwb3 z{3QeHCX0wFN}Db3ZH8tomLE=lXRF1HD!MFG%XN!*1LXBse5^g7@3kB>fuhfnO^$|sOE=YG+_0Rh1K~}} z=6+~6VDVi5#h@i87lT8Vz(_R1mdCfivRjsAcpNu|BjoaM8Zq0GF+d;@Y9 zEW0z%TeKvffWUi}8VZQot{gViWVGMA3cL9v0wil1*ja>e?jM1$MqIUj&NF^ zMh6Dx^&RU0JG%aDiiNwZU)xT(KCbH@BCo&OdKG2=xvyVvgE1cK>*B!8bNw{c3V5y8 zm!k1rKhp{}KI@eMXpXISryS}3b9CMDIbU6zwpv=FEvkwRx^$>#@4fd!r&`@ctBP*r z$wCrIWN%4CWRWQ%Ln4U;A+kgyArcux78xWY;r*WX`R9J_y=Q#S{jGb?IrlyR3>Qj_ z4`h5nZq6WvJ58K|8I7l)B82hR2e3Dkp`{GUFve^Os)aKS#Gr^^Y{W^2jwz9h75_r- zLB{K}88eE}K%U=dMk}orV;Hk@!FY)ACuQ2jG9Hni<1piu2G|tG_}d1CBaG(xkQUEK zrYJ)K!_){&iHsEbXeTkYQ1*8+!~1KXILhGU;8Gl8Y~KngDGVQS;;~N+7l`^7vV5nkT)dNejMZ2w@Kt}$Mw6rSsh z;6vzZW_%EYz8j3iFX2+OF!s>1+{&2l0+}}%YFe_kG1fdyFVJ?z0t)bVFm|ki>`ul9 zUxMZq!<%l1+l*J})Pyd^q6NTohan1rrf$Z6vvJS#Fgzn5w3l)4Ej0EqhUsCWSi#u=3q&X{0)M%VK(Bkn`g zo-jh_|IVD4sr24-X7VG!;KE#?fhn%c{L@grk2$acTHTrJ=RmXvGxI(QPv$yG8Q#xq zrd6~Tv)9oNesAWVw5i93S>Ol54lrMT2RMD1%`0KMA2Z=!VDe`c(n0tEOcy#hHjp_s zA1H#DZ%u$9nE7oQgoZG)CILk#GnxmZBbdqL*N9|p{0fZ+nRixzB#K!<*%#5w8%8w7 zFuVVyWWG2iha!$gnCs6%T0FClCKt)f1+@S1D6@%PTF028Pf$x|1};RA!Thfq>NA=3 zHz72eIlC72o@7pc2kbe_5)Nvom=oy`UBI05F&Yb*G2f%{G*eCaenre!N~$boPM%5U zT$eDnm!b0v^DgamDP=yW!XTD09deMKWg6x|;W_4;O&~eXEO-yrmou#;Fzo{K<+mZ` zBJ&141r^LUdqHxEnJz|SC9|dk16;)%rx0Z|^9*@hYnWmR($zBmUIm8BOetdijwx4} z{q$E$4a|jf?Hidd&{wjFsXB_{8ndn(*WfyHGWigindvmMy1^{{47CK`ya zprdp~m{(6i;VAQ0J}4hDn>#TikC^$i%k?ocoPsz{n7dL?b7C>ifW+CsdVUqqxUhz4 z66VTU=?pP$tPPQ9+{5~nmPC75adek?vPxRPv7a@Y4pQ)9dC^$-vKp=6^J5JOLJSUBsawIGRL9jCOXL#%+aT{9gsC=(%$74-tt zB(P!>C=ywpEQWbWEU#@~KE@iPy(KBEP#S?$mVl-bX{-Rsn$Bcp(P3c6S=%T)n#GEw zh1&_%*iV3$%bK-DV=cA8c6|G$G{g^{bSn6<(|OP?~kD)%bNZP zRGee^KabjZ*1SkqQqKBbhT;ON>LQG-WOd?S&!$wdnrTX1&3cN0%5|)cOTc@D6+`os zdX^|0MqFjxrF5(Y*6ZHjYh)EuRO=SYK*u!QW)(dGLl?_#bHMsLEHxc`*Uefo6Er=n z9P%OcvdpwR>0|Anbwxj`g7R zH{973BADdCo;C!To@^HN?PqV40Gbzj4r9`!fa>n&9WqMJIlz8QPqr`nEpoy6vHhpP zHh;D>1p)%tPJf~n$ljQbS`a(@Ilu^JcUPbm!Y+afVoE5REr!N0b{)M{!`WkBqZYyb zh+>hEY#ZeX9Ay9f1bk6!pOqMlXm$^|N@Cat9Y3Oah~1VA(pdI6TIU~TcbtRlIQAFx zEFNLMya2%C**{l7Qv&;FI`Ag4H&K#u5<7(l_GI?=0U$|X7ygPOmA$qLn$p6MGltAC4*4*ac^S21jR8R&z5u{|*N62Ky{+m1$vD{fz-?W#6V$ zgq!RiCQ!7opQVhdcJ{paxCR~Ub-}20viX7FyTyKsGW~C}*UW&hF1F)G6nEI?DI=kq z?O6+GJ?#7B`s-yoiGjk=$NrmQUj6KH4La|#w~*`c9{Uc>90u40lp!$4j*f=VA-1~& zRt&Re-h;IJ>;Q7;JzzKd3G^fEk0`rxlwH37uphG5Q^v?6_AyF&A7jghp=q4`InCcE z*w(G6J!ZSSggfDhgWcH$g-)FNe}U1NbI=ZKE}ZY^d{bA>_w+Jyo6h34^I9Q*r#=FQQqfM{RN)DNJ@kJEb) zSHz#QmhQ&@j$`ph;1A^dIT2c!*V#{SuiP= z<1V6ia2`ibM0 za14~0Q_opeh`y_w{gh$Wz{zug`bLgm4~izv#yz-KuW{_;2)xemPQf@ebEb$WzYv+6`frT9$D+LugIbjqmzQy^I4j8=6+4}~d zb#cyr3ov&$U1uSsnBn&J&{ z{?LPFnA4mHi1#_W=uE%|oY$vA_6TQ|1z<)wH|gZ%hn)W??dB2Z-98j!oOa5&9OwK? z&fp1-R}E^9Ie*bx;0dS36H=VG`VU})Gk5cJFt~7?&w=l!9>XUoN1D;LfBx#z^i+GDhYg_dSXYMsXJ|!l*@a=kig+aM#cr>kv2PGT39e zpOvCG%#Eh4NpW2FohXiQm(h$Sp4%}WLz2M#ll%>dTp!2(XItDoN?4K1z3hd~quhyO zu;Lgun$m?+xL&joGL_p;STMpF;E{?%*--RdP?}(NUFE+^;E}q?%iOA7W~_*C`*nmb)+v@Go;2 zK0sK&C;Ixh@pSxiKevM%F?YEMzTmsZwN%5R0d5K9 z)eUk*K_D68Zel^fFt=_Kz~AT2bOy--?$&zX9O1t5FJz8#PrHERAvb!F8DbuBPb~+{ z823e2)E;vgY;->1E=mjV8=mb*p_~U-p34vDbK~ut4E{a5T|pSay}Wg=!p?oX{74{l z=Y>)n%!4&jIP!#db z(`g#TJP-Psl<<6ffawD71Co7_=Qb6vD|mSpsJO)2eGgZwl9wM0^;Nu{F_2XACZ316 zH9Vh9bkuPzZ)*`cFZ05xpuUdxI<2bed7smDy2`8E4-^eNMJGradHcvU(ZrK~3X*HQ z;bf3p=e14+Ni#3<6&TUNJF39Qw(>d-Lj6siN(6;%ypP`oNjoni98x-X8Ez;#c|F-^ zbll>#dx7RQFMtk3>f-HgM{$S8od-?byzA81!@GA6LVJ0yQ?#{@H%!mLJzjG!NCtS* zh0r_5V{1_i@v>M%B$typ~J4)+;hddrF-yb=6Jrr#n zdGSNmK#DhiD$SUD_zsIZKpo%<|9=t$ zpHFj3KmHloIqJ_}^B6?{|CcVH2;@I-#&`wsJ#F9*=6Ae;S_ppyqE$8o{FY^WdL2?LP_Eg1JQdGK{|HcrksNp|8fLblT^(GKr=08Qg;W~cgB0#&s zZ`^~%dj8-?kaCqj!o}b>@aK@1r;$G!J|D-FCjQ3@QN70BOD=%xd~F8?xS4;OR(d!1 zE)l4;@VjY&+R6{0EZLj*V|X4WPI9|UjF^9fZfMGLdm_3ett|MIPUV7eE>1{_@Ye69^g-!57I$?_72pB z_{O8P#7&39Ytr1U>AK`4+%b}M>SR;qT?733t}m{ z94B}v$FLm{eAECi@dD#hs3izqqs4Zj;N*5lNfJCqkDr|T zCTOXXDtLj`3Tc9G9TA{O7i>Qbjtl|k6_92MW>OCLal!tjAk7k(=Am{%@Q9-D*@C6- zqIOd7_lKa&5pXAiFISL2yCw1j47#oJ1@5#0KPC9V6C?$Ke-_|s7YhEQC+4)^o3%h# zBv8_`RV?`No&%&Mf>D~^pAm$SC$&`YEV*XN1m;_ieO^#DjsYqcxRD>?g5cqI=({NR ztO|`4f;FGf!y(w@hRakXSQHH@)q)7hDy$KNKLt#+f=fLhxh#0O4`8kc7Hj~Rdck(& zz)iU-Nb92YQ-fe40W^(*8amSbnjrlnptvsh{soXW3#uv0;)Wof_9?aq%4&h4RWSS~ zRNNGtr=*lNK@gqe)Gp{I??8uO5}jn!DQIA!xFr~*HQjB&%bsB95)_g8JA&qTDC!n; z!jbEk(j({~H&w47^(0#R1UlO7+%NDA1mj)7cn=uw2_}64k^wq=Ne;~*wU%`mrs1s_Vg26f%`cN=PtBXg177Bxp3Fc7axL^^bAUP%k z+h?GBENIydz|KM+TBNuL8Ph@PDl}3qx0~>M7)bUAM`^0KSGaN}NZf@xX-e!NJQokV zp2CIXBHu4u@PGH5@O|1->m!`L3U}E7;or1q_7zU>fZk8|E*%}z> zgztU?nqXna6EKDdPgFyFsPHMu$qW;+^gt0VoKKOd2;qV#D2x;u==8#a!mQ75(W8V{ z$cSj6<`oEy5#HSf>kkQ+)1)OQJeO9E;~gvTrp9WP|AqT_}Vgh@0h zO%(n|k4%zq1r2bra3(oEj|x8~$I>z37hbqNDMDL-;>jGx7a4$?A)H6?(oEq}a-ba- zwj`s-5*CC5=LzA*y&UQIfM&@m-RqaC^Xjs z%4y-cHee_guJl7uB5a^1KeP?QUsX?!mT zhvk5KQOIgQ<0avH^f9Xxepn91D&hAu#j6%hp+~w#_~3UKQ7c^EkG{*oFpBTi30H)m zc12iY0>XM>6fG043Mb(=r9t=(ANm@Fs%s9kHVNCvPjgK;_e%)9F5E)iyk_CNTYz>$ z==u)EqD7cMn`v5wRkSbZrtlJ-J=!KL=>}!H&_QW#9l|}74BRQ4w+`0d5?zS}|( zZLjDOesl~9?+6FU{m?B;qb#`|;j^z!{uK|5Flh#4_X&50VVwJgFVTg(D`b-o=bmtq z1+s^PJLyo%Vc}*9v)vaueFqc|gbB3h91-pmpf)P3rnHlXLTMcM#)K~z0Bu~DM*Au! zgsUje<*{&Gh1}gdw1X(KL>D%K zGF$Ze%@Dt*CeL)-S2`uyN)wqv(Yq8K9ul5$NngAJh9Ma4nT+bo(-j^`U9C(4m+5mg-qd#h+B1+Usf z>lf2}vt8u+JZL&Z&(J`1iUP<7b4#@O9}LtT(e7akLbs^+d(?VFMXN#CD>^#~lzpOg z?*c`?X#EUayt|^2QrI#e621lYK~dNe;2jeEOs}qC(JER)-WQ!5K;r|^g;ubSi0(Gh zhNOq0Got|fNc7<>$Q~0tdJQz=qGhW=Ga*X82BeQgbt|C$iD){-&78#JDv&sfUyp=r z7x8MEQ@V;jqU5AKVix%s_lienLFPX3$uj757atf!qlfs+r-0@u9-zSGe(`!AN{sLp zub+S>A90%ptT-S(xec0p#m@A8^b?m+hO)o-RU5`BKs-X5?}NnA6wD76tLXp0Ld3B@ z;);ff-}M4Xn0Wp3&>Jq^)(eCY;tUF%9~9TpIRa5)JqPNe#jCu*7bDgzfiTA*aV8}^ z#))^n2lYq9cvs^)Ag-a!AqiqxE@%?PTed@ClK47(wUfnvW}`SJZp#Eiiue!u?xc#> z&^jhf-1{9U)5W!4KuU)Aoenf+iVG;zpC$ID5XK4dQ}o@)7W>kN>ZC)g?8ji_hy_2P z$Q8$pfF@7;GaI#h@mF4`of7x(0lz@}LMfybieII*ev#Pt9H148(_V(O67jmDkak9F zn*g*@@rSvtLq)z<)kI;KX+_3`e_2T70814q~%XAAg zihm_vag+FW^5R_+%NkL;F8+}m<}KnnTA{Uy>(@irO|i`J6gb+%3y%VDyZCu}Mmxk4 zY8cZg9v_43+u{lGE_aDtCXAU!&>Ypg571ghS#+nyU@6!<0DCHjN}~)k<4*{!cd8=1x2{TmJNmo$uk?F zDN>?-1tbS0(+0p7C0P{(TcRaS^Ju*nBe``SG>0TJDOedR38{tN!;)#6P{c`cC=?Md zxqk??1c_b%{zOR)4}Mq{RAJEaSqkc8A>43*iEib<%Rlvrr`nIqY@AJTFqbN+#}JjsI%FeYDet{6pu z%B6a&bTme+&fg!K4w)N-WG2I$R|ZY)EQC(SwsTk@qBX-B~+=_B$*7Dy*T zieA8EavJ$UN~D!>U_T=b)`PuNnlK+EWzue%dYqN=V^BLU)!#&|Tsll&-3wAHMI|ew z%jjcvNxFtyU6s;#lW~=*q^D?wQ!VAue4VHSrQ@`}tWLUxq61f?HE%#sy)?u@ zvy7|K1%=>fkiJCeB8^hfj{wsojrkU}>(YU{P|+-%LU+{->3j;(w@BYtp=gyhP^Q97 zY4;9D>ySnz!Q4*iZyQm&CEffvz}%L8OJ2t=>F-Ub-I1nVLSMI3PN_saQdT&n-SEE=K%t4 z^OyxqZn7vIQ0$RO=tzRSvQ^}7aF=bY2fv5Rmx(@4nG1z`_sd?qgOT-;)l$lqx6GMl zKE5(Jef0fgW8@6*m*vnlodDUD5eN&E>E?kUNH&MOEWxt54U;E*G9^S-N8j*J*~=WD z2$SV*f|zjG^nFkfAxooUEFxvjlwf*L_R=>YPi9Ph&5=|AnpoKwO?wZ^R#VnToa`a_ zniFJS<)cWH_0qc_NwzNuLX%}(ltXw_wqP!-I3|nx0}Ls$c{C$PmBqgZ6=|{zT5zSy zcG1!!LpGJZ{h6}&Da>|U_7tVmWyzEuf$xMY!VwCZY?)pJ#*?zXXV97>%ah=e|2_<7s)Pt3!%lb+yD$si7b&0I5;D#Pefy>Y+waM zm&u&St9(}076KIKWbe=-@Vu;(4fb*w{`3LW3$jlrx$L5BWejQ+vcS3Eza+aGhQ>;n zj~hsed{H#ZeprsHc0=}y6?j`@KhQh=rp!zS9JR?-(Ymc&<~0|M9kQ9^b?lVIe~jXm zY*zvLZp$V+zC~x3%x@E<-I3kA4-30xD-9T@9$D602 zlw&fNB@T3s%Q!UinvkuK!!=cr4^cPs2igdGZ-_2FPcv1(-m&54{_L-2aJ(&F&&i=CGYtcq|x%*6y}bRze|T|9Fm8Bgd$eH`(404ERQLH`El~^XcUgf zccwu~y!sa ziy~7V8wD}P<)ZfhCQDxa6G%?V{g%O)9JyN`id^~qR*>Y$LnsM0Up`_-<0-j30Wu5Z zz4Y=dl<&+%aa!J|g1#box}yf;RxDpZ2fLn;CsA5nsr<+daFog0_<(;_-m1U|os%a} z9_M-ak7vT&@f9_4Q!5C|^nEl~%}W{2=s_JnRe@s^sl#uvg0u?FXhB`7FwJ ztd+OX1o^W3Q_Ae9lON3tad{boAPNLWgZw#~t~bg*dJaOb$$2JlT$eAojmBpAgP(xu zhWw3oXljuw=+w(r`LW|5xheO43DDZ)N%W;`mvg6KfIH-y_QIr2`7897r;n1yWaq>Ma0vQ#_#LygiD0?GULx!2d} z6ktaw>?r^ftq7*sPK?5bF4`f5%>>F=MKnDehZQ&GgXD;!ZyZwM6|R4xFF~=G1JQ|! zLzwD0rX(qzrYUZ+!txzjk1C!NLB%me)iA6`QCz3ES*qeaEZV1}DQseh$x!@I3Za>b z=K{cYT;WC^uq=i6ACR0-xDCOUY(+RdeNl&5%y&UMIFY75bO)mIvf>gO{B?>~=^)a2MGVas?o1)PPL(;AYrTIdKBAJe|?^HPE-T=)l zMJnwgx~=$vGJd-h;-?|>j$&aAE_1hH0R;hi6b~ro(yL&958VBV^knqiRrG!jP4^U^ zk^6E$@lHR+Vo;%N0{f66@?BsWR*d}tz4sN#^(Y=F{`nj1BZ@TI1~#e~a|8hJn4+%* zt>cO=7jR4{UM@oCV@2B6ko`n4i}t)bDeEci-C4Q7ghm%7i^Aou%CEz~=cZgs5sf{{ z_TQmmpYk^CS8`YWNI_B$<#!Zw@lLdt&SYfRLaE|_C?n{&phjg>2=q27hse!*O_@t>=4R#EG}LY=Ied_`C>!WYc~kl4O~`Ij9=V8G zyYfOQiVkJg0?6!Co~KB0m$JwThC2@BGe&^wR`xs(X+28SJQTgk7@lU3i^g%~qj9i5R`$`9;EB?)ks?4&D$!zG183FkX3)5(rg2cXsV)Vh*rWQ8X0v-$ zb1OmOu8Jqel!t1Vj-d8b#k>sD_Nx}oN8zPWVQ{V!^VR7vjvVXUh74vNF7lW&19PPKO@M)ZhEHw6O}ubLK*z64cPJ@}GT zIpmQ_R#j0R_)*nR6vdT}scN=EZ;C239IdG;v%ZDw<0>8H z#%HPW+rW21b&R|d*(!|%*5{~p(m8CoDkoYP~P zt0GFF_k!xfClGp3#p^|1r7C|2>Z?@m($HS;>#AjRa>fl+bqN|2+En~4sI{xS)&XyaDt`&2+){m*j@oS%KNt$TRATzl-BHbz0B^Ty z_#VJGdQ_Dju(waOj=UTFs!p0!-c{M2L2*yj^9A|_RN2phaZuG;2%Cmg&9o=$zUtWy z@IO$!`Z2(asMOz~Z&W3o0ltT-kISHbOcnhXig8u@i)frsebE6hk5!#KFg#JQHeo28 z9BSvUpx0GBZ9b&AsUv9g_Nc$-LGNC5D|v7CsaNg=zq|VBrBLCi*3oe#`_-CX!SAKE z&{xSvy*3Ga2h_jL1&Ocv8;T~1JiBi(1K>EM{_kfLht-QH_#UUOX-4gc zdNr-p64Y}V!I!9hpIrS(>X#`9cud_--pCZSK>#qR>O3dZ($%x3Ls5oW;Gq94%2cbr zg8Jj?#x!WkLMI?*s|A#Sa8m89L}QM+oi+jFsuM*h^3;j>V8~a$MsL(p>ev6qSQMxi z4MS*|diiXqKdWw{x%4@;iO#e-uNKlKta7z86U7B}#TFD7)gLB0ps7NAm@=_1srS_Y zex=&?5g=BnH_U+0YV|%^2-T?f{fEX{b=q!FURJk%1^znq+-b1zikeF?r+W35iD18~ z{_I<*Z%}Wg<$9w!G6W1w>T9iFzozbV!l+$WzZQeWX0?t*k)Rvux9GWVQEzkuW2^f3 zH^6jLZK0h7ZE9&FWVfq-C*Np?`s0saeW&^!<>TE_`_hRWx79!EFiu_Sr*%+xN9{r{ zzi##0r3&_|3*SZGUG-C`6bZVg-fusR_GjQ7>EKZlqH>h1JV98s^PH1<*TvU33XP@PYE$seij6rpiU-Aq?Fx=H1W`vh$6}FFF{9(XmIfpW=yoHACcv+ox#@ z16X%WbudJDXv%(s7EjIBly$UUbGjOZmuBZ(P;TqqyKoOyN&;puB%?P>q z4{EX~A1g|;{vY&3YkVkF8KW6YLhX>oXAGKRHF=a9eOME}0}OGRPkzO49MNq24z+mA zn;sZ|1kGD>z>ugpz6?c@<~N!LBx{!V(@l6(GgJqgj%iL)Xf{Rj)JaH7)$F48Uz+BX zzkxelGhGM08JhXm(3q)_(ldKpvx_pyvoswSA@qc1cmjH}HRT6Da#Hj93t-66^%$%n=xfL4nHMgEc?Ud%?|NmjCKyxD#C<-+n;HH>zT2o1yhd;ywQ^1R2uAIK=5<>4U(_h+ zy<4IAm)3=sG!?Y;tJEl}=sy{%G({DFSglE;S5}RtfEG%%ns3R%%bMkMFjSpp?JU@I zMe|P|gw|{RK8M@mswRZenHw}aXopdw#<~(hn>4K@Ai1Xb=UtFo*VH$n)~tDx-t0Ft z!<2B)q6wy4*j7#AJV0~Y)O)dKsdT3I9nE)# zp`u&!#UE(w(QKnhW3R?{GVu0k-07>+uUS=rzPp-?ZkTjWGbJ3g0nOPmun%gY-JoGe z^XCjO3~SPU2g!Yh=1bZG@<6k+5TqlT0m}6s)wH|{Ob<2Boks1E=DUw!{g|dO6}53q zcrz#`G>hmovB#Q9HS|8wJn}%{q}{Or!ko3Ahr>`8?c3x7b=78dgU?M{`~hx{J=&RF z=-aD};lY-DTE{R4Rd?+pGTTG@)f5z-+UewP->=P)VSv4~ciK_&)`rpa$4Bc$$^8ek zPG7+oU+q=Gxpu z?M-q*9MN{yV=Uvfztg%hL7T+@d!lw{G#Zn%Oj=ANYv24Hd@0&R6mLz{&Wi)4H0=+? zln#)t{fS{0Hu&>$NMi(0f%oZ3i?pXt%flTBCOCeW+;CJ`Ij3*R+KPf$6%o;wkVoYq!uR z@P>9b-6bvB-w1E3Ho6)NH?>B}y=v3$q}@2}+PA%dqC?wHufk4kXbJQ=ZfWm!z_i=i z;h(|ZrQKKzg?F^SFi>=B7m|;wM{5fLX|J|E3ex(t)5s^^udVzQe0Q}=AE5D`_8a=l z4QPXUp=nS%V;cH~v>E=O9M&G_2B!Pk_FVKm(Ei~B$`S3%YmhnW(BA$Xoe#A^G`oJJ zolM`=G3~`O7`<`rh!gmqXrK8FjZQkpGBi5te0PJ=MHfmlXII_)5g6*GJK~LEkM4yP zpxmnq`W>+M=@MzPiMy`gZD{b&eL#~{PhHG%$lR~{mi&ZXy0@8>FyXDs7=aZ&x{{{= z@qn&jHZ=L_7}=2Kr>hJ(^e&v~<=&tS(rIbaRQnTc&~2dvn6mEV;TDz5$p#o%#m{VC3so-UHH8y0^7pEYR&*1o(xz*GpjbXUPtoxlFhEJE%CT(_Tg6IbHQxket_L(zd^H-7rm*F6aWk z1;UFu(*uxH=$3J&<4L`wTj~PSDs|tShl(nliWcS7y1C>(uF=h><1=e@f74p^vaWz) z?sYo#ENHr-dzCW5>U9+*5PDU2g-%gu(7DV2Nuw^1wn;VVI5yaOP1hfY+I3wjh1HvN zRu>4nq5J7&`rDQkT{`6*wdxp4L33002TcXrbZ;hsrd{{KF5F%ny1(hO(y42tN%Ae- za5{kA*10VOUzg4t1r>L6Azf(f*7@xNWshz-1tfcQGY6osPp9)kU%zhh$0+XVo^yqw zd%7*;`Ed;Bbasdt)G^m#5QcQ0&Ie==c z{?caXIIQp54ES;S)=$xRMBj86LgV$%hM`E%-xH%TQNQg!z(~@+_#3Q9)_=VnFpla2 z=}AAPUwH__mZBf@17)iIvuu#0>Er2xo35Wu_eF+2_9TR5>finhBq#Kn9pt;o*1xg_ zLQm?Ib5YCDZ+rl|bMpypgic|XGNf26~f0pKRh59IR9i7&jX+l+` zzq1N_#rlc@T+tH!PV#1-(f6)`^`&|i<$#pwnRKM?S^aA?)jX#+B~Zxryxu`)qLk~) zcR}_AJy(k2qP~#4ofUc~^2uM)+bN1&sehS?0jkoc(fNVZ`o?DHt0LjDitGAx znkF^t_tDnP8~VR~L#;*cxd(&Ls;{Jv#ZCQB6dh^Pf0YVp?fTr?K-i)8+zE!;`kQmm z*QK9AnKO6vZIjX0tzY{aD0}q6c4+9;2S0|)K7Bb3C38&a*EhF7_FcUzg#z#CKe+L&G^(A8lAO7kx2??{iQ)WH?QmT4N1r zdK?ZL7&pKWXOPg6>4>3ZE}+F5X6<+$3KI+ z5%8xQW>X+D!w?@1#!Q238u*SIrqftv89qLV+6luJ1_mM9z$d7^PtHRl^g?c5E;#chJ92HX7#BOsL5a z*8nls3@2!Uaow=gVC6v5O~aXZkhB^8WumX$(6J4* z4#NS8OLQ8FKg9suGPHT1@wVXtoz&807^2<6cMJ=U16sFX#TI%)^ccQchH9@t{SJyg zgA1L=)Ncr+x%^#2em{oop23TJp92OjiWv?X{AZ#zWLU{S->~5=1&aHIblMW~z;J^P z^&^IG+EX!V7@;M^LxcG|WIi%HF9qM2;Vs%bHg4F%pildRK~M3J$A)ic*X0vKGDV-A zjN#c3<7`|+i3l#n@9E>{YK-5H;c_#6_ZYDE7+pSx*?WxzqK%tkAU(#o zk-RI1jIQg!5NoVofxg4W%1<#UamM^)^c^v-n+f)K9*O);L^E{(DC(lP0)VHD5FqXrSYGss8tzx4h2+H8^`@2yT&EayU~e}5O9}QjjK?UmvBmf~tx#Ky$>q>+)A-+oNZP5PEx!Rpn6FXI%X=`tBN2=xPvC>!^STqXuNOy`4z}~VDw1Ckc=1`V<2qQsCFDf`Oqk#XznB9TH2U7X8cS6 znsMWGUjUvk?xv*Y$HtLhjKve9hVEx4lZxh%&ZcHMHpayi695ZcO-p`5pPR{*+yi?| z9&|qOUX%0@YWqwtY=#tf)7*GS@i5Km0W?ojgPo>e`%Q;epwr9r>RRaaHf<#TrjO}O z@>Cx%{YA?vU(=`bLiRItKaDQPRMwuQm0XW)JMh?grQ!%|!51FdS zNqg8dN_m!XrY3qej+h2Q&=_ypydES8rf-wcmuO0%*G7`*IAuR3n|`2_oDyO0NmKZDC~{0I$d#3A`oIm==b2RWe#kco=t(1e#TUN3Dr_lMhd``nN-i=ik>w+LyqTjriQJs@Vv=s z7RIvNw3i8EE|`>+z;w}+xCwVcg(-=$X)l>R{R0e@CO1CRSDE@+psCt4wGp<|m{@mE z)SAAezfHSr>Yzz<9m{m=AULj=>YoLQdefr!Ky%fUN7)n&rr*h}*l60l0brU;aWtc7 zHbsUk=T2Vi*i3P~c2oTkVCpc{B%|mwtvCT_w@h0WqjuZGAeU5^DU+78cT8HEe0Q6w zkAtMgv{;Q=ujv<>PxYAsgV5M-Dy1*ZUDFau$G&HJpHglHObsg_Y|zwWhp-{jg||@* zo6gUqoSFNkva>+(z_cc$g)n_t1BBzIccd_B!lZZ+#bc9a5BQ&$X3z`D$-K>v9vpMz z3S3tg^Y2SgxSD@_0x)jor;8zMpSg7lq_~^aV;B(+^HRzP@iY(8Q@r2&cRzr7nVEkA znzwo06%;<^oDGn2z`W6M45hERm2MV4bKnqe2!C_ba_|S3JuT=9H2+Kyn;>&4Im?61 z>*&oAVm?lBqfm3>JzSA6^U3d_KHOZm39=*1|5DI8((JzlBnQo{4NxCtu3HCa(dH8r zyN)rJQF!~1`C={oi$bjVDGKo%Hh)2Hm^kyDCEz$>zC<|&@#b$%Ve}Hr0eeA`XnyDa zUUKu#KcX+$?EL`-|EO8`HV_^&JB66|m@-WzKSqW*kNjep=JE*)!f~_5Q50F`(G+Mn zVctqf``P9M+QE6!%%a@f9J93%47uh7l$xGrzU%?Z^34U$q3@J=H#xKl%;g!l5`|_5 zC8`&j6i6Eo(=WY=GHy9$~ESGN_DF>|JnnDm(6P?Fa~wzP4m!q#k`zcjP>S8H0W2&?_Pky z2D7;e1Jh_;bO9ty=G9+9<~1{qM)JDZg?5xRn#MF4S3TW zat$19=F&JwYd0GPLDFIVnKs6Bnp;XSK)1~N8q{u^|C$ZHF7ps=`X4a&YXN)E-0nv= zx4Cu_F2S(blNMa}%^k0!@qyV+L5vae>Zvq;8#RAM;q`}R79|%vG8fvwF=oyigZgpv z1`4lDnBCH${;|24=1Nb@rV{iyS+-G{ma`?N5`8X~dv1{JYWep&$ab^*Itnm*EXyc% zz1Px3Ud(+KULPpkEo)UU(8J=nfzG1zw2Xa$>VC_iU0ZB+`iw9+yt$Wjx8OA%}dt$_LviywKiLM^T* zaP7h@9+VmsZh4EguOGCe0Xo+2j+G&eBC6p9d0%rnRvBfYQ>?M|;Ix&W4EIBvO zS8DO4n0J{afDAnAuzW|ZtaBFAGqC==#Y%3ua?46OlKz6_84B)SwDeQtu)X}p_oH^#@)upgdzLIZ zvtz(wa{PhTLCc{}pkm14OSjjsrI8Xe?pwYgm-z$B@FA!evHUj)l%tmE6x@1fDNY5$ zBg=9d#Ee;t3Q&$)rqkPb!tw^4+w$15=viE?Czc-aR61F`>09b-jqQRk7wg?%Snq0m zw$_2t&AQaoBv#Yz+)ftQ))@}>Lcv?s4N!@S#o`RQN)}@80 zd0P|gsQFmy3t{L1>z2!4_qER0k3sOWP9pD%zcn=x2m`D)$yXg{4crJ6LDr;LI>RQ^ zdZ7>1Flz+O@xrZ!#V{?x%B7R#BduS&1lb3zd+Je(vYy)kq0!ciPymgwCO4uuWIanc zC$ZLn0U$hV)yW_w&bsqw6i2N6w3jm8y3PRh1Z$ueiW04{l-ZwTzOzvWm&i8NW(Pg^1Ngmv#@6xr5ndZ(SVUZe!A9P4(PNab4BR)I0k z8Z`^G0&B7g8VjvKU9j}DwSdl#D6zhf42Cn-?5{vsYTf)EV3b*x4uj;Zbrq$TowKIU zcvV@gKjIozTNj2%WLQ%bx`5=0wSmHL_0}){Mc-BH-~u!@SQ}~Qc%${p_krxX_2_LN zYqlPVMsdUH`~tAtv_7F7Ds9%8v|q8^I+t<_I;;wcLv>our z_QbmVAfUP0RySfO+-zm9qS#}5k-WuwZEK@Y?6Ym7Yv67h`UDJKwomAm^R}H+L6MKm zngn47Y=?iLJSSh<=VMUlXWKvrkp$W9{sfv}+a3#4gxHo8L4Bxg`G>GD%(jHGmBVd+ zg~FH!+a~%9M%u2B>*}Cw&(r9OvSmMuBHH%BDm2E}zAu6LL$(4A7-DUUeuIX?wsArq zXZz?j`TvgCY;OZ;yloEMj|sMy=EImo+paX!l57`gE}Lw7xCBCv+NAUqJ!U&j_d|+p zn3mzGwyCe6NVCP#S2WYM>Ul6^+b$HKIB8o(k6(`Mv(F(j*S7vYsL!*luR&wJ?M3V& zaZEXFTe}NrifsQZfY4%FB&~f*Y|bjsoUxUaqE>3VMsMjdn}HTSXKj(OFzuXeMg#`& zqV1IqK&!BA@`IF1HW$iZskCjXhNddpd|Fvn+pfh!N{#KX5K?MwEtIx?+1B<7Mn+U; z3(f$|729Om099{W9D~j#+ftf?U$f0JVAQYMW^mEhY*QbG`WrU+Lm1Oy+Yqe8RIBn` zXz#FHn}mVswCN}&aL4Ae4cy(f+n&JEW6LJbLa(iK8z}p13;#f0zpZ>a`tI6(vqQl> z+bJKw9k3l-38M#Xv9z=qvVHt6^bFhP(@vOC+kQ4+KD2ElAJ-$>j%p}+Y>RQw>->pr z$1x0rlijHeIGybl`tZ2e)5aji)jso2sNZLQOrdyp`w~hQ@~}rA2ZN{m?!VBx-=0Pv zb}#!{@=AN#m(Via$9^ah#R2UW!3_3F-*8a&o}`oMfUA` zKvHa<+KC}4u_u;7{aJf3twhh+r_<``ynXjJfT^(8pQaODFWKj;fr?7|n{R`r%6|78 zXsYd9Q(;q$eRTs+)Y{kip?2B6Y%dVj+3$*=@QVG^VaTqxFQl}Bt9EBf>%V4Cqjk@9 z`^UBDYqswvujLKwDjx>4C3v zGiWk7ZXaC%yc726w3Fts{WE$IKCvgz!rRHQ;-zmu=NK!E~>?u6X2%n%jz3 zy};0aw&hUhyCNtJhWf4Wr02(fMHnUB1gvJLQ>u-+Om=W_FLxfCMpK--sfZ5l@c2LyST4 z_8n$8mq(#Bgb`MZw>yjxR)yAZ#wQzKeFP(j5=|l*8RU_PVoc^kQ#50PH)O{#ZqW64 z@eBdI7YU4HZ%`g#T%eC^B15$t!j3XJ>D=KlhQS{uB{4Yv1A8(fcnKJeGdd`ymBKJM zCFo3L#NGve8souVC{8fGZHK~ihWR6yeUcIM7>pT=!9o>FFliSyA{&1 z7(2)feunXcvR%$Hy69ccW&}|Na1JAi{>mKTj29TH$&hxDk^c&exx^SiTG6D-3|Dds7c<_Tg2obt zw+))g7?llRFJ}}l0$&B=NhcImGZs?z)>Xz*3u-lt-(G^~TE>U_P`k$HI5lw@=4pmp z388h2UGeCwXN(0xVFP1+0c1Baswmvo#8^rtZllQM<>eq#ULDj6YPcAtBoJWUc4l?!R zkqKh{NY@%1VwTZr?l3cJ0iHn!vw{xygfbuTfH#c!!8%9_XKwxqvLl#Nia;63%%b2~ z6!XLzz#Gk6kcA?K`K}Ipu}otbq{K0sJ^@KQ({m1L3Cx#fQL5z;W)}T^5}6zPKzfw9 zk}_kDGymKJ6sb&m9~#q`?|NcLPB449sHHP`^oJTJnO{*PFoWs#9Y#HiDa=OWS*E51 z(6X6p=;qKI=9N1ra+wP$6rRW2mjZ@-=5`lQ7BSu7uy#&5$9$K<$LE>RRSG>x( zE;5&9K+`4Wy*Vf@GwW!NQp{XROT!Z83zSV*%A7U;3(J_%4?$ASoJDC@70g8X`?yNx z#^Ye9V(zEQ(yEy)Goj%s^GOX*)G+A49|~W&xeOz0C|-fbqY>{LG448}qYMAZce_ zT@RTZOeQ5ZcQRK?pt_6s!cxGx$J|^8hWpH)>3)L;%o-=97d~Vbk*BAhS?>q11I*91 zK;a{%7rk18%ujvMH^gL3gS27hA9UI32s3RPP>eDEcL@r|nXwO{!iDu-FZx_rc_OHH zV@1*mZWk+s+$p=Cm_?4HTfS}hkCJE>Y>-0RX~v$A667y0<@2% z>Bh_8%epulg+D8b{^lou6%-Hn`&m6TkamEz+=5ylEA@S#ILM0p2t^R<W)&1c z(;?O_BPc^z>nZytj5SE7UBg+e}cw-7{b~_ZNvDVWZ zeS)?235s;q%_6X$WQl1$%wYM6=pQpOSu?!BpT*j~0E}l?sRkH&mSuJWO*ZS{6IhtT z>J>s^E^7;=IpneUZvkN;Yqbv;idYroRzJu3u@>sjv*IY>{Q~PtCK@lX)~|t-%dFSQ zuTac-jq)+Bu-wqtm9>Oc z+BK}~SHMxrnve@k*I2o4g6}#@Ow(IE>kjR%8d!P~*2tQ70aBV+hbg`K25TJ+R}1T< zaTKkroNplI7Hi{CjPGqH%av&EuyW1dZ)5#MdhfE{&jG}CR(BJM4%TcV;CHeHy204R zy7V(J-D4%R0MmWei@&0H!0M*||K)bFK1oO404wwh zpm@Z3WP<2Hmeb`4S|76_=!oVJtCKR_hgsp|q8(wqPHT%Ntlzo7G|CFjh0rmUU>8gq zXKnrrBrfc{Sn#>B=TL;sjs4PJ5W15cL!P2t?B~irxtqPt4>fmoVg>Yiu;;&q+8*}H z+t9a{?eFA6y(fF`W)xoR>;U?hvjhLjjbT5t078A)Ba}3OdvYjt>(4&=4r~fw^XGwK zKl>!zByoWKB_&$~vX_1Z6$ja!ThSN9UPTMhVD{g+XgtIYv7L)fp-`Yx3H zmDq`q4Pys91b;aDIr?=(us6~qAIa{fO>`7H_XmiHX2;PV7{{iVt>98MKb$)^1vTwd(!GQh3!g{Kq~udx`{50Z9Y%? zz!U5hGzF%!-RLHjlkC_2KxYPf&3%xbVkh1}?KE3W&@$QYegVoX_S`pN;TiTN%7Qz~ z*1iJ1Y_`rFnsV5}7hzH^JAjFi$zyL=0ls{;Zy4UL0(N#U_zKw@dSPx6I}^)8Oakn1 zI+J#u9q|kpFR;rGLE1(3>yJ=eVyEOo%w_h1b>J^%4}1yhOV~TMp>~DcOR>RH_LfAb zC}Y1dAARNQdP?l6VDsKVVFI zra>sY&K})}S{>WJ2Sq)5TN&(aU|+U^v5_tQ3>;1DxeHO;WTzH`p@p4FL9$l1CJxr$ zVi)D2cAKsA0qi^M5&AH;v5Wo$!(H~q2_R`_r_fpKPWDN_DFD}8T?c?}g0D~{5kFpc}I7PRC*PjzZi7o-0ekVDa_H(MYqBy|$nOxz494iH| z4{}`JLSqo;=UV6u=6vT5n+|aXw}a#`$DMv7A)Gh<2HsH4`{ZX1WynNu zo~5}hk~2*HkSLCXE>Vc)a4FOl!+HHh0FC7&k5PU@9Ov0okj8V~rSldEoKFsb;|Ql_ z3#27-Sd;{Qlyi6?G#%r-s|Nfe&fH#5CUY(+Va0JyHLdefI9ur^uvE_V2auh{xk{(D zPjKE|2Px^CeciC-BqxrXsu`TtFTr<;vngaskcv6s9cSS_2+!fXL>ZL1oKMMXk;mCe zDJS`y<>bLB;G|IMWg(}x6N-yC2R}mNInHr9o_n5CNM5B2oSPD;y2#l?pUX>}0J;_N zGAHFKj49@*>G(tm=gCSmUg5aX+fvH$q@;uV58t zS~nQ0IkSsFdX?j#4QUO>)g47Gr;B2Q*ElQbM{=Drnexx-I9CGkoa#A8`oY)0*=R%2 z$eBj-U=!!gBY?TV$-04BGpCm(+?$+xyckC_B=rHWP&1rcXq<1(^ zT2Qoc=23*`E@u;6T++^2^A7krI9DuC-^m#s!r*mr&S@d#9%s=f7@%&Bgx>N#&L@-! z^^o&%4Ji9Ln;7UD;PlhC@DV5d2`xefIf>t(^D*Za`l1hUCeVUxm}8}d?Fi>0xr3f? z{3viT%6W$c6=R%i`lyU^>Nab-7d+8wO!n;bjj^*?x%E2 z-JLsQJ=i_CH>FU&hr1FNQ#vQ@<({Fe5>IY`FF3ro_u`<}n_IUEjXqrYYvA9<&CS76 z^W{Fi2Yx@U?^e|OxzFxI5y0is7kNK-Hr=v*fXh7$FoE19EgTWEbedjX>jo>ON=!e8DD@Wg1?yEmSVGeg0MTl~_i)O>LJnmog8OY~`TA`_c>$Mab3c232 zrY_bcu#B5L3U(vUQAKcA0U6ZZ+l z8g6j&o!;PY<}R2Cp*OjqJwVaI<-H2VR_@HtA@mma-d>R0=8jQN^bWW81k7&ZMvj5x zE;oXvymsz;7a_ZYE8Gk9o!t0V@O5#&+l|J1+?nry;Xe2E3|RJn`@u~}>E`bK9*sR* zN2L>DdbtZ;MQ0y(AFT@?au1(DXFpfFAJz|W1!USI?#A7KHpo3hPRPgHua-mh5I21> zD2KT&ZqPfz-5QO?C){u7D&$eFxE{jBxIfY54ddMY6R5fHCXe75xbm12K;p)$RnWf; z@8q?sA$u3^^hFHYZeB|;RJilrp&7`7_qG81dwAi|(6pD={VFhd^2%$W(2FOo!616` zo}5OX5APdVKJVi>=c4AzTl5u3{CMuEsQL3g?tp;-ya(jk+t2&xFi;%e-Klu`sTU^& z^48MCeULYqA2iBCqET`$sv*3aWPT`b4H*@|>zWN1k-Vx8ARvmTiGnrJyi6Le7~Z8w z0FLFI`WGZ|yb$tt#Pd4Ii;=+lhca%C@V>tcl0@D*TFV^e^-MzJG2ZqbU`yg{=!DtH zyf@vU?>Nuwq!UjmJgFRdQ+bycf;5eHY!(_%@IG1z{&Zd;xe8A5zAA=^8N8*ZP@Ll3 zp)BXqybBtL$>i;HL6OBfaSABT@CGRB@GLL=2@q!UG_xQxhi9gcM=sAqU)wz1Qx^d{ zpO@$F1Y-d&`89MF@@7~uZbiJYPl5CtPxJ+7&hu8&7wQ6U*1M=(7;e~7um8=&mlHr^FFM{$=I_Z$?q^Lm+}?BLCqhgv6ZJzf0M z#p8dAr*)6VdkPHqd5doY{R7_25KwmWo}&Fp4^MsxQhIr>z5=y+We#pE2-&UUI z=_F_G0B`Lo0DZ*kia>3UH=SHpk9mzXImpvD!uy5Jgg@cQlYn=WSK5Ha zG2SR;Rgd$wxdD?4fBq^kxblzYV+`E*8|=WelV3Ok2zT*+8bjZ1{yUEV&7Hr<;RK@x z|ATX2+{3?&t?s0~{0Mr>JozT_7J2cH_(F^~|1HX|_u;qGM6!?HxCiBm{2x99;BbB@c_bqE^Bd6^$&WQ+WTN4W!WPKB!Vg^q{!;$M)hNpN?~yCCoc}&WhAa3l(Eg^9AKHsSsNz4m z3+t=-vu*?LReoI~gw^n!XTev?|7tlDUgHNQgYr6m{%b%{$A4apqMqOAq|IdmUr3ps zjr7@PRN`-1TXf2j;bGe3j!oNn^3(b>Wl{w4_+TKV76Z}S#^5^`4D;}^_)7Ug~Z4?%tsj0Kmb zvp)Xkzku{1{~Vp1?dMl~0g?g!-nEeZi2r6cgbwmobYq+z^XO8Fmr_Jw zgs<2S$|w9C$02N#|2d`gj`1s_K{?LdP}BC;NAQ?F#QOxBZ{ivF3bYiF z_7iOV5{>=>e-}?o!W;7lU+^4g-fr8x>Iyop<^)5()1lk{HrVSQ6=K+O> z1V`x`c3AL71V}>!&orVID){F#o==$IlV~)C3uMn?oFW7rv|^1Ee8vK_C_$$NebIv1 z2Vs4TAe6#Ev4T5^;ENMfQnFXPK)eMC69kOspy-I;F>S&V1^UJ*_)#7en12H4F+m{* zLX!k9)4D8KFn1x;9~aEOf+9u0ei~v@1#i(ok2JyXK@=whEqUlm7Zhay#Yw^a^%#T< z!KpyhP6@)u>wj91N9V~i1zX9xnI-7AgXE0h9Ra}P2;90UY?dqFt^`M(U;(+D^93Q4 zVpJg5-U5z7!D=Ot773gb-##b!aXI+U3tT7@@}eMw(lRdzCVhn3Wx>;Q>0q(IhYrh> z2!34%lS&2AN6=R$SW6MTasj&+dMgAkL_&0>;BFI)a8?N-T47p^VBb%msTCM0wc?tf zZ#~B1xr$&?u;+rB{={L}#*Y2!g!9-YmFCIlMOoSu4TU zB4Ekpv3EqIv=y>|q0d0=mI3O*;&y8_`mz}7BUM2T4)f>pG2>J)r= z6GFQLm1{t9Pq2&9@a_v7ZNU3L&~O)Gx&?L1fT>5|N7sn-3XECM)F*iDd$9Kl;PA%J zNbn&YmU}FCV;Tl%NZ|PiPz(!3_F!a21kN~`exC@M=c02|uqYn>g zVJsyaxe9NQ!`DsN?*`mEg?c#{+=XA;Ti7kZMb_JGhBiZ>xp_yfH{ z2Zaa9!4V{UOwq<*p)nb?L&BxCkbPJfAqGQ;@O27bg$jcgLsOX0>I!J#!k$k-86mvv z3d(5VtN+a-!ig^fXsj^$HCnO839mH)MZECBB4|nw-lJz|A)K!T(o@3qv>wY8=Fq=W zW(lK0(04`{LF=ls!oO%0o-KT<4$^Xjd6e^#FKnmDxIlP12$Y4w+Y}uw5;na6W6lX5 zk_+*?FoItB3&IO&Ah{?!E~wQ^GCpOQ~320G`0wPe@4+N^s9%8 zTf%F!gSscQy$=-kg{5ym$^&6GWp;E6ugJmIBm8j?GJA!oEvWSiU!-Kh0by%8YCREN!z<3$3@7y#^+tc zq{s84E(dYs+o)-N>k)bnAQ8le2 z&x-Cmht_OSWIBo*QKBE7L9WQ>S!l`=aV$WXFG{B)(FLNW zD(P2oUbLAepbMhW2ryg}G47-Bk|>_e;anE=aGc)R>{moit`|%z743Q+ z)iP198qcX*60TCDWPra)bejH5y;@ZHHu|oLWPK=VM9W2Bs1-4Sfa#iO z?lv@D7kSd*u{zN=}(X(-GZVf(HnG5?1re+NwK$PQLhR}Z;B#j zp|wTy{oiP86@Acx##^GJzoM~C^xQ;@%w5q{iu<&SzB>)s9U_+ykaUXbX`#?1T73{e z?}Sz)1P?Yf<#;ad+@d}Co z(UBp*eeK6ZYY$Qy3 z#Ch+6aj$s(4*=sSb|-&^msm?DSiQyWzoF4b{N6l}>=VoXi>-*mX^rV8t|E_(zxexV zs1Fb?S`3-{#c$9}lLy4V#Go%w{Kg{G4vIYylXgxD5{FHI!eH@sHn1HMPotc*!{Toa z!O#$K&Q@@QinWiSFiiaOXHXa}{(CE|$HdVH*pcE-C~+c6>_*4oqs2cjhm;uccp!kr zioc@_-8k{Z39vU_{D}a<62$rYAo_^-9vxb9CW@b>OJZ#Es8FTA{dse4Rz&r{0Iq zbK>RA5OZFfy9yi^#ErC-z9_D`11m0xOTPe$%i;jKZ?;(6L_f+Bam;5>ct!lmMrbM( z|GW>4W#TDxB)MGtJAHO4#04QxR4I1OHKST3J|RZ6TKr8LWM37(L}8~I@q58wtQBu5 zhO}#9e+o8S7q6gy6RZ=@r)6xt_&K_gvqAhtg+FuPZLlM<@?#7{p1%7@}R_tE!AJe77(gW{EI!S`5vlzzTL;!Jul!{SdJ zAQ=&ldL)$I9((Uv(V`((fk8OH_5>OknEH^{|Op* zNs|7BnB9{1KLMq?WaT})mL3vm9Z2>_em(|FdnHYj*Xb#Fk$z)dlIpiHB;JxJFEsi{ zKA`X0KFQ`r6uy$EI$Fg0Nxu6Tp!_BLT_6pRys8B5{gN)4Mh{4S_!^{vk{|3KIVh3S zl0HacXFzYTWO5Q34@o|t3G=X|bQ9P^Bqu%rL#TvB0~;oh(Pa(ck`p=<5t3b2G)7AP zrY~BQmwSuaJAAelpx#1YBPjZl#&F;m+8 zQAs7;VRlTiVk>G%lJ&kQk|i#bseWAYaxNHBB=ZkJZ>r=OTDYc3E>6dgoREaqpfO#N z`Z31Wc~a7!jWR>B&IpcElE3bN|FooaA5dgUmeB7$OY$!*Y_cUa8=xXba+BQixsnSM zIn0y9e*$UwlDCragDsG#D0*8c5zv2$6iEW-q;m&QT$jYq*?~HVj^5RJiF2H; z@@Qvd^a#QOFC%_b5nAk#-c?Mkp#W1lCnaexFvCW57KT+ zUaJTD9mxR)gtke%7lZPyWcX`fYL{@yHQXV2?<|T=$^Y`9p-aM(gZ-Xlr?V7>-j}>F z3mgw5JA}~GEqOp5*B;3|in;enw(~&RCwVIyln*5z&>FE{^4b)bHX!+%c6^T{Z_*cH zP}1=y_#R89(a&K>vN9I6VaYNR7)B%<3BWv&DCnQDMkU-s5H=>!uqkFfF4^*5;-OSa zUbCIja!PXAC4H5iwukiI+u+|L?OqR|d!@1T4fK|#k3gD_G><$?`=s6!6!Dev$XVeh z^*4dfUpkpw*$1Q_&w~+x(vBz;2c;D;U=R7tUoSn0A_^uq@m&tXQF6G=p-%05oZHj3CFzZws9l!M`U|yUX~1_dtwh?AipDF_TXRs9 zN_}a)T_*i!BNUZOe>jH53MrT3j+IVn>Qm^fk~%0xQ7v7pg_x_-@9a=mBmMDpJf~V| zB^~#?CY5>u_jT#oVTh@d{t}F_sF(gjM+uswU)Vu;LwcM}RW(bKDDK!Q{e^C6xFwxS zyTRMiiXJfBkv?}5MVoZ?%jml+ea_7Z{&wl3Ah{g}v#YZ(2=}D_@-R^Mr43D}J&^uG zzWQ$I)oDP{BmI{m7QNDc{Lt4YmCQixq4X^}KG`o_Pv7hTsbl~$A4$8oP%$K3E`u$@ z((*@;IU*gu4KPonpZ@`%qtf@uOE)G}z5~m~rJ+vR!@I~9#{#0OERejNW_bB!p zEbBW2jzh99CW7R!Z0aG{8zP%evF=dW(rX|IlWksx#&FqG`ZPqy7Sm zq6~+#GUXr?X3O6707H&!)>TmE%0j|uOPnV=OxxakSsNQR70A~8gONQa^Q27w^D;kL zx?PY3NWpPgwst%Eie=BQg|rgc7kwZplU<{{<8s;CPOw+VPHX^WwQQV@Z(Ws5T93zD zBh!(S@w#k$0DX0`xie7I%feW+C2o?n>Y)CHY$m z?SMQ)2fTsueL*M=$`2Qz&v{6`IuRU)<%i25Ekr&v4i(|@Z4IbJ$af^t3nl-CLcuZe zD|FpmtbF}F3~8KPPodl+@)d<(PnAzt2E1wV@EB-1A#bG|#&mf&y?Q6*bHjo6lzeSD zq@0###h@=!F0r7N<&@|Ch3Xl3c{GMJM=p8@(p?-A<<;E~)-K<^2t|iHJq3@XQ|@AdzApLB-@$iZzQnl)(jLf1c0ggbJca(`qeniu z2{gU(mQo1qlkX)D=0o|nbUN{oTt~aQLHWeD={1vYp(7_l^3A^k;jsM8dmtH+r{075 zQTZUP?8oF!Q9x{5{t8XME(+UBXmC|*rER{Og4Io7`JIY2^niCM1}HAJTT%K5D%=$c z$~^T@oTSNokHYUCP{X> z8bd8YvHUiKMk-j802ig0VL>fgaeW#{VifPu?>AQQrYAJTDO?LNYVnGzR;Wl&w9(x( zM-=Cupf6F8P9u6uk+>g&pQQK>nN7|~$%+ZM;(gL_g}4QVrYO87qBB)7?_B^+Q%rpw z{3jH5XG2=LqEd#&lZv5Cpg5&SyNcRrg`EykWh!FHO`fH=^#v%;DEfbZ^=B1JY39jR z)V~FW9L0eG;LTO+IEvBESKJ)O;5myF=R=_4oI?B&s^=B2`GE0)B9S~z7Zsn7Q}vR< zB^k0WE8e7Zx?;r?IyHVp(N76ZrHY2HFhFIBAiA2WTygF*XsS?5AO}~KLbL>Z)rtri zimM90KVfH$;+7b~Y89ca0CUZ$I3R|K>x!E*!BMXm8b#5d$fv6;8x_5+kk+hN{T?`O zDjv`ls73KA?LS);?(YD_EyXXsu>Q8AJXC9sOyswZ~;fX#_96W&5Zbj2|=|K78ve)Andl1elhrJV+k7Q_6VCSvjrDx&{=PO5x{_mZfA;YTy~= z4|KjMNBLJajL22~(urE0a&|iy@|EvVUPpoQg((19s2r!0Uq#BMZ-C;QQb1e8^Gfgk zJ%!)j1?A$KXuYWX>^tyZQYKJxPO&nKPHB}Wx6(fFiZZwsfJ>F56cQ>^KJb9F3T3Mw z@K!3fEd|gj<()HVtX3{258zehTmc$ulrHa}c3qkCEMV6uT`xdpy)q4(!%0obHz%WS z;|=AuR48m#PTY-Zi!$Ik7+aNt8rC#^=2|;?pAp^htRr5CGCKwy(;A(Iz3gNJ`HI;s`LLHXjF|)ge|_R5l@VL zfNB|SGxn?6X$^ls^%La;1*v*ySr@EIZiAFVs=hohgsOV)pf60d;5{^ktJ3no7p3}} zf@IOEzAmuGsM@yC$}e7}r(j!xs*zTAM^rn%07s(AeLGMbRZSO}))f+ECZ;k5lQ&3T>T1qK>*Hmlh>waCe ziDI~Qs(w0QQm;CD5VZ!?SJO~yRDGm`-X>LY0EFF8U8m@2vnu;F2)n7;x)qkSsFL=; z2xqIRayEqCQf+Mp>21{;Y;@jHvB)RXrqWWP?_Je;PXKOLF>Mgqp;~htqt~e_JPyh( z756k0-czlh3FN+N5{>!;l{;k{cB{k{=<89vR|HMHs$mb*`c&`J0d%+8o3=&nYG-{s4E0b? z%|z!O^%EDU*sG51fI?68hX#;(sbdmhsJB{6o+%&oY+97=Q#Y*#zpr{l2Wo!mJeqy| z)z>4y9-yB4Jc|A5o+l7}K<$|c%L3Jb(>FQi4*A@!vf0qwB5$k_}rA!^%y2O88{ z$jcC>E+C}g>RFQ^J3?JZ>*h#xO$rQ+Qtzt+f3&)C5x~T#?c{upRj=cMGEV)83MBFB zZ|R!m1og+{Ge4qMy#<+x>W$>wKdNq`fbcQ(Mh#3#QWtKfb#Jozb2a#ntM%7Wq^MU` zL1?PFZxp0y>W|Jt=m~WedH&PYlju>NRKMqnB1655JZh)Z1(c$8T77g3l$q*`=h2s? zUN{HVpHaWO0kyMg&odB~t$sv-_Z)SgCluwXS2U0_s6ah41T=-}Z%aT^q<)(N)6S{A z76b5k_1_~5HK?Z=Q8cO}ub{6<-Sj<%@`gIm6YS0EAL)9Ro9fp) zLDHfgp=-%n)rrv}a&!Uw~ zr`kztrY?2$I`H39Zx}{#U%g}pz&ucQ4?t75I?IM3=}~(PKv*wE4e0yS@dKcIsBV$r zf%dDr7!Wp~*4e=KNL~IbWDYvjm+1`eWA!RZk{nW7DCKilEu~e*h}xU3U3j9NL<{9n z_3xc%98({pl*@7T8gkORXfh~6$W_xr2l?DIODI8Mr)J7o4Dc?Edn8D9YrbWmaMyg7 z2Mr#Yya=e@qw(7VnO+*_yR%VxYhK$06h4{)U&!{;H2et;f6V|Tc?D=@a3JlFrk+xg zLNy6K5EG{PehvDgOKL+*bn$IaneNxl+Dr9G9razCqQ<@3K0p_&E{1q57H6AwfWoa&Jq3?`l zf)M7O)i^$JqMEIFb}ot>%`Ni#`ezjl}^l1)8^4LTI7p5JeMZylL`S(RAyr&Uw2a5Ze zr_G>zpy{K}Y`11>1uX2*q3zMx(1Xz7Rs) zwC!|P^-k@)t>|;tZkrAD9$NcFsMw=Tpi%SEcIwdRt$pDQ)O@r9t03CXsXZKpR)1|# zCU6I6&(k~>sEzs*Vh(CkXlWdz-7*fqhqMN|%m1*pgB;8u+Gl9%5vn~UMq`*ZEe>EJ zw4c+#)JW~zyRaon`vrOKW3;u+V2{-@+)#_tCQ;ZUUOVp)@Fr-TYRIC$-I!AT2}t2BkTj z(q0(_!qeLM6wS-j%IIpwv)Wmd%bKl~d<=7QwBO%Fk*mG$q-}nl_76&5&DUCdp{YRo z^&>prLhUNrg%)Z5q7QnBb_p%ru4tEMKw7DGa|!s%w1Nj*VR{sm+UrX6 zRcX^GQeUmr)A(N1eoKD?SEGIQ1(;i_ZKGtxYufMc(P{8H?LSpe*r0Xhqt>XMO-`XE z?TfT=yP;(t28w3w%jCklsr_agMT^#L0vKAgdRnsG(hf|6wACNWmv$$4Y945FH$i{5_H$n__GsUvsC=*X4EZ?wwCr^BJ=A_a1EbfkeSR892DB~j z!q7)rwLcUNYA??RZk#gh z+;pmW7?Yj4$phfur7Nc+JiB$T8NlzZTSojIx>1T>c8`n13FeL5C-Zlw}9lJ?u%LUNej_Uqn9RB_bmfp z!gQrMurORFdJjc}ZVhD$MCv}EA9a-Ot^tNd>$X(^Z;WpHQWUYe2J*+p>5hF3lA}5W zMe~p8PH7=CNmoK%=VaXgt@@AaW<3iHDY_R{gCtd_+D zp445Sqamkt6&KN%shh`z-YnhAf1-9qm*xVYXLVnv!isF&9`d{9=+@CaFS)vDT*%JT z#nN%@eBE!9Us#~)9RgpW?zRUSFX|T1I{%XH9i+NACtcPB(?YOVmp&guTB38IpyU-@ z-%Zp?b+ea1QUCS`hufeNuLDD)E|gManshS>?+xAFA5l1)b>IDWG)$K%0nHuV`9P>>(`|}@n7g_a zw0CLOS<6A%p<6)HQm5{ZILPkOz5hIldpiFE;JdF|`VC}1&@H2s=WZQ`{Q3Pl6)hD9 zbe~e*%_H6KPlIw$$Dl~kW8EYf#$w2+n@o%NVO>iPsv|l@0g5NO6}iwmsvD8qlEVyC`FhH>7d_gV|tyY-$wfWckAn36<1^csq_?a{~5{pfr3Q8Pi} zsqcLgn7s6wUg-1I-=Omg{(9$!H|HgeA&*022qBoX@AbpAh5zfF%JiPBG^4|24AEgg@G(MN=!h}CbU zJx`pz`BMms*UvGdmY{#-4a(v;fYRM_^g;COa`jkU;nmZZ7N9X-zla?11^PM*8VmKzdgv|E z$J5dEbNWciF1e(a&w{Ya`dR-%ZL$6(+DVk?H_$=nEBc?EY7AnjK1+bsGCiN}sVLWX zI#5*TYj=UaQa^>+h z`nXxZbVFbB7ffo_dwm7GH}zAyA+tqqC-ydd`Z8L1-qk-R1e$hz9nB{l`gga2u~WZ> z?lkDq*X@F|dwK~iPVeh$DC6vbejcTabnD-v)kD9&s2q9+^sB!@@ksw09S0oLS5T(+ zV|`x;D2Mdzw0a)aFAAFA0~bs65`fuhD4qmcb{YPl-NJ6eKn(P`8~&jw!^5z?8d&xi zrff#zUW591yicBnNtF5TWeBE~^*+N63VZk(46Z2r48!Ev@i$DL2SovfL4SzeZ)l+% zb%^1S5vW5AIh6bwW*ByUiq3FDMG#DiFt`q)h%~%86*N(XU6hp>ZFoRy+8DzKok58; zJfOu=oMFWxXo@#*cj1917=Ha32#*-no`$eQ!>%d7bj%P_0AWdnD^npQ*)Wa#f5#0Q zoe-8{h@~Gzn!(ynTf7s7nRE~!-H=TllMKVC1DZ}5l4$Ht8{WJCvoj5yv{$j&jWJb}Jk!zEe>hE;5!C^U4>gUlksIS$y*877~B*%u5$ zl;nTWu&SND$CnI!J;s1b?}~gB*Yrh8Pu{@N)>OF|2tFl(hyCO}Ez!AJcC8x*?5{$mDLE>5G8*dvyTnYP`4wd~U`sKZmfL#?VK+%W8#;2|53o#z~3ml=wPbZ=X zGrmC1({STY|AiEd6)dQaG#;Xq#VDi1iXz%rJPo2_j5<128f!dHk08$2O{aO{jXtS( z9}6JNa+(b8Q=NgwrL3Ez+ z2~FDh#{O`CDKP$)0JVk2gUw(sG9IR><($!qhhSY2n7ci4cY-k4qh6%9r? zt)m)^CM_D9jE`v*c*A($XFzK<$}gk1X*|CSBrV1&I%jy>xUvw%9pi7S(br~_QC#${ z@x%8ZyWRLUt+YCf(|f?sY5Z_5D7%cm2BihyRjoOKcdgrai;mm(7~lH{B)!Jl^!@HL zE?W(R4~+$MLrlMs+X)Z@#wk^R^vF1qZtEB{j^v~7u~9P#GKY*El<+ZZ?588hBgUxX zFn7$jfhGQTJHdXr3v~|cdhT!3(!=^W1go;qpuT+GYUZUe@;U+G5 ziy}<(X9H8D>GPjaM43uVkQQSSQaCl%bYFtTIFs!k2#YsmehY>KQ#~CmIAVI?9KHUg z1*buI%oO=NWG0!uqjb$w)8>2%nWmX`a?yIiBn$?&bkjl=NKcw>(Fxa6CUz0}PMfaK zRc)E3g>;rL%XESgQqP$FM_Kh}O)t`Y1lguAnqqQI@4bLpp6P$75SDLR_60N*m?|u= zx6tHD8Aubb5C zprPJ0oqn1PrX514bvBv`Q($kC>B@Idc*FEET^i7An#Tfvi)l;(npRWEUyyyvG)V<3 z?wEd}FIk(3OShZcH9ep_iguGj1@;b8gf9l6%M@;a!h5DOlIX1w*wjV0 z3yzp_$=^6`noOZ|7jrnJ2e_I~Yy%26^Evv3?=*ivpSRuS=;a`BH-DNB(H`ar-=T4j zdD>Nw>@_=Q2vPMk*U}Qr%e;ZSu0G~`3Ip#mE1v^2U-O(%K=U*I5QRp6^Vq*=+;2|3 z089tWTfT)qpznxz zBOMh@G`Ic$Fh|W!^4c6Tx23_*By(aiR3w{Q$z^=pT(b<%AjQ1O4J4`N`wLM^Gkf?^ z%EJkB48`};&HbYgdeU6wh9bip5{|x8W}m0Qf7%>I$-SB8PrM*I%RGv(2%8gCWOUO*^_=b6+%!$TNG~0DHdqYdTb2V1A3DjD_Y2lw?q3uD?iWMd!@j zwBz3x}c`t{Gtaa2h4NGll#a#V1X@z=4Iz#*<cR=~4$@%K}db^|P#`cirEz z;{t>RSi;G{x!)4~3i=LMeilQ0pymC;kap1Gm<~;cEb_yEcG%KLPQ4Jzvve*h)MBQ^ zMwq3u2162Vd6RBskFY#94{t)GC5i!I(H2W8_+l*1cT&(9Ye}Zdy5cPH0icPu?4h4= zf@OrlNk=T@6(CKtw9*eg$&x`SOUaf$UIE{6%Mc%wX%-E+J5N|vZ30QUC9(*`NlVHv z(3D{*r?=#^C6+F0&a`;b(W@-W%X86p#==`pi5F)ruco6l+fosTT8^dk0*YMAiscZR zXK|rVc)sP&n=tLNB}oLzV$0$r^p#j*gZ?;-l~Y|k8Y?Y-uK;D0+=JN-I~C`Rs>mTaZ29P0C-_G!uWx{gCzfR$Krw3BnU7-3vX#OG;}#wL zVqC0i=wQ67b<7RY+^qGb;NNLo8-Ze%RYwuQ-PZl&_;R-%`4%!gtRID9EcRHJupoM` zwfJcip4QJORo=^bmXbcbt@X3%xPp)M)c-KD`>a+43SVnq67>36Qz-Q5Z=Fanu>k7{ zTEFeL`qlvc0c-rPP#9>9ru3SF)~V!L2(oJF6B=x73DJp69X)CNijrhAtm`P=eabqAGA2%2zq<*>Ol#8t3`v%C8BOr#7g{qZ{!?Tu;2# zQ)zu|KWbIhRfmA7+RCHg!By*21sH0q#tmSvwceZzzH8Qb8&F)gHc+ZVo%NqgfT_27 zIZ!lMokO=k+GstJ0^Cj3DYW^#Va+Q6re^DN|7P^saRz5|r)MlbZmv!y38k2lCA?wTS z=o_})DTFjP8;>qu+G*QJ5tLoF4MCmZ6W$f8qo8oFZN(^rdD=3_8RuntI~MFdwtuET z(LP%$U4`gt>!J0KpDiF3js7;z)u;v71i`Ruzij~>J_xk^MH`ocHZ}R3gKYbP6cN~m zOeg%+%^zj!_y=mEZS!fD8e=Q|8jW!_1?2|C+n%G( zRDvyo1w}_}6K_FnqV2EAu=c2J5@oI(v)R6aVac{u8~Tph`1Ee3*j}9j!%}Sx&ikNA zv+)d|Nw@jQF@z^=sYfC7l&xbkz?`;4&}oHC+ov0$;;ilRIoOhIizBB=j;)XU1s81p zx&q8an|n44ykvWt66G)33V#G;v27zQu}W;y>rpGS{T>BH<+knQm8!7eU+93e(ss86 z*s5%13U^i8PLlWTsx5~cW;M3{|BlVrn%QW)W}8m)^L5*YAy83g+vos8gKhE*^flU? zk&x14yZ$`*ZrG}SL}RnvG&lRgHZ<Kg0(#6Lb|PIgQtdC^LXl>_{VIwR_WO?@CEdP) zqDLp~yXbeGVXvW-{!{jf6=*zd|6mO$GwsecdcIlqbCf}S#y;;AfI4gci6Wla_VeF@ zCdcliOJ8#BrZ2&tXaAT|oAT}DN5N2FpXh_WLi-05;48BCt0DWGeUuWr&fE7>F4P74 zv~N&cw3jTwa9^^2M5lT$+kf>1d$Ii)X9pNd>@i=!rYrWRp8}XtdqNM)F0;QMhFZB@ zORm=ndmIJUD(z3cL{VjD(^9G0{>!WAyJ|0>Pj-#HY$b%&+Dk8>xMtsX6?(7Re~*IR zI{O@ogVft~DHw|e`}9nZG}>3EIbl1^kZrkM>!EndEG6>Sz?75U*a@RgUpR0CzF|Bhu>~sD`W2b#vC=hnpS5WTO1G|Y9 zGTn9sodM{vSJBs_*IvsaKR}=TEUla#+M`cHZ@+!{^YmM>PYVR;Bl|br7>hxB2EDA0 z?a%xK*+ce!$!|SuU-K)*V#L0D1!_<1uRRSZqjocGW5(=XZH1I^`^T9mTpXK`k?oy!%>aeF~@UsgeS@I z?^I|=hCYZs?sWWl0kTsZOX<3=R7dhCiZn-S9mJe)?4cPT-EoNy2Ay=o(5#)|*iQbt zQ;r*S#_F_Vk_&2?4sVM7W;q%u1Nw}kfTq8*jsz(%WjkiJpfSfWvJ7VDI$XRk2zidl zdqGm@ShB7RtwoL)@;IM!tfLs(MaOSkNW0{?K(3X`j>2x3UF^vC7$hYQMka(_ahwT? zjK}o3@+|r)96KqczS7Zh5yGk*Q};t*wd1LL)UGR*eqR0?2G~>}mp}8;-?%U}<*b&~oUeBf1twv^Z2w z+6%TiPEpRwEypp6O5S!X^+V$w$AA!x?T(cHb95cxHC}Jrmq=vXM6TpcRI9X9)uN>#N+2d$PWckl1sBsVgNB$C*X1WAZUj7%~`h%6!@J0T)M_8$Cy@Beu`PR=>+ z_`UD9&Uw#!&ZWsz^S*Vok?;AwvH4KnvhRd5z`WQuw+oFg_boF*Mf<*Diu`u$V_u-K zb041~utv!zPa)GJ5uAg1SIHI%h`LGsqPd*AgtveNV6$Y@1qk(!%%#!ieo3ML9G()T z9zwk&&&PtpTe8j%eLj+H6pr(iEH%SIKgow*L&X8f&YAG&K}jIJW&I`JxB=QBiPJFn z0wmU5us2Y0eLH*+Bq@mmUx?&4%5MynYznjc6)$_q(jUNhR5EWFT8~M-pO50WqD1$-m10CS2k}`5_UK^)!Epl>A6*G-o8|=0N6I zNpr}dC|u=nbU(yM=H!9zyd<*?Bo`zC`o+*#$vRrVxF`u*43ap>woVk6B;DQ+9WU`1 z1H1{6H8HT|vZRC-#;!B*U6ahFH({d0?=@;klHD|zOO`YTfHFnmm4I5R zB#fmU1Zfg2JtEg7bw}Wm8xrPC2u+vNJ%OeSN$gJ`$&^g}6pdMu4WW>hE%}~?-Z>Ig zC{)~()X@tfR}xA2ezzpw(%U9af}P{I#U-xAV7Mchvk86qk{>6+6?Y|*C!w)G($Yv* zxll559W)h5Vks}VSn^*lWS2-{Z=$#-dGZ=!?n_$e6ICjSngIR>lHoq6D3e^G{Kj%g zS`^ejl>9pvjgKUs(YUWd@*J}$t4c{G?V7HVXeei^T9Uwn%o@qzY&6zNt~%IE!!0kF z@(hgi5|(}ttwGXAYdeo6ZshJKlEW0EZjz`%R>ojaQ}_~;FC-HSAp50+34x|oN%=IG z)+YJ!2^iWXX(0gGA@QW0R-KaMae&q(i8G3PqrF zJ-s!8q`XZi4oe%|p*L7+q~9(IkzSe1LT{*4u?^UcNWCcC#C&# zO8qJ6q|HDPCY|~TG(|`czXQrhX(A3|v! zOpNpmcQl@t3U@&L1!?$hcr;d8nMa|$i_)Lz5P>-9K`A;fN!!g38ZUL;4u}cTlAU0@ zER7lk6<4IP6=+P9meXQKlJqxvJtj*t_Jci5x`6KS>(U>tLg5W*0u5`@rQV|eG(&1l zcS)wSni6cYq^r27WlMiXrVS4MmS)jP$W3VjO;2;B%6FjRmNbg85b~tCpQE@feS<T_?Qy^VKw`H+Zv<^jy^pnS6zbBRDfaH<1BoJP&kUpg;exV0rLk>$4O;`s*2c_HT0T_~c(s*cC zs-R0bA{9_Jz$Q+Qio>!F3i<@g8Zof9IwC8i&(~4e#T4`%lf_SjqLZ?q>*zZr3wDFBFxfCm z(~<}oQwXGyvI!EppJhdss71*##i&KgR!sp%jO+^;+#M?mIS!XxlpPd6cAU)SF2E$n zYR;i{Sr$qk!z;3*qd<}>J2MIlX|k(w)UL~X>1>%BvgV!eMY?Q;1u$jEKF(mlkttJW zKt-0Uj#BfoWi~-IX~~Shqm-{4}5y%Ay@0tVs5b9O{c@|I$w164}Hr!EjHuY6cBy@5|iU(OD`> zHG%Pg?EBFu%4BLP%4PXEC?3kZZ-AsimPiRkl`_pM6jd^d4NzDud*>A})yNinf?BO? z5iQu($=;j{y!Eo)8R%<}J&b`7k7afguzMmKLt&*x*&im_4fs?xibDELvhrwXdL~Oc z5B_FZy)QVP%ij7JjV-cCMYwpaG9Nn#ZIk&>kgHwx@-i&!k{zRc(%rHoN)YOi4Hbg2 zUzSJ1ZsI1JKU<-gMh$Sm)) z291Y2tr3j-gZ(%w|6(j!Psncu!0eN9EiG4{l7CHa%`kZb zg{4l*e|d}|N`8h5_0jS*=^%-bCwhS7y!}az!|wK=Dw5|Cieh;Kg*Zy&iIhHmPaeA%#eKPqzEP#}Srlb`AWwK3wK91Y zt%#S)opK@Np=kihYkl7-? zKyi;3@;6MBH{K>cnF)yP^0z6ep+i3DQy}e@YhwYeN4~BOntJ7$rMNu?5rJYqejolWql1#Rx6xdMOsP!(Jc7o3xqHSCK<63_nFNjpz?3LTC(3&O~`kAvy_A#})o|=scnL`5Q<(sd)SUZ)?Rw8UlqWu8)TL(+Z1bhzVExk_Mp> zil43lTBPDD3agz_ygm}uQ;>?lowb< z5p7J1Rak5Tii-+{RyX4mGdIH}mlTh`1Wml+(JSapP)ygNxU8_J41g<&m2cx_xvEH} zFYPtOWiikvDlXHqbCRNqwhkmKw(bL_6vdBKa8RmZ#zquriZu^WTvtrq3k^3E?DS5k zNLNH2gV`C1r!7E{skluur!2)Fy)d#BQ$0}RC^pXp{F@4CAQ0v%mfZ)KTZ-Ra0!*I5 zhJN?!wxW?XlHO6+`$9#&;!O(8-&LHVlSm2_Q501uRBWfwRguD!14YG(XKWLYmMBgf zLhC)na5!4;E2f@?rc%X^So*Yjpx8;Q{K2f-eRX zE1p5xpknst;2%;HPK2gmg%t%nMieDiK=MlAkN_vVR%j`oz^L3pgK3k}dm~i1DkuI8 zN;jph3!2=OhA5DjmGPAz@le)Mh;hI2!3j`$Diy6Zqu#XgQjYhA3U6gFeQcBDO zK3eoRu6#EYjVF|QcSHS2}eO|Ehw6atUOySC&?Eo5~{M8zik;NBnAMjmLI#5(DUb*og>`YL0(wF_R@=e;|dqsI~7K*D%)*TGjl&SPhOjORi ziMu38IVOwll4RxML{w9h$5((cRr!DpcuiAIKaala%6De~#SLX?EgI96|4_D9hVn!q ztjJWZq?FAp<>5ckm#zGp#>+X%MfA43soX}>np|aZED+vO4qXJv9i`}BI4ED)N`d6N z%Azp(jk*G*FX1j!22&uT^iVmx1wtPwJKsmGLOFIb6jm$Ca{;?X`P0v!tW^e6N_vAb_bN0zR<_Wr=!x=o zq^Yo0P09`mIz3bVO>gODWf>(#b|`nyFMD( zv-Bx{`w*t}D?g&eiveW{eai=x8)>8dkn%3A2@fm7tU)rOOr}MMS4!2}(C}LM)*fhJ zjjE4zu+XGhMxz~9)o)MH>89%c3;gaX2g;l_tHx3~orkK14(Z&l3fK#wo~i=M5A#wf zMxoJL<@FmVeN->xFw|G|nI-!CR9*K0^nmIPjbZ~-{d7=Gpz6iD5Ei70p-9wWR<()p z0)kadv_&{X_4_+u3{_=$p!1084R2sNq56+LIVV;7CD3$ARk;8pVXCnQQJhxgQRq2b zwVP&o5h_nQI3`ln`W6(PRsGCGaZa^zEW942VtgSpTBWsz`WRJU9z>s4u{<4GFQ_5{ zP>od`qO`+{Dlb}Kk5hS8pomv(rF5|b)fEb=Tvq)O1)*0|7ybpNtEx$q8k?wMS|BA! zWkEBTWEGE2r%qKZ9uM|3RnDI%uB*08hu(D6=D9$ap{joc&t$63vPV&7sb*(@F6>1oT1VS~YE|=v&|9bC(r%S{)k89(L3J;rBo$Gz)3lT2 znJVB%6wRu6lzj4BRrEDbw5Ys1q2YyUUpW|FsyeNKuvJx01HU%aFWW)ct_oWOA9Si# zxqzWdWkIKsb*o<9MbV?m3V|zoRp(}bq)&C~G)VeYQ)AFKph_GMxPvM_+lq2Xm9`A( zhgDNPL~TUXO}l_!sdmJp@wIB47t|Zon+m~bQunNf^IX++w3)(9{nZZ%|?!JW1 zK=n*L_=DA_X!B)=`m_s3L)9xS;q;^G){AI7rfzx@e8<(!6vRBC-b^>rNp-jfic{** z^l1%KUz!BEjTg{+dR7k?KYF!G2D?kfpdwlzPEN*c+{WKMWi(>fr0> zJg>I5LgNMX{X>uzs}489ii_$Ty2;|yIn!YFCG`t>d&H~XUWHnM`Wp!lURGNO;KM8G zhm@>&Rh=UR`!)4PMp%}p{(cP@lGNQb=u1{_ccY(0NKpqa1>+5M^kiU5S4$}nouLk= zwa-lT4GM^5sWU$Vf42H(ireIVVy=g?3*Pd(TIg}2rBKY_42 z>Twg`pnUa_uVKqw^|WuHzCe8`9HI-=AKe6Own+Ukg&d02A5yMQiTYI#atmZ~#oxbQ&D^9E&^`fLpxRIW~=)ZB;a=`;y_q<-iOy%p+Hw3t?@9!HBURqEYx zD6Cd*T?CmmYRhg&sa1!347_#fnI6DY&#M2SgqQ~P=}{2#SpBF8rae*1E<;nJ`f4}q zeX9O^9yB$n=hC{j*61<=%{ z-b<;0?dqvFp`k)jNS3}_|^&U#Ld99x04?~R_E4l+s8l@{3Ts2&}Xl|OonLy#L z`IYubnKgzePG#eh%QsPO?4%(!1O4I!cvcohMWbbK>iUY=Q&0mxt5~0~mbGt}Q zG_CHO(d0~o-m{vfcTt?vtXH8gN@GERi)hWebmzus`tt$%yk^Bh6c;oN6xEB>czy#7 z7c~=jXpGZ@X&mwVUD9mthKhL2TAIHlXr4I%(`C&kv=#G;W(ECZ!&OcHO2ALjd|!;d zWX-?-9|36wRzO;+W+6q5(lqzzRL$!ek0Btup-HuY^U^gU8DwT?_RWIxGc{|0x;e3GZ((1h`}hW9oa?`Y=H_L_Xn&yDcYU5#@; z98{pG-2#$A&5!#bv`EwWK7nxTdB$X9!{*%oQ?)#wZ?8VYBicVIrP?QAwpw!n zgYeP%Q{k)irn}lt`)mR99?)7*cH2R1I0J>w0{|Z=B!piF@tm3 z8U|KGY56pUkJd&~5I06EZG+JB+Hnsc^n!L8MM`3|RUd%wqIPMBI0s8OXMAAGW$jM- z@LkbXQdap@t)UTo*R)$t!6k{>YxHJH(th$BUQ5>YQ1mrLTil8wRhv5n!qT*hX78X1r!;& zr%j=}zx&$VOVC%U-9m1Dp#6$+#>%t~t6^Zdc95p^54BD<^c{Jm{rxy-Dzv#fz*wnW zNdwg??L9i|pjzv@0*p1X$C~VW-qix;o+7Nm~JG9xap`ug!!+&V((w@Er72VpUbdFw+Hl+bYuhu&b2>Y~U zv>4E@T}sI>1KPPufN4;BE#%Ey3?HY{DF2n#jRTU`+Cv9XGwKel1&K*FLPyfL>V6G} zfo?h>B~-fWjGho})_uDP=sk4z(}88bj!$2EPhG$a==0J=o|p~ z?rr!!TxT~3gb}(15k2TXF(qGic z=p7%YbD0CYmvm9IGb>(qPzz%cblEGQ;<9e%bQD)~pXPz`s;;39B-eDma$rlcZsaSd zPtm<}LoHP&Xtl!UD^2&L3LMvUlWPFxhHg|1P-N<^)1)X%=TGNYX6x>H08FlK!g(;> z(v21YZ=TL@AF}gx%`;Kl)m9bpR;9W`D`5lN}W1Z6+h5cnpq4UHL3{;i+ycMQECIrI%pLGu>*+{BG6_ccAuMH&6qT7M*+q zBrkLs?hw|hdmRd4ZMu|?K+>*T^A&`3=qB2u)~Wlo4U}EFuUHRwp<9>K3(_9lUgGH0 zC9Q$m`gDI&m}*eh?*;fnI%g$3Jgl2o4D&~HS7>SdmF^{_3B1<5MUR6?pGw07SG^V8 z-EMj@jYQn_Vj47<^*bs5$U~no2!HL@|G5-S@YJ8;(JaGDFQ-qdw|?q2fbr2kI)R$6 zUilVi{Pb5T&~rc^8;`z&dSBX9ct~GDapeGgI86@%_0jZ34AOt~DH;#!2kFBRte?@1 z#t=R85io`7i|OaXj_A(>fc>am5s%`SKEa>1tRB~|p|#f&dI4>hIjJ|(C+?KqV-Pll z>-PjeeS|)Qrk#;`i~on2^c6HljM9H0gof;~4`MLUaHt^Fe{RMi|*gSn^EUNkXSG33QuKsI^Y82?V7vXXh>$lTKtwf(h zAJcpK(k}Gf*XL29R;gb9B~(1nzof59nZEl&u$Sx4oCe=R{pIh0;*majG*ndR!|s8v zQolwDUsUOXXr-)LA5JgS8dmSn51LwiWCKvt={K!FQLkrceX~LT21QRF>n}|P$rF9j zEof@g&nknor+P;U*){1Mu7L8HzGW-=n)S(tf#SJ7hf<_o>I>39*{Wyh2)Q=B%m%{R z_1oz@t`7aSFF?|%XPc8?VV9l_g|u$HHHC|M^eO=ud-c}j?mqpW13=oZ-$rY51Ny79 zpLJ0G%|uu+q_3@l>|uQzy*@_tOT!`Ml|J+kYOnRpYaq;MNW2XOli~VzU~n}|?T0Wo zgMm)`ayMkMv^HQis1|_K!%##w;(o(ITHf(8oFgl|4O1P#=wnEn1~I+{PfAYmGwk{t zE;(Q*ryURn4VCm}^EZ4>&sczA?>0L)>-AG9J8YzU*ptq{Y1LP!ZU z>`0?rn4^Zd^fEbS_~HxHjvKbd0>uf#*c22e4R#A4?X=<84b;L7ag<#bVX#>U{z$_g zv{rS-@Tvpq&l;wW2IV=!0!p`xGKddBVYFdN6MPtBu>J>)=MD0wV838sT0j|V7(POK z9xfV6Y++2Cp^>&_Trzml?z4CUpLR(k82A*Exol7c!53EyO=d{DYWU&}D7iYq;Tu+AV`254AkQ-_M}ww&4ind)+lie*uaDLlBKm z3Jp(U!Cqt-a|`N=4Zb0B3NZ-S^*boR<&0!g=_{2$oaV<=sP#$Ll3K8ilWxp%?W zZ}|3C;2khj?W94#pkY281~FpznO@zm45bu*e{Fd4FgQ%CE7e?CTXpgxqHOmp@lY!$sw zkFjCRU_Z{@s|3jj_7HvIPO@LnSojosv<)O-?DiHEr`gkV09QCWZ7upD*zR;nM~`Ir z-@(u`Y!bbM&aw+OLd-e#t4$CS#Rk)+w`f-93M*pR(2sF_&$H%17AVeenTcUtxcw%<-#i@NZza#*U|i&O|nyVwp*7EFCb&CbPdEfQl4$ z87)bqv0Klg^*X!g9su89r}hFxIvZUB{tR|5Jr$YkOb*0ku}O4>KsI}F6r|;_OK9!o zCR;@di?>)s9KhtU>+XX6Hfu{u;&<2#Cs5|IoDvAT%YHo{lm#qXo)6MO_TCK$En;hb z0g7Vw_FTv=VYi(Dv{F_;c?A#HxnF^?j9p4;qUCHE?J#-BuBAO_k61AsmQ%snJOzqM zw$UEeSFzDFEUIREK7!sFc61IHYT3&I)auxKYhX(~yHrX?XEm^e9gzK)y-kCqC+s^X z;DkojndUlASuYwAG_efLh@Y|Zw?K9?JB^RN=d7SOUX$(YeIq(M z*c25&b+Uc)!QaJ>nhayQ*@=|8)W`0jZMpsI271H?SP2Ds2HEYG0BVSh{s+Q_+4&TI z9AWvp;iy;aWO_ZnX7^tKgVD&G*#Hyl8CWW@Ji>0Mp&b9QgmJ%E+8( zfoKmSGioXn?l&?sozU-T#Bsrp?qy_F(9)>4k=fb7MK-|5?A;H-KqGS=DKS<-M#fPMWQUE+5696S zY-HjNf-uC$%%VL^p+;u9B|Lw`$Y@Wa|EQ5U^bzblW@H*|Q9o{Ed?+vCgpv7~BBo(R zrkfVxP8%8PG_)h8yZH;WM;IAzXZjthNF!53ckme_lQRy;&l;JXblaT+0Lp%dGBUr> zM>8588GxlRMkd_?9yo7gGK0~60T$5-zp+N<(JJs=G&1~1T!uI!W1!T)OGf6)b137D z%tx<5pI~Hux&n`0hG#Nqkaz`x=x~9n5Ht&n*Nn_A+Cr0PWC|EqmSkk!@q`7*Muu|@ z^%Nts{Rljf3VH*|G}LP#_&O{nU^k4+yYzNUH!>IK?Ve#|7SmKX$H=Sb7#ylfqc?7P#ZDejyCeIxsvuGQD+ zC@3yAGVQy-Ut(ltk45`EBXf8<`0g8-g|yySYGek^!mtOp6u|&cW@PHufWF+wEMWcc z$3r9IUkf0Qj7-xHKw5!&fe!(dM#lA5^w$`fPw1Yg#ih9hfOSSjbPMHUBja%o3ZEDm z2MNkXBV+L&T>H$(+@sXtW+Rgw2gT2gOiCOSzr-b_uwN_WoI`t?kzsrN!PpLhM<_dR zZRs~AI$;r=E7ogdu6zLieMV+kG(C1k=7aHI956C6H3SVpfEDP6j7;oX@XRnQqp{dD`tBx%_bCX>CZ>wg zi9AfqGY@+FOw2iNDD*Tjm6X@yWn#iBOCiFx`MKtfH-{NrFeVq#ugf#pX{Oco{A9y2kM=At}lVt#)L{!=FA^QqtqGco@A zV903`6GBf@xQVebLT-eKSxpI!E|Df?J-O_RiD{=K?6W4u5b}08Zs7|QMY;e3X}AuV-PN$JsvCT8BpD3eS~2CWSwo0!rR=u0s%s@W)0ab*T+Sv}3f6w#vhbr6KW zfEy-e%L{lg6Xj6|$TBf8ju4P-V%#Y%k^_TjJ>e#<*fr4Qni%yf0L;UcqaW3}ZDJlx zfxJ7AM_F0#g zx6C+{4@?Z7;`3!D#`iT8mz$WSQBYKAVypvEuY%{T&|ht0p8p4+H6~^}B|p@Ho+4Fs zCMNAQuNkC*lBX(8LT=5NH^Tv>r8LV!oiP zpI5lXT(rM7F)L-L8(o>+@u-_z8Fw1bySg&(((icqyD}l}kQ?O6{5uhz2zF)S(&4Ei zuFRjklpJ&1m6u{(LGUeCX6INa zyz9!eO$A@EE2BsTU#TlI^G5(KcV%R@psR3YqG&f-l`9iSi8{5e%=E1ti>!Nf)7vabw=0l!J?I zOimLlyynKtw*lY`H>Q?;C??O1`Fu6_irtvkZvp5-H|E%90NUWjZ2JsyTih6CGJv+Z zG3Wn(=t7?xbBA{C4ZAUOQb2gko!NI9in81p9*u+UxHFMkpy;7HvoQd4)$Ytt5AKOZ zcP8RI1h%;|mbA&U&z-sX6@Zw`%=Whd(8tW=zlZ*VW@ghW$O$zwMW{Mn6}QYGxvrz*RTQ%w|gX$}uxlW@g>{08ndY&e038&deyqpszPG7broY!OV=JQD2jpWnR#$ z`k9$IxC53oo0${sP~2i>zRAWldtqjt%22*EGZuFNq}9y4N0YraGZX6wLG1uU3tk;& zX3&84PBU|A0u1RkGYXo%_L!O9=#uoAnGL%jr{B!{$kB^A$zQUzwTg#UOZXW>P8EWb|N8E(QRT2P3EF-pzw?eGK649?U{|O3WTiBh9P! zdoV}r(eLTOEGPgFFAwIurI73G!Gu#5e4qz2pB6oWJ(#QswxjU;L3lRfPSdCROmPry zmj}!R8kd(dpDqF7M@$0kE~;dX(tNF&IUNU*T4rN3tgUC7e}n8srsEPCTba-2qv&I- zKSQ6<;yp^j@Uob&15yGk>V6#!75K-W;s%Gj9ep2vPx*yC3{_K;6JW|akr}vD?>?o_ z=|}Uu;SKc6qd-@lknkD5HnYV%?V)NlQP634d<9|4G8 zXG}x)Z%^pVu-}tIw$?C0_T29<-^{%A4E-L=a=M%MGlAtOJelunA=8Ul`vc^7Gq>qy zw0sz`1yuVoOS^#h5VJlUwMOP|%KhwSVzVH*mr>9Q-((SH2{Tmel z0CUBn%?8C)i)#tcbj{*AB|aru1pNbHNfw;*uqD~zH_B8@v8a6l(Ww?`D%8>}mQ#+> zb&G*<0CU4)bQ~oyr&}b@dV7Y2VJ&Kz7Adn)%eHW(WRe_6i+VTb9FmFyvVtxQM>nmLar!eaAA8R=n~p2R7m=+_n6Y2Mq<5 zpXNbIp{35p8sCW`%OAFZvDh*=1{RiBcK-{;dzL$XLUG@6^(Sa7wX8Y_k_VQ3k#KjJ zCI1!dEw?N;K=wn+g|w&Uk>z7r&8o2E&xXAB{sgLCS{hqn zTdQULPKax>ob3jZcFSqB%GzP+6a}fBmR02aE=!9CXzaH9whkmcmXq5crPp#*C2D<^ z-~J6_`Yn5D@;hL;fgZy_%e9nyFl6b&(noaIa)%Z8M=ZaJ0L?4Qb99#IYs*cPnPVKS zq`|Fe^q+H}$#wL3O6zkQ9cx0P`{)Cgp~*b@jkTck7@gk@^Y@Rg2!meF(Jgim<~909 zN;B{t{qG-O_ZjWw1b_LDuA^jyL!*19vS2J3T|?W^?u{;_^Q!KTj<7_nbo3j}5c6QP z@E?dN8yyk}G3BFY525kl=z&V`KN`K;1wgBU>v+0iLw+f<(NU-%^t&kmJeWnxFGSqtN1Ry%yrhTC7VOQM|C0`hnr4^*^*4HqmCyNuWrwIUET1nKt*UU`&?H zzst~=Z8MHmuySmQ=|z=m!|uYhyJd6zXB2rh2Yb+X$Hv1KQu1vCG=sWp(@Sx+0-Juy znl7;kaz=5_#?A+g_igryP&}GvQ~fu}=Qcg`_HMC>_a!IV9HtD-mo~bqsI}Sb-VOB~ zHgg_AXs3w~sx85H{4`cd#Wz;+Miya(D^IioMg_TA4=9JW2_2D3wKyZWF$)K+~DqL13H zKLshrZ0FLO;)Lxh_8DZKwEeIEG-0;?(S#)2R{S$aBW#0cv=M2$cn72<*?PpnZH2ZO zH0LU^m46R~#kMvsC`xSeSL24fXPaqDKCxZh3tLKU*HE(31KX#&KvHHKMJJ{`vTYm# zDHXQwQBp~ztjCcDoAv zFKkOsKz6I`nHR94&307_@V47Vbb+M9b~dHtblIlRXS3V(^ey!D*sciqt`WHlH~P>w zWV<66e8aXTT5fq|Yvl^c*S2f_L}9c`qm?>WyUGut!Od>sAAsa;cVjd}U$(QLoU$u+ z0hDod%}z&?okY9k7vZKPyJhpxmuzRGk5j7MY+^{WOZo<-e>V!j=-AL{SgEvK+;f!$wpbXcL?INI@9WcLldLW}L(|L<+P1KS|` zo?QT?F;>`3=mTG+-P0w&TWvR)Hh9RNI=e~Lz*KLyg>q;H?5;$yCn6{CIDJ^(h^FAW2~t9|5hsBp8l$^oUjeF;Ty%=QcD zgY99zcDr&zJxLz3Oqyu=jUbc6p1jb7H{bc}E zWv@vG;}d%YZMbQ)-{lFBBxXXyh$88+M<%oai;KU3TG_s&r9Wel!CrA&Jx-X zf1R_D@{n$D7EGl@g>=qt?A)}<GOION?afK5eaHO;suACFu z3x-D=Sph8qR&gTeN>+1@kAu(}P61^O)^ke#MC~yrZ8hLO;Us+vz>S=O2@vy?Q}Heu zn>a0z5c7=VNEr;zIld22baD1lETfyV_B$~2aE{XQP%p=TRVJ%`&NDh7VSrTL#UTSHyuCa?eI|=;QKn0q7xzN_RjDaF{&}?12vAr|?XWgOFB!4?BFc0qnsJi)ckM++h-hu@fD# z9)pA}aA>C2WSK+NT}Uf;Sk?xPhYnUnXnf>QN@6M;Cia29(&39usMR_QQYvVj!=`1> zTkkM=45T$UsHEt7;t;wUeT@!3((-qc!{AZ;%I0(;!r?~%dZ@)w}8^q@!@*(c{yrmM&RxE*KAnk<5-pq*uIWt$_w&yWcx&L z{sG64UN9bVwA_o<0LOCL=X%(2BJByZb$wkN0wC6s~F+CV0mmK#{U?JIYI&CUTah#F~VX2O)67Z!tZlsM{HyoQ-+6r;g z(e7u6$#vXI2TtE|%>4tH@*JP%f~LUH<{AJOI*v|+iXz9w9&k{x;~%utT=&f*c??zvx<7#?fTO0!pLCOoqZ@&$>`-0(Y znDR4P+ZoAg0GLgf?mQI_{&}qt9_h zAV~Th&&)$H;5c;)`UV|`LT0|iH~f@48jWM8(E68Y?2Nx)pzGL6l(XtSR&)S%n#X=v z0PP-Quf)QL{bQ9;aD~^{gc$hHd+cgjtMwThMEk~k$Fgsr@EiLZedrF1{fIK65015@ zV{iP&4%4=#Lt_;izz{IDk~Vb(ja|qJQMx+m7Nc-;nm7zncc-=>$o6&moK9s5a+-1s z9EY98M!@)Br#oJd9pW_hAV`inZKVxv$DGW!KzZEhf-e-Fa4Mo_@}$#a3Xq?2+ER_i zD5t3uYrW)Da1M&%oxV!TYV&sh_5ubxvPU=0v^IKlB^W4Ng9Hp#HIwTNXH8 zI-Q_!L#tB~rG&LP-LeJjcBkJ*qp!p15oP&wI(|d$z&Px*=Q?OcoPsG#^2(`>zF4oF5@`%zmRo?`q8~6R6;0t%|-ZH>8bJe?m!h?H5LU#$5p)sr{*Mc?%d2yrP1D`jy zLWD*i?)CqVV7OZi=-cYYHBLh70q&|l;WmG+H|2gG;!gHQ5x^~?G`T?T%|B2Cao_kA z&<=C|o&#yYTr;hwhH(Aq_<~Sw(OF12!o7GNn2vF;Q113|?%|NP+VKq^IReTs?pw4f zcbez!+#x#%i{XAy0fzJ3 zpXrXhz>T1z1!B2bH0Qm@9ohx8aolkiU_(52=>PdC+(O!JeVOaW?t;)O+-Z~#ah3by za-g`zJ(UabU7EAiJJB?*bSaxUvl( zdCdKsz8Fuqcb9{*k-Me}wWr*Nbe3Whcla>yKI5)DMaMKWb0^T|x#!%AHDGMv{MekcYCk8$H^w6K3% z+8_$gaYK$MyvAv#L$CKZ(#;Izc!gpM82ZTmCul0jzXPpxxaJ8eHFZ)1BjPs^G zz`o#okuoMOI*;!M!zJf3O5#dz{#y=`YtCnA$(t>8wxv{@I%nM^bk;kku0XB9dE;`_ z9y=c$51XDi|3jOz8l892MQ?L9(d?_;`OPcP+wD9#1Vyj2H-%gJoM$@#MZa?*<;)E@ zvwWx@bY`-Fe#rTUd7vD2{%|@dN1Wdt1(H{+vyv99Upp_RF`Ch(oHA5QE<S}T^vy6k z&*k5lV7%>eLJY<`E{AD9Q@%^1CuHAs+58fX1ukWupjPNIM9+JX%M>>__>s#Q+KXM` zvS<=&l`hE?pQ&=$J|1|hUA$ePw#H>4TMUj`m%rDesB>{Dz$K}7X}tvt8(j9>LhZ3j z-c{6|xa6J!!bX?pbbjqq7bz`9HMw|hf=iycY@2{uv&-giFuZW7O##VE7yDuu(du&K z6ri=aZ1hEAyNm5A26OdJTGU>yOS8ylA=;!g%geA?-9Tf-DfDh8NxsXyuK`(^H^W=0YO#-j>bJQ;LmNtR(3hy^-sK3fWt?0-ZN`v9zv}%i~jU?iSCQM(cUJ4|c#$ zw|UhREV{#!jsj&qZxfB2?(+Wr03-#xWLkDDPmY14f!F>Ytbfe= zI;6Q5gR>bwLG&|TIT_Q;3#TQ;=e+Jou&IS7pa}2_UIOjRdCA**4J56+{!{Qw8?TU- z@Y{Kje?oKzubKv6oxBl>`*rc&?}UbKo{cqd_V6xIJgJwr)&(;AczZtw+ZP<`5#d3 zrW^lb`u@1{U(jdF%Q3UdnX(cI$UsQ~~!+iEX z;0@*vE1)ohpY;)Bhw?|!0`?JpeHBQK@_k05?-;*-Jo=9FS6kyAJ;5J2L`%pg`NFp$ z?G#`70J6jQYySnuY5rg?8pHW<6!(kZuZc$y$=^w{)-(Jav_5o}&y0h#bNp#@p+1T~ z5h;IG(fppjU}y~gGl~qJ=PT!;xWNC4QX6CWQ5%8cBHx1Mka2uF%pvjM@TcwrV?6)U zNE8Wt=ZTPZnLqhGIO+<2PZl&?<>%22agD!=9{5E5rw1T3iU0f8urQfF#R5eNKRyG{ zQu%t?hLy(8r{iF*^S!Gf>;}J+#`Wp^`4kY%;HOa-Jd?kbt{t1juc2^dHoxx})aURw z)Aaf#|8N~@xqKf=aK6RAp9_vW{zW>i;Wq#HJczl&Z_|P#pa1Vw*mRe#&I4ZoKTZmu zh5Y|Ya3>V;7t(yMn7^+Pd?kG6i(t6NZ+;KOeSRv16iZqDy5CSf;NK2{X=VJDJm4

    K{m};D2%sW>@m1^h{Ur6$G=50 z%6fiS7r->||DfFV$Nb-Vpy&zzP7X*K`D23MnWucVpHg3&_&3I&c*bv{1ej)i6Mgue z^WWftqlM3>EV~zc56V${$#ybQGw z{vZ#6G%-CQ82AIVqkEExgcDM4Hy#Doc?6udbt7})}naKYUIm=qzHH3#S;1>$s2o)N61`S4l6@M;)w zPO$k77!n1)NLaKc34$7-DOu1-NK*uXv>cQwaH1sFG{Fpd4z3ISqnYpxK_rdw(gmN< zS3g6L+6)z$0$m35W(mAQK$0zxeh5rCf>q@pxhZ&e2nurrzj&bWmcW)~(0PJ7Pw?Fq zc>Y0ix;ui&_hDha;8_zC-W9B*B>nB3NGnhI;}J zdY|7HaDRoprGg0=pnM>B-v^Clf=#JVQ7*XmIix%kte|`RkswhD_6mVZ1lTJDDSApR zt`ewgfV5g*L8+NFg4K^fS}Pc$D^e$z+X312f<&73H3+(B!u41XF$%Ju2)roMuuqeVKNnQd1KT3-qF~|+!O1jWdMU`FokVP_pd=S) z+64R8L4CWxaxWa!AuxEu7oCDxv5?j!aHqFzx8MhgG4u#ZUxTq%a6BE9eS&od(bq5d zZZv8Gg3tGYWKb}T4l)`NtT_t3!-6leA$mm6MtcZe;Vwq;TJVhsCK*}b@07A;67HA| zO|HTy9tt<%X3A)A7j}mLuvr*KTbDe9zx)8o{lb<$80smUL=zb=;knnK^cMEqflGXZ zUh#nDD@>!?!%wLB2YL?(v%f{{pfKbFYW_mbOyE5vTuyWK03rL7vUvlAI$Gxo5`IGo zdxwQRyHErR8M=c*g!5hlMX2z{EoeLGhD~RLQ@*69LugMgk#oWi zX>W3rFqZa#L<{S;gCs_%e1_t@F!y69ydZpI2JprTXDfl?qAzoMtJoLsHhcs zR6tst(3_5*su%uH2Qdx84THe@Sg55D$rEAG4-ncYlv8TRQ{fwQ4sMgMjE-V>CKOW^ zP_yt{CHkHVm(K#;7NI?j<6a1Vp-n&ROQDf=GPMc^P69=nFt`Yv?ZRf-WZxkyjRs?< zQ0opcUBUs1<#Y?XmIG6d@MlVO?-kyrnLwZL_yJJ%3q$FvKOi(^p*ASoNK%G`sjk2@ zESyTij1l3pMnHQdv<(NzYgQP(1~f*|XA2?QBr;O))Kw&n28Wv{nDz^}i;M~|nnm(A z(dZ%C@D0@O7kxknr+JDBGEjJlQq>^w7R4082p>^8Jr2I2<;|%1i7Y;Vh65s&p5h46 z&0$=vNYSoD`1g#6olNtRv!VuC`8+4;4g`uQ(Z`fe5F^U?1`yASE>o(;1<`6c5G+5;yd$zW z2Sxd!GC9pR?}~c-fTlnszlF|15$4Xg*F{{)^DY*>3WmZG5rRj!*F}k$P;p-*rG0Xx zqFOqI;DKm~D^Qe)Zmxi^a?z-CfO#n5MS${=XwP@(s}OzuFGN?0T*4r;N>ofs_|>9} zGc@0<5xqmlGS!MUnNie<9@5ssdQk*r&^Cy!oCeazBCE|Po`@FLLvN$Vk&aM#D%wLE z0-HqhDMa#2G=nDA%_2S}xIGuGp@qQ~QQrm>FGPP!;KP?9ubYtBDjG%#npK-<7NQEQ zRl8`zN`UGReXtotr)Xg+_`5_A^!@A>^*(^vJt7Ae*wiaZX+UG2Xg>w7`bC+vL3KcM zj`j=>iq6wlbV&4fK8j({J}%rnA}ZbpOs_-@w1oaz)I|q<7{#aLz+@6vcY%a;6+cLV zP&aWlWpTNS4L{-HnZ+}w1EPo6@f!5*7w>(9Mo)1LA2ly=@InCf7OR&)nveJZrJnhU zzpH^1Kd~kaln2BcZo!oY#fjxW=r4AoqnHng$J4koK-@hM?1AF8XJ`y!#S?ym(8J>8 zYM==gw?9Q|h}iWPNDCF$)6(=2@oW-$R2)AY2#<+11t2*t&iM-}PKbY`9|1opHd2bl zDe(s*sD+8g3c-F_Y_$R;;bOfH`XauLCTMx0Kw-LqnrHx}hN@m>RDM~Q{> z(vBAA{REfBh^vR7{=7K(I7lvt|DrihtoU!b122kGT%aOO{1a{az9e2d9yY~`kFA3G z1o4~!)GmuZoCm%u;_z*7_f@fZ3>vSA*H9KkqWGHxG$x5}v)=(?vUnDaw^PK+tKs!j zaorgdY2pJkNW3n#ID;#CLu`mZkuDBcgT4%L$Yh|%6n{u7ido{XJJFXd{*c~!IpPQO zO}#1JCk9EbIC~lzZ;AKNz#>oV6@$jx;=o~`zaus&=+%-hUU(n;cg3X?UMmnEI|u$k z@kTmnr%0?hguY_&x3p|gBHnf$eWl_UIv(tSc*`%Sm5YD(0E&m=4d20tN8%hg_$tH| zG|H+Jr|(5ymDscvMYZ^`CDhl5$8G~(t++0p@&f9_KD0tnFOFY~)&}t$I+gdacoW4q zo`^fb(AOyTqZr3i@yK(4X%ahrirO>rrxQ?X7T=|FWS)yRQxNxsc=!|;UWy+&KvS#O zs~pz1iS6bD;7OYj5*!U*&c8dd7fTKq&r6u)Vaq?rR?-SoN zfwW(&qp9A2_~$HKwL$TmEEqE+E*%Y$Veu3?lV?PHN)3`%;*boee=XiV24GC%%Y)zx z*YW-|0CXEaa}+4u#~+!2ntA+u+S~k&$N29rf^`4*T1qJJ9KV?6Ctl-MI{}6F_@8M1 zfzSB$A-~vIjAz$PMWg?C{Wz#NG=9?efE_S?#VDu<93M#2&YT*CVFc`0*Jh2iW9{zl z?sko#1VIEr6cJDX5sMH}KmkFKR>B|!R6syQz{cSFz5e%m9v;q|bKbsp?mg#?Gumns zDB-1jM+d-oYt4{*EBR>a4M6&|Hl8*>XS9CNz&oqWr$e!Qwa?};fck0sjt3ck?YE8) z^qh9^MhpgM^&ZLRi3FOaU&)>B;Mo%R?7 zCf;k?>A#`1G+9WlMJtnK?Lo%cWF|#vY)t0SDd)B(;gsWk(4^C1G4AV`5H=wz1 zk{=Do2PVcIz{@Zxpz6;|lkPLnWSJbLTEuLV$T~niG$|(6*CUe!6x)4ba$pc$GZVWY zI%{S>z)Cx?xHNqWOXz~}G%kb2snM&PjvJ!^X zORr2mQrYEelTlQh^u}a8Ew`&poD`7zt;w!3Al93BS%Kkq6Ej+L|1c?8g1H8hUzP&T zQs-g>%UJ0ivuD!0JH_#91#;pc|gKqs6GqBqV5Jc7cS|FMuNpx%9+K0qw+yJO1F{f=x^#OsIK&u z?mLCQqID&7RC|mrg#3oLbrtV`5U(3f&xt!aiw$6(psQ>^b5HkBzYs8qx;Go4eUk2@ z1PzmQOK3x#qANdzUYhQZ4QQw9n%soI_jQF%n0uhRPPbl$ZZNsLGj*oTV2doB-FOUU z>xM4_`-i$W^woZ(OFf3>v932A@AX92m;%N*I(u3pk)4ScE zp{r@+Oek~8)N?8%^)bz&RLaw)4NcITF>Outh-Xdj4F!U)X(Anb;b*!a6vFtM7E*xl zoaxOp^a4!d{s6J_ra`na4Ky7ZPIrl^CnYFeG)+P#nO?eNI&mU|x?=h_<$MO2wrmC2 zqD|jX22YIX2uh(zF@5qL)KX1*n1X$pX%wyd(oOfLgVTLePXX*7nAXtwLK&vR$uXO0 znr{pAEYpb9;G1n~ML&l3&~ya-)aWDAvR0t-*mPP?^z=_mPctCqnBKk!#9UMNHei@% zTHG1EeACS*pnZYq>1kkJX!?#8zeT3AUx8?`>B%zSe>WXLIgme0OUHplgQ>R(<}A$~ zE(gsMW)?4@l80GE8G0wpWLlSdni&oU`%`ANlr-a|H!J%a_&#P=yJGaTS$q{tbJpx1 zN07N_7NP@-OJ?h*g8gN)=9|!5F}qA&@gTD-C3?YT=PBM0Vm67EaiM1CD5)>X>;gsB zZ<;w!Wc-%d2LtfEXSRI>Op<8kwh}ax%>JOAY_ggD9wj}ent4$CE8XmKKWKm7>{>S{ zlWP_@42XGVJtILT-)tN?{0q#chl0~nGlBBBi_BaNL9N=XAr4KASzc>E)|y?T6<3{^ zH=X+Z&TQyex&zJZjiKO2vr(6z?kBUW(*g3?tdaf%5bMpR27~=qvu^#+d^5}Q1L$|N zZS;-%Vb*syKpM=X^$^X{+>CP8tj*uhQpCo*)(|q;n&0gTWe%E$41m~n=D~L0Yi}ME z4v<6Up${?WU|t>t$iwC(u29#>e0wFNIAZ?9nBs2E=5{jx<6@r8fN|9PdcV&0Lm!Q}h0mcV1*} z7ztg9&1W@7uf*JG1e#~&Edzk?+}vXbowrzOJ}MDJ%gnnOW3t?Q#w`%7HXlx3=}OMsBpiX$V)q3WyHeHW8{itTfN;jb_+1+{YunY?(ZinQsVmZh+63&>nW z;$a{bD@2Z_T(RW{nm39O?V#g(MU5|-uZmH@kiuGdjqK#0>}CrC9#wv&Ok@w`q(~r~ zR_dRj2~fs&p!0UGD8G1s(>3LiBf!6@97MJy8Bi zKH>}|gS>hvQ@MKrCbN`Hhk)7>r4R#{BIUM7AXY1*KcIQ5{E`XLYLur_z@k=}au_#I zoidcn{Z46=4C&u1OX4BL2W12;Bt9zJ{0fjyN(b6teO7vqZ|sZmSsyT}S6Y>$`Kr9@ z1W5fiWvg&7{H{zK1c84j4OgRSP`+P)K^ubuM?uEcpn=|{2Mye)bimGF&>B#)Hz=o^ znL`Fk_XEViz~c!xIU4*)Zs@}Xzx)dgoeVO_34g@kbw?0$HW)#%Sr>zob0PLogV0By z;;J{W>;;|N49Y1^e#{`F4*2c{UO&&(Gsu|(78ecLnd92uHdx~iPInDvO{Z&M@aIU( zr5l{v4r;ju-by@J@(c>d+4I6+x;BB>%CjfTc1bmlaxpHe_G|{i6;;Y+%mt}#hJkOe z>RtuJ4pI5907$56e-+TLs;Z)Z7p59VCrw{drBOOTxa#r?NO)ZpO+PhoL-k||Etexy zcPL*mQg!@nFvQ(eif=agP3e`9~R9PGm@cnzFI%y2G zAFDj)03%10PDcRbs_e(ZdU>jsluMtl>Tw;k3shDd@)oM*(;M!oYRw1C6{#YxL8fAr znK_7-s3wvZ;+d*)xoMPe9eB5lLiNir8EdrL z6ZnZnui`LTY}Bm*wk zsWtMWZ20#^F$IwOgVDJvP_tFnP>A55dh5Sv?9?Y>fN!r3n2+8eb#f&@9Mq}51Hn<< zs{vFFt2>ut&`JG?ez@z1dM|B>oz>r|mc>PF*AIMM)l>55E1<6UgKmOj>UpgI>aHF_ zkA>svI0+Z*g!-8dpdRWrzo9v)woSmGr}_sKJ)BZIkR!}X{rCuo2B?=%7Ud;%yWZe* zSzR;+5?)cCr81OY^<8>>hNx@30U4^UNk#9fdJxUsRa+O+Nju5v2|v(HQBTr9r&RTq zE--MeI?)bIp1Pt3Xy>czXgOG*wmgHTQ0;pFWS**9mP526^~ieQ6{{o3r&*$Q6EOHp zZB1|Z=jsm4fbc@?PPxpb>Yn5lD^u&qGUe)7lsB(`sUEW!qZMj*${nv%XQczbO5MCO zn%8PWO7wrD{>L4{RIB^tp!Zf?a};)}QO_>|?OOGRWtgi|+mm1To!Y<`^1fFm4+Z20 zwe4xJ_^4h=>+DbJlF=CathS?ry}qcQt%MZydiBL4K>VuSu@}_7sVymX^IhFD6g@{x zOR6e#(M+WupE;^An1Y+sRnwAIm2MhF<^0Dqr{AFGuBmB^=C~%gBTVU`sX)9QwF@OO zdY+oTOQFjt&Az2T@X}Pz1f;hnfD)g4H2Q#Cho z8;Hee5_aQ?#A{IAh(KH18=vAVcFx<))dMz2?v*OH)rtRoR-Jbo|mo z%{MPd_((H03BAXf3I3RSqKRrl8^0V)KIIPOYEtO-%F`@f2ifv9?%M%cpjmbc*QY|0 z^b~`Y8kY_r^Gahu!JgNe0$NK|Ys%@2gSQ%$Ga6fC3y&?W;31vX0&||mJ!yY%%DB%b z%y}6He1=Ni#!E}V$j5lfdQdrSd~pZ{&lrc2Q}V3w(LgZrHU2_LFn-3Etw z@SO2qw6zQ{{yYfR<-BpuB+LaGA8P@G3&vyV5q`;dK@UiM*|=Qa0_M76>~sxHka4#q z;1q1UFdjrhj6Ze*VyN-6dFWj=9(Mvwm~s6YXm-tbG;KY?jRze@@4E57TOrd8r|EzW!#@~G;SJq?}p}<@rXj;B^%dLy=97VWn0<}rW&`Hfyp#uD}OZU z#_ee{df#~YAE5TYIHVJ#$S|JP7`DhXF6)QEY~v1XF!<1T)nJJI$k>MV-j9uA$3wy= z#`~s0!yMzbA)u0LylW_okZ0VSo@n{T5iy|h)YyAC28)e<6i~RZy6cxM=vw|co|4V2 z{_N!dm?wYs{Tul9-7Lv(f2^A+g@fI@rSHSlD(WUYhoDy7f6#eS4&5I-$KdhqDT!cz zzPopKG$GyXz5^k?dz=P}W_EYWM6a;7&Ji45_Wn!-C$D-Nsx^%~tju@|y=x<=6W6EX z6DW75&&nkLPU|yv4CF}f(`z`G0AVDY%COCfN;zr-~+7TZlU%7h=;|O?-2Edh39vm-?XS0gI=^nqMi~kV=Z>? z18AHDGY0-0i|BcvmSEvXHSCENQM5n$^jF;8|28XY&E|vrx-)d{?D}JL48sN=DrDT) z^$JMuH0}a1cg50?XS-iD#(zr|MyK!KL@FJ6*37L2@;I_z4g=?~o^2N($q^ia1aimO zrd*7kU?^+Cea~+Eg5DWsM+?8RI41?Y3v4I(ZZERVlz)DS9k>s6mswK^9$aHZVVDbN z!A*f4&Ejp*i(yUa;Tp?MJ;CL?%{EdzKZU&<0ZXSceLAJkq_HrHi=?xX514$yd^dtx z4(l`ugSl)9t!wg_R{;i}v3BGwdd?gv%=Ur}B8P4%Yxo5kma*JE(6F2}+ll5SJ9rI{ z73{qTnw9Jn{epWflPNw{$2!q7@*OMHTZ8s{mR1am4{XbJDD$0#{SHZgu%J1(HVv%g z6y_{>FIvS~@$f$&w>3}k1T`D}vJW6_c^Yj}4sv7K9ozAx>%q{Tf0zi6L;TcWh~~gK z1tc7K`XV%kxl?;UI`OpbbV$SzzI!}aIP>o|Xk2)gMli`y?n&&|1m zaSagM`SEao9Ou&y0^|fgPt|oEJaHyCo#gGlLnTk1ItkLB;=4}(#EWO%f=u4r!5udA z;a>E#IL%usX^VHBV(=y(+X0H+;vNey z7tMJF5MubDAP5u7dlq6YkuN+9110g!w2DjS)5uwr!dq6ru&LaRlAY6dsUzmn`R)K( zT@-NRMIcki|D=NrpYl$7&@1AKIOzL~Yxe@9ls`44>&t_NL;G_68|C!AURd)SFpq>!<3PJW z=(Yt!p9_hjL8ekTN$=Mh;n$DA_$0*c1jr8|U>FeW#O&AT*^9mV!xo3cWfTr|5QXhv z;VAAP&&pwOCY=f8Bo@B`r;}pf5Rmp1`%{7BDRJF5Q1KG=9a5l-x7fr80{e(3hXL`l z=%E7QS<$8=`1*<|hQRO>7f@2VzxZzwnsZ`bN{|c?zdi-}d2zWP*oTR(R5ubO_I?Vn zlAw{A1>ssKw5JUBeXkUprl(hL;G^BUw8?kXGAXba+ z(IE3yT=fSetq~dJJ=Ka%Er3ubnr{QcAL3aGem97&PSDU&x;q^pR?-d16SkHfEykT| zBW2A2f~~Z~0a6^4iYfAGFR|&EJ0z72CEu-s)R&eHj?%`yXbwwbD2K~Q+AO1YM6xFz zo3k`%0wna1Ceq0oC#9U@!1t7Hva+0n~ zUA!Ug4QV=gIwGWqpP6=&^RG}hO4>(P`6hl~3B+zmfqL4_L`zj4pu|1tya2>RXf(jeo+4zWQgeD0mr2)p;M$i<%D+MF zrL?#QbgGcX_@Y-Oc`gI~E9nS@mS0N=!y)|}DIgVt)zX_Z5PK_K&c@(3Nplf{-zCde zAofE_qcorf>18Y$OZhP+iCW1IPjfujtmVtj5Z_kbLl2mPvJ-t9?c^68K(v?l``~6d zB#)sGqJwOuL(frG>;R;PeBc+5IVlImV9-recKvh1Y3NiC4(kV1GyPhRUn+6n|Gj z>_SEGXn?#_c=p5`ek;t$5Lfhr;!a;s`>0rZ1wA`uHaUsym4O4$xGEc2Ll|#mZ7q7i z%Bi{NMJZ=f(n-9s$97mIPgy<)w5ye|IpAw+;M4$NTn#+w<$uQD+;o5h85B{lBg`Oa zFQ_CMq~8R;B)vhb6<{0TxLe+N*AI+z>}peU<^#MV0RXPB@?A0azSY^|}c~PpV?Q zf#;=~=R@bW;jh^{XZ)YBnL>Lrms0ZNtUXjZH`|J`e&^JaV}0%!N;RI>sVzq44=%?4 z1?%;+vRG*10#1u&P@etb=KsPHOWY~iymaSE{9m?~4jWqjmnUFWJbMZFRkJCIyQ9HX2ck&Cnyx6!j6 zZy?kWc9b?v&Mf#GlyzagbR^1AcCQkRCzFjp{1p4~0vKMb6~%Hw*w`y*BA9HyxyOR0amT1jDYpxNg!|V z-iOZ{ACRYRQzSixw|mUT=N*qeV|J(K7<}I4+8oSwPap>S=L`d(12-B#RNtF|k(TTO z#iOj4I3DxXEcO@%?b+l{7(B$PDO7QUT^)rvHB1IJO*X(|8*ng&U2`pzd zqA&IAJ?&t;Iho{TnY*?LEo|rcQq|%7SaJ$4=tNGSg}o``Z;?(0r^PPxWnL061o|zV zN|DB8%}>IJ%RBUes4Fn z!NY^h|2gLE5IehxITsw)iP591H~lJ>D;wwvqHfIgJ*axI#*@L+oBctj$@nm<*XW&L zOES^(V|$2A06R7b%>{OuT+o-<{0Be}X1VJj=2ccid6MC*Ed?Djm<2tUGg*EX2D6xL z4!v=+SwEzu;}l5kY>zG7c$5B@KEYm9EU*X!KCs$M{GC#o4ykz>E2>7l!+eAj41#e!<0kN#IjzyLG3mhN&ewDmQJ4C z6t;0b7^brECSZ}qmeIX{O&)zm?z5P+(Cq=sEcq#aCy$@<8wO+W1shDBuu^s)5LC+8 zpe0~i%^K^;-};vMkxf6d9_ujqg{5}}Uu*vC8Kkh`wN#d6%NI~F&k;WIEgEP3oT7y; zyx%uKp5%%90O`r+rGV%u{`?vS{rSeBxFqNJ6AFq1@Rqc~InTSu7!2WK=rI|}$4}A& zG>V&2W$aBJwHHRb#ce6n9nCk;4&fg63dCR{Pu+-HB8eNgfp0Qzdk+X%+>Jsk*?jSQ zfIQ@l)Bt(JvuX44ln XFJ>N!|jvx3{%FX}C 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 THx<%^N!UjI{~z4kkNx}?_`M>r delta 152733 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 diff --git a/TrafficLightsPlus/Debug/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o b/TrafficLightsPlus/Debug/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o index de5de2a2a61b1254fb2c5cccfa0dd0aabfad2a8c..4970f05db752bd568e39385444b36a80fd279f5f 100644 GIT binary patch delta 153289 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%0A1b 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 delta 153273 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%0D(@RmI-4%*{byJtbY2jw{HSMoNM^$N`~POx@U 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 b?86TvH-%da0+ezzz>w5TQwH+9V9ozO@vM@n diff --git a/TrafficLightsPlus/Debug/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.o b/TrafficLightsPlus/Debug/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.o index a02451cb858e00dac08f85c7211b13f7ed18bb04..c45cdd2483771a3c0f231869b270c775a076fae2 100644 GIT binary patch delta 151540 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 z%0D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[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ͬ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 EAE|RldH?_b delta 151464 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�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%0D{1kZCFFh$x@=+LCfIUA_?VJLIYKvzx!e>c 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�EY0hIYR5*v z&Z|}&gM~?|@8ozQ$*MLZP%fy}(j`$BRX6GW*c8>#1T>da%|BAQ^0Mkn+5)7i=F;qw zrfMe7UQw;5&~&=$4>fpSRh3ivFGCfO4-uIvt{%o@sot9of@`Xuo`LsuRT1U3vsL{H z`00jfi0%Q%QDyuN@|&vJ&p@85TK_5RyrnAPLqeWPH3$jT+o~;xL7%T`qI2H`s#Xnf z3RU;1IK4;>FKAk{Q?I6r zXYAGgP^q?qdi@*dIjXx}g9%RR7CLEjM4e9cna=8tcR}EyKIsnSUDeI>@pMzaLctPu z^)@qL9%>Ig1bC{YL11=N{n=Y^nU^|>=D}m?EwrNbRv)H3vyVE_`Z6T>s()^PYJTb; zY|!&pk5KjGarM{Jz%)S33;;!-x@sR_LF((2T05cEH=_ww?_>ZLqTaX%*oi&S5rvg%Xn6CyB+QdhQZ0-I>HGwu3f)K{q7Jyw05 z2gk;#9ms3(>fh+9iqq0@L&Alq^U} zQm^(soXfKs=wRt3^&DCeURJZ{fM=>Ylaf(s>Kr~`SJj10z|T-?#xR(vK1ad*EcNFM z2)L$xUJd=Os}GJsm27n*75LszzyA?>IqFFiBE6~hTmyn!^?T1C;g;I16wLC}|8&8G z+v+9OF|_&WHd>_?sBhC1_l4>!7C5a)y@pQj-%%%e0#>Z9F9XvO^_{tZm8z%dz~-*H zpcYKa)QvQkm#Z6SxmKahr9eiddMEuV?y2<~p~Zdm<`mFXsSOvwtXln95l|kea}QWy zMU6W20j#K1^IieBhw5tD64j}BSHP`aZA)im8`S-@h-y@C`v?|3QvX$kUX%I&t@fJL z%ZotJq8_ID)mC+IF6?bn%aei9uKr&T#CO1>!0c34Ss<@VE#C&%WA)A{bZJ$$`aR00 z_ozi7z7T;ur*?2OR-N$-B7CX5yn zr!--X=tXJjqR>QZM(Jl9qp5cRuUJjdX?QD6vrGta@tRq5@#1OC^u-W&M$<)cg#=CB zQD~N^dGisJKdafd9R%kzDk~iaIIpp5hJTVY15_uGtXa|vWiDveNx|)+W_u)>6pi(J zD0)e=HyzLHvWB+=TBK@v=mx7a%{!|h;)-Sm<%iQXV+$bns>X961ZHUV%|I_xQ%9TH zEKLpW6q|falSLbv>l*iUR#0SXW>C@o4b56Q1ec?+Uk0W(HJR(t%hmi`4EkFd*Xxj* zr@7Vw!rK}#CE4>efs{%v&}^Z|U!i6Xl^_;rygmf8I~qk92#PgtdcwdGP2O1$lxl>u z=(?*Zr4M$Q=Bp$0Z7mL~ETn+vL(M_j_19^NRsvS9Y0F2`pgBVe^+wI=YN+-|vn&Y8G-);^ z!xzn(^Oy!_Om5LIS@316=560^3V6F`3()D(1kM1@#~R09;Mi_WS2vm-O#{`BJ<$Z+ zhi1JRMLP!jG#>Qf>(?x$n?nXPKR?3YQw{z?8t;;(*MLVbsChyk>LE=?3Rn+oHr8Qq zM6=wtp}@vEnKlHr+5`V$%uc&u3e>dMR(%EC9kiOC&~w!K#scP~jix`|I-=b=4lA9t z2k3qw7wu|FtGH_8s8ZNXyM`8%?%KDPgTO-@PoFGL?Mp%6a#Z`;VKiRapXk{h)2`eD z0&nfGl`=*?+U!Rl^wn;C7mc6xJNlsbYm@$fwa2xe(Dpn)n?PUMKyCU|5Cmy;0%&nU z`;;c!U~OA8tPRngPlGL?+AlPKg=s^=!0erD6dJkaiI z0DX;CN1K#d?Uwf-{-L&94qw!1`{~Gaqt=lQm_O1!q(YY_ZTcz@G;5b!hrkx?q#6vi zYP;VAU7I$R4pg*jCz^oLp*>IWuuknO{ZPA0n@N?VkF||z&~;n2KOKi@J=zbh!t5v7 zl-U^V)mr_acc0dI8({s~UnovGpxs@L=Bc)RCz@y44ZlLsL9K?Sjv?*taL66jPCW$? zBU-x`(0i_R`2=!DwHK*qVodva1hgO5?tcuP6WWy&ys_0;SM|dgb~>#GDC~9XsM^9o zcaV07j=D8%;O3+oXa)Td-3vo#oON!rXLr#tcY%$o&PqREH{J4Q;O(xvyb4dmLs$I? z=sa~h{s!!*PNV_MODEn1LC17AzXgi7t}6*BKDs&9_h5yuE~yw@KV9odxW-@CbQKiG zbuXzvAE0YvLA5|#7VX=DbcVUm@Py7p-DO**nmpKzErcZ;N%e zDHl+p3#XrYsjimZp9w|~}-ABEkc%=Jj667}N3Rh#WS!beO zcZ-hgiKo@7^Ns}XHrexbBV;(gjncF>Rh7mm}faRJOpuasi&i2ep8 zFrD>#_2B8E(1+7{*j2A(z(P0uJMRGKu0Oj9Og;38=fTZW|BA2YU7q!uL5%t8CuV_} zpMK6NXz#CIbpZIs^(Hz77NGx&HvU2SHEz)Cgg%k>kiq&YCkP19ul7O{s-MAu*pvE= zR0kNY|M?3LMCf08j$WkR`v*AYlzw_6ct+`czJf!d^_wV$605&xb;D?!zG)w{h}Sz^ z0`JrMTB`mzqn||^p#*&tWhBn&{pUi`dHovNAtdR)kAX7DdU+yX7xW%fYA6xAf~KplP1|1uFh1(Em+=-_vey0z3m+G_W?9g5P$>|uZ&`W%W z%XrpJwEC#l&)*IOYxRM{AbY6aIvq;X=`H^Swe*u$gL8x4)BtrG^;L9yv01CsQ8l~kXeO$V*|^%+*W zHETdW&kWQ-{Y?#AF{Dr50&c_l0!kE(=*3Kkc&=ys4x>l)`E;z`(GWWUeVq(veg)Gb z20w}wIU9zkcGJbs{TX1chC^!f+ziFbK;Uk8jrJoRhNBcm^)!fvfO6FELljM*UWUUI zoH}N3-3T{%8-CdYZaxO305D&}EjM_}&#;pUeEkjcsdDwW;k!b3Ex<4w3-N)5dtML` zWLSS61SbqjihvSqc=S3@LJV@s^@SQf2!}~whEKkSpp%BZwy-nY@H~^Sw7-os zND?6alws{t5Jnl&3(!Ox=E^Y`XUKjPY~l^O=Ad`luz_;MXAE=Bph+1I%-VOYg&@=MDc-a^-?y?VnKeqM`o|j7Tv!Q{M8D;d3*s04^IU*MjL7!n5?*M(KVXHl?$TH;6+jq?%xCWPAHzd>d@rI#_ z{sJV&V4#DcHx0&JpvyHxQTpbVLG}h1!V3(S>9Cx&&~Q5*Op6R>X*R!O2-pIg zV#9nUC`t@dsKB_?@TVB6-8Fn42+T4=@N+!8a>IR!;a3=#?r16vhMgd|XE;0yz59lb z>FupD^wXX24-AWhu;roQ$!p+JXE;Njt9pZwt|e%&8kiCYY&5)7faZ~53e_Sv85jnz zX*S%y0-IV4dt%VE8m5wJZH5jf(6<|&21A(+!(v)Kbs8j8iPvTDJ`G7dhARpTJ~42@ zz^vC`S&OF6@RJm3_ZxC;@nd;rI4VSM&|rPA2ZTe0DYQr#Hhk9&`Vm9V28e%dC|e1f zQN!*YXgX%NU<25=p_(>56NYyv^l586dKG@QGag$6Onc+}QgCrF%Kt{s(HJ)ea-EH7 zd*K;3W_7bpc8%j+TVgt47U6M~IP7K0$fI6_I$P@|0Yabd;` zSMWS(T#56Clf#XZN--E=T#`ezc#+0G>d`%A99V{4jFCSdB4UlZXJIhTc!Y`|;*C72 z-aBm^)xvvcj6D>xIBR5l3c2Tu-_vLIym50s29u2Z8&Eshc<&^BPZx~%s}20tje3d) zTsF?z0xeRF{S<3WGnzi4Yb~!Bmy;9HjYUHcan<-j4d^qBgZsfW(-@=xMV7HS9o()N zA76*P*Nqvw!R@y3U7Bz5je`xKD=;pk$YP-}j@DE~#yvTJ-7$WY3$GU&4?G85iE&mc z1eF@6Qy}54(GWnv-7=$>Kf2{c5q;Myj01F5snY0j0LI)i{`DA4?;B^;K}3}?i>9<{ z<4p?uJ}{cQF<4{V5CP0uqaOtt9~#eniKfoDX&N-FH=1a6Z!q5T0nbJwmrf2nGV-W; zuE|(OPubdR%yI_P7UPHS1K4VuOEYSl@l7g9Xg9vT6pyRJICKftcN(A4tJY<#rZRxX z#!nW)rf%cY$*`%%_~RjH|HOD}C&+t^b{|1*pV3VQlzyXUC+G%@>u8#MYP@a-@z0D4 zDf%;LHGVSzZbQb0+W;Ik&Y`12BgP5(l|DD->;ulIF?$@3V$3*~LU7|o9+gx~7^_6U zv^ANmptCc%O3>Jwidi6VFcndN)6sM@6TWaVWm6r%5tFw9D9)z0sn*xU)K-JW)nr{u z0bMuK+dUBIZpx*lyN78XT?FE3il_3bqo$AO5SW)~`6LV;Gr3;{p|2@n3NZal|7?b# z{wDnuzyeL*eGXfSyK@mSwCm0e+Vw;O>V8wH^~%F3DacL5jt&f!E|j7C08z*j?nq; z6w^N17F;rItcHlorVpvMC)H%X60kH=)r(+y#q{S*sGn}ykqg*W(-J52GE9~3fL$}a z;s(s?rdXPnvrW-7_1`c}m%?2+roE0JxM^Z8h7q}@m8F2)GOhjP6}*3Wrp3E~bKCR* zZ4&ZL;pjxrXjtcfmOiRhLrKW>asBza+MWuXY zCZB&mUT)g^18k`L()qaK)MP@#5> z$@e7~Q)_ztTMRxly?zjE>P(xdbh+L%nXc<-FzvYp@r|aB_#k*>YPgSHlj*()1kENd zT4lGGdg4IWYRZ@kv)fD_bo#m7lt&kXbeKBnYu0H>ZUu_9%k;i0*gQ6Ue-cf%>6dk2 z(__j%1U64hUak<>Yx;nGtbL}hH$%04Q#D012TU3YBRw_63Sr?h)09`hbkO8Waf2b# z=RFWOZ2IsJ%pNgqb_eXai8Bmk#!Uz5^`9`6`apuM)m%UmtDTus1)tcPN2Y+n!TibR z_{lq(FRcR1$-KB7gh$NPC1{+@DYT$+F_#%Y;A-AOhtJ&184rQ!ZvKSAULNNCl*IBh zOXs6^)a+XYoxIHRR)GANx#b8{^EPh^fOsFX^~W5r@ij-$F=9WndOm>u=C|n##c^|W z6b1v#L6y)c(A@O~&SuB_2h* z`2n3eJ8h2n8-!=f-gn@=1hcUagNf#4R8e)-Jo`;3bIv@T0)gkv{*)O`G9RO=^<;CE z9k^UD+f&8QMf0cE(4?5%5+LuAIk?^TP~EFm=@ihVnHNwM#8vZj@=S)=i{6GzbK_SK zlx6m&%jd6|=i340x_OLZ8QEqP8<;oD;hWLRF$dg*)i=$L=D>HkW)}{4-ZK9{^LUW?wfTdz_ZHy11+4Y%}px69+=PDVz9TFg)0g+p7- ze-(qU&HP0JG;BA2Njc39^YK&+cA9_kZK$`g?x1S99&_Fl@O)xE5|5_W96`0)eP#|7 zx%QhcctgN|`RN;A^3+^L0s3d=U#Pfh(ER=`m^otJKufFV=50$LeAN75J>-m;N2%^) z+`JBEs<2n=VAGS-g!?;g75VP8|yTR6?$71dZY2N_*0p) zucfyUy7*a6?}TRlmbh7f9k-;Ufn|W@3pMNuw2Zt2Q-Um&l*2z^`HbpygDshrfQ4Aj zQ|v0#vdaYFVHVs>i>HIQ`p0ae7!-gnJ`btnlTXLD; z7Gnwb-P>qmb)_WaY0E!ff%O?n*;)8H!Lolh$Pz7Pib`hP}rqYs1>GgY-`BVdT-}2}q3|3hle1pMiOX@y2=7D7=RoB#5z6=Ab){@~v zHL4FSc{AbrI!mW5M(Zsxlz?ln*wRyNwD?iB>XGGd%C`i?Tjo54XGbjZ2zcnZ#V;HRk6J7Rpcu0R&=VZD_^HvGu(;75o7v9m zpqbHb-d@Ta+s}(y3|k!L@vlI<^SqxwgIt$+Tj-AjT<7I?qH&woLIu9=^FnCX>@ly( z+68*gdD;VLj?VkQ3#NI^TQ7&E$L4LK%)0ly$$vs8pLxE!K<_(moa&|g=1r!>n*Y52 zb9CKtSyx>=GqvH!wCTuFvt`z^_ul(4v$C?~Do4XId($44ipT~5Wg}ZeWvVPe0TqxT z0y0z(P?oY3QH1w<`s;k|y=VW{z2}^Je?QVm4nd4n$zU4Hm>2_H2;)Z<%noIEP{bmP zF}4b-g)>sjK#5?yeGDj(3|9)jM=?y>9Z)fr!KPGU9OIpH;15(v|fze1Y_G=6mPiWD|VBG|_CdMtQ<8Ef$?E=#l z#&Rluy3UZ9(YnDXq_^8G##NfGv@<;DF#Hb2nR#$mCu3hTTDKVqRMB;ZF^B%F-Nh)q z5Atrt&jS119OyNBO@L$y6QkM&bUI^nF+?E zM6{fk_X~jH>|j1v4Q*VQuh4ENSLO?UfsGsU)**E6VJd0SvzOUPcbNxM*aC_J%m~_n z?#XI0>jzZ+QLYLRyPuGXJEb1FwartKq+&_G_)=-?}R|}i_9n?z$NBybUMyuX0a9GDw*$20qZKJF$02Xne#6~ zzpKnq2hBC=nAyS5x}Ld-HXSuE_qc-a8Z(O0Q=Lp_IuZLebN+o$++jXVIixP;G&+>7 zn^`{E9 zTKKYr6lwEgl}&+${w%k6a0y_o`wgu?R$&HO2U!Q7figiXK?z#Htev?};Rz05G5L^t zh*d~0)59!2ee^m&RV-QBLN_22ZBr8=7rctc4uh5ESy_^Be7*^{x zh(E$&6@qsxYXLohajc_MrW((hUk-f}U_JCrWSyom;v`npGmz&v?+nr?KAr8p@=z-sM7I1}lqVW0|b}7lE0@+W#srvstU? zGj)n}m{tR)S&!%`IKz7L4Up%s4mDvcm-QUw=kr*Lsxg-DU~y@iY60s<3Fyy4eTXk) z9c+S#B39u%sCbTbfr?hnvs@{_Sj_TkhuI~p$%mouMb>nhL0@7u(g81JtVk+%Drdbx z%ZCcqTp0*1vx?pUN+s(hIapV*;s!BR&0KPS?xY%mT|k*0o&7xy$mD zW9%L)hoXf2tU#It46y1bg+Iuu3ImfN)_DOG8)j|jh4A~VSrmMGz?!lZ8jY}=sEY9+ zYvF6~%P1?IiZ>py+AG2HG0V^mL1U~94w_v*VJ+T(<~VD78m{gH>x)|u=)^Am1BA|O zCks?_VQ-;RL|xfhdd;}8HB=0=hh0m>347Ur%h9=yeSoSE-Pt40gUf#Qv-EoRVCyqL zcYxhOb8b&|JU#VZ>?R5@`?ALuJ0QuA{VSc%;?Lel_gDb?tG7WP$S$OUl!NTx-ykW7 z9ngRa8O;8M<}e}bFE&D_L+lS|1$LNynpR+;>^)SY9>zXa4Z3i)mXhHS>@8Hr8_BMw za{!{)Zhg=&n!S-~?_$_brcTE$^doG;D_|4L#=7;XDRJzm9-zjvD`-}k#Ga7=g_GIu zKMTU6>|;k^ObUC=5nvu;uMDW_o9p0T!O%(ei~=C0vA>~(SUTJJD`=g;{+B+g*rjnie5n5I38`y_2rJCJc z1cDm&bGtxrg&jv{;n%X${-HGPRkoC>V(QqPXE0dL{)DQ!8rWBNLEts^D!Ryx>^1-5 z=4@iGp^0BJTapYvwXiQzsp55ZI0YGQuyhjp@5BjM1}mI73#Wk4 zg`+zUOjpkOI$*kS0;p7C4`75Ff-@M*+ZKju)!uri5^Qc@9_m5GU#r=yaG9u^T9%oNiiQhH=Uh;hAvG|EA)i zMR1g_!fTNZ&I=5{D2@|NkD@u&OQ4V8=yL#$a1K%tN-U>&CqNu$f+i>NoGIT!wFFKP zt^N}^uPlU!B#uP}Ba%5Ln)e*#{6kx5QaG-^W9%5G{v+s{%6YXE1jjjt!-08%^DDij zPI4SUpMoNdBcQN;IwzYR%?wT#{hThFV}BZ*r#PR{%kng*h3W#%aH^?NBZsq)vX8kO z2_0*c$C1mRZ$3xl4Y~r(v2P*bEJv>cvqH|lm!WnMXNC^o9OoL9p`GXS(YXu7oH0iw z2unE2c4DxUGnIlK7dZQqq1#1HF1h;>CwV>ClyUOC(JJSxwu5&CXWJ3bUFLjt5}=Y3 zH3CDcI1z*3QqAE|U2_d*E6tOyaQbP-MlI(e-Cb8XFVRkbI*yI9J@uUQ(-g#Q;Dp}9 z;5E*xbdqHw=TtGcHF0*(TD_T5J{2NbIQm;axz35X4#FFpV=sZ}P0l(x+@qBd zb1)xj-{R!afh_GD+xwvF;OG*;rIYhD1K>92H`4wN=j%Gy(#0vi@(iB8ZqE9>FuRB2 zd;s3-|2B3f%5;LMdu;kMo{42>Ut83RpP6SxvjU2RXm_0A+~tI|BlTIXgDO zmiru!-9UN3nOy<#Bb=ZA0?&sWl@m}#IW7ipdBk~XIZz&RlAWgE`5Wg5m>8VkjHE!W z6PL3byq&p2+aTA4dxVM*t}94_8CmM;yM~6nc#PxMTFh`Ewhx z;NSr6&odz+koy6p@eXqH$H6;@Yot|kFn9W|&?$sFm9j2}xa(*td6?@R3}r&O>FsER zagQ$rW;oZK3ztN2BlYNvFBUFI;r>fAfn!`w6k4g=^;>~* zoI7rU+9$ZLq@#6`dm$DQ(zq&G`J{9IC`BuS>+qqAm&v{L6ST?V8Y>_$n|r7Pgr~S) zctONz?#s0M>JxvIG9C&AuoZp?ZR z)^NYg!`KyW=>>?d<<6$nQyurEeHg3fI??Wx2JWslpj_i_q>w`+w^|33CT?K@P@1_- zQ-IRK)y{$uH@FKWaO_QP=wXO&U}`D&z)qPv=Pq=cVrK=8R0&m?B_%7y4Qg-%Keho<&U_1lqY@6?Fs`J z;~t>J%oFb9ix?Z{4x~fG1b22N{OrVwBquoY=2POpg*Uzks=4xFDLUZBJ05W6!90i8 z2J{`^X=8!m$?KsaL@!^1i$oG^6z6_0u*@f1b-QKmc!dE5-tO zz7F{1Aa9x(rkGG@;PC=?T(irKAhM3 z-_(v5V*_d=FOVwcqIjk;w4!-iy&)-v=T0HQBfJWlw8rw*o`bbD8CV z%h?3E`MeW5aK{z!u2bCZEHC;v2nu=YJ%CcgdnFWH&hZ*&(c!`8dAq1au9#O&@1PRi z+Zn(q<$XzIS{Ha(5!~ItYoJiw zHQv2+5H|8&q2yx|FVuuqGj9z|<63wjv}U``iwHsM2JaCqHE;56e*w_SdwC@!weeKH z!`-)d2HGgl&RhE_S{=OP-=SzH@2fd5_ckx}19Up>@CqM6sV?4^h3M_&@#$64$19|| z+q=Ah7*O2fZKU{oKd+bS(FS<&RIfY83;PX{hIm@abPe;iIRo71Ju@3)4|qSUgV#oQ z-dmyQLtZh>zeaig{r>b3@Auij9OG$dQuV~a+uVcZIPW3F6eoC{?|{OIU+^tDo%uJO zz(`Onju;W$6-AaG9bQ}aM^lCPTs z%ryQYs?JX5x4j9>41W7uv@-cSC{dopucZ2bZ2pROfq9BQcN|fryn z0-%%Mft8(O%5DB~H&EQ+YiUl|#a~Ay!QK4%6pHQPzfa4OUVigB$nE35FblW9UH<>* zY?FKZUnsiV&p%3UrUCwpmmqMEf4d)ChWK0EF*eLU?*(7n=g+1v_5*$~g$PFYAODNi zLw;#B>~xIsb+pKM#IL4I^<#cl6?(_`TZ_Q-3I81m1&;I2ZH2)6exH$2fPmoQkMZGNbvjv5C#jrDTVkD!S@u2 zJS3Q_fEI@Z*D1LaDhLjRz%apDd=RFD3v_l|^a#OzG9prNma>9T0_HEUK3Xtk0z6{` z{5*=L9}(10J~vh{5Q|ovz@h~2c!7})`AHC@(Ofi95Jitnk|2p3oGkd*e|)YZzY$VX z1)T42$&L#;j{=+!s8YcBq@X(-;?e~DR7a35*b)tpA^1B41et>M6n)JS{F(=CvjtyJ zndBM4lMa9!ffuECa|O>)fHzOjNr{hqL0B0yDG+R@TBbsQ`vHI=f!;yqahwy(xe7Mt z1>aE_YO&ze5)hUOx)RZOLExo<78eCoq|gaDNxf? zu1XL=Pjt1QkT?GSjb20^Fb*jo7Twm?Gr9_|SKNTPc0ERMJ zh0jr$yO(ft4_ZFLMGG4@ER_nDF(-P%T_|gbKnUh5qEHDB+_Q(TWyc-vqiC zA@dVRI3f(23wOl|mB&CHC;a{i#u6MtBkizA6e?(ITas|}X@F!Qn-Vrhg}raVv#G*f zI_&JY(6t3Roe-{B0KHEN>nS^!Cj6J`gwusNgqb1SvH_S`LI&;1$rcJ0q4Sh*Q#zD6 zEfmsO!)Juz{}%c}XPQRk3LT|1$;lVK^f}}f2-iMutgdr`EG$MS4f@!0|H;16_BVoh~ zVEtG)^);$?9ut1@IdGl`7gM$LxX?~}2PcFUN{Ts&cyh3D7VSO+-Y%m1F3`|bw18@h z_K04hP~=|GYtzAWpXk$E$aNR(xsT5MqGB@ydWZ@?2Ic`#>j3~S(b`84M5vO% z^A|5lw8GE?(Y!3+B#K6%)RZLA2z}6#MfXntq=>GifZ~|QgT6_rqP4WdIWF4p9WYOb zoK}I&Nl|tqI@3hQD36~Zdd3w5nW7YTu+9=Kp^sR$$fp}lI3*hX5#Y4wL_bi@I7C7Q znmHoRy=dl&uG0@l^F%w(fLp$(ZwtU#QU7G9Rw#PgEgXJnvYx&^-&>Ottjk!$h|5$ZUudvXc6tVZV*kTTi}{#KSh%pMGfab z-XvOe1+8Y$pA=HRA$p%md2Wh~Uw~Pw$UK40Hc?14^t~negC5a#QH((0&9)kC6 zQ7Xls?}!4ZfVE5XJry5!i-fb_k{;11dTIBHV(5g3KG9?f!Q2z^Y2n;2n$L$a10oj9 z+XhAZXiw9S=rYY?hDEiz(Rp7~@*(VeAX;-01S29>TE0INX&zIcZdAly3V%HoRlEY! zG0_9cGd~d}7GP{#v@RRGCqzHJ4|*r@H&pB9EFRbb5w7AlX5;f~?RMKvPBjV>bKzyt?fRYvQ;^mQOC5TI@ z<}*<|)&iF#iKCu|zmmmQnqluzv1KkWQ^a~7FijO-rZv@ZaaADnJt6*+rYR@IQz=`T zCaymTwKK(1E$qz_&!kUIwm6(7rl-Vr+`(-5X>r#t;C4pb`#r445lg5DBTu~gPoUa|l64df zaFHaB(9g=;B;!;Mx<}&j4k-3Y&QX|XpJdh^bh=Aa4Dj}pOfE;fRblE|0Nb=7D zI)v}AB(?51@Bl%z62<7 zl5OORc**iEkS9u}_@b30`O*umWC>?Fz){JzV)!XV@*cfck4d5^|B@>CjtYZ=RnJd) z(Xog2XQWFwlrYGUyiUIZ%9K3646RcVrUt@JOR9?i&Pd)VgatX0*Y1KKSCY?$SMnt1 z-@(n0FDbf%3sxXGb`A!dmCT{|Ns(k{IGCN2Oh~}&yu?B)wqi*Y%}Gim`{^+83lgQ{ z2AUTo@reISxg?oR8O?IZ5xS@ql0*uSU6#B$3A`&M+ueX!C0S1SplV6=LyXl(UTlVS zwUWz}TDU41qWbVU$u*jO)Jwk01wn&EL`5UlBqzRsGK~_;S7wEA4sOTK+}hkDK7(cRPt;KxIK~_aYg52$&1ynX-ty216DkdY`6(6#wE4oz;u$f zQx$}>^xIl6bCJH5f|jc^U^*nZN!L??e2+9Y4s?5^>nTX#E?x78Zo>W2cR#|QhjjA) z;QRy9EgkTzr}T~axRhSfXe!?Hm3~aq0YB*>3L*GQuhagU0O{xexCKhr%mu+gsf}VY zK~mLK&;?6f=>-%bO{TBaA!*(^a5*e>b%umc>1T8nMVOTR3`}x_OMSlqYJ}8_2SX#J zSr%}MlD@bSt!Qa$DF|bv=`=|`B3)0VAhFUF^x{j9)@K4FN+tB>NRrNtf}~{Wo#_Ba zr9rddnG|U^8r$UQFgqqW-!>G!m3ImwiMNK=J0={B0qr%NA}0X0MV z)_Wk#lpY8IPL}j04}{s$hDqo=C0!TnJY&*a$MCP{%$Ghl8_q9~Zl<~YS*cr;E}h3(&eGeTE9l z%A`wa*FzZpi??bS*hF7f7W8~jx=)vxOGXl(7UZ$ zIzoBx9%^%BtEyj`&p~TI`b!NY4N9M(*z=Gy-UOb*QX}n8 zy)R8`f}jV|AleHwBHe!Q1w1&T(ylnrKayrH0P17u;YAo6lO}%-e?5`DEQT@T(x(H# zbVB;)*HFz#_R?*zah3&BRMJIuoHjJN%ATTQ6Zgs{(@SxmYl3@DQ-V}=0bxXgzl(I;dRQpi0ii;VdJbL#-FaDlJqU_r3uy*fB3mGV^GanOP-ygmtol!g zzbJEb(qnu{R#^jzGTBpfCTY2>)f-GJWN~LfQ7QX~0s1OggFAGpmStrE)W|-isrD7w zC>2oD%2u90=T+IabZlFlZ0rqish3Un19^jNKCJ?-$(B6>2~DytEijv9L9OU)k!^N- z3l*=+j@$sn4O#xD;C55?=}F+U%5Khtrfsq^`qy?f2(b*?EPv?`|mF39cu6wd;i2(hwM^y7YAai|_wige| zI6s2vuq;*$E$+)cr$p`p**+=MACc|40g8vR$~^$1GTAinek5zi1KnfU;8uV!*=JOx z@I=-{)#>9h4qZ?ud4m+dS-u;O#S|BL*lA$8%9p(kecj}m0$9CA{?rZn)xci)gZrT0 zC*MV3eRuhrKR}uN^6@5U;UN!=1cj$OI|US8^7Kg<^Ohfa6-<5PJgTDdmG`P)jGw$F z4&wdg1Ct;rKpt3#OA#nPNE5Sz^67s=`yl!6zrmzK@&GeX4$C=MG&!b(%B?ei8YX{B z4N2kh_oy~6LjFD#u13n2JqL;?xl9M%(egiCff*zBqbKKxJmwXk#K|9zLVUdZ)9n~b zkjH-l-idN2nk^>DPts~QSw6fLok!)j{{lgZya~bfDaYi$(lpJHDo>(dz;XF)S`wX< zI~4&ZP5!Sh2-D@cw7AWXzx@|bGUY8@FeXd>2R)nFa@Xg;^pw1k_LiQOD@dm^@=xo* zJ4c>O71??62m1i><)7UHW`UeRL7ubn5sLU1%CAz%U6Dgx@*|j@lV47T!1MBsSHPxN zUe<=e68R<{SWzmErL(y%$@?hzQzoCF$z8cT$OeK6`EDUvm*rm-fp?|+;ZAf`$@^%^ zTP=Tvc9qr01N|^|MZT8qxmx+(bhK!lTtU;)dU^0Z{IJ}S!9-u9d^uH=HOWiAg}7$< zORqrr7Wt-p*nV9eNAZjs^2&bjx+xET4|3Y%O(l?XOMa8e!Q18Obbwxm+`ADdo$@be z57BLTB|VaN%o8FIQ2h zbU^Ob0~ZX+i>sj1kbDW1#SP0<+i?Z%%a7FpJdh9l0rC;~WV+QJ%6I!g-^cQtW^|6p z3;v5G$*ZZRVqCuDQ?QE_0(}%GsT{~x z5kol$KZWcH2m%yO=zSKb&^N=Rg9<|pt-6C0V+xoStYA7o7^2Vw0~}H;mO+cdiZ3sN zFjR4e>XyP3pI?W*;fj5`U}&V`#CCK>De8S7K3ZX?6lRRVz8yLpQOq1dXRKoF1_+E( z{IL$5@rsc#*pi^wwi>o1D)u5);h2)7Xb1%1F-0)tgHjcWVGJHu%yA>}2qH=q@k`LUsQC2)thl5on**1W zDR^vXQK4Aq2XI-j;A?QJRHPk(pQ{w}DFjfhnE5JHyQ0`51gKR^eF-{URpdT__Nz0B^i>Y?S+1DVVL-Dg2*Y}R%cO3}26xmwn)UAk|3}!uwyHpa=t5_TaeeWt>pm5hc z#W5W^`xQU0M(2Pcc;;)9ra87;2d`npb(-1TR}}tt8nUAE8E_s^7%5x#P|-L5#U3ek zQM&rE;yKz9H>NPro~Us}2F(#B6wgzl$w}GzCa!?9@@0A*xhQKt0&r6<@B`SRWN{#2 zuX0HlP~4TDQ;=)F@*4;JgTO$P`>jDfT!|v1$^$UWKRWCALXwnA>LQX8-gT% zWzb;|1Sp@UlfD9#pHTVSL1pP6K#+uiQ&q^ zm0%X3tWu&CskH8(FJZLuz*|r;Mp@Gaa720SRfvyOZuuJ`;*?7%xE`UfH zlavw)ZzU_!Y1MR8Ig7MNQL2B1++#{_KXj%l&%X-t?glovvh2 zHGPJ%@&+y8GL=75s3S``qKEaTlqZUz@M-01^kq1sly3!nj`GGTn4PP%uLYYt<$JTC zMS=2Lir1V~Hj;&f%1u;jT%-)4P|!JL=o5^cSAJ3mNhQiNRQ^_~^f?5bE-1gJK+8qt z+Cut`+a=|W$6#8fbi0GW%gX)z;8v-elnqd&EPDiQ)yhp&l2oJohH40}C?~SfS*zSZ z%kMhnKNM`PSAKq!ZgHi8k~P`Ht zRQf-K!B*vt2Dqk8d2Bsex0IK@g2L^}@81HOPGvt$NN+3O4TQiuN-KTex|G)i(6?Lp zR5u*dqpWg**ZY)9Y29#FDOw6<_mq0N%>BwfGsXs#_oz~CP-#Am&SB+mpF!XI4&|#Y zpnssOd=J`;Cj4P9H!YBl8zl2p~z&>}?@M-|`4RL^puOsZs;Kb0LiOGS zh`6kJOj)!_)vd|kS)~f5l~J{-ZznoyREu^2^NOl^C2f+cRpm^9g;!P6D1lX{s-{Yb zdR5Lh5Z|D(&|?0YDkTsUjjB~Gpl?z=^$)z(tTKk9vqdGQE$7!&uhMgWL-nyU=x(YQ zYoSxC>LTr1Xj6?|1?yX?6pFL9tF#}$`VLhL3j7>XI#o`EU~^m5E`_7+s4|rh*rghu z0>W<99~1}dQ5~gI_H{itzpMJ`O^n@B8IHn1{i@Vbo=OeXNS2OF53xavj9%S@;iQ>NNUy@HMcaaJq;fe07%vt9tM>Lo$2-c8*U3Y0x+s}P>q ztNvOFkM2{ir`VReIywN%_N(K*hCC04T1b^n2h<~F0G{gF4xoCeKlX=C-s+fl(ehCz z{DGFQy68B7pLz}*XSK)EBavRh>q0Vq9A@`(uUM+gl)E0Vv)72{zae*?_N%UFCRHxC7@+`HxJ5aLK zzdZ|rQ)*v|?ztinep!TM-#m=fd zDA8T0F3o~6Me6ARH19j7{*>PG=hbh&1Jq)*%U%qYsDEojXQ}%7yHMtW`nPjvT~y}} zL#In>w_T81rhY*Pf^xMuA39a2Z~qOsm({8Y$gNawItLA_)Z6LhRju}-byAJ`H!|>w zTDKTHYt_r2rAW+Gbq1vm>eL^f$Nf>S{=^v+4eEkF!1S8hW&+bjbrt2In$#zj0;O4f zl(zGGRXN;H#|NPErh3UtsMe}}LU&o4I)*mc+)_V7Z}4{Y=B)r7>UU}J z)2S{%62UR0OPwAL5#4In&FJk>AEfDHueyo$`1Gkiq7Tqr_2VLp-Bah>giZbGXe!4T zP`90fp@Zrv^#AK2b=PySa9HiO87TMFl7G;8puUp<%n`NvZ}5DmUh^_^8dZOli`FCc zjCXKB9go$nDQJ$V=hp)DiF*4A;Eb!kQ9$m5df7ezC(R%0z|C2+=^zYs(HJO#>Z+M} z2XtcZ<8ZkF z`WQ`01;7!_00o(1H3lIF<1{~2z?bowOSG;`(CBH!lc;$k2%Slqcv@B@Ynr|T-7(Ff zV1QK3vPkH3T(kHT$WLh6G+=g8^NtAQX_}A4Xr*h~We}gC3Ht(eW@^55B!Nwq=9dfT z&DO-oq3J0N=K6TJG%b|*I-}W{fmV)Y!*c++nkqW&Ax~2!fYfoC-@ z($oll=et8YMPgUqDiwR5K1*` zoSy<=i$+3U!|R%n8*tDKO(7|KQ!|rxv9@YtRPfcN`G__G-O_}5K#O+GrJ2yMLo+KE z0y{MeDVA_s^U5ZW-_f`gKwy_9`y+sE%`X(<>d{2{(4pA9nw4ST)~Cs%mCIdC&1MkZ z(`+6@XTRpr2(%c`M7BZFAdXMN*pTMe1Hc^C+_?#z?rWS*VC;crU>7h)G@@FFf2f&D z5A&$Tg(ljMGy}A%f2?WEhx5iXU4MgoLgPy>1Ba9LWtz4-YgM%K$VDrnS+uKm)-Vip z(>8km?9sYgfVx*3{VVj|r(Ho)K6mY$c@VK*>sJrpp*6k-rU$espMZ;}HdT+7mv(3f zMtE!IQy9WW`*0S-`)dD}4rYE@&LMRAJG8$W!8AbI$pi@0y6;8rLG8>>(F)Qg$RR0M z+f4f)LbOj&O8$^`_V>{Du$DIsz6jO6M`a{o+BLP16t0~?hss1~yUO8`NbPrh;1Z?% z>IBB3wF_vkLX37B?dLh7{d6J5VzmxmI$k#a_|AorbYmtz|kSUDa;O0@FI}S~~E#UYp?zW)0ey=YVoe>q7DJM(t;M znA@aX?~hiq_ICm85p2=MQ31wv?dvaq;)XVks+(?Vjqd`dRlAIKfwXBE@j$ty^n=<%Yv6<-?Ol4^4QrpFvhMrZo3tW-p#63y z#zwS?dEos}>wg#4k7^k-p?akK#11ZxwOJIBAJgup-1HM|HN{fKwc0X>pU{TVBG^gy zJgplYt~$Y=5bvh@xgEWGbSuN4{$8Db8U*gs^>;(OyKci-fc?7l)fn^8b1r9oN zopiiSknSqQ+JbdAJ_iWV?WGXoAzg+NIvv(I76OFoUb_Z&hv`nNhlp_937Y#v==@n2 zi`2bBJ1C-b|I*7VTKCu!V==nl*FoSB-8VnNmRQ}YcOWoM7fA`9c-_t*fCQc6G_7J2 zb%Q&gRFbY^18hpxwQht?M|I!FL5mdKJCShWG2I`u-z!zuM6dqiy60);c0%_K-6bb= zdP+~E=~yd)lBs)*0z6r|>8rsrTNgMNty8)ViprhV@hJsyMptnPAV>F-V-G~+>MWyB zF;Dkk8QA3Ok}1AapmU|k)>+-|)gUa?P07LaEz-S8o9)i&l%K&D=XGyWxoNTP6DjCQ zbRW?)v{Y9a4Y?O|V^l(SQ5W$C^u45ei;mwf)9ucN+U2?{6t1t(ElqHM@UkxNeTc8r zS?I*UDxF6oM5{*C=(; zrhD!vxZTpd+zu7nbuZ9`xviT_8OS@jUGC7LOUIr7eYftnEx_#2CEbLGUfrF?=Y!a*>k+X6csQ-*baFGcgd&WB21ALyQ< zJu#!YgS7MSk&e*^Hji}+RggQT^QHLO6Ws|aTp!ncMyJJ2=vMp>C{Ft3H*wE6>p%Gh z%v|(`=Yfl>UMPbRZu*B=z}%xhOJJ{_VFt=RJ%{RZ9PavdSD^0Kr&IpbL$9LEYX|f$ zw1vS_KjZ`)FFl9uIdA=L3IzJ-|2haoef6EM!x%rk*JE`0>x*fdLV&)8hgP6|6D7zF z>V0TNAEfW3qR3$VI2R}(`VB9F?vVcJAfOyxr|&xh7^-i)2Z3RFF1>HU^*;0_kI?gr zU|OX9DxLfhrEg0^D_Vc21RzFVLc2DP=zAMM5Uc;0)>Co%bF-jYygv462u#oy{|RLh z^})eaAEILFc?vG3>c^(~7ZNeLR&R=IOtD6XxdYtK!gEpnta$C};JXa^T)V zy?9zRE@+YdyWroJLz!zVstXM_H@<0_b5(`%?orBVO)Rj_H&f3ASp&H9RBP_*b9Xp7c$TyrRTLmz3! z*iHRHCM31$=TgADP5$I$U56Z%HVQ#%>@)4|5sQ2QaYa4~#JUrJX)q6^&RW>_==wf7iy ztc2Nn4Pz8X+-E5H6D@bcj})-nZwP6EP9BC!w7fWA=%M54JPjM@3G*^!H9>;6;SU7T zg56h4dd=}MmFooai(D3~CQ1YN5i6-nphNCgK!oh~#(;y8oeEb8nI%M#sVDMqX zl}3z(8Ya^{7-2}GV(v&odN{a88D0tlL9}7+Hz0^HWLYqF#NcOzQ(_I1VlftHsHRN? z@rFNw-~4#e49D%aU`CSR9t8rE4Wqw7!coJVVt^FG879b&8B%A!{8YmSbKsNXhCAcX z`h?+t5nN6h0@mQlrWtb1U@YA*a~f>OFxaSeHPi3{t+TTX%MoXul5O~g=Dnv3>;HnF z(*_?3tDiAMI;aLE$1sx$E^`fUhoF^bkkdRR-=L=iVS!5FExa8L5m9pF-5d48q)SanM;N^x?9Q&UH%{_ zH+=IW)t*-vUZnKfWrO8uv?>kTY5Q4~;a^|yt~M~~$jusqm<=ti80J#?t=3R-m!2-e zceEX{&X7ryfOqbL5EgzcStviNa#sInuQ;MKQx8d1!P^!o9{R7D8H7L#lv(I4q z31jyR8)&COzhVE&5IkV;7XSTUd(V%a{%iZ?LkYwY0WF_z&%#3pf7w zJXDM@T30~fNMk&OC8Lbt^fHY$8lQzSM~oL(AdEF$qsJo7IOvJac;mlc0VTnhlz_2B zV>rDrl8jYURhewe?SS~B#ucL=NHJE>g*j&YDGRJqjY(7;blj-N4ds|}!q{WP;7Mbh zD+beybEzOF-B?5$dNYjY=|ILzpF^z6PrPC&iMOzG|wAH z;-O5jF?<4`#JF1uP-@KI3JWh7|D>}?FB%mIFzu3&R|cKRjPohBRBrr@YIiG)xm!VS z*=S@ze5G+x3nWz;|Ehy6)kZJ+EY=uTJ`ZMBjP*2`u4NkaL7=#5Jo*&0s57$ZboqMY z1*)-VFg8-K@tSch)$BAHWqANCMoI89>`8Asc2ef=mT?Vb=h}^*#Q}5}6Vjksr_o9) zgWJaC6sWpmoJULBF5@YhcXu1#ISG^=<6CmHdW``zlj<|R5P;6R#t&(W{yk$16@T{| z4OECTU`#NA*`P7i1ZG3Vm5Ts|jcaGU348AwGtWVb2gZVv!5QpHZ#gDtXWy7Hf&-hL z7-v5RFm4QO2ZITt+i3tN(>!l_a!fZYxUeoJr$qp+CMD&_-AqGy;I_|{N#`cIn>O8t zOZJ-zDIMrx+DtqTn5w#=si*1NEzr%&bh-?{+cbMUxcHb9j$}Yz(^qu2_?c!8;EwP& zt@sG^0j6*R#sW?6*I?|RDVJjCL8j~<(HU%dn=(rwrg!>qNe-EU*FgMXQ}?&v9cs#= ztag~G^=F`joBXaqe1s|N3#b-p3Zvw9l&PBX-_fQ=m6X|vF*(J7{)lNFy<%cbixz_- z&h#1+IPs=^v~W!@9o!9+MAN+gg6F35KVU4`RI&)(KWaL@2pXoCRt3Mw#dK*O1vE~Y z1|z^a&9wLdoRDs+q|aG~sp2RkWSSDxP&CW*25lzIHg&s#*(uZRIuM*T1*?F0#0_#S!7c0#Mn90|EL`3ylKuf;#O>WE%+>V z(tD2DRZy+m)R7NRVd9;}*kw~Cm0wkwDk%LRv)JFdbcu)=g72?M!SnEu$T^ZKj@RaJyxa-UCXzsm%r4I!v`Wa8Rdd!zHwC zn+9ir?v5$z9IPKORm!0Dpy`1p-QA{#v_W;)6iI8X`zDV!(D}gh7UecZOk19&x!Xh2 zkUx|fHFapwdSu%2CFmcU#zr81%=Fv^5I!;KQz3rbBsqhz36s14V@~F`sd~%VJg*#M zF6PO!zHl{ruLW;6^WZR)*<=3mMG)*Yqb?7RfjOufnC|97G8nku?DRdQ>^#hlRcIbC zFQ)ntPxGULp!YI6m!aituBA+}kGYMCTz$={TY%|jF8>8BfAf$Lo(V8F(9Wnp^AIh8 z4w~PghbqXt`Xa;!n}4H_R*1Pd6`hC7SIdBT*gW}LfN=9N%q1LCBFvKgFgwy5NR!kk z^B;7!Mzr}RRa(WE|K5PHBjyFZU=wTJNn0r6%p1edN-*~y21=s&srhInnMdg3l5B3f z4?~Zd$JawdiunavDjqXu)44aP=7f_#Id0xWJ4sHMD_({zj+5pm^i@kUTjt_XNjDc# zDMp4_yb7&MbEpMuPMQCvHP>l#9wjAn%-Q=upKC6n?WlR?r#}EezWJ*+&?+#0N(Cop z&9`5GYK7*7Q$b#2E@*-e&zU=^lHiCeP)w`T{M-`^UNBcteD0#z zn+4r2nVtTE!e!=_bO)E4-`xd@3bT{})h?T#P_Dbuyn#x*s>}*5w5T>G=7FHboJhf$ zE9S3$L#x)ja004bHE%rw%sO+>RIsi$|89e~8_bRuD6rmWZly4JlX>zrpf;P=P@L?B zc_wWTxoM6Vf`eMk`M*MoHuHEkFmIW)6iaS5FRlQ%ZT?3K-gnHiX~NrO?wt&jUh@_@ z#=g(I#~1FpYnHjAbw7e2Tq4 zFqcL^#E7|c3@8uH^C{^yYJN2Ztw-iID%W{zo+Ab3nAy7@BA%G1-vyU(^IzkzaKe0+ zLY7XJ&*)?7Z27eV%v>y~J{WVgtS)l^x><@t0rps)tOB>a7XL>8`z*qzan;-{U6h>P zZ`nxqx`!n=0Qw%Vyhb@qPfH1H!11zlo6+*NyichpA4^_2nE6`X-2*51S$?9xi@)VT z95f8DEFK03v?NmC^PnXzoQgL?EFlz_J7nphN#0?L(_1ht)Ka(+Aj~3~3Etrr&K0yG zEH7^Z(@4wH0njkY(oh2sZE2&jlo-p0_n_esODq>$VlDj?CyTS(rLCLs78CtxE5TCD zgP=r932hfhvdl+K&P!90EeX3pf7G&(Zq^iwI`~&H<^r!#sZEAuBTY9lErE{#vMd+r zm6mO(MNVhRDa)TUkveTjx(K>67PskW< zyd{TnxW$&u{Xi+P#8LHGspSH>tI`txJuYFD#m6B8thQuN24St`3mgD7<*J22ul_pA zvcE7^Z~22lCJmNcEx28?JXs12n=Qp{(6Gf4eHh@nWj$3*v|5tF;fprQ#UDX%%QA(E z5ZW!tl%?vhJjw*KPRn&KfC0-!It*^mk~@dq%R`o_=YTV8@f^qCeapH+bUv`0{V$kg zc~^+B$Cl{#A$QDjd^7HnCzjn45HW6f=P3|OSd@pMnya<35-xGG7QYCv$I77S@m}lg zK!APLgLEm}t+o$A;A!m}g#<6_lIN(N(A&B;7FPIJSNseSzEQqsFwM#b*C4M3AOH|uVI*V6GgAWttq3>BEp(C1`uhj z{tTT_)>8!#A8kGH0SIEO8@5s?`-t^)BiO`R7u*8VIIDUgG>x}L(ruYwojn`$iPkIh z7$#X&GB`NdYNd6>QR`&-n5I}K=)O2+-9{_%RBQAcfaBJS^f67d&X^2>EbHQIfNblc zodBn-t4-i}+B)ZdFwk+vdi)Z4bF5j*Kv7`5_BRYYYmIstObe|YwEQiyJ`w`uoHer$ zt@G9vdRZ4+!zdPAV*NZ4rj=S31;K}9)+1y~xmDl|E)~`UDs{PR-EtX{Dy;`;HCbit zqd9!Fbt4O0Y8=)dsY3LM^{Y8>O|A8lRN!2-7SmvzwIvK=jaG3pD4MKAR6f^io%}Jz zTCD4%ApW}bi+eEUhBd+mzPM?1_=8KUwc|YK+N{qU10=fOx?Vhk=!1_8Zc?PWu zO#nmI;RO&sY^|9Af``^t+8jP=4Wa1QBkPh1NE)~PN$>gzt7`%rK zu`Ql93^uN|Rl$C8?6C1l1&)X9$WBN)U@M{zy{GLr3Q&95R?r&W+qN_qz{lpd9K3yP zc8aF>**F#8;%}=T16`14nJH*+)aFm+N-4HJ zdj5{tPWXdcs_kqD)IM%&prqmn+dhifXV@ONzzLZ)SqHSpvNa!ugR*UM8R$;g7zQYF z+P2|e2XM~V-c1I`v2ADsw_ICCI@p}Gjko}((DvF*@Gi2=rjpVU+xJx0U21!SmQxpO zQCp!*xotbeiz{qXKLxmK`<$lmmA3KoK&i6b8%JlgZGSbisIg^EgDqEVdM9XDYdgiK z0NYiYb2NC@*?OJ^MZK*$A2?06v$PIswuMzz<$1SlMmXg5*m@|E*lSZ$Cb`en?+28-wg3ua+_NN_HK$C#=EP2|MRH$WPkO z{R)s~51`aYy8WfaFgwG3=`QFp?OCS*vh1-G)5*3wHq*0x%AR%u+)mrQDI|Wze(N6$ z=Ga%$K^3`nz7p=vvmY^lX}6jfM74XtGpf|DX@8bM`aSF?QbG zPXV!Fd+c1$mDsbM0kcy3-WOoY1^YuPKDucCa6V;}F4_B@L2sFT&U#3?Y;UateWm?} z;L~cXDU~mPO`SdT0OZ!&eKTNagT3Kf&|kB69Kl$l-OV4oo9tdW;L>al6{54nE@T7q zx_vg4SKY9?H=}ja&UzXWTJ3qXA)?LhSqnRF*-x(n>vp^TKE!s|U;GZOPW#dKfpXja zp<^}Z@7R5>pxI@Amd-Khw)5%ivL1Wcb#(UH%~Z}?18AjX>afEUcD+k!_Q z!pO8i&`?J1^QeU}?k1uyoDp3^D?|ii%2#OJ&zSWw#w(Ihra)&DV|Wt;j%LLC1ZoEu zjHRF*!+5<2kg<#}$q*37D4hm*;~BZxC=wV`<-kj1Bvyh-5+m^~fFv{ODF-!$@%d~> ze~>Xi@6RDd4E+o0Fhht?TIb}WjE~&$MAI4n^`JF_;oOBG$z*hFK`o2HSpmMs8HwZ+ z%w~N41xEc8W5Q`P<}!A+K(su@s;fZHXXMk5)(RNMDF(NYu{aqBMU0vqfGlAo+<^9H z8GLdpmoi$aL8XjgqkLZHImX6g;B=l*^9G7?#li(m0J*?Orf+gR6=c#mV@9Oj@ms7uz9l8zZC-pzRE44Qf{zJtp*ZGEC&MyT-Wr2-L1K z_)8&v7vuIvcoa7npXgD$$tX_+$Zdw~Cy3U~m_;F#MQB-Iy)@%)U7&0-1l-0yK!3>H&tq%=xvT7Q$re zp-d>Vp02V9V-8XfP&jjY1&Hlq<^61oIyiAfuSes(~KO?0*6J9$@aN0%Q!c=K-XM zW%}JC$3q;mi>7=6vzEdZ5}B(h8ZC+Gl?9k&W@ifeQkX|x1ntAji4@X)g!zXU^CFcw z=M(g$G5=;l`lHMuazh?tZn^>X8O-nLd!5Nt_M^yR{#p$5q)+R7)VScLs z!z;`;=`h&JEF+6Y8#9~S;qA;s+H!R=S3E*-jp<2AE7zGp$r#@*W)y)qZ!pj3fq#=3 zO?+=LTTVg5+ss&sKImqy(L($?%&FZ#>|y>v*Yn?H=F*i;z061o&g^3@d2eS_tbi3c(0v+5XrjbNRptE=|2&QtJgB+HeydQmJZ9|+Mbr}F{u53nZE+Y!SWd=H(mtYr^S zi(`3x2{Q4lN^$wG7s8w0X#63GDR#WwHJ$0*m7;4+lE4S*+^-J;CZu zK;uc4ltjy6P5lUvr&t#$lm0ZzK!I|(EYIfvlE?bT1)TC(su!SB0ZYFbBU8wl{T=X% zSm*X*3KX*r-2vVi);IT{ZV7A4D#&}5b?kri{*|)4p8;YS%SZvm=UC>uD9*DS`5;ry zD*6@p6|D73pnWB46J;(}u@=#HteTaV3>Gyk%|i6mvOFo?r;gP;3yl|8(KMgxStsZl zb&;itMeP!+Bn`C&){ErGzRddfF=hTVvXXkiu!%KoBgizfq`fFwSZB{e-z%(XWY}tD zz56aO+E_&&qqxel(Uzi<_1k~obdB{#EVRGQI+crB7waW&h<$^#bq+vovi8wryTuBk z+iq^NZvBkLJFG>Up>7Xr=|enT=UvuYX29HM9a@jp2duT*p+!II*Z)C^0oG@OfO*JD ziv{8%)({2n4ziNSO*_Q;u?~2{tV1hN8)5C}0^}$wfObh^EL#nvf6OYOizuG3PV7bB zILmbxI6P&wy@T2=_Tw1AG^N@2>$HJYf%eev#&tj zK=!OJ0TRR>A{$gN+xaGCHH5IAKML7G*~`h19mf7?1{%ZJvoC`0KK6(gbc$fF{~I9t z*^6mU9LfIO26>~{4o^rC&F1a}-U0S7UGx&e{)-Y@V%c#V=n}`Sq6-@0+4IN^m%u(S z1%f8BQ^x?A#GdU;186e4<7-Ho!oCmyjDzf42dEul-}oJUhuOX#fzuK87{mme(n)rFhZBf7>~AN7?ve#2|N)dZGS$c}u z{yeZa!&cpZFeU7PxoAAg{*VHMO4;>fd@5sC3Bmpx`*&JG&$AU@pjOT{UjU;Db~t5W zRI(%1(*CoG-AGfYn*A-ALu%LuX$h}o_tK3Jb?kXGuP(4FD7m?wz2z|9zP2iYTokYb1(^C>!q*)P#5Kf+!}o3v5(OxpL3vHw{I{KxFOj)n%og)@mFnp`>ajo`4G^V%}h_HZibYGpUhPiG*ZyOVQkJ@7p^ z^=z>B`pM@yS#}v;T%~?&(;sczs^x=!)tkgo#SkBd43`rbkE*VGSIn@;6lfYqZ z1H(j4S~H|b;#~R!1C-1WP$o+X=L26r9^~xK1C>J@PdZ;8<^(wt!S@Jf6>a2FIfeef zPvc1IfpL`6N#^2XoQa=6-*nD%F=))-_|cIolk>lL;AL@snTEdOoGu@rXLACN)62#2 zsX|{aXPo{5l+U@QhAsu1z?smjkaLHYh9b^~CNL@n2)%!2I5D)*F5&cl0DaGLULm7Q zDJMk<&`Qp-MhINZk<(15;phb*Q_ETM85q`coULGSk<&;vp-Y@ubbM^!v{8KTWsYJw zs5Ek{6p-Jh|(>S|DVz`076rG8GGlXiy#oG?0#hT1MJe;9-A!cC=UTUYK52^x2E6$+5v!!15THYGQ%Dhw>#xjt9%@I1KB zGJ)^OT^IpQUR>h~kja~ydJzowa-|nBcs|_yN73iY-SRy6`f(fPqvp@`rd>k-_q`O< z0=dKF)ehov$<`Ol6^BEL5N<*>*oSg|ps#lr_eIvk@OsXKInGgX|3`9P^a86WZsR^s zjp0_$ff%veI}1P{j=SIhFypzSG+qhZ?q~>{$X!WsYf0Qc$Sjh~JxFGa6s{k|$o${ZYW(eIKL?xo?(2&?0U(xlf9@C+T*mGu%K82C9V1UI5X~a+4PWq?G##Ekb47 zk0~np99Ke7@8`Me>DyS&^(SLc1@~DiYL#5!R7h6Ez0(P{)!f_49*9=MHDWH)ykX?TbGY8W5G^fRSE_i-ckq3a%(PY03vn2$hvz+L__81-|XCClyrSNb&| zA95LA0rC;|{u)R&$o-rm4~Mv6FJlabxtl2fV}#3Ci(-_!jf{I^Tpvmtf6R3pf_zW7 z8|u+G&V7qws-JQV&VMoJyLc~?$=rqKPX1t5UV;IfcJsXFK!-g%%`p1hcr^nM&7CLL z0?~uFEgyKEyh=LKdhs^WT@K#7JLEp!%hS{U0(^K^Nl;(j{#~f~@e*Aig+DKo;$#AN z=cCaW$eXZ>qR)bO?|Fe}2ygj3V1)8!{sc+Gctc*m2s3Xpv~w{{c}JPz%E_Vc=v z(HF`4a32JX;thNaVWN4L7C_zuyy@f$iQ)a!fW}zfA{j;|j%Qi`hVi_JB7h|D?mYu4 zi9DAf%7IMcog!z(L0;Py@IAz1q=VC8-WC>S*AZUtR}eUr_wS47OXI~XhoVP$Q4BO5 zUogz#>0bkjNXyf_uY-Y}%lnkxr99sL z$z%!3=MCwBU%;y%w{Riv)(ZeF;+_5$h{e3!RlqpIyGir6g!l7&D07y#oDA8eyuB2J zR>r$eL5}Bm;cuXJo+o7ip`4dNUxf;$>a~rD-+tK1&2-6R-az zh}O(IDMr!4E2op?6kqdFx*WNH@>r81U}!IvY{z;VmUo z#a&*)>nM78FHZt`AMYXE%yp0VofA^r=lymAv+Dux^F=`D=lzfgngcv%#3)ASAy5Ai z5Fha(=;p~mp7jPe4e|QA(KpQd(iM#(JSP_tj`A*%!(oi~69rs8<}p)2?FsL1dJV^U zFT?`!Deo0JbL`?5j-hbj|LKQucI7vd|ICfQdo5_X^S_^l!h?xq`_m3JmOo)5go)!zCFqOiX9h#x1pdF|9!lhYNME5O{_9ETOXk> zEfgwwj-Qr<#`FAn@1R!B|N0#ID)<{Hk*1R0@(FaR=C4miUk%?G-YLNt# zHXHaAt1*<9`AL1C(#Q{43+Q{vf@6*ZBNpK)B9dz6y|C{OJs^y}^Iec?$S9`T1)AdW)Yr z8-sA0eniwT2gKej2p0muU69oZ+8%;AbR&kR zpo7*6FTvVJsCf$#X%O}bPJas}d<5&eLE2Yf(m)A6!Bbbtsr47^^no$~f;L(c0tHuE zPy`E3k%2ZukQ;_)A1biZoCy;QQ7BxvV9Flw-6vR0(Tov-)t5kfzhFM4;Y11|RT%Cl z!5>S&DOxbF6QUguT>Su$F@jxAK*kFi3ZZ?1;P6Wmv7RRi;->&KNpSx%q(~OHE&`_% zK_y)ddQfm-4loW0>_Yktr!vaFvHzn!tA!YUzR!`fO(ilDd5&TV|ccX$B ziccLA+}Qz@9t#F+cm_`dVkcR2#|87Ps6G|wy+LM|@R?sh)J1rnZY^^a7EpMRkMK2` zfxg0*Z$VIhq08qO*#KcAB`pUEYtI8DNH|IcykOzPYM_S*S4IONRQPiOsDug2UI*WB z;ZI~v-zVHDflLv?*GDP#V88HeBVZzh4`@b22?xmjA1zFmqVa(6ZQ88I2xrmpI#y`u z0jD_Od$gmD7q)B#nFQe{UxQPkFpxs6l7yv{nv^UQk3zx};pS0{;X$GOUGyCi7Eea) zu&|FJ7LN!I6jDxKs_?Tua7q&zNz$XjZ^%b>Ojt@^?{wkFeK5=rGAM8>Q>Z7;Zq>FeeH+ox>oY@x1VE z0z@kp9$EmGEES$3*eJw&U8CtFg zwR9$H6>2B~sZBVAQpnncQgXj_2=#IZdR16Pe$`H4H3dpv6VC5I<8|TQ)o8rw6e=D= zj9bEP^8MTv{zswF-9lRgVD1R{mmz+S@OgiL+!g-m4~D(M#`}Qm6CT6DKKY(dbOH$X zh3Cf6_&~UrJTd*k&IU9N2)D0{nrr2Ta@p76Ay2%XjKa2 z_7OF&MXRr3ow*#_J z^b2`CibNli>8n_DZX$@C5hc*TmWaB@^n6y7bA{f&QqcvnyqAg6$@_6mG~qh5I4>%C zA5xTy-kT1F6{4r~QdWv0-iM-9B44^2uUd3?4;pJkgP((1t*DQdojTEu2ynU}IwnW0 zUUZ)vSQkaiE|9(?dYe2?4WfKM;9VBoqO>e$qv!@X9GXNw{t7b9qI!B8TSRiY$n%P5 zRya7diXM7F-!{>UJU|s3?u$O9M4<;F_gMh#7ZuUgc0jbC2YrL0 z!x<25NHp>b5Qjxc^!|>BexnC7D$2G1WK5Ji540bP*3tLxiAYT$G2^1Ww4Of|eMax* zE^%Nw`dq|cZv&pIcs3=>?G`(w6eYMvJdYfHZsJLAgRi@IMmMIVhxjRLj}-5H9~e>M zcWGp!#gOca-rM^@evUM8G^H{g6~B852*W z&*S~85sy&Rcdb~q1GMYJzp7EYApY)0h+i*$ZUzu9iXA6G^pZH24rdKw;j6&EEDouF z+Kpn(zmTFy{Qg`#m}c=LI`g-PMYAEy6>&4|eOkrtB1qpRmPG=xUEKRO@H)ib(0Rsr zRqXKyt)1feDd2le97ucP>*6=x0<|vj%!^=nL#)?<=uPppWq`aT-uo$Jx-D*41~T2^ zt7HPcBfg&p346rjBB0+DSCxTpuh{zyAoPi+alz@H_@}o3d0!ktM&AeGA6bCxcZ!3v z0XiVQxdDUtP(1H>sP;%~rxV|x*o&5kA@M8=5QoKTdL2f@b^B2p75|_C!kE~bG9Vv| zC(=*6o`_R|L2O*i-wG;E#Vh|m4pDNHcILY!FOd6fkK{NV>O3StGl1?Xan^4DQ7_3! zS_6F~#lxWHD_OAsa{EbK$qC{wDI=3bfMhl;X@QawIv<2cdf$c?p^`tz<{KtShy_Bp z#IO~`K8eS_;1nU*OdG)c5_flSij<_2tvE_@;~)^CB{KTe)B#D1lk)CjB&jlh#!50M zlsrzdhb$)Xk`+zpOOVLPmysyRqccE~WZpa!$&&qdP^3t9k~{dIWP1Q=ha@fn6o(}z z&SPYcNLEo)VyYx&0fb4DOq&eIqY^I$q&OyNxdf1O3I7@LY-C98(OD}~^5A<6cb254 z1D(eu8z?zFTOy(Z=Lw122Yn|czLXW3Bk{b2r+rE?H3xmCCHWO7awQ$KYsi!I3@vA zddaIaJ1x%0O7V|cq8=fmI$*! z<&NaxIutz;#&I;>m87sCQ?KNHBWisTe=^kHlWchwGvU5ugjSCSl1%znOuytb{n&9p zvWZgpA4(om#@HjtqkG^mD7n4?{6-{oBIq(Ind+n?$e3jG8Z>+?IY>D{Pb7=UST`9z@=9WFggj^};Sk}#l0NbS!6WWQ7r z4DBPOzmTIlN;*o;l4$A5m1sO5o%jizU}B`Y2OtwG9TK64lX}o+J6w%XpEpGu{hO~_W zWHO}++NESkEeU8mF5Ukz-Ab7)r>83%@p@vDqTx?5@phN=`oi}5B-k53Tf^- z5UZ5_NAZU>(xn|31ZS;u=fA+OlkV6E(2LSUC0Z{@BYwlvZji2|TPT{O+mOQmyB zv`Dv+jj&A`cMN^)($`ubOoz020czKz%jmMk>(Zz=3{aP}>rK>dNk>N^%x$T38}PcN zjXI3)UFiW@t$Ll(<^#~8Pgrr8~(=Hy}OE2I!zP>Lfsiq!EFjHY_z# z;NqB+KMM$tr7J4X_e5IwEQ(#S^v}V`Mb`BcoLpt2bcuzVERBw>?y`O1VB{gIqc~n~ z*@EA}VXsX2Hl>I7$OYl;7zB$0vX7cji;)e-(0r1mkRLcf_DlGLZFte&ECfQj?Axy)VTSA% zx;!FNwz3$*oF$u1bM3fnRRknFA=_64ypysAvFOW@bsJDSCG-0ewbL?YG&IYXz0e29 z0$IuH;8!Tq(0zYJGTC2XTP)j02JjNuKr$fD%52f7mC6=5|3q0PE2e)$pOb070BE@^ zobp#HWGm>oR?3nn6s<}YPN@*pvJhGVYh+3HP}Ip{wu9OQ*_1_4qF%N=6Ob2W6Ul~j zN%o={APusN77%Ncoo_&6lWZD|U9&8gcD*e!)ifunS7hUCNYN&nKq2exvR(AS>yZ64 z6AZ7)a*tx>b;|CLck`O;>g%Xomwh@BMVBnG6tr*1DzY)mH)Vg55B`>ndl$rR%f>%N z(JlKs4bSC{%&rH+9@(Csf!8ZbcLlLNS?^!u`ne}NMgJAKFXJ}@=7DT(C5ZOR;CRAZ zlYJP42Qw(kr<2~0Y!?ND56d)^d^95a;ulCbD*NmXK*nS*TnGCnvS`}ukIPu(K6@(5 zqFKF5&YTGjF7g*bA&jg1ZL*B+mb>GbJ16gv|5N~KZu0jBz`|Y5rGQiq`8oQ)d&*zh z4p49Tn>x_mD{rCbJ|DRz4UN9?=eK~GpM2XAu<)0^L2q$@{11vS36%eJ6WRyK`)be^ zBLDY1@IvJpGJS=~dp-xTee!u3VC#&K?@*w+U;YZc9FcOl8AX&ln=-s(JPy~T<0B6n~~l3%7hX|nu~8Z1)eo^)eTU?|73e!6 z@9@Ror^?4E;3-Xh=XLZQb;?bxQ1qBwHjW})UNRd3XUM%?1b(Kx@^w(llFt{T@whzv z7^FBMcfWwzN%;y&tICnLksbY%{P2f>JT1>B&ql6XNnfKp`Qw*?kT0K-3waCVyn}d5 zMe+{1)T2aR761-s<<7LXQ7x5+dIPac9!SQgbMj(W)XvL;4uf{N`~!-ztB`NW0e+Qy z5@k|U%iSrzp++7_7g^QH=e`3@b@EyY;H#HEyBvKNq!)sTUGn)^U~xn4Gmhe>eD?cbaZA3OoQJpNNnQ}NTmA+4ieSK^$=xGA^(BbimD?_2 zuJy`mYspmKCr=JU>pi)%7JTo^U+9N059Djfp4Tsrng&h-^61R~8I&Kt4x&TyL**bk zEdTKbK#s_FuD~FS%BMGh*qGdlj#!W7x9AR)C-RTTpE@pozaMHpl`p3A@h-&}9c5h< zy{9P%(^WCjjEA>dQJ)RD_b8Sx28^2`p6sRWiY*g>@1a5kTS!1loY$Jfav| zi_TPq-w=v4g*zGPPAE2&VMtCY7B)bN9L1J}pms{3N`o?|74tWtF<F?TWqJ)>Ac$-X6uv=xxztm0?^7?vtR>7J%C#rPF8o^vWbUJ3m3 zibE8wQ=zyNh+3thijIa=inLVg^L7ZoF4 zK$uI4R1O*&6dxV|UXvo|8HnAixKjd}Eeh^jNZ+Q=PXc7S;%PGYbtu*uTu|*)gkA>X zHN}=z(7vwtmV!aL6zAw8bwg1Qg1%dd!*qSgZN+zVwCh%wNy9se%S5e5@mlz%e<-7f z0+8-2UVIm`*HfA5gqQkzo%Nfe9FdM+(GZU^*-69iTa+ShoQP!-|Vu zkZ?rt2gPfRDps-};h17c6d=bHlPRg}sUn>L&2}jRDY#;{@+_@7dz8N(22D5RQRe_! zJ(Y`Zf|Hl>pI&r&D>n~AC12%*2awlK*){>X_$$*qG5A4B?^H-1tgND4eu#3$HOL#T zyh(ezeae5YgGz*QDQz^PlrNHNE?OBs4~++uzvlrjPT5B>?(xdln?O%c=31R#n5^_9 zZ(NGfOnbb8%FRo`{*dwp#m5|0n#fdmMEUb32$QPxZ3US$Wi{>Qjw<(rg3~c&FuD2D zmEVgn78%N4X|c^x{$2u3$CaLBPtI0WkfY#)^0{3geNs7xoDez6;J@hHbxQd$ovm_} zl`leyJf)D5kMfm6bXX`*4)}s^p|X{{X+_E-v}Gz*&Y|$DGs@fq@GViYTcPM#<;`C} zyHxoj>0728o{XYgxq2r+DwM6XSE^KQxC;(7%BgPyvR2vCM<3HVrMeCxUQlK}2io<@ zPl|weQF)1p+9hS+B=Bueo*01?mzAaiP`gnnpw+!ed6>Mq&C0oN0KG+76NuUs<(O~b zxryvVH++oY1nQnf2Zv4Zsqm{jNTpP_ep^4Q8r|N;az3VG7Lhmay5;5pYmG@ zIJ~DkSb@I#%BlbVgB;~dSJe8IS&PAUK$%_!kcUp?pH|R*q->1``$45L5UoQ>D5R8Q58f5E~_HBL@+Z&idG zpnFxH#zIjaRp}ix`l{@-Q}t5`HUQsWweJRM0V+PZIRjOq{Xh>=eTD7h@x- zcB05uwU7n)gvyO#)=sKsjsY@9wa57!I!~!q&x5|FRlYPbxvGq8P|H)DBwu{K>Lt1a zvp{7fKX9??t9<}Dqq3F(q(t=+1G=15-KK!wQdKYoFPEvlqFlIhs_w~vJg;JB01X`RYQ?%)fm!eB^Ruj*(5 zrrjX`Nm306_uc><6Ak%e~ot|=+YT6=T+)%A4 zNA0HS@p$5K#{DTdj?9RsPi{L!h`Djk3r>-`sFh89ag`57gUa@7t)?EO|771 z^{Co~!e@`EA8hOcOuG8FNE8|BahSy>XR3dB2=-a(ZgNc@SNFaIjBNGRr)WH(UUeA4 zoK!0o0U<|yh2r5(sVkIVcv?L%e5)%|YA1_Mfx31k8Vl9hm8cb|x0=AdSlvR`Z=6wY zBd1}BdSf7{oK?H~qE@O_F9p9cb;4g5yL0Me!(en?U6Bhx%hd~Z0;EFiDn_kZooNKI z8ns3N$Xa!09Ev)1dk9EhP+xJ9x3FHFN*4Ny>dh34cu5^Y{>%pTkJF*VW%V16(b%Z| zj6`cvU*3VnW_8$YJc1VW7dDW&qE32*=hCX)*$iTB>R;$O({}aFHQ>~t{^4sBSJkRz zfb3MKHGxr=`UyFxZ>U{{ouGD8y~rKf-%`Iszx2GV-bvxJ-RfK9ki4VbCj)4YdIJS2 z-c|qjH>BuQf2aXupSp&Y&U@;kl{D4W=iUaV2kHUxRrafs=!i6+7E)%~Lv?5#YLC?4 zQm)aU+D?|+A$9eh33xS!)jPJMI--uDn~+A;-;tGRO#K68&OcUXQxeP*bunefkE^}N z$LgXP%mq6sqZeANXM!Ss6gXHOq$~aD-+?xXT{Ql0}sJ8m;*stpzcf zH!15hR>SSWsKsf1B$IrCW>PZ{5;f27LM=&Spycgj%_2WYn4)=h4@T{f=59974{Oeo z5%7p6e>-TVY1Y#j|EOj@Ih>AZCKZ8Zx@Pe*P|47|*MYt)&6x8ev>w;YqOg%{&030P zI-%*MgxHgs3FN2C(PXZH^tl>NG9dFbf4mC~^EF`(urJWeEr&3Ln#WSqiZqKo!KqmD z{Qw^58BH)9B}+7$D7C9n6HW7>O4E`7V%3_~^Pp0r`QsM72eq2NCxT&}<~zC8!+RQ`4>;Y|Xvy3DK(p#ENZ+qnnt{Fn%_TDOKGd9f2_TO&oY`PF zsJTfNjv-Cp2Y?*bOk;r9i01YPRC=O$b~#3LT(is#jZZZ~nw7h>)17qDoQpP};^|zq zJ3hjY?AA{21O6WEIHlsaX;*51@2=fXpG^<#XJo1H(O!KSkiOb4D1p#V8&0QOe{C2A z_XKF8zJr2++KFT*3DRcJDJWPgp$ME1?d~{87^>wo0VGWO*Bj&yiPY|+pqD7^@l6mW zT01Qd8XnMU=c9IjsGU zLVk{D7fC@gRa;F4b%4!C-My8xadKx3s6_ zC~j-*)d20*y3mK`j`r&W(C*Q`{49#Q+CgvN^=juVg-m_g85GfcPs=0A{6p;}+WtM# z-llZ3LG89-fDCExkzamTJ4XoVN1WOW%I+K09wYnEnD*NO6pyvrbHVqCwkiR&ajnNp zV7TbEN1^7bHqy+0L*VLHE0d^un=D^R zx(`19v1DDS3bhp7z|0v?=Adr43DTtLzSRKnsP4n?pS>r%Lay#e0NCg0ZZd(FuS=z8SD*`c2Am3YD?WvwMY^LgXe`#LjA%Tgb7=(M65Y5Q z#aW#w0)n2`{Wu%M%60q6l3Jnrg^mN2x-FE%T%{X#$}tGlx{VyP*63bzN3B*@XGKw` z``8uu7jy%ZrdF@}QUXpFb-$8Vv`IIKY$?sUPiR-wqFYmiQNN-SctGA(-5Z<1sZG~9 z4>GmuRyv?khwj}aGy!$%DITp;S4siRH+7j`J5jx*JG>dv+}16n?@71Le;W|*=Ufl>qlJ)7%{s#%~=@!s-;i2v|@_athwJb$3sGGh4=tH`r6Cu;E z&JqF05nTf9xJGpzKcN`YElO++Nm50=tNpSu@`3HrB2(3q%?r9D%U{xu4CPu4f?#A8m;=d6Z=2le%7Aa+Qf_#9+9q8~U7 zVyXIH==`6ie}znYNA<=3ftd4{eqkT9$k6}O3;ay|4Hw{N=~F|YQ?`D+37k&o7yJ(G zPwJ=SLy8>z9J(pvl>RhX8uIjx1)!a;?>dOS0(}7OhYIzDjVOxroR`3`SpVV{NO4C0 zHQgRiqR-q6^t1ZwC!lqiQ$L+{&*${bWWPJFkMaOwxqds@Ju38(8zEw)zS{w#aZ&%S`7PM>iC@?OxF)nO3o^=)&(;-Y@i2xPjX-@XXM8uUNC49Ls+iS!X} z)L$6^NRyuZIYevLI}g%}(4x0L2B$0fzvy$;s?Q=$ZTjyg0KZ*7Z4(sj(0~6XSX|Zj zw*aJ5Z>)rb*Ys60K<&ETOjjRu>9zEjZt3|Hn|oVtrl6B<{Xb0by`%r0lD~TNMHD)7 zSMN@-jD31PCvBVW>A#(a>V3V^6GR{AH<5|GUw{8NiUEBrof#hKHFTC7)VovE){y?p z+bBl#ZjT_-sD3q0_mju;<}e8JSnt&aeV^z%>B{zT{b(Bo=&AnQdWh{}SV{&zS3?dZ z{O&evtfkZL9)l;XK5mA@J0R*|SZTqKcp4)5A-Dl`ja%O{? zzu`g%@B$3-Tfhr6bkZOM88*=+FTsX+e?XWJ!}pYf6Kc>=lv$YJ6N=CXH)LM{&3%T% zzv$B(VUUxbVZXskiOxvF!#{u#W%!QIAWg@#wjo>pX790h5L4f;eVbH;GE73d{~ zpXdX0*3kMP5K0X~ifAb_EdL!e&l$EjDX`|e;Rho?%MJVcfLLKLP)Jv$VRb(Qt}^(R zp{O=k$q86vNSKDA*1$RshINLyl+<{^uw*|P>kR>vH+IqRE3Iso3<)%K8w{tPfi9N~ zE586pqk&H=Ta)1u1++CA{<}e|Sc~DgLa?}EXplhCR>KD>G`1PowAXAmy!!)0>o8c$ zP+T>9_XR*Y4Mmi3*kusqqqt#c{26^W4c#w*?=8dnxuAX9(3T3C-G=A7fpEu=`Ys@Q z4BS*e-ZdN(0XZEzz2pc9|NP`kh~fK4;X|a0C{L| zy9JpZ8MHN!aL}-36n#U6#(eY*8xBkW!iZrjU9LT9(0&ETF~j?Zp#8WZm{#(qhVFeJ zz00^T3V1F?%ZJZkeRehWG(xC7#t+Fw=4QM?CLwoYB;`wc7%h2F#?v@e2iji7AN~T- zy+%zCSoj!OchKl-Y)k}*pK+8v5B|ntay11QpAQ3zAfuQfE`p6pvY3Y$fBpfa!;Ei` z11Q{B83z#OJ|mO%`w_-7s{p#+==D5UL>Y6ah&FzB6#^eH@?7xnVvNf9kSW$U^+yzO z#(O$YOE8+F<=Wmcmm{ z8xNDqH`iF{3y?hH9Qpzk7#oO1p>gYB5Gyk7Uj$CY#>Yx9I%6Ds9q4C`a+-mqMrQ(T zIm?WbNzrr0l^+A+ys`BZhNRp$FAq9Z7}up^NUMz+`W)66^Fl$b*0`8#&UHrXI-p-L zc9DDKqVX>>C0#Opx(Emj#>;g6yKLO%3hf(>e^Q`glX2EMaA+|yB0=Sfalpv{-&SMx zVd&dtZ1@Tc+l~KYgJ_4*yao83#%&ycTr+0S{WaH(Z}6eT4dd%{c(`fgxuUpb{Of9+Bj4Cvj)XWTFdJ;pT@QgYYWPjOGZ#`o8w=rczA0VVDkXVBo^H%?EaP|kj%_yRZ$ z7&p#9=R>0}9qb<&yC_Ux&{#+T(nCf8S!PF!ISZiLsIf>1zGKF4GCV#t?#5ww@-EXm zWbJY>eefrwa5WWC9`0^aXfgD4Gj*&2h`Y)AG)Q}xswiW`)8tn{>$8{XMHZ^wre@mL z?KPEo0N>YSBnPmc>F3E1&EGU@6ru%~ZbzUo(3JTv8iP%ziy>2p=>PSZsWeWHlGDVwq)72{nOgrJ(b54#i)jEI?Yg)4n7;&bq zf1z5u>HS0yO)xFu0wdA%3YpiEOt;ATlx$kE3iv6e^>3i>pecAGXdf~qeGOp_n+D0Y zbHt=hg`%mZos{g9W_p91A4g5UtiUrkW;*{LK+;WzK1R)%Vfxt%I%S&vCeMDB=?hBy zKW;MZLXmCyl0vCZm}==Lanck^Mx7kfkCY~H%EWJg*r!cX-vXIj)5NQ2%rk}k4upJD zFC7C5OldJtqRN>j=?Jo_rs92r{br87IbbTjUyG%z`p?1Uc zz!PL{nlgTYq}`^j_dw>3$;$zd9#i)mFzhqsWdP)!>Amo+;jl~JA=F{LXY|5e2)rd(TzbP(%}ZxM zi8S-lSAloboI+`z8Riva1mB@99Hz47Bklz@Etg1oAYR1oHUQp9nLxCEuTZC zQ|4#iLEmZf+*#<$HUD=Ejd|vxVAS%>-Dgo0n49PfUTAKkHM_|CQyWw(H!~?|ufn{J zvNI~p&xGSYR_{0&bOyL!?)wIi^=5B6f?PD4>6)%f<}b6rsKLCHY(baJx6GK-jpoDj zqBfZy(I=|e{9i1TXfZcYGS?OJlsUj_HJ`3Tt<5a&#GtpEZ_v#}9p+iKp!w;1;hL`ucD~oA+w#1(8J~)GuV%qx1Ipx zsCo7hvNepE53UD`$L3AfAjK2&D7j9@&B2sv_0;_98>sEFl)eh~E|!biLCw`Nk-Uw& zEm09D_E`QV=bxM914@u_w?r-hO%KZ%y1~fPQoR|Zy(}}ILKtsL3YnMpT6`$V)5qdA znEuVja!SJ)}=A!VoR8j6hfMp6@G!`N>^ld-wXvf~D7=PduxYIWYiY6j_Yr^Wmc$W&P7 z3_!I?%Vu&3R$0C|1}Um7E%XttvEw6$zzRXv0P7`&{TMnTNm`YgRMd#z`pfbMHO+y#Dq)@`{MN`I?~Y+nJ^w<0kV zfz~!M0tH!3bPq+awVP58LandS!6nSvNh?ygbvvDg_FHwYL$XNg*-$7SWnK6Gog>(V!<-^B1Bq$$Eo>p-8sQp;arz`uAq= zJ!q}(fE0(UXD5QiVJq)>P&s1t`V@MmSqEvgI%<{ER6S-*rI?CztCUXX8P;~PL}giP z#AG@*dfeG>sCr#$g$pC4;H!Bf?TMUXWdLTm3-?Q@}ZYmS2!WeIcrBY z^gVBVoxy7xnL@-d3C7OSj`8(sn#kXqg9=?Z!HA9V9joaX!X_`?Q}G| zXze7E-zDo;WMylxj{koSja9@zW23cZGFUWO{|E((W~;*tDXv(H=Af_D%7_M;HtWS_ zf!A(TtVUypRlgacU9+~6XX3hbK7HD{tj8#{_l9-tPO!geji&GOEo&bFznznBTOH&H z>bB-ns?;58B<)~&tRK{)@vc?2AE3R~#&4igpEcnrbh>B#Bo}<|Tfe8k{s&f0Cp7H0 zh7zi!!jaWbZ38FbitvC75Y0N4n z>-b~qhi$-kV!d}C?8mJ`bOqj1>j0VMcG`#kG*h(-uI16JEAEyP&0Mf^4^Na(GuWh*y?EP$` zwCnY^1s8);fbFv%pmv}wb}0rw$aaM`k-@eTkDx_}t(SH%VK(FpU_H0#-a_Ag+f;hY zk+wI30TN~Fy#~_Jwu5mPt^>CEuhAD{dzFJ)tnIlF3~Zdu>AoD&#M_p~K$-;GJ9|MU z(bo1RI+JV-6ta+P(@jAw#a6rkwPQ9*Fc8vhZsbtSu&sOzMW*d13j58n{pkZikJ}hG zz#`k`egTaqY$0Ex@uUsEBFC(@?WV_j%9ipg6g+KP>wE!1<=XUcj84w8d946UzO9w6 zn=7!nQM6j2O+x$nBHQZ+fl+MR;flU9wo2MNm)I^#K>Mt1T0M$VTLMKvmDy63p*Uxo z@dbwayzM$I%jLFnK0vRqg?0e1(&oAtDplEvhH2@qwqLbh6)_b{l{*&@js zcfodL35t4~jdo5KZ7;rrzDu?eTEQD^Msh%1wuO|SXtb5l({8fuIRL)RwgPgVwAf~+ zVl1xMMA-mowZ$BTN^Q1DMS$$ERX_hM-oLB1#D(D7X&W2_(QCGm4G{6VO-KTF*%oaA z#tqvQUr@VgGf|+)E!!ztu5Q~F_=8io?b+>UykpbthlD-0S14+$&&HsA%{|-JVm#OT zw*P4Lcwl>lj;Z~&S_41^Y-8zD@cuotz56V^E4H_S06J(hxMM7aY#B6Jhiz4>L3_lu zmdx6twqJk5Sd7^geTmv*Thus+KC#W9M=@^uXB((IwHZ&K*kxZa6JopAZGV86tG#X- z8h6{@qA69Ka4<(w8xRhEXw`^Mcc&KSCGRl)*e{`PI30d{{v#8eHD3$ zlI)Xc3MJc1Dbgdw4xm85?b9nzJ7Ql-DLkomj~Brq&HfL4+m6~( zOF;UV{g>H*Ot(7~^jDJ%d+=qD$+XX)FF=-k{uh8bZV#r9c(y%-%y}p5{giNZ(!Tsp z)N<@Q$z^=XzP=8$PupkwjJ{m^CLv_Xv-`B8G2dSB6=qq1{ir7fq0oNT4IpRiZslk! zv6quQ`mFt|lcKQB*?-#zYUk}~v@0yP@4gMSE9_I|0jAR4aU4Xe?CKe4thVzh*saFC zfdVLM?J>vESZ8mg(E1DZIVGT7Z(kb#_80Bbb5Xlw&m{v|gMBfX7BAc16=0Yf?Ewh@ zX|k`#BGYxV{r-2D0xkC4=OE%0yC)sITJ2}v1<^M9=Ph8^ZkKW(T8I6sU%>FH{lZ1) z)M+oG{rxrja}+0Y-R?_OUN$#z%J_sXumy&@+NmVs#-zR#qoC{*tZB{|%ef@rcsq5%68$9EJme$X+CcKe4MGib6LcFZnC?TEvl@<37@ zT`4Hi9Mj49an!MQ1wf8D^tVx@JDwx!WrjmF3DRdeJW`-pmg9SJsvUPaexC+1*^Wn( zfOx{;pmp-3!{;$-IgU?g=Xc7nfF{&w$G}n4ave)3u^`XkK`&6gV+Wnt3mm_`38ICL z`yJp^D04V}rl`Pkj=8iLop)rA zb-Ud0cQr67{*R<90jsk3`o5qBTtKdHcS|!ne%+|V3j*hpm|`0vo{~? zmCh^rq2aD`6;0r(oZq96?>*;_wk|+xwR3Ii}L{*?pEjB=OFgSxm5ZcYw0f z+3_YsKXLY;uXmTT!&F$-?fkF?3_Z@`Ljc z#Vm~*2S#`499kuKNV^}S&s(~555V|HkDWx#S6aOaDh^0nF5#N{N&h&5+CgbbEYSN) zO}?lFNas>gRiM=U9*Q7o&n3tVmI^kYI3#6Vpf^Ms6arzP(yXa8Q4W*FZUeT%(qrT~ zI3nFgPQh^Lp=lVr2=e_oURG_RmL47t@0Ll=RDeU_UL@oQ1F$ zX;l|S=8UxV6G%BLb(G=pIVZh9i;Y-m`3|U$lg|AMBN{LLI*0a#oR^k=2zxI`<^Q4c zqV#);=OjoiwgciNY1wW_OO*aR3fW20rL+$tMS7PaAy=e7(AzRqddUd(t5PG~;~CO& zT6|_o3rbO3lisH_Y?d^^4kX#q6O@LVBOS9wEmxXdMQJN}(swCLa$S0fma_TMvDcxZ zK>F%#(A<#DuZ5;UX%M9)-IN|DpUN%iWFg=eNjqu7;%(_px+_bhQz(0~RJyhv>}Aq- zvO!WUP4iP_#=IzX=N;NcSs1@=&UwHByH(pAJlWB(0)kxhGN& zH-PDqs^~4-Egg+VV~=zu#YK9hCt`r9kCo2(6y;NC1O*ZLr7q-H9gw&$x*3)pr3c`JbP-LKUP>44#BhyB{~H0rsPy-lXdII^-$BhNyRL#vSJ@icsO%;? zwG4)uWvj-6#9gK&2egOG&WM_)j4h{>CokCt6q4|k?XZGSAK6)oefr6=R-<-Mc4{K} z{AE__!5AR>{S`n9l$Fvm9VAP)hL~WPmo17zvVF7{Iz;At7`7aiExHcABeLa`X&Wwk zE`p*6*}^3B9hc>*AuLj6!!l5DQnu?BkVeZ+(xY}tmNpKxGqNRI)XvHlPXWg{*|z-{ z?s(ZBhcP7QW&T{qz917&X7VN3jwsX;WrOr-Op?7Z0)^=^%`gyNmCbhsLxyZ2<&|d2 zR#QCYn#?c;Fj+G13|io3%lIi!kt16}y9RP)fjZFS$(DSDzU#835)mQ<|LT9lBLlk`nfER@-&BKvuK0N3z`2%pnNHNHvytYWQWMN z&Kl+GCZROR3ywjWi`d(qMDF}W}USw}ykZ-3` z4+`b;tkHQ>-q4ELEqOcLokj90ic{Q{-@FZ>#q#0|jQSn<4>mwiB6s@;_f@If`5tOz z@<+>1l*^w?ho%boN92*Mlz%Y|wY&0%6fUoldt8H*dve2F7S(F`@@;@$BM+d14{PN) zJk;*XCshDio!o+wDeL8Dw?ch`+>iFHG|HEWF~CjoNtDmfEMK$&Obr&K>n&7YLDb>6=Xh^FCeE#r`*{<6YOreUnU^-$S?ebqF3JX0g(2~ zMbUsZAm337P0!??{BNNt-$EC5SpF|L+g`}?X@AhDJoA4cBl&a+I~Wxf6s|BSBHcjZ zqPR|xW>CHXriibX;)^G+*GKVZ5;%Mn z3VLB2PzX=KY(GT^EpQJiS}0-PUvXg%7y=X#6ch+l)V&VbL5iwiGzKfOUjY3f#V#74 z5XIXsp&?YU%^rX{6!|1NA2qTN@xIN>N3d1WziCBm!ErVuXBdrxbI~0@`WCa!M?XQJgFXc9)K?@zW*3B35t{# z(0fUtr&F^N6yjG~-41wgP;x!MbxTWX~gv=s^n2X}JVwf`SixoFD z7|J_}V>wV%qFBSW0%@tDfOZ&^DN5)huX4qOP>88eETph#rJ`*;thlQPBp*kWBK8jy z_Y^B8LTI%j{WU?l(6~Sjeob3TSPbkm+3rtbUHRQ!OsXS}}%4lUQ zJ({PK?`?vx)5^c*ctS;t^8IBn=8W>Q`Di_>%%gC}Ips3)?8GYTrvh)Bk`wB48RL7< z2htLhLSLA4N%_TM6p2cQU?@ydzB(60vU0o&*e@%6=tGyHoPHIT{)+NdN}Ebmn$Dw^ zrtDq=zH}v*GP$oR-#?AM3}qKBqcW9uC7R~C|m4~ z^3xWWTcV6`q03)LFs zWeO43DWw^}U9bFh14tW`p_IAateip{!dsNPmIGm{@@rZSJx~e;K=M$zmEOD^$|1^= z>{aG0fGvH>mES`2Q)Sj96#dGF6F@ScoJn8gXUd>Pz#de_Euh~69#UFTyyCfX73ISY zEBDf-{1?h8^qP99G*F80i1HVPVt1hV~9t7vK(sH*)2qaLJM{TieNs}7O3>5!_4(gH$MtY?}om^ zs!FLH$Y9_q0-rR+UJg@U&_@ z2StqPs69sgjB1$|gq~HUFpzdmbs-MUHA(2KaJSRtogxtJac}pg{FW4=~+OscD*B zsEVXd+fCJ^VldoNg~`& zbiJzhQ}i{cSjxg^RJ}@jTAEY`S+b&8^=~}*+f+3a4{BFckaO;Vsy!Vv4^@@lq3BS} zq*Rngs*5Xu>9OjG0Suk0`4wPzqOv5sU9b>Ex2j|tD0@`TXz|&nnrsh-r>f?kfWBXK zC>OuxjTc6fabFK7sm|s($h$ji~ta zjE$;RUO?lR>Z%#)jcVpP_)O}K4H!xnwTiMoT-B*`YKNP81`WPhU2p-I+|{``D7@6c zv;oRn?Py2a<$ToZ-iLZW^9+o~i(Ui24oM zx)G|5vIk|DdM$0^I-;H(i^g!Zy##zm)vu7-@|gNkup0mnHtk5+N9>dCZgG)^7p z4QcUeFFmf-d36Haa~IUSH(~ZgwUpi^3F?2pK<$$Hz&}8ksLpr77$&Km={&Dw^>=@R zoxQ9UX<=H5`n%7-aYda`gU(d7(tyS^wc=wiW~x_C1+;7GW0Vw_r9R&UXxVCK@_FT` z-97|muKG1{&E%=0a?yBQ-A}&3eD$=8C<@en(QNyM`eGvZ3e}-YA?&95T@eQ8mOyQ> z92OR-eaNYDTfKxLsm1D5p$jsQi}g3| zb39V_)0_CQI%qr8cdB*ALHR@-F%z=8)bA~Yrf&5%N(Ssv`{e*=uUfhT3j5Ua#UOdA zzWWRa`_-?LA8kN=pp~3^&(vA;5g$~)Mn{kgscY84nCI#}AA@FCEvDywMEw)xSd6MI zHo&GawWSBd7&VLNo-=9c3}A54RD1w1uA2CFfWl2vL))p$8qRT0x@)#fg(444=tkJ- zshMm7iI?U!YqbCmiKc~~10PK;1t0x1g96;zzp%$$tI3z{)HaO0xJvkNK`G~-_Z$tBGP4#1SC z`ThZ6jwDH=@`un&5c1yN6*ys zkH>gj)40$>mZh{Dj^>Or8gn(T)6yYNGmr#^>l%hutp%F*et?)88WXMi z3N>@5q4B21`V}`lll(d4moE?%i-EoBB& zXf^}^ex)X90pQ=&a0O_r)~xP8tw!Tbex_Q@c$!(<*Yur)iaO0hnu^zJW=f&AL9_WA z6pfnDk1!TZns-$Y)~w+gps+>bLVk!=&Bh=IYt#JnBaCR*+`@W(&6_0u+xAN`>A*J0HBwFX)Q256U3 zR#Kq$efr=9X?MDzF<3i|A{vLZ3c3$NwC}CQh=gj>ThJJ$T}R>P!`k6Z5Ozd+pqN7W z;o9kRTOQRO`UaiHv z#`D_H(5@V;9jsk2B#GK}^f^n?8Yx#iS-Xw`NSC$jQ4C3nb_xsiSG3=^V`NjcUyMU7 zO}mL!W9iy@+TMOu8%vuNGPIKY;LFqwhXBPjt=$T+XKDF#b7yPE(bdY))>=YQuJ)gQ zVOgGbY*{O+*R@_Z(V4HUCckBYcB%^eH?+217=%LY57B76sg0+w-7W1b$`2^kejA#V zi~H$nBuL7%nUu~~u5EZ9LMyaOXkaU~VU!AXS8M+TOsdk#X$5{y`}ru?tF@xTAgR&T z{R+NX?FatQcV8=`44yjeici5;ul?f%_!_jMWsupZeMX;yChaWBsBG3Ql>v2&b`INx zvQ>MOJcVuAzr%1NwQFbn2Ne&rK_5ceLv23ADLS-|Df<0Ldy|eldaON0zKKpPw;IJ0 zt<5^1=+Z7Be^|HHo_2KiXlK*=xL5m#-lu(9({40A)n3elhJNiYlYh@?87uJzyHvde9z^7g`NXXkKdfj|1h1c9i@FqgsPC7{;`6chro! zAlk%j(k<(R3KyMCIP7)R&8DnLH{DWqC^YMye-B&Sbr-GznuqQ|fF)j2p1S+9Ak<6u zUo=|1b#;SK@1rxtLYl9xY7aOL=w8f%CO_SVYv?^NLO?hlp(s`$mJZWTOI)vVY*c^AUv$IDr7M8I-+x>PkOlS4$V6w zbbB4qd0e-70cw%DKzGzm=>8F5)T4CK&w%ixZixt(PV4U1Lw1a=mfn45bVF_Ei`C72 z6T=m!+pmSpcwK84?u7F?18s-6po@D4crWT^(DthY-GCCdu$Oe-(w?J4o&78nNxGQp zAWhcA-UrQP-Mh4@GF5j1LG%e}Ix7Qe>ALSJd-AF-wHgc=x^hY#$kbI<07bSgmR3GF zy1%ahOs;NtHTv>(;ite?pj$_Waoo_=+=1v@x>P#JyNK0Q51{k5ZpDu%iglmU4Ec`k zKRRWiL>Ei}<5Jy{$LK55Ev216<+?MSs8#5C7-*{06`h38yE^kLV5rswI{I(FjQkk+bOa3B0_IzMEgOla3lCHKn% z-5g3JdZ=4Nx!xVRO|-Uqq;swX$zxsmAV@lOO3E_m(zP6fv~FGQ5|H%h-d+J=y}B4W z-Lg+-Pq`USb&M;9q+eIk3CaQ8CSrJ|dzYnsn}a&tLC_5AW_rMw7dqqL819$4eT5i{ z5#9IeQ5)6WTLO+T-6nceO!|Lln&6`U_%YaB^)qQE;->$55)_*CD#|f(*INu?@I3Up zS71my^;+@(c3=3aQIS5JGJn|H`UJ{mEYT;?H?CA)L7&z#{oF_BEY}xOGFF8?^<${0)PH#k zLhtHF7JX8^V9uTZS^fj%h#WBE{D zwGDk8`UOEi@kqb80gX@ezBIA!(yylj;=1)_3kd7cH(CH%ul|>nAnDVuz61lG>L(n6 zuztOGC)5t;v1uHP&-7L_+=F@v{UYv={%HxsJlFfs9@b%ffCyH+&@Ze;<4gU#)4)BV ze;ENWqxxbW)W-CqUqPDDAjt)T$*^H97+efB0}$qFz()lShryC2xMo8!r4zXuG?ee* zVfcil`L36NPgZyv!f1QDkKyoii19Vp;sKs;z%Xw)hQ!YhLz^BB8fKM)-`}u-p0PlK z?@<&%hFqHC1slc}0n8!8E(&af7@T$hVW?r_WJn1!tV#vn5yNbHmxLSG6{sCGM4u+7 z{4v8Hi6|lr;S^svVR)Q^T9n}~rO=%;l+$!B+TcYYr&ER>9-=sHsAoVKW7yPzzB7h@ zX=Bb=!{s`R;W@)gawx|d9yWqK&aj+L6pA+-rVO6*2Ahen<$@uSHey^fO!<)s{iKMQ z%w7n9`ALQjI@vMVu*(TLE*s+MM3)pp(QL@MVpv8WqEy4?9Z;2K$R@8yx?yw^hW4sK zyb@9~3}4gyHPi4KImxdXdQ51{GR&kD{cJ;D96;q63iqS&x?x%*MCThyJy9z#6tmf= z-Z0#6hNeQp23HJbk->8#P~0{o(0rxX@W&bO-!ZJpgZdJ~k!Ju?YIq|G>dOqvXnIy| zXxom)3d8nSU__F6!9vR|E^kYNNQPesOYjx;*VsQ8rL(*lKNME&X!-|zwVmvH{&&YAp zYY3n`sy>4?jVbPY+VeYPi1``No*Q;jUi+}Y{cpe@F>vTLJ!+_;gC)ic zHv_3-eac9Ntkmt^gYxfy|da?U_pxv9z z)L@u>ST#*Nec9P;D8w9K?=J!4LH3CX9R95R4M+=M9}#09yYK`o3}O{uW7H3^f6LGq z!fvH263Pl_iW|maRfq2a+fOgga5m!s*pIR?_ds%t{gggu5o|C`Y>u%=n%pVYlU_Kd*<=bl#IRW#(RYSDeGs*?>`ppO=N!9f zF0N!O+eDMKIQA}mx#HPtX~2}g&Y)P)C3dR@wM4dI24E+#>nIaEnO#L2zAm%>O`-IL z6!sSRDzC79tI(N>fCW^fv4<(*aFx9fiN*}JEkWC*>(KK%hGO4zc6kX_2UM*&&|d-xzoD%k;gHt(`wl;>H+E~co! zJvNfIm{qeg9s_R;Yib6HTJ|@3Ti<7Yr72Jy`|)C!ThIQK4FRXU;C$X;3p+)XTV z88pqTt`o9b*w<-d)XFMDF$isJg$Ka2v*YOV|9}BA z7y#Lw?0>gWJYn}Pgv>7X7fR#kX0OnDvWHzyLEc`LJ@^lh_Oav0d-aq(Jrx%Av%{2% zI>0E5xU zeEt=%nT*U5nq#{dnXl;%aWyiwbo`l{k!hU7g3xSa_CADYcO&zFQh7W;XbS>QBNIFd zv0g^zI)ymBjZ9=OM&8HB^poe!*T|^P0LuX*vr~jI^fNNvWZOX_WA6od{zk@*4)+Q$ zGM|!DJkZF@GJ`J2$mDB57i?tqvHOASkdaw)1RWtprp_0Hp+;s)9SFjVjBXr;?y!+r ze;oZsjLbGVu`}Gr6i!6_sF9gM`3=X6jDp;vkw%84HO&bl(|iT(QAQ?gCE8CK86P|F zMH`vvpQ8PgktwE4DyKnjM;R3{M&>)pVmO15ps(gxBhxSdOV1e@{R=S08ktSOXpb{8 zS_*o_8=1eq1mAg#$PrwI3r5C@WG$WHt8}8D9ScUScktwf*;0z=4 zB>~GcG8!G|uNj#vdbwvo4lQl-FoMCTUpF$#g3+IklGZH+MrM8uZkQWJCXFU5g`v7~ z#)h5sGmO1uWZu099Ysc_Y7;JRF^t#_uy>4%)oJJ~F*3X9ETd8*!?#6ynUUE~OUH5} zV@=V;3M1os3`SKNnen9iu95kfvaPF(%pkdF?irb1Xm3Hak?~p!j5S8)AM%&i8f}=t zA3;!WWDbW;s$c}HR|({|8kz5DHroa~^i_IjWZEd#x5LQ%b{cxH9j1u3$UZSLAv6K% zGBSOnzuU;P`+={=$YjuO3-ubAobRBw&&VvMUn_oQWad&n4fgRSYySKT_5}kckNq0Clj5c}$DVLnely*msDDNfV(z)WoPL8#m0vq?2#(u!-?V zfDuPbOde&nhMSm_w@^lyn1B}WA2%^KrhzZgw1}zL58Nl9fS!RU6B9-8i<2g%meLEO zP0R>Ql24f!buR#%HZii$!AfQp`zv{Z;!MnCnvcYT?JCI50}my!T`(~%vlcRL0!+r(6dLO_m*nMo1qToWTC z-$tH^iEo8~>u65^T|Nfx1pwYKF@qtYJ$D&C`{R1F7XctWf_F@eod&>5OiaO9053H$ zi}FEV2B3eTUT$KNEdMn zD@#kF2PVds1Uxh`l~v&DFfrOsAo!7qd4+&>nizlby*)887IdUvmx-A`>#J@PvxVZt zJtk&vGU~m!lA9o}k2NuV$zbR=F_&(mVZg+!*Z>93Ow8AQs1KT$lk}hsfsu>$=O*Uc zGXOShV%}~5-%DIN3KNZ(7{?$07&S2+c4!|1VA=(5bYWHqQ8&3T8k&K-xG?Y1&ujR* zFnKi6Y_JRCNcVJz3v=o!hU%~jv+XGa9(7^%O#|a`7bbBTE=`mR6U)QMoN{4o;?aM` zg;^L6`ZO0tzYc;6To`*>C@gYemQDv>i3?Le4xS1Z=Il2BT;;-iX$iU-7v^7sg0u8M(MJqbG3>`nxjHF<5ZK zl}V%2j3`%THxK1GSH|Ni=+C<{W3A}F?8+d!0wAq#UYAFOic4gwkK-%rf{7i=-47xIMN+Wye%Ir#kMVH-}eMg}v$BikVY}lJ_ zOf~&%*F86ePv_{?;k?p5+!JkX%4CBcQxx9Lf6+ zC0FH{nawn$#b#!*4vNamj5iO!?wXk_I&7=j%)I*)!0wxwFJ=NjgPBRA*I%QVxyJIr z&;%qM0MKk^zM@~wePCwt>8<L_ z6@F0AZDvw9kkeyk+9@d2Yi54cqP@?|xH`d*elt@*Nvm*e&2F(ns*$qKMW+u!F z9na0oDEW?u%}h@V1iS!JdO?ktnG^HSKWb*Set`ZlGsC@rYio38UR?|TCU?ezo_kk! zM&AVBZte_APl?%`8FPlk9`4K^*68#LJy|x&m^&-FGrI6p9RTXI8bKBgCEQ z;M2Ym{L5wBXx&rJoCv_}Qpvoe33U}?y%d0}nKQJnr{{O}E>nH;C#+DLPXNdhE`^}(>z&xuwl#KiG}otT3|c-j)4?sDyD35X1uqLYzqFo< zmbH(jL-bdlg`U5UPp2Op3A^F^5(wHjQ;P0yPc@F+}laUyGgpK;{99 zvgIK0vuJjqC-tDkDGzk|TUoYS}7LRJ0a|fg+J|&ZA7hAztVtJZQ%`3J1^LH?oSvGAzQEs`Mc9B+Cy8D8p((+am zhWoDNk93Alm1Ue9vhP{?2!OZR(wFiRYAjW|@qfmh<~9D> z4K#X>-}y6u`ix&q&y)Z7&6MRGFn<4Z3Q3lZZ`*}IC>#GN?GP;=fAcw1RE!_*05O&0 zr_gD8cgJswf|#oDZ9{0hH-2&@_^Zc1puF(93BKQeq<+FRI+UPc!nOl+4JMcaQ9POu zPRq~76O0=``E;_<}Z78IQmV?4m{WTI*u2DWQr z3{6P8Cu)vCL(jzHHqhHU@whvn^-bIayx0^yao!a`9GDos2(8a1UZL+N-wOUJ2raY^qccC!f>ck#gy8^3SKcKi__3$woZ(5C+Amx_T99sPpSsf=2 z*lnv}N=YuY+G2;I%*xe>#&WC9Nhqq9Snb-5@{v^+y}ch>{ozf6XmyTKC7)PbOhm2Q z%KuNO@3mS*+1`Ct*NmY@nwi&Gd%EYxti*Fs7_C2xgB2$0(Ik+%T6|=w|2PL1;g0n(+Ra&FJ=+0Asr3*N)+Ur$4~+p#xwUf-Y^ktbOktu*>qozX*xo-+hhGDErNTk|D-&br`BBZlJ#5vl!v|n>;0jx zx8gk|rm)Ei>lp{Z_tJXyB@FYZ^&%B0$EWge{9f!2rHj{Y}Q*7fm5d(9_MnJF75}V!s z8*Lj6IWNj=jFdoFW3&DV_-buR-v!<}o9UBK)Y}aH2$_vGCDp*xWMfHrF3)Z9Pq8S6 zZIU~23%s;>n^vhKHot!W(oq|4%4!<3@h8WJk(0k4fK8ko$H4Exv0DKZuAJ9%K2zz5Wv%)bl zah$}{XpHAX(FTL_oMiG>T;RM@1HOx#L+?US0w<4VY?nCJkD-B0_hR!65W=vWkG>8K=^Wz9E+5PG`+O=gis;emC1GZ$h@& zHiq&TJ#44Nq0!TJ+HDm6wk5?7df2v?zKut0V=2Ws-1g@T$UbWOaV0D~X8Xr>@I}~$ zy$Xiowi_zZ7ipU*g2EHFn_h=4QMO9T(2TP^T8<*#mVJY!Z0Bvim!NvVc7+WMl(U&a@RzMeUmHeA@VxZ5znaGn!+Y%>{q1t(hipdA1w!Am+O5 z=%*+OY;(_oqtNy^t@Uo%mVJp@k?ni5qv*D6T_pJK*y{37l-g=&Sx|2K#12=o!nRb8 zL8!Fl(Y~`P+x9*%RNLm|1O0v5U+KEm*}6=k;77gfUnwxH$#(88)LLve&{=7%wyB>2 zaGR}E2r=!p(`TUZfvqG8VjkMgq&$O1wwxjqPi;>e!vOW$Zu}e!1GZ@t*Lh}Z@coOp1&%)2C1X+Aa7F zwFbMWub{Wl?(a{ax5>_KJft<-#q2|0t6kb3=xej%QH=V5UE_WlAiM4BLDFf*r`=>v z?7Hdf)-JownJ}W;ZuSGzdhJS{0zKPjC;9~ZPwnFA82x^`eQFHCGrM(Pf@aVzj9$S* zcH_SSwC8qTTVkAF*!9zX#+P;_G*cb1yFd}(Q9H?ZX!Nw-L}5X#)D8QZT+rOMU!DZO#r9F5Up>Yr zvgLnX3;VBW1zKhQ=qWJWvu9|^S8X2<1r;^+{!h?XYoAMNj>q=P$?MQ*|MYVdPweHJ zP;}WJ{uX`R_AXq2>9G$nV1Rn<@0LMPpM4uWeoyV~`4HW2|IaY64A{@-g72BV%M`jH z2JK%S1kI5Biv=j2+h5)S(qVhMP^J?IH=59BoTPh#M$@EA+hCH*q(5mP?>1?@C#0Dt zxzdB@J}Lhk4D^`fK?fyxO&X5DsCiFvpy`y)ByS3>`%d~zh~mH`7y8oqP5P-D><1@J zq9bSgCoL%iU%;dl-vV0Tqz2kZ6+Gz{>xk0DVg51{t_~?fAa!&2FA%bQ9qQ;nq+o~I zP;eY_I7*3+Ar7lNAUo6{z!xM(9MT;DG~A&w3zSD43f!Uan1dn>0~Fz~H~?UdJ2+RN z@r*;qB)ZBDbx}~1;4nff+Di_rPq0v!=umeQS0vxz2zh7=98Q;k=7vKQO+QN<#^}~7 zb&$jm#Ahc249RXCic#ZjfhgBwtP*J1uGG*&rmz6|yE9Cj^$ifRYX8eFCt zhbN8zQ|oYz+-mn7aMU8+VGgSFSMU;PaIhk;U!#NFV$d`>`0}B!*RTMj)4}n? zK}imXE{E4YMqjtXzKMX{<1lRm480ELDEX$(LGv&Ao;r9i7?OU6R&rAfIQY@4?3u$= zC7=yD{Ja9SAqUMasDJK|^BuiJUN~IY55|`coFveUIQ&k2l2L~}yC7!FA?_;rjNI=& z0}2y&F6|d`;qtD6(v_RF31i{Ljkp68X6}JKK;h0^`!C%k+<7#K_2i0vgJoXa=4lY- z&E3pLqYw9w|4m`ItJUaZ4{!%0X!Ya%yA#9a&wWZ6*#X=pPZWV%E80aD#7+7IMKIUq z7eG72-8Ku-LbyBT14Ss;iM9=eagUyal*8QiGr$ziUAz!Lk8(%%L&`Dk6Y|eQa9{9Y z{c-M7fAB?eBPeoqg5_FsAT)|w=L8ke-0fmWJH_4gJ!npIb7+5U47V~CwKLq~SrBuU zyOe?KbKDiQhbflZNjGpD_d+(*$8$fYHSl?E3uVk-;66ADlM=X}jiK=pcRp>;NaWuA z12U7iC0_tcGM8;z0~nXN%P&Gj3im9%La%VA(r$okZu~5W$>Co846<{%e&3+TqXgmceuWk5?aEY-veQ#+#m|qmvQSTceR}RFc^bS!4=bq4wc*nnt^~nKKBS^Ak}l7glKHwesBYr8o80H zA-jpIIR%Dhu3{ZXTDUtXWvP{GSOdy7ZYjNp+qo{3qW^$v2m;=R+zL9Xql4>8d)gjx z=T@>{e9U$I6{dA@TWR-RH@9mFhNg$xN$-SSuJz|A`nXB=f$%A}o2H@tTuu_;4{+Ds z1j9@2gfaAuaGgH}rcv%!T3o_0ZVsh=nkKVz(C9MR&6i!K`Aqh$g+kxS5nT`(?U+JGGMsk27l{jd z#<9s0#+-AkBad{PBjw?X;R@df2=jX26jfMV2fl!D4*j_YZT#u}a8 z5`*95q@&I1SOd;NU8MOcC)*J)-g`0|`Si-+3ltkXL} zpviYS*$dePPL33RxZ#xf78nbit~r45rc(^JHgOPRT83yzLaR47Fk>mLC5* zPScDqt=egnjsmN3a+RP~>*Op3-+iZSF7Vblts-Yxz0;mTFf=%={2E206Z?JvE=iNq z50u^8>~tp^wHBv;5>ab)dT@E$r<2vO^Bia!d5PA7c= zNS-)-LYWa=PAx|Pt=lQx1&uvU>9ohc*J<|v`ud#QSE2E#6MrH^_dAWTG@-dotdqz;W@oqeWy=LC* zRnY6s8&9)m58l9e6rMasIy&Ys?;fQ-9N{svJU_~t;e)tnx_o~{8KywecVp-tZw6K$ME+42cc(p+tN@w%bT?k#+>8j_W@cg zZ_B3;7RP&+u0cF+JH-Lc^SU^wUEulKqVFPa9>wDlcn=-y@%&xl)qjL)B5zA0NRxO1 zy62L4uaS%NGVgOOh9reI$c5}Hyrp4iOyyZ0hM{S^g|w7T=Y`T2`YO+HD)=&Zd-nin zCNF#(YS(y5%G}H1{YWWc*}U3mV9(+0k3?TCujvpSkdnuJV*Ls=JVE)v#x;m z6HV7|@IL(&169adTnU9YdCs)+>=y3=O{9u=)7}QjZJv(euEo64aWL%;?_Y{x-sQP2 zMN!2wMMLjB-uY0Vujc(=1BM!2B7NIxc~8brEVB+Rq?!1qFN48_zh?q!uKY)I7>^r&5jkCO+OErcF?;}Vc~@@?{= z-iv>WHZgef*IY-V5C7%@aufUVPg5$~0luyrV*L06p{O0?zs!URe?D7+S^$3%L2`tDcO3e{`4Iy2 z9p#%}0^u?Kl7n=#NCdxk8l)ZPFQgMcBKdFb0>=q{b}kyD_-|9r-AR7#ITX?SbF_#( z#Sf%#(rNzd_K+6CH_U_jGyHv5KysF^+YLj{@!e?26U)z;k0OpQrWD0^{&JdYo#+3U z43Z1{Jy=q*6E5UgLj4?$Rv&MqkLx z=7-X?V{`b2cY-mOA50UBJiZ03wy*QgSEH8Cue*o70{)E*aNOW$UqP*qKaEn^Zt|OC zAi2elyabzy_zAh-yUl;&KL9P}*B9eXxWf;jX>iA0yMwXCo#w_rpj5K#ai4xE} z1pCgyG*3Yxg~7Z8Gi@<=-U3eti1rcqZGcQ)!3-xf9uS0@z~?709{|HaK?21<`~~Bm zLPLPyFPahu3ZDK4*g*o9&rk~%bbk%@LxRB?@P!Dbv9u5h6;x0zSD4@j9@HNe*wOs& zh#;O8XW@bsUqI+lK^X1GI3`e6fh0okVgP){1?~P26Dc@(0zyv+Oj|(`C8)g#lTHfq z;FO#YEeN;*%2R^1v|2tbP<;*~Vgxn?U`P=x_>(?(R|L_G(3C3p+ZlS(1mBYW0pG!O8}ZHV6vqAgxibuM4u9 z1g*3tY!+lWNx5A{8QZ|VEhD>zK&PxT3u=OFE=U=F=) z`vuZie&?6iu z{Dr}@fj2-HN(=cwAsb5xxH#~Te89oN!}Jz7Bs{VkMTjtj?%+`2;+GH;CKS>q{jjh^ z0xOOPw?{)-xbQtXrR=ECk1otH;X0a1L=`?}{); z4lt?0Q{=x$6V9P1X}VBa4a%#+;S1=?5Sq4vAyatyCa_!+rW`O?geNY7|Az3bFTqhLe8&}oe^Ypo{1>-` zUUZif32&Z)(Az?<5r8Qcet82@?g;%hqOnA1Wsh2^@Olg^D-+g}=yGB528?foFsTrD zD}{TGP(IpSp)Y+-s)U?S;~27GLS4{VE7YWd^uF+52FABexcWEftrwb?Lui9=RTW4Y zh3`&9W0NqKem~FNE=0V0tM` zqAA3PP(YK(QDO0MN+uZ-n(1Y46wO%(*(OmHIZ9nbd!oSMD*A|yrgIZbmVwbMnkGV{ zyXXvMRC|cdtwPOH^eU|hVmDq4CIhGvM~-i23ew;b^wzt z3jG`mIifN(D04**=&PS6nn%IX>!JnZ)W{djA+KwJ=-f|Ge?!zuZlXfb`eZcT6vfga zgS{oPq`760D9Ih;bz8*dptD#6Xt=vY?i7+J5smpkVW~(*jb);kOsFUqZQlm7D?~d( zU~i@9Bppa`S2T|{g;t5~rvuDA(eg-8R*U#+(N`l{^9MxNiW0&g^S zd>)EoXbIgR`i4^39*K5PNbs>JZ6k_K(WQSdhEGK59LVev)zFTSZV~JI7s?({>1u%L z6`kCKqE9qL>++|f-|5@fFN!IH*#ja^2iWvXw73C{gCgs4kPL}l(uUFJqOWK}@32Ts zU&t4tw{lRt6#3B41dND=Hv`kCXfn+`#zY-m&}S68{tHYd@dLI4G%n(u$q?!)?xXZA zH?i?sTs*T_H4}i{#g8sQuZP%Njz&-MN=MYZ#H$tosJB@40i^keWm3rY73bGL$^r57 z%b@fV7f|%zpxCzp2>rzqd_WQ)j`|(81d5OI!5$=TY-Q0JEMD+4gdP%4`4?b9#7)g; z3>CliBcz3i8!0G#SbTwm9uYr(69~h_vuSt!QE}RDP;pG`+6TS}u?r<<92c*D4i%B& z={&HX5VukMI7%F5M&C*CjvrA(i+`i3l{+!;@XT^Vg zgCRX9E+2yWSn-cRAc+&d_zr#X;-BaaJTKnzHB?*>I~@keMez$q*pwjNzZU8*iPI=; zJW+h>ZSWp+qv{%9IdWQz-EcVvz@;vxES#UAw5%M<@j(UR+8 z8zD&Y#ffjCu|T|tCJi^l;W20|6ps!8J$qB!wHJoo64%m=TqJfON7`-i)oAb+i{GTP zZtjS0d7!UE98U3yQgJc`mn+1%_fe}9bLh)lC7$C76!*j~U&4rLas5Bws}X-sGpJf| z?mqP07xTVGQ6~;#puS!lxea^`toS|3A8i!BK?Bt!&iN3vW^o(2Pg=xrPuMy*5qvo-WS64z4*rc)eF2OB*R$58G;mw2cG)_03H z&x6b!F_-33z2Z4SSluUPo5^qaRGdN%h<@?(&%iMtE~Q}lGx4HEs2>y?lpq}v&!T1A zbMe0!xRk?U_iHfbg?N?)NM4FJx`J;+{FV-Vqv9nL+#M5d9}h4liQPerg^MJPCU>rq zW=fBDleEr8VU}>`oJZ*{IUEa84@obj5_n3cQdXjuWj9;AUUQgUJj8c#@y*ip1b zNs_;Wn3IyqnE)Cs@!JdjQ<5zof#$SCd>@T55+!*v&PZx#C4N@&3MGM^lN_Lo^jJw0 z-BxjuMA|47FS+dm_Vbc6?ht)Jl1{#Yi;_#UeKJ8(=?L|gB;n^#OO%AxQ}jGZV*MEK zlO=sGS zO6YBsRFN~KO=9y5lrf#kXI!)Hp|gfEPnSD>@h`1yX|erY_LeEwy|Hz{&aZmgn>AQi?vXth;oJdC_T zRmS;?QF~?VH4(%0+BlZ>BfT-+O7rk)<2{sL@zyxw8TjgqXV9-bbFRyEbVpP zYf(7pGH6EVsM|IYhC1oyjt1osU5GajI_s{+fc>aW3cygh=+Zub#8o%<4>Y>zUL*7% zx$EXHL!;h9xAHVvkLlVUfW60czfr!Br%on?UOIucWqa$kOa>+&-9LJe`0B!^q0vwG zb1F2Q(8Z1drN1ug4-CmkT?WM(PU-rS&p$v{ItzxL)=4y%I-~nZTU^iT-c!!vIo*n- zkaq>C8}6_<3|D13TZ_mR@Nf_3jGao~#XPZ5TO=$6t6 zCZW3AjVP|_tiOOHOjkg84%c)BgV7kSbE0MJb)6@@vTx|FYJn+2w=)N#qjU{N1KLfU zejjZBy``H^)hwa--0Ad=cR9i z!FZtKqtTkJ`$?B1N7v{xgg(?Ya7OV+moyI~k97+uYWzgko@P(EI-j4Q%+n>hpz*2h zKo^W!zAlFDivr!h^kXj4y%+;SpXt`OMc;E>=~ytl&=u`OU#V`>Vi@sK*S{g%o@Kfu znv0d|j3_OvLRV-2z2&XS>!ImmtEPw0_qmnzpAhq<)spRCIBXI{s{uQc`1y1PnoQ*& zaW*;K1s1xR^qLA=d`x`DgZ+fb?ZwdRZ*s2@ijyYkG+8}m(r*YD0!+R;(phMyO@b~1 z%^8y&e*ykklf6l(oijPv3DVA+T&6ke1(SkMx=TzRP}1T>lYc3lEXX8vB2Zj5sVC=M zut~c=&=_q}OIbX(O@61`nq-p&H4v6!l4=a~sV31hAxtwdxd%n*CR={cq%p%JlFkLn zG`T_P7Fj04DE;SwN&af+%{IAW3l%vgepMKmhbDRw^T=d#57Zu;gwT%LCngQgqR2Hd zFonWAlSge)dulT42&~UH*)5o4x2npzZRk9WqO!q?B1rFo+&=2(Mjm@H9bIK*Au1|v>f&~eOHc= zIc0jtvqeKpZ8FzFSg>hZ8S1Z?zM^w;wX2OfOIz{if+a3WVP>O`&~k z@utlv{WQU}#VR07G_9b(Uy|v5%6LvOokGE`G}9^ca!EHGMd8O>Q@cUn%QNjl+v1*@ z9wL8!zG?oL^Uzdi>aYaTicFE6hzFx-#BCJsOm7*3w8k`@W?k=1?|#Om_+Xk!fvJzC zmTK7Y$<*l#EcjaiceP-|;uM3WIav%^_vv^Q%J0ceh9Sw~@uli8T(&~U`ekM4A5Ghrr3j+$lD zz9APgwHt)Fnyp#{1~;?XyC^)&Ov(3f%&epf*geh0{Mrp*rkDUJx6I-v&xT3SX0K>A z9bH_ z+w9q>F-%gzL^zLqV;#P!K={s!>o={et()7+(KWyS=Ql*C#cap)U7YZ zd01&1dee+}5(Y(ct0?7R@t{fgT;H9N)b^g*2a6rpI7;0=!jA3))F?K#1FX8wh9Ya} zm)IuZG?%IozQ#h-dm;7^cs>Y|$p=&`xRa;wqwte{NuLA*x}2Yd546wEMOR zF&hF;h@#p&Vw{T+(8b!L~+9@2+b4&DEU82tgM2x z2jX9p{$Zh*atk0W6%EJ}6`&}IL*HpdiVGUgD13?`?5tujd4y6F&eI_5fnJef3esFf zk|k)KDVEehc9~*_HEM4Z|F(sVwTeb3QG8RBlDElHIsFm}d*uW=iOfZ5)e2%fm9MXW z!C(3F35s*dGiJCDmz4&`py`@2*8%J|mEH9aeMcEai3IQ%)qwq;Qs2!B9QT#wnr3@T}z6Z+O{t)(9nGgk%BIWh#;Hy^ttU>Ws8Kh4K={x1)`%qD%{M!mN z@0C+7z`_s8KjMM3R@sY|=O2|LHi7b!vXvU9eOAt(71I}`nhqNHs*LFhO?ArO3Q>Gh z4j_BKE4@P@?1z#M0^Xm>mE?}ASNbkMqm@C11Eg3R#2e~??XbZ?+67=^aE*Mpwg#vcRNUPHh8}PQjQw9O#^Hfg9aIp z;%d;G=E`mco)pt|H!!BO9uI>rzYei8SU49NE*fmsQC3o{!5cbj_ntuxrNzb@3?G5c zG=m2lAT8G*=O>ChgNCcY|H5FcC4`n5JSP-o269UjZmIzyz<8^I zDNXd0>KOgDyBn}6Rkf}ahAmBH z`4IM|tG17YX&EY4TH$1>-kgB!EL8#dTOO$1w1SjuRb&+np6atb)IU^J(Ie`SDrgQE zo~W$oB=%fY>-K0@dArp}tUcrv{xxs-cv=^-RU_VwH+j z?&MY|QEj4q2G3Qa0wCsvN;wpIOI0-r&*jZ|OMOp@Y1FFLXh8E#)y^0&@LZwPS$lP* zEnv8)Pjmo@r+WHI^!cm%I-&2JI?olFE~`&hLFhGgcxPw|SNksj$#r#lC5G*WdfFfq z5$eO&K^duTM01-cbuV&?+*Gf)48B`xmlX@q8KYk33H}6i5G9m9Q(Mr3wOHNS5*C)I z7fB#_u0AjqjW5&#DIdL5J!BIwy;QeZ1(GuL+eScNu5M2ex=Qs?XN-E4I%)*azf!w; zE^5L5XnXcM^uANKqm_7#`X?o+*Q&E=#{N;gokH=}nw_4$pwu5PL(N_@sX5R)Xcl|~ zgQMolb2K_>4y}XnM>OkcIqIz0L_V*hn#|rn=BjD`nC@du|4yKE*F-h}rH95P9cqth zj@3ioaZRU|p!C%EHAdm3c^QK%;jL-*1{!=c56C;^t5NGIzH&|zbPdviG@rUc(8TVomuoY=S$w%=_^Kv{|i#3ImrCOp9 zY2);BjbH?h7n;?ST3o8pk+bThMy8P|(`3X#eYwVVF`!jwypI1tbFgTVsz1YUoiqh^ znya=t6OC@#@5QLOYxAm5^Uz*2LUBxc)D&aqseOuwI5rCmpj0ex?a3t=7awgctxbKk z8)t#iPa8<7MJKd54}kEL_7aVGfY#j#gB7kdnGN;Vwfa5u61}0l7zLULZ8}Y~BDKpp z19z165N&|Csm&oT(Jk#>I>k3y+mjA6xvi}s2XKtG#XS_U+A~g&7N-r`jVo|RJI4dH zyV{*M!FNyleHBFC*N*=OgAlKMN+&)iXw&G$n5aGZoa2R&tQ`^xp()yt55S+QHKJc% zns#6mWT$I~w8zED&}Iz*W2W{MZTHO5E^Ps09%wUHp~%+8Q`$w2_O&+=*AjYcCjh3y5C>6hYZwDE7q_A;8;5R~3Vjc88qWAyF= zD1D7OeT1QYMn{UE_k>XaZF%)K+B_JICymyUXHb92==51g3oweNtdrA5(Su?A8KWjN z1wCtYVjnKWIiuNqahc8=8I3{T1*0zH2njS=NYCLQqnllU;*!z2W*EH7Mj4?ff{o&q zK+_eYZPAb!Vl=ru_(F{u&PDC2(Gph_VMa68!p>`YqY#Q-hZ}vgL-o3m%@%;VVKkl= zjuA$i=m?5Pqf09RCd#OoHeB5_viK9lEu$TI;7c+pq3w^!Myahpl4A77bo8Yf%{ql5 z&8ROe1JjKT{Rv?iMzSeTWE!Jteug+@&Wq4AlKc{Zd}ceUGqn)zQgl3&`XL$kW4rlVHSYoaYwl=r$ssot-8*$B8yZ+n%rhE27-CZ(e9 zYp)J(P{j6*q{H{)dgoCH?{4qnC16kO{pUzPOY5C5R1dwmz5k}fqrBd`C?4~)_sk>c zEbhIcGx*DTccS-AdGGVIg`l$c$S1JSs!za2Fu3>eeUFjx=rh^_B%Xat=_h`p&uwzU z-0X92IBL;-nm2*om_BLyKpEHPfdcGz`vlI1u={;}^rM6D68cQ1WzXlnCfoj7gKX$E z58^i_+rg?$J?NZ-&7tlf*>d?jMDI?ZCCi=$pCDszh!H+<-dH0Hjs@HB2Wpn=6r5Hp zL2OV8)LmllC?De*j`sj%IE!oq{%CfMPD;4VJn8Wp!;&(=7t5ZI(=(avra*rRo7D+2 zQ`x?@5SGU5s?qnDo!bb6PnbAFkJeoF^e0s0v6Ni2maw+uyLryKq`>eOY(BYHOW8{e zEPTlV|AvKS?As0$<*duE^HW(EZD*-umr9_phWU4f%=gTgo}wSvaat1AGLL*Pd}If= zLeUTA(F6=X*}}QB7q*@)@FT~^AjyAk`asx{9_Tp{pV3RjLHW{~; z57!(4i7)TuIjuF`r=2+{&-1kusK3CwwnASB_iqA*P;UAdu&;9eT9AbC?zA`bCU0Z{ z%WiS?9P~x=v+-cK&AkGlJ%(SU+>!+DNXG~y0uo4)cqw@elld}@_Sb3 zOXJ`5Cm}nZx19|!1>BKBe1&|@Kd2S)AJH(dgnRA*M=7r~rVGk14}-a7ylguzeK~ic z9eox2&1j&nN=yPH3Xo#s4YM%qzJ7L3naC{crH-qG-P%;z@He$hZ)NI9rePFMh*!(9N z?L~V!V!%Q4CJ%|D$jD#rBnDT(GB0uK5Qz2`2hk=)AJMdqqEo)2-8~rNC;qJj;1iHTae1KTT!EsvLLYd%a#25EboE48#R^mCaAQjqYJV$+b%JT{#I3o|TO;N)2E%(Xm^Og@6niWNih6Mdt$EC)i0L4)kd!p7|RbRSjpp(QLv&s_%`$Q3|5uDko{Eh}scJ zRSXr*5*rVMp18qiETs;#hrwIAYzj&robL;SzS3{xJ@=EQJprG;^7V7MktquinE(sM7Mzacr110zE6C)ZG+ z2ef$UYXk5lNc;2;(U~Z{`Ugdl^zt=|WNG&r@TW)vx`8HDYEN;PG^szubu*-Xi=in~ z8gv`7v!oPCmwO=Hqabm%l(7J{9Lb6{hdq?~Q}pVQ6icu3$I`-yC|*bh$+ujJWjlnu zl&rc@Hc6SZq#vY}OUATawn8%YN3BZIE&~56X%xkLUrQH80R9{4<2^K1OVi^a?X9#Z z6OG>`PI+HHB)@V9`zhU`be(#sS2PN9dAmFMEM#Y2*kUQi*aN+_>`afF!}9Pi^ncfE zAc*b6pR<-TU#-fv2xlAFviKxXmOYNKt|;$3LM=+Uoial1D1YA$xp~U@y&30!xEgrV8~>z1_zaK)8}xY& z)nNu*_d-g7L0|;5BpSHy1&M>slxrcij=Fmn{}o-quhz`nUA`L&#bUVc`YwyNSU0CPn3=VDMERizxGo6ue5m2K+$i)C!cJX85y3Y6 z3Uja(1AsA+<XB;klzy_ zcc^0@%`Vz{Wn_)jvY^o7Yi&%&H3^Xb2m&Mct-)~xt-z&N`T z&GZ*+F^95+*D1|xktd}qEN)0^_9Z4X4PH930VFKjSOO@kjUGYSnuGnIer*&5>qHt${GVJtV#&idHGlL*p zH-ENjFZ#|fmx++?i4&)r=r!%pQqO7=KyA(oDd=RupN4|kk|$q-g;qTJ0w7!SsFtW5 z=DjIN+J>)P1QE8p4GucPOJoGtmw=lqRko@dk= zqcz{2ye$hhYCyiQ32nn%luZuZ#Y5&p>XJQ_ez$ZEho)t}cfjXzPK(nO$?lN3QhgC} zR_S%!fOYl!4q#Ywm0ap;&5uL$dgW#a-GYM~8%R4wQv839(_eIfuGN9Yni*55?=Z`z z?RYlK`3AapAvuL8A`>~@-GO;`S# z{wTSOFR`EZ!EuFsUysXqmDy9qTR8iNqJo)BMbF+W);Sf8511`Ikh9s&i>T$Wle1CF zWos<}rjV6w1DNORF8KtjShE5M`^fs2fwGPb{2P5g*vJ?Nt7pgZF<2ISw3ggW7x^kj zwBF#hp00oK-<7FJ0CS5ud4~Rl+r)1x_+!~k+DsqEjtznp$!yt7s7PVGTR>qi$q zjV+}gK{`9P7GN@1YSAzBgWP_hAAAXoFIWV5z)D%0)+k=GnRB72nmr?*>05TC6&k;= z*6X3+E8EisYAyL{eGw2^@z@H`So4yXPVL&+wiDaShJ$8MLN2$CuN*#p^L6XB?A=V{5_Ab)SIh+8D=yM|;5CmUXXzXM$QymtJfxHyaBq3I zKWuu(eQEh#!=%#AyO;S2YO#D)3F zS5UOBj$fs_TIB3Oxq@}3huoD zKVI+{fkDU<`i{ZndLxXbcbtXzF$S_vh;KH4KSbQ{6vo7fdo0nHDPGF}!Xl9`1K$Vn zC9NR8iI0(-@#`m^C0(b5?Nh1ToXC)E2zbR(WcFsQA0?74$r}P0%NFEA;ram%Fl~ds zDL!}32?OJt=9XJi#dm6QbR&#cP?oT{&>A_;pI#aCFfgPuv8*c0r#R=S5E|K`M zNwm+?kImkUzO(EFy%^51)R&Zn7|eYCg7zycgM!{6tce>2C4#k};frJi&7moZ^)v$i zP1dd#wBKS2Xg^Xk+iru#+YHlv@|vitKpD&G9>a(@cH;<&JIt3}^mo~sc<8;yHs67< z_gN4{ZsOTzJTUZ90!w-YnndQ(9pjqB@@PXvGHYgyB8A=Tha#0tr)0!5){Ua{>1<;d zq-C(sHE7IajqSmn#ojAH`G5t`n=+fVU5ermZ<3&8AX7h0J9BS0AWPcIXPg#3aeDUG0SLImPSAwqE@SZ+ zseA0sT9D#_N!f5|Y-Imm!(KHVBpK|D2x~G~Db2Z_utv0TIhWn?g0wugkIr9v$_!#b zna{pFz$g?ji&tnYWVYm>DPp7OJ^zeV(`%-f>CdeOV+p&L1~HYaU0(pMVp9)5{VUeA z5BR^bBswCXj%Dq^1+wJn|ANtqccBBitod$Am^jS0UkAGlKS*9gTV70??2qypt0ByV ze~*BHuH5l6NZk0b97u8J`^mM4gI)DAU_~@9SPpFQeB|H1F2ZQaE_=yaWJ7%|_q|FA zg}s*`)J@p17sXG(kYYwQqS+oWIE&pHqIO&y(Gjve#XS-*ofO}{g5C?_P-`~5&$?|Y+42WOmU?(YWd>D z0Pw#Mr%=jgsc7R3FfYY+w3sUs_wNRnN^x~<1Bk(2le4K1J8wRvzRe#W0@4NU^YDG4 zW*`(SNmNH}e74(A{B*~0$|%`sOs|Sv zI!b2T-MJ}7agU=9l6n<=`0Y>F4`+E%f&as&a zKn`X-HbMLqHrox5L)deAmWMJWW#2@yzviG8#cU{1>L&Zv66o~z*fshg-DgqFAvBFW zqQ^-(TYCYp9yC_2hNKQT5_&euC7SpLqte zeRva7Nb}`>GF=TmmA0my;0X^Q)So+2@arTGzXZNhd<0#v0N$!K8t?FdG(Wt{H<*Co z9-roj3-*Mc2?gJ4-ioH>Z}?4m6;yM52g?3^%Wp10@s9UaKw1s&ON-?9+&vB)ANV}l zYgx-n*l7+-T?WE)C%un@YE>&{XzCs)0d@b))Ad@6)EKw-Yn+tai^=9izy zllDv~)_|l~m=p#vC4ydu+H>ImB_F>K22$j(RH$}_rkBDEimj9h2kEewa-kDF1}cPE zPiiW=x&b&h7JHbFtZ<`w7x3(aC zFI>M3o6<#T9fW3x`-Y*GDc<-B>$Aj5-@x%eY)~s;DQslo!f-+mqxQ|+~eBd%&UWGHI8M!KM(C;8o;o22?QxqGo0%*G8 z4NVcs6b~te@m-PJ6C~Ek5}pH(X2PHQYWNNpC1z)ePJAkL}?g#ijtbmdeM>Tp1O=DKR0L{2bhX8s) zP&$N7`f(8wrhK85!?cwf$RRi5_l{tg^~WQKn0@sy80IGJh0XJ4-bBlSNq<7w!bapZ zUi5~-4~r+z3v)^CJ$zppN5ArA-hV*Cn&Nth-Z<|h=r?PYL;XL^$Dn1qv4Gya{qw=K zZ!{b{(*9D)JotBMEonT^APC(DFH_Rcp%U7cWXWnN8^o45(hI|Zxswali5aCr)ls(i zF(kOMF-uYNV2_?dsxO-o0d9XbGaJQ8R^s4kHHe$(kt5RpPtX>VAm%)C%!HT=Y#X8g zh~b&g+xH@CP8(M)v93D-G=y19L}M5WN<v~$s4`j`s9Cnbli7~l)iN_v0?N~N?nGg>-LFPz)b_Vs`kBkiO( zcC6%l5slf>8_FqvC~c;@vOrQx08=QPn*fqB$>t;)E2L2#fc8!j>A6-Tts|e&S83ih zm{ccyI;y~}Z7Dw> Fh8HiSEc_Jk{AC^^r!Fn5cdoEDe%4XK!_mWT0mT+(RI=u!0 zWV2w9oR-zJiaH}dqq)*qdF(hqyDZP77MH4zYB3#jDC-@>1`s4;6ja0OH zg4QU7p*8rQC`#z{RjimVq4q_QkOvY62fd z*ijxj{+eFLy&;`prS`DkEbB(M-8q&v1YPIZJ6d2}U~9P6;hRtd0&E zyTpQ0P+VqFQ|*E1p5o@K3xG9p3br2hct7g^#6Ug)M}}-%(f!rzlC%O0c*9Bdi6}T>x=d==v2k z8=>cSjF_#^qYjGfgkV|_*$ey0CFme1DZ|K7=vxO8C*gJ+YDa|mE1b-y8$B%m)s@JqqC-xUru1HydaJ0(z73J-Ij;+^2HhM4by?>>y0 zow#N?*quc-mW^98_Psswqi#TS{uLrO+%O7G-NJD-DgTHj`PYlN? zX@UktfE2L_qj?&e0?~I?>i!9h=cFMnFfK?sWD3ZaCH>Ct5PC&Qr`biQ^o1w;3hIbH!v9Xq%Vst)UUwkZVJ@HpDm@626i0P<1pG9M~Ex#3-K zc=2+|0X@ZsIRJ7151s|l7x|FG&=bVVRA>z2jh3QzjhmH1(=EP|f+hEOFy-jp=gD-( zr18RXU`*!+82TRZdB)&-%=IP%(D{USq_p~6{)65Ud0hPpHa_K}T!A#7XVdelfUn;G zz@J<@Krw#rH!!S9i%x6_ekMU+{Qo=D6mcF3l);$QA7wG>5Shvp^F*drwEM( zf-+lZL(APfVdgq8lnb7;Xs;ClenZVdOrwJ=oW;q@QTU3l$EblDe>PHN0N~k6UV%WO zcaY9}1G$rQk&fJRmZsA))&)DtF)VJ<5lZuLml{z9o`)2C2b9O8smlQ2xb*TUNIazt z6b$l`RP=u)y`_KmVpx5oQM5SrmDmW7_(|m#z;Hr(7zMB=B^%1o#?3hl!Y=Big;D4X zl2(&@|B`fw#^ti)NTk8i?pp9)kp_(d?ht81a}=S{X8Ji@mE2uXgh^w2{r6*QvV-0( zBVUw)WukgFzE4VG&@_1i9i%g5N)mugHCY6vY3ZXuGriSp0N2mxOum?fb#zqbq65t^ z#*1rdF16&?1&}WN*8}a#It>QR^73^f*}vyPj9 z;2zUbz%H3>b3|h%D}DryM{Im2j8{Hu=6P!j9-qcez+uk47Qs3j{yPO^o%qH5|M|n3 zG^XQ!y3g4TI6bUrn$iC%WhD-{Rss5f-e1r=ZcclkoKQ&f_DLNnGWzh=Z&4wXvL4yxf0e~K}c-5cM*iz@c=q7#GNm$1TYUCVgVF^Jb^q7 zp?uYGP~PU9e*5(n#MCUCk4ObwKEG!Ur3JiCUnni)&%9t~5%;DOpP%tr^qj8bt`rWe z;;9m9Z+NqrfL_frnxUxSi_;D0LM&kt6q*@Rs(s zcnP{)6an-T29Eo05!7@HdFP_p<9P&;d6RE7hIt)DV=PNK2z%q$%B_HPhYg~P%e!pU zU+BYiz7J&?EV2c#X0nRjAbG-qE1@ix`BPp_9vg3gz7n=~84P&N){cbeD)#aKjmaw} zyobUM%%(d!YgtnYBz$KrXyfb;HoplNf3ig~)Z6e(nj_kB4{xZqFtB-)BNEkmD3SSDL7O?5HFz|Pf)C(grfZkC|pqRS5IO;vX_=*9v9zP?R z-NL|L6vH+_^i?s0rt4AS=AIaYJK~b9DD=tVeE}-6#g*HjqFD620geiBC%MqyiQoPJ z(l6p($`CP^96J5~yufJ>x~~h_2z_9lkxzb@7~!`PG{y>7$@v&3)M_E`j!;9tmb*gG zYaqWTe4~ftePKUc?|8vbX(DwrR@`TYg;Cm|Un+5gxLjNuxDGqjp{l{{qqwv7RylLdEa*P(+FY{sd!` z7!rfp9nq1F*t;w4`H3P$AnjN{+aaW>XKvB@Z!p1)@25LJLLRPsn^JCLTaz z*(&j$R=`~@_WF#@x8e~cINpi94ua;37-oV&{3=@0LZwcOp&f9R(yfDNw30@)1)sI# zMoyu_(zt7oc0^h=4tkxXtP?91OXC{U1F3&+j9Rv|{U^laNK-t(_)u!b(f3H| zNokmmr9N?Bd?E#S0a~tf_%aysq%c|#Je9`N%l5ehR{?xrQbJ!CQ7Xmfg7T$wNCnC= z$szM5vmV7KsikMl zWVjmNiL>v#1UC9LZP#)MA!=d&?~eEB%ZP( zt!7WkZ^py2Q?l)H6an(vHqdukPJItWL2||euwRll&}Nrw^2&6Ogv;p*(RfSVrl;vp zw4C%6(r(KWM+1F~yq|U{B*+_R6Jw(MG#ytmQ{MRkMV7qF8VYk|e^cPilO0+>Xo)-p z+XAKMve_j-dm+c3LQyJL_DAtjmS|&lnf#U#bjszeoj_S3S5t<^JGqg$9(rr!dOOg3 zmDhU#RGqv&55+fmViBNymjj)k_lK;Z;~@?!`q0YLMj>=WVXJWX8+~?)PGr5kBCi;H z4hoA&=yOyg#Y4T5q8a5sdMFlbLG73#qA~OyR~XTI-&4_jn`$uLkcw&K!}eB8BbR`W zB1!{@zKVTC;P6wJl0W^dqR$%iol|t8T@mLMhLq5ELD9xDb}DbJ|9%U#TZ-R~gD+Y! z?K%|RSA3!r%XmfSN)!o-iJ{<2R8$=Sv?RrekDyFexMslk6h+q&7|K+|yYDa}O>x)( zjp>RuG#|)Ne5F0rnTnoaxRO~4;~r>ypr~kq%bTq@N@;;PiYfZX5c*It`W8qZDb~_c zu28XqW++99)lE=)rg)-5U$J6>j;@ws4NY*KE1FV{@e9QyN@RbfSl13xUMs9RLH!%W zomdprigmPM|Af*h1q`9eveiHlp)Ae7b%{~>nSmio`J#-nyGoRe(r|ril)H>kvoI*8 zxvz^sBJIRHX|TN*jMoe_bo@r5!JZ%#xdut0=&LknRSux<4GbHCq0V4LGZdDFh4g#3 zH@p)7O|FJLyMxltFrUJ4frggJfEHnROu`_f8cs~2?6zVm%~IaO%_uE+9f^+dB@CvU6UEQPd0^}ZgsXHwK{%m5}`ZA@u= zS?XCIU`394fg8+ztR8X{xbxI!=n+_`?lA=FOVr&*g0f7#n+~3BV(7eMk> zU8#V~kLsA?(ECMgtpw$Fby_iM<{F7Z(P~G{-9ac_HHVi$#c@p&HELcO@hx!sYH}8W z|CHts&7MzdVkH_9js6Py0yPg^pfFgou^0>?ngQh64%4*oh3xB^F=e>Ek(#;jV7Q}c z<#}fYo>o;^V0ftckOhW9&83b&_(Ee%dCQfWKJ;L!*7R_}Xus3QJ5hYlOq&BmHrnXz z=(E#qZ43<#+Q;N+b<)1*0}^MgMO#Sm&^|qZnvb?(Gen=#MlA!wdF|%}FkIGpQ_5eM z_JN*qb#7|+#iEGQwyeOQCukQnY5=78Yx-3Q5tA;`x_!zV%0`^pW*pE@n?{@0XRhdq z&slR10?_R5gD@I%R2?8^o+Tw%%^ye)hyWJU_5VEso16g4oR4Y&N(+96_TX6R`PXU; zfEC|I(k5yDL=#u35)-Vc&Uet7^Iqj*~`)f7I_ zAGK6IqXGux@YWPKc*r+P7~BGGOW93@JmLwYmGgQ^vaR5+9spA%-$`EOD!xjM!Fk2m z@3?%g`AqVHzu|%J&{)m)bwu%&H>F$R9nYMGqMoYb%w8zJqqv}GftT$W1dQ1&n>Z3@6dNyAP-MXaQv zrOkEuPzo+ggnX3Jh$H0@^ka#V51*vnQFrCF|Dg50ypb00@$wo92_(vvv|vw>!v_IV zro3br8nfgK`XOe^GZ<eZJ{54I7_C{@Zk3yAdOl!6%WhOn!!9$XWax9nF%A*i_2B+Mx9%pFIEMTLQ&1%(uR?@TzLdy-to4lptpvP`sLK)v&RBj z9S?Fs-#7lW91P!in_p85-hV#S+Xy?!^=T^vGGMY3evli%Uf5{@nGSkk)i+3U6Y`D$ zl)EsGg7qH4D$3~c6MBqCaY6{24Hf=^;yA>d7iOIX$pzsy&4UAl&g7sD7C5b>t_TaT z(8AWA(0*tP6*_iCEll`G*Y28Nv>U?0g>B8D_quQ)8Ym(J{UrJ?=TSmFP4I3C2fIUP zwBR-qjJJi?J3td7Y#ELLjun1)LX#mZMaa7VzEq(X-7^`2e?Ig*5WE$r1TQM4fFR>i# zSVXAc6CF_z%z|hLudu1Zp)Q1lW&l_y8v`fvFJNQ8^#t*_&Xy22e$owqpWyKm<1+C* zWd=>!MjqP9G4$4)VohtssUyP3jWF#dh1aKtHiGOKwdB8^d5M;(v)0suX!dVCA$?Bj zK77vIUXRatq1n(of5vpcU7#ocu!TGqpNobzL;I2wwC`hS|E7?$EQ2=OFRyQa?<;ot zqJ3peCM2(NAB6jIHN#X{FRhtFnK5fUZ$k7sFE=o(FTM%X8;ofBxN**F^lmbx|5UX3 zL?lFPdGQu4|LhY0ZficpQn!UK1(fYB_wjv4rhpq_PZMiU{%d*!<7~l_O)#RatR1DW zdopDRu3H@YwBXmM!Tv$E!C)WktbmFko5@2vR7XD8VLD1l7=EZ7u#V_&4&fu)(sOgv z&HZQ@{fQ=Dj;b7@XoM* zK{;(DU+A|Jqqe9s`N|gW9|FoH-zf~VbU*o!mOUlc)AA`j@O{OkhWNfRBNyLS%_K+a z>OPd2reCw27Iteh6Y;sO$zF7?kLd*k8+y3RX1755{uPvq z@~_@>4}>20BM^2R%%=6#p^z64rw^{cK$$apnx0uO1G+^m*@52Rv|>ZnfWn&Xp;hl; zHtR8JHtba}WZNR_NOo4 zpJB)PK-yV$x*D}}?6xJOoo7BGjJd!@k46#5p3DV`i)=c*5rbI99t^@I_9G9lFEgun z@CCDXUqE?<`K&@Mgl#ndWhk3XUZ1P%GI^N8n7(~`RIjlPwDt*S`8_ZQ*V*oNzp?TB-^kO@T1`R1mjJXlESeG*tJsT=AbrK^$c_G*Rp~L7Z&-o@7^~Udw@~<&y`kyfJC;WOjk|_n z5rrip8yE-mA6Pf?EY&jePEhfYy{E16pV+N%$o$OC-2t>OEQ@B+U)c_%5dV5(j2NQ- z7vDx(yMk(5zw2O`c>D+Wr;MW1r|A_{P(CZ1a?j>^mY{vX_^zN?(tysuS(@SS-%QQ4 z+i=kJonQ}(`<5tNP9^q#m&Lz z6yBqoej7aCa-~(MZXt9^5Scz_*~MD-lF=Y$LvA6>?ZAd zT5d8K-`DJ-H1*B-|{Aa@ap61yku6Nsdboa5PIe%X}6}}IY zCPKvU$MhZ^yG$7vhVN7R z8Q}XgJ1Z!d{(2$kXQ*F6!pu$d_@DK!4L)b9X)DDX{VO_fa&AC>h?|#cg^`+{KtZDg z(l{8tus=n77gajr`{Kk109s;ThnA)1F?E)fP1_0H<;k>mT9HZ*{+0gJvTC3!l&v1M z1>e^+qhy}7k7fYMx_C9)qC*Skm!{|cy`am1?dSBZGnqj+)@qN_2 z8qkbS{1X5tY+3;$Ci=bu<TBj}y9 zdNj=~)*PWY;M!%I@VRc*0$BIYn1SHknof>|-2!FGxv<-T=yqj`jA6_%CdZ+6g3S&A zT>x84+Y-*O9v30`JZn))`d_mW=LX=%->}`Z-)h#>kq|v^0VN17diq@Xzdl_T2lR!r zH8kD7&er6B<_2p+F2M+vSeii;P+hQ|X#0vmV%wQRPTb_qRYh2(K8 zV!vlWXc_BehoXl4q$J%s*6TR*eq*~SlysQ4^u$n{=Biu3be;!?;F<*S#^ei)kzu!hJmAC8;D<1I5X%PCDzo#24pIgy>krJLxUWh7w)deH^o`+lk&^o^B zA6y?xVJ&5GItcz8>fMC?G>bbftRq*spKzak!>5GjpHMq1WH|z8pm1LAi}JE?SOLaR zA(Da@;er7@VIqaOH0O&Jf@tX*C+w!5$bBKv26~f(fu3kg6MUv&@UnykG$nl~{G{i2 zuJA1xunUB>Q=q(>Yc>6Igsrl-l3CkJ;bu#!R{r-j{+t?@erj#oD%;eU({Lg z(_=^p6q_7`rpsa?rGtfv4Sj((T*UcvFi@=dgXaIyqCc&NxAX zr-|Cn5Sk^nn}`8=D7G$#`dqQoLfBLw&WJ)|u^8wEX{F+ThEP}`9&3c+wWy3i@lMpV z0(-4kG7ywsM0W~_ei!q5LXo*-xQ*7|*7(1mkY*?S+X7;c4Y3b2E;ytKm&-${>yDb2 zGjA?%=zqSQCR;Lah5k%Ol);K=w5#Zf!j}G9UWg(|g2GURigpfORm|9nK@3y4Qt8?w?m_cUZzDTDwE7s$cLpf;hLzad z`|EYoXG2po^o_azmHo0Vfu(;5?H3%-m;wg_3qPS{P`g&pHh3t#j)wkL1MtI)E`ome zn=deD1f%EN$kaB#@J0AU_M8@TDERSSoF@R0mtJCKX!Ve{WrDX#R@FfFMa4DR(D7bT zfnmdWrso>|H+rp{C|h%QE&bL;2sI@82nFrOl+K2bvGca$bKJu}A$a^(NSKl4r_k#mZc?J}9rh&r388M1z9AUX@Q>U;V=oV!3yyU8G95s5T=DI9s4r7kQrzyA za(PSq4pNjkmVlk7T#SSxsZ^Oz0fq0Bj-&q@C?8=)F$9K*%W1WKUy8)>(Z4VsVR!rB z61uP$^5nWReMEb}InI8Y0pZ@P4{bj2VZM~q>C5^wK%XCb0zU=jFcT=V*Pj`y!GDsC zcmlzvSkXz4M6nDyipB-2zkdhhzTBh`pUQ0iu)^k8& zAs17AtBX905(I9^H&;SRyu1Zj9lvZ|S-%zyt1L<(XUCDI(6sy18+_l_=oFn!bzrav zAvUaJAqrQvcr#@AGIPvwesMRwz8nqR|D1)-Uf*cZ zZ2kmD7!_X(4P)<9((8olpZS`PN{0?nZ&iy+66l^fFU--_*d1L4-}-+WLX zW?$)44;$8L3g~TFAvsIzSUEkf?b*kBC>&VzYEU||*6+dR#LOve>L}Ymr}en7N}3J0 zvM`FHyRkd;7UhEz174l_6r^9ML<~bbv zC)ocrb$&5zm0=j~ch)kXw9xhA-$uKQ@;B0jvQp5&oC{8j1Iz;WC$I%!Dv?4o1TQwK zE+i~&%ow9jwgAS-+{6-IPmSo=`jaI@2ds+Bj5E9yO24e*gV{4iTwRg>qqgV)r& ze0$_$_3rDO+NA29q4aJ=wEr`;%ftiuxmuMn)9SF?6>LT|%k3Lx zRil@l>#AE8NPMA6Wg$pZ8Th%^D1GfJPec3};yW-;y<%2wKjANbhK(!F$hAe_g=Iby zs?Nz@PY?F-gQ~bY@NJW*%W@;u>c_3J?WHfd%MV>HV3PyibEQw*SH3<>hws=;&Y+^? z6lY%f%OySz9Lwa6R{g31!)N;p#PxLMggY z^&=+fLJQofOluHKjTed%#zGhDR^4c9bm2J3Qd3qLdlL5~Eki>Z&2<9`u2lK} zy}3-!Bg&NBY&(e>vmr&l zD5yhBpy6^8W&{QNNo_$tY`cjxvk+)(Gb73@q){#Yz8AOi{RN*B*HDDVRG9)3XY1 zTD3+9^gd0wC?Sto<8m+Mq!8tm z_}n~*dN};Vi-u`7;q%&9(^f!HcN?b3twx$+yNGiX-%f}l4vJGEHgSQ;NJ4bk+2#-2 zD`5AZC|}z07Sh{LNbdkwk>n;sTdGc%*MP`xQC`1KZo`_$Z}b?Z+O5himZ&YFI7jgj zI7+n>8*c4TtGH0acK`B!KKt(TE{WIMXP8P7;#4XNc#A2v{4dHJjKy0B73(53h%4O8 zlNb|M$r-~mjyuKLV|to&W#< diff --git a/TrafficLightsPlus/Debug/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.o b/TrafficLightsPlus/Debug/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.o index adfffa38bfa211b76e34e1a656f4679f12565133..f3c18c918b321e601c204346b89f81067734fe28 100644 GIT binary patch delta 151328 zcma&O2UHYE)HdAJ(>>E^@}OYOy5^j-t~sYQu3_CZ=XDLc?ua4=5X3PciYTI@f=UoY zz$|7(M9heQh@zM=>;GJI-|zj-`TukNJ#N?3ts9e zZ|3m}weW`1+Z4_qh_25HC)H{$b9`@)8Pp;e7OmqsgCr)0gF!O%^^-XdL7Xu4&q~xd z?V=2-(Bx;HDlfmc0-8n}X@--22r(ZD?~`mN{6I9bc6x9?ockj+2<_C^^J@&x@S= zy`nKMP6eq*(!?AS1Wx^4F|$frL{9r&v9NW0G|u?FV&%k*#}Gs_WAEXGty!$ZNmf=) z$8n5M+P|}Lj9@y7Dg^GcD@m^6Y<*YZ+`lvEIkD0gjWd*B>@+;I-JELVN|a)W|LG~i z)FO9_^pyQxVayFZq1^Wh&wgLRbLGERbS%tG$yrrl`@>3 z_3g`ZmA^L`*tlT=SLJ&}Vg;^+O7(_qsu{V~H5nSd`&0XW`%~w8g|Q9aB(5$qQbc(+ z!j++TRNHe#$2Iuj8;dW-xQ5>=1{Swg;2M3eNNldFtXi5)b+uAUJB$5hJ1B6pr=sEs->p<2( z1bxE@gpglzjZ`P%Ui18TJOesDb&>(9U$>MvkuUX9;`F?8_7DNj((cj*PU1s1>NuIt z`B{%X@60lCD*q^eaTIlU1$}pf-XYCP&WD!DPf2 z@@DoY@}{mqg~=H`6qx+@vw<^kVptzMqcdECHQS)1baJWPU4)yDB{h8DY5}sA?s~|c z+m1N!1B?W>+d0VctN-AE_TyX$Xj@ztf!2Q#5407R=zw-+Et$}sb{*4-8)G;H`nnyG zp?a4qN2}I;`8$;hXCBnC7|X4u<92DU2Fu*h?=^!?@T+U!j(yi6>4fY-GIyL+rZGg(33pwMOm&=p-$S=L$#hY` zTfE#^1`r&p9HDaOnfor7AU(vI*QB=HWtkO9>}FD%@S> zQ5VYQ>V!LOIPMvp@2CG7j-T>gLfze`Ih$LR=De)}K7I)ZO4(S(Ex8vl=MSg4-6`k!peBFjVmlfC+% zJ0#0&C7dLi_5=15&Rl?77xkZPw<6g?|H(%E7dFVsTy&iukxYulC>Xxt!w$e{ED)b7)`1+)cx)kuyv_w;Aa0P z{2kl)|72%3`#-WW_gC%zjcrct|BY>Ktse@3%~jK0u{4Er*#G6)@c(h`eavLLP1kDv zY6GV$rHIA*^bt8-8C5K~Ayegar8QA{F#rRqViXNG5EGqZq5+8$zF&2!S>(^U5{lJe z>s^nERbfM1rsBofN>`QQ@#};>Z4Fi#TIkC(@ytTed>ylV`LC}@2 zAQs>JQ4gyX#bWt?;z#L9McQ>PzOv}3Sv|3AN7okj3B0@2rFyhwTU?)`QHO1HO)pWr?!g{9PFF?v&$$-j4=-B|5=&RS0q-k{|FyOHMJ)Znb+AMk_Z|Bo zRLby!wX`hg$_y6WnoV*&D^bzepflcA++Xf^hjBND;pNHscHnWHn}jzLSLp=(-b7PF zF263r^?p2Y&QLJF;g%Umw&f)a*U^~ZVdAw$!S(bo6RvJW*VNY}dtp6kyE%xiIlk0t z$3$7=);iruz;la$YicGL7<7l!)!I)`wpqx`lO05l=z!6N8?aJ`YeH+fc05X|pROeh zaaQ`>Z6DF|F%uBEy%y4G4W`x(eMnZCL(U9)N}T;L{EFP?eoiuz)sh7My-KW(#$+sX zEgAl(Bc!!GiPGZ*`R)6KRA_0$IYUoUju4_;{f+o5;>|8{t&b7^(-&kQbtSdlSx3La zzY)(UBk?2^C!h;_3{Dio%agjK8YE_^KvSauHR(FCEKypGC*g)8i6?Iq35R=9Ywj3Q z_jv*tSo54(bwem}*H6(kID({Z4I&4m8{~1&Kjgr~*Cealp=;GbjdP0J0dyjf+xe0Z z<@6w>Ro9W>a(FL@T&JOA@?r_1Tx~*%zBQs?R@M>!o#*tse-!aF-$<=vFVnS8JW*oa z(eDX8Nj9-3@%Q+hY+35i)l4yPa$Bbm#wAaPDY7UMmn9PZe1j;vWJ2oIj418<5~syM zw`|WJ1a9_t@_U6Jc^p%Lu4{_ASexV2nmLm+G|MH3?wIh3T*?D-@5(8H^64J};k2ca zfy9&4uyhEi>p7c#do`x!Ka0Ztt{4f-9YpFn_9in)Tj-izhy2^UoUZXjZd@Ngx5GZ2 z%s&YusqKZNO^PBbIp0Xb&J?oJCyHP#cYdNGx;FU~QuH8w#pD!S>{nuKIh5!=k;K!W zDXI8*IvH5_mdpny6GWRp>aLBV)&)E1uDgvUlS8A)=a`1j-=-Hwdi+NUsAfXsNYsD^2sZK40p*O5Q~!nB1dR#R}B_BR`SY)RrVLU@0+G-b8>(E+y8W zm2@3nWVlIxQuIV4%JGt zSS^fxM|G5_|JUhA!uwZ~#{-7a?@Dbb_>UixBCjT-;_0sxn*$g~(Q#@K(8*8f>M@BF zr7s}5ALgCtT*K&^<{*d(SbXQE7uBhJg4D1Of2BAGutmzWM^kka4g(Djm$V(`~5#B}Qj8BQBQzk7L;q8cxW zBF!Vvk)Mb&qAguVw;`V95?zx`)asW&ezzS*zo)(?xTV$-=YppM@u4%HSbrNyOpE^@ zro3sy^a`(2%$YIGL~A0ow)jBT^+yTZ=ooXaFV(a1L!X9NFcEt$Ed+aB;l&T6wEH6L{SdXwPi2j zdBh0Z1uv3X-GVsNI}p%aiwI)F<@8%0OL2-qx(CKSk!->&idpd|1Srf!zuV2h{YSrT zN-8)Hx_-S#NPUVPnEhqQ*bz*#MNYuP3vb0hQhKWf8R#EGt;;$S|B4ah*-$_FJ$^H} z^wCb*HtZzxUbBdE>JHMd`vcK~iry(Xc%!2KSDZ&))~ip#FXBmcVJ?|zy?_K_rV-`U z3Q}67EJ2x&NBo60;;GkyTH}h|lOCstez!=EC7;Zk{X$ZH*N860P;3Tf5|lpM$yN<| zXF54UDur=E3^5%kdNGV?L98E}5~cM;Qj~Oz#L{^RT?(VnB~B)(#U`ROI6|C%?Iu8x z$e)Q^;5_25P>1N_i{31sr;?too}@XTByrxjLC~Gkkq;5Mb!{n7)v=-#x!4!fQ0p>z zuLY92T+Ay)Zpv~}7yXj>D;JG%7>hYQcRoJ-JExWT&^u8pw@)N^5y5!bJQNC|Kg*HfVGc~KbS7LcMw zeF((9{&XXnULtU=KglpZgLsTsXQGqhS=VzNie5Q8)5wj#!pU&xdXn<*O_b98NOR$8 z%zyOUIV?5NiN;VvK|8vx=u7ne$N-AmIpl2gT;N%vyx|D-h&2RPo2udJ?{C0$*b@ru zq3ZP8E1mc!4kFH!b95ti|4sV070nP?83H{EgPxwd=utHO2mDRKYk#5ZG|YnZT=m}x z=`1`2dTt{onR;&2YN8*(Odn|jjOThTWH6Z-U?GqHF6uW^j*x2iqS<1<->H`@sX))g z*4J22;{g+eA%DPzK4T!@7|K-zhve)l;Eu_9^nxOmlD}mmkX8G8f~CgQpCDd)jz6N1 z&6jJ7N-lrqAMiir1rhOk&f91Vf5pelgY-K-+8y40Yg32 zs1}D^qKU$o0q79oZ_Ua&p>3%UJs%P)geMrRicl2Wz8&=PSqE@0s;wG~-n5KyH1l1~ zMt*|xD_Ou>Ncgeo&ty*T&$8*=wu%)rLkHT%j<$toVN5CmX;0o%0TEitUu}$#`t!4= zfpb0Iw=BF2<)?gbqPm0sh*Yc?!Lxe+n8D(&t<>k z28&PFIvTFuvjPoJKeHKaV01Cxx+RFq`3f`vTgN}_2MD2ji10&2*t9cEE!t0xV;xkHoXwWGFt&nm>fL1QwPHl!+`K=}R$*>C@46gxyI;?I_zm0TDXJPMt+@ zoTUXp`~`&f8+hK-nldvTWCM2~Wc=h*C-XiQHfNPMzF5Y@!QbjgLF?~2^;>^o9vEj{qmn-vVp!L^fcBFM7Ww&EdfK# z`&Y%arS23ct)jP~we{4O(9@=OFuZ7AD-iS!y^viKJ7#5|wO4az4UqbJyaUs(jh6%R z$lsQudD6ILFfiGj7I@Ro(EDS?`=u~E>lkvq;_Pe>JV$eVk^U6tnX^EjuOA1m7yLdG zQj6I294Pf-X*5S)!b0ddSjw7I2KNefYA{57*grc_^JQ+%4}jsvk~e_r&;A?_1Od!O z(Q+|uK2U`*7Y*RsnbQ+$cCg0uOzdQ%lF$~;Chh^}Zq_LYsP?cHjQ}EonPx!QEtb*% zC~}!UgWMywIS@r2>(m8yA2T;{^$Gi@j1z+S%y3D1FX;nE@|eFeBZTLN@In zBvSd!$hnC*{2$W*<_Z70KTPEF&yjz|@T>qQaCsX{Qg4WeRSwmLY5~uR|`EhfVfGB8wq<`gf{KqV3?3hFN&Rlj|S)W z2w6PtDxoy<3yl;DmZe0 z{eTo{9zuW0RyVx>537{o)wzi0a^s73&l@f%Kr*rV@&HF&H~bVv_hzN$?yMBM(CGxVSD8 z#c8qQF_=#mi&IwOhPZzioVh86;msu875|}-+!J?=K@hUUGZP??D^AkG`zPY*5pbeF z%)&O3_*^U_LEweB@!ubhe^uvDH+WaA$-kgiuS+-9i%EY2%@Q{L7qoaY|3?VeQWlvF ztr(VX!nfsY(`RU1!Mb;cfDfBH5G=mzTs_!W$wu77GrXBiKY|z5_vc&m;hi_(lP^E4 zCgfJ~av=o#cz2@-6GDGpzZ2C}{LMjdBY^Kh^W4>Zg9aeF_}R4XU&Ht50^ip1b*4eh zIzER6r1kv3M<@dM$sbT`;H%T47Q|P;$gJPVyCI>YzsKKf{Qoh$=tFe%u~v18TXd%q z;Kg>`T&y=}(9u`;c?N7&&BPN}GzdAk5Ev*{G$I%OcQKN~#Pxr9_`{Nz#Wx7UG~qEn zcps)O|8K+E54%6i(u9=LJGB@XSk3Zg;q|tLjbDct$1v*}7)oGMen#yWyXC@7Imc%F z{^QQsQcHkPY)Q(GI$!HgxLOi`4)f)|inwlSaqr=sn^A(}3+l>-K z^$R}WcSGmN0f=bhcEuppbftub7Nue!+-m$`;k);}>Xw7z(JL|S1H^Y1P}##D91g${ zys;XHk^I2UP`;Oc(jOB0cpnWK_w#bTbC88~fFK7h=NB9p-Ks?H;W|%n7yBlai zbb+sCLf^i~>vuuhC4LCa8!q$xI)WIXTYC*KlXWYwLsS%YwF+g@EN3w<5K9QO+^JO) z&qUFUx}wW%02Q}%*W6HK={{w`Xs*t;BKl6gu3a^RqfpnQ2K0W=4Vwt!H=XkWjc|(u zH@XAM00-`^5cbrB3tI&)1A4;*Wg}`kg=>F7Te#4rB-HE@Hqn%Sw{Xq?1bYM@U(_Om z@b%z~6jteBey{M?OX%Dugt<{XgpXmUMG5B`!$P!hVH-jnBfN294k^Y8`tk_K0inzn zcoiqyq4(xNA(`H2hlFD{!4fY#e}zCE7K%>>F+qr?G(n>9(<`(k32W}crz1ji6`)wG zU%M5sz4X;66}dz|>pqCy`rq0^ZYj3xV1Ak2gsix@T>o%`1C1;6m|5dF)-&uHiN5;R zuJUyqPUjo2Y|$J1$t8WpSODCwuTAbo>pvHRJ(uC;EP6-dUx%!wAoOg0AJ=|g?B8#d z$PaG_1jY(OAnF#j?Z>?Emy@)}7~E?D92gQ(0FI&lb%Aa8hw-?M==v7izb?qYgCUM= zH4ChxmPR9Tqn~4YSsb%(27dpx@d99sb*u&J?_cWz;Dr1Ni09<}9YLS6_bn97E!iHS znK#lK^!e)+z|22qIhgchEA=2PWpme~eI?Tshe8+YIsuaF*<=?y*vNjZs-k0VW}p5+ zbt{{D5BCFa=4c?;!S)S@{7$^Cag)Q@oEjkRW{YcqWe@8iz(fSQHXYhx*-3gCJ{Npx zjqyTo{sps}q@h`mG#BBr{D(-4VpS61KrEY73gI}& z+~32G!|cWf>U8+$(aQ;X6>l1EY9#ogvCjS}GUDI(-#Un9&0~12?G0@>%$sBK`6zkxG| z4VVqFjqKZG*bin^_QL39=DrM(3Spb*$=||~m&4XpR(cpXL)ldl*v9N`&=SVhE{4wS zjAbIIJ6I!{gY9ISDeV`|lq|$}7h6=SJ#_D8fu~?_4;wlL5)o`-8@Lh4{&ZbwP}2E; za(&Tk1&PP7mmOd>mM!Z5od?+B$xs%@xLzP0WX(^4lMhL(fHFx(SRSngkFrVM;KMOi<}I`wXV0#J^8`B)htQv7FI^KF8Y``*%)&J$ zc;R_SV>4Sr$#v#<0>*T9q(1Q7V&hyv4NE%H{GlQ5l2XN1azdh;4AXTOM z6liMLa4RA|HG{Ic)4FblrRgUR!qAMlE@vY*r|TnH>-yG!zIs>N0eJoKyV2U94>D^- zJzII@2?Q3C8L#yk=f2=gUz6VL`dV~ONniW=ZwklP!C59wUw6I^vzB^0Dq>Ake^)2C z)}YjF*lU=D-BGd8l`&A*`1%9bYf@z#+-YiFB>akH&>YGnHWz3e(P7b_fZ45L0s`N! zAC0ji*5de$IDSHDD4Oveh{UBIG9-LI3V_C=I-B{T;Y^l*eHdvE)bUL*-Mj zfhkrFE27z8@jEe_$XiL@8f z>*ZMh?mxGy>AR`oi@rc*>C6VGRy;Kyd_P?|hiju-T@m*-2VQ{Q)hhyy_g_n0X(7{5 zs@s!EG=MB(lT^efkj*>?k2kRJk3bg0O6y=Fl!a`E3gM2&1-rA?x`FlW^%u2S#9ZF*&EiJFJpQ@rr zX9K%HJeN%ggTN!ECtvcI$qSAavf(XY@12ufT?#bsS%?kt-u&~jU|q^@xeUO|c)t~3 zUB}ONp;*tK#JMO;hD{IP(+>U*TGj95FTF=wIDhRo$i?xuuuU%>9UU){jl zh{a0XD-Mwj)CIevZG&##DAdAqUnmIMbro>jMU2v=&WA72y7_aV?6@v`B%qzp&HwF3 zzbTi!0x}iH;qZl6X(sJoRaS3c6PI2Q?YAI_D0VpW5T-gh!|AQuxpoAu>p4M)Yqnzbb`)~V1Gzw6Jg1_g}@7a`ADwrP6{yGVdZy1#a;HA(mD57&nUpiVZ$f{PguDI*D>U|C%t@RSeB zgU%@7FMpUjE~Ho?9&8Ttf$Ht%sO2!^^t4tS4c6t>5d(j`c=xhd6+y{lW}0hdvC24T ziILVtV{tBX((3&Y8?YL}d8|VSiVZwJ7J!2IiSN<2iQhnJ%3!|feH0;lZ5-kfx9~40 z1rf>*z)>u58-Jw?aBb(~5{H4hgD>#_tl@l(2>`Z>*V8=oFyHPH>?ZIndq8PAUnUN< z8+>#k+`GjO{1<9&^Idg_&Ru>k?XTVAAJKO5eg10`0L|npeQ@zDsyX}M92l|u8R;OczhiFV{V$#FUS&Lvs|q zx*W=?MCuxrLT#^3r1;;^m3)rcP2Em^+=kn_DrEubj&80q7u0*YX|$7*q1%)I&oXs2 zXQOzayGPq1*}9Q`K|V(}`yGl$x|2F(HRKL_!BJ;0x4bG$XMmL033xzt5`|#zRu5K%u4Smq{r7f9{y8Y3peb$Zkf@@!N zm1wyCrpqh=6bpq0zk|3)xRC?gi-i5LXFv194vhgsFJQM3*p==2vS3pA6cgStqz?CcR$hMGKk@f^Y-1AR)g5lx`AK z6N+GAG;Qu}5f0r3%T}S84)WWCLA5{(6MPoI;0~d@8F+UJ2WA7)ZlPQ_h!mN3WQ?V{GP}hqU?zrl;ayYNeLVOPkmWyCX5{`F;^&^5f z8{)@=*v}9@E|j4M@uct%;XEarq>Yd_=^$Pb zUNr;f6(RHp%%up50#{On%Ok;ZO<1uF_O1(OoLKRT=|ZXo2X6{S9Gnqv2?sY&XAvfT zfttHQ-zt#E5SApPxG#*L(;p9ncaKnH38$w+O^$Hs1fV?>`qJi2o-p7eEIk$$grdmD zfm*OUMJ@{#3WV2<~MJt$G!eFF%Oh;ejm=BW6YR#(TxZVakVh%c5y{FErHgwE5V zM6;;7V!#U2ocF{UG(pZ3-B!cy1M$^qn8+4C)k0&Am{}UG<%%nhLH?2W>IlF*7B^8g z^oe-pDOjG0SNDSDnHcmF+Lq|Mlt$sL|8g0`W%@GR!MR+o4+Iz=eRVeo`08KMJHSsL z?*~KvPJPs4=w7XV*cLo4{mGd?u}&XIn=tG3-h&XmApKEV;cnFPApjbzKj#LP&HB`Q zux!y6(8l;yeYyu&QuPP!pmt5aVk$V(^_~m{Z|HjmBM7(j%{xKhwtm-5)b8p_&{>Xq zdS`vwV7af)?SyKkUbX>nmcEP~wQPObToe!W{eOkQT)q1sL_JS`gytZR_04DlGhe^4 zHfm4xulqu-K>sxooX_>o-onx={RGNmzShTLS517YPwEQJLjA@V$i3G`PR339pr7bG zjB1!+5mC1rjMWf?orbmpfhpYJ`wU2T8(Kxdi#>*J9RViNu!*(>_Zq$gLEC~KCBnRc{j!WHf7*#we z<(z`~Q_{{16v@(SPjH@*ex}snIjJ0NZ=IJyW}>(xEvkzkT$c8Hg1;$JMm$tsl@{RR z2Qf|hdlki3>gfk3Zb}dO3scd5C4D`>zav>6pz*FWm^OPdq(6E<_kC$wbqGF?0x7qf zC1ql3Ld=mSJqPijG`$&E9!dKsSDq)ux&!tT>3n}E%a<|-f>mgi%kq#RzCzBuiUey*id~ zj_QX9_{hgEA-cYDg;UV)CwHgQCI0e6n%b|HlWCdcl0Q8}u}*$}4=n3tZ(2QUkW=YV z50W3zjBk_NmqwFdxlR^1L*#=Y@O+ExM>_$b@+z7TZIg$aP;8f7J)nArtal!VU%TX( zTae!^d$xt{2>IJ{6p?bvlZf?2`4DZjU6IS;dlWH6&UyyFM# zFIFQQEO(LEH|a(s7st>wsrCWGgZ zeC=;^xIFn?D|qol9!vSAd^w{l+MdZ{=`db_ywMlMOF5c0%U;Rep>XYuoY)xJ-pZ%x z5Xd{ZNqY#qmv6`r|0o~BhXmp$*`0>VFLLQX(qK)dHfRc%a!d%L0q92$e^zxGy=kvN-J6)?Na`sgNVD8&NQe*DA}}s z5ve?-J?DMO78e}cuRNjrX|(cU9@=7*KqLXg1B$(!fY(}_(u6Vyhm`V^4v$ybAApGj z<$ZBTBr3xwe||*ysX5w?Dz&-;%yFfwKa`$ODsBS8(@HN|P$et9an@Qqr+iqAw(|;C z7nm+8d+7|&C8h2Kh+k1AKZg@3$^mRnh^fj`I?my|rnGGVrRmDs`l#Me4*vpex0Fs% zaP77-gU-|4RUW3Jc29XnuhaX=V>+sssp!(7CQHfs9mH&9H%?@T50&Mi@Gw_N`wPnQ zlzIKp_E<@z_h`Q2-4%wODvfBn>bcU2jyk?@DtDvc{VU~I0+ha1YTg9yw@OVbbQdaD zcR}fU2^m8PQzRg-RmbDQeC(-bDQs}<u#)dydp^N`wF1~EYm z;lY`xJ}rmZ5%s}jv>jD{cYa2^PN-`~B2XvQ)(RR=tMdb)J6ToeAn;jr!(PBB{}U?<$Zta{NIxhtwI7zVGZ)89Z@s``!QjA`om9MrC>SL#CUh8jQ{2RGHB zbZYOmdf^uY;f|Wh)6U~Pb?SBmBSYnPLNHTJi~+U>>OV_R%T}+_!H66+#~1RsYAhW( ze55)$qOX5Yot2@@Q}e$JEq>Y!n(X;&>9c`pmA2Uj<^!~~qv6tOZPQy2UD{eoJg(7N z^nl!2&9g6U1+Ui{Cqh0@o9LR@wPfexdawj*=2`%;S@WT!@m5WD5dcFqpLYn;c1

    Fz2=6_{`# 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 diff --git a/TrafficLightsPlus/Debug/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o b/TrafficLightsPlus/Debug/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o index 7369f3d864835058e2e789716949602d51d7ded2..035c1a9b050bff2fdaa783d0d74c46b76c8aaefd 100644 GIT binary patch delta 150997 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

    JU$hrV`+Z5xX3NV60g00h)_ql^B>$6AS8s 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%0A11!ENm4R)Fyi`xZ@n@3PB3 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 delta 151099 zcmZ_02UHYE)HdAJ(>>E^@?g$6=bYEPuI`%Snss&89M`mthy=4Z=7@-Z1O*c)qGG_T zsEDGXhzckOW>f^f=c4a9@AseY-{W>o-MZnqx2vnGZdDWT`HzIWKh{-X(<3WJi_V-b zCa&zcXCmkOLFP2>|NhUw^uvOToV261!11+9v_-3dNnb0foPif#Runkt%RQCjTb3L| zExf_(uW$xIO!=yC((V>A$Ny1s2DJzVc@xhWB+(KC2FVb#O6E!m;@?weSE0s-S7cCy zxXwIRN`L`V4$qa|2|+mk7b(WINZ+yL{$464bgf!IWS()HbxnVblMakCa$quc}|~G>@9eOcCI{q&w))3=s80g8v+*ly>OM2UMg4dTY0(6$Ym8j07g#n zTFrCWMZcMH5)pY_d@fjcC3uK|%PIOTD3@XkTyD{CJy))UYpbEo;JoDuXUn%l^H5Pc zSK$hbKh)i+Xy6Kqelz9XY?=FRJPj*6D_;hjtf)a?+FF5QKPng}Gf8Ir&FLV>b#Fkcya1?D_j5OY#bxxj-m>Io9H?&RqN>UK;cUKV9;|y-+YZTlw#}x zT(Q)fV&qDdVJH7bPdTO*MW9Ge`5zU=*10OmB|G+Wh+L%~B!S(VuX2@tR7AG>f}X4L zqoQXIdh=Y>9~A?uFjU~G{isOnAJ-zemeX0y$hE7(h6z8R*Zbel>;I@Q_Pjvi8nB;X zf7)E*8vbYz7+-_q8vUqqlR1$S29`y~>&$fXAZDZoXaI8) z(G5a}BV2s?EfVg6`^xjD@KEUZS(6M97TQRh$Un@LI6Yr)uz+W4Kv@GP@%dYI=>3IV z^qj)qN;PsSKOn}JaT-5JGI2&uSR8>za~#thg*7wTDKa^cjU|)oZ^^j6;q@^2c$y9- z+ZGVs(_aYh0#Sv@<2@9ZT<)r+mK!+tF0}CF9wEm35fbJ5_zK{!^&5Hs-#0)6f0#xP zGcFkb@#}b=ApR=>;`uuwAm;tU1L7hN9S}aREfYesYnNKw$bBb$e#c~}uIoCh*65h= zQRRYJN$NO^W!KPg`+rn;=CaCM2rHG17J&t!2xTSdd5~D)03#RnqoS~Kt~y%DCix!) z?%)qeH%>_Wtm6!kOeg6%uKZA);Ruua8(`qhVUat=s?u*x*U2?sEA1@%m&_e!Rg3KF zbSo?pcj8Bl*XeqS0vGe6rqk(;_0n@ES=AGSN2lB3XW(Lg)I`)`1@6?3nqH@SGEnAD z|EL*sx{?hH+?gL*B%Q9#0GW$pRf|RqovyLVZmjR@l7hZ+j_F*0>!@&vy(g@5Lsaex zE3qHuICe%ga93FgLMgCWu{!P=E6yR565F>>=C1#!Xw1Aw=5G9`SXj&R2JYsMih~sk zF>(n%DkWH(Q#$SzE3qBg%5W8fU2#UcvuAUad#*FwWfs!Q!jeVq9xGP~{fA>$Ei!kX zm88zZ*xlQVOJ*hWsb{g&|vyxY#dx=hWxSPg3DZxrsN8>V`?#p>Ng|icO4h{4c3-Cp+sSjUS;?}fJ<{pi|21;&ei%x{ z14MBZ(zdt~Ox`ma0wXFHz4 zn0}AT7i_uZT@mIIY>(@*xhbyS&854&u&NyM)JTN)oy!&9*FfZEJA&~T(SH^2KilC_ zNW%`5o85dSl<~f^_1*&v-0ZG&Q+eN6T+QEHqb+XTh^2qC|IO0B%TE@4^jnD=Q0qr+ zroJl%;{h#y)Mn_ZBMxpaTC=i zH;kOls0ligUC>#I6}9V1*njZpN*5RP^;}0BU0HQkzN2&NmQ2GFQ=)=cZVSdt;Rkmt zt0)M%ij~CTzkUVAa+SqmpJwAn*(yKUU3^v1amBU3t+G*_Cvmz;wRCcAQ3-H`xRot6 zS1&+g`?^02{t)nI^~6#^uBUG0wc!>Mnh&ssV)>met=Qjex@&H+UvRIYi|sCMt_yd| z^!#6%`;APGT_S z-o?@HcQmEp5*jdE+eQ;-C0UPaVdT$6_J>HRQ|4pQA z(*U~GTSfGTOX+u-vlt1q+AZMPFO>|0CzCq-R4%cJt=(;JE zR5#f`8a|on_ug=#ufhup?>RH+9JZZW`}QW;jdRHvEsHoyEg|#9zD_bTpbZIJx=E~G znihfBNQO7_gp_wDN=Od*{iu*s47^R8W%MMqeHT$4jV1m^>&WEo)5O0smkbQS1Wx3} zZKU7*z7x+em3WLL323>M1}BRB1?Z4z5rf!@*awdmTpJW=xhBH=~DiD%D95-xO7 z>)SD;ZrtBw;PGo}^&Ui#t8MhB7B-3@?2aR)z+$i)G zsLLfpg*{1W{zfvq_$vu~$GcwSB1;kFOH)#0YDU4FBM^UdF8$Ubh{t0qwH~`hS2>y} z<37>vGQCLlMla%jJ+3Hb_2@dX1Sn2!z+}Ss;UzJBEs8`H0}20kk0{>^gw)c4C_-=I zoM@+8_H`VAi~WoIe!7Z0ZeEeDeT%x-&ePO-WF~1SmQE0F4IvHNo|1bd&k>XziwJ~s zaRM0#Jx2{U2a&qLbLh7NZ$ptgSrqnegp{j2kkno3MP?kk=~`Hq{Cn?B*C|DAjOb6d zW6V@C-)S#N_5MWKMjRwQX2-AID@28~h^l)PBHH7FB z!-;2KGg1*gjSSp+Pv%?27ln~0b<#*`)d$jDuP~ZS+9S#1%0+&+Nu<_#qexHI0^hsZ?P7o8saW)^?|wueR(q2%zeIvE zB%91Etw59oJ*ahLQRj7BCYMHiDFU~KZen6v;`cl(Q2+n>g~Z;qB7qc7VtTxd0FCz| z)`FtpBCg2r$UdaVTP6DB(xhT4R%i${=KCVIn~|)k8Byk+AP^Z?LE_13Oi}D@CTEh0 zI-nRpzt47(sQ(Y@NW!1jk;jV$({H&w1^@LcQuL`QsVE#let$neS7#jpdhQinYfK_V z;};QqFy=~l%!bi*hMge3d_fx8_>%eW)rh|YW>+GY)0KEy>ENW3OKV8JF0D)g(Nm~7 zx#-z#S9C8ApC@7WYywwxCv_{&jl{F7IZ^t}BaipKAfAB-iT?E@seaazC^feetbXIk z0k2x*Sm$m;X>p7=7w@3>IS&yE&hjrY@hPMx<*$_lNQHyZk$X`(^`iw#g!h6P;PanlYT1 zninwzP9>)Ic(bCTJt4d&PEhNrJi0!OC2*yZ2z1jG1X{=<{v|O)={S?L$wk z<45B8)`LvmHxY=^(}?Hubh_>+;UsmF`_o;V9YbQB&QL=ufrK0Fq+nj$LzJLnbiL4v zc*ZgUw__Pe^=?I+Nu3BN=S~n;d(-b;hbT^M>kzCvUrAP(NiiFjNq|23((mtc#HJ_? zG$$1Yi__J4jgY2XBH>Bp$XGEe8S|<}D&}q?`jgtOk`>B05A7iA`)wrFH<0XDXOY0` zeZ)HKGtmc6pzHghS7*KXkxBf`ti)5N zHMRCDdLK&Xi5}-HQWW=+4A{Pr*nfAZ;m=44LYt=q<#_-ZYgY7fe140`{92zN zrne-{$}Nd<@e1i#d4{AaG73>CjzV;GGD#(AM5%O&IAene(8)ngYEb8sz;E@b;a<@z z7#$pT4bPmz4Tqh_mH~iyBoEeXBC&FRkY@>fNOc;bfZ1bS}DMWXchPQM%CN!4>>Cu_JiSZl!bP$tE-Q!V^;%y#r#>v0710(!fi>x#*wo@=t6=shs; z*K^k~ZtJNh=3k!EMuKJskOSn4K~D$=9f^F3C3cnn1$VjPU<|LG62 zhG|v7Avt;6Pq{04K@msk@TUl5b!`baYEP{J>3Y{!BMQ&>w05YZ^JN!;KbwClz(_7X zkq6&9{_K26=kZfYz**;4zR5w{B$w{yUQ~DL_T>K5-Kz$ceBv;7nh}h_vWyeQ&MymX z-a_mG2&@pAf5I}0a2Ctn3wlN8Q3R~U?!o9xK5PihaF?@?FK~V}Yx5BjYglZS%<0#% zXY>wR$BMT?2XgLZruOhGfE`96Ms(+6Dj-fcy8%lp1WkSh)^4#kzO9{EYtYX;~rkJ$`;rNU#OqvE>#Fjn8`hkUHq zcF27Q^*exMt~h1jV_a9U9!r5VkQE*wFIg24`fjkVJx!ec18e^p8D$Fnan|_)6rW(R z&!H`b1#8PHm>01*z>We>As? zM!r;RA58E3jvkvp?_@ygN9-J%g4W-|YJ$>d>__m7SmFaXBg^=pb@@3#=31^naCS(D<{IReA=k%UI>{aLkhp z41l~hYg-lUD_D10jjUvM_o23mjmiUxHLUCw5ZAIA6M(>%O{ZYFSpRuI6~Opc2=+dv zcZZfhcIOBn1+kDAv<0)6{oo8?-{~zM%EmPX2qlb-p9XEotfQ-8b%(QScNlufMv`-{ zSY8=$X0dNq!I{n6)1W1nxlM<&Z`hx7A3m|;Me9pI;2J5f*fBQmZ7C#U9 zPdxAIOknxU|4Vb?LcZoMK>E&0HYoGb)%p!uymcGjfMty?p^OTi4Z5H%Xxyh$oj3`(gnRU62olO@2v(@z_Z#4b3*QA;O%SeRLoQL+Vh5D_ zLNu*+9|;wm#nG5544|3YbHQ5%HB*Sv1AVse_8Gvx7tS;XiVwmDf5h&i;ECjj_(=%s z4S_tN(rDCHi5ro;7gvj$hd_L{IOr8n>=O%uK@1lCvHc;2i2LH<*#S{;gIt8Tvj#Yi zh>dfdKpG`}t&HNhSneu#V#TW^!E;&^jzKU^eEk^31+m~1%qNN8>VxH;*k>4=xi8M6 zN#i52EQKUR96lOBNE6FVgh0AjN`&{X#KhrnB1iNsjasglZ-BrX@!g`I&wF)exEOgKa-|qti*6>GF6Q0+#eD8gzuHz>R zgd4v6F61c1_58wyAiDS^w4mR>+q%KGjr`&%P_v02Pb1J~J}Di=7Cr&HB;r>70KG!D z@iQx1}RF?cbi@UhMQf5sF2Ze0rAB2LjyXF35d_USGokw>G9zEbZQuvvWq9=W1X z$FX4-3=}IGf{XX{K&q0s{x1)IS`yRv75L%0-@NW8$av(vYBwd@~0fc zu@TmH3x^uNU4}+RI6@N#Et9SkzLfasgGCqx3f5z`7PFp`jv{|+r#9EY-(9rs? zNC>yBcpTYK8g_p_QVxnox5GRS5P!ddN+|!&p8y=j&!_=nIR9T4C_lh|=?C_M{9Oea zBlw-aqZY~UIDxiUel#s@Pw`R<5Kr^NEHH6}pDNOLeU)FVp>JQ~KL$hFb-o?V6K?R2 zJAxRdW48e_Ubhmv6-8lJb0|e-v42HWO7)?2OkFEda79pW>dZ}`B3ZZ0fg(+}I2A_I zbu}xY?_}xLR6{sE>F(Er-Y+`y-ynY1Id{_tw^Z0qcfdzTDFpTv!q-|T_6R8{&>J8O z+lpF{Fncbv1q&NXLd|}m*DJsX5z6R+AXIRyL@iACvJsr&!Y?As9}r%=fzE@%dpn2` z!Wx?OM+&`~B7ld4r8GOjLf?r=qj*HnDk309g}?LR)iI&+SeS?s4$&JdTIh5iEXM`E zw+Q43p~NH*V+6O=fPYfh_ZDrjLa&GL>69?KDo}XnXYK*)W%^_i@YH`x0ntl8`xnT0 z>-&9%c_00tp@6+yKXnWGpSVJgsWhHreP3*0h^zFGJwaTpA4Blh>RZuNZJYkuJ4pEH z2d^d%^~1*kZ-m}m1o4o*uN%y}44Y_Q=5a(>wOBYeFq>jRYc{NH3A@GlOYgw z%i8l}TIdu9`E5b_V16PT8q)hUScdx52i8B8iMS4Ty$AaUJvlM5=PYoJDowX)blGok zWQ@lQ{2pt-zO*=QiVK|Md({WPzXK})^yEsNK%Y|e1N6)bp_%>sbWhM1WYa8m(fIGU zI^9`0J!syn-DWVXW~s%X(Zv=|faqpcbv<0z&cbQ3yo()Kh}s@@_91Rh0DBby1c9vh zpAZjX#c2{7%<^l37{adB21_V=NlU{pCQXB~Bg{tc#$2H^A$cQc^c1dlip@`<@u2AQ z6~!H~=1LTa=#a2qj7CP!wKc(fDK< z*AD>9|1(kie~wcBdtAc&?B@jQ|1&VreUt*+Foqi=Xcc2g|DUI!!r_c!V?M!=6YK~k z<3(a6cm9WlYF;${)OOIkzy6C!(BG_XJ;=3KhAmF9bseJrQuRD6b}U8dicVWrgTKed zfspMV-2*%WD$u696=%>=4k0R;0D~Sm(efR3@CKblUW;lc4C| zeXF3_d3!xnd$5+?i1{iOUmVPvn2Bb!n^}Vy;M>9?MxnNqc@=_l8+(S8D7wn;lK@~R zTNDPXyV!AWglaca-$IKYE9(PWdszKp;PhvsW|N)0EP}FP0W8HGO82o7j}g{D_I?_C z4Ptqe;0tD#QxWC;>{bWp4q>m(!eA)#9|eIh_Msi1g|m~CpE|&Xq#+6i*;xg|2zI*? zYLV<6rTPxB?ljRm%mO+A%n|0G@%89H#!rHYW9%^HqodflIPgTX9W?no&Z76Ac7nB< z17~8`*UK<}lJyNoEtdUDnWR(9lU9kR+13KMc80C~04;IsH`l3#rK>!>3(a?!c^RIJ zME1N5#O|`0nNX6%ZZ-s@WOl?=(6F?#`C90B#x?|i{{{1+S6BvPlnTpa0TCc(vlX%M zG;x(NE#fO1{BAKUcBUGABV( zlZCr+3#RU%Jnl5tURavGGY`(>FNJFu!S- zUJ=WsMs>Tu*T#R{htVeeJHxl8kHB`IJj+75x_=bm}k* zuzR>4$BpP)AA_$`9R7r+KogIZhN2lk-ytxsof{Onvk7ky4Ig$FJIWXpTaAU@&1?qs zQGZsM-a6sTOrz;BHe&)%N3$aE$BX7L`V*`Oehe$Zf07kB5X%U){wynUR5 zrC~=Hb1THYq*(G=8C*-(C*r(#Q5ESuXHzblt^QU<1GwM)1* zeg7-&L;Lk_(D17<6mja;mHOHeme~&a-C6I&2+>j&qaj{fSnW%Qz*hD-AIP?`iIk!9 zXKVIB#a{M=7O4U3Qa{}318g$M9b~Vn!bk+WR2nSN?C53qc$_))bVTC>oAL*&o@f5| zK)t|fJOadcmeK~dERju_2@`kO^J*xP*tG7DPiH+SVV}Xqku#ZW94+uau_>)!FppLD z0+`RNjTPcvd|`QTdh7` zpEeeP$M~E6V2R?_jRMeU{!2ZWi07BnZsbM&V>h^Vlb=mnruXD%D{t@lYed2S^qP9erdf5pHzMFcGIq7!DI>b+My=cBTqZD8nT8?%ey^wMg-7-ROolwx?=Tx%PtrY01ISePC#5zayV5~o* z8GbifRs#x}{M ztpI#7Hy%9G8ZAb&XO>w59~#fu`T{5e+2hUN3SqwvMU)S)Xq*MWsNI~xbc|h>fZ-wY z3xtYCIHdJUbBFUIjUw+@NIpz_VSnLV26A%)GN2?!SgBXv+wg8vTbhP--U@7Y$o5`;2M6s1W zHpYZ;V;djy35`4WU`lK5+n<2c|c=xm%$6t*$Ydf3K@_1+@=4g;pD% zbbqD5mpq-bwG*t!P0?P>SDh&mwQsr;OW|69E|}f|-*qcX0mTyG5c#`Q@OuW_9>Ta& z@X$->HXk)_;rc*`uMi$@1m{X2jB?AXg%312T_beFDKaEt&Thhu@fF_UsS;hn)fG^- zL2#sq%`mnIB2B$F3%hASv{jgX7qxA|wvte~LpY(K*eTSfT|YmeSTb1l2+Lg^S~;A- zMgR;Frp^Y45TPIlW3me4HbuhnC^jr+N&0<(Z1tZE94AuzgcF|D-CUziS2Kim0Les_F zqW2l--Xq4Rfaot4w1Rwqc)$VO`^1^cp*u*dM_K7$vCmfOLE??-xc8xA9tj)}gDH`C zPz<51o=CCf4sae4lS)A65wYQQ1ju<*tV~Zsw0LkYbRQSz(aSJK44Do!C&dqUf%}wb zJ^oGKpkh25uO=y_Op zCWh2O+jG%S7M`Vx|D1t%h7*Ztpm{02w8GLWab6a9vcjz*PPW-5k{S};_^lu{}_gO!B5^mZT{h4Ug0u1+wxXJwsl*pNfVw~iQUe?Z$Yg9n{CiZU49 zgXOs4L<`8BFx(sg;z`4t@4y>t*hQJ;(*|}Dc+VIb(6D&c&>;u{=M10!fV~R_8{LC= z!;?79)uVk$=V7E##2bc=T|m8Q@EVTdmSO!U3cjH|&Abu~9|NKLu3<<4P~0;tq&4q- zLskfMKQwHqh*&%_SoT576T_DQU`aLHj)RtGhL*KKd~P^?ADkHm_Y7dlG&E_2BFoT4 zK`gQjm7P_}Hg%!*hLrKBeK3^w2G1u$%_xA$GdSp|%NIj)I&AXQaDFT} zzZpjUhoZnxeL0BV4e!nX=n`o#9idn%T_}K@hcxw1#L!c^PaV-q^0cuC`h%XF~qST)flb5C1v|DyX3Ym%Gy7ZwQf^b9nlcwnj(!%3VeM`D7(HNL0 zom)czmJ;cp+I?wCUua8~>eUDQhtjYoXnQ1Gp}nKW(j2Vy#3$1JT7dmj+Dn<^G^yQ9 z*nKV?eGTFZ$=MPt8PX}r#AiyaX~*G}^sWz-Wl6aMK+KVPQBpHk%EBb2kN8$&w8=&r*NN`+kuEs0ZdtcRQi>P5S*Y+6tvO6~%Wce>+gP%VUSZ z#8P>LE8>^Z&g|asVWr&hI&`g)L(js%8u`&z)Yi&}X+5xBo=;0Fm%NB3qnl*+M_}13 z|56R7n&gMkXzE&vr~?s#qn<0NIRB(@{0*@%wK*&lgGVspoU_f9Mc1; z1LbE<8sGNI1@|ByBDZf3-C=S>4vKI&`7C08P5w?hc{k$fd}pM$q|09@__oQsst^P&||G{6leh2yG$_U!#S)q&|gR2y`CP27avC*1pzY$?So3F3l2sot?AJ?r1;K9+hJu65((l_Wp{f4Z`NZ<=4V7NTA4w~_v6ae z!!Qw}bSnmllgdAotv{tyX@$1a%CQ~*6Q}fF3#Dh3D4azWFDL=?5bk(o*B}U7Rs=G5 zMd@A-n64?Ke*?>PWx-{L-&9KHz=;G!+Y1Y~m7Nv9IsT4vr4^JWDdifYdQZ^}gtla* zbOc;`pwyycd5@IqcTr1GdIg~EiPD})lzdWZ1w;C?(wPqOeNk@G)_Q>w z?g^`f%D@X?*`%(f^}=TL8g+oJY6m-5wyD3?gw7r6h@Eg@ruscCdH z%U_+F49>l3lCuR&>{A=kLm#N#7zn{&bv3P1_NyaK!)~aWOKs>VdNy20QR=Be=!{lRNFc_j*&H}ess-gyJEgvvjJDJ2 z(|lS@pH;66M?}u4CuB5UP;YI5?szrE1l*U@H({t1+NgdItzo?$HOYW}C zy@_zG(Y$C5xK=AS8<^HkHs~sfm)fR;pXrGTJ~V7pT8}Te z#L81d{H_w&7CNhLQt9SaD<2ME)h&lXs!^4W^wd063i@iDdkPP02jwBWb-vMxrtYVA zXsu@(4S4m>;|P=3VB({SE$XlRuGCp0uJID>1GYP8MTG{O`7&C)!8ym|X__}wDy z1+FdE)3!{jQN3upwsq%j0MX`qRVZrv<{mJ%-*F1p4zsANyLF`{o)WX=EI;!@cORrt3=x>^=y+@*zda$>18+yFx!(hZseER)Qm!R{%Ic?11kl3zC%_Lj18 z!098cqSCpNuiXLTP^hvKwKj|qfEq1hz0~-3}DtQq8}>b3nR}(Ox_#&A5OfLYhpc79ynwp(qYX!C#^6uvDJ5 z8jeU48UoW%$$c@}j!E+_qll6&`~_mPG=z5cj!PS-LiI`MnFE+&rPePgRd!1HhfegL zme%cq!86ic-1VPP3>1qYkE=h-RP7l*D zr5)t1NIm9(cvadt5z4Mf=b}-&F4d@q;)aym0Gv0axg0nXB+qj+xZIN7--GVkk}C<8 z?jV-Xohbbs2#LE=+($&_zT`!ilBEuI)E-Fhjsx05>69N#Jd#Ryph%JYu#=AYTVKk^ zJdq}EhL%*xtulyDCDTMGOOr;Qz1G_L>C#9#p_w5KNQFeE z|eNqh(Dm_ zr(~~Qi1KM!r3~L0d0jG)#mNF4T0bj?(`4nG{BH*+J1>8(4J{XB_vfg^%WLVo(2Mf7 zYtVT~-s+_6;bpnvT~x2gK6E(wsvL_?J2CBDe;aMrrT*X72BsXXco%iH43B>!dFXauAWjh_}c_4Se$8zFB zdD=EQW%NkiKy$4W`Sm79JeHsT2}@7puCw7xs{C*;+Mddq0i0>F=@ryGllRhjg6DE6 z+B8Fj((Qm$74EU)CqNnpv6CsaUNw*2f7w7ixJhbVY# zbL8>004i4=^B2s&k-Nvhr?+x8or``a4-WyD_p-SpqW3`_UWllFl&8>fluvTuYslrv zJSF8m%jVtS{38EKJ2_wF!88-gmm?^R_f3A42F?PxO(zfw<#rEY=({`{2%VUOE3}Yt zSLSa()R!tvx52!JQiX2bGUe25)I618u`uDK{ECkUF(Z$mC9IE;ADARmcsYNIDoJW*5zrxX@%AO;T zKc*C%f_#)RperI2tu&;KwBt%!`hM$#QhE*S#wf*U*ZrhY?GB1qW$S*3pHeQ2qW-9C zet_bPQjbQIIAvxY+RiJ-9;3LR#M5Us@k-Y_s9jXjSAgY`Q%S4^yO)*Mw@|&JWGVP`T{^HNDfwNX<(~4KKHa&mR4xWB$;uZxRPjJ@dKZVk50(FD_VGxmP2WSLC=F=8 z>#<^e48bQ#pZQ=(RV<^y@>IDo31HHc+FsE8OsRSeoX?d78j2Unsd%)dD_foeVTO`D z7%Z8}`2D7R=X^-=kqz61HBJei7Go-*+k41QG_z6WQ%(rXPceNz-) zuoNhNZ-QK*vaK=NzALqJP%KfuXVB`?U5%h^zNKov^5F4M`_k^nGIeD%0_CYT>;QQ$ zb;eEf1aFm@(dMI$aDcd6T}$5ptx)T{f~A$}GMX5yQWH0VxLTcr@2JH!s@Fo))~bU% z5W{uqxskBotL~&!_j)yI2BuA-OP$7px@a<38h=qp)~+_ ztLn2EcDJeK#t6xFwJuGycBli!Bcwak*}34{rFNt*6nCp5e zyEEGMs@v$Jn*envjv_d*AS#>;`9O6q?Og<^_i0BkSk0&k*8OS-4>e)xmTVBi)yfy( z%mLMh63GYE_rJk>g!()gaf(zglhQ+KDvgMT)qfVl?h*CQd=QVSrRZb5W2*Obh)1az zbSNoW4Oj&W&g1Ik)zEfA?Mkbi7}bjsh9}jEPB;^*W{|;C>cF+AomQKM1K}C<4lO?7 z)Ilu(`>Z<5g4#JXnT{x&S7*{Qc0rvT31#u>UHokg@uE7k6XY(bX@4Skm(|-eQ@f&G zUXR*Ur`mY}AYN00QXzj`?L-H|Z>YPfL+MS`o6aaFsM9WhcuS2{aHYd znwEtx$we=1DbBo$-dZ2}M#4w)>i`tXwQT~_tkBBPbF@;cQM4tk_1*)4)moQx5Llzl zCiH8yzi0?vr$wDb%~u;(83OAyBW1E&+HTtW*r2tc4F5*Wv0TIRw@DjD=e{;;+xH+) zTeK;YA+c4vOcS?l+RGlmyK^H@k@ZeQ?t=2&RtsSYY6Ptp524Ezt;9Q2<+9m z1fUk6q0JF+e6#`FSQbsU4Es7 z^+A!Pr9MOqv$bNgpyjpJ@n2}k(VWG3V9V9!v;?*{S|TmV-f9`C(EUz(N3ndbou+ry z2kj)jgAhMz4QUAer2V%R+VZrNXb61P2Hu6;FIp~TX1{9nmjP40R{IzPzG+$X5leyg zo%U4$wC2re_)JR#_5jGq9amobiV z&E7@}P9lpw#^v-jU2a^I1@kM6`>A)YG~S>&*DB+^_0YN6XrBu(Ym5y}Lwv2VDlJ~u z8SB!r&)0Z|_Lkea1M-L;@YLP)cmSF{l|NLX7%OP#S7{hVNj+Fyn<>fC)FY zUy0&?@$O96J!lNv4mA-*tuly_M%z#b95N(4#nQEYldO&lvxi1oUyn&N6hK zHOA7u;yI%~9aB7StU+IIUNHL5{2<=AvJA9bG*+f%+a+VhL2zC+ek=w^SB%UXX0IC? zRsr#bF^~3*ZW3ji%w~Wmxhj!cec@NawG1j8p%|v5V0eJ2jU(;!_Bx4gR zEZsA{rOeoUqbKbKB^#?zw(Ws&_Zf&kH2!l1p?G9`tpjI@vD78pm&e986XDVmqaC}s zVyf}TceFhSVrj_}1;!3#p+=#2Sl(;7FhtTU~PL@azw zzjTC_^`;kn=no6HOzG)`}H>Ev=zz$QfH)z{w+Kf*)#9gMuS%}(hQyk?#{Y*z_?Al}MM(5G|O;=-4+iS|B zY`WC?lbA>C}g1Nl?SLnrfGVp2{wJA^u>Ntqov>pF*Q1YBGhyee_}=qGnMZL zHQ}bQl=eMf`j0-nK4^L#jJ60GY&TIZX{ip(ffCMjOq?P3`_g?S$z8ZHC2|DxZYzlcp%zK8Q7Sr^9upOcU%7JZ&m@ z6vY|Sj8^bB&h$H-BsptZPq*TnY2qBToj2_ZLUF;AzZbq-GDXp6yq8U3G{{~tjT-@b z*Gd^3nLrRA&;3=cWOa;Cx{^pAFa2P2Y4tkzu+(d74a9 z(q;&}G}YUK;*}{L@XB$zt%uO!C;0ANoeQ4WgE;}E!P3FFSP`cTi^Z^F9nD5i3{Z?~+ zZQP%2=A|@y-EN*iX`3BpdjyJ|=82^NbeH)VeS*K+d`ks1KXbir2!g+v!q=DvmdfGy8v?G z=H(q>@PIjGD!RZyv%Vu(BFv)#fj-i#zDIG$Jir^pVe_3nxG_h}-P!|;^Qbwl4d5R$ zOZ`EOGDpP2i)eE>deV=Z+Z;roPMCMmbS}pHuP-D{n&+Ma-qYp-^xU2?4=x3kICC@l zmhr5)IIRTEnaj{o`t##L}Y{+;z7+%5b8()DmxnyocrZPDm`X zY$b!9mZPhH$;&c{Hgvo#$0;&CmiqLy&`L|su`sd9QkULQt1Y?zpjcz^n*`WvE%O?o zSZ8qyMqqs{n`;5~ddu1FfbFt86=7k6rD_PGw$U=<6QhNQWf!e%w_0rUS@<@~e>7v< zZqeuv{0_^pW-z$ZvWEW9#4gKcT2t<}%xVZ|ewNRlK-^Hq+uw~kH7(8NmJqHGlT4vMnm}8ce^I5nf!q^IOC+(yRLdRObbV?` zDg$5AEI}INo>`_01(+9>#S>9Ww>a_V1M$dMK2s_<(~^A+f-fx_XtaH0X+RIaYfCW` zbmv$+Jb)tCl1Zlt-&iUIgXOK|>3y`lvkdiwiT4)%EyO=qn(@H&(Q=9Q`94`{Tm;ZO zOFP;P{A^L_Z!LYX)Ep1-ua?J7`V2AOGJ{UNe6w_-6n}x`dt<06v^1hk(eIWSG-xle zz92z&YgyVoSZXac9$-AIC+SadEwkRgiJGVN{7SHRS#y7dGH>hO^hZcmS<762veni_ zbZ~r)wOcn3*IGL?0Lwb-uSe(rhOhP2eqdW~-A$*rT-FgZnciR>b{4ufS{snWChIX@ zK-+A+NINN8tfyvybE~x^b>wZcO7~dLEQB(D z>miy^?6vkPiyjnUjh;mF&wbVl^fnH*ZlM8kzjerVco<^+PKN2R& z9JhX;IpPWHagpACG1iv7VCkf_a?zfiwa+=IIc42B2nJ7E3s->kjMaA;w8dHH(W$ZX z)?Zh{`wP~NJ>gTlmAe8H7p*0VLEw`04;r;DTl*P-;)=C3?ciLso*e_c*Q`ru7wo!q z22EOSSZ~oN>%3`gvImU`)=C`_{() zp_Xi&_B(?Az)(I(UbPfy1p{x zo?Cm|0`Y~@T8^?Q>DD{6{gz?1Y=GTNYjq#+ytH1WZRA(hk|Ury%lft{Vv%EwnFN7c z>)79+?Ts~pHfi5lr%r?TJL^tL(7v~t%cJ;U<^P4;M{AD+)IM32hG5CFCeq&2XDd#S z;W@B61FyrxH)~DWnk%r5nFH2BYuiHz&39|V>1bPGJ6{MvcbhkD?k=_Y&}khH+d@i; zEVGGUQFz({R)FYbGfja~Z(G+5faYVX)E?%S+XmA4?-jN+l(SxK^Irwx8e0}^tFE;T zchX-nTW7mD4QhOCm)pSm^|qQmsJU#>^fKRI8&(!k-)IY~3gQ-@ZB1x* zE5cTVWqfUCv)`{{hQ8w3pv_;!iRDu)7ZLNz*c>Ye<_EDT; zY_;eiIce)9A_%dz{PHky$~J2qZu)84^L!A`+Vb{6={eiFMIfHH#bp5Y1zRI}55?QU z>OkP4E%gtWxMW*JYmdve<@6=N6rg>ES?e&o=u3i1%#^i&ovX3K!7!$aagw zQ*3Fps(WnPGzY~K+bufjn`)a(e=OvwP4Bw(x5H_o-HsPFw*>&0ZW~4e#7kQ#D#eOly>Q;y{72zNytf5D zfX)xLz!Yf7vkkVw_-9*8Z^(VINwn_zYFq21>`A`u8XY75X8YC?5(T#R^w&oUZDrp> z_jg;h{s6Po?n~z~J?ve#KyaD85)Bug_IY%Y&C8xJ0X1*?toC5>v6pWFgv;$Yv8b)E zkD#>hN_!ppqerXkd$VD0wS6u*xXykficXC9+G|o$eZ4)pF(T=*SEs+lu)%Jl+1y5Z z{S4^dWFJJ6hRyc7w1v6FKAvvmR{Q4B5Z`7W=nLX@`%-drx4pSP#Qp4TD4Vv&K7q3L z{`Ob_nD*MIUxm&9`@iI8kbOf(TJZ$id&hyg-=5M8*h1{x=!{>e{Sy6QqcHol8z6?; zzxIQ+1NIK5z5KeXbBwTHUCPAcu>DA9h_-j((> z&e@061jl*%BwDgxuq!lv$J>9s2kDFUHU%gy+4s?_@Up$dG$^@Zx6xeis=dt~h+nfW zDg%M*_Hiu`yBqcuf1~ZD{T1bW66_rg!M|Jf^)3{*?NN00#`xm^3&@nCsl52P*6w|13| z_`I{vodVAH_8~KI&py~6MuX*}{Rn*m`pLd?I56eer+1?BRG;l*Xz%@t{ni5%U+pa` z!ux!?-%3FIX7?b80{em8s4Z~}qQmd*j`uSW*`K-8n9P7zT=~6r?|=yO5tAZXh(;f*Emkcp>eGv zjHU(a9Ifd%jjy8zy`I-Qb9@ryu5FhxDck+~IZ!H!~?DE2$v#Uh3wj$E36ggShi zq88?uMLNSB1^8oQ_*f*h06GskVrj23!s&QO>GMd3#{nok0*`$taFE7Un_z zsACH)0FF5t(2x@47_c7#(T)kJfPdU!r@Y?@$1|Ef#W>{6@cyKu?m*OH9d|;3@RTEt zGO?!}eQ2-pjH4nxoD<_5P3e(5>nJ<;4^+=N*3*Ho^Nv4m!_oyu^TlY4ceHbbPAl!K z-V9i-I`VJgE?;wWOaS9`N0XD#dBZX49Sq%cRQEw!f+K%ET)O4>cNl879e!N_@Q$P1 zY!DM2Zz<1x*U?pmfh5PL!(d5vxKBpg1IKbYJ^0XZlP2Yl9MKKoW{TsVp>XW6W3rRp z$4?vsuESue<7pSjKXvRM4-{#Rg>>tlIX(u$>*tQ(mvHxmW9v86(j5~-to!t>^3~ib5x*=)n~_JS_XV^2>qe$t7C9Y zwB-7<8R=BM>kG7R=5p04ZlN@XTkBSnI@db4wDDl^bsN|d#d^0fRe;dtwyX*`H@LM#uX2hT-A+o- zy~&L;!i&vr9s&SwaXU)K(6+kGp+jQZ+;0B``R#5kH-dAA8_pQx5p!D>4Q;#Jx+TE; zZnps%l=`{VrlV$i+#aq#fc)Kj>1)HiZublbY=B$iG7#A3mK%;32DqX^PcmJbCVgqeqfQpU~h)lsf-p%DoA4#Y{oN4XBZ}d zkiqCspqI%|(eLR3V`&$pxM*Yiya8%oVr0_~DvMD=C&6q+%pi#7Fn-PlVlLxRH|Fvf zrzyCS&-nQ}fLvyXT0!j!L*D_As|*(gngT`x6(AHc{v@@pG4d(7<~rkeB?gNat7x-Y z%!s5gRS9E|tX9gfMNxRJjPcbiV3adHq!f}Hj2H$cD;PV;!(PeQSqxiNF+Qq5Q_YB= zdys1wKTu%$Cc``lgjz=U2N0%?5zPmSTZ~G2&+8eUgMe&c1kqA-oAL1)NPma%zjNp{ zGI}Yq?k>YdL9L5%?q^u0n=zHr03I-0A7kzz<8?|@>S4S|CzM{s$_t?Rh;i^B zgz01aqa}}VKjTAkFb*(|z5&?=8K1lhYL6K`v^gJQq}QVNgz;nw*bg(DmjH5v@#_Ha zMj2(~P8wqzq=3&jqaYBLeae`X1<@uL`A-2k$ta?DxIMF-QX3qYTc|kBk?Fexf;utT z7ih=s%$zL(nS;!AJ$Mu@%srHJ;>!GqBGQMLztT_MgZT%D^Iod4&8cq0DqE_#S8SRzsK*%uC5=PBJHdMH9xHG62=WnQbieBA69i zu#aRqQ0ik8Gr1YPXyybD!o)Cr$&(Vx+)9C$Q%pzN%EmE0$QgE;S)K$zZD*K_EU0~! z`47D$=a}ay6n&m~ISaJonLkmYbpo?V3NnezMW2F25_8oyfFv{LliMJLxhe`Esmziv z*dmQ-pxZUlnML1YFoWqs??@(d9l6afFuf@K;3D%5rL|mQ?tTvj%Ca#n%^;f1ywVPg z9H#hh@XclV(kCa6`8EZ*@|oo)LFO{EmG*yEmV*O)sx z&|GIa^kJ}wd53PSEoLsD8S9SS($9Z%!Vgws2+r*hTsuV*N?`jKi!~ouP#r>!)6jac7AHfbn2;od>=r z>#G+r=f#pzX_hx@Zv!;+Vae!1sUxhRUWo0>N~Gw#A8Tqd@cdbCsX;S0hQ1(X7Q1m?Vbv(M2?|tm*|oIK@)YcO;IL z;ttVHvj&I3{tQb?)uFbtEVtJo)H&9Ne}US0)=PsR6VD2!BWwc8cRAQ6vR2dHGKuvz zEq=+Y_h^|-Vc8kLB9+zf2Uw)BB7OyWIxForAY`yO|GDN^Rdo5&1y(V=R2Nwu~LEP)$(`7HZ40CSmjbqqwWu+HXS?kZ~* z{`SGHfc3!?P%C7;MLCSuSW}LJ=ylc*W%w1bUOx?)idk;oLD3S{w|M|5WgQ>I;0>0K zJwPg0Uy@6`lC`vyiMEO*@dao#OH>6GH7rMZYByOj+KSh*YU#{f$69#=Qru$I7NeMZ1pHc9U(pf0l_m3qEN!ec z0WfGg>&=+}>0o{F42*rBWtb09I$3Xsz^;q6hKadu*5`GQ`T^@h3(z03;^INNhqZVP zr0r$BM>PqLSV1;AVfC?`7h|%Y)lVPq0oH0)uoz^8(iM)6Sv&p#wISBNYf$V7%ZqZ* zhgth*modVc{{j$3Sv%>NIL7)8SMu16vzlo~{FKF{W8wtM(+LQZtd-A$iamQh9TOec zpHOzABl~J2<$pS{JtcuBGdyLf8(DFi9voX$KIF zvyD_He1g6AV<>u(ow5hLF!nSnAj8?!lm#BacA^xJNVbKACW`&Zhro+wJFf*o47->! z9WQY#yOi#pImM2pty&ygNT6;eMKJX?u zC9xM#K}j-uGhHN*!j5AcX4%>x}0J-efrh-}?d(YQkn9t7n8&?>b`MHkz! z1lo7Azw!gZ19s;gfIMXXL~foQ_RUN%>}8kS!rUYFU5dcE?6)X|afH2WH^_{#m(wye#y%;=+&J6gEEqmz z^Sm%O!G1`I9h2;4dmz|zn%ptyz*+k_I5=|F(J|MF#v#o?PHQ_jxp0IO z#c}0G4gmBJCzCEtILuK|K+KKPM*eko4wquy9-Jl5fQ2XLHr?Cf#hE*XId9IVVj%c% z&d_h>2Lz^q|~iQj*w0XQJg=?=M>FZ z`~f74;q<--kXVk45+qJ>esqAkahxLTKx}rWIqDvC&u~(w1N1D1=Ly7foQ)LRIL}!? z8`XHu?P4G%a7t;UARA$>Z>egIT5 zI8BsHkjeRglC>^y%IW_JE^=Po1`yjNPI>@{W^wpY;G4|}qHOyd&Nd}Xn#*ybUuPaC zla{S~PAk29N+Nw0HU=imoi#2KQB z+hR^!GUiG+Wvd{4Dd!S7tjlbiY7b17bAGf(_Xg)G2ed0V*_8TN$@z_P)v7p$7em8p z&L|xnYB*iw47|z7qR3D!=bi?f>NsotVT)UwAC7`WJ*SJd*$o^ir7Yj(q*j2#9nLr#4Os)rGZlW)FgB z2j_=ln7hw;mQMbiobP-w*TvyTG1$%7>vz>bYRek~U>~QMVk!Nc+Aks50B3zKXbo`+ zj)Bh;j^k2b4|CpWLNmg7(*R43a=O0;$QY-EoMPjgPRi_g%JJO?gbB_H`c6)AqUu1* zo}2zTKpePx$QS3xy)hTeow%Yi=s9y=`|r}UgIwDwfVyzc=TpGyTx*I|r5lxM`Hi8qQrpKaL1)vH%iBa@VHA2vJ-nWhq5-chHwH zhWlJQnpp0Bdb3Y)gDvE_jpM#J4b)C^ze6Uo-5IX#C-ly8cT;-BIqo#N9Opc@J{r{G zxpSUEv;;2e42ULjSNs9KNnBTN@J;4s)nYJ(>na0eDmN|>O&a%SiXf+R-}?;2GPpgB zV4ulNp9e-4xSzr2iAXNDmqMwRxa&&5DU18UPCUwNZl4GkIoxM9p~>ZX90y1q_rMU? z=W{PoX7^<-gFMYwxcLG!SGj*22hjrVLfRP?ayw~ty~ed$4~EydYhHk8MO?q%VZ&nX zmo1=K!d)xyo0m6WYi!TtRlI8}0Gqu^V`eUa|;spkIt zF?uyz{%eq_j(gAx%`NVyLoh-;_b8n$8n|*DKyGtKr}^bMzhc`x3@T0B>}8m{$GuGH z&&}LHIi5iacds9Mt=zcpA$A+r<1QfExo5Uuu!F0oIOTnA%P=@}avNVl)5Q%WM?p8& zb1uyEfcw*a$oY`F^L3E!;a2znua~Q%qx~ap&OcDMkGtHq1Z4WTbB}}e0C)3T*lCc< zTn{pjxg~cY_7GQtLNvQ4+?#zMGtAvb;i3`lKYyY($~{Ya^f7J(<>HKUxd^}8J>|}! zB+?1)Ulc-}A{Qs9D;iC@>hV97jHhHd-LkZqCUJH zx=8E@ZzvPS^W`-~W6qEF66GrT^RBgneE{!T3H_PJQJ$Vo&VjsC3b-HRT`mWwAf6wc zoP&9@$u}LsE8GTZp*$8{<9VFtO0n@1y!IIIJ;_^|1MS0jUR2N>&Xa!vkOuyO|g-SJSFYU zFY(r0MK6oDO##WWd1^{*%i#r?AWJUq_y2Z;yk#3Pm(TODeGbho^YZBHbA`vejoww> zt#3f4fX7}6(F%Ea6idIxyF~wmah;b!v5_L)8Twun^IBX$ri8ck7xYSbyU71k#vAd6 zOyxWV#YS%MZkK{s1_tqhpzMA(|A^E~v}OK0Oo-ukEL-Q_vDfKwCi-&yG0=pFdc|C{eqS6jt%fIN}=T+~3NjrJN>%pRnH+LnP zZeBdSX%Bca4*~HZuZq5QJ-itdZtCS3$Z`9KS4?RqeZ1a}A#Xp=Oirl*-Uixj4)R{4 zXwzd}5GDBy@itRD;R!FAgSlZ|jQtd>c_X~%_JjQ>?+waK8{<_4g6}vl^L<$6Derx% zYntG_?}gqZZyTjN+4EnV01F5HeA+HL@;hnU<;34e=U-?3fgyk#oVT z85%$y;&;#<60*@a27Y^aUdh**Tb-|18X-3bR?`46&KKz>B zp!N}d133tM`H!nW)Q?|Fzd(Qf`D0)oz#pTyz)}7qGH@W@W&^`x{2NojFo>^lgiN7) zRtrFm^F1g{`vm`5Ebva+_yd1~Xc+&y8c+-8zeR462!4n?WQ*jRb(o9d$6o`rX#On9 zj)>t`&4RqK{9!r@p5hPD={S!6b_v8j&CiSni!*#KMJ~?rV^@L7IsU)&lReL$PN$f7 zehIyr3H(?l5EA*e`zkO@;+K&BDVcvb9Zd@V0X@T1{x%7Wn8sg8xyk8#+4sQ6;IDlH z2$}p?$~wEi&!EJOi~O~;OkLuKMxd9)*DL{xY<}BPu+QO7+<`E;{8dyWoX5XF8i5y@fU;xvY3D6 z03b{F%NQV2%6FhIV;MjFFhI)r7wJcOgYR<^kQIE!RWPjNucY{S72kCQl&I!^M-Qfk z&*M|}*iC*jeHv@|)=Es)@n57B?G`_lvJdL{Z?@w(HSjAOVT;@R*Qj3M4*ziiL~G=~ zFbg1e`Httosfk}m`4RW{(N$pI%-=WyVlDiYn}FWRe@bqLHa_cF@N4JqrK4vDUv-_< zvq>L6 z&4OM(e=#|w2Ke9SgT)~KXA!78=F6$DXozo~iQW_by!X)z^V=VT-w1#9<(KgOjq-n` zyQIhXEtG9O!T+Tma!;aM4xH=-ZK2@nAlTjpGLC{fZs<7)c2XIqvw%zM)IotL5DZ-e zEnT4EDwsJFsvQ!%9tVWOf}5XV&P}i*20eFyGbLhp2&TRSbWef%3h=Xe2^LY(gty>E z9J)S&d*pmMB9K#L%2%+ELcxB5ac6+|3r5KQ6d;gCK;NT+Yz{yI1xvI5IVN~N1v&)@ zu2U6uuwZHn%CqOa;dzOMlrr>r7nhOFC3eQ~>RMJ~@N#IQ1kt{*Z7O>A2_){iF zj=+I(&~gPUp9ir#!HH*~V7}n@HuNqFexTFs6+wz^HAK8Bc$3b`1%lX3U|%RGq&4N5 z;KQ#V({;hbL2xP(2&oFZSWv8l7A1ne)__x~;G7R2%LFZ3Aw{_$tQu5q2wtPTXocWS zxO(j>1y|<*uS#I|3lORWW2A14;67c3a8oeFp7#8;f|=x`suRo_1p8Zp+-MBe3pTC> zwFW^Xy`r}Tw`ezbN6`8u5Ss+6zr)}?L0&G1HVe!{(5Xf6rJhAm>$3=@NVuMsBoj!7X~|4+N2a!(I;smX)w&kKm=*pxrCT znuF$%VDb#+`UKnFhZOySuylY72o}&=F(`OtEf_u)1WjOYNbu=G==(&lG7+4H1%?f< z;fNp@iDGu6f=5pFOA~rQ!e1%C6)bF7hG!5W{E*^Qp+ZF}n&U#RqtNAq zQ0EA~CxxH9h9*oHzXs^xD&ah;rHBx|^8&h&!uO~uCQ2yW2bgH#a(YfN!s5vn{pK9u z*ghr;oe@@2Db-owE0+LsPI#;Wz4O8ua{wAIlt+VAg0O?qcoKy!x1n&7@NFwZOcoxX zG@caUPI~`Sg*LjUGEM0C2?o=JsS5y-A$)KH0%r3zIEqiiGQ)gP_I2AS=W!5&AVimr`N43lPeLODO7GF5J2g!rTznJws=Q3gM1# zp;M*sRW?{u36nL@qFR_jiPkm3moI_nO=0vd;MWS5%z|ij!sow*ytjnX7;vf={z*wE z4MO9O=-n1xp`iI4p}85v8in>$>vC7<9SKHF!Wnk~c~AH~70xsZ(`sn1*dk<20;W~C zVhBXrgexe$t6k{t4u&1VQz_8!zVK2x@H>UMpFo%{;U2mOv|G6HYe@J&xQo6Z4~1PO zp!W#V=rq1;^bvil9t-<|A@Gp!#2@(W zJ`uj~CSZnztvrZ0B79E{YNNuDbTAwfwtN8%$Aww`(Bi3Z104b;gv;m>p-Ev3`A6+V zcc=!#LA3fs3_6O!-UhmpD0L&0a28pq_VJ)7jiPNXB5@gdHdoR5+0gfpXbn}|92RBL z`tBx597N+T`ppG0d5Dl0j+adI5iOTqqMr3&?=3>b3*IqN69d$ah+Zc@rLU-k4p)An z)$f3|zbGRGqyt2`6oWV_l23!Yfubzhn;sKoUj{;uP4pF2u?CA2bZQO}X((JBDmqz% z=D29_UNk2}GiYTzDXJp>U6?4G>h{7#Q)tnT5;dKJhS8#7Jld_Bmdh&;)AnJNm9LZ&p46L}`nMW6NqFGJ-2HF}w%>CeO57ew>iLGz+$ zlDx~8MEv(GdDy(HiC48C{aY7+)7bAC7V@=)=?0mTI6vT%G8M7`~>>m6z!$oT&;+; z6Nq)9L8`yLC3YvgTh5&h1g_pep7zZUpyq8*JuY!|iFq1PeWO?M*S7d`tUB<&QPp#M7S z5^Ze46YUnArVZ!=(M(#k9*Sn00n#Iiq9}c@=rP6O9*I7og4aIL0dleTiw;rdz<@}0 z6dVRc&ry*6u_!f^LOw$x#t`tIh!*65#jt1xotH;M%$LxNioW*2+?eQ6Fq(1E2wi*h zR8(36%T9=%62nQ6Y$l|z7Y957CkOEh%fP}>yoEwGPU7}0py?tWp^%TO*#E!JnV3z6 zJuKe(4vcPd69WNo<-Y9AF(TKV~>d6pgdb& z@h5CZ;V15I!h`V_H{C=NAhuBw#!+zsdF}$mc5E2on0Wg|G(qC(E1(iA&bb4_d7F9_=wtiI+EmSe*ES22eRI?tTP>GvYi7?41>Fbi>>^F-L>J^WqI3 z_@a#$Poda*g80-Uh?po&CWlRuIGc1z7N4hExKhMdd;pRvo<>V>ns_?}|I)<+AAm)M zc#_h6GsPprn7bf;&2P`KdA1)ZkSp$@+`2rmoX#`(;y*jlTowx`9Odu4B|E7$aYvL`hg4lJjkqPq@iM2Z*Sh0BK*I-v7-a>zA zQYtplML%WYW&SWoxp<@P4M=@MJWk%$3h`w+16PWdQ>ed6yyQ#3REuNCGgKpO9vJjWBH?}>}1(=N1GykP`Qi+Ik*V9_f6hZ1bt#M>#bc3-@f1GziJOP7LSm-uTt z5bYKp%?95G;_BeP$6{>|{$kc{NW7J@qMwMJy)Zc}PRoFuN5sXH<}oTx8i!0{;#c&R;TxTm}J>(tknhsN@s!PX$W)PoOy_Swe}=K@$55 zplJ)1WR#;DB3W1rDMBS-Uqg!Hl1Fc&IU$MihT113>z)I(FiAOi1;Ztl3?N2G=Dq}k zNXbm9>WY#)OSw7Gk`@p=w7lGjgN&7b-eNobI0J>a~3{XOSmSov~o)U@8L~m7& zWVb7tTuI4o(9V-|w}Ml?WGeaAFH16M*L_8@(HC~QDp?!~kOIkEI)oNV&QTz~NK(HY z<|>xBQ+8L0B$5TlQpwpFKrfU0GXc`&l1=o+-H=Ss4Vo1ap9IWRO1v5Gp{l; zXOw11#sAQ2k?dN4xmL+bY@oMEO1sgtOXhqCDjkw0I#}M9Og;-@os#<&w_24Q8g_o40f=u4h(ktNLBjrwe zUV?W^%Av!nuk-_|_wked84cS0Qjbsw6Chpb_wk8&wmr0w4w9yKp$V2+DWy9^x_uVd zhDtXd12z7~8_q^tEXMXFRtd$=@dDHU|2OQ+<3ScbHjQsFYCFVUiL zK{{s`AQz>%H$d!?^dN25vZPz5Lc(lm{*N}$&XInU37A}|$4-#RlUfrnnJ-;c1~QkW z4NE}gigaKt6ul~SrL9qcG|>ZO3Z>1o9$u3=^+TrXQrDBfE0X^DGNdn-R)m0NiBv>^ z}-b!A)3h4j^qAR8D!rtXL9{_CqkGqGOH-zzcSl-A$w!USMJ6EJl~!vY zZ^qyS-KMmqBgr0srgfYwn|&>VzN!j_JZ8)(i{q5bV%>cg!cEPV>!U+ zl+OAQgI&^O^0#+Oz3H^}K>9N6X&y=)=u6%s^`}pNuk_tl(L9odiy&d2bRDHC_Dgqv z3$+KNd%nfopmZDg+ij1fkNQA#Na`C3zE7l%u4sm(QT`x0B8{N%#;EjtI@XR!Z6g>Q zmo5xJ^HkdX2L>mkyE{R2QaXGS)a+#)#~_-6OmYA{M_JMHu!WPXEe{-=Wxhh_a!?k$ z2D-S&&h`St)h4T;h|wWg`w+++mZ{X3bd&Av#gENh7Wq1a@sfS128g%p8On(8k@?Fo zctloAYrC)PQWGTflZ7ZDlfUda`uC*(*}AEqa#VKZRe%J_expVQFtO) z_VMeGK161F5)9cwWeHpHM32k9d=t<9gskzuS53B&{FGrb;}5_Om%Z^2EFxs(v?Ys_ z1wIdiDA{HDu1CvMchJPhZc%VDR#qayqc|lSqePB4*~m)FotE(^=kJWnB1Z45%t(jo zb25gFyi@08RkXp2m(|eMK0!8xyxEB|>p>`*B=gZ=E?G9G2GmkyqvXCzmF=R;tu$E$ zC61-bSQMDZklmPrUZza{0%%^4}J_A+Ih6do^O8U8Nd3-nKpmQ zIcb;8+y|fznQI$(+?V-(2B1!v8@YG8WP7&5Lfta&zd+!DtdzF94`m+LAn7C785wx= z$=0<2vR~#*XVw8(^g2)(ltuo9xyQ1U#pn&mw$X|1iR?G>P7TZcqEzP*{N>#cG#!;q z`w-N|WG~XPH!ic%EB92^LK%J&vZ<7U#`Ognw1xNWi-++vh{Ln)n zILjCB#N0voS5skO7x`x~0CAOTC^h?#{34Zc9+oes6T6#Sbro~&@@a3_(Djge+{UD* zd@QzHAHD$j%M@BZDnCnJ zyg+%+W+-t?zM>4og5)N97&ch0-U2Ei^54HjFI4WAjpn#KK87v?J0W)>U&=}OCli1P zle>_YC|v%|2VfB)pIM4tr2I`n%H=*7zYX+v{LemM|I#L0&` zAjN5Uu{>-Nsxz9K7XRT#T}fIoWU4j5jLm-&MIMfnGDz`G=0 z(+o+#*2BbU=nYd3B3cojfv<+o*M>g0`UV6R*9732V`mnYGe zvq7%v#@ubWwg-aVk*}dYVr!JIB7etS`CU4BG|7){g)sNz9@{~*S-zjDYg*(jyFjH? z-a@XuHu?8v2-+^s_!AsDw7u$<=TI)m19>kksSo8s zPl(?m=lll5Ub!+G2#@4x6lm*{Kd8i9zx<=uA>n}B;X7D%P`;k><{rz1e*t7jK7I%w zPvqkiU>}y3Mnjkp`8P@EjmkZ2$zU-iKTIE#ad{HC_@BzFC}DO&UM2>aN%_+k0AjDu z9f$Z1ie&maIVujk0Z1nWheD^$itlqk^q}Iv7}R!Aq$~zsSH;*SP&uUd#~xxIRyUFS_hk|#F_CTJBt3}}CrC38*q27w^FN3y^LP2#)M-(1mVBxEX{Rk}l z6fiT8&t`yv@dTWXDs1G~3{=P;gZ(iDP8E3Z6qYa13sywaALWH8p7;SFRI%j0 zU8Q1z)}j-NRaRPqPbzNaLW(d&;!1D|SM2^5h!KkCp94muVtXc}h*I3A?@_eEumnwv zVhVk?V-*WHm^-C7_ACq>r&#b1z0-=KEC_l=@jBficUF=A3fP}hq*AKqdBs0;V`#kM zz^9;+ps07HGi;*bkDD-5io$CuER?F4LP5_o#kd?&q$}Fy0yIN0@D1iN6?tY*yP#MY ziJ!nl#j3wBcuDbf0zk49?F%7qwqhyWCy}H0ns!UMitQYjD^J0R!d$*$QxznO|gTVDc2RBlUJcgv68|h#fr1Er72OwIejrczO~oOK zOVrvFYC1yKDN;wk_m<)@1wHB&HVVBqC~__U=C;CZ8mQe-T;GntMuq=>-VjAYHFRoH z{J0S&xu=kmFS1!NwHF923L#0@s#tjeAZ?1f6Of`^kxxaq9g5L%aJa9y6abo?3R~-X z;CCsc03PlnS9xJ$XgdS3~(e;2&6se1VFs!i95qdSw3rJ)^Hd_c?A zQ^f&iaGFpopd<98VjBfC?Uf4?f#INhB!^6n$^{Ovvy(Eg7$DBd;Vn?@pmNb9lyFft z{||$%%CN0y4k-)YfTD+$K`#TrO*vx{KW=xWq#uokQqKoXPi58{HW=Sa`L+VGc`Msi zVAMyM{17r7QTBF%y{}SG2WoywCk9v?RWc_*El@eX6T%!*enWRX1u5U34o<FVg!Lq5Qc7h>^45 zjQJLz(aJ@;AX<#ljq=N4m5vo)e@dB4o2NKsCAq0iD;X>Zb4K|$6*`?&{-6YvbIKp7 z_VT>4f@)XdmC=sSEJ1lH0tku9+vN91Qfet+oUHu&G`)W*%E6})DpmOnB`c&U<#fPK zSB}s=G(*|`3#7a;1(cDsL#)mSL_!>Gd5DDwVt51^X&x z)Q1?XR(|pqWU5g*{R};CDvyL#FI~`_6lukNmHmVHG z1HzaxnL?i9%7ss0yr)V7g|;V@wYGkACzT&(p|MwmQGTa`YS(6fI;s?u{qhZzaaFnO0Ky^FbV?gOtlIxK=G;_*B+zzOH4T7@hic0x8c&ti z3FzXbYAwf{x5}N4kv^*L7EuPo5mjzKV0=}l=<*^z)tQx0#$VMo488%XZ(qmUQPm>) z*Qr3&#-CueW2${R$Qz_8qRY>NRo{t$5Tg2n3Kc_D=Kn#o1wy#0ly2ycQ27WcIuoh-)BzTXQZ2s;m}u4OjnFAZg%<}ep31r$I-OEod;!$r zRFjl%a$1%1H<~jl9>vSgs@|vv$T^j3Ebz{&iq?WkylVAE%q6J4r5|vjYP}dwBuVuT zZCI04sys-MqVh?^8RWx+nYQuoAWpjKb2*UQ#_v zC+#d%Y5|C6tNQ4)l%u*sNs76uwF97st&qR;EJkc574iwei;OM zfhz4?NLr|xN#5~mst(&ASX@_C(RQgwRYNu7#j1Tuz?7(72*O~g>IXUml&Q9E0-17E z0tL5jsNSO5feO{75OAtgU2Vr)mCAWLgsE0(YhjZbm5_D;H&wIq!KqgDp*`^GRbM8- zvJI+8DmJ*SI`)PQobIUJr^{y=RRwnddRH|}Hw!eWY%OT+seY%pb+c;VbBNZW>Z3&1 zR+XRvgKes?UqPl_W#*yjP`zmdmHVnG^xNxHEu_PEmullJ(Ck+2ABDURR6D;!^H5bx z&a58QmTBb2?^T)mK<$x=zZ=5zsh&_2uU{1yjNX81LWQ|ORX&yYK31(iin$@x;37QP zC#sMr=sT?1wHus9RD)5Fa8&hbAH*J0Ek6nLanew` z)JyL|V1Kpe9CQQJizp5AsQUag5Diqf_yXgY`lH>L3sR?1gf3VuxrZi1{p-t^3so=J z3H0OYy&d3mLj3{xdrzvT`hk6zI^GJg!_}Qk%tffPDL*?>ozDZYD0Oiws6^Y;gOqp~ zqrSZZLdB{Nv0?60YEQCdoO(Uojd5C?OndS(>Yel*JgY9G?5K0Y;3KN>p#7ZGV#bO$t~itDiiBCPlr8YTQ%R5mXG8rd~rOR_SV+^Pga!q25fP zuS|6^88|quL{eDS##g<2lezn?%_H{MtmtI8gruyhDNLZ_WZzK5DsSSys za!Wl-wY~M~eI)>CP>=3|*tgZbwGjJ`y4emgHL61?A@;7iC>_L_)E6YcyQkhko2_Pb z{!*yaqRyy9uT|YmyTUg0jE{s7Bi29QVUWq#{Y=h@B-L-;}UVaf%0tbUKm2#3_4oPjJ) z)aS`RHmshct5QbPvV4Gys^6#D|1tGlIth%cC6w9mRNc4^AQS3l%AlK6FWv(@d(DBB z;Od}xbOh`iH7t6goitnN!|tpxUBui$O{T3J_%52yK7wSfnl~KK9Mbq2(Hz!9)Be#- zv+o&zxNCafMbASML6vu&ni(~)q?g8U7}UHq!&F@4qbVAPXh$?Nn}P1DY5oL|ewzIT znAczPGz<&_G_SA4;8D$6lyVcOIrhHaH)&kkE*2y_p{Xqbqmvpt6=;TOYH0fxuF2Yg zCPK5n2pl3ctq$l#Y5Ky^L~FX~hZ>{#^bm-}Y8qpp^(oD6D#eP^yuJZ*r#0s&f#!^c zLur<0HFMn|**T5oE`&d?>HQiA@tOb|6%-_B{MulkM9ow>EF@`sdLT@)=3fb@rD(=a zqDj?cZ-Jm`ngTi&q-(xi0x2>yirqlS)bQ7U#Rbi(P7uAQ37ZeTmoxzs1k2LMo<}cR zGeCt$IT}AoxXsmkG9L!b(@59bfRV2mrQ10#Yx?Q;b43&JE{I;$DAuD_pfQyIzfhA* zUZZOoX*&?FYaShdOhuXm3QZSl_K>TvM3a0A2&I~fZ-H2uW&_<`TCQ1r7z*Cdgq#IJ zg{FQ8#40t1U&maPCe(>82CLS*MxU)3&1nkV-_-1PK=r}^w1^loX)(_!a& z%>r^RG-xU)8Thtl+7Fn!quE6s(nihuM3ZLjH8l4$_h<*-tT{@j+!oDO zbenan#ug7-v}v^eqvgL{(?=eu4$b|1ha|av4-!AW=L~g z3%n;98GYSt!~vT=M7fu4+Uv9zb=NLi z0R#`5R!*NZPpu*VWW2PNztDJV-RURbqusj$7)P{1IuQG6AleYsCGY{?gO<6^m#s}okbt7Ano_G#|hSM?F6R~?LZW?57maJL6_rNHwETSXl)(j zoj<89{vH@%TIN@n4A(k+57R_wTPSK6sr~j7aEj9I_kb4B+S?1kB1Y?63Tm<1EtElU zO8a&$K;pDl?*Z?$b{?hApV78ae&bm!=RI&Zr``G&n)BM>ZBRE}yMi(y6SP@2s#ZwU zy3yV}Nn1(VzGSV6YM)cI?@-2VsPDduWlaeMyF1hPH7jM9b86lVvVwdE~sg zs2vXi!X@q9|MrR6kb@Y^*3O`thH|uLOz7omN9g6q(?-%-o3DMbkP;LxYd@d8vU z)Be5(EXuWJJIH%Ody8U;721NuK(Exc3qh<(`;!p8YHdm}{gq&i)>H$N-qcpoH@{XJ z-3PvP+GT%0wOiT@f6%ViE~ATs8njhSz`w2igw8m3w2K#keWUgrDQt09`wNu-HETDc z(%r5_`4xNH>zTYxCxOMY5#c%gMC^je~8_$?fMFH1KLxY(HqpBse-(Z zwY#^Y8Pe|G1wo%^kNyDr4r_lu3BDuRcTa-DsJ46p3fjiB%9Y?dt{tPKjHlWoRFpoU z-PH-AliG(=P-L$Qp>hxh-7+eschu!kGKZ7yCpus{>#|!x?V!%m3Un9Uits^dq3 z{UP0MO6EAM8#sWTo9;nBNW1Gk`Up?NL)ZK+@H}n0`hA%6(tW4Iq_=M6HgNLME&mEI zM|4lm0mfIi_)TcxrzB{I_-Ng~R3jdv`(GwF#p<4;tnyR3Mel)HoNoVrp*GzdTD8vTQ6y0XZuT0fxH9$<$aVg4^ zuG3|LeTME`S~W9uPrm}*1zkWMnu|K23UilqN9bdmr8~75=-IlblwFpi6Ow}_R~JlK zi+Q@u)#zQuB(q^&!vpQo z?VzmRZr#7+7JI034W^4_dUXC{(6Co$q_5&5-M5q((5K@OnSR}Vy3u1$cVz)Ie5|{h z4C@W)%>RJs6Ww_enqgfog`-AwPd|oCW4eCwG>+?v>DJY!x>>Zvo6tQk1Nx*cos4I% zH&7yuqh5h^*=FaYpFFJA>oUG-Bb@%51Y#TpDA*0;V44c+ud z7huj^-}(WFdgzPdLCsSy_#JazdIxe}cPepIy=O)vu;>eLwvq#nk=vu^&LC z0R4*npkh0!KS)(*f%=o=P6*QHxI*Ay{e3#0hUjJFK?~If(cbB}K7b8sC-sGtgczou zx&{d0dj1piBJ@dHVXjF19Xd-z>CfT+BkZE};pCZ#)&Fn^gQxU={sbxF^nuABeOg~k z$wg-r`kozV&+0EyoFiU;h_Z(h^qp%#J5fJ-B~(k&8~r?Uc{cF}=w#}vDa>(6U%Ve| zv-Ddit0P;#xe=1(>EB8NhkX59s+_&7H;~V$K<`gUi-r1#afozH-$_2MVtonup-c4c zWZqJ}`Z#(w^flffU7_DXA&g4>w&@tG(MLT1+nahPKULm5+iMKSUaw!h8N%MtHx2{4 zQ9m>dqTJPs{&S7#7kvl@_w+wB;kVJOxBP>-HhmS{OWCg1kejeWUrY|)`+8j_H1E`V zP@+Yb{vYzHKGaX4{DU67A|6ez{$Dyg^y@wTL^Ggou~Dk>px%peE1u}1)R1ggzkrVP zBl?FFeHzuL%>|1wJ?~fOKCaJ{V$j*3`|r*P!_r+K>S72bhm)(}yL#|FWO(&`=yKSw zfxN(OhOuQpa5os}wBlj7Lf%+UL&G5bvoiD z&(P@tqxl=6DaSa#aD>uij~Y%~ht&cN*CN6GnBflXBZ3S^Yk?4KI8g$S5JUECfP@;- zPGRu4VQ(l@I$=1o1&mG_Ty4-Z%%BXT-DD$TYk`fzJzu!qw2?qG4MT$XqgP zCQ%#!-vh6}@ID2B z3Jo?Z=B^of$jMo3NT%96TZv&b8bnJCtQ?RjGdzD9Qj{C!&<^^BVWAI%sW5~KFj#4D z@dsp;Vc#$wUbSI2{Vr+@U%R5YY51MWU~3KYUO=zTu$A7{TLz&ong&BTMTi;=Z;(Io zu3_m8ux~QFl?1Kt*$hj>5USabM5P8T27MGTS`9uLkZCh;E-hrXf1hHgsf9x?2C2>emQ4obKlGjLV`X54U-5=5RF-kyiK2}3`fkR}cL zzeQtjY|Vt79gOoA0@BeqqYPA>jEiXDbT*FBY1-BJ>~2`b&B$2}NO$8-N&@sShGk>U z)0kHeAPy z`#jJD8IRrp!(gM9@*P5qs}=(x)Ywa*)#FCDk70`w#%EnY^Q7@YJ_f^#pO#`U+}M|A zgGnQd7jL5*Y25HGdNIa0D_F!DEiYj3l<^p)R>T=MQZnFaW4994J7Zi&p6&C-FIIwY zym1PBY!i%$bV)~|u{#@LCmAD7;`fwntdm0RG-DWf57LdFeF-TtjD_T}%{2NfpMv-A zf{{l?xMWs-Zr|@Qh&$z zDLE+{jqiSp=B}~yc}Un~oJp(uJ!6kIXf_)a&wyBqaTVp}wHhDLQ?|7kXE=jsyYZWa znCvi~+KJ}Au^oK-H3!Qq6)qg?y zM@Bn(;roo&mw|7;F^w)B88A9_0B_K^jF!pA#+HATLS$5^QnM^g4M=T}<{8fVi5zrPSd=rdjo94x4N`HMDm#E$9YAchkH{jCz>n z7lV_h=}HCU_A=chf0?%_avYF8rjv9Nlb>mT{?XFkqCG9nSSG- z7i_W@qX{u>`WEP+rXpJWj+?$10L>Gox5TjMNz)%TcT9$v_?v+kZdyh=_XyLL2oQ}l z_3wpDQKotUK%z}^C=?xIs(AyDu_op(Xik~BnShKlJq-lNY13^AET1#2qbT`#lXo@P z$D5++K_$WTQaj{LG|f>!iX>BiCD4;i)928KD8(eF?2A;BBOMOXOsQ0plx}*35{5EN zoK=|1G_8IPL@$_H@*w_26XOczE}4R9C!1wjMR#iFnijeMGSBojt;_kQ7WySzHhm?6 zxvrRAa|FUw)9cHiM1e_Jin&75_MgaEf6es64}iID`ksyoMW#Q=>s@S0qPmn4Q#w_t zl$utqf}&-n^h*$}-1IG#1>7(>l4UDQag^;*X$qrE!75W1E@!u^Hf{U{y409nrW4Xl z(@Ju>)SAAgf~-1I(OaN-%an1Q{=vH5^iv=V)nGEXg4%7%2_kqk^ z(*eqaZZa*}j^>`}U=G+fn_AdFXfe&IL$B2oPkGyICM)f=+fA});B}bV=R)oKCMgwL zcbb^pP^rtr5(1&yB&1`W?SW~_L6CW93J5{dV@mlLWO_}DDSGqB^zC6V>@$6T3yA%u z2C4-fFr6pg=b&i~`J5h`9Qn|2$h2q*h(0l8ko#cRw7eS(M@)JDKX1>?}NO$wzLOco&^D>0O>^#l&R`k5gu@s2&Hv7^3-^aYz z38Eb_d-{RBuh}Ng1sOkc230Nlng%w2 zr1=uL_M*%>n;r0@&7Zk|MT~hHW%|aN%MU`CQ)VX_9z~p)LuC-B%~O8|;u&*W5v+IC z++B#lb7n_M(>iaqkZAGdPm{qg!8}3nSZVDZSj zAsS7ed1Nd2_M5GgaXVlh@dCp^^T%coeQY)vL1xGtNC{m}%<^qed(`Yt8?iAnXDNgk zH_y8RzE92T6VRJ5mmCAbN%Jrj^VwU9$dlt>d7Z)wj+U4~n8e9usSk(R&K5s9^B%N# zQ!<5%|-s5%r)RPoT0#%Zw zTJF=WH5rzjug|{ZCTL?&>YLvb3n|uJhKOrmo05{qwE#S zMq0$mEgA2C?+wcYrEXSOqA9pjX?c}WdaEpf_CTn%yznPLYAlnK&2!T-oytIJEgw)? zTAk&8D=>J=^8O|a)>~qB!%hvB2__XS+_oei$K)N0)(4Y~mcAG9DDGM|(<|O&nffn? z-m^@l^KP@{R}1uQvHU=30Iim}pM!Rr#c@4A+AVkJ2hm~qk=$taE#cRSY^4fuZ6c1q#$x5mta6am)f=@yEk)`N6OR-kqEQ{Wx5)>0B~ zh*eEqkWlN|Pa)cI>nncd%6YbhdmvJjwSz>8wr|emWh^8EXobDZ8`Q za1DA1)&VA(MC;TxuuHNUC_t5FDGV6K+mxD>(IMob&LV&EUQqB!E9^T=NQbf zHc-4X*IGoNmm z>b8b^QNH*C>t{dV@jSFDV=>ud{pBo(_F7jdAn+sWJ&FnSS%0~O!G5bpEP4ah>Esm{ zv>qViKmI>Q*B#eo)x{lI&NN$=nWd#=+uz=MZ#1>#D9cwZZI@d9KyWaWDaeqe0)n6n zML^l03}r8w0xCm95gCH=eoud$&%O8TXWe_wx%XMQ?>C4aTDhCf=owylAPE9TRz@*_ zIl8iojCj2Aauo=kuAD?gWfLpspG3=%!Oo(SKb#ovtcEuG7-wjX=FIr$H?VPG4Em#U zKf_EbrUMLjx~tq6zcqoWJENMm(0ed?X%gzi@Q{Jdn_-|Yxer6`2^4=u``6GSfKfOT z*X|f&qyQQQGVa|2vml1!7eEPSNyk=G*0r|0P3GHRGEC=v%{Byb*M@jH`YyqK@(03qYx7G*ekv z1EYuXUAGzI3bgJpc2em`7b9Fv3FB_Y|L8cq9!Akr;Pf)0Dc*FKA)vKOAH$gz9rqX} zD$40+T%-E)`;6Bm;QfGc`zGiH81b(I9e5V0r zgfZt^7&yv!`B!jx%((U{{Rv@=v6Cpq8P*S=%oE0QzQB3Ph%14i6O11faK0mRIi*aU zn3c;xxR06o6_jyies>1eyD+DJ3q|)cZM38M0CSj%9uG3R>p^~qDfkQ~xiU-cfu|cY zgT~yM+l5fggZb8{s2MA%ooR1tfqYM*i`Xaz8DQh4GRvzOxify}w|4h>>P(YG#`S+)y~3SkCQdBJh!2HJ5R z%9N?#j4yiYO*>05bPz}sA9?~yiv`Jq0@S5m_2);Of7Tb4S+hP-!Wj;GtbdMGY!n&S>T;9&SLaC+> z=K1Gw4LX_Yz0tbG+~5Ve+su2f0o-Atq6rTfQ%+IuZl>!tfF9;lTEg@)mr`8tF7x@% zpoP7U8AF-Sd(1u&2K$*-3QOK+{zx;02TXYrzyPx`7)&2BYdElCkoosraC^jjm7;w^ z%x|_r`(b9EBeWP{#=Hu(N0~DyI{BE%rPRb2b2eT3appRjuRme(zeDROvvMl#gb6$I zehUOTvVQv=gifrh2I#hrHHVH#b!G+8%gBXwiAt09v({2_>HzEP3UnT1U8I9o4zWs} z1shkEg+2*xtguATxwCjQZTDaa7ecketPPYn_F{40f*^0!2|AL-hxI;9LVQ_v{hOfo zV^z?E;VA3fUm(e!Rr?9p1hBTzJm(lId^2TJi<67JK5p2w@FYfbKZ! z14_b&vW`*laTsg+QH+JNo}+Y21j|4rfsw2)rb6HeR`+~xImyC0dD65~tc`X`l|->R zY3+2Hwe$oOj%EEa4TN#5sgxEt!+Q4wP~%x|M??JtRu%<{&$9YuQ1l$@he}{3vi4+v zE{Qdp7J$jD!7nkE!upoJ>gQR*+hN27)~9rPq_Wn~r0XK9k>c`cthSZ(4o+uHS_Pa8 z)e>tob68tkpl>eg^g^)7V{H?lmCyQ+ zCV~a5DU`=5WU=X0c7+u{Y2>S{qEWPpSktM-yqNVi6~C0Q-n&e7yQQorPayspD~thq zue0uMLaU60gdrX^)*rN+q=J>11&T`6+<)MUD%K@u7*oyKu?O60SUwMdSY`0jZLH!} z(BEXeL1EZ-Rw*skI#~VmtaP$IqXfh)R_YR%eVdi&0GHfhdA$tPx>!+^M($>#gOoT^?+hZ_5s#Wn&3TTc_@K1$Qn5T6(6y- zJHwYlti@Bndzi&gL75TOIy%64lr=>4IgeSZ+5yH`%mIvzvqTgqe!`kogw|7*@^y%q zU}gOSE{^Qm@4yHr_Pi+|*vEFx0j4uMjY?8n?Ccw~DBjOLPDzFXY&+$G4zl-Ap!yK| z&}Y#EmVaw7WYyA`U1X?3IZaJIv0cvfU$W_fO$NPxcCm%X_h}^FZLu<_vxPjjq;CyY@g4dQxH3Q7jS~v zfwV*oVb70(XO6S`roro>Z1aooS{PgPF+e!`XPRL}urC*aJd&N73UGqmNyq-4Wb6I} zIK>X68BG-XA9}Awv+WdKh+&_%|2NxW?-s#|Sa!}{_$!Wmgmwg-VJA@yaXfqA11Oxp zuFeI;S$1;}Fwe24x1yEE&a{9aiTymK6_VNe=t)gsr_kFYl`VS;l#A?*^zKY!pQP%9 zboTS%a7hMRN!ia!?2v!#XkKPt5<=lj_GxzzX0h|XhKOwTRxP;Yus%x?Q0TuRtQ?r4>=L(O1) zjqMT!y6f!i@w5yrW5+#&q2=uL_ra!u9Z5ynmF#c|6IQYL&S+J$gX#9FVe@H2LoNFq zN;lQ9+b+VidiGDv7;9il958l+J(>e%jqJ3SahaOf-%f?3X7<81ptP|6Yy@2^JA5v9 zwy~F8q3_>K_DfVK*3RCX4!t|rXE{)~lU=e5gtyo?XySXDUH%z8YV0&pzl;5I6^!X- zkJBWehkcIz_|(h3cL=S!Y{h#GOs8)gs;u)lBz ziv1yb^GXODWPkeujCsU%+5?;+w!H}AhuL+%gXsu+fg?~x*~N4==wtS-4}mhqp1v2Y zr|b_I7@J_f5evDFoMOttJ8_(LK<++HGtD}jIr}#N(}lBa9CZ6Rf4k!DI=~s911B7` zb7})Xc!(1~DKuBku1>VvIRCIf;m-MzR>2+|#|ePLoCGQ>I>LGK9CY&JBvXpSi!-ST zo!*>q+AZM2iA;ureK~K;f(Sp(FFJsuobe}M?a$dn3+(_-#CGU(jPo94eF8c5PtHR9 zAWpq6v#5lNiQw0cVBoTW25QaDa@?ap(`=#0+` zoasdnn98|P0J@8u-L4Rk#&M#O!E{d23lN{d8KIxNUgBiZWcV`Ykc4JZnVgQtK+WQ0 zF9dxy$B|C%$lNtf5Xx~^p=gphIY2ZwwFvShd zOcih%IlE5*r-@^yQ#P78{MoRgm6I!iXWKZFDY<`>Bl`>j+c}|&fzrXL_Xn3w&SEEk zTO3IuI&X7s?*qym&Qm`y>*6e?#YQ)WGY5itI2ue-SkrnrHkwl0<-A6T+CI*Fic;R^ zbhZQM0mt(b$Q|HZ6aYNrG|}FnK~9?QFC8y^U77{N5sv#S=o{tS`4K8T<}ft4SYw=O ziVTc%B5BR@grmHQv8S92D&m^ptSf_G9l0_x+KGFdG8Ox{%in@#&fNNwpmX7-`rhnV zXy3CLeePUm+9m42O{3z+!`#6g5O9QR-3#HKTp?uvytwbsl+v54{SKb@;r>Ox`S9i1 zS}^9vz4s3sag^Il0Stex^L(@dxW6ZX=P_>KKcEZbnl{7oAg)&iu5B=P#kbHQgd1Xi z3F41)3;vthal1@F4dWi5O1*IId$eO9g1evoj}Xa?p(x@B?hcx?p5%s64E7Xvau&#= zxIfMTK{U6X7Rxc*I6Fj~=B}Y)@>uTi_dpQG%{c@`&v1+8fi9kFrS)(Ex4>ct)3e;n zLEt2DH*JBv$=naP04dxGHsqe?e!2>+3ta6xP&k#lU=W>YTqf;JNaqI7`!|D|`Z4Ui z#7(1j-DU3SA0RiATlp*Quq^KT6oAg=CdGjuhif_jlw9t|0pOCy{dqQh8uGavUqPD! z?oZR9MIrYAmGWHSHdA@nRqjGsHWhIVRM=C@{hXpeC0srQxJtRDw6o$G*G|cc>)cS< zJyFIjrw>dy_dq{fQo;Sz4XsLU8ST2N;;y6!a5cAUE>x@GRyfjuceUL7#b8s%{p$m` zyPj*L*iHjCHxYz4xXugEYUGa7%D;)b^uIINxi(thwQx@dz}>Cf7iiMk#y!6l;3oGQ z3naC3FYbW5JGj5nj|MuqkF03j;{LJ&ir(ffnFn+4a9Qu8)856MI|8M;xmPcv_bzuQ zy*v82HB|3=kDD0^ihk~zH^AmTcSaIKJm7xu0x$=-owUMw$bGv8D1+QJ{{lSXmdwG} z5Vvd-yf)0;u^ozzaJ4kw8s%=F8}Tvs-#Ne>=X%fyLQm}6?RU_8%5_@|?@e$`%Ru4C zd-4@Jop_7rrM{0hm*z3fyd5rJ>cVTGT6_=Q>PL`tnCI33Hb;1l89?#mb~rl%MT;;ml=n}T_Enk!&y`O8@8zwhWyoFLmzyBB zk9T`EZh?Eey$8U%pSP?XboY7A^k#a%8>iFE2YB80!Q~;_m!6|BK4; z`Lxsa2;XfL4D__~y=bxQ#czEd>U;BFqVolO_(jto!jHc!6}*q~#qR*cpFi;cgaQ1; z`4~IKccyq{AfGLU7D0R~C7^=&F~=Yfup#UlT zUi(o{oaeVu)b;{@UpmxJ<#Xr`Oy@gNyfcHpnCjy$@qLZJyv(1bfTEfF^ea#;i*KT; zs2u*!2LW>V8|jphJU+h?T=MyYRFzS{mr;$>75*3<<#CmNkBY#G_*vxbV*ap%p1%@) zRwa6`@#R!KbDf`40Kzi^euNd3{Olf#Rq=OGR=1j8?Tc0ozfS`V zYx(80TCBr%5Adw#D;N;iz+YK`&KrCaEesp^L1yr5;`>ufubH3HMk$IG{@bs^8LfQo z9dK*oA9jGGoBX{u!L*(K(QTl1@S~^{u9H7{5NvMoe_aLZZ}aoN0^J>c^=fo>@ef2n zU^idB2V*__rC&i(FF*We(B0){%mC{?{z?xRc#pq{u4_L(vW$Mtai70|3WXo?pD%`^ z2KjxITYJQ>{Q_DH@qeMU=P*C?Gqgtd4OE&k%8v_$z%jmvF2y*%%QT~P7yR@u*mwvIKLy2M!N0v|c?z_zW6VpiVjGxx3yw?$@DV&_qSII4 zO~qh-f>@fz9TkLD00amsXa##r(0Lb%1`1xk2MIxT!O#8BG+0o-6LLcYGlrqtalsBM zNedI)Cr5<~=DdJbgkaeZAdD1bQ?7iR^k8_?;Tz#jiP^iC9TqCuD>xIvZ5$%3y4HAS%Q zd!Swrj5PtI3QFkeIiM&I*eR@4C{WS%#Vdl8ArM{_)EOb7SYV7t zt3(hv8&;GG>{NMiO%NUlg6o1fIh;@?@M#1}xgf#^pi;2x7$j8*F1P?x3r8*Cbt5glrAvpRhP&x${$ZNL*c@(C(EqL)yxT{<6V;`K*Bfy?*JO_f3wZOb9 zI6MyWKEXIWaQ6for_RLl*DqL*3u7J#f?oywfM8@16n-cup!eLMU=}SU9|;ETqH{>F zosRGw7POQBb5!svm4rSPh-QKJnBa?-fif<*vIZzm1e>W``>Ej6hw$2jpe+h5N8wsA zP@IHLfndE)xaz<8r?YS&RX6PyHh%!091ynBd2t7YFQ-B7Az}RhI$echItX+V&ZUXA zyKuQHz+vH=bmqYk;b}+QkDkJHJ7B1n@L76ydJAvUCKexI38fExg|K5@Y_t zh7#x-ApCJHRI?uwwo|=zpm4)f$PE%U-GPe1LKY>{j|)@iD1uPo-ycAHn6Q!ptKq_q zH^D7J_#PEZo)qq11o5YY$iv{1AzWyIq0z$PWT3-@uLhe$;jTJ#CJDDt@;^nmngYn@g>TVE=7KPWzG|t$ zPw&797lp!20BJ(MKA@xvU1=+EhOlWLT9<^^RzUm9!mU(3nJIjR7W~=5kEcSl9HDA1 znB@xXmC@jqC;aXqbjugE#zCn9Vd!C4Unp#+wDeWsr1kJjk&ypino@X;MU;>kCJXR<-xDEyf2vL>MituI=I-n5)+6MptNxZM;cJV9r>Fu^x; zV4;0W42HUd&QvSgEzDJ-)gzoc3&!^fkI~!tuJCFLH}dB z&DaKn4z!8tq3{OHU+SP_ zIxhU3_JBPR=Fq0;r@}u|z*ad;dL^e7II7k#jvE^XV(QhFsL^L!L zD91%>J3tpIDm(^T!bI=92oNq}-v>&B=!O3l;-V#VCejI!)As-;MQp)ryhEZye}|$O zEs}o-`WR7m16*=i+sqOJugS`!++4SAIAv#HCw>65qx^R7)M2qRQ z+AJF9LhUw@m};1Biq6yB)h=4}HuUWf9Zv+aPLV&YC2!e9*QjLZw#XwMlDb5HQbM9z zwD@%l_K5Zu0`!XBrE?|kidtwhRiDT?5USl1{b>QXFEUfo?SW|Fiy$8meM}46hoS@1 z&>9qlIRNF6hz?4dHY5tCq}i~jh4#ygh-UtZ)~IOu7J4B*7Fm7yLksO;bZV2M*o%Dc zB(A48z&>#Xj+B_@B7R7fr~AeI?}Ge*_!-KF9~5tKLgyiI_-A0^A#R{b*~8)=XyS83 zeE2h{>nZkM2m&v$i~~$>v0DJfe8m5w0|!P@qc9W!u$Fcy@#g8w;mJD$k zZAiEz9-(;TWpVIQ+yR;5>Ml4oOFSbFJhR2#m#N+&SA0GY-15Y`>C}~c@m)&U7l@Zm zhl+*bHU6N#D&E?JR+0EFzQNOq#rN+6rBqx>7xJ38mx5&1#duIKxe=$*(x_a#g=QBO z;<+Ojs}wiT=Cx|^aY`rDh+U~Dy;l75DLSXOPW*csDC)(NsJ^5@?EfW{xgic;i&m4^ z-UAWM;#*X$*&=?1vihxJBRRNDylXp{-W2cr0o*#pX(wU*E%C&cXx$cnyb8+P5r0SF z$}aJbb!c^qGqW+)BaWiI<-Owc0Cd{#ilfRvcu)KxZ7k>)zd*UO`(mH>0Un44S}`^t zUP+P$#fc37kHiOmzymWRw(W(YBjPrSUXF?_^wN4P?xW<rXh}T@u>~&w5DCP=(iF$^U2?Bel5Xek5PEZO@Z)rYr87SpG? zRkDO${x>BFM?ujp`HmKM9g-jCp|ex6oFbREB+4ZKwt@(sqiBuh4fTel>d z-fcaSt#tBAujI$+;MpgsaY5^z zQpd^A+fBOQCcNh^O;v-!Ls~?o{)eTBcQJNEdNdSrJ*8KlrRPJsm|~+o(w%dmldp7} z1C;TTdeKYbsI;0UmHyJXx6m0NeQi1f9h3e+Q>j4dLaKxbvP+e{;1(>M-Gyd|)V>8w zL#5OH1Ywvojnd`e(m&}Gj|l0aB><7q1Ufy!5M?P$ofY|JM&VXQiGLgFYwyfD+`1(mNpl zNzw-T_#{i0E(Lvx^vu^lNtJ&0Hk@!#TGW zSEcqpAihZYgdXZ*=};L6N~EvQ8LFkyk;7nmO}aW01Z7g)Cm=7Est!P>3hC@*fJ*5$ znrT-_-=cbvYH3V7I%}j)=YnUgbnZfmKGjL1j)1;iIz+cggY*!U-Ze@iR6uQ#eoQBv zHA`(@L&FwnPb&yor5+C8)+Rlj0F;~3rO!jrcIhVi)^yZj0K;A1|mq>}hyVBn&&(kLztODvi=^J$LM!$6CDS-RZ2C4{uAie)4 zL<~q%Hh}4%G+zZR9!dYAjO~!LLk#VQrFo4Y7?D130vMHcPJuI?}*JwmAc4@0V$a_W_ym zA?OdvqQe0W$&O>@JIz(5YJwJSvV;&2c*w5CfZ(v~#1rs5B0Gd{%0Vf@CjKhB{bwZ#FPP zWLxBrbX+!)1QDS!OAM3=lYLL~rEu8@U9*^%PQ%(;0v-qdKgn>L({?JqHG6kTTPRNlM?B&<<;PoA+tOI!DZP3 z7nqqT^SuYmEZH`S-ek-0=O#QGvJG@-L9Xn5+Do1%3yg(g`LfF|f=hwyqjroH%4$5I z^cC3;Z_uG&#j>B6ZkFxNfDtXS zcnVRp%I4e$&o-Io`yg+Zx#dG%hwN9HM0Cm`?R2K!Em>g$aBj;=odNF1cFe?!mW2|4M`2v{tW#3Tr^MNd>3)Tw_juOJ_mjr7@}{)jB^2oxTZ9l3$taoOi<0iMY2P^H9E z*-R^VPsm=NUG|Rha4Ma5l7~srxlhifyt=czfDUYOk-tv)k^ORqoe*(Q9z(mF4#}M< z=jtkdryG{J$!qR`i@SXO$7p%TABEF#9f#%Jv<>=*{MK&}=qaDCMaxU>Nr?t;`Ag-X z@Rcw46iof(vl?L2QTh5ZwEX4YNMKrk+*^i0tCtxQfLt*|EL6X!SZA(MhcPV z-GIKw<+o^yN|^k@Z|Dq{FY%-eSP}BT9q5gexBd#HPRL&wfb&nvUA}{eQ}QXB(HSMz zKZY^U@=OO96C)p_z2K+i-QEE4@?YlwB*<6NPR+CO+phvMNiJxIz-0M1w7(}s-a=Q~xEW<;_&8mo5MPD~QOE z&!z=cp8T0_V0ONI8BNU#a$^A8TyB?Npw)hbeA7$NtxA593s5cBy#SqRX3g!i=|Ha zi?oB}mfVLD&s}o+JUT3>TRx$LQay5SB<`m5%5PGg$6fhye<*xUeuF|-{qplFbl#Uc zu0iJm`N$IJG$8kB1h+x?X`048l6PysbVz=kPWK;{7i|RV5&41#Q0=k&6G}>t$^GeI zoN>9&D9E46=h>-7c0$gke3GMLIvup&r0Ayo68jXJJ_K-4*bW2iS1hA>?g53U7$}Dn z^I~9{tHSUTbaGP|=D;*}#g!KUJQS5;c>RcC#uV`MRNOuX@m>mdiW&GQs%W#IufjnA zbNv*;;Ag?@sN%hV$;s&_iCh@+6j1;tqn zBwbW&$b-IVieXwLq$@hNf;>Y}V1uET6kFDV%VhZ z;8vzMmjY0(s2u{g3dO?xXjLlusTi;#e%*)e0UZT^bZF zLfVXdL-8f;@@-TcrQ5nmv6E&QEsC!$qq9{pw+G_e6v`@_)R$Bwn80;)*ZzvZwTyC{NfBQ-HMs?OO_r*=WUSpD(?IXulFf7(z4*5A{Em{ z`?P+=%3<{0S1=3!4-`pM@;0D&<2<}KsOVY^g&!$;8$ds#SouDb8CEFQVQfS(PJewE zRj_j)eoUeM9bjA$JQW%~Q9NvcGEWtYsBUCJ(N4vSj>-lqWN=o_qkGg zC|{(nOPKPcHH* zBF-ph9fiH|$~8tPr29+;#$jQj~V}vrzGZGCBw1 zQl<`~Pi_1!nelRUiYH8M7sANyY*cIg} zIwtF?Qb<>;NZCNOG{wrDn*mCcD`+BAs=Px5+}D%=`H*m3$+J^dt4vukfo8e#HqAmS zl$-uWXQh&}2dGub|5-s_tsH#@7S<>uJOOHz-BbZlr(8+(hV{zn%R$$m%<~1o4W$R| z*=kgF{Ryu%Dc6LcvswAq`)IW&Kc?rtRhj4rx;CZlD+*KJR34`t3GK?_D)8=5_EEsJ zQ_1@P*56Wg9e`=Km4Vq{b4S@PgrB;UKgl4lTUj|7bUjKR3iI_UgO;LoSNYKpxb!JM z`v>Irl(IK4*020J23+ndKkERO2g+z#ISeS@RnFRo>57sihr)x(`BXOZNZG6gn<3?* zmmy+U8Ic9+N0jSxq3Edc3ktA3R<1}z=a}+28x$Q^ZV`g%6J<9&#ZQ$J6ttdDI#J!b zqiTJ?_F0n`+7}!{Yro2s5{m~^brga-sM<=QsY5D(H|Shdm%adNH`SEq!P8yEy$ax= zD!K{G!>X@5A^nJI(Yt7Qs;>QlmY3?z831pUoeE=oRNVVe!dLZLA5i>MG5gUOpmM1O z>tiZ!dl`5Ks=iqZJA+g)RJ<0f+C#^Ig{THxF?L+#-3Izlm2@Y@!c@B{X&J7XM^n8B zmG=-NMXE}t;-Z~U`D_8fN!4W9&3sC=VGUYQsFlLEa7s%!MpJF5!b2EEUz-cvwsqUvBdI+Ik9)gVY#9Xo|9 zk)leW56F3y|3k>VpsI8MN~)^!IS^b_MN>p3O?8rf8J(_*+X@L8s@F!r^O9<88U5}2 zvZ^^AT4btR=uXH|jnnyK*(w|5rgK!&FF=`G)jOW(%u}tW_j$f*%Tiz#sIKkDSfT1- zEjq8Lj!~5Aswyc9ts>RphtR25HTpN?mZ&)NvMp8Zr3KzKRoNeK!gbZUVmk7oOtm5# zDweCv^q#6v324PrsVX1~t5mgbfoZjB>NMC?qvCXfX|3w7eB2&&Do-kQu2-38J5qz{ zfEG+|sJbbi)TqjP7bs1tdfJfFtQvR=+PA1)T?wA8s>?p;Y*UTQfNJ)essOsn+Ev$S zpG=49HF{ZhsvLg=xTSL60K(gYpwp--F%7N9s#_FG8B;aT-kWiiTRAYFsLDPD%2U-xGRU1!i4Oocs(Zf! zGbgp1Hw@jUmQeiDSuMN;Iu~`~Tev;;t5;CP;Q@8|N3i9f+CKYZpdM03klC*4uO*-JqFZBTFN`vqa$3x z)ZDq?9j-nc3GYRyS2uw^QhkSl$S2fOqCt03T|g<0Q|b?j;mauXGFm-GtIvD{@)-4J zzUVxyX40A=R=spR=;GC}egFyTb-~c-torX1T5+9I_b9+EQN53T$&jQL@X<c9eYrmA!4=$MOY%;fQKsqa&+DqXEeK`TRzOeh{MwVjTDxUAm6 zh1WCH<5@t-Qg>2FC0o6eHgn{t*ZxEym0WcK71-ygSI>mpe09OI7%WilrHNFbdYH;0 zuBazbzVNF0)iXdTQn$?m(_*!LJ$zZBUPsrUR6UQX)~=~vv!V04de?ifuuQ%FG?U`Wu>~DR>W26+c;mrKCN1%VyZ~Px5)vNzUFQ^7} z#8Qa3p?(__(;C&kdO@cqbs24uYF5|NcdteL3Ed^F>R0w-tW7O00l`hR1663Xt5vjh zr$fEd4O(=nYi2^jTj~zVLE3Mt9dE+4JL;2ETG^#OMwP7H>Pp(+(xXnAgU()cl{--H zs=uR^UZ46bElcjHw`~Vqzj|IjI`6B~sb=AUdQ&ST4X77S!`MT0`axh0s+*gj(<8N8 zJjRC9UAuufte#f^o+EbkkMuN;s>^9g{a8JdKBi;pRT=Q!xLWfk=qJ>t=w;xj30Q_s zC(WTmMx zx(qzsHCH|c7Y~j7f*Q@knq&82#SzV+VYECoS+gO@OB0X;Zr+-7TEzNjZt20)SMw#E zAK<5{+y~5~8Yfzh_-m>}kQAUf8VS>mY4&~%5U9~?g1dt>byW2dtl8xVdqXr%6%ce> zvw+T_3Dv~ei{O(mP3T>)3D^7-kHH8{`619pYIZ$@7AG{>i!gRl^S2wW+9?f_ep4Q$ z*>)K^MQhHHpJOzZ6mUDOnL{VB#A^6!pmv<*;3a5yMq{Z1O1x&xHxQJdnfYJ+l4cRj z6q7VD8|{F}ngptDO3|D)fz5f1J5@1X&^)1cN~-3dGf*ySIP}3y)2#d&%A{+aUjr>N zG;Nd}yQEno1>I%MjRnv?QzOZO*;$%9&!96~vz}5&Ihy;lw9D0$QY1D{<4VEpe2w*c zD(ETDJo^nq6l%1Tk-DOJkO!Qrnld_qzDQ%D$x^Y#{c~toqDg-Mlv2&$9hi1a)a8|O-de&YQ|cj;bV>13@&4K%@-70AJ^ni zmidY1qpP5JsyS2)@e`VtS3?;`?I?xioVC(FAl^m0p$(n;wTq8I{R7$)3Gl^1?YS<9 zKcsz`V(YG2$u*3*X&=%9@2*uj0eEPaQ6lEB_7e(%9??eW0X((#xG*T?rS%SnTyJf= z1zPxM*HFEtua>b16n@%EbPF8Srqhuo{#rTRvH@Bnm0ldvvM7KUsQp9=or1J4F9ZnI z{z&Vn5bemf5OG}FM01}|?HoEyDopzY?STl_zCtgr2(8TShQUbfxs4EbLaW#aV@_(f zEQ7#P+80Q*C~c1~K(zK22beM1AAW;Qr?unX!KPU46x#Y4r+uB)eP^_`5NIE-O{X1N z3EErq>OZUfmOjSkv^=^?618DTV3wr)hb95%wI8pcl)?pV`6@6?)keRB)5rh{W$m}L6wcH>p&GUpX2NtpxJ5u2d>gpzWq(dkeMC(=_yoc1kEce^<4|bgo2^_WUnUxLBLN5}-s|nGC&4 zwQ35yU(;@T&SDXxRKzB(GoP)Y`R8wAniq zwcmrl5Z!I6JUOnbr8jw~Zh9t63)B5hM|_0q5);sh(4EQ!h}6xd$Kix7s~!X=b-A>h zI;G2-1=XT-lk5|)DO$IR0(mjIR*HMZ>ZZPdR-DdX0B&b=Gh@+;*TqpdF+tb(9t57% z@xy_6PN$&sW}+ zIXlDpdfhLTVA`MyrE-)Tx~OV!Y1BE>pM0BiZaE-m*6pDESS`A`dyvht&yJbh`9bM6B=+vdF6M|c}&Mh9Q z_2>q_gBHEIc`MMmtIK=~pijq^0o>Dh(2Ag6*VO@6-q&qyfoczQ_bG*FAJF;CK=Yxl zhUR61x>Ia`N4mYVA7x0_z=8N--Q}$?dqg)xE0Iy%rxam*taIXnZcKNVas%VK;qPI@ z6J5qGj6Kz9M$nqjEuuA#qdp@UT%7cr523|A{d)SQI_tCSaF>fr|I8rt-mjlzh1m!6 zB@|pdsAv3!)**fQIsjMwGxgBPO+P>@5qJHY{vhzspQ8ZnVSReQsW&DsvG2VFroQ?t zs#WyU4^egOQT-yC(fjL%B5+*;^fNDj;F$i0Z=p<}{^fS1V*xCT z(ZBsBj5w`#p+eDE{ZCZW7N@_H18_$F>t|pSuir@ZlL`7A^FeS{&mM>N=k#+8;FhSL zvlbU7Nk5*3v1Gmc8Q7Admre%xdHoJrkYCX6$i`Tzem6~!FX~OdO^2j3efz{S0oN8y ze$8&D*-NH=8)XHv^pZ1Ro2~zq1(kF3vJS|~)dy;!N1ooDf)4rmD#}R~=#T&RAnB)0 zfc%R79|{d$)jvlets?!*eUMzNub>;FL_dkX8KwH*4G?@yA4@5>>-sOA!Z&4lpRKg7 ztX!Xe7`!X=`Y&N>rM`j*Evob*RC!#jf324uB>gY6&#_kjDa{S)^u4rbs@LZ(L}!CO zhiZOr==aj9vQhtl&bMyT+h|u@vwrC#XxO4R23&u0@~8G+qA+$_AN>rJxufr+-C!n#xqDTMnCaBb_Pk9Ilcl8rl!0gle{eZE4{UO?La9_V^KEyuI2XO!f^k34{ z?VLK99&!t;dh{#o8i2f<}mJtHA)P67_?tN?qS14ihmw4XegBJ zY50y-U|xpp^eXl?EE+<~$G{JR6MPNt(8Au&prn%JqlR7*;cwVLi=_a=2nAY?8D97c ztw6))WM_~;wF?>s8}6+Fvk*hpU$iOixM9t6P%+dHM^TwD!%xp+Fx>ESGFlOa#m_*Q z6NXn-g7Bolo1TDEhE`W}Mj6Jx1WL3a<0Qsn3^DX>IBj^7s_J76*Ka|5oMGP(2+kOK zDN`PAXiNg@1j9#@q3Bt|M@Zo=pLWjhPz&*ih7tOnBpKeLa+_qs%a1^qV(6ix8qXVS z0dK#JwANxF-$2Jto!WE+-6 zqLpLFq%zxFgCD(~^9*g-XyqF|I05MehS4#ALc<{;z!k%@bS1AEoTkBfMTR-i(7xDk z$9@&|mKb8c$F(mtw7dpz%@Df{6xR*Wl>RF-6gNUrxgoj=+E*Ad=rdSp7@7`lRffgi z0aP1&eLzrSxIjOss5Ru#vGjF@_o-x}-e946q6WhsRDyHEFeM$J*>I*9inbVrIs+I> zCckcPpqOxn;V@<8It@QW0NgVCngkVZ8~$2=)*Zuo3R`sNCvsMdv-kd$h;C->~RIfcu8FX#fulDjk>&80PB0?4hCk4S+#I$y_Rs zd1Sbr3oV8WHSqzBOD4Z<&!L@q;|4bdYOb6!Yl)}3vAqYHdKgpx2i*=E zmtO@qV&r@aE}q6M_GmyaqsuF}K;FjJ?&HSrF+Tqh=zWcsG#K+UHc&3-sBsZ_&)?X* z5uE`>hYE;4X1vmkD-&o;SPSt%MiV_p!NwX&V22pZ{{zZ#V|@+8hZ^s$hH7EPMU=-5 zH@-t_hzR4FGCP`)M&C%#pD-Q{2E|DuV<{+385vY>5M>;tWo)$Z%x<8>7(f3nly2L}!qXcSRIEy?IP0M8^F zXGhG!W1M1KO0l%_#wBv7f5BLB6Pl(PKc)Jb6INiy998}XuJTd>&BajkX2?3rPyh?vF0D#3l+v1Du$~xj!|^C%6Nq4 zV%5fNb1+t8ETorOtud?|V|7MzArz=L78JsL4aU#2fpWu`>;RsP#;fG-CgYuXAa6FN z+TVuU79)e)-)fXm2C>aJTn8;~8pSoBXg3apgIkC32%TipY5ecBrdvk&ML6uXk$(le z?-&=(1zneMm`)vdV0<8i+5^S~uJjBT`v!nHXnf5E@W}Z7tLPjuW>7w4*!cBRn&6EX zXL>=YQKPd8+#VYh9jdLzwY{Ize62=@&Td8!*$z&+P z*gn&{|A4o%X*Lz-xR^d2gfjb0jShDe0uc!O#xRSKEQN{!eGZteX-~aH2F|5QIJVS+vks)9^e_bPYX5ux*ukTnI?4t zC){NB2h#}C0!kf5nue+Bc_JHD=Y2(LG?YimBjR0k)X)l7j+;p1`^Q$ne%>Y5ADVgFq zRi@QD(W*AtpFp)5Q|kp_)|$Gff_0r~w+Y^^H`%|SXxI(YVw%`Bnm(-uYLh9PVr#7? zULeNWOyLjVpqr+ZKS7Ij)3sz^c9@={_;aVJvKZiwsYwCeU8enn(rp@^KyHFf^M%tQ#}=UJTmR2==+dq z6V*x&o9f1aGGh9f@?@i?_Bga2n;fZrXUrrK0(0Et-wzQ_Okehb%TrUwV^}z0>Z2&9 zqdAwpyiR6C2bk?MkGNyZ+5GzzT2#20r~H?cHRm{h+X3^R!vF`(S+t$@kolW`LFj7M z(Y@|wPM{~%-TVXPK|Rdnw9n?Sd03Cu5wjy@uRP6-SHaWEJkJS!@-}z!aqWG~(@#J{ zU-MN8d;6LFDOh^cTpLLHF^-wnQ7|viJc9zrL1y2#VOp?xcnd&?*>e_nA2@y9IYWe^`|NusP`kmY+f7!z#qrmtX#rHKMv$1VRGf)=5cz)^rOi}G`H zhFeB6AwI$qwj2bJ7LRR^aKe&M3oa)u{jHR&J7uxI4o#yhHFP^hTk^=57)$6Gv`$+r zA~-nKa_bdP#998J;N2O^CAuHtEnjYg_ykMWJb<&7YWj#KStcf+{RN9G8FZo?ndBST6 z)^l%vdr&#CggG`ekAH$PrPhBD zQnpXKW;I$N;<|Mk&FsspujT`%+!`~6&I;={*P%tF^%)mfSY`d}A81%@?PNn>jrCzD zc-LANPXa-mwLcy9Hd_5?b<|`nEyY-~^+hVnYOxB`0Ik;5w7P1uwo%nZr}f5%K(XJl z=I#Z&ZFQyPdXM$3Ajs{tW>N_8uJzCyXxeA}#uF&_tlhNS@3%(#LW_siO&ftZXw9VS z`^b8p=BcCBd23+yV`~B3I%C!#noN#cmz$vP6Kfr9<$r1w(3^0=+C&R;N4xD3Mctij z!+bRN*(TAw?ri&H4_Yp^c?W@d*jB}Z-bZX6UxD7!_SGj4=w-_~1w*}Uf70{gV=Em2 z@U=y-p_8A@fj*E&Z5L;uxU@XJtM|FCa zY~NGO@MT-K20SxuH-%6;%a%temTa4330UXY%2br*%C#l*qM2uNnt{Q5+Xu88sKB=V z1rQe6-hT$%uGqYvgE3cav+2cHWP4^g#24E}CZV&$#@qx+*KMpSkeAtb0c|TMFErno z0WP(+o$ioZXS>9jxx?(7%X^YMdNmenRg)hZaiPxHyFO0_=Batnggnq68I<3VGGUBf*fMs$F&Z2P;S6jh=bS&&5k=n+vVUE>ad6&?J$QzDhm#G zcuWbj2#4tuS&nr0>^#5;2Tz(MoOGB}0yd`{_Ryh1Q4X8mKr7lo`VzE{aj?)caoVBk z05D@6SX3>W;IPvfTAXv(NayV(I@J9G%RwFqf@}xD9$@A<6t%l6oHBHL-^O=Qt!}_3UI^W z_+IGL=#Z}k&nAb7|8sQRaamSh+>w^epOv{Xt+Y}zGuu;B)67x4d+)tpO0CovPy|t? zvP1-wU1hjT1 zFUnte;1uly6dg{l&?TD>oyI7?wbQAn2td1>mL7+uJ||%c*dIIX+y~fCoJMIT>vyVr z9a09I#Cy=^7;NHIPG0&XBEfi!?ICklEGFnS9i?I2^N2DLzjmM)zMV(g!RBA9Wk0MbGjoNQ*{upCAt$d;xx8q@M4C846NMad| z-ec&DV{CW(#+W&k_5$>!T$q|J&fk_P|?eHg+gbK8K>gW_k>}74=DN> zX*$RrVEod9#zDrx9S}Xl`0{z6A7;!UKkZY-*R*sPVeH;O=OITK&nPPXjIoB&e8(75 zKLCvjb4wT)U75en0d6;@=N1Uv#T+G1&~B#vGAP}dSG`f&!_3HqUJs`K>!^7$M-1rO z%bd0e>b;naS`_=3Cw9XKZ)U=Oc{9xA??a|9Q%@-r4nJm=5{&-Lar8$@0nFOD;5fi+ zr~4-kGS^b>MIduYD1PQ3=1L>_f|;9Wp&7#bJqdb4ne!AV4l%!^tl2PTC`FzRGwax3 z2xs2x0{anW-18XN2IdU7rpGKifziyeAq-6{^8*h6 zj$=+Pgfa2V4m%i6GOgqcJjHbS5yfeyoE-6InD=S*n!ub(--ATvDKlzGOm~Wyon>|# zVQ4b5`64u=Fum>QOJ%;*2+DKJu?RG#F&z`>#Z71awg99V%>0*N;dy2NWyoD%zVjSt zE;0{OVnil$((|w>i;0anUKQr*@4%PMeEkp}fy>Nkt>DXHdOd`_xy+>$R=&cFcm|ny z%=L6YBcHj85{V0#@-`G#naQ-vy~bSa_!a!unP)!+O(AoH&S>9YdgPV-JVM8`ikT^IqVYEK5$&r>nD13WZzTj$neS3qx`LVU6e=p2huWdA zis`%oQmUDAJ5baxU9SLIE%R#~<%ZTVhv$N$o*DchibiGwWsl!w##4~&9y9hZtiR7J zOh>JW=|Y$7G&5UiVr*e1(8Jcs{EDtZYh%h+q45DTl~%+Z%-4JH`#xlTsRzj;rtDWV z_AuA~4I_G)9^-+ck2$@MoVAacxrf2{ggN0m!0%`NbP$~b%;#=`agaIbE7XRVf6y*r zn7M@(L{FLPuLJ%Fb9^(vj4~g1pzj&8n`X8#<|Imub74JCyK7gL;|&yUEGIdB&|NG; z6Bu^0p4Fkzoz*&-l85%NhA-gf@?gDx60M%BW%O9@Wie@9_F{d+fckx`kBWhNKWl0j z`n*~8dLRsm5f#wj4OD{ttT;-TiD3EA z9x0ObCL6{?u}0{Mg`=#$De!iTmGlyTMzf6c4{tH7FHV6nmNk=3X2h{R^8-UXYoZmx zj&$`crq5{?l%$Ad`vJ#i0c8ztW z7`9wzRna+%Le|}tXuQE%PS46smisEyidb75G+EzbO{0q?idj94C~mWgx50=KmbC+n zrL4Ihp|OlryatrztUNaq6|9+ou)319nck5qmJ=nTRkO;y@GI4@mh^zHmi5qpqK@@9 zeFf`TalHW3z+%(V{|;-)2Y}tkdW}obu)C})uYvy_>)fx9eV(D#HDKr>-K>$yI16%4SdKSt*u>u;LRhggRw{5H%o&?OaT?;!h6x}hYHol8FPAogU6sRy$McA_za{XmVz zQ1)-MXE?;ZMW>}4VeCi$pz|<$$4o#BXD1y1#}W47c@P@G-lPQ5NVZcth9ru;fYRlT zvd0Ah+A%iY849D>E|owL!+viG1}K)DPKQS zUNax&UST_aya5$?>;rO;7P7-j0r)1nh@ONZwm+p`-(sKt6beh&E32WRl>LA_I%Vv| z+kmi~{SK+GV9)v#QYzVM%DJy%PbOzbHG2W=PHNcs^ckvU`_Yipu@BPHrJg-Tk%R_z zgToX2ci3CshR{Yf{~=J^W%s`V#(V5@l&N{2{o)>wG_l7hxquw6YcS z!E0kX&O>%PyN>ccAFx-|gRg_l_#2H6+2wRoWG6e6LUCQ}1r?Ce&31f(#z*WI3LOyB z!!9K^Q7>CgtHM6^rqk$r%x1d7`X}s1OChbFo#hH>18o1BP&mlWUJltq><1r#a+uw> z9eSU#X9b~ggdLfKVwC+>1%y3gfA#%O#&t_j^H*F?&CNYV-WXq5>KGd zn^XQA^!jiNvr+Tq^w4U-kMr#@)ciTh1}F^RxRT@U04F{OC=PO(ZcG@rYEmGFL7(j) zP9%NCf;k(HLwyM6-x3s|oM~Hu`w%DW0Z76)MKmObIbDI!6v25i4bUPv+k%&_9zXl7 zlYgQX!#PAQj#y4RIWFQjCxfM{k&Mzu-n^5XtM>rr6zAK!u=6yhht8^<;Vjt#ObHwo z6EYJy-+T(nBu?;5G@j*r|1*Flb9i(~VhX2%HXx~-jzkpaIQJ;UIgR5-_f@8IHc@(B z1}FP0)Sl=3M0tc4I4rsy`y%Hv$4m&#7lJ*9p@X$JgUdo-&iyLJ;!S&p!YsULcy6P zj^t&4Y33}U!vrmy8BySC<*3N@+Q#{A6DZp`U1Z<`&c76U?%*)K#BcqO^ESnOIytjy zfWC`!f-bM@<~S&$>=DN=3sQPGL*z{B<#bV=bRTE*D^Nb>I2`1JNv zaP)NUZjdwi9!Q5c`V}aKIT_@)d&+s|9Z-&Nw!{PPDCbo=ocWBCN-5Q2oU2=b$%VW0 z2QavDzo5vj8~0reH0|OJP~zckF8eY1+_`V}0NNgIhC&WT53YX(7(KbO>AHx$TrYaa zytt>xO|*~uwim?g=f3CFf{se%PGw)fNP}lO$WKJ z%mzasw|Q0YrnPW{6*JL#h`S&bjA2~F8S1CP~7?z1le z?G!iXdGwv;&UMgDN@uvo>GVPZ_ixJDPUOnybCApppj?a;u4FD$q;mb&p_b0gBp*Qr z*YPSE&vS*oV86gUx)SIwa%0A0oHDt8sllGbt)y7)B`$voD6_euZ^3t&d*vz^a=1P8 z;O26_nDso2xxy{~BG|MJgON|?xUX@i2Y}@|SN%R}h1^&xgx}!K`W^yqa@YKbqKJD{ z0;6tm1r*aQ=0@g$j0N^sNR~3Ynb3aG`Uj=uB&R$h=e~koX z6?c@fKdZS@_$X?)(;eNAR?A)A0{nH{=8a&i=dRra#s==6w7|H-eZLq&8@XzCwJv|@ON>K(x$ANdv+&KJmS864^K@Gcicj7^m5;%`Kpf_-4DHw zx&8~l_k=t46BPDym2|v$fct$5`Ubff^gs@AZ!uuuFgKY31W&m_4^WP9k5k6dDE9)r zT+g`72)e{&j9XlZP8VL-APQIBKRy^|H{RrGFuL=aRzT<;-t(`a@Zc5EDSuDiPZsp; z0?9&2%rvex9%v?B2X?nu&dQgLFFDmzPN%B|qMq3()A#^Zyz}0B`Z9 zv@1Hmi=iWF~K~+H$WP~+d#+dLwPwgi5=nzDVZsZ=Tn8+ zVV+kqhAW)+YA_m)@chPMoFjNwX^9%i3t10nQM@$*^d05R^@sJxc)w86cr-5~27Hbf z9y1D^vAhZ!6vpwG6QL=d*GZf1fi#0Rosufg^Xh3ulF8e24Zq#XRrBkbRr?R~4)%;ms$fW;w6@dyrJ{KB7#CN?!H~j71giYVe8;_%u(Y zDWZ;7LaVEKo}Lb5HShvFz;K86!~leiycw&&cb7M38Tjt;MwWo#J}>rLP&V<7{{cnK zyp~k3xA44w24ySn(hOi}19pfb&%^p5UiAA=ILy1a3syhnEq?%#5#GQ&^o{bW zLV@WSPyYygW4sA3L5d6CpK^m-`OW0Jb>p}H4TQV+&p2S%!ym2#CJ+7|FEDuWeQ2K8 z%MYeowY~U%lDYf%)!zc|e*P1=kjC(Zv|5klkA4VEar|i%c8=%I zpALrO{Jm=+^aNi>`^A&|A@UEM;xo9Yo#vmLhFT(@MPK10{;xlxILmi;fq}{V{dA5q zg+I=OK}hAhiD-v-j^9U1uXKL-Ms#NIuLh&@JpUH0pf2#2y$tmi`M1j;JCpwd?PId} z3n}~ZGQZ&fD0BF)#$teS`Tx8K)2{G`$v2qCUo#ID=JTJN21x<`;te!j<1ZFL%5}a! z1*i-8uOleym~?~x_+<>~P5w_bdPV$s-iPGg0F#} zN4Ft3?(jc60**%hu3og>~)rGom)euke5v7r~4*5b7$pY)7M;;3*{l?H5dK@%qUi#+{@1(WGSVYpx!#bu5Nw$jQxLf}a|=}18hxjmx< zZ_s-AsKB-vQjQ5uP%tf8u!;1>2zu!BP^=(q2ngc@FAZP};{_+@qVKq1j$;CmemY z@SGNnse&)HpgboCdk>9if)?^wofl-$it&OVY!vJl1- z05MzeatazR3of)nc8Q+921kY9ivVD%6ihLru}bjADAZRAWaNjd5j_17gI_C% zZiJzA0zn1z)(h6qA+H9(mcM}hj=)z8ppAmt6fC_fXhKS}W70jr>N>RE7o7eMtu2D0 zL7-?A=H1(f)U*Ub21nn z3DSnq*dqv40&lP2vr;tn2|B+7-p7Lct0Fkw&OqTJ{PsS;xC*rt33U_RJORAB zggYtdxm$RcZb5MuF8T<3dxRn{jD?3#{tqZU9l~oycZw{R*&x_yLx|3yuNJ86mOCrl-0jK8peV!Z*v=w%RkK)C-46bFTJx??0z=uX?+ zAmKk0cn%i6Oc|>o!s~QoI#l>6C7T@*Ix+%bXqeDw1jk|F-CigR7cPGn97lvKJFJfo z{!BZlNMZ8>@J9(lCZjkiJn{|1921WD0cf-^av5qd!V`}{87q`*hOju{H~SzuUU-iF zjOw`XZQ72V623%!@C0F#2pSTFDGo{*PZD}kJov0IIRpxmh1MJlcZx8_2^^_H8Rg!b z6CO;2rZnNxb5M~ke22nW8A6r;)}I%S(lOEt!skz-@1pPmrMPAam4T3wC0s!naF>L9 z3T0#qZRF*;Ec6%;VL8IWxwOvC6&@jn@)hBu8i>ggJ|cH|zOa^d%>_aQ-9LF%nD8!8 zToZQCdiT08kY36{Vd=Xt^oB5S4K&>pPH;tIkudZ#2)iYmMY$x!!tNkwx-Bdgp;jUk zaZoE2{(Tps%Y>`8)Az4jSndVJ3So3Mq*V%?D7mOg==lr8R12Tc+gKxHH-n^BC_Mm8 zbwVx0KF+2Sgcb@;-4%XFx%l^l;dF-ZzVMS3P|+l`yog$}Fz_Q3EyBfbqOo0A zXoe9Fgs0&4cTDOK?)U_qUBUr65zsB1ITz9%360S(yGOWyGNF5g(Szvg6CP_vU%xQr z44@4NSN;ONL17`izC*(A($F|8yiT9?r^21H0CYrHNb}98FrJcEo(W&0`Fu?HKE0bR zqPSBq$>A#c!wMQVk=PqFyF^cBqII|EbBf}*i$0zMy?aDuEqE+FM3d+>_7v@=qpf>I zg_M!$CF0XNwokNh8ir)Q$ae=Cy+t3;1m`2VMu!c2MX%ig7(Y?g*C_l&pSgfCK$Iv1 z>;n!_2Yp5liiG504HPA-KocbDr^S1)Xv#+D4H0?KP9RkD9(^$ni8N;Lhlz^c1H)mF zjYc+H6ra7(ZDe@MvL+&%n>7UWM>askanYBQFMmSx6TJ>6MYqWHeM>2QKX9eWMDWay4VO?(nRAN?tqalN}=~Y zL$rc2O)iS!D9IvI)J~rFEYa$}Fcz0Y+unn;Y|+;z@WNge{X=2d9Faf|&9J47J;$cv_E@h&D|Hic--JbdzD3=))3-DHn~r4E74qgaVjd zDH74?*(%YvnXsi=^eS!kYec`j2{5&yOj`TYiOx>~d%b8lWFp?b2GN?oz<5WLK&KQM zMQi)Oe^=Cb6ngK8O0t0BzG&cWNNWK0|gmx}+w60ymp+apS4fV5X6It$W1 z(MDP%J{Dz7f@x1gCuwijFZzXMhyjsV4;6!=b0xquBx(ynZCK*B0O7@Nt zFL((GkBVQQbIHfVGbwBlE#66cfEaPvOcb$VVJnI_@s||jjTifQqjp>z!a;FDJWzmv zJt_933pGxOm(2s1)8di|pgbdX+};cr3F6tbzep6%8;8y$@gKC;IxBvIyoAZ($#>9~ zBEGa4MXLBH?JduVfAvIPn)rS!#H5Q4wc^*#5Wk;_zVqV20u&d-qqJ(cC}w7%?~-_? z571|eKcjEsW$~~Zgyo2X9f>G&#b<6{oUe#i($+Rle4m`S`Qli@R3JW2A^of3bO&nJ z#NN)RT^G+=3eyV35j-&55VyRIzMJALwB9Zf-&hMxx5Tf5p=4vQtUxny()2MH^fwn3l3r|YQ)Fs5J0{7eLW}} z#4E%o?ucKa^BecX1HVA%eX++|5ZWYO)(M7YacCWi7IDu6^tFluw}8D({0SZXX%`<( zLEi)MJY!1h}MVVa{7REim#WV)+N@GlfGL#e*!Q)65piLuRY>J^xrML;^VKP z)+b&+0@;tnn`j1qB3}0pD*DCSensPuxJ3xdhQ;T)A@iwt9!+;6;wU=1Gb+AG?)Yco zaj(($Z%q9CA&jMqBs~(KTqU1S!kC-nx!oAOU6S$FF$lXQ#>HrKm)!S3;~vS?EQs-t ztXKyzo|1{=x7jOM`7bniNnS0(;O&!OeS!B!GD5JuB^q)L`bZv)g3?zarp3FTL=yrM zhri@0ePRPZis}JL_(Fg=DDip;je!y!opTG4l#OAWgC!jlat@J*C_N!m^42I69+E8f zh4o<)A#Dr}OTH@wNw~ze9F0dLKhU%hArW;#N~FZbLlGr;k=AiXC963AddwmD^8y&7 zC3h&NB}P&o1Dj$cArf>RmxLxk(o3KXX$6ITP_8A%^~0TLvWe+6Hn!DhaO_oz)Wi zY!o$;7k`7adP(vr^fgFIDgfq=#P$wq_aw1&6XShJbvOp7Nm4okwN}YGI!4kaDYbyF zU6QN806&ySY4YlnyhyjibxBsrF!()^7rKG4SCUWOxju;-ld{kHC9!m2%77%o2hs*5 ze9BIID(R*_co~uO=c8{_GJ7Hl7irCB(Bvw;Is#2@(v>fQ-Ca6`HnDr8=MO-Whct(d zeR)aO?85->lYUFbIrd9O$D!sc4dj8(Px>8A;5Z}=xB+Ql(z;%#I3l%Hp%x+iAEnDgO0y^p(N8fXG19XX!Ht&| z(%I8Q>87uMH%aOqg1)oTZP^(0Wa$tawG?Sq^9y+Y&PkIBAtp`wJ-vVFQeg!cGo;_s zxuo;bJ)r=cDV@9>wJd4HbjZFWt=R{l+0t}pptvl3nI^_u>2s7Wb46Nm7_~fU#$PD% zrD;Fm*DjFW`wW!Vq?@|HeqFkje&s^xmA*#IW6zenS&vk@S~`D2k zihAjkb*ME+-=eSK9cdGNXd9(oCjjlPLn@~GHSS3}-az%f^t&;1Hc7`(6r)*Mb{3=F zBK4tQe5*9D1Jc^0_D@l?ON&n6XL=ybP(xvd^zhGM@05G7?!%Wg6668Sp(FM zO24Oh>Y22JLONs82ztm}WUssq6|OQq`32l$cPS>hOBPH&`fizmj#s$LKJ0^rJ+g8! z_&j9o^!4|YP237fFWH|CI-#>qc7~jG`(@vpM60(fU?ZgY$eccg3SU{tYSjE>7bw-l zUzSQ4R{^rwKY(3QWn+b08Nzavr`&pU$ zn-G>Pn<=CVs#9dA=^p^k$&!mflO{9Mv8Z&}iy5e8$Xw@x^t`N{;vE-c<;jqCQ5Ntb z7&2w$X~3H$+Yy7|&Xz^cT^+fy8{SZHMOHBnwLDp^2l(=33&}H8Ae&2G*sHQ2I)rmg z#z9`4W72h*G8OzcWM4!<_Dz|X&M6ehmYcwFOBVDFG!@Hy$s<-GYxo3xrLtiriZYqr z8HSe2-k=p{h3rTbz*NeDIZ#n0+es_k8d>@vidvZ$T{=@Ib1sLlJF>UvUa3aeTlCsH z?#edOhV`B-{0*SEFO$=Tq)E1vHVDnK!C@3FGWYq=)GCX40Y#gvz#Tx_Wk)H5^guS1 zp6(7=$XAf|P?lDThpkgKMtLV)vP?fTcFQ^oq4$yOS~tM-$i5+8U#~3gRVeCn$PAl6 z(=Y3}1EB-5f;J`72QX<0?<1AI437fxaBO48z;1cQLNvO|&yzECkNn6pnCl^Ttc?X4Px-CI zkiA!)EQC-m`MwBr?w8*p2a2~`_226t|Bd{`zVZun{LD|@@Cgck`7%mAJt&W-i-7~> zpZx$$LGt;O2@xzG9||xb@);Bk2$jD;iTj7-+de}PCZ9ql`3}pq4)U6X%a76-z9Vuk z^72KpO?q~hSp5^ zj&xX&CBM;x+9kPjEjY5}GxH()vizm-0GcBoe+xyf{OK~FxFYY)gu*!jFP~72 z#sc}h&%u6Go=tf=*X1jHQ7e=O)4uVBd_L{ZZ_3y08He|;NS?YA(u(DtyMXkzJnu^& zEs-xyLSw1iL_WhZc_Raj?$fra@;T?Gc zc^U4?kC%e)o_tLeMBkS;yaI+M`NDAYHOt%m>FVNEc}*!=+vG3M#;;v2A`2hLe|-)# z9db5BxgN@w^~1tWxgrVhyX1?Hps!p0!fyObkK{v?AKoKhz5-8fuiWtyNc!YY=qvhI ze)A~!p2%@Z7SFi+Co2>U$Sv!@FercE3D}MyxsuYkhUGi{0Pd&qafdFmmf{=Q z1{N!Rx&er{6%6tVlqeeLxKgQN*>5EefnqF-t363|^+kkH$EPz79q7X{dOp$fYkwry`8T zxl0j2DTmz(RX+M2DHdIV=pM!B4%B)T0gF-VQ}pD4?IRlM5-j%SM16JhU|V%r&@cTtY! zqR&;yCdag!Qc5ngUCL#&1GG`SBR6IHZiMg_JPm069YsE4Pw6B3#KKphuJ!CPQ?D zax(49BbCQb!p5FkK?SbV^XTJiTuRplv2uDOH(q2L7J{Cd=4}j%79t0{=Cxi8)_Gn z@1KRVi%LC(<};Oz9?+DfEUW~k%gWUh56)30=71zu8MGPWd_}o^8T#^+tS)HCSH}K> z#scLW%F(#0Jb4C`j%&*0chGrV$vgyUg-X{|F!YA9hz<xx!V2YcccH#gsige8D&@p^FtA$b zk&ar8(z+QaY8}cjI_^}b+?$WidgT|(!Pub8*$JU{lwXTbG%8Cd#rdwXwi_z$DVOd7 zru)io=|^u;9;C$ZW~J~dYAs6l+ZdTv<>A9HqD{H(DHz(7R$9V5P_~~ztwT9!9oQc# zot~iRR62&Y0Zo_kS{pQVD@W8AlSj(oN08Q|95)E~y~?|fK-#CYI^h?6tbBhRq&-o- zuLobhlJOmc4k+)@DcwP38o4-!l#7-C#jtWItu~%2hrb2F5oH*;bVrq28qxSn*+grP zG3DzHa_76KKJ~${xvJvnET5a|XG(0?rFxAH2<}$BK@*g_O1=Tb9#teB=t&-`e!B0# zQ#HjMLieej%tEnWHMSKfyj3o4knN{>Vh4l2%HM{*02PP41EH!+N>Vzk>eve@;VP$J zDE0k_N=A7}5vpkVwIfy2AA&SW_3Z$V9#th#-0+xcG2L+$t@>&gida>57Ho=BF*X5j zyhT}exReqEgbXnE%6&~OmRS1P0b5*mvDY4;->be)I zd8*6wtL3Zy_ZLRCK-D<_y;oJsF9P>9mGWPZTvvtA^^7-FJsLJMnQRWlU;TA~t=kH1tE)BuJuRqI-yC|6a{JX4`sG=j!Tl`BDWRH;7s2d&krnXULq zYE*6H|8vzFD<} z78Wh4E%aQpsy?3uk~Y=PyI^*^>M?~hAE-W%g0e$(;CbkKxK6d@FTm(j#mGV0rHZ0y zwp-O*K<|NyMQ?hKDur_VdsQ<#QR`DF=)~G%l`aDePgE!A3{t=9c#sVrv)OV2~3 zr+NYn(?0dTay0H&TPVB1TRn9(MEj|4({+gcYGERT1*r4rvlXc3ITk=nkUEamz`^Rb zo&aE|`uP{3>5!VyhQ=`U^R&r0te#3IV#C$9!hkSBZ9fkFNOi`23|f?0Mn3&x>MC-h zN2@pNKrKeSiMGeF>KXfhH%`656=QZ>eIW_#C)AnbH$17Hy@edYr`0R&pn68_MG>n6 z^%~k2C#u)dMG#5qnYHLkR{JhQV~YB9$~#F_pQLoCbLwYwOg2qDgW`PY>Ni%wmJ8~D z7*JkRPka~lW~$T8P@kplrtSPC^&HA;%~o&O4MmsLQ9ZOv&QZTh+s$0HiYD+v^^BbHW3Po)qFLI+iIN%eI@F-KNLgHK=VtKygR?208E=)pG_> z+*P}eK-xX^8?-39uP&GXX-(?aDGRz;UHuMFw5Wdwg}trnm6uU#Q`gZps9imkPO^8X zHHOTC2FlHF?iKB#}B{+wd?J?aGVdOCX5j5Fx$Q#-$jA$_c#LXN*DYR7a~->?37 zKTr&)Gu{K~pqjfG(uUOE4FJrj`Vf66pQ+cmp>a&@PfxCkMm7pzu9|0*kLRYbECi-q znt=yk->s>lvpnvaXa(5!Xg(o!4~J$pxj6P~u$RNbsyW&M+&-Gcv_1CK@F{1=Pc!{H z*z2#c&|P=|nty5gbU;%_c|8X;`A2{-Q1e?ENP;v|XjTu?JVy`GVNK9R*b=V!AOo0= zXwJ_@5usU6c?FRgXL_@vG>&!!3_YsZS_HtyG-tm?5v>tNK}?Kh>JreL&?qU9=%i+< z5JFFB-dGEJPitbUL3u{=F6GfCXkH<2V4`NT8GT8b0dk<7)$F86Ct0(SZYoaE?0yK! zG>sw$jp>?P^4Mi)ave5Q&uhZ}1mguw%TZWyQPV}P*i6kUbe~I>X6**ZzN87EW82x9 zxL+XVvgX^z;LFjd-OyN|d7hT{S2bbe1-Yi#OpC$mnoEl@qJ_BW0+cs2nf0jM)SRX) z$RdrBE`PhF`ED|uBPrH+Jx1$o&3alSRcP)YU@)mtQ|}5*RT^z2ifYX_^g7jOl=L>& zYF=9bO?4Xi5Qd~)vy1RHXqvu5aYy4sXR;eLYkvnxv&NgYnJt>=2uNww#7a@LY22@a zvRyOw-ya-2(43-!3LTo86Hz?W{OAG3PR+$dz|^Jjpakh|%}#RhKi0e`hZRpWpHZ4l zzh>zZkPK)hQRHb*6U+ztAMhLp?6f{PI*_)G;_%R?W%p_ z&_uj{ZrZ&e7_VL0a=OQFxAwJ_knOG={~b8?XzOLL*F!6!(442Xo32gYtDXM_NW8Q! zOa-QW+7COSaKCoXt1#PNdt@F|1Za2v3%&!|{vJF?2eru*J`2>&colp>+O%D04AurU z0KGay`_4h=4b>iELg69pExIcyLVJuZDUH-lp?4)pn>imsk7{3_gL22T6GBl$Ylmp# z6QeCy0BNz>e`Tn}X=hJ`E%Dk76p=iwU91G(8STK&!RD>w-(A_b37}H6LYi$;weQ7) zwL_GP z)}?)qGN-z=RrKOM)-JpOy-&0mOHlM{7i<9gfOh~S1kqZ!@9pdLSMKp#6h9* zBf7NxP#>Y&@(@L&u73h(qI7BWVEqdzi6CJ z_!AJu>*`KG*m0fVIbb@eo0X_yNTT&g#^3 z93WX&NnVjuU84q?&gnk*6V|8c{>}i3blpYT|7GY7lFQ+uZv7m{&eRP@qc2N0k(S+; zbmJ;fWa}2u|G;0?*){-0j?Q}lWajFA-3az8x_}gzov-_ymdypauv)rt$TIE7I-$75uk!dy7yM>v~gx_qJ|)5eA_|_bHvHEY(?` z08^Q+j;^&S*ZnpHloh%>`nXo=7SjH@O1GU7%d2&P^vKufN``4`TC2NHU#U7>7HO*2 zC65DtgKix~r|;-y&w`3ZowyPtcXhL_0pUH}Tv`F%*G*Ut>zi~6`k7jF*_5QwraMU~ zD($*#x)9@mZjc`94&4|f+C0>SQ|4orZvOwk(5+L>LT&CN-CKJgv`6P4mwT^Ho`j-L z7f8E>C%Sinlm5k$b5So)4C_|Kf#azzb*e?BR6n)&S-$Ap8yZ&A~4D`_R^cVzB{oXF%-K&=kLW-B(Cl*-t>1P@s zdcWRp8ie`k+c)}w(N7=I0!DxR7BV|P?@JrE1Nv2VfH|m-rMrj%^;6maG)O;@5;%hO zBXrCoM1O%km7#hSMH&w2PXzmKhe=__(0D}u?SDZ;{SV}%i_|YD1l}lpqzc7Rz3wFl zJEosR=SQRUbu{QP`j1{l5vw168s^67Z+in_ynZ4DVvp-TISmje^o!3!?MZzR4f-iP zb25hFw7!Bib7%B_>tJqzJ|lSk4kY{+(mFjwzjPw{QuRwdfRuCkGn96cre8-Npmco* z-Ful)@#uB{RC)t^qzSr8ug2o zgXFIMty56nq%X=q(X5YKgT59$6yYt^+`MmICtp<$MDE?>z7iX?U6ou7C3tJ>uDnI)xY~a0Qc!<4}j#czO@CIp6HJj z0%5=Y_kQ#Z==acaVNk#785)Q58%NPNtbd74cRba98G~Q)nSL_O*kk(Tfe`ItSP=pe zSA*+^<7g>im_duB-3AlI#@r1r6$1AjLj;|e_AvaA4r4qGzbgTMuc4cw(EAKVUjW^2 zINE|nZ$oq>NPG<6&}P}!P(?8&Kf}BLs0c6wQ{u$|!N)R8b-bX=^?{MFF?g%1BZ%m!+|;gK4P#0H#+db2-V;}X7Ht$X|&-W4PuO; zCIYf!4PVpeKF;vsc}R&jyqZm~fuW6DUndPek3r!n!9Rp0g@rkWxwI|0Vo0XEoIJxXivcv>U?a;443ZDPaMjRt z4r6f5u!p=5*A2=9AiQaKhrV+~hUdu_dCTC`NXhZVhSb&Izik+#NJ^>U5_yZt46iK$ zN4a5yws94PR##YGX;_{Ig;j=>)lgAm2tNcdwT9}=&|7Di76*Il4F%soVS{0v6J*{o z{Ie14cMUuSNbVV$|AgrKhJ*A{H5)$plRi`}1`FL~(rQQ@51ZNyGsqX(Zt$ig%npOA z1PUJ-Ol!f>X*f?smtnFqtmroUPJ{o*usRZYdkwZCXzDX`O-0{h1E1V@PYnOi_M+eL zB8B+|4BH)`95OV`fn~#nN?aA_nDo@JlzfY0hJUtz)Ws;J6aZJ_$6J8H&G-Txx7}sb z(KP37{O&uD>@o7rLAHmHw+xM*#@`Eoey=g=57fMjmdzm9XFNpyRd3@eiuC#zLni>5 zuTe+)ML*+$AT;_L`?sOdalp7R3!n}fjh{eopwUQ2nSzX~IRG4NJUj=35MsPVk-bpk zbF@J{Y;5=pn8J;kJ}5k5JVmbZ2;&Yr7$S`-3mBq|PqzWnQDYhfM2;DGOfW z7~=r>Mq-VHUxPi)VfmmENaWb7^J7K&|4w{q3&*Nd}DPtKO+c|9%P<-Qz zG51sa1_{RR{{~5-asG#>B^mwPVbfWoFNN@vjkW!dnPR-Y14XLQ?Ew1D8UK8WTAK08 zjW96XxX2ZvGmMVZGT=UMjGGNH7mQ)GXuW8BYz0TA@eXa=vW%}qz=})84qD1*8}BB8 z|FW@y9F;l7jWoaI8t2jPbHzAF8|yqHo7S26#(^AwDKK992O6##y<*T;Xw1&XZ-2u$ zMtj(s#@8Je&{}M)?SS>SjR)u=zZY9d6#-tHQ88QC-GHRp7%@aW~W=!k@pNnZLT`=rw+PD;Ux|w|Q=y1v| z(*znscazu$jC)L-rp;T?x6d@r2etjCTTVdeZTdYM z(0okuE&!9S=~EYssGrG~o^^kdM-F5Lm~`aJJYaHu9(@N*qYS7IG)?iPq9feYej7t_#PkE*u^wTX_a2^vNK^G%NIPmWo&?`9 z(>nSLMw`q!FvOT@_ktwWG=bjYIFlziM&nH_g`hlcV$l13%9Q>FjBuPb{q-^!&zLgV zAWbs;ORmkcroU*5mTZd8M3G`T`zr+g>(V>k(6C>EVXZ(AP z0~Kh!Z3_4vq$Q^Ka~SSYlYp+|Dl05Y^ z9+`v#P}pNS{$I4w)HMg}eI`t3cz{j4luSHe$`FHZ(6mSo^+Tq4XJOf}>G_2Y@IN(u z{2Nq^nBKbs6r-jq6fAvax=Sap#!R-iP;)VNy$bcN<_B9K&CQ&h3;tbZT_B3xW-SH( z+|38bzqQBgwGc8r%rE<6EIiGBY=-E)<^^K_<7NJrT*&*(A5gaEezRyA{kMd-IdL%t z!^b?zK;didiGyB0^RE=;^fy0G@vi{$)Dyf6{wc`=}gG`rF< zwkUHqrO+KUEByf`#%%u;Dq_vgDDf%Ioa%+fc=I`0*B>_@q=5bj^DpC}@TB=3MdVMJ zvnZ|ZwAm>H#Tm1Lyom{B-5(g4MDxWX;7c+usYl;gbJ#l=1V^&jNL$$y^9;(4O*K2F zLE1U<4EkrsG;?JQ7}L#zz8I1Wvn&=Q7tE(kF!Z8%0j(c1%_##wk!5}%07hIgvs3Z= zTsFV!57{~99Te-yHJ_*5b-wuy-Eml8uBYkhs(E(>L|=25&wcx6gSO{^fnin=aW`RP|ltBB?EZ6|PPV=^d5Zz@q*a4>7{FCDb#5^*$i=d*%9B=`oy=J#T0PZs%p{ew- z`7xbhdt%;6N8tO-zidO_p!o{jtvzH;qEpzz=E>QR=4QD}VT)ashV^LNZP^k4c6ST! zRgBXfOMX1qJuI0->1nB?FyUTH!XSmzy)32Vh}&lw3xQB?OVwSV@Uf(v2cxe=L0&FD z%arf-P^;O*@Ayy_De*W*P9ukQ}y% z|BE47GHI`V#KPHzBEsVF*@Q3g5^mQ4C7j#*C4M`MiTb8-j7S~}|? zCeCu_H`L-SF~M2;uy`!ztQ1-nIc}m_Wcm6CG~KfNMeeC$3vSQB(`oUn1GEy$oCXLjwG5IUugtQZ zJZI&W2=Yr;SQh<(#!5@}1gNO8{Ok`E)s}H4Fw|OFDYdcA@(_O7N%fYk6j5ogeD)(6 z?^w2M0JM9SoDNz_+_#*Yi_Rv?y-?JeEqObjzQs~NU+7lL|7iK!X4y;Oop#IATc|y- zG?S04!_roS#)p=YU{H2iCepvBby*^w!lZ6XLpt<6vZ(JsQ;#M5E)49oOs2nH?z2q$ z0*#L?o&l3EcRsO9Azw_t#VrRk1C}IO`3+ircLL3jWgGebhb=rFYrl8^XVjr_mo+>b#cu1rPtoXZ-B^fXkJS~f zvX>@#SY61|;c0aWZuG|9E`B>Y_ggc<(dcbG#eqT}Ysfd?_q7&f0gRtj@&gR@x7IAe za0gfuXc>9H`W|_%4q89I10#a0xab2jxYchq`VLt?qTe;ls>a%7(qZc&^05jMnSxrJ zHI&?c3Dz>YkR{QYNe@es^`F;JoVBi{6yId4n9jtcSQk)6SgQ3Vze||zG8iN6Gfi2j53|_tsj1ZqQDye1)i>}*7|9K2)#n!HVn0?zCyBI}@bvG@RO0Cmg zKwp`4i015aYw}76t+3w8Mp0>rd+e@xC=`FF2a4KWqX=v$bz8q_tS%D3_$w zx`f85&1#^9ZoBo{EogjTJrE3p9oDjL_>Fk z)F@40k1c_&;qkCl(*D}hw)P%W?6p0cgFY`?8Qz>p`)skaz}|0rO$kiiHh=n@_}Fe- zfib?e7D~wRv+WH4pTAAp2`K@#U`pXUV4F`@Rv)x!Mj$NEHenYq1=&{9wVc7W`Hg{K zJY>741!I_PF6CbwwrzM7oe{Ry-4GLL%Lw-O$D5j83&629$qAr{vmK;2F5bqZ^K#fxO}Aa4ux^I!-E;HdbKsqlfIO?Fl(kuGzYq zFrwFOQ8PhOXk(>7<_+7|Q_*WdG`WG=|w-m!LRo|4RXeaC_D-AUR_H!a=e82>VPC zWJlV|y-HEmg`{HI4iS~tV^z}}%r;P{vv-VuN z!YtWtrI=WXJ#8w)q}rE12gY;u-82=Z**6TMmTtGw!Y#w@O;6By`#)z;yI_BhBIFnC zHT1@0+6#PuFw0&$8!|81zoOkqw*A}RKyums{kLe$v1bR+LEc>ZFSPi+VxM#XD)Q`) zXokqQn<=@kz^-MMX(N}1fz5(lR*t2J$@uq!$BZ?wBXFW9C zvWGgu!eaZb4v4;OpM3#EiTx*XQebjEsvx`8e&9X)Om+6ZC_$^<{yW_<+F(C&35|E`hbM!*(can!zPol; z`hT-~_R$Z}c;CL6hP%oB##Wf!YG2)oTATgGc!+ki+ox0L@_}6?L=_iSw}AhlJ*NN) zJMEqH+3vEB&4Rt%_7jz0d}Mzo5DY!`mm(pp*KV5xynXiRJ5hUV|KI@>KCur{kaN)f zA)Q_uve*3g9k9=8fv~4`9!2X$>?_{|>`{k(yeCLqoF|aK$JN=7cAsv}eOqCnyYmaQ zU)g&cV_+w72eL@B;rZ%ao$N$Mqg(ueLnr1Lp@RR zcaB;Gy#dYz6mvY_Je&X{4myiAq6l<$)YFP0$T>9t(t@4em;=2b&anbu3w3TJC&3}- zwhtgC%sKOI4CxW)_v4`{!nqxPAU!G4xss;fW6uA+2g+#Y=V|X9<199UJ=QrQ7Q*73 z@6f^4cxN_cRUCJ&vEZdT;p{{^h?CB<9a5-2<*d+SNKZSzdkHGeI5&I^dlQ^9&Hv}< zx&x}NzIb0iW6KlXe&r}j8)n1G)Y2T~$g-uW4Yka+#oO!q9(yRt7DW(55d@VfC?E)e zB8Y6+0)jGR%O1ba`TfJ?-h0O9-0!;g+;i?j-(|-;w0D!>_}gwEOmy7z3#27EUYLOF zWXI!_YjMRfh;}{F9K}1qp6+O;1AB(!Tyk$^I!4kuGs`i8COg+1Kc7Nlwqq0pf#o=A z=aBU`90z8jn(J6!4v2YgY?!`DKoQ6u?yDSmX|~YaKmk!{)SqSx(PSI&CK2q~Fs2!CCnxOBP^c20ze5LQ4gHS)| z_Lo88FI{Q@DFM^##;7NTXOtX_RhQ zj#`s+2_0DQK$^t^-e#!@x&K?FyXnlOR%!QQat=O}*8B9t3TDvQE43isSD#cu9``}1|8}Stl3x88luxC; zL^&#bhGx%W(w!7&IWCQS1sW!#mse9F)1-7G&FH73kI9j4kcC^LFv`k8AMy%NTSo!11&0AGSauO6v9pfLUZJ?J5ZOpC_(Nrn%|LTXcH{`m4wJo3+t}f1n^2sWeQyT!F|uLW@Q#&T)q>=LER|vu<79u*T^%nAr-|-GSz#=|T$0&b z1H)z6nxDX)AQKP+n<%rS2}+Xez-Oo?%i5m>V~T7)y{}SbFVe=$71H)PFp z7+?X27|A>;WuFNlczin(f;xtUo-~DGe>|vP=195C`c|Ig@$1HfF=EY`*Haq z4M2s+edxPzLVh3v#Yy?QCx9tb{^M-)osu_x2x(#RLRtug%Wv+(ke-$woIziN{EIrs zj+94GBH$T$++{$ElE26Y-m`K?@`;|4j}C$_TF$u#%JcF+de9gnp9^0DJ1bUx@LzCT zkpJ@?TI1wjc|lCPJmNc`xF~=86n&TE?3Vz1Sw2p|V+nH0F_@hw@1)FtB>7Q_3`mv- zEX3fY$ahnIL#o_@5A;{$;nEx+*#iu-cyEC{WU`-=gs zR^A>6g>~}H^zN*ecTgU1gZu&=AJQnF_c7R;KKYvz4%{y<5utBDK2(FD9F*^&J;)*XFYF0apUT6@A3iMq>^~GE@*O_|)2RH+ zNsPsq+`AQnFfP}=2mT4U$PSt&2LFueu`k=@~5gY{)R|S`D0XIdh>oPF9E5=WN)I+hi4XvIE3oTT5DZZxu4_|RIxP$ji(ez`=KaIv5rzv!xbwjbN;mAPZ!u3p~(IVkRla_$;WX<@!<@L zD8)&7V9zSdzJjoGilwY8R75M{--9vd6^oXlHAYcL`yH{0adP`yQ2hBE@Wv_TQIu=E z;=4fry{Isd$NrL{hJqL`D=KN_lc2cc2|E)NQE#D0QmjOF@2q6S`>&u#QQS9zAyu(= z7B0vY#W8Z@rzwu6)2caL5gd!^RmB(U!FWxvi~_VX6u(EJFH>=I9#CW{o>FA>bww*h zfn_Vg^DqcG3V#aWyrFQ|i@sdNBN=LW3co*~;-+E=MG@yKqGEusKrtQzl0wBK&DHKG zp1lsdMT#duw8LJkc*YBQ?<&S9imXKOs2PKBPf^(fvr83Yl-pdU@L?dWT;W~;^%aV& z1HfCUFi>>TeTBo<5L%<~ei^k|#gd&+*q~T`6|fr>kG6ucN#R2A=q-vziO|rh_=ke0 zA1e9~poa8kg>^q@9xEa!B&S2+V~1M5;#>NGj{${j8)OeE?pUE1Qmi)t$y3D%`g#v5 z4m1Mxh@ybP|3?*7v~fMA*h1m3wO) zt0)51OZn^fp!8O1=!k&B%6aq~Qb&{nB@peSw4zz8pYjE|5&f0-MGzLC{D#8l16k$2 z6fO{?{IdpPf|Y&}2tBTJHli~`DRc#iXuW8LJsLj zr8BMc&M24AqAp4~%7?;p%H7YRh*n;*#i*ZGo^^xF80E@oNQqVE=0fxZC0iv&Yn(Fd z2&(bQ(H@XqR2H8Hrc281QWOcwG74l$RNf(1OOkSKID{rEzy1-1rYHl1u<44@vkg+x zl(YVy+NnH!7nIkOMmjGfLn-*-Ec*j7*L)m!)Wu8_E?KxXW^t zGmhxYSIWtuP@wcB*Xk|h_w*{ftt_Bjrb6Wx#bCIjjHZ)1ijlX*|i0I zrApI}ps7q*H-(WYSB6%is8D`MK~9y**YvQyN|~p{Xjd!eoTCZ;edQ@yn${?%HlS9k z)a^iLoswAy)9RH0=@8nW{F6TEjmoNz(buH3aDd(i%0rZ^(yV++Mzkp1V!+;}{ET*q z+LfX)kUUb3r-9_L(qcP`4yB76?48Q8mB7@c+@PUZL$~r!IXIpu2Pe_mqim&lV6QUu zJCOD%zkClvGN63U5`BZpv2Ou?NVy{$#Z%>o4@P!a`SYtF8Bt~igJe{BlhTpLln#8L zM+)d86cfsxHBdjP{CFv9Q_48X)|*!T97o3w%qW++LcKwiOF!vmR5_Bb(Mh#qC5GEs z)gpv!7u6p$_^zt^7l6r4)trUGQ`Pqj7`zar3PZhBZp)$GM|GGM=0{bo`7q*`%BBmA zzN*k?akKcT-lyBjU#0sG>_Mu%l#FQ_tcnbZf%o)NJ}5&~zNGz>>PNbf!c^@}D8g0l z%fN72wao$gB2@3vhdokNO&^Cds`WJCi&Cw>4fbf&QaRL~SKZtM17lPz{$PkzJxoI1 z1y#=oYH_N1HwcSYS<>F)Mb!-5W0zD~_C?rvS*4@5M}n&K6Vwt_x&Pp{NK!@2#i%8# z?orl3ic0(&_)}G%DqzbMRmeIpq^WYM(U-0YQKRvyDrgP(vQ%-;1KM@fUh+<7tNgkE zEk~6~{;(UWHi~4+RgKw#FHe=49XvOdv1cv#XuYLUUk2%Il@)!I3RRgr49Ojp?tR!) zq&kNUzgfkqUug&RuBwmLuqCRse?j3r)gKh|Q>r>d5#wd5FKCifuF5h)QK4E#(}PM? zy#ahxs=x{iNwunCKJ?vJMSlSeH7dEp0;bifuJ1x;or*)7F7>LNzd>Pxsxmk`7MH0* z2^7t$<^RH_7S&G^klm`1(7fWIN*e>&ZK}{Gu&G_O^EJqRq%xz=^{F#(2ef`wzz@(jpt{M@t9wx8 zN0Zg9A{oYmp40fmb?pAw;5)z625(oG#Np@39(_0rE_lZU$9 z02)tquLc}m>Q=hdz12gs2kE00bOZNM^)D?@e@vY~i6*}43zirzKlOZC3Q@2rOPPn?d zAJ|T-pCfxC)SsAxF;cym5)#g+3%-EfDD{2%@SIh@Ab{R;YS)D*qSdi~q3^ufgCenG z)O@--W7XdIfPFzdLuu`C>bKM&iC5455E?G33+B-8XIvV{4U~EvYoQA?iwf`X$ zP3opCC?2Snuf$k1t9M8ttwr5NTTZR&mE@v$sQ&FJq_wH5YXPlYZ9(_NBlXXIV0f$! ztwLjmx*z}p)T!P>$0T&A!zr4nTg|5KMCTK=@N2a8s4vs(wO2i~7P9-)U%dol`qe9F zl|7&i-w)h_YClKRhScU1*6>uF@jM!b)rTrDcq8gD6EKXb$H=8Krd~(qL5!=9(dT+X zy(|}CCe?o(graHnP1+2YQEz3*Wnj>x(HFz0X#kC#P ztRF$`nC2F_%zQO5Cn+b*PxG!T#Q1CC4QLI}v^>N>1!|7}0Tn@-tJ^R@!5ZBIG#=M@ z(H3=xW+{buoY3sO18FBU!?dyt)tGNX-zm)uy^_K-Cj9^!u8F9H%+s3B>2ZkAu%AI# zq{do#e4V05qBQ%-0dZEdSOqZWG>iS9DO%G^8NlZ?AJH^DM)N88X=61EZJb@u z7z!aYPV*)?L*g}VOTc$gGe{GmOB!Y|WM9@?kB9XMn$6_xP1Nkw!@wlXZ2I6OYqBWF zJVi6_0Y%`YYBq<0^or&fy|26&XZKzdc<*NMh!nm^}3MTVxX5JjeDg04Z9 zW>Em3UDv$+A=tAuowOOAqd7%a>xSk%`jqEto~47E@-#WksNK}$6`(I)qb9d!fo8u9 z?CdSg8dnU>ZOw1AKU%2y$qlmaXd*WP@LkQ^LDWh#wM!x9p2k`P6{VWqP%xBfrYH`u zT;sd~eHEJM&j7SibAw{Ysx&XHhlSOeFj~*w*Q^_duo?|}93-_G2}P^bX*SRVwVu_S zejk^)K{Na@7#lS^N5I&m*;NLi4>a}kJ!#g+C>FCtv+ZA4(W>e0MDb9wpZtz(8bvU! zLA!?i3o0IIwC_RKV@(b1dUR;EZiMV;Qx_unm;J~sz<|`lXtCG z<3}0ZeVPOG;Pz|I4M4?!riS*&1~s>Hp<+lAM-Gptnz{xQ!oQioVG{_q4C;pgK+6DYUk0L|C08# zCBS=GyPQ(B612Z5U|FJeA*ClJX`fKUda|~Za=BBqmuf(gs$D~Qmg!nA+L*tp?Ngz4 zP5UdwS!QV4@6*nFrdCu3G+Ej{aQ` zF=XG-K1*(%BJJ&d^c8D;XkC0)yOSo(CEAr~P;pP&Lc7qV+IJqIuT1+nB@LBp&p$@3 zLK`^!EM72`T60=(RcU=GL#;-;oV-o7+K=-w&UM;H7 zgA|q2t-VIGoF47?VMy!Mro021KJ9J#n)Pe1(g~OY+CA-%HmJ=vU`U3vejT8Es{Ml) zhP8Z3z{pnb1Za#Bfh)y>DVHrnGv>_?^~j-UP#pHjthTqi!#47qCvc z+z#+N>r{N8aM7`IpwLx!l!BAobkTztJ$K!6t1u)UIydqPcxPbl z@38JU2^x>+Qpw%pqZ7xW@2Jk@K7{$|D#*L+r+Z^F2G3u2lU|Pjx{u#MV<4+LO&^ya zU3w2%gLN*i0Mv2awpBnHqMMIQ>scps!52}S)Wy^MF;w@2c3@BGPSDpkOjk?`f^ePH z2yBYf4R~PG&gkya;xkIu=K`~%bt|4j?Yyqt9vWhF>nLLpz-eYP*_9?sbW;WZe=9k4w?5{u3mrI(Y{4UePrML2sJw zEXAUv>niy$>8ftE4(!)-TmM8YLs#|!*fVt(XxA@GH>(GI*LBq_eYUf8XDDkSR~PyT zq~+E=XX*zV}|lJBTU_a^x^igkq)_jpfNM&G?s z-Fcc6mgyF@qpw`IhJv^%boW<7L#58;7GzfGdfx(jwXXUUJ%9Ige(QjuM&~|-&RX5& zn_#Tdb^ML7sMozhzXaT%v!R!Kqb{QdD4KNs_krSpZqJ7(nssqgu&G6tO^$x}NXQ*P(mIpLWqYb$jd4`a~B=v+o|=sb%Qw z)ybwIyH9s(8jbxr-fEBx=)SrL3kP+71VGx5&YYY^Pj$;IK{BkHN5eg$`)vq7M|JyF z!@@D$!Y#lwt`iGk#Ds2n6+}Z`VN};1?Y1M047jhw+~{1^pUj1 z6|6sG3o*y_eW_qPq2EU@lauAn9&aa})G zkH&2M2_LA)(VNoZH%~wMI~s55zYm4%eEpycY6bf4Ow?}arH#;ZTOUA?VMThAZ9q}1 zpP~Esu3i-d_7eRmHW%ve=_iJOrc~b(0rh2iYg(+7>q~z?V}<@9z2z(QWhWuDN*_ZB zT-EyRdq7g7&!Hb~sMQCN@3u}KO*8U(eS{?%8}xm&sobdltsX^_{_90h|3E)VFSZu_ z540=Ps#kvb|6OeTNBhv)roSk|6>Zly&c|3h(kGKKkM*m`&+`@ks`uXmz+?Il3T_(L5B>(5ru1LZn|xZ|MNat{{j0uUFtQ<3 zb7CpyPkwtZR;_06{CTs! zG#fq4z7`BIN7#V3z<89E$iQ)oU3e4Hd|4j7p#0eNVKCdD)o;e72xNT@p)rX4gf3Gs zyP2lF$JxV_<`BZB();x!Yt;t!P_}~dk594h(HAd_ji$LzID4Q4B`N(ajpgzPSm8o@J}(m2{4ErcI1!_SQD^oo6$BP>W$7QutOZTe1Y#_X7J) zKVZkPcI2FkXFaa~Qv&-RO;Zxt5^|O$v3KVKb~5WmLFOqedzgMFJC%KwVnMI4&r5(J zjlE1K52mx{yrAMLJH8I%mBDI5(U{4ey$QTo?20a+xX#*CL18xAMoZxw_Q^E*Zm^xB zFd~;N8AoFt``=G6;wJmkQK&Cqdtw0Q7Mq;|_S-BwpEk-1*)dD#y~DcRg0v#`)KZWZ zv)PpCa+i%x0JIX;a|ck|WAomG>{8Y@0?;bhro$kqWWQYnzADz9B1)^-0?J0Y&t_4+ zS`FJyL36cidNWYev76|9UeD&zEUAIry?Yt-HnJzO!O_GPa!`A~uG$RT&8&h>*lJ-5 zA47I4`!>y;9yO8y>WU(W`^ILlrD zqzU%@?;&iG^*IR3rr7l0Ls<-${pS;?H5!-~Xol@%VBBeD<7{9)D*!4N12g#lDV2eF zwH>0|3``g$y}2702MhFj7#QUQM%&ZC_|x{Nmx0;PgE93sFpJ2wb=bgMKMUPQ3`{By zqvK;>^2n5<1}2Brg2xQOX4e@G`-c-c{SC}T1v&!^%+cQgCeXnA6O8sC1GAWJvtR@B zJf$=pH!!`lfDJJ)>QMBbFfbjj0mMlIBQZlg)WGbbc!*O5#w#23(*`DmHsB%*j4yqI zA`Q%yRcJqBV7x8B7iC}>XWC3V3xzg7d(ObHbYn#u7%Mt8=DdNirdWs=1LHCP>tYSe z-cc}KfEAP%5ocf`Y2z#2!1R3zzKaGXEeJz>$-vB`kig3Z=BG0#6Aa9O|8JoKa5P3S z$-wX_sVtc_Fz4n0QHp_yUI@li4A&Q6xME=L(wa5R!2Ih93(^hD(l{u-YG9m>qWv1^ zq$o2C3{wLjnFi){0+wZ94CElWZeTp=1)gnSENLa22RZ(z-!w3*0??mtU>;?_aJIm} zoUFoKam&EW55#?Y+rZRQ*hry)`EVC3zGGm_;-IJq_3gN>cMZ&nJpf#SOK=8??-`ga zd%<67V1BbedzpbrdJ%l(7;4&QtbqIw7*=Uu!~~$q!2GfS^wkDttrJB9-8V3A)&fb5 zfl1g1q_qZSGda@h3{1l}AZ#=+*XW*TGBEN)0DE9yp36nqYG6(kL*YXMqop}*n}O+} z&(UMtGxS~PFffWpDDK3NQ&Q~{19P6HK|L6e6KL->F#X=-sOd8>rSv03{RU>|R{%0# zVAjx28xI?p_bDuM#K5$ZUw0Ix4H(A^jE@w8#tqCy2J{mKrb393nKUpnG+Uf9FjM4O zn+89{+0WqS^G9hgGM~gkuF=T6MXP2fBlB)E#mqY!nJ2W+cQG=D-UorJk=a3EL~cfg z(Lk}gkqLK&LJuSJA;mL!8ku~Wn0XnQS16Ij+sHh>1bl~$j8i3s{D_gsdljXRk*TEx z`B5VyAppmWj3@_nUn7%AL6Uw(rjVuc1F=2)w*xE%ejm*yHz;_z`v^5f8WVX@M z6p3wUat)j@GA~eIW0aBM{7XZ2*2uI`MD{r&b20e&T;^pqio8g1kVmtZcq7w#4P+OM zOw3~33YUzGiWU%;jZ6bA*bxM^gb(nFJPWZoYGz*|PfBnW_R!|)d&uh7U; zQ#95c4BQsb6&aa0db&%D%r9~na*s7KducH;(QzoQHZng%K~WuU9Us)|F@n#azro1(?FG56a5hccN&>g z0@`h4-XYK36O0hun>|Lx?i2*~8kvBlsP`F}>u9CKnM3djv`ViLI+i6AHDN;*a=#ED7mqol7; zCuU|I7{i^I?eF5+L^?596hL&=iTQ~RusQFm-vh;!*+iS#u!&dHW!3R zuFQXObfmg6wl89cuDLRP%TQ*yGQJe(mFJ2V8HV((EAwd*+RI#-(zyUu<;ujnqrJwJ zaU1}!dRNA2ApkVFGW8U(^uU$b!~?KqS7t>!0JOL=2k2*fAGxwj7rm+*R0!>N&5rk6IW*LbtvqCVp`tyx-vT{39`?XakoR+@5)rD(LUhHtmeRw zAyR?uDFDSEkhi?PIQt1?9Mpv#!kZ6reTX${eOQ)|4x=oSfy; zuFMB3KrjOf$hl;2V~)Q807f^)kDhyHH|9(ufV;RcN%WMsx-t2*baHoNE>RAlhZ_@_ z4IrLw%sh&x^m1dqq3CyiH^%e<+JoGfp}9zWfoBhIHO7TjNaf5*at>EAq8pG{%|yQg z#5GI{WggWrB3hC)Fjlc3X=2_SLD9@~?}6+#=En=D^)Lez=QP56xDq2_Fxf!C7oH}^ zc0-Dvi8oT2pCM(u8QTAPA%czzdGTk~3#t~S#lw`BmZafQy{se8>GJuJ=zjOR577JG z`VxqJ{{oHkinS)_{opGKdRpmM1cO$^{S0$g?=`{S4|g7h=#QKz|6|Q{in?8^rqHR6 zQ)yaPdGR;2e7ipeG&=-W zpls(VI=JJzc*+;p6;A=xyZ;I!_tKtu2ciClcj@4V9}UL<;-{&F=-zuT3T*p6q|mDU zTNmN~pB3b2*N7;_#f5378_SiMP3L5|F+#e(-I?brPy=^ zo0O2ZFvaBevrv?3!am*tO;=2MDd{ZDB!W^q(oK$i4UVfO84n=)n#n)pWyvtxLs4#enNnRVOvk-JQfWFIj^VB{oubjM zHqHGHqVJoA{Xdnm#`GdZPt=;ay#}F;rn_9AqRF&^wi6$i7SZF|Y-;roDq2i;zYGgo zP4AK0;Gt=i3skh3_EE%HyXlrxXnJI-p*iVe(^W5lvcq)SbAa7xx}KJ1U8d2LoX~BW zwG`@~nA&zwl3b6e${ z?XZCqw$g0(UWlnOyBiKM)n;!GqxHU-z7+g5W_Gjz*)VHxGe{a|eXty2nr7Yhq6;%? zfP9FZvx-iluWJ_X3s4TuIzYkiL$fN~K{+z3moDfiel7(HgJwr|Ky>izH+pe-kI$Y( zQQV>IY!{kyoSLnpo&T`eeiUUDKKlecYL{k9-UUbJ>_6wD=$g%^8E5zG5oa(wnO!pt z%AVP`XkObp`^X8X=$pNqZqokQ)-HfHFuR0Kd>ER2IvEI`&i-l{8i!}s)15mqTk$W7 z(b=r;5nR}@*_-|b&G_s!bR5yd?7tSndVli|UV-cY9G43*f#x$*3o?K9HvkPbccZV< zar1SbfG@;+nsPZ#m~Z$S>=(=nXs;vA{9hZ8q?ljwM`NnF;0v%{F?S0AiZt`@eQ;mo zm{+o8Fy@ANHAUO!n!8bkRG#^ll&X+#{>HDkcm?Lw6h3#$yx|cV3(cjJ?tjO8E3I>i z%yY=YR&2g(8;mG5|HT4DnfWNWAj{3Otx(jMSO0~^PV*{y$9I{>xziY$zxWM=Ju$Dm z?0{;o`P2cZ?>7&maP0kx&ZwE*2Xp zjp2yJ;X^>^W3iAy<53Iq1JHZSVgm;%{4C1KA=BR?iYD;^7LpH81X}p3VRf*@@Bp+Q zxA?aNqEA>HIteK!EmG<2ampfteF)iM7MpK@=CsAF6cmvbjkK40#^M0YNun%1`U%p~ zEXHFnYIiN(cp2BA#3FnX6yCGwwMJ2D@!e+Jk7X7^697|g@n1J=sj%2g`&5+{OZJ1L z%0f=(tkqbIm_kae#pNh4)LFdvIg7I1;_57PHd=I_0GK9=M<*fXfyD;exo@@@r(lK_ zi_TL((Phyh1%J1NmoH@ZSd`HRsMjL(5%Bg|_;!P&-{Lij<{7j&Odr=Fi_>}Ndup+t zf_;ZAB6+ZW#NwADXdJWn{55j?j$8aiyEzjUe|tmPq=lX~XQnN@q~MsbXxfRwV7ZU> z^_(m>(@&{8TRQ&;pe~joS_>svPSI9nvSliTaHU!X(?aQrWj%S;(=6A%jlOhCPx_2q zvka%?xD3nswV=$h9QGu~?{&+!$t!%zvXorKw=KPC!?n<|hxQ@wSZ1oAzQ}U=B%~Ev zc5)!*uH`-x3|EO|^<#|8J($_MwQ{2`yPMU^JAu&Ms+o2^Jgiu9ka${oXM)|! zYP&h~d0S2MV9R0FYQ;lHJ7V<X=>qgH<_zB~zqaxD}iH8W>Mo1+PF6X%$oh(lb`EwA_!fs-dLMvsUFxP&;S!F&#k=ZMFC@ zfS$Knj40MwF;;r=y2o01Q!?)bt5;9LmN=^`XVDmMl}C9K7p;zvFXWQd>?-hGwz60b zMG01m20)T%^@M!{6-ibJ=AfywdZ`qk>aAu{!T8YX`TY>uX7z+7J?&N-9^m>uvRa@- zUx(H1*{F3|agT$&+v?J46i=+q9z|b|)ypKT*J|((8vCtw6~LqctM|?W+Mw0(a~Omn zE2ao2hOJ(AqCn(PEB|dUX3WZGH~3wwWwg`dYMn(9nC{l{^Jw(2-b=I8W7bi3AT-3< zBo-=8SQq^WgeR@@Ga)p$sLnrI!e3?xa`#pRHlVm&}p zpj7K`_#nAr-9s^qY1TFLQB1d9mkoxi)~B0b=r!wI$>__l{)7_kGp#?Mkfto_kHx56 zw+_W;o1K+o?LyD!4eL(&3g=oYXs(xM{c{e)+_Zjf9f|_$3Oe2Owsor z`cq1jDz;XHfv?2+)f*^EtvAq;qTJfY3RkkidQgQysI*>7>2%fB-o0R`v2LM-Prdab zXE3l0)|J)}+Gs6JhH1^#U+qP$)w*Ic;6Jo3T?@c%)^o|F&~AO>1vEag{vjM<9$P=A zU)briF203g&^j&@12km)+d42jwJxK*q+#nd?HKh@>)EtpGG^_Y0)^w&3n)p(&8C(% zAl+G;OZ2FD*!=Y#gnHT>rz5PqY~H#8_=jy4{sg2)Y$S9kd~7ZXVZ~9KyL9%>F`JQ6 z0QI%8qesopX4?y3_qUm;!^i~Kyg|Fhfi~&1K^0^(^EKEbZ3?X+^NLM0#fKEzJY0^( zDjT+r&dI5^iS7c&eVeH}XsxkHuLn)7&D?JA*Vz<&fm)LdmsWZYY`oV%Z?jD?18FTb zn}0{&Lz_PiKBh-CpPPoQS{iHfCdd2ID+ovndsglQt*M zqH)URE^SOt+XQ}&Mi1LPn*iI>_IY=x_p;sj8Z7g+eSMbKY9Ync-wYz zUtF}^y%SO{*$xq=%eH&SN0Dx8MrmnRZ7*Geuxqw0dEm>i&7|C~EZZhYb)(UU!83XJ+NK2mybY7x9zW=pm<{Y_$zw; zdTiOx(b;SJjx8Ye*_vuGZ2h*KB~U+LYfGD0gSHEJkUeDk<1i3Dwf)Zy{KK~2(p@rQ z8*~IDqqaMip%}9*+6BsSTLEp8Oxp530_BwL)VshtZ5#Y5YBRPAXwqSrLutav-|4+Mz7rNCe8dR?5b&XRcSYiLaM6l`U}ulZFeCF z>hIfqy9_F7>@HU0+SS@|?Et3E&cXwf^>&6RfN8MvN<-0Pw}M=a5A05`%Rtj?x6mF6 zTkNi7Lw&1V{}pgNu?r=)Mvq-61)KHSU7!TXK0C81xzQ?QZOa-Z8u7xaVd~*xAv~`%T($6Ijqp*(H-ZX4=l< zCyeZjohTih2F~tvKw;#3Kv_^uoa!`CI&E5(x9+=(%Y0=By!C=wZ&kw4Hy1^Sl_1KAeW1$TNJ5(@cTqzMNNGQTTD< zrvb*FBc_jW0B6B&)B-tMUVyY9&Mb;$4CZ`7$0Ho)d=mjNA)JMjqI;5akpjm)c3ocy=wUgaF?fwWSN6NM9$aiS>Rww&{pF9xB4 zQ$VNJRC3J7@mIxZqb-SQ&Td-7-sjBnMPm)iDS80XTF$xGp`wn%p~0``Bv24lBPWH6 z#wJcs0Wdw_-1rc(n>kk^z|g|U*aVVR&Zq@O{UPUF3Jh-Jd{ly3JLlim0Ok=V?-+zV z=5*83)WI3w11X)H-cs;&am;>#Wj!3Wmy!~DIlCnonm*3=%K^Bb^ZPm!1Dx6#Kpf;m z(~Nb9vp5OxpK=c7gJF{M)g=0+I037GX_|9gflD~U32cQ>Or*B}@!+t*OASfc%-e?gLJA3!_p z753%ZF(eP{>xAfQw)gx1wHABNweSqjYPElcF3Cgt<`2N%X3x+?@3sGjmUDgf73ZLL z$iBoA#jt$~xo<}7i>-lT)PDOvP(Nn>CM|Eq?LDso{e->u%b=XJe_!kw zIo-}P_J4m2eFleB6e4bPI3=YGTQ7%S=y*GChfhAm$c8xl8V{i-9Olz$A)yY(=@ov; zA;ArR!yFdU5+vLq?k!M8I0RWiMV!N0Yp};VtXlxsR~&Y~fg;V})mMNb-N9!D*5^8G zy$`-T2M&e7-gIbp0GND-VSL2dSp^QgJ7M-Mheb=kc-!F{+7vEyxIo!dcN`j=A-l*S zwh4{J4z0^kyX%lhkAI0n1UZXq90uu3v|0x)ol{lk5JC>0dWXw&)JlVcs}6b_9ad6W zT$4l9W)u$`hHn5b`3;8T zvBMM}wGIdMaWHf{_{W3fiGvG;cl0>CbOO+N9qegA(dXc}5yJW%TKZt&iX!A@sU&-=>MSJ9owFl5Ha9>#uX>r^F5irGbV`#hKBKL?DYL~dx7U;Xo_2`4l1a39` zTuCA~XeDY%+{Vhh=6+?B`Cn9dai!O*MRI9hdI z<6fe9WCqtjxqg{kr=I~d3voB7UFZ6!P|N1tq>!~7ZqIzM-{9U0M_(@YqAz6Tac@k* z+?!l?HH+4K?g?`C6>vjoW`B$8vIhfoo4czF3JbY!QL^0~t`$wMinz|NfTWn)K)bzn zx$~w0w1itmJEv9Lm)}EC%^i$@-uqmQKQz^F8>Aqqc4$6E~6cKH$DdVMxu~vw@&#;r{qL_*=P)hhWn~uCM~ev~i2YDB8K*v|aIt z8}lU;KIZ!Wj-rEmRtCMD+z;oWuZ#QTei+fs4W>k*C)~dhK+?lKLE-Pc+#g%X|I){` z+z*BQ+?*UJ9N;b>(+0V}K7rmL?p+hu`;%@D-1XX9= zQZ*F1@WROp zr*?$GU|#L(kbRtYfcDlycnj&^mJ_^F&!F!lZ#DfCU?|Tx3WTS45r=^{jOY10q=obT zqvXxgyj6R_5W$c%lB8vApeZt;R>t#=egza4c`u}ZNv4!af>rt@B&LiH*y{VK3sf;D6jKM>64Sq`^^JFb9lSx+TGwalZ!N$*LV!-^LP<7KsR|J za$e>0nk&&)z(Q&79j3!sZu$ouGDIzHwOuQ>rW74ZhHgRz*mS4q4ncE-aCz8Eae?J1BNo*pYu_a^YX}JS;33{7DXlRGjEty#S>o#>}p==F!=8C z=Iw&s8s5=gAgq?RA`*7i@jjzn3l_%?jriZ*QGeFYD`_Bg>)6R3)0BMhSE@mhm^TH@Jr-S#HzKxx{yxCyr z;zhNAvYWT=S4ernbE97l=;6)6)(AVRm)AnG{yyH_dI0X{9sU}m1H6stKsv}X%SUa9 z_nHyKQ{E*D+*iZAo3sWW;blgHZX=sYq*Wt6fe#a z#Wc^`4#f;_=w}Es@Ym8FTkzYD7(RP_9|XGcpZWs28^1~cls z7)LL@#s*rv`Bk4m{9*o83h6$=H>3POAAYna7>@Go>mc_SKff2seEC^4W%lED{{x-= z{ML_A3*f&;+mV6%MfbrM#Q%t$0}F!r(G<6Koc}w8g@o{ZenjmAzcCCPC;2x%fzVKX z7v-Fs;%8TbB#hrQ0KRbkS3YPw&2JBb&UeYb)b*p@1~<5&hjU1 zfax6HupUN4^Ec#y;R^qg1GETA<9F3VQ#${bL(qGbpGlih*Z51xb(FzRI*KPElh4}? zy;=OXXhwLQKS%*J*?e6aROImEu0ih&em8{!=JKCg3QT$YJ%u2-$$z#F3iJ6ABN_|% zT0Pir@uv|EFzYto`v*sgrkH<({3CbyVv4yf;gA0V6!-Yn zj?h%fZ!88w8UGJ@wU_h1+XH(m_|aEES;^n)gvKiV_gA2zn!o0KNV(6CJOg`c_%Hnp z_F8^$IN0m>mW~uPSkK>A3ZxDEDI+=?`4K~?HSt61AngIauN$(P`KxHr*uvlZJB(@N zAEfN)hx{EB4%x=P*bTGW`ES{Q@)19X!qOh|cRT~i4t@~5|2p~KQUpa8ec-K zSi>X(E2yU}HKV}!MQCyoe8NHDEclVaE?fjZ`a!6xV6htzx(SvohlTEfT{PAA5O}VI z3QvL0C@8%IL-`nPZ-H+#pdA(*qABDNfie^9J_0$-0gnn2j|0Uq!HbK4*H@523w=KU z%fvy9zu-l3CkF_=rKrL{!Tr4`f&^papbr)dQsCQh!87!A4-w=?qVa^lB?8h;3W`i2 zJ5->h3v)^kL{p70K~g#>!v#F@3ZE8m+@K*sV5J0Kq#)#Hkem^m+X^G11W!Kt4%VL) zB)vyZhrov3C((lTf535GP(kS_F#?Z$Ac++;(`Lm5!PF8cj1z36A0mnuga;eDaMJ!4 zKLJdl;G!HPNrEd2p(0su{w#_V!JT)3B2|#pk1@O=NO&H6X@UhZfJqn3Ukzbb1uJP6 z_L^X0H7GL#hc2NnQ!u&<3|WE)1;BD$@G7~_vIS*ycjX8Y_CU%Ffwc$#a|I1-14#1( zt-(NlQ=q4Km3%>X2hbzCos1}tyFL<8kUs_3Q2Uipld6}w?eR=&UvjAB!KBy;0yB5Of$IWl*pq z9SVm8(d&Teso*jN*AEMX&teQm1ZzA&IVxzNPyLv{A(PH17#Dm_M?cr!>0!s6E<+bI0-OYl1hqr$-8EWGm*#>qwavLpChg`-?Fx(O{d zK)t&#@k7)+gez(F;VJxC4iYb6QXY)(7V^mD!yXoX*@Ws5;rt~~;Uh#87;bXmXXMe3 z63XK-z-NW;(t72bP#TIsh!*y`qwl=%=1-`_3SU_dgcpQ*3KNMFen97v#S0_;fUt|g zyEJjXB;0o!waY>gCDbPfeJCg>QMiw?zmr(u8WNf;{Bi>rQ-tZ~0WnpWO?lr}gzw~{ zmL_xwgo<>b*J)5*6^^x|c1`F?KDi8GJKaf{!tML;99$QEK-VB!7)HMalOvqF9t<~x z8!3P$R~SdLfjpszc42P{za$q(zL4EbZq5Q>&bLs1OK48p8n=Zx31}=7J{Jj1cZ9oX z(pe;&c7id*!k#Sj-4!A!2KTz~PulCaC+zls!crlAt_JtIFq?Ac%Y|}E)THoenVfg`cqDAgvL4ZbE0R(3yO_b;5}N2(1@p=^(U0xQ~3Ujlx)3 zayALKX;C~7o_Pa(&BDS!u(t@iLIJc@c==lt4}})B(Ay@QBrjUKP=6EbkA$=e2jriZ#qxL_NKZsGkuF^EruemM}@BYb@V(t3qszoO_9)_ep^{X$QQ zT^SJCUIhQ3Fq*!UL&BainEh0kFb6gb3;$?DMhEkNVvnI=^98mBD$3b zN*~cl>_D)yj*8OD0r8k<3!RJRE4qIG#`uX8_TcvyB~svHfaoH576L_Y{{=8XqNFA? z28%*>K-zK9aoX(;5$Q?j2~o%*AUrABPsb62ir)VLSL>8$1I_BfL}_%sUbyI|F=#j~ z`o#h4Y=p@9BhW;O3`TUG5hZ?&B1-fIO*+qtWb^=?6D8B$YP85+1KH2_nO0s81BV)Pq_Q zD~enU#$?g^J22cSqL-%tCRLP0k@QzYM`F;JCK7HyW4h=TB_>=I9U`yPHBr-P6d57~ zO$ReYQNg&PS)%!rcXD0SvI%|JqTikaiX71v+LgQ^@~70vTv0*>z~qUvwBvG9#BS$; zCSUa13urA6+0Y!~mMHuj8gGkM(WwT7B0EaQz9ZU1q2EQKOme#wi`*#$?5;>b$N!Xw z=DVQpo+v#7HkFDDv};`*NJxj zh0c0W$W{~$qIPmnG>TI9fU!x$Tte|cG)@~C&7$O$sI`ces6f&x>LuUDLs4J=`r1U6 zAj zXrCzB3LO0+p##hw5T#J`#-ON>7NSF<0dg5V6>XsSyzXO z(&Y0-ztP(LHeHlazhQT)^kgW)93rn#Q8c-aIB z7x7)X*<8i%QgXGM_`-SMb{9XT7zGdUue1{J6n{P&D7?fUP&$OSc)${khsCbP!FNPl zLSJ?t@yT~k92M`Oz4K$@P0vEFuXu7BZ1EE>9wtwwznD)e&;W5L#S{jLS8`Ab5<8Kj zJy^WuFBHecd)3ezBKC@dg(t+>0th`R{(dVMLdE0cjXEWEpGIGp_*+^4g^MSyfbX6jIKJMKoWH5>FfiJ9}0ji*G5HIFHeWG~bMbwhS znG~6rES5b2!W8jpdK0ILKcftVE37!*jGi&ER)uQ1SV>drtKuKa0p^-GV?V%Th}~{O zZ>HFCHAu3=PbpdLx;U7QC(IV-(Ql9Bh}8#CyCDv7f-SjXleMVji3cc_>ZbT-N`cE4 ze>w+>3dA*gf$5fb?d!1YwwP^g0ZpO!>}<5&5%2ncB8XT@&YoiNgL5$Lu2?CC`Vw)I z3}EhwUpNbfQgN&YNXo?L?xI#M?%s~R3h{c15vmk_vj+;R#EI)+Xtnq`@=M+q+rJ25 zHR6~1fwxv%$%o83@i>om6zavf2SC#x4)`9mM)AnI!J)(Wg}b?m@95ZEFmPSFi&p4U!=XkQyZo;{Lc#D#Li+$3GM(daIDpH_7qk~?7-1y4x@9}Hd+b4nHTmb^wGKZhmT zX{~icQcj^p84|+@@MTK=O9jbw$?FvOkR!SO5iPK9NZvJIXmce>I-x92(ov7bo0583 z&J{?uQg+>K$wFGm6iPz+p|D8uJKfjC660l1-j%HP0bhya?KkM+Nm90=D3!c5fuc+@ zMPJ%-$uktFQ6X96g+Zv2Y+6QFP2zfXwT!3 zWGyAGJeJI(by$bwbMhQ@N^+3#z|QKDWK()*w`7Des-8$L(VVI!RjUc0-yySuxtF5Ms?2vPNdy+>!3R+U8GYg3nAlwH9id zYcID1yM=Zm`Bg2o11WrDr8T>WMjP#*WgxNDHthsOFOJ11bS=t?gRUA?ZFAq$w%A$5J-Hr6Q`ijPp|DX4U+t|kA{IX zKpWB&BXmMLur1I|YAqd5JEb+E2-#_^DNU>bwe4u~b4D8@!q6bC9qo|}*2;7?Lx?t) zjzKx6Jx0!kQ0=0@5OH3cdKSYKrd@jteHXMVX8<}}YfH)H5nBCpI=&@RtJ#F&qV~uq z&_rqXP~yZT?TEVjx$=HXcyA?ZUx%Ls{mT4 zJxf{M#ai=GF!ZU`Q-{81+RmfFP^J}kpzpc%%_3M)u62UDQmW84qj}j2ZA;2Md#QaX zLGFtd8-GI5=N88fq3>&pl^ucdt%cQAFj$-1K0#3qJCn|H=ngb#%t7N~vbiHHbTb(= z3C8%Cl#T(vze(N#$PF+FFh+60B#0)iCrt|JWpT>nxh*7}Ht9i;qCk@>3NM~9iAhB* z$Yg#yfSom2Mf2BSlZbG-OH7&{1>ZT7o5)$iA>AeyCP1k$lQooVdckC0Q|K0NQcAf( z*G(>-0LNVu?`oi>nVkI_;?qr@(d;n8#Q7#9Wt!~&4!(OPC3GfImdQ?X*=Czu*#q|b zCgWB@ZjMQ^4J726gulkf95=9^KELnjv}`HrdjRL8elr(1%~FNX{D9d@Lza4 z4I=0G1ye5x^21GQDe4emD$&F)()2i;RuE&llw$C)ruh^^k28Hx3)E!OA#-7Vis{r< zP%+hX0j+KCnBJju>on7g6e!Cu4ebp>Gfi7j=<=~?Xg}zdZ#p;}C{IjplGne$v|JGg zNkyhnUZuZS!_H+*(fQs~PZO*Urq@1V^go)GQN-%AX7u(P&(=goM4QTE~*#;opr%V9?rzn5;xpUnt5Q;V zrR&a=pvcfw%|vIW?qD7+!aZFbe@M#KC7*-b99`LLh{)9q>J5@Y-J-ux6zNt`K6|k) zCJLkWR2NATtP)-1AQYv#>*PUsrVAeg%bx2dBmuKr*I0?Z3Z3soN@1TW$62*t5}Y){H<$7Sy8pRi7POa zW-T{XqR+hL*Ot)NqUA!0q*%7xLnrH6wfvL}EkatJKPW&F{suJFe?c*LwGrBfX7s|a z51ZHuR*d)=0YP)?1Vi}Z`{VF`{Rql<+xL4nEOub$>HyD~o!t&qW7uVS72RgbkOB1v zw&BrUQ0%=BLf+dCg7zSIJ_-_fh&~CmAE45ieFFM_@vUEQyO2W?e!6{9R5%1t~l z3xNJ&^bhm}h_5LX<%C#Be&Unjd^hwZi;1T}nIfi83TCPp><7>+@e1uk$QGNt1lWD? zUrHr0SJb8CD+|S$VE{X&P~AY^X+^0s8UqzMdRjW2QS2gzQJUiOB%s|_EHVY@W5rXN zc|BF6eF1ib!oeK1w+ffmun|Gs%+T|C|=4h=fM!5 zOvpnKq)gZ1LWC(zJs{|kGRy(&u}YVNdSE9i8~j9TlCqliKHO4{q4?`<;8@ya@GPtb`Olk9hjluCHK(jTN)B_xL z26K0T#NME5HY7P1*pb)S(ZF&SEOavHUk(w@1~O%DxEPG0@aqwSc9WsDt3iu2ptu=$ zcY;ao2E`N!KWcEj66|^pgBO1e^)uKr3nI=L)HcVpziD9V14*|G3dYklFjzJeeHjKF z)&lLZK~@cle1mx_z+Yxye;A<84f08g3WIKcp}-kJnb6{+!LnKuH3lVdAaOH%TTbE) zpUwmHX~QV3<5j44m^|PVO6T?USFczhTCn<1> zkoP2re`mOpd~aV2gO`B)m*MUaptMr0szuFF)!Pb}$z8QifHKEb4=BkLyASdzk8uiB?V+@b^Qz4oz!0X|u3v%93#y4{Avavrf+A-Ts(+S&CQ`Mr z4Ez^W{UX5_rD{tjT3=Eb(faSQiWfk`E2`M;=)0=gIvHr!R1YX^F@qK zvZ_H9MkYn&LP5w>Ro%5FPxXr)N)J>`W`W_6DwR$gc&r*Q zlrEtvm-6kOs5YGhdx2`)Zxn^9zWeCN;v&_p_vkEEjSq%WPgNahe?f^Vm>deFstdHC z;hAayy&K9@9S1`0bCoA;t0-4_P#$ZA>NSN~U#N^m!HActo)iW7r0PNm3qMp-D23C) z=$!_3+8fQWhH9=x$*n-*Wi)g-9hn+n)Y=}MK}OY-d>LlsRRKwtjI!E6{AHtm7J&bX z(UuAbylV6>d6=#l9f<;Ew9&j$$c-@?O+J!XqkSRZi!%zIhrSy|M?JuvVpK~T)1MlB zqQ`5A(J^zFU1}7~K=RD!;~X^V%Z#Q|HvDs=(sfX(-00#;&{P;*)j<6hMhR{Z|H|mB zGcLtzqwTaYuF_~G-2!intSJBBt&xQSMU~M?W1zh=s{0+vR2$tH2$J_k)9IQ0$*As6 zV1730Nzr{Pbri(`tkskDps>-auf>AjR(*3Gs&?x2&p~6aZr2!wI;b0e0F0wLy#$R; z>JzIlPFMy^hN3QNzxz<;h2V{o_{<;iE1icbBhvza2n>)TvQG3soQL1WD)BZ^lByFtrzL zSP54jq_<{-+Qb`_k!sIm)Gn%fQ{OGM)dMixQFnij+Ffw zWCLZY)cJcU5AU7&JEas?t0(3G`@Py~4jMnGO)10Tqk6PI6#k@s(;tkV)dM{t;)}Yx z2N=GpMcSeEO>KwR2=+XV0rpc}MGntjYO}MbIcPj6C;o`$(@{up z)y$trE(bSFGn!1gYg!iLo;|8r^a?c(O|=mUPt6)F#?njEZzlwLYmWUuaa_}Q35@a4 z{Jj_qzMB3sLFuQ7r<^8#P4GQvcv7>LuE8nIT1#BJ%bKmzA^wV{h)}L-c3uU^HO+Rc znDkP#W@=mL9iwrjog1;5I&>$+X#(h|p2$Lt}9Z#Z8T)9ncaq#XE6D z5;d({QA^UCiUHp(%>g=D;kKs3W(-2IX5T>6QZ&OXaY0ixk4jP8)yxV5W}0ThJ+SN3 zHErmNo1r-q1ME!ACt6tF(`=!Df0m}jHyE0&`KvLExv!~Mjv_}hejFNeHBG#rVV06RGcKW2oeRbfmq5>O<1#v)A;S1hOYlV+ z@12R-MPoB(6j8?eSHYr7#%=Yq)VOTi-v-qy#tpYXwX4PpY1w(r*p^P*h&Jv(n=@jJ z4Jg?n*7#*d6miB`kHL4x*yspI?izpm8zgDQ7pI{w-MGphMTW787Ll38+vr#J?irgm zhZb4JtrZyUY~zxCXv{Hg(3rkkxyFkIK<_-`(bW+D!1x(CEFT(IOooMzjQuEq^s(`e zJ{W|2<4@!|e_||M227E$X@4|6HLkh`l&UV%)}m(C^;s%N%)9o{gXCe?Q@x;tZ8vlB z${+1^XEz4Vqg(VgT$kc*X9|T;Ank5+33Bbb8$U#=XZH~l%RJlta(fgJ-9LW=M`HKy zN*J2m{aXfVh5z6%4m?EuX-+BTmH%w<+HZs_x$7g?6MCEG!nCB`8H+)g-h1*;Xpzx- zz)(nd+`BWSF6H;W^cA%yy$6z`rKIK4gP8LPea6G60Q_SyP(RPP z^Omy0Uci3Fd?V7vT=_r`Sm?$}525DHO=!+}ly7?t1`nQp9;4>TTkQkM zF&?Y|nin5D9g@8H^RF=JI1io-?R|I~+BV?J$6ka^e!Qa_#?YTj^r#5nfB&Z6p*qVE zk-{^I-})P*5j?d4_#?Sf4md7yi}%2e;`2?>7|UNagQ0Q!!wmGr^ZH3(xX$mMfigGv zPD)Qn;iu`~gH-Nu9wc}8E%G(q3wuks%WiNy=Y#&H>&sUSf%O&KV+X8w!R2Y7e96^gp#3ZE=m$x!`A^z; zS;;G{G5BUeRckQV3KJTG#6?JZg+@=|SSc|5gx%}Gt`8JCWY8Tf97sfKm{33-*9$^U zcNF2mZyBaV2sdf57Afp$0}JDY!{o)iE?gao#v4Kd6TsXQoM(eFL740Xfr&!xG1P7e zC7+@8Z6TBPQzZ*AGhkqfFp69xsX`>ZNAKtbha%AA37dxjyFge>J2#&R-A4lEl`#Gp zRI3&?eE`Q-A#?*skl;2L3^roGQ`Bt5dbG38PFzEgPJ8kEYKU+UWpbl9iur%`T#1`s zLXx-WHxSUrMGM+M=_79W3I<KpA;k8LGCGWPAzJu z#RAGQ4;0l&D9(sJl;#*DzRm^vS@Bo^20uzPOaV%aSpFDlCx}aIASqRhNdWsjab+0# z9*E7!6JE{28VLTgk@$zU27tZ*VTw6K;gP{h(! z+AJG?r3-a=QCThaQ42K&nr3nG^V#53rw? zYPr&L+KrYcnIPyTJ&+dv1NMi~_i-r7q(&6wdM-_)w{p33zccOxeT5X;7icdeuhy{X zrF7L7wb#<8dEl><>?lC|MoJw4_1{Vj=uWDV+9Uz(ofMdb#-GyA05txRwmb*gZz(Sk z;%lYJaVX5>c*^`Vm#ckXi-lZb4ehODnJbWM-H^d_3@Rv(fZd4 zJhdAHo|4<&0>f$f9%U8=%KraA?io4nD2gCiKfVf*&dRS!z!)sgq#pvgDI1i4F+tu# zgMU|EJsd+)AP0p4rcj=K0DU#`i#nhTQd~U_m_)_*>rgvMkspL1$yYcOKvJP1nU?J@ z6b9X(T9smk0)y~bvFjgzeNhYvLCr=vPhSHLTjkTfsJbZ=|AjJs%1dui3s=6URE`*> zVk6`xDwl4Bh|@a4v0OEZu^dx#}>T zS!1dCJ_I#u)%XjzFt)0<$gwuX$sgzFNTnmH&+d?PR5gGi@181i@=bZGCVH7P;f?hh zDIPb+U?&uu>r1=k=9N(D?)<^a0k|M65wr_`&~YYk~f91Q&;9V6*r$Mh?{|xkN$5G^U_d41OwP$@OKJV2Y#OHngE^ds$ z-#@<$njPF#0s)7PrQ`Eq2Xcn!otuN%oIUG`iUsqu1*0WfSO%S(StzAnxUdT+VA~Nk zn9fgeWpgS}9A^p+a35yoRj(=Bg~R`ZLD((Y1)It~(~LHYJ?W3b^T^BJsIV*k_pb7V zs6IaR0NVEr#YXz6DXBT1MT-1o-Gd6}V7ia5^@QnLA4_wMlCz zzhQFaDX2eXi~|s6&Ze!Sv-FE;`|j+uG|68u!VJO|7ExB(q8^mdu(&lX!IuoD8Sv6o zlvuXxcrjF2eV;b7u1V?*@oQ};Y`+JVno`q3n4Yb>6#(ykBF@p*UG&*!4FOWSP2mD%t=*Q^0VK^kU4odv} zX1m&;zn1A&(BPTzatcwI^RE$Lw%`LJVX!6741@(%d>;KCg*9LF7y4}Y;rT$c<$Bsh zV#iO?gxa3#AEVEKFAs;7j@;=mL^$#1UKk!{9!#%77asF31Rml3G;2K0FE52yAKpQq zhE`vGeISZp{{A@xp5wDm8vaksM!jfNJ158=BIjEAL*l%Dbr`+*+2l)Eu+aeI3kBNp zxhRVKzl)=119piOCGRc$@f+fo1=E*xxgjk`S7aUq?8+bR7{gU_DO+N7UXNB_SR;_j zeQkv&px2*Y56~@rts!jZ6iOJ_`;PXK>;B)kZI?8M2v=6y1+v{(nI%x% zS;%XU__8XRg8Q+ZEg|2ZRlY>+1p7uA#HZN@E8qsP^Ak~oup7I9f1Yhh1baAJPkE{r z*`j*T^)hpy5MmZx?wa+Wz0a;umVr6j&% zj0XH0+pq?;?@T|{6ml(iSTVG)A2(P6*INscZ?!x2z zMm#`$_}X)54CI^o;)0#w<7u@K#2L+K&T`dH=oG>4(Q`7AXO9A940pbRB9_UyzM9Va`@px-DS#h&_Y(Ad;?t(0@iX5_Y4=}vp(j-P%9pnR!#8ey z1sCQ!Z%x6z8a|Y6q9437rS1OYUfaO;i!ZMNn3FJ42L>NOIvKT#RgwKlfs`ltC-tC(_VEL?->+4C<9gdPM=sGO61%3~PlHnFpHJlFb7M zt&(O^ir5EfMFH@?N{{H5Mrx#$t5BEt}qsNgw z8%_~e2ev#I0Pbu6?Ik+OIuVI4>%1N{Kjyd@eP@_N;jHNTJ>>4FlN3-$tg^FPdHNrCbV#f4>^f)$zc0|RqzE%Le&i;ymh#PFeE0Eq~9rFO1 zz*;$?NMuTy9we~~$&h=Ch1`I(w^2 zDrQ|vA@3;*DFVq0X4(#e`jTC#13O}EdXvNk zC1Id$vD%fOOlM8#%&!b~qc_c8GFcs33f^PmDae(@a%oQXh#lU6(SOXUJb;$ZTxrwC z6Sm_fC=1x6dl-d6Hu5DJi`bIpD2mxQnif1|y;?z132U_ie5LH;U7);T=9CKhn)TfW z@s(_QPq2SyYkE_LM-A(`3s=a3ciIm|OFrZ>3M(E-`4-mvP89fU_&oAA+VXaW5OIVL zTM0B*UYF8|+;}m~pxrsk2Fg)xK~6{y?mh)Z#Pg3!pjtA&(e2MgcwGaOa=w|g|HLnZ zE3itn6g)!#>Moe?Me$qMI1bo0;{KiBa1rOxc8z1=-;_e*C0a1(bV3~V3UY(RRR@6` zB2F_$U!*vhBIGy3wKNS&6z?`i<885d5w2O9xRXK>>Ea|xc*+oKZb9En@lgfX^;u#z zZQU#o^JpDWCeEWA(&wU^H<=FDFc4$=jo zv+;T1`F@bF=;;ZNFMfRvG)r!-1Kt|lWPD!RsUeJ6mqTH+^|xp<&JG(rMP7IAri_$b zQS`3ZJ%)~j+H<)fG~Ro}2gdAor5#ZRqi7GY6^mU3Io9k6<&rqFkzb*o3u|Hyfk&7n zZP;{WSLv5b+?ef1$UM%L(BssH?JI{=Up8Yg`utcqxoZ7c?VF!ya4zcVCWi#Jmr|Eli zn>}j+%nX)BPm@gM9SF4^GE5ifJJwlGez>QsCq+?8nB{cHEoF|i5b=!dTLJ8Mtiff} zs@Wq7+Wum7DY*8VyScB`kZ#A3p?2HMgT5eRB6wCa?6P|+fGaok+Dt_U*Fi85!Pm^!|8(-Z7jNiHSTPR$^?dU1`gU>w! zEq?Oht3mRMcdCzZ{>>eVfL+UTN-@A@LOaTxFcpc5Ss_NPlQ$ukXIla z!}16FlZ7v1fn6jlq&ID`FyLPZd@AfQ1V@RmBm$tNLL+iuKNFJ38($`@IR=vFLII`K zmkWC+CQ~5{w?XZNFpM4wFNG`BFyfV9zZ-n71$8|1trRBRfZR7i^lJ3I6|U0^SziS; zVD>wq?Q67F3uzS0e=nG|0_g`KHwG4Fip^I8^qy!n7_}_%=br$lXjB7+`=Sj^H*>^> zl=hh`c590wPuvrQ#s}i-r5J>VVy~&N?2%|kzoPJ1+_nLV=8N}zf%!x)O7yKS5Z6&c zU7={Q0yIV9jY1T~qR;@vQ*poz$So1yP)8DH6cIQq`ZO?p_t`fxdgCfk?f+jMrz zRk_^StGFHiTffQ;tx59eV4$YS;X|QKj(jKywGw$^2whplA<9p3Qy5(aW2&NFN61K1 zxQ0WiOhqkC4k{EqDfsbIVcs1iR!YY*H6-Hi75_v_q_?~mQNQQ46!rVei^(zZo$r8G zNe}ODp1=4%@CKc1;+_G>{uBe*r_XT72C-E3w7`nhc>g>XKPM#}iX@gmMQof6v5vrk*0Xau`E4vkT){5Fcq?7$?jCu4dCz7*D(d^UHPCGEAo z$IQcka-Tii1!eF?pdE7$+1K`H%x9z9peSa8^{v2P%8t0>;(3W?J)niR=rjkm9Ty!% zXzC-rtqVz~#hx$F7bv!B0TJiLHcx;SCfX>W+68fS3dZw_=t#@ut715ve0@!P{TU25 z#TWNcB#3M+`tFG1;-Ji3ak(kj?~CsBF|Wgy^7s){3q%LHLkh*Ddl3Izj6Va=a&hTg zX!usVKsj1fqBX_azKFX@LGo1`Pbr7BVpK3d&7{TT)3K9w(X`H9+87NB-6V4pXy`7@ zKLm!OQa1|bdq|IGqwknx{(-iP21spa?sY;k*@OWOma^&59U{fkp3iuxKfP+MOUu?m zwHwldZ-BWeod`l>j?^F@FnQ9DTvA)wEI^qe$#y(QDkM`1=D(Cek3zL-=@A{^@?MG~ z=hAm+E4`!f4R@w_m4$3Xm(o&BqPIL}D$mOGGsi^-$O;>dk^O_KLpbR&-Nzpe2R7V!Iz0jw;st z*|MUTNsggFg?)Qao>6#daF+xtp4@_@iwX}N1}{p{lGZ1e6nTi>NtYG#w&A|GrWiZ< z7eJ#GQ}TcoqtID`|B>Ppy{bwS&K$LGins?rb5L5-{PC2MPXuL%(vvpTB`9;ZgFRO{ z!^^P?7HOOJLqw#3FU@(b8%!pLVva!?xg!e=ZmEI!(jen4iVp@swv@V#zeYct02IhF zC|r7mxzY_5#NG@+*I8EoAjT+|Z71JX2gs$iLvc4G9OMJ^C*m0S+szGBszqlMCuJbh%(Mjg_DPb>#XHW*` zJ-&%z9A8{uRN9R3Aj3zz!-CZe?ws*SW&X2rC@y)rdbJXcLU8@aQTXw zjiC9CVYC(Yeg~$VFtIl%?S;?eEOZd2-Up?l@bL>soCJN_L{yyx{Zfc<5t>lK&=KL_ z9gw;T@%f+$6*kag{i@J11%20qiFa@{k_3~6(6B(L9{|c%LI~|RsutcG0OhBUwFg6K zCx%S{yNl>O_5b~$UP=sHcawL}zsI`I_`hg`{xq7FOs)Iho6uI8(+LoE(vJR+Vvp^e zka<*E^d3|m()%Rn>M1RurQtCtWiw=YNlEuW;w^>!c>qf~AHe!cJ!q?SfaKm0!*LQp z8Wg9bFY7Rxr*U`&`p!shpU@bjmqt0mx=^Wc3+Nms&HE0}aOnZfBqF8hVK6dETKyZ1 zm!)Vr!RD$I{{_W0sR8YkjFtw{do)IhrkQ1;^pYkix23~0TTYfb7$~4H{uh#W6dXG==9&&k}&Ypu-CMm#hU-t0?3BH=?|@3__rxg`3OHh2O_=rKH8Gt z%@xDIQP}m5q-vZ4=SbPKmj|f}8LyHh$%X;)h3LlbCTodZ;#sDP zCTt!6${b;e*P9-Arc}{c7%t+L#VCBmo}-MQBK~ZoSN_n%UOGpo{5wdcHNbU}1j=Z3 z!C~ttTqV{N1K=(t_=4o96iGRD9#T~TC_Sa9MG$sO`bjQQFDauOecn<_`ZdnuQp9eI zpO3T#D_}js>i36%#!vbc2o8Vgk&$c4z%tQiH=WKr zsr7GMfXR+@GS3wIWN0>Z`#f+>^QZ0W)3?up<};3xzh$9$2N=3&Rs+y4?m{QcELjx@ z%BA71XkXTBFld%vK82PIZDgpn@d0@lcD}2@c<=h+44U1Z0x%CZBJZVscp8k+<7X#n z9b(7E&Vj-9EIk@@4(zE5U>sS8o+zByns0!JU?#EPyT;Nlg5)}zKt~PSVx`Z}cb5gx z#)K>uODEJnV7J>~yb9Q;r%<4j8PXc?CEGp}ro3ZKPNVjX+1sPfOwS|c!(#wn=k)VlZMwYPuD=S(6ns2O{ z)`mY=C2cqS$sW)~hgw!nuXZ!O*cpwMydj-eVa0cTf+n`ys{o*Oyzya3I?794Krs)l zI1DX9cx%eAisa$$puEoSAdC9XJ)XlCrcrph0CW&q$V2-;Xc1?gu(Oz(TR_@V9!$^a zS3Ha2hOc=G0kyY0YzB0%;$It~c+b7lfd7Gi?hOlm@-_}`v0lY=rlRz;#vG`QjtZ`4wf6Nr!yLFvWYYZ3Cw*H)JkM2 zlz*ATCapo^E!N%-0QcCfM$k2jjUtEMBle>L!XC4y$*ASC9*59Z%H(A*;2G;X0?@D7 z$OBNhl5OolCu@9UH8c_X#0)8h@RJ>w0J*=|s=8qO&05KjWWzly&}hqLukL*i6>CWQ zWgYp{D-iF*_fG@6Ghe(FSHzQdSP2b}@sE)Z5x{@tg8c;lK<9}B^A{b!5W*Xc#85?Y zPIuHr9!M_mD1N&W_+t5SI@T(V$I_9T@qG3{)UNZ9-)ThnVY+8-@>qQ@SeU@aU7;c2 zapRy&5f7#$*4O;^2`KZ02c&|;Lij|-v>g@3{6wFRaNQFIo)Yd-6e?V3Hv;T&Lcdm^ zOcj1H@ZA#**@L85_-haZ!VP>FCcP0{8iJ%&u)hcG9mS#rxMx{6whu(aaZgsKtzrhw;3Wz#4Ax?cqv{XZ+W$t_ZJlX zCJrbCw3!su=Km)Gb@rnBieOp|4Xz5hAW+>9^b9X$b4Qpq3-;URA4kQ%|-Tl$`R4}xMq!J-<0~%in!}g=`m5@uhnXd(tU#NW$s^((gJ_@}k!1zN* zC70$;VZtmFzl7#mSpQo%|AcbPY{co57HKQ?*@XgAr~wdYFQ!yNH3zXJZG3kZzfq>y zQL%3t_&vl0vmwGy44VfSe{s@zkOYZ^T~IqKZu<<%2yrJR3q*?92`Hk)EA7A+BU;9x zmMFHOEuTr^+8WBLOcS$?qM9x$C`Bz-96|G^JTZ;j--Ti>xjl=-?==7|7u)PdV}&@O zIn;h34*iI}cVeCdhH7!*0g!wXPc_3BeiwJs%A`gt3xX{cQuhOBw3IGVG|o!8Ngf|- zX}~h_mpMyT;~>{XdU+fw9+SR2N2iz6k?i%B?Dt_1PGaqf;*^xu7W}8BACw^%D22}j z_8IBWcQgj!j2$qXmAZ5E1xs~i~eJQ0U#xh4L{{@&_ z$=eltc~VnK=XxNOCP3gr=?wYO9!b%jQ0=jFECdYsQWpwMJ&~g5P5i8lwD$x+%On*g zW;~Z{AAq!6a!`P@LUKQkqDtE4RWbmNsvrv4e~<=EgQSmA;3&xbBz+?X!)K{@HHt6N zSlR{hRZ69IeXX=-HB2&-i|Ki5F8h!l+d?)LA;?l*PdAIBY;+PeCpntp5zg|~I*{ig zZzZSSF}b(^Bwq3{TGXD9v-Gr~`=q>c8H!W#kya3KT282f+)#PIJ@B8Ghs1;blI)rR zlFRZX%8ZMX?P#tPFE{%NwCnQ5(J=dl98GJE6xp~6;#1|SG+fCn*{1|Ww!E0mQhY2s z)2aOVa#SN=mdedllt1uHeiDMBOr9Tr;<-GURt)9x%=Un(kY{uN=nFZt4ftQm&XfaE zEgwDvx$ouCHX!*fU-E!XHS&W8D1ON50;u*=eq#^0zvS7&Kw_;pM5|I8MdS7;Y!#Qg zqt8yE8b>Ds*egaCfzd&6bP_rp6?<<%ypzI$He7iq25dsjQ*qcBa*rvx(fi*^(P9hw zycLe*#6GTAL7o90#ccy<=&P7i2nIjJ&>^5aqd2@0eL;%N)~KCTG^1p{U_}hA&_fiG z0juLxJ%~5eYhutIrzoMrq2m=>E&~0wqD2FYQL^H9If@j;whKT=Ra7}c$2$t=_n^G1 zNKD5tq$%bP!JwuqrvJbd%20f;MPsHyMH7U3ie?^AJWDYy93rz7bGo4MzG6p1T<09c zVM-p%Re0(j0yIx??HWiQC=S~Jrbw}!rYyyZuzILHRqXj2eI<$=f6;YQ9H$x2GsR5G zL@raDFobHAii2%{@w+ay4Hv_?yo5NHy@oqX3&oTU$2*W*F5OlzxU46qyS#3`>D(*9;d)7=(1g zrO6auC^0;^7p)%*bIILeshUMjZ4cGbjerSK@mshev8s1jfXPyYQ9P?i_2*EV*Q!hO zD*mBrX^uvFqcl1pz{}_cZOrpF+R+y%r;WN)!}=hju&t;?8+pn;wQmMr<&| zmm0YZ1!aYi3!QNH$|!afu-_VKgF*7nsGS0spN+C;Z}T^!i4rJ(8U;`w#7v!Bi$1-h z`oI7PbW@+FjbF#qR}4_|R==!--oEPT3qf;Iy_lxcr`0_r8WOc@DEdOwZ=4|Tg8Fz7 z7$Vem@4+6W?&uBdE9!X_xW3V9@7rKVR1Y46zT4{gqftv!`%x-hrg~l`*z@%2R`+bu}+%G zUZ8Z*=vo8CL({|uH6P9FjetI>nbr#0pVg>tgCR^as2jkdG=Ht7OQF#_#-mKoyeh*r zNYQMqR|ksYuTho+h)Ms_vVMv`x;(Y!hz4g_7Qw(x#BBKrU%zGp#x=LCJDF5H}gXm>jY9ivAhx@!o_S;$W0Qr9zhL3vKXLMhyx};wHmP_ zO`Ke$e$n7NEm>{=OqevR2h5I=hE9PpF_NV}MBJ1b)6(aP?3aQoa!r0{49aMECVh8e zWPkdd#U%OPEws$LEmu85kt{dL!9`D%^JtZyCU>JP30ZRNP&8)CTMcn9=g6*gP|K4Y z;5U#S$oFeN`A8nJ2IBMOHS2-$M2@CaVxin-HWV$Ao1FzivF!H(jnCve;be>acrz?} zA)nhoKTrHpt|^AXZ)9IgH2-(MK3xIo4i%Yb?vhWA;u^N+3~c+sw6r(ClAm8rqsSex zV#Ph%DhY)%pI8nq7oO1yC`Wk4D=>KRZk4dYn_Js~;S|3_lFo3|4v+-#!Helfu)=v8 zdY4CV^JKt8@}K0yi{{~mC}KD#OJjK)r7R@z$$enrEj~U2{I~huQ#5S+?Q2kG^5x`O zy2stEQOn|WDL|Ud87*HQ^VZ}v&gX?=LGpxe{eWRB;4{2vuWBK$rtigbo@0X6a=xZ7 zE`9~q&OlMc@6z_&cRbDkFxC9s3CMlV^Cv)=@BAYjTvWpsQ{NBXp1wIh`Px5o4<0rT z;%$VBj%K}?!v^QQ0k~~{1UA95E@ffm!GhA3<`f? z&rFC25T=uZ;H+@s6i9-F6*NH(5lqOfeL)yUvF>oe0_!sD7wXg-jgi8%wx~r3`^hbM zNoczh#bx2&hLC$jh>L+1*Mvjf7?K#haF8Z`u|j$mfW`|Qri1aiP=7mUZU{rj0d`YZ zLz%gWLg)~>214peFx(QtH6Xbyq_2SZWa0J>G^PsPZ!i{jgvu0vr3vaY;7b>V&^>cc zD1QWj_k|WBYPmw%UNGbd`V%`KFkk3FKZNvLXw(N^vT|Xp6JTBlUo1fLQiw$A)1Uit zi-Lx8>n$_rvCZl{tl5`QA6@(Zs*m;qkLv*0f*olD;g)P5C42g_6@$y&e({YSB}&FLiBal_3aYy6K(0H5&U2gYTh!9KK1YF`4x$^P^bowA9RmQ(9d zmh!a14VuRAImO~&-QNt@#?17S#?gK-F$xyc(U&YCwLl(T#G1KOOO z8$dHRgS-**l3oC3epA}1xj>`Of^7>=@4~PxI#ds&iwg#Tbjcfv5-oj8uBB!B$p^JO zsXIQesHEc>RvJIX=T&DV(64r)Q_%{Bpvm>X;`sFv?uC%^7T(1mh`tIb4G-F>gpqDx8L|Gpe z>>t|WYRRswCJHOoHWBpJEb;-WHtgp)VB4}hvdxZJ(^Au(`MN-?1Iu!PNscU%Hc`MY z?2f{jiI36f!X}gV?g*<#a}!r~iQau~Y&Sjj+?fYmv!kr}5vb?EPSIINo~(Hiieq|a zLAxKl*uqti>&-ThSN}NMPN8rgwvvKnzRa;5H1uP_YEb$!Ppmtn41N_&N3(3s1eL2k3bQ^^b_VnjdQFl5Jf2a zm!4SXStm-~2xDGJV7$NU2R@e%)OKbowc`mcV zT`?qASW#=JeUmHSEQ+*`VT1RBFP06`JE1d<#Z&%YJew?G5U#Vy^h0?! z*eRMg++-27d`)19Ca5K{z*}HUVk=j|&|7Rl5EyQ=iL}cznH4_-b_#0{0L)bOo`Okt z*s?^_?y>_1K$*rGxI(9Nwv1{SEdDsH%`%zQ2~_W~wX{meVl61pnav#Oe!R~%P%=mk zYrhvoF8j0{MIN)Gv;H2ia#PeEvdy6|`w^?#7sX@NwgVdTSqXVypD_78C<~a1f(V5y zW-c&`*eZId7qed7$d~n$EvK^rOIX1>Xi>_B-G)xjSOO(;l(Bl0Q}dh!2Sc@Tw(kkX zqJsUT4WTcXdtacvWH0ErkymWSG>CZ3`g{asCEL;$X1`%e|HV+gWp!=ASH<>KV$|NT zMw8K4%}!z`f*zZ;6W`-Oje(Gn)9Lv?stYB>jJ`q-tTA`#ypyq~r^4=WzuUpi@iF8ToRF_4 zx6j0GSfxsn>dwUf$?kJu%XAx0{GUCU;;C~E(L;5?Zc0sBSh5mg78&IOdU00@=`EQ@ zugj%RtpT^plQv2%Z#My-*9@bF(dG@+z})FVrxWb$_YVv^U_?LhqE9lwe=FvrAA{1G z)oBSe99T5M7Jo)m%W2bVhp<-Q?p$1s|6LZ1hqP{Ewt%qvp^G5vQEw*9@A-z@SiMbu zptsKvn%nnnp~UBbt;YdjcrCp~#&r1$dX2q9zQ=L>DbzatOCnk(Y#gdbWnx!~eocBq zv-ins$e}W2-bH+#T1#u`X*u+ao-WJ>!;A$l0WtH!BM6@L&Kmz`|IlJg=WJYz&vOfU z18rV2GYr)Hv4^3`g6pGU_`+>feHL>QnmSEl8zpDGT$BA$3tj0Q6YAD;K>h_4CoP zDxe?eS8t`+#G17f7+m{#E&i`doez7q?&t^JZBNOCu;)=nTAsQxr!(kxW0rrx08jRS z-kknyZ5RkovCg#ZAds#0S~`t4(Kn-vwpq7E0BN29r2;N$@{~e<_|s0YfpwReI2xE& zSa1$#uCg2=y2gGV`|ti5v7XW)?O2_343HCRLSyO59@A^ugBALM$D2)~{W5-R8cokn zvX-<$Jj42~gl+l|=1U8(Fc#$XN7xZ9uFef+mkb3`*s?RI<*=Q!73c~3MLxx1HZKdH z6)eOS#e1fyMPChL?vVR~1yBgdnzuOy!%y@5*Pzo`ek}}FAe84lK@rUtRiN=EFEImU zvYu~kP!`l1LECW&B(6!ex9*SajM zrDsUAaGPdz@q#=IW1JvF(wE@2ptgeCJHi7GG-e1rXb(@ekVM-l^8^oiQa=_3QS7Nu z7(W@}ON3c!^gS1>O#${&h>=me5n?IHqFOk(6tz!66)h>h2^aJiAor(mkjBJJj9rGB zm6)uiD=JpdDKJiAuQ|YW6>COfygWqPM&S1r)#MKG6AO2P;iOorK;Id$UM^5V#7_T0 zQkYmoiC>Z8NH6GnS;X@d28x}U0yAFRMhn{nv2nvc3wp8f00_JzPM-qo4DkSsSGH&~ z79*4=E~|j}$Ko(LRIE_EO>?>uG0Yuk&&6yb2z)7aA}{e9aSvU|YO(xpuzwOq^aJHL zF@S=fKgHM{(8)}yyB&O1_~~hY+2NN*=%L{xx$OpxtE4i*jCiHk-{l+F+*xddq9dMN5mutAo z$erH-B}w*Ep_U?xw77dBZ#@RSPx6;FFxNt1yB{Q$3NsgAS}8^yg*V(DM&m6-6#2YT6%u72=PL4PbzH8PL0cp$ z6)*14MOOA(`ror|a8X|%EXr>J)D3-UW8B8Ev^v{#{4MA=|D1)Zv1MUbwCJ~P-h-xX z9VuwDy=?+C-qF7|x_1t00=CPH4+YY7mPHGp6m}~G(zDs3Qc&cx#8&7lWdl0n3cO-7 zM`C>5v%9p3t%faa4D?#|*DefZd8ZA|i7W81mU%T<-KWu+-8vb|KOtP2k zy8}U|*>aA7D`G8LLeMF$5ATh>TE1W<#NQM;KY?5iQB4o|YVk%pfVxX5YA|LrvL47Np0R=~RFpXFF-{h!5LKnVG)q z9Bsq#V{<#9(VsP<^xOazr$XZi);JHEo@B!)c8b*c7Yxplrhh{5OY)lm5_7rhD~NZMoBx2?adNxmKuMO*mi%{}^eZ<}*5ayJ z&j7U3yB1SsQ%<7mgU|uVcD`nl>v4CFR{VYCjcykS(H(oge0h=-ofopRn zWg2cfN1nv(Rpd+FQSWcG?A~)3lzZ;^p=EFGW60WKWG+?U zb7F-Q95}*y-v^&7drL2RH}-_0;O?yJY?1mV&^Ds!Rvn^ioBAlvFj?3`p4(T!f2HJa0^?{6k{3$oI z_d%LA^y%~j_VxYdh?f3-+4BFW8~IblSNB1bmV zanWotboFAn7%TgW(2CH3lx=#EHlT@2rch)J40^NmO=q`sUnZ^V>b9n>_GPozR^_UzYq^Svz^mps;|Qmuylhq~0_l6~8= zJDYo24!zsm3ON!>+?2wUv6z~Zt8dK*vipBY++A&0$!zf;7uLb_!h#DjW9mom7aL*8j5hql- z6WJM#Ts4UV)Rc7wgW$Os&;-6Xt-5~}bzF5FzpSrzLa#`Vc2nx(nG`a?mc+-)3$DVz=2FMut$v8>qdrc9`fL+6J5#1h6XT zL+~zhCJ$lgE^|6iWRu(AzejMPf=1*7191ONI1v~0VuDbYKSq6l1N#sw(0Y*(SYRu% zGk*;46xqqmm8NkVe@WAV;2e{}7$nrsConfh+YA3Z?JyFA%AdmYJeM?i8lFF78&2b> zurPqEFntE~_c`huV)r@9fsDWj+X9h9RKS%A!dP9G!3Qjy9>LIqwSh%8xsm=wy;m(* zP%`wc+QPTm#82g!Ug0~HYBOHQ>1V7)K$%_xzeJ%?lhbx(jAD9GyR5r{%Cs3X6KglHH4 zxy19I?40QE|8xNE67_NF=PR;5MV#6^g0qB5jw4&*#KzxOreQ3V^lqN0b<0fn4xNND g#&Kks34JBI$-7?W+_JW_J0n@2U{=rw+lqerZ+t*~?*IS* diff --git a/TrafficLightsPlus/Debug/TrafficLightsPlus.elf b/TrafficLightsPlus/Debug/TrafficLightsPlus.elf index 24dc3377abd57c682c825fde2ef06aeeea9cbcc6..39feb6559131b237b12df6e5be519c6b8d746005 100755 GIT binary patch delta 321924 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
    : +0800062a
    : /** * @brief The application entry point. * @retval int */ int main(void) { - 800058e: b580 push {r7, lr} - 8000590: af00 add r7, sp, #0 + 800062a: b580 push {r7, lr} + 800062c: af00 add r7, sp, #0 /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); - 8000592: f001 f81f bl 80015d4 + 800062e: f001 f823 bl 8001678 /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); - 8000596: f000 f817 bl 80005c8 + 8000632: f000 f81b bl 800066c /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); - 800059a: f000 fa85 bl 8000aa8 + 8000636: f000 fa89 bl 8000b4c MX_CRC_Init(); - 800059e: f000 f87d bl 800069c + 800063a: f000 f881 bl 8000740 MX_DMA2D_Init(); - 80005a2: f000 f88f bl 80006c4 + 800063e: f000 f893 bl 8000768 MX_FMC_Init(); - 80005a6: f000 fa2f bl 8000a08 + 8000642: f000 fa33 bl 8000aac MX_I2C3_Init(); - 80005aa: f000 f8bd bl 8000728 + 8000646: f000 f8c1 bl 80007cc MX_LTDC_Init(); - 80005ae: f000 f8fb bl 80007a8 + 800064a: f000 f8ff bl 800084c MX_SPI5_Init(); - 80005b2: f000 f979 bl 80008a8 + 800064e: f000 f97d bl 800094c MX_TIM1_Init(); - 80005b6: f000 f9ad bl 8000914 + 8000652: f000 f9b1 bl 80009b8 MX_USART1_UART_Init(); - 80005ba: f000 f9fb bl 80009b4 + 8000656: f000 f9ff bl 8000a58 + + /* We should never get here as control is now taken by the scheduler */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ + starttick(); + 800065a: f7ff ff5f bl 800051c while (1) { - breadboard(333); - 80005be: f240 104d movw r0, #333 @ 0x14d - 80005c2: f7ff ffab bl 800051c - 80005c6: e7fa b.n 80005be + trafflight(2*1000, 10*1000); + 800065e: f242 7110 movw r1, #10000 @ 0x2710 + 8000662: f44f 60fa mov.w r0, #2000 @ 0x7d0 + 8000666: f7ff ff6b bl 8000540 + 800066a: e7f8 b.n 800065e -080005c8 : +0800066c : /** * @brief System Clock Configuration * @retval None */ void SystemClock_Config(void) { - 80005c8: b580 push {r7, lr} - 80005ca: b094 sub sp, #80 @ 0x50 - 80005cc: af00 add r7, sp, #0 + 800066c: b580 push {r7, lr} + 800066e: b094 sub sp, #80 @ 0x50 + 8000670: af00 add r7, sp, #0 RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - 80005ce: f107 0320 add.w r3, r7, #32 - 80005d2: 2230 movs r2, #48 @ 0x30 - 80005d4: 2100 movs r1, #0 - 80005d6: 4618 mov r0, r3 - 80005d8: f007 fc5a bl 8007e90 + 8000672: f107 0320 add.w r3, r7, #32 + 8000676: 2230 movs r2, #48 @ 0x30 + 8000678: 2100 movs r1, #0 + 800067a: 4618 mov r0, r3 + 800067c: f007 fc30 bl 8007ee0 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - 80005dc: f107 030c add.w r3, r7, #12 - 80005e0: 2200 movs r2, #0 - 80005e2: 601a str r2, [r3, #0] - 80005e4: 605a str r2, [r3, #4] - 80005e6: 609a str r2, [r3, #8] - 80005e8: 60da str r2, [r3, #12] - 80005ea: 611a str r2, [r3, #16] + 8000680: f107 030c add.w r3, r7, #12 + 8000684: 2200 movs r2, #0 + 8000686: 601a str r2, [r3, #0] + 8000688: 605a str r2, [r3, #4] + 800068a: 609a str r2, [r3, #8] + 800068c: 60da str r2, [r3, #12] + 800068e: 611a str r2, [r3, #16] /** Configure the main internal regulator output voltage */ __HAL_RCC_PWR_CLK_ENABLE(); - 80005ec: 2300 movs r3, #0 - 80005ee: 60bb str r3, [r7, #8] - 80005f0: 4b28 ldr r3, [pc, #160] @ (8000694 ) - 80005f2: 6c1b ldr r3, [r3, #64] @ 0x40 - 80005f4: 4a27 ldr r2, [pc, #156] @ (8000694 ) - 80005f6: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 80005fa: 6413 str r3, [r2, #64] @ 0x40 - 80005fc: 4b25 ldr r3, [pc, #148] @ (8000694 ) - 80005fe: 6c1b ldr r3, [r3, #64] @ 0x40 - 8000600: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 8000604: 60bb str r3, [r7, #8] - 8000606: 68bb ldr r3, [r7, #8] + 8000690: 2300 movs r3, #0 + 8000692: 60bb str r3, [r7, #8] + 8000694: 4b28 ldr r3, [pc, #160] @ (8000738 ) + 8000696: 6c1b ldr r3, [r3, #64] @ 0x40 + 8000698: 4a27 ldr r2, [pc, #156] @ (8000738 ) + 800069a: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 800069e: 6413 str r3, [r2, #64] @ 0x40 + 80006a0: 4b25 ldr r3, [pc, #148] @ (8000738 ) + 80006a2: 6c1b ldr r3, [r3, #64] @ 0x40 + 80006a4: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 80006a8: 60bb str r3, [r7, #8] + 80006aa: 68bb ldr r3, [r7, #8] __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); - 8000608: 2300 movs r3, #0 - 800060a: 607b str r3, [r7, #4] - 800060c: 4b22 ldr r3, [pc, #136] @ (8000698 ) - 800060e: 681b ldr r3, [r3, #0] - 8000610: f423 4340 bic.w r3, r3, #49152 @ 0xc000 - 8000614: 4a20 ldr r2, [pc, #128] @ (8000698 ) - 8000616: f443 4380 orr.w r3, r3, #16384 @ 0x4000 - 800061a: 6013 str r3, [r2, #0] - 800061c: 4b1e ldr r3, [pc, #120] @ (8000698 ) - 800061e: 681b ldr r3, [r3, #0] - 8000620: f403 4340 and.w r3, r3, #49152 @ 0xc000 - 8000624: 607b str r3, [r7, #4] - 8000626: 687b ldr r3, [r7, #4] + 80006ac: 2300 movs r3, #0 + 80006ae: 607b str r3, [r7, #4] + 80006b0: 4b22 ldr r3, [pc, #136] @ (800073c ) + 80006b2: 681b ldr r3, [r3, #0] + 80006b4: f423 4340 bic.w r3, r3, #49152 @ 0xc000 + 80006b8: 4a20 ldr r2, [pc, #128] @ (800073c ) + 80006ba: f443 4380 orr.w r3, r3, #16384 @ 0x4000 + 80006be: 6013 str r3, [r2, #0] + 80006c0: 4b1e ldr r3, [pc, #120] @ (800073c ) + 80006c2: 681b ldr r3, [r3, #0] + 80006c4: f403 4340 and.w r3, r3, #49152 @ 0xc000 + 80006c8: 607b str r3, [r7, #4] + 80006ca: 687b ldr r3, [r7, #4] /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; - 8000628: 2301 movs r3, #1 - 800062a: 623b str r3, [r7, #32] + 80006cc: 2301 movs r3, #1 + 80006ce: 623b str r3, [r7, #32] RCC_OscInitStruct.HSEState = RCC_HSE_ON; - 800062c: f44f 3380 mov.w r3, #65536 @ 0x10000 - 8000630: 627b str r3, [r7, #36] @ 0x24 + 80006d0: f44f 3380 mov.w r3, #65536 @ 0x10000 + 80006d4: 627b str r3, [r7, #36] @ 0x24 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - 8000632: 2302 movs r3, #2 - 8000634: 63bb str r3, [r7, #56] @ 0x38 + 80006d6: 2302 movs r3, #2 + 80006d8: 63bb str r3, [r7, #56] @ 0x38 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - 8000636: f44f 0380 mov.w r3, #4194304 @ 0x400000 - 800063a: 63fb str r3, [r7, #60] @ 0x3c + 80006da: f44f 0380 mov.w r3, #4194304 @ 0x400000 + 80006de: 63fb str r3, [r7, #60] @ 0x3c RCC_OscInitStruct.PLL.PLLM = 4; - 800063c: 2304 movs r3, #4 - 800063e: 643b str r3, [r7, #64] @ 0x40 + 80006e0: 2304 movs r3, #4 + 80006e2: 643b str r3, [r7, #64] @ 0x40 RCC_OscInitStruct.PLL.PLLN = 72; - 8000640: 2348 movs r3, #72 @ 0x48 - 8000642: 647b str r3, [r7, #68] @ 0x44 + 80006e4: 2348 movs r3, #72 @ 0x48 + 80006e6: 647b str r3, [r7, #68] @ 0x44 RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; - 8000644: 2302 movs r3, #2 - 8000646: 64bb str r3, [r7, #72] @ 0x48 + 80006e8: 2302 movs r3, #2 + 80006ea: 64bb str r3, [r7, #72] @ 0x48 RCC_OscInitStruct.PLL.PLLQ = 3; - 8000648: 2303 movs r3, #3 - 800064a: 64fb str r3, [r7, #76] @ 0x4c + 80006ec: 2303 movs r3, #3 + 80006ee: 64fb str r3, [r7, #76] @ 0x4c if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - 800064c: f107 0320 add.w r3, r7, #32 - 8000650: 4618 mov r0, r3 - 8000652: f003 ff65 bl 8004520 - 8000656: 4603 mov r3, r0 - 8000658: 2b00 cmp r3, #0 - 800065a: d001 beq.n 8000660 + 80006f0: f107 0320 add.w r3, r7, #32 + 80006f4: 4618 mov r0, r3 + 80006f6: f003 ff41 bl 800457c + 80006fa: 4603 mov r3, r0 + 80006fc: 2b00 cmp r3, #0 + 80006fe: d001 beq.n 8000704 { Error_Handler(); - 800065c: f000 fb5a bl 8000d14 + 8000700: f000 fb5a bl 8000db8 } /** Initializes the CPU, AHB and APB buses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK - 8000660: 230f movs r3, #15 - 8000662: 60fb str r3, [r7, #12] + 8000704: 230f movs r3, #15 + 8000706: 60fb str r3, [r7, #12] |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - 8000664: 2302 movs r3, #2 - 8000666: 613b str r3, [r7, #16] + 8000708: 2302 movs r3, #2 + 800070a: 613b str r3, [r7, #16] RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - 8000668: 2300 movs r3, #0 - 800066a: 617b str r3, [r7, #20] + 800070c: 2300 movs r3, #0 + 800070e: 617b str r3, [r7, #20] RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; - 800066c: f44f 5380 mov.w r3, #4096 @ 0x1000 - 8000670: 61bb str r3, [r7, #24] + 8000710: f44f 5380 mov.w r3, #4096 @ 0x1000 + 8000714: 61bb str r3, [r7, #24] RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; - 8000672: 2300 movs r3, #0 - 8000674: 61fb str r3, [r7, #28] + 8000716: 2300 movs r3, #0 + 8000718: 61fb str r3, [r7, #28] if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) - 8000676: f107 030c add.w r3, r7, #12 - 800067a: 2102 movs r1, #2 - 800067c: 4618 mov r0, r3 - 800067e: f004 f9c7 bl 8004a10 - 8000682: 4603 mov r3, r0 - 8000684: 2b00 cmp r3, #0 - 8000686: d001 beq.n 800068c + 800071a: f107 030c add.w r3, r7, #12 + 800071e: 2102 movs r1, #2 + 8000720: 4618 mov r0, r3 + 8000722: f004 f9a3 bl 8004a6c + 8000726: 4603 mov r3, r0 + 8000728: 2b00 cmp r3, #0 + 800072a: d001 beq.n 8000730 { Error_Handler(); - 8000688: f000 fb44 bl 8000d14 + 800072c: f000 fb44 bl 8000db8 } } - 800068c: bf00 nop - 800068e: 3750 adds r7, #80 @ 0x50 - 8000690: 46bd mov sp, r7 - 8000692: bd80 pop {r7, pc} - 8000694: 40023800 .word 0x40023800 - 8000698: 40007000 .word 0x40007000 + 8000730: bf00 nop + 8000732: 3750 adds r7, #80 @ 0x50 + 8000734: 46bd mov sp, r7 + 8000736: bd80 pop {r7, pc} + 8000738: 40023800 .word 0x40023800 + 800073c: 40007000 .word 0x40007000 -0800069c : +08000740 : * @brief CRC Initialization Function * @param None * @retval None */ static void MX_CRC_Init(void) { - 800069c: b580 push {r7, lr} - 800069e: af00 add r7, sp, #0 + 8000740: b580 push {r7, lr} + 8000742: af00 add r7, sp, #0 /* USER CODE END CRC_Init 0 */ /* USER CODE BEGIN CRC_Init 1 */ /* USER CODE END CRC_Init 1 */ hcrc.Instance = CRC; - 80006a0: 4b06 ldr r3, [pc, #24] @ (80006bc ) - 80006a2: 4a07 ldr r2, [pc, #28] @ (80006c0 ) - 80006a4: 601a str r2, [r3, #0] + 8000744: 4b06 ldr r3, [pc, #24] @ (8000760 ) + 8000746: 4a07 ldr r2, [pc, #28] @ (8000764 ) + 8000748: 601a str r2, [r3, #0] if (HAL_CRC_Init(&hcrc) != HAL_OK) - 80006a6: 4805 ldr r0, [pc, #20] @ (80006bc ) - 80006a8: f001 f8dc bl 8001864 - 80006ac: 4603 mov r3, r0 - 80006ae: 2b00 cmp r3, #0 - 80006b0: d001 beq.n 80006b6 + 800074a: 4805 ldr r0, [pc, #20] @ (8000760 ) + 800074c: f001 f8b8 bl 80018c0 + 8000750: 4603 mov r3, r0 + 8000752: 2b00 cmp r3, #0 + 8000754: d001 beq.n 800075a { Error_Handler(); - 80006b2: f000 fb2f bl 8000d14 + 8000756: f000 fb2f bl 8000db8 } /* USER CODE BEGIN CRC_Init 2 */ /* USER CODE END CRC_Init 2 */ } - 80006b6: bf00 nop - 80006b8: bd80 pop {r7, pc} - 80006ba: bf00 nop - 80006bc: 2000002c .word 0x2000002c - 80006c0: 40023000 .word 0x40023000 + 800075a: bf00 nop + 800075c: bd80 pop {r7, pc} + 800075e: bf00 nop + 8000760: 20000038 .word 0x20000038 + 8000764: 40023000 .word 0x40023000 -080006c4 : +08000768 : * @brief DMA2D Initialization Function * @param None * @retval None */ static void MX_DMA2D_Init(void) { - 80006c4: b580 push {r7, lr} - 80006c6: af00 add r7, sp, #0 + 8000768: b580 push {r7, lr} + 800076a: af00 add r7, sp, #0 /* USER CODE END DMA2D_Init 0 */ /* USER CODE BEGIN DMA2D_Init 1 */ /* USER CODE END DMA2D_Init 1 */ hdma2d.Instance = DMA2D; - 80006c8: 4b15 ldr r3, [pc, #84] @ (8000720 ) - 80006ca: 4a16 ldr r2, [pc, #88] @ (8000724 ) - 80006cc: 601a str r2, [r3, #0] + 800076c: 4b15 ldr r3, [pc, #84] @ (80007c4 ) + 800076e: 4a16 ldr r2, [pc, #88] @ (80007c8 ) + 8000770: 601a str r2, [r3, #0] hdma2d.Init.Mode = DMA2D_M2M; - 80006ce: 4b14 ldr r3, [pc, #80] @ (8000720 ) - 80006d0: 2200 movs r2, #0 - 80006d2: 605a str r2, [r3, #4] + 8000772: 4b14 ldr r3, [pc, #80] @ (80007c4 ) + 8000774: 2200 movs r2, #0 + 8000776: 605a str r2, [r3, #4] hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; - 80006d4: 4b12 ldr r3, [pc, #72] @ (8000720 ) - 80006d6: 2200 movs r2, #0 - 80006d8: 609a str r2, [r3, #8] + 8000778: 4b12 ldr r3, [pc, #72] @ (80007c4 ) + 800077a: 2200 movs r2, #0 + 800077c: 609a str r2, [r3, #8] hdma2d.Init.OutputOffset = 0; - 80006da: 4b11 ldr r3, [pc, #68] @ (8000720 ) - 80006dc: 2200 movs r2, #0 - 80006de: 60da str r2, [r3, #12] + 800077e: 4b11 ldr r3, [pc, #68] @ (80007c4 ) + 8000780: 2200 movs r2, #0 + 8000782: 60da str r2, [r3, #12] hdma2d.LayerCfg[1].InputOffset = 0; - 80006e0: 4b0f ldr r3, [pc, #60] @ (8000720 ) - 80006e2: 2200 movs r2, #0 - 80006e4: 629a str r2, [r3, #40] @ 0x28 + 8000784: 4b0f ldr r3, [pc, #60] @ (80007c4 ) + 8000786: 2200 movs r2, #0 + 8000788: 629a str r2, [r3, #40] @ 0x28 hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; - 80006e6: 4b0e ldr r3, [pc, #56] @ (8000720 ) - 80006e8: 2200 movs r2, #0 - 80006ea: 62da str r2, [r3, #44] @ 0x2c + 800078a: 4b0e ldr r3, [pc, #56] @ (80007c4 ) + 800078c: 2200 movs r2, #0 + 800078e: 62da str r2, [r3, #44] @ 0x2c hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; - 80006ec: 4b0c ldr r3, [pc, #48] @ (8000720 ) - 80006ee: 2200 movs r2, #0 - 80006f0: 631a str r2, [r3, #48] @ 0x30 + 8000790: 4b0c ldr r3, [pc, #48] @ (80007c4 ) + 8000792: 2200 movs r2, #0 + 8000794: 631a str r2, [r3, #48] @ 0x30 hdma2d.LayerCfg[1].InputAlpha = 0; - 80006f2: 4b0b ldr r3, [pc, #44] @ (8000720 ) - 80006f4: 2200 movs r2, #0 - 80006f6: 635a str r2, [r3, #52] @ 0x34 + 8000796: 4b0b ldr r3, [pc, #44] @ (80007c4 ) + 8000798: 2200 movs r2, #0 + 800079a: 635a str r2, [r3, #52] @ 0x34 if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) - 80006f8: 4809 ldr r0, [pc, #36] @ (8000720 ) - 80006fa: f001 f8cf bl 800189c - 80006fe: 4603 mov r3, r0 - 8000700: 2b00 cmp r3, #0 - 8000702: d001 beq.n 8000708 + 800079c: 4809 ldr r0, [pc, #36] @ (80007c4 ) + 800079e: f001 f8ab bl 80018f8 + 80007a2: 4603 mov r3, r0 + 80007a4: 2b00 cmp r3, #0 + 80007a6: d001 beq.n 80007ac { Error_Handler(); - 8000704: f000 fb06 bl 8000d14 + 80007a8: f000 fb06 bl 8000db8 } if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) - 8000708: 2101 movs r1, #1 - 800070a: 4805 ldr r0, [pc, #20] @ (8000720 ) - 800070c: f001 fa20 bl 8001b50 - 8000710: 4603 mov r3, r0 - 8000712: 2b00 cmp r3, #0 - 8000714: d001 beq.n 800071a + 80007ac: 2101 movs r1, #1 + 80007ae: 4805 ldr r0, [pc, #20] @ (80007c4 ) + 80007b0: f001 f9fc bl 8001bac + 80007b4: 4603 mov r3, r0 + 80007b6: 2b00 cmp r3, #0 + 80007b8: d001 beq.n 80007be { Error_Handler(); - 8000716: f000 fafd bl 8000d14 + 80007ba: f000 fafd bl 8000db8 } /* USER CODE BEGIN DMA2D_Init 2 */ /* USER CODE END DMA2D_Init 2 */ } - 800071a: bf00 nop - 800071c: bd80 pop {r7, pc} - 800071e: bf00 nop - 8000720: 20000034 .word 0x20000034 - 8000724: 4002b000 .word 0x4002b000 + 80007be: bf00 nop + 80007c0: bd80 pop {r7, pc} + 80007c2: bf00 nop + 80007c4: 20000040 .word 0x20000040 + 80007c8: 4002b000 .word 0x4002b000 -08000728 : +080007cc : * @brief I2C3 Initialization Function * @param None * @retval None */ static void MX_I2C3_Init(void) { - 8000728: b580 push {r7, lr} - 800072a: af00 add r7, sp, #0 + 80007cc: b580 push {r7, lr} + 80007ce: af00 add r7, sp, #0 /* USER CODE END I2C3_Init 0 */ /* USER CODE BEGIN I2C3_Init 1 */ /* USER CODE END I2C3_Init 1 */ hi2c3.Instance = I2C3; - 800072c: 4b1b ldr r3, [pc, #108] @ (800079c ) - 800072e: 4a1c ldr r2, [pc, #112] @ (80007a0 ) - 8000730: 601a str r2, [r3, #0] + 80007d0: 4b1b ldr r3, [pc, #108] @ (8000840 ) + 80007d2: 4a1c ldr r2, [pc, #112] @ (8000844 ) + 80007d4: 601a str r2, [r3, #0] hi2c3.Init.ClockSpeed = 100000; - 8000732: 4b1a ldr r3, [pc, #104] @ (800079c ) - 8000734: 4a1b ldr r2, [pc, #108] @ (80007a4 ) - 8000736: 605a str r2, [r3, #4] + 80007d6: 4b1a ldr r3, [pc, #104] @ (8000840 ) + 80007d8: 4a1b ldr r2, [pc, #108] @ (8000848 ) + 80007da: 605a str r2, [r3, #4] hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; - 8000738: 4b18 ldr r3, [pc, #96] @ (800079c ) - 800073a: 2200 movs r2, #0 - 800073c: 609a str r2, [r3, #8] + 80007dc: 4b18 ldr r3, [pc, #96] @ (8000840 ) + 80007de: 2200 movs r2, #0 + 80007e0: 609a str r2, [r3, #8] hi2c3.Init.OwnAddress1 = 0; - 800073e: 4b17 ldr r3, [pc, #92] @ (800079c ) - 8000740: 2200 movs r2, #0 - 8000742: 60da str r2, [r3, #12] + 80007e2: 4b17 ldr r3, [pc, #92] @ (8000840 ) + 80007e4: 2200 movs r2, #0 + 80007e6: 60da str r2, [r3, #12] hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; - 8000744: 4b15 ldr r3, [pc, #84] @ (800079c ) - 8000746: f44f 4280 mov.w r2, #16384 @ 0x4000 - 800074a: 611a str r2, [r3, #16] + 80007e8: 4b15 ldr r3, [pc, #84] @ (8000840 ) + 80007ea: f44f 4280 mov.w r2, #16384 @ 0x4000 + 80007ee: 611a str r2, [r3, #16] hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; - 800074c: 4b13 ldr r3, [pc, #76] @ (800079c ) - 800074e: 2200 movs r2, #0 - 8000750: 615a str r2, [r3, #20] + 80007f0: 4b13 ldr r3, [pc, #76] @ (8000840 ) + 80007f2: 2200 movs r2, #0 + 80007f4: 615a str r2, [r3, #20] hi2c3.Init.OwnAddress2 = 0; - 8000752: 4b12 ldr r3, [pc, #72] @ (800079c ) - 8000754: 2200 movs r2, #0 - 8000756: 619a str r2, [r3, #24] + 80007f6: 4b12 ldr r3, [pc, #72] @ (8000840 ) + 80007f8: 2200 movs r2, #0 + 80007fa: 619a str r2, [r3, #24] hi2c3.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; - 8000758: 4b10 ldr r3, [pc, #64] @ (800079c ) - 800075a: 2200 movs r2, #0 - 800075c: 61da str r2, [r3, #28] + 80007fc: 4b10 ldr r3, [pc, #64] @ (8000840 ) + 80007fe: 2200 movs r2, #0 + 8000800: 61da str r2, [r3, #28] hi2c3.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; - 800075e: 4b0f ldr r3, [pc, #60] @ (800079c ) - 8000760: 2200 movs r2, #0 - 8000762: 621a str r2, [r3, #32] + 8000802: 4b0f ldr r3, [pc, #60] @ (8000840 ) + 8000804: 2200 movs r2, #0 + 8000806: 621a str r2, [r3, #32] if (HAL_I2C_Init(&hi2c3) != HAL_OK) - 8000764: 480d ldr r0, [pc, #52] @ (800079c ) - 8000766: f003 fa0b bl 8003b80 - 800076a: 4603 mov r3, r0 - 800076c: 2b00 cmp r3, #0 - 800076e: d001 beq.n 8000774 + 8000808: 480d ldr r0, [pc, #52] @ (8000840 ) + 800080a: f003 f9e7 bl 8003bdc + 800080e: 4603 mov r3, r0 + 8000810: 2b00 cmp r3, #0 + 8000812: d001 beq.n 8000818 { Error_Handler(); - 8000770: f000 fad0 bl 8000d14 + 8000814: f000 fad0 bl 8000db8 } /** Configure Analogue filter */ if (HAL_I2CEx_ConfigAnalogFilter(&hi2c3, I2C_ANALOGFILTER_ENABLE) != HAL_OK) - 8000774: 2100 movs r1, #0 - 8000776: 4809 ldr r0, [pc, #36] @ (800079c ) - 8000778: f003 fb46 bl 8003e08 - 800077c: 4603 mov r3, r0 - 800077e: 2b00 cmp r3, #0 - 8000780: d001 beq.n 8000786 + 8000818: 2100 movs r1, #0 + 800081a: 4809 ldr r0, [pc, #36] @ (8000840 ) + 800081c: f003 fb22 bl 8003e64 + 8000820: 4603 mov r3, r0 + 8000822: 2b00 cmp r3, #0 + 8000824: d001 beq.n 800082a { Error_Handler(); - 8000782: f000 fac7 bl 8000d14 + 8000826: f000 fac7 bl 8000db8 } /** Configure Digital filter */ if (HAL_I2CEx_ConfigDigitalFilter(&hi2c3, 0) != HAL_OK) - 8000786: 2100 movs r1, #0 - 8000788: 4804 ldr r0, [pc, #16] @ (800079c ) - 800078a: f003 fb79 bl 8003e80 - 800078e: 4603 mov r3, r0 - 8000790: 2b00 cmp r3, #0 - 8000792: d001 beq.n 8000798 + 800082a: 2100 movs r1, #0 + 800082c: 4804 ldr r0, [pc, #16] @ (8000840 ) + 800082e: f003 fb55 bl 8003edc + 8000832: 4603 mov r3, r0 + 8000834: 2b00 cmp r3, #0 + 8000836: d001 beq.n 800083c { Error_Handler(); - 8000794: f000 fabe bl 8000d14 + 8000838: f000 fabe bl 8000db8 } /* USER CODE BEGIN I2C3_Init 2 */ /* USER CODE END I2C3_Init 2 */ } - 8000798: bf00 nop - 800079a: bd80 pop {r7, pc} - 800079c: 20000074 .word 0x20000074 - 80007a0: 40005c00 .word 0x40005c00 - 80007a4: 000186a0 .word 0x000186a0 + 800083c: bf00 nop + 800083e: bd80 pop {r7, pc} + 8000840: 20000080 .word 0x20000080 + 8000844: 40005c00 .word 0x40005c00 + 8000848: 000186a0 .word 0x000186a0 -080007a8 : +0800084c : * @brief LTDC Initialization Function * @param None * @retval None */ static void MX_LTDC_Init(void) { - 80007a8: b580 push {r7, lr} - 80007aa: b08e sub sp, #56 @ 0x38 - 80007ac: af00 add r7, sp, #0 + 800084c: b580 push {r7, lr} + 800084e: b08e sub sp, #56 @ 0x38 + 8000850: af00 add r7, sp, #0 /* USER CODE BEGIN LTDC_Init 0 */ /* USER CODE END LTDC_Init 0 */ LTDC_LayerCfgTypeDef pLayerCfg = {0}; - 80007ae: 1d3b adds r3, r7, #4 - 80007b0: 2234 movs r2, #52 @ 0x34 - 80007b2: 2100 movs r1, #0 - 80007b4: 4618 mov r0, r3 - 80007b6: f007 fb6b bl 8007e90 + 8000852: 1d3b adds r3, r7, #4 + 8000854: 2234 movs r2, #52 @ 0x34 + 8000856: 2100 movs r1, #0 + 8000858: 4618 mov r0, r3 + 800085a: f007 fb41 bl 8007ee0 /* USER CODE BEGIN LTDC_Init 1 */ /* USER CODE END LTDC_Init 1 */ hltdc.Instance = LTDC; - 80007ba: 4b39 ldr r3, [pc, #228] @ (80008a0 ) - 80007bc: 4a39 ldr r2, [pc, #228] @ (80008a4 ) - 80007be: 601a str r2, [r3, #0] + 800085e: 4b39 ldr r3, [pc, #228] @ (8000944 ) + 8000860: 4a39 ldr r2, [pc, #228] @ (8000948 ) + 8000862: 601a str r2, [r3, #0] hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; - 80007c0: 4b37 ldr r3, [pc, #220] @ (80008a0 ) - 80007c2: 2200 movs r2, #0 - 80007c4: 605a str r2, [r3, #4] + 8000864: 4b37 ldr r3, [pc, #220] @ (8000944 ) + 8000866: 2200 movs r2, #0 + 8000868: 605a str r2, [r3, #4] hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; - 80007c6: 4b36 ldr r3, [pc, #216] @ (80008a0 ) - 80007c8: 2200 movs r2, #0 - 80007ca: 609a str r2, [r3, #8] + 800086a: 4b36 ldr r3, [pc, #216] @ (8000944 ) + 800086c: 2200 movs r2, #0 + 800086e: 609a str r2, [r3, #8] hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; - 80007cc: 4b34 ldr r3, [pc, #208] @ (80008a0 ) - 80007ce: 2200 movs r2, #0 - 80007d0: 60da str r2, [r3, #12] + 8000870: 4b34 ldr r3, [pc, #208] @ (8000944 ) + 8000872: 2200 movs r2, #0 + 8000874: 60da str r2, [r3, #12] hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; - 80007d2: 4b33 ldr r3, [pc, #204] @ (80008a0 ) - 80007d4: 2200 movs r2, #0 - 80007d6: 611a str r2, [r3, #16] + 8000876: 4b33 ldr r3, [pc, #204] @ (8000944 ) + 8000878: 2200 movs r2, #0 + 800087a: 611a str r2, [r3, #16] hltdc.Init.HorizontalSync = 9; - 80007d8: 4b31 ldr r3, [pc, #196] @ (80008a0 ) - 80007da: 2209 movs r2, #9 - 80007dc: 615a str r2, [r3, #20] + 800087c: 4b31 ldr r3, [pc, #196] @ (8000944 ) + 800087e: 2209 movs r2, #9 + 8000880: 615a str r2, [r3, #20] hltdc.Init.VerticalSync = 1; - 80007de: 4b30 ldr r3, [pc, #192] @ (80008a0 ) - 80007e0: 2201 movs r2, #1 - 80007e2: 619a str r2, [r3, #24] + 8000882: 4b30 ldr r3, [pc, #192] @ (8000944 ) + 8000884: 2201 movs r2, #1 + 8000886: 619a str r2, [r3, #24] hltdc.Init.AccumulatedHBP = 29; - 80007e4: 4b2e ldr r3, [pc, #184] @ (80008a0 ) - 80007e6: 221d movs r2, #29 - 80007e8: 61da str r2, [r3, #28] + 8000888: 4b2e ldr r3, [pc, #184] @ (8000944 ) + 800088a: 221d movs r2, #29 + 800088c: 61da str r2, [r3, #28] hltdc.Init.AccumulatedVBP = 3; - 80007ea: 4b2d ldr r3, [pc, #180] @ (80008a0 ) - 80007ec: 2203 movs r2, #3 - 80007ee: 621a str r2, [r3, #32] + 800088e: 4b2d ldr r3, [pc, #180] @ (8000944 ) + 8000890: 2203 movs r2, #3 + 8000892: 621a str r2, [r3, #32] hltdc.Init.AccumulatedActiveW = 269; - 80007f0: 4b2b ldr r3, [pc, #172] @ (80008a0 ) - 80007f2: f240 120d movw r2, #269 @ 0x10d - 80007f6: 625a str r2, [r3, #36] @ 0x24 + 8000894: 4b2b ldr r3, [pc, #172] @ (8000944 ) + 8000896: f240 120d movw r2, #269 @ 0x10d + 800089a: 625a str r2, [r3, #36] @ 0x24 hltdc.Init.AccumulatedActiveH = 323; - 80007f8: 4b29 ldr r3, [pc, #164] @ (80008a0 ) - 80007fa: f240 1243 movw r2, #323 @ 0x143 - 80007fe: 629a str r2, [r3, #40] @ 0x28 + 800089c: 4b29 ldr r3, [pc, #164] @ (8000944 ) + 800089e: f240 1243 movw r2, #323 @ 0x143 + 80008a2: 629a str r2, [r3, #40] @ 0x28 hltdc.Init.TotalWidth = 279; - 8000800: 4b27 ldr r3, [pc, #156] @ (80008a0 ) - 8000802: f240 1217 movw r2, #279 @ 0x117 - 8000806: 62da str r2, [r3, #44] @ 0x2c + 80008a4: 4b27 ldr r3, [pc, #156] @ (8000944 ) + 80008a6: f240 1217 movw r2, #279 @ 0x117 + 80008aa: 62da str r2, [r3, #44] @ 0x2c hltdc.Init.TotalHeigh = 327; - 8000808: 4b25 ldr r3, [pc, #148] @ (80008a0 ) - 800080a: f240 1247 movw r2, #327 @ 0x147 - 800080e: 631a str r2, [r3, #48] @ 0x30 + 80008ac: 4b25 ldr r3, [pc, #148] @ (8000944 ) + 80008ae: f240 1247 movw r2, #327 @ 0x147 + 80008b2: 631a str r2, [r3, #48] @ 0x30 hltdc.Init.Backcolor.Blue = 0; - 8000810: 4b23 ldr r3, [pc, #140] @ (80008a0 ) - 8000812: 2200 movs r2, #0 - 8000814: f883 2034 strb.w r2, [r3, #52] @ 0x34 + 80008b4: 4b23 ldr r3, [pc, #140] @ (8000944 ) + 80008b6: 2200 movs r2, #0 + 80008b8: f883 2034 strb.w r2, [r3, #52] @ 0x34 hltdc.Init.Backcolor.Green = 0; - 8000818: 4b21 ldr r3, [pc, #132] @ (80008a0 ) - 800081a: 2200 movs r2, #0 - 800081c: f883 2035 strb.w r2, [r3, #53] @ 0x35 + 80008bc: 4b21 ldr r3, [pc, #132] @ (8000944 ) + 80008be: 2200 movs r2, #0 + 80008c0: f883 2035 strb.w r2, [r3, #53] @ 0x35 hltdc.Init.Backcolor.Red = 0; - 8000820: 4b1f ldr r3, [pc, #124] @ (80008a0 ) - 8000822: 2200 movs r2, #0 - 8000824: f883 2036 strb.w r2, [r3, #54] @ 0x36 + 80008c4: 4b1f ldr r3, [pc, #124] @ (8000944 ) + 80008c6: 2200 movs r2, #0 + 80008c8: f883 2036 strb.w r2, [r3, #54] @ 0x36 if (HAL_LTDC_Init(&hltdc) != HAL_OK) - 8000828: 481d ldr r0, [pc, #116] @ (80008a0 ) - 800082a: f003 fb68 bl 8003efe - 800082e: 4603 mov r3, r0 - 8000830: 2b00 cmp r3, #0 - 8000832: d001 beq.n 8000838 + 80008cc: 481d ldr r0, [pc, #116] @ (8000944 ) + 80008ce: f003 fb44 bl 8003f5a + 80008d2: 4603 mov r3, r0 + 80008d4: 2b00 cmp r3, #0 + 80008d6: d001 beq.n 80008dc { Error_Handler(); - 8000834: f000 fa6e bl 8000d14 + 80008d8: f000 fa6e bl 8000db8 } pLayerCfg.WindowX0 = 0; - 8000838: 2300 movs r3, #0 - 800083a: 607b str r3, [r7, #4] + 80008dc: 2300 movs r3, #0 + 80008de: 607b str r3, [r7, #4] pLayerCfg.WindowX1 = 240; - 800083c: 23f0 movs r3, #240 @ 0xf0 - 800083e: 60bb str r3, [r7, #8] + 80008e0: 23f0 movs r3, #240 @ 0xf0 + 80008e2: 60bb str r3, [r7, #8] pLayerCfg.WindowY0 = 0; - 8000840: 2300 movs r3, #0 - 8000842: 60fb str r3, [r7, #12] + 80008e4: 2300 movs r3, #0 + 80008e6: 60fb str r3, [r7, #12] pLayerCfg.WindowY1 = 320; - 8000844: f44f 73a0 mov.w r3, #320 @ 0x140 - 8000848: 613b str r3, [r7, #16] + 80008e8: f44f 73a0 mov.w r3, #320 @ 0x140 + 80008ec: 613b str r3, [r7, #16] pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; - 800084a: 2302 movs r3, #2 - 800084c: 617b str r3, [r7, #20] + 80008ee: 2302 movs r3, #2 + 80008f0: 617b str r3, [r7, #20] pLayerCfg.Alpha = 255; - 800084e: 23ff movs r3, #255 @ 0xff - 8000850: 61bb str r3, [r7, #24] + 80008f2: 23ff movs r3, #255 @ 0xff + 80008f4: 61bb str r3, [r7, #24] pLayerCfg.Alpha0 = 0; - 8000852: 2300 movs r3, #0 - 8000854: 61fb str r3, [r7, #28] + 80008f6: 2300 movs r3, #0 + 80008f8: 61fb str r3, [r7, #28] pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; - 8000856: f44f 63c0 mov.w r3, #1536 @ 0x600 - 800085a: 623b str r3, [r7, #32] + 80008fa: f44f 63c0 mov.w r3, #1536 @ 0x600 + 80008fe: 623b str r3, [r7, #32] pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; - 800085c: 2307 movs r3, #7 - 800085e: 627b str r3, [r7, #36] @ 0x24 + 8000900: 2307 movs r3, #7 + 8000902: 627b str r3, [r7, #36] @ 0x24 pLayerCfg.FBStartAdress = 0xD0000000; - 8000860: f04f 4350 mov.w r3, #3489660928 @ 0xd0000000 - 8000864: 62bb str r3, [r7, #40] @ 0x28 + 8000904: f04f 4350 mov.w r3, #3489660928 @ 0xd0000000 + 8000908: 62bb str r3, [r7, #40] @ 0x28 pLayerCfg.ImageWidth = 240; - 8000866: 23f0 movs r3, #240 @ 0xf0 - 8000868: 62fb str r3, [r7, #44] @ 0x2c + 800090a: 23f0 movs r3, #240 @ 0xf0 + 800090c: 62fb str r3, [r7, #44] @ 0x2c pLayerCfg.ImageHeight = 320; - 800086a: f44f 73a0 mov.w r3, #320 @ 0x140 - 800086e: 633b str r3, [r7, #48] @ 0x30 + 800090e: f44f 73a0 mov.w r3, #320 @ 0x140 + 8000912: 633b str r3, [r7, #48] @ 0x30 pLayerCfg.Backcolor.Blue = 0; - 8000870: 2300 movs r3, #0 - 8000872: f887 3034 strb.w r3, [r7, #52] @ 0x34 + 8000914: 2300 movs r3, #0 + 8000916: f887 3034 strb.w r3, [r7, #52] @ 0x34 pLayerCfg.Backcolor.Green = 0; - 8000876: 2300 movs r3, #0 - 8000878: f887 3035 strb.w r3, [r7, #53] @ 0x35 + 800091a: 2300 movs r3, #0 + 800091c: f887 3035 strb.w r3, [r7, #53] @ 0x35 pLayerCfg.Backcolor.Red = 0; - 800087c: 2300 movs r3, #0 - 800087e: f887 3036 strb.w r3, [r7, #54] @ 0x36 + 8000920: 2300 movs r3, #0 + 8000922: f887 3036 strb.w r3, [r7, #54] @ 0x36 if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) - 8000882: 1d3b adds r3, r7, #4 - 8000884: 2200 movs r2, #0 - 8000886: 4619 mov r1, r3 - 8000888: 4805 ldr r0, [pc, #20] @ (80008a0 ) - 800088a: f003 fc97 bl 80041bc - 800088e: 4603 mov r3, r0 - 8000890: 2b00 cmp r3, #0 - 8000892: d001 beq.n 8000898 + 8000926: 1d3b adds r3, r7, #4 + 8000928: 2200 movs r2, #0 + 800092a: 4619 mov r1, r3 + 800092c: 4805 ldr r0, [pc, #20] @ (8000944 ) + 800092e: f003 fc73 bl 8004218 + 8000932: 4603 mov r3, r0 + 8000934: 2b00 cmp r3, #0 + 8000936: d001 beq.n 800093c { Error_Handler(); - 8000894: f000 fa3e bl 8000d14 + 8000938: f000 fa3e bl 8000db8 } /* USER CODE BEGIN LTDC_Init 2 */ /* USER CODE END LTDC_Init 2 */ } - 8000898: bf00 nop - 800089a: 3738 adds r7, #56 @ 0x38 - 800089c: 46bd mov sp, r7 - 800089e: bd80 pop {r7, pc} - 80008a0: 200000c8 .word 0x200000c8 - 80008a4: 40016800 .word 0x40016800 + 800093c: bf00 nop + 800093e: 3738 adds r7, #56 @ 0x38 + 8000940: 46bd mov sp, r7 + 8000942: bd80 pop {r7, pc} + 8000944: 200000d4 .word 0x200000d4 + 8000948: 40016800 .word 0x40016800 -080008a8 : +0800094c : * @brief SPI5 Initialization Function * @param None * @retval None */ static void MX_SPI5_Init(void) { - 80008a8: b580 push {r7, lr} - 80008aa: af00 add r7, sp, #0 + 800094c: b580 push {r7, lr} + 800094e: af00 add r7, sp, #0 /* USER CODE BEGIN SPI5_Init 1 */ /* USER CODE END SPI5_Init 1 */ /* SPI5 parameter configuration*/ hspi5.Instance = SPI5; - 80008ac: 4b17 ldr r3, [pc, #92] @ (800090c ) - 80008ae: 4a18 ldr r2, [pc, #96] @ (8000910 ) - 80008b0: 601a str r2, [r3, #0] + 8000950: 4b17 ldr r3, [pc, #92] @ (80009b0 ) + 8000952: 4a18 ldr r2, [pc, #96] @ (80009b4 ) + 8000954: 601a str r2, [r3, #0] hspi5.Init.Mode = SPI_MODE_MASTER; - 80008b2: 4b16 ldr r3, [pc, #88] @ (800090c ) - 80008b4: f44f 7282 mov.w r2, #260 @ 0x104 - 80008b8: 605a str r2, [r3, #4] + 8000956: 4b16 ldr r3, [pc, #88] @ (80009b0 ) + 8000958: f44f 7282 mov.w r2, #260 @ 0x104 + 800095c: 605a str r2, [r3, #4] hspi5.Init.Direction = SPI_DIRECTION_2LINES; - 80008ba: 4b14 ldr r3, [pc, #80] @ (800090c ) - 80008bc: 2200 movs r2, #0 - 80008be: 609a str r2, [r3, #8] + 800095e: 4b14 ldr r3, [pc, #80] @ (80009b0 ) + 8000960: 2200 movs r2, #0 + 8000962: 609a str r2, [r3, #8] hspi5.Init.DataSize = SPI_DATASIZE_8BIT; - 80008c0: 4b12 ldr r3, [pc, #72] @ (800090c ) - 80008c2: 2200 movs r2, #0 - 80008c4: 60da str r2, [r3, #12] + 8000964: 4b12 ldr r3, [pc, #72] @ (80009b0 ) + 8000966: 2200 movs r2, #0 + 8000968: 60da str r2, [r3, #12] hspi5.Init.CLKPolarity = SPI_POLARITY_LOW; - 80008c6: 4b11 ldr r3, [pc, #68] @ (800090c ) - 80008c8: 2200 movs r2, #0 - 80008ca: 611a str r2, [r3, #16] + 800096a: 4b11 ldr r3, [pc, #68] @ (80009b0 ) + 800096c: 2200 movs r2, #0 + 800096e: 611a str r2, [r3, #16] hspi5.Init.CLKPhase = SPI_PHASE_1EDGE; - 80008cc: 4b0f ldr r3, [pc, #60] @ (800090c ) - 80008ce: 2200 movs r2, #0 - 80008d0: 615a str r2, [r3, #20] + 8000970: 4b0f ldr r3, [pc, #60] @ (80009b0 ) + 8000972: 2200 movs r2, #0 + 8000974: 615a str r2, [r3, #20] hspi5.Init.NSS = SPI_NSS_SOFT; - 80008d2: 4b0e ldr r3, [pc, #56] @ (800090c ) - 80008d4: f44f 7200 mov.w r2, #512 @ 0x200 - 80008d8: 619a str r2, [r3, #24] + 8000976: 4b0e ldr r3, [pc, #56] @ (80009b0 ) + 8000978: f44f 7200 mov.w r2, #512 @ 0x200 + 800097c: 619a str r2, [r3, #24] hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; - 80008da: 4b0c ldr r3, [pc, #48] @ (800090c ) - 80008dc: 2218 movs r2, #24 - 80008de: 61da str r2, [r3, #28] + 800097e: 4b0c ldr r3, [pc, #48] @ (80009b0 ) + 8000980: 2218 movs r2, #24 + 8000982: 61da str r2, [r3, #28] hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB; - 80008e0: 4b0a ldr r3, [pc, #40] @ (800090c ) - 80008e2: 2200 movs r2, #0 - 80008e4: 621a str r2, [r3, #32] + 8000984: 4b0a ldr r3, [pc, #40] @ (80009b0 ) + 8000986: 2200 movs r2, #0 + 8000988: 621a str r2, [r3, #32] hspi5.Init.TIMode = SPI_TIMODE_DISABLE; - 80008e6: 4b09 ldr r3, [pc, #36] @ (800090c ) - 80008e8: 2200 movs r2, #0 - 80008ea: 625a str r2, [r3, #36] @ 0x24 + 800098a: 4b09 ldr r3, [pc, #36] @ (80009b0 ) + 800098c: 2200 movs r2, #0 + 800098e: 625a str r2, [r3, #36] @ 0x24 hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; - 80008ec: 4b07 ldr r3, [pc, #28] @ (800090c ) - 80008ee: 2200 movs r2, #0 - 80008f0: 629a str r2, [r3, #40] @ 0x28 + 8000990: 4b07 ldr r3, [pc, #28] @ (80009b0 ) + 8000992: 2200 movs r2, #0 + 8000994: 629a str r2, [r3, #40] @ 0x28 hspi5.Init.CRCPolynomial = 10; - 80008f2: 4b06 ldr r3, [pc, #24] @ (800090c ) - 80008f4: 220a movs r2, #10 - 80008f6: 62da str r2, [r3, #44] @ 0x2c + 8000996: 4b06 ldr r3, [pc, #24] @ (80009b0 ) + 8000998: 220a movs r2, #10 + 800099a: 62da str r2, [r3, #44] @ 0x2c if (HAL_SPI_Init(&hspi5) != HAL_OK) - 80008f8: 4804 ldr r0, [pc, #16] @ (800090c ) - 80008fa: f004 fccf bl 800529c - 80008fe: 4603 mov r3, r0 - 8000900: 2b00 cmp r3, #0 - 8000902: d001 beq.n 8000908 + 800099c: 4804 ldr r0, [pc, #16] @ (80009b0 ) + 800099e: f004 fcab bl 80052f8 + 80009a2: 4603 mov r3, r0 + 80009a4: 2b00 cmp r3, #0 + 80009a6: d001 beq.n 80009ac { Error_Handler(); - 8000904: f000 fa06 bl 8000d14 + 80009a8: f000 fa06 bl 8000db8 } /* USER CODE BEGIN SPI5_Init 2 */ /* USER CODE END SPI5_Init 2 */ } - 8000908: bf00 nop - 800090a: bd80 pop {r7, pc} - 800090c: 20000170 .word 0x20000170 - 8000910: 40015000 .word 0x40015000 + 80009ac: bf00 nop + 80009ae: bd80 pop {r7, pc} + 80009b0: 2000017c .word 0x2000017c + 80009b4: 40015000 .word 0x40015000 -08000914 : +080009b8 : * @brief TIM1 Initialization Function * @param None * @retval None */ static void MX_TIM1_Init(void) { - 8000914: b580 push {r7, lr} - 8000916: b086 sub sp, #24 - 8000918: af00 add r7, sp, #0 + 80009b8: b580 push {r7, lr} + 80009ba: b086 sub sp, #24 + 80009bc: af00 add r7, sp, #0 /* USER CODE BEGIN TIM1_Init 0 */ /* USER CODE END TIM1_Init 0 */ TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 800091a: f107 0308 add.w r3, r7, #8 - 800091e: 2200 movs r2, #0 - 8000920: 601a str r2, [r3, #0] - 8000922: 605a str r2, [r3, #4] - 8000924: 609a str r2, [r3, #8] - 8000926: 60da str r2, [r3, #12] + 80009be: f107 0308 add.w r3, r7, #8 + 80009c2: 2200 movs r2, #0 + 80009c4: 601a str r2, [r3, #0] + 80009c6: 605a str r2, [r3, #4] + 80009c8: 609a str r2, [r3, #8] + 80009ca: 60da str r2, [r3, #12] TIM_MasterConfigTypeDef sMasterConfig = {0}; - 8000928: 463b mov r3, r7 - 800092a: 2200 movs r2, #0 - 800092c: 601a str r2, [r3, #0] - 800092e: 605a str r2, [r3, #4] + 80009cc: 463b mov r3, r7 + 80009ce: 2200 movs r2, #0 + 80009d0: 601a str r2, [r3, #0] + 80009d2: 605a str r2, [r3, #4] /* USER CODE BEGIN TIM1_Init 1 */ /* USER CODE END TIM1_Init 1 */ htim1.Instance = TIM1; - 8000930: 4b1e ldr r3, [pc, #120] @ (80009ac ) - 8000932: 4a1f ldr r2, [pc, #124] @ (80009b0 ) - 8000934: 601a str r2, [r3, #0] + 80009d4: 4b1e ldr r3, [pc, #120] @ (8000a50 ) + 80009d6: 4a1f ldr r2, [pc, #124] @ (8000a54 ) + 80009d8: 601a str r2, [r3, #0] htim1.Init.Prescaler = 0; - 8000936: 4b1d ldr r3, [pc, #116] @ (80009ac ) - 8000938: 2200 movs r2, #0 - 800093a: 605a str r2, [r3, #4] + 80009da: 4b1d ldr r3, [pc, #116] @ (8000a50 ) + 80009dc: 2200 movs r2, #0 + 80009de: 605a str r2, [r3, #4] htim1.Init.CounterMode = TIM_COUNTERMODE_UP; - 800093c: 4b1b ldr r3, [pc, #108] @ (80009ac ) - 800093e: 2200 movs r2, #0 - 8000940: 609a str r2, [r3, #8] + 80009e0: 4b1b ldr r3, [pc, #108] @ (8000a50 ) + 80009e2: 2200 movs r2, #0 + 80009e4: 609a str r2, [r3, #8] htim1.Init.Period = 65535; - 8000942: 4b1a ldr r3, [pc, #104] @ (80009ac ) - 8000944: f64f 72ff movw r2, #65535 @ 0xffff - 8000948: 60da str r2, [r3, #12] + 80009e6: 4b1a ldr r3, [pc, #104] @ (8000a50 ) + 80009e8: f64f 72ff movw r2, #65535 @ 0xffff + 80009ec: 60da str r2, [r3, #12] htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 800094a: 4b18 ldr r3, [pc, #96] @ (80009ac ) - 800094c: 2200 movs r2, #0 - 800094e: 611a str r2, [r3, #16] + 80009ee: 4b18 ldr r3, [pc, #96] @ (8000a50 ) + 80009f0: 2200 movs r2, #0 + 80009f2: 611a str r2, [r3, #16] htim1.Init.RepetitionCounter = 0; - 8000950: 4b16 ldr r3, [pc, #88] @ (80009ac ) - 8000952: 2200 movs r2, #0 - 8000954: 615a str r2, [r3, #20] + 80009f4: 4b16 ldr r3, [pc, #88] @ (8000a50 ) + 80009f6: 2200 movs r2, #0 + 80009f8: 615a str r2, [r3, #20] htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 8000956: 4b15 ldr r3, [pc, #84] @ (80009ac ) - 8000958: 2200 movs r2, #0 - 800095a: 619a str r2, [r3, #24] + 80009fa: 4b15 ldr r3, [pc, #84] @ (8000a50 ) + 80009fc: 2200 movs r2, #0 + 80009fe: 619a str r2, [r3, #24] if (HAL_TIM_Base_Init(&htim1) != HAL_OK) - 800095c: 4813 ldr r0, [pc, #76] @ (80009ac ) - 800095e: f004 fd26 bl 80053ae - 8000962: 4603 mov r3, r0 - 8000964: 2b00 cmp r3, #0 - 8000966: d001 beq.n 800096c + 8000a00: 4813 ldr r0, [pc, #76] @ (8000a50 ) + 8000a02: f004 fd02 bl 800540a + 8000a06: 4603 mov r3, r0 + 8000a08: 2b00 cmp r3, #0 + 8000a0a: d001 beq.n 8000a10 { Error_Handler(); - 8000968: f000 f9d4 bl 8000d14 + 8000a0c: f000 f9d4 bl 8000db8 } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 800096c: f44f 5380 mov.w r3, #4096 @ 0x1000 - 8000970: 60bb str r3, [r7, #8] + 8000a10: f44f 5380 mov.w r3, #4096 @ 0x1000 + 8000a14: 60bb str r3, [r7, #8] if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) - 8000972: f107 0308 add.w r3, r7, #8 - 8000976: 4619 mov r1, r3 - 8000978: 480c ldr r0, [pc, #48] @ (80009ac ) - 800097a: f004 fec7 bl 800570c - 800097e: 4603 mov r3, r0 - 8000980: 2b00 cmp r3, #0 - 8000982: d001 beq.n 8000988 + 8000a16: f107 0308 add.w r3, r7, #8 + 8000a1a: 4619 mov r1, r3 + 8000a1c: 480c ldr r0, [pc, #48] @ (8000a50 ) + 8000a1e: f004 fea3 bl 8005768 + 8000a22: 4603 mov r3, r0 + 8000a24: 2b00 cmp r3, #0 + 8000a26: d001 beq.n 8000a2c { Error_Handler(); - 8000984: f000 f9c6 bl 8000d14 + 8000a28: f000 f9c6 bl 8000db8 } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 8000988: 2300 movs r3, #0 - 800098a: 603b str r3, [r7, #0] + 8000a2c: 2300 movs r3, #0 + 8000a2e: 603b str r3, [r7, #0] sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 800098c: 2300 movs r3, #0 - 800098e: 607b str r3, [r7, #4] + 8000a30: 2300 movs r3, #0 + 8000a32: 607b str r3, [r7, #4] if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) - 8000990: 463b mov r3, r7 - 8000992: 4619 mov r1, r3 - 8000994: 4805 ldr r0, [pc, #20] @ (80009ac ) - 8000996: f005 f8e9 bl 8005b6c - 800099a: 4603 mov r3, r0 - 800099c: 2b00 cmp r3, #0 - 800099e: d001 beq.n 80009a4 + 8000a34: 463b mov r3, r7 + 8000a36: 4619 mov r1, r3 + 8000a38: 4805 ldr r0, [pc, #20] @ (8000a50 ) + 8000a3a: f005 f8c5 bl 8005bc8 + 8000a3e: 4603 mov r3, r0 + 8000a40: 2b00 cmp r3, #0 + 8000a42: d001 beq.n 8000a48 { Error_Handler(); - 80009a0: f000 f9b8 bl 8000d14 + 8000a44: f000 f9b8 bl 8000db8 } /* USER CODE BEGIN TIM1_Init 2 */ /* USER CODE END TIM1_Init 2 */ } - 80009a4: bf00 nop - 80009a6: 3718 adds r7, #24 - 80009a8: 46bd mov sp, r7 - 80009aa: bd80 pop {r7, pc} - 80009ac: 200001c8 .word 0x200001c8 - 80009b0: 40010000 .word 0x40010000 + 8000a48: bf00 nop + 8000a4a: 3718 adds r7, #24 + 8000a4c: 46bd mov sp, r7 + 8000a4e: bd80 pop {r7, pc} + 8000a50: 200001d4 .word 0x200001d4 + 8000a54: 40010000 .word 0x40010000 -080009b4 : +08000a58 : * @brief USART1 Initialization Function * @param None * @retval None */ static void MX_USART1_UART_Init(void) { - 80009b4: b580 push {r7, lr} - 80009b6: af00 add r7, sp, #0 + 8000a58: b580 push {r7, lr} + 8000a5a: 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; - 80009b8: 4b11 ldr r3, [pc, #68] @ (8000a00 ) - 80009ba: 4a12 ldr r2, [pc, #72] @ (8000a04 ) - 80009bc: 601a str r2, [r3, #0] + 8000a5c: 4b11 ldr r3, [pc, #68] @ (8000aa4 ) + 8000a5e: 4a12 ldr r2, [pc, #72] @ (8000aa8 ) + 8000a60: 601a str r2, [r3, #0] huart1.Init.BaudRate = 115200; - 80009be: 4b10 ldr r3, [pc, #64] @ (8000a00 ) - 80009c0: f44f 32e1 mov.w r2, #115200 @ 0x1c200 - 80009c4: 605a str r2, [r3, #4] + 8000a62: 4b10 ldr r3, [pc, #64] @ (8000aa4 ) + 8000a64: f44f 32e1 mov.w r2, #115200 @ 0x1c200 + 8000a68: 605a str r2, [r3, #4] huart1.Init.WordLength = UART_WORDLENGTH_8B; - 80009c6: 4b0e ldr r3, [pc, #56] @ (8000a00 ) - 80009c8: 2200 movs r2, #0 - 80009ca: 609a str r2, [r3, #8] + 8000a6a: 4b0e ldr r3, [pc, #56] @ (8000aa4 ) + 8000a6c: 2200 movs r2, #0 + 8000a6e: 609a str r2, [r3, #8] huart1.Init.StopBits = UART_STOPBITS_1; - 80009cc: 4b0c ldr r3, [pc, #48] @ (8000a00 ) - 80009ce: 2200 movs r2, #0 - 80009d0: 60da str r2, [r3, #12] + 8000a70: 4b0c ldr r3, [pc, #48] @ (8000aa4 ) + 8000a72: 2200 movs r2, #0 + 8000a74: 60da str r2, [r3, #12] huart1.Init.Parity = UART_PARITY_NONE; - 80009d2: 4b0b ldr r3, [pc, #44] @ (8000a00 ) - 80009d4: 2200 movs r2, #0 - 80009d6: 611a str r2, [r3, #16] + 8000a76: 4b0b ldr r3, [pc, #44] @ (8000aa4 ) + 8000a78: 2200 movs r2, #0 + 8000a7a: 611a str r2, [r3, #16] huart1.Init.Mode = UART_MODE_TX_RX; - 80009d8: 4b09 ldr r3, [pc, #36] @ (8000a00 ) - 80009da: 220c movs r2, #12 - 80009dc: 615a str r2, [r3, #20] + 8000a7c: 4b09 ldr r3, [pc, #36] @ (8000aa4 ) + 8000a7e: 220c movs r2, #12 + 8000a80: 615a str r2, [r3, #20] huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; - 80009de: 4b08 ldr r3, [pc, #32] @ (8000a00 ) - 80009e0: 2200 movs r2, #0 - 80009e2: 619a str r2, [r3, #24] + 8000a82: 4b08 ldr r3, [pc, #32] @ (8000aa4 ) + 8000a84: 2200 movs r2, #0 + 8000a86: 619a str r2, [r3, #24] huart1.Init.OverSampling = UART_OVERSAMPLING_16; - 80009e4: 4b06 ldr r3, [pc, #24] @ (8000a00 ) - 80009e6: 2200 movs r2, #0 - 80009e8: 61da str r2, [r3, #28] + 8000a88: 4b06 ldr r3, [pc, #24] @ (8000aa4 ) + 8000a8a: 2200 movs r2, #0 + 8000a8c: 61da str r2, [r3, #28] if (HAL_UART_Init(&huart1) != HAL_OK) - 80009ea: 4805 ldr r0, [pc, #20] @ (8000a00 ) - 80009ec: f005 f94e bl 8005c8c - 80009f0: 4603 mov r3, r0 - 80009f2: 2b00 cmp r3, #0 - 80009f4: d001 beq.n 80009fa + 8000a8e: 4805 ldr r0, [pc, #20] @ (8000aa4 ) + 8000a90: f005 f92a bl 8005ce8 + 8000a94: 4603 mov r3, r0 + 8000a96: 2b00 cmp r3, #0 + 8000a98: d001 beq.n 8000a9e { Error_Handler(); - 80009f6: f000 f98d bl 8000d14 + 8000a9a: f000 f98d bl 8000db8 } /* USER CODE BEGIN USART1_Init 2 */ /* USER CODE END USART1_Init 2 */ } - 80009fa: bf00 nop - 80009fc: bd80 pop {r7, pc} - 80009fe: bf00 nop - 8000a00: 20000210 .word 0x20000210 - 8000a04: 40011000 .word 0x40011000 + 8000a9e: bf00 nop + 8000aa0: bd80 pop {r7, pc} + 8000aa2: bf00 nop + 8000aa4: 2000021c .word 0x2000021c + 8000aa8: 40011000 .word 0x40011000 -08000a08 : +08000aac : /* FMC initialization function */ static void MX_FMC_Init(void) { - 8000a08: b580 push {r7, lr} - 8000a0a: b088 sub sp, #32 - 8000a0c: af00 add r7, sp, #0 + 8000aac: b580 push {r7, lr} + 8000aae: b088 sub sp, #32 + 8000ab0: af00 add r7, sp, #0 /* USER CODE BEGIN FMC_Init 0 */ /* USER CODE END FMC_Init 0 */ FMC_SDRAM_TimingTypeDef SdramTiming = {0}; - 8000a0e: 1d3b adds r3, r7, #4 - 8000a10: 2200 movs r2, #0 - 8000a12: 601a str r2, [r3, #0] - 8000a14: 605a str r2, [r3, #4] - 8000a16: 609a str r2, [r3, #8] - 8000a18: 60da str r2, [r3, #12] - 8000a1a: 611a str r2, [r3, #16] - 8000a1c: 615a str r2, [r3, #20] - 8000a1e: 619a str r2, [r3, #24] + 8000ab2: 1d3b adds r3, r7, #4 + 8000ab4: 2200 movs r2, #0 + 8000ab6: 601a str r2, [r3, #0] + 8000ab8: 605a str r2, [r3, #4] + 8000aba: 609a str r2, [r3, #8] + 8000abc: 60da str r2, [r3, #12] + 8000abe: 611a str r2, [r3, #16] + 8000ac0: 615a str r2, [r3, #20] + 8000ac2: 619a str r2, [r3, #24] /* USER CODE END FMC_Init 1 */ /** Perform the SDRAM1 memory initialization sequence */ hsdram1.Instance = FMC_SDRAM_DEVICE; - 8000a20: 4b1f ldr r3, [pc, #124] @ (8000aa0 ) - 8000a22: 4a20 ldr r2, [pc, #128] @ (8000aa4 ) - 8000a24: 601a str r2, [r3, #0] + 8000ac4: 4b1f ldr r3, [pc, #124] @ (8000b44 ) + 8000ac6: 4a20 ldr r2, [pc, #128] @ (8000b48 ) + 8000ac8: 601a str r2, [r3, #0] /* hsdram1.Init */ hsdram1.Init.SDBank = FMC_SDRAM_BANK2; - 8000a26: 4b1e ldr r3, [pc, #120] @ (8000aa0 ) - 8000a28: 2201 movs r2, #1 - 8000a2a: 605a str r2, [r3, #4] + 8000aca: 4b1e ldr r3, [pc, #120] @ (8000b44 ) + 8000acc: 2201 movs r2, #1 + 8000ace: 605a str r2, [r3, #4] hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; - 8000a2c: 4b1c ldr r3, [pc, #112] @ (8000aa0 ) - 8000a2e: 2200 movs r2, #0 - 8000a30: 609a str r2, [r3, #8] + 8000ad0: 4b1c ldr r3, [pc, #112] @ (8000b44 ) + 8000ad2: 2200 movs r2, #0 + 8000ad4: 609a str r2, [r3, #8] hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; - 8000a32: 4b1b ldr r3, [pc, #108] @ (8000aa0 ) - 8000a34: 2204 movs r2, #4 - 8000a36: 60da str r2, [r3, #12] + 8000ad6: 4b1b ldr r3, [pc, #108] @ (8000b44 ) + 8000ad8: 2204 movs r2, #4 + 8000ada: 60da str r2, [r3, #12] hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; - 8000a38: 4b19 ldr r3, [pc, #100] @ (8000aa0 ) - 8000a3a: 2210 movs r2, #16 - 8000a3c: 611a str r2, [r3, #16] + 8000adc: 4b19 ldr r3, [pc, #100] @ (8000b44 ) + 8000ade: 2210 movs r2, #16 + 8000ae0: 611a str r2, [r3, #16] hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; - 8000a3e: 4b18 ldr r3, [pc, #96] @ (8000aa0 ) - 8000a40: 2240 movs r2, #64 @ 0x40 - 8000a42: 615a str r2, [r3, #20] + 8000ae2: 4b18 ldr r3, [pc, #96] @ (8000b44 ) + 8000ae4: 2240 movs r2, #64 @ 0x40 + 8000ae6: 615a str r2, [r3, #20] hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; - 8000a44: 4b16 ldr r3, [pc, #88] @ (8000aa0 ) - 8000a46: f44f 72c0 mov.w r2, #384 @ 0x180 - 8000a4a: 619a str r2, [r3, #24] + 8000ae8: 4b16 ldr r3, [pc, #88] @ (8000b44 ) + 8000aea: f44f 72c0 mov.w r2, #384 @ 0x180 + 8000aee: 619a str r2, [r3, #24] hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; - 8000a4c: 4b14 ldr r3, [pc, #80] @ (8000aa0 ) - 8000a4e: 2200 movs r2, #0 - 8000a50: 61da str r2, [r3, #28] + 8000af0: 4b14 ldr r3, [pc, #80] @ (8000b44 ) + 8000af2: 2200 movs r2, #0 + 8000af4: 61da str r2, [r3, #28] hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_PERIOD_2; - 8000a52: 4b13 ldr r3, [pc, #76] @ (8000aa0 ) - 8000a54: f44f 6200 mov.w r2, #2048 @ 0x800 - 8000a58: 621a str r2, [r3, #32] + 8000af6: 4b13 ldr r3, [pc, #76] @ (8000b44 ) + 8000af8: f44f 6200 mov.w r2, #2048 @ 0x800 + 8000afc: 621a str r2, [r3, #32] hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE; - 8000a5a: 4b11 ldr r3, [pc, #68] @ (8000aa0 ) - 8000a5c: 2200 movs r2, #0 - 8000a5e: 625a str r2, [r3, #36] @ 0x24 + 8000afe: 4b11 ldr r3, [pc, #68] @ (8000b44 ) + 8000b00: 2200 movs r2, #0 + 8000b02: 625a str r2, [r3, #36] @ 0x24 hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_1; - 8000a60: 4b0f ldr r3, [pc, #60] @ (8000aa0 ) - 8000a62: f44f 5200 mov.w r2, #8192 @ 0x2000 - 8000a66: 629a str r2, [r3, #40] @ 0x28 + 8000b04: 4b0f ldr r3, [pc, #60] @ (8000b44 ) + 8000b06: f44f 5200 mov.w r2, #8192 @ 0x2000 + 8000b0a: 629a str r2, [r3, #40] @ 0x28 /* SdramTiming */ SdramTiming.LoadToActiveDelay = 2; - 8000a68: 2302 movs r3, #2 - 8000a6a: 607b str r3, [r7, #4] + 8000b0c: 2302 movs r3, #2 + 8000b0e: 607b str r3, [r7, #4] SdramTiming.ExitSelfRefreshDelay = 7; - 8000a6c: 2307 movs r3, #7 - 8000a6e: 60bb str r3, [r7, #8] + 8000b10: 2307 movs r3, #7 + 8000b12: 60bb str r3, [r7, #8] SdramTiming.SelfRefreshTime = 4; - 8000a70: 2304 movs r3, #4 - 8000a72: 60fb str r3, [r7, #12] + 8000b14: 2304 movs r3, #4 + 8000b16: 60fb str r3, [r7, #12] SdramTiming.RowCycleDelay = 7; - 8000a74: 2307 movs r3, #7 - 8000a76: 613b str r3, [r7, #16] + 8000b18: 2307 movs r3, #7 + 8000b1a: 613b str r3, [r7, #16] SdramTiming.WriteRecoveryTime = 3; - 8000a78: 2303 movs r3, #3 - 8000a7a: 617b str r3, [r7, #20] + 8000b1c: 2303 movs r3, #3 + 8000b1e: 617b str r3, [r7, #20] SdramTiming.RPDelay = 2; - 8000a7c: 2302 movs r3, #2 - 8000a7e: 61bb str r3, [r7, #24] + 8000b20: 2302 movs r3, #2 + 8000b22: 61bb str r3, [r7, #24] SdramTiming.RCDDelay = 2; - 8000a80: 2302 movs r3, #2 - 8000a82: 61fb str r3, [r7, #28] + 8000b24: 2302 movs r3, #2 + 8000b26: 61fb str r3, [r7, #28] if (HAL_SDRAM_Init(&hsdram1, &SdramTiming) != HAL_OK) - 8000a84: 1d3b adds r3, r7, #4 - 8000a86: 4619 mov r1, r3 - 8000a88: 4805 ldr r0, [pc, #20] @ (8000aa0 ) - 8000a8a: f004 fbd3 bl 8005234 - 8000a8e: 4603 mov r3, r0 - 8000a90: 2b00 cmp r3, #0 - 8000a92: d001 beq.n 8000a98 + 8000b28: 1d3b adds r3, r7, #4 + 8000b2a: 4619 mov r1, r3 + 8000b2c: 4805 ldr r0, [pc, #20] @ (8000b44 ) + 8000b2e: f004 fbaf bl 8005290 + 8000b32: 4603 mov r3, r0 + 8000b34: 2b00 cmp r3, #0 + 8000b36: d001 beq.n 8000b3c { Error_Handler( ); - 8000a94: f000 f93e bl 8000d14 + 8000b38: f000 f93e bl 8000db8 } /* USER CODE BEGIN FMC_Init 2 */ /* USER CODE END FMC_Init 2 */ } - 8000a98: bf00 nop - 8000a9a: 3720 adds r7, #32 - 8000a9c: 46bd mov sp, r7 - 8000a9e: bd80 pop {r7, pc} - 8000aa0: 20000258 .word 0x20000258 - 8000aa4: a0000140 .word 0xa0000140 + 8000b3c: bf00 nop + 8000b3e: 3720 adds r7, #32 + 8000b40: 46bd mov sp, r7 + 8000b42: bd80 pop {r7, pc} + 8000b44: 20000264 .word 0x20000264 + 8000b48: a0000140 .word 0xa0000140 -08000aa8 : +08000b4c : * @brief GPIO Initialization Function * @param None * @retval None */ static void MX_GPIO_Init(void) { - 8000aa8: b580 push {r7, lr} - 8000aaa: b08e sub sp, #56 @ 0x38 - 8000aac: af00 add r7, sp, #0 + 8000b4c: b580 push {r7, lr} + 8000b4e: b08e sub sp, #56 @ 0x38 + 8000b50: af00 add r7, sp, #0 GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8000aae: f107 0324 add.w r3, r7, #36 @ 0x24 - 8000ab2: 2200 movs r2, #0 - 8000ab4: 601a str r2, [r3, #0] - 8000ab6: 605a str r2, [r3, #4] - 8000ab8: 609a str r2, [r3, #8] - 8000aba: 60da str r2, [r3, #12] - 8000abc: 611a str r2, [r3, #16] + 8000b52: f107 0324 add.w r3, r7, #36 @ 0x24 + 8000b56: 2200 movs r2, #0 + 8000b58: 601a str r2, [r3, #0] + 8000b5a: 605a str r2, [r3, #4] + 8000b5c: 609a str r2, [r3, #8] + 8000b5e: 60da str r2, [r3, #12] + 8000b60: 611a str r2, [r3, #16] /* USER CODE BEGIN MX_GPIO_Init_1 */ /* USER CODE END MX_GPIO_Init_1 */ /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOE_CLK_ENABLE(); - 8000abe: 2300 movs r3, #0 - 8000ac0: 623b str r3, [r7, #32] - 8000ac2: 4b84 ldr r3, [pc, #528] @ (8000cd4 ) - 8000ac4: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000ac6: 4a83 ldr r2, [pc, #524] @ (8000cd4 ) - 8000ac8: f043 0310 orr.w r3, r3, #16 - 8000acc: 6313 str r3, [r2, #48] @ 0x30 - 8000ace: 4b81 ldr r3, [pc, #516] @ (8000cd4 ) - 8000ad0: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000ad2: f003 0310 and.w r3, r3, #16 - 8000ad6: 623b str r3, [r7, #32] - 8000ad8: 6a3b ldr r3, [r7, #32] + 8000b62: 2300 movs r3, #0 + 8000b64: 623b str r3, [r7, #32] + 8000b66: 4b84 ldr r3, [pc, #528] @ (8000d78 ) + 8000b68: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000b6a: 4a83 ldr r2, [pc, #524] @ (8000d78 ) + 8000b6c: f043 0310 orr.w r3, r3, #16 + 8000b70: 6313 str r3, [r2, #48] @ 0x30 + 8000b72: 4b81 ldr r3, [pc, #516] @ (8000d78 ) + 8000b74: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000b76: f003 0310 and.w r3, r3, #16 + 8000b7a: 623b str r3, [r7, #32] + 8000b7c: 6a3b ldr r3, [r7, #32] __HAL_RCC_GPIOC_CLK_ENABLE(); - 8000ada: 2300 movs r3, #0 - 8000adc: 61fb str r3, [r7, #28] - 8000ade: 4b7d ldr r3, [pc, #500] @ (8000cd4 ) - 8000ae0: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000ae2: 4a7c ldr r2, [pc, #496] @ (8000cd4 ) - 8000ae4: f043 0304 orr.w r3, r3, #4 - 8000ae8: 6313 str r3, [r2, #48] @ 0x30 - 8000aea: 4b7a ldr r3, [pc, #488] @ (8000cd4 ) - 8000aec: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000aee: f003 0304 and.w r3, r3, #4 - 8000af2: 61fb str r3, [r7, #28] - 8000af4: 69fb ldr r3, [r7, #28] + 8000b7e: 2300 movs r3, #0 + 8000b80: 61fb str r3, [r7, #28] + 8000b82: 4b7d ldr r3, [pc, #500] @ (8000d78 ) + 8000b84: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000b86: 4a7c ldr r2, [pc, #496] @ (8000d78 ) + 8000b88: f043 0304 orr.w r3, r3, #4 + 8000b8c: 6313 str r3, [r2, #48] @ 0x30 + 8000b8e: 4b7a ldr r3, [pc, #488] @ (8000d78 ) + 8000b90: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000b92: f003 0304 and.w r3, r3, #4 + 8000b96: 61fb str r3, [r7, #28] + 8000b98: 69fb ldr r3, [r7, #28] __HAL_RCC_GPIOF_CLK_ENABLE(); - 8000af6: 2300 movs r3, #0 - 8000af8: 61bb str r3, [r7, #24] - 8000afa: 4b76 ldr r3, [pc, #472] @ (8000cd4 ) - 8000afc: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000afe: 4a75 ldr r2, [pc, #468] @ (8000cd4 ) - 8000b00: f043 0320 orr.w r3, r3, #32 - 8000b04: 6313 str r3, [r2, #48] @ 0x30 - 8000b06: 4b73 ldr r3, [pc, #460] @ (8000cd4 ) - 8000b08: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000b0a: f003 0320 and.w r3, r3, #32 - 8000b0e: 61bb str r3, [r7, #24] - 8000b10: 69bb ldr r3, [r7, #24] + 8000b9a: 2300 movs r3, #0 + 8000b9c: 61bb str r3, [r7, #24] + 8000b9e: 4b76 ldr r3, [pc, #472] @ (8000d78 ) + 8000ba0: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000ba2: 4a75 ldr r2, [pc, #468] @ (8000d78 ) + 8000ba4: f043 0320 orr.w r3, r3, #32 + 8000ba8: 6313 str r3, [r2, #48] @ 0x30 + 8000baa: 4b73 ldr r3, [pc, #460] @ (8000d78 ) + 8000bac: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000bae: f003 0320 and.w r3, r3, #32 + 8000bb2: 61bb str r3, [r7, #24] + 8000bb4: 69bb ldr r3, [r7, #24] __HAL_RCC_GPIOH_CLK_ENABLE(); - 8000b12: 2300 movs r3, #0 - 8000b14: 617b str r3, [r7, #20] - 8000b16: 4b6f ldr r3, [pc, #444] @ (8000cd4 ) - 8000b18: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000b1a: 4a6e ldr r2, [pc, #440] @ (8000cd4 ) - 8000b1c: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8000b20: 6313 str r3, [r2, #48] @ 0x30 - 8000b22: 4b6c ldr r3, [pc, #432] @ (8000cd4 ) - 8000b24: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000b26: f003 0380 and.w r3, r3, #128 @ 0x80 - 8000b2a: 617b str r3, [r7, #20] - 8000b2c: 697b ldr r3, [r7, #20] + 8000bb6: 2300 movs r3, #0 + 8000bb8: 617b str r3, [r7, #20] + 8000bba: 4b6f ldr r3, [pc, #444] @ (8000d78 ) + 8000bbc: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000bbe: 4a6e ldr r2, [pc, #440] @ (8000d78 ) + 8000bc0: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8000bc4: 6313 str r3, [r2, #48] @ 0x30 + 8000bc6: 4b6c ldr r3, [pc, #432] @ (8000d78 ) + 8000bc8: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000bca: f003 0380 and.w r3, r3, #128 @ 0x80 + 8000bce: 617b str r3, [r7, #20] + 8000bd0: 697b ldr r3, [r7, #20] __HAL_RCC_GPIOA_CLK_ENABLE(); - 8000b2e: 2300 movs r3, #0 - 8000b30: 613b str r3, [r7, #16] - 8000b32: 4b68 ldr r3, [pc, #416] @ (8000cd4 ) - 8000b34: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000b36: 4a67 ldr r2, [pc, #412] @ (8000cd4 ) - 8000b38: f043 0301 orr.w r3, r3, #1 - 8000b3c: 6313 str r3, [r2, #48] @ 0x30 - 8000b3e: 4b65 ldr r3, [pc, #404] @ (8000cd4 ) - 8000b40: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000b42: f003 0301 and.w r3, r3, #1 - 8000b46: 613b str r3, [r7, #16] - 8000b48: 693b ldr r3, [r7, #16] + 8000bd2: 2300 movs r3, #0 + 8000bd4: 613b str r3, [r7, #16] + 8000bd6: 4b68 ldr r3, [pc, #416] @ (8000d78 ) + 8000bd8: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000bda: 4a67 ldr r2, [pc, #412] @ (8000d78 ) + 8000bdc: f043 0301 orr.w r3, r3, #1 + 8000be0: 6313 str r3, [r2, #48] @ 0x30 + 8000be2: 4b65 ldr r3, [pc, #404] @ (8000d78 ) + 8000be4: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000be6: f003 0301 and.w r3, r3, #1 + 8000bea: 613b str r3, [r7, #16] + 8000bec: 693b ldr r3, [r7, #16] __HAL_RCC_GPIOB_CLK_ENABLE(); - 8000b4a: 2300 movs r3, #0 - 8000b4c: 60fb str r3, [r7, #12] - 8000b4e: 4b61 ldr r3, [pc, #388] @ (8000cd4 ) - 8000b50: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000b52: 4a60 ldr r2, [pc, #384] @ (8000cd4 ) - 8000b54: f043 0302 orr.w r3, r3, #2 - 8000b58: 6313 str r3, [r2, #48] @ 0x30 - 8000b5a: 4b5e ldr r3, [pc, #376] @ (8000cd4 ) - 8000b5c: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000b5e: f003 0302 and.w r3, r3, #2 - 8000b62: 60fb str r3, [r7, #12] - 8000b64: 68fb ldr r3, [r7, #12] + 8000bee: 2300 movs r3, #0 + 8000bf0: 60fb str r3, [r7, #12] + 8000bf2: 4b61 ldr r3, [pc, #388] @ (8000d78 ) + 8000bf4: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000bf6: 4a60 ldr r2, [pc, #384] @ (8000d78 ) + 8000bf8: f043 0302 orr.w r3, r3, #2 + 8000bfc: 6313 str r3, [r2, #48] @ 0x30 + 8000bfe: 4b5e ldr r3, [pc, #376] @ (8000d78 ) + 8000c00: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000c02: f003 0302 and.w r3, r3, #2 + 8000c06: 60fb str r3, [r7, #12] + 8000c08: 68fb ldr r3, [r7, #12] __HAL_RCC_GPIOG_CLK_ENABLE(); - 8000b66: 2300 movs r3, #0 - 8000b68: 60bb str r3, [r7, #8] - 8000b6a: 4b5a ldr r3, [pc, #360] @ (8000cd4 ) - 8000b6c: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000b6e: 4a59 ldr r2, [pc, #356] @ (8000cd4 ) - 8000b70: f043 0340 orr.w r3, r3, #64 @ 0x40 - 8000b74: 6313 str r3, [r2, #48] @ 0x30 - 8000b76: 4b57 ldr r3, [pc, #348] @ (8000cd4 ) - 8000b78: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000b7a: f003 0340 and.w r3, r3, #64 @ 0x40 - 8000b7e: 60bb str r3, [r7, #8] - 8000b80: 68bb ldr r3, [r7, #8] + 8000c0a: 2300 movs r3, #0 + 8000c0c: 60bb str r3, [r7, #8] + 8000c0e: 4b5a ldr r3, [pc, #360] @ (8000d78 ) + 8000c10: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000c12: 4a59 ldr r2, [pc, #356] @ (8000d78 ) + 8000c14: f043 0340 orr.w r3, r3, #64 @ 0x40 + 8000c18: 6313 str r3, [r2, #48] @ 0x30 + 8000c1a: 4b57 ldr r3, [pc, #348] @ (8000d78 ) + 8000c1c: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000c1e: f003 0340 and.w r3, r3, #64 @ 0x40 + 8000c22: 60bb str r3, [r7, #8] + 8000c24: 68bb ldr r3, [r7, #8] __HAL_RCC_GPIOD_CLK_ENABLE(); - 8000b82: 2300 movs r3, #0 - 8000b84: 607b str r3, [r7, #4] - 8000b86: 4b53 ldr r3, [pc, #332] @ (8000cd4 ) - 8000b88: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000b8a: 4a52 ldr r2, [pc, #328] @ (8000cd4 ) - 8000b8c: f043 0308 orr.w r3, r3, #8 - 8000b90: 6313 str r3, [r2, #48] @ 0x30 - 8000b92: 4b50 ldr r3, [pc, #320] @ (8000cd4 ) - 8000b94: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000b96: f003 0308 and.w r3, r3, #8 - 8000b9a: 607b str r3, [r7, #4] - 8000b9c: 687b ldr r3, [r7, #4] + 8000c26: 2300 movs r3, #0 + 8000c28: 607b str r3, [r7, #4] + 8000c2a: 4b53 ldr r3, [pc, #332] @ (8000d78 ) + 8000c2c: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000c2e: 4a52 ldr r2, [pc, #328] @ (8000d78 ) + 8000c30: f043 0308 orr.w r3, r3, #8 + 8000c34: 6313 str r3, [r2, #48] @ 0x30 + 8000c36: 4b50 ldr r3, [pc, #320] @ (8000d78 ) + 8000c38: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000c3a: f003 0308 and.w r3, r3, #8 + 8000c3e: 607b str r3, [r7, #4] + 8000c40: 687b ldr r3, [r7, #4] /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin, GPIO_PIN_RESET); - 8000b9e: 2200 movs r2, #0 - 8000ba0: 211c movs r1, #28 - 8000ba2: 484d ldr r0, [pc, #308] @ (8000cd8 ) - 8000ba4: f001 fa12 bl 8001fcc + HAL_GPIO_WritePin(GPIOE, RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin, GPIO_PIN_RESET); + 8000c42: 2200 movs r2, #0 + 8000c44: 213c movs r1, #60 @ 0x3c + 8000c46: 484d ldr r0, [pc, #308] @ (8000d7c ) + 8000c48: f001 f9ee bl 8002028 /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOC, NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin, GPIO_PIN_RESET); - 8000ba8: 2200 movs r2, #0 - 8000baa: 2116 movs r1, #22 - 8000bac: 484b ldr r0, [pc, #300] @ (8000cdc ) - 8000bae: f001 fa0d bl 8001fcc + 8000c4c: 2200 movs r2, #0 + 8000c4e: 2116 movs r1, #22 + 8000c50: 484b ldr r0, [pc, #300] @ (8000d80 ) + 8000c52: f001 f9e9 bl 8002028 /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(ACP_RST_GPIO_Port, ACP_RST_Pin, GPIO_PIN_RESET); - 8000bb2: 2200 movs r2, #0 - 8000bb4: 2180 movs r1, #128 @ 0x80 - 8000bb6: 484a ldr r0, [pc, #296] @ (8000ce0 ) - 8000bb8: f001 fa08 bl 8001fcc + 8000c56: 2200 movs r2, #0 + 8000c58: 2180 movs r1, #128 @ 0x80 + 8000c5a: 484a ldr r0, [pc, #296] @ (8000d84 ) + 8000c5c: f001 f9e4 bl 8002028 /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOD, RDX_Pin|WRX_DCX_Pin, GPIO_PIN_RESET); - 8000bbc: 2200 movs r2, #0 - 8000bbe: f44f 5140 mov.w r1, #12288 @ 0x3000 - 8000bc2: 4848 ldr r0, [pc, #288] @ (8000ce4 ) - 8000bc4: f001 fa02 bl 8001fcc + 8000c60: 2200 movs r2, #0 + 8000c62: f44f 5140 mov.w r1, #12288 @ 0x3000 + 8000c66: 4848 ldr r0, [pc, #288] @ (8000d88 ) + 8000c68: f001 f9de bl 8002028 /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOG, LD3_Pin|LD4_Pin, GPIO_PIN_RESET); - 8000bc8: 2200 movs r2, #0 - 8000bca: f44f 41c0 mov.w r1, #24576 @ 0x6000 - 8000bce: 4846 ldr r0, [pc, #280] @ (8000ce8 ) - 8000bd0: f001 f9fc bl 8001fcc + 8000c6c: 2200 movs r2, #0 + 8000c6e: f44f 41c0 mov.w r1, #24576 @ 0x6000 + 8000c72: 4846 ldr r0, [pc, #280] @ (8000d8c ) + 8000c74: f001 f9d8 bl 8002028 - /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin */ - GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin; - 8000bd4: 231c movs r3, #28 - 8000bd6: 627b str r3, [r7, #36] @ 0x24 - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8000bd8: 2301 movs r3, #1 - 8000bda: 62bb str r3, [r7, #40] @ 0x28 - GPIO_InitStruct.Pull = GPIO_NOPULL; - 8000bdc: 2300 movs r3, #0 - 8000bde: 62fb str r3, [r7, #44] @ 0x2c - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8000be0: 2300 movs r3, #0 - 8000be2: 633b str r3, [r7, #48] @ 0x30 - HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - 8000be4: f107 0324 add.w r3, r7, #36 @ 0x24 - 8000be8: 4619 mov r1, r3 - 8000bea: 483b ldr r0, [pc, #236] @ (8000cd8 ) - 8000bec: f001 f842 bl 8001c74 - - /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ - GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; - 8000bf0: 2316 movs r3, #22 - 8000bf2: 627b str r3, [r7, #36] @ 0x24 - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8000bf4: 2301 movs r3, #1 - 8000bf6: 62bb str r3, [r7, #40] @ 0x28 - GPIO_InitStruct.Pull = GPIO_NOPULL; - 8000bf8: 2300 movs r3, #0 - 8000bfa: 62fb str r3, [r7, #44] @ 0x2c - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8000bfc: 2300 movs r3, #0 - 8000bfe: 633b str r3, [r7, #48] @ 0x30 - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - 8000c00: f107 0324 add.w r3, r7, #36 @ 0x24 - 8000c04: 4619 mov r1, r3 - 8000c06: 4835 ldr r0, [pc, #212] @ (8000cdc ) - 8000c08: f001 f834 bl 8001c74 - - /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ - GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; - 8000c0c: f248 0307 movw r3, #32775 @ 0x8007 - 8000c10: 627b str r3, [r7, #36] @ 0x24 - GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; - 8000c12: f44f 1390 mov.w r3, #1179648 @ 0x120000 - 8000c16: 62bb str r3, [r7, #40] @ 0x28 - GPIO_InitStruct.Pull = GPIO_NOPULL; - 8000c18: 2300 movs r3, #0 - 8000c1a: 62fb str r3, [r7, #44] @ 0x2c - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 8000c1c: f107 0324 add.w r3, r7, #36 @ 0x24 - 8000c20: 4619 mov r1, r3 - 8000c22: 482f ldr r0, [pc, #188] @ (8000ce0 ) - 8000c24: f001 f826 bl 8001c74 - - /*Configure GPIO pin : ACP_RST_Pin */ - GPIO_InitStruct.Pin = ACP_RST_Pin; - 8000c28: 2380 movs r3, #128 @ 0x80 - 8000c2a: 627b str r3, [r7, #36] @ 0x24 - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8000c2c: 2301 movs r3, #1 - 8000c2e: 62bb str r3, [r7, #40] @ 0x28 - GPIO_InitStruct.Pull = GPIO_NOPULL; - 8000c30: 2300 movs r3, #0 - 8000c32: 62fb str r3, [r7, #44] @ 0x2c - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8000c34: 2300 movs r3, #0 - 8000c36: 633b str r3, [r7, #48] @ 0x30 - HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); - 8000c38: f107 0324 add.w r3, r7, #36 @ 0x24 - 8000c3c: 4619 mov r1, r3 - 8000c3e: 4828 ldr r0, [pc, #160] @ (8000ce0 ) - 8000c40: f001 f818 bl 8001c74 - - /*Configure GPIO pin : OTG_FS_OC_Pin */ - GPIO_InitStruct.Pin = OTG_FS_OC_Pin; - 8000c44: 2320 movs r3, #32 - 8000c46: 627b str r3, [r7, #36] @ 0x24 - GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; - 8000c48: f44f 1390 mov.w r3, #1179648 @ 0x120000 - 8000c4c: 62bb str r3, [r7, #40] @ 0x28 - GPIO_InitStruct.Pull = GPIO_NOPULL; - 8000c4e: 2300 movs r3, #0 - 8000c50: 62fb str r3, [r7, #44] @ 0x2c - HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); - 8000c52: f107 0324 add.w r3, r7, #36 @ 0x24 - 8000c56: 4619 mov r1, r3 - 8000c58: 4820 ldr r0, [pc, #128] @ (8000cdc ) - 8000c5a: f001 f80b bl 8001c74 - - /*Configure GPIO pin : BOOT1_Pin */ - GPIO_InitStruct.Pin = BOOT1_Pin; - 8000c5e: 2304 movs r3, #4 - 8000c60: 627b str r3, [r7, #36] @ 0x24 - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 8000c62: 2300 movs r3, #0 - 8000c64: 62bb str r3, [r7, #40] @ 0x28 - GPIO_InitStruct.Pull = GPIO_NOPULL; - 8000c66: 2300 movs r3, #0 - 8000c68: 62fb str r3, [r7, #44] @ 0x2c - HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); - 8000c6a: f107 0324 add.w r3, r7, #36 @ 0x24 - 8000c6e: 4619 mov r1, r3 - 8000c70: 481e ldr r0, [pc, #120] @ (8000cec ) - 8000c72: f000 ffff bl 8001c74 - - /*Configure GPIO pin : TE_Pin */ - GPIO_InitStruct.Pin = TE_Pin; - 8000c76: f44f 6300 mov.w r3, #2048 @ 0x800 + /*Configure GPIO pins : RedLight_Pin YellowLight_Pin GreenLight_Pin WalkLight_Pin */ + GPIO_InitStruct.Pin = RedLight_Pin|YellowLight_Pin|GreenLight_Pin|WalkLight_Pin; + 8000c78: 233c movs r3, #60 @ 0x3c 8000c7a: 627b str r3, [r7, #36] @ 0x24 - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 8000c7c: 2300 movs r3, #0 + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 8000c7c: 2301 movs r3, #1 8000c7e: 62bb str r3, [r7, #40] @ 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; 8000c80: 2300 movs r3, #0 8000c82: 62fb str r3, [r7, #44] @ 0x2c + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8000c84: 2300 movs r3, #0 + 8000c86: 633b str r3, [r7, #48] @ 0x30 + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + 8000c88: f107 0324 add.w r3, r7, #36 @ 0x24 + 8000c8c: 4619 mov r1, r3 + 8000c8e: 483b ldr r0, [pc, #236] @ (8000d7c ) + 8000c90: f001 f81e bl 8001cd0 + + /*Configure GPIO pins : NCS_MEMS_SPI_Pin CSX_Pin OTG_FS_PSO_Pin */ + GPIO_InitStruct.Pin = NCS_MEMS_SPI_Pin|CSX_Pin|OTG_FS_PSO_Pin; + 8000c94: 2316 movs r3, #22 + 8000c96: 627b str r3, [r7, #36] @ 0x24 + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 8000c98: 2301 movs r3, #1 + 8000c9a: 62bb str r3, [r7, #40] @ 0x28 + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000c9c: 2300 movs r3, #0 + 8000c9e: 62fb str r3, [r7, #44] @ 0x2c + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8000ca0: 2300 movs r3, #0 + 8000ca2: 633b str r3, [r7, #48] @ 0x30 + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 8000ca4: f107 0324 add.w r3, r7, #36 @ 0x24 + 8000ca8: 4619 mov r1, r3 + 8000caa: 4835 ldr r0, [pc, #212] @ (8000d80 ) + 8000cac: f001 f810 bl 8001cd0 + + /*Configure GPIO pins : B1_Pin MEMS_INT1_Pin MEMS_INT2_Pin TP_INT1_Pin */ + GPIO_InitStruct.Pin = B1_Pin|MEMS_INT1_Pin|MEMS_INT2_Pin|TP_INT1_Pin; + 8000cb0: f248 0307 movw r3, #32775 @ 0x8007 + 8000cb4: 627b str r3, [r7, #36] @ 0x24 + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + 8000cb6: f44f 1390 mov.w r3, #1179648 @ 0x120000 + 8000cba: 62bb str r3, [r7, #40] @ 0x28 + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000cbc: 2300 movs r3, #0 + 8000cbe: 62fb str r3, [r7, #44] @ 0x2c + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 8000cc0: f107 0324 add.w r3, r7, #36 @ 0x24 + 8000cc4: 4619 mov r1, r3 + 8000cc6: 482f ldr r0, [pc, #188] @ (8000d84 ) + 8000cc8: f001 f802 bl 8001cd0 + + /*Configure GPIO pin : ACP_RST_Pin */ + GPIO_InitStruct.Pin = ACP_RST_Pin; + 8000ccc: 2380 movs r3, #128 @ 0x80 + 8000cce: 627b str r3, [r7, #36] @ 0x24 + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 8000cd0: 2301 movs r3, #1 + 8000cd2: 62bb str r3, [r7, #40] @ 0x28 + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000cd4: 2300 movs r3, #0 + 8000cd6: 62fb str r3, [r7, #44] @ 0x2c + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8000cd8: 2300 movs r3, #0 + 8000cda: 633b str r3, [r7, #48] @ 0x30 + HAL_GPIO_Init(ACP_RST_GPIO_Port, &GPIO_InitStruct); + 8000cdc: f107 0324 add.w r3, r7, #36 @ 0x24 + 8000ce0: 4619 mov r1, r3 + 8000ce2: 4828 ldr r0, [pc, #160] @ (8000d84 ) + 8000ce4: f000 fff4 bl 8001cd0 + + /*Configure GPIO pin : OTG_FS_OC_Pin */ + GPIO_InitStruct.Pin = OTG_FS_OC_Pin; + 8000ce8: 2320 movs r3, #32 + 8000cea: 627b str r3, [r7, #36] @ 0x24 + GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING; + 8000cec: f44f 1390 mov.w r3, #1179648 @ 0x120000 + 8000cf0: 62bb str r3, [r7, #40] @ 0x28 + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000cf2: 2300 movs r3, #0 + 8000cf4: 62fb str r3, [r7, #44] @ 0x2c + HAL_GPIO_Init(OTG_FS_OC_GPIO_Port, &GPIO_InitStruct); + 8000cf6: f107 0324 add.w r3, r7, #36 @ 0x24 + 8000cfa: 4619 mov r1, r3 + 8000cfc: 4820 ldr r0, [pc, #128] @ (8000d80 ) + 8000cfe: f000 ffe7 bl 8001cd0 + + /*Configure GPIO pin : BOOT1_Pin */ + GPIO_InitStruct.Pin = BOOT1_Pin; + 8000d02: 2304 movs r3, #4 + 8000d04: 627b str r3, [r7, #36] @ 0x24 + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + 8000d06: 2300 movs r3, #0 + 8000d08: 62bb str r3, [r7, #40] @ 0x28 + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000d0a: 2300 movs r3, #0 + 8000d0c: 62fb str r3, [r7, #44] @ 0x2c + HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct); + 8000d0e: f107 0324 add.w r3, r7, #36 @ 0x24 + 8000d12: 4619 mov r1, r3 + 8000d14: 481e ldr r0, [pc, #120] @ (8000d90 ) + 8000d16: f000 ffdb bl 8001cd0 + + /*Configure GPIO pin : TE_Pin */ + GPIO_InitStruct.Pin = TE_Pin; + 8000d1a: f44f 6300 mov.w r3, #2048 @ 0x800 + 8000d1e: 627b str r3, [r7, #36] @ 0x24 + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + 8000d20: 2300 movs r3, #0 + 8000d22: 62bb str r3, [r7, #40] @ 0x28 + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000d24: 2300 movs r3, #0 + 8000d26: 62fb str r3, [r7, #44] @ 0x2c HAL_GPIO_Init(TE_GPIO_Port, &GPIO_InitStruct); - 8000c84: f107 0324 add.w r3, r7, #36 @ 0x24 - 8000c88: 4619 mov r1, r3 - 8000c8a: 4816 ldr r0, [pc, #88] @ (8000ce4 ) - 8000c8c: f000 fff2 bl 8001c74 + 8000d28: f107 0324 add.w r3, r7, #36 @ 0x24 + 8000d2c: 4619 mov r1, r3 + 8000d2e: 4816 ldr r0, [pc, #88] @ (8000d88 ) + 8000d30: f000 ffce bl 8001cd0 /*Configure GPIO pins : RDX_Pin WRX_DCX_Pin */ GPIO_InitStruct.Pin = RDX_Pin|WRX_DCX_Pin; - 8000c90: f44f 5340 mov.w r3, #12288 @ 0x3000 - 8000c94: 627b str r3, [r7, #36] @ 0x24 + 8000d34: f44f 5340 mov.w r3, #12288 @ 0x3000 + 8000d38: 627b str r3, [r7, #36] @ 0x24 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8000c96: 2301 movs r3, #1 - 8000c98: 62bb str r3, [r7, #40] @ 0x28 + 8000d3a: 2301 movs r3, #1 + 8000d3c: 62bb str r3, [r7, #40] @ 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; - 8000c9a: 2300 movs r3, #0 - 8000c9c: 62fb str r3, [r7, #44] @ 0x2c + 8000d3e: 2300 movs r3, #0 + 8000d40: 62fb str r3, [r7, #44] @ 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8000c9e: 2300 movs r3, #0 - 8000ca0: 633b str r3, [r7, #48] @ 0x30 + 8000d42: 2300 movs r3, #0 + 8000d44: 633b str r3, [r7, #48] @ 0x30 HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - 8000ca2: f107 0324 add.w r3, r7, #36 @ 0x24 - 8000ca6: 4619 mov r1, r3 - 8000ca8: 480e ldr r0, [pc, #56] @ (8000ce4 ) - 8000caa: f000 ffe3 bl 8001c74 + 8000d46: f107 0324 add.w r3, r7, #36 @ 0x24 + 8000d4a: 4619 mov r1, r3 + 8000d4c: 480e ldr r0, [pc, #56] @ (8000d88 ) + 8000d4e: f000 ffbf bl 8001cd0 /*Configure GPIO pins : LD3_Pin LD4_Pin */ GPIO_InitStruct.Pin = LD3_Pin|LD4_Pin; - 8000cae: f44f 43c0 mov.w r3, #24576 @ 0x6000 - 8000cb2: 627b str r3, [r7, #36] @ 0x24 + 8000d52: f44f 43c0 mov.w r3, #24576 @ 0x6000 + 8000d56: 627b str r3, [r7, #36] @ 0x24 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8000cb4: 2301 movs r3, #1 - 8000cb6: 62bb str r3, [r7, #40] @ 0x28 + 8000d58: 2301 movs r3, #1 + 8000d5a: 62bb str r3, [r7, #40] @ 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; - 8000cb8: 2300 movs r3, #0 - 8000cba: 62fb str r3, [r7, #44] @ 0x2c + 8000d5c: 2300 movs r3, #0 + 8000d5e: 62fb str r3, [r7, #44] @ 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8000cbc: 2300 movs r3, #0 - 8000cbe: 633b str r3, [r7, #48] @ 0x30 + 8000d60: 2300 movs r3, #0 + 8000d62: 633b str r3, [r7, #48] @ 0x30 HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); - 8000cc0: f107 0324 add.w r3, r7, #36 @ 0x24 - 8000cc4: 4619 mov r1, r3 - 8000cc6: 4808 ldr r0, [pc, #32] @ (8000ce8 ) - 8000cc8: f000 ffd4 bl 8001c74 + 8000d64: f107 0324 add.w r3, r7, #36 @ 0x24 + 8000d68: 4619 mov r1, r3 + 8000d6a: 4808 ldr r0, [pc, #32] @ (8000d8c ) + 8000d6c: f000 ffb0 bl 8001cd0 /* USER CODE BEGIN MX_GPIO_Init_2 */ /* USER CODE END MX_GPIO_Init_2 */ } - 8000ccc: bf00 nop - 8000cce: 3738 adds r7, #56 @ 0x38 - 8000cd0: 46bd mov sp, r7 - 8000cd2: bd80 pop {r7, pc} - 8000cd4: 40023800 .word 0x40023800 - 8000cd8: 40021000 .word 0x40021000 - 8000cdc: 40020800 .word 0x40020800 - 8000ce0: 40020000 .word 0x40020000 - 8000ce4: 40020c00 .word 0x40020c00 - 8000ce8: 40021800 .word 0x40021800 - 8000cec: 40020400 .word 0x40020400 + 8000d70: bf00 nop + 8000d72: 3738 adds r7, #56 @ 0x38 + 8000d74: 46bd mov sp, r7 + 8000d76: bd80 pop {r7, pc} + 8000d78: 40023800 .word 0x40023800 + 8000d7c: 40021000 .word 0x40021000 + 8000d80: 40020800 .word 0x40020800 + 8000d84: 40020000 .word 0x40020000 + 8000d88: 40020c00 .word 0x40020c00 + 8000d8c: 40021800 .word 0x40021800 + 8000d90: 40020400 .word 0x40020400 -08000cf0 : +08000d94 : * a global variable "uwTick" used as application time base. * @param htim : TIM handle * @retval None */ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { - 8000cf0: b580 push {r7, lr} - 8000cf2: b082 sub sp, #8 - 8000cf4: af00 add r7, sp, #0 - 8000cf6: 6078 str r0, [r7, #4] + 8000d94: b580 push {r7, lr} + 8000d96: b082 sub sp, #8 + 8000d98: af00 add r7, sp, #0 + 8000d9a: 6078 str r0, [r7, #4] /* USER CODE BEGIN Callback 0 */ /* USER CODE END Callback 0 */ if (htim->Instance == TIM6) - 8000cf8: 687b ldr r3, [r7, #4] - 8000cfa: 681b ldr r3, [r3, #0] - 8000cfc: 4a04 ldr r2, [pc, #16] @ (8000d10 ) - 8000cfe: 4293 cmp r3, r2 - 8000d00: d101 bne.n 8000d06 + 8000d9c: 687b ldr r3, [r7, #4] + 8000d9e: 681b ldr r3, [r3, #0] + 8000da0: 4a04 ldr r2, [pc, #16] @ (8000db4 ) + 8000da2: 4293 cmp r3, r2 + 8000da4: d101 bne.n 8000daa { HAL_IncTick(); - 8000d02: f000 fc89 bl 8001618 + 8000da6: f000 fc89 bl 80016bc } /* USER CODE BEGIN Callback 1 */ /* USER CODE END Callback 1 */ } - 8000d06: bf00 nop - 8000d08: 3708 adds r7, #8 - 8000d0a: 46bd mov sp, r7 - 8000d0c: bd80 pop {r7, pc} - 8000d0e: bf00 nop - 8000d10: 40001000 .word 0x40001000 + 8000daa: bf00 nop + 8000dac: 3708 adds r7, #8 + 8000dae: 46bd mov sp, r7 + 8000db0: bd80 pop {r7, pc} + 8000db2: bf00 nop + 8000db4: 40001000 .word 0x40001000 -08000d14 : +08000db8 : /** * @brief This function is executed in case of error occurrence. * @retval None */ void Error_Handler(void) { - 8000d14: b480 push {r7} - 8000d16: af00 add r7, sp, #0 + 8000db8: b480 push {r7} + 8000dba: af00 add r7, sp, #0 \details Disables IRQ interrupts by setting special-purpose register PRIMASK. Can only be executed in Privileged modes. */ __STATIC_FORCEINLINE void __disable_irq(void) { __ASM volatile ("cpsid i" : : : "memory"); - 8000d18: b672 cpsid i + 8000dbc: b672 cpsid i } - 8000d1a: bf00 nop + 8000dbe: 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) - 8000d1c: bf00 nop - 8000d1e: e7fd b.n 8000d1c + 8000dc0: bf00 nop + 8000dc2: e7fd b.n 8000dc0 -08000d20 : +08000dc4 : /* USER CODE END 0 */ /** * Initializes the Global MSP. */ void HAL_MspInit(void) { - 8000d20: b580 push {r7, lr} - 8000d22: b082 sub sp, #8 - 8000d24: af00 add r7, sp, #0 + 8000dc4: b580 push {r7, lr} + 8000dc6: b082 sub sp, #8 + 8000dc8: af00 add r7, sp, #0 /* USER CODE BEGIN MspInit 0 */ /* USER CODE END MspInit 0 */ __HAL_RCC_SYSCFG_CLK_ENABLE(); - 8000d26: 2300 movs r3, #0 - 8000d28: 607b str r3, [r7, #4] - 8000d2a: 4b12 ldr r3, [pc, #72] @ (8000d74 ) - 8000d2c: 6c5b ldr r3, [r3, #68] @ 0x44 - 8000d2e: 4a11 ldr r2, [pc, #68] @ (8000d74 ) - 8000d30: f443 4380 orr.w r3, r3, #16384 @ 0x4000 - 8000d34: 6453 str r3, [r2, #68] @ 0x44 - 8000d36: 4b0f ldr r3, [pc, #60] @ (8000d74 ) - 8000d38: 6c5b ldr r3, [r3, #68] @ 0x44 - 8000d3a: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8000d3e: 607b str r3, [r7, #4] - 8000d40: 687b ldr r3, [r7, #4] + 8000dca: 2300 movs r3, #0 + 8000dcc: 607b str r3, [r7, #4] + 8000dce: 4b12 ldr r3, [pc, #72] @ (8000e18 ) + 8000dd0: 6c5b ldr r3, [r3, #68] @ 0x44 + 8000dd2: 4a11 ldr r2, [pc, #68] @ (8000e18 ) + 8000dd4: f443 4380 orr.w r3, r3, #16384 @ 0x4000 + 8000dd8: 6453 str r3, [r2, #68] @ 0x44 + 8000dda: 4b0f ldr r3, [pc, #60] @ (8000e18 ) + 8000ddc: 6c5b ldr r3, [r3, #68] @ 0x44 + 8000dde: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8000de2: 607b str r3, [r7, #4] + 8000de4: 687b ldr r3, [r7, #4] __HAL_RCC_PWR_CLK_ENABLE(); - 8000d42: 2300 movs r3, #0 - 8000d44: 603b str r3, [r7, #0] - 8000d46: 4b0b ldr r3, [pc, #44] @ (8000d74 ) - 8000d48: 6c1b ldr r3, [r3, #64] @ 0x40 - 8000d4a: 4a0a ldr r2, [pc, #40] @ (8000d74 ) - 8000d4c: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 8000d50: 6413 str r3, [r2, #64] @ 0x40 - 8000d52: 4b08 ldr r3, [pc, #32] @ (8000d74 ) - 8000d54: 6c1b ldr r3, [r3, #64] @ 0x40 - 8000d56: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 8000d5a: 603b str r3, [r7, #0] - 8000d5c: 683b ldr r3, [r7, #0] + 8000de6: 2300 movs r3, #0 + 8000de8: 603b str r3, [r7, #0] + 8000dea: 4b0b ldr r3, [pc, #44] @ (8000e18 ) + 8000dec: 6c1b ldr r3, [r3, #64] @ 0x40 + 8000dee: 4a0a ldr r2, [pc, #40] @ (8000e18 ) + 8000df0: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8000df4: 6413 str r3, [r2, #64] @ 0x40 + 8000df6: 4b08 ldr r3, [pc, #32] @ (8000e18 ) + 8000df8: 6c1b ldr r3, [r3, #64] @ 0x40 + 8000dfa: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8000dfe: 603b str r3, [r7, #0] + 8000e00: 683b ldr r3, [r7, #0] /* System interrupt init*/ /* PendSV_IRQn interrupt configuration */ HAL_NVIC_SetPriority(PendSV_IRQn, 15, 0); - 8000d5e: 2200 movs r2, #0 - 8000d60: 210f movs r1, #15 - 8000d62: f06f 0001 mvn.w r0, #1 - 8000d66: f000 fd53 bl 8001810 + 8000e02: 2200 movs r2, #0 + 8000e04: 210f movs r1, #15 + 8000e06: f06f 0001 mvn.w r0, #1 + 8000e0a: f000 fd2f bl 800186c /* USER CODE BEGIN MspInit 1 */ /* USER CODE END MspInit 1 */ } - 8000d6a: bf00 nop - 8000d6c: 3708 adds r7, #8 - 8000d6e: 46bd mov sp, r7 - 8000d70: bd80 pop {r7, pc} - 8000d72: bf00 nop - 8000d74: 40023800 .word 0x40023800 + 8000e0e: bf00 nop + 8000e10: 3708 adds r7, #8 + 8000e12: 46bd mov sp, r7 + 8000e14: bd80 pop {r7, pc} + 8000e16: bf00 nop + 8000e18: 40023800 .word 0x40023800 -08000d78 : +08000e1c : * This function configures the hardware resources used in this example * @param hcrc: CRC handle pointer * @retval None */ void HAL_CRC_MspInit(CRC_HandleTypeDef* hcrc) { - 8000d78: b480 push {r7} - 8000d7a: b085 sub sp, #20 - 8000d7c: af00 add r7, sp, #0 - 8000d7e: 6078 str r0, [r7, #4] + 8000e1c: b480 push {r7} + 8000e1e: b085 sub sp, #20 + 8000e20: af00 add r7, sp, #0 + 8000e22: 6078 str r0, [r7, #4] if(hcrc->Instance==CRC) - 8000d80: 687b ldr r3, [r7, #4] - 8000d82: 681b ldr r3, [r3, #0] - 8000d84: 4a0b ldr r2, [pc, #44] @ (8000db4 ) - 8000d86: 4293 cmp r3, r2 - 8000d88: d10d bne.n 8000da6 + 8000e24: 687b ldr r3, [r7, #4] + 8000e26: 681b ldr r3, [r3, #0] + 8000e28: 4a0b ldr r2, [pc, #44] @ (8000e58 ) + 8000e2a: 4293 cmp r3, r2 + 8000e2c: d10d bne.n 8000e4a { /* USER CODE BEGIN CRC_MspInit 0 */ /* USER CODE END CRC_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_CRC_CLK_ENABLE(); - 8000d8a: 2300 movs r3, #0 - 8000d8c: 60fb str r3, [r7, #12] - 8000d8e: 4b0a ldr r3, [pc, #40] @ (8000db8 ) - 8000d90: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000d92: 4a09 ldr r2, [pc, #36] @ (8000db8 ) - 8000d94: f443 5380 orr.w r3, r3, #4096 @ 0x1000 - 8000d98: 6313 str r3, [r2, #48] @ 0x30 - 8000d9a: 4b07 ldr r3, [pc, #28] @ (8000db8 ) - 8000d9c: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000d9e: f403 5380 and.w r3, r3, #4096 @ 0x1000 - 8000da2: 60fb str r3, [r7, #12] - 8000da4: 68fb ldr r3, [r7, #12] + 8000e2e: 2300 movs r3, #0 + 8000e30: 60fb str r3, [r7, #12] + 8000e32: 4b0a ldr r3, [pc, #40] @ (8000e5c ) + 8000e34: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000e36: 4a09 ldr r2, [pc, #36] @ (8000e5c ) + 8000e38: f443 5380 orr.w r3, r3, #4096 @ 0x1000 + 8000e3c: 6313 str r3, [r2, #48] @ 0x30 + 8000e3e: 4b07 ldr r3, [pc, #28] @ (8000e5c ) + 8000e40: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000e42: f403 5380 and.w r3, r3, #4096 @ 0x1000 + 8000e46: 60fb str r3, [r7, #12] + 8000e48: 68fb ldr r3, [r7, #12] /* USER CODE END CRC_MspInit 1 */ } } - 8000da6: bf00 nop - 8000da8: 3714 adds r7, #20 - 8000daa: 46bd mov sp, r7 - 8000dac: f85d 7b04 ldr.w r7, [sp], #4 - 8000db0: 4770 bx lr - 8000db2: bf00 nop - 8000db4: 40023000 .word 0x40023000 - 8000db8: 40023800 .word 0x40023800 + 8000e4a: bf00 nop + 8000e4c: 3714 adds r7, #20 + 8000e4e: 46bd mov sp, r7 + 8000e50: f85d 7b04 ldr.w r7, [sp], #4 + 8000e54: 4770 bx lr + 8000e56: bf00 nop + 8000e58: 40023000 .word 0x40023000 + 8000e5c: 40023800 .word 0x40023800 -08000dbc : +08000e60 : * This function configures the hardware resources used in this example * @param hdma2d: DMA2D handle pointer * @retval None */ void HAL_DMA2D_MspInit(DMA2D_HandleTypeDef* hdma2d) { - 8000dbc: b580 push {r7, lr} - 8000dbe: b084 sub sp, #16 - 8000dc0: af00 add r7, sp, #0 - 8000dc2: 6078 str r0, [r7, #4] + 8000e60: b580 push {r7, lr} + 8000e62: b084 sub sp, #16 + 8000e64: af00 add r7, sp, #0 + 8000e66: 6078 str r0, [r7, #4] if(hdma2d->Instance==DMA2D) - 8000dc4: 687b ldr r3, [r7, #4] - 8000dc6: 681b ldr r3, [r3, #0] - 8000dc8: 4a0e ldr r2, [pc, #56] @ (8000e04 ) - 8000dca: 4293 cmp r3, r2 - 8000dcc: d115 bne.n 8000dfa + 8000e68: 687b ldr r3, [r7, #4] + 8000e6a: 681b ldr r3, [r3, #0] + 8000e6c: 4a0e ldr r2, [pc, #56] @ (8000ea8 ) + 8000e6e: 4293 cmp r3, r2 + 8000e70: d115 bne.n 8000e9e { /* USER CODE BEGIN DMA2D_MspInit 0 */ /* USER CODE END DMA2D_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_DMA2D_CLK_ENABLE(); - 8000dce: 2300 movs r3, #0 - 8000dd0: 60fb str r3, [r7, #12] - 8000dd2: 4b0d ldr r3, [pc, #52] @ (8000e08 ) - 8000dd4: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000dd6: 4a0c ldr r2, [pc, #48] @ (8000e08 ) - 8000dd8: f443 0300 orr.w r3, r3, #8388608 @ 0x800000 - 8000ddc: 6313 str r3, [r2, #48] @ 0x30 - 8000dde: 4b0a ldr r3, [pc, #40] @ (8000e08 ) - 8000de0: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000de2: f403 0300 and.w r3, r3, #8388608 @ 0x800000 - 8000de6: 60fb str r3, [r7, #12] - 8000de8: 68fb ldr r3, [r7, #12] + 8000e72: 2300 movs r3, #0 + 8000e74: 60fb str r3, [r7, #12] + 8000e76: 4b0d ldr r3, [pc, #52] @ (8000eac ) + 8000e78: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000e7a: 4a0c ldr r2, [pc, #48] @ (8000eac ) + 8000e7c: f443 0300 orr.w r3, r3, #8388608 @ 0x800000 + 8000e80: 6313 str r3, [r2, #48] @ 0x30 + 8000e82: 4b0a ldr r3, [pc, #40] @ (8000eac ) + 8000e84: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000e86: f403 0300 and.w r3, r3, #8388608 @ 0x800000 + 8000e8a: 60fb str r3, [r7, #12] + 8000e8c: 68fb ldr r3, [r7, #12] /* DMA2D interrupt Init */ HAL_NVIC_SetPriority(DMA2D_IRQn, 5, 0); - 8000dea: 2200 movs r2, #0 - 8000dec: 2105 movs r1, #5 - 8000dee: 205a movs r0, #90 @ 0x5a - 8000df0: f000 fd0e bl 8001810 + 8000e8e: 2200 movs r2, #0 + 8000e90: 2105 movs r1, #5 + 8000e92: 205a movs r0, #90 @ 0x5a + 8000e94: f000 fcea bl 800186c HAL_NVIC_EnableIRQ(DMA2D_IRQn); - 8000df4: 205a movs r0, #90 @ 0x5a - 8000df6: f000 fd27 bl 8001848 + 8000e98: 205a movs r0, #90 @ 0x5a + 8000e9a: f000 fd03 bl 80018a4 /* USER CODE END DMA2D_MspInit 1 */ } } - 8000dfa: bf00 nop - 8000dfc: 3710 adds r7, #16 - 8000dfe: 46bd mov sp, r7 - 8000e00: bd80 pop {r7, pc} - 8000e02: bf00 nop - 8000e04: 4002b000 .word 0x4002b000 - 8000e08: 40023800 .word 0x40023800 + 8000e9e: bf00 nop + 8000ea0: 3710 adds r7, #16 + 8000ea2: 46bd mov sp, r7 + 8000ea4: bd80 pop {r7, pc} + 8000ea6: bf00 nop + 8000ea8: 4002b000 .word 0x4002b000 + 8000eac: 40023800 .word 0x40023800 -08000e0c : +08000eb0 : * This function configures the hardware resources used in this example * @param hi2c: I2C handle pointer * @retval None */ void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c) { - 8000e0c: b580 push {r7, lr} - 8000e0e: b08a sub sp, #40 @ 0x28 - 8000e10: af00 add r7, sp, #0 - 8000e12: 6078 str r0, [r7, #4] + 8000eb0: b580 push {r7, lr} + 8000eb2: b08a sub sp, #40 @ 0x28 + 8000eb4: af00 add r7, sp, #0 + 8000eb6: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8000e14: f107 0314 add.w r3, r7, #20 - 8000e18: 2200 movs r2, #0 - 8000e1a: 601a str r2, [r3, #0] - 8000e1c: 605a str r2, [r3, #4] - 8000e1e: 609a str r2, [r3, #8] - 8000e20: 60da str r2, [r3, #12] - 8000e22: 611a str r2, [r3, #16] + 8000eb8: f107 0314 add.w r3, r7, #20 + 8000ebc: 2200 movs r2, #0 + 8000ebe: 601a str r2, [r3, #0] + 8000ec0: 605a str r2, [r3, #4] + 8000ec2: 609a str r2, [r3, #8] + 8000ec4: 60da str r2, [r3, #12] + 8000ec6: 611a str r2, [r3, #16] if(hi2c->Instance==I2C3) - 8000e24: 687b ldr r3, [r7, #4] - 8000e26: 681b ldr r3, [r3, #0] - 8000e28: 4a29 ldr r2, [pc, #164] @ (8000ed0 ) - 8000e2a: 4293 cmp r3, r2 - 8000e2c: d14b bne.n 8000ec6 + 8000ec8: 687b ldr r3, [r7, #4] + 8000eca: 681b ldr r3, [r3, #0] + 8000ecc: 4a29 ldr r2, [pc, #164] @ (8000f74 ) + 8000ece: 4293 cmp r3, r2 + 8000ed0: d14b bne.n 8000f6a { /* USER CODE BEGIN I2C3_MspInit 0 */ /* USER CODE END I2C3_MspInit 0 */ __HAL_RCC_GPIOC_CLK_ENABLE(); - 8000e2e: 2300 movs r3, #0 - 8000e30: 613b str r3, [r7, #16] - 8000e32: 4b28 ldr r3, [pc, #160] @ (8000ed4 ) - 8000e34: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000e36: 4a27 ldr r2, [pc, #156] @ (8000ed4 ) - 8000e38: f043 0304 orr.w r3, r3, #4 - 8000e3c: 6313 str r3, [r2, #48] @ 0x30 - 8000e3e: 4b25 ldr r3, [pc, #148] @ (8000ed4 ) - 8000e40: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000e42: f003 0304 and.w r3, r3, #4 - 8000e46: 613b str r3, [r7, #16] - 8000e48: 693b ldr r3, [r7, #16] + 8000ed2: 2300 movs r3, #0 + 8000ed4: 613b str r3, [r7, #16] + 8000ed6: 4b28 ldr r3, [pc, #160] @ (8000f78 ) + 8000ed8: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000eda: 4a27 ldr r2, [pc, #156] @ (8000f78 ) + 8000edc: f043 0304 orr.w r3, r3, #4 + 8000ee0: 6313 str r3, [r2, #48] @ 0x30 + 8000ee2: 4b25 ldr r3, [pc, #148] @ (8000f78 ) + 8000ee4: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000ee6: f003 0304 and.w r3, r3, #4 + 8000eea: 613b str r3, [r7, #16] + 8000eec: 693b ldr r3, [r7, #16] __HAL_RCC_GPIOA_CLK_ENABLE(); - 8000e4a: 2300 movs r3, #0 - 8000e4c: 60fb str r3, [r7, #12] - 8000e4e: 4b21 ldr r3, [pc, #132] @ (8000ed4 ) - 8000e50: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000e52: 4a20 ldr r2, [pc, #128] @ (8000ed4 ) - 8000e54: f043 0301 orr.w r3, r3, #1 - 8000e58: 6313 str r3, [r2, #48] @ 0x30 - 8000e5a: 4b1e ldr r3, [pc, #120] @ (8000ed4 ) - 8000e5c: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000e5e: f003 0301 and.w r3, r3, #1 - 8000e62: 60fb str r3, [r7, #12] - 8000e64: 68fb ldr r3, [r7, #12] + 8000eee: 2300 movs r3, #0 + 8000ef0: 60fb str r3, [r7, #12] + 8000ef2: 4b21 ldr r3, [pc, #132] @ (8000f78 ) + 8000ef4: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000ef6: 4a20 ldr r2, [pc, #128] @ (8000f78 ) + 8000ef8: f043 0301 orr.w r3, r3, #1 + 8000efc: 6313 str r3, [r2, #48] @ 0x30 + 8000efe: 4b1e ldr r3, [pc, #120] @ (8000f78 ) + 8000f00: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000f02: f003 0301 and.w r3, r3, #1 + 8000f06: 60fb str r3, [r7, #12] + 8000f08: 68fb ldr r3, [r7, #12] /**I2C3 GPIO Configuration PC9 ------> I2C3_SDA PA8 ------> I2C3_SCL */ GPIO_InitStruct.Pin = I2C3_SDA_Pin; - 8000e66: f44f 7300 mov.w r3, #512 @ 0x200 - 8000e6a: 617b str r3, [r7, #20] + 8000f0a: f44f 7300 mov.w r3, #512 @ 0x200 + 8000f0e: 617b str r3, [r7, #20] GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; - 8000e6c: 2312 movs r3, #18 - 8000e6e: 61bb str r3, [r7, #24] + 8000f10: 2312 movs r3, #18 + 8000f12: 61bb str r3, [r7, #24] GPIO_InitStruct.Pull = GPIO_PULLUP; - 8000e70: 2301 movs r3, #1 - 8000e72: 61fb str r3, [r7, #28] + 8000f14: 2301 movs r3, #1 + 8000f16: 61fb str r3, [r7, #28] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8000e74: 2300 movs r3, #0 - 8000e76: 623b str r3, [r7, #32] + 8000f18: 2300 movs r3, #0 + 8000f1a: 623b str r3, [r7, #32] GPIO_InitStruct.Alternate = GPIO_AF4_I2C3; - 8000e78: 2304 movs r3, #4 - 8000e7a: 627b str r3, [r7, #36] @ 0x24 + 8000f1c: 2304 movs r3, #4 + 8000f1e: 627b str r3, [r7, #36] @ 0x24 HAL_GPIO_Init(I2C3_SDA_GPIO_Port, &GPIO_InitStruct); - 8000e7c: f107 0314 add.w r3, r7, #20 - 8000e80: 4619 mov r1, r3 - 8000e82: 4815 ldr r0, [pc, #84] @ (8000ed8 ) - 8000e84: f000 fef6 bl 8001c74 + 8000f20: f107 0314 add.w r3, r7, #20 + 8000f24: 4619 mov r1, r3 + 8000f26: 4815 ldr r0, [pc, #84] @ (8000f7c ) + 8000f28: f000 fed2 bl 8001cd0 GPIO_InitStruct.Pin = I2C3_SCL_Pin; - 8000e88: f44f 7380 mov.w r3, #256 @ 0x100 - 8000e8c: 617b str r3, [r7, #20] + 8000f2c: f44f 7380 mov.w r3, #256 @ 0x100 + 8000f30: 617b str r3, [r7, #20] GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; - 8000e8e: 2312 movs r3, #18 - 8000e90: 61bb str r3, [r7, #24] + 8000f32: 2312 movs r3, #18 + 8000f34: 61bb str r3, [r7, #24] GPIO_InitStruct.Pull = GPIO_PULLUP; - 8000e92: 2301 movs r3, #1 - 8000e94: 61fb str r3, [r7, #28] + 8000f36: 2301 movs r3, #1 + 8000f38: 61fb str r3, [r7, #28] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8000e96: 2300 movs r3, #0 - 8000e98: 623b str r3, [r7, #32] + 8000f3a: 2300 movs r3, #0 + 8000f3c: 623b str r3, [r7, #32] GPIO_InitStruct.Alternate = GPIO_AF4_I2C3; - 8000e9a: 2304 movs r3, #4 - 8000e9c: 627b str r3, [r7, #36] @ 0x24 + 8000f3e: 2304 movs r3, #4 + 8000f40: 627b str r3, [r7, #36] @ 0x24 HAL_GPIO_Init(I2C3_SCL_GPIO_Port, &GPIO_InitStruct); - 8000e9e: f107 0314 add.w r3, r7, #20 - 8000ea2: 4619 mov r1, r3 - 8000ea4: 480d ldr r0, [pc, #52] @ (8000edc ) - 8000ea6: f000 fee5 bl 8001c74 + 8000f42: f107 0314 add.w r3, r7, #20 + 8000f46: 4619 mov r1, r3 + 8000f48: 480d ldr r0, [pc, #52] @ (8000f80 ) + 8000f4a: f000 fec1 bl 8001cd0 /* Peripheral clock enable */ __HAL_RCC_I2C3_CLK_ENABLE(); - 8000eaa: 2300 movs r3, #0 - 8000eac: 60bb str r3, [r7, #8] - 8000eae: 4b09 ldr r3, [pc, #36] @ (8000ed4 ) - 8000eb0: 6c1b ldr r3, [r3, #64] @ 0x40 - 8000eb2: 4a08 ldr r2, [pc, #32] @ (8000ed4 ) - 8000eb4: f443 0300 orr.w r3, r3, #8388608 @ 0x800000 - 8000eb8: 6413 str r3, [r2, #64] @ 0x40 - 8000eba: 4b06 ldr r3, [pc, #24] @ (8000ed4 ) - 8000ebc: 6c1b ldr r3, [r3, #64] @ 0x40 - 8000ebe: f403 0300 and.w r3, r3, #8388608 @ 0x800000 - 8000ec2: 60bb str r3, [r7, #8] - 8000ec4: 68bb ldr r3, [r7, #8] + 8000f4e: 2300 movs r3, #0 + 8000f50: 60bb str r3, [r7, #8] + 8000f52: 4b09 ldr r3, [pc, #36] @ (8000f78 ) + 8000f54: 6c1b ldr r3, [r3, #64] @ 0x40 + 8000f56: 4a08 ldr r2, [pc, #32] @ (8000f78 ) + 8000f58: f443 0300 orr.w r3, r3, #8388608 @ 0x800000 + 8000f5c: 6413 str r3, [r2, #64] @ 0x40 + 8000f5e: 4b06 ldr r3, [pc, #24] @ (8000f78 ) + 8000f60: 6c1b ldr r3, [r3, #64] @ 0x40 + 8000f62: f403 0300 and.w r3, r3, #8388608 @ 0x800000 + 8000f66: 60bb str r3, [r7, #8] + 8000f68: 68bb ldr r3, [r7, #8] /* USER CODE END I2C3_MspInit 1 */ } } - 8000ec6: bf00 nop - 8000ec8: 3728 adds r7, #40 @ 0x28 - 8000eca: 46bd mov sp, r7 - 8000ecc: bd80 pop {r7, pc} - 8000ece: bf00 nop - 8000ed0: 40005c00 .word 0x40005c00 - 8000ed4: 40023800 .word 0x40023800 - 8000ed8: 40020800 .word 0x40020800 - 8000edc: 40020000 .word 0x40020000 + 8000f6a: bf00 nop + 8000f6c: 3728 adds r7, #40 @ 0x28 + 8000f6e: 46bd mov sp, r7 + 8000f70: bd80 pop {r7, pc} + 8000f72: bf00 nop + 8000f74: 40005c00 .word 0x40005c00 + 8000f78: 40023800 .word 0x40023800 + 8000f7c: 40020800 .word 0x40020800 + 8000f80: 40020000 .word 0x40020000 -08000ee0 : +08000f84 : * This function configures the hardware resources used in this example * @param hltdc: LTDC handle pointer * @retval None */ void HAL_LTDC_MspInit(LTDC_HandleTypeDef* hltdc) { - 8000ee0: b580 push {r7, lr} - 8000ee2: b09a sub sp, #104 @ 0x68 - 8000ee4: af00 add r7, sp, #0 - 8000ee6: 6078 str r0, [r7, #4] + 8000f84: b580 push {r7, lr} + 8000f86: b09a sub sp, #104 @ 0x68 + 8000f88: af00 add r7, sp, #0 + 8000f8a: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8000ee8: f107 0354 add.w r3, r7, #84 @ 0x54 - 8000eec: 2200 movs r2, #0 - 8000eee: 601a str r2, [r3, #0] - 8000ef0: 605a str r2, [r3, #4] - 8000ef2: 609a str r2, [r3, #8] - 8000ef4: 60da str r2, [r3, #12] - 8000ef6: 611a str r2, [r3, #16] + 8000f8c: f107 0354 add.w r3, r7, #84 @ 0x54 + 8000f90: 2200 movs r2, #0 + 8000f92: 601a str r2, [r3, #0] + 8000f94: 605a str r2, [r3, #4] + 8000f96: 609a str r2, [r3, #8] + 8000f98: 60da str r2, [r3, #12] + 8000f9a: 611a str r2, [r3, #16] RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; - 8000ef8: f107 0324 add.w r3, r7, #36 @ 0x24 - 8000efc: 2230 movs r2, #48 @ 0x30 - 8000efe: 2100 movs r1, #0 - 8000f00: 4618 mov r0, r3 - 8000f02: f006 ffc5 bl 8007e90 + 8000f9c: f107 0324 add.w r3, r7, #36 @ 0x24 + 8000fa0: 2230 movs r2, #48 @ 0x30 + 8000fa2: 2100 movs r1, #0 + 8000fa4: 4618 mov r0, r3 + 8000fa6: f006 ff9b bl 8007ee0 if(hltdc->Instance==LTDC) - 8000f06: 687b ldr r3, [r7, #4] - 8000f08: 681b ldr r3, [r3, #0] - 8000f0a: 4a85 ldr r2, [pc, #532] @ (8001120 ) - 8000f0c: 4293 cmp r3, r2 - 8000f0e: f040 8102 bne.w 8001116 + 8000faa: 687b ldr r3, [r7, #4] + 8000fac: 681b ldr r3, [r3, #0] + 8000fae: 4a85 ldr r2, [pc, #532] @ (80011c4 ) + 8000fb0: 4293 cmp r3, r2 + 8000fb2: f040 8102 bne.w 80011ba /* USER CODE END LTDC_MspInit 0 */ /** Initializes the peripherals clock */ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LTDC; - 8000f12: 2308 movs r3, #8 - 8000f14: 627b str r3, [r7, #36] @ 0x24 + 8000fb6: 2308 movs r3, #8 + 8000fb8: 627b str r3, [r7, #36] @ 0x24 PeriphClkInitStruct.PLLSAI.PLLSAIN = 50; - 8000f16: 2332 movs r3, #50 @ 0x32 - 8000f18: 637b str r3, [r7, #52] @ 0x34 + 8000fba: 2332 movs r3, #50 @ 0x32 + 8000fbc: 637b str r3, [r7, #52] @ 0x34 PeriphClkInitStruct.PLLSAI.PLLSAIR = 2; - 8000f1a: 2302 movs r3, #2 - 8000f1c: 63fb str r3, [r7, #60] @ 0x3c + 8000fbe: 2302 movs r3, #2 + 8000fc0: 63fb str r3, [r7, #60] @ 0x3c PeriphClkInitStruct.PLLSAIDivR = RCC_PLLSAIDIVR_2; - 8000f1e: 2300 movs r3, #0 - 8000f20: 64bb str r3, [r7, #72] @ 0x48 + 8000fc2: 2300 movs r3, #0 + 8000fc4: 64bb str r3, [r7, #72] @ 0x48 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - 8000f22: f107 0324 add.w r3, r7, #36 @ 0x24 - 8000f26: 4618 mov r0, r3 - 8000f28: f003 ffc4 bl 8004eb4 - 8000f2c: 4603 mov r3, r0 - 8000f2e: 2b00 cmp r3, #0 - 8000f30: d001 beq.n 8000f36 + 8000fc6: f107 0324 add.w r3, r7, #36 @ 0x24 + 8000fca: 4618 mov r0, r3 + 8000fcc: f003 ffa0 bl 8004f10 + 8000fd0: 4603 mov r3, r0 + 8000fd2: 2b00 cmp r3, #0 + 8000fd4: d001 beq.n 8000fda { Error_Handler(); - 8000f32: f7ff feef bl 8000d14 + 8000fd6: f7ff feef bl 8000db8 } /* Peripheral clock enable */ __HAL_RCC_LTDC_CLK_ENABLE(); - 8000f36: 2300 movs r3, #0 - 8000f38: 623b str r3, [r7, #32] - 8000f3a: 4b7a ldr r3, [pc, #488] @ (8001124 ) - 8000f3c: 6c5b ldr r3, [r3, #68] @ 0x44 - 8000f3e: 4a79 ldr r2, [pc, #484] @ (8001124 ) - 8000f40: f043 6380 orr.w r3, r3, #67108864 @ 0x4000000 - 8000f44: 6453 str r3, [r2, #68] @ 0x44 - 8000f46: 4b77 ldr r3, [pc, #476] @ (8001124 ) - 8000f48: 6c5b ldr r3, [r3, #68] @ 0x44 - 8000f4a: f003 6380 and.w r3, r3, #67108864 @ 0x4000000 - 8000f4e: 623b str r3, [r7, #32] - 8000f50: 6a3b ldr r3, [r7, #32] + 8000fda: 2300 movs r3, #0 + 8000fdc: 623b str r3, [r7, #32] + 8000fde: 4b7a ldr r3, [pc, #488] @ (80011c8 ) + 8000fe0: 6c5b ldr r3, [r3, #68] @ 0x44 + 8000fe2: 4a79 ldr r2, [pc, #484] @ (80011c8 ) + 8000fe4: f043 6380 orr.w r3, r3, #67108864 @ 0x4000000 + 8000fe8: 6453 str r3, [r2, #68] @ 0x44 + 8000fea: 4b77 ldr r3, [pc, #476] @ (80011c8 ) + 8000fec: 6c5b ldr r3, [r3, #68] @ 0x44 + 8000fee: f003 6380 and.w r3, r3, #67108864 @ 0x4000000 + 8000ff2: 623b str r3, [r7, #32] + 8000ff4: 6a3b ldr r3, [r7, #32] __HAL_RCC_GPIOF_CLK_ENABLE(); - 8000f52: 2300 movs r3, #0 - 8000f54: 61fb str r3, [r7, #28] - 8000f56: 4b73 ldr r3, [pc, #460] @ (8001124 ) - 8000f58: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000f5a: 4a72 ldr r2, [pc, #456] @ (8001124 ) - 8000f5c: f043 0320 orr.w r3, r3, #32 - 8000f60: 6313 str r3, [r2, #48] @ 0x30 - 8000f62: 4b70 ldr r3, [pc, #448] @ (8001124 ) - 8000f64: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000f66: f003 0320 and.w r3, r3, #32 - 8000f6a: 61fb str r3, [r7, #28] - 8000f6c: 69fb ldr r3, [r7, #28] + 8000ff6: 2300 movs r3, #0 + 8000ff8: 61fb str r3, [r7, #28] + 8000ffa: 4b73 ldr r3, [pc, #460] @ (80011c8 ) + 8000ffc: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000ffe: 4a72 ldr r2, [pc, #456] @ (80011c8 ) + 8001000: f043 0320 orr.w r3, r3, #32 + 8001004: 6313 str r3, [r2, #48] @ 0x30 + 8001006: 4b70 ldr r3, [pc, #448] @ (80011c8 ) + 8001008: 6b1b ldr r3, [r3, #48] @ 0x30 + 800100a: f003 0320 and.w r3, r3, #32 + 800100e: 61fb str r3, [r7, #28] + 8001010: 69fb ldr r3, [r7, #28] __HAL_RCC_GPIOA_CLK_ENABLE(); - 8000f6e: 2300 movs r3, #0 - 8000f70: 61bb str r3, [r7, #24] - 8000f72: 4b6c ldr r3, [pc, #432] @ (8001124 ) - 8000f74: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000f76: 4a6b ldr r2, [pc, #428] @ (8001124 ) - 8000f78: f043 0301 orr.w r3, r3, #1 - 8000f7c: 6313 str r3, [r2, #48] @ 0x30 - 8000f7e: 4b69 ldr r3, [pc, #420] @ (8001124 ) - 8000f80: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000f82: f003 0301 and.w r3, r3, #1 - 8000f86: 61bb str r3, [r7, #24] - 8000f88: 69bb ldr r3, [r7, #24] + 8001012: 2300 movs r3, #0 + 8001014: 61bb str r3, [r7, #24] + 8001016: 4b6c ldr r3, [pc, #432] @ (80011c8 ) + 8001018: 6b1b ldr r3, [r3, #48] @ 0x30 + 800101a: 4a6b ldr r2, [pc, #428] @ (80011c8 ) + 800101c: f043 0301 orr.w r3, r3, #1 + 8001020: 6313 str r3, [r2, #48] @ 0x30 + 8001022: 4b69 ldr r3, [pc, #420] @ (80011c8 ) + 8001024: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001026: f003 0301 and.w r3, r3, #1 + 800102a: 61bb str r3, [r7, #24] + 800102c: 69bb ldr r3, [r7, #24] __HAL_RCC_GPIOB_CLK_ENABLE(); - 8000f8a: 2300 movs r3, #0 - 8000f8c: 617b str r3, [r7, #20] - 8000f8e: 4b65 ldr r3, [pc, #404] @ (8001124 ) - 8000f90: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000f92: 4a64 ldr r2, [pc, #400] @ (8001124 ) - 8000f94: f043 0302 orr.w r3, r3, #2 - 8000f98: 6313 str r3, [r2, #48] @ 0x30 - 8000f9a: 4b62 ldr r3, [pc, #392] @ (8001124 ) - 8000f9c: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000f9e: f003 0302 and.w r3, r3, #2 - 8000fa2: 617b str r3, [r7, #20] - 8000fa4: 697b ldr r3, [r7, #20] + 800102e: 2300 movs r3, #0 + 8001030: 617b str r3, [r7, #20] + 8001032: 4b65 ldr r3, [pc, #404] @ (80011c8 ) + 8001034: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001036: 4a64 ldr r2, [pc, #400] @ (80011c8 ) + 8001038: f043 0302 orr.w r3, r3, #2 + 800103c: 6313 str r3, [r2, #48] @ 0x30 + 800103e: 4b62 ldr r3, [pc, #392] @ (80011c8 ) + 8001040: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001042: f003 0302 and.w r3, r3, #2 + 8001046: 617b str r3, [r7, #20] + 8001048: 697b ldr r3, [r7, #20] __HAL_RCC_GPIOG_CLK_ENABLE(); - 8000fa6: 2300 movs r3, #0 - 8000fa8: 613b str r3, [r7, #16] - 8000faa: 4b5e ldr r3, [pc, #376] @ (8001124 ) - 8000fac: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000fae: 4a5d ldr r2, [pc, #372] @ (8001124 ) - 8000fb0: f043 0340 orr.w r3, r3, #64 @ 0x40 - 8000fb4: 6313 str r3, [r2, #48] @ 0x30 - 8000fb6: 4b5b ldr r3, [pc, #364] @ (8001124 ) - 8000fb8: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000fba: f003 0340 and.w r3, r3, #64 @ 0x40 - 8000fbe: 613b str r3, [r7, #16] - 8000fc0: 693b ldr r3, [r7, #16] + 800104a: 2300 movs r3, #0 + 800104c: 613b str r3, [r7, #16] + 800104e: 4b5e ldr r3, [pc, #376] @ (80011c8 ) + 8001050: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001052: 4a5d ldr r2, [pc, #372] @ (80011c8 ) + 8001054: f043 0340 orr.w r3, r3, #64 @ 0x40 + 8001058: 6313 str r3, [r2, #48] @ 0x30 + 800105a: 4b5b ldr r3, [pc, #364] @ (80011c8 ) + 800105c: 6b1b ldr r3, [r3, #48] @ 0x30 + 800105e: f003 0340 and.w r3, r3, #64 @ 0x40 + 8001062: 613b str r3, [r7, #16] + 8001064: 693b ldr r3, [r7, #16] __HAL_RCC_GPIOC_CLK_ENABLE(); - 8000fc2: 2300 movs r3, #0 - 8000fc4: 60fb str r3, [r7, #12] - 8000fc6: 4b57 ldr r3, [pc, #348] @ (8001124 ) - 8000fc8: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000fca: 4a56 ldr r2, [pc, #344] @ (8001124 ) - 8000fcc: f043 0304 orr.w r3, r3, #4 - 8000fd0: 6313 str r3, [r2, #48] @ 0x30 - 8000fd2: 4b54 ldr r3, [pc, #336] @ (8001124 ) - 8000fd4: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000fd6: f003 0304 and.w r3, r3, #4 - 8000fda: 60fb str r3, [r7, #12] - 8000fdc: 68fb ldr r3, [r7, #12] + 8001066: 2300 movs r3, #0 + 8001068: 60fb str r3, [r7, #12] + 800106a: 4b57 ldr r3, [pc, #348] @ (80011c8 ) + 800106c: 6b1b ldr r3, [r3, #48] @ 0x30 + 800106e: 4a56 ldr r2, [pc, #344] @ (80011c8 ) + 8001070: f043 0304 orr.w r3, r3, #4 + 8001074: 6313 str r3, [r2, #48] @ 0x30 + 8001076: 4b54 ldr r3, [pc, #336] @ (80011c8 ) + 8001078: 6b1b ldr r3, [r3, #48] @ 0x30 + 800107a: f003 0304 and.w r3, r3, #4 + 800107e: 60fb str r3, [r7, #12] + 8001080: 68fb ldr r3, [r7, #12] __HAL_RCC_GPIOD_CLK_ENABLE(); - 8000fde: 2300 movs r3, #0 - 8000fe0: 60bb str r3, [r7, #8] - 8000fe2: 4b50 ldr r3, [pc, #320] @ (8001124 ) - 8000fe4: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000fe6: 4a4f ldr r2, [pc, #316] @ (8001124 ) - 8000fe8: f043 0308 orr.w r3, r3, #8 - 8000fec: 6313 str r3, [r2, #48] @ 0x30 - 8000fee: 4b4d ldr r3, [pc, #308] @ (8001124 ) - 8000ff0: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000ff2: f003 0308 and.w r3, r3, #8 - 8000ff6: 60bb str r3, [r7, #8] - 8000ff8: 68bb ldr r3, [r7, #8] + 8001082: 2300 movs r3, #0 + 8001084: 60bb str r3, [r7, #8] + 8001086: 4b50 ldr r3, [pc, #320] @ (80011c8 ) + 8001088: 6b1b ldr r3, [r3, #48] @ 0x30 + 800108a: 4a4f ldr r2, [pc, #316] @ (80011c8 ) + 800108c: f043 0308 orr.w r3, r3, #8 + 8001090: 6313 str r3, [r2, #48] @ 0x30 + 8001092: 4b4d ldr r3, [pc, #308] @ (80011c8 ) + 8001094: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001096: f003 0308 and.w r3, r3, #8 + 800109a: 60bb str r3, [r7, #8] + 800109c: 68bb ldr r3, [r7, #8] PG11 ------> LTDC_B3 PG12 ------> LTDC_B4 PB8 ------> LTDC_B6 PB9 ------> LTDC_B7 */ GPIO_InitStruct.Pin = ENABLE_Pin; - 8000ffa: f44f 6380 mov.w r3, #1024 @ 0x400 - 8000ffe: 657b str r3, [r7, #84] @ 0x54 + 800109e: f44f 6380 mov.w r3, #1024 @ 0x400 + 80010a2: 657b str r3, [r7, #84] @ 0x54 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8001000: 2302 movs r3, #2 - 8001002: 65bb str r3, [r7, #88] @ 0x58 + 80010a4: 2302 movs r3, #2 + 80010a6: 65bb str r3, [r7, #88] @ 0x58 GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001004: 2300 movs r3, #0 - 8001006: 65fb str r3, [r7, #92] @ 0x5c + 80010a8: 2300 movs r3, #0 + 80010aa: 65fb str r3, [r7, #92] @ 0x5c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8001008: 2300 movs r3, #0 - 800100a: 663b str r3, [r7, #96] @ 0x60 + 80010ac: 2300 movs r3, #0 + 80010ae: 663b str r3, [r7, #96] @ 0x60 GPIO_InitStruct.Alternate = GPIO_AF14_LTDC; - 800100c: 230e movs r3, #14 - 800100e: 667b str r3, [r7, #100] @ 0x64 + 80010b0: 230e movs r3, #14 + 80010b2: 667b str r3, [r7, #100] @ 0x64 HAL_GPIO_Init(ENABLE_GPIO_Port, &GPIO_InitStruct); - 8001010: f107 0354 add.w r3, r7, #84 @ 0x54 - 8001014: 4619 mov r1, r3 - 8001016: 4844 ldr r0, [pc, #272] @ (8001128 ) - 8001018: f000 fe2c bl 8001c74 + 80010b4: f107 0354 add.w r3, r7, #84 @ 0x54 + 80010b8: 4619 mov r1, r3 + 80010ba: 4844 ldr r0, [pc, #272] @ (80011cc ) + 80010bc: f000 fe08 bl 8001cd0 GPIO_InitStruct.Pin = B5_Pin|VSYNC_Pin|G2_Pin|R4_Pin - 800101c: f641 0358 movw r3, #6232 @ 0x1858 - 8001020: 657b str r3, [r7, #84] @ 0x54 + 80010c0: f641 0358 movw r3, #6232 @ 0x1858 + 80010c4: 657b str r3, [r7, #84] @ 0x54 |R5_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8001022: 2302 movs r3, #2 - 8001024: 65bb str r3, [r7, #88] @ 0x58 + 80010c6: 2302 movs r3, #2 + 80010c8: 65bb str r3, [r7, #88] @ 0x58 GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001026: 2300 movs r3, #0 - 8001028: 65fb str r3, [r7, #92] @ 0x5c + 80010ca: 2300 movs r3, #0 + 80010cc: 65fb str r3, [r7, #92] @ 0x5c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 800102a: 2300 movs r3, #0 - 800102c: 663b str r3, [r7, #96] @ 0x60 + 80010ce: 2300 movs r3, #0 + 80010d0: 663b str r3, [r7, #96] @ 0x60 GPIO_InitStruct.Alternate = GPIO_AF14_LTDC; - 800102e: 230e movs r3, #14 - 8001030: 667b str r3, [r7, #100] @ 0x64 + 80010d2: 230e movs r3, #14 + 80010d4: 667b str r3, [r7, #100] @ 0x64 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 8001032: f107 0354 add.w r3, r7, #84 @ 0x54 - 8001036: 4619 mov r1, r3 - 8001038: 483c ldr r0, [pc, #240] @ (800112c ) - 800103a: f000 fe1b bl 8001c74 + 80010d6: f107 0354 add.w r3, r7, #84 @ 0x54 + 80010da: 4619 mov r1, r3 + 80010dc: 483c ldr r0, [pc, #240] @ (80011d0 ) + 80010de: f000 fdf7 bl 8001cd0 GPIO_InitStruct.Pin = R3_Pin|R6_Pin; - 800103e: 2303 movs r3, #3 - 8001040: 657b str r3, [r7, #84] @ 0x54 + 80010e2: 2303 movs r3, #3 + 80010e4: 657b str r3, [r7, #84] @ 0x54 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8001042: 2302 movs r3, #2 - 8001044: 65bb str r3, [r7, #88] @ 0x58 + 80010e6: 2302 movs r3, #2 + 80010e8: 65bb str r3, [r7, #88] @ 0x58 GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001046: 2300 movs r3, #0 - 8001048: 65fb str r3, [r7, #92] @ 0x5c + 80010ea: 2300 movs r3, #0 + 80010ec: 65fb str r3, [r7, #92] @ 0x5c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 800104a: 2300 movs r3, #0 - 800104c: 663b str r3, [r7, #96] @ 0x60 + 80010ee: 2300 movs r3, #0 + 80010f0: 663b str r3, [r7, #96] @ 0x60 GPIO_InitStruct.Alternate = GPIO_AF9_LTDC; - 800104e: 2309 movs r3, #9 - 8001050: 667b str r3, [r7, #100] @ 0x64 + 80010f2: 2309 movs r3, #9 + 80010f4: 667b str r3, [r7, #100] @ 0x64 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8001052: f107 0354 add.w r3, r7, #84 @ 0x54 - 8001056: 4619 mov r1, r3 - 8001058: 4835 ldr r0, [pc, #212] @ (8001130 ) - 800105a: f000 fe0b bl 8001c74 + 80010f6: f107 0354 add.w r3, r7, #84 @ 0x54 + 80010fa: 4619 mov r1, r3 + 80010fc: 4835 ldr r0, [pc, #212] @ (80011d4 ) + 80010fe: f000 fde7 bl 8001cd0 GPIO_InitStruct.Pin = G4_Pin|G5_Pin|B6_Pin|B7_Pin; - 800105e: f44f 6370 mov.w r3, #3840 @ 0xf00 - 8001062: 657b str r3, [r7, #84] @ 0x54 + 8001102: f44f 6370 mov.w r3, #3840 @ 0xf00 + 8001106: 657b str r3, [r7, #84] @ 0x54 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8001064: 2302 movs r3, #2 - 8001066: 65bb str r3, [r7, #88] @ 0x58 + 8001108: 2302 movs r3, #2 + 800110a: 65bb str r3, [r7, #88] @ 0x58 GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001068: 2300 movs r3, #0 - 800106a: 65fb str r3, [r7, #92] @ 0x5c + 800110c: 2300 movs r3, #0 + 800110e: 65fb str r3, [r7, #92] @ 0x5c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 800106c: 2300 movs r3, #0 - 800106e: 663b str r3, [r7, #96] @ 0x60 + 8001110: 2300 movs r3, #0 + 8001112: 663b str r3, [r7, #96] @ 0x60 GPIO_InitStruct.Alternate = GPIO_AF14_LTDC; - 8001070: 230e movs r3, #14 - 8001072: 667b str r3, [r7, #100] @ 0x64 + 8001114: 230e movs r3, #14 + 8001116: 667b str r3, [r7, #100] @ 0x64 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8001074: f107 0354 add.w r3, r7, #84 @ 0x54 - 8001078: 4619 mov r1, r3 - 800107a: 482d ldr r0, [pc, #180] @ (8001130 ) - 800107c: f000 fdfa bl 8001c74 + 8001118: f107 0354 add.w r3, r7, #84 @ 0x54 + 800111c: 4619 mov r1, r3 + 800111e: 482d ldr r0, [pc, #180] @ (80011d4 ) + 8001120: f000 fdd6 bl 8001cd0 GPIO_InitStruct.Pin = R7_Pin|DOTCLK_Pin|B3_Pin; - 8001080: f44f 630c mov.w r3, #2240 @ 0x8c0 - 8001084: 657b str r3, [r7, #84] @ 0x54 + 8001124: f44f 630c mov.w r3, #2240 @ 0x8c0 + 8001128: 657b str r3, [r7, #84] @ 0x54 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8001086: 2302 movs r3, #2 - 8001088: 65bb str r3, [r7, #88] @ 0x58 + 800112a: 2302 movs r3, #2 + 800112c: 65bb str r3, [r7, #88] @ 0x58 GPIO_InitStruct.Pull = GPIO_NOPULL; - 800108a: 2300 movs r3, #0 - 800108c: 65fb str r3, [r7, #92] @ 0x5c + 800112e: 2300 movs r3, #0 + 8001130: 65fb str r3, [r7, #92] @ 0x5c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 800108e: 2300 movs r3, #0 - 8001090: 663b str r3, [r7, #96] @ 0x60 + 8001132: 2300 movs r3, #0 + 8001134: 663b str r3, [r7, #96] @ 0x60 GPIO_InitStruct.Alternate = GPIO_AF14_LTDC; - 8001092: 230e movs r3, #14 - 8001094: 667b str r3, [r7, #100] @ 0x64 + 8001136: 230e movs r3, #14 + 8001138: 667b str r3, [r7, #100] @ 0x64 HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); - 8001096: f107 0354 add.w r3, r7, #84 @ 0x54 - 800109a: 4619 mov r1, r3 - 800109c: 4825 ldr r0, [pc, #148] @ (8001134 ) - 800109e: f000 fde9 bl 8001c74 + 800113a: f107 0354 add.w r3, r7, #84 @ 0x54 + 800113e: 4619 mov r1, r3 + 8001140: 4825 ldr r0, [pc, #148] @ (80011d8 ) + 8001142: f000 fdc5 bl 8001cd0 GPIO_InitStruct.Pin = HSYNC_Pin|G6_Pin|R2_Pin; - 80010a2: f44f 6398 mov.w r3, #1216 @ 0x4c0 - 80010a6: 657b str r3, [r7, #84] @ 0x54 + 8001146: f44f 6398 mov.w r3, #1216 @ 0x4c0 + 800114a: 657b str r3, [r7, #84] @ 0x54 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 80010a8: 2302 movs r3, #2 - 80010aa: 65bb str r3, [r7, #88] @ 0x58 + 800114c: 2302 movs r3, #2 + 800114e: 65bb str r3, [r7, #88] @ 0x58 GPIO_InitStruct.Pull = GPIO_NOPULL; - 80010ac: 2300 movs r3, #0 - 80010ae: 65fb str r3, [r7, #92] @ 0x5c + 8001150: 2300 movs r3, #0 + 8001152: 65fb str r3, [r7, #92] @ 0x5c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 80010b0: 2300 movs r3, #0 - 80010b2: 663b str r3, [r7, #96] @ 0x60 + 8001154: 2300 movs r3, #0 + 8001156: 663b str r3, [r7, #96] @ 0x60 GPIO_InitStruct.Alternate = GPIO_AF14_LTDC; - 80010b4: 230e movs r3, #14 - 80010b6: 667b str r3, [r7, #100] @ 0x64 + 8001158: 230e movs r3, #14 + 800115a: 667b str r3, [r7, #100] @ 0x64 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - 80010b8: f107 0354 add.w r3, r7, #84 @ 0x54 - 80010bc: 4619 mov r1, r3 - 80010be: 481e ldr r0, [pc, #120] @ (8001138 ) - 80010c0: f000 fdd8 bl 8001c74 + 800115c: f107 0354 add.w r3, r7, #84 @ 0x54 + 8001160: 4619 mov r1, r3 + 8001162: 481e ldr r0, [pc, #120] @ (80011dc ) + 8001164: f000 fdb4 bl 8001cd0 GPIO_InitStruct.Pin = G7_Pin|B2_Pin; - 80010c4: 2348 movs r3, #72 @ 0x48 - 80010c6: 657b str r3, [r7, #84] @ 0x54 + 8001168: 2348 movs r3, #72 @ 0x48 + 800116a: 657b str r3, [r7, #84] @ 0x54 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 80010c8: 2302 movs r3, #2 - 80010ca: 65bb str r3, [r7, #88] @ 0x58 + 800116c: 2302 movs r3, #2 + 800116e: 65bb str r3, [r7, #88] @ 0x58 GPIO_InitStruct.Pull = GPIO_NOPULL; - 80010cc: 2300 movs r3, #0 - 80010ce: 65fb str r3, [r7, #92] @ 0x5c + 8001170: 2300 movs r3, #0 + 8001172: 65fb str r3, [r7, #92] @ 0x5c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 80010d0: 2300 movs r3, #0 - 80010d2: 663b str r3, [r7, #96] @ 0x60 + 8001174: 2300 movs r3, #0 + 8001176: 663b str r3, [r7, #96] @ 0x60 GPIO_InitStruct.Alternate = GPIO_AF14_LTDC; - 80010d4: 230e movs r3, #14 - 80010d6: 667b str r3, [r7, #100] @ 0x64 + 8001178: 230e movs r3, #14 + 800117a: 667b str r3, [r7, #100] @ 0x64 HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - 80010d8: f107 0354 add.w r3, r7, #84 @ 0x54 - 80010dc: 4619 mov r1, r3 - 80010de: 4817 ldr r0, [pc, #92] @ (800113c ) - 80010e0: f000 fdc8 bl 8001c74 + 800117c: f107 0354 add.w r3, r7, #84 @ 0x54 + 8001180: 4619 mov r1, r3 + 8001182: 4817 ldr r0, [pc, #92] @ (80011e0 ) + 8001184: f000 fda4 bl 8001cd0 GPIO_InitStruct.Pin = G3_Pin|B4_Pin; - 80010e4: f44f 53a0 mov.w r3, #5120 @ 0x1400 - 80010e8: 657b str r3, [r7, #84] @ 0x54 + 8001188: f44f 53a0 mov.w r3, #5120 @ 0x1400 + 800118c: 657b str r3, [r7, #84] @ 0x54 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 80010ea: 2302 movs r3, #2 - 80010ec: 65bb str r3, [r7, #88] @ 0x58 + 800118e: 2302 movs r3, #2 + 8001190: 65bb str r3, [r7, #88] @ 0x58 GPIO_InitStruct.Pull = GPIO_NOPULL; - 80010ee: 2300 movs r3, #0 - 80010f0: 65fb str r3, [r7, #92] @ 0x5c + 8001192: 2300 movs r3, #0 + 8001194: 65fb str r3, [r7, #92] @ 0x5c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 80010f2: 2300 movs r3, #0 - 80010f4: 663b str r3, [r7, #96] @ 0x60 + 8001196: 2300 movs r3, #0 + 8001198: 663b str r3, [r7, #96] @ 0x60 GPIO_InitStruct.Alternate = GPIO_AF9_LTDC; - 80010f6: 2309 movs r3, #9 - 80010f8: 667b str r3, [r7, #100] @ 0x64 + 800119a: 2309 movs r3, #9 + 800119c: 667b str r3, [r7, #100] @ 0x64 HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); - 80010fa: f107 0354 add.w r3, r7, #84 @ 0x54 - 80010fe: 4619 mov r1, r3 - 8001100: 480c ldr r0, [pc, #48] @ (8001134 ) - 8001102: f000 fdb7 bl 8001c74 + 800119e: f107 0354 add.w r3, r7, #84 @ 0x54 + 80011a2: 4619 mov r1, r3 + 80011a4: 480c ldr r0, [pc, #48] @ (80011d8 ) + 80011a6: f000 fd93 bl 8001cd0 /* LTDC interrupt Init */ HAL_NVIC_SetPriority(LTDC_IRQn, 5, 0); - 8001106: 2200 movs r2, #0 - 8001108: 2105 movs r1, #5 - 800110a: 2058 movs r0, #88 @ 0x58 - 800110c: f000 fb80 bl 8001810 + 80011aa: 2200 movs r2, #0 + 80011ac: 2105 movs r1, #5 + 80011ae: 2058 movs r0, #88 @ 0x58 + 80011b0: f000 fb5c bl 800186c HAL_NVIC_EnableIRQ(LTDC_IRQn); - 8001110: 2058 movs r0, #88 @ 0x58 - 8001112: f000 fb99 bl 8001848 + 80011b4: 2058 movs r0, #88 @ 0x58 + 80011b6: f000 fb75 bl 80018a4 /* USER CODE END LTDC_MspInit 1 */ } } - 8001116: bf00 nop - 8001118: 3768 adds r7, #104 @ 0x68 - 800111a: 46bd mov sp, r7 - 800111c: bd80 pop {r7, pc} - 800111e: bf00 nop - 8001120: 40016800 .word 0x40016800 - 8001124: 40023800 .word 0x40023800 - 8001128: 40021400 .word 0x40021400 - 800112c: 40020000 .word 0x40020000 - 8001130: 40020400 .word 0x40020400 - 8001134: 40021800 .word 0x40021800 - 8001138: 40020800 .word 0x40020800 - 800113c: 40020c00 .word 0x40020c00 + 80011ba: bf00 nop + 80011bc: 3768 adds r7, #104 @ 0x68 + 80011be: 46bd mov sp, r7 + 80011c0: bd80 pop {r7, pc} + 80011c2: bf00 nop + 80011c4: 40016800 .word 0x40016800 + 80011c8: 40023800 .word 0x40023800 + 80011cc: 40021400 .word 0x40021400 + 80011d0: 40020000 .word 0x40020000 + 80011d4: 40020400 .word 0x40020400 + 80011d8: 40021800 .word 0x40021800 + 80011dc: 40020800 .word 0x40020800 + 80011e0: 40020c00 .word 0x40020c00 -08001140 : +080011e4 : * This function configures the hardware resources used in this example * @param hspi: SPI handle pointer * @retval None */ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) { - 8001140: b580 push {r7, lr} - 8001142: b08a sub sp, #40 @ 0x28 - 8001144: af00 add r7, sp, #0 - 8001146: 6078 str r0, [r7, #4] + 80011e4: b580 push {r7, lr} + 80011e6: b08a sub sp, #40 @ 0x28 + 80011e8: af00 add r7, sp, #0 + 80011ea: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8001148: f107 0314 add.w r3, r7, #20 - 800114c: 2200 movs r2, #0 - 800114e: 601a str r2, [r3, #0] - 8001150: 605a str r2, [r3, #4] - 8001152: 609a str r2, [r3, #8] - 8001154: 60da str r2, [r3, #12] - 8001156: 611a str r2, [r3, #16] + 80011ec: f107 0314 add.w r3, r7, #20 + 80011f0: 2200 movs r2, #0 + 80011f2: 601a str r2, [r3, #0] + 80011f4: 605a str r2, [r3, #4] + 80011f6: 609a str r2, [r3, #8] + 80011f8: 60da str r2, [r3, #12] + 80011fa: 611a str r2, [r3, #16] if(hspi->Instance==SPI5) - 8001158: 687b ldr r3, [r7, #4] - 800115a: 681b ldr r3, [r3, #0] - 800115c: 4a19 ldr r2, [pc, #100] @ (80011c4 ) - 800115e: 4293 cmp r3, r2 - 8001160: d12c bne.n 80011bc + 80011fc: 687b ldr r3, [r7, #4] + 80011fe: 681b ldr r3, [r3, #0] + 8001200: 4a19 ldr r2, [pc, #100] @ (8001268 ) + 8001202: 4293 cmp r3, r2 + 8001204: d12c bne.n 8001260 { /* USER CODE BEGIN SPI5_MspInit 0 */ /* USER CODE END SPI5_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_SPI5_CLK_ENABLE(); - 8001162: 2300 movs r3, #0 - 8001164: 613b str r3, [r7, #16] - 8001166: 4b18 ldr r3, [pc, #96] @ (80011c8 ) - 8001168: 6c5b ldr r3, [r3, #68] @ 0x44 - 800116a: 4a17 ldr r2, [pc, #92] @ (80011c8 ) - 800116c: f443 1380 orr.w r3, r3, #1048576 @ 0x100000 - 8001170: 6453 str r3, [r2, #68] @ 0x44 - 8001172: 4b15 ldr r3, [pc, #84] @ (80011c8 ) - 8001174: 6c5b ldr r3, [r3, #68] @ 0x44 - 8001176: f403 1380 and.w r3, r3, #1048576 @ 0x100000 - 800117a: 613b str r3, [r7, #16] - 800117c: 693b ldr r3, [r7, #16] + 8001206: 2300 movs r3, #0 + 8001208: 613b str r3, [r7, #16] + 800120a: 4b18 ldr r3, [pc, #96] @ (800126c ) + 800120c: 6c5b ldr r3, [r3, #68] @ 0x44 + 800120e: 4a17 ldr r2, [pc, #92] @ (800126c ) + 8001210: f443 1380 orr.w r3, r3, #1048576 @ 0x100000 + 8001214: 6453 str r3, [r2, #68] @ 0x44 + 8001216: 4b15 ldr r3, [pc, #84] @ (800126c ) + 8001218: 6c5b ldr r3, [r3, #68] @ 0x44 + 800121a: f403 1380 and.w r3, r3, #1048576 @ 0x100000 + 800121e: 613b str r3, [r7, #16] + 8001220: 693b ldr r3, [r7, #16] __HAL_RCC_GPIOF_CLK_ENABLE(); - 800117e: 2300 movs r3, #0 - 8001180: 60fb str r3, [r7, #12] - 8001182: 4b11 ldr r3, [pc, #68] @ (80011c8 ) - 8001184: 6b1b ldr r3, [r3, #48] @ 0x30 - 8001186: 4a10 ldr r2, [pc, #64] @ (80011c8 ) - 8001188: f043 0320 orr.w r3, r3, #32 - 800118c: 6313 str r3, [r2, #48] @ 0x30 - 800118e: 4b0e ldr r3, [pc, #56] @ (80011c8 ) - 8001190: 6b1b ldr r3, [r3, #48] @ 0x30 - 8001192: f003 0320 and.w r3, r3, #32 - 8001196: 60fb str r3, [r7, #12] - 8001198: 68fb ldr r3, [r7, #12] + 8001222: 2300 movs r3, #0 + 8001224: 60fb str r3, [r7, #12] + 8001226: 4b11 ldr r3, [pc, #68] @ (800126c ) + 8001228: 6b1b ldr r3, [r3, #48] @ 0x30 + 800122a: 4a10 ldr r2, [pc, #64] @ (800126c ) + 800122c: f043 0320 orr.w r3, r3, #32 + 8001230: 6313 str r3, [r2, #48] @ 0x30 + 8001232: 4b0e ldr r3, [pc, #56] @ (800126c ) + 8001234: 6b1b ldr r3, [r3, #48] @ 0x30 + 8001236: f003 0320 and.w r3, r3, #32 + 800123a: 60fb str r3, [r7, #12] + 800123c: 68fb ldr r3, [r7, #12] /**SPI5 GPIO Configuration PF7 ------> SPI5_SCK PF8 ------> SPI5_MISO PF9 ------> SPI5_MOSI */ GPIO_InitStruct.Pin = SPI5_SCK_Pin|SPI5_MISO_Pin|SPI5_MOSI_Pin; - 800119a: f44f 7360 mov.w r3, #896 @ 0x380 - 800119e: 617b str r3, [r7, #20] + 800123e: f44f 7360 mov.w r3, #896 @ 0x380 + 8001242: 617b str r3, [r7, #20] GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 80011a0: 2302 movs r3, #2 - 80011a2: 61bb str r3, [r7, #24] + 8001244: 2302 movs r3, #2 + 8001246: 61bb str r3, [r7, #24] GPIO_InitStruct.Pull = GPIO_NOPULL; - 80011a4: 2300 movs r3, #0 - 80011a6: 61fb str r3, [r7, #28] + 8001248: 2300 movs r3, #0 + 800124a: 61fb str r3, [r7, #28] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 80011a8: 2300 movs r3, #0 - 80011aa: 623b str r3, [r7, #32] + 800124c: 2300 movs r3, #0 + 800124e: 623b str r3, [r7, #32] GPIO_InitStruct.Alternate = GPIO_AF5_SPI5; - 80011ac: 2305 movs r3, #5 - 80011ae: 627b str r3, [r7, #36] @ 0x24 + 8001250: 2305 movs r3, #5 + 8001252: 627b str r3, [r7, #36] @ 0x24 HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); - 80011b0: f107 0314 add.w r3, r7, #20 - 80011b4: 4619 mov r1, r3 - 80011b6: 4805 ldr r0, [pc, #20] @ (80011cc ) - 80011b8: f000 fd5c bl 8001c74 + 8001254: f107 0314 add.w r3, r7, #20 + 8001258: 4619 mov r1, r3 + 800125a: 4805 ldr r0, [pc, #20] @ (8001270 ) + 800125c: f000 fd38 bl 8001cd0 /* USER CODE END SPI5_MspInit 1 */ } } - 80011bc: bf00 nop - 80011be: 3728 adds r7, #40 @ 0x28 - 80011c0: 46bd mov sp, r7 - 80011c2: bd80 pop {r7, pc} - 80011c4: 40015000 .word 0x40015000 - 80011c8: 40023800 .word 0x40023800 - 80011cc: 40021400 .word 0x40021400 + 8001260: bf00 nop + 8001262: 3728 adds r7, #40 @ 0x28 + 8001264: 46bd mov sp, r7 + 8001266: bd80 pop {r7, pc} + 8001268: 40015000 .word 0x40015000 + 800126c: 40023800 .word 0x40023800 + 8001270: 40021400 .word 0x40021400 -080011d0 : +08001274 : * This function configures the hardware resources used in this example * @param htim_base: TIM_Base handle pointer * @retval None */ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) { - 80011d0: b480 push {r7} - 80011d2: b085 sub sp, #20 - 80011d4: af00 add r7, sp, #0 - 80011d6: 6078 str r0, [r7, #4] + 8001274: b480 push {r7} + 8001276: b085 sub sp, #20 + 8001278: af00 add r7, sp, #0 + 800127a: 6078 str r0, [r7, #4] if(htim_base->Instance==TIM1) - 80011d8: 687b ldr r3, [r7, #4] - 80011da: 681b ldr r3, [r3, #0] - 80011dc: 4a0b ldr r2, [pc, #44] @ (800120c ) - 80011de: 4293 cmp r3, r2 - 80011e0: d10d bne.n 80011fe + 800127c: 687b ldr r3, [r7, #4] + 800127e: 681b ldr r3, [r3, #0] + 8001280: 4a0b ldr r2, [pc, #44] @ (80012b0 ) + 8001282: 4293 cmp r3, r2 + 8001284: d10d bne.n 80012a2 { /* USER CODE BEGIN TIM1_MspInit 0 */ /* USER CODE END TIM1_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_TIM1_CLK_ENABLE(); - 80011e2: 2300 movs r3, #0 - 80011e4: 60fb str r3, [r7, #12] - 80011e6: 4b0a ldr r3, [pc, #40] @ (8001210 ) - 80011e8: 6c5b ldr r3, [r3, #68] @ 0x44 - 80011ea: 4a09 ldr r2, [pc, #36] @ (8001210 ) - 80011ec: f043 0301 orr.w r3, r3, #1 - 80011f0: 6453 str r3, [r2, #68] @ 0x44 - 80011f2: 4b07 ldr r3, [pc, #28] @ (8001210 ) - 80011f4: 6c5b ldr r3, [r3, #68] @ 0x44 - 80011f6: f003 0301 and.w r3, r3, #1 - 80011fa: 60fb str r3, [r7, #12] - 80011fc: 68fb ldr r3, [r7, #12] + 8001286: 2300 movs r3, #0 + 8001288: 60fb str r3, [r7, #12] + 800128a: 4b0a ldr r3, [pc, #40] @ (80012b4 ) + 800128c: 6c5b ldr r3, [r3, #68] @ 0x44 + 800128e: 4a09 ldr r2, [pc, #36] @ (80012b4 ) + 8001290: f043 0301 orr.w r3, r3, #1 + 8001294: 6453 str r3, [r2, #68] @ 0x44 + 8001296: 4b07 ldr r3, [pc, #28] @ (80012b4 ) + 8001298: 6c5b ldr r3, [r3, #68] @ 0x44 + 800129a: f003 0301 and.w r3, r3, #1 + 800129e: 60fb str r3, [r7, #12] + 80012a0: 68fb ldr r3, [r7, #12] /* USER CODE END TIM1_MspInit 1 */ } } - 80011fe: bf00 nop - 8001200: 3714 adds r7, #20 - 8001202: 46bd mov sp, r7 - 8001204: f85d 7b04 ldr.w r7, [sp], #4 - 8001208: 4770 bx lr - 800120a: bf00 nop - 800120c: 40010000 .word 0x40010000 - 8001210: 40023800 .word 0x40023800 + 80012a2: bf00 nop + 80012a4: 3714 adds r7, #20 + 80012a6: 46bd mov sp, r7 + 80012a8: f85d 7b04 ldr.w r7, [sp], #4 + 80012ac: 4770 bx lr + 80012ae: bf00 nop + 80012b0: 40010000 .word 0x40010000 + 80012b4: 40023800 .word 0x40023800 -08001214 : +080012b8 : * This function configures the hardware resources used in this example * @param huart: UART handle pointer * @retval None */ void HAL_UART_MspInit(UART_HandleTypeDef* huart) { - 8001214: b580 push {r7, lr} - 8001216: b08a sub sp, #40 @ 0x28 - 8001218: af00 add r7, sp, #0 - 800121a: 6078 str r0, [r7, #4] + 80012b8: b580 push {r7, lr} + 80012ba: b08a sub sp, #40 @ 0x28 + 80012bc: af00 add r7, sp, #0 + 80012be: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 800121c: f107 0314 add.w r3, r7, #20 - 8001220: 2200 movs r2, #0 - 8001222: 601a str r2, [r3, #0] - 8001224: 605a str r2, [r3, #4] - 8001226: 609a str r2, [r3, #8] - 8001228: 60da str r2, [r3, #12] - 800122a: 611a str r2, [r3, #16] + 80012c0: f107 0314 add.w r3, r7, #20 + 80012c4: 2200 movs r2, #0 + 80012c6: 601a str r2, [r3, #0] + 80012c8: 605a str r2, [r3, #4] + 80012ca: 609a str r2, [r3, #8] + 80012cc: 60da str r2, [r3, #12] + 80012ce: 611a str r2, [r3, #16] if(huart->Instance==USART1) - 800122c: 687b ldr r3, [r7, #4] - 800122e: 681b ldr r3, [r3, #0] - 8001230: 4a19 ldr r2, [pc, #100] @ (8001298 ) - 8001232: 4293 cmp r3, r2 - 8001234: d12c bne.n 8001290 + 80012d0: 687b ldr r3, [r7, #4] + 80012d2: 681b ldr r3, [r3, #0] + 80012d4: 4a19 ldr r2, [pc, #100] @ (800133c ) + 80012d6: 4293 cmp r3, r2 + 80012d8: d12c bne.n 8001334 { /* USER CODE BEGIN USART1_MspInit 0 */ /* USER CODE END USART1_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_USART1_CLK_ENABLE(); - 8001236: 2300 movs r3, #0 - 8001238: 613b str r3, [r7, #16] - 800123a: 4b18 ldr r3, [pc, #96] @ (800129c ) - 800123c: 6c5b ldr r3, [r3, #68] @ 0x44 - 800123e: 4a17 ldr r2, [pc, #92] @ (800129c ) - 8001240: f043 0310 orr.w r3, r3, #16 - 8001244: 6453 str r3, [r2, #68] @ 0x44 - 8001246: 4b15 ldr r3, [pc, #84] @ (800129c ) - 8001248: 6c5b ldr r3, [r3, #68] @ 0x44 - 800124a: f003 0310 and.w r3, r3, #16 - 800124e: 613b str r3, [r7, #16] - 8001250: 693b ldr r3, [r7, #16] + 80012da: 2300 movs r3, #0 + 80012dc: 613b str r3, [r7, #16] + 80012de: 4b18 ldr r3, [pc, #96] @ (8001340 ) + 80012e0: 6c5b ldr r3, [r3, #68] @ 0x44 + 80012e2: 4a17 ldr r2, [pc, #92] @ (8001340 ) + 80012e4: f043 0310 orr.w r3, r3, #16 + 80012e8: 6453 str r3, [r2, #68] @ 0x44 + 80012ea: 4b15 ldr r3, [pc, #84] @ (8001340 ) + 80012ec: 6c5b ldr r3, [r3, #68] @ 0x44 + 80012ee: f003 0310 and.w r3, r3, #16 + 80012f2: 613b str r3, [r7, #16] + 80012f4: 693b ldr r3, [r7, #16] __HAL_RCC_GPIOA_CLK_ENABLE(); - 8001252: 2300 movs r3, #0 - 8001254: 60fb str r3, [r7, #12] - 8001256: 4b11 ldr r3, [pc, #68] @ (800129c ) - 8001258: 6b1b ldr r3, [r3, #48] @ 0x30 - 800125a: 4a10 ldr r2, [pc, #64] @ (800129c ) - 800125c: f043 0301 orr.w r3, r3, #1 - 8001260: 6313 str r3, [r2, #48] @ 0x30 - 8001262: 4b0e ldr r3, [pc, #56] @ (800129c ) - 8001264: 6b1b ldr r3, [r3, #48] @ 0x30 - 8001266: f003 0301 and.w r3, r3, #1 - 800126a: 60fb str r3, [r7, #12] - 800126c: 68fb ldr r3, [r7, #12] + 80012f6: 2300 movs r3, #0 + 80012f8: 60fb str r3, [r7, #12] + 80012fa: 4b11 ldr r3, [pc, #68] @ (8001340 ) + 80012fc: 6b1b ldr r3, [r3, #48] @ 0x30 + 80012fe: 4a10 ldr r2, [pc, #64] @ (8001340 ) + 8001300: f043 0301 orr.w r3, r3, #1 + 8001304: 6313 str r3, [r2, #48] @ 0x30 + 8001306: 4b0e ldr r3, [pc, #56] @ (8001340 ) + 8001308: 6b1b ldr r3, [r3, #48] @ 0x30 + 800130a: f003 0301 and.w r3, r3, #1 + 800130e: 60fb str r3, [r7, #12] + 8001310: 68fb ldr r3, [r7, #12] /**USART1 GPIO Configuration PA9 ------> USART1_TX PA10 ------> USART1_RX */ GPIO_InitStruct.Pin = STLINK_RX_Pin|STLINK_TX_Pin; - 800126e: f44f 63c0 mov.w r3, #1536 @ 0x600 - 8001272: 617b str r3, [r7, #20] + 8001312: f44f 63c0 mov.w r3, #1536 @ 0x600 + 8001316: 617b str r3, [r7, #20] GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8001274: 2302 movs r3, #2 - 8001276: 61bb str r3, [r7, #24] + 8001318: 2302 movs r3, #2 + 800131a: 61bb str r3, [r7, #24] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001278: 2300 movs r3, #0 - 800127a: 61fb str r3, [r7, #28] + 800131c: 2300 movs r3, #0 + 800131e: 61fb str r3, [r7, #28] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 800127c: 2303 movs r3, #3 - 800127e: 623b str r3, [r7, #32] + 8001320: 2303 movs r3, #3 + 8001322: 623b str r3, [r7, #32] GPIO_InitStruct.Alternate = GPIO_AF7_USART1; - 8001280: 2307 movs r3, #7 - 8001282: 627b str r3, [r7, #36] @ 0x24 + 8001324: 2307 movs r3, #7 + 8001326: 627b str r3, [r7, #36] @ 0x24 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 8001284: f107 0314 add.w r3, r7, #20 - 8001288: 4619 mov r1, r3 - 800128a: 4805 ldr r0, [pc, #20] @ (80012a0 ) - 800128c: f000 fcf2 bl 8001c74 + 8001328: f107 0314 add.w r3, r7, #20 + 800132c: 4619 mov r1, r3 + 800132e: 4805 ldr r0, [pc, #20] @ (8001344 ) + 8001330: f000 fcce bl 8001cd0 /* USER CODE END USART1_MspInit 1 */ } } - 8001290: bf00 nop - 8001292: 3728 adds r7, #40 @ 0x28 - 8001294: 46bd mov sp, r7 - 8001296: bd80 pop {r7, pc} - 8001298: 40011000 .word 0x40011000 - 800129c: 40023800 .word 0x40023800 - 80012a0: 40020000 .word 0x40020000 + 8001334: bf00 nop + 8001336: 3728 adds r7, #40 @ 0x28 + 8001338: 46bd mov sp, r7 + 800133a: bd80 pop {r7, pc} + 800133c: 40011000 .word 0x40011000 + 8001340: 40023800 .word 0x40023800 + 8001344: 40020000 .word 0x40020000 -080012a4 : +08001348 : } static uint32_t FMC_Initialized = 0; static void HAL_FMC_MspInit(void){ - 80012a4: b580 push {r7, lr} - 80012a6: b086 sub sp, #24 - 80012a8: af00 add r7, sp, #0 + 8001348: b580 push {r7, lr} + 800134a: b086 sub sp, #24 + 800134c: af00 add r7, sp, #0 /* USER CODE BEGIN FMC_MspInit 0 */ /* USER CODE END FMC_MspInit 0 */ GPIO_InitTypeDef GPIO_InitStruct ={0}; - 80012aa: 1d3b adds r3, r7, #4 - 80012ac: 2200 movs r2, #0 - 80012ae: 601a str r2, [r3, #0] - 80012b0: 605a str r2, [r3, #4] - 80012b2: 609a str r2, [r3, #8] - 80012b4: 60da str r2, [r3, #12] - 80012b6: 611a str r2, [r3, #16] + 800134e: 1d3b adds r3, r7, #4 + 8001350: 2200 movs r2, #0 + 8001352: 601a str r2, [r3, #0] + 8001354: 605a str r2, [r3, #4] + 8001356: 609a str r2, [r3, #8] + 8001358: 60da str r2, [r3, #12] + 800135a: 611a str r2, [r3, #16] if (FMC_Initialized) { - 80012b8: 4b3b ldr r3, [pc, #236] @ (80013a8 ) - 80012ba: 681b ldr r3, [r3, #0] - 80012bc: 2b00 cmp r3, #0 - 80012be: d16f bne.n 80013a0 + 800135c: 4b3b ldr r3, [pc, #236] @ (800144c ) + 800135e: 681b ldr r3, [r3, #0] + 8001360: 2b00 cmp r3, #0 + 8001362: d16f bne.n 8001444 return; } FMC_Initialized = 1; - 80012c0: 4b39 ldr r3, [pc, #228] @ (80013a8 ) - 80012c2: 2201 movs r2, #1 - 80012c4: 601a str r2, [r3, #0] + 8001364: 4b39 ldr r3, [pc, #228] @ (800144c ) + 8001366: 2201 movs r2, #1 + 8001368: 601a str r2, [r3, #0] /* Peripheral clock enable */ __HAL_RCC_FMC_CLK_ENABLE(); - 80012c6: 2300 movs r3, #0 - 80012c8: 603b str r3, [r7, #0] - 80012ca: 4b38 ldr r3, [pc, #224] @ (80013ac ) - 80012cc: 6b9b ldr r3, [r3, #56] @ 0x38 - 80012ce: 4a37 ldr r2, [pc, #220] @ (80013ac ) - 80012d0: f043 0301 orr.w r3, r3, #1 - 80012d4: 6393 str r3, [r2, #56] @ 0x38 - 80012d6: 4b35 ldr r3, [pc, #212] @ (80013ac ) - 80012d8: 6b9b ldr r3, [r3, #56] @ 0x38 - 80012da: f003 0301 and.w r3, r3, #1 - 80012de: 603b str r3, [r7, #0] - 80012e0: 683b ldr r3, [r7, #0] + 800136a: 2300 movs r3, #0 + 800136c: 603b str r3, [r7, #0] + 800136e: 4b38 ldr r3, [pc, #224] @ (8001450 ) + 8001370: 6b9b ldr r3, [r3, #56] @ 0x38 + 8001372: 4a37 ldr r2, [pc, #220] @ (8001450 ) + 8001374: f043 0301 orr.w r3, r3, #1 + 8001378: 6393 str r3, [r2, #56] @ 0x38 + 800137a: 4b35 ldr r3, [pc, #212] @ (8001450 ) + 800137c: 6b9b ldr r3, [r3, #56] @ 0x38 + 800137e: f003 0301 and.w r3, r3, #1 + 8001382: 603b str r3, [r7, #0] + 8001384: 683b ldr r3, [r7, #0] PB5 ------> FMC_SDCKE1 PB6 ------> FMC_SDNE1 PE0 ------> FMC_NBL0 PE1 ------> FMC_NBL1 */ GPIO_InitStruct.Pin = A0_Pin|A1_Pin|A2_Pin|A3_Pin - 80012e2: f64f 033f movw r3, #63551 @ 0xf83f - 80012e6: 607b str r3, [r7, #4] + 8001386: f64f 033f movw r3, #63551 @ 0xf83f + 800138a: 607b str r3, [r7, #4] |A4_Pin|A5_Pin|SDNRAS_Pin|A6_Pin |A7_Pin|A8_Pin|A9_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 80012e8: 2302 movs r3, #2 - 80012ea: 60bb str r3, [r7, #8] + 800138c: 2302 movs r3, #2 + 800138e: 60bb str r3, [r7, #8] GPIO_InitStruct.Pull = GPIO_NOPULL; - 80012ec: 2300 movs r3, #0 - 80012ee: 60fb str r3, [r7, #12] + 8001390: 2300 movs r3, #0 + 8001392: 60fb str r3, [r7, #12] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 80012f0: 2303 movs r3, #3 - 80012f2: 613b str r3, [r7, #16] + 8001394: 2303 movs r3, #3 + 8001396: 613b str r3, [r7, #16] GPIO_InitStruct.Alternate = GPIO_AF12_FMC; - 80012f4: 230c movs r3, #12 - 80012f6: 617b str r3, [r7, #20] + 8001398: 230c movs r3, #12 + 800139a: 617b str r3, [r7, #20] HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); - 80012f8: 1d3b adds r3, r7, #4 - 80012fa: 4619 mov r1, r3 - 80012fc: 482c ldr r0, [pc, #176] @ (80013b0 ) - 80012fe: f000 fcb9 bl 8001c74 + 800139c: 1d3b adds r3, r7, #4 + 800139e: 4619 mov r1, r3 + 80013a0: 482c ldr r0, [pc, #176] @ (8001454 ) + 80013a2: f000 fc95 bl 8001cd0 GPIO_InitStruct.Pin = SDNWE_Pin; - 8001302: 2301 movs r3, #1 - 8001304: 607b str r3, [r7, #4] + 80013a6: 2301 movs r3, #1 + 80013a8: 607b str r3, [r7, #4] GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8001306: 2302 movs r3, #2 - 8001308: 60bb str r3, [r7, #8] + 80013aa: 2302 movs r3, #2 + 80013ac: 60bb str r3, [r7, #8] GPIO_InitStruct.Pull = GPIO_NOPULL; - 800130a: 2300 movs r3, #0 - 800130c: 60fb str r3, [r7, #12] + 80013ae: 2300 movs r3, #0 + 80013b0: 60fb str r3, [r7, #12] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 800130e: 2303 movs r3, #3 - 8001310: 613b str r3, [r7, #16] + 80013b2: 2303 movs r3, #3 + 80013b4: 613b str r3, [r7, #16] GPIO_InitStruct.Alternate = GPIO_AF12_FMC; - 8001312: 230c movs r3, #12 - 8001314: 617b str r3, [r7, #20] + 80013b6: 230c movs r3, #12 + 80013b8: 617b str r3, [r7, #20] HAL_GPIO_Init(SDNWE_GPIO_Port, &GPIO_InitStruct); - 8001316: 1d3b adds r3, r7, #4 - 8001318: 4619 mov r1, r3 - 800131a: 4826 ldr r0, [pc, #152] @ (80013b4 ) - 800131c: f000 fcaa bl 8001c74 + 80013ba: 1d3b adds r3, r7, #4 + 80013bc: 4619 mov r1, r3 + 80013be: 4826 ldr r0, [pc, #152] @ (8001458 ) + 80013c0: f000 fc86 bl 8001cd0 GPIO_InitStruct.Pin = A10_Pin|A11_Pin|BA0_Pin|BA1_Pin - 8001320: f248 1333 movw r3, #33075 @ 0x8133 - 8001324: 607b str r3, [r7, #4] + 80013c4: f248 1333 movw r3, #33075 @ 0x8133 + 80013c8: 607b str r3, [r7, #4] |SDCLK_Pin|SDNCAS_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8001326: 2302 movs r3, #2 - 8001328: 60bb str r3, [r7, #8] + 80013ca: 2302 movs r3, #2 + 80013cc: 60bb str r3, [r7, #8] GPIO_InitStruct.Pull = GPIO_NOPULL; - 800132a: 2300 movs r3, #0 - 800132c: 60fb str r3, [r7, #12] + 80013ce: 2300 movs r3, #0 + 80013d0: 60fb str r3, [r7, #12] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 800132e: 2303 movs r3, #3 - 8001330: 613b str r3, [r7, #16] + 80013d2: 2303 movs r3, #3 + 80013d4: 613b str r3, [r7, #16] GPIO_InitStruct.Alternate = GPIO_AF12_FMC; - 8001332: 230c movs r3, #12 - 8001334: 617b str r3, [r7, #20] + 80013d6: 230c movs r3, #12 + 80013d8: 617b str r3, [r7, #20] HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); - 8001336: 1d3b adds r3, r7, #4 - 8001338: 4619 mov r1, r3 - 800133a: 481f ldr r0, [pc, #124] @ (80013b8 ) - 800133c: f000 fc9a bl 8001c74 + 80013da: 1d3b adds r3, r7, #4 + 80013dc: 4619 mov r1, r3 + 80013de: 481f ldr r0, [pc, #124] @ (800145c ) + 80013e0: f000 fc76 bl 8001cd0 GPIO_InitStruct.Pin = D4_Pin|D5_Pin|D6_Pin|D7_Pin - 8001340: f64f 7383 movw r3, #65411 @ 0xff83 - 8001344: 607b str r3, [r7, #4] + 80013e4: f64f 7383 movw r3, #65411 @ 0xff83 + 80013e8: 607b str r3, [r7, #4] |D8_Pin|D9_Pin|D10_Pin|D11_Pin |D12_Pin|NBL0_Pin|NBL1_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8001346: 2302 movs r3, #2 - 8001348: 60bb str r3, [r7, #8] + 80013ea: 2302 movs r3, #2 + 80013ec: 60bb str r3, [r7, #8] GPIO_InitStruct.Pull = GPIO_NOPULL; - 800134a: 2300 movs r3, #0 - 800134c: 60fb str r3, [r7, #12] + 80013ee: 2300 movs r3, #0 + 80013f0: 60fb str r3, [r7, #12] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 800134e: 2303 movs r3, #3 - 8001350: 613b str r3, [r7, #16] + 80013f2: 2303 movs r3, #3 + 80013f4: 613b str r3, [r7, #16] GPIO_InitStruct.Alternate = GPIO_AF12_FMC; - 8001352: 230c movs r3, #12 - 8001354: 617b str r3, [r7, #20] + 80013f6: 230c movs r3, #12 + 80013f8: 617b str r3, [r7, #20] HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - 8001356: 1d3b adds r3, r7, #4 - 8001358: 4619 mov r1, r3 - 800135a: 4818 ldr r0, [pc, #96] @ (80013bc ) - 800135c: f000 fc8a bl 8001c74 + 80013fa: 1d3b adds r3, r7, #4 + 80013fc: 4619 mov r1, r3 + 80013fe: 4818 ldr r0, [pc, #96] @ (8001460 ) + 8001400: f000 fc66 bl 8001cd0 GPIO_InitStruct.Pin = D13_Pin|D14_Pin|D15_Pin|D0_Pin - 8001360: f24c 7303 movw r3, #50947 @ 0xc703 - 8001364: 607b str r3, [r7, #4] + 8001404: f24c 7303 movw r3, #50947 @ 0xc703 + 8001408: 607b str r3, [r7, #4] |D1_Pin|D2_Pin|D3_Pin; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8001366: 2302 movs r3, #2 - 8001368: 60bb str r3, [r7, #8] + 800140a: 2302 movs r3, #2 + 800140c: 60bb str r3, [r7, #8] GPIO_InitStruct.Pull = GPIO_NOPULL; - 800136a: 2300 movs r3, #0 - 800136c: 60fb str r3, [r7, #12] + 800140e: 2300 movs r3, #0 + 8001410: 60fb str r3, [r7, #12] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 800136e: 2303 movs r3, #3 - 8001370: 613b str r3, [r7, #16] + 8001412: 2303 movs r3, #3 + 8001414: 613b str r3, [r7, #16] GPIO_InitStruct.Alternate = GPIO_AF12_FMC; - 8001372: 230c movs r3, #12 - 8001374: 617b str r3, [r7, #20] + 8001416: 230c movs r3, #12 + 8001418: 617b str r3, [r7, #20] HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - 8001376: 1d3b adds r3, r7, #4 - 8001378: 4619 mov r1, r3 - 800137a: 4811 ldr r0, [pc, #68] @ (80013c0 ) - 800137c: f000 fc7a bl 8001c74 + 800141a: 1d3b adds r3, r7, #4 + 800141c: 4619 mov r1, r3 + 800141e: 4811 ldr r0, [pc, #68] @ (8001464 ) + 8001420: f000 fc56 bl 8001cd0 GPIO_InitStruct.Pin = SDCKE1_Pin|SDNE1_Pin; - 8001380: 2360 movs r3, #96 @ 0x60 - 8001382: 607b str r3, [r7, #4] + 8001424: 2360 movs r3, #96 @ 0x60 + 8001426: 607b str r3, [r7, #4] GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8001384: 2302 movs r3, #2 - 8001386: 60bb str r3, [r7, #8] + 8001428: 2302 movs r3, #2 + 800142a: 60bb str r3, [r7, #8] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001388: 2300 movs r3, #0 - 800138a: 60fb str r3, [r7, #12] + 800142c: 2300 movs r3, #0 + 800142e: 60fb str r3, [r7, #12] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 800138c: 2303 movs r3, #3 - 800138e: 613b str r3, [r7, #16] + 8001430: 2303 movs r3, #3 + 8001432: 613b str r3, [r7, #16] GPIO_InitStruct.Alternate = GPIO_AF12_FMC; - 8001390: 230c movs r3, #12 - 8001392: 617b str r3, [r7, #20] + 8001434: 230c movs r3, #12 + 8001436: 617b str r3, [r7, #20] HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8001394: 1d3b adds r3, r7, #4 - 8001396: 4619 mov r1, r3 - 8001398: 480a ldr r0, [pc, #40] @ (80013c4 ) - 800139a: f000 fc6b bl 8001c74 - 800139e: e000 b.n 80013a2 + 8001438: 1d3b adds r3, r7, #4 + 800143a: 4619 mov r1, r3 + 800143c: 480a ldr r0, [pc, #40] @ (8001468 ) + 800143e: f000 fc47 bl 8001cd0 + 8001442: e000 b.n 8001446 return; - 80013a0: bf00 nop + 8001444: bf00 nop /* USER CODE BEGIN FMC_MspInit 1 */ /* USER CODE END FMC_MspInit 1 */ } - 80013a2: 3718 adds r7, #24 - 80013a4: 46bd mov sp, r7 - 80013a6: bd80 pop {r7, pc} - 80013a8: 2000028c .word 0x2000028c - 80013ac: 40023800 .word 0x40023800 - 80013b0: 40021400 .word 0x40021400 - 80013b4: 40020800 .word 0x40020800 - 80013b8: 40021800 .word 0x40021800 - 80013bc: 40021000 .word 0x40021000 - 80013c0: 40020c00 .word 0x40020c00 - 80013c4: 40020400 .word 0x40020400 + 8001446: 3718 adds r7, #24 + 8001448: 46bd mov sp, r7 + 800144a: bd80 pop {r7, pc} + 800144c: 20000298 .word 0x20000298 + 8001450: 40023800 .word 0x40023800 + 8001454: 40021400 .word 0x40021400 + 8001458: 40020800 .word 0x40020800 + 800145c: 40021800 .word 0x40021800 + 8001460: 40021000 .word 0x40021000 + 8001464: 40020c00 .word 0x40020c00 + 8001468: 40020400 .word 0x40020400 -080013c8 : +0800146c : void HAL_SDRAM_MspInit(SDRAM_HandleTypeDef* hsdram){ - 80013c8: b580 push {r7, lr} - 80013ca: b082 sub sp, #8 - 80013cc: af00 add r7, sp, #0 - 80013ce: 6078 str r0, [r7, #4] + 800146c: b580 push {r7, lr} + 800146e: b082 sub sp, #8 + 8001470: af00 add r7, sp, #0 + 8001472: 6078 str r0, [r7, #4] /* USER CODE BEGIN SDRAM_MspInit 0 */ /* USER CODE END SDRAM_MspInit 0 */ HAL_FMC_MspInit(); - 80013d0: f7ff ff68 bl 80012a4 + 8001474: f7ff ff68 bl 8001348 /* USER CODE BEGIN SDRAM_MspInit 1 */ /* USER CODE END SDRAM_MspInit 1 */ } - 80013d4: bf00 nop - 80013d6: 3708 adds r7, #8 - 80013d8: 46bd mov sp, r7 - 80013da: bd80 pop {r7, pc} + 8001478: bf00 nop + 800147a: 3708 adds r7, #8 + 800147c: 46bd mov sp, r7 + 800147e: bd80 pop {r7, pc} -080013dc : +08001480 : * reset by HAL_Init() or at any time when clock is configured, by HAL_RCC_ClockConfig(). * @param TickPriority: Tick interrupt priority. * @retval HAL status */ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) { - 80013dc: b580 push {r7, lr} - 80013de: b08e sub sp, #56 @ 0x38 - 80013e0: af00 add r7, sp, #0 - 80013e2: 6078 str r0, [r7, #4] + 8001480: b580 push {r7, lr} + 8001482: b08e sub sp, #56 @ 0x38 + 8001484: af00 add r7, sp, #0 + 8001486: 6078 str r0, [r7, #4] RCC_ClkInitTypeDef clkconfig; uint32_t uwTimclock, uwAPB1Prescaler = 0U; - 80013e4: 2300 movs r3, #0 - 80013e6: 62fb str r3, [r7, #44] @ 0x2c + 8001488: 2300 movs r3, #0 + 800148a: 62fb str r3, [r7, #44] @ 0x2c uint32_t uwPrescalerValue = 0U; - 80013e8: 2300 movs r3, #0 - 80013ea: 62bb str r3, [r7, #40] @ 0x28 + 800148c: 2300 movs r3, #0 + 800148e: 62bb str r3, [r7, #40] @ 0x28 uint32_t pFLatency; HAL_StatusTypeDef status; /* Enable TIM6 clock */ __HAL_RCC_TIM6_CLK_ENABLE(); - 80013ec: 2300 movs r3, #0 - 80013ee: 60fb str r3, [r7, #12] - 80013f0: 4b33 ldr r3, [pc, #204] @ (80014c0 ) - 80013f2: 6c1b ldr r3, [r3, #64] @ 0x40 - 80013f4: 4a32 ldr r2, [pc, #200] @ (80014c0 ) - 80013f6: f043 0310 orr.w r3, r3, #16 - 80013fa: 6413 str r3, [r2, #64] @ 0x40 - 80013fc: 4b30 ldr r3, [pc, #192] @ (80014c0 ) - 80013fe: 6c1b ldr r3, [r3, #64] @ 0x40 - 8001400: f003 0310 and.w r3, r3, #16 - 8001404: 60fb str r3, [r7, #12] - 8001406: 68fb ldr r3, [r7, #12] + 8001490: 2300 movs r3, #0 + 8001492: 60fb str r3, [r7, #12] + 8001494: 4b33 ldr r3, [pc, #204] @ (8001564 ) + 8001496: 6c1b ldr r3, [r3, #64] @ 0x40 + 8001498: 4a32 ldr r2, [pc, #200] @ (8001564 ) + 800149a: f043 0310 orr.w r3, r3, #16 + 800149e: 6413 str r3, [r2, #64] @ 0x40 + 80014a0: 4b30 ldr r3, [pc, #192] @ (8001564 ) + 80014a2: 6c1b ldr r3, [r3, #64] @ 0x40 + 80014a4: f003 0310 and.w r3, r3, #16 + 80014a8: 60fb str r3, [r7, #12] + 80014aa: 68fb ldr r3, [r7, #12] /* Get clock configuration */ HAL_RCC_GetClockConfig(&clkconfig, &pFLatency); - 8001408: f107 0210 add.w r2, r7, #16 - 800140c: f107 0314 add.w r3, r7, #20 - 8001410: 4611 mov r1, r2 - 8001412: 4618 mov r0, r3 - 8001414: f003 fd1c bl 8004e50 + 80014ac: f107 0210 add.w r2, r7, #16 + 80014b0: f107 0314 add.w r3, r7, #20 + 80014b4: 4611 mov r1, r2 + 80014b6: 4618 mov r0, r3 + 80014b8: f003 fcf8 bl 8004eac /* Get APB1 prescaler */ uwAPB1Prescaler = clkconfig.APB1CLKDivider; - 8001418: 6a3b ldr r3, [r7, #32] - 800141a: 62fb str r3, [r7, #44] @ 0x2c + 80014bc: 6a3b ldr r3, [r7, #32] + 80014be: 62fb str r3, [r7, #44] @ 0x2c /* Compute TIM6 clock */ if (uwAPB1Prescaler == RCC_HCLK_DIV1) - 800141c: 6afb ldr r3, [r7, #44] @ 0x2c - 800141e: 2b00 cmp r3, #0 - 8001420: d103 bne.n 800142a + 80014c0: 6afb ldr r3, [r7, #44] @ 0x2c + 80014c2: 2b00 cmp r3, #0 + 80014c4: d103 bne.n 80014ce { uwTimclock = HAL_RCC_GetPCLK1Freq(); - 8001422: f003 fced bl 8004e00 - 8001426: 6378 str r0, [r7, #52] @ 0x34 - 8001428: e004 b.n 8001434 + 80014c6: f003 fcc9 bl 8004e5c + 80014ca: 6378 str r0, [r7, #52] @ 0x34 + 80014cc: e004 b.n 80014d8 } else { uwTimclock = 2UL * HAL_RCC_GetPCLK1Freq(); - 800142a: f003 fce9 bl 8004e00 - 800142e: 4603 mov r3, r0 - 8001430: 005b lsls r3, r3, #1 - 8001432: 637b str r3, [r7, #52] @ 0x34 + 80014ce: f003 fcc5 bl 8004e5c + 80014d2: 4603 mov r3, r0 + 80014d4: 005b lsls r3, r3, #1 + 80014d6: 637b str r3, [r7, #52] @ 0x34 } /* Compute the prescaler value to have TIM6 counter clock equal to 1MHz */ uwPrescalerValue = (uint32_t) ((uwTimclock / 1000000U) - 1U); - 8001434: 6b7b ldr r3, [r7, #52] @ 0x34 - 8001436: 4a23 ldr r2, [pc, #140] @ (80014c4 ) - 8001438: fba2 2303 umull r2, r3, r2, r3 - 800143c: 0c9b lsrs r3, r3, #18 - 800143e: 3b01 subs r3, #1 - 8001440: 62bb str r3, [r7, #40] @ 0x28 + 80014d8: 6b7b ldr r3, [r7, #52] @ 0x34 + 80014da: 4a23 ldr r2, [pc, #140] @ (8001568 ) + 80014dc: fba2 2303 umull r2, r3, r2, r3 + 80014e0: 0c9b lsrs r3, r3, #18 + 80014e2: 3b01 subs r3, #1 + 80014e4: 62bb str r3, [r7, #40] @ 0x28 /* Initialize TIM6 */ htim6.Instance = TIM6; - 8001442: 4b21 ldr r3, [pc, #132] @ (80014c8 ) - 8001444: 4a21 ldr r2, [pc, #132] @ (80014cc ) - 8001446: 601a str r2, [r3, #0] + 80014e6: 4b21 ldr r3, [pc, #132] @ (800156c ) + 80014e8: 4a21 ldr r2, [pc, #132] @ (8001570 ) + 80014ea: 601a str r2, [r3, #0] * Period = [(TIM6CLK/1000) - 1]. to have a (1/1000) s time base. * Prescaler = (uwTimclock/1000000 - 1) to have a 1MHz counter clock. * ClockDivision = 0 * Counter direction = Up */ htim6.Init.Period = (1000000U / 1000U) - 1U; - 8001448: 4b1f ldr r3, [pc, #124] @ (80014c8 ) - 800144a: f240 32e7 movw r2, #999 @ 0x3e7 - 800144e: 60da str r2, [r3, #12] + 80014ec: 4b1f ldr r3, [pc, #124] @ (800156c ) + 80014ee: f240 32e7 movw r2, #999 @ 0x3e7 + 80014f2: 60da str r2, [r3, #12] htim6.Init.Prescaler = uwPrescalerValue; - 8001450: 4a1d ldr r2, [pc, #116] @ (80014c8 ) - 8001452: 6abb ldr r3, [r7, #40] @ 0x28 - 8001454: 6053 str r3, [r2, #4] + 80014f4: 4a1d ldr r2, [pc, #116] @ (800156c ) + 80014f6: 6abb ldr r3, [r7, #40] @ 0x28 + 80014f8: 6053 str r3, [r2, #4] htim6.Init.ClockDivision = 0; - 8001456: 4b1c ldr r3, [pc, #112] @ (80014c8 ) - 8001458: 2200 movs r2, #0 - 800145a: 611a str r2, [r3, #16] + 80014fa: 4b1c ldr r3, [pc, #112] @ (800156c ) + 80014fc: 2200 movs r2, #0 + 80014fe: 611a str r2, [r3, #16] htim6.Init.CounterMode = TIM_COUNTERMODE_UP; - 800145c: 4b1a ldr r3, [pc, #104] @ (80014c8 ) - 800145e: 2200 movs r2, #0 - 8001460: 609a str r2, [r3, #8] + 8001500: 4b1a ldr r3, [pc, #104] @ (800156c ) + 8001502: 2200 movs r2, #0 + 8001504: 609a str r2, [r3, #8] htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 8001462: 4b19 ldr r3, [pc, #100] @ (80014c8 ) - 8001464: 2200 movs r2, #0 - 8001466: 619a str r2, [r3, #24] + 8001506: 4b19 ldr r3, [pc, #100] @ (800156c ) + 8001508: 2200 movs r2, #0 + 800150a: 619a str r2, [r3, #24] status = HAL_TIM_Base_Init(&htim6); - 8001468: 4817 ldr r0, [pc, #92] @ (80014c8 ) - 800146a: f003 ffa0 bl 80053ae - 800146e: 4603 mov r3, r0 - 8001470: f887 3033 strb.w r3, [r7, #51] @ 0x33 + 800150c: 4817 ldr r0, [pc, #92] @ (800156c ) + 800150e: f003 ff7c bl 800540a + 8001512: 4603 mov r3, r0 + 8001514: f887 3033 strb.w r3, [r7, #51] @ 0x33 if (status == HAL_OK) - 8001474: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 - 8001478: 2b00 cmp r3, #0 - 800147a: d11b bne.n 80014b4 + 8001518: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 + 800151c: 2b00 cmp r3, #0 + 800151e: d11b bne.n 8001558 { /* Start the TIM time Base generation in interrupt mode */ status = HAL_TIM_Base_Start_IT(&htim6); - 800147c: 4812 ldr r0, [pc, #72] @ (80014c8 ) - 800147e: f003 ffe5 bl 800544c - 8001482: 4603 mov r3, r0 - 8001484: f887 3033 strb.w r3, [r7, #51] @ 0x33 + 8001520: 4812 ldr r0, [pc, #72] @ (800156c ) + 8001522: f003 ffc1 bl 80054a8 + 8001526: 4603 mov r3, r0 + 8001528: f887 3033 strb.w r3, [r7, #51] @ 0x33 if (status == HAL_OK) - 8001488: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 - 800148c: 2b00 cmp r3, #0 - 800148e: d111 bne.n 80014b4 + 800152c: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 + 8001530: 2b00 cmp r3, #0 + 8001532: d111 bne.n 8001558 { /* Enable the TIM6 global Interrupt */ HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn); - 8001490: 2036 movs r0, #54 @ 0x36 - 8001492: f000 f9d9 bl 8001848 + 8001534: 2036 movs r0, #54 @ 0x36 + 8001536: f000 f9b5 bl 80018a4 /* Configure the SysTick IRQ priority */ if (TickPriority < (1UL << __NVIC_PRIO_BITS)) - 8001496: 687b ldr r3, [r7, #4] - 8001498: 2b0f cmp r3, #15 - 800149a: d808 bhi.n 80014ae + 800153a: 687b ldr r3, [r7, #4] + 800153c: 2b0f cmp r3, #15 + 800153e: d808 bhi.n 8001552 { /* Configure the TIM IRQ priority */ HAL_NVIC_SetPriority(TIM6_DAC_IRQn, TickPriority, 0U); - 800149c: 2200 movs r2, #0 - 800149e: 6879 ldr r1, [r7, #4] - 80014a0: 2036 movs r0, #54 @ 0x36 - 80014a2: f000 f9b5 bl 8001810 + 8001540: 2200 movs r2, #0 + 8001542: 6879 ldr r1, [r7, #4] + 8001544: 2036 movs r0, #54 @ 0x36 + 8001546: f000 f991 bl 800186c uwTickPrio = TickPriority; - 80014a6: 4a0a ldr r2, [pc, #40] @ (80014d0 ) - 80014a8: 687b ldr r3, [r7, #4] - 80014aa: 6013 str r3, [r2, #0] - 80014ac: e002 b.n 80014b4 + 800154a: 4a0a ldr r2, [pc, #40] @ (8001574 ) + 800154c: 687b ldr r3, [r7, #4] + 800154e: 6013 str r3, [r2, #0] + 8001550: e002 b.n 8001558 } else { status = HAL_ERROR; - 80014ae: 2301 movs r3, #1 - 80014b0: f887 3033 strb.w r3, [r7, #51] @ 0x33 + 8001552: 2301 movs r3, #1 + 8001554: f887 3033 strb.w r3, [r7, #51] @ 0x33 } } } /* Return function status */ return status; - 80014b4: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 + 8001558: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 } - 80014b8: 4618 mov r0, r3 - 80014ba: 3738 adds r7, #56 @ 0x38 - 80014bc: 46bd mov sp, r7 - 80014be: bd80 pop {r7, pc} - 80014c0: 40023800 .word 0x40023800 - 80014c4: 431bde83 .word 0x431bde83 - 80014c8: 20000290 .word 0x20000290 - 80014cc: 40001000 .word 0x40001000 - 80014d0: 20000004 .word 0x20000004 + 800155c: 4618 mov r0, r3 + 800155e: 3738 adds r7, #56 @ 0x38 + 8001560: 46bd mov sp, r7 + 8001562: bd80 pop {r7, pc} + 8001564: 40023800 .word 0x40023800 + 8001568: 431bde83 .word 0x431bde83 + 800156c: 2000029c .word 0x2000029c + 8001570: 40001000 .word 0x40001000 + 8001574: 20000004 .word 0x20000004 -080014d4 : +08001578 : /******************************************************************************/ /** * @brief This function handles Non maskable interrupt. */ void NMI_Handler(void) { - 80014d4: b480 push {r7} - 80014d6: af00 add r7, sp, #0 + 8001578: b480 push {r7} + 800157a: 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) - 80014d8: bf00 nop - 80014da: e7fd b.n 80014d8 + 800157c: bf00 nop + 800157e: e7fd b.n 800157c -080014dc : +08001580 : /** * @brief This function handles Hard fault interrupt. */ void HardFault_Handler(void) { - 80014dc: b480 push {r7} - 80014de: af00 add r7, sp, #0 + 8001580: b480 push {r7} + 8001582: af00 add r7, sp, #0 /* USER CODE BEGIN HardFault_IRQn 0 */ /* USER CODE END HardFault_IRQn 0 */ while (1) - 80014e0: bf00 nop - 80014e2: e7fd b.n 80014e0 + 8001584: bf00 nop + 8001586: e7fd b.n 8001584 -080014e4 : +08001588 : /** * @brief This function handles Memory management fault. */ void MemManage_Handler(void) { - 80014e4: b480 push {r7} - 80014e6: af00 add r7, sp, #0 + 8001588: b480 push {r7} + 800158a: af00 add r7, sp, #0 /* USER CODE BEGIN MemoryManagement_IRQn 0 */ /* USER CODE END MemoryManagement_IRQn 0 */ while (1) - 80014e8: bf00 nop - 80014ea: e7fd b.n 80014e8 + 800158c: bf00 nop + 800158e: e7fd b.n 800158c -080014ec : +08001590 : /** * @brief This function handles Pre-fetch fault, memory access fault. */ void BusFault_Handler(void) { - 80014ec: b480 push {r7} - 80014ee: af00 add r7, sp, #0 + 8001590: b480 push {r7} + 8001592: af00 add r7, sp, #0 /* USER CODE BEGIN BusFault_IRQn 0 */ /* USER CODE END BusFault_IRQn 0 */ while (1) - 80014f0: bf00 nop - 80014f2: e7fd b.n 80014f0 + 8001594: bf00 nop + 8001596: e7fd b.n 8001594 -080014f4 : +08001598 : /** * @brief This function handles Undefined instruction or illegal state. */ void UsageFault_Handler(void) { - 80014f4: b480 push {r7} - 80014f6: af00 add r7, sp, #0 + 8001598: b480 push {r7} + 800159a: af00 add r7, sp, #0 /* USER CODE BEGIN UsageFault_IRQn 0 */ /* USER CODE END UsageFault_IRQn 0 */ while (1) - 80014f8: bf00 nop - 80014fa: e7fd b.n 80014f8 + 800159c: bf00 nop + 800159e: e7fd b.n 800159c -080014fc : +080015a0 : /** * @brief This function handles Debug monitor. */ void DebugMon_Handler(void) { - 80014fc: b480 push {r7} - 80014fe: af00 add r7, sp, #0 + 80015a0: b480 push {r7} + 80015a2: af00 add r7, sp, #0 /* USER CODE END DebugMonitor_IRQn 0 */ /* USER CODE BEGIN DebugMonitor_IRQn 1 */ /* USER CODE END DebugMonitor_IRQn 1 */ } - 8001500: bf00 nop - 8001502: 46bd mov sp, r7 - 8001504: f85d 7b04 ldr.w r7, [sp], #4 - 8001508: 4770 bx lr + 80015a4: bf00 nop + 80015a6: 46bd mov sp, r7 + 80015a8: f85d 7b04 ldr.w r7, [sp], #4 + 80015ac: 4770 bx lr ... -0800150c : +080015b0 : /** * @brief This function handles TIM6 global interrupt, DAC1 and DAC2 underrun error interrupts. */ void TIM6_DAC_IRQHandler(void) { - 800150c: b580 push {r7, lr} - 800150e: af00 add r7, sp, #0 + 80015b0: b580 push {r7, lr} + 80015b2: af00 add r7, sp, #0 /* USER CODE BEGIN TIM6_DAC_IRQn 0 */ /* USER CODE END TIM6_DAC_IRQn 0 */ HAL_TIM_IRQHandler(&htim6); - 8001510: 4802 ldr r0, [pc, #8] @ (800151c ) - 8001512: f004 f80b bl 800552c + 80015b4: 4802 ldr r0, [pc, #8] @ (80015c0 ) + 80015b6: f003 ffe7 bl 8005588 /* USER CODE BEGIN TIM6_DAC_IRQn 1 */ /* USER CODE END TIM6_DAC_IRQn 1 */ } - 8001516: bf00 nop - 8001518: bd80 pop {r7, pc} - 800151a: bf00 nop - 800151c: 20000290 .word 0x20000290 + 80015ba: bf00 nop + 80015bc: bd80 pop {r7, pc} + 80015be: bf00 nop + 80015c0: 2000029c .word 0x2000029c -08001520 : +080015c4 : /** * @brief This function handles USB On The Go HS global interrupt. */ void OTG_HS_IRQHandler(void) { - 8001520: b580 push {r7, lr} - 8001522: af00 add r7, sp, #0 + 80015c4: b580 push {r7, lr} + 80015c6: af00 add r7, sp, #0 /* USER CODE BEGIN OTG_HS_IRQn 0 */ /* USER CODE END OTG_HS_IRQn 0 */ HAL_HCD_IRQHandler(&hhcd_USB_OTG_HS); - 8001524: 4802 ldr r0, [pc, #8] @ (8001530 ) - 8001526: f000 fd84 bl 8002032 + 80015c8: 4802 ldr r0, [pc, #8] @ (80015d4 ) + 80015ca: f000 fd60 bl 800208e /* USER CODE BEGIN OTG_HS_IRQn 1 */ /* USER CODE END OTG_HS_IRQn 1 */ } - 800152a: bf00 nop - 800152c: bd80 pop {r7, pc} - 800152e: bf00 nop - 8001530: 200003c8 .word 0x200003c8 + 80015ce: bf00 nop + 80015d0: bd80 pop {r7, pc} + 80015d2: bf00 nop + 80015d4: 200003d4 .word 0x200003d4 -08001534 : +080015d8 : /** * @brief This function handles LTDC global interrupt. */ void LTDC_IRQHandler(void) { - 8001534: b580 push {r7, lr} - 8001536: af00 add r7, sp, #0 + 80015d8: b580 push {r7, lr} + 80015da: af00 add r7, sp, #0 /* USER CODE BEGIN LTDC_IRQn 0 */ /* USER CODE END LTDC_IRQn 0 */ HAL_LTDC_IRQHandler(&hltdc); - 8001538: 4802 ldr r0, [pc, #8] @ (8001544 ) - 800153a: f002 fd7d bl 8004038 + 80015dc: 4802 ldr r0, [pc, #8] @ (80015e8 ) + 80015de: f002 fd59 bl 8004094 /* USER CODE BEGIN LTDC_IRQn 1 */ /* USER CODE END LTDC_IRQn 1 */ } - 800153e: bf00 nop - 8001540: bd80 pop {r7, pc} - 8001542: bf00 nop - 8001544: 200000c8 .word 0x200000c8 + 80015e2: bf00 nop + 80015e4: bd80 pop {r7, pc} + 80015e6: bf00 nop + 80015e8: 200000d4 .word 0x200000d4 -08001548 : +080015ec : /** * @brief This function handles DMA2D global interrupt. */ void DMA2D_IRQHandler(void) { - 8001548: b580 push {r7, lr} - 800154a: af00 add r7, sp, #0 + 80015ec: b580 push {r7, lr} + 80015ee: af00 add r7, sp, #0 /* USER CODE BEGIN DMA2D_IRQn 0 */ /* USER CODE END DMA2D_IRQn 0 */ HAL_DMA2D_IRQHandler(&hdma2d); - 800154c: 4802 ldr r0, [pc, #8] @ (8001558 ) - 800154e: f000 f9ee bl 800192e + 80015f0: 4802 ldr r0, [pc, #8] @ (80015fc ) + 80015f2: f000 f9ca bl 800198a /* USER CODE BEGIN DMA2D_IRQn 1 */ /* USER CODE END DMA2D_IRQn 1 */ } - 8001552: bf00 nop - 8001554: bd80 pop {r7, pc} - 8001556: bf00 nop - 8001558: 20000034 .word 0x20000034 + 80015f6: bf00 nop + 80015f8: bd80 pop {r7, pc} + 80015fa: bf00 nop + 80015fc: 20000040 .word 0x20000040 -0800155c : +08001600 : * configuration. * @param None * @retval None */ void SystemInit(void) { - 800155c: b480 push {r7} - 800155e: af00 add r7, sp, #0 + 8001600: b480 push {r7} + 8001602: af00 add r7, sp, #0 /* FPU settings ------------------------------------------------------------*/ #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ - 8001560: 4b06 ldr r3, [pc, #24] @ (800157c ) - 8001562: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 - 8001566: 4a05 ldr r2, [pc, #20] @ (800157c ) - 8001568: f443 0370 orr.w r3, r3, #15728640 @ 0xf00000 - 800156c: f8c2 3088 str.w r3, [r2, #136] @ 0x88 + 8001604: 4b06 ldr r3, [pc, #24] @ (8001620 ) + 8001606: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 + 800160a: 4a05 ldr r2, [pc, #20] @ (8001620 ) + 800160c: f443 0370 orr.w r3, r3, #15728640 @ 0xf00000 + 8001610: f8c2 3088 str.w r3, [r2, #136] @ 0x88 /* 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 */ } - 8001570: bf00 nop - 8001572: 46bd mov sp, r7 - 8001574: f85d 7b04 ldr.w r7, [sp], #4 - 8001578: 4770 bx lr - 800157a: bf00 nop - 800157c: e000ed00 .word 0xe000ed00 + 8001614: bf00 nop + 8001616: 46bd mov sp, r7 + 8001618: f85d 7b04 ldr.w r7, [sp], #4 + 800161c: 4770 bx lr + 800161e: bf00 nop + 8001620: e000ed00 .word 0xe000ed00 -08001580 : +08001624 : .section .text.Reset_Handler .weak Reset_Handler .type Reset_Handler, %function Reset_Handler: ldr sp, =_estack /* set stack pointer */ - 8001580: f8df d034 ldr.w sp, [pc, #52] @ 80015b8 + 8001624: f8df d034 ldr.w sp, [pc, #52] @ 800165c /* Call the clock system initialization function.*/ bl SystemInit - 8001584: f7ff ffea bl 800155c + 8001628: f7ff ffea bl 8001600 /* Copy the data segment initializers from flash to SRAM */ ldr r0, =_sdata - 8001588: 480c ldr r0, [pc, #48] @ (80015bc ) + 800162c: 480c ldr r0, [pc, #48] @ (8001660 ) ldr r1, =_edata - 800158a: 490d ldr r1, [pc, #52] @ (80015c0 ) + 800162e: 490d ldr r1, [pc, #52] @ (8001664 ) ldr r2, =_sidata - 800158c: 4a0d ldr r2, [pc, #52] @ (80015c4 ) + 8001630: 4a0d ldr r2, [pc, #52] @ (8001668 ) movs r3, #0 - 800158e: 2300 movs r3, #0 + 8001632: 2300 movs r3, #0 b LoopCopyDataInit - 8001590: e002 b.n 8001598 + 8001634: e002 b.n 800163c -08001592 : +08001636 : CopyDataInit: ldr r4, [r2, r3] - 8001592: 58d4 ldr r4, [r2, r3] + 8001636: 58d4 ldr r4, [r2, r3] str r4, [r0, r3] - 8001594: 50c4 str r4, [r0, r3] + 8001638: 50c4 str r4, [r0, r3] adds r3, r3, #4 - 8001596: 3304 adds r3, #4 + 800163a: 3304 adds r3, #4 -08001598 : +0800163c : LoopCopyDataInit: adds r4, r0, r3 - 8001598: 18c4 adds r4, r0, r3 + 800163c: 18c4 adds r4, r0, r3 cmp r4, r1 - 800159a: 428c cmp r4, r1 + 800163e: 428c cmp r4, r1 bcc CopyDataInit - 800159c: d3f9 bcc.n 8001592 + 8001640: d3f9 bcc.n 8001636 /* Zero fill the bss segment. */ ldr r2, =_sbss - 800159e: 4a0a ldr r2, [pc, #40] @ (80015c8 ) + 8001642: 4a0a ldr r2, [pc, #40] @ (800166c ) ldr r4, =_ebss - 80015a0: 4c0a ldr r4, [pc, #40] @ (80015cc ) + 8001644: 4c0a ldr r4, [pc, #40] @ (8001670 ) movs r3, #0 - 80015a2: 2300 movs r3, #0 + 8001646: 2300 movs r3, #0 b LoopFillZerobss - 80015a4: e001 b.n 80015aa + 8001648: e001 b.n 800164e -080015a6 : +0800164a : FillZerobss: str r3, [r2] - 80015a6: 6013 str r3, [r2, #0] + 800164a: 6013 str r3, [r2, #0] adds r2, r2, #4 - 80015a8: 3204 adds r2, #4 + 800164c: 3204 adds r2, #4 -080015aa : +0800164e : LoopFillZerobss: cmp r2, r4 - 80015aa: 42a2 cmp r2, r4 + 800164e: 42a2 cmp r2, r4 bcc FillZerobss - 80015ac: d3fb bcc.n 80015a6 + 8001650: d3fb bcc.n 800164a /* Call static constructors */ bl __libc_init_array - 80015ae: f006 fc77 bl 8007ea0 <__libc_init_array> + 8001652: f006 fc4d bl 8007ef0 <__libc_init_array> /* Call the application's entry point.*/ bl main - 80015b2: f7fe ffec bl 800058e
    + 8001656: f7fe ffe8 bl 800062a
    bx lr - 80015b6: 4770 bx lr + 800165a: 4770 bx lr ldr sp, =_estack /* set stack pointer */ - 80015b8: 20030000 .word 0x20030000 + 800165c: 20030000 .word 0x20030000 ldr r0, =_sdata - 80015bc: 20000000 .word 0x20000000 + 8001660: 20000000 .word 0x20000000 ldr r1, =_edata - 80015c0: 20000010 .word 0x20000010 + 8001664: 20000010 .word 0x20000010 ldr r2, =_sidata - 80015c4: 08007f44 .word 0x08007f44 + 8001668: 08007f94 .word 0x08007f94 ldr r2, =_sbss - 80015c8: 20000010 .word 0x20000010 + 800166c: 20000010 .word 0x20000010 ldr r4, =_ebss - 80015cc: 200007a8 .word 0x200007a8 + 8001670: 200007b4 .word 0x200007b4 -080015d0 : +08001674 : * @retval None */ .section .text.Default_Handler,"ax",%progbits Default_Handler: Infinite_Loop: b Infinite_Loop - 80015d0: e7fe b.n 80015d0 + 8001674: e7fe b.n 8001674 ... -080015d4 : +08001678 : * 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) { - 80015d4: b580 push {r7, lr} - 80015d6: af00 add r7, sp, #0 + 8001678: b580 push {r7, lr} + 800167a: af00 add r7, sp, #0 /* Configure Flash prefetch, Instruction cache, Data cache */ #if (INSTRUCTION_CACHE_ENABLE != 0U) __HAL_FLASH_INSTRUCTION_CACHE_ENABLE(); - 80015d8: 4b0e ldr r3, [pc, #56] @ (8001614 ) - 80015da: 681b ldr r3, [r3, #0] - 80015dc: 4a0d ldr r2, [pc, #52] @ (8001614 ) - 80015de: f443 7300 orr.w r3, r3, #512 @ 0x200 - 80015e2: 6013 str r3, [r2, #0] + 800167c: 4b0e ldr r3, [pc, #56] @ (80016b8 ) + 800167e: 681b ldr r3, [r3, #0] + 8001680: 4a0d ldr r2, [pc, #52] @ (80016b8 ) + 8001682: f443 7300 orr.w r3, r3, #512 @ 0x200 + 8001686: 6013 str r3, [r2, #0] #endif /* INSTRUCTION_CACHE_ENABLE */ #if (DATA_CACHE_ENABLE != 0U) __HAL_FLASH_DATA_CACHE_ENABLE(); - 80015e4: 4b0b ldr r3, [pc, #44] @ (8001614 ) - 80015e6: 681b ldr r3, [r3, #0] - 80015e8: 4a0a ldr r2, [pc, #40] @ (8001614 ) - 80015ea: f443 6380 orr.w r3, r3, #1024 @ 0x400 - 80015ee: 6013 str r3, [r2, #0] + 8001688: 4b0b ldr r3, [pc, #44] @ (80016b8 ) + 800168a: 681b ldr r3, [r3, #0] + 800168c: 4a0a ldr r2, [pc, #40] @ (80016b8 ) + 800168e: f443 6380 orr.w r3, r3, #1024 @ 0x400 + 8001692: 6013 str r3, [r2, #0] #endif /* DATA_CACHE_ENABLE */ #if (PREFETCH_ENABLE != 0U) __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); - 80015f0: 4b08 ldr r3, [pc, #32] @ (8001614 ) - 80015f2: 681b ldr r3, [r3, #0] - 80015f4: 4a07 ldr r2, [pc, #28] @ (8001614 ) - 80015f6: f443 7380 orr.w r3, r3, #256 @ 0x100 - 80015fa: 6013 str r3, [r2, #0] + 8001694: 4b08 ldr r3, [pc, #32] @ (80016b8 ) + 8001696: 681b ldr r3, [r3, #0] + 8001698: 4a07 ldr r2, [pc, #28] @ (80016b8 ) + 800169a: f443 7380 orr.w r3, r3, #256 @ 0x100 + 800169e: 6013 str r3, [r2, #0] #endif /* PREFETCH_ENABLE */ /* Set Interrupt Group Priority */ HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); - 80015fc: 2003 movs r0, #3 - 80015fe: f000 f8fc bl 80017fa + 80016a0: 2003 movs r0, #3 + 80016a2: f000 f8d8 bl 8001856 /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */ HAL_InitTick(TICK_INT_PRIORITY); - 8001602: 2000 movs r0, #0 - 8001604: f7ff feea bl 80013dc + 80016a6: 2000 movs r0, #0 + 80016a8: f7ff feea bl 8001480 /* Init the low level hardware */ HAL_MspInit(); - 8001608: f7ff fb8a bl 8000d20 + 80016ac: f7ff fb8a bl 8000dc4 /* Return function status */ return HAL_OK; - 800160c: 2300 movs r3, #0 + 80016b0: 2300 movs r3, #0 } - 800160e: 4618 mov r0, r3 - 8001610: bd80 pop {r7, pc} - 8001612: bf00 nop - 8001614: 40023c00 .word 0x40023c00 + 80016b2: 4618 mov r0, r3 + 80016b4: bd80 pop {r7, pc} + 80016b6: bf00 nop + 80016b8: 40023c00 .word 0x40023c00 -08001618 : +080016bc : * @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) { - 8001618: b480 push {r7} - 800161a: af00 add r7, sp, #0 + 80016bc: b480 push {r7} + 80016be: af00 add r7, sp, #0 uwTick += uwTickFreq; - 800161c: 4b06 ldr r3, [pc, #24] @ (8001638 ) - 800161e: 781b ldrb r3, [r3, #0] - 8001620: 461a mov r2, r3 - 8001622: 4b06 ldr r3, [pc, #24] @ (800163c ) - 8001624: 681b ldr r3, [r3, #0] - 8001626: 4413 add r3, r2 - 8001628: 4a04 ldr r2, [pc, #16] @ (800163c ) - 800162a: 6013 str r3, [r2, #0] + 80016c0: 4b06 ldr r3, [pc, #24] @ (80016dc ) + 80016c2: 781b ldrb r3, [r3, #0] + 80016c4: 461a mov r2, r3 + 80016c6: 4b06 ldr r3, [pc, #24] @ (80016e0 ) + 80016c8: 681b ldr r3, [r3, #0] + 80016ca: 4413 add r3, r2 + 80016cc: 4a04 ldr r2, [pc, #16] @ (80016e0 ) + 80016ce: 6013 str r3, [r2, #0] } - 800162c: bf00 nop - 800162e: 46bd mov sp, r7 - 8001630: f85d 7b04 ldr.w r7, [sp], #4 - 8001634: 4770 bx lr - 8001636: bf00 nop - 8001638: 20000008 .word 0x20000008 - 800163c: 200002d8 .word 0x200002d8 + 80016d0: bf00 nop + 80016d2: 46bd mov sp, r7 + 80016d4: f85d 7b04 ldr.w r7, [sp], #4 + 80016d8: 4770 bx lr + 80016da: bf00 nop + 80016dc: 20000008 .word 0x20000008 + 80016e0: 200002e4 .word 0x200002e4 -08001640 : +080016e4 : * @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) { - 8001640: b480 push {r7} - 8001642: af00 add r7, sp, #0 + 80016e4: b480 push {r7} + 80016e6: af00 add r7, sp, #0 return uwTick; - 8001644: 4b03 ldr r3, [pc, #12] @ (8001654 ) - 8001646: 681b ldr r3, [r3, #0] + 80016e8: 4b03 ldr r3, [pc, #12] @ (80016f8 ) + 80016ea: 681b ldr r3, [r3, #0] } - 8001648: 4618 mov r0, r3 - 800164a: 46bd mov sp, r7 - 800164c: f85d 7b04 ldr.w r7, [sp], #4 - 8001650: 4770 bx lr - 8001652: bf00 nop - 8001654: 200002d8 .word 0x200002d8 + 80016ec: 4618 mov r0, r3 + 80016ee: 46bd mov sp, r7 + 80016f0: f85d 7b04 ldr.w r7, [sp], #4 + 80016f4: 4770 bx lr + 80016f6: bf00 nop + 80016f8: 200002e4 .word 0x200002e4 -08001658 : - * implementations in user file. - * @param Delay specifies the delay time length, in milliseconds. - * @retval None - */ -__weak void HAL_Delay(uint32_t Delay) -{ - 8001658: b580 push {r7, lr} - 800165a: b084 sub sp, #16 - 800165c: af00 add r7, sp, #0 - 800165e: 6078 str r0, [r7, #4] - uint32_t tickstart = HAL_GetTick(); - 8001660: f7ff ffee bl 8001640 - 8001664: 60b8 str r0, [r7, #8] - uint32_t wait = Delay; - 8001666: 687b ldr r3, [r7, #4] - 8001668: 60fb str r3, [r7, #12] - - /* Add a freq to guarantee minimum wait */ - if (wait < HAL_MAX_DELAY) - 800166a: 68fb ldr r3, [r7, #12] - 800166c: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff - 8001670: d005 beq.n 800167e - { - wait += (uint32_t)(uwTickFreq); - 8001672: 4b0a ldr r3, [pc, #40] @ (800169c ) - 8001674: 781b ldrb r3, [r3, #0] - 8001676: 461a mov r2, r3 - 8001678: 68fb ldr r3, [r7, #12] - 800167a: 4413 add r3, r2 - 800167c: 60fb str r3, [r7, #12] - } - - while((HAL_GetTick() - tickstart) < wait) - 800167e: bf00 nop - 8001680: f7ff ffde bl 8001640 - 8001684: 4602 mov r2, r0 - 8001686: 68bb ldr r3, [r7, #8] - 8001688: 1ad3 subs r3, r2, r3 - 800168a: 68fa ldr r2, [r7, #12] - 800168c: 429a cmp r2, r3 - 800168e: d8f7 bhi.n 8001680 - { - } -} - 8001690: bf00 nop - 8001692: bf00 nop - 8001694: 3710 adds r7, #16 - 8001696: 46bd mov sp, r7 - 8001698: bd80 pop {r7, pc} - 800169a: bf00 nop - 800169c: 20000008 .word 0x20000008 - -080016a0 <__NVIC_SetPriorityGrouping>: +080016fc <__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) { - 80016a0: b480 push {r7} - 80016a2: b085 sub sp, #20 - 80016a4: af00 add r7, sp, #0 - 80016a6: 6078 str r0, [r7, #4] + 80016fc: b480 push {r7} + 80016fe: b085 sub sp, #20 + 8001700: af00 add r7, sp, #0 + 8001702: 6078 str r0, [r7, #4] uint32_t reg_value; uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ - 80016a8: 687b ldr r3, [r7, #4] - 80016aa: f003 0307 and.w r3, r3, #7 - 80016ae: 60fb str r3, [r7, #12] + 8001704: 687b ldr r3, [r7, #4] + 8001706: f003 0307 and.w r3, r3, #7 + 800170a: 60fb str r3, [r7, #12] reg_value = SCB->AIRCR; /* read old register configuration */ - 80016b0: 4b0c ldr r3, [pc, #48] @ (80016e4 <__NVIC_SetPriorityGrouping+0x44>) - 80016b2: 68db ldr r3, [r3, #12] - 80016b4: 60bb str r3, [r7, #8] + 800170c: 4b0c ldr r3, [pc, #48] @ (8001740 <__NVIC_SetPriorityGrouping+0x44>) + 800170e: 68db ldr r3, [r3, #12] + 8001710: 60bb str r3, [r7, #8] reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ - 80016b6: 68ba ldr r2, [r7, #8] - 80016b8: f64f 03ff movw r3, #63743 @ 0xf8ff - 80016bc: 4013 ands r3, r2 - 80016be: 60bb str r3, [r7, #8] + 8001712: 68ba ldr r2, [r7, #8] + 8001714: f64f 03ff movw r3, #63743 @ 0xf8ff + 8001718: 4013 ands r3, r2 + 800171a: 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 */ - 80016c0: 68fb ldr r3, [r7, #12] - 80016c2: 021a lsls r2, r3, #8 + 800171c: 68fb ldr r3, [r7, #12] + 800171e: 021a lsls r2, r3, #8 ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | - 80016c4: 68bb ldr r3, [r7, #8] - 80016c6: 4313 orrs r3, r2 + 8001720: 68bb ldr r3, [r7, #8] + 8001722: 4313 orrs r3, r2 reg_value = (reg_value | - 80016c8: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 - 80016cc: f443 3300 orr.w r3, r3, #131072 @ 0x20000 - 80016d0: 60bb str r3, [r7, #8] + 8001724: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 + 8001728: f443 3300 orr.w r3, r3, #131072 @ 0x20000 + 800172c: 60bb str r3, [r7, #8] SCB->AIRCR = reg_value; - 80016d2: 4a04 ldr r2, [pc, #16] @ (80016e4 <__NVIC_SetPriorityGrouping+0x44>) - 80016d4: 68bb ldr r3, [r7, #8] - 80016d6: 60d3 str r3, [r2, #12] + 800172e: 4a04 ldr r2, [pc, #16] @ (8001740 <__NVIC_SetPriorityGrouping+0x44>) + 8001730: 68bb ldr r3, [r7, #8] + 8001732: 60d3 str r3, [r2, #12] } - 80016d8: bf00 nop - 80016da: 3714 adds r7, #20 - 80016dc: 46bd mov sp, r7 - 80016de: f85d 7b04 ldr.w r7, [sp], #4 - 80016e2: 4770 bx lr - 80016e4: e000ed00 .word 0xe000ed00 + 8001734: bf00 nop + 8001736: 3714 adds r7, #20 + 8001738: 46bd mov sp, r7 + 800173a: f85d 7b04 ldr.w r7, [sp], #4 + 800173e: 4770 bx lr + 8001740: e000ed00 .word 0xe000ed00 -080016e8 <__NVIC_GetPriorityGrouping>: +08001744 <__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) { - 80016e8: b480 push {r7} - 80016ea: af00 add r7, sp, #0 + 8001744: b480 push {r7} + 8001746: af00 add r7, sp, #0 return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); - 80016ec: 4b04 ldr r3, [pc, #16] @ (8001700 <__NVIC_GetPriorityGrouping+0x18>) - 80016ee: 68db ldr r3, [r3, #12] - 80016f0: 0a1b lsrs r3, r3, #8 - 80016f2: f003 0307 and.w r3, r3, #7 + 8001748: 4b04 ldr r3, [pc, #16] @ (800175c <__NVIC_GetPriorityGrouping+0x18>) + 800174a: 68db ldr r3, [r3, #12] + 800174c: 0a1b lsrs r3, r3, #8 + 800174e: f003 0307 and.w r3, r3, #7 } - 80016f6: 4618 mov r0, r3 - 80016f8: 46bd mov sp, r7 - 80016fa: f85d 7b04 ldr.w r7, [sp], #4 - 80016fe: 4770 bx lr - 8001700: e000ed00 .word 0xe000ed00 + 8001752: 4618 mov r0, r3 + 8001754: 46bd mov sp, r7 + 8001756: f85d 7b04 ldr.w r7, [sp], #4 + 800175a: 4770 bx lr + 800175c: e000ed00 .word 0xe000ed00 -08001704 <__NVIC_EnableIRQ>: +08001760 <__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) { - 8001704: b480 push {r7} - 8001706: b083 sub sp, #12 - 8001708: af00 add r7, sp, #0 - 800170a: 4603 mov r3, r0 - 800170c: 71fb strb r3, [r7, #7] + 8001760: b480 push {r7} + 8001762: b083 sub sp, #12 + 8001764: af00 add r7, sp, #0 + 8001766: 4603 mov r3, r0 + 8001768: 71fb strb r3, [r7, #7] if ((int32_t)(IRQn) >= 0) - 800170e: f997 3007 ldrsb.w r3, [r7, #7] - 8001712: 2b00 cmp r3, #0 - 8001714: db0b blt.n 800172e <__NVIC_EnableIRQ+0x2a> + 800176a: f997 3007 ldrsb.w r3, [r7, #7] + 800176e: 2b00 cmp r3, #0 + 8001770: db0b blt.n 800178a <__NVIC_EnableIRQ+0x2a> { __COMPILER_BARRIER(); NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); - 8001716: 79fb ldrb r3, [r7, #7] - 8001718: f003 021f and.w r2, r3, #31 - 800171c: 4907 ldr r1, [pc, #28] @ (800173c <__NVIC_EnableIRQ+0x38>) - 800171e: f997 3007 ldrsb.w r3, [r7, #7] - 8001722: 095b lsrs r3, r3, #5 - 8001724: 2001 movs r0, #1 - 8001726: fa00 f202 lsl.w r2, r0, r2 - 800172a: f841 2023 str.w r2, [r1, r3, lsl #2] + 8001772: 79fb ldrb r3, [r7, #7] + 8001774: f003 021f and.w r2, r3, #31 + 8001778: 4907 ldr r1, [pc, #28] @ (8001798 <__NVIC_EnableIRQ+0x38>) + 800177a: f997 3007 ldrsb.w r3, [r7, #7] + 800177e: 095b lsrs r3, r3, #5 + 8001780: 2001 movs r0, #1 + 8001782: fa00 f202 lsl.w r2, r0, r2 + 8001786: f841 2023 str.w r2, [r1, r3, lsl #2] __COMPILER_BARRIER(); } } - 800172e: bf00 nop - 8001730: 370c adds r7, #12 - 8001732: 46bd mov sp, r7 - 8001734: f85d 7b04 ldr.w r7, [sp], #4 - 8001738: 4770 bx lr - 800173a: bf00 nop - 800173c: e000e100 .word 0xe000e100 + 800178a: bf00 nop + 800178c: 370c adds r7, #12 + 800178e: 46bd mov sp, r7 + 8001790: f85d 7b04 ldr.w r7, [sp], #4 + 8001794: 4770 bx lr + 8001796: bf00 nop + 8001798: e000e100 .word 0xe000e100 -08001740 <__NVIC_SetPriority>: +0800179c <__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) { - 8001740: b480 push {r7} - 8001742: b083 sub sp, #12 - 8001744: af00 add r7, sp, #0 - 8001746: 4603 mov r3, r0 - 8001748: 6039 str r1, [r7, #0] - 800174a: 71fb strb r3, [r7, #7] + 800179c: b480 push {r7} + 800179e: b083 sub sp, #12 + 80017a0: af00 add r7, sp, #0 + 80017a2: 4603 mov r3, r0 + 80017a4: 6039 str r1, [r7, #0] + 80017a6: 71fb strb r3, [r7, #7] if ((int32_t)(IRQn) >= 0) - 800174c: f997 3007 ldrsb.w r3, [r7, #7] - 8001750: 2b00 cmp r3, #0 - 8001752: db0a blt.n 800176a <__NVIC_SetPriority+0x2a> + 80017a8: f997 3007 ldrsb.w r3, [r7, #7] + 80017ac: 2b00 cmp r3, #0 + 80017ae: db0a blt.n 80017c6 <__NVIC_SetPriority+0x2a> { NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); - 8001754: 683b ldr r3, [r7, #0] - 8001756: b2da uxtb r2, r3 - 8001758: 490c ldr r1, [pc, #48] @ (800178c <__NVIC_SetPriority+0x4c>) - 800175a: f997 3007 ldrsb.w r3, [r7, #7] - 800175e: 0112 lsls r2, r2, #4 - 8001760: b2d2 uxtb r2, r2 - 8001762: 440b add r3, r1 - 8001764: f883 2300 strb.w r2, [r3, #768] @ 0x300 + 80017b0: 683b ldr r3, [r7, #0] + 80017b2: b2da uxtb r2, r3 + 80017b4: 490c ldr r1, [pc, #48] @ (80017e8 <__NVIC_SetPriority+0x4c>) + 80017b6: f997 3007 ldrsb.w r3, [r7, #7] + 80017ba: 0112 lsls r2, r2, #4 + 80017bc: b2d2 uxtb r2, r2 + 80017be: 440b add r3, r1 + 80017c0: 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); } } - 8001768: e00a b.n 8001780 <__NVIC_SetPriority+0x40> + 80017c4: e00a b.n 80017dc <__NVIC_SetPriority+0x40> SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); - 800176a: 683b ldr r3, [r7, #0] - 800176c: b2da uxtb r2, r3 - 800176e: 4908 ldr r1, [pc, #32] @ (8001790 <__NVIC_SetPriority+0x50>) - 8001770: 79fb ldrb r3, [r7, #7] - 8001772: f003 030f and.w r3, r3, #15 - 8001776: 3b04 subs r3, #4 - 8001778: 0112 lsls r2, r2, #4 - 800177a: b2d2 uxtb r2, r2 - 800177c: 440b add r3, r1 - 800177e: 761a strb r2, [r3, #24] + 80017c6: 683b ldr r3, [r7, #0] + 80017c8: b2da uxtb r2, r3 + 80017ca: 4908 ldr r1, [pc, #32] @ (80017ec <__NVIC_SetPriority+0x50>) + 80017cc: 79fb ldrb r3, [r7, #7] + 80017ce: f003 030f and.w r3, r3, #15 + 80017d2: 3b04 subs r3, #4 + 80017d4: 0112 lsls r2, r2, #4 + 80017d6: b2d2 uxtb r2, r2 + 80017d8: 440b add r3, r1 + 80017da: 761a strb r2, [r3, #24] } - 8001780: bf00 nop - 8001782: 370c adds r7, #12 - 8001784: 46bd mov sp, r7 - 8001786: f85d 7b04 ldr.w r7, [sp], #4 - 800178a: 4770 bx lr - 800178c: e000e100 .word 0xe000e100 - 8001790: e000ed00 .word 0xe000ed00 + 80017dc: bf00 nop + 80017de: 370c adds r7, #12 + 80017e0: 46bd mov sp, r7 + 80017e2: f85d 7b04 ldr.w r7, [sp], #4 + 80017e6: 4770 bx lr + 80017e8: e000e100 .word 0xe000e100 + 80017ec: e000ed00 .word 0xe000ed00 -08001794 : +080017f0 : \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) { - 8001794: b480 push {r7} - 8001796: b089 sub sp, #36 @ 0x24 - 8001798: af00 add r7, sp, #0 - 800179a: 60f8 str r0, [r7, #12] - 800179c: 60b9 str r1, [r7, #8] - 800179e: 607a str r2, [r7, #4] + 80017f0: b480 push {r7} + 80017f2: b089 sub sp, #36 @ 0x24 + 80017f4: af00 add r7, sp, #0 + 80017f6: 60f8 str r0, [r7, #12] + 80017f8: 60b9 str r1, [r7, #8] + 80017fa: 607a str r2, [r7, #4] uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ - 80017a0: 68fb ldr r3, [r7, #12] - 80017a2: f003 0307 and.w r3, r3, #7 - 80017a6: 61fb str r3, [r7, #28] + 80017fc: 68fb ldr r3, [r7, #12] + 80017fe: f003 0307 and.w r3, r3, #7 + 8001802: 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); - 80017a8: 69fb ldr r3, [r7, #28] - 80017aa: f1c3 0307 rsb r3, r3, #7 - 80017ae: 2b04 cmp r3, #4 - 80017b0: bf28 it cs - 80017b2: 2304 movcs r3, #4 - 80017b4: 61bb str r3, [r7, #24] + 8001804: 69fb ldr r3, [r7, #28] + 8001806: f1c3 0307 rsb r3, r3, #7 + 800180a: 2b04 cmp r3, #4 + 800180c: bf28 it cs + 800180e: 2304 movcs r3, #4 + 8001810: 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)); - 80017b6: 69fb ldr r3, [r7, #28] - 80017b8: 3304 adds r3, #4 - 80017ba: 2b06 cmp r3, #6 - 80017bc: d902 bls.n 80017c4 - 80017be: 69fb ldr r3, [r7, #28] - 80017c0: 3b03 subs r3, #3 - 80017c2: e000 b.n 80017c6 - 80017c4: 2300 movs r3, #0 - 80017c6: 617b str r3, [r7, #20] + 8001812: 69fb ldr r3, [r7, #28] + 8001814: 3304 adds r3, #4 + 8001816: 2b06 cmp r3, #6 + 8001818: d902 bls.n 8001820 + 800181a: 69fb ldr r3, [r7, #28] + 800181c: 3b03 subs r3, #3 + 800181e: e000 b.n 8001822 + 8001820: 2300 movs r3, #0 + 8001822: 617b str r3, [r7, #20] return ( ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | - 80017c8: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff - 80017cc: 69bb ldr r3, [r7, #24] - 80017ce: fa02 f303 lsl.w r3, r2, r3 - 80017d2: 43da mvns r2, r3 - 80017d4: 68bb ldr r3, [r7, #8] - 80017d6: 401a ands r2, r3 - 80017d8: 697b ldr r3, [r7, #20] - 80017da: 409a lsls r2, r3 + 8001824: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 8001828: 69bb ldr r3, [r7, #24] + 800182a: fa02 f303 lsl.w r3, r2, r3 + 800182e: 43da mvns r2, r3 + 8001830: 68bb ldr r3, [r7, #8] + 8001832: 401a ands r2, r3 + 8001834: 697b ldr r3, [r7, #20] + 8001836: 409a lsls r2, r3 ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) - 80017dc: f04f 31ff mov.w r1, #4294967295 @ 0xffffffff - 80017e0: 697b ldr r3, [r7, #20] - 80017e2: fa01 f303 lsl.w r3, r1, r3 - 80017e6: 43d9 mvns r1, r3 - 80017e8: 687b ldr r3, [r7, #4] - 80017ea: 400b ands r3, r1 + 8001838: f04f 31ff mov.w r1, #4294967295 @ 0xffffffff + 800183c: 697b ldr r3, [r7, #20] + 800183e: fa01 f303 lsl.w r3, r1, r3 + 8001842: 43d9 mvns r1, r3 + 8001844: 687b ldr r3, [r7, #4] + 8001846: 400b ands r3, r1 ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | - 80017ec: 4313 orrs r3, r2 + 8001848: 4313 orrs r3, r2 ); } - 80017ee: 4618 mov r0, r3 - 80017f0: 3724 adds r7, #36 @ 0x24 - 80017f2: 46bd mov sp, r7 - 80017f4: f85d 7b04 ldr.w r7, [sp], #4 - 80017f8: 4770 bx lr + 800184a: 4618 mov r0, r3 + 800184c: 3724 adds r7, #36 @ 0x24 + 800184e: 46bd mov sp, r7 + 8001850: f85d 7b04 ldr.w r7, [sp], #4 + 8001854: 4770 bx lr -080017fa : +08001856 : * @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) { - 80017fa: b580 push {r7, lr} - 80017fc: b082 sub sp, #8 - 80017fe: af00 add r7, sp, #0 - 8001800: 6078 str r0, [r7, #4] + 8001856: b580 push {r7, lr} + 8001858: b082 sub sp, #8 + 800185a: af00 add r7, sp, #0 + 800185c: 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); - 8001802: 6878 ldr r0, [r7, #4] - 8001804: f7ff ff4c bl 80016a0 <__NVIC_SetPriorityGrouping> + 800185e: 6878 ldr r0, [r7, #4] + 8001860: f7ff ff4c bl 80016fc <__NVIC_SetPriorityGrouping> } - 8001808: bf00 nop - 800180a: 3708 adds r7, #8 - 800180c: 46bd mov sp, r7 - 800180e: bd80 pop {r7, pc} + 8001864: bf00 nop + 8001866: 3708 adds r7, #8 + 8001868: 46bd mov sp, r7 + 800186a: bd80 pop {r7, pc} -08001810 : +0800186c : * 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) { - 8001810: b580 push {r7, lr} - 8001812: b086 sub sp, #24 - 8001814: af00 add r7, sp, #0 - 8001816: 4603 mov r3, r0 - 8001818: 60b9 str r1, [r7, #8] - 800181a: 607a str r2, [r7, #4] - 800181c: 73fb strb r3, [r7, #15] + 800186c: b580 push {r7, lr} + 800186e: b086 sub sp, #24 + 8001870: af00 add r7, sp, #0 + 8001872: 4603 mov r3, r0 + 8001874: 60b9 str r1, [r7, #8] + 8001876: 607a str r2, [r7, #4] + 8001878: 73fb strb r3, [r7, #15] uint32_t prioritygroup = 0x00U; - 800181e: 2300 movs r3, #0 - 8001820: 617b str r3, [r7, #20] + 800187a: 2300 movs r3, #0 + 800187c: 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(); - 8001822: f7ff ff61 bl 80016e8 <__NVIC_GetPriorityGrouping> - 8001826: 6178 str r0, [r7, #20] + 800187e: f7ff ff61 bl 8001744 <__NVIC_GetPriorityGrouping> + 8001882: 6178 str r0, [r7, #20] NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); - 8001828: 687a ldr r2, [r7, #4] - 800182a: 68b9 ldr r1, [r7, #8] - 800182c: 6978 ldr r0, [r7, #20] - 800182e: f7ff ffb1 bl 8001794 - 8001832: 4602 mov r2, r0 - 8001834: f997 300f ldrsb.w r3, [r7, #15] - 8001838: 4611 mov r1, r2 - 800183a: 4618 mov r0, r3 - 800183c: f7ff ff80 bl 8001740 <__NVIC_SetPriority> + 8001884: 687a ldr r2, [r7, #4] + 8001886: 68b9 ldr r1, [r7, #8] + 8001888: 6978 ldr r0, [r7, #20] + 800188a: f7ff ffb1 bl 80017f0 + 800188e: 4602 mov r2, r0 + 8001890: f997 300f ldrsb.w r3, [r7, #15] + 8001894: 4611 mov r1, r2 + 8001896: 4618 mov r0, r3 + 8001898: f7ff ff80 bl 800179c <__NVIC_SetPriority> } - 8001840: bf00 nop - 8001842: 3718 adds r7, #24 - 8001844: 46bd mov sp, r7 - 8001846: bd80 pop {r7, pc} + 800189c: bf00 nop + 800189e: 3718 adds r7, #24 + 80018a0: 46bd mov sp, r7 + 80018a2: bd80 pop {r7, pc} -08001848 : +080018a4 : * 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 (stm32f4xxxx.h)) * @retval None */ void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) { - 8001848: b580 push {r7, lr} - 800184a: b082 sub sp, #8 - 800184c: af00 add r7, sp, #0 - 800184e: 4603 mov r3, r0 - 8001850: 71fb strb r3, [r7, #7] + 80018a4: b580 push {r7, lr} + 80018a6: b082 sub sp, #8 + 80018a8: af00 add r7, sp, #0 + 80018aa: 4603 mov r3, r0 + 80018ac: 71fb strb r3, [r7, #7] /* Check the parameters */ assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); /* Enable interrupt */ NVIC_EnableIRQ(IRQn); - 8001852: f997 3007 ldrsb.w r3, [r7, #7] - 8001856: 4618 mov r0, r3 - 8001858: f7ff ff54 bl 8001704 <__NVIC_EnableIRQ> + 80018ae: f997 3007 ldrsb.w r3, [r7, #7] + 80018b2: 4618 mov r0, r3 + 80018b4: f7ff ff54 bl 8001760 <__NVIC_EnableIRQ> } - 800185c: bf00 nop - 800185e: 3708 adds r7, #8 - 8001860: 46bd mov sp, r7 - 8001862: bd80 pop {r7, pc} + 80018b8: bf00 nop + 80018ba: 3708 adds r7, #8 + 80018bc: 46bd mov sp, r7 + 80018be: bd80 pop {r7, pc} -08001864 : +080018c0 : * parameters in the CRC_InitTypeDef and create the associated handle. * @param hcrc CRC handle * @retval HAL status */ HAL_StatusTypeDef HAL_CRC_Init(CRC_HandleTypeDef *hcrc) { - 8001864: b580 push {r7, lr} - 8001866: b082 sub sp, #8 - 8001868: af00 add r7, sp, #0 - 800186a: 6078 str r0, [r7, #4] + 80018c0: b580 push {r7, lr} + 80018c2: b082 sub sp, #8 + 80018c4: af00 add r7, sp, #0 + 80018c6: 6078 str r0, [r7, #4] /* Check the CRC handle allocation */ if (hcrc == NULL) - 800186c: 687b ldr r3, [r7, #4] - 800186e: 2b00 cmp r3, #0 - 8001870: d101 bne.n 8001876 + 80018c8: 687b ldr r3, [r7, #4] + 80018ca: 2b00 cmp r3, #0 + 80018cc: d101 bne.n 80018d2 { return HAL_ERROR; - 8001872: 2301 movs r3, #1 - 8001874: e00e b.n 8001894 + 80018ce: 2301 movs r3, #1 + 80018d0: e00e b.n 80018f0 } /* Check the parameters */ assert_param(IS_CRC_ALL_INSTANCE(hcrc->Instance)); if (hcrc->State == HAL_CRC_STATE_RESET) - 8001876: 687b ldr r3, [r7, #4] - 8001878: 795b ldrb r3, [r3, #5] - 800187a: b2db uxtb r3, r3 - 800187c: 2b00 cmp r3, #0 - 800187e: d105 bne.n 800188c + 80018d2: 687b ldr r3, [r7, #4] + 80018d4: 795b ldrb r3, [r3, #5] + 80018d6: b2db uxtb r3, r3 + 80018d8: 2b00 cmp r3, #0 + 80018da: d105 bne.n 80018e8 { /* Allocate lock resource and initialize it */ hcrc->Lock = HAL_UNLOCKED; - 8001880: 687b ldr r3, [r7, #4] - 8001882: 2200 movs r2, #0 - 8001884: 711a strb r2, [r3, #4] + 80018dc: 687b ldr r3, [r7, #4] + 80018de: 2200 movs r2, #0 + 80018e0: 711a strb r2, [r3, #4] /* Init the low level hardware */ HAL_CRC_MspInit(hcrc); - 8001886: 6878 ldr r0, [r7, #4] - 8001888: f7ff fa76 bl 8000d78 + 80018e2: 6878 ldr r0, [r7, #4] + 80018e4: f7ff fa9a bl 8000e1c } /* Change CRC peripheral state */ hcrc->State = HAL_CRC_STATE_READY; - 800188c: 687b ldr r3, [r7, #4] - 800188e: 2201 movs r2, #1 - 8001890: 715a strb r2, [r3, #5] + 80018e8: 687b ldr r3, [r7, #4] + 80018ea: 2201 movs r2, #1 + 80018ec: 715a strb r2, [r3, #5] /* Return function status */ return HAL_OK; - 8001892: 2300 movs r3, #0 + 80018ee: 2300 movs r3, #0 } - 8001894: 4618 mov r0, r3 - 8001896: 3708 adds r7, #8 - 8001898: 46bd mov sp, r7 - 800189a: bd80 pop {r7, pc} + 80018f0: 4618 mov r0, r3 + 80018f2: 3708 adds r7, #8 + 80018f4: 46bd mov sp, r7 + 80018f6: bd80 pop {r7, pc} -0800189c : +080018f8 : * @param hdma2d pointer to a DMA2D_HandleTypeDef structure that contains * the configuration information for the DMA2D. * @retval HAL status */ HAL_StatusTypeDef HAL_DMA2D_Init(DMA2D_HandleTypeDef *hdma2d) { - 800189c: b580 push {r7, lr} - 800189e: b082 sub sp, #8 - 80018a0: af00 add r7, sp, #0 - 80018a2: 6078 str r0, [r7, #4] + 80018f8: b580 push {r7, lr} + 80018fa: b082 sub sp, #8 + 80018fc: af00 add r7, sp, #0 + 80018fe: 6078 str r0, [r7, #4] /* Check the DMA2D peripheral state */ if (hdma2d == NULL) - 80018a4: 687b ldr r3, [r7, #4] - 80018a6: 2b00 cmp r3, #0 - 80018a8: d101 bne.n 80018ae + 8001900: 687b ldr r3, [r7, #4] + 8001902: 2b00 cmp r3, #0 + 8001904: d101 bne.n 800190a { return HAL_ERROR; - 80018aa: 2301 movs r3, #1 - 80018ac: e03b b.n 8001926 + 8001906: 2301 movs r3, #1 + 8001908: e03b b.n 8001982 /* Init the low level hardware */ hdma2d->MspInitCallback(hdma2d); } #else if (hdma2d->State == HAL_DMA2D_STATE_RESET) - 80018ae: 687b ldr r3, [r7, #4] - 80018b0: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 - 80018b4: b2db uxtb r3, r3 - 80018b6: 2b00 cmp r3, #0 - 80018b8: d106 bne.n 80018c8 + 800190a: 687b ldr r3, [r7, #4] + 800190c: f893 3039 ldrb.w r3, [r3, #57] @ 0x39 + 8001910: b2db uxtb r3, r3 + 8001912: 2b00 cmp r3, #0 + 8001914: d106 bne.n 8001924 { /* Allocate lock resource and initialize it */ hdma2d->Lock = HAL_UNLOCKED; - 80018ba: 687b ldr r3, [r7, #4] - 80018bc: 2200 movs r2, #0 - 80018be: f883 2038 strb.w r2, [r3, #56] @ 0x38 + 8001916: 687b ldr r3, [r7, #4] + 8001918: 2200 movs r2, #0 + 800191a: f883 2038 strb.w r2, [r3, #56] @ 0x38 /* Init the low level hardware */ HAL_DMA2D_MspInit(hdma2d); - 80018c2: 6878 ldr r0, [r7, #4] - 80018c4: f7ff fa7a bl 8000dbc + 800191e: 6878 ldr r0, [r7, #4] + 8001920: f7ff fa9e bl 8000e60 } #endif /* (USE_HAL_DMA2D_REGISTER_CALLBACKS) */ /* Change DMA2D peripheral state */ hdma2d->State = HAL_DMA2D_STATE_BUSY; - 80018c8: 687b ldr r3, [r7, #4] - 80018ca: 2202 movs r2, #2 - 80018cc: f883 2039 strb.w r2, [r3, #57] @ 0x39 + 8001924: 687b ldr r3, [r7, #4] + 8001926: 2202 movs r2, #2 + 8001928: f883 2039 strb.w r2, [r3, #57] @ 0x39 /* DMA2D CR register configuration -------------------------------------------*/ MODIFY_REG(hdma2d->Instance->CR, DMA2D_CR_MODE, hdma2d->Init.Mode); - 80018d0: 687b ldr r3, [r7, #4] - 80018d2: 681b ldr r3, [r3, #0] - 80018d4: 681b ldr r3, [r3, #0] - 80018d6: f423 3140 bic.w r1, r3, #196608 @ 0x30000 - 80018da: 687b ldr r3, [r7, #4] - 80018dc: 685a ldr r2, [r3, #4] - 80018de: 687b ldr r3, [r7, #4] - 80018e0: 681b ldr r3, [r3, #0] - 80018e2: 430a orrs r2, r1 - 80018e4: 601a str r2, [r3, #0] + 800192c: 687b ldr r3, [r7, #4] + 800192e: 681b ldr r3, [r3, #0] + 8001930: 681b ldr r3, [r3, #0] + 8001932: f423 3140 bic.w r1, r3, #196608 @ 0x30000 + 8001936: 687b ldr r3, [r7, #4] + 8001938: 685a ldr r2, [r3, #4] + 800193a: 687b ldr r3, [r7, #4] + 800193c: 681b ldr r3, [r3, #0] + 800193e: 430a orrs r2, r1 + 8001940: 601a str r2, [r3, #0] /* DMA2D OPFCCR register configuration ---------------------------------------*/ MODIFY_REG(hdma2d->Instance->OPFCCR, DMA2D_OPFCCR_CM, hdma2d->Init.ColorMode); - 80018e6: 687b ldr r3, [r7, #4] - 80018e8: 681b ldr r3, [r3, #0] - 80018ea: 6b5b ldr r3, [r3, #52] @ 0x34 - 80018ec: f023 0107 bic.w r1, r3, #7 - 80018f0: 687b ldr r3, [r7, #4] - 80018f2: 689a ldr r2, [r3, #8] - 80018f4: 687b ldr r3, [r7, #4] - 80018f6: 681b ldr r3, [r3, #0] - 80018f8: 430a orrs r2, r1 - 80018fa: 635a str r2, [r3, #52] @ 0x34 + 8001942: 687b ldr r3, [r7, #4] + 8001944: 681b ldr r3, [r3, #0] + 8001946: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001948: f023 0107 bic.w r1, r3, #7 + 800194c: 687b ldr r3, [r7, #4] + 800194e: 689a ldr r2, [r3, #8] + 8001950: 687b ldr r3, [r7, #4] + 8001952: 681b ldr r3, [r3, #0] + 8001954: 430a orrs r2, r1 + 8001956: 635a str r2, [r3, #52] @ 0x34 /* DMA2D OOR register configuration ------------------------------------------*/ MODIFY_REG(hdma2d->Instance->OOR, DMA2D_OOR_LO, hdma2d->Init.OutputOffset); - 80018fc: 687b ldr r3, [r7, #4] - 80018fe: 681b ldr r3, [r3, #0] - 8001900: 6c1b ldr r3, [r3, #64] @ 0x40 - 8001902: f423 537f bic.w r3, r3, #16320 @ 0x3fc0 - 8001906: f023 033f bic.w r3, r3, #63 @ 0x3f - 800190a: 687a ldr r2, [r7, #4] - 800190c: 68d1 ldr r1, [r2, #12] - 800190e: 687a ldr r2, [r7, #4] - 8001910: 6812 ldr r2, [r2, #0] - 8001912: 430b orrs r3, r1 - 8001914: 6413 str r3, [r2, #64] @ 0x40 + 8001958: 687b ldr r3, [r7, #4] + 800195a: 681b ldr r3, [r3, #0] + 800195c: 6c1b ldr r3, [r3, #64] @ 0x40 + 800195e: f423 537f bic.w r3, r3, #16320 @ 0x3fc0 + 8001962: f023 033f bic.w r3, r3, #63 @ 0x3f + 8001966: 687a ldr r2, [r7, #4] + 8001968: 68d1 ldr r1, [r2, #12] + 800196a: 687a ldr r2, [r7, #4] + 800196c: 6812 ldr r2, [r2, #0] + 800196e: 430b orrs r3, r1 + 8001970: 6413 str r3, [r2, #64] @ 0x40 /* Update error code */ hdma2d->ErrorCode = HAL_DMA2D_ERROR_NONE; - 8001916: 687b ldr r3, [r7, #4] - 8001918: 2200 movs r2, #0 - 800191a: 63da str r2, [r3, #60] @ 0x3c + 8001972: 687b ldr r3, [r7, #4] + 8001974: 2200 movs r2, #0 + 8001976: 63da str r2, [r3, #60] @ 0x3c /* Initialize the DMA2D state*/ hdma2d->State = HAL_DMA2D_STATE_READY; - 800191c: 687b ldr r3, [r7, #4] - 800191e: 2201 movs r2, #1 - 8001920: f883 2039 strb.w r2, [r3, #57] @ 0x39 + 8001978: 687b ldr r3, [r7, #4] + 800197a: 2201 movs r2, #1 + 800197c: f883 2039 strb.w r2, [r3, #57] @ 0x39 return HAL_OK; - 8001924: 2300 movs r3, #0 + 8001980: 2300 movs r3, #0 } - 8001926: 4618 mov r0, r3 - 8001928: 3708 adds r7, #8 - 800192a: 46bd mov sp, r7 - 800192c: bd80 pop {r7, pc} + 8001982: 4618 mov r0, r3 + 8001984: 3708 adds r7, #8 + 8001986: 46bd mov sp, r7 + 8001988: bd80 pop {r7, pc} -0800192e : +0800198a : * @param hdma2d Pointer to a DMA2D_HandleTypeDef structure that contains * the configuration information for the DMA2D. * @retval HAL status */ void HAL_DMA2D_IRQHandler(DMA2D_HandleTypeDef *hdma2d) { - 800192e: b580 push {r7, lr} - 8001930: b084 sub sp, #16 - 8001932: af00 add r7, sp, #0 - 8001934: 6078 str r0, [r7, #4] + 800198a: b580 push {r7, lr} + 800198c: b084 sub sp, #16 + 800198e: af00 add r7, sp, #0 + 8001990: 6078 str r0, [r7, #4] uint32_t isrflags = READ_REG(hdma2d->Instance->ISR); - 8001936: 687b ldr r3, [r7, #4] - 8001938: 681b ldr r3, [r3, #0] - 800193a: 685b ldr r3, [r3, #4] - 800193c: 60fb str r3, [r7, #12] + 8001992: 687b ldr r3, [r7, #4] + 8001994: 681b ldr r3, [r3, #0] + 8001996: 685b ldr r3, [r3, #4] + 8001998: 60fb str r3, [r7, #12] uint32_t crflags = READ_REG(hdma2d->Instance->CR); - 800193e: 687b ldr r3, [r7, #4] - 8001940: 681b ldr r3, [r3, #0] - 8001942: 681b ldr r3, [r3, #0] - 8001944: 60bb str r3, [r7, #8] + 800199a: 687b ldr r3, [r7, #4] + 800199c: 681b ldr r3, [r3, #0] + 800199e: 681b ldr r3, [r3, #0] + 80019a0: 60bb str r3, [r7, #8] /* Transfer Error Interrupt management ***************************************/ if ((isrflags & DMA2D_FLAG_TE) != 0U) - 8001946: 68fb ldr r3, [r7, #12] - 8001948: f003 0301 and.w r3, r3, #1 - 800194c: 2b00 cmp r3, #0 - 800194e: d026 beq.n 800199e + 80019a2: 68fb ldr r3, [r7, #12] + 80019a4: f003 0301 and.w r3, r3, #1 + 80019a8: 2b00 cmp r3, #0 + 80019aa: d026 beq.n 80019fa { if ((crflags & DMA2D_IT_TE) != 0U) - 8001950: 68bb ldr r3, [r7, #8] - 8001952: f403 7380 and.w r3, r3, #256 @ 0x100 - 8001956: 2b00 cmp r3, #0 - 8001958: d021 beq.n 800199e + 80019ac: 68bb ldr r3, [r7, #8] + 80019ae: f403 7380 and.w r3, r3, #256 @ 0x100 + 80019b2: 2b00 cmp r3, #0 + 80019b4: d021 beq.n 80019fa { /* Disable the transfer Error interrupt */ __HAL_DMA2D_DISABLE_IT(hdma2d, DMA2D_IT_TE); - 800195a: 687b ldr r3, [r7, #4] - 800195c: 681b ldr r3, [r3, #0] - 800195e: 681a ldr r2, [r3, #0] - 8001960: 687b ldr r3, [r7, #4] - 8001962: 681b ldr r3, [r3, #0] - 8001964: f422 7280 bic.w r2, r2, #256 @ 0x100 - 8001968: 601a str r2, [r3, #0] + 80019b6: 687b ldr r3, [r7, #4] + 80019b8: 681b ldr r3, [r3, #0] + 80019ba: 681a ldr r2, [r3, #0] + 80019bc: 687b ldr r3, [r7, #4] + 80019be: 681b ldr r3, [r3, #0] + 80019c0: f422 7280 bic.w r2, r2, #256 @ 0x100 + 80019c4: 601a str r2, [r3, #0] /* Update error code */ hdma2d->ErrorCode |= HAL_DMA2D_ERROR_TE; - 800196a: 687b ldr r3, [r7, #4] - 800196c: 6bdb ldr r3, [r3, #60] @ 0x3c - 800196e: f043 0201 orr.w r2, r3, #1 - 8001972: 687b ldr r3, [r7, #4] - 8001974: 63da str r2, [r3, #60] @ 0x3c + 80019c6: 687b ldr r3, [r7, #4] + 80019c8: 6bdb ldr r3, [r3, #60] @ 0x3c + 80019ca: f043 0201 orr.w r2, r3, #1 + 80019ce: 687b ldr r3, [r7, #4] + 80019d0: 63da str r2, [r3, #60] @ 0x3c /* Clear the transfer error flag */ __HAL_DMA2D_CLEAR_FLAG(hdma2d, DMA2D_FLAG_TE); - 8001976: 687b ldr r3, [r7, #4] - 8001978: 681b ldr r3, [r3, #0] - 800197a: 2201 movs r2, #1 - 800197c: 609a str r2, [r3, #8] + 80019d2: 687b ldr r3, [r7, #4] + 80019d4: 681b ldr r3, [r3, #0] + 80019d6: 2201 movs r2, #1 + 80019d8: 609a str r2, [r3, #8] /* Change DMA2D state */ hdma2d->State = HAL_DMA2D_STATE_ERROR; - 800197e: 687b ldr r3, [r7, #4] - 8001980: 2204 movs r2, #4 - 8001982: f883 2039 strb.w r2, [r3, #57] @ 0x39 + 80019da: 687b ldr r3, [r7, #4] + 80019dc: 2204 movs r2, #4 + 80019de: f883 2039 strb.w r2, [r3, #57] @ 0x39 /* Process Unlocked */ __HAL_UNLOCK(hdma2d); - 8001986: 687b ldr r3, [r7, #4] - 8001988: 2200 movs r2, #0 - 800198a: f883 2038 strb.w r2, [r3, #56] @ 0x38 + 80019e2: 687b ldr r3, [r7, #4] + 80019e4: 2200 movs r2, #0 + 80019e6: f883 2038 strb.w r2, [r3, #56] @ 0x38 if (hdma2d->XferErrorCallback != NULL) - 800198e: 687b ldr r3, [r7, #4] - 8001990: 695b ldr r3, [r3, #20] - 8001992: 2b00 cmp r3, #0 - 8001994: d003 beq.n 800199e + 80019ea: 687b ldr r3, [r7, #4] + 80019ec: 695b ldr r3, [r3, #20] + 80019ee: 2b00 cmp r3, #0 + 80019f0: d003 beq.n 80019fa { /* Transfer error Callback */ hdma2d->XferErrorCallback(hdma2d); - 8001996: 687b ldr r3, [r7, #4] - 8001998: 695b ldr r3, [r3, #20] - 800199a: 6878 ldr r0, [r7, #4] - 800199c: 4798 blx r3 + 80019f2: 687b ldr r3, [r7, #4] + 80019f4: 695b ldr r3, [r3, #20] + 80019f6: 6878 ldr r0, [r7, #4] + 80019f8: 4798 blx r3 } } } /* Configuration Error Interrupt management **********************************/ if ((isrflags & DMA2D_FLAG_CE) != 0U) - 800199e: 68fb ldr r3, [r7, #12] - 80019a0: f003 0320 and.w r3, r3, #32 - 80019a4: 2b00 cmp r3, #0 - 80019a6: d026 beq.n 80019f6 + 80019fa: 68fb ldr r3, [r7, #12] + 80019fc: f003 0320 and.w r3, r3, #32 + 8001a00: 2b00 cmp r3, #0 + 8001a02: d026 beq.n 8001a52 { if ((crflags & DMA2D_IT_CE) != 0U) - 80019a8: 68bb ldr r3, [r7, #8] - 80019aa: f403 5300 and.w r3, r3, #8192 @ 0x2000 - 80019ae: 2b00 cmp r3, #0 - 80019b0: d021 beq.n 80019f6 + 8001a04: 68bb ldr r3, [r7, #8] + 8001a06: f403 5300 and.w r3, r3, #8192 @ 0x2000 + 8001a0a: 2b00 cmp r3, #0 + 8001a0c: d021 beq.n 8001a52 { /* Disable the Configuration Error interrupt */ __HAL_DMA2D_DISABLE_IT(hdma2d, DMA2D_IT_CE); - 80019b2: 687b ldr r3, [r7, #4] - 80019b4: 681b ldr r3, [r3, #0] - 80019b6: 681a ldr r2, [r3, #0] - 80019b8: 687b ldr r3, [r7, #4] - 80019ba: 681b ldr r3, [r3, #0] - 80019bc: f422 5200 bic.w r2, r2, #8192 @ 0x2000 - 80019c0: 601a str r2, [r3, #0] + 8001a0e: 687b ldr r3, [r7, #4] + 8001a10: 681b ldr r3, [r3, #0] + 8001a12: 681a ldr r2, [r3, #0] + 8001a14: 687b ldr r3, [r7, #4] + 8001a16: 681b ldr r3, [r3, #0] + 8001a18: f422 5200 bic.w r2, r2, #8192 @ 0x2000 + 8001a1c: 601a str r2, [r3, #0] /* Clear the Configuration error flag */ __HAL_DMA2D_CLEAR_FLAG(hdma2d, DMA2D_FLAG_CE); - 80019c2: 687b ldr r3, [r7, #4] - 80019c4: 681b ldr r3, [r3, #0] - 80019c6: 2220 movs r2, #32 - 80019c8: 609a str r2, [r3, #8] + 8001a1e: 687b ldr r3, [r7, #4] + 8001a20: 681b ldr r3, [r3, #0] + 8001a22: 2220 movs r2, #32 + 8001a24: 609a str r2, [r3, #8] /* Update error code */ hdma2d->ErrorCode |= HAL_DMA2D_ERROR_CE; - 80019ca: 687b ldr r3, [r7, #4] - 80019cc: 6bdb ldr r3, [r3, #60] @ 0x3c - 80019ce: f043 0202 orr.w r2, r3, #2 - 80019d2: 687b ldr r3, [r7, #4] - 80019d4: 63da str r2, [r3, #60] @ 0x3c + 8001a26: 687b ldr r3, [r7, #4] + 8001a28: 6bdb ldr r3, [r3, #60] @ 0x3c + 8001a2a: f043 0202 orr.w r2, r3, #2 + 8001a2e: 687b ldr r3, [r7, #4] + 8001a30: 63da str r2, [r3, #60] @ 0x3c /* Change DMA2D state */ hdma2d->State = HAL_DMA2D_STATE_ERROR; - 80019d6: 687b ldr r3, [r7, #4] - 80019d8: 2204 movs r2, #4 - 80019da: f883 2039 strb.w r2, [r3, #57] @ 0x39 + 8001a32: 687b ldr r3, [r7, #4] + 8001a34: 2204 movs r2, #4 + 8001a36: f883 2039 strb.w r2, [r3, #57] @ 0x39 /* Process Unlocked */ __HAL_UNLOCK(hdma2d); - 80019de: 687b ldr r3, [r7, #4] - 80019e0: 2200 movs r2, #0 - 80019e2: f883 2038 strb.w r2, [r3, #56] @ 0x38 + 8001a3a: 687b ldr r3, [r7, #4] + 8001a3c: 2200 movs r2, #0 + 8001a3e: f883 2038 strb.w r2, [r3, #56] @ 0x38 if (hdma2d->XferErrorCallback != NULL) - 80019e6: 687b ldr r3, [r7, #4] - 80019e8: 695b ldr r3, [r3, #20] - 80019ea: 2b00 cmp r3, #0 - 80019ec: d003 beq.n 80019f6 + 8001a42: 687b ldr r3, [r7, #4] + 8001a44: 695b ldr r3, [r3, #20] + 8001a46: 2b00 cmp r3, #0 + 8001a48: d003 beq.n 8001a52 { /* Transfer error Callback */ hdma2d->XferErrorCallback(hdma2d); - 80019ee: 687b ldr r3, [r7, #4] - 80019f0: 695b ldr r3, [r3, #20] - 80019f2: 6878 ldr r0, [r7, #4] - 80019f4: 4798 blx r3 + 8001a4a: 687b ldr r3, [r7, #4] + 8001a4c: 695b ldr r3, [r3, #20] + 8001a4e: 6878 ldr r0, [r7, #4] + 8001a50: 4798 blx r3 } } } /* CLUT access Error Interrupt management ***********************************/ if ((isrflags & DMA2D_FLAG_CAE) != 0U) - 80019f6: 68fb ldr r3, [r7, #12] - 80019f8: f003 0308 and.w r3, r3, #8 - 80019fc: 2b00 cmp r3, #0 - 80019fe: d026 beq.n 8001a4e + 8001a52: 68fb ldr r3, [r7, #12] + 8001a54: f003 0308 and.w r3, r3, #8 + 8001a58: 2b00 cmp r3, #0 + 8001a5a: d026 beq.n 8001aaa { if ((crflags & DMA2D_IT_CAE) != 0U) - 8001a00: 68bb ldr r3, [r7, #8] - 8001a02: f403 6300 and.w r3, r3, #2048 @ 0x800 - 8001a06: 2b00 cmp r3, #0 - 8001a08: d021 beq.n 8001a4e + 8001a5c: 68bb ldr r3, [r7, #8] + 8001a5e: f403 6300 and.w r3, r3, #2048 @ 0x800 + 8001a62: 2b00 cmp r3, #0 + 8001a64: d021 beq.n 8001aaa { /* Disable the CLUT access error interrupt */ __HAL_DMA2D_DISABLE_IT(hdma2d, DMA2D_IT_CAE); - 8001a0a: 687b ldr r3, [r7, #4] - 8001a0c: 681b ldr r3, [r3, #0] - 8001a0e: 681a ldr r2, [r3, #0] - 8001a10: 687b ldr r3, [r7, #4] - 8001a12: 681b ldr r3, [r3, #0] - 8001a14: f422 6200 bic.w r2, r2, #2048 @ 0x800 - 8001a18: 601a str r2, [r3, #0] + 8001a66: 687b ldr r3, [r7, #4] + 8001a68: 681b ldr r3, [r3, #0] + 8001a6a: 681a ldr r2, [r3, #0] + 8001a6c: 687b ldr r3, [r7, #4] + 8001a6e: 681b ldr r3, [r3, #0] + 8001a70: f422 6200 bic.w r2, r2, #2048 @ 0x800 + 8001a74: 601a str r2, [r3, #0] /* Clear the CLUT access error flag */ __HAL_DMA2D_CLEAR_FLAG(hdma2d, DMA2D_FLAG_CAE); - 8001a1a: 687b ldr r3, [r7, #4] - 8001a1c: 681b ldr r3, [r3, #0] - 8001a1e: 2208 movs r2, #8 - 8001a20: 609a str r2, [r3, #8] + 8001a76: 687b ldr r3, [r7, #4] + 8001a78: 681b ldr r3, [r3, #0] + 8001a7a: 2208 movs r2, #8 + 8001a7c: 609a str r2, [r3, #8] /* Update error code */ hdma2d->ErrorCode |= HAL_DMA2D_ERROR_CAE; - 8001a22: 687b ldr r3, [r7, #4] - 8001a24: 6bdb ldr r3, [r3, #60] @ 0x3c - 8001a26: f043 0204 orr.w r2, r3, #4 - 8001a2a: 687b ldr r3, [r7, #4] - 8001a2c: 63da str r2, [r3, #60] @ 0x3c + 8001a7e: 687b ldr r3, [r7, #4] + 8001a80: 6bdb ldr r3, [r3, #60] @ 0x3c + 8001a82: f043 0204 orr.w r2, r3, #4 + 8001a86: 687b ldr r3, [r7, #4] + 8001a88: 63da str r2, [r3, #60] @ 0x3c /* Change DMA2D state */ hdma2d->State = HAL_DMA2D_STATE_ERROR; - 8001a2e: 687b ldr r3, [r7, #4] - 8001a30: 2204 movs r2, #4 - 8001a32: f883 2039 strb.w r2, [r3, #57] @ 0x39 + 8001a8a: 687b ldr r3, [r7, #4] + 8001a8c: 2204 movs r2, #4 + 8001a8e: f883 2039 strb.w r2, [r3, #57] @ 0x39 /* Process Unlocked */ __HAL_UNLOCK(hdma2d); - 8001a36: 687b ldr r3, [r7, #4] - 8001a38: 2200 movs r2, #0 - 8001a3a: f883 2038 strb.w r2, [r3, #56] @ 0x38 + 8001a92: 687b ldr r3, [r7, #4] + 8001a94: 2200 movs r2, #0 + 8001a96: f883 2038 strb.w r2, [r3, #56] @ 0x38 if (hdma2d->XferErrorCallback != NULL) - 8001a3e: 687b ldr r3, [r7, #4] - 8001a40: 695b ldr r3, [r3, #20] - 8001a42: 2b00 cmp r3, #0 - 8001a44: d003 beq.n 8001a4e + 8001a9a: 687b ldr r3, [r7, #4] + 8001a9c: 695b ldr r3, [r3, #20] + 8001a9e: 2b00 cmp r3, #0 + 8001aa0: d003 beq.n 8001aaa { /* Transfer error Callback */ hdma2d->XferErrorCallback(hdma2d); - 8001a46: 687b ldr r3, [r7, #4] - 8001a48: 695b ldr r3, [r3, #20] - 8001a4a: 6878 ldr r0, [r7, #4] - 8001a4c: 4798 blx r3 + 8001aa2: 687b ldr r3, [r7, #4] + 8001aa4: 695b ldr r3, [r3, #20] + 8001aa6: 6878 ldr r0, [r7, #4] + 8001aa8: 4798 blx r3 } } } /* Transfer watermark Interrupt management **********************************/ if ((isrflags & DMA2D_FLAG_TW) != 0U) - 8001a4e: 68fb ldr r3, [r7, #12] - 8001a50: f003 0304 and.w r3, r3, #4 - 8001a54: 2b00 cmp r3, #0 - 8001a56: d013 beq.n 8001a80 + 8001aaa: 68fb ldr r3, [r7, #12] + 8001aac: f003 0304 and.w r3, r3, #4 + 8001ab0: 2b00 cmp r3, #0 + 8001ab2: d013 beq.n 8001adc { if ((crflags & DMA2D_IT_TW) != 0U) - 8001a58: 68bb ldr r3, [r7, #8] - 8001a5a: f403 6380 and.w r3, r3, #1024 @ 0x400 - 8001a5e: 2b00 cmp r3, #0 - 8001a60: d00e beq.n 8001a80 + 8001ab4: 68bb ldr r3, [r7, #8] + 8001ab6: f403 6380 and.w r3, r3, #1024 @ 0x400 + 8001aba: 2b00 cmp r3, #0 + 8001abc: d00e beq.n 8001adc { /* Disable the transfer watermark interrupt */ __HAL_DMA2D_DISABLE_IT(hdma2d, DMA2D_IT_TW); - 8001a62: 687b ldr r3, [r7, #4] - 8001a64: 681b ldr r3, [r3, #0] - 8001a66: 681a ldr r2, [r3, #0] - 8001a68: 687b ldr r3, [r7, #4] - 8001a6a: 681b ldr r3, [r3, #0] - 8001a6c: f422 6280 bic.w r2, r2, #1024 @ 0x400 - 8001a70: 601a str r2, [r3, #0] + 8001abe: 687b ldr r3, [r7, #4] + 8001ac0: 681b ldr r3, [r3, #0] + 8001ac2: 681a ldr r2, [r3, #0] + 8001ac4: 687b ldr r3, [r7, #4] + 8001ac6: 681b ldr r3, [r3, #0] + 8001ac8: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 8001acc: 601a str r2, [r3, #0] /* Clear the transfer watermark flag */ __HAL_DMA2D_CLEAR_FLAG(hdma2d, DMA2D_FLAG_TW); - 8001a72: 687b ldr r3, [r7, #4] - 8001a74: 681b ldr r3, [r3, #0] - 8001a76: 2204 movs r2, #4 - 8001a78: 609a str r2, [r3, #8] + 8001ace: 687b ldr r3, [r7, #4] + 8001ad0: 681b ldr r3, [r3, #0] + 8001ad2: 2204 movs r2, #4 + 8001ad4: 609a str r2, [r3, #8] /* Transfer watermark Callback */ #if (USE_HAL_DMA2D_REGISTER_CALLBACKS == 1) hdma2d->LineEventCallback(hdma2d); #else HAL_DMA2D_LineEventCallback(hdma2d); - 8001a7a: 6878 ldr r0, [r7, #4] - 8001a7c: f000 f853 bl 8001b26 + 8001ad6: 6878 ldr r0, [r7, #4] + 8001ad8: f000 f853 bl 8001b82 #endif /* USE_HAL_DMA2D_REGISTER_CALLBACKS */ } } /* Transfer Complete Interrupt management ************************************/ if ((isrflags & DMA2D_FLAG_TC) != 0U) - 8001a80: 68fb ldr r3, [r7, #12] - 8001a82: f003 0302 and.w r3, r3, #2 - 8001a86: 2b00 cmp r3, #0 - 8001a88: d024 beq.n 8001ad4 + 8001adc: 68fb ldr r3, [r7, #12] + 8001ade: f003 0302 and.w r3, r3, #2 + 8001ae2: 2b00 cmp r3, #0 + 8001ae4: d024 beq.n 8001b30 { if ((crflags & DMA2D_IT_TC) != 0U) - 8001a8a: 68bb ldr r3, [r7, #8] - 8001a8c: f403 7300 and.w r3, r3, #512 @ 0x200 - 8001a90: 2b00 cmp r3, #0 - 8001a92: d01f beq.n 8001ad4 + 8001ae6: 68bb ldr r3, [r7, #8] + 8001ae8: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001aec: 2b00 cmp r3, #0 + 8001aee: d01f beq.n 8001b30 { /* Disable the transfer complete interrupt */ __HAL_DMA2D_DISABLE_IT(hdma2d, DMA2D_IT_TC); - 8001a94: 687b ldr r3, [r7, #4] - 8001a96: 681b ldr r3, [r3, #0] - 8001a98: 681a ldr r2, [r3, #0] - 8001a9a: 687b ldr r3, [r7, #4] - 8001a9c: 681b ldr r3, [r3, #0] - 8001a9e: f422 7200 bic.w r2, r2, #512 @ 0x200 - 8001aa2: 601a str r2, [r3, #0] + 8001af0: 687b ldr r3, [r7, #4] + 8001af2: 681b ldr r3, [r3, #0] + 8001af4: 681a ldr r2, [r3, #0] + 8001af6: 687b ldr r3, [r7, #4] + 8001af8: 681b ldr r3, [r3, #0] + 8001afa: f422 7200 bic.w r2, r2, #512 @ 0x200 + 8001afe: 601a str r2, [r3, #0] /* Clear the transfer complete flag */ __HAL_DMA2D_CLEAR_FLAG(hdma2d, DMA2D_FLAG_TC); - 8001aa4: 687b ldr r3, [r7, #4] - 8001aa6: 681b ldr r3, [r3, #0] - 8001aa8: 2202 movs r2, #2 - 8001aaa: 609a str r2, [r3, #8] + 8001b00: 687b ldr r3, [r7, #4] + 8001b02: 681b ldr r3, [r3, #0] + 8001b04: 2202 movs r2, #2 + 8001b06: 609a str r2, [r3, #8] /* Update error code */ hdma2d->ErrorCode |= HAL_DMA2D_ERROR_NONE; - 8001aac: 687b ldr r3, [r7, #4] - 8001aae: 6bda ldr r2, [r3, #60] @ 0x3c - 8001ab0: 687b ldr r3, [r7, #4] - 8001ab2: 63da str r2, [r3, #60] @ 0x3c + 8001b08: 687b ldr r3, [r7, #4] + 8001b0a: 6bda ldr r2, [r3, #60] @ 0x3c + 8001b0c: 687b ldr r3, [r7, #4] + 8001b0e: 63da str r2, [r3, #60] @ 0x3c /* Change DMA2D state */ hdma2d->State = HAL_DMA2D_STATE_READY; - 8001ab4: 687b ldr r3, [r7, #4] - 8001ab6: 2201 movs r2, #1 - 8001ab8: f883 2039 strb.w r2, [r3, #57] @ 0x39 + 8001b10: 687b ldr r3, [r7, #4] + 8001b12: 2201 movs r2, #1 + 8001b14: f883 2039 strb.w r2, [r3, #57] @ 0x39 /* Process Unlocked */ __HAL_UNLOCK(hdma2d); - 8001abc: 687b ldr r3, [r7, #4] - 8001abe: 2200 movs r2, #0 - 8001ac0: f883 2038 strb.w r2, [r3, #56] @ 0x38 + 8001b18: 687b ldr r3, [r7, #4] + 8001b1a: 2200 movs r2, #0 + 8001b1c: f883 2038 strb.w r2, [r3, #56] @ 0x38 if (hdma2d->XferCpltCallback != NULL) - 8001ac4: 687b ldr r3, [r7, #4] - 8001ac6: 691b ldr r3, [r3, #16] - 8001ac8: 2b00 cmp r3, #0 - 8001aca: d003 beq.n 8001ad4 + 8001b20: 687b ldr r3, [r7, #4] + 8001b22: 691b ldr r3, [r3, #16] + 8001b24: 2b00 cmp r3, #0 + 8001b26: d003 beq.n 8001b30 { /* Transfer complete Callback */ hdma2d->XferCpltCallback(hdma2d); - 8001acc: 687b ldr r3, [r7, #4] - 8001ace: 691b ldr r3, [r3, #16] - 8001ad0: 6878 ldr r0, [r7, #4] - 8001ad2: 4798 blx r3 + 8001b28: 687b ldr r3, [r7, #4] + 8001b2a: 691b ldr r3, [r3, #16] + 8001b2c: 6878 ldr r0, [r7, #4] + 8001b2e: 4798 blx r3 } } } /* CLUT Transfer Complete Interrupt management ******************************/ if ((isrflags & DMA2D_FLAG_CTC) != 0U) - 8001ad4: 68fb ldr r3, [r7, #12] - 8001ad6: f003 0310 and.w r3, r3, #16 - 8001ada: 2b00 cmp r3, #0 - 8001adc: d01f beq.n 8001b1e + 8001b30: 68fb ldr r3, [r7, #12] + 8001b32: f003 0310 and.w r3, r3, #16 + 8001b36: 2b00 cmp r3, #0 + 8001b38: d01f beq.n 8001b7a { if ((crflags & DMA2D_IT_CTC) != 0U) - 8001ade: 68bb ldr r3, [r7, #8] - 8001ae0: f403 5380 and.w r3, r3, #4096 @ 0x1000 - 8001ae4: 2b00 cmp r3, #0 - 8001ae6: d01a beq.n 8001b1e + 8001b3a: 68bb ldr r3, [r7, #8] + 8001b3c: f403 5380 and.w r3, r3, #4096 @ 0x1000 + 8001b40: 2b00 cmp r3, #0 + 8001b42: d01a beq.n 8001b7a { /* Disable the CLUT transfer complete interrupt */ __HAL_DMA2D_DISABLE_IT(hdma2d, DMA2D_IT_CTC); - 8001ae8: 687b ldr r3, [r7, #4] - 8001aea: 681b ldr r3, [r3, #0] - 8001aec: 681a ldr r2, [r3, #0] - 8001aee: 687b ldr r3, [r7, #4] - 8001af0: 681b ldr r3, [r3, #0] - 8001af2: f422 5280 bic.w r2, r2, #4096 @ 0x1000 - 8001af6: 601a str r2, [r3, #0] + 8001b44: 687b ldr r3, [r7, #4] + 8001b46: 681b ldr r3, [r3, #0] + 8001b48: 681a ldr r2, [r3, #0] + 8001b4a: 687b ldr r3, [r7, #4] + 8001b4c: 681b ldr r3, [r3, #0] + 8001b4e: f422 5280 bic.w r2, r2, #4096 @ 0x1000 + 8001b52: 601a str r2, [r3, #0] /* Clear the CLUT transfer complete flag */ __HAL_DMA2D_CLEAR_FLAG(hdma2d, DMA2D_FLAG_CTC); - 8001af8: 687b ldr r3, [r7, #4] - 8001afa: 681b ldr r3, [r3, #0] - 8001afc: 2210 movs r2, #16 - 8001afe: 609a str r2, [r3, #8] + 8001b54: 687b ldr r3, [r7, #4] + 8001b56: 681b ldr r3, [r3, #0] + 8001b58: 2210 movs r2, #16 + 8001b5a: 609a str r2, [r3, #8] /* Update error code */ hdma2d->ErrorCode |= HAL_DMA2D_ERROR_NONE; - 8001b00: 687b ldr r3, [r7, #4] - 8001b02: 6bda ldr r2, [r3, #60] @ 0x3c - 8001b04: 687b ldr r3, [r7, #4] - 8001b06: 63da str r2, [r3, #60] @ 0x3c + 8001b5c: 687b ldr r3, [r7, #4] + 8001b5e: 6bda ldr r2, [r3, #60] @ 0x3c + 8001b60: 687b ldr r3, [r7, #4] + 8001b62: 63da str r2, [r3, #60] @ 0x3c /* Change DMA2D state */ hdma2d->State = HAL_DMA2D_STATE_READY; - 8001b08: 687b ldr r3, [r7, #4] - 8001b0a: 2201 movs r2, #1 - 8001b0c: f883 2039 strb.w r2, [r3, #57] @ 0x39 + 8001b64: 687b ldr r3, [r7, #4] + 8001b66: 2201 movs r2, #1 + 8001b68: f883 2039 strb.w r2, [r3, #57] @ 0x39 /* Process Unlocked */ __HAL_UNLOCK(hdma2d); - 8001b10: 687b ldr r3, [r7, #4] - 8001b12: 2200 movs r2, #0 - 8001b14: f883 2038 strb.w r2, [r3, #56] @ 0x38 + 8001b6c: 687b ldr r3, [r7, #4] + 8001b6e: 2200 movs r2, #0 + 8001b70: f883 2038 strb.w r2, [r3, #56] @ 0x38 /* CLUT Transfer complete Callback */ #if (USE_HAL_DMA2D_REGISTER_CALLBACKS == 1) hdma2d->CLUTLoadingCpltCallback(hdma2d); #else HAL_DMA2D_CLUTLoadingCpltCallback(hdma2d); - 8001b18: 6878 ldr r0, [r7, #4] - 8001b1a: f000 f80e bl 8001b3a + 8001b74: 6878 ldr r0, [r7, #4] + 8001b76: f000 f80e bl 8001b96 #endif /* USE_HAL_DMA2D_REGISTER_CALLBACKS */ } } } - 8001b1e: bf00 nop - 8001b20: 3710 adds r7, #16 - 8001b22: 46bd mov sp, r7 - 8001b24: bd80 pop {r7, pc} + 8001b7a: bf00 nop + 8001b7c: 3710 adds r7, #16 + 8001b7e: 46bd mov sp, r7 + 8001b80: bd80 pop {r7, pc} -08001b26 : +08001b82 : * @param hdma2d pointer to a DMA2D_HandleTypeDef structure that contains * the configuration information for the DMA2D. * @retval None */ __weak void HAL_DMA2D_LineEventCallback(DMA2D_HandleTypeDef *hdma2d) { - 8001b26: b480 push {r7} - 8001b28: b083 sub sp, #12 - 8001b2a: af00 add r7, sp, #0 - 8001b2c: 6078 str r0, [r7, #4] + 8001b82: b480 push {r7} + 8001b84: b083 sub sp, #12 + 8001b86: af00 add r7, sp, #0 + 8001b88: 6078 str r0, [r7, #4] UNUSED(hdma2d); /* NOTE : This function should not be modified; when the callback is needed, the HAL_DMA2D_LineEventCallback can be implemented in the user file. */ } - 8001b2e: bf00 nop - 8001b30: 370c adds r7, #12 - 8001b32: 46bd mov sp, r7 - 8001b34: f85d 7b04 ldr.w r7, [sp], #4 - 8001b38: 4770 bx lr + 8001b8a: bf00 nop + 8001b8c: 370c adds r7, #12 + 8001b8e: 46bd mov sp, r7 + 8001b90: f85d 7b04 ldr.w r7, [sp], #4 + 8001b94: 4770 bx lr -08001b3a : +08001b96 : * @param hdma2d pointer to a DMA2D_HandleTypeDef structure that contains * the configuration information for the DMA2D. * @retval None */ __weak void HAL_DMA2D_CLUTLoadingCpltCallback(DMA2D_HandleTypeDef *hdma2d) { - 8001b3a: b480 push {r7} - 8001b3c: b083 sub sp, #12 - 8001b3e: af00 add r7, sp, #0 - 8001b40: 6078 str r0, [r7, #4] + 8001b96: b480 push {r7} + 8001b98: b083 sub sp, #12 + 8001b9a: af00 add r7, sp, #0 + 8001b9c: 6078 str r0, [r7, #4] UNUSED(hdma2d); /* NOTE : This function should not be modified; when the callback is needed, the HAL_DMA2D_CLUTLoadingCpltCallback can be implemented in the user file. */ } - 8001b42: bf00 nop - 8001b44: 370c adds r7, #12 - 8001b46: 46bd mov sp, r7 - 8001b48: f85d 7b04 ldr.w r7, [sp], #4 - 8001b4c: 4770 bx lr + 8001b9e: bf00 nop + 8001ba0: 370c adds r7, #12 + 8001ba2: 46bd mov sp, r7 + 8001ba4: f85d 7b04 ldr.w r7, [sp], #4 + 8001ba8: 4770 bx lr ... -08001b50 : +08001bac : * This parameter can be one of the following values: * DMA2D_BACKGROUND_LAYER(0) / DMA2D_FOREGROUND_LAYER(1) * @retval HAL status */ HAL_StatusTypeDef HAL_DMA2D_ConfigLayer(DMA2D_HandleTypeDef *hdma2d, uint32_t LayerIdx) { - 8001b50: b480 push {r7} - 8001b52: b087 sub sp, #28 - 8001b54: af00 add r7, sp, #0 - 8001b56: 6078 str r0, [r7, #4] - 8001b58: 6039 str r1, [r7, #0] + 8001bac: b480 push {r7} + 8001bae: b087 sub sp, #28 + 8001bb0: af00 add r7, sp, #0 + 8001bb2: 6078 str r0, [r7, #4] + 8001bb4: 6039 str r1, [r7, #0] uint32_t regValue; /* Check the parameters */ assert_param(IS_DMA2D_LAYER(LayerIdx)); assert_param(IS_DMA2D_OFFSET(hdma2d->LayerCfg[LayerIdx].InputOffset)); if (hdma2d->Init.Mode != DMA2D_R2M) - 8001b5a: 687b ldr r3, [r7, #4] - 8001b5c: 685b ldr r3, [r3, #4] - 8001b5e: f5b3 3f40 cmp.w r3, #196608 @ 0x30000 + 8001bb6: 687b ldr r3, [r7, #4] + 8001bb8: 685b ldr r3, [r3, #4] + 8001bba: f5b3 3f40 cmp.w r3, #196608 @ 0x30000 assert_param(IS_DMA2D_ALPHA_MODE(hdma2d->LayerCfg[LayerIdx].AlphaMode)); } } /* Process locked */ __HAL_LOCK(hdma2d); - 8001b62: 687b ldr r3, [r7, #4] - 8001b64: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 - 8001b68: 2b01 cmp r3, #1 - 8001b6a: d101 bne.n 8001b70 - 8001b6c: 2302 movs r3, #2 - 8001b6e: e079 b.n 8001c64 - 8001b70: 687b ldr r3, [r7, #4] - 8001b72: 2201 movs r2, #1 - 8001b74: f883 2038 strb.w r2, [r3, #56] @ 0x38 + 8001bbe: 687b ldr r3, [r7, #4] + 8001bc0: f893 3038 ldrb.w r3, [r3, #56] @ 0x38 + 8001bc4: 2b01 cmp r3, #1 + 8001bc6: d101 bne.n 8001bcc + 8001bc8: 2302 movs r3, #2 + 8001bca: e079 b.n 8001cc0 + 8001bcc: 687b ldr r3, [r7, #4] + 8001bce: 2201 movs r2, #1 + 8001bd0: f883 2038 strb.w r2, [r3, #56] @ 0x38 /* Change DMA2D peripheral state */ hdma2d->State = HAL_DMA2D_STATE_BUSY; - 8001b78: 687b ldr r3, [r7, #4] - 8001b7a: 2202 movs r2, #2 - 8001b7c: f883 2039 strb.w r2, [r3, #57] @ 0x39 + 8001bd4: 687b ldr r3, [r7, #4] + 8001bd6: 2202 movs r2, #2 + 8001bd8: f883 2039 strb.w r2, [r3, #57] @ 0x39 pLayerCfg = &hdma2d->LayerCfg[LayerIdx]; - 8001b80: 683b ldr r3, [r7, #0] - 8001b82: 011b lsls r3, r3, #4 - 8001b84: 3318 adds r3, #24 - 8001b86: 687a ldr r2, [r7, #4] - 8001b88: 4413 add r3, r2 - 8001b8a: 613b str r3, [r7, #16] + 8001bdc: 683b ldr r3, [r7, #0] + 8001bde: 011b lsls r3, r3, #4 + 8001be0: 3318 adds r3, #24 + 8001be2: 687a ldr r2, [r7, #4] + 8001be4: 4413 add r3, r2 + 8001be6: 613b str r3, [r7, #16] /* Prepare the value to be written to the BGPFCCR or FGPFCCR register */ regValue = pLayerCfg->InputColorMode | (pLayerCfg->AlphaMode << DMA2D_BGPFCCR_AM_Pos); - 8001b8c: 693b ldr r3, [r7, #16] - 8001b8e: 685a ldr r2, [r3, #4] - 8001b90: 693b ldr r3, [r7, #16] - 8001b92: 689b ldr r3, [r3, #8] - 8001b94: 041b lsls r3, r3, #16 - 8001b96: 4313 orrs r3, r2 - 8001b98: 617b str r3, [r7, #20] + 8001be8: 693b ldr r3, [r7, #16] + 8001bea: 685a ldr r2, [r3, #4] + 8001bec: 693b ldr r3, [r7, #16] + 8001bee: 689b ldr r3, [r3, #8] + 8001bf0: 041b lsls r3, r3, #16 + 8001bf2: 4313 orrs r3, r2 + 8001bf4: 617b str r3, [r7, #20] regMask = DMA2D_BGPFCCR_CM | DMA2D_BGPFCCR_AM | DMA2D_BGPFCCR_ALPHA; - 8001b9a: 4b35 ldr r3, [pc, #212] @ (8001c70 ) - 8001b9c: 60fb str r3, [r7, #12] + 8001bf6: 4b35 ldr r3, [pc, #212] @ (8001ccc ) + 8001bf8: 60fb str r3, [r7, #12] if ((pLayerCfg->InputColorMode == DMA2D_INPUT_A4) || (pLayerCfg->InputColorMode == DMA2D_INPUT_A8)) - 8001b9e: 693b ldr r3, [r7, #16] - 8001ba0: 685b ldr r3, [r3, #4] - 8001ba2: 2b0a cmp r3, #10 - 8001ba4: d003 beq.n 8001bae - 8001ba6: 693b ldr r3, [r7, #16] - 8001ba8: 685b ldr r3, [r3, #4] - 8001baa: 2b09 cmp r3, #9 - 8001bac: d107 bne.n 8001bbe + 8001bfa: 693b ldr r3, [r7, #16] + 8001bfc: 685b ldr r3, [r3, #4] + 8001bfe: 2b0a cmp r3, #10 + 8001c00: d003 beq.n 8001c0a + 8001c02: 693b ldr r3, [r7, #16] + 8001c04: 685b ldr r3, [r3, #4] + 8001c06: 2b09 cmp r3, #9 + 8001c08: d107 bne.n 8001c1a { regValue |= (pLayerCfg->InputAlpha & DMA2D_BGPFCCR_ALPHA); - 8001bae: 693b ldr r3, [r7, #16] - 8001bb0: 68db ldr r3, [r3, #12] - 8001bb2: f003 437f and.w r3, r3, #4278190080 @ 0xff000000 - 8001bb6: 697a ldr r2, [r7, #20] - 8001bb8: 4313 orrs r3, r2 - 8001bba: 617b str r3, [r7, #20] - 8001bbc: e005 b.n 8001bca + 8001c0a: 693b ldr r3, [r7, #16] + 8001c0c: 68db ldr r3, [r3, #12] + 8001c0e: f003 437f and.w r3, r3, #4278190080 @ 0xff000000 + 8001c12: 697a ldr r2, [r7, #20] + 8001c14: 4313 orrs r3, r2 + 8001c16: 617b str r3, [r7, #20] + 8001c18: e005 b.n 8001c26 } else { regValue |= (pLayerCfg->InputAlpha << DMA2D_BGPFCCR_ALPHA_Pos); - 8001bbe: 693b ldr r3, [r7, #16] - 8001bc0: 68db ldr r3, [r3, #12] - 8001bc2: 061b lsls r3, r3, #24 - 8001bc4: 697a ldr r2, [r7, #20] - 8001bc6: 4313 orrs r3, r2 - 8001bc8: 617b str r3, [r7, #20] + 8001c1a: 693b ldr r3, [r7, #16] + 8001c1c: 68db ldr r3, [r3, #12] + 8001c1e: 061b lsls r3, r3, #24 + 8001c20: 697a ldr r2, [r7, #20] + 8001c22: 4313 orrs r3, r2 + 8001c24: 617b str r3, [r7, #20] } /* Configure the background DMA2D layer */ if (LayerIdx == DMA2D_BACKGROUND_LAYER) - 8001bca: 683b ldr r3, [r7, #0] - 8001bcc: 2b00 cmp r3, #0 - 8001bce: d120 bne.n 8001c12 + 8001c26: 683b ldr r3, [r7, #0] + 8001c28: 2b00 cmp r3, #0 + 8001c2a: d120 bne.n 8001c6e { /* Write DMA2D BGPFCCR register */ MODIFY_REG(hdma2d->Instance->BGPFCCR, regMask, regValue); - 8001bd0: 687b ldr r3, [r7, #4] - 8001bd2: 681b ldr r3, [r3, #0] - 8001bd4: 6a5a ldr r2, [r3, #36] @ 0x24 - 8001bd6: 68fb ldr r3, [r7, #12] - 8001bd8: 43db mvns r3, r3 - 8001bda: ea02 0103 and.w r1, r2, r3 - 8001bde: 687b ldr r3, [r7, #4] - 8001be0: 681b ldr r3, [r3, #0] - 8001be2: 697a ldr r2, [r7, #20] - 8001be4: 430a orrs r2, r1 - 8001be6: 625a str r2, [r3, #36] @ 0x24 + 8001c2c: 687b ldr r3, [r7, #4] + 8001c2e: 681b ldr r3, [r3, #0] + 8001c30: 6a5a ldr r2, [r3, #36] @ 0x24 + 8001c32: 68fb ldr r3, [r7, #12] + 8001c34: 43db mvns r3, r3 + 8001c36: ea02 0103 and.w r1, r2, r3 + 8001c3a: 687b ldr r3, [r7, #4] + 8001c3c: 681b ldr r3, [r3, #0] + 8001c3e: 697a ldr r2, [r7, #20] + 8001c40: 430a orrs r2, r1 + 8001c42: 625a str r2, [r3, #36] @ 0x24 /* DMA2D BGOR register configuration -------------------------------------*/ WRITE_REG(hdma2d->Instance->BGOR, pLayerCfg->InputOffset); - 8001be8: 687b ldr r3, [r7, #4] - 8001bea: 681b ldr r3, [r3, #0] - 8001bec: 693a ldr r2, [r7, #16] - 8001bee: 6812 ldr r2, [r2, #0] - 8001bf0: 619a str r2, [r3, #24] + 8001c44: 687b ldr r3, [r7, #4] + 8001c46: 681b ldr r3, [r3, #0] + 8001c48: 693a ldr r2, [r7, #16] + 8001c4a: 6812 ldr r2, [r2, #0] + 8001c4c: 619a str r2, [r3, #24] /* DMA2D BGCOLR register configuration -------------------------------------*/ if ((pLayerCfg->InputColorMode == DMA2D_INPUT_A4) || (pLayerCfg->InputColorMode == DMA2D_INPUT_A8)) - 8001bf2: 693b ldr r3, [r7, #16] - 8001bf4: 685b ldr r3, [r3, #4] - 8001bf6: 2b0a cmp r3, #10 - 8001bf8: d003 beq.n 8001c02 - 8001bfa: 693b ldr r3, [r7, #16] - 8001bfc: 685b ldr r3, [r3, #4] - 8001bfe: 2b09 cmp r3, #9 - 8001c00: d127 bne.n 8001c52 + 8001c4e: 693b ldr r3, [r7, #16] + 8001c50: 685b ldr r3, [r3, #4] + 8001c52: 2b0a cmp r3, #10 + 8001c54: d003 beq.n 8001c5e + 8001c56: 693b ldr r3, [r7, #16] + 8001c58: 685b ldr r3, [r3, #4] + 8001c5a: 2b09 cmp r3, #9 + 8001c5c: d127 bne.n 8001cae { WRITE_REG(hdma2d->Instance->BGCOLR, pLayerCfg->InputAlpha & (DMA2D_BGCOLR_BLUE | DMA2D_BGCOLR_GREEN | \ - 8001c02: 693b ldr r3, [r7, #16] - 8001c04: 68da ldr r2, [r3, #12] - 8001c06: 687b ldr r3, [r7, #4] - 8001c08: 681b ldr r3, [r3, #0] - 8001c0a: f022 427f bic.w r2, r2, #4278190080 @ 0xff000000 - 8001c0e: 629a str r2, [r3, #40] @ 0x28 - 8001c10: e01f b.n 8001c52 + 8001c5e: 693b ldr r3, [r7, #16] + 8001c60: 68da ldr r2, [r3, #12] + 8001c62: 687b ldr r3, [r7, #4] + 8001c64: 681b ldr r3, [r3, #0] + 8001c66: f022 427f bic.w r2, r2, #4278190080 @ 0xff000000 + 8001c6a: 629a str r2, [r3, #40] @ 0x28 + 8001c6c: e01f b.n 8001cae else { /* Write DMA2D FGPFCCR register */ MODIFY_REG(hdma2d->Instance->FGPFCCR, regMask, regValue); - 8001c12: 687b ldr r3, [r7, #4] - 8001c14: 681b ldr r3, [r3, #0] - 8001c16: 69da ldr r2, [r3, #28] - 8001c18: 68fb ldr r3, [r7, #12] - 8001c1a: 43db mvns r3, r3 - 8001c1c: ea02 0103 and.w r1, r2, r3 - 8001c20: 687b ldr r3, [r7, #4] - 8001c22: 681b ldr r3, [r3, #0] - 8001c24: 697a ldr r2, [r7, #20] - 8001c26: 430a orrs r2, r1 - 8001c28: 61da str r2, [r3, #28] + 8001c6e: 687b ldr r3, [r7, #4] + 8001c70: 681b ldr r3, [r3, #0] + 8001c72: 69da ldr r2, [r3, #28] + 8001c74: 68fb ldr r3, [r7, #12] + 8001c76: 43db mvns r3, r3 + 8001c78: ea02 0103 and.w r1, r2, r3 + 8001c7c: 687b ldr r3, [r7, #4] + 8001c7e: 681b ldr r3, [r3, #0] + 8001c80: 697a ldr r2, [r7, #20] + 8001c82: 430a orrs r2, r1 + 8001c84: 61da str r2, [r3, #28] /* DMA2D FGOR register configuration -------------------------------------*/ WRITE_REG(hdma2d->Instance->FGOR, pLayerCfg->InputOffset); - 8001c2a: 687b ldr r3, [r7, #4] - 8001c2c: 681b ldr r3, [r3, #0] - 8001c2e: 693a ldr r2, [r7, #16] - 8001c30: 6812 ldr r2, [r2, #0] - 8001c32: 611a str r2, [r3, #16] + 8001c86: 687b ldr r3, [r7, #4] + 8001c88: 681b ldr r3, [r3, #0] + 8001c8a: 693a ldr r2, [r7, #16] + 8001c8c: 6812 ldr r2, [r2, #0] + 8001c8e: 611a str r2, [r3, #16] /* DMA2D FGCOLR register configuration -------------------------------------*/ if ((pLayerCfg->InputColorMode == DMA2D_INPUT_A4) || (pLayerCfg->InputColorMode == DMA2D_INPUT_A8)) - 8001c34: 693b ldr r3, [r7, #16] - 8001c36: 685b ldr r3, [r3, #4] - 8001c38: 2b0a cmp r3, #10 - 8001c3a: d003 beq.n 8001c44 - 8001c3c: 693b ldr r3, [r7, #16] - 8001c3e: 685b ldr r3, [r3, #4] - 8001c40: 2b09 cmp r3, #9 - 8001c42: d106 bne.n 8001c52 + 8001c90: 693b ldr r3, [r7, #16] + 8001c92: 685b ldr r3, [r3, #4] + 8001c94: 2b0a cmp r3, #10 + 8001c96: d003 beq.n 8001ca0 + 8001c98: 693b ldr r3, [r7, #16] + 8001c9a: 685b ldr r3, [r3, #4] + 8001c9c: 2b09 cmp r3, #9 + 8001c9e: d106 bne.n 8001cae { WRITE_REG(hdma2d->Instance->FGCOLR, pLayerCfg->InputAlpha & (DMA2D_FGCOLR_BLUE | DMA2D_FGCOLR_GREEN | \ - 8001c44: 693b ldr r3, [r7, #16] - 8001c46: 68da ldr r2, [r3, #12] - 8001c48: 687b ldr r3, [r7, #4] - 8001c4a: 681b ldr r3, [r3, #0] - 8001c4c: f022 427f bic.w r2, r2, #4278190080 @ 0xff000000 - 8001c50: 621a str r2, [r3, #32] + 8001ca0: 693b ldr r3, [r7, #16] + 8001ca2: 68da ldr r2, [r3, #12] + 8001ca4: 687b ldr r3, [r7, #4] + 8001ca6: 681b ldr r3, [r3, #0] + 8001ca8: f022 427f bic.w r2, r2, #4278190080 @ 0xff000000 + 8001cac: 621a str r2, [r3, #32] DMA2D_FGCOLR_RED)); } } /* Initialize the DMA2D state*/ hdma2d->State = HAL_DMA2D_STATE_READY; - 8001c52: 687b ldr r3, [r7, #4] - 8001c54: 2201 movs r2, #1 - 8001c56: f883 2039 strb.w r2, [r3, #57] @ 0x39 + 8001cae: 687b ldr r3, [r7, #4] + 8001cb0: 2201 movs r2, #1 + 8001cb2: f883 2039 strb.w r2, [r3, #57] @ 0x39 /* Process unlocked */ __HAL_UNLOCK(hdma2d); - 8001c5a: 687b ldr r3, [r7, #4] - 8001c5c: 2200 movs r2, #0 - 8001c5e: f883 2038 strb.w r2, [r3, #56] @ 0x38 + 8001cb6: 687b ldr r3, [r7, #4] + 8001cb8: 2200 movs r2, #0 + 8001cba: f883 2038 strb.w r2, [r3, #56] @ 0x38 return HAL_OK; - 8001c62: 2300 movs r3, #0 + 8001cbe: 2300 movs r3, #0 } - 8001c64: 4618 mov r0, r3 - 8001c66: 371c adds r7, #28 - 8001c68: 46bd mov sp, r7 - 8001c6a: f85d 7b04 ldr.w r7, [sp], #4 - 8001c6e: 4770 bx lr - 8001c70: ff03000f .word 0xff03000f + 8001cc0: 4618 mov r0, r3 + 8001cc2: 371c adds r7, #28 + 8001cc4: 46bd mov sp, r7 + 8001cc6: f85d 7b04 ldr.w r7, [sp], #4 + 8001cca: 4770 bx lr + 8001ccc: ff03000f .word 0xff03000f -08001c74 : +08001cd0 : * @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) { - 8001c74: b480 push {r7} - 8001c76: b089 sub sp, #36 @ 0x24 - 8001c78: af00 add r7, sp, #0 - 8001c7a: 6078 str r0, [r7, #4] - 8001c7c: 6039 str r1, [r7, #0] + 8001cd0: b480 push {r7} + 8001cd2: b089 sub sp, #36 @ 0x24 + 8001cd4: af00 add r7, sp, #0 + 8001cd6: 6078 str r0, [r7, #4] + 8001cd8: 6039 str r1, [r7, #0] uint32_t position; uint32_t ioposition = 0x00U; - 8001c7e: 2300 movs r3, #0 - 8001c80: 617b str r3, [r7, #20] + 8001cda: 2300 movs r3, #0 + 8001cdc: 617b str r3, [r7, #20] uint32_t iocurrent = 0x00U; - 8001c82: 2300 movs r3, #0 - 8001c84: 613b str r3, [r7, #16] + 8001cde: 2300 movs r3, #0 + 8001ce0: 613b str r3, [r7, #16] uint32_t temp = 0x00U; - 8001c86: 2300 movs r3, #0 - 8001c88: 61bb str r3, [r7, #24] + 8001ce2: 2300 movs r3, #0 + 8001ce4: 61bb str r3, [r7, #24] 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 */ for(position = 0U; position < GPIO_NUMBER; position++) - 8001c8a: 2300 movs r3, #0 - 8001c8c: 61fb str r3, [r7, #28] - 8001c8e: e177 b.n 8001f80 + 8001ce6: 2300 movs r3, #0 + 8001ce8: 61fb str r3, [r7, #28] + 8001cea: e177 b.n 8001fdc { /* Get the IO position */ ioposition = 0x01U << position; - 8001c90: 2201 movs r2, #1 - 8001c92: 69fb ldr r3, [r7, #28] - 8001c94: fa02 f303 lsl.w r3, r2, r3 - 8001c98: 617b str r3, [r7, #20] + 8001cec: 2201 movs r2, #1 + 8001cee: 69fb ldr r3, [r7, #28] + 8001cf0: fa02 f303 lsl.w r3, r2, r3 + 8001cf4: 617b str r3, [r7, #20] /* Get the current IO position */ iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition; - 8001c9a: 683b ldr r3, [r7, #0] - 8001c9c: 681b ldr r3, [r3, #0] - 8001c9e: 697a ldr r2, [r7, #20] - 8001ca0: 4013 ands r3, r2 - 8001ca2: 613b str r3, [r7, #16] + 8001cf6: 683b ldr r3, [r7, #0] + 8001cf8: 681b ldr r3, [r3, #0] + 8001cfa: 697a ldr r2, [r7, #20] + 8001cfc: 4013 ands r3, r2 + 8001cfe: 613b str r3, [r7, #16] if(iocurrent == ioposition) - 8001ca4: 693a ldr r2, [r7, #16] - 8001ca6: 697b ldr r3, [r7, #20] - 8001ca8: 429a cmp r2, r3 - 8001caa: f040 8166 bne.w 8001f7a + 8001d00: 693a ldr r2, [r7, #16] + 8001d02: 697b ldr r3, [r7, #20] + 8001d04: 429a cmp r2, r3 + 8001d06: f040 8166 bne.w 8001fd6 { /*--------------------- GPIO Mode Configuration ------------------------*/ /* In case of Output or Alternate function mode selection */ if(((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || \ - 8001cae: 683b ldr r3, [r7, #0] - 8001cb0: 685b ldr r3, [r3, #4] - 8001cb2: f003 0303 and.w r3, r3, #3 - 8001cb6: 2b01 cmp r3, #1 - 8001cb8: d005 beq.n 8001cc6 + 8001d0a: 683b ldr r3, [r7, #0] + 8001d0c: 685b ldr r3, [r3, #4] + 8001d0e: f003 0303 and.w r3, r3, #3 + 8001d12: 2b01 cmp r3, #1 + 8001d14: d005 beq.n 8001d22 (GPIO_Init->Mode & GPIO_MODE) == MODE_AF) - 8001cba: 683b ldr r3, [r7, #0] - 8001cbc: 685b ldr r3, [r3, #4] - 8001cbe: f003 0303 and.w r3, r3, #3 + 8001d16: 683b ldr r3, [r7, #0] + 8001d18: 685b ldr r3, [r3, #4] + 8001d1a: f003 0303 and.w r3, r3, #3 if(((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || \ - 8001cc2: 2b02 cmp r3, #2 - 8001cc4: d130 bne.n 8001d28 + 8001d1e: 2b02 cmp r3, #2 + 8001d20: d130 bne.n 8001d84 { /* Check the Speed parameter */ assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); /* Configure the IO Speed */ temp = GPIOx->OSPEEDR; - 8001cc6: 687b ldr r3, [r7, #4] - 8001cc8: 689b ldr r3, [r3, #8] - 8001cca: 61bb str r3, [r7, #24] + 8001d22: 687b ldr r3, [r7, #4] + 8001d24: 689b ldr r3, [r3, #8] + 8001d26: 61bb str r3, [r7, #24] temp &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2U)); - 8001ccc: 69fb ldr r3, [r7, #28] - 8001cce: 005b lsls r3, r3, #1 - 8001cd0: 2203 movs r2, #3 - 8001cd2: fa02 f303 lsl.w r3, r2, r3 - 8001cd6: 43db mvns r3, r3 - 8001cd8: 69ba ldr r2, [r7, #24] - 8001cda: 4013 ands r3, r2 - 8001cdc: 61bb str r3, [r7, #24] + 8001d28: 69fb ldr r3, [r7, #28] + 8001d2a: 005b lsls r3, r3, #1 + 8001d2c: 2203 movs r2, #3 + 8001d2e: fa02 f303 lsl.w r3, r2, r3 + 8001d32: 43db mvns r3, r3 + 8001d34: 69ba ldr r2, [r7, #24] + 8001d36: 4013 ands r3, r2 + 8001d38: 61bb str r3, [r7, #24] temp |= (GPIO_Init->Speed << (position * 2U)); - 8001cde: 683b ldr r3, [r7, #0] - 8001ce0: 68da ldr r2, [r3, #12] - 8001ce2: 69fb ldr r3, [r7, #28] - 8001ce4: 005b lsls r3, r3, #1 - 8001ce6: fa02 f303 lsl.w r3, r2, r3 - 8001cea: 69ba ldr r2, [r7, #24] - 8001cec: 4313 orrs r3, r2 - 8001cee: 61bb str r3, [r7, #24] + 8001d3a: 683b ldr r3, [r7, #0] + 8001d3c: 68da ldr r2, [r3, #12] + 8001d3e: 69fb ldr r3, [r7, #28] + 8001d40: 005b lsls r3, r3, #1 + 8001d42: fa02 f303 lsl.w r3, r2, r3 + 8001d46: 69ba ldr r2, [r7, #24] + 8001d48: 4313 orrs r3, r2 + 8001d4a: 61bb str r3, [r7, #24] GPIOx->OSPEEDR = temp; - 8001cf0: 687b ldr r3, [r7, #4] - 8001cf2: 69ba ldr r2, [r7, #24] - 8001cf4: 609a str r2, [r3, #8] + 8001d4c: 687b ldr r3, [r7, #4] + 8001d4e: 69ba ldr r2, [r7, #24] + 8001d50: 609a str r2, [r3, #8] /* Configure the IO Output Type */ temp = GPIOx->OTYPER; - 8001cf6: 687b ldr r3, [r7, #4] - 8001cf8: 685b ldr r3, [r3, #4] - 8001cfa: 61bb str r3, [r7, #24] + 8001d52: 687b ldr r3, [r7, #4] + 8001d54: 685b ldr r3, [r3, #4] + 8001d56: 61bb str r3, [r7, #24] temp &= ~(GPIO_OTYPER_OT_0 << position) ; - 8001cfc: 2201 movs r2, #1 - 8001cfe: 69fb ldr r3, [r7, #28] - 8001d00: fa02 f303 lsl.w r3, r2, r3 - 8001d04: 43db mvns r3, r3 - 8001d06: 69ba ldr r2, [r7, #24] - 8001d08: 4013 ands r3, r2 - 8001d0a: 61bb str r3, [r7, #24] + 8001d58: 2201 movs r2, #1 + 8001d5a: 69fb ldr r3, [r7, #28] + 8001d5c: fa02 f303 lsl.w r3, r2, r3 + 8001d60: 43db mvns r3, r3 + 8001d62: 69ba ldr r2, [r7, #24] + 8001d64: 4013 ands r3, r2 + 8001d66: 61bb str r3, [r7, #24] temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); - 8001d0c: 683b ldr r3, [r7, #0] - 8001d0e: 685b ldr r3, [r3, #4] - 8001d10: 091b lsrs r3, r3, #4 - 8001d12: f003 0201 and.w r2, r3, #1 - 8001d16: 69fb ldr r3, [r7, #28] - 8001d18: fa02 f303 lsl.w r3, r2, r3 - 8001d1c: 69ba ldr r2, [r7, #24] - 8001d1e: 4313 orrs r3, r2 - 8001d20: 61bb str r3, [r7, #24] + 8001d68: 683b ldr r3, [r7, #0] + 8001d6a: 685b ldr r3, [r3, #4] + 8001d6c: 091b lsrs r3, r3, #4 + 8001d6e: f003 0201 and.w r2, r3, #1 + 8001d72: 69fb ldr r3, [r7, #28] + 8001d74: fa02 f303 lsl.w r3, r2, r3 + 8001d78: 69ba ldr r2, [r7, #24] + 8001d7a: 4313 orrs r3, r2 + 8001d7c: 61bb str r3, [r7, #24] GPIOx->OTYPER = temp; - 8001d22: 687b ldr r3, [r7, #4] - 8001d24: 69ba ldr r2, [r7, #24] - 8001d26: 605a str r2, [r3, #4] + 8001d7e: 687b ldr r3, [r7, #4] + 8001d80: 69ba ldr r2, [r7, #24] + 8001d82: 605a str r2, [r3, #4] } if((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) - 8001d28: 683b ldr r3, [r7, #0] - 8001d2a: 685b ldr r3, [r3, #4] - 8001d2c: f003 0303 and.w r3, r3, #3 - 8001d30: 2b03 cmp r3, #3 - 8001d32: d017 beq.n 8001d64 + 8001d84: 683b ldr r3, [r7, #0] + 8001d86: 685b ldr r3, [r3, #4] + 8001d88: f003 0303 and.w r3, r3, #3 + 8001d8c: 2b03 cmp r3, #3 + 8001d8e: d017 beq.n 8001dc0 { /* Check the parameters */ assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); /* Activate the Pull-up or Pull down resistor for the current IO */ temp = GPIOx->PUPDR; - 8001d34: 687b ldr r3, [r7, #4] - 8001d36: 68db ldr r3, [r3, #12] - 8001d38: 61bb str r3, [r7, #24] + 8001d90: 687b ldr r3, [r7, #4] + 8001d92: 68db ldr r3, [r3, #12] + 8001d94: 61bb str r3, [r7, #24] temp &= ~(GPIO_PUPDR_PUPDR0 << (position * 2U)); - 8001d3a: 69fb ldr r3, [r7, #28] - 8001d3c: 005b lsls r3, r3, #1 - 8001d3e: 2203 movs r2, #3 - 8001d40: fa02 f303 lsl.w r3, r2, r3 - 8001d44: 43db mvns r3, r3 - 8001d46: 69ba ldr r2, [r7, #24] - 8001d48: 4013 ands r3, r2 - 8001d4a: 61bb str r3, [r7, #24] + 8001d96: 69fb ldr r3, [r7, #28] + 8001d98: 005b lsls r3, r3, #1 + 8001d9a: 2203 movs r2, #3 + 8001d9c: fa02 f303 lsl.w r3, r2, r3 + 8001da0: 43db mvns r3, r3 + 8001da2: 69ba ldr r2, [r7, #24] + 8001da4: 4013 ands r3, r2 + 8001da6: 61bb str r3, [r7, #24] temp |= ((GPIO_Init->Pull) << (position * 2U)); - 8001d4c: 683b ldr r3, [r7, #0] - 8001d4e: 689a ldr r2, [r3, #8] - 8001d50: 69fb ldr r3, [r7, #28] - 8001d52: 005b lsls r3, r3, #1 - 8001d54: fa02 f303 lsl.w r3, r2, r3 - 8001d58: 69ba ldr r2, [r7, #24] - 8001d5a: 4313 orrs r3, r2 - 8001d5c: 61bb str r3, [r7, #24] + 8001da8: 683b ldr r3, [r7, #0] + 8001daa: 689a ldr r2, [r3, #8] + 8001dac: 69fb ldr r3, [r7, #28] + 8001dae: 005b lsls r3, r3, #1 + 8001db0: fa02 f303 lsl.w r3, r2, r3 + 8001db4: 69ba ldr r2, [r7, #24] + 8001db6: 4313 orrs r3, r2 + 8001db8: 61bb str r3, [r7, #24] GPIOx->PUPDR = temp; - 8001d5e: 687b ldr r3, [r7, #4] - 8001d60: 69ba ldr r2, [r7, #24] - 8001d62: 60da str r2, [r3, #12] + 8001dba: 687b ldr r3, [r7, #4] + 8001dbc: 69ba ldr r2, [r7, #24] + 8001dbe: 60da str r2, [r3, #12] } /* In case of Alternate function mode selection */ if((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) - 8001d64: 683b ldr r3, [r7, #0] - 8001d66: 685b ldr r3, [r3, #4] - 8001d68: f003 0303 and.w r3, r3, #3 - 8001d6c: 2b02 cmp r3, #2 - 8001d6e: d123 bne.n 8001db8 + 8001dc0: 683b ldr r3, [r7, #0] + 8001dc2: 685b ldr r3, [r3, #4] + 8001dc4: f003 0303 and.w r3, r3, #3 + 8001dc8: 2b02 cmp r3, #2 + 8001dca: d123 bne.n 8001e14 { /* Check the Alternate function parameter */ assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); /* Configure Alternate function mapped with the current IO */ temp = GPIOx->AFR[position >> 3U]; - 8001d70: 69fb ldr r3, [r7, #28] - 8001d72: 08da lsrs r2, r3, #3 - 8001d74: 687b ldr r3, [r7, #4] - 8001d76: 3208 adds r2, #8 - 8001d78: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 8001d7c: 61bb str r3, [r7, #24] + 8001dcc: 69fb ldr r3, [r7, #28] + 8001dce: 08da lsrs r2, r3, #3 + 8001dd0: 687b ldr r3, [r7, #4] + 8001dd2: 3208 adds r2, #8 + 8001dd4: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 8001dd8: 61bb str r3, [r7, #24] temp &= ~(0xFU << ((uint32_t)(position & 0x07U) * 4U)) ; - 8001d7e: 69fb ldr r3, [r7, #28] - 8001d80: f003 0307 and.w r3, r3, #7 - 8001d84: 009b lsls r3, r3, #2 - 8001d86: 220f movs r2, #15 - 8001d88: fa02 f303 lsl.w r3, r2, r3 - 8001d8c: 43db mvns r3, r3 - 8001d8e: 69ba ldr r2, [r7, #24] - 8001d90: 4013 ands r3, r2 - 8001d92: 61bb str r3, [r7, #24] + 8001dda: 69fb ldr r3, [r7, #28] + 8001ddc: f003 0307 and.w r3, r3, #7 + 8001de0: 009b lsls r3, r3, #2 + 8001de2: 220f movs r2, #15 + 8001de4: fa02 f303 lsl.w r3, r2, r3 + 8001de8: 43db mvns r3, r3 + 8001dea: 69ba ldr r2, [r7, #24] + 8001dec: 4013 ands r3, r2 + 8001dee: 61bb str r3, [r7, #24] temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & 0x07U) * 4U)); - 8001d94: 683b ldr r3, [r7, #0] - 8001d96: 691a ldr r2, [r3, #16] - 8001d98: 69fb ldr r3, [r7, #28] - 8001d9a: f003 0307 and.w r3, r3, #7 - 8001d9e: 009b lsls r3, r3, #2 - 8001da0: fa02 f303 lsl.w r3, r2, r3 - 8001da4: 69ba ldr r2, [r7, #24] - 8001da6: 4313 orrs r3, r2 - 8001da8: 61bb str r3, [r7, #24] + 8001df0: 683b ldr r3, [r7, #0] + 8001df2: 691a ldr r2, [r3, #16] + 8001df4: 69fb ldr r3, [r7, #28] + 8001df6: f003 0307 and.w r3, r3, #7 + 8001dfa: 009b lsls r3, r3, #2 + 8001dfc: fa02 f303 lsl.w r3, r2, r3 + 8001e00: 69ba ldr r2, [r7, #24] + 8001e02: 4313 orrs r3, r2 + 8001e04: 61bb str r3, [r7, #24] GPIOx->AFR[position >> 3U] = temp; - 8001daa: 69fb ldr r3, [r7, #28] - 8001dac: 08da lsrs r2, r3, #3 - 8001dae: 687b ldr r3, [r7, #4] - 8001db0: 3208 adds r2, #8 - 8001db2: 69b9 ldr r1, [r7, #24] - 8001db4: f843 1022 str.w r1, [r3, r2, lsl #2] + 8001e06: 69fb ldr r3, [r7, #28] + 8001e08: 08da lsrs r2, r3, #3 + 8001e0a: 687b ldr r3, [r7, #4] + 8001e0c: 3208 adds r2, #8 + 8001e0e: 69b9 ldr r1, [r7, #24] + 8001e10: f843 1022 str.w r1, [r3, r2, lsl #2] } /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ temp = GPIOx->MODER; - 8001db8: 687b ldr r3, [r7, #4] - 8001dba: 681b ldr r3, [r3, #0] - 8001dbc: 61bb str r3, [r7, #24] + 8001e14: 687b ldr r3, [r7, #4] + 8001e16: 681b ldr r3, [r3, #0] + 8001e18: 61bb str r3, [r7, #24] temp &= ~(GPIO_MODER_MODER0 << (position * 2U)); - 8001dbe: 69fb ldr r3, [r7, #28] - 8001dc0: 005b lsls r3, r3, #1 - 8001dc2: 2203 movs r2, #3 - 8001dc4: fa02 f303 lsl.w r3, r2, r3 - 8001dc8: 43db mvns r3, r3 - 8001dca: 69ba ldr r2, [r7, #24] - 8001dcc: 4013 ands r3, r2 - 8001dce: 61bb str r3, [r7, #24] + 8001e1a: 69fb ldr r3, [r7, #28] + 8001e1c: 005b lsls r3, r3, #1 + 8001e1e: 2203 movs r2, #3 + 8001e20: fa02 f303 lsl.w r3, r2, r3 + 8001e24: 43db mvns r3, r3 + 8001e26: 69ba ldr r2, [r7, #24] + 8001e28: 4013 ands r3, r2 + 8001e2a: 61bb str r3, [r7, #24] temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U)); - 8001dd0: 683b ldr r3, [r7, #0] - 8001dd2: 685b ldr r3, [r3, #4] - 8001dd4: f003 0203 and.w r2, r3, #3 - 8001dd8: 69fb ldr r3, [r7, #28] - 8001dda: 005b lsls r3, r3, #1 - 8001ddc: fa02 f303 lsl.w r3, r2, r3 - 8001de0: 69ba ldr r2, [r7, #24] - 8001de2: 4313 orrs r3, r2 - 8001de4: 61bb str r3, [r7, #24] + 8001e2c: 683b ldr r3, [r7, #0] + 8001e2e: 685b ldr r3, [r3, #4] + 8001e30: f003 0203 and.w r2, r3, #3 + 8001e34: 69fb ldr r3, [r7, #28] + 8001e36: 005b lsls r3, r3, #1 + 8001e38: fa02 f303 lsl.w r3, r2, r3 + 8001e3c: 69ba ldr r2, [r7, #24] + 8001e3e: 4313 orrs r3, r2 + 8001e40: 61bb str r3, [r7, #24] GPIOx->MODER = temp; - 8001de6: 687b ldr r3, [r7, #4] - 8001de8: 69ba ldr r2, [r7, #24] - 8001dea: 601a str r2, [r3, #0] + 8001e42: 687b ldr r3, [r7, #4] + 8001e44: 69ba ldr r2, [r7, #24] + 8001e46: 601a str r2, [r3, #0] /*--------------------- EXTI Mode Configuration ------------------------*/ /* Configure the External Interrupt or event for the current IO */ if((GPIO_Init->Mode & EXTI_MODE) != 0x00U) - 8001dec: 683b ldr r3, [r7, #0] - 8001dee: 685b ldr r3, [r3, #4] - 8001df0: f403 3340 and.w r3, r3, #196608 @ 0x30000 - 8001df4: 2b00 cmp r3, #0 - 8001df6: f000 80c0 beq.w 8001f7a + 8001e48: 683b ldr r3, [r7, #0] + 8001e4a: 685b ldr r3, [r3, #4] + 8001e4c: f403 3340 and.w r3, r3, #196608 @ 0x30000 + 8001e50: 2b00 cmp r3, #0 + 8001e52: f000 80c0 beq.w 8001fd6 { /* Enable SYSCFG Clock */ __HAL_RCC_SYSCFG_CLK_ENABLE(); - 8001dfa: 2300 movs r3, #0 - 8001dfc: 60fb str r3, [r7, #12] - 8001dfe: 4b66 ldr r3, [pc, #408] @ (8001f98 ) - 8001e00: 6c5b ldr r3, [r3, #68] @ 0x44 - 8001e02: 4a65 ldr r2, [pc, #404] @ (8001f98 ) - 8001e04: f443 4380 orr.w r3, r3, #16384 @ 0x4000 - 8001e08: 6453 str r3, [r2, #68] @ 0x44 - 8001e0a: 4b63 ldr r3, [pc, #396] @ (8001f98 ) - 8001e0c: 6c5b ldr r3, [r3, #68] @ 0x44 - 8001e0e: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8001e12: 60fb str r3, [r7, #12] - 8001e14: 68fb ldr r3, [r7, #12] + 8001e56: 2300 movs r3, #0 + 8001e58: 60fb str r3, [r7, #12] + 8001e5a: 4b66 ldr r3, [pc, #408] @ (8001ff4 ) + 8001e5c: 6c5b ldr r3, [r3, #68] @ 0x44 + 8001e5e: 4a65 ldr r2, [pc, #404] @ (8001ff4 ) + 8001e60: f443 4380 orr.w r3, r3, #16384 @ 0x4000 + 8001e64: 6453 str r3, [r2, #68] @ 0x44 + 8001e66: 4b63 ldr r3, [pc, #396] @ (8001ff4 ) + 8001e68: 6c5b ldr r3, [r3, #68] @ 0x44 + 8001e6a: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8001e6e: 60fb str r3, [r7, #12] + 8001e70: 68fb ldr r3, [r7, #12] temp = SYSCFG->EXTICR[position >> 2U]; - 8001e16: 4a61 ldr r2, [pc, #388] @ (8001f9c ) - 8001e18: 69fb ldr r3, [r7, #28] - 8001e1a: 089b lsrs r3, r3, #2 - 8001e1c: 3302 adds r3, #2 - 8001e1e: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 8001e22: 61bb str r3, [r7, #24] + 8001e72: 4a61 ldr r2, [pc, #388] @ (8001ff8 ) + 8001e74: 69fb ldr r3, [r7, #28] + 8001e76: 089b lsrs r3, r3, #2 + 8001e78: 3302 adds r3, #2 + 8001e7a: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8001e7e: 61bb str r3, [r7, #24] temp &= ~(0x0FU << (4U * (position & 0x03U))); - 8001e24: 69fb ldr r3, [r7, #28] - 8001e26: f003 0303 and.w r3, r3, #3 - 8001e2a: 009b lsls r3, r3, #2 - 8001e2c: 220f movs r2, #15 - 8001e2e: fa02 f303 lsl.w r3, r2, r3 - 8001e32: 43db mvns r3, r3 - 8001e34: 69ba ldr r2, [r7, #24] - 8001e36: 4013 ands r3, r2 - 8001e38: 61bb str r3, [r7, #24] + 8001e80: 69fb ldr r3, [r7, #28] + 8001e82: f003 0303 and.w r3, r3, #3 + 8001e86: 009b lsls r3, r3, #2 + 8001e88: 220f movs r2, #15 + 8001e8a: fa02 f303 lsl.w r3, r2, r3 + 8001e8e: 43db mvns r3, r3 + 8001e90: 69ba ldr r2, [r7, #24] + 8001e92: 4013 ands r3, r2 + 8001e94: 61bb str r3, [r7, #24] temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4U * (position & 0x03U))); - 8001e3a: 687b ldr r3, [r7, #4] - 8001e3c: 4a58 ldr r2, [pc, #352] @ (8001fa0 ) - 8001e3e: 4293 cmp r3, r2 - 8001e40: d037 beq.n 8001eb2 - 8001e42: 687b ldr r3, [r7, #4] - 8001e44: 4a57 ldr r2, [pc, #348] @ (8001fa4 ) - 8001e46: 4293 cmp r3, r2 - 8001e48: d031 beq.n 8001eae - 8001e4a: 687b ldr r3, [r7, #4] - 8001e4c: 4a56 ldr r2, [pc, #344] @ (8001fa8 ) - 8001e4e: 4293 cmp r3, r2 - 8001e50: d02b beq.n 8001eaa - 8001e52: 687b ldr r3, [r7, #4] - 8001e54: 4a55 ldr r2, [pc, #340] @ (8001fac ) - 8001e56: 4293 cmp r3, r2 - 8001e58: d025 beq.n 8001ea6 - 8001e5a: 687b ldr r3, [r7, #4] - 8001e5c: 4a54 ldr r2, [pc, #336] @ (8001fb0 ) - 8001e5e: 4293 cmp r3, r2 - 8001e60: d01f beq.n 8001ea2 - 8001e62: 687b ldr r3, [r7, #4] - 8001e64: 4a53 ldr r2, [pc, #332] @ (8001fb4 ) - 8001e66: 4293 cmp r3, r2 - 8001e68: d019 beq.n 8001e9e - 8001e6a: 687b ldr r3, [r7, #4] - 8001e6c: 4a52 ldr r2, [pc, #328] @ (8001fb8 ) - 8001e6e: 4293 cmp r3, r2 - 8001e70: d013 beq.n 8001e9a - 8001e72: 687b ldr r3, [r7, #4] - 8001e74: 4a51 ldr r2, [pc, #324] @ (8001fbc ) - 8001e76: 4293 cmp r3, r2 - 8001e78: d00d beq.n 8001e96 - 8001e7a: 687b ldr r3, [r7, #4] - 8001e7c: 4a50 ldr r2, [pc, #320] @ (8001fc0 ) - 8001e7e: 4293 cmp r3, r2 - 8001e80: d007 beq.n 8001e92 - 8001e82: 687b ldr r3, [r7, #4] - 8001e84: 4a4f ldr r2, [pc, #316] @ (8001fc4 ) - 8001e86: 4293 cmp r3, r2 - 8001e88: d101 bne.n 8001e8e - 8001e8a: 2309 movs r3, #9 - 8001e8c: e012 b.n 8001eb4 - 8001e8e: 230a movs r3, #10 - 8001e90: e010 b.n 8001eb4 - 8001e92: 2308 movs r3, #8 - 8001e94: e00e b.n 8001eb4 - 8001e96: 2307 movs r3, #7 - 8001e98: e00c b.n 8001eb4 - 8001e9a: 2306 movs r3, #6 - 8001e9c: e00a b.n 8001eb4 - 8001e9e: 2305 movs r3, #5 - 8001ea0: e008 b.n 8001eb4 - 8001ea2: 2304 movs r3, #4 - 8001ea4: e006 b.n 8001eb4 - 8001ea6: 2303 movs r3, #3 - 8001ea8: e004 b.n 8001eb4 - 8001eaa: 2302 movs r3, #2 - 8001eac: e002 b.n 8001eb4 - 8001eae: 2301 movs r3, #1 - 8001eb0: e000 b.n 8001eb4 - 8001eb2: 2300 movs r3, #0 - 8001eb4: 69fa ldr r2, [r7, #28] - 8001eb6: f002 0203 and.w r2, r2, #3 - 8001eba: 0092 lsls r2, r2, #2 - 8001ebc: 4093 lsls r3, r2 - 8001ebe: 69ba ldr r2, [r7, #24] - 8001ec0: 4313 orrs r3, r2 - 8001ec2: 61bb str r3, [r7, #24] + 8001e96: 687b ldr r3, [r7, #4] + 8001e98: 4a58 ldr r2, [pc, #352] @ (8001ffc ) + 8001e9a: 4293 cmp r3, r2 + 8001e9c: d037 beq.n 8001f0e + 8001e9e: 687b ldr r3, [r7, #4] + 8001ea0: 4a57 ldr r2, [pc, #348] @ (8002000 ) + 8001ea2: 4293 cmp r3, r2 + 8001ea4: d031 beq.n 8001f0a + 8001ea6: 687b ldr r3, [r7, #4] + 8001ea8: 4a56 ldr r2, [pc, #344] @ (8002004 ) + 8001eaa: 4293 cmp r3, r2 + 8001eac: d02b beq.n 8001f06 + 8001eae: 687b ldr r3, [r7, #4] + 8001eb0: 4a55 ldr r2, [pc, #340] @ (8002008 ) + 8001eb2: 4293 cmp r3, r2 + 8001eb4: d025 beq.n 8001f02 + 8001eb6: 687b ldr r3, [r7, #4] + 8001eb8: 4a54 ldr r2, [pc, #336] @ (800200c ) + 8001eba: 4293 cmp r3, r2 + 8001ebc: d01f beq.n 8001efe + 8001ebe: 687b ldr r3, [r7, #4] + 8001ec0: 4a53 ldr r2, [pc, #332] @ (8002010 ) + 8001ec2: 4293 cmp r3, r2 + 8001ec4: d019 beq.n 8001efa + 8001ec6: 687b ldr r3, [r7, #4] + 8001ec8: 4a52 ldr r2, [pc, #328] @ (8002014 ) + 8001eca: 4293 cmp r3, r2 + 8001ecc: d013 beq.n 8001ef6 + 8001ece: 687b ldr r3, [r7, #4] + 8001ed0: 4a51 ldr r2, [pc, #324] @ (8002018 ) + 8001ed2: 4293 cmp r3, r2 + 8001ed4: d00d beq.n 8001ef2 + 8001ed6: 687b ldr r3, [r7, #4] + 8001ed8: 4a50 ldr r2, [pc, #320] @ (800201c ) + 8001eda: 4293 cmp r3, r2 + 8001edc: d007 beq.n 8001eee + 8001ede: 687b ldr r3, [r7, #4] + 8001ee0: 4a4f ldr r2, [pc, #316] @ (8002020 ) + 8001ee2: 4293 cmp r3, r2 + 8001ee4: d101 bne.n 8001eea + 8001ee6: 2309 movs r3, #9 + 8001ee8: e012 b.n 8001f10 + 8001eea: 230a movs r3, #10 + 8001eec: e010 b.n 8001f10 + 8001eee: 2308 movs r3, #8 + 8001ef0: e00e b.n 8001f10 + 8001ef2: 2307 movs r3, #7 + 8001ef4: e00c b.n 8001f10 + 8001ef6: 2306 movs r3, #6 + 8001ef8: e00a b.n 8001f10 + 8001efa: 2305 movs r3, #5 + 8001efc: e008 b.n 8001f10 + 8001efe: 2304 movs r3, #4 + 8001f00: e006 b.n 8001f10 + 8001f02: 2303 movs r3, #3 + 8001f04: e004 b.n 8001f10 + 8001f06: 2302 movs r3, #2 + 8001f08: e002 b.n 8001f10 + 8001f0a: 2301 movs r3, #1 + 8001f0c: e000 b.n 8001f10 + 8001f0e: 2300 movs r3, #0 + 8001f10: 69fa ldr r2, [r7, #28] + 8001f12: f002 0203 and.w r2, r2, #3 + 8001f16: 0092 lsls r2, r2, #2 + 8001f18: 4093 lsls r3, r2 + 8001f1a: 69ba ldr r2, [r7, #24] + 8001f1c: 4313 orrs r3, r2 + 8001f1e: 61bb str r3, [r7, #24] SYSCFG->EXTICR[position >> 2U] = temp; - 8001ec4: 4935 ldr r1, [pc, #212] @ (8001f9c ) - 8001ec6: 69fb ldr r3, [r7, #28] - 8001ec8: 089b lsrs r3, r3, #2 - 8001eca: 3302 adds r3, #2 - 8001ecc: 69ba ldr r2, [r7, #24] - 8001ece: f841 2023 str.w r2, [r1, r3, lsl #2] + 8001f20: 4935 ldr r1, [pc, #212] @ (8001ff8 ) + 8001f22: 69fb ldr r3, [r7, #28] + 8001f24: 089b lsrs r3, r3, #2 + 8001f26: 3302 adds r3, #2 + 8001f28: 69ba ldr r2, [r7, #24] + 8001f2a: f841 2023 str.w r2, [r1, r3, lsl #2] /* Clear Rising Falling edge configuration */ temp = EXTI->RTSR; - 8001ed2: 4b3d ldr r3, [pc, #244] @ (8001fc8 ) - 8001ed4: 689b ldr r3, [r3, #8] - 8001ed6: 61bb str r3, [r7, #24] + 8001f2e: 4b3d ldr r3, [pc, #244] @ (8002024 ) + 8001f30: 689b ldr r3, [r3, #8] + 8001f32: 61bb str r3, [r7, #24] temp &= ~((uint32_t)iocurrent); - 8001ed8: 693b ldr r3, [r7, #16] - 8001eda: 43db mvns r3, r3 - 8001edc: 69ba ldr r2, [r7, #24] - 8001ede: 4013 ands r3, r2 - 8001ee0: 61bb str r3, [r7, #24] + 8001f34: 693b ldr r3, [r7, #16] + 8001f36: 43db mvns r3, r3 + 8001f38: 69ba ldr r2, [r7, #24] + 8001f3a: 4013 ands r3, r2 + 8001f3c: 61bb str r3, [r7, #24] if((GPIO_Init->Mode & TRIGGER_RISING) != 0x00U) - 8001ee2: 683b ldr r3, [r7, #0] - 8001ee4: 685b ldr r3, [r3, #4] - 8001ee6: f403 1380 and.w r3, r3, #1048576 @ 0x100000 - 8001eea: 2b00 cmp r3, #0 - 8001eec: d003 beq.n 8001ef6 + 8001f3e: 683b ldr r3, [r7, #0] + 8001f40: 685b ldr r3, [r3, #4] + 8001f42: f403 1380 and.w r3, r3, #1048576 @ 0x100000 + 8001f46: 2b00 cmp r3, #0 + 8001f48: d003 beq.n 8001f52 { temp |= iocurrent; - 8001eee: 69ba ldr r2, [r7, #24] - 8001ef0: 693b ldr r3, [r7, #16] - 8001ef2: 4313 orrs r3, r2 - 8001ef4: 61bb str r3, [r7, #24] + 8001f4a: 69ba ldr r2, [r7, #24] + 8001f4c: 693b ldr r3, [r7, #16] + 8001f4e: 4313 orrs r3, r2 + 8001f50: 61bb str r3, [r7, #24] } EXTI->RTSR = temp; - 8001ef6: 4a34 ldr r2, [pc, #208] @ (8001fc8 ) - 8001ef8: 69bb ldr r3, [r7, #24] - 8001efa: 6093 str r3, [r2, #8] + 8001f52: 4a34 ldr r2, [pc, #208] @ (8002024 ) + 8001f54: 69bb ldr r3, [r7, #24] + 8001f56: 6093 str r3, [r2, #8] temp = EXTI->FTSR; - 8001efc: 4b32 ldr r3, [pc, #200] @ (8001fc8 ) - 8001efe: 68db ldr r3, [r3, #12] - 8001f00: 61bb str r3, [r7, #24] + 8001f58: 4b32 ldr r3, [pc, #200] @ (8002024 ) + 8001f5a: 68db ldr r3, [r3, #12] + 8001f5c: 61bb str r3, [r7, #24] temp &= ~((uint32_t)iocurrent); - 8001f02: 693b ldr r3, [r7, #16] - 8001f04: 43db mvns r3, r3 - 8001f06: 69ba ldr r2, [r7, #24] - 8001f08: 4013 ands r3, r2 - 8001f0a: 61bb str r3, [r7, #24] + 8001f5e: 693b ldr r3, [r7, #16] + 8001f60: 43db mvns r3, r3 + 8001f62: 69ba ldr r2, [r7, #24] + 8001f64: 4013 ands r3, r2 + 8001f66: 61bb str r3, [r7, #24] if((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00U) - 8001f0c: 683b ldr r3, [r7, #0] - 8001f0e: 685b ldr r3, [r3, #4] - 8001f10: f403 1300 and.w r3, r3, #2097152 @ 0x200000 - 8001f14: 2b00 cmp r3, #0 - 8001f16: d003 beq.n 8001f20 + 8001f68: 683b ldr r3, [r7, #0] + 8001f6a: 685b ldr r3, [r3, #4] + 8001f6c: f403 1300 and.w r3, r3, #2097152 @ 0x200000 + 8001f70: 2b00 cmp r3, #0 + 8001f72: d003 beq.n 8001f7c { temp |= iocurrent; - 8001f18: 69ba ldr r2, [r7, #24] - 8001f1a: 693b ldr r3, [r7, #16] - 8001f1c: 4313 orrs r3, r2 - 8001f1e: 61bb str r3, [r7, #24] + 8001f74: 69ba ldr r2, [r7, #24] + 8001f76: 693b ldr r3, [r7, #16] + 8001f78: 4313 orrs r3, r2 + 8001f7a: 61bb str r3, [r7, #24] } EXTI->FTSR = temp; - 8001f20: 4a29 ldr r2, [pc, #164] @ (8001fc8 ) - 8001f22: 69bb ldr r3, [r7, #24] - 8001f24: 60d3 str r3, [r2, #12] + 8001f7c: 4a29 ldr r2, [pc, #164] @ (8002024 ) + 8001f7e: 69bb ldr r3, [r7, #24] + 8001f80: 60d3 str r3, [r2, #12] temp = EXTI->EMR; - 8001f26: 4b28 ldr r3, [pc, #160] @ (8001fc8 ) - 8001f28: 685b ldr r3, [r3, #4] - 8001f2a: 61bb str r3, [r7, #24] + 8001f82: 4b28 ldr r3, [pc, #160] @ (8002024 ) + 8001f84: 685b ldr r3, [r3, #4] + 8001f86: 61bb str r3, [r7, #24] temp &= ~((uint32_t)iocurrent); - 8001f2c: 693b ldr r3, [r7, #16] - 8001f2e: 43db mvns r3, r3 - 8001f30: 69ba ldr r2, [r7, #24] - 8001f32: 4013 ands r3, r2 - 8001f34: 61bb str r3, [r7, #24] + 8001f88: 693b ldr r3, [r7, #16] + 8001f8a: 43db mvns r3, r3 + 8001f8c: 69ba ldr r2, [r7, #24] + 8001f8e: 4013 ands r3, r2 + 8001f90: 61bb str r3, [r7, #24] if((GPIO_Init->Mode & EXTI_EVT) != 0x00U) - 8001f36: 683b ldr r3, [r7, #0] - 8001f38: 685b ldr r3, [r3, #4] - 8001f3a: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 8001f3e: 2b00 cmp r3, #0 - 8001f40: d003 beq.n 8001f4a + 8001f92: 683b ldr r3, [r7, #0] + 8001f94: 685b ldr r3, [r3, #4] + 8001f96: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8001f9a: 2b00 cmp r3, #0 + 8001f9c: d003 beq.n 8001fa6 { temp |= iocurrent; - 8001f42: 69ba ldr r2, [r7, #24] - 8001f44: 693b ldr r3, [r7, #16] - 8001f46: 4313 orrs r3, r2 - 8001f48: 61bb str r3, [r7, #24] + 8001f9e: 69ba ldr r2, [r7, #24] + 8001fa0: 693b ldr r3, [r7, #16] + 8001fa2: 4313 orrs r3, r2 + 8001fa4: 61bb str r3, [r7, #24] } EXTI->EMR = temp; - 8001f4a: 4a1f ldr r2, [pc, #124] @ (8001fc8 ) - 8001f4c: 69bb ldr r3, [r7, #24] - 8001f4e: 6053 str r3, [r2, #4] + 8001fa6: 4a1f ldr r2, [pc, #124] @ (8002024 ) + 8001fa8: 69bb ldr r3, [r7, #24] + 8001faa: 6053 str r3, [r2, #4] /* Clear EXTI line configuration */ temp = EXTI->IMR; - 8001f50: 4b1d ldr r3, [pc, #116] @ (8001fc8 ) - 8001f52: 681b ldr r3, [r3, #0] - 8001f54: 61bb str r3, [r7, #24] + 8001fac: 4b1d ldr r3, [pc, #116] @ (8002024 ) + 8001fae: 681b ldr r3, [r3, #0] + 8001fb0: 61bb str r3, [r7, #24] temp &= ~((uint32_t)iocurrent); - 8001f56: 693b ldr r3, [r7, #16] - 8001f58: 43db mvns r3, r3 - 8001f5a: 69ba ldr r2, [r7, #24] - 8001f5c: 4013 ands r3, r2 - 8001f5e: 61bb str r3, [r7, #24] + 8001fb2: 693b ldr r3, [r7, #16] + 8001fb4: 43db mvns r3, r3 + 8001fb6: 69ba ldr r2, [r7, #24] + 8001fb8: 4013 ands r3, r2 + 8001fba: 61bb str r3, [r7, #24] if((GPIO_Init->Mode & EXTI_IT) != 0x00U) - 8001f60: 683b ldr r3, [r7, #0] - 8001f62: 685b ldr r3, [r3, #4] - 8001f64: f403 3380 and.w r3, r3, #65536 @ 0x10000 - 8001f68: 2b00 cmp r3, #0 - 8001f6a: d003 beq.n 8001f74 + 8001fbc: 683b ldr r3, [r7, #0] + 8001fbe: 685b ldr r3, [r3, #4] + 8001fc0: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8001fc4: 2b00 cmp r3, #0 + 8001fc6: d003 beq.n 8001fd0 { temp |= iocurrent; - 8001f6c: 69ba ldr r2, [r7, #24] - 8001f6e: 693b ldr r3, [r7, #16] - 8001f70: 4313 orrs r3, r2 - 8001f72: 61bb str r3, [r7, #24] + 8001fc8: 69ba ldr r2, [r7, #24] + 8001fca: 693b ldr r3, [r7, #16] + 8001fcc: 4313 orrs r3, r2 + 8001fce: 61bb str r3, [r7, #24] } EXTI->IMR = temp; - 8001f74: 4a14 ldr r2, [pc, #80] @ (8001fc8 ) - 8001f76: 69bb ldr r3, [r7, #24] - 8001f78: 6013 str r3, [r2, #0] + 8001fd0: 4a14 ldr r2, [pc, #80] @ (8002024 ) + 8001fd2: 69bb ldr r3, [r7, #24] + 8001fd4: 6013 str r3, [r2, #0] for(position = 0U; position < GPIO_NUMBER; position++) - 8001f7a: 69fb ldr r3, [r7, #28] - 8001f7c: 3301 adds r3, #1 - 8001f7e: 61fb str r3, [r7, #28] - 8001f80: 69fb ldr r3, [r7, #28] - 8001f82: 2b0f cmp r3, #15 - 8001f84: f67f ae84 bls.w 8001c90 + 8001fd6: 69fb ldr r3, [r7, #28] + 8001fd8: 3301 adds r3, #1 + 8001fda: 61fb str r3, [r7, #28] + 8001fdc: 69fb ldr r3, [r7, #28] + 8001fde: 2b0f cmp r3, #15 + 8001fe0: f67f ae84 bls.w 8001cec } } } } - 8001f88: bf00 nop - 8001f8a: bf00 nop - 8001f8c: 3724 adds r7, #36 @ 0x24 - 8001f8e: 46bd mov sp, r7 - 8001f90: f85d 7b04 ldr.w r7, [sp], #4 - 8001f94: 4770 bx lr - 8001f96: bf00 nop - 8001f98: 40023800 .word 0x40023800 - 8001f9c: 40013800 .word 0x40013800 - 8001fa0: 40020000 .word 0x40020000 - 8001fa4: 40020400 .word 0x40020400 - 8001fa8: 40020800 .word 0x40020800 - 8001fac: 40020c00 .word 0x40020c00 - 8001fb0: 40021000 .word 0x40021000 - 8001fb4: 40021400 .word 0x40021400 - 8001fb8: 40021800 .word 0x40021800 - 8001fbc: 40021c00 .word 0x40021c00 - 8001fc0: 40022000 .word 0x40022000 - 8001fc4: 40022400 .word 0x40022400 - 8001fc8: 40013c00 .word 0x40013c00 + 8001fe4: bf00 nop + 8001fe6: bf00 nop + 8001fe8: 3724 adds r7, #36 @ 0x24 + 8001fea: 46bd mov sp, r7 + 8001fec: f85d 7b04 ldr.w r7, [sp], #4 + 8001ff0: 4770 bx lr + 8001ff2: bf00 nop + 8001ff4: 40023800 .word 0x40023800 + 8001ff8: 40013800 .word 0x40013800 + 8001ffc: 40020000 .word 0x40020000 + 8002000: 40020400 .word 0x40020400 + 8002004: 40020800 .word 0x40020800 + 8002008: 40020c00 .word 0x40020c00 + 800200c: 40021000 .word 0x40021000 + 8002010: 40021400 .word 0x40021400 + 8002014: 40021800 .word 0x40021800 + 8002018: 40021c00 .word 0x40021c00 + 800201c: 40022000 .word 0x40022000 + 8002020: 40022400 .word 0x40022400 + 8002024: 40013c00 .word 0x40013c00 -08001fcc : +08002028 : * @arg GPIO_PIN_RESET: to clear the port pin * @arg GPIO_PIN_SET: to set the port pin * @retval None */ void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) { - 8001fcc: b480 push {r7} - 8001fce: b083 sub sp, #12 - 8001fd0: af00 add r7, sp, #0 - 8001fd2: 6078 str r0, [r7, #4] - 8001fd4: 460b mov r3, r1 - 8001fd6: 807b strh r3, [r7, #2] - 8001fd8: 4613 mov r3, r2 - 8001fda: 707b strb r3, [r7, #1] + 8002028: b480 push {r7} + 800202a: b083 sub sp, #12 + 800202c: af00 add r7, sp, #0 + 800202e: 6078 str r0, [r7, #4] + 8002030: 460b mov r3, r1 + 8002032: 807b strh r3, [r7, #2] + 8002034: 4613 mov r3, r2 + 8002036: 707b strb r3, [r7, #1] /* Check the parameters */ assert_param(IS_GPIO_PIN(GPIO_Pin)); assert_param(IS_GPIO_PIN_ACTION(PinState)); if(PinState != GPIO_PIN_RESET) - 8001fdc: 787b ldrb r3, [r7, #1] - 8001fde: 2b00 cmp r3, #0 - 8001fe0: d003 beq.n 8001fea + 8002038: 787b ldrb r3, [r7, #1] + 800203a: 2b00 cmp r3, #0 + 800203c: d003 beq.n 8002046 { GPIOx->BSRR = GPIO_Pin; - 8001fe2: 887a ldrh r2, [r7, #2] - 8001fe4: 687b ldr r3, [r7, #4] - 8001fe6: 619a str r2, [r3, #24] + 800203e: 887a ldrh r2, [r7, #2] + 8002040: 687b ldr r3, [r7, #4] + 8002042: 619a str r2, [r3, #24] } else { GPIOx->BSRR = (uint32_t)GPIO_Pin << 16U; } } - 8001fe8: e003 b.n 8001ff2 + 8002044: e003 b.n 800204e GPIOx->BSRR = (uint32_t)GPIO_Pin << 16U; - 8001fea: 887b ldrh r3, [r7, #2] - 8001fec: 041a lsls r2, r3, #16 - 8001fee: 687b ldr r3, [r7, #4] - 8001ff0: 619a str r2, [r3, #24] + 8002046: 887b ldrh r3, [r7, #2] + 8002048: 041a lsls r2, r3, #16 + 800204a: 687b ldr r3, [r7, #4] + 800204c: 619a str r2, [r3, #24] } - 8001ff2: bf00 nop - 8001ff4: 370c adds r7, #12 - 8001ff6: 46bd mov sp, r7 - 8001ff8: f85d 7b04 ldr.w r7, [sp], #4 - 8001ffc: 4770 bx lr + 800204e: bf00 nop + 8002050: 370c adds r7, #12 + 8002052: 46bd mov sp, r7 + 8002054: f85d 7b04 ldr.w r7, [sp], #4 + 8002058: 4770 bx lr -08001ffe : +0800205a : * x can be (A..I) to select the GPIO peripheral for STM32F40XX and STM32F427X devices. * @param GPIO_Pin Specifies the pins to be toggled. * @retval None */ void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) { - 8001ffe: b480 push {r7} - 8002000: b085 sub sp, #20 - 8002002: af00 add r7, sp, #0 - 8002004: 6078 str r0, [r7, #4] - 8002006: 460b mov r3, r1 - 8002008: 807b strh r3, [r7, #2] + 800205a: b480 push {r7} + 800205c: b085 sub sp, #20 + 800205e: af00 add r7, sp, #0 + 8002060: 6078 str r0, [r7, #4] + 8002062: 460b mov r3, r1 + 8002064: 807b strh r3, [r7, #2] /* Check the parameters */ assert_param(IS_GPIO_PIN(GPIO_Pin)); /* get current Output Data Register value */ odr = GPIOx->ODR; - 800200a: 687b ldr r3, [r7, #4] - 800200c: 695b ldr r3, [r3, #20] - 800200e: 60fb str r3, [r7, #12] + 8002066: 687b ldr r3, [r7, #4] + 8002068: 695b ldr r3, [r3, #20] + 800206a: 60fb str r3, [r7, #12] /* Set selected pins that were at low level, and reset ones that were high */ GPIOx->BSRR = ((odr & GPIO_Pin) << GPIO_NUMBER) | (~odr & GPIO_Pin); - 8002010: 887a ldrh r2, [r7, #2] - 8002012: 68fb ldr r3, [r7, #12] - 8002014: 4013 ands r3, r2 - 8002016: 041a lsls r2, r3, #16 - 8002018: 68fb ldr r3, [r7, #12] - 800201a: 43d9 mvns r1, r3 - 800201c: 887b ldrh r3, [r7, #2] - 800201e: 400b ands r3, r1 - 8002020: 431a orrs r2, r3 - 8002022: 687b ldr r3, [r7, #4] - 8002024: 619a str r2, [r3, #24] + 800206c: 887a ldrh r2, [r7, #2] + 800206e: 68fb ldr r3, [r7, #12] + 8002070: 4013 ands r3, r2 + 8002072: 041a lsls r2, r3, #16 + 8002074: 68fb ldr r3, [r7, #12] + 8002076: 43d9 mvns r1, r3 + 8002078: 887b ldrh r3, [r7, #2] + 800207a: 400b ands r3, r1 + 800207c: 431a orrs r2, r3 + 800207e: 687b ldr r3, [r7, #4] + 8002080: 619a str r2, [r3, #24] } - 8002026: bf00 nop - 8002028: 3714 adds r7, #20 - 800202a: 46bd mov sp, r7 - 800202c: f85d 7b04 ldr.w r7, [sp], #4 - 8002030: 4770 bx lr + 8002082: bf00 nop + 8002084: 3714 adds r7, #20 + 8002086: 46bd mov sp, r7 + 8002088: f85d 7b04 ldr.w r7, [sp], #4 + 800208c: 4770 bx lr -08002032 : +0800208e : * @brief Handle HCD interrupt request. * @param hhcd HCD handle * @retval None */ void HAL_HCD_IRQHandler(HCD_HandleTypeDef *hhcd) { - 8002032: b580 push {r7, lr} - 8002034: b086 sub sp, #24 - 8002036: af00 add r7, sp, #0 - 8002038: 6078 str r0, [r7, #4] + 800208e: b580 push {r7, lr} + 8002090: b086 sub sp, #24 + 8002092: af00 add r7, sp, #0 + 8002094: 6078 str r0, [r7, #4] USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; - 800203a: 687b ldr r3, [r7, #4] - 800203c: 681b ldr r3, [r3, #0] - 800203e: 613b str r3, [r7, #16] + 8002096: 687b ldr r3, [r7, #4] + 8002098: 681b ldr r3, [r3, #0] + 800209a: 613b str r3, [r7, #16] uint32_t USBx_BASE = (uint32_t)USBx; - 8002040: 693b ldr r3, [r7, #16] - 8002042: 60fb str r3, [r7, #12] + 800209c: 693b ldr r3, [r7, #16] + 800209e: 60fb str r3, [r7, #12] uint32_t i; uint32_t interrupt; /* Ensure that we are in device mode */ if (USB_GetMode(hhcd->Instance) == USB_OTG_MODE_HOST) - 8002044: 687b ldr r3, [r7, #4] - 8002046: 681b ldr r3, [r3, #0] - 8002048: 4618 mov r0, r3 - 800204a: f004 fab7 bl 80065bc - 800204e: 4603 mov r3, r0 - 8002050: 2b01 cmp r3, #1 - 8002052: f040 80fb bne.w 800224c + 80020a0: 687b ldr r3, [r7, #4] + 80020a2: 681b ldr r3, [r3, #0] + 80020a4: 4618 mov r0, r3 + 80020a6: f004 fab7 bl 8006618 + 80020aa: 4603 mov r3, r0 + 80020ac: 2b01 cmp r3, #1 + 80020ae: f040 80fb bne.w 80022a8 { /* Avoid spurious interrupt */ if (__HAL_HCD_IS_INVALID_INTERRUPT(hhcd)) - 8002056: 687b ldr r3, [r7, #4] - 8002058: 681b ldr r3, [r3, #0] - 800205a: 4618 mov r0, r3 - 800205c: f004 fa7a bl 8006554 - 8002060: 4603 mov r3, r0 - 8002062: 2b00 cmp r3, #0 - 8002064: f000 80f1 beq.w 800224a + 80020b2: 687b ldr r3, [r7, #4] + 80020b4: 681b ldr r3, [r3, #0] + 80020b6: 4618 mov r0, r3 + 80020b8: f004 fa7a bl 80065b0 + 80020bc: 4603 mov r3, r0 + 80020be: 2b00 cmp r3, #0 + 80020c0: f000 80f1 beq.w 80022a6 { return; } if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT)) - 8002068: 687b ldr r3, [r7, #4] - 800206a: 681b ldr r3, [r3, #0] - 800206c: 4618 mov r0, r3 - 800206e: f004 fa71 bl 8006554 - 8002072: 4603 mov r3, r0 - 8002074: f403 1300 and.w r3, r3, #2097152 @ 0x200000 - 8002078: f5b3 1f00 cmp.w r3, #2097152 @ 0x200000 - 800207c: d104 bne.n 8002088 + 80020c4: 687b ldr r3, [r7, #4] + 80020c6: 681b ldr r3, [r3, #0] + 80020c8: 4618 mov r0, r3 + 80020ca: f004 fa71 bl 80065b0 + 80020ce: 4603 mov r3, r0 + 80020d0: f403 1300 and.w r3, r3, #2097152 @ 0x200000 + 80020d4: f5b3 1f00 cmp.w r3, #2097152 @ 0x200000 + 80020d8: d104 bne.n 80020e4 { /* Incorrect mode, acknowledge the interrupt */ __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT); - 800207e: 687b ldr r3, [r7, #4] - 8002080: 681b ldr r3, [r3, #0] - 8002082: f44f 1200 mov.w r2, #2097152 @ 0x200000 - 8002086: 615a str r2, [r3, #20] + 80020da: 687b ldr r3, [r7, #4] + 80020dc: 681b ldr r3, [r3, #0] + 80020de: f44f 1200 mov.w r2, #2097152 @ 0x200000 + 80020e2: 615a str r2, [r3, #20] } if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_IISOIXFR)) - 8002088: 687b ldr r3, [r7, #4] - 800208a: 681b ldr r3, [r3, #0] - 800208c: 4618 mov r0, r3 - 800208e: f004 fa61 bl 8006554 - 8002092: 4603 mov r3, r0 - 8002094: f403 1380 and.w r3, r3, #1048576 @ 0x100000 - 8002098: f5b3 1f80 cmp.w r3, #1048576 @ 0x100000 - 800209c: d104 bne.n 80020a8 + 80020e4: 687b ldr r3, [r7, #4] + 80020e6: 681b ldr r3, [r3, #0] + 80020e8: 4618 mov r0, r3 + 80020ea: f004 fa61 bl 80065b0 + 80020ee: 4603 mov r3, r0 + 80020f0: f403 1380 and.w r3, r3, #1048576 @ 0x100000 + 80020f4: f5b3 1f80 cmp.w r3, #1048576 @ 0x100000 + 80020f8: d104 bne.n 8002104 { /* Incorrect mode, acknowledge the interrupt */ __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_IISOIXFR); - 800209e: 687b ldr r3, [r7, #4] - 80020a0: 681b ldr r3, [r3, #0] - 80020a2: f44f 1280 mov.w r2, #1048576 @ 0x100000 - 80020a6: 615a str r2, [r3, #20] + 80020fa: 687b ldr r3, [r7, #4] + 80020fc: 681b ldr r3, [r3, #0] + 80020fe: f44f 1280 mov.w r2, #1048576 @ 0x100000 + 8002102: 615a str r2, [r3, #20] } if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_PTXFE)) - 80020a8: 687b ldr r3, [r7, #4] - 80020aa: 681b ldr r3, [r3, #0] - 80020ac: 4618 mov r0, r3 - 80020ae: f004 fa51 bl 8006554 - 80020b2: 4603 mov r3, r0 - 80020b4: f003 6380 and.w r3, r3, #67108864 @ 0x4000000 - 80020b8: f1b3 6f80 cmp.w r3, #67108864 @ 0x4000000 - 80020bc: d104 bne.n 80020c8 + 8002104: 687b ldr r3, [r7, #4] + 8002106: 681b ldr r3, [r3, #0] + 8002108: 4618 mov r0, r3 + 800210a: f004 fa51 bl 80065b0 + 800210e: 4603 mov r3, r0 + 8002110: f003 6380 and.w r3, r3, #67108864 @ 0x4000000 + 8002114: f1b3 6f80 cmp.w r3, #67108864 @ 0x4000000 + 8002118: d104 bne.n 8002124 { /* Incorrect mode, acknowledge the interrupt */ __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_PTXFE); - 80020be: 687b ldr r3, [r7, #4] - 80020c0: 681b ldr r3, [r3, #0] - 80020c2: f04f 6280 mov.w r2, #67108864 @ 0x4000000 - 80020c6: 615a str r2, [r3, #20] + 800211a: 687b ldr r3, [r7, #4] + 800211c: 681b ldr r3, [r3, #0] + 800211e: f04f 6280 mov.w r2, #67108864 @ 0x4000000 + 8002122: 615a str r2, [r3, #20] } if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_MMIS)) - 80020c8: 687b ldr r3, [r7, #4] - 80020ca: 681b ldr r3, [r3, #0] - 80020cc: 4618 mov r0, r3 - 80020ce: f004 fa41 bl 8006554 - 80020d2: 4603 mov r3, r0 - 80020d4: f003 0302 and.w r3, r3, #2 - 80020d8: 2b02 cmp r3, #2 - 80020da: d103 bne.n 80020e4 + 8002124: 687b ldr r3, [r7, #4] + 8002126: 681b ldr r3, [r3, #0] + 8002128: 4618 mov r0, r3 + 800212a: f004 fa41 bl 80065b0 + 800212e: 4603 mov r3, r0 + 8002130: f003 0302 and.w r3, r3, #2 + 8002134: 2b02 cmp r3, #2 + 8002136: d103 bne.n 8002140 { /* Incorrect mode, acknowledge the interrupt */ __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_MMIS); - 80020dc: 687b ldr r3, [r7, #4] - 80020de: 681b ldr r3, [r3, #0] - 80020e0: 2202 movs r2, #2 - 80020e2: 615a str r2, [r3, #20] + 8002138: 687b ldr r3, [r7, #4] + 800213a: 681b ldr r3, [r3, #0] + 800213c: 2202 movs r2, #2 + 800213e: 615a str r2, [r3, #20] } /* Handle Host Disconnect Interrupts */ if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_DISCINT)) - 80020e4: 687b ldr r3, [r7, #4] - 80020e6: 681b ldr r3, [r3, #0] - 80020e8: 4618 mov r0, r3 - 80020ea: f004 fa33 bl 8006554 - 80020ee: 4603 mov r3, r0 - 80020f0: f003 5300 and.w r3, r3, #536870912 @ 0x20000000 - 80020f4: f1b3 5f00 cmp.w r3, #536870912 @ 0x20000000 - 80020f8: d120 bne.n 800213c + 8002140: 687b ldr r3, [r7, #4] + 8002142: 681b ldr r3, [r3, #0] + 8002144: 4618 mov r0, r3 + 8002146: f004 fa33 bl 80065b0 + 800214a: 4603 mov r3, r0 + 800214c: f003 5300 and.w r3, r3, #536870912 @ 0x20000000 + 8002150: f1b3 5f00 cmp.w r3, #536870912 @ 0x20000000 + 8002154: d120 bne.n 8002198 { __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_DISCINT); - 80020fa: 687b ldr r3, [r7, #4] - 80020fc: 681b ldr r3, [r3, #0] - 80020fe: f04f 5200 mov.w r2, #536870912 @ 0x20000000 - 8002102: 615a str r2, [r3, #20] + 8002156: 687b ldr r3, [r7, #4] + 8002158: 681b ldr r3, [r3, #0] + 800215a: f04f 5200 mov.w r2, #536870912 @ 0x20000000 + 800215e: 615a str r2, [r3, #20] if ((USBx_HPRT0 & USB_OTG_HPRT_PCSTS) == 0U) - 8002104: 68fb ldr r3, [r7, #12] - 8002106: f503 6388 add.w r3, r3, #1088 @ 0x440 - 800210a: 681b ldr r3, [r3, #0] - 800210c: f003 0301 and.w r3, r3, #1 - 8002110: 2b00 cmp r3, #0 - 8002112: d113 bne.n 800213c + 8002160: 68fb ldr r3, [r7, #12] + 8002162: f503 6388 add.w r3, r3, #1088 @ 0x440 + 8002166: 681b ldr r3, [r3, #0] + 8002168: f003 0301 and.w r3, r3, #1 + 800216c: 2b00 cmp r3, #0 + 800216e: d113 bne.n 8002198 { /* Flush USB Fifo */ (void)USB_FlushTxFifo(USBx, 0x10U); - 8002114: 2110 movs r1, #16 - 8002116: 6938 ldr r0, [r7, #16] - 8002118: f004 f964 bl 80063e4 + 8002170: 2110 movs r1, #16 + 8002172: 6938 ldr r0, [r7, #16] + 8002174: f004 f964 bl 8006440 (void)USB_FlushRxFifo(USBx); - 800211c: 6938 ldr r0, [r7, #16] - 800211e: f004 f993 bl 8006448 + 8002178: 6938 ldr r0, [r7, #16] + 800217a: f004 f993 bl 80064a4 if (hhcd->Init.phy_itface == USB_OTG_EMBEDDED_PHY) - 8002122: 687b ldr r3, [r7, #4] - 8002124: 7a5b ldrb r3, [r3, #9] - 8002126: 2b02 cmp r3, #2 - 8002128: d105 bne.n 8002136 + 800217e: 687b ldr r3, [r7, #4] + 8002180: 7a5b ldrb r3, [r3, #9] + 8002182: 2b02 cmp r3, #2 + 8002184: d105 bne.n 8002192 { /* Restore FS Clock */ (void)USB_InitFSLSPClkSel(hhcd->Instance, HCFG_48_MHZ); - 800212a: 687b ldr r3, [r7, #4] - 800212c: 681b ldr r3, [r3, #0] - 800212e: 2101 movs r1, #1 - 8002130: 4618 mov r0, r3 - 8002132: f004 fa51 bl 80065d8 + 8002186: 687b ldr r3, [r7, #4] + 8002188: 681b ldr r3, [r3, #0] + 800218a: 2101 movs r1, #1 + 800218c: 4618 mov r0, r3 + 800218e: f004 fa51 bl 8006634 /* Handle Host Port Disconnect Interrupt */ #if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) hhcd->DisconnectCallback(hhcd); #else HAL_HCD_Disconnect_Callback(hhcd); - 8002136: 6878 ldr r0, [r7, #4] - 8002138: f005 fe26 bl 8007d88 + 8002192: 6878 ldr r0, [r7, #4] + 8002194: f005 fe20 bl 8007dd8 #endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ } } /* Handle Host Port Interrupts */ if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_HPRTINT)) - 800213c: 687b ldr r3, [r7, #4] - 800213e: 681b ldr r3, [r3, #0] - 8002140: 4618 mov r0, r3 - 8002142: f004 fa07 bl 8006554 - 8002146: 4603 mov r3, r0 - 8002148: f003 7380 and.w r3, r3, #16777216 @ 0x1000000 - 800214c: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 - 8002150: d102 bne.n 8002158 + 8002198: 687b ldr r3, [r7, #4] + 800219a: 681b ldr r3, [r3, #0] + 800219c: 4618 mov r0, r3 + 800219e: f004 fa07 bl 80065b0 + 80021a2: 4603 mov r3, r0 + 80021a4: f003 7380 and.w r3, r3, #16777216 @ 0x1000000 + 80021a8: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 + 80021ac: d102 bne.n 80021b4 { HCD_Port_IRQHandler(hhcd); - 8002152: 6878 ldr r0, [r7, #4] - 8002154: f001 fca1 bl 8003a9a + 80021ae: 6878 ldr r0, [r7, #4] + 80021b0: f001 fca1 bl 8003af6 } /* Handle Host SOF Interrupt */ if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_SOF)) - 8002158: 687b ldr r3, [r7, #4] - 800215a: 681b ldr r3, [r3, #0] - 800215c: 4618 mov r0, r3 - 800215e: f004 f9f9 bl 8006554 - 8002162: 4603 mov r3, r0 - 8002164: f003 0308 and.w r3, r3, #8 - 8002168: 2b08 cmp r3, #8 - 800216a: d106 bne.n 800217a + 80021b4: 687b ldr r3, [r7, #4] + 80021b6: 681b ldr r3, [r3, #0] + 80021b8: 4618 mov r0, r3 + 80021ba: f004 f9f9 bl 80065b0 + 80021be: 4603 mov r3, r0 + 80021c0: f003 0308 and.w r3, r3, #8 + 80021c4: 2b08 cmp r3, #8 + 80021c6: d106 bne.n 80021d6 { #if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) hhcd->SOFCallback(hhcd); #else HAL_HCD_SOF_Callback(hhcd); - 800216c: 6878 ldr r0, [r7, #4] - 800216e: f005 fdef bl 8007d50 + 80021c8: 6878 ldr r0, [r7, #4] + 80021ca: f005 fde9 bl 8007da0 #endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_SOF); - 8002172: 687b ldr r3, [r7, #4] - 8002174: 681b ldr r3, [r3, #0] - 8002176: 2208 movs r2, #8 - 8002178: 615a str r2, [r3, #20] + 80021ce: 687b ldr r3, [r7, #4] + 80021d0: 681b ldr r3, [r3, #0] + 80021d2: 2208 movs r2, #8 + 80021d4: 615a str r2, [r3, #20] } /* Handle Host channel Interrupt */ if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_HCINT)) - 800217a: 687b ldr r3, [r7, #4] - 800217c: 681b ldr r3, [r3, #0] - 800217e: 4618 mov r0, r3 - 8002180: f004 f9e8 bl 8006554 - 8002184: 4603 mov r3, r0 - 8002186: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 800218a: f1b3 7f00 cmp.w r3, #33554432 @ 0x2000000 - 800218e: d139 bne.n 8002204 + 80021d6: 687b ldr r3, [r7, #4] + 80021d8: 681b ldr r3, [r3, #0] + 80021da: 4618 mov r0, r3 + 80021dc: f004 f9e8 bl 80065b0 + 80021e0: 4603 mov r3, r0 + 80021e2: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 80021e6: f1b3 7f00 cmp.w r3, #33554432 @ 0x2000000 + 80021ea: d139 bne.n 8002260 { interrupt = USB_HC_ReadInterrupt(hhcd->Instance); - 8002190: 687b ldr r3, [r7, #4] - 8002192: 681b ldr r3, [r3, #0] - 8002194: 4618 mov r0, r3 - 8002196: f004 fa5c bl 8006652 - 800219a: 60b8 str r0, [r7, #8] + 80021ec: 687b ldr r3, [r7, #4] + 80021ee: 681b ldr r3, [r3, #0] + 80021f0: 4618 mov r0, r3 + 80021f2: f004 fa5c bl 80066ae + 80021f6: 60b8 str r0, [r7, #8] for (i = 0U; i < hhcd->Init.Host_channels; i++) - 800219c: 2300 movs r3, #0 - 800219e: 617b str r3, [r7, #20] - 80021a0: e025 b.n 80021ee + 80021f8: 2300 movs r3, #0 + 80021fa: 617b str r3, [r7, #20] + 80021fc: e025 b.n 800224a { if ((interrupt & (1UL << (i & 0xFU))) != 0U) - 80021a2: 697b ldr r3, [r7, #20] - 80021a4: f003 030f and.w r3, r3, #15 - 80021a8: 68ba ldr r2, [r7, #8] - 80021aa: fa22 f303 lsr.w r3, r2, r3 - 80021ae: f003 0301 and.w r3, r3, #1 - 80021b2: 2b00 cmp r3, #0 - 80021b4: d018 beq.n 80021e8 + 80021fe: 697b ldr r3, [r7, #20] + 8002200: f003 030f and.w r3, r3, #15 + 8002204: 68ba ldr r2, [r7, #8] + 8002206: fa22 f303 lsr.w r3, r2, r3 + 800220a: f003 0301 and.w r3, r3, #1 + 800220e: 2b00 cmp r3, #0 + 8002210: d018 beq.n 8002244 { if ((USBx_HC(i)->HCCHAR & USB_OTG_HCCHAR_EPDIR) == USB_OTG_HCCHAR_EPDIR) - 80021b6: 697b ldr r3, [r7, #20] - 80021b8: 015a lsls r2, r3, #5 - 80021ba: 68fb ldr r3, [r7, #12] - 80021bc: 4413 add r3, r2 - 80021be: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 80021c2: 681b ldr r3, [r3, #0] - 80021c4: f403 4300 and.w r3, r3, #32768 @ 0x8000 - 80021c8: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 - 80021cc: d106 bne.n 80021dc + 8002212: 697b ldr r3, [r7, #20] + 8002214: 015a lsls r2, r3, #5 + 8002216: 68fb ldr r3, [r7, #12] + 8002218: 4413 add r3, r2 + 800221a: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 800221e: 681b ldr r3, [r3, #0] + 8002220: f403 4300 and.w r3, r3, #32768 @ 0x8000 + 8002224: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 8002228: d106 bne.n 8002238 { HCD_HC_IN_IRQHandler(hhcd, (uint8_t)i); - 80021ce: 697b ldr r3, [r7, #20] - 80021d0: b2db uxtb r3, r3 - 80021d2: 4619 mov r1, r3 - 80021d4: 6878 ldr r0, [r7, #4] - 80021d6: f000 f859 bl 800228c - 80021da: e005 b.n 80021e8 + 800222a: 697b ldr r3, [r7, #20] + 800222c: b2db uxtb r3, r3 + 800222e: 4619 mov r1, r3 + 8002230: 6878 ldr r0, [r7, #4] + 8002232: f000 f859 bl 80022e8 + 8002236: e005 b.n 8002244 } else { HCD_HC_OUT_IRQHandler(hhcd, (uint8_t)i); - 80021dc: 697b ldr r3, [r7, #20] - 80021de: b2db uxtb r3, r3 - 80021e0: 4619 mov r1, r3 - 80021e2: 6878 ldr r0, [r7, #4] - 80021e4: f000 febb bl 8002f5e + 8002238: 697b ldr r3, [r7, #20] + 800223a: b2db uxtb r3, r3 + 800223c: 4619 mov r1, r3 + 800223e: 6878 ldr r0, [r7, #4] + 8002240: f000 febb bl 8002fba for (i = 0U; i < hhcd->Init.Host_channels; i++) - 80021e8: 697b ldr r3, [r7, #20] - 80021ea: 3301 adds r3, #1 - 80021ec: 617b str r3, [r7, #20] - 80021ee: 687b ldr r3, [r7, #4] - 80021f0: 795b ldrb r3, [r3, #5] - 80021f2: 461a mov r2, r3 - 80021f4: 697b ldr r3, [r7, #20] - 80021f6: 4293 cmp r3, r2 - 80021f8: d3d3 bcc.n 80021a2 + 8002244: 697b ldr r3, [r7, #20] + 8002246: 3301 adds r3, #1 + 8002248: 617b str r3, [r7, #20] + 800224a: 687b ldr r3, [r7, #4] + 800224c: 795b ldrb r3, [r3, #5] + 800224e: 461a mov r2, r3 + 8002250: 697b ldr r3, [r7, #20] + 8002252: 4293 cmp r3, r2 + 8002254: d3d3 bcc.n 80021fe } } } __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_HCINT); - 80021fa: 687b ldr r3, [r7, #4] - 80021fc: 681b ldr r3, [r3, #0] - 80021fe: f04f 7200 mov.w r2, #33554432 @ 0x2000000 - 8002202: 615a str r2, [r3, #20] + 8002256: 687b ldr r3, [r7, #4] + 8002258: 681b ldr r3, [r3, #0] + 800225a: f04f 7200 mov.w r2, #33554432 @ 0x2000000 + 800225e: 615a str r2, [r3, #20] } /* Handle Rx Queue Level Interrupts */ if ((__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_RXFLVL)) != 0U) - 8002204: 687b ldr r3, [r7, #4] - 8002206: 681b ldr r3, [r3, #0] - 8002208: 4618 mov r0, r3 - 800220a: f004 f9a3 bl 8006554 - 800220e: 4603 mov r3, r0 - 8002210: f003 0310 and.w r3, r3, #16 - 8002214: 2b10 cmp r3, #16 - 8002216: d101 bne.n 800221c - 8002218: 2301 movs r3, #1 - 800221a: e000 b.n 800221e - 800221c: 2300 movs r3, #0 - 800221e: 2b00 cmp r3, #0 - 8002220: d014 beq.n 800224c + 8002260: 687b ldr r3, [r7, #4] + 8002262: 681b ldr r3, [r3, #0] + 8002264: 4618 mov r0, r3 + 8002266: f004 f9a3 bl 80065b0 + 800226a: 4603 mov r3, r0 + 800226c: f003 0310 and.w r3, r3, #16 + 8002270: 2b10 cmp r3, #16 + 8002272: d101 bne.n 8002278 + 8002274: 2301 movs r3, #1 + 8002276: e000 b.n 800227a + 8002278: 2300 movs r3, #0 + 800227a: 2b00 cmp r3, #0 + 800227c: d014 beq.n 80022a8 { USB_MASK_INTERRUPT(hhcd->Instance, USB_OTG_GINTSTS_RXFLVL); - 8002222: 687b ldr r3, [r7, #4] - 8002224: 681b ldr r3, [r3, #0] - 8002226: 699a ldr r2, [r3, #24] - 8002228: 687b ldr r3, [r7, #4] - 800222a: 681b ldr r3, [r3, #0] - 800222c: f022 0210 bic.w r2, r2, #16 - 8002230: 619a str r2, [r3, #24] + 800227e: 687b ldr r3, [r7, #4] + 8002280: 681b ldr r3, [r3, #0] + 8002282: 699a ldr r2, [r3, #24] + 8002284: 687b ldr r3, [r7, #4] + 8002286: 681b ldr r3, [r3, #0] + 8002288: f022 0210 bic.w r2, r2, #16 + 800228c: 619a str r2, [r3, #24] HCD_RXQLVL_IRQHandler(hhcd); - 8002232: 6878 ldr r0, [r7, #4] - 8002234: f001 fb52 bl 80038dc + 800228e: 6878 ldr r0, [r7, #4] + 8002290: f001 fb52 bl 8003938 USB_UNMASK_INTERRUPT(hhcd->Instance, USB_OTG_GINTSTS_RXFLVL); - 8002238: 687b ldr r3, [r7, #4] - 800223a: 681b ldr r3, [r3, #0] - 800223c: 699a ldr r2, [r3, #24] - 800223e: 687b ldr r3, [r7, #4] - 8002240: 681b ldr r3, [r3, #0] - 8002242: f042 0210 orr.w r2, r2, #16 - 8002246: 619a str r2, [r3, #24] - 8002248: e000 b.n 800224c + 8002294: 687b ldr r3, [r7, #4] + 8002296: 681b ldr r3, [r3, #0] + 8002298: 699a ldr r2, [r3, #24] + 800229a: 687b ldr r3, [r7, #4] + 800229c: 681b ldr r3, [r3, #0] + 800229e: f042 0210 orr.w r2, r2, #16 + 80022a2: 619a str r2, [r3, #24] + 80022a4: e000 b.n 80022a8 return; - 800224a: bf00 nop + 80022a6: bf00 nop } } } - 800224c: 3718 adds r7, #24 - 800224e: 46bd mov sp, r7 - 8002250: bd80 pop {r7, pc} + 80022a8: 3718 adds r7, #24 + 80022aa: 46bd mov sp, r7 + 80022ac: bd80 pop {r7, pc} -08002252 : +080022ae : * @param hhcd HCD handle * @retval HAL status */ HAL_StatusTypeDef HAL_HCD_Stop(HCD_HandleTypeDef *hhcd) { - 8002252: b580 push {r7, lr} - 8002254: b082 sub sp, #8 - 8002256: af00 add r7, sp, #0 - 8002258: 6078 str r0, [r7, #4] + 80022ae: b580 push {r7, lr} + 80022b0: b082 sub sp, #8 + 80022b2: af00 add r7, sp, #0 + 80022b4: 6078 str r0, [r7, #4] __HAL_LOCK(hhcd); - 800225a: 687b ldr r3, [r7, #4] - 800225c: f893 33d4 ldrb.w r3, [r3, #980] @ 0x3d4 - 8002260: 2b01 cmp r3, #1 - 8002262: d101 bne.n 8002268 - 8002264: 2302 movs r3, #2 - 8002266: e00d b.n 8002284 - 8002268: 687b ldr r3, [r7, #4] - 800226a: 2201 movs r2, #1 - 800226c: f883 23d4 strb.w r2, [r3, #980] @ 0x3d4 + 80022b6: 687b ldr r3, [r7, #4] + 80022b8: f893 33d4 ldrb.w r3, [r3, #980] @ 0x3d4 + 80022bc: 2b01 cmp r3, #1 + 80022be: d101 bne.n 80022c4 + 80022c0: 2302 movs r3, #2 + 80022c2: e00d b.n 80022e0 + 80022c4: 687b ldr r3, [r7, #4] + 80022c6: 2201 movs r2, #1 + 80022c8: f883 23d4 strb.w r2, [r3, #980] @ 0x3d4 (void)USB_StopHost(hhcd->Instance); - 8002270: 687b ldr r3, [r7, #4] - 8002272: 681b ldr r3, [r3, #0] - 8002274: 4618 mov r0, r3 - 8002276: f004 fb1d bl 80068b4 + 80022cc: 687b ldr r3, [r7, #4] + 80022ce: 681b ldr r3, [r3, #0] + 80022d0: 4618 mov r0, r3 + 80022d2: f004 fb1d bl 8006910 __HAL_UNLOCK(hhcd); - 800227a: 687b ldr r3, [r7, #4] - 800227c: 2200 movs r2, #0 - 800227e: f883 23d4 strb.w r2, [r3, #980] @ 0x3d4 + 80022d6: 687b ldr r3, [r7, #4] + 80022d8: 2200 movs r2, #0 + 80022da: f883 23d4 strb.w r2, [r3, #980] @ 0x3d4 return HAL_OK; - 8002282: 2300 movs r3, #0 + 80022de: 2300 movs r3, #0 } - 8002284: 4618 mov r0, r3 - 8002286: 3708 adds r7, #8 - 8002288: 46bd mov sp, r7 - 800228a: bd80 pop {r7, pc} + 80022e0: 4618 mov r0, r3 + 80022e2: 3708 adds r7, #8 + 80022e4: 46bd mov sp, r7 + 80022e6: bd80 pop {r7, pc} -0800228c : +080022e8 : * @param chnum Channel number. * This parameter can be a value from 1 to 15 * @retval none */ static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) { - 800228c: b580 push {r7, lr} - 800228e: b086 sub sp, #24 - 8002290: af00 add r7, sp, #0 - 8002292: 6078 str r0, [r7, #4] - 8002294: 460b mov r3, r1 - 8002296: 70fb strb r3, [r7, #3] + 80022e8: b580 push {r7, lr} + 80022ea: b086 sub sp, #24 + 80022ec: af00 add r7, sp, #0 + 80022ee: 6078 str r0, [r7, #4] + 80022f0: 460b mov r3, r1 + 80022f2: 70fb strb r3, [r7, #3] const USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; - 8002298: 687b ldr r3, [r7, #4] - 800229a: 681b ldr r3, [r3, #0] - 800229c: 617b str r3, [r7, #20] + 80022f4: 687b ldr r3, [r7, #4] + 80022f6: 681b ldr r3, [r3, #0] + 80022f8: 617b str r3, [r7, #20] uint32_t USBx_BASE = (uint32_t)USBx; - 800229e: 697b ldr r3, [r7, #20] - 80022a0: 613b str r3, [r7, #16] + 80022fa: 697b ldr r3, [r7, #20] + 80022fc: 613b str r3, [r7, #16] uint32_t tmpreg; if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_AHBERR)) - 80022a2: 687b ldr r3, [r7, #4] - 80022a4: 681b ldr r3, [r3, #0] - 80022a6: 78fa ldrb r2, [r7, #3] - 80022a8: 4611 mov r1, r2 - 80022aa: 4618 mov r0, r3 - 80022ac: f004 f965 bl 800657a - 80022b0: 4603 mov r3, r0 - 80022b2: f003 0304 and.w r3, r3, #4 - 80022b6: 2b04 cmp r3, #4 - 80022b8: d11a bne.n 80022f0 + 80022fe: 687b ldr r3, [r7, #4] + 8002300: 681b ldr r3, [r3, #0] + 8002302: 78fa ldrb r2, [r7, #3] + 8002304: 4611 mov r1, r2 + 8002306: 4618 mov r0, r3 + 8002308: f004 f965 bl 80065d6 + 800230c: 4603 mov r3, r0 + 800230e: f003 0304 and.w r3, r3, #4 + 8002312: 2b04 cmp r3, #4 + 8002314: d11a bne.n 800234c { __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_AHBERR); - 80022ba: 78fb ldrb r3, [r7, #3] - 80022bc: 015a lsls r2, r3, #5 - 80022be: 693b ldr r3, [r7, #16] - 80022c0: 4413 add r3, r2 - 80022c2: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 80022c6: 461a mov r2, r3 - 80022c8: 2304 movs r3, #4 - 80022ca: 6093 str r3, [r2, #8] + 8002316: 78fb ldrb r3, [r7, #3] + 8002318: 015a lsls r2, r3, #5 + 800231a: 693b ldr r3, [r7, #16] + 800231c: 4413 add r3, r2 + 800231e: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002322: 461a mov r2, r3 + 8002324: 2304 movs r3, #4 + 8002326: 6093 str r3, [r2, #8] hhcd->hc[chnum].state = HC_XACTERR; - 80022cc: 78fa ldrb r2, [r7, #3] - 80022ce: 6879 ldr r1, [r7, #4] - 80022d0: 4613 mov r3, r2 - 80022d2: 011b lsls r3, r3, #4 - 80022d4: 1a9b subs r3, r3, r2 - 80022d6: 009b lsls r3, r3, #2 - 80022d8: 440b add r3, r1 - 80022da: 334d adds r3, #77 @ 0x4d - 80022dc: 2207 movs r2, #7 - 80022de: 701a strb r2, [r3, #0] + 8002328: 78fa ldrb r2, [r7, #3] + 800232a: 6879 ldr r1, [r7, #4] + 800232c: 4613 mov r3, r2 + 800232e: 011b lsls r3, r3, #4 + 8002330: 1a9b subs r3, r3, r2 + 8002332: 009b lsls r3, r3, #2 + 8002334: 440b add r3, r1 + 8002336: 334d adds r3, #77 @ 0x4d + 8002338: 2207 movs r2, #7 + 800233a: 701a strb r2, [r3, #0] (void)USB_HC_Halt(hhcd->Instance, chnum); - 80022e0: 687b ldr r3, [r7, #4] - 80022e2: 681b ldr r3, [r3, #0] - 80022e4: 78fa ldrb r2, [r7, #3] - 80022e6: 4611 mov r1, r2 - 80022e8: 4618 mov r0, r3 - 80022ea: f004 f9c3 bl 8006674 - 80022ee: e09e b.n 800242e + 800233c: 687b ldr r3, [r7, #4] + 800233e: 681b ldr r3, [r3, #0] + 8002340: 78fa ldrb r2, [r7, #3] + 8002342: 4611 mov r1, r2 + 8002344: 4618 mov r0, r3 + 8002346: f004 f9c3 bl 80066d0 + 800234a: e09e b.n 800248a } else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_BBERR)) - 80022f0: 687b ldr r3, [r7, #4] - 80022f2: 681b ldr r3, [r3, #0] - 80022f4: 78fa ldrb r2, [r7, #3] - 80022f6: 4611 mov r1, r2 - 80022f8: 4618 mov r0, r3 - 80022fa: f004 f93e bl 800657a - 80022fe: 4603 mov r3, r0 - 8002300: f403 7380 and.w r3, r3, #256 @ 0x100 - 8002304: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 8002308: d11b bne.n 8002342 + 800234c: 687b ldr r3, [r7, #4] + 800234e: 681b ldr r3, [r3, #0] + 8002350: 78fa ldrb r2, [r7, #3] + 8002352: 4611 mov r1, r2 + 8002354: 4618 mov r0, r3 + 8002356: f004 f93e bl 80065d6 + 800235a: 4603 mov r3, r0 + 800235c: f403 7380 and.w r3, r3, #256 @ 0x100 + 8002360: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 8002364: d11b bne.n 800239e { __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_BBERR); - 800230a: 78fb ldrb r3, [r7, #3] - 800230c: 015a lsls r2, r3, #5 - 800230e: 693b ldr r3, [r7, #16] - 8002310: 4413 add r3, r2 - 8002312: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002316: 461a mov r2, r3 - 8002318: f44f 7380 mov.w r3, #256 @ 0x100 - 800231c: 6093 str r3, [r2, #8] + 8002366: 78fb ldrb r3, [r7, #3] + 8002368: 015a lsls r2, r3, #5 + 800236a: 693b ldr r3, [r7, #16] + 800236c: 4413 add r3, r2 + 800236e: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002372: 461a mov r2, r3 + 8002374: f44f 7380 mov.w r3, #256 @ 0x100 + 8002378: 6093 str r3, [r2, #8] hhcd->hc[chnum].state = HC_BBLERR; - 800231e: 78fa ldrb r2, [r7, #3] - 8002320: 6879 ldr r1, [r7, #4] - 8002322: 4613 mov r3, r2 - 8002324: 011b lsls r3, r3, #4 - 8002326: 1a9b subs r3, r3, r2 - 8002328: 009b lsls r3, r3, #2 - 800232a: 440b add r3, r1 - 800232c: 334d adds r3, #77 @ 0x4d - 800232e: 2208 movs r2, #8 - 8002330: 701a strb r2, [r3, #0] + 800237a: 78fa ldrb r2, [r7, #3] + 800237c: 6879 ldr r1, [r7, #4] + 800237e: 4613 mov r3, r2 + 8002380: 011b lsls r3, r3, #4 + 8002382: 1a9b subs r3, r3, r2 + 8002384: 009b lsls r3, r3, #2 + 8002386: 440b add r3, r1 + 8002388: 334d adds r3, #77 @ 0x4d + 800238a: 2208 movs r2, #8 + 800238c: 701a strb r2, [r3, #0] (void)USB_HC_Halt(hhcd->Instance, chnum); - 8002332: 687b ldr r3, [r7, #4] - 8002334: 681b ldr r3, [r3, #0] - 8002336: 78fa ldrb r2, [r7, #3] - 8002338: 4611 mov r1, r2 - 800233a: 4618 mov r0, r3 - 800233c: f004 f99a bl 8006674 - 8002340: e075 b.n 800242e + 800238e: 687b ldr r3, [r7, #4] + 8002390: 681b ldr r3, [r3, #0] + 8002392: 78fa ldrb r2, [r7, #3] + 8002394: 4611 mov r1, r2 + 8002396: 4618 mov r0, r3 + 8002398: f004 f99a bl 80066d0 + 800239c: e075 b.n 800248a } else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_STALL)) - 8002342: 687b ldr r3, [r7, #4] - 8002344: 681b ldr r3, [r3, #0] - 8002346: 78fa ldrb r2, [r7, #3] - 8002348: 4611 mov r1, r2 - 800234a: 4618 mov r0, r3 - 800234c: f004 f915 bl 800657a - 8002350: 4603 mov r3, r0 - 8002352: f003 0308 and.w r3, r3, #8 - 8002356: 2b08 cmp r3, #8 - 8002358: d11a bne.n 8002390 + 800239e: 687b ldr r3, [r7, #4] + 80023a0: 681b ldr r3, [r3, #0] + 80023a2: 78fa ldrb r2, [r7, #3] + 80023a4: 4611 mov r1, r2 + 80023a6: 4618 mov r0, r3 + 80023a8: f004 f915 bl 80065d6 + 80023ac: 4603 mov r3, r0 + 80023ae: f003 0308 and.w r3, r3, #8 + 80023b2: 2b08 cmp r3, #8 + 80023b4: d11a bne.n 80023ec { __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_STALL); - 800235a: 78fb ldrb r3, [r7, #3] - 800235c: 015a lsls r2, r3, #5 - 800235e: 693b ldr r3, [r7, #16] - 8002360: 4413 add r3, r2 - 8002362: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002366: 461a mov r2, r3 - 8002368: 2308 movs r3, #8 - 800236a: 6093 str r3, [r2, #8] + 80023b6: 78fb ldrb r3, [r7, #3] + 80023b8: 015a lsls r2, r3, #5 + 80023ba: 693b ldr r3, [r7, #16] + 80023bc: 4413 add r3, r2 + 80023be: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80023c2: 461a mov r2, r3 + 80023c4: 2308 movs r3, #8 + 80023c6: 6093 str r3, [r2, #8] hhcd->hc[chnum].state = HC_STALL; - 800236c: 78fa ldrb r2, [r7, #3] - 800236e: 6879 ldr r1, [r7, #4] - 8002370: 4613 mov r3, r2 - 8002372: 011b lsls r3, r3, #4 - 8002374: 1a9b subs r3, r3, r2 - 8002376: 009b lsls r3, r3, #2 - 8002378: 440b add r3, r1 - 800237a: 334d adds r3, #77 @ 0x4d - 800237c: 2206 movs r2, #6 - 800237e: 701a strb r2, [r3, #0] + 80023c8: 78fa ldrb r2, [r7, #3] + 80023ca: 6879 ldr r1, [r7, #4] + 80023cc: 4613 mov r3, r2 + 80023ce: 011b lsls r3, r3, #4 + 80023d0: 1a9b subs r3, r3, r2 + 80023d2: 009b lsls r3, r3, #2 + 80023d4: 440b add r3, r1 + 80023d6: 334d adds r3, #77 @ 0x4d + 80023d8: 2206 movs r2, #6 + 80023da: 701a strb r2, [r3, #0] (void)USB_HC_Halt(hhcd->Instance, chnum); - 8002380: 687b ldr r3, [r7, #4] - 8002382: 681b ldr r3, [r3, #0] - 8002384: 78fa ldrb r2, [r7, #3] - 8002386: 4611 mov r1, r2 - 8002388: 4618 mov r0, r3 - 800238a: f004 f973 bl 8006674 - 800238e: e04e b.n 800242e + 80023dc: 687b ldr r3, [r7, #4] + 80023de: 681b ldr r3, [r3, #0] + 80023e0: 78fa ldrb r2, [r7, #3] + 80023e2: 4611 mov r1, r2 + 80023e4: 4618 mov r0, r3 + 80023e6: f004 f973 bl 80066d0 + 80023ea: e04e b.n 800248a } else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_DTERR)) - 8002390: 687b ldr r3, [r7, #4] - 8002392: 681b ldr r3, [r3, #0] - 8002394: 78fa ldrb r2, [r7, #3] - 8002396: 4611 mov r1, r2 - 8002398: 4618 mov r0, r3 - 800239a: f004 f8ee bl 800657a - 800239e: 4603 mov r3, r0 - 80023a0: f403 6380 and.w r3, r3, #1024 @ 0x400 - 80023a4: f5b3 6f80 cmp.w r3, #1024 @ 0x400 - 80023a8: d11b bne.n 80023e2 + 80023ec: 687b ldr r3, [r7, #4] + 80023ee: 681b ldr r3, [r3, #0] + 80023f0: 78fa ldrb r2, [r7, #3] + 80023f2: 4611 mov r1, r2 + 80023f4: 4618 mov r0, r3 + 80023f6: f004 f8ee bl 80065d6 + 80023fa: 4603 mov r3, r0 + 80023fc: f403 6380 and.w r3, r3, #1024 @ 0x400 + 8002400: f5b3 6f80 cmp.w r3, #1024 @ 0x400 + 8002404: d11b bne.n 800243e { __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_DTERR); - 80023aa: 78fb ldrb r3, [r7, #3] - 80023ac: 015a lsls r2, r3, #5 - 80023ae: 693b ldr r3, [r7, #16] - 80023b0: 4413 add r3, r2 - 80023b2: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 80023b6: 461a mov r2, r3 - 80023b8: f44f 6380 mov.w r3, #1024 @ 0x400 - 80023bc: 6093 str r3, [r2, #8] + 8002406: 78fb ldrb r3, [r7, #3] + 8002408: 015a lsls r2, r3, #5 + 800240a: 693b ldr r3, [r7, #16] + 800240c: 4413 add r3, r2 + 800240e: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002412: 461a mov r2, r3 + 8002414: f44f 6380 mov.w r3, #1024 @ 0x400 + 8002418: 6093 str r3, [r2, #8] hhcd->hc[chnum].state = HC_DATATGLERR; - 80023be: 78fa ldrb r2, [r7, #3] - 80023c0: 6879 ldr r1, [r7, #4] - 80023c2: 4613 mov r3, r2 - 80023c4: 011b lsls r3, r3, #4 - 80023c6: 1a9b subs r3, r3, r2 - 80023c8: 009b lsls r3, r3, #2 - 80023ca: 440b add r3, r1 - 80023cc: 334d adds r3, #77 @ 0x4d - 80023ce: 2209 movs r2, #9 - 80023d0: 701a strb r2, [r3, #0] + 800241a: 78fa ldrb r2, [r7, #3] + 800241c: 6879 ldr r1, [r7, #4] + 800241e: 4613 mov r3, r2 + 8002420: 011b lsls r3, r3, #4 + 8002422: 1a9b subs r3, r3, r2 + 8002424: 009b lsls r3, r3, #2 + 8002426: 440b add r3, r1 + 8002428: 334d adds r3, #77 @ 0x4d + 800242a: 2209 movs r2, #9 + 800242c: 701a strb r2, [r3, #0] (void)USB_HC_Halt(hhcd->Instance, chnum); - 80023d2: 687b ldr r3, [r7, #4] - 80023d4: 681b ldr r3, [r3, #0] - 80023d6: 78fa ldrb r2, [r7, #3] - 80023d8: 4611 mov r1, r2 - 80023da: 4618 mov r0, r3 - 80023dc: f004 f94a bl 8006674 - 80023e0: e025 b.n 800242e - } - else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_TXERR)) - 80023e2: 687b ldr r3, [r7, #4] - 80023e4: 681b ldr r3, [r3, #0] - 80023e6: 78fa ldrb r2, [r7, #3] - 80023e8: 4611 mov r1, r2 - 80023ea: 4618 mov r0, r3 - 80023ec: f004 f8c5 bl 800657a - 80023f0: 4603 mov r3, r0 - 80023f2: f003 0380 and.w r3, r3, #128 @ 0x80 - 80023f6: 2b80 cmp r3, #128 @ 0x80 - 80023f8: d119 bne.n 800242e - { - __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_TXERR); - 80023fa: 78fb ldrb r3, [r7, #3] - 80023fc: 015a lsls r2, r3, #5 - 80023fe: 693b ldr r3, [r7, #16] - 8002400: 4413 add r3, r2 - 8002402: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002406: 461a mov r2, r3 - 8002408: 2380 movs r3, #128 @ 0x80 - 800240a: 6093 str r3, [r2, #8] - hhcd->hc[chnum].state = HC_XACTERR; - 800240c: 78fa ldrb r2, [r7, #3] - 800240e: 6879 ldr r1, [r7, #4] - 8002410: 4613 mov r3, r2 - 8002412: 011b lsls r3, r3, #4 - 8002414: 1a9b subs r3, r3, r2 - 8002416: 009b lsls r3, r3, #2 - 8002418: 440b add r3, r1 - 800241a: 334d adds r3, #77 @ 0x4d - 800241c: 2207 movs r2, #7 - 800241e: 701a strb r2, [r3, #0] - (void)USB_HC_Halt(hhcd->Instance, chnum); - 8002420: 687b ldr r3, [r7, #4] - 8002422: 681b ldr r3, [r3, #0] - 8002424: 78fa ldrb r2, [r7, #3] - 8002426: 4611 mov r1, r2 - 8002428: 4618 mov r0, r3 - 800242a: f004 f923 bl 8006674 - else - { - /* ... */ - } - - if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_FRMOR)) 800242e: 687b ldr r3, [r7, #4] 8002430: 681b ldr r3, [r3, #0] 8002432: 78fa ldrb r2, [r7, #3] 8002434: 4611 mov r1, r2 8002436: 4618 mov r0, r3 - 8002438: f004 f89f bl 800657a - 800243c: 4603 mov r3, r0 - 800243e: f403 7300 and.w r3, r3, #512 @ 0x200 - 8002442: f5b3 7f00 cmp.w r3, #512 @ 0x200 - 8002446: d112 bne.n 800246e + 8002438: f004 f94a bl 80066d0 + 800243c: e025 b.n 800248a + } + else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_TXERR)) + 800243e: 687b ldr r3, [r7, #4] + 8002440: 681b ldr r3, [r3, #0] + 8002442: 78fa ldrb r2, [r7, #3] + 8002444: 4611 mov r1, r2 + 8002446: 4618 mov r0, r3 + 8002448: f004 f8c5 bl 80065d6 + 800244c: 4603 mov r3, r0 + 800244e: f003 0380 and.w r3, r3, #128 @ 0x80 + 8002452: 2b80 cmp r3, #128 @ 0x80 + 8002454: d119 bne.n 800248a { - (void)USB_HC_Halt(hhcd->Instance, chnum); - 8002448: 687b ldr r3, [r7, #4] - 800244a: 681b ldr r3, [r3, #0] - 800244c: 78fa ldrb r2, [r7, #3] - 800244e: 4611 mov r1, r2 - 8002450: 4618 mov r0, r3 - 8002452: f004 f90f bl 8006674 - __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_FRMOR); + __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_TXERR); 8002456: 78fb ldrb r3, [r7, #3] 8002458: 015a lsls r2, r3, #5 800245a: 693b ldr r3, [r7, #16] 800245c: 4413 add r3, r2 800245e: f503 63a0 add.w r3, r3, #1280 @ 0x500 8002462: 461a mov r2, r3 - 8002464: f44f 7300 mov.w r3, #512 @ 0x200 - 8002468: 6093 str r3, [r2, #8] - 800246a: f000 bd75 b.w 8002f58 + 8002464: 2380 movs r3, #128 @ 0x80 + 8002466: 6093 str r3, [r2, #8] + hhcd->hc[chnum].state = HC_XACTERR; + 8002468: 78fa ldrb r2, [r7, #3] + 800246a: 6879 ldr r1, [r7, #4] + 800246c: 4613 mov r3, r2 + 800246e: 011b lsls r3, r3, #4 + 8002470: 1a9b subs r3, r3, r2 + 8002472: 009b lsls r3, r3, #2 + 8002474: 440b add r3, r1 + 8002476: 334d adds r3, #77 @ 0x4d + 8002478: 2207 movs r2, #7 + 800247a: 701a strb r2, [r3, #0] + (void)USB_HC_Halt(hhcd->Instance, chnum); + 800247c: 687b ldr r3, [r7, #4] + 800247e: 681b ldr r3, [r3, #0] + 8002480: 78fa ldrb r2, [r7, #3] + 8002482: 4611 mov r1, r2 + 8002484: 4618 mov r0, r3 + 8002486: f004 f923 bl 80066d0 + else + { + /* ... */ + } + + if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_FRMOR)) + 800248a: 687b ldr r3, [r7, #4] + 800248c: 681b ldr r3, [r3, #0] + 800248e: 78fa ldrb r2, [r7, #3] + 8002490: 4611 mov r1, r2 + 8002492: 4618 mov r0, r3 + 8002494: f004 f89f bl 80065d6 + 8002498: 4603 mov r3, r0 + 800249a: f403 7300 and.w r3, r3, #512 @ 0x200 + 800249e: f5b3 7f00 cmp.w r3, #512 @ 0x200 + 80024a2: d112 bne.n 80024ca + { + (void)USB_HC_Halt(hhcd->Instance, chnum); + 80024a4: 687b ldr r3, [r7, #4] + 80024a6: 681b ldr r3, [r3, #0] + 80024a8: 78fa ldrb r2, [r7, #3] + 80024aa: 4611 mov r1, r2 + 80024ac: 4618 mov r0, r3 + 80024ae: f004 f90f bl 80066d0 + __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_FRMOR); + 80024b2: 78fb ldrb r3, [r7, #3] + 80024b4: 015a lsls r2, r3, #5 + 80024b6: 693b ldr r3, [r7, #16] + 80024b8: 4413 add r3, r2 + 80024ba: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80024be: 461a mov r2, r3 + 80024c0: f44f 7300 mov.w r3, #512 @ 0x200 + 80024c4: 6093 str r3, [r2, #8] + 80024c6: f000 bd75 b.w 8002fb4 } else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_XFRC)) - 800246e: 687b ldr r3, [r7, #4] - 8002470: 681b ldr r3, [r3, #0] - 8002472: 78fa ldrb r2, [r7, #3] - 8002474: 4611 mov r1, r2 - 8002476: 4618 mov r0, r3 - 8002478: f004 f87f bl 800657a - 800247c: 4603 mov r3, r0 - 800247e: f003 0301 and.w r3, r3, #1 - 8002482: 2b01 cmp r3, #1 - 8002484: f040 8128 bne.w 80026d8 + 80024ca: 687b ldr r3, [r7, #4] + 80024cc: 681b ldr r3, [r3, #0] + 80024ce: 78fa ldrb r2, [r7, #3] + 80024d0: 4611 mov r1, r2 + 80024d2: 4618 mov r0, r3 + 80024d4: f004 f87f bl 80065d6 + 80024d8: 4603 mov r3, r0 + 80024da: f003 0301 and.w r3, r3, #1 + 80024de: 2b01 cmp r3, #1 + 80024e0: f040 8128 bne.w 8002734 { /* Clear any pending ACK IT */ __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_ACK); - 8002488: 78fb ldrb r3, [r7, #3] - 800248a: 015a lsls r2, r3, #5 - 800248c: 693b ldr r3, [r7, #16] - 800248e: 4413 add r3, r2 - 8002490: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002494: 461a mov r2, r3 - 8002496: 2320 movs r3, #32 - 8002498: 6093 str r3, [r2, #8] + 80024e4: 78fb ldrb r3, [r7, #3] + 80024e6: 015a lsls r2, r3, #5 + 80024e8: 693b ldr r3, [r7, #16] + 80024ea: 4413 add r3, r2 + 80024ec: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80024f0: 461a mov r2, r3 + 80024f2: 2320 movs r3, #32 + 80024f4: 6093 str r3, [r2, #8] if (hhcd->hc[chnum].do_csplit == 1U) - 800249a: 78fa ldrb r2, [r7, #3] - 800249c: 6879 ldr r1, [r7, #4] - 800249e: 4613 mov r3, r2 - 80024a0: 011b lsls r3, r3, #4 - 80024a2: 1a9b subs r3, r3, r2 - 80024a4: 009b lsls r3, r3, #2 - 80024a6: 440b add r3, r1 - 80024a8: 331b adds r3, #27 - 80024aa: 781b ldrb r3, [r3, #0] - 80024ac: 2b01 cmp r3, #1 - 80024ae: d119 bne.n 80024e4 + 80024f6: 78fa ldrb r2, [r7, #3] + 80024f8: 6879 ldr r1, [r7, #4] + 80024fa: 4613 mov r3, r2 + 80024fc: 011b lsls r3, r3, #4 + 80024fe: 1a9b subs r3, r3, r2 + 8002500: 009b lsls r3, r3, #2 + 8002502: 440b add r3, r1 + 8002504: 331b adds r3, #27 + 8002506: 781b ldrb r3, [r3, #0] + 8002508: 2b01 cmp r3, #1 + 800250a: d119 bne.n 8002540 { hhcd->hc[chnum].do_csplit = 0U; - 80024b0: 78fa ldrb r2, [r7, #3] - 80024b2: 6879 ldr r1, [r7, #4] - 80024b4: 4613 mov r3, r2 - 80024b6: 011b lsls r3, r3, #4 - 80024b8: 1a9b subs r3, r3, r2 - 80024ba: 009b lsls r3, r3, #2 - 80024bc: 440b add r3, r1 - 80024be: 331b adds r3, #27 - 80024c0: 2200 movs r2, #0 - 80024c2: 701a strb r2, [r3, #0] + 800250c: 78fa ldrb r2, [r7, #3] + 800250e: 6879 ldr r1, [r7, #4] + 8002510: 4613 mov r3, r2 + 8002512: 011b lsls r3, r3, #4 + 8002514: 1a9b subs r3, r3, r2 + 8002516: 009b lsls r3, r3, #2 + 8002518: 440b add r3, r1 + 800251a: 331b adds r3, #27 + 800251c: 2200 movs r2, #0 + 800251e: 701a strb r2, [r3, #0] __HAL_HCD_CLEAR_HC_CSPLT(chnum); - 80024c4: 78fb ldrb r3, [r7, #3] - 80024c6: 015a lsls r2, r3, #5 - 80024c8: 693b ldr r3, [r7, #16] - 80024ca: 4413 add r3, r2 - 80024cc: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 80024d0: 685b ldr r3, [r3, #4] - 80024d2: 78fa ldrb r2, [r7, #3] - 80024d4: 0151 lsls r1, r2, #5 - 80024d6: 693a ldr r2, [r7, #16] - 80024d8: 440a add r2, r1 - 80024da: f502 62a0 add.w r2, r2, #1280 @ 0x500 - 80024de: f423 3380 bic.w r3, r3, #65536 @ 0x10000 - 80024e2: 6053 str r3, [r2, #4] + 8002520: 78fb ldrb r3, [r7, #3] + 8002522: 015a lsls r2, r3, #5 + 8002524: 693b ldr r3, [r7, #16] + 8002526: 4413 add r3, r2 + 8002528: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 800252c: 685b ldr r3, [r3, #4] + 800252e: 78fa ldrb r2, [r7, #3] + 8002530: 0151 lsls r1, r2, #5 + 8002532: 693a ldr r2, [r7, #16] + 8002534: 440a add r2, r1 + 8002536: f502 62a0 add.w r2, r2, #1280 @ 0x500 + 800253a: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 800253e: 6053 str r3, [r2, #4] } if (hhcd->Init.dma_enable != 0U) - 80024e4: 687b ldr r3, [r7, #4] - 80024e6: 799b ldrb r3, [r3, #6] - 80024e8: 2b00 cmp r3, #0 - 80024ea: d01b beq.n 8002524 + 8002540: 687b ldr r3, [r7, #4] + 8002542: 799b ldrb r3, [r3, #6] + 8002544: 2b00 cmp r3, #0 + 8002546: d01b beq.n 8002580 { hhcd->hc[chnum].xfer_count = hhcd->hc[chnum].XferSize - (USBx_HC(chnum)->HCTSIZ & USB_OTG_HCTSIZ_XFRSIZ); - 80024ec: 78fa ldrb r2, [r7, #3] - 80024ee: 6879 ldr r1, [r7, #4] - 80024f0: 4613 mov r3, r2 - 80024f2: 011b lsls r3, r3, #4 - 80024f4: 1a9b subs r3, r3, r2 - 80024f6: 009b lsls r3, r3, #2 - 80024f8: 440b add r3, r1 - 80024fa: 3330 adds r3, #48 @ 0x30 - 80024fc: 6819 ldr r1, [r3, #0] - 80024fe: 78fb ldrb r3, [r7, #3] - 8002500: 015a lsls r2, r3, #5 - 8002502: 693b ldr r3, [r7, #16] - 8002504: 4413 add r3, r2 - 8002506: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 800250a: 691b ldr r3, [r3, #16] - 800250c: f3c3 0312 ubfx r3, r3, #0, #19 - 8002510: 78fa ldrb r2, [r7, #3] - 8002512: 1ac9 subs r1, r1, r3 - 8002514: 6878 ldr r0, [r7, #4] - 8002516: 4613 mov r3, r2 - 8002518: 011b lsls r3, r3, #4 - 800251a: 1a9b subs r3, r3, r2 - 800251c: 009b lsls r3, r3, #2 - 800251e: 4403 add r3, r0 - 8002520: 3338 adds r3, #56 @ 0x38 - 8002522: 6019 str r1, [r3, #0] + 8002548: 78fa ldrb r2, [r7, #3] + 800254a: 6879 ldr r1, [r7, #4] + 800254c: 4613 mov r3, r2 + 800254e: 011b lsls r3, r3, #4 + 8002550: 1a9b subs r3, r3, r2 + 8002552: 009b lsls r3, r3, #2 + 8002554: 440b add r3, r1 + 8002556: 3330 adds r3, #48 @ 0x30 + 8002558: 6819 ldr r1, [r3, #0] + 800255a: 78fb ldrb r3, [r7, #3] + 800255c: 015a lsls r2, r3, #5 + 800255e: 693b ldr r3, [r7, #16] + 8002560: 4413 add r3, r2 + 8002562: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002566: 691b ldr r3, [r3, #16] + 8002568: f3c3 0312 ubfx r3, r3, #0, #19 + 800256c: 78fa ldrb r2, [r7, #3] + 800256e: 1ac9 subs r1, r1, r3 + 8002570: 6878 ldr r0, [r7, #4] + 8002572: 4613 mov r3, r2 + 8002574: 011b lsls r3, r3, #4 + 8002576: 1a9b subs r3, r3, r2 + 8002578: 009b lsls r3, r3, #2 + 800257a: 4403 add r3, r0 + 800257c: 3338 adds r3, #56 @ 0x38 + 800257e: 6019 str r1, [r3, #0] } hhcd->hc[chnum].state = HC_XFRC; - 8002524: 78fa ldrb r2, [r7, #3] - 8002526: 6879 ldr r1, [r7, #4] - 8002528: 4613 mov r3, r2 - 800252a: 011b lsls r3, r3, #4 - 800252c: 1a9b subs r3, r3, r2 - 800252e: 009b lsls r3, r3, #2 - 8002530: 440b add r3, r1 - 8002532: 334d adds r3, #77 @ 0x4d - 8002534: 2201 movs r2, #1 - 8002536: 701a strb r2, [r3, #0] + 8002580: 78fa ldrb r2, [r7, #3] + 8002582: 6879 ldr r1, [r7, #4] + 8002584: 4613 mov r3, r2 + 8002586: 011b lsls r3, r3, #4 + 8002588: 1a9b subs r3, r3, r2 + 800258a: 009b lsls r3, r3, #2 + 800258c: 440b add r3, r1 + 800258e: 334d adds r3, #77 @ 0x4d + 8002590: 2201 movs r2, #1 + 8002592: 701a strb r2, [r3, #0] hhcd->hc[chnum].ErrCnt = 0U; - 8002538: 78fa ldrb r2, [r7, #3] - 800253a: 6879 ldr r1, [r7, #4] - 800253c: 4613 mov r3, r2 - 800253e: 011b lsls r3, r3, #4 - 8002540: 1a9b subs r3, r3, r2 - 8002542: 009b lsls r3, r3, #2 - 8002544: 440b add r3, r1 - 8002546: 3344 adds r3, #68 @ 0x44 - 8002548: 2200 movs r2, #0 - 800254a: 601a str r2, [r3, #0] + 8002594: 78fa ldrb r2, [r7, #3] + 8002596: 6879 ldr r1, [r7, #4] + 8002598: 4613 mov r3, r2 + 800259a: 011b lsls r3, r3, #4 + 800259c: 1a9b subs r3, r3, r2 + 800259e: 009b lsls r3, r3, #2 + 80025a0: 440b add r3, r1 + 80025a2: 3344 adds r3, #68 @ 0x44 + 80025a4: 2200 movs r2, #0 + 80025a6: 601a str r2, [r3, #0] __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_XFRC); - 800254c: 78fb ldrb r3, [r7, #3] - 800254e: 015a lsls r2, r3, #5 - 8002550: 693b ldr r3, [r7, #16] - 8002552: 4413 add r3, r2 - 8002554: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002558: 461a mov r2, r3 - 800255a: 2301 movs r3, #1 - 800255c: 6093 str r3, [r2, #8] + 80025a8: 78fb ldrb r3, [r7, #3] + 80025aa: 015a lsls r2, r3, #5 + 80025ac: 693b ldr r3, [r7, #16] + 80025ae: 4413 add r3, r2 + 80025b0: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80025b4: 461a mov r2, r3 + 80025b6: 2301 movs r3, #1 + 80025b8: 6093 str r3, [r2, #8] if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || - 800255e: 78fa ldrb r2, [r7, #3] - 8002560: 6879 ldr r1, [r7, #4] - 8002562: 4613 mov r3, r2 - 8002564: 011b lsls r3, r3, #4 - 8002566: 1a9b subs r3, r3, r2 - 8002568: 009b lsls r3, r3, #2 - 800256a: 440b add r3, r1 - 800256c: 3326 adds r3, #38 @ 0x26 - 800256e: 781b ldrb r3, [r3, #0] - 8002570: 2b00 cmp r3, #0 - 8002572: d00a beq.n 800258a + 80025ba: 78fa ldrb r2, [r7, #3] + 80025bc: 6879 ldr r1, [r7, #4] + 80025be: 4613 mov r3, r2 + 80025c0: 011b lsls r3, r3, #4 + 80025c2: 1a9b subs r3, r3, r2 + 80025c4: 009b lsls r3, r3, #2 + 80025c6: 440b add r3, r1 + 80025c8: 3326 adds r3, #38 @ 0x26 + 80025ca: 781b ldrb r3, [r3, #0] + 80025cc: 2b00 cmp r3, #0 + 80025ce: d00a beq.n 80025e6 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) - 8002574: 78fa ldrb r2, [r7, #3] - 8002576: 6879 ldr r1, [r7, #4] - 8002578: 4613 mov r3, r2 - 800257a: 011b lsls r3, r3, #4 - 800257c: 1a9b subs r3, r3, r2 - 800257e: 009b lsls r3, r3, #2 - 8002580: 440b add r3, r1 - 8002582: 3326 adds r3, #38 @ 0x26 - 8002584: 781b ldrb r3, [r3, #0] + 80025d0: 78fa ldrb r2, [r7, #3] + 80025d2: 6879 ldr r1, [r7, #4] + 80025d4: 4613 mov r3, r2 + 80025d6: 011b lsls r3, r3, #4 + 80025d8: 1a9b subs r3, r3, r2 + 80025da: 009b lsls r3, r3, #2 + 80025dc: 440b add r3, r1 + 80025de: 3326 adds r3, #38 @ 0x26 + 80025e0: 781b ldrb r3, [r3, #0] if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || - 8002586: 2b02 cmp r3, #2 - 8002588: d110 bne.n 80025ac + 80025e2: 2b02 cmp r3, #2 + 80025e4: d110 bne.n 8002608 { (void)USB_HC_Halt(hhcd->Instance, chnum); - 800258a: 687b ldr r3, [r7, #4] - 800258c: 681b ldr r3, [r3, #0] - 800258e: 78fa ldrb r2, [r7, #3] - 8002590: 4611 mov r1, r2 - 8002592: 4618 mov r0, r3 - 8002594: f004 f86e bl 8006674 + 80025e6: 687b ldr r3, [r7, #4] + 80025e8: 681b ldr r3, [r3, #0] + 80025ea: 78fa ldrb r2, [r7, #3] + 80025ec: 4611 mov r1, r2 + 80025ee: 4618 mov r0, r3 + 80025f0: f004 f86e bl 80066d0 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK); - 8002598: 78fb ldrb r3, [r7, #3] - 800259a: 015a lsls r2, r3, #5 - 800259c: 693b ldr r3, [r7, #16] - 800259e: 4413 add r3, r2 - 80025a0: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 80025a4: 461a mov r2, r3 - 80025a6: 2310 movs r3, #16 - 80025a8: 6093 str r3, [r2, #8] - 80025aa: e03d b.n 8002628 + 80025f4: 78fb ldrb r3, [r7, #3] + 80025f6: 015a lsls r2, r3, #5 + 80025f8: 693b ldr r3, [r7, #16] + 80025fa: 4413 add r3, r2 + 80025fc: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002600: 461a mov r2, r3 + 8002602: 2310 movs r3, #16 + 8002604: 6093 str r3, [r2, #8] + 8002606: e03d b.n 8002684 } else if ((hhcd->hc[chnum].ep_type == EP_TYPE_INTR) || - 80025ac: 78fa ldrb r2, [r7, #3] - 80025ae: 6879 ldr r1, [r7, #4] - 80025b0: 4613 mov r3, r2 - 80025b2: 011b lsls r3, r3, #4 - 80025b4: 1a9b subs r3, r3, r2 - 80025b6: 009b lsls r3, r3, #2 - 80025b8: 440b add r3, r1 - 80025ba: 3326 adds r3, #38 @ 0x26 - 80025bc: 781b ldrb r3, [r3, #0] - 80025be: 2b03 cmp r3, #3 - 80025c0: d00a beq.n 80025d8 + 8002608: 78fa ldrb r2, [r7, #3] + 800260a: 6879 ldr r1, [r7, #4] + 800260c: 4613 mov r3, r2 + 800260e: 011b lsls r3, r3, #4 + 8002610: 1a9b subs r3, r3, r2 + 8002612: 009b lsls r3, r3, #2 + 8002614: 440b add r3, r1 + 8002616: 3326 adds r3, #38 @ 0x26 + 8002618: 781b ldrb r3, [r3, #0] + 800261a: 2b03 cmp r3, #3 + 800261c: d00a beq.n 8002634 (hhcd->hc[chnum].ep_type == EP_TYPE_ISOC)) - 80025c2: 78fa ldrb r2, [r7, #3] - 80025c4: 6879 ldr r1, [r7, #4] - 80025c6: 4613 mov r3, r2 - 80025c8: 011b lsls r3, r3, #4 - 80025ca: 1a9b subs r3, r3, r2 - 80025cc: 009b lsls r3, r3, #2 - 80025ce: 440b add r3, r1 - 80025d0: 3326 adds r3, #38 @ 0x26 - 80025d2: 781b ldrb r3, [r3, #0] + 800261e: 78fa ldrb r2, [r7, #3] + 8002620: 6879 ldr r1, [r7, #4] + 8002622: 4613 mov r3, r2 + 8002624: 011b lsls r3, r3, #4 + 8002626: 1a9b subs r3, r3, r2 + 8002628: 009b lsls r3, r3, #2 + 800262a: 440b add r3, r1 + 800262c: 3326 adds r3, #38 @ 0x26 + 800262e: 781b ldrb r3, [r3, #0] else if ((hhcd->hc[chnum].ep_type == EP_TYPE_INTR) || - 80025d4: 2b01 cmp r3, #1 - 80025d6: d127 bne.n 8002628 + 8002630: 2b01 cmp r3, #1 + 8002632: d127 bne.n 8002684 { USBx_HC(chnum)->HCCHAR |= USB_OTG_HCCHAR_ODDFRM; - 80025d8: 78fb ldrb r3, [r7, #3] - 80025da: 015a lsls r2, r3, #5 - 80025dc: 693b ldr r3, [r7, #16] - 80025de: 4413 add r3, r2 - 80025e0: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 80025e4: 681b ldr r3, [r3, #0] - 80025e6: 78fa ldrb r2, [r7, #3] - 80025e8: 0151 lsls r1, r2, #5 - 80025ea: 693a ldr r2, [r7, #16] - 80025ec: 440a add r2, r1 - 80025ee: f502 62a0 add.w r2, r2, #1280 @ 0x500 - 80025f2: f043 5300 orr.w r3, r3, #536870912 @ 0x20000000 - 80025f6: 6013 str r3, [r2, #0] + 8002634: 78fb ldrb r3, [r7, #3] + 8002636: 015a lsls r2, r3, #5 + 8002638: 693b ldr r3, [r7, #16] + 800263a: 4413 add r3, r2 + 800263c: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002640: 681b ldr r3, [r3, #0] + 8002642: 78fa ldrb r2, [r7, #3] + 8002644: 0151 lsls r1, r2, #5 + 8002646: 693a ldr r2, [r7, #16] + 8002648: 440a add r2, r1 + 800264a: f502 62a0 add.w r2, r2, #1280 @ 0x500 + 800264e: f043 5300 orr.w r3, r3, #536870912 @ 0x20000000 + 8002652: 6013 str r3, [r2, #0] hhcd->hc[chnum].urb_state = URB_DONE; - 80025f8: 78fa ldrb r2, [r7, #3] - 80025fa: 6879 ldr r1, [r7, #4] - 80025fc: 4613 mov r3, r2 - 80025fe: 011b lsls r3, r3, #4 - 8002600: 1a9b subs r3, r3, r2 - 8002602: 009b lsls r3, r3, #2 - 8002604: 440b add r3, r1 - 8002606: 334c adds r3, #76 @ 0x4c - 8002608: 2201 movs r2, #1 - 800260a: 701a strb r2, [r3, #0] + 8002654: 78fa ldrb r2, [r7, #3] + 8002656: 6879 ldr r1, [r7, #4] + 8002658: 4613 mov r3, r2 + 800265a: 011b lsls r3, r3, #4 + 800265c: 1a9b subs r3, r3, r2 + 800265e: 009b lsls r3, r3, #2 + 8002660: 440b add r3, r1 + 8002662: 334c adds r3, #76 @ 0x4c + 8002664: 2201 movs r2, #1 + 8002666: 701a strb r2, [r3, #0] #if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); #else HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); - 800260c: 78fa ldrb r2, [r7, #3] - 800260e: 6879 ldr r1, [r7, #4] - 8002610: 4613 mov r3, r2 - 8002612: 011b lsls r3, r3, #4 - 8002614: 1a9b subs r3, r3, r2 - 8002616: 009b lsls r3, r3, #2 - 8002618: 440b add r3, r1 - 800261a: 334c adds r3, #76 @ 0x4c - 800261c: 781a ldrb r2, [r3, #0] - 800261e: 78fb ldrb r3, [r7, #3] - 8002620: 4619 mov r1, r3 - 8002622: 6878 ldr r0, [r7, #4] - 8002624: f005 fbbe bl 8007da4 + 8002668: 78fa ldrb r2, [r7, #3] + 800266a: 6879 ldr r1, [r7, #4] + 800266c: 4613 mov r3, r2 + 800266e: 011b lsls r3, r3, #4 + 8002670: 1a9b subs r3, r3, r2 + 8002672: 009b lsls r3, r3, #2 + 8002674: 440b add r3, r1 + 8002676: 334c adds r3, #76 @ 0x4c + 8002678: 781a ldrb r2, [r3, #0] + 800267a: 78fb ldrb r3, [r7, #3] + 800267c: 4619 mov r1, r3 + 800267e: 6878 ldr r0, [r7, #4] + 8002680: f005 fbb8 bl 8007df4 else { /* ... */ } if (hhcd->Init.dma_enable == 1U) - 8002628: 687b ldr r3, [r7, #4] - 800262a: 799b ldrb r3, [r3, #6] - 800262c: 2b01 cmp r3, #1 - 800262e: d13b bne.n 80026a8 + 8002684: 687b ldr r3, [r7, #4] + 8002686: 799b ldrb r3, [r3, #6] + 8002688: 2b01 cmp r3, #1 + 800268a: d13b bne.n 8002704 { if ((((hhcd->hc[chnum].xfer_count + hhcd->hc[chnum].max_packet - 1U) / hhcd->hc[chnum].max_packet) & 1U) != 0U) - 8002630: 78fa ldrb r2, [r7, #3] - 8002632: 6879 ldr r1, [r7, #4] - 8002634: 4613 mov r3, r2 - 8002636: 011b lsls r3, r3, #4 - 8002638: 1a9b subs r3, r3, r2 - 800263a: 009b lsls r3, r3, #2 - 800263c: 440b add r3, r1 - 800263e: 3338 adds r3, #56 @ 0x38 - 8002640: 6819 ldr r1, [r3, #0] - 8002642: 78fa ldrb r2, [r7, #3] - 8002644: 6878 ldr r0, [r7, #4] - 8002646: 4613 mov r3, r2 - 8002648: 011b lsls r3, r3, #4 - 800264a: 1a9b subs r3, r3, r2 - 800264c: 009b lsls r3, r3, #2 - 800264e: 4403 add r3, r0 - 8002650: 3328 adds r3, #40 @ 0x28 - 8002652: 881b ldrh r3, [r3, #0] - 8002654: 440b add r3, r1 - 8002656: 1e59 subs r1, r3, #1 - 8002658: 78fa ldrb r2, [r7, #3] - 800265a: 6878 ldr r0, [r7, #4] - 800265c: 4613 mov r3, r2 - 800265e: 011b lsls r3, r3, #4 - 8002660: 1a9b subs r3, r3, r2 - 8002662: 009b lsls r3, r3, #2 - 8002664: 4403 add r3, r0 - 8002666: 3328 adds r3, #40 @ 0x28 - 8002668: 881b ldrh r3, [r3, #0] - 800266a: fbb1 f3f3 udiv r3, r1, r3 - 800266e: f003 0301 and.w r3, r3, #1 - 8002672: 2b00 cmp r3, #0 - 8002674: f000 8470 beq.w 8002f58 + 800268c: 78fa ldrb r2, [r7, #3] + 800268e: 6879 ldr r1, [r7, #4] + 8002690: 4613 mov r3, r2 + 8002692: 011b lsls r3, r3, #4 + 8002694: 1a9b subs r3, r3, r2 + 8002696: 009b lsls r3, r3, #2 + 8002698: 440b add r3, r1 + 800269a: 3338 adds r3, #56 @ 0x38 + 800269c: 6819 ldr r1, [r3, #0] + 800269e: 78fa ldrb r2, [r7, #3] + 80026a0: 6878 ldr r0, [r7, #4] + 80026a2: 4613 mov r3, r2 + 80026a4: 011b lsls r3, r3, #4 + 80026a6: 1a9b subs r3, r3, r2 + 80026a8: 009b lsls r3, r3, #2 + 80026aa: 4403 add r3, r0 + 80026ac: 3328 adds r3, #40 @ 0x28 + 80026ae: 881b ldrh r3, [r3, #0] + 80026b0: 440b add r3, r1 + 80026b2: 1e59 subs r1, r3, #1 + 80026b4: 78fa ldrb r2, [r7, #3] + 80026b6: 6878 ldr r0, [r7, #4] + 80026b8: 4613 mov r3, r2 + 80026ba: 011b lsls r3, r3, #4 + 80026bc: 1a9b subs r3, r3, r2 + 80026be: 009b lsls r3, r3, #2 + 80026c0: 4403 add r3, r0 + 80026c2: 3328 adds r3, #40 @ 0x28 + 80026c4: 881b ldrh r3, [r3, #0] + 80026c6: fbb1 f3f3 udiv r3, r1, r3 + 80026ca: f003 0301 and.w r3, r3, #1 + 80026ce: 2b00 cmp r3, #0 + 80026d0: f000 8470 beq.w 8002fb4 { hhcd->hc[chnum].toggle_in ^= 1U; - 8002678: 78fa ldrb r2, [r7, #3] - 800267a: 6879 ldr r1, [r7, #4] - 800267c: 4613 mov r3, r2 - 800267e: 011b lsls r3, r3, #4 - 8002680: 1a9b subs r3, r3, r2 - 8002682: 009b lsls r3, r3, #2 - 8002684: 440b add r3, r1 - 8002686: 333c adds r3, #60 @ 0x3c - 8002688: 781b ldrb r3, [r3, #0] - 800268a: 78fa ldrb r2, [r7, #3] - 800268c: f083 0301 eor.w r3, r3, #1 - 8002690: b2d8 uxtb r0, r3 - 8002692: 6879 ldr r1, [r7, #4] - 8002694: 4613 mov r3, r2 - 8002696: 011b lsls r3, r3, #4 - 8002698: 1a9b subs r3, r3, r2 - 800269a: 009b lsls r3, r3, #2 - 800269c: 440b add r3, r1 - 800269e: 333c adds r3, #60 @ 0x3c - 80026a0: 4602 mov r2, r0 - 80026a2: 701a strb r2, [r3, #0] - 80026a4: f000 bc58 b.w 8002f58 + 80026d4: 78fa ldrb r2, [r7, #3] + 80026d6: 6879 ldr r1, [r7, #4] + 80026d8: 4613 mov r3, r2 + 80026da: 011b lsls r3, r3, #4 + 80026dc: 1a9b subs r3, r3, r2 + 80026de: 009b lsls r3, r3, #2 + 80026e0: 440b add r3, r1 + 80026e2: 333c adds r3, #60 @ 0x3c + 80026e4: 781b ldrb r3, [r3, #0] + 80026e6: 78fa ldrb r2, [r7, #3] + 80026e8: f083 0301 eor.w r3, r3, #1 + 80026ec: b2d8 uxtb r0, r3 + 80026ee: 6879 ldr r1, [r7, #4] + 80026f0: 4613 mov r3, r2 + 80026f2: 011b lsls r3, r3, #4 + 80026f4: 1a9b subs r3, r3, r2 + 80026f6: 009b lsls r3, r3, #2 + 80026f8: 440b add r3, r1 + 80026fa: 333c adds r3, #60 @ 0x3c + 80026fc: 4602 mov r2, r0 + 80026fe: 701a strb r2, [r3, #0] + 8002700: f000 bc58 b.w 8002fb4 } } else { hhcd->hc[chnum].toggle_in ^= 1U; - 80026a8: 78fa ldrb r2, [r7, #3] - 80026aa: 6879 ldr r1, [r7, #4] - 80026ac: 4613 mov r3, r2 - 80026ae: 011b lsls r3, r3, #4 - 80026b0: 1a9b subs r3, r3, r2 - 80026b2: 009b lsls r3, r3, #2 - 80026b4: 440b add r3, r1 - 80026b6: 333c adds r3, #60 @ 0x3c - 80026b8: 781b ldrb r3, [r3, #0] - 80026ba: 78fa ldrb r2, [r7, #3] - 80026bc: f083 0301 eor.w r3, r3, #1 - 80026c0: b2d8 uxtb r0, r3 - 80026c2: 6879 ldr r1, [r7, #4] - 80026c4: 4613 mov r3, r2 - 80026c6: 011b lsls r3, r3, #4 - 80026c8: 1a9b subs r3, r3, r2 - 80026ca: 009b lsls r3, r3, #2 - 80026cc: 440b add r3, r1 - 80026ce: 333c adds r3, #60 @ 0x3c - 80026d0: 4602 mov r2, r0 - 80026d2: 701a strb r2, [r3, #0] - 80026d4: f000 bc40 b.w 8002f58 + 8002704: 78fa ldrb r2, [r7, #3] + 8002706: 6879 ldr r1, [r7, #4] + 8002708: 4613 mov r3, r2 + 800270a: 011b lsls r3, r3, #4 + 800270c: 1a9b subs r3, r3, r2 + 800270e: 009b lsls r3, r3, #2 + 8002710: 440b add r3, r1 + 8002712: 333c adds r3, #60 @ 0x3c + 8002714: 781b ldrb r3, [r3, #0] + 8002716: 78fa ldrb r2, [r7, #3] + 8002718: f083 0301 eor.w r3, r3, #1 + 800271c: b2d8 uxtb r0, r3 + 800271e: 6879 ldr r1, [r7, #4] + 8002720: 4613 mov r3, r2 + 8002722: 011b lsls r3, r3, #4 + 8002724: 1a9b subs r3, r3, r2 + 8002726: 009b lsls r3, r3, #2 + 8002728: 440b add r3, r1 + 800272a: 333c adds r3, #60 @ 0x3c + 800272c: 4602 mov r2, r0 + 800272e: 701a strb r2, [r3, #0] + 8002730: f000 bc40 b.w 8002fb4 } } else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_ACK)) - 80026d8: 687b ldr r3, [r7, #4] - 80026da: 681b ldr r3, [r3, #0] - 80026dc: 78fa ldrb r2, [r7, #3] - 80026de: 4611 mov r1, r2 - 80026e0: 4618 mov r0, r3 - 80026e2: f003 ff4a bl 800657a - 80026e6: 4603 mov r3, r0 - 80026e8: f003 0320 and.w r3, r3, #32 - 80026ec: 2b20 cmp r3, #32 - 80026ee: d131 bne.n 8002754 + 8002734: 687b ldr r3, [r7, #4] + 8002736: 681b ldr r3, [r3, #0] + 8002738: 78fa ldrb r2, [r7, #3] + 800273a: 4611 mov r1, r2 + 800273c: 4618 mov r0, r3 + 800273e: f003 ff4a bl 80065d6 + 8002742: 4603 mov r3, r0 + 8002744: f003 0320 and.w r3, r3, #32 + 8002748: 2b20 cmp r3, #32 + 800274a: d131 bne.n 80027b0 { __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_ACK); - 80026f0: 78fb ldrb r3, [r7, #3] - 80026f2: 015a lsls r2, r3, #5 - 80026f4: 693b ldr r3, [r7, #16] - 80026f6: 4413 add r3, r2 - 80026f8: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 80026fc: 461a mov r2, r3 - 80026fe: 2320 movs r3, #32 - 8002700: 6093 str r3, [r2, #8] + 800274c: 78fb ldrb r3, [r7, #3] + 800274e: 015a lsls r2, r3, #5 + 8002750: 693b ldr r3, [r7, #16] + 8002752: 4413 add r3, r2 + 8002754: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002758: 461a mov r2, r3 + 800275a: 2320 movs r3, #32 + 800275c: 6093 str r3, [r2, #8] if (hhcd->hc[chnum].do_ssplit == 1U) - 8002702: 78fa ldrb r2, [r7, #3] - 8002704: 6879 ldr r1, [r7, #4] - 8002706: 4613 mov r3, r2 - 8002708: 011b lsls r3, r3, #4 - 800270a: 1a9b subs r3, r3, r2 - 800270c: 009b lsls r3, r3, #2 - 800270e: 440b add r3, r1 - 8002710: 331a adds r3, #26 - 8002712: 781b ldrb r3, [r3, #0] - 8002714: 2b01 cmp r3, #1 - 8002716: f040 841f bne.w 8002f58 + 800275e: 78fa ldrb r2, [r7, #3] + 8002760: 6879 ldr r1, [r7, #4] + 8002762: 4613 mov r3, r2 + 8002764: 011b lsls r3, r3, #4 + 8002766: 1a9b subs r3, r3, r2 + 8002768: 009b lsls r3, r3, #2 + 800276a: 440b add r3, r1 + 800276c: 331a adds r3, #26 + 800276e: 781b ldrb r3, [r3, #0] + 8002770: 2b01 cmp r3, #1 + 8002772: f040 841f bne.w 8002fb4 { hhcd->hc[chnum].do_csplit = 1U; - 800271a: 78fa ldrb r2, [r7, #3] - 800271c: 6879 ldr r1, [r7, #4] - 800271e: 4613 mov r3, r2 - 8002720: 011b lsls r3, r3, #4 - 8002722: 1a9b subs r3, r3, r2 - 8002724: 009b lsls r3, r3, #2 - 8002726: 440b add r3, r1 - 8002728: 331b adds r3, #27 - 800272a: 2201 movs r2, #1 - 800272c: 701a strb r2, [r3, #0] + 8002776: 78fa ldrb r2, [r7, #3] + 8002778: 6879 ldr r1, [r7, #4] + 800277a: 4613 mov r3, r2 + 800277c: 011b lsls r3, r3, #4 + 800277e: 1a9b subs r3, r3, r2 + 8002780: 009b lsls r3, r3, #2 + 8002782: 440b add r3, r1 + 8002784: 331b adds r3, #27 + 8002786: 2201 movs r2, #1 + 8002788: 701a strb r2, [r3, #0] hhcd->hc[chnum].state = HC_ACK; - 800272e: 78fa ldrb r2, [r7, #3] - 8002730: 6879 ldr r1, [r7, #4] - 8002732: 4613 mov r3, r2 - 8002734: 011b lsls r3, r3, #4 - 8002736: 1a9b subs r3, r3, r2 - 8002738: 009b lsls r3, r3, #2 - 800273a: 440b add r3, r1 - 800273c: 334d adds r3, #77 @ 0x4d - 800273e: 2203 movs r2, #3 - 8002740: 701a strb r2, [r3, #0] + 800278a: 78fa ldrb r2, [r7, #3] + 800278c: 6879 ldr r1, [r7, #4] + 800278e: 4613 mov r3, r2 + 8002790: 011b lsls r3, r3, #4 + 8002792: 1a9b subs r3, r3, r2 + 8002794: 009b lsls r3, r3, #2 + 8002796: 440b add r3, r1 + 8002798: 334d adds r3, #77 @ 0x4d + 800279a: 2203 movs r2, #3 + 800279c: 701a strb r2, [r3, #0] (void)USB_HC_Halt(hhcd->Instance, chnum); - 8002742: 687b ldr r3, [r7, #4] - 8002744: 681b ldr r3, [r3, #0] - 8002746: 78fa ldrb r2, [r7, #3] - 8002748: 4611 mov r1, r2 - 800274a: 4618 mov r0, r3 - 800274c: f003 ff92 bl 8006674 - 8002750: f000 bc02 b.w 8002f58 + 800279e: 687b ldr r3, [r7, #4] + 80027a0: 681b ldr r3, [r3, #0] + 80027a2: 78fa ldrb r2, [r7, #3] + 80027a4: 4611 mov r1, r2 + 80027a6: 4618 mov r0, r3 + 80027a8: f003 ff92 bl 80066d0 + 80027ac: f000 bc02 b.w 8002fb4 } } else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_CHH)) - 8002754: 687b ldr r3, [r7, #4] - 8002756: 681b ldr r3, [r3, #0] - 8002758: 78fa ldrb r2, [r7, #3] - 800275a: 4611 mov r1, r2 - 800275c: 4618 mov r0, r3 - 800275e: f003 ff0c bl 800657a - 8002762: 4603 mov r3, r0 - 8002764: f003 0302 and.w r3, r3, #2 - 8002768: 2b02 cmp r3, #2 - 800276a: f040 8305 bne.w 8002d78 + 80027b0: 687b ldr r3, [r7, #4] + 80027b2: 681b ldr r3, [r3, #0] + 80027b4: 78fa ldrb r2, [r7, #3] + 80027b6: 4611 mov r1, r2 + 80027b8: 4618 mov r0, r3 + 80027ba: f003 ff0c bl 80065d6 + 80027be: 4603 mov r3, r0 + 80027c0: f003 0302 and.w r3, r3, #2 + 80027c4: 2b02 cmp r3, #2 + 80027c6: f040 8305 bne.w 8002dd4 { __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_CHH); - 800276e: 78fb ldrb r3, [r7, #3] - 8002770: 015a lsls r2, r3, #5 - 8002772: 693b ldr r3, [r7, #16] - 8002774: 4413 add r3, r2 - 8002776: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 800277a: 461a mov r2, r3 - 800277c: 2302 movs r3, #2 - 800277e: 6093 str r3, [r2, #8] + 80027ca: 78fb ldrb r3, [r7, #3] + 80027cc: 015a lsls r2, r3, #5 + 80027ce: 693b ldr r3, [r7, #16] + 80027d0: 4413 add r3, r2 + 80027d2: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80027d6: 461a mov r2, r3 + 80027d8: 2302 movs r3, #2 + 80027da: 6093 str r3, [r2, #8] if (hhcd->hc[chnum].state == HC_XFRC) - 8002780: 78fa ldrb r2, [r7, #3] - 8002782: 6879 ldr r1, [r7, #4] - 8002784: 4613 mov r3, r2 - 8002786: 011b lsls r3, r3, #4 - 8002788: 1a9b subs r3, r3, r2 - 800278a: 009b lsls r3, r3, #2 - 800278c: 440b add r3, r1 - 800278e: 334d adds r3, #77 @ 0x4d - 8002790: 781b ldrb r3, [r3, #0] - 8002792: 2b01 cmp r3, #1 - 8002794: d114 bne.n 80027c0 + 80027dc: 78fa ldrb r2, [r7, #3] + 80027de: 6879 ldr r1, [r7, #4] + 80027e0: 4613 mov r3, r2 + 80027e2: 011b lsls r3, r3, #4 + 80027e4: 1a9b subs r3, r3, r2 + 80027e6: 009b lsls r3, r3, #2 + 80027e8: 440b add r3, r1 + 80027ea: 334d adds r3, #77 @ 0x4d + 80027ec: 781b ldrb r3, [r3, #0] + 80027ee: 2b01 cmp r3, #1 + 80027f0: d114 bne.n 800281c { hhcd->hc[chnum].state = HC_HALTED; - 8002796: 78fa ldrb r2, [r7, #3] - 8002798: 6879 ldr r1, [r7, #4] - 800279a: 4613 mov r3, r2 - 800279c: 011b lsls r3, r3, #4 - 800279e: 1a9b subs r3, r3, r2 - 80027a0: 009b lsls r3, r3, #2 - 80027a2: 440b add r3, r1 - 80027a4: 334d adds r3, #77 @ 0x4d - 80027a6: 2202 movs r2, #2 - 80027a8: 701a strb r2, [r3, #0] + 80027f2: 78fa ldrb r2, [r7, #3] + 80027f4: 6879 ldr r1, [r7, #4] + 80027f6: 4613 mov r3, r2 + 80027f8: 011b lsls r3, r3, #4 + 80027fa: 1a9b subs r3, r3, r2 + 80027fc: 009b lsls r3, r3, #2 + 80027fe: 440b add r3, r1 + 8002800: 334d adds r3, #77 @ 0x4d + 8002802: 2202 movs r2, #2 + 8002804: 701a strb r2, [r3, #0] hhcd->hc[chnum].urb_state = URB_DONE; - 80027aa: 78fa ldrb r2, [r7, #3] - 80027ac: 6879 ldr r1, [r7, #4] - 80027ae: 4613 mov r3, r2 - 80027b0: 011b lsls r3, r3, #4 - 80027b2: 1a9b subs r3, r3, r2 - 80027b4: 009b lsls r3, r3, #2 - 80027b6: 440b add r3, r1 - 80027b8: 334c adds r3, #76 @ 0x4c - 80027ba: 2201 movs r2, #1 - 80027bc: 701a strb r2, [r3, #0] - 80027be: e2cc b.n 8002d5a + 8002806: 78fa ldrb r2, [r7, #3] + 8002808: 6879 ldr r1, [r7, #4] + 800280a: 4613 mov r3, r2 + 800280c: 011b lsls r3, r3, #4 + 800280e: 1a9b subs r3, r3, r2 + 8002810: 009b lsls r3, r3, #2 + 8002812: 440b add r3, r1 + 8002814: 334c adds r3, #76 @ 0x4c + 8002816: 2201 movs r2, #1 + 8002818: 701a strb r2, [r3, #0] + 800281a: e2cc b.n 8002db6 } else if (hhcd->hc[chnum].state == HC_STALL) - 80027c0: 78fa ldrb r2, [r7, #3] - 80027c2: 6879 ldr r1, [r7, #4] - 80027c4: 4613 mov r3, r2 - 80027c6: 011b lsls r3, r3, #4 - 80027c8: 1a9b subs r3, r3, r2 - 80027ca: 009b lsls r3, r3, #2 - 80027cc: 440b add r3, r1 - 80027ce: 334d adds r3, #77 @ 0x4d - 80027d0: 781b ldrb r3, [r3, #0] - 80027d2: 2b06 cmp r3, #6 - 80027d4: d114 bne.n 8002800 + 800281c: 78fa ldrb r2, [r7, #3] + 800281e: 6879 ldr r1, [r7, #4] + 8002820: 4613 mov r3, r2 + 8002822: 011b lsls r3, r3, #4 + 8002824: 1a9b subs r3, r3, r2 + 8002826: 009b lsls r3, r3, #2 + 8002828: 440b add r3, r1 + 800282a: 334d adds r3, #77 @ 0x4d + 800282c: 781b ldrb r3, [r3, #0] + 800282e: 2b06 cmp r3, #6 + 8002830: d114 bne.n 800285c { hhcd->hc[chnum].state = HC_HALTED; - 80027d6: 78fa ldrb r2, [r7, #3] - 80027d8: 6879 ldr r1, [r7, #4] - 80027da: 4613 mov r3, r2 - 80027dc: 011b lsls r3, r3, #4 - 80027de: 1a9b subs r3, r3, r2 - 80027e0: 009b lsls r3, r3, #2 - 80027e2: 440b add r3, r1 - 80027e4: 334d adds r3, #77 @ 0x4d - 80027e6: 2202 movs r2, #2 - 80027e8: 701a strb r2, [r3, #0] + 8002832: 78fa ldrb r2, [r7, #3] + 8002834: 6879 ldr r1, [r7, #4] + 8002836: 4613 mov r3, r2 + 8002838: 011b lsls r3, r3, #4 + 800283a: 1a9b subs r3, r3, r2 + 800283c: 009b lsls r3, r3, #2 + 800283e: 440b add r3, r1 + 8002840: 334d adds r3, #77 @ 0x4d + 8002842: 2202 movs r2, #2 + 8002844: 701a strb r2, [r3, #0] hhcd->hc[chnum].urb_state = URB_STALL; - 80027ea: 78fa ldrb r2, [r7, #3] - 80027ec: 6879 ldr r1, [r7, #4] - 80027ee: 4613 mov r3, r2 - 80027f0: 011b lsls r3, r3, #4 - 80027f2: 1a9b subs r3, r3, r2 - 80027f4: 009b lsls r3, r3, #2 - 80027f6: 440b add r3, r1 - 80027f8: 334c adds r3, #76 @ 0x4c - 80027fa: 2205 movs r2, #5 - 80027fc: 701a strb r2, [r3, #0] - 80027fe: e2ac b.n 8002d5a + 8002846: 78fa ldrb r2, [r7, #3] + 8002848: 6879 ldr r1, [r7, #4] + 800284a: 4613 mov r3, r2 + 800284c: 011b lsls r3, r3, #4 + 800284e: 1a9b subs r3, r3, r2 + 8002850: 009b lsls r3, r3, #2 + 8002852: 440b add r3, r1 + 8002854: 334c adds r3, #76 @ 0x4c + 8002856: 2205 movs r2, #5 + 8002858: 701a strb r2, [r3, #0] + 800285a: e2ac b.n 8002db6 } else if ((hhcd->hc[chnum].state == HC_XACTERR) || - 8002800: 78fa ldrb r2, [r7, #3] - 8002802: 6879 ldr r1, [r7, #4] - 8002804: 4613 mov r3, r2 - 8002806: 011b lsls r3, r3, #4 - 8002808: 1a9b subs r3, r3, r2 - 800280a: 009b lsls r3, r3, #2 - 800280c: 440b add r3, r1 - 800280e: 334d adds r3, #77 @ 0x4d - 8002810: 781b ldrb r3, [r3, #0] - 8002812: 2b07 cmp r3, #7 - 8002814: d00b beq.n 800282e + 800285c: 78fa ldrb r2, [r7, #3] + 800285e: 6879 ldr r1, [r7, #4] + 8002860: 4613 mov r3, r2 + 8002862: 011b lsls r3, r3, #4 + 8002864: 1a9b subs r3, r3, r2 + 8002866: 009b lsls r3, r3, #2 + 8002868: 440b add r3, r1 + 800286a: 334d adds r3, #77 @ 0x4d + 800286c: 781b ldrb r3, [r3, #0] + 800286e: 2b07 cmp r3, #7 + 8002870: d00b beq.n 800288a (hhcd->hc[chnum].state == HC_DATATGLERR)) - 8002816: 78fa ldrb r2, [r7, #3] - 8002818: 6879 ldr r1, [r7, #4] - 800281a: 4613 mov r3, r2 - 800281c: 011b lsls r3, r3, #4 - 800281e: 1a9b subs r3, r3, r2 - 8002820: 009b lsls r3, r3, #2 - 8002822: 440b add r3, r1 - 8002824: 334d adds r3, #77 @ 0x4d - 8002826: 781b ldrb r3, [r3, #0] + 8002872: 78fa ldrb r2, [r7, #3] + 8002874: 6879 ldr r1, [r7, #4] + 8002876: 4613 mov r3, r2 + 8002878: 011b lsls r3, r3, #4 + 800287a: 1a9b subs r3, r3, r2 + 800287c: 009b lsls r3, r3, #2 + 800287e: 440b add r3, r1 + 8002880: 334d adds r3, #77 @ 0x4d + 8002882: 781b ldrb r3, [r3, #0] else if ((hhcd->hc[chnum].state == HC_XACTERR) || - 8002828: 2b09 cmp r3, #9 - 800282a: f040 80a6 bne.w 800297a + 8002884: 2b09 cmp r3, #9 + 8002886: f040 80a6 bne.w 80029d6 { hhcd->hc[chnum].state = HC_HALTED; - 800282e: 78fa ldrb r2, [r7, #3] - 8002830: 6879 ldr r1, [r7, #4] - 8002832: 4613 mov r3, r2 - 8002834: 011b lsls r3, r3, #4 - 8002836: 1a9b subs r3, r3, r2 - 8002838: 009b lsls r3, r3, #2 - 800283a: 440b add r3, r1 - 800283c: 334d adds r3, #77 @ 0x4d - 800283e: 2202 movs r2, #2 - 8002840: 701a strb r2, [r3, #0] + 800288a: 78fa ldrb r2, [r7, #3] + 800288c: 6879 ldr r1, [r7, #4] + 800288e: 4613 mov r3, r2 + 8002890: 011b lsls r3, r3, #4 + 8002892: 1a9b subs r3, r3, r2 + 8002894: 009b lsls r3, r3, #2 + 8002896: 440b add r3, r1 + 8002898: 334d adds r3, #77 @ 0x4d + 800289a: 2202 movs r2, #2 + 800289c: 701a strb r2, [r3, #0] hhcd->hc[chnum].ErrCnt++; - 8002842: 78fa ldrb r2, [r7, #3] - 8002844: 6879 ldr r1, [r7, #4] - 8002846: 4613 mov r3, r2 - 8002848: 011b lsls r3, r3, #4 - 800284a: 1a9b subs r3, r3, r2 - 800284c: 009b lsls r3, r3, #2 - 800284e: 440b add r3, r1 - 8002850: 3344 adds r3, #68 @ 0x44 - 8002852: 681b ldr r3, [r3, #0] - 8002854: 1c59 adds r1, r3, #1 - 8002856: 6878 ldr r0, [r7, #4] - 8002858: 4613 mov r3, r2 - 800285a: 011b lsls r3, r3, #4 - 800285c: 1a9b subs r3, r3, r2 - 800285e: 009b lsls r3, r3, #2 - 8002860: 4403 add r3, r0 - 8002862: 3344 adds r3, #68 @ 0x44 - 8002864: 6019 str r1, [r3, #0] + 800289e: 78fa ldrb r2, [r7, #3] + 80028a0: 6879 ldr r1, [r7, #4] + 80028a2: 4613 mov r3, r2 + 80028a4: 011b lsls r3, r3, #4 + 80028a6: 1a9b subs r3, r3, r2 + 80028a8: 009b lsls r3, r3, #2 + 80028aa: 440b add r3, r1 + 80028ac: 3344 adds r3, #68 @ 0x44 + 80028ae: 681b ldr r3, [r3, #0] + 80028b0: 1c59 adds r1, r3, #1 + 80028b2: 6878 ldr r0, [r7, #4] + 80028b4: 4613 mov r3, r2 + 80028b6: 011b lsls r3, r3, #4 + 80028b8: 1a9b subs r3, r3, r2 + 80028ba: 009b lsls r3, r3, #2 + 80028bc: 4403 add r3, r0 + 80028be: 3344 adds r3, #68 @ 0x44 + 80028c0: 6019 str r1, [r3, #0] if (hhcd->hc[chnum].ErrCnt > 2U) - 8002866: 78fa ldrb r2, [r7, #3] - 8002868: 6879 ldr r1, [r7, #4] - 800286a: 4613 mov r3, r2 - 800286c: 011b lsls r3, r3, #4 - 800286e: 1a9b subs r3, r3, r2 - 8002870: 009b lsls r3, r3, #2 - 8002872: 440b add r3, r1 - 8002874: 3344 adds r3, #68 @ 0x44 - 8002876: 681b ldr r3, [r3, #0] - 8002878: 2b02 cmp r3, #2 - 800287a: d943 bls.n 8002904 + 80028c2: 78fa ldrb r2, [r7, #3] + 80028c4: 6879 ldr r1, [r7, #4] + 80028c6: 4613 mov r3, r2 + 80028c8: 011b lsls r3, r3, #4 + 80028ca: 1a9b subs r3, r3, r2 + 80028cc: 009b lsls r3, r3, #2 + 80028ce: 440b add r3, r1 + 80028d0: 3344 adds r3, #68 @ 0x44 + 80028d2: 681b ldr r3, [r3, #0] + 80028d4: 2b02 cmp r3, #2 + 80028d6: d943 bls.n 8002960 { hhcd->hc[chnum].ErrCnt = 0U; - 800287c: 78fa ldrb r2, [r7, #3] - 800287e: 6879 ldr r1, [r7, #4] - 8002880: 4613 mov r3, r2 - 8002882: 011b lsls r3, r3, #4 - 8002884: 1a9b subs r3, r3, r2 - 8002886: 009b lsls r3, r3, #2 - 8002888: 440b add r3, r1 - 800288a: 3344 adds r3, #68 @ 0x44 - 800288c: 2200 movs r2, #0 - 800288e: 601a str r2, [r3, #0] + 80028d8: 78fa ldrb r2, [r7, #3] + 80028da: 6879 ldr r1, [r7, #4] + 80028dc: 4613 mov r3, r2 + 80028de: 011b lsls r3, r3, #4 + 80028e0: 1a9b subs r3, r3, r2 + 80028e2: 009b lsls r3, r3, #2 + 80028e4: 440b add r3, r1 + 80028e6: 3344 adds r3, #68 @ 0x44 + 80028e8: 2200 movs r2, #0 + 80028ea: 601a str r2, [r3, #0] if (hhcd->hc[chnum].do_ssplit == 1U) - 8002890: 78fa ldrb r2, [r7, #3] - 8002892: 6879 ldr r1, [r7, #4] - 8002894: 4613 mov r3, r2 - 8002896: 011b lsls r3, r3, #4 - 8002898: 1a9b subs r3, r3, r2 - 800289a: 009b lsls r3, r3, #2 - 800289c: 440b add r3, r1 - 800289e: 331a adds r3, #26 - 80028a0: 781b ldrb r3, [r3, #0] - 80028a2: 2b01 cmp r3, #1 - 80028a4: d123 bne.n 80028ee + 80028ec: 78fa ldrb r2, [r7, #3] + 80028ee: 6879 ldr r1, [r7, #4] + 80028f0: 4613 mov r3, r2 + 80028f2: 011b lsls r3, r3, #4 + 80028f4: 1a9b subs r3, r3, r2 + 80028f6: 009b lsls r3, r3, #2 + 80028f8: 440b add r3, r1 + 80028fa: 331a adds r3, #26 + 80028fc: 781b ldrb r3, [r3, #0] + 80028fe: 2b01 cmp r3, #1 + 8002900: d123 bne.n 800294a { hhcd->hc[chnum].do_csplit = 0U; - 80028a6: 78fa ldrb r2, [r7, #3] - 80028a8: 6879 ldr r1, [r7, #4] - 80028aa: 4613 mov r3, r2 - 80028ac: 011b lsls r3, r3, #4 - 80028ae: 1a9b subs r3, r3, r2 - 80028b0: 009b lsls r3, r3, #2 - 80028b2: 440b add r3, r1 - 80028b4: 331b adds r3, #27 - 80028b6: 2200 movs r2, #0 - 80028b8: 701a strb r2, [r3, #0] + 8002902: 78fa ldrb r2, [r7, #3] + 8002904: 6879 ldr r1, [r7, #4] + 8002906: 4613 mov r3, r2 + 8002908: 011b lsls r3, r3, #4 + 800290a: 1a9b subs r3, r3, r2 + 800290c: 009b lsls r3, r3, #2 + 800290e: 440b add r3, r1 + 8002910: 331b adds r3, #27 + 8002912: 2200 movs r2, #0 + 8002914: 701a strb r2, [r3, #0] hhcd->hc[chnum].ep_ss_schedule = 0U; - 80028ba: 78fa ldrb r2, [r7, #3] - 80028bc: 6879 ldr r1, [r7, #4] - 80028be: 4613 mov r3, r2 - 80028c0: 011b lsls r3, r3, #4 - 80028c2: 1a9b subs r3, r3, r2 - 80028c4: 009b lsls r3, r3, #2 - 80028c6: 440b add r3, r1 - 80028c8: 331c adds r3, #28 - 80028ca: 2200 movs r2, #0 - 80028cc: 701a strb r2, [r3, #0] + 8002916: 78fa ldrb r2, [r7, #3] + 8002918: 6879 ldr r1, [r7, #4] + 800291a: 4613 mov r3, r2 + 800291c: 011b lsls r3, r3, #4 + 800291e: 1a9b subs r3, r3, r2 + 8002920: 009b lsls r3, r3, #2 + 8002922: 440b add r3, r1 + 8002924: 331c adds r3, #28 + 8002926: 2200 movs r2, #0 + 8002928: 701a strb r2, [r3, #0] __HAL_HCD_CLEAR_HC_CSPLT(chnum); - 80028ce: 78fb ldrb r3, [r7, #3] - 80028d0: 015a lsls r2, r3, #5 - 80028d2: 693b ldr r3, [r7, #16] - 80028d4: 4413 add r3, r2 - 80028d6: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 80028da: 685b ldr r3, [r3, #4] - 80028dc: 78fa ldrb r2, [r7, #3] - 80028de: 0151 lsls r1, r2, #5 - 80028e0: 693a ldr r2, [r7, #16] - 80028e2: 440a add r2, r1 - 80028e4: f502 62a0 add.w r2, r2, #1280 @ 0x500 - 80028e8: f423 3380 bic.w r3, r3, #65536 @ 0x10000 - 80028ec: 6053 str r3, [r2, #4] + 800292a: 78fb ldrb r3, [r7, #3] + 800292c: 015a lsls r2, r3, #5 + 800292e: 693b ldr r3, [r7, #16] + 8002930: 4413 add r3, r2 + 8002932: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002936: 685b ldr r3, [r3, #4] + 8002938: 78fa ldrb r2, [r7, #3] + 800293a: 0151 lsls r1, r2, #5 + 800293c: 693a ldr r2, [r7, #16] + 800293e: 440a add r2, r1 + 8002940: f502 62a0 add.w r2, r2, #1280 @ 0x500 + 8002944: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 8002948: 6053 str r3, [r2, #4] } hhcd->hc[chnum].urb_state = URB_ERROR; - 80028ee: 78fa ldrb r2, [r7, #3] - 80028f0: 6879 ldr r1, [r7, #4] - 80028f2: 4613 mov r3, r2 - 80028f4: 011b lsls r3, r3, #4 - 80028f6: 1a9b subs r3, r3, r2 - 80028f8: 009b lsls r3, r3, #2 - 80028fa: 440b add r3, r1 - 80028fc: 334c adds r3, #76 @ 0x4c - 80028fe: 2204 movs r2, #4 - 8002900: 701a strb r2, [r3, #0] + 800294a: 78fa ldrb r2, [r7, #3] + 800294c: 6879 ldr r1, [r7, #4] + 800294e: 4613 mov r3, r2 + 8002950: 011b lsls r3, r3, #4 + 8002952: 1a9b subs r3, r3, r2 + 8002954: 009b lsls r3, r3, #2 + 8002956: 440b add r3, r1 + 8002958: 334c adds r3, #76 @ 0x4c + 800295a: 2204 movs r2, #4 + 800295c: 701a strb r2, [r3, #0] if (hhcd->hc[chnum].ErrCnt > 2U) - 8002902: e229 b.n 8002d58 + 800295e: e229 b.n 8002db4 } else { hhcd->hc[chnum].urb_state = URB_NOTREADY; - 8002904: 78fa ldrb r2, [r7, #3] - 8002906: 6879 ldr r1, [r7, #4] - 8002908: 4613 mov r3, r2 - 800290a: 011b lsls r3, r3, #4 - 800290c: 1a9b subs r3, r3, r2 - 800290e: 009b lsls r3, r3, #2 - 8002910: 440b add r3, r1 - 8002912: 334c adds r3, #76 @ 0x4c - 8002914: 2202 movs r2, #2 - 8002916: 701a strb r2, [r3, #0] + 8002960: 78fa ldrb r2, [r7, #3] + 8002962: 6879 ldr r1, [r7, #4] + 8002964: 4613 mov r3, r2 + 8002966: 011b lsls r3, r3, #4 + 8002968: 1a9b subs r3, r3, r2 + 800296a: 009b lsls r3, r3, #2 + 800296c: 440b add r3, r1 + 800296e: 334c adds r3, #76 @ 0x4c + 8002970: 2202 movs r2, #2 + 8002972: 701a strb r2, [r3, #0] if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || - 8002918: 78fa ldrb r2, [r7, #3] - 800291a: 6879 ldr r1, [r7, #4] - 800291c: 4613 mov r3, r2 - 800291e: 011b lsls r3, r3, #4 - 8002920: 1a9b subs r3, r3, r2 - 8002922: 009b lsls r3, r3, #2 - 8002924: 440b add r3, r1 - 8002926: 3326 adds r3, #38 @ 0x26 - 8002928: 781b ldrb r3, [r3, #0] - 800292a: 2b00 cmp r3, #0 - 800292c: d00b beq.n 8002946 + 8002974: 78fa ldrb r2, [r7, #3] + 8002976: 6879 ldr r1, [r7, #4] + 8002978: 4613 mov r3, r2 + 800297a: 011b lsls r3, r3, #4 + 800297c: 1a9b subs r3, r3, r2 + 800297e: 009b lsls r3, r3, #2 + 8002980: 440b add r3, r1 + 8002982: 3326 adds r3, #38 @ 0x26 + 8002984: 781b ldrb r3, [r3, #0] + 8002986: 2b00 cmp r3, #0 + 8002988: d00b beq.n 80029a2 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) - 800292e: 78fa ldrb r2, [r7, #3] - 8002930: 6879 ldr r1, [r7, #4] - 8002932: 4613 mov r3, r2 - 8002934: 011b lsls r3, r3, #4 - 8002936: 1a9b subs r3, r3, r2 - 8002938: 009b lsls r3, r3, #2 - 800293a: 440b add r3, r1 - 800293c: 3326 adds r3, #38 @ 0x26 - 800293e: 781b ldrb r3, [r3, #0] + 800298a: 78fa ldrb r2, [r7, #3] + 800298c: 6879 ldr r1, [r7, #4] + 800298e: 4613 mov r3, r2 + 8002990: 011b lsls r3, r3, #4 + 8002992: 1a9b subs r3, r3, r2 + 8002994: 009b lsls r3, r3, #2 + 8002996: 440b add r3, r1 + 8002998: 3326 adds r3, #38 @ 0x26 + 800299a: 781b ldrb r3, [r3, #0] if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || - 8002940: 2b02 cmp r3, #2 - 8002942: f040 8209 bne.w 8002d58 + 800299c: 2b02 cmp r3, #2 + 800299e: f040 8209 bne.w 8002db4 { /* re-activate the channel */ tmpreg = USBx_HC(chnum)->HCCHAR; - 8002946: 78fb ldrb r3, [r7, #3] - 8002948: 015a lsls r2, r3, #5 - 800294a: 693b ldr r3, [r7, #16] - 800294c: 4413 add r3, r2 - 800294e: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002952: 681b ldr r3, [r3, #0] - 8002954: 60fb str r3, [r7, #12] + 80029a2: 78fb ldrb r3, [r7, #3] + 80029a4: 015a lsls r2, r3, #5 + 80029a6: 693b ldr r3, [r7, #16] + 80029a8: 4413 add r3, r2 + 80029aa: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80029ae: 681b ldr r3, [r3, #0] + 80029b0: 60fb str r3, [r7, #12] tmpreg &= ~USB_OTG_HCCHAR_CHDIS; - 8002956: 68fb ldr r3, [r7, #12] - 8002958: f023 4380 bic.w r3, r3, #1073741824 @ 0x40000000 - 800295c: 60fb str r3, [r7, #12] + 80029b2: 68fb ldr r3, [r7, #12] + 80029b4: f023 4380 bic.w r3, r3, #1073741824 @ 0x40000000 + 80029b8: 60fb str r3, [r7, #12] tmpreg |= USB_OTG_HCCHAR_CHENA; - 800295e: 68fb ldr r3, [r7, #12] - 8002960: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 - 8002964: 60fb str r3, [r7, #12] + 80029ba: 68fb ldr r3, [r7, #12] + 80029bc: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 80029c0: 60fb str r3, [r7, #12] USBx_HC(chnum)->HCCHAR = tmpreg; - 8002966: 78fb ldrb r3, [r7, #3] - 8002968: 015a lsls r2, r3, #5 - 800296a: 693b ldr r3, [r7, #16] - 800296c: 4413 add r3, r2 - 800296e: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002972: 461a mov r2, r3 - 8002974: 68fb ldr r3, [r7, #12] - 8002976: 6013 str r3, [r2, #0] + 80029c2: 78fb ldrb r3, [r7, #3] + 80029c4: 015a lsls r2, r3, #5 + 80029c6: 693b ldr r3, [r7, #16] + 80029c8: 4413 add r3, r2 + 80029ca: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80029ce: 461a mov r2, r3 + 80029d0: 68fb ldr r3, [r7, #12] + 80029d2: 6013 str r3, [r2, #0] if (hhcd->hc[chnum].ErrCnt > 2U) - 8002978: e1ee b.n 8002d58 + 80029d4: e1ee b.n 8002db4 } } } else if (hhcd->hc[chnum].state == HC_NYET) - 800297a: 78fa ldrb r2, [r7, #3] - 800297c: 6879 ldr r1, [r7, #4] - 800297e: 4613 mov r3, r2 - 8002980: 011b lsls r3, r3, #4 - 8002982: 1a9b subs r3, r3, r2 - 8002984: 009b lsls r3, r3, #2 - 8002986: 440b add r3, r1 - 8002988: 334d adds r3, #77 @ 0x4d - 800298a: 781b ldrb r3, [r3, #0] - 800298c: 2b05 cmp r3, #5 - 800298e: f040 80c8 bne.w 8002b22 + 80029d6: 78fa ldrb r2, [r7, #3] + 80029d8: 6879 ldr r1, [r7, #4] + 80029da: 4613 mov r3, r2 + 80029dc: 011b lsls r3, r3, #4 + 80029de: 1a9b subs r3, r3, r2 + 80029e0: 009b lsls r3, r3, #2 + 80029e2: 440b add r3, r1 + 80029e4: 334d adds r3, #77 @ 0x4d + 80029e6: 781b ldrb r3, [r3, #0] + 80029e8: 2b05 cmp r3, #5 + 80029ea: f040 80c8 bne.w 8002b7e { hhcd->hc[chnum].state = HC_HALTED; - 8002992: 78fa ldrb r2, [r7, #3] - 8002994: 6879 ldr r1, [r7, #4] - 8002996: 4613 mov r3, r2 - 8002998: 011b lsls r3, r3, #4 - 800299a: 1a9b subs r3, r3, r2 - 800299c: 009b lsls r3, r3, #2 - 800299e: 440b add r3, r1 - 80029a0: 334d adds r3, #77 @ 0x4d - 80029a2: 2202 movs r2, #2 - 80029a4: 701a strb r2, [r3, #0] + 80029ee: 78fa ldrb r2, [r7, #3] + 80029f0: 6879 ldr r1, [r7, #4] + 80029f2: 4613 mov r3, r2 + 80029f4: 011b lsls r3, r3, #4 + 80029f6: 1a9b subs r3, r3, r2 + 80029f8: 009b lsls r3, r3, #2 + 80029fa: 440b add r3, r1 + 80029fc: 334d adds r3, #77 @ 0x4d + 80029fe: 2202 movs r2, #2 + 8002a00: 701a strb r2, [r3, #0] if (hhcd->hc[chnum].do_csplit == 1U) - 80029a6: 78fa ldrb r2, [r7, #3] - 80029a8: 6879 ldr r1, [r7, #4] - 80029aa: 4613 mov r3, r2 - 80029ac: 011b lsls r3, r3, #4 - 80029ae: 1a9b subs r3, r3, r2 - 80029b0: 009b lsls r3, r3, #2 - 80029b2: 440b add r3, r1 - 80029b4: 331b adds r3, #27 - 80029b6: 781b ldrb r3, [r3, #0] - 80029b8: 2b01 cmp r3, #1 - 80029ba: f040 81ce bne.w 8002d5a + 8002a02: 78fa ldrb r2, [r7, #3] + 8002a04: 6879 ldr r1, [r7, #4] + 8002a06: 4613 mov r3, r2 + 8002a08: 011b lsls r3, r3, #4 + 8002a0a: 1a9b subs r3, r3, r2 + 8002a0c: 009b lsls r3, r3, #2 + 8002a0e: 440b add r3, r1 + 8002a10: 331b adds r3, #27 + 8002a12: 781b ldrb r3, [r3, #0] + 8002a14: 2b01 cmp r3, #1 + 8002a16: f040 81ce bne.w 8002db6 { if (hhcd->hc[chnum].ep_type == EP_TYPE_INTR) - 80029be: 78fa ldrb r2, [r7, #3] - 80029c0: 6879 ldr r1, [r7, #4] - 80029c2: 4613 mov r3, r2 - 80029c4: 011b lsls r3, r3, #4 - 80029c6: 1a9b subs r3, r3, r2 - 80029c8: 009b lsls r3, r3, #2 - 80029ca: 440b add r3, r1 - 80029cc: 3326 adds r3, #38 @ 0x26 - 80029ce: 781b ldrb r3, [r3, #0] - 80029d0: 2b03 cmp r3, #3 - 80029d2: d16b bne.n 8002aac + 8002a1a: 78fa ldrb r2, [r7, #3] + 8002a1c: 6879 ldr r1, [r7, #4] + 8002a1e: 4613 mov r3, r2 + 8002a20: 011b lsls r3, r3, #4 + 8002a22: 1a9b subs r3, r3, r2 + 8002a24: 009b lsls r3, r3, #2 + 8002a26: 440b add r3, r1 + 8002a28: 3326 adds r3, #38 @ 0x26 + 8002a2a: 781b ldrb r3, [r3, #0] + 8002a2c: 2b03 cmp r3, #3 + 8002a2e: d16b bne.n 8002b08 { hhcd->hc[chnum].NyetErrCnt++; - 80029d4: 78fa ldrb r2, [r7, #3] - 80029d6: 6879 ldr r1, [r7, #4] - 80029d8: 4613 mov r3, r2 - 80029da: 011b lsls r3, r3, #4 - 80029dc: 1a9b subs r3, r3, r2 - 80029de: 009b lsls r3, r3, #2 - 80029e0: 440b add r3, r1 - 80029e2: 3348 adds r3, #72 @ 0x48 - 80029e4: 681b ldr r3, [r3, #0] - 80029e6: 1c59 adds r1, r3, #1 - 80029e8: 6878 ldr r0, [r7, #4] - 80029ea: 4613 mov r3, r2 - 80029ec: 011b lsls r3, r3, #4 - 80029ee: 1a9b subs r3, r3, r2 - 80029f0: 009b lsls r3, r3, #2 - 80029f2: 4403 add r3, r0 - 80029f4: 3348 adds r3, #72 @ 0x48 - 80029f6: 6019 str r1, [r3, #0] + 8002a30: 78fa ldrb r2, [r7, #3] + 8002a32: 6879 ldr r1, [r7, #4] + 8002a34: 4613 mov r3, r2 + 8002a36: 011b lsls r3, r3, #4 + 8002a38: 1a9b subs r3, r3, r2 + 8002a3a: 009b lsls r3, r3, #2 + 8002a3c: 440b add r3, r1 + 8002a3e: 3348 adds r3, #72 @ 0x48 + 8002a40: 681b ldr r3, [r3, #0] + 8002a42: 1c59 adds r1, r3, #1 + 8002a44: 6878 ldr r0, [r7, #4] + 8002a46: 4613 mov r3, r2 + 8002a48: 011b lsls r3, r3, #4 + 8002a4a: 1a9b subs r3, r3, r2 + 8002a4c: 009b lsls r3, r3, #2 + 8002a4e: 4403 add r3, r0 + 8002a50: 3348 adds r3, #72 @ 0x48 + 8002a52: 6019 str r1, [r3, #0] if (hhcd->hc[chnum].NyetErrCnt > 2U) - 80029f8: 78fa ldrb r2, [r7, #3] - 80029fa: 6879 ldr r1, [r7, #4] - 80029fc: 4613 mov r3, r2 - 80029fe: 011b lsls r3, r3, #4 - 8002a00: 1a9b subs r3, r3, r2 - 8002a02: 009b lsls r3, r3, #2 - 8002a04: 440b add r3, r1 - 8002a06: 3348 adds r3, #72 @ 0x48 - 8002a08: 681b ldr r3, [r3, #0] - 8002a0a: 2b02 cmp r3, #2 - 8002a0c: d943 bls.n 8002a96 + 8002a54: 78fa ldrb r2, [r7, #3] + 8002a56: 6879 ldr r1, [r7, #4] + 8002a58: 4613 mov r3, r2 + 8002a5a: 011b lsls r3, r3, #4 + 8002a5c: 1a9b subs r3, r3, r2 + 8002a5e: 009b lsls r3, r3, #2 + 8002a60: 440b add r3, r1 + 8002a62: 3348 adds r3, #72 @ 0x48 + 8002a64: 681b ldr r3, [r3, #0] + 8002a66: 2b02 cmp r3, #2 + 8002a68: d943 bls.n 8002af2 { hhcd->hc[chnum].NyetErrCnt = 0U; - 8002a0e: 78fa ldrb r2, [r7, #3] - 8002a10: 6879 ldr r1, [r7, #4] - 8002a12: 4613 mov r3, r2 - 8002a14: 011b lsls r3, r3, #4 - 8002a16: 1a9b subs r3, r3, r2 - 8002a18: 009b lsls r3, r3, #2 - 8002a1a: 440b add r3, r1 - 8002a1c: 3348 adds r3, #72 @ 0x48 - 8002a1e: 2200 movs r2, #0 - 8002a20: 601a str r2, [r3, #0] + 8002a6a: 78fa ldrb r2, [r7, #3] + 8002a6c: 6879 ldr r1, [r7, #4] + 8002a6e: 4613 mov r3, r2 + 8002a70: 011b lsls r3, r3, #4 + 8002a72: 1a9b subs r3, r3, r2 + 8002a74: 009b lsls r3, r3, #2 + 8002a76: 440b add r3, r1 + 8002a78: 3348 adds r3, #72 @ 0x48 + 8002a7a: 2200 movs r2, #0 + 8002a7c: 601a str r2, [r3, #0] hhcd->hc[chnum].do_csplit = 0U; - 8002a22: 78fa ldrb r2, [r7, #3] - 8002a24: 6879 ldr r1, [r7, #4] - 8002a26: 4613 mov r3, r2 - 8002a28: 011b lsls r3, r3, #4 - 8002a2a: 1a9b subs r3, r3, r2 - 8002a2c: 009b lsls r3, r3, #2 - 8002a2e: 440b add r3, r1 - 8002a30: 331b adds r3, #27 - 8002a32: 2200 movs r2, #0 - 8002a34: 701a strb r2, [r3, #0] + 8002a7e: 78fa ldrb r2, [r7, #3] + 8002a80: 6879 ldr r1, [r7, #4] + 8002a82: 4613 mov r3, r2 + 8002a84: 011b lsls r3, r3, #4 + 8002a86: 1a9b subs r3, r3, r2 + 8002a88: 009b lsls r3, r3, #2 + 8002a8a: 440b add r3, r1 + 8002a8c: 331b adds r3, #27 + 8002a8e: 2200 movs r2, #0 + 8002a90: 701a strb r2, [r3, #0] if (hhcd->hc[chnum].ErrCnt < 3U) - 8002a36: 78fa ldrb r2, [r7, #3] - 8002a38: 6879 ldr r1, [r7, #4] - 8002a3a: 4613 mov r3, r2 - 8002a3c: 011b lsls r3, r3, #4 - 8002a3e: 1a9b subs r3, r3, r2 - 8002a40: 009b lsls r3, r3, #2 - 8002a42: 440b add r3, r1 - 8002a44: 3344 adds r3, #68 @ 0x44 - 8002a46: 681b ldr r3, [r3, #0] - 8002a48: 2b02 cmp r3, #2 - 8002a4a: d809 bhi.n 8002a60 + 8002a92: 78fa ldrb r2, [r7, #3] + 8002a94: 6879 ldr r1, [r7, #4] + 8002a96: 4613 mov r3, r2 + 8002a98: 011b lsls r3, r3, #4 + 8002a9a: 1a9b subs r3, r3, r2 + 8002a9c: 009b lsls r3, r3, #2 + 8002a9e: 440b add r3, r1 + 8002aa0: 3344 adds r3, #68 @ 0x44 + 8002aa2: 681b ldr r3, [r3, #0] + 8002aa4: 2b02 cmp r3, #2 + 8002aa6: d809 bhi.n 8002abc { hhcd->hc[chnum].ep_ss_schedule = 1U; - 8002a4c: 78fa ldrb r2, [r7, #3] - 8002a4e: 6879 ldr r1, [r7, #4] - 8002a50: 4613 mov r3, r2 - 8002a52: 011b lsls r3, r3, #4 - 8002a54: 1a9b subs r3, r3, r2 - 8002a56: 009b lsls r3, r3, #2 - 8002a58: 440b add r3, r1 - 8002a5a: 331c adds r3, #28 - 8002a5c: 2201 movs r2, #1 - 8002a5e: 701a strb r2, [r3, #0] + 8002aa8: 78fa ldrb r2, [r7, #3] + 8002aaa: 6879 ldr r1, [r7, #4] + 8002aac: 4613 mov r3, r2 + 8002aae: 011b lsls r3, r3, #4 + 8002ab0: 1a9b subs r3, r3, r2 + 8002ab2: 009b lsls r3, r3, #2 + 8002ab4: 440b add r3, r1 + 8002ab6: 331c adds r3, #28 + 8002ab8: 2201 movs r2, #1 + 8002aba: 701a strb r2, [r3, #0] } __HAL_HCD_CLEAR_HC_CSPLT(chnum); - 8002a60: 78fb ldrb r3, [r7, #3] - 8002a62: 015a lsls r2, r3, #5 - 8002a64: 693b ldr r3, [r7, #16] - 8002a66: 4413 add r3, r2 - 8002a68: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002a6c: 685b ldr r3, [r3, #4] - 8002a6e: 78fa ldrb r2, [r7, #3] - 8002a70: 0151 lsls r1, r2, #5 - 8002a72: 693a ldr r2, [r7, #16] - 8002a74: 440a add r2, r1 - 8002a76: f502 62a0 add.w r2, r2, #1280 @ 0x500 - 8002a7a: f423 3380 bic.w r3, r3, #65536 @ 0x10000 - 8002a7e: 6053 str r3, [r2, #4] + 8002abc: 78fb ldrb r3, [r7, #3] + 8002abe: 015a lsls r2, r3, #5 + 8002ac0: 693b ldr r3, [r7, #16] + 8002ac2: 4413 add r3, r2 + 8002ac4: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002ac8: 685b ldr r3, [r3, #4] + 8002aca: 78fa ldrb r2, [r7, #3] + 8002acc: 0151 lsls r1, r2, #5 + 8002ace: 693a ldr r2, [r7, #16] + 8002ad0: 440a add r2, r1 + 8002ad2: f502 62a0 add.w r2, r2, #1280 @ 0x500 + 8002ad6: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 8002ada: 6053 str r3, [r2, #4] hhcd->hc[chnum].urb_state = URB_ERROR; - 8002a80: 78fa ldrb r2, [r7, #3] - 8002a82: 6879 ldr r1, [r7, #4] - 8002a84: 4613 mov r3, r2 - 8002a86: 011b lsls r3, r3, #4 - 8002a88: 1a9b subs r3, r3, r2 - 8002a8a: 009b lsls r3, r3, #2 - 8002a8c: 440b add r3, r1 - 8002a8e: 334c adds r3, #76 @ 0x4c - 8002a90: 2204 movs r2, #4 - 8002a92: 701a strb r2, [r3, #0] - 8002a94: e014 b.n 8002ac0 + 8002adc: 78fa ldrb r2, [r7, #3] + 8002ade: 6879 ldr r1, [r7, #4] + 8002ae0: 4613 mov r3, r2 + 8002ae2: 011b lsls r3, r3, #4 + 8002ae4: 1a9b subs r3, r3, r2 + 8002ae6: 009b lsls r3, r3, #2 + 8002ae8: 440b add r3, r1 + 8002aea: 334c adds r3, #76 @ 0x4c + 8002aec: 2204 movs r2, #4 + 8002aee: 701a strb r2, [r3, #0] + 8002af0: e014 b.n 8002b1c } else { hhcd->hc[chnum].urb_state = URB_NOTREADY; - 8002a96: 78fa ldrb r2, [r7, #3] - 8002a98: 6879 ldr r1, [r7, #4] - 8002a9a: 4613 mov r3, r2 - 8002a9c: 011b lsls r3, r3, #4 - 8002a9e: 1a9b subs r3, r3, r2 - 8002aa0: 009b lsls r3, r3, #2 - 8002aa2: 440b add r3, r1 - 8002aa4: 334c adds r3, #76 @ 0x4c - 8002aa6: 2202 movs r2, #2 - 8002aa8: 701a strb r2, [r3, #0] - 8002aaa: e009 b.n 8002ac0 + 8002af2: 78fa ldrb r2, [r7, #3] + 8002af4: 6879 ldr r1, [r7, #4] + 8002af6: 4613 mov r3, r2 + 8002af8: 011b lsls r3, r3, #4 + 8002afa: 1a9b subs r3, r3, r2 + 8002afc: 009b lsls r3, r3, #2 + 8002afe: 440b add r3, r1 + 8002b00: 334c adds r3, #76 @ 0x4c + 8002b02: 2202 movs r2, #2 + 8002b04: 701a strb r2, [r3, #0] + 8002b06: e009 b.n 8002b1c } } else { hhcd->hc[chnum].urb_state = URB_NOTREADY; - 8002aac: 78fa ldrb r2, [r7, #3] - 8002aae: 6879 ldr r1, [r7, #4] - 8002ab0: 4613 mov r3, r2 - 8002ab2: 011b lsls r3, r3, #4 - 8002ab4: 1a9b subs r3, r3, r2 - 8002ab6: 009b lsls r3, r3, #2 - 8002ab8: 440b add r3, r1 - 8002aba: 334c adds r3, #76 @ 0x4c - 8002abc: 2202 movs r2, #2 - 8002abe: 701a strb r2, [r3, #0] + 8002b08: 78fa ldrb r2, [r7, #3] + 8002b0a: 6879 ldr r1, [r7, #4] + 8002b0c: 4613 mov r3, r2 + 8002b0e: 011b lsls r3, r3, #4 + 8002b10: 1a9b subs r3, r3, r2 + 8002b12: 009b lsls r3, r3, #2 + 8002b14: 440b add r3, r1 + 8002b16: 334c adds r3, #76 @ 0x4c + 8002b18: 2202 movs r2, #2 + 8002b1a: 701a strb r2, [r3, #0] } if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || - 8002ac0: 78fa ldrb r2, [r7, #3] - 8002ac2: 6879 ldr r1, [r7, #4] - 8002ac4: 4613 mov r3, r2 - 8002ac6: 011b lsls r3, r3, #4 - 8002ac8: 1a9b subs r3, r3, r2 - 8002aca: 009b lsls r3, r3, #2 - 8002acc: 440b add r3, r1 - 8002ace: 3326 adds r3, #38 @ 0x26 - 8002ad0: 781b ldrb r3, [r3, #0] - 8002ad2: 2b00 cmp r3, #0 - 8002ad4: d00b beq.n 8002aee + 8002b1c: 78fa ldrb r2, [r7, #3] + 8002b1e: 6879 ldr r1, [r7, #4] + 8002b20: 4613 mov r3, r2 + 8002b22: 011b lsls r3, r3, #4 + 8002b24: 1a9b subs r3, r3, r2 + 8002b26: 009b lsls r3, r3, #2 + 8002b28: 440b add r3, r1 + 8002b2a: 3326 adds r3, #38 @ 0x26 + 8002b2c: 781b ldrb r3, [r3, #0] + 8002b2e: 2b00 cmp r3, #0 + 8002b30: d00b beq.n 8002b4a (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) - 8002ad6: 78fa ldrb r2, [r7, #3] - 8002ad8: 6879 ldr r1, [r7, #4] - 8002ada: 4613 mov r3, r2 - 8002adc: 011b lsls r3, r3, #4 - 8002ade: 1a9b subs r3, r3, r2 - 8002ae0: 009b lsls r3, r3, #2 - 8002ae2: 440b add r3, r1 - 8002ae4: 3326 adds r3, #38 @ 0x26 - 8002ae6: 781b ldrb r3, [r3, #0] + 8002b32: 78fa ldrb r2, [r7, #3] + 8002b34: 6879 ldr r1, [r7, #4] + 8002b36: 4613 mov r3, r2 + 8002b38: 011b lsls r3, r3, #4 + 8002b3a: 1a9b subs r3, r3, r2 + 8002b3c: 009b lsls r3, r3, #2 + 8002b3e: 440b add r3, r1 + 8002b40: 3326 adds r3, #38 @ 0x26 + 8002b42: 781b ldrb r3, [r3, #0] if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || - 8002ae8: 2b02 cmp r3, #2 - 8002aea: f040 8136 bne.w 8002d5a + 8002b44: 2b02 cmp r3, #2 + 8002b46: f040 8136 bne.w 8002db6 { /* re-activate the channel */ tmpreg = USBx_HC(chnum)->HCCHAR; - 8002aee: 78fb ldrb r3, [r7, #3] - 8002af0: 015a lsls r2, r3, #5 - 8002af2: 693b ldr r3, [r7, #16] - 8002af4: 4413 add r3, r2 - 8002af6: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002afa: 681b ldr r3, [r3, #0] - 8002afc: 60fb str r3, [r7, #12] + 8002b4a: 78fb ldrb r3, [r7, #3] + 8002b4c: 015a lsls r2, r3, #5 + 8002b4e: 693b ldr r3, [r7, #16] + 8002b50: 4413 add r3, r2 + 8002b52: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002b56: 681b ldr r3, [r3, #0] + 8002b58: 60fb str r3, [r7, #12] tmpreg &= ~USB_OTG_HCCHAR_CHDIS; - 8002afe: 68fb ldr r3, [r7, #12] - 8002b00: f023 4380 bic.w r3, r3, #1073741824 @ 0x40000000 - 8002b04: 60fb str r3, [r7, #12] + 8002b5a: 68fb ldr r3, [r7, #12] + 8002b5c: f023 4380 bic.w r3, r3, #1073741824 @ 0x40000000 + 8002b60: 60fb str r3, [r7, #12] tmpreg |= USB_OTG_HCCHAR_CHENA; - 8002b06: 68fb ldr r3, [r7, #12] - 8002b08: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 - 8002b0c: 60fb str r3, [r7, #12] + 8002b62: 68fb ldr r3, [r7, #12] + 8002b64: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 8002b68: 60fb str r3, [r7, #12] USBx_HC(chnum)->HCCHAR = tmpreg; - 8002b0e: 78fb ldrb r3, [r7, #3] - 8002b10: 015a lsls r2, r3, #5 - 8002b12: 693b ldr r3, [r7, #16] - 8002b14: 4413 add r3, r2 - 8002b16: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002b1a: 461a mov r2, r3 - 8002b1c: 68fb ldr r3, [r7, #12] - 8002b1e: 6013 str r3, [r2, #0] - 8002b20: e11b b.n 8002d5a + 8002b6a: 78fb ldrb r3, [r7, #3] + 8002b6c: 015a lsls r2, r3, #5 + 8002b6e: 693b ldr r3, [r7, #16] + 8002b70: 4413 add r3, r2 + 8002b72: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002b76: 461a mov r2, r3 + 8002b78: 68fb ldr r3, [r7, #12] + 8002b7a: 6013 str r3, [r2, #0] + 8002b7c: e11b b.n 8002db6 } } } else if (hhcd->hc[chnum].state == HC_ACK) - 8002b22: 78fa ldrb r2, [r7, #3] - 8002b24: 6879 ldr r1, [r7, #4] - 8002b26: 4613 mov r3, r2 - 8002b28: 011b lsls r3, r3, #4 - 8002b2a: 1a9b subs r3, r3, r2 - 8002b2c: 009b lsls r3, r3, #2 - 8002b2e: 440b add r3, r1 - 8002b30: 334d adds r3, #77 @ 0x4d - 8002b32: 781b ldrb r3, [r3, #0] - 8002b34: 2b03 cmp r3, #3 - 8002b36: f040 8081 bne.w 8002c3c + 8002b7e: 78fa ldrb r2, [r7, #3] + 8002b80: 6879 ldr r1, [r7, #4] + 8002b82: 4613 mov r3, r2 + 8002b84: 011b lsls r3, r3, #4 + 8002b86: 1a9b subs r3, r3, r2 + 8002b88: 009b lsls r3, r3, #2 + 8002b8a: 440b add r3, r1 + 8002b8c: 334d adds r3, #77 @ 0x4d + 8002b8e: 781b ldrb r3, [r3, #0] + 8002b90: 2b03 cmp r3, #3 + 8002b92: f040 8081 bne.w 8002c98 { hhcd->hc[chnum].state = HC_HALTED; - 8002b3a: 78fa ldrb r2, [r7, #3] - 8002b3c: 6879 ldr r1, [r7, #4] - 8002b3e: 4613 mov r3, r2 - 8002b40: 011b lsls r3, r3, #4 - 8002b42: 1a9b subs r3, r3, r2 - 8002b44: 009b lsls r3, r3, #2 - 8002b46: 440b add r3, r1 - 8002b48: 334d adds r3, #77 @ 0x4d - 8002b4a: 2202 movs r2, #2 - 8002b4c: 701a strb r2, [r3, #0] + 8002b96: 78fa ldrb r2, [r7, #3] + 8002b98: 6879 ldr r1, [r7, #4] + 8002b9a: 4613 mov r3, r2 + 8002b9c: 011b lsls r3, r3, #4 + 8002b9e: 1a9b subs r3, r3, r2 + 8002ba0: 009b lsls r3, r3, #2 + 8002ba2: 440b add r3, r1 + 8002ba4: 334d adds r3, #77 @ 0x4d + 8002ba6: 2202 movs r2, #2 + 8002ba8: 701a strb r2, [r3, #0] if (hhcd->hc[chnum].do_csplit == 1U) - 8002b4e: 78fa ldrb r2, [r7, #3] - 8002b50: 6879 ldr r1, [r7, #4] - 8002b52: 4613 mov r3, r2 - 8002b54: 011b lsls r3, r3, #4 - 8002b56: 1a9b subs r3, r3, r2 - 8002b58: 009b lsls r3, r3, #2 - 8002b5a: 440b add r3, r1 - 8002b5c: 331b adds r3, #27 - 8002b5e: 781b ldrb r3, [r3, #0] - 8002b60: 2b01 cmp r3, #1 - 8002b62: f040 80fa bne.w 8002d5a + 8002baa: 78fa ldrb r2, [r7, #3] + 8002bac: 6879 ldr r1, [r7, #4] + 8002bae: 4613 mov r3, r2 + 8002bb0: 011b lsls r3, r3, #4 + 8002bb2: 1a9b subs r3, r3, r2 + 8002bb4: 009b lsls r3, r3, #2 + 8002bb6: 440b add r3, r1 + 8002bb8: 331b adds r3, #27 + 8002bba: 781b ldrb r3, [r3, #0] + 8002bbc: 2b01 cmp r3, #1 + 8002bbe: f040 80fa bne.w 8002db6 { hhcd->hc[chnum].urb_state = URB_NOTREADY; - 8002b66: 78fa ldrb r2, [r7, #3] - 8002b68: 6879 ldr r1, [r7, #4] - 8002b6a: 4613 mov r3, r2 - 8002b6c: 011b lsls r3, r3, #4 - 8002b6e: 1a9b subs r3, r3, r2 - 8002b70: 009b lsls r3, r3, #2 - 8002b72: 440b add r3, r1 - 8002b74: 334c adds r3, #76 @ 0x4c - 8002b76: 2202 movs r2, #2 - 8002b78: 701a strb r2, [r3, #0] + 8002bc2: 78fa ldrb r2, [r7, #3] + 8002bc4: 6879 ldr r1, [r7, #4] + 8002bc6: 4613 mov r3, r2 + 8002bc8: 011b lsls r3, r3, #4 + 8002bca: 1a9b subs r3, r3, r2 + 8002bcc: 009b lsls r3, r3, #2 + 8002bce: 440b add r3, r1 + 8002bd0: 334c adds r3, #76 @ 0x4c + 8002bd2: 2202 movs r2, #2 + 8002bd4: 701a strb r2, [r3, #0] /* Set Complete split and re-activate the channel */ USBx_HC(chnum)->HCSPLT |= USB_OTG_HCSPLT_COMPLSPLT; - 8002b7a: 78fb ldrb r3, [r7, #3] - 8002b7c: 015a lsls r2, r3, #5 - 8002b7e: 693b ldr r3, [r7, #16] - 8002b80: 4413 add r3, r2 - 8002b82: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002b86: 685b ldr r3, [r3, #4] - 8002b88: 78fa ldrb r2, [r7, #3] - 8002b8a: 0151 lsls r1, r2, #5 - 8002b8c: 693a ldr r2, [r7, #16] - 8002b8e: 440a add r2, r1 - 8002b90: f502 62a0 add.w r2, r2, #1280 @ 0x500 - 8002b94: f443 3380 orr.w r3, r3, #65536 @ 0x10000 - 8002b98: 6053 str r3, [r2, #4] + 8002bd6: 78fb ldrb r3, [r7, #3] + 8002bd8: 015a lsls r2, r3, #5 + 8002bda: 693b ldr r3, [r7, #16] + 8002bdc: 4413 add r3, r2 + 8002bde: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002be2: 685b ldr r3, [r3, #4] + 8002be4: 78fa ldrb r2, [r7, #3] + 8002be6: 0151 lsls r1, r2, #5 + 8002be8: 693a ldr r2, [r7, #16] + 8002bea: 440a add r2, r1 + 8002bec: f502 62a0 add.w r2, r2, #1280 @ 0x500 + 8002bf0: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8002bf4: 6053 str r3, [r2, #4] USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_NYET; - 8002b9a: 78fb ldrb r3, [r7, #3] - 8002b9c: 015a lsls r2, r3, #5 - 8002b9e: 693b ldr r3, [r7, #16] - 8002ba0: 4413 add r3, r2 - 8002ba2: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002ba6: 68db ldr r3, [r3, #12] - 8002ba8: 78fa ldrb r2, [r7, #3] - 8002baa: 0151 lsls r1, r2, #5 - 8002bac: 693a ldr r2, [r7, #16] - 8002bae: 440a add r2, r1 - 8002bb0: f502 62a0 add.w r2, r2, #1280 @ 0x500 - 8002bb4: f043 0340 orr.w r3, r3, #64 @ 0x40 - 8002bb8: 60d3 str r3, [r2, #12] + 8002bf6: 78fb ldrb r3, [r7, #3] + 8002bf8: 015a lsls r2, r3, #5 + 8002bfa: 693b ldr r3, [r7, #16] + 8002bfc: 4413 add r3, r2 + 8002bfe: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002c02: 68db ldr r3, [r3, #12] + 8002c04: 78fa ldrb r2, [r7, #3] + 8002c06: 0151 lsls r1, r2, #5 + 8002c08: 693a ldr r2, [r7, #16] + 8002c0a: 440a add r2, r1 + 8002c0c: f502 62a0 add.w r2, r2, #1280 @ 0x500 + 8002c10: f043 0340 orr.w r3, r3, #64 @ 0x40 + 8002c14: 60d3 str r3, [r2, #12] USBx_HC(chnum)->HCINTMSK &= ~USB_OTG_HCINT_ACK; - 8002bba: 78fb ldrb r3, [r7, #3] - 8002bbc: 015a lsls r2, r3, #5 - 8002bbe: 693b ldr r3, [r7, #16] - 8002bc0: 4413 add r3, r2 - 8002bc2: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002bc6: 68db ldr r3, [r3, #12] - 8002bc8: 78fa ldrb r2, [r7, #3] - 8002bca: 0151 lsls r1, r2, #5 - 8002bcc: 693a ldr r2, [r7, #16] - 8002bce: 440a add r2, r1 - 8002bd0: f502 62a0 add.w r2, r2, #1280 @ 0x500 - 8002bd4: f023 0320 bic.w r3, r3, #32 - 8002bd8: 60d3 str r3, [r2, #12] + 8002c16: 78fb ldrb r3, [r7, #3] + 8002c18: 015a lsls r2, r3, #5 + 8002c1a: 693b ldr r3, [r7, #16] + 8002c1c: 4413 add r3, r2 + 8002c1e: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002c22: 68db ldr r3, [r3, #12] + 8002c24: 78fa ldrb r2, [r7, #3] + 8002c26: 0151 lsls r1, r2, #5 + 8002c28: 693a ldr r2, [r7, #16] + 8002c2a: 440a add r2, r1 + 8002c2c: f502 62a0 add.w r2, r2, #1280 @ 0x500 + 8002c30: f023 0320 bic.w r3, r3, #32 + 8002c34: 60d3 str r3, [r2, #12] if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || - 8002bda: 78fa ldrb r2, [r7, #3] - 8002bdc: 6879 ldr r1, [r7, #4] - 8002bde: 4613 mov r3, r2 - 8002be0: 011b lsls r3, r3, #4 - 8002be2: 1a9b subs r3, r3, r2 - 8002be4: 009b lsls r3, r3, #2 - 8002be6: 440b add r3, r1 - 8002be8: 3326 adds r3, #38 @ 0x26 - 8002bea: 781b ldrb r3, [r3, #0] - 8002bec: 2b00 cmp r3, #0 - 8002bee: d00b beq.n 8002c08 + 8002c36: 78fa ldrb r2, [r7, #3] + 8002c38: 6879 ldr r1, [r7, #4] + 8002c3a: 4613 mov r3, r2 + 8002c3c: 011b lsls r3, r3, #4 + 8002c3e: 1a9b subs r3, r3, r2 + 8002c40: 009b lsls r3, r3, #2 + 8002c42: 440b add r3, r1 + 8002c44: 3326 adds r3, #38 @ 0x26 + 8002c46: 781b ldrb r3, [r3, #0] + 8002c48: 2b00 cmp r3, #0 + 8002c4a: d00b beq.n 8002c64 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) - 8002bf0: 78fa ldrb r2, [r7, #3] - 8002bf2: 6879 ldr r1, [r7, #4] - 8002bf4: 4613 mov r3, r2 - 8002bf6: 011b lsls r3, r3, #4 - 8002bf8: 1a9b subs r3, r3, r2 - 8002bfa: 009b lsls r3, r3, #2 - 8002bfc: 440b add r3, r1 - 8002bfe: 3326 adds r3, #38 @ 0x26 - 8002c00: 781b ldrb r3, [r3, #0] + 8002c4c: 78fa ldrb r2, [r7, #3] + 8002c4e: 6879 ldr r1, [r7, #4] + 8002c50: 4613 mov r3, r2 + 8002c52: 011b lsls r3, r3, #4 + 8002c54: 1a9b subs r3, r3, r2 + 8002c56: 009b lsls r3, r3, #2 + 8002c58: 440b add r3, r1 + 8002c5a: 3326 adds r3, #38 @ 0x26 + 8002c5c: 781b ldrb r3, [r3, #0] if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || - 8002c02: 2b02 cmp r3, #2 - 8002c04: f040 80a9 bne.w 8002d5a + 8002c5e: 2b02 cmp r3, #2 + 8002c60: f040 80a9 bne.w 8002db6 { /* re-activate the channel */ tmpreg = USBx_HC(chnum)->HCCHAR; - 8002c08: 78fb ldrb r3, [r7, #3] - 8002c0a: 015a lsls r2, r3, #5 - 8002c0c: 693b ldr r3, [r7, #16] - 8002c0e: 4413 add r3, r2 - 8002c10: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002c14: 681b ldr r3, [r3, #0] - 8002c16: 60fb str r3, [r7, #12] + 8002c64: 78fb ldrb r3, [r7, #3] + 8002c66: 015a lsls r2, r3, #5 + 8002c68: 693b ldr r3, [r7, #16] + 8002c6a: 4413 add r3, r2 + 8002c6c: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002c70: 681b ldr r3, [r3, #0] + 8002c72: 60fb str r3, [r7, #12] tmpreg &= ~USB_OTG_HCCHAR_CHDIS; - 8002c18: 68fb ldr r3, [r7, #12] - 8002c1a: f023 4380 bic.w r3, r3, #1073741824 @ 0x40000000 - 8002c1e: 60fb str r3, [r7, #12] + 8002c74: 68fb ldr r3, [r7, #12] + 8002c76: f023 4380 bic.w r3, r3, #1073741824 @ 0x40000000 + 8002c7a: 60fb str r3, [r7, #12] tmpreg |= USB_OTG_HCCHAR_CHENA; - 8002c20: 68fb ldr r3, [r7, #12] - 8002c22: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 - 8002c26: 60fb str r3, [r7, #12] + 8002c7c: 68fb ldr r3, [r7, #12] + 8002c7e: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 8002c82: 60fb str r3, [r7, #12] USBx_HC(chnum)->HCCHAR = tmpreg; - 8002c28: 78fb ldrb r3, [r7, #3] - 8002c2a: 015a lsls r2, r3, #5 - 8002c2c: 693b ldr r3, [r7, #16] - 8002c2e: 4413 add r3, r2 - 8002c30: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002c34: 461a mov r2, r3 - 8002c36: 68fb ldr r3, [r7, #12] - 8002c38: 6013 str r3, [r2, #0] - 8002c3a: e08e b.n 8002d5a + 8002c84: 78fb ldrb r3, [r7, #3] + 8002c86: 015a lsls r2, r3, #5 + 8002c88: 693b ldr r3, [r7, #16] + 8002c8a: 4413 add r3, r2 + 8002c8c: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002c90: 461a mov r2, r3 + 8002c92: 68fb ldr r3, [r7, #12] + 8002c94: 6013 str r3, [r2, #0] + 8002c96: e08e b.n 8002db6 } } } else if (hhcd->hc[chnum].state == HC_NAK) - 8002c3c: 78fa ldrb r2, [r7, #3] - 8002c3e: 6879 ldr r1, [r7, #4] - 8002c40: 4613 mov r3, r2 - 8002c42: 011b lsls r3, r3, #4 - 8002c44: 1a9b subs r3, r3, r2 - 8002c46: 009b lsls r3, r3, #2 - 8002c48: 440b add r3, r1 - 8002c4a: 334d adds r3, #77 @ 0x4d - 8002c4c: 781b ldrb r3, [r3, #0] - 8002c4e: 2b04 cmp r3, #4 - 8002c50: d143 bne.n 8002cda + 8002c98: 78fa ldrb r2, [r7, #3] + 8002c9a: 6879 ldr r1, [r7, #4] + 8002c9c: 4613 mov r3, r2 + 8002c9e: 011b lsls r3, r3, #4 + 8002ca0: 1a9b subs r3, r3, r2 + 8002ca2: 009b lsls r3, r3, #2 + 8002ca4: 440b add r3, r1 + 8002ca6: 334d adds r3, #77 @ 0x4d + 8002ca8: 781b ldrb r3, [r3, #0] + 8002caa: 2b04 cmp r3, #4 + 8002cac: d143 bne.n 8002d36 { hhcd->hc[chnum].state = HC_HALTED; - 8002c52: 78fa ldrb r2, [r7, #3] - 8002c54: 6879 ldr r1, [r7, #4] - 8002c56: 4613 mov r3, r2 - 8002c58: 011b lsls r3, r3, #4 - 8002c5a: 1a9b subs r3, r3, r2 - 8002c5c: 009b lsls r3, r3, #2 - 8002c5e: 440b add r3, r1 - 8002c60: 334d adds r3, #77 @ 0x4d - 8002c62: 2202 movs r2, #2 - 8002c64: 701a strb r2, [r3, #0] + 8002cae: 78fa ldrb r2, [r7, #3] + 8002cb0: 6879 ldr r1, [r7, #4] + 8002cb2: 4613 mov r3, r2 + 8002cb4: 011b lsls r3, r3, #4 + 8002cb6: 1a9b subs r3, r3, r2 + 8002cb8: 009b lsls r3, r3, #2 + 8002cba: 440b add r3, r1 + 8002cbc: 334d adds r3, #77 @ 0x4d + 8002cbe: 2202 movs r2, #2 + 8002cc0: 701a strb r2, [r3, #0] hhcd->hc[chnum].urb_state = URB_NOTREADY; - 8002c66: 78fa ldrb r2, [r7, #3] - 8002c68: 6879 ldr r1, [r7, #4] - 8002c6a: 4613 mov r3, r2 - 8002c6c: 011b lsls r3, r3, #4 - 8002c6e: 1a9b subs r3, r3, r2 - 8002c70: 009b lsls r3, r3, #2 - 8002c72: 440b add r3, r1 - 8002c74: 334c adds r3, #76 @ 0x4c - 8002c76: 2202 movs r2, #2 - 8002c78: 701a strb r2, [r3, #0] + 8002cc2: 78fa ldrb r2, [r7, #3] + 8002cc4: 6879 ldr r1, [r7, #4] + 8002cc6: 4613 mov r3, r2 + 8002cc8: 011b lsls r3, r3, #4 + 8002cca: 1a9b subs r3, r3, r2 + 8002ccc: 009b lsls r3, r3, #2 + 8002cce: 440b add r3, r1 + 8002cd0: 334c adds r3, #76 @ 0x4c + 8002cd2: 2202 movs r2, #2 + 8002cd4: 701a strb r2, [r3, #0] if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || - 8002c7a: 78fa ldrb r2, [r7, #3] - 8002c7c: 6879 ldr r1, [r7, #4] - 8002c7e: 4613 mov r3, r2 - 8002c80: 011b lsls r3, r3, #4 - 8002c82: 1a9b subs r3, r3, r2 - 8002c84: 009b lsls r3, r3, #2 - 8002c86: 440b add r3, r1 - 8002c88: 3326 adds r3, #38 @ 0x26 - 8002c8a: 781b ldrb r3, [r3, #0] - 8002c8c: 2b00 cmp r3, #0 - 8002c8e: d00a beq.n 8002ca6 + 8002cd6: 78fa ldrb r2, [r7, #3] + 8002cd8: 6879 ldr r1, [r7, #4] + 8002cda: 4613 mov r3, r2 + 8002cdc: 011b lsls r3, r3, #4 + 8002cde: 1a9b subs r3, r3, r2 + 8002ce0: 009b lsls r3, r3, #2 + 8002ce2: 440b add r3, r1 + 8002ce4: 3326 adds r3, #38 @ 0x26 + 8002ce6: 781b ldrb r3, [r3, #0] + 8002ce8: 2b00 cmp r3, #0 + 8002cea: d00a beq.n 8002d02 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) - 8002c90: 78fa ldrb r2, [r7, #3] - 8002c92: 6879 ldr r1, [r7, #4] - 8002c94: 4613 mov r3, r2 - 8002c96: 011b lsls r3, r3, #4 - 8002c98: 1a9b subs r3, r3, r2 - 8002c9a: 009b lsls r3, r3, #2 - 8002c9c: 440b add r3, r1 - 8002c9e: 3326 adds r3, #38 @ 0x26 - 8002ca0: 781b ldrb r3, [r3, #0] + 8002cec: 78fa ldrb r2, [r7, #3] + 8002cee: 6879 ldr r1, [r7, #4] + 8002cf0: 4613 mov r3, r2 + 8002cf2: 011b lsls r3, r3, #4 + 8002cf4: 1a9b subs r3, r3, r2 + 8002cf6: 009b lsls r3, r3, #2 + 8002cf8: 440b add r3, r1 + 8002cfa: 3326 adds r3, #38 @ 0x26 + 8002cfc: 781b ldrb r3, [r3, #0] if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || - 8002ca2: 2b02 cmp r3, #2 - 8002ca4: d159 bne.n 8002d5a + 8002cfe: 2b02 cmp r3, #2 + 8002d00: d159 bne.n 8002db6 { /* re-activate the channel */ tmpreg = USBx_HC(chnum)->HCCHAR; - 8002ca6: 78fb ldrb r3, [r7, #3] - 8002ca8: 015a lsls r2, r3, #5 - 8002caa: 693b ldr r3, [r7, #16] - 8002cac: 4413 add r3, r2 - 8002cae: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002cb2: 681b ldr r3, [r3, #0] - 8002cb4: 60fb str r3, [r7, #12] + 8002d02: 78fb ldrb r3, [r7, #3] + 8002d04: 015a lsls r2, r3, #5 + 8002d06: 693b ldr r3, [r7, #16] + 8002d08: 4413 add r3, r2 + 8002d0a: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002d0e: 681b ldr r3, [r3, #0] + 8002d10: 60fb str r3, [r7, #12] tmpreg &= ~USB_OTG_HCCHAR_CHDIS; - 8002cb6: 68fb ldr r3, [r7, #12] - 8002cb8: f023 4380 bic.w r3, r3, #1073741824 @ 0x40000000 - 8002cbc: 60fb str r3, [r7, #12] + 8002d12: 68fb ldr r3, [r7, #12] + 8002d14: f023 4380 bic.w r3, r3, #1073741824 @ 0x40000000 + 8002d18: 60fb str r3, [r7, #12] tmpreg |= USB_OTG_HCCHAR_CHENA; - 8002cbe: 68fb ldr r3, [r7, #12] - 8002cc0: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 - 8002cc4: 60fb str r3, [r7, #12] + 8002d1a: 68fb ldr r3, [r7, #12] + 8002d1c: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 8002d20: 60fb str r3, [r7, #12] USBx_HC(chnum)->HCCHAR = tmpreg; - 8002cc6: 78fb ldrb r3, [r7, #3] - 8002cc8: 015a lsls r2, r3, #5 - 8002cca: 693b ldr r3, [r7, #16] - 8002ccc: 4413 add r3, r2 - 8002cce: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002cd2: 461a mov r2, r3 - 8002cd4: 68fb ldr r3, [r7, #12] - 8002cd6: 6013 str r3, [r2, #0] - 8002cd8: e03f b.n 8002d5a + 8002d22: 78fb ldrb r3, [r7, #3] + 8002d24: 015a lsls r2, r3, #5 + 8002d26: 693b ldr r3, [r7, #16] + 8002d28: 4413 add r3, r2 + 8002d2a: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002d2e: 461a mov r2, r3 + 8002d30: 68fb ldr r3, [r7, #12] + 8002d32: 6013 str r3, [r2, #0] + 8002d34: e03f b.n 8002db6 } } else if (hhcd->hc[chnum].state == HC_BBLERR) - 8002cda: 78fa ldrb r2, [r7, #3] - 8002cdc: 6879 ldr r1, [r7, #4] - 8002cde: 4613 mov r3, r2 - 8002ce0: 011b lsls r3, r3, #4 - 8002ce2: 1a9b subs r3, r3, r2 - 8002ce4: 009b lsls r3, r3, #2 - 8002ce6: 440b add r3, r1 - 8002ce8: 334d adds r3, #77 @ 0x4d - 8002cea: 781b ldrb r3, [r3, #0] - 8002cec: 2b08 cmp r3, #8 - 8002cee: d126 bne.n 8002d3e + 8002d36: 78fa ldrb r2, [r7, #3] + 8002d38: 6879 ldr r1, [r7, #4] + 8002d3a: 4613 mov r3, r2 + 8002d3c: 011b lsls r3, r3, #4 + 8002d3e: 1a9b subs r3, r3, r2 + 8002d40: 009b lsls r3, r3, #2 + 8002d42: 440b add r3, r1 + 8002d44: 334d adds r3, #77 @ 0x4d + 8002d46: 781b ldrb r3, [r3, #0] + 8002d48: 2b08 cmp r3, #8 + 8002d4a: d126 bne.n 8002d9a { hhcd->hc[chnum].state = HC_HALTED; - 8002cf0: 78fa ldrb r2, [r7, #3] - 8002cf2: 6879 ldr r1, [r7, #4] - 8002cf4: 4613 mov r3, r2 - 8002cf6: 011b lsls r3, r3, #4 - 8002cf8: 1a9b subs r3, r3, r2 - 8002cfa: 009b lsls r3, r3, #2 - 8002cfc: 440b add r3, r1 - 8002cfe: 334d adds r3, #77 @ 0x4d - 8002d00: 2202 movs r2, #2 - 8002d02: 701a strb r2, [r3, #0] + 8002d4c: 78fa ldrb r2, [r7, #3] + 8002d4e: 6879 ldr r1, [r7, #4] + 8002d50: 4613 mov r3, r2 + 8002d52: 011b lsls r3, r3, #4 + 8002d54: 1a9b subs r3, r3, r2 + 8002d56: 009b lsls r3, r3, #2 + 8002d58: 440b add r3, r1 + 8002d5a: 334d adds r3, #77 @ 0x4d + 8002d5c: 2202 movs r2, #2 + 8002d5e: 701a strb r2, [r3, #0] hhcd->hc[chnum].ErrCnt++; - 8002d04: 78fa ldrb r2, [r7, #3] - 8002d06: 6879 ldr r1, [r7, #4] - 8002d08: 4613 mov r3, r2 - 8002d0a: 011b lsls r3, r3, #4 - 8002d0c: 1a9b subs r3, r3, r2 - 8002d0e: 009b lsls r3, r3, #2 - 8002d10: 440b add r3, r1 - 8002d12: 3344 adds r3, #68 @ 0x44 - 8002d14: 681b ldr r3, [r3, #0] - 8002d16: 1c59 adds r1, r3, #1 - 8002d18: 6878 ldr r0, [r7, #4] - 8002d1a: 4613 mov r3, r2 - 8002d1c: 011b lsls r3, r3, #4 - 8002d1e: 1a9b subs r3, r3, r2 - 8002d20: 009b lsls r3, r3, #2 - 8002d22: 4403 add r3, r0 - 8002d24: 3344 adds r3, #68 @ 0x44 - 8002d26: 6019 str r1, [r3, #0] + 8002d60: 78fa ldrb r2, [r7, #3] + 8002d62: 6879 ldr r1, [r7, #4] + 8002d64: 4613 mov r3, r2 + 8002d66: 011b lsls r3, r3, #4 + 8002d68: 1a9b subs r3, r3, r2 + 8002d6a: 009b lsls r3, r3, #2 + 8002d6c: 440b add r3, r1 + 8002d6e: 3344 adds r3, #68 @ 0x44 + 8002d70: 681b ldr r3, [r3, #0] + 8002d72: 1c59 adds r1, r3, #1 + 8002d74: 6878 ldr r0, [r7, #4] + 8002d76: 4613 mov r3, r2 + 8002d78: 011b lsls r3, r3, #4 + 8002d7a: 1a9b subs r3, r3, r2 + 8002d7c: 009b lsls r3, r3, #2 + 8002d7e: 4403 add r3, r0 + 8002d80: 3344 adds r3, #68 @ 0x44 + 8002d82: 6019 str r1, [r3, #0] hhcd->hc[chnum].urb_state = URB_ERROR; - 8002d28: 78fa ldrb r2, [r7, #3] - 8002d2a: 6879 ldr r1, [r7, #4] - 8002d2c: 4613 mov r3, r2 - 8002d2e: 011b lsls r3, r3, #4 - 8002d30: 1a9b subs r3, r3, r2 - 8002d32: 009b lsls r3, r3, #2 - 8002d34: 440b add r3, r1 - 8002d36: 334c adds r3, #76 @ 0x4c - 8002d38: 2204 movs r2, #4 - 8002d3a: 701a strb r2, [r3, #0] - 8002d3c: e00d b.n 8002d5a + 8002d84: 78fa ldrb r2, [r7, #3] + 8002d86: 6879 ldr r1, [r7, #4] + 8002d88: 4613 mov r3, r2 + 8002d8a: 011b lsls r3, r3, #4 + 8002d8c: 1a9b subs r3, r3, r2 + 8002d8e: 009b lsls r3, r3, #2 + 8002d90: 440b add r3, r1 + 8002d92: 334c adds r3, #76 @ 0x4c + 8002d94: 2204 movs r2, #4 + 8002d96: 701a strb r2, [r3, #0] + 8002d98: e00d b.n 8002db6 } else { if (hhcd->hc[chnum].state == HC_HALTED) - 8002d3e: 78fa ldrb r2, [r7, #3] - 8002d40: 6879 ldr r1, [r7, #4] - 8002d42: 4613 mov r3, r2 - 8002d44: 011b lsls r3, r3, #4 - 8002d46: 1a9b subs r3, r3, r2 - 8002d48: 009b lsls r3, r3, #2 - 8002d4a: 440b add r3, r1 - 8002d4c: 334d adds r3, #77 @ 0x4d - 8002d4e: 781b ldrb r3, [r3, #0] - 8002d50: 2b02 cmp r3, #2 - 8002d52: f000 8100 beq.w 8002f56 - 8002d56: e000 b.n 8002d5a + 8002d9a: 78fa ldrb r2, [r7, #3] + 8002d9c: 6879 ldr r1, [r7, #4] + 8002d9e: 4613 mov r3, r2 + 8002da0: 011b lsls r3, r3, #4 + 8002da2: 1a9b subs r3, r3, r2 + 8002da4: 009b lsls r3, r3, #2 + 8002da6: 440b add r3, r1 + 8002da8: 334d adds r3, #77 @ 0x4d + 8002daa: 781b ldrb r3, [r3, #0] + 8002dac: 2b02 cmp r3, #2 + 8002dae: f000 8100 beq.w 8002fb2 + 8002db2: e000 b.n 8002db6 if (hhcd->hc[chnum].ErrCnt > 2U) - 8002d58: bf00 nop + 8002db4: bf00 nop } #if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); #else HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); - 8002d5a: 78fa ldrb r2, [r7, #3] - 8002d5c: 6879 ldr r1, [r7, #4] - 8002d5e: 4613 mov r3, r2 - 8002d60: 011b lsls r3, r3, #4 - 8002d62: 1a9b subs r3, r3, r2 - 8002d64: 009b lsls r3, r3, #2 - 8002d66: 440b add r3, r1 - 8002d68: 334c adds r3, #76 @ 0x4c - 8002d6a: 781a ldrb r2, [r3, #0] - 8002d6c: 78fb ldrb r3, [r7, #3] - 8002d6e: 4619 mov r1, r3 - 8002d70: 6878 ldr r0, [r7, #4] - 8002d72: f005 f817 bl 8007da4 - 8002d76: e0ef b.n 8002f58 -#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ - } - else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) - 8002d78: 687b ldr r3, [r7, #4] - 8002d7a: 681b ldr r3, [r3, #0] - 8002d7c: 78fa ldrb r2, [r7, #3] - 8002d7e: 4611 mov r1, r2 - 8002d80: 4618 mov r0, r3 - 8002d82: f003 fbfa bl 800657a - 8002d86: 4603 mov r3, r0 - 8002d88: f003 0340 and.w r3, r3, #64 @ 0x40 - 8002d8c: 2b40 cmp r3, #64 @ 0x40 - 8002d8e: d12f bne.n 8002df0 - { - __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NYET); - 8002d90: 78fb ldrb r3, [r7, #3] - 8002d92: 015a lsls r2, r3, #5 - 8002d94: 693b ldr r3, [r7, #16] - 8002d96: 4413 add r3, r2 - 8002d98: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002d9c: 461a mov r2, r3 - 8002d9e: 2340 movs r3, #64 @ 0x40 - 8002da0: 6093 str r3, [r2, #8] - hhcd->hc[chnum].state = HC_NYET; - 8002da2: 78fa ldrb r2, [r7, #3] - 8002da4: 6879 ldr r1, [r7, #4] - 8002da6: 4613 mov r3, r2 - 8002da8: 011b lsls r3, r3, #4 - 8002daa: 1a9b subs r3, r3, r2 - 8002dac: 009b lsls r3, r3, #2 - 8002dae: 440b add r3, r1 - 8002db0: 334d adds r3, #77 @ 0x4d - 8002db2: 2205 movs r2, #5 - 8002db4: 701a strb r2, [r3, #0] - - if (hhcd->hc[chnum].do_ssplit == 0U) 8002db6: 78fa ldrb r2, [r7, #3] 8002db8: 6879 ldr r1, [r7, #4] 8002dba: 4613 mov r3, r2 @@ -7317,607 +7304,608 @@ static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) 8002dbe: 1a9b subs r3, r3, r2 8002dc0: 009b lsls r3, r3, #2 8002dc2: 440b add r3, r1 - 8002dc4: 331a adds r3, #26 - 8002dc6: 781b ldrb r3, [r3, #0] - 8002dc8: 2b00 cmp r3, #0 - 8002dca: d109 bne.n 8002de0 + 8002dc4: 334c adds r3, #76 @ 0x4c + 8002dc6: 781a ldrb r2, [r3, #0] + 8002dc8: 78fb ldrb r3, [r7, #3] + 8002dca: 4619 mov r1, r3 + 8002dcc: 6878 ldr r0, [r7, #4] + 8002dce: f005 f811 bl 8007df4 + 8002dd2: e0ef b.n 8002fb4 +#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ + } + else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) + 8002dd4: 687b ldr r3, [r7, #4] + 8002dd6: 681b ldr r3, [r3, #0] + 8002dd8: 78fa ldrb r2, [r7, #3] + 8002dda: 4611 mov r1, r2 + 8002ddc: 4618 mov r0, r3 + 8002dde: f003 fbfa bl 80065d6 + 8002de2: 4603 mov r3, r0 + 8002de4: f003 0340 and.w r3, r3, #64 @ 0x40 + 8002de8: 2b40 cmp r3, #64 @ 0x40 + 8002dea: d12f bne.n 8002e4c + { + __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NYET); + 8002dec: 78fb ldrb r3, [r7, #3] + 8002dee: 015a lsls r2, r3, #5 + 8002df0: 693b ldr r3, [r7, #16] + 8002df2: 4413 add r3, r2 + 8002df4: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002df8: 461a mov r2, r3 + 8002dfa: 2340 movs r3, #64 @ 0x40 + 8002dfc: 6093 str r3, [r2, #8] + hhcd->hc[chnum].state = HC_NYET; + 8002dfe: 78fa ldrb r2, [r7, #3] + 8002e00: 6879 ldr r1, [r7, #4] + 8002e02: 4613 mov r3, r2 + 8002e04: 011b lsls r3, r3, #4 + 8002e06: 1a9b subs r3, r3, r2 + 8002e08: 009b lsls r3, r3, #2 + 8002e0a: 440b add r3, r1 + 8002e0c: 334d adds r3, #77 @ 0x4d + 8002e0e: 2205 movs r2, #5 + 8002e10: 701a strb r2, [r3, #0] + + if (hhcd->hc[chnum].do_ssplit == 0U) + 8002e12: 78fa ldrb r2, [r7, #3] + 8002e14: 6879 ldr r1, [r7, #4] + 8002e16: 4613 mov r3, r2 + 8002e18: 011b lsls r3, r3, #4 + 8002e1a: 1a9b subs r3, r3, r2 + 8002e1c: 009b lsls r3, r3, #2 + 8002e1e: 440b add r3, r1 + 8002e20: 331a adds r3, #26 + 8002e22: 781b ldrb r3, [r3, #0] + 8002e24: 2b00 cmp r3, #0 + 8002e26: d109 bne.n 8002e3c { hhcd->hc[chnum].ErrCnt = 0U; - 8002dcc: 78fa ldrb r2, [r7, #3] - 8002dce: 6879 ldr r1, [r7, #4] - 8002dd0: 4613 mov r3, r2 - 8002dd2: 011b lsls r3, r3, #4 - 8002dd4: 1a9b subs r3, r3, r2 - 8002dd6: 009b lsls r3, r3, #2 - 8002dd8: 440b add r3, r1 - 8002dda: 3344 adds r3, #68 @ 0x44 - 8002ddc: 2200 movs r2, #0 - 8002dde: 601a str r2, [r3, #0] + 8002e28: 78fa ldrb r2, [r7, #3] + 8002e2a: 6879 ldr r1, [r7, #4] + 8002e2c: 4613 mov r3, r2 + 8002e2e: 011b lsls r3, r3, #4 + 8002e30: 1a9b subs r3, r3, r2 + 8002e32: 009b lsls r3, r3, #2 + 8002e34: 440b add r3, r1 + 8002e36: 3344 adds r3, #68 @ 0x44 + 8002e38: 2200 movs r2, #0 + 8002e3a: 601a str r2, [r3, #0] } (void)USB_HC_Halt(hhcd->Instance, chnum); - 8002de0: 687b ldr r3, [r7, #4] - 8002de2: 681b ldr r3, [r3, #0] - 8002de4: 78fa ldrb r2, [r7, #3] - 8002de6: 4611 mov r1, r2 - 8002de8: 4618 mov r0, r3 - 8002dea: f003 fc43 bl 8006674 - 8002dee: e0b3 b.n 8002f58 + 8002e3c: 687b ldr r3, [r7, #4] + 8002e3e: 681b ldr r3, [r3, #0] + 8002e40: 78fa ldrb r2, [r7, #3] + 8002e42: 4611 mov r1, r2 + 8002e44: 4618 mov r0, r3 + 8002e46: f003 fc43 bl 80066d0 + 8002e4a: e0b3 b.n 8002fb4 } else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NAK)) - 8002df0: 687b ldr r3, [r7, #4] - 8002df2: 681b ldr r3, [r3, #0] - 8002df4: 78fa ldrb r2, [r7, #3] - 8002df6: 4611 mov r1, r2 - 8002df8: 4618 mov r0, r3 - 8002dfa: f003 fbbe bl 800657a - 8002dfe: 4603 mov r3, r0 - 8002e00: f003 0310 and.w r3, r3, #16 - 8002e04: 2b10 cmp r3, #16 - 8002e06: f040 80a7 bne.w 8002f58 + 8002e4c: 687b ldr r3, [r7, #4] + 8002e4e: 681b ldr r3, [r3, #0] + 8002e50: 78fa ldrb r2, [r7, #3] + 8002e52: 4611 mov r1, r2 + 8002e54: 4618 mov r0, r3 + 8002e56: f003 fbbe bl 80065d6 + 8002e5a: 4603 mov r3, r0 + 8002e5c: f003 0310 and.w r3, r3, #16 + 8002e60: 2b10 cmp r3, #16 + 8002e62: f040 80a7 bne.w 8002fb4 { if (hhcd->hc[chnum].ep_type == EP_TYPE_INTR) - 8002e0a: 78fa ldrb r2, [r7, #3] - 8002e0c: 6879 ldr r1, [r7, #4] - 8002e0e: 4613 mov r3, r2 - 8002e10: 011b lsls r3, r3, #4 - 8002e12: 1a9b subs r3, r3, r2 - 8002e14: 009b lsls r3, r3, #2 - 8002e16: 440b add r3, r1 - 8002e18: 3326 adds r3, #38 @ 0x26 - 8002e1a: 781b ldrb r3, [r3, #0] - 8002e1c: 2b03 cmp r3, #3 - 8002e1e: d11b bne.n 8002e58 + 8002e66: 78fa ldrb r2, [r7, #3] + 8002e68: 6879 ldr r1, [r7, #4] + 8002e6a: 4613 mov r3, r2 + 8002e6c: 011b lsls r3, r3, #4 + 8002e6e: 1a9b subs r3, r3, r2 + 8002e70: 009b lsls r3, r3, #2 + 8002e72: 440b add r3, r1 + 8002e74: 3326 adds r3, #38 @ 0x26 + 8002e76: 781b ldrb r3, [r3, #0] + 8002e78: 2b03 cmp r3, #3 + 8002e7a: d11b bne.n 8002eb4 { hhcd->hc[chnum].ErrCnt = 0U; - 8002e20: 78fa ldrb r2, [r7, #3] - 8002e22: 6879 ldr r1, [r7, #4] - 8002e24: 4613 mov r3, r2 - 8002e26: 011b lsls r3, r3, #4 - 8002e28: 1a9b subs r3, r3, r2 - 8002e2a: 009b lsls r3, r3, #2 - 8002e2c: 440b add r3, r1 - 8002e2e: 3344 adds r3, #68 @ 0x44 - 8002e30: 2200 movs r2, #0 - 8002e32: 601a str r2, [r3, #0] + 8002e7c: 78fa ldrb r2, [r7, #3] + 8002e7e: 6879 ldr r1, [r7, #4] + 8002e80: 4613 mov r3, r2 + 8002e82: 011b lsls r3, r3, #4 + 8002e84: 1a9b subs r3, r3, r2 + 8002e86: 009b lsls r3, r3, #2 + 8002e88: 440b add r3, r1 + 8002e8a: 3344 adds r3, #68 @ 0x44 + 8002e8c: 2200 movs r2, #0 + 8002e8e: 601a str r2, [r3, #0] hhcd->hc[chnum].state = HC_NAK; - 8002e34: 78fa ldrb r2, [r7, #3] - 8002e36: 6879 ldr r1, [r7, #4] - 8002e38: 4613 mov r3, r2 - 8002e3a: 011b lsls r3, r3, #4 - 8002e3c: 1a9b subs r3, r3, r2 - 8002e3e: 009b lsls r3, r3, #2 - 8002e40: 440b add r3, r1 - 8002e42: 334d adds r3, #77 @ 0x4d - 8002e44: 2204 movs r2, #4 - 8002e46: 701a strb r2, [r3, #0] + 8002e90: 78fa ldrb r2, [r7, #3] + 8002e92: 6879 ldr r1, [r7, #4] + 8002e94: 4613 mov r3, r2 + 8002e96: 011b lsls r3, r3, #4 + 8002e98: 1a9b subs r3, r3, r2 + 8002e9a: 009b lsls r3, r3, #2 + 8002e9c: 440b add r3, r1 + 8002e9e: 334d adds r3, #77 @ 0x4d + 8002ea0: 2204 movs r2, #4 + 8002ea2: 701a strb r2, [r3, #0] (void)USB_HC_Halt(hhcd->Instance, chnum); - 8002e48: 687b ldr r3, [r7, #4] - 8002e4a: 681b ldr r3, [r3, #0] - 8002e4c: 78fa ldrb r2, [r7, #3] - 8002e4e: 4611 mov r1, r2 - 8002e50: 4618 mov r0, r3 - 8002e52: f003 fc0f bl 8006674 - 8002e56: e03f b.n 8002ed8 + 8002ea4: 687b ldr r3, [r7, #4] + 8002ea6: 681b ldr r3, [r3, #0] + 8002ea8: 78fa ldrb r2, [r7, #3] + 8002eaa: 4611 mov r1, r2 + 8002eac: 4618 mov r0, r3 + 8002eae: f003 fc0f bl 80066d0 + 8002eb2: e03f b.n 8002f34 } else if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || - 8002e58: 78fa ldrb r2, [r7, #3] - 8002e5a: 6879 ldr r1, [r7, #4] - 8002e5c: 4613 mov r3, r2 - 8002e5e: 011b lsls r3, r3, #4 - 8002e60: 1a9b subs r3, r3, r2 - 8002e62: 009b lsls r3, r3, #2 - 8002e64: 440b add r3, r1 - 8002e66: 3326 adds r3, #38 @ 0x26 - 8002e68: 781b ldrb r3, [r3, #0] - 8002e6a: 2b00 cmp r3, #0 - 8002e6c: d00a beq.n 8002e84 + 8002eb4: 78fa ldrb r2, [r7, #3] + 8002eb6: 6879 ldr r1, [r7, #4] + 8002eb8: 4613 mov r3, r2 + 8002eba: 011b lsls r3, r3, #4 + 8002ebc: 1a9b subs r3, r3, r2 + 8002ebe: 009b lsls r3, r3, #2 + 8002ec0: 440b add r3, r1 + 8002ec2: 3326 adds r3, #38 @ 0x26 + 8002ec4: 781b ldrb r3, [r3, #0] + 8002ec6: 2b00 cmp r3, #0 + 8002ec8: d00a beq.n 8002ee0 (hhcd->hc[chnum].ep_type == EP_TYPE_BULK)) - 8002e6e: 78fa ldrb r2, [r7, #3] - 8002e70: 6879 ldr r1, [r7, #4] - 8002e72: 4613 mov r3, r2 - 8002e74: 011b lsls r3, r3, #4 - 8002e76: 1a9b subs r3, r3, r2 - 8002e78: 009b lsls r3, r3, #2 - 8002e7a: 440b add r3, r1 - 8002e7c: 3326 adds r3, #38 @ 0x26 - 8002e7e: 781b ldrb r3, [r3, #0] + 8002eca: 78fa ldrb r2, [r7, #3] + 8002ecc: 6879 ldr r1, [r7, #4] + 8002ece: 4613 mov r3, r2 + 8002ed0: 011b lsls r3, r3, #4 + 8002ed2: 1a9b subs r3, r3, r2 + 8002ed4: 009b lsls r3, r3, #2 + 8002ed6: 440b add r3, r1 + 8002ed8: 3326 adds r3, #38 @ 0x26 + 8002eda: 781b ldrb r3, [r3, #0] else if ((hhcd->hc[chnum].ep_type == EP_TYPE_CTRL) || - 8002e80: 2b02 cmp r3, #2 - 8002e82: d129 bne.n 8002ed8 + 8002edc: 2b02 cmp r3, #2 + 8002ede: d129 bne.n 8002f34 { hhcd->hc[chnum].ErrCnt = 0U; - 8002e84: 78fa ldrb r2, [r7, #3] - 8002e86: 6879 ldr r1, [r7, #4] - 8002e88: 4613 mov r3, r2 - 8002e8a: 011b lsls r3, r3, #4 - 8002e8c: 1a9b subs r3, r3, r2 - 8002e8e: 009b lsls r3, r3, #2 - 8002e90: 440b add r3, r1 - 8002e92: 3344 adds r3, #68 @ 0x44 - 8002e94: 2200 movs r2, #0 - 8002e96: 601a str r2, [r3, #0] + 8002ee0: 78fa ldrb r2, [r7, #3] + 8002ee2: 6879 ldr r1, [r7, #4] + 8002ee4: 4613 mov r3, r2 + 8002ee6: 011b lsls r3, r3, #4 + 8002ee8: 1a9b subs r3, r3, r2 + 8002eea: 009b lsls r3, r3, #2 + 8002eec: 440b add r3, r1 + 8002eee: 3344 adds r3, #68 @ 0x44 + 8002ef0: 2200 movs r2, #0 + 8002ef2: 601a str r2, [r3, #0] if ((hhcd->Init.dma_enable == 0U) || (hhcd->hc[chnum].do_csplit == 1U)) - 8002e98: 687b ldr r3, [r7, #4] - 8002e9a: 799b ldrb r3, [r3, #6] - 8002e9c: 2b00 cmp r3, #0 - 8002e9e: d00a beq.n 8002eb6 - 8002ea0: 78fa ldrb r2, [r7, #3] - 8002ea2: 6879 ldr r1, [r7, #4] - 8002ea4: 4613 mov r3, r2 - 8002ea6: 011b lsls r3, r3, #4 - 8002ea8: 1a9b subs r3, r3, r2 - 8002eaa: 009b lsls r3, r3, #2 - 8002eac: 440b add r3, r1 - 8002eae: 331b adds r3, #27 - 8002eb0: 781b ldrb r3, [r3, #0] - 8002eb2: 2b01 cmp r3, #1 - 8002eb4: d110 bne.n 8002ed8 + 8002ef4: 687b ldr r3, [r7, #4] + 8002ef6: 799b ldrb r3, [r3, #6] + 8002ef8: 2b00 cmp r3, #0 + 8002efa: d00a beq.n 8002f12 + 8002efc: 78fa ldrb r2, [r7, #3] + 8002efe: 6879 ldr r1, [r7, #4] + 8002f00: 4613 mov r3, r2 + 8002f02: 011b lsls r3, r3, #4 + 8002f04: 1a9b subs r3, r3, r2 + 8002f06: 009b lsls r3, r3, #2 + 8002f08: 440b add r3, r1 + 8002f0a: 331b adds r3, #27 + 8002f0c: 781b ldrb r3, [r3, #0] + 8002f0e: 2b01 cmp r3, #1 + 8002f10: d110 bne.n 8002f34 { hhcd->hc[chnum].state = HC_NAK; - 8002eb6: 78fa ldrb r2, [r7, #3] - 8002eb8: 6879 ldr r1, [r7, #4] - 8002eba: 4613 mov r3, r2 - 8002ebc: 011b lsls r3, r3, #4 - 8002ebe: 1a9b subs r3, r3, r2 - 8002ec0: 009b lsls r3, r3, #2 - 8002ec2: 440b add r3, r1 - 8002ec4: 334d adds r3, #77 @ 0x4d - 8002ec6: 2204 movs r2, #4 - 8002ec8: 701a strb r2, [r3, #0] + 8002f12: 78fa ldrb r2, [r7, #3] + 8002f14: 6879 ldr r1, [r7, #4] + 8002f16: 4613 mov r3, r2 + 8002f18: 011b lsls r3, r3, #4 + 8002f1a: 1a9b subs r3, r3, r2 + 8002f1c: 009b lsls r3, r3, #2 + 8002f1e: 440b add r3, r1 + 8002f20: 334d adds r3, #77 @ 0x4d + 8002f22: 2204 movs r2, #4 + 8002f24: 701a strb r2, [r3, #0] (void)USB_HC_Halt(hhcd->Instance, chnum); - 8002eca: 687b ldr r3, [r7, #4] - 8002ecc: 681b ldr r3, [r3, #0] - 8002ece: 78fa ldrb r2, [r7, #3] - 8002ed0: 4611 mov r1, r2 - 8002ed2: 4618 mov r0, r3 - 8002ed4: f003 fbce bl 8006674 + 8002f26: 687b ldr r3, [r7, #4] + 8002f28: 681b ldr r3, [r3, #0] + 8002f2a: 78fa ldrb r2, [r7, #3] + 8002f2c: 4611 mov r1, r2 + 8002f2e: 4618 mov r0, r3 + 8002f30: f003 fbce bl 80066d0 else { /* ... */ } if (hhcd->hc[chnum].do_csplit == 1U) - 8002ed8: 78fa ldrb r2, [r7, #3] - 8002eda: 6879 ldr r1, [r7, #4] - 8002edc: 4613 mov r3, r2 - 8002ede: 011b lsls r3, r3, #4 - 8002ee0: 1a9b subs r3, r3, r2 - 8002ee2: 009b lsls r3, r3, #2 - 8002ee4: 440b add r3, r1 - 8002ee6: 331b adds r3, #27 - 8002ee8: 781b ldrb r3, [r3, #0] - 8002eea: 2b01 cmp r3, #1 - 8002eec: d129 bne.n 8002f42 + 8002f34: 78fa ldrb r2, [r7, #3] + 8002f36: 6879 ldr r1, [r7, #4] + 8002f38: 4613 mov r3, r2 + 8002f3a: 011b lsls r3, r3, #4 + 8002f3c: 1a9b subs r3, r3, r2 + 8002f3e: 009b lsls r3, r3, #2 + 8002f40: 440b add r3, r1 + 8002f42: 331b adds r3, #27 + 8002f44: 781b ldrb r3, [r3, #0] + 8002f46: 2b01 cmp r3, #1 + 8002f48: d129 bne.n 8002f9e { hhcd->hc[chnum].do_csplit = 0U; - 8002eee: 78fa ldrb r2, [r7, #3] - 8002ef0: 6879 ldr r1, [r7, #4] - 8002ef2: 4613 mov r3, r2 - 8002ef4: 011b lsls r3, r3, #4 - 8002ef6: 1a9b subs r3, r3, r2 - 8002ef8: 009b lsls r3, r3, #2 - 8002efa: 440b add r3, r1 - 8002efc: 331b adds r3, #27 - 8002efe: 2200 movs r2, #0 - 8002f00: 701a strb r2, [r3, #0] + 8002f4a: 78fa ldrb r2, [r7, #3] + 8002f4c: 6879 ldr r1, [r7, #4] + 8002f4e: 4613 mov r3, r2 + 8002f50: 011b lsls r3, r3, #4 + 8002f52: 1a9b subs r3, r3, r2 + 8002f54: 009b lsls r3, r3, #2 + 8002f56: 440b add r3, r1 + 8002f58: 331b adds r3, #27 + 8002f5a: 2200 movs r2, #0 + 8002f5c: 701a strb r2, [r3, #0] __HAL_HCD_CLEAR_HC_CSPLT(chnum); - 8002f02: 78fb ldrb r3, [r7, #3] - 8002f04: 015a lsls r2, r3, #5 - 8002f06: 693b ldr r3, [r7, #16] - 8002f08: 4413 add r3, r2 - 8002f0a: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002f0e: 685b ldr r3, [r3, #4] - 8002f10: 78fa ldrb r2, [r7, #3] - 8002f12: 0151 lsls r1, r2, #5 - 8002f14: 693a ldr r2, [r7, #16] - 8002f16: 440a add r2, r1 - 8002f18: f502 62a0 add.w r2, r2, #1280 @ 0x500 - 8002f1c: f423 3380 bic.w r3, r3, #65536 @ 0x10000 - 8002f20: 6053 str r3, [r2, #4] + 8002f5e: 78fb ldrb r3, [r7, #3] + 8002f60: 015a lsls r2, r3, #5 + 8002f62: 693b ldr r3, [r7, #16] + 8002f64: 4413 add r3, r2 + 8002f66: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002f6a: 685b ldr r3, [r3, #4] + 8002f6c: 78fa ldrb r2, [r7, #3] + 8002f6e: 0151 lsls r1, r2, #5 + 8002f70: 693a ldr r2, [r7, #16] + 8002f72: 440a add r2, r1 + 8002f74: f502 62a0 add.w r2, r2, #1280 @ 0x500 + 8002f78: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 8002f7c: 6053 str r3, [r2, #4] __HAL_HCD_UNMASK_ACK_HC_INT(chnum); - 8002f22: 78fb ldrb r3, [r7, #3] - 8002f24: 015a lsls r2, r3, #5 - 8002f26: 693b ldr r3, [r7, #16] - 8002f28: 4413 add r3, r2 - 8002f2a: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002f2e: 68db ldr r3, [r3, #12] - 8002f30: 78fa ldrb r2, [r7, #3] - 8002f32: 0151 lsls r1, r2, #5 - 8002f34: 693a ldr r2, [r7, #16] - 8002f36: 440a add r2, r1 - 8002f38: f502 62a0 add.w r2, r2, #1280 @ 0x500 - 8002f3c: f043 0320 orr.w r3, r3, #32 - 8002f40: 60d3 str r3, [r2, #12] + 8002f7e: 78fb ldrb r3, [r7, #3] + 8002f80: 015a lsls r2, r3, #5 + 8002f82: 693b ldr r3, [r7, #16] + 8002f84: 4413 add r3, r2 + 8002f86: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002f8a: 68db ldr r3, [r3, #12] + 8002f8c: 78fa ldrb r2, [r7, #3] + 8002f8e: 0151 lsls r1, r2, #5 + 8002f90: 693a ldr r2, [r7, #16] + 8002f92: 440a add r2, r1 + 8002f94: f502 62a0 add.w r2, r2, #1280 @ 0x500 + 8002f98: f043 0320 orr.w r3, r3, #32 + 8002f9c: 60d3 str r3, [r2, #12] } __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK); - 8002f42: 78fb ldrb r3, [r7, #3] - 8002f44: 015a lsls r2, r3, #5 - 8002f46: 693b ldr r3, [r7, #16] - 8002f48: 4413 add r3, r2 - 8002f4a: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002f4e: 461a mov r2, r3 - 8002f50: 2310 movs r3, #16 - 8002f52: 6093 str r3, [r2, #8] - 8002f54: e000 b.n 8002f58 + 8002f9e: 78fb ldrb r3, [r7, #3] + 8002fa0: 015a lsls r2, r3, #5 + 8002fa2: 693b ldr r3, [r7, #16] + 8002fa4: 4413 add r3, r2 + 8002fa6: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002faa: 461a mov r2, r3 + 8002fac: 2310 movs r3, #16 + 8002fae: 6093 str r3, [r2, #8] + 8002fb0: e000 b.n 8002fb4 return; - 8002f56: bf00 nop + 8002fb2: bf00 nop } else { /* ... */ } } - 8002f58: 3718 adds r7, #24 - 8002f5a: 46bd mov sp, r7 - 8002f5c: bd80 pop {r7, pc} + 8002fb4: 3718 adds r7, #24 + 8002fb6: 46bd mov sp, r7 + 8002fb8: bd80 pop {r7, pc} -08002f5e : +08002fba : * @param chnum Channel number. * This parameter can be a value from 1 to 15 * @retval none */ static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) { - 8002f5e: b580 push {r7, lr} - 8002f60: b086 sub sp, #24 - 8002f62: af00 add r7, sp, #0 - 8002f64: 6078 str r0, [r7, #4] - 8002f66: 460b mov r3, r1 - 8002f68: 70fb strb r3, [r7, #3] + 8002fba: b580 push {r7, lr} + 8002fbc: b086 sub sp, #24 + 8002fbe: af00 add r7, sp, #0 + 8002fc0: 6078 str r0, [r7, #4] + 8002fc2: 460b mov r3, r1 + 8002fc4: 70fb strb r3, [r7, #3] const USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; - 8002f6a: 687b ldr r3, [r7, #4] - 8002f6c: 681b ldr r3, [r3, #0] - 8002f6e: 617b str r3, [r7, #20] + 8002fc6: 687b ldr r3, [r7, #4] + 8002fc8: 681b ldr r3, [r3, #0] + 8002fca: 617b str r3, [r7, #20] uint32_t USBx_BASE = (uint32_t)USBx; - 8002f70: 697b ldr r3, [r7, #20] - 8002f72: 613b str r3, [r7, #16] + 8002fcc: 697b ldr r3, [r7, #20] + 8002fce: 613b str r3, [r7, #16] uint32_t tmpreg; uint32_t num_packets; if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_AHBERR)) - 8002f74: 687b ldr r3, [r7, #4] - 8002f76: 681b ldr r3, [r3, #0] - 8002f78: 78fa ldrb r2, [r7, #3] - 8002f7a: 4611 mov r1, r2 - 8002f7c: 4618 mov r0, r3 - 8002f7e: f003 fafc bl 800657a - 8002f82: 4603 mov r3, r0 - 8002f84: f003 0304 and.w r3, r3, #4 - 8002f88: 2b04 cmp r3, #4 - 8002f8a: d11b bne.n 8002fc4 + 8002fd0: 687b ldr r3, [r7, #4] + 8002fd2: 681b ldr r3, [r3, #0] + 8002fd4: 78fa ldrb r2, [r7, #3] + 8002fd6: 4611 mov r1, r2 + 8002fd8: 4618 mov r0, r3 + 8002fda: f003 fafc bl 80065d6 + 8002fde: 4603 mov r3, r0 + 8002fe0: f003 0304 and.w r3, r3, #4 + 8002fe4: 2b04 cmp r3, #4 + 8002fe6: d11b bne.n 8003020 { __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_AHBERR); - 8002f8c: 78fb ldrb r3, [r7, #3] - 8002f8e: 015a lsls r2, r3, #5 - 8002f90: 693b ldr r3, [r7, #16] - 8002f92: 4413 add r3, r2 - 8002f94: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002f98: 461a mov r2, r3 - 8002f9a: 2304 movs r3, #4 - 8002f9c: 6093 str r3, [r2, #8] + 8002fe8: 78fb ldrb r3, [r7, #3] + 8002fea: 015a lsls r2, r3, #5 + 8002fec: 693b ldr r3, [r7, #16] + 8002fee: 4413 add r3, r2 + 8002ff0: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8002ff4: 461a mov r2, r3 + 8002ff6: 2304 movs r3, #4 + 8002ff8: 6093 str r3, [r2, #8] hhcd->hc[chnum].state = HC_XACTERR; - 8002f9e: 78fa ldrb r2, [r7, #3] - 8002fa0: 6879 ldr r1, [r7, #4] - 8002fa2: 4613 mov r3, r2 - 8002fa4: 011b lsls r3, r3, #4 - 8002fa6: 1a9b subs r3, r3, r2 - 8002fa8: 009b lsls r3, r3, #2 - 8002faa: 440b add r3, r1 - 8002fac: 334d adds r3, #77 @ 0x4d - 8002fae: 2207 movs r2, #7 - 8002fb0: 701a strb r2, [r3, #0] + 8002ffa: 78fa ldrb r2, [r7, #3] + 8002ffc: 6879 ldr r1, [r7, #4] + 8002ffe: 4613 mov r3, r2 + 8003000: 011b lsls r3, r3, #4 + 8003002: 1a9b subs r3, r3, r2 + 8003004: 009b lsls r3, r3, #2 + 8003006: 440b add r3, r1 + 8003008: 334d adds r3, #77 @ 0x4d + 800300a: 2207 movs r2, #7 + 800300c: 701a strb r2, [r3, #0] (void)USB_HC_Halt(hhcd->Instance, chnum); - 8002fb2: 687b ldr r3, [r7, #4] - 8002fb4: 681b ldr r3, [r3, #0] - 8002fb6: 78fa ldrb r2, [r7, #3] - 8002fb8: 4611 mov r1, r2 - 8002fba: 4618 mov r0, r3 - 8002fbc: f003 fb5a bl 8006674 - 8002fc0: f000 bc89 b.w 80038d6 + 800300e: 687b ldr r3, [r7, #4] + 8003010: 681b ldr r3, [r3, #0] + 8003012: 78fa ldrb r2, [r7, #3] + 8003014: 4611 mov r1, r2 + 8003016: 4618 mov r0, r3 + 8003018: f003 fb5a bl 80066d0 + 800301c: f000 bc89 b.w 8003932 } else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_ACK)) - 8002fc4: 687b ldr r3, [r7, #4] - 8002fc6: 681b ldr r3, [r3, #0] - 8002fc8: 78fa ldrb r2, [r7, #3] - 8002fca: 4611 mov r1, r2 - 8002fcc: 4618 mov r0, r3 - 8002fce: f003 fad4 bl 800657a - 8002fd2: 4603 mov r3, r0 - 8002fd4: f003 0320 and.w r3, r3, #32 - 8002fd8: 2b20 cmp r3, #32 - 8002fda: f040 8082 bne.w 80030e2 + 8003020: 687b ldr r3, [r7, #4] + 8003022: 681b ldr r3, [r3, #0] + 8003024: 78fa ldrb r2, [r7, #3] + 8003026: 4611 mov r1, r2 + 8003028: 4618 mov r0, r3 + 800302a: f003 fad4 bl 80065d6 + 800302e: 4603 mov r3, r0 + 8003030: f003 0320 and.w r3, r3, #32 + 8003034: 2b20 cmp r3, #32 + 8003036: f040 8082 bne.w 800313e { __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_ACK); - 8002fde: 78fb ldrb r3, [r7, #3] - 8002fe0: 015a lsls r2, r3, #5 - 8002fe2: 693b ldr r3, [r7, #16] - 8002fe4: 4413 add r3, r2 - 8002fe6: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8002fea: 461a mov r2, r3 - 8002fec: 2320 movs r3, #32 - 8002fee: 6093 str r3, [r2, #8] + 800303a: 78fb ldrb r3, [r7, #3] + 800303c: 015a lsls r2, r3, #5 + 800303e: 693b ldr r3, [r7, #16] + 8003040: 4413 add r3, r2 + 8003042: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8003046: 461a mov r2, r3 + 8003048: 2320 movs r3, #32 + 800304a: 6093 str r3, [r2, #8] if (hhcd->hc[chnum].do_ping == 1U) - 8002ff0: 78fa ldrb r2, [r7, #3] - 8002ff2: 6879 ldr r1, [r7, #4] - 8002ff4: 4613 mov r3, r2 - 8002ff6: 011b lsls r3, r3, #4 - 8002ff8: 1a9b subs r3, r3, r2 - 8002ffa: 009b lsls r3, r3, #2 - 8002ffc: 440b add r3, r1 - 8002ffe: 3319 adds r3, #25 - 8003000: 781b ldrb r3, [r3, #0] - 8003002: 2b01 cmp r3, #1 - 8003004: d124 bne.n 8003050 + 800304c: 78fa ldrb r2, [r7, #3] + 800304e: 6879 ldr r1, [r7, #4] + 8003050: 4613 mov r3, r2 + 8003052: 011b lsls r3, r3, #4 + 8003054: 1a9b subs r3, r3, r2 + 8003056: 009b lsls r3, r3, #2 + 8003058: 440b add r3, r1 + 800305a: 3319 adds r3, #25 + 800305c: 781b ldrb r3, [r3, #0] + 800305e: 2b01 cmp r3, #1 + 8003060: d124 bne.n 80030ac { hhcd->hc[chnum].do_ping = 0U; - 8003006: 78fa ldrb r2, [r7, #3] - 8003008: 6879 ldr r1, [r7, #4] - 800300a: 4613 mov r3, r2 - 800300c: 011b lsls r3, r3, #4 - 800300e: 1a9b subs r3, r3, r2 - 8003010: 009b lsls r3, r3, #2 - 8003012: 440b add r3, r1 - 8003014: 3319 adds r3, #25 - 8003016: 2200 movs r2, #0 - 8003018: 701a strb r2, [r3, #0] + 8003062: 78fa ldrb r2, [r7, #3] + 8003064: 6879 ldr r1, [r7, #4] + 8003066: 4613 mov r3, r2 + 8003068: 011b lsls r3, r3, #4 + 800306a: 1a9b subs r3, r3, r2 + 800306c: 009b lsls r3, r3, #2 + 800306e: 440b add r3, r1 + 8003070: 3319 adds r3, #25 + 8003072: 2200 movs r2, #0 + 8003074: 701a strb r2, [r3, #0] hhcd->hc[chnum].urb_state = URB_NOTREADY; - 800301a: 78fa ldrb r2, [r7, #3] - 800301c: 6879 ldr r1, [r7, #4] - 800301e: 4613 mov r3, r2 - 8003020: 011b lsls r3, r3, #4 - 8003022: 1a9b subs r3, r3, r2 - 8003024: 009b lsls r3, r3, #2 - 8003026: 440b add r3, r1 - 8003028: 334c adds r3, #76 @ 0x4c - 800302a: 2202 movs r2, #2 - 800302c: 701a strb r2, [r3, #0] + 8003076: 78fa ldrb r2, [r7, #3] + 8003078: 6879 ldr r1, [r7, #4] + 800307a: 4613 mov r3, r2 + 800307c: 011b lsls r3, r3, #4 + 800307e: 1a9b subs r3, r3, r2 + 8003080: 009b lsls r3, r3, #2 + 8003082: 440b add r3, r1 + 8003084: 334c adds r3, #76 @ 0x4c + 8003086: 2202 movs r2, #2 + 8003088: 701a strb r2, [r3, #0] hhcd->hc[chnum].state = HC_ACK; - 800302e: 78fa ldrb r2, [r7, #3] - 8003030: 6879 ldr r1, [r7, #4] - 8003032: 4613 mov r3, r2 - 8003034: 011b lsls r3, r3, #4 - 8003036: 1a9b subs r3, r3, r2 - 8003038: 009b lsls r3, r3, #2 - 800303a: 440b add r3, r1 - 800303c: 334d adds r3, #77 @ 0x4d - 800303e: 2203 movs r2, #3 - 8003040: 701a strb r2, [r3, #0] + 800308a: 78fa ldrb r2, [r7, #3] + 800308c: 6879 ldr r1, [r7, #4] + 800308e: 4613 mov r3, r2 + 8003090: 011b lsls r3, r3, #4 + 8003092: 1a9b subs r3, r3, r2 + 8003094: 009b lsls r3, r3, #2 + 8003096: 440b add r3, r1 + 8003098: 334d adds r3, #77 @ 0x4d + 800309a: 2203 movs r2, #3 + 800309c: 701a strb r2, [r3, #0] (void)USB_HC_Halt(hhcd->Instance, chnum); - 8003042: 687b ldr r3, [r7, #4] - 8003044: 681b ldr r3, [r3, #0] - 8003046: 78fa ldrb r2, [r7, #3] - 8003048: 4611 mov r1, r2 - 800304a: 4618 mov r0, r3 - 800304c: f003 fb12 bl 8006674 + 800309e: 687b ldr r3, [r7, #4] + 80030a0: 681b ldr r3, [r3, #0] + 80030a2: 78fa ldrb r2, [r7, #3] + 80030a4: 4611 mov r1, r2 + 80030a6: 4618 mov r0, r3 + 80030a8: f003 fb12 bl 80066d0 } if ((hhcd->hc[chnum].do_ssplit == 1U) && (hhcd->hc[chnum].do_csplit == 0U)) - 8003050: 78fa ldrb r2, [r7, #3] - 8003052: 6879 ldr r1, [r7, #4] - 8003054: 4613 mov r3, r2 - 8003056: 011b lsls r3, r3, #4 - 8003058: 1a9b subs r3, r3, r2 - 800305a: 009b lsls r3, r3, #2 - 800305c: 440b add r3, r1 - 800305e: 331a adds r3, #26 - 8003060: 781b ldrb r3, [r3, #0] - 8003062: 2b01 cmp r3, #1 - 8003064: f040 8437 bne.w 80038d6 - 8003068: 78fa ldrb r2, [r7, #3] - 800306a: 6879 ldr r1, [r7, #4] - 800306c: 4613 mov r3, r2 - 800306e: 011b lsls r3, r3, #4 - 8003070: 1a9b subs r3, r3, r2 - 8003072: 009b lsls r3, r3, #2 - 8003074: 440b add r3, r1 - 8003076: 331b adds r3, #27 - 8003078: 781b ldrb r3, [r3, #0] - 800307a: 2b00 cmp r3, #0 - 800307c: f040 842b bne.w 80038d6 + 80030ac: 78fa ldrb r2, [r7, #3] + 80030ae: 6879 ldr r1, [r7, #4] + 80030b0: 4613 mov r3, r2 + 80030b2: 011b lsls r3, r3, #4 + 80030b4: 1a9b subs r3, r3, r2 + 80030b6: 009b lsls r3, r3, #2 + 80030b8: 440b add r3, r1 + 80030ba: 331a adds r3, #26 + 80030bc: 781b ldrb r3, [r3, #0] + 80030be: 2b01 cmp r3, #1 + 80030c0: f040 8437 bne.w 8003932 + 80030c4: 78fa ldrb r2, [r7, #3] + 80030c6: 6879 ldr r1, [r7, #4] + 80030c8: 4613 mov r3, r2 + 80030ca: 011b lsls r3, r3, #4 + 80030cc: 1a9b subs r3, r3, r2 + 80030ce: 009b lsls r3, r3, #2 + 80030d0: 440b add r3, r1 + 80030d2: 331b adds r3, #27 + 80030d4: 781b ldrb r3, [r3, #0] + 80030d6: 2b00 cmp r3, #0 + 80030d8: f040 842b bne.w 8003932 { if (hhcd->hc[chnum].ep_type != EP_TYPE_ISOC) - 8003080: 78fa ldrb r2, [r7, #3] - 8003082: 6879 ldr r1, [r7, #4] - 8003084: 4613 mov r3, r2 - 8003086: 011b lsls r3, r3, #4 - 8003088: 1a9b subs r3, r3, r2 - 800308a: 009b lsls r3, r3, #2 - 800308c: 440b add r3, r1 - 800308e: 3326 adds r3, #38 @ 0x26 - 8003090: 781b ldrb r3, [r3, #0] - 8003092: 2b01 cmp r3, #1 - 8003094: d009 beq.n 80030aa + 80030dc: 78fa ldrb r2, [r7, #3] + 80030de: 6879 ldr r1, [r7, #4] + 80030e0: 4613 mov r3, r2 + 80030e2: 011b lsls r3, r3, #4 + 80030e4: 1a9b subs r3, r3, r2 + 80030e6: 009b lsls r3, r3, #2 + 80030e8: 440b add r3, r1 + 80030ea: 3326 adds r3, #38 @ 0x26 + 80030ec: 781b ldrb r3, [r3, #0] + 80030ee: 2b01 cmp r3, #1 + 80030f0: d009 beq.n 8003106 { hhcd->hc[chnum].do_csplit = 1U; - 8003096: 78fa ldrb r2, [r7, #3] - 8003098: 6879 ldr r1, [r7, #4] - 800309a: 4613 mov r3, r2 - 800309c: 011b lsls r3, r3, #4 - 800309e: 1a9b subs r3, r3, r2 - 80030a0: 009b lsls r3, r3, #2 - 80030a2: 440b add r3, r1 - 80030a4: 331b adds r3, #27 - 80030a6: 2201 movs r2, #1 - 80030a8: 701a strb r2, [r3, #0] + 80030f2: 78fa ldrb r2, [r7, #3] + 80030f4: 6879 ldr r1, [r7, #4] + 80030f6: 4613 mov r3, r2 + 80030f8: 011b lsls r3, r3, #4 + 80030fa: 1a9b subs r3, r3, r2 + 80030fc: 009b lsls r3, r3, #2 + 80030fe: 440b add r3, r1 + 8003100: 331b adds r3, #27 + 8003102: 2201 movs r2, #1 + 8003104: 701a strb r2, [r3, #0] } hhcd->hc[chnum].state = HC_ACK; - 80030aa: 78fa ldrb r2, [r7, #3] - 80030ac: 6879 ldr r1, [r7, #4] - 80030ae: 4613 mov r3, r2 - 80030b0: 011b lsls r3, r3, #4 - 80030b2: 1a9b subs r3, r3, r2 - 80030b4: 009b lsls r3, r3, #2 - 80030b6: 440b add r3, r1 - 80030b8: 334d adds r3, #77 @ 0x4d - 80030ba: 2203 movs r2, #3 - 80030bc: 701a strb r2, [r3, #0] + 8003106: 78fa ldrb r2, [r7, #3] + 8003108: 6879 ldr r1, [r7, #4] + 800310a: 4613 mov r3, r2 + 800310c: 011b lsls r3, r3, #4 + 800310e: 1a9b subs r3, r3, r2 + 8003110: 009b lsls r3, r3, #2 + 8003112: 440b add r3, r1 + 8003114: 334d adds r3, #77 @ 0x4d + 8003116: 2203 movs r2, #3 + 8003118: 701a strb r2, [r3, #0] (void)USB_HC_Halt(hhcd->Instance, chnum); - 80030be: 687b ldr r3, [r7, #4] - 80030c0: 681b ldr r3, [r3, #0] - 80030c2: 78fa ldrb r2, [r7, #3] - 80030c4: 4611 mov r1, r2 - 80030c6: 4618 mov r0, r3 - 80030c8: f003 fad4 bl 8006674 + 800311a: 687b ldr r3, [r7, #4] + 800311c: 681b ldr r3, [r3, #0] + 800311e: 78fa ldrb r2, [r7, #3] + 8003120: 4611 mov r1, r2 + 8003122: 4618 mov r0, r3 + 8003124: f003 fad4 bl 80066d0 /* reset error_count */ hhcd->hc[chnum].ErrCnt = 0U; - 80030cc: 78fa ldrb r2, [r7, #3] - 80030ce: 6879 ldr r1, [r7, #4] - 80030d0: 4613 mov r3, r2 - 80030d2: 011b lsls r3, r3, #4 - 80030d4: 1a9b subs r3, r3, r2 - 80030d6: 009b lsls r3, r3, #2 - 80030d8: 440b add r3, r1 - 80030da: 3344 adds r3, #68 @ 0x44 - 80030dc: 2200 movs r2, #0 - 80030de: 601a str r2, [r3, #0] - 80030e0: e3f9 b.n 80038d6 + 8003128: 78fa ldrb r2, [r7, #3] + 800312a: 6879 ldr r1, [r7, #4] + 800312c: 4613 mov r3, r2 + 800312e: 011b lsls r3, r3, #4 + 8003130: 1a9b subs r3, r3, r2 + 8003132: 009b lsls r3, r3, #2 + 8003134: 440b add r3, r1 + 8003136: 3344 adds r3, #68 @ 0x44 + 8003138: 2200 movs r2, #0 + 800313a: 601a str r2, [r3, #0] + 800313c: e3f9 b.n 8003932 } } else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_FRMOR)) - 80030e2: 687b ldr r3, [r7, #4] - 80030e4: 681b ldr r3, [r3, #0] - 80030e6: 78fa ldrb r2, [r7, #3] - 80030e8: 4611 mov r1, r2 - 80030ea: 4618 mov r0, r3 - 80030ec: f003 fa45 bl 800657a - 80030f0: 4603 mov r3, r0 - 80030f2: f403 7300 and.w r3, r3, #512 @ 0x200 - 80030f6: f5b3 7f00 cmp.w r3, #512 @ 0x200 - 80030fa: d111 bne.n 8003120 + 800313e: 687b ldr r3, [r7, #4] + 8003140: 681b ldr r3, [r3, #0] + 8003142: 78fa ldrb r2, [r7, #3] + 8003144: 4611 mov r1, r2 + 8003146: 4618 mov r0, r3 + 8003148: f003 fa45 bl 80065d6 + 800314c: 4603 mov r3, r0 + 800314e: f403 7300 and.w r3, r3, #512 @ 0x200 + 8003152: f5b3 7f00 cmp.w r3, #512 @ 0x200 + 8003156: d111 bne.n 800317c { __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_FRMOR); - 80030fc: 78fb ldrb r3, [r7, #3] - 80030fe: 015a lsls r2, r3, #5 - 8003100: 693b ldr r3, [r7, #16] - 8003102: 4413 add r3, r2 - 8003104: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8003108: 461a mov r2, r3 - 800310a: f44f 7300 mov.w r3, #512 @ 0x200 - 800310e: 6093 str r3, [r2, #8] + 8003158: 78fb ldrb r3, [r7, #3] + 800315a: 015a lsls r2, r3, #5 + 800315c: 693b ldr r3, [r7, #16] + 800315e: 4413 add r3, r2 + 8003160: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8003164: 461a mov r2, r3 + 8003166: f44f 7300 mov.w r3, #512 @ 0x200 + 800316a: 6093 str r3, [r2, #8] (void)USB_HC_Halt(hhcd->Instance, chnum); - 8003110: 687b ldr r3, [r7, #4] - 8003112: 681b ldr r3, [r3, #0] - 8003114: 78fa ldrb r2, [r7, #3] - 8003116: 4611 mov r1, r2 - 8003118: 4618 mov r0, r3 - 800311a: f003 faab bl 8006674 - 800311e: e3da b.n 80038d6 + 800316c: 687b ldr r3, [r7, #4] + 800316e: 681b ldr r3, [r3, #0] + 8003170: 78fa ldrb r2, [r7, #3] + 8003172: 4611 mov r1, r2 + 8003174: 4618 mov r0, r3 + 8003176: f003 faab bl 80066d0 + 800317a: e3da b.n 8003932 } else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_XFRC)) - 8003120: 687b ldr r3, [r7, #4] - 8003122: 681b ldr r3, [r3, #0] - 8003124: 78fa ldrb r2, [r7, #3] - 8003126: 4611 mov r1, r2 - 8003128: 4618 mov r0, r3 - 800312a: f003 fa26 bl 800657a - 800312e: 4603 mov r3, r0 - 8003130: f003 0301 and.w r3, r3, #1 - 8003134: 2b01 cmp r3, #1 - 8003136: d168 bne.n 800320a + 800317c: 687b ldr r3, [r7, #4] + 800317e: 681b ldr r3, [r3, #0] + 8003180: 78fa ldrb r2, [r7, #3] + 8003182: 4611 mov r1, r2 + 8003184: 4618 mov r0, r3 + 8003186: f003 fa26 bl 80065d6 + 800318a: 4603 mov r3, r0 + 800318c: f003 0301 and.w r3, r3, #1 + 8003190: 2b01 cmp r3, #1 + 8003192: d168 bne.n 8003266 { hhcd->hc[chnum].ErrCnt = 0U; - 8003138: 78fa ldrb r2, [r7, #3] - 800313a: 6879 ldr r1, [r7, #4] - 800313c: 4613 mov r3, r2 - 800313e: 011b lsls r3, r3, #4 - 8003140: 1a9b subs r3, r3, r2 - 8003142: 009b lsls r3, r3, #2 - 8003144: 440b add r3, r1 - 8003146: 3344 adds r3, #68 @ 0x44 - 8003148: 2200 movs r2, #0 - 800314a: 601a str r2, [r3, #0] + 8003194: 78fa ldrb r2, [r7, #3] + 8003196: 6879 ldr r1, [r7, #4] + 8003198: 4613 mov r3, r2 + 800319a: 011b lsls r3, r3, #4 + 800319c: 1a9b subs r3, r3, r2 + 800319e: 009b lsls r3, r3, #2 + 80031a0: 440b add r3, r1 + 80031a2: 3344 adds r3, #68 @ 0x44 + 80031a4: 2200 movs r2, #0 + 80031a6: 601a str r2, [r3, #0] /* transaction completed with NYET state, update do ping state */ if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) - 800314c: 687b ldr r3, [r7, #4] - 800314e: 681b ldr r3, [r3, #0] - 8003150: 78fa ldrb r2, [r7, #3] - 8003152: 4611 mov r1, r2 - 8003154: 4618 mov r0, r3 - 8003156: f003 fa10 bl 800657a - 800315a: 4603 mov r3, r0 - 800315c: f003 0340 and.w r3, r3, #64 @ 0x40 - 8003160: 2b40 cmp r3, #64 @ 0x40 - 8003162: d112 bne.n 800318a + 80031a8: 687b ldr r3, [r7, #4] + 80031aa: 681b ldr r3, [r3, #0] + 80031ac: 78fa ldrb r2, [r7, #3] + 80031ae: 4611 mov r1, r2 + 80031b0: 4618 mov r0, r3 + 80031b2: f003 fa10 bl 80065d6 + 80031b6: 4603 mov r3, r0 + 80031b8: f003 0340 and.w r3, r3, #64 @ 0x40 + 80031bc: 2b40 cmp r3, #64 @ 0x40 + 80031be: d112 bne.n 80031e6 { hhcd->hc[chnum].do_ping = 1U; - 8003164: 78fa ldrb r2, [r7, #3] - 8003166: 6879 ldr r1, [r7, #4] - 8003168: 4613 mov r3, r2 - 800316a: 011b lsls r3, r3, #4 - 800316c: 1a9b subs r3, r3, r2 - 800316e: 009b lsls r3, r3, #2 - 8003170: 440b add r3, r1 - 8003172: 3319 adds r3, #25 - 8003174: 2201 movs r2, #1 - 8003176: 701a strb r2, [r3, #0] + 80031c0: 78fa ldrb r2, [r7, #3] + 80031c2: 6879 ldr r1, [r7, #4] + 80031c4: 4613 mov r3, r2 + 80031c6: 011b lsls r3, r3, #4 + 80031c8: 1a9b subs r3, r3, r2 + 80031ca: 009b lsls r3, r3, #2 + 80031cc: 440b add r3, r1 + 80031ce: 3319 adds r3, #25 + 80031d0: 2201 movs r2, #1 + 80031d2: 701a strb r2, [r3, #0] __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NYET); - 8003178: 78fb ldrb r3, [r7, #3] - 800317a: 015a lsls r2, r3, #5 - 800317c: 693b ldr r3, [r7, #16] - 800317e: 4413 add r3, r2 - 8003180: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8003184: 461a mov r2, r3 - 8003186: 2340 movs r3, #64 @ 0x40 - 8003188: 6093 str r3, [r2, #8] - } - - if (hhcd->hc[chnum].do_csplit != 0U) - 800318a: 78fa ldrb r2, [r7, #3] - 800318c: 6879 ldr r1, [r7, #4] - 800318e: 4613 mov r3, r2 - 8003190: 011b lsls r3, r3, #4 - 8003192: 1a9b subs r3, r3, r2 - 8003194: 009b lsls r3, r3, #2 - 8003196: 440b add r3, r1 - 8003198: 331b adds r3, #27 - 800319a: 781b ldrb r3, [r3, #0] - 800319c: 2b00 cmp r3, #0 - 800319e: d019 beq.n 80031d4 - { - hhcd->hc[chnum].do_csplit = 0U; - 80031a0: 78fa ldrb r2, [r7, #3] - 80031a2: 6879 ldr r1, [r7, #4] - 80031a4: 4613 mov r3, r2 - 80031a6: 011b lsls r3, r3, #4 - 80031a8: 1a9b subs r3, r3, r2 - 80031aa: 009b lsls r3, r3, #2 - 80031ac: 440b add r3, r1 - 80031ae: 331b adds r3, #27 - 80031b0: 2200 movs r2, #0 - 80031b2: 701a strb r2, [r3, #0] - __HAL_HCD_CLEAR_HC_CSPLT(chnum); - 80031b4: 78fb ldrb r3, [r7, #3] - 80031b6: 015a lsls r2, r3, #5 - 80031b8: 693b ldr r3, [r7, #16] - 80031ba: 4413 add r3, r2 - 80031bc: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 80031c0: 685b ldr r3, [r3, #4] - 80031c2: 78fa ldrb r2, [r7, #3] - 80031c4: 0151 lsls r1, r2, #5 - 80031c6: 693a ldr r2, [r7, #16] - 80031c8: 440a add r2, r1 - 80031ca: f502 62a0 add.w r2, r2, #1280 @ 0x500 - 80031ce: f423 3380 bic.w r3, r3, #65536 @ 0x10000 - 80031d2: 6053 str r3, [r2, #4] - } - - __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_XFRC); 80031d4: 78fb ldrb r3, [r7, #3] 80031d6: 015a lsls r2, r3, #5 80031d8: 693b ldr r3, [r7, #16] 80031da: 4413 add r3, r2 80031dc: f503 63a0 add.w r3, r3, #1280 @ 0x500 80031e0: 461a mov r2, r3 - 80031e2: 2301 movs r3, #1 + 80031e2: 2340 movs r3, #64 @ 0x40 80031e4: 6093 str r3, [r2, #8] - hhcd->hc[chnum].state = HC_XFRC; + } + + if (hhcd->hc[chnum].do_csplit != 0U) 80031e6: 78fa ldrb r2, [r7, #3] 80031e8: 6879 ldr r1, [r7, #4] 80031ea: 4613 mov r3, r2 @@ -7925,349 +7913,340 @@ static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) 80031ee: 1a9b subs r3, r3, r2 80031f0: 009b lsls r3, r3, #2 80031f2: 440b add r3, r1 - 80031f4: 334d adds r3, #77 @ 0x4d - 80031f6: 2201 movs r2, #1 - 80031f8: 701a strb r2, [r3, #0] + 80031f4: 331b adds r3, #27 + 80031f6: 781b ldrb r3, [r3, #0] + 80031f8: 2b00 cmp r3, #0 + 80031fa: d019 beq.n 8003230 + { + hhcd->hc[chnum].do_csplit = 0U; + 80031fc: 78fa ldrb r2, [r7, #3] + 80031fe: 6879 ldr r1, [r7, #4] + 8003200: 4613 mov r3, r2 + 8003202: 011b lsls r3, r3, #4 + 8003204: 1a9b subs r3, r3, r2 + 8003206: 009b lsls r3, r3, #2 + 8003208: 440b add r3, r1 + 800320a: 331b adds r3, #27 + 800320c: 2200 movs r2, #0 + 800320e: 701a strb r2, [r3, #0] + __HAL_HCD_CLEAR_HC_CSPLT(chnum); + 8003210: 78fb ldrb r3, [r7, #3] + 8003212: 015a lsls r2, r3, #5 + 8003214: 693b ldr r3, [r7, #16] + 8003216: 4413 add r3, r2 + 8003218: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 800321c: 685b ldr r3, [r3, #4] + 800321e: 78fa ldrb r2, [r7, #3] + 8003220: 0151 lsls r1, r2, #5 + 8003222: 693a ldr r2, [r7, #16] + 8003224: 440a add r2, r1 + 8003226: f502 62a0 add.w r2, r2, #1280 @ 0x500 + 800322a: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 800322e: 6053 str r3, [r2, #4] + } + + __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_XFRC); + 8003230: 78fb ldrb r3, [r7, #3] + 8003232: 015a lsls r2, r3, #5 + 8003234: 693b ldr r3, [r7, #16] + 8003236: 4413 add r3, r2 + 8003238: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 800323c: 461a mov r2, r3 + 800323e: 2301 movs r3, #1 + 8003240: 6093 str r3, [r2, #8] + hhcd->hc[chnum].state = HC_XFRC; + 8003242: 78fa ldrb r2, [r7, #3] + 8003244: 6879 ldr r1, [r7, #4] + 8003246: 4613 mov r3, r2 + 8003248: 011b lsls r3, r3, #4 + 800324a: 1a9b subs r3, r3, r2 + 800324c: 009b lsls r3, r3, #2 + 800324e: 440b add r3, r1 + 8003250: 334d adds r3, #77 @ 0x4d + 8003252: 2201 movs r2, #1 + 8003254: 701a strb r2, [r3, #0] (void)USB_HC_Halt(hhcd->Instance, chnum); - 80031fa: 687b ldr r3, [r7, #4] - 80031fc: 681b ldr r3, [r3, #0] - 80031fe: 78fa ldrb r2, [r7, #3] - 8003200: 4611 mov r1, r2 - 8003202: 4618 mov r0, r3 - 8003204: f003 fa36 bl 8006674 - 8003208: e365 b.n 80038d6 + 8003256: 687b ldr r3, [r7, #4] + 8003258: 681b ldr r3, [r3, #0] + 800325a: 78fa ldrb r2, [r7, #3] + 800325c: 4611 mov r1, r2 + 800325e: 4618 mov r0, r3 + 8003260: f003 fa36 bl 80066d0 + 8003264: e365 b.n 8003932 } else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NYET)) - 800320a: 687b ldr r3, [r7, #4] - 800320c: 681b ldr r3, [r3, #0] - 800320e: 78fa ldrb r2, [r7, #3] - 8003210: 4611 mov r1, r2 - 8003212: 4618 mov r0, r3 - 8003214: f003 f9b1 bl 800657a - 8003218: 4603 mov r3, r0 - 800321a: f003 0340 and.w r3, r3, #64 @ 0x40 - 800321e: 2b40 cmp r3, #64 @ 0x40 - 8003220: d139 bne.n 8003296 + 8003266: 687b ldr r3, [r7, #4] + 8003268: 681b ldr r3, [r3, #0] + 800326a: 78fa ldrb r2, [r7, #3] + 800326c: 4611 mov r1, r2 + 800326e: 4618 mov r0, r3 + 8003270: f003 f9b1 bl 80065d6 + 8003274: 4603 mov r3, r0 + 8003276: f003 0340 and.w r3, r3, #64 @ 0x40 + 800327a: 2b40 cmp r3, #64 @ 0x40 + 800327c: d139 bne.n 80032f2 { hhcd->hc[chnum].state = HC_NYET; - 8003222: 78fa ldrb r2, [r7, #3] - 8003224: 6879 ldr r1, [r7, #4] - 8003226: 4613 mov r3, r2 - 8003228: 011b lsls r3, r3, #4 - 800322a: 1a9b subs r3, r3, r2 - 800322c: 009b lsls r3, r3, #2 - 800322e: 440b add r3, r1 - 8003230: 334d adds r3, #77 @ 0x4d - 8003232: 2205 movs r2, #5 - 8003234: 701a strb r2, [r3, #0] + 800327e: 78fa ldrb r2, [r7, #3] + 8003280: 6879 ldr r1, [r7, #4] + 8003282: 4613 mov r3, r2 + 8003284: 011b lsls r3, r3, #4 + 8003286: 1a9b subs r3, r3, r2 + 8003288: 009b lsls r3, r3, #2 + 800328a: 440b add r3, r1 + 800328c: 334d adds r3, #77 @ 0x4d + 800328e: 2205 movs r2, #5 + 8003290: 701a strb r2, [r3, #0] if (hhcd->hc[chnum].do_ssplit == 0U) - 8003236: 78fa ldrb r2, [r7, #3] - 8003238: 6879 ldr r1, [r7, #4] - 800323a: 4613 mov r3, r2 - 800323c: 011b lsls r3, r3, #4 - 800323e: 1a9b subs r3, r3, r2 - 8003240: 009b lsls r3, r3, #2 - 8003242: 440b add r3, r1 - 8003244: 331a adds r3, #26 - 8003246: 781b ldrb r3, [r3, #0] - 8003248: 2b00 cmp r3, #0 - 800324a: d109 bne.n 8003260 + 8003292: 78fa ldrb r2, [r7, #3] + 8003294: 6879 ldr r1, [r7, #4] + 8003296: 4613 mov r3, r2 + 8003298: 011b lsls r3, r3, #4 + 800329a: 1a9b subs r3, r3, r2 + 800329c: 009b lsls r3, r3, #2 + 800329e: 440b add r3, r1 + 80032a0: 331a adds r3, #26 + 80032a2: 781b ldrb r3, [r3, #0] + 80032a4: 2b00 cmp r3, #0 + 80032a6: d109 bne.n 80032bc { hhcd->hc[chnum].do_ping = 1U; - 800324c: 78fa ldrb r2, [r7, #3] - 800324e: 6879 ldr r1, [r7, #4] - 8003250: 4613 mov r3, r2 - 8003252: 011b lsls r3, r3, #4 - 8003254: 1a9b subs r3, r3, r2 - 8003256: 009b lsls r3, r3, #2 - 8003258: 440b add r3, r1 - 800325a: 3319 adds r3, #25 - 800325c: 2201 movs r2, #1 - 800325e: 701a strb r2, [r3, #0] + 80032a8: 78fa ldrb r2, [r7, #3] + 80032aa: 6879 ldr r1, [r7, #4] + 80032ac: 4613 mov r3, r2 + 80032ae: 011b lsls r3, r3, #4 + 80032b0: 1a9b subs r3, r3, r2 + 80032b2: 009b lsls r3, r3, #2 + 80032b4: 440b add r3, r1 + 80032b6: 3319 adds r3, #25 + 80032b8: 2201 movs r2, #1 + 80032ba: 701a strb r2, [r3, #0] } hhcd->hc[chnum].ErrCnt = 0U; - 8003260: 78fa ldrb r2, [r7, #3] - 8003262: 6879 ldr r1, [r7, #4] - 8003264: 4613 mov r3, r2 - 8003266: 011b lsls r3, r3, #4 - 8003268: 1a9b subs r3, r3, r2 - 800326a: 009b lsls r3, r3, #2 - 800326c: 440b add r3, r1 - 800326e: 3344 adds r3, #68 @ 0x44 - 8003270: 2200 movs r2, #0 - 8003272: 601a str r2, [r3, #0] + 80032bc: 78fa ldrb r2, [r7, #3] + 80032be: 6879 ldr r1, [r7, #4] + 80032c0: 4613 mov r3, r2 + 80032c2: 011b lsls r3, r3, #4 + 80032c4: 1a9b subs r3, r3, r2 + 80032c6: 009b lsls r3, r3, #2 + 80032c8: 440b add r3, r1 + 80032ca: 3344 adds r3, #68 @ 0x44 + 80032cc: 2200 movs r2, #0 + 80032ce: 601a str r2, [r3, #0] (void)USB_HC_Halt(hhcd->Instance, chnum); - 8003274: 687b ldr r3, [r7, #4] - 8003276: 681b ldr r3, [r3, #0] - 8003278: 78fa ldrb r2, [r7, #3] - 800327a: 4611 mov r1, r2 - 800327c: 4618 mov r0, r3 - 800327e: f003 f9f9 bl 8006674 + 80032d0: 687b ldr r3, [r7, #4] + 80032d2: 681b ldr r3, [r3, #0] + 80032d4: 78fa ldrb r2, [r7, #3] + 80032d6: 4611 mov r1, r2 + 80032d8: 4618 mov r0, r3 + 80032da: f003 f9f9 bl 80066d0 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NYET); - 8003282: 78fb ldrb r3, [r7, #3] - 8003284: 015a lsls r2, r3, #5 - 8003286: 693b ldr r3, [r7, #16] - 8003288: 4413 add r3, r2 - 800328a: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 800328e: 461a mov r2, r3 - 8003290: 2340 movs r3, #64 @ 0x40 - 8003292: 6093 str r3, [r2, #8] - 8003294: e31f b.n 80038d6 + 80032de: 78fb ldrb r3, [r7, #3] + 80032e0: 015a lsls r2, r3, #5 + 80032e2: 693b ldr r3, [r7, #16] + 80032e4: 4413 add r3, r2 + 80032e6: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80032ea: 461a mov r2, r3 + 80032ec: 2340 movs r3, #64 @ 0x40 + 80032ee: 6093 str r3, [r2, #8] + 80032f0: e31f b.n 8003932 } else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_STALL)) - 8003296: 687b ldr r3, [r7, #4] - 8003298: 681b ldr r3, [r3, #0] - 800329a: 78fa ldrb r2, [r7, #3] - 800329c: 4611 mov r1, r2 - 800329e: 4618 mov r0, r3 - 80032a0: f003 f96b bl 800657a - 80032a4: 4603 mov r3, r0 - 80032a6: f003 0308 and.w r3, r3, #8 - 80032aa: 2b08 cmp r3, #8 - 80032ac: d11a bne.n 80032e4 + 80032f2: 687b ldr r3, [r7, #4] + 80032f4: 681b ldr r3, [r3, #0] + 80032f6: 78fa ldrb r2, [r7, #3] + 80032f8: 4611 mov r1, r2 + 80032fa: 4618 mov r0, r3 + 80032fc: f003 f96b bl 80065d6 + 8003300: 4603 mov r3, r0 + 8003302: f003 0308 and.w r3, r3, #8 + 8003306: 2b08 cmp r3, #8 + 8003308: d11a bne.n 8003340 { __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_STALL); - 80032ae: 78fb ldrb r3, [r7, #3] - 80032b0: 015a lsls r2, r3, #5 - 80032b2: 693b ldr r3, [r7, #16] - 80032b4: 4413 add r3, r2 - 80032b6: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 80032ba: 461a mov r2, r3 - 80032bc: 2308 movs r3, #8 - 80032be: 6093 str r3, [r2, #8] + 800330a: 78fb ldrb r3, [r7, #3] + 800330c: 015a lsls r2, r3, #5 + 800330e: 693b ldr r3, [r7, #16] + 8003310: 4413 add r3, r2 + 8003312: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8003316: 461a mov r2, r3 + 8003318: 2308 movs r3, #8 + 800331a: 6093 str r3, [r2, #8] hhcd->hc[chnum].state = HC_STALL; - 80032c0: 78fa ldrb r2, [r7, #3] - 80032c2: 6879 ldr r1, [r7, #4] - 80032c4: 4613 mov r3, r2 - 80032c6: 011b lsls r3, r3, #4 - 80032c8: 1a9b subs r3, r3, r2 - 80032ca: 009b lsls r3, r3, #2 - 80032cc: 440b add r3, r1 - 80032ce: 334d adds r3, #77 @ 0x4d - 80032d0: 2206 movs r2, #6 - 80032d2: 701a strb r2, [r3, #0] + 800331c: 78fa ldrb r2, [r7, #3] + 800331e: 6879 ldr r1, [r7, #4] + 8003320: 4613 mov r3, r2 + 8003322: 011b lsls r3, r3, #4 + 8003324: 1a9b subs r3, r3, r2 + 8003326: 009b lsls r3, r3, #2 + 8003328: 440b add r3, r1 + 800332a: 334d adds r3, #77 @ 0x4d + 800332c: 2206 movs r2, #6 + 800332e: 701a strb r2, [r3, #0] (void)USB_HC_Halt(hhcd->Instance, chnum); - 80032d4: 687b ldr r3, [r7, #4] - 80032d6: 681b ldr r3, [r3, #0] - 80032d8: 78fa ldrb r2, [r7, #3] - 80032da: 4611 mov r1, r2 - 80032dc: 4618 mov r0, r3 - 80032de: f003 f9c9 bl 8006674 - 80032e2: e2f8 b.n 80038d6 + 8003330: 687b ldr r3, [r7, #4] + 8003332: 681b ldr r3, [r3, #0] + 8003334: 78fa ldrb r2, [r7, #3] + 8003336: 4611 mov r1, r2 + 8003338: 4618 mov r0, r3 + 800333a: f003 f9c9 bl 80066d0 + 800333e: e2f8 b.n 8003932 } else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_NAK)) - 80032e4: 687b ldr r3, [r7, #4] - 80032e6: 681b ldr r3, [r3, #0] - 80032e8: 78fa ldrb r2, [r7, #3] - 80032ea: 4611 mov r1, r2 - 80032ec: 4618 mov r0, r3 - 80032ee: f003 f944 bl 800657a - 80032f2: 4603 mov r3, r0 - 80032f4: f003 0310 and.w r3, r3, #16 - 80032f8: 2b10 cmp r3, #16 - 80032fa: d144 bne.n 8003386 + 8003340: 687b ldr r3, [r7, #4] + 8003342: 681b ldr r3, [r3, #0] + 8003344: 78fa ldrb r2, [r7, #3] + 8003346: 4611 mov r1, r2 + 8003348: 4618 mov r0, r3 + 800334a: f003 f944 bl 80065d6 + 800334e: 4603 mov r3, r0 + 8003350: f003 0310 and.w r3, r3, #16 + 8003354: 2b10 cmp r3, #16 + 8003356: d144 bne.n 80033e2 { hhcd->hc[chnum].ErrCnt = 0U; - 80032fc: 78fa ldrb r2, [r7, #3] - 80032fe: 6879 ldr r1, [r7, #4] - 8003300: 4613 mov r3, r2 - 8003302: 011b lsls r3, r3, #4 - 8003304: 1a9b subs r3, r3, r2 - 8003306: 009b lsls r3, r3, #2 - 8003308: 440b add r3, r1 - 800330a: 3344 adds r3, #68 @ 0x44 - 800330c: 2200 movs r2, #0 - 800330e: 601a str r2, [r3, #0] + 8003358: 78fa ldrb r2, [r7, #3] + 800335a: 6879 ldr r1, [r7, #4] + 800335c: 4613 mov r3, r2 + 800335e: 011b lsls r3, r3, #4 + 8003360: 1a9b subs r3, r3, r2 + 8003362: 009b lsls r3, r3, #2 + 8003364: 440b add r3, r1 + 8003366: 3344 adds r3, #68 @ 0x44 + 8003368: 2200 movs r2, #0 + 800336a: 601a str r2, [r3, #0] hhcd->hc[chnum].state = HC_NAK; - 8003310: 78fa ldrb r2, [r7, #3] - 8003312: 6879 ldr r1, [r7, #4] - 8003314: 4613 mov r3, r2 - 8003316: 011b lsls r3, r3, #4 - 8003318: 1a9b subs r3, r3, r2 - 800331a: 009b lsls r3, r3, #2 - 800331c: 440b add r3, r1 - 800331e: 334d adds r3, #77 @ 0x4d - 8003320: 2204 movs r2, #4 - 8003322: 701a strb r2, [r3, #0] + 800336c: 78fa ldrb r2, [r7, #3] + 800336e: 6879 ldr r1, [r7, #4] + 8003370: 4613 mov r3, r2 + 8003372: 011b lsls r3, r3, #4 + 8003374: 1a9b subs r3, r3, r2 + 8003376: 009b lsls r3, r3, #2 + 8003378: 440b add r3, r1 + 800337a: 334d adds r3, #77 @ 0x4d + 800337c: 2204 movs r2, #4 + 800337e: 701a strb r2, [r3, #0] if (hhcd->hc[chnum].do_ping == 0U) - 8003324: 78fa ldrb r2, [r7, #3] - 8003326: 6879 ldr r1, [r7, #4] - 8003328: 4613 mov r3, r2 - 800332a: 011b lsls r3, r3, #4 - 800332c: 1a9b subs r3, r3, r2 - 800332e: 009b lsls r3, r3, #2 - 8003330: 440b add r3, r1 - 8003332: 3319 adds r3, #25 - 8003334: 781b ldrb r3, [r3, #0] - 8003336: 2b00 cmp r3, #0 - 8003338: d114 bne.n 8003364 + 8003380: 78fa ldrb r2, [r7, #3] + 8003382: 6879 ldr r1, [r7, #4] + 8003384: 4613 mov r3, r2 + 8003386: 011b lsls r3, r3, #4 + 8003388: 1a9b subs r3, r3, r2 + 800338a: 009b lsls r3, r3, #2 + 800338c: 440b add r3, r1 + 800338e: 3319 adds r3, #25 + 8003390: 781b ldrb r3, [r3, #0] + 8003392: 2b00 cmp r3, #0 + 8003394: d114 bne.n 80033c0 { if (hhcd->hc[chnum].speed == HCD_DEVICE_SPEED_HIGH) - 800333a: 78fa ldrb r2, [r7, #3] - 800333c: 6879 ldr r1, [r7, #4] - 800333e: 4613 mov r3, r2 - 8003340: 011b lsls r3, r3, #4 - 8003342: 1a9b subs r3, r3, r2 - 8003344: 009b lsls r3, r3, #2 - 8003346: 440b add r3, r1 - 8003348: 3318 adds r3, #24 - 800334a: 781b ldrb r3, [r3, #0] - 800334c: 2b00 cmp r3, #0 - 800334e: d109 bne.n 8003364 + 8003396: 78fa ldrb r2, [r7, #3] + 8003398: 6879 ldr r1, [r7, #4] + 800339a: 4613 mov r3, r2 + 800339c: 011b lsls r3, r3, #4 + 800339e: 1a9b subs r3, r3, r2 + 80033a0: 009b lsls r3, r3, #2 + 80033a2: 440b add r3, r1 + 80033a4: 3318 adds r3, #24 + 80033a6: 781b ldrb r3, [r3, #0] + 80033a8: 2b00 cmp r3, #0 + 80033aa: d109 bne.n 80033c0 { hhcd->hc[chnum].do_ping = 1U; - 8003350: 78fa ldrb r2, [r7, #3] - 8003352: 6879 ldr r1, [r7, #4] - 8003354: 4613 mov r3, r2 - 8003356: 011b lsls r3, r3, #4 - 8003358: 1a9b subs r3, r3, r2 - 800335a: 009b lsls r3, r3, #2 - 800335c: 440b add r3, r1 - 800335e: 3319 adds r3, #25 - 8003360: 2201 movs r2, #1 - 8003362: 701a strb r2, [r3, #0] + 80033ac: 78fa ldrb r2, [r7, #3] + 80033ae: 6879 ldr r1, [r7, #4] + 80033b0: 4613 mov r3, r2 + 80033b2: 011b lsls r3, r3, #4 + 80033b4: 1a9b subs r3, r3, r2 + 80033b6: 009b lsls r3, r3, #2 + 80033b8: 440b add r3, r1 + 80033ba: 3319 adds r3, #25 + 80033bc: 2201 movs r2, #1 + 80033be: 701a strb r2, [r3, #0] } } (void)USB_HC_Halt(hhcd->Instance, chnum); - 8003364: 687b ldr r3, [r7, #4] - 8003366: 681b ldr r3, [r3, #0] - 8003368: 78fa ldrb r2, [r7, #3] - 800336a: 4611 mov r1, r2 - 800336c: 4618 mov r0, r3 - 800336e: f003 f981 bl 8006674 + 80033c0: 687b ldr r3, [r7, #4] + 80033c2: 681b ldr r3, [r3, #0] + 80033c4: 78fa ldrb r2, [r7, #3] + 80033c6: 4611 mov r1, r2 + 80033c8: 4618 mov r0, r3 + 80033ca: f003 f981 bl 80066d0 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_NAK); - 8003372: 78fb ldrb r3, [r7, #3] - 8003374: 015a lsls r2, r3, #5 - 8003376: 693b ldr r3, [r7, #16] - 8003378: 4413 add r3, r2 - 800337a: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 800337e: 461a mov r2, r3 - 8003380: 2310 movs r3, #16 - 8003382: 6093 str r3, [r2, #8] - 8003384: e2a7 b.n 80038d6 + 80033ce: 78fb ldrb r3, [r7, #3] + 80033d0: 015a lsls r2, r3, #5 + 80033d2: 693b ldr r3, [r7, #16] + 80033d4: 4413 add r3, r2 + 80033d6: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80033da: 461a mov r2, r3 + 80033dc: 2310 movs r3, #16 + 80033de: 6093 str r3, [r2, #8] + 80033e0: e2a7 b.n 8003932 } else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_TXERR)) - 8003386: 687b ldr r3, [r7, #4] - 8003388: 681b ldr r3, [r3, #0] - 800338a: 78fa ldrb r2, [r7, #3] - 800338c: 4611 mov r1, r2 - 800338e: 4618 mov r0, r3 - 8003390: f003 f8f3 bl 800657a - 8003394: 4603 mov r3, r0 - 8003396: f003 0380 and.w r3, r3, #128 @ 0x80 - 800339a: 2b80 cmp r3, #128 @ 0x80 - 800339c: f040 8083 bne.w 80034a6 + 80033e2: 687b ldr r3, [r7, #4] + 80033e4: 681b ldr r3, [r3, #0] + 80033e6: 78fa ldrb r2, [r7, #3] + 80033e8: 4611 mov r1, r2 + 80033ea: 4618 mov r0, r3 + 80033ec: f003 f8f3 bl 80065d6 + 80033f0: 4603 mov r3, r0 + 80033f2: f003 0380 and.w r3, r3, #128 @ 0x80 + 80033f6: 2b80 cmp r3, #128 @ 0x80 + 80033f8: f040 8083 bne.w 8003502 { if (hhcd->Init.dma_enable == 0U) - 80033a0: 687b ldr r3, [r7, #4] - 80033a2: 799b ldrb r3, [r3, #6] - 80033a4: 2b00 cmp r3, #0 - 80033a6: d111 bne.n 80033cc + 80033fc: 687b ldr r3, [r7, #4] + 80033fe: 799b ldrb r3, [r3, #6] + 8003400: 2b00 cmp r3, #0 + 8003402: d111 bne.n 8003428 { hhcd->hc[chnum].state = HC_XACTERR; - 80033a8: 78fa ldrb r2, [r7, #3] - 80033aa: 6879 ldr r1, [r7, #4] - 80033ac: 4613 mov r3, r2 - 80033ae: 011b lsls r3, r3, #4 - 80033b0: 1a9b subs r3, r3, r2 - 80033b2: 009b lsls r3, r3, #2 - 80033b4: 440b add r3, r1 - 80033b6: 334d adds r3, #77 @ 0x4d - 80033b8: 2207 movs r2, #7 - 80033ba: 701a strb r2, [r3, #0] + 8003404: 78fa ldrb r2, [r7, #3] + 8003406: 6879 ldr r1, [r7, #4] + 8003408: 4613 mov r3, r2 + 800340a: 011b lsls r3, r3, #4 + 800340c: 1a9b subs r3, r3, r2 + 800340e: 009b lsls r3, r3, #2 + 8003410: 440b add r3, r1 + 8003412: 334d adds r3, #77 @ 0x4d + 8003414: 2207 movs r2, #7 + 8003416: 701a strb r2, [r3, #0] (void)USB_HC_Halt(hhcd->Instance, chnum); - 80033bc: 687b ldr r3, [r7, #4] - 80033be: 681b ldr r3, [r3, #0] - 80033c0: 78fa ldrb r2, [r7, #3] - 80033c2: 4611 mov r1, r2 - 80033c4: 4618 mov r0, r3 - 80033c6: f003 f955 bl 8006674 - 80033ca: e062 b.n 8003492 + 8003418: 687b ldr r3, [r7, #4] + 800341a: 681b ldr r3, [r3, #0] + 800341c: 78fa ldrb r2, [r7, #3] + 800341e: 4611 mov r1, r2 + 8003420: 4618 mov r0, r3 + 8003422: f003 f955 bl 80066d0 + 8003426: e062 b.n 80034ee } else { hhcd->hc[chnum].ErrCnt++; - 80033cc: 78fa ldrb r2, [r7, #3] - 80033ce: 6879 ldr r1, [r7, #4] - 80033d0: 4613 mov r3, r2 - 80033d2: 011b lsls r3, r3, #4 - 80033d4: 1a9b subs r3, r3, r2 - 80033d6: 009b lsls r3, r3, #2 - 80033d8: 440b add r3, r1 - 80033da: 3344 adds r3, #68 @ 0x44 - 80033dc: 681b ldr r3, [r3, #0] - 80033de: 1c59 adds r1, r3, #1 - 80033e0: 6878 ldr r0, [r7, #4] - 80033e2: 4613 mov r3, r2 - 80033e4: 011b lsls r3, r3, #4 - 80033e6: 1a9b subs r3, r3, r2 - 80033e8: 009b lsls r3, r3, #2 - 80033ea: 4403 add r3, r0 - 80033ec: 3344 adds r3, #68 @ 0x44 - 80033ee: 6019 str r1, [r3, #0] + 8003428: 78fa ldrb r2, [r7, #3] + 800342a: 6879 ldr r1, [r7, #4] + 800342c: 4613 mov r3, r2 + 800342e: 011b lsls r3, r3, #4 + 8003430: 1a9b subs r3, r3, r2 + 8003432: 009b lsls r3, r3, #2 + 8003434: 440b add r3, r1 + 8003436: 3344 adds r3, #68 @ 0x44 + 8003438: 681b ldr r3, [r3, #0] + 800343a: 1c59 adds r1, r3, #1 + 800343c: 6878 ldr r0, [r7, #4] + 800343e: 4613 mov r3, r2 + 8003440: 011b lsls r3, r3, #4 + 8003442: 1a9b subs r3, r3, r2 + 8003444: 009b lsls r3, r3, #2 + 8003446: 4403 add r3, r0 + 8003448: 3344 adds r3, #68 @ 0x44 + 800344a: 6019 str r1, [r3, #0] if (hhcd->hc[chnum].ErrCnt > 2U) - 80033f0: 78fa ldrb r2, [r7, #3] - 80033f2: 6879 ldr r1, [r7, #4] - 80033f4: 4613 mov r3, r2 - 80033f6: 011b lsls r3, r3, #4 - 80033f8: 1a9b subs r3, r3, r2 - 80033fa: 009b lsls r3, r3, #2 - 80033fc: 440b add r3, r1 - 80033fe: 3344 adds r3, #68 @ 0x44 - 8003400: 681b ldr r3, [r3, #0] - 8003402: 2b02 cmp r3, #2 - 8003404: d922 bls.n 800344c - { - hhcd->hc[chnum].ErrCnt = 0U; - 8003406: 78fa ldrb r2, [r7, #3] - 8003408: 6879 ldr r1, [r7, #4] - 800340a: 4613 mov r3, r2 - 800340c: 011b lsls r3, r3, #4 - 800340e: 1a9b subs r3, r3, r2 - 8003410: 009b lsls r3, r3, #2 - 8003412: 440b add r3, r1 - 8003414: 3344 adds r3, #68 @ 0x44 - 8003416: 2200 movs r2, #0 - 8003418: 601a str r2, [r3, #0] - hhcd->hc[chnum].urb_state = URB_ERROR; - 800341a: 78fa ldrb r2, [r7, #3] - 800341c: 6879 ldr r1, [r7, #4] - 800341e: 4613 mov r3, r2 - 8003420: 011b lsls r3, r3, #4 - 8003422: 1a9b subs r3, r3, r2 - 8003424: 009b lsls r3, r3, #2 - 8003426: 440b add r3, r1 - 8003428: 334c adds r3, #76 @ 0x4c - 800342a: 2204 movs r2, #4 - 800342c: 701a strb r2, [r3, #0] - -#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) - hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); -#else - HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); - 800342e: 78fa ldrb r2, [r7, #3] - 8003430: 6879 ldr r1, [r7, #4] - 8003432: 4613 mov r3, r2 - 8003434: 011b lsls r3, r3, #4 - 8003436: 1a9b subs r3, r3, r2 - 8003438: 009b lsls r3, r3, #2 - 800343a: 440b add r3, r1 - 800343c: 334c adds r3, #76 @ 0x4c - 800343e: 781a ldrb r2, [r3, #0] - 8003440: 78fb ldrb r3, [r7, #3] - 8003442: 4619 mov r1, r3 - 8003444: 6878 ldr r0, [r7, #4] - 8003446: f004 fcad bl 8007da4 - 800344a: e022 b.n 8003492 -#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ - } - else - { - hhcd->hc[chnum].urb_state = URB_NOTREADY; 800344c: 78fa ldrb r2, [r7, #3] 800344e: 6879 ldr r1, [r7, #4] 8003450: 4613 mov r3, r2 @@ -8275,2605 +8254,2591 @@ static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) 8003454: 1a9b subs r3, r3, r2 8003456: 009b lsls r3, r3, #2 8003458: 440b add r3, r1 - 800345a: 334c adds r3, #76 @ 0x4c - 800345c: 2202 movs r2, #2 - 800345e: 701a strb r2, [r3, #0] + 800345a: 3344 adds r3, #68 @ 0x44 + 800345c: 681b ldr r3, [r3, #0] + 800345e: 2b02 cmp r3, #2 + 8003460: d922 bls.n 80034a8 + { + hhcd->hc[chnum].ErrCnt = 0U; + 8003462: 78fa ldrb r2, [r7, #3] + 8003464: 6879 ldr r1, [r7, #4] + 8003466: 4613 mov r3, r2 + 8003468: 011b lsls r3, r3, #4 + 800346a: 1a9b subs r3, r3, r2 + 800346c: 009b lsls r3, r3, #2 + 800346e: 440b add r3, r1 + 8003470: 3344 adds r3, #68 @ 0x44 + 8003472: 2200 movs r2, #0 + 8003474: 601a str r2, [r3, #0] + hhcd->hc[chnum].urb_state = URB_ERROR; + 8003476: 78fa ldrb r2, [r7, #3] + 8003478: 6879 ldr r1, [r7, #4] + 800347a: 4613 mov r3, r2 + 800347c: 011b lsls r3, r3, #4 + 800347e: 1a9b subs r3, r3, r2 + 8003480: 009b lsls r3, r3, #2 + 8003482: 440b add r3, r1 + 8003484: 334c adds r3, #76 @ 0x4c + 8003486: 2204 movs r2, #4 + 8003488: 701a strb r2, [r3, #0] + +#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) + hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); +#else + HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); + 800348a: 78fa ldrb r2, [r7, #3] + 800348c: 6879 ldr r1, [r7, #4] + 800348e: 4613 mov r3, r2 + 8003490: 011b lsls r3, r3, #4 + 8003492: 1a9b subs r3, r3, r2 + 8003494: 009b lsls r3, r3, #2 + 8003496: 440b add r3, r1 + 8003498: 334c adds r3, #76 @ 0x4c + 800349a: 781a ldrb r2, [r3, #0] + 800349c: 78fb ldrb r3, [r7, #3] + 800349e: 4619 mov r1, r3 + 80034a0: 6878 ldr r0, [r7, #4] + 80034a2: f004 fca7 bl 8007df4 + 80034a6: e022 b.n 80034ee +#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ + } + else + { + hhcd->hc[chnum].urb_state = URB_NOTREADY; + 80034a8: 78fa ldrb r2, [r7, #3] + 80034aa: 6879 ldr r1, [r7, #4] + 80034ac: 4613 mov r3, r2 + 80034ae: 011b lsls r3, r3, #4 + 80034b0: 1a9b subs r3, r3, r2 + 80034b2: 009b lsls r3, r3, #2 + 80034b4: 440b add r3, r1 + 80034b6: 334c adds r3, #76 @ 0x4c + 80034b8: 2202 movs r2, #2 + 80034ba: 701a strb r2, [r3, #0] /* Re-activate the channel */ tmpreg = USBx_HC(chnum)->HCCHAR; - 8003460: 78fb ldrb r3, [r7, #3] - 8003462: 015a lsls r2, r3, #5 - 8003464: 693b ldr r3, [r7, #16] - 8003466: 4413 add r3, r2 - 8003468: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 800346c: 681b ldr r3, [r3, #0] - 800346e: 60fb str r3, [r7, #12] + 80034bc: 78fb ldrb r3, [r7, #3] + 80034be: 015a lsls r2, r3, #5 + 80034c0: 693b ldr r3, [r7, #16] + 80034c2: 4413 add r3, r2 + 80034c4: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80034c8: 681b ldr r3, [r3, #0] + 80034ca: 60fb str r3, [r7, #12] tmpreg &= ~USB_OTG_HCCHAR_CHDIS; - 8003470: 68fb ldr r3, [r7, #12] - 8003472: f023 4380 bic.w r3, r3, #1073741824 @ 0x40000000 - 8003476: 60fb str r3, [r7, #12] + 80034cc: 68fb ldr r3, [r7, #12] + 80034ce: f023 4380 bic.w r3, r3, #1073741824 @ 0x40000000 + 80034d2: 60fb str r3, [r7, #12] tmpreg |= USB_OTG_HCCHAR_CHENA; - 8003478: 68fb ldr r3, [r7, #12] - 800347a: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 - 800347e: 60fb str r3, [r7, #12] + 80034d4: 68fb ldr r3, [r7, #12] + 80034d6: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 80034da: 60fb str r3, [r7, #12] USBx_HC(chnum)->HCCHAR = tmpreg; - 8003480: 78fb ldrb r3, [r7, #3] - 8003482: 015a lsls r2, r3, #5 - 8003484: 693b ldr r3, [r7, #16] - 8003486: 4413 add r3, r2 - 8003488: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 800348c: 461a mov r2, r3 - 800348e: 68fb ldr r3, [r7, #12] - 8003490: 6013 str r3, [r2, #0] + 80034dc: 78fb ldrb r3, [r7, #3] + 80034de: 015a lsls r2, r3, #5 + 80034e0: 693b ldr r3, [r7, #16] + 80034e2: 4413 add r3, r2 + 80034e4: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80034e8: 461a mov r2, r3 + 80034ea: 68fb ldr r3, [r7, #12] + 80034ec: 6013 str r3, [r2, #0] } } __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_TXERR); - 8003492: 78fb ldrb r3, [r7, #3] - 8003494: 015a lsls r2, r3, #5 - 8003496: 693b ldr r3, [r7, #16] - 8003498: 4413 add r3, r2 - 800349a: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 800349e: 461a mov r2, r3 - 80034a0: 2380 movs r3, #128 @ 0x80 - 80034a2: 6093 str r3, [r2, #8] - 80034a4: e217 b.n 80038d6 + 80034ee: 78fb ldrb r3, [r7, #3] + 80034f0: 015a lsls r2, r3, #5 + 80034f2: 693b ldr r3, [r7, #16] + 80034f4: 4413 add r3, r2 + 80034f6: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80034fa: 461a mov r2, r3 + 80034fc: 2380 movs r3, #128 @ 0x80 + 80034fe: 6093 str r3, [r2, #8] + 8003500: e217 b.n 8003932 } else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_DTERR)) - 80034a6: 687b ldr r3, [r7, #4] - 80034a8: 681b ldr r3, [r3, #0] - 80034aa: 78fa ldrb r2, [r7, #3] - 80034ac: 4611 mov r1, r2 - 80034ae: 4618 mov r0, r3 - 80034b0: f003 f863 bl 800657a - 80034b4: 4603 mov r3, r0 - 80034b6: f403 6380 and.w r3, r3, #1024 @ 0x400 - 80034ba: f5b3 6f80 cmp.w r3, #1024 @ 0x400 - 80034be: d11b bne.n 80034f8 + 8003502: 687b ldr r3, [r7, #4] + 8003504: 681b ldr r3, [r3, #0] + 8003506: 78fa ldrb r2, [r7, #3] + 8003508: 4611 mov r1, r2 + 800350a: 4618 mov r0, r3 + 800350c: f003 f863 bl 80065d6 + 8003510: 4603 mov r3, r0 + 8003512: f403 6380 and.w r3, r3, #1024 @ 0x400 + 8003516: f5b3 6f80 cmp.w r3, #1024 @ 0x400 + 800351a: d11b bne.n 8003554 { hhcd->hc[chnum].state = HC_DATATGLERR; - 80034c0: 78fa ldrb r2, [r7, #3] - 80034c2: 6879 ldr r1, [r7, #4] - 80034c4: 4613 mov r3, r2 - 80034c6: 011b lsls r3, r3, #4 - 80034c8: 1a9b subs r3, r3, r2 - 80034ca: 009b lsls r3, r3, #2 - 80034cc: 440b add r3, r1 - 80034ce: 334d adds r3, #77 @ 0x4d - 80034d0: 2209 movs r2, #9 - 80034d2: 701a strb r2, [r3, #0] + 800351c: 78fa ldrb r2, [r7, #3] + 800351e: 6879 ldr r1, [r7, #4] + 8003520: 4613 mov r3, r2 + 8003522: 011b lsls r3, r3, #4 + 8003524: 1a9b subs r3, r3, r2 + 8003526: 009b lsls r3, r3, #2 + 8003528: 440b add r3, r1 + 800352a: 334d adds r3, #77 @ 0x4d + 800352c: 2209 movs r2, #9 + 800352e: 701a strb r2, [r3, #0] (void)USB_HC_Halt(hhcd->Instance, chnum); - 80034d4: 687b ldr r3, [r7, #4] - 80034d6: 681b ldr r3, [r3, #0] - 80034d8: 78fa ldrb r2, [r7, #3] - 80034da: 4611 mov r1, r2 - 80034dc: 4618 mov r0, r3 - 80034de: f003 f8c9 bl 8006674 + 8003530: 687b ldr r3, [r7, #4] + 8003532: 681b ldr r3, [r3, #0] + 8003534: 78fa ldrb r2, [r7, #3] + 8003536: 4611 mov r1, r2 + 8003538: 4618 mov r0, r3 + 800353a: f003 f8c9 bl 80066d0 __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_DTERR); - 80034e2: 78fb ldrb r3, [r7, #3] - 80034e4: 015a lsls r2, r3, #5 - 80034e6: 693b ldr r3, [r7, #16] - 80034e8: 4413 add r3, r2 - 80034ea: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 80034ee: 461a mov r2, r3 - 80034f0: f44f 6380 mov.w r3, #1024 @ 0x400 - 80034f4: 6093 str r3, [r2, #8] - 80034f6: e1ee b.n 80038d6 + 800353e: 78fb ldrb r3, [r7, #3] + 8003540: 015a lsls r2, r3, #5 + 8003542: 693b ldr r3, [r7, #16] + 8003544: 4413 add r3, r2 + 8003546: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 800354a: 461a mov r2, r3 + 800354c: f44f 6380 mov.w r3, #1024 @ 0x400 + 8003550: 6093 str r3, [r2, #8] + 8003552: e1ee b.n 8003932 } else if (__HAL_HCD_GET_CH_FLAG(hhcd, chnum, USB_OTG_HCINT_CHH)) - 80034f8: 687b ldr r3, [r7, #4] - 80034fa: 681b ldr r3, [r3, #0] - 80034fc: 78fa ldrb r2, [r7, #3] - 80034fe: 4611 mov r1, r2 - 8003500: 4618 mov r0, r3 - 8003502: f003 f83a bl 800657a - 8003506: 4603 mov r3, r0 - 8003508: f003 0302 and.w r3, r3, #2 - 800350c: 2b02 cmp r3, #2 - 800350e: f040 81df bne.w 80038d0 + 8003554: 687b ldr r3, [r7, #4] + 8003556: 681b ldr r3, [r3, #0] + 8003558: 78fa ldrb r2, [r7, #3] + 800355a: 4611 mov r1, r2 + 800355c: 4618 mov r0, r3 + 800355e: f003 f83a bl 80065d6 + 8003562: 4603 mov r3, r0 + 8003564: f003 0302 and.w r3, r3, #2 + 8003568: 2b02 cmp r3, #2 + 800356a: f040 81df bne.w 800392c { __HAL_HCD_CLEAR_HC_INT(chnum, USB_OTG_HCINT_CHH); - 8003512: 78fb ldrb r3, [r7, #3] - 8003514: 015a lsls r2, r3, #5 - 8003516: 693b ldr r3, [r7, #16] - 8003518: 4413 add r3, r2 - 800351a: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 800351e: 461a mov r2, r3 - 8003520: 2302 movs r3, #2 - 8003522: 6093 str r3, [r2, #8] + 800356e: 78fb ldrb r3, [r7, #3] + 8003570: 015a lsls r2, r3, #5 + 8003572: 693b ldr r3, [r7, #16] + 8003574: 4413 add r3, r2 + 8003576: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 800357a: 461a mov r2, r3 + 800357c: 2302 movs r3, #2 + 800357e: 6093 str r3, [r2, #8] if (hhcd->hc[chnum].state == HC_XFRC) - 8003524: 78fa ldrb r2, [r7, #3] - 8003526: 6879 ldr r1, [r7, #4] - 8003528: 4613 mov r3, r2 - 800352a: 011b lsls r3, r3, #4 - 800352c: 1a9b subs r3, r3, r2 - 800352e: 009b lsls r3, r3, #2 - 8003530: 440b add r3, r1 - 8003532: 334d adds r3, #77 @ 0x4d - 8003534: 781b ldrb r3, [r3, #0] - 8003536: 2b01 cmp r3, #1 - 8003538: f040 8093 bne.w 8003662 + 8003580: 78fa ldrb r2, [r7, #3] + 8003582: 6879 ldr r1, [r7, #4] + 8003584: 4613 mov r3, r2 + 8003586: 011b lsls r3, r3, #4 + 8003588: 1a9b subs r3, r3, r2 + 800358a: 009b lsls r3, r3, #2 + 800358c: 440b add r3, r1 + 800358e: 334d adds r3, #77 @ 0x4d + 8003590: 781b ldrb r3, [r3, #0] + 8003592: 2b01 cmp r3, #1 + 8003594: f040 8093 bne.w 80036be { hhcd->hc[chnum].state = HC_HALTED; - 800353c: 78fa ldrb r2, [r7, #3] - 800353e: 6879 ldr r1, [r7, #4] - 8003540: 4613 mov r3, r2 - 8003542: 011b lsls r3, r3, #4 - 8003544: 1a9b subs r3, r3, r2 - 8003546: 009b lsls r3, r3, #2 - 8003548: 440b add r3, r1 - 800354a: 334d adds r3, #77 @ 0x4d - 800354c: 2202 movs r2, #2 - 800354e: 701a strb r2, [r3, #0] + 8003598: 78fa ldrb r2, [r7, #3] + 800359a: 6879 ldr r1, [r7, #4] + 800359c: 4613 mov r3, r2 + 800359e: 011b lsls r3, r3, #4 + 80035a0: 1a9b subs r3, r3, r2 + 80035a2: 009b lsls r3, r3, #2 + 80035a4: 440b add r3, r1 + 80035a6: 334d adds r3, #77 @ 0x4d + 80035a8: 2202 movs r2, #2 + 80035aa: 701a strb r2, [r3, #0] hhcd->hc[chnum].urb_state = URB_DONE; - 8003550: 78fa ldrb r2, [r7, #3] - 8003552: 6879 ldr r1, [r7, #4] - 8003554: 4613 mov r3, r2 - 8003556: 011b lsls r3, r3, #4 - 8003558: 1a9b subs r3, r3, r2 - 800355a: 009b lsls r3, r3, #2 - 800355c: 440b add r3, r1 - 800355e: 334c adds r3, #76 @ 0x4c - 8003560: 2201 movs r2, #1 - 8003562: 701a strb r2, [r3, #0] + 80035ac: 78fa ldrb r2, [r7, #3] + 80035ae: 6879 ldr r1, [r7, #4] + 80035b0: 4613 mov r3, r2 + 80035b2: 011b lsls r3, r3, #4 + 80035b4: 1a9b subs r3, r3, r2 + 80035b6: 009b lsls r3, r3, #2 + 80035b8: 440b add r3, r1 + 80035ba: 334c adds r3, #76 @ 0x4c + 80035bc: 2201 movs r2, #1 + 80035be: 701a strb r2, [r3, #0] if ((hhcd->hc[chnum].ep_type == EP_TYPE_BULK) || - 8003564: 78fa ldrb r2, [r7, #3] - 8003566: 6879 ldr r1, [r7, #4] - 8003568: 4613 mov r3, r2 - 800356a: 011b lsls r3, r3, #4 - 800356c: 1a9b subs r3, r3, r2 - 800356e: 009b lsls r3, r3, #2 - 8003570: 440b add r3, r1 - 8003572: 3326 adds r3, #38 @ 0x26 - 8003574: 781b ldrb r3, [r3, #0] - 8003576: 2b02 cmp r3, #2 - 8003578: d00b beq.n 8003592 + 80035c0: 78fa ldrb r2, [r7, #3] + 80035c2: 6879 ldr r1, [r7, #4] + 80035c4: 4613 mov r3, r2 + 80035c6: 011b lsls r3, r3, #4 + 80035c8: 1a9b subs r3, r3, r2 + 80035ca: 009b lsls r3, r3, #2 + 80035cc: 440b add r3, r1 + 80035ce: 3326 adds r3, #38 @ 0x26 + 80035d0: 781b ldrb r3, [r3, #0] + 80035d2: 2b02 cmp r3, #2 + 80035d4: d00b beq.n 80035ee (hhcd->hc[chnum].ep_type == EP_TYPE_INTR)) - 800357a: 78fa ldrb r2, [r7, #3] - 800357c: 6879 ldr r1, [r7, #4] - 800357e: 4613 mov r3, r2 - 8003580: 011b lsls r3, r3, #4 - 8003582: 1a9b subs r3, r3, r2 - 8003584: 009b lsls r3, r3, #2 - 8003586: 440b add r3, r1 - 8003588: 3326 adds r3, #38 @ 0x26 - 800358a: 781b ldrb r3, [r3, #0] + 80035d6: 78fa ldrb r2, [r7, #3] + 80035d8: 6879 ldr r1, [r7, #4] + 80035da: 4613 mov r3, r2 + 80035dc: 011b lsls r3, r3, #4 + 80035de: 1a9b subs r3, r3, r2 + 80035e0: 009b lsls r3, r3, #2 + 80035e2: 440b add r3, r1 + 80035e4: 3326 adds r3, #38 @ 0x26 + 80035e6: 781b ldrb r3, [r3, #0] if ((hhcd->hc[chnum].ep_type == EP_TYPE_BULK) || - 800358c: 2b03 cmp r3, #3 - 800358e: f040 8190 bne.w 80038b2 + 80035e8: 2b03 cmp r3, #3 + 80035ea: f040 8190 bne.w 800390e { if (hhcd->Init.dma_enable == 0U) - 8003592: 687b ldr r3, [r7, #4] - 8003594: 799b ldrb r3, [r3, #6] - 8003596: 2b00 cmp r3, #0 - 8003598: d115 bne.n 80035c6 + 80035ee: 687b ldr r3, [r7, #4] + 80035f0: 799b ldrb r3, [r3, #6] + 80035f2: 2b00 cmp r3, #0 + 80035f4: d115 bne.n 8003622 { hhcd->hc[chnum].toggle_out ^= 1U; - 800359a: 78fa ldrb r2, [r7, #3] - 800359c: 6879 ldr r1, [r7, #4] - 800359e: 4613 mov r3, r2 - 80035a0: 011b lsls r3, r3, #4 - 80035a2: 1a9b subs r3, r3, r2 - 80035a4: 009b lsls r3, r3, #2 - 80035a6: 440b add r3, r1 - 80035a8: 333d adds r3, #61 @ 0x3d - 80035aa: 781b ldrb r3, [r3, #0] - 80035ac: 78fa ldrb r2, [r7, #3] - 80035ae: f083 0301 eor.w r3, r3, #1 - 80035b2: b2d8 uxtb r0, r3 - 80035b4: 6879 ldr r1, [r7, #4] - 80035b6: 4613 mov r3, r2 - 80035b8: 011b lsls r3, r3, #4 - 80035ba: 1a9b subs r3, r3, r2 - 80035bc: 009b lsls r3, r3, #2 - 80035be: 440b add r3, r1 - 80035c0: 333d adds r3, #61 @ 0x3d - 80035c2: 4602 mov r2, r0 - 80035c4: 701a strb r2, [r3, #0] + 80035f6: 78fa ldrb r2, [r7, #3] + 80035f8: 6879 ldr r1, [r7, #4] + 80035fa: 4613 mov r3, r2 + 80035fc: 011b lsls r3, r3, #4 + 80035fe: 1a9b subs r3, r3, r2 + 8003600: 009b lsls r3, r3, #2 + 8003602: 440b add r3, r1 + 8003604: 333d adds r3, #61 @ 0x3d + 8003606: 781b ldrb r3, [r3, #0] + 8003608: 78fa ldrb r2, [r7, #3] + 800360a: f083 0301 eor.w r3, r3, #1 + 800360e: b2d8 uxtb r0, r3 + 8003610: 6879 ldr r1, [r7, #4] + 8003612: 4613 mov r3, r2 + 8003614: 011b lsls r3, r3, #4 + 8003616: 1a9b subs r3, r3, r2 + 8003618: 009b lsls r3, r3, #2 + 800361a: 440b add r3, r1 + 800361c: 333d adds r3, #61 @ 0x3d + 800361e: 4602 mov r2, r0 + 8003620: 701a strb r2, [r3, #0] } if ((hhcd->Init.dma_enable == 1U) && (hhcd->hc[chnum].xfer_len > 0U)) - 80035c6: 687b ldr r3, [r7, #4] - 80035c8: 799b ldrb r3, [r3, #6] - 80035ca: 2b01 cmp r3, #1 - 80035cc: f040 8171 bne.w 80038b2 - 80035d0: 78fa ldrb r2, [r7, #3] - 80035d2: 6879 ldr r1, [r7, #4] - 80035d4: 4613 mov r3, r2 - 80035d6: 011b lsls r3, r3, #4 - 80035d8: 1a9b subs r3, r3, r2 - 80035da: 009b lsls r3, r3, #2 - 80035dc: 440b add r3, r1 - 80035de: 3334 adds r3, #52 @ 0x34 - 80035e0: 681b ldr r3, [r3, #0] - 80035e2: 2b00 cmp r3, #0 - 80035e4: f000 8165 beq.w 80038b2 + 8003622: 687b ldr r3, [r7, #4] + 8003624: 799b ldrb r3, [r3, #6] + 8003626: 2b01 cmp r3, #1 + 8003628: f040 8171 bne.w 800390e + 800362c: 78fa ldrb r2, [r7, #3] + 800362e: 6879 ldr r1, [r7, #4] + 8003630: 4613 mov r3, r2 + 8003632: 011b lsls r3, r3, #4 + 8003634: 1a9b subs r3, r3, r2 + 8003636: 009b lsls r3, r3, #2 + 8003638: 440b add r3, r1 + 800363a: 3334 adds r3, #52 @ 0x34 + 800363c: 681b ldr r3, [r3, #0] + 800363e: 2b00 cmp r3, #0 + 8003640: f000 8165 beq.w 800390e { num_packets = (hhcd->hc[chnum].xfer_len + hhcd->hc[chnum].max_packet - 1U) / hhcd->hc[chnum].max_packet; - 80035e8: 78fa ldrb r2, [r7, #3] - 80035ea: 6879 ldr r1, [r7, #4] - 80035ec: 4613 mov r3, r2 - 80035ee: 011b lsls r3, r3, #4 - 80035f0: 1a9b subs r3, r3, r2 - 80035f2: 009b lsls r3, r3, #2 - 80035f4: 440b add r3, r1 - 80035f6: 3334 adds r3, #52 @ 0x34 - 80035f8: 6819 ldr r1, [r3, #0] - 80035fa: 78fa ldrb r2, [r7, #3] - 80035fc: 6878 ldr r0, [r7, #4] - 80035fe: 4613 mov r3, r2 - 8003600: 011b lsls r3, r3, #4 - 8003602: 1a9b subs r3, r3, r2 - 8003604: 009b lsls r3, r3, #2 - 8003606: 4403 add r3, r0 - 8003608: 3328 adds r3, #40 @ 0x28 - 800360a: 881b ldrh r3, [r3, #0] - 800360c: 440b add r3, r1 - 800360e: 1e59 subs r1, r3, #1 - 8003610: 78fa ldrb r2, [r7, #3] - 8003612: 6878 ldr r0, [r7, #4] - 8003614: 4613 mov r3, r2 - 8003616: 011b lsls r3, r3, #4 - 8003618: 1a9b subs r3, r3, r2 - 800361a: 009b lsls r3, r3, #2 - 800361c: 4403 add r3, r0 - 800361e: 3328 adds r3, #40 @ 0x28 - 8003620: 881b ldrh r3, [r3, #0] - 8003622: fbb1 f3f3 udiv r3, r1, r3 - 8003626: 60bb str r3, [r7, #8] + 8003644: 78fa ldrb r2, [r7, #3] + 8003646: 6879 ldr r1, [r7, #4] + 8003648: 4613 mov r3, r2 + 800364a: 011b lsls r3, r3, #4 + 800364c: 1a9b subs r3, r3, r2 + 800364e: 009b lsls r3, r3, #2 + 8003650: 440b add r3, r1 + 8003652: 3334 adds r3, #52 @ 0x34 + 8003654: 6819 ldr r1, [r3, #0] + 8003656: 78fa ldrb r2, [r7, #3] + 8003658: 6878 ldr r0, [r7, #4] + 800365a: 4613 mov r3, r2 + 800365c: 011b lsls r3, r3, #4 + 800365e: 1a9b subs r3, r3, r2 + 8003660: 009b lsls r3, r3, #2 + 8003662: 4403 add r3, r0 + 8003664: 3328 adds r3, #40 @ 0x28 + 8003666: 881b ldrh r3, [r3, #0] + 8003668: 440b add r3, r1 + 800366a: 1e59 subs r1, r3, #1 + 800366c: 78fa ldrb r2, [r7, #3] + 800366e: 6878 ldr r0, [r7, #4] + 8003670: 4613 mov r3, r2 + 8003672: 011b lsls r3, r3, #4 + 8003674: 1a9b subs r3, r3, r2 + 8003676: 009b lsls r3, r3, #2 + 8003678: 4403 add r3, r0 + 800367a: 3328 adds r3, #40 @ 0x28 + 800367c: 881b ldrh r3, [r3, #0] + 800367e: fbb1 f3f3 udiv r3, r1, r3 + 8003682: 60bb str r3, [r7, #8] if ((num_packets & 1U) != 0U) - 8003628: 68bb ldr r3, [r7, #8] - 800362a: f003 0301 and.w r3, r3, #1 - 800362e: 2b00 cmp r3, #0 - 8003630: f000 813f beq.w 80038b2 + 8003684: 68bb ldr r3, [r7, #8] + 8003686: f003 0301 and.w r3, r3, #1 + 800368a: 2b00 cmp r3, #0 + 800368c: f000 813f beq.w 800390e { hhcd->hc[chnum].toggle_out ^= 1U; - 8003634: 78fa ldrb r2, [r7, #3] - 8003636: 6879 ldr r1, [r7, #4] - 8003638: 4613 mov r3, r2 - 800363a: 011b lsls r3, r3, #4 - 800363c: 1a9b subs r3, r3, r2 - 800363e: 009b lsls r3, r3, #2 - 8003640: 440b add r3, r1 - 8003642: 333d adds r3, #61 @ 0x3d - 8003644: 781b ldrb r3, [r3, #0] - 8003646: 78fa ldrb r2, [r7, #3] - 8003648: f083 0301 eor.w r3, r3, #1 - 800364c: b2d8 uxtb r0, r3 - 800364e: 6879 ldr r1, [r7, #4] - 8003650: 4613 mov r3, r2 - 8003652: 011b lsls r3, r3, #4 - 8003654: 1a9b subs r3, r3, r2 - 8003656: 009b lsls r3, r3, #2 - 8003658: 440b add r3, r1 - 800365a: 333d adds r3, #61 @ 0x3d - 800365c: 4602 mov r2, r0 - 800365e: 701a strb r2, [r3, #0] - 8003660: e127 b.n 80038b2 + 8003690: 78fa ldrb r2, [r7, #3] + 8003692: 6879 ldr r1, [r7, #4] + 8003694: 4613 mov r3, r2 + 8003696: 011b lsls r3, r3, #4 + 8003698: 1a9b subs r3, r3, r2 + 800369a: 009b lsls r3, r3, #2 + 800369c: 440b add r3, r1 + 800369e: 333d adds r3, #61 @ 0x3d + 80036a0: 781b ldrb r3, [r3, #0] + 80036a2: 78fa ldrb r2, [r7, #3] + 80036a4: f083 0301 eor.w r3, r3, #1 + 80036a8: b2d8 uxtb r0, r3 + 80036aa: 6879 ldr r1, [r7, #4] + 80036ac: 4613 mov r3, r2 + 80036ae: 011b lsls r3, r3, #4 + 80036b0: 1a9b subs r3, r3, r2 + 80036b2: 009b lsls r3, r3, #2 + 80036b4: 440b add r3, r1 + 80036b6: 333d adds r3, #61 @ 0x3d + 80036b8: 4602 mov r2, r0 + 80036ba: 701a strb r2, [r3, #0] + 80036bc: e127 b.n 800390e } } } } else if (hhcd->hc[chnum].state == HC_ACK) - 8003662: 78fa ldrb r2, [r7, #3] - 8003664: 6879 ldr r1, [r7, #4] - 8003666: 4613 mov r3, r2 - 8003668: 011b lsls r3, r3, #4 - 800366a: 1a9b subs r3, r3, r2 - 800366c: 009b lsls r3, r3, #2 - 800366e: 440b add r3, r1 - 8003670: 334d adds r3, #77 @ 0x4d - 8003672: 781b ldrb r3, [r3, #0] - 8003674: 2b03 cmp r3, #3 - 8003676: d120 bne.n 80036ba + 80036be: 78fa ldrb r2, [r7, #3] + 80036c0: 6879 ldr r1, [r7, #4] + 80036c2: 4613 mov r3, r2 + 80036c4: 011b lsls r3, r3, #4 + 80036c6: 1a9b subs r3, r3, r2 + 80036c8: 009b lsls r3, r3, #2 + 80036ca: 440b add r3, r1 + 80036cc: 334d adds r3, #77 @ 0x4d + 80036ce: 781b ldrb r3, [r3, #0] + 80036d0: 2b03 cmp r3, #3 + 80036d2: d120 bne.n 8003716 { hhcd->hc[chnum].state = HC_HALTED; - 8003678: 78fa ldrb r2, [r7, #3] - 800367a: 6879 ldr r1, [r7, #4] - 800367c: 4613 mov r3, r2 - 800367e: 011b lsls r3, r3, #4 - 8003680: 1a9b subs r3, r3, r2 - 8003682: 009b lsls r3, r3, #2 - 8003684: 440b add r3, r1 - 8003686: 334d adds r3, #77 @ 0x4d - 8003688: 2202 movs r2, #2 - 800368a: 701a strb r2, [r3, #0] + 80036d4: 78fa ldrb r2, [r7, #3] + 80036d6: 6879 ldr r1, [r7, #4] + 80036d8: 4613 mov r3, r2 + 80036da: 011b lsls r3, r3, #4 + 80036dc: 1a9b subs r3, r3, r2 + 80036de: 009b lsls r3, r3, #2 + 80036e0: 440b add r3, r1 + 80036e2: 334d adds r3, #77 @ 0x4d + 80036e4: 2202 movs r2, #2 + 80036e6: 701a strb r2, [r3, #0] if (hhcd->hc[chnum].do_csplit == 1U) - 800368c: 78fa ldrb r2, [r7, #3] - 800368e: 6879 ldr r1, [r7, #4] - 8003690: 4613 mov r3, r2 - 8003692: 011b lsls r3, r3, #4 - 8003694: 1a9b subs r3, r3, r2 - 8003696: 009b lsls r3, r3, #2 - 8003698: 440b add r3, r1 - 800369a: 331b adds r3, #27 - 800369c: 781b ldrb r3, [r3, #0] - 800369e: 2b01 cmp r3, #1 - 80036a0: f040 8107 bne.w 80038b2 + 80036e8: 78fa ldrb r2, [r7, #3] + 80036ea: 6879 ldr r1, [r7, #4] + 80036ec: 4613 mov r3, r2 + 80036ee: 011b lsls r3, r3, #4 + 80036f0: 1a9b subs r3, r3, r2 + 80036f2: 009b lsls r3, r3, #2 + 80036f4: 440b add r3, r1 + 80036f6: 331b adds r3, #27 + 80036f8: 781b ldrb r3, [r3, #0] + 80036fa: 2b01 cmp r3, #1 + 80036fc: f040 8107 bne.w 800390e { hhcd->hc[chnum].urb_state = URB_NOTREADY; - 80036a4: 78fa ldrb r2, [r7, #3] - 80036a6: 6879 ldr r1, [r7, #4] - 80036a8: 4613 mov r3, r2 - 80036aa: 011b lsls r3, r3, #4 - 80036ac: 1a9b subs r3, r3, r2 - 80036ae: 009b lsls r3, r3, #2 - 80036b0: 440b add r3, r1 - 80036b2: 334c adds r3, #76 @ 0x4c - 80036b4: 2202 movs r2, #2 - 80036b6: 701a strb r2, [r3, #0] - 80036b8: e0fb b.n 80038b2 + 8003700: 78fa ldrb r2, [r7, #3] + 8003702: 6879 ldr r1, [r7, #4] + 8003704: 4613 mov r3, r2 + 8003706: 011b lsls r3, r3, #4 + 8003708: 1a9b subs r3, r3, r2 + 800370a: 009b lsls r3, r3, #2 + 800370c: 440b add r3, r1 + 800370e: 334c adds r3, #76 @ 0x4c + 8003710: 2202 movs r2, #2 + 8003712: 701a strb r2, [r3, #0] + 8003714: e0fb b.n 800390e } } else if (hhcd->hc[chnum].state == HC_NAK) - 80036ba: 78fa ldrb r2, [r7, #3] - 80036bc: 6879 ldr r1, [r7, #4] - 80036be: 4613 mov r3, r2 - 80036c0: 011b lsls r3, r3, #4 - 80036c2: 1a9b subs r3, r3, r2 - 80036c4: 009b lsls r3, r3, #2 - 80036c6: 440b add r3, r1 - 80036c8: 334d adds r3, #77 @ 0x4d - 80036ca: 781b ldrb r3, [r3, #0] - 80036cc: 2b04 cmp r3, #4 - 80036ce: d13a bne.n 8003746 + 8003716: 78fa ldrb r2, [r7, #3] + 8003718: 6879 ldr r1, [r7, #4] + 800371a: 4613 mov r3, r2 + 800371c: 011b lsls r3, r3, #4 + 800371e: 1a9b subs r3, r3, r2 + 8003720: 009b lsls r3, r3, #2 + 8003722: 440b add r3, r1 + 8003724: 334d adds r3, #77 @ 0x4d + 8003726: 781b ldrb r3, [r3, #0] + 8003728: 2b04 cmp r3, #4 + 800372a: d13a bne.n 80037a2 { hhcd->hc[chnum].state = HC_HALTED; - 80036d0: 78fa ldrb r2, [r7, #3] - 80036d2: 6879 ldr r1, [r7, #4] - 80036d4: 4613 mov r3, r2 - 80036d6: 011b lsls r3, r3, #4 - 80036d8: 1a9b subs r3, r3, r2 - 80036da: 009b lsls r3, r3, #2 - 80036dc: 440b add r3, r1 - 80036de: 334d adds r3, #77 @ 0x4d - 80036e0: 2202 movs r2, #2 - 80036e2: 701a strb r2, [r3, #0] + 800372c: 78fa ldrb r2, [r7, #3] + 800372e: 6879 ldr r1, [r7, #4] + 8003730: 4613 mov r3, r2 + 8003732: 011b lsls r3, r3, #4 + 8003734: 1a9b subs r3, r3, r2 + 8003736: 009b lsls r3, r3, #2 + 8003738: 440b add r3, r1 + 800373a: 334d adds r3, #77 @ 0x4d + 800373c: 2202 movs r2, #2 + 800373e: 701a strb r2, [r3, #0] hhcd->hc[chnum].urb_state = URB_NOTREADY; - 80036e4: 78fa ldrb r2, [r7, #3] - 80036e6: 6879 ldr r1, [r7, #4] - 80036e8: 4613 mov r3, r2 - 80036ea: 011b lsls r3, r3, #4 - 80036ec: 1a9b subs r3, r3, r2 - 80036ee: 009b lsls r3, r3, #2 - 80036f0: 440b add r3, r1 - 80036f2: 334c adds r3, #76 @ 0x4c - 80036f4: 2202 movs r2, #2 - 80036f6: 701a strb r2, [r3, #0] + 8003740: 78fa ldrb r2, [r7, #3] + 8003742: 6879 ldr r1, [r7, #4] + 8003744: 4613 mov r3, r2 + 8003746: 011b lsls r3, r3, #4 + 8003748: 1a9b subs r3, r3, r2 + 800374a: 009b lsls r3, r3, #2 + 800374c: 440b add r3, r1 + 800374e: 334c adds r3, #76 @ 0x4c + 8003750: 2202 movs r2, #2 + 8003752: 701a strb r2, [r3, #0] if (hhcd->hc[chnum].do_csplit == 1U) - 80036f8: 78fa ldrb r2, [r7, #3] - 80036fa: 6879 ldr r1, [r7, #4] - 80036fc: 4613 mov r3, r2 - 80036fe: 011b lsls r3, r3, #4 - 8003700: 1a9b subs r3, r3, r2 - 8003702: 009b lsls r3, r3, #2 - 8003704: 440b add r3, r1 - 8003706: 331b adds r3, #27 - 8003708: 781b ldrb r3, [r3, #0] - 800370a: 2b01 cmp r3, #1 - 800370c: f040 80d1 bne.w 80038b2 + 8003754: 78fa ldrb r2, [r7, #3] + 8003756: 6879 ldr r1, [r7, #4] + 8003758: 4613 mov r3, r2 + 800375a: 011b lsls r3, r3, #4 + 800375c: 1a9b subs r3, r3, r2 + 800375e: 009b lsls r3, r3, #2 + 8003760: 440b add r3, r1 + 8003762: 331b adds r3, #27 + 8003764: 781b ldrb r3, [r3, #0] + 8003766: 2b01 cmp r3, #1 + 8003768: f040 80d1 bne.w 800390e { hhcd->hc[chnum].do_csplit = 0U; - 8003710: 78fa ldrb r2, [r7, #3] - 8003712: 6879 ldr r1, [r7, #4] - 8003714: 4613 mov r3, r2 - 8003716: 011b lsls r3, r3, #4 - 8003718: 1a9b subs r3, r3, r2 - 800371a: 009b lsls r3, r3, #2 - 800371c: 440b add r3, r1 - 800371e: 331b adds r3, #27 - 8003720: 2200 movs r2, #0 - 8003722: 701a strb r2, [r3, #0] + 800376c: 78fa ldrb r2, [r7, #3] + 800376e: 6879 ldr r1, [r7, #4] + 8003770: 4613 mov r3, r2 + 8003772: 011b lsls r3, r3, #4 + 8003774: 1a9b subs r3, r3, r2 + 8003776: 009b lsls r3, r3, #2 + 8003778: 440b add r3, r1 + 800377a: 331b adds r3, #27 + 800377c: 2200 movs r2, #0 + 800377e: 701a strb r2, [r3, #0] __HAL_HCD_CLEAR_HC_CSPLT(chnum); - 8003724: 78fb ldrb r3, [r7, #3] - 8003726: 015a lsls r2, r3, #5 - 8003728: 693b ldr r3, [r7, #16] - 800372a: 4413 add r3, r2 - 800372c: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8003730: 685b ldr r3, [r3, #4] - 8003732: 78fa ldrb r2, [r7, #3] - 8003734: 0151 lsls r1, r2, #5 - 8003736: 693a ldr r2, [r7, #16] - 8003738: 440a add r2, r1 - 800373a: f502 62a0 add.w r2, r2, #1280 @ 0x500 - 800373e: f423 3380 bic.w r3, r3, #65536 @ 0x10000 - 8003742: 6053 str r3, [r2, #4] - 8003744: e0b5 b.n 80038b2 + 8003780: 78fb ldrb r3, [r7, #3] + 8003782: 015a lsls r2, r3, #5 + 8003784: 693b ldr r3, [r7, #16] + 8003786: 4413 add r3, r2 + 8003788: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 800378c: 685b ldr r3, [r3, #4] + 800378e: 78fa ldrb r2, [r7, #3] + 8003790: 0151 lsls r1, r2, #5 + 8003792: 693a ldr r2, [r7, #16] + 8003794: 440a add r2, r1 + 8003796: f502 62a0 add.w r2, r2, #1280 @ 0x500 + 800379a: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 800379e: 6053 str r3, [r2, #4] + 80037a0: e0b5 b.n 800390e } } else if (hhcd->hc[chnum].state == HC_NYET) - 8003746: 78fa ldrb r2, [r7, #3] - 8003748: 6879 ldr r1, [r7, #4] - 800374a: 4613 mov r3, r2 - 800374c: 011b lsls r3, r3, #4 - 800374e: 1a9b subs r3, r3, r2 - 8003750: 009b lsls r3, r3, #2 - 8003752: 440b add r3, r1 - 8003754: 334d adds r3, #77 @ 0x4d - 8003756: 781b ldrb r3, [r3, #0] - 8003758: 2b05 cmp r3, #5 - 800375a: d114 bne.n 8003786 + 80037a2: 78fa ldrb r2, [r7, #3] + 80037a4: 6879 ldr r1, [r7, #4] + 80037a6: 4613 mov r3, r2 + 80037a8: 011b lsls r3, r3, #4 + 80037aa: 1a9b subs r3, r3, r2 + 80037ac: 009b lsls r3, r3, #2 + 80037ae: 440b add r3, r1 + 80037b0: 334d adds r3, #77 @ 0x4d + 80037b2: 781b ldrb r3, [r3, #0] + 80037b4: 2b05 cmp r3, #5 + 80037b6: d114 bne.n 80037e2 { hhcd->hc[chnum].state = HC_HALTED; - 800375c: 78fa ldrb r2, [r7, #3] - 800375e: 6879 ldr r1, [r7, #4] - 8003760: 4613 mov r3, r2 - 8003762: 011b lsls r3, r3, #4 - 8003764: 1a9b subs r3, r3, r2 - 8003766: 009b lsls r3, r3, #2 - 8003768: 440b add r3, r1 - 800376a: 334d adds r3, #77 @ 0x4d - 800376c: 2202 movs r2, #2 - 800376e: 701a strb r2, [r3, #0] + 80037b8: 78fa ldrb r2, [r7, #3] + 80037ba: 6879 ldr r1, [r7, #4] + 80037bc: 4613 mov r3, r2 + 80037be: 011b lsls r3, r3, #4 + 80037c0: 1a9b subs r3, r3, r2 + 80037c2: 009b lsls r3, r3, #2 + 80037c4: 440b add r3, r1 + 80037c6: 334d adds r3, #77 @ 0x4d + 80037c8: 2202 movs r2, #2 + 80037ca: 701a strb r2, [r3, #0] hhcd->hc[chnum].urb_state = URB_NOTREADY; - 8003770: 78fa ldrb r2, [r7, #3] - 8003772: 6879 ldr r1, [r7, #4] - 8003774: 4613 mov r3, r2 - 8003776: 011b lsls r3, r3, #4 - 8003778: 1a9b subs r3, r3, r2 - 800377a: 009b lsls r3, r3, #2 - 800377c: 440b add r3, r1 - 800377e: 334c adds r3, #76 @ 0x4c - 8003780: 2202 movs r2, #2 - 8003782: 701a strb r2, [r3, #0] - 8003784: e095 b.n 80038b2 + 80037cc: 78fa ldrb r2, [r7, #3] + 80037ce: 6879 ldr r1, [r7, #4] + 80037d0: 4613 mov r3, r2 + 80037d2: 011b lsls r3, r3, #4 + 80037d4: 1a9b subs r3, r3, r2 + 80037d6: 009b lsls r3, r3, #2 + 80037d8: 440b add r3, r1 + 80037da: 334c adds r3, #76 @ 0x4c + 80037dc: 2202 movs r2, #2 + 80037de: 701a strb r2, [r3, #0] + 80037e0: e095 b.n 800390e } else if (hhcd->hc[chnum].state == HC_STALL) - 8003786: 78fa ldrb r2, [r7, #3] - 8003788: 6879 ldr r1, [r7, #4] - 800378a: 4613 mov r3, r2 - 800378c: 011b lsls r3, r3, #4 - 800378e: 1a9b subs r3, r3, r2 - 8003790: 009b lsls r3, r3, #2 - 8003792: 440b add r3, r1 - 8003794: 334d adds r3, #77 @ 0x4d - 8003796: 781b ldrb r3, [r3, #0] - 8003798: 2b06 cmp r3, #6 - 800379a: d114 bne.n 80037c6 + 80037e2: 78fa ldrb r2, [r7, #3] + 80037e4: 6879 ldr r1, [r7, #4] + 80037e6: 4613 mov r3, r2 + 80037e8: 011b lsls r3, r3, #4 + 80037ea: 1a9b subs r3, r3, r2 + 80037ec: 009b lsls r3, r3, #2 + 80037ee: 440b add r3, r1 + 80037f0: 334d adds r3, #77 @ 0x4d + 80037f2: 781b ldrb r3, [r3, #0] + 80037f4: 2b06 cmp r3, #6 + 80037f6: d114 bne.n 8003822 { hhcd->hc[chnum].state = HC_HALTED; - 800379c: 78fa ldrb r2, [r7, #3] - 800379e: 6879 ldr r1, [r7, #4] - 80037a0: 4613 mov r3, r2 - 80037a2: 011b lsls r3, r3, #4 - 80037a4: 1a9b subs r3, r3, r2 - 80037a6: 009b lsls r3, r3, #2 - 80037a8: 440b add r3, r1 - 80037aa: 334d adds r3, #77 @ 0x4d - 80037ac: 2202 movs r2, #2 - 80037ae: 701a strb r2, [r3, #0] + 80037f8: 78fa ldrb r2, [r7, #3] + 80037fa: 6879 ldr r1, [r7, #4] + 80037fc: 4613 mov r3, r2 + 80037fe: 011b lsls r3, r3, #4 + 8003800: 1a9b subs r3, r3, r2 + 8003802: 009b lsls r3, r3, #2 + 8003804: 440b add r3, r1 + 8003806: 334d adds r3, #77 @ 0x4d + 8003808: 2202 movs r2, #2 + 800380a: 701a strb r2, [r3, #0] hhcd->hc[chnum].urb_state = URB_STALL; - 80037b0: 78fa ldrb r2, [r7, #3] - 80037b2: 6879 ldr r1, [r7, #4] - 80037b4: 4613 mov r3, r2 - 80037b6: 011b lsls r3, r3, #4 - 80037b8: 1a9b subs r3, r3, r2 - 80037ba: 009b lsls r3, r3, #2 - 80037bc: 440b add r3, r1 - 80037be: 334c adds r3, #76 @ 0x4c - 80037c0: 2205 movs r2, #5 - 80037c2: 701a strb r2, [r3, #0] - 80037c4: e075 b.n 80038b2 + 800380c: 78fa ldrb r2, [r7, #3] + 800380e: 6879 ldr r1, [r7, #4] + 8003810: 4613 mov r3, r2 + 8003812: 011b lsls r3, r3, #4 + 8003814: 1a9b subs r3, r3, r2 + 8003816: 009b lsls r3, r3, #2 + 8003818: 440b add r3, r1 + 800381a: 334c adds r3, #76 @ 0x4c + 800381c: 2205 movs r2, #5 + 800381e: 701a strb r2, [r3, #0] + 8003820: e075 b.n 800390e } else if ((hhcd->hc[chnum].state == HC_XACTERR) || - 80037c6: 78fa ldrb r2, [r7, #3] - 80037c8: 6879 ldr r1, [r7, #4] - 80037ca: 4613 mov r3, r2 - 80037cc: 011b lsls r3, r3, #4 - 80037ce: 1a9b subs r3, r3, r2 - 80037d0: 009b lsls r3, r3, #2 - 80037d2: 440b add r3, r1 - 80037d4: 334d adds r3, #77 @ 0x4d - 80037d6: 781b ldrb r3, [r3, #0] - 80037d8: 2b07 cmp r3, #7 - 80037da: d00a beq.n 80037f2 + 8003822: 78fa ldrb r2, [r7, #3] + 8003824: 6879 ldr r1, [r7, #4] + 8003826: 4613 mov r3, r2 + 8003828: 011b lsls r3, r3, #4 + 800382a: 1a9b subs r3, r3, r2 + 800382c: 009b lsls r3, r3, #2 + 800382e: 440b add r3, r1 + 8003830: 334d adds r3, #77 @ 0x4d + 8003832: 781b ldrb r3, [r3, #0] + 8003834: 2b07 cmp r3, #7 + 8003836: d00a beq.n 800384e (hhcd->hc[chnum].state == HC_DATATGLERR)) - 80037dc: 78fa ldrb r2, [r7, #3] - 80037de: 6879 ldr r1, [r7, #4] - 80037e0: 4613 mov r3, r2 - 80037e2: 011b lsls r3, r3, #4 - 80037e4: 1a9b subs r3, r3, r2 - 80037e6: 009b lsls r3, r3, #2 - 80037e8: 440b add r3, r1 - 80037ea: 334d adds r3, #77 @ 0x4d - 80037ec: 781b ldrb r3, [r3, #0] + 8003838: 78fa ldrb r2, [r7, #3] + 800383a: 6879 ldr r1, [r7, #4] + 800383c: 4613 mov r3, r2 + 800383e: 011b lsls r3, r3, #4 + 8003840: 1a9b subs r3, r3, r2 + 8003842: 009b lsls r3, r3, #2 + 8003844: 440b add r3, r1 + 8003846: 334d adds r3, #77 @ 0x4d + 8003848: 781b ldrb r3, [r3, #0] else if ((hhcd->hc[chnum].state == HC_XACTERR) || - 80037ee: 2b09 cmp r3, #9 - 80037f0: d170 bne.n 80038d4 + 800384a: 2b09 cmp r3, #9 + 800384c: d170 bne.n 8003930 { hhcd->hc[chnum].state = HC_HALTED; - 80037f2: 78fa ldrb r2, [r7, #3] - 80037f4: 6879 ldr r1, [r7, #4] - 80037f6: 4613 mov r3, r2 - 80037f8: 011b lsls r3, r3, #4 - 80037fa: 1a9b subs r3, r3, r2 - 80037fc: 009b lsls r3, r3, #2 - 80037fe: 440b add r3, r1 - 8003800: 334d adds r3, #77 @ 0x4d - 8003802: 2202 movs r2, #2 - 8003804: 701a strb r2, [r3, #0] + 800384e: 78fa ldrb r2, [r7, #3] + 8003850: 6879 ldr r1, [r7, #4] + 8003852: 4613 mov r3, r2 + 8003854: 011b lsls r3, r3, #4 + 8003856: 1a9b subs r3, r3, r2 + 8003858: 009b lsls r3, r3, #2 + 800385a: 440b add r3, r1 + 800385c: 334d adds r3, #77 @ 0x4d + 800385e: 2202 movs r2, #2 + 8003860: 701a strb r2, [r3, #0] hhcd->hc[chnum].ErrCnt++; - 8003806: 78fa ldrb r2, [r7, #3] - 8003808: 6879 ldr r1, [r7, #4] - 800380a: 4613 mov r3, r2 - 800380c: 011b lsls r3, r3, #4 - 800380e: 1a9b subs r3, r3, r2 - 8003810: 009b lsls r3, r3, #2 - 8003812: 440b add r3, r1 - 8003814: 3344 adds r3, #68 @ 0x44 - 8003816: 681b ldr r3, [r3, #0] - 8003818: 1c59 adds r1, r3, #1 - 800381a: 6878 ldr r0, [r7, #4] - 800381c: 4613 mov r3, r2 - 800381e: 011b lsls r3, r3, #4 - 8003820: 1a9b subs r3, r3, r2 - 8003822: 009b lsls r3, r3, #2 - 8003824: 4403 add r3, r0 - 8003826: 3344 adds r3, #68 @ 0x44 - 8003828: 6019 str r1, [r3, #0] + 8003862: 78fa ldrb r2, [r7, #3] + 8003864: 6879 ldr r1, [r7, #4] + 8003866: 4613 mov r3, r2 + 8003868: 011b lsls r3, r3, #4 + 800386a: 1a9b subs r3, r3, r2 + 800386c: 009b lsls r3, r3, #2 + 800386e: 440b add r3, r1 + 8003870: 3344 adds r3, #68 @ 0x44 + 8003872: 681b ldr r3, [r3, #0] + 8003874: 1c59 adds r1, r3, #1 + 8003876: 6878 ldr r0, [r7, #4] + 8003878: 4613 mov r3, r2 + 800387a: 011b lsls r3, r3, #4 + 800387c: 1a9b subs r3, r3, r2 + 800387e: 009b lsls r3, r3, #2 + 8003880: 4403 add r3, r0 + 8003882: 3344 adds r3, #68 @ 0x44 + 8003884: 6019 str r1, [r3, #0] if (hhcd->hc[chnum].ErrCnt > 2U) - 800382a: 78fa ldrb r2, [r7, #3] - 800382c: 6879 ldr r1, [r7, #4] - 800382e: 4613 mov r3, r2 - 8003830: 011b lsls r3, r3, #4 - 8003832: 1a9b subs r3, r3, r2 - 8003834: 009b lsls r3, r3, #2 - 8003836: 440b add r3, r1 - 8003838: 3344 adds r3, #68 @ 0x44 - 800383a: 681b ldr r3, [r3, #0] - 800383c: 2b02 cmp r3, #2 - 800383e: d914 bls.n 800386a + 8003886: 78fa ldrb r2, [r7, #3] + 8003888: 6879 ldr r1, [r7, #4] + 800388a: 4613 mov r3, r2 + 800388c: 011b lsls r3, r3, #4 + 800388e: 1a9b subs r3, r3, r2 + 8003890: 009b lsls r3, r3, #2 + 8003892: 440b add r3, r1 + 8003894: 3344 adds r3, #68 @ 0x44 + 8003896: 681b ldr r3, [r3, #0] + 8003898: 2b02 cmp r3, #2 + 800389a: d914 bls.n 80038c6 { hhcd->hc[chnum].ErrCnt = 0U; - 8003840: 78fa ldrb r2, [r7, #3] - 8003842: 6879 ldr r1, [r7, #4] - 8003844: 4613 mov r3, r2 - 8003846: 011b lsls r3, r3, #4 - 8003848: 1a9b subs r3, r3, r2 - 800384a: 009b lsls r3, r3, #2 - 800384c: 440b add r3, r1 - 800384e: 3344 adds r3, #68 @ 0x44 - 8003850: 2200 movs r2, #0 - 8003852: 601a str r2, [r3, #0] + 800389c: 78fa ldrb r2, [r7, #3] + 800389e: 6879 ldr r1, [r7, #4] + 80038a0: 4613 mov r3, r2 + 80038a2: 011b lsls r3, r3, #4 + 80038a4: 1a9b subs r3, r3, r2 + 80038a6: 009b lsls r3, r3, #2 + 80038a8: 440b add r3, r1 + 80038aa: 3344 adds r3, #68 @ 0x44 + 80038ac: 2200 movs r2, #0 + 80038ae: 601a str r2, [r3, #0] hhcd->hc[chnum].urb_state = URB_ERROR; - 8003854: 78fa ldrb r2, [r7, #3] - 8003856: 6879 ldr r1, [r7, #4] - 8003858: 4613 mov r3, r2 - 800385a: 011b lsls r3, r3, #4 - 800385c: 1a9b subs r3, r3, r2 - 800385e: 009b lsls r3, r3, #2 - 8003860: 440b add r3, r1 - 8003862: 334c adds r3, #76 @ 0x4c - 8003864: 2204 movs r2, #4 - 8003866: 701a strb r2, [r3, #0] + 80038b0: 78fa ldrb r2, [r7, #3] + 80038b2: 6879 ldr r1, [r7, #4] + 80038b4: 4613 mov r3, r2 + 80038b6: 011b lsls r3, r3, #4 + 80038b8: 1a9b subs r3, r3, r2 + 80038ba: 009b lsls r3, r3, #2 + 80038bc: 440b add r3, r1 + 80038be: 334c adds r3, #76 @ 0x4c + 80038c0: 2204 movs r2, #4 + 80038c2: 701a strb r2, [r3, #0] if (hhcd->hc[chnum].ErrCnt > 2U) - 8003868: e022 b.n 80038b0 + 80038c4: e022 b.n 800390c } else { hhcd->hc[chnum].urb_state = URB_NOTREADY; - 800386a: 78fa ldrb r2, [r7, #3] - 800386c: 6879 ldr r1, [r7, #4] - 800386e: 4613 mov r3, r2 - 8003870: 011b lsls r3, r3, #4 - 8003872: 1a9b subs r3, r3, r2 - 8003874: 009b lsls r3, r3, #2 - 8003876: 440b add r3, r1 - 8003878: 334c adds r3, #76 @ 0x4c - 800387a: 2202 movs r2, #2 - 800387c: 701a strb r2, [r3, #0] + 80038c6: 78fa ldrb r2, [r7, #3] + 80038c8: 6879 ldr r1, [r7, #4] + 80038ca: 4613 mov r3, r2 + 80038cc: 011b lsls r3, r3, #4 + 80038ce: 1a9b subs r3, r3, r2 + 80038d0: 009b lsls r3, r3, #2 + 80038d2: 440b add r3, r1 + 80038d4: 334c adds r3, #76 @ 0x4c + 80038d6: 2202 movs r2, #2 + 80038d8: 701a strb r2, [r3, #0] /* re-activate the channel */ tmpreg = USBx_HC(chnum)->HCCHAR; - 800387e: 78fb ldrb r3, [r7, #3] - 8003880: 015a lsls r2, r3, #5 - 8003882: 693b ldr r3, [r7, #16] - 8003884: 4413 add r3, r2 - 8003886: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 800388a: 681b ldr r3, [r3, #0] - 800388c: 60fb str r3, [r7, #12] + 80038da: 78fb ldrb r3, [r7, #3] + 80038dc: 015a lsls r2, r3, #5 + 80038de: 693b ldr r3, [r7, #16] + 80038e0: 4413 add r3, r2 + 80038e2: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80038e6: 681b ldr r3, [r3, #0] + 80038e8: 60fb str r3, [r7, #12] tmpreg &= ~USB_OTG_HCCHAR_CHDIS; - 800388e: 68fb ldr r3, [r7, #12] - 8003890: f023 4380 bic.w r3, r3, #1073741824 @ 0x40000000 - 8003894: 60fb str r3, [r7, #12] + 80038ea: 68fb ldr r3, [r7, #12] + 80038ec: f023 4380 bic.w r3, r3, #1073741824 @ 0x40000000 + 80038f0: 60fb str r3, [r7, #12] tmpreg |= USB_OTG_HCCHAR_CHENA; - 8003896: 68fb ldr r3, [r7, #12] - 8003898: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 - 800389c: 60fb str r3, [r7, #12] + 80038f2: 68fb ldr r3, [r7, #12] + 80038f4: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 80038f8: 60fb str r3, [r7, #12] USBx_HC(chnum)->HCCHAR = tmpreg; - 800389e: 78fb ldrb r3, [r7, #3] - 80038a0: 015a lsls r2, r3, #5 - 80038a2: 693b ldr r3, [r7, #16] - 80038a4: 4413 add r3, r2 - 80038a6: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 80038aa: 461a mov r2, r3 - 80038ac: 68fb ldr r3, [r7, #12] - 80038ae: 6013 str r3, [r2, #0] + 80038fa: 78fb ldrb r3, [r7, #3] + 80038fc: 015a lsls r2, r3, #5 + 80038fe: 693b ldr r3, [r7, #16] + 8003900: 4413 add r3, r2 + 8003902: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8003906: 461a mov r2, r3 + 8003908: 68fb ldr r3, [r7, #12] + 800390a: 6013 str r3, [r2, #0] if (hhcd->hc[chnum].ErrCnt > 2U) - 80038b0: bf00 nop + 800390c: bf00 nop } #if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) hhcd->HC_NotifyURBChangeCallback(hhcd, chnum, hhcd->hc[chnum].urb_state); #else HAL_HCD_HC_NotifyURBChange_Callback(hhcd, chnum, hhcd->hc[chnum].urb_state); - 80038b2: 78fa ldrb r2, [r7, #3] - 80038b4: 6879 ldr r1, [r7, #4] - 80038b6: 4613 mov r3, r2 - 80038b8: 011b lsls r3, r3, #4 - 80038ba: 1a9b subs r3, r3, r2 - 80038bc: 009b lsls r3, r3, #2 - 80038be: 440b add r3, r1 - 80038c0: 334c adds r3, #76 @ 0x4c - 80038c2: 781a ldrb r2, [r3, #0] - 80038c4: 78fb ldrb r3, [r7, #3] - 80038c6: 4619 mov r1, r3 - 80038c8: 6878 ldr r0, [r7, #4] - 80038ca: f004 fa6b bl 8007da4 - 80038ce: e002 b.n 80038d6 + 800390e: 78fa ldrb r2, [r7, #3] + 8003910: 6879 ldr r1, [r7, #4] + 8003912: 4613 mov r3, r2 + 8003914: 011b lsls r3, r3, #4 + 8003916: 1a9b subs r3, r3, r2 + 8003918: 009b lsls r3, r3, #2 + 800391a: 440b add r3, r1 + 800391c: 334c adds r3, #76 @ 0x4c + 800391e: 781a ldrb r2, [r3, #0] + 8003920: 78fb ldrb r3, [r7, #3] + 8003922: 4619 mov r1, r3 + 8003924: 6878 ldr r0, [r7, #4] + 8003926: f004 fa65 bl 8007df4 + 800392a: e002 b.n 8003932 #endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ } else { return; - 80038d0: bf00 nop - 80038d2: e000 b.n 80038d6 + 800392c: bf00 nop + 800392e: e000 b.n 8003932 return; - 80038d4: bf00 nop + 8003930: bf00 nop } } - 80038d6: 3718 adds r7, #24 - 80038d8: 46bd mov sp, r7 - 80038da: bd80 pop {r7, pc} + 8003932: 3718 adds r7, #24 + 8003934: 46bd mov sp, r7 + 8003936: bd80 pop {r7, pc} -080038dc : +08003938 : * @brief Handle Rx Queue Level interrupt requests. * @param hhcd HCD handle * @retval none */ static void HCD_RXQLVL_IRQHandler(HCD_HandleTypeDef *hhcd) { - 80038dc: b580 push {r7, lr} - 80038de: b08a sub sp, #40 @ 0x28 - 80038e0: af00 add r7, sp, #0 - 80038e2: 6078 str r0, [r7, #4] + 8003938: b580 push {r7, lr} + 800393a: b08a sub sp, #40 @ 0x28 + 800393c: af00 add r7, sp, #0 + 800393e: 6078 str r0, [r7, #4] const USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; - 80038e4: 687b ldr r3, [r7, #4] - 80038e6: 681b ldr r3, [r3, #0] - 80038e8: 627b str r3, [r7, #36] @ 0x24 + 8003940: 687b ldr r3, [r7, #4] + 8003942: 681b ldr r3, [r3, #0] + 8003944: 627b str r3, [r7, #36] @ 0x24 uint32_t USBx_BASE = (uint32_t)USBx; - 80038ea: 6a7b ldr r3, [r7, #36] @ 0x24 - 80038ec: 623b str r3, [r7, #32] + 8003946: 6a7b ldr r3, [r7, #36] @ 0x24 + 8003948: 623b str r3, [r7, #32] uint32_t GrxstspReg; uint32_t xferSizePktCnt; uint32_t tmpreg; uint32_t chnum; GrxstspReg = hhcd->Instance->GRXSTSP; - 80038ee: 687b ldr r3, [r7, #4] - 80038f0: 681b ldr r3, [r3, #0] - 80038f2: 6a1b ldr r3, [r3, #32] - 80038f4: 61fb str r3, [r7, #28] + 800394a: 687b ldr r3, [r7, #4] + 800394c: 681b ldr r3, [r3, #0] + 800394e: 6a1b ldr r3, [r3, #32] + 8003950: 61fb str r3, [r7, #28] chnum = GrxstspReg & USB_OTG_GRXSTSP_EPNUM; - 80038f6: 69fb ldr r3, [r7, #28] - 80038f8: f003 030f and.w r3, r3, #15 - 80038fc: 61bb str r3, [r7, #24] + 8003952: 69fb ldr r3, [r7, #28] + 8003954: f003 030f and.w r3, r3, #15 + 8003958: 61bb str r3, [r7, #24] pktsts = (GrxstspReg & USB_OTG_GRXSTSP_PKTSTS) >> 17; - 80038fe: 69fb ldr r3, [r7, #28] - 8003900: 0c5b lsrs r3, r3, #17 - 8003902: f003 030f and.w r3, r3, #15 - 8003906: 617b str r3, [r7, #20] + 800395a: 69fb ldr r3, [r7, #28] + 800395c: 0c5b lsrs r3, r3, #17 + 800395e: f003 030f and.w r3, r3, #15 + 8003962: 617b str r3, [r7, #20] pktcnt = (GrxstspReg & USB_OTG_GRXSTSP_BCNT) >> 4; - 8003908: 69fb ldr r3, [r7, #28] - 800390a: 091b lsrs r3, r3, #4 - 800390c: f3c3 030a ubfx r3, r3, #0, #11 - 8003910: 613b str r3, [r7, #16] + 8003964: 69fb ldr r3, [r7, #28] + 8003966: 091b lsrs r3, r3, #4 + 8003968: f3c3 030a ubfx r3, r3, #0, #11 + 800396c: 613b str r3, [r7, #16] switch (pktsts) - 8003912: 697b ldr r3, [r7, #20] - 8003914: 2b02 cmp r3, #2 - 8003916: d004 beq.n 8003922 - 8003918: 697b ldr r3, [r7, #20] - 800391a: 2b05 cmp r3, #5 - 800391c: f000 80b6 beq.w 8003a8c + 800396e: 697b ldr r3, [r7, #20] + 8003970: 2b02 cmp r3, #2 + 8003972: d004 beq.n 800397e + 8003974: 697b ldr r3, [r7, #20] + 8003976: 2b05 cmp r3, #5 + 8003978: f000 80b6 beq.w 8003ae8 break; case GRXSTS_PKTSTS_IN_XFER_COMP: case GRXSTS_PKTSTS_CH_HALTED: default: break; - 8003920: e0b7 b.n 8003a92 + 800397c: e0b7 b.n 8003aee if ((pktcnt > 0U) && (hhcd->hc[chnum].xfer_buff != (void *)0)) - 8003922: 693b ldr r3, [r7, #16] - 8003924: 2b00 cmp r3, #0 - 8003926: f000 80b3 beq.w 8003a90 - 800392a: 6879 ldr r1, [r7, #4] - 800392c: 69ba ldr r2, [r7, #24] - 800392e: 4613 mov r3, r2 - 8003930: 011b lsls r3, r3, #4 - 8003932: 1a9b subs r3, r3, r2 - 8003934: 009b lsls r3, r3, #2 - 8003936: 440b add r3, r1 - 8003938: 332c adds r3, #44 @ 0x2c - 800393a: 681b ldr r3, [r3, #0] - 800393c: 2b00 cmp r3, #0 - 800393e: f000 80a7 beq.w 8003a90 + 800397e: 693b ldr r3, [r7, #16] + 8003980: 2b00 cmp r3, #0 + 8003982: f000 80b3 beq.w 8003aec + 8003986: 6879 ldr r1, [r7, #4] + 8003988: 69ba ldr r2, [r7, #24] + 800398a: 4613 mov r3, r2 + 800398c: 011b lsls r3, r3, #4 + 800398e: 1a9b subs r3, r3, r2 + 8003990: 009b lsls r3, r3, #2 + 8003992: 440b add r3, r1 + 8003994: 332c adds r3, #44 @ 0x2c + 8003996: 681b ldr r3, [r3, #0] + 8003998: 2b00 cmp r3, #0 + 800399a: f000 80a7 beq.w 8003aec if ((hhcd->hc[chnum].xfer_count + pktcnt) <= hhcd->hc[chnum].xfer_len) - 8003942: 6879 ldr r1, [r7, #4] - 8003944: 69ba ldr r2, [r7, #24] - 8003946: 4613 mov r3, r2 - 8003948: 011b lsls r3, r3, #4 - 800394a: 1a9b subs r3, r3, r2 - 800394c: 009b lsls r3, r3, #2 - 800394e: 440b add r3, r1 - 8003950: 3338 adds r3, #56 @ 0x38 - 8003952: 681a ldr r2, [r3, #0] - 8003954: 693b ldr r3, [r7, #16] - 8003956: 18d1 adds r1, r2, r3 - 8003958: 6878 ldr r0, [r7, #4] - 800395a: 69ba ldr r2, [r7, #24] - 800395c: 4613 mov r3, r2 - 800395e: 011b lsls r3, r3, #4 - 8003960: 1a9b subs r3, r3, r2 - 8003962: 009b lsls r3, r3, #2 - 8003964: 4403 add r3, r0 - 8003966: 3334 adds r3, #52 @ 0x34 - 8003968: 681b ldr r3, [r3, #0] - 800396a: 4299 cmp r1, r3 - 800396c: f200 8083 bhi.w 8003a76 + 800399e: 6879 ldr r1, [r7, #4] + 80039a0: 69ba ldr r2, [r7, #24] + 80039a2: 4613 mov r3, r2 + 80039a4: 011b lsls r3, r3, #4 + 80039a6: 1a9b subs r3, r3, r2 + 80039a8: 009b lsls r3, r3, #2 + 80039aa: 440b add r3, r1 + 80039ac: 3338 adds r3, #56 @ 0x38 + 80039ae: 681a ldr r2, [r3, #0] + 80039b0: 693b ldr r3, [r7, #16] + 80039b2: 18d1 adds r1, r2, r3 + 80039b4: 6878 ldr r0, [r7, #4] + 80039b6: 69ba ldr r2, [r7, #24] + 80039b8: 4613 mov r3, r2 + 80039ba: 011b lsls r3, r3, #4 + 80039bc: 1a9b subs r3, r3, r2 + 80039be: 009b lsls r3, r3, #2 + 80039c0: 4403 add r3, r0 + 80039c2: 3334 adds r3, #52 @ 0x34 + 80039c4: 681b ldr r3, [r3, #0] + 80039c6: 4299 cmp r1, r3 + 80039c8: f200 8083 bhi.w 8003ad2 (void)USB_ReadPacket(hhcd->Instance, - 8003970: 687b ldr r3, [r7, #4] - 8003972: 6818 ldr r0, [r3, #0] - 8003974: 6879 ldr r1, [r7, #4] - 8003976: 69ba ldr r2, [r7, #24] - 8003978: 4613 mov r3, r2 - 800397a: 011b lsls r3, r3, #4 - 800397c: 1a9b subs r3, r3, r2 - 800397e: 009b lsls r3, r3, #2 - 8003980: 440b add r3, r1 - 8003982: 332c adds r3, #44 @ 0x2c - 8003984: 681b ldr r3, [r3, #0] - 8003986: 693a ldr r2, [r7, #16] - 8003988: b292 uxth r2, r2 - 800398a: 4619 mov r1, r3 - 800398c: f002 fd8a bl 80064a4 + 80039cc: 687b ldr r3, [r7, #4] + 80039ce: 6818 ldr r0, [r3, #0] + 80039d0: 6879 ldr r1, [r7, #4] + 80039d2: 69ba ldr r2, [r7, #24] + 80039d4: 4613 mov r3, r2 + 80039d6: 011b lsls r3, r3, #4 + 80039d8: 1a9b subs r3, r3, r2 + 80039da: 009b lsls r3, r3, #2 + 80039dc: 440b add r3, r1 + 80039de: 332c adds r3, #44 @ 0x2c + 80039e0: 681b ldr r3, [r3, #0] + 80039e2: 693a ldr r2, [r7, #16] + 80039e4: b292 uxth r2, r2 + 80039e6: 4619 mov r1, r3 + 80039e8: f002 fd8a bl 8006500 hhcd->hc[chnum].xfer_buff += pktcnt; - 8003990: 6879 ldr r1, [r7, #4] - 8003992: 69ba ldr r2, [r7, #24] - 8003994: 4613 mov r3, r2 - 8003996: 011b lsls r3, r3, #4 - 8003998: 1a9b subs r3, r3, r2 - 800399a: 009b lsls r3, r3, #2 - 800399c: 440b add r3, r1 - 800399e: 332c adds r3, #44 @ 0x2c - 80039a0: 681a ldr r2, [r3, #0] - 80039a2: 693b ldr r3, [r7, #16] - 80039a4: 18d1 adds r1, r2, r3 - 80039a6: 6878 ldr r0, [r7, #4] - 80039a8: 69ba ldr r2, [r7, #24] - 80039aa: 4613 mov r3, r2 - 80039ac: 011b lsls r3, r3, #4 - 80039ae: 1a9b subs r3, r3, r2 - 80039b0: 009b lsls r3, r3, #2 - 80039b2: 4403 add r3, r0 - 80039b4: 332c adds r3, #44 @ 0x2c - 80039b6: 6019 str r1, [r3, #0] + 80039ec: 6879 ldr r1, [r7, #4] + 80039ee: 69ba ldr r2, [r7, #24] + 80039f0: 4613 mov r3, r2 + 80039f2: 011b lsls r3, r3, #4 + 80039f4: 1a9b subs r3, r3, r2 + 80039f6: 009b lsls r3, r3, #2 + 80039f8: 440b add r3, r1 + 80039fa: 332c adds r3, #44 @ 0x2c + 80039fc: 681a ldr r2, [r3, #0] + 80039fe: 693b ldr r3, [r7, #16] + 8003a00: 18d1 adds r1, r2, r3 + 8003a02: 6878 ldr r0, [r7, #4] + 8003a04: 69ba ldr r2, [r7, #24] + 8003a06: 4613 mov r3, r2 + 8003a08: 011b lsls r3, r3, #4 + 8003a0a: 1a9b subs r3, r3, r2 + 8003a0c: 009b lsls r3, r3, #2 + 8003a0e: 4403 add r3, r0 + 8003a10: 332c adds r3, #44 @ 0x2c + 8003a12: 6019 str r1, [r3, #0] hhcd->hc[chnum].xfer_count += pktcnt; - 80039b8: 6879 ldr r1, [r7, #4] - 80039ba: 69ba ldr r2, [r7, #24] - 80039bc: 4613 mov r3, r2 - 80039be: 011b lsls r3, r3, #4 - 80039c0: 1a9b subs r3, r3, r2 - 80039c2: 009b lsls r3, r3, #2 - 80039c4: 440b add r3, r1 - 80039c6: 3338 adds r3, #56 @ 0x38 - 80039c8: 681a ldr r2, [r3, #0] - 80039ca: 693b ldr r3, [r7, #16] - 80039cc: 18d1 adds r1, r2, r3 - 80039ce: 6878 ldr r0, [r7, #4] - 80039d0: 69ba ldr r2, [r7, #24] - 80039d2: 4613 mov r3, r2 - 80039d4: 011b lsls r3, r3, #4 - 80039d6: 1a9b subs r3, r3, r2 - 80039d8: 009b lsls r3, r3, #2 - 80039da: 4403 add r3, r0 - 80039dc: 3338 adds r3, #56 @ 0x38 - 80039de: 6019 str r1, [r3, #0] + 8003a14: 6879 ldr r1, [r7, #4] + 8003a16: 69ba ldr r2, [r7, #24] + 8003a18: 4613 mov r3, r2 + 8003a1a: 011b lsls r3, r3, #4 + 8003a1c: 1a9b subs r3, r3, r2 + 8003a1e: 009b lsls r3, r3, #2 + 8003a20: 440b add r3, r1 + 8003a22: 3338 adds r3, #56 @ 0x38 + 8003a24: 681a ldr r2, [r3, #0] + 8003a26: 693b ldr r3, [r7, #16] + 8003a28: 18d1 adds r1, r2, r3 + 8003a2a: 6878 ldr r0, [r7, #4] + 8003a2c: 69ba ldr r2, [r7, #24] + 8003a2e: 4613 mov r3, r2 + 8003a30: 011b lsls r3, r3, #4 + 8003a32: 1a9b subs r3, r3, r2 + 8003a34: 009b lsls r3, r3, #2 + 8003a36: 4403 add r3, r0 + 8003a38: 3338 adds r3, #56 @ 0x38 + 8003a3a: 6019 str r1, [r3, #0] xferSizePktCnt = (USBx_HC(chnum)->HCTSIZ & USB_OTG_HCTSIZ_PKTCNT) >> 19; - 80039e0: 69bb ldr r3, [r7, #24] - 80039e2: 015a lsls r2, r3, #5 - 80039e4: 6a3b ldr r3, [r7, #32] - 80039e6: 4413 add r3, r2 - 80039e8: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 80039ec: 691b ldr r3, [r3, #16] - 80039ee: 0cdb lsrs r3, r3, #19 - 80039f0: f3c3 0309 ubfx r3, r3, #0, #10 - 80039f4: 60fb str r3, [r7, #12] + 8003a3c: 69bb ldr r3, [r7, #24] + 8003a3e: 015a lsls r2, r3, #5 + 8003a40: 6a3b ldr r3, [r7, #32] + 8003a42: 4413 add r3, r2 + 8003a44: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8003a48: 691b ldr r3, [r3, #16] + 8003a4a: 0cdb lsrs r3, r3, #19 + 8003a4c: f3c3 0309 ubfx r3, r3, #0, #10 + 8003a50: 60fb str r3, [r7, #12] if ((hhcd->hc[chnum].max_packet == pktcnt) && (xferSizePktCnt > 0U)) - 80039f6: 6879 ldr r1, [r7, #4] - 80039f8: 69ba ldr r2, [r7, #24] - 80039fa: 4613 mov r3, r2 - 80039fc: 011b lsls r3, r3, #4 - 80039fe: 1a9b subs r3, r3, r2 - 8003a00: 009b lsls r3, r3, #2 - 8003a02: 440b add r3, r1 - 8003a04: 3328 adds r3, #40 @ 0x28 - 8003a06: 881b ldrh r3, [r3, #0] - 8003a08: 461a mov r2, r3 - 8003a0a: 693b ldr r3, [r7, #16] - 8003a0c: 4293 cmp r3, r2 - 8003a0e: d13f bne.n 8003a90 - 8003a10: 68fb ldr r3, [r7, #12] - 8003a12: 2b00 cmp r3, #0 - 8003a14: d03c beq.n 8003a90 + 8003a52: 6879 ldr r1, [r7, #4] + 8003a54: 69ba ldr r2, [r7, #24] + 8003a56: 4613 mov r3, r2 + 8003a58: 011b lsls r3, r3, #4 + 8003a5a: 1a9b subs r3, r3, r2 + 8003a5c: 009b lsls r3, r3, #2 + 8003a5e: 440b add r3, r1 + 8003a60: 3328 adds r3, #40 @ 0x28 + 8003a62: 881b ldrh r3, [r3, #0] + 8003a64: 461a mov r2, r3 + 8003a66: 693b ldr r3, [r7, #16] + 8003a68: 4293 cmp r3, r2 + 8003a6a: d13f bne.n 8003aec + 8003a6c: 68fb ldr r3, [r7, #12] + 8003a6e: 2b00 cmp r3, #0 + 8003a70: d03c beq.n 8003aec tmpreg = USBx_HC(chnum)->HCCHAR; - 8003a16: 69bb ldr r3, [r7, #24] - 8003a18: 015a lsls r2, r3, #5 - 8003a1a: 6a3b ldr r3, [r7, #32] - 8003a1c: 4413 add r3, r2 - 8003a1e: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8003a22: 681b ldr r3, [r3, #0] - 8003a24: 60bb str r3, [r7, #8] + 8003a72: 69bb ldr r3, [r7, #24] + 8003a74: 015a lsls r2, r3, #5 + 8003a76: 6a3b ldr r3, [r7, #32] + 8003a78: 4413 add r3, r2 + 8003a7a: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8003a7e: 681b ldr r3, [r3, #0] + 8003a80: 60bb str r3, [r7, #8] tmpreg &= ~USB_OTG_HCCHAR_CHDIS; - 8003a26: 68bb ldr r3, [r7, #8] - 8003a28: f023 4380 bic.w r3, r3, #1073741824 @ 0x40000000 - 8003a2c: 60bb str r3, [r7, #8] + 8003a82: 68bb ldr r3, [r7, #8] + 8003a84: f023 4380 bic.w r3, r3, #1073741824 @ 0x40000000 + 8003a88: 60bb str r3, [r7, #8] tmpreg |= USB_OTG_HCCHAR_CHENA; - 8003a2e: 68bb ldr r3, [r7, #8] - 8003a30: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 - 8003a34: 60bb str r3, [r7, #8] + 8003a8a: 68bb ldr r3, [r7, #8] + 8003a8c: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 8003a90: 60bb str r3, [r7, #8] USBx_HC(chnum)->HCCHAR = tmpreg; - 8003a36: 69bb ldr r3, [r7, #24] - 8003a38: 015a lsls r2, r3, #5 - 8003a3a: 6a3b ldr r3, [r7, #32] - 8003a3c: 4413 add r3, r2 - 8003a3e: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8003a42: 461a mov r2, r3 - 8003a44: 68bb ldr r3, [r7, #8] - 8003a46: 6013 str r3, [r2, #0] + 8003a92: 69bb ldr r3, [r7, #24] + 8003a94: 015a lsls r2, r3, #5 + 8003a96: 6a3b ldr r3, [r7, #32] + 8003a98: 4413 add r3, r2 + 8003a9a: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8003a9e: 461a mov r2, r3 + 8003aa0: 68bb ldr r3, [r7, #8] + 8003aa2: 6013 str r3, [r2, #0] hhcd->hc[chnum].toggle_in ^= 1U; - 8003a48: 6879 ldr r1, [r7, #4] - 8003a4a: 69ba ldr r2, [r7, #24] - 8003a4c: 4613 mov r3, r2 - 8003a4e: 011b lsls r3, r3, #4 - 8003a50: 1a9b subs r3, r3, r2 - 8003a52: 009b lsls r3, r3, #2 - 8003a54: 440b add r3, r1 - 8003a56: 333c adds r3, #60 @ 0x3c - 8003a58: 781b ldrb r3, [r3, #0] - 8003a5a: f083 0301 eor.w r3, r3, #1 - 8003a5e: b2d8 uxtb r0, r3 - 8003a60: 6879 ldr r1, [r7, #4] - 8003a62: 69ba ldr r2, [r7, #24] - 8003a64: 4613 mov r3, r2 - 8003a66: 011b lsls r3, r3, #4 - 8003a68: 1a9b subs r3, r3, r2 - 8003a6a: 009b lsls r3, r3, #2 - 8003a6c: 440b add r3, r1 - 8003a6e: 333c adds r3, #60 @ 0x3c - 8003a70: 4602 mov r2, r0 - 8003a72: 701a strb r2, [r3, #0] + 8003aa4: 6879 ldr r1, [r7, #4] + 8003aa6: 69ba ldr r2, [r7, #24] + 8003aa8: 4613 mov r3, r2 + 8003aaa: 011b lsls r3, r3, #4 + 8003aac: 1a9b subs r3, r3, r2 + 8003aae: 009b lsls r3, r3, #2 + 8003ab0: 440b add r3, r1 + 8003ab2: 333c adds r3, #60 @ 0x3c + 8003ab4: 781b ldrb r3, [r3, #0] + 8003ab6: f083 0301 eor.w r3, r3, #1 + 8003aba: b2d8 uxtb r0, r3 + 8003abc: 6879 ldr r1, [r7, #4] + 8003abe: 69ba ldr r2, [r7, #24] + 8003ac0: 4613 mov r3, r2 + 8003ac2: 011b lsls r3, r3, #4 + 8003ac4: 1a9b subs r3, r3, r2 + 8003ac6: 009b lsls r3, r3, #2 + 8003ac8: 440b add r3, r1 + 8003aca: 333c adds r3, #60 @ 0x3c + 8003acc: 4602 mov r2, r0 + 8003ace: 701a strb r2, [r3, #0] break; - 8003a74: e00c b.n 8003a90 + 8003ad0: e00c b.n 8003aec hhcd->hc[chnum].urb_state = URB_ERROR; - 8003a76: 6879 ldr r1, [r7, #4] - 8003a78: 69ba ldr r2, [r7, #24] - 8003a7a: 4613 mov r3, r2 - 8003a7c: 011b lsls r3, r3, #4 - 8003a7e: 1a9b subs r3, r3, r2 - 8003a80: 009b lsls r3, r3, #2 - 8003a82: 440b add r3, r1 - 8003a84: 334c adds r3, #76 @ 0x4c - 8003a86: 2204 movs r2, #4 - 8003a88: 701a strb r2, [r3, #0] + 8003ad2: 6879 ldr r1, [r7, #4] + 8003ad4: 69ba ldr r2, [r7, #24] + 8003ad6: 4613 mov r3, r2 + 8003ad8: 011b lsls r3, r3, #4 + 8003ada: 1a9b subs r3, r3, r2 + 8003adc: 009b lsls r3, r3, #2 + 8003ade: 440b add r3, r1 + 8003ae0: 334c adds r3, #76 @ 0x4c + 8003ae2: 2204 movs r2, #4 + 8003ae4: 701a strb r2, [r3, #0] break; - 8003a8a: e001 b.n 8003a90 + 8003ae6: e001 b.n 8003aec break; - 8003a8c: bf00 nop - 8003a8e: e000 b.n 8003a92 + 8003ae8: bf00 nop + 8003aea: e000 b.n 8003aee break; - 8003a90: bf00 nop + 8003aec: bf00 nop } } - 8003a92: bf00 nop - 8003a94: 3728 adds r7, #40 @ 0x28 - 8003a96: 46bd mov sp, r7 - 8003a98: bd80 pop {r7, pc} + 8003aee: bf00 nop + 8003af0: 3728 adds r7, #40 @ 0x28 + 8003af2: 46bd mov sp, r7 + 8003af4: bd80 pop {r7, pc} -08003a9a : +08003af6 : * @brief Handle Host Port interrupt requests. * @param hhcd HCD handle * @retval None */ static void HCD_Port_IRQHandler(HCD_HandleTypeDef *hhcd) { - 8003a9a: b580 push {r7, lr} - 8003a9c: b086 sub sp, #24 - 8003a9e: af00 add r7, sp, #0 - 8003aa0: 6078 str r0, [r7, #4] + 8003af6: b580 push {r7, lr} + 8003af8: b086 sub sp, #24 + 8003afa: af00 add r7, sp, #0 + 8003afc: 6078 str r0, [r7, #4] const USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; - 8003aa2: 687b ldr r3, [r7, #4] - 8003aa4: 681b ldr r3, [r3, #0] - 8003aa6: 617b str r3, [r7, #20] + 8003afe: 687b ldr r3, [r7, #4] + 8003b00: 681b ldr r3, [r3, #0] + 8003b02: 617b str r3, [r7, #20] uint32_t USBx_BASE = (uint32_t)USBx; - 8003aa8: 697b ldr r3, [r7, #20] - 8003aaa: 613b str r3, [r7, #16] + 8003b04: 697b ldr r3, [r7, #20] + 8003b06: 613b str r3, [r7, #16] __IO uint32_t hprt0; __IO uint32_t hprt0_dup; /* Handle Host Port Interrupts */ hprt0 = USBx_HPRT0; - 8003aac: 693b ldr r3, [r7, #16] - 8003aae: f503 6388 add.w r3, r3, #1088 @ 0x440 - 8003ab2: 681b ldr r3, [r3, #0] - 8003ab4: 60fb str r3, [r7, #12] + 8003b08: 693b ldr r3, [r7, #16] + 8003b0a: f503 6388 add.w r3, r3, #1088 @ 0x440 + 8003b0e: 681b ldr r3, [r3, #0] + 8003b10: 60fb str r3, [r7, #12] hprt0_dup = USBx_HPRT0; - 8003ab6: 693b ldr r3, [r7, #16] - 8003ab8: f503 6388 add.w r3, r3, #1088 @ 0x440 - 8003abc: 681b ldr r3, [r3, #0] - 8003abe: 60bb str r3, [r7, #8] + 8003b12: 693b ldr r3, [r7, #16] + 8003b14: f503 6388 add.w r3, r3, #1088 @ 0x440 + 8003b18: 681b ldr r3, [r3, #0] + 8003b1a: 60bb str r3, [r7, #8] hprt0_dup &= ~(USB_OTG_HPRT_PENA | USB_OTG_HPRT_PCDET | \ - 8003ac0: 68bb ldr r3, [r7, #8] - 8003ac2: f023 032e bic.w r3, r3, #46 @ 0x2e - 8003ac6: 60bb str r3, [r7, #8] + 8003b1c: 68bb ldr r3, [r7, #8] + 8003b1e: f023 032e bic.w r3, r3, #46 @ 0x2e + 8003b22: 60bb str r3, [r7, #8] USB_OTG_HPRT_PENCHNG | USB_OTG_HPRT_POCCHNG); /* Check whether Port Connect detected */ if ((hprt0 & USB_OTG_HPRT_PCDET) == USB_OTG_HPRT_PCDET) - 8003ac8: 68fb ldr r3, [r7, #12] - 8003aca: f003 0302 and.w r3, r3, #2 - 8003ace: 2b02 cmp r3, #2 - 8003ad0: d10b bne.n 8003aea + 8003b24: 68fb ldr r3, [r7, #12] + 8003b26: f003 0302 and.w r3, r3, #2 + 8003b2a: 2b02 cmp r3, #2 + 8003b2c: d10b bne.n 8003b46 { if ((hprt0 & USB_OTG_HPRT_PCSTS) == USB_OTG_HPRT_PCSTS) - 8003ad2: 68fb ldr r3, [r7, #12] - 8003ad4: f003 0301 and.w r3, r3, #1 - 8003ad8: 2b01 cmp r3, #1 - 8003ada: d102 bne.n 8003ae2 + 8003b2e: 68fb ldr r3, [r7, #12] + 8003b30: f003 0301 and.w r3, r3, #1 + 8003b34: 2b01 cmp r3, #1 + 8003b36: d102 bne.n 8003b3e { #if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) hhcd->ConnectCallback(hhcd); #else HAL_HCD_Connect_Callback(hhcd); - 8003adc: 6878 ldr r0, [r7, #4] - 8003ade: f004 f945 bl 8007d6c + 8003b38: 6878 ldr r0, [r7, #4] + 8003b3a: f004 f93f bl 8007dbc #endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ } hprt0_dup |= USB_OTG_HPRT_PCDET; - 8003ae2: 68bb ldr r3, [r7, #8] - 8003ae4: f043 0302 orr.w r3, r3, #2 - 8003ae8: 60bb str r3, [r7, #8] + 8003b3e: 68bb ldr r3, [r7, #8] + 8003b40: f043 0302 orr.w r3, r3, #2 + 8003b44: 60bb str r3, [r7, #8] } /* Check whether Port Enable Changed */ if ((hprt0 & USB_OTG_HPRT_PENCHNG) == USB_OTG_HPRT_PENCHNG) - 8003aea: 68fb ldr r3, [r7, #12] - 8003aec: f003 0308 and.w r3, r3, #8 - 8003af0: 2b08 cmp r3, #8 - 8003af2: d132 bne.n 8003b5a + 8003b46: 68fb ldr r3, [r7, #12] + 8003b48: f003 0308 and.w r3, r3, #8 + 8003b4c: 2b08 cmp r3, #8 + 8003b4e: d132 bne.n 8003bb6 { hprt0_dup |= USB_OTG_HPRT_PENCHNG; - 8003af4: 68bb ldr r3, [r7, #8] - 8003af6: f043 0308 orr.w r3, r3, #8 - 8003afa: 60bb str r3, [r7, #8] + 8003b50: 68bb ldr r3, [r7, #8] + 8003b52: f043 0308 orr.w r3, r3, #8 + 8003b56: 60bb str r3, [r7, #8] if ((hprt0 & USB_OTG_HPRT_PENA) == USB_OTG_HPRT_PENA) - 8003afc: 68fb ldr r3, [r7, #12] - 8003afe: f003 0304 and.w r3, r3, #4 - 8003b02: 2b04 cmp r3, #4 - 8003b04: d126 bne.n 8003b54 + 8003b58: 68fb ldr r3, [r7, #12] + 8003b5a: f003 0304 and.w r3, r3, #4 + 8003b5e: 2b04 cmp r3, #4 + 8003b60: d126 bne.n 8003bb0 { if (hhcd->Init.phy_itface == USB_OTG_EMBEDDED_PHY) - 8003b06: 687b ldr r3, [r7, #4] - 8003b08: 7a5b ldrb r3, [r3, #9] - 8003b0a: 2b02 cmp r3, #2 - 8003b0c: d113 bne.n 8003b36 + 8003b62: 687b ldr r3, [r7, #4] + 8003b64: 7a5b ldrb r3, [r3, #9] + 8003b66: 2b02 cmp r3, #2 + 8003b68: d113 bne.n 8003b92 { if ((hprt0 & USB_OTG_HPRT_PSPD) == (HPRT0_PRTSPD_LOW_SPEED << 17)) - 8003b0e: 68fb ldr r3, [r7, #12] - 8003b10: f403 23c0 and.w r3, r3, #393216 @ 0x60000 - 8003b14: f5b3 2f80 cmp.w r3, #262144 @ 0x40000 - 8003b18: d106 bne.n 8003b28 + 8003b6a: 68fb ldr r3, [r7, #12] + 8003b6c: f403 23c0 and.w r3, r3, #393216 @ 0x60000 + 8003b70: f5b3 2f80 cmp.w r3, #262144 @ 0x40000 + 8003b74: d106 bne.n 8003b84 { (void)USB_InitFSLSPClkSel(hhcd->Instance, HCFG_6_MHZ); - 8003b1a: 687b ldr r3, [r7, #4] - 8003b1c: 681b ldr r3, [r3, #0] - 8003b1e: 2102 movs r1, #2 - 8003b20: 4618 mov r0, r3 - 8003b22: f002 fd59 bl 80065d8 - 8003b26: e011 b.n 8003b4c + 8003b76: 687b ldr r3, [r7, #4] + 8003b78: 681b ldr r3, [r3, #0] + 8003b7a: 2102 movs r1, #2 + 8003b7c: 4618 mov r0, r3 + 8003b7e: f002 fd59 bl 8006634 + 8003b82: e011 b.n 8003ba8 } else { (void)USB_InitFSLSPClkSel(hhcd->Instance, HCFG_48_MHZ); - 8003b28: 687b ldr r3, [r7, #4] - 8003b2a: 681b ldr r3, [r3, #0] - 8003b2c: 2101 movs r1, #1 - 8003b2e: 4618 mov r0, r3 - 8003b30: f002 fd52 bl 80065d8 - 8003b34: e00a b.n 8003b4c + 8003b84: 687b ldr r3, [r7, #4] + 8003b86: 681b ldr r3, [r3, #0] + 8003b88: 2101 movs r1, #1 + 8003b8a: 4618 mov r0, r3 + 8003b8c: f002 fd52 bl 8006634 + 8003b90: e00a b.n 8003ba8 } } else { if (hhcd->Init.speed == HCD_SPEED_FULL) - 8003b36: 687b ldr r3, [r7, #4] - 8003b38: 79db ldrb r3, [r3, #7] - 8003b3a: 2b01 cmp r3, #1 - 8003b3c: d106 bne.n 8003b4c + 8003b92: 687b ldr r3, [r7, #4] + 8003b94: 79db ldrb r3, [r3, #7] + 8003b96: 2b01 cmp r3, #1 + 8003b98: d106 bne.n 8003ba8 { USBx_HOST->HFIR = HFIR_60_MHZ; - 8003b3e: 693b ldr r3, [r7, #16] - 8003b40: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8003b44: 461a mov r2, r3 - 8003b46: f64e 2360 movw r3, #60000 @ 0xea60 - 8003b4a: 6053 str r3, [r2, #4] + 8003b9a: 693b ldr r3, [r7, #16] + 8003b9c: f503 6380 add.w r3, r3, #1024 @ 0x400 + 8003ba0: 461a mov r2, r3 + 8003ba2: f64e 2360 movw r3, #60000 @ 0xea60 + 8003ba6: 6053 str r3, [r2, #4] } } #if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) hhcd->PortEnabledCallback(hhcd); #else HAL_HCD_PortEnabled_Callback(hhcd); - 8003b4c: 6878 ldr r0, [r7, #4] - 8003b4e: f004 f93b bl 8007dc8 - 8003b52: e002 b.n 8003b5a + 8003ba8: 6878 ldr r0, [r7, #4] + 8003baa: f004 f935 bl 8007e18 + 8003bae: e002 b.n 8003bb6 else { #if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) hhcd->PortDisabledCallback(hhcd); #else HAL_HCD_PortDisabled_Callback(hhcd); - 8003b54: 6878 ldr r0, [r7, #4] - 8003b56: f004 f945 bl 8007de4 + 8003bb0: 6878 ldr r0, [r7, #4] + 8003bb2: f004 f93f bl 8007e34 #endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ } } /* Check for an overcurrent */ if ((hprt0 & USB_OTG_HPRT_POCCHNG) == USB_OTG_HPRT_POCCHNG) - 8003b5a: 68fb ldr r3, [r7, #12] - 8003b5c: f003 0320 and.w r3, r3, #32 - 8003b60: 2b20 cmp r3, #32 - 8003b62: d103 bne.n 8003b6c + 8003bb6: 68fb ldr r3, [r7, #12] + 8003bb8: f003 0320 and.w r3, r3, #32 + 8003bbc: 2b20 cmp r3, #32 + 8003bbe: d103 bne.n 8003bc8 { hprt0_dup |= USB_OTG_HPRT_POCCHNG; - 8003b64: 68bb ldr r3, [r7, #8] - 8003b66: f043 0320 orr.w r3, r3, #32 - 8003b6a: 60bb str r3, [r7, #8] + 8003bc0: 68bb ldr r3, [r7, #8] + 8003bc2: f043 0320 orr.w r3, r3, #32 + 8003bc6: 60bb str r3, [r7, #8] } /* Clear Port Interrupts */ USBx_HPRT0 = hprt0_dup; - 8003b6c: 693b ldr r3, [r7, #16] - 8003b6e: f503 6388 add.w r3, r3, #1088 @ 0x440 - 8003b72: 461a mov r2, r3 - 8003b74: 68bb ldr r3, [r7, #8] - 8003b76: 6013 str r3, [r2, #0] + 8003bc8: 693b ldr r3, [r7, #16] + 8003bca: f503 6388 add.w r3, r3, #1088 @ 0x440 + 8003bce: 461a mov r2, r3 + 8003bd0: 68bb ldr r3, [r7, #8] + 8003bd2: 6013 str r3, [r2, #0] } - 8003b78: bf00 nop - 8003b7a: 3718 adds r7, #24 - 8003b7c: 46bd mov sp, r7 - 8003b7e: bd80 pop {r7, pc} + 8003bd4: bf00 nop + 8003bd6: 3718 adds r7, #24 + 8003bd8: 46bd mov sp, r7 + 8003bda: bd80 pop {r7, pc} -08003b80 : +08003bdc : * @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) { - 8003b80: b580 push {r7, lr} - 8003b82: b084 sub sp, #16 - 8003b84: af00 add r7, sp, #0 - 8003b86: 6078 str r0, [r7, #4] + 8003bdc: b580 push {r7, lr} + 8003bde: b084 sub sp, #16 + 8003be0: af00 add r7, sp, #0 + 8003be2: 6078 str r0, [r7, #4] uint32_t freqrange; uint32_t pclk1; /* Check the I2C handle allocation */ if (hi2c == NULL) - 8003b88: 687b ldr r3, [r7, #4] - 8003b8a: 2b00 cmp r3, #0 - 8003b8c: d101 bne.n 8003b92 + 8003be4: 687b ldr r3, [r7, #4] + 8003be6: 2b00 cmp r3, #0 + 8003be8: d101 bne.n 8003bee { return HAL_ERROR; - 8003b8e: 2301 movs r3, #1 - 8003b90: e12b b.n 8003dea + 8003bea: 2301 movs r3, #1 + 8003bec: e12b b.n 8003e46 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) - 8003b92: 687b ldr r3, [r7, #4] - 8003b94: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 8003b98: b2db uxtb r3, r3 - 8003b9a: 2b00 cmp r3, #0 - 8003b9c: d106 bne.n 8003bac + 8003bee: 687b ldr r3, [r7, #4] + 8003bf0: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 8003bf4: b2db uxtb r3, r3 + 8003bf6: 2b00 cmp r3, #0 + 8003bf8: d106 bne.n 8003c08 { /* Allocate lock resource and initialize it */ hi2c->Lock = HAL_UNLOCKED; - 8003b9e: 687b ldr r3, [r7, #4] - 8003ba0: 2200 movs r2, #0 - 8003ba2: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8003bfa: 687b ldr r3, [r7, #4] + 8003bfc: 2200 movs r2, #0 + 8003bfe: 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); - 8003ba6: 6878 ldr r0, [r7, #4] - 8003ba8: f7fd f930 bl 8000e0c + 8003c02: 6878 ldr r0, [r7, #4] + 8003c04: f7fd f954 bl 8000eb0 #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ } hi2c->State = HAL_I2C_STATE_BUSY; - 8003bac: 687b ldr r3, [r7, #4] - 8003bae: 2224 movs r2, #36 @ 0x24 - 8003bb0: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8003c08: 687b ldr r3, [r7, #4] + 8003c0a: 2224 movs r2, #36 @ 0x24 + 8003c0c: f883 203d strb.w r2, [r3, #61] @ 0x3d /* Disable the selected I2C peripheral */ __HAL_I2C_DISABLE(hi2c); - 8003bb4: 687b ldr r3, [r7, #4] - 8003bb6: 681b ldr r3, [r3, #0] - 8003bb8: 681a ldr r2, [r3, #0] - 8003bba: 687b ldr r3, [r7, #4] - 8003bbc: 681b ldr r3, [r3, #0] - 8003bbe: f022 0201 bic.w r2, r2, #1 - 8003bc2: 601a str r2, [r3, #0] + 8003c10: 687b ldr r3, [r7, #4] + 8003c12: 681b ldr r3, [r3, #0] + 8003c14: 681a ldr r2, [r3, #0] + 8003c16: 687b ldr r3, [r7, #4] + 8003c18: 681b ldr r3, [r3, #0] + 8003c1a: f022 0201 bic.w r2, r2, #1 + 8003c1e: 601a str r2, [r3, #0] /*Reset I2C*/ hi2c->Instance->CR1 |= I2C_CR1_SWRST; - 8003bc4: 687b ldr r3, [r7, #4] - 8003bc6: 681b ldr r3, [r3, #0] - 8003bc8: 681a ldr r2, [r3, #0] - 8003bca: 687b ldr r3, [r7, #4] - 8003bcc: 681b ldr r3, [r3, #0] - 8003bce: f442 4200 orr.w r2, r2, #32768 @ 0x8000 - 8003bd2: 601a str r2, [r3, #0] + 8003c20: 687b ldr r3, [r7, #4] + 8003c22: 681b ldr r3, [r3, #0] + 8003c24: 681a ldr r2, [r3, #0] + 8003c26: 687b ldr r3, [r7, #4] + 8003c28: 681b ldr r3, [r3, #0] + 8003c2a: f442 4200 orr.w r2, r2, #32768 @ 0x8000 + 8003c2e: 601a str r2, [r3, #0] hi2c->Instance->CR1 &= ~I2C_CR1_SWRST; - 8003bd4: 687b ldr r3, [r7, #4] - 8003bd6: 681b ldr r3, [r3, #0] - 8003bd8: 681a ldr r2, [r3, #0] - 8003bda: 687b ldr r3, [r7, #4] - 8003bdc: 681b ldr r3, [r3, #0] - 8003bde: f422 4200 bic.w r2, r2, #32768 @ 0x8000 - 8003be2: 601a str r2, [r3, #0] + 8003c30: 687b ldr r3, [r7, #4] + 8003c32: 681b ldr r3, [r3, #0] + 8003c34: 681a ldr r2, [r3, #0] + 8003c36: 687b ldr r3, [r7, #4] + 8003c38: 681b ldr r3, [r3, #0] + 8003c3a: f422 4200 bic.w r2, r2, #32768 @ 0x8000 + 8003c3e: 601a str r2, [r3, #0] /* Get PCLK1 frequency */ pclk1 = HAL_RCC_GetPCLK1Freq(); - 8003be4: f001 f90c bl 8004e00 - 8003be8: 60f8 str r0, [r7, #12] + 8003c40: f001 f90c bl 8004e5c + 8003c44: 60f8 str r0, [r7, #12] /* Check the minimum allowed PCLK1 frequency */ if (I2C_MIN_PCLK_FREQ(pclk1, hi2c->Init.ClockSpeed) == 1U) - 8003bea: 687b ldr r3, [r7, #4] - 8003bec: 685b ldr r3, [r3, #4] - 8003bee: 4a81 ldr r2, [pc, #516] @ (8003df4 ) - 8003bf0: 4293 cmp r3, r2 - 8003bf2: d807 bhi.n 8003c04 - 8003bf4: 68fb ldr r3, [r7, #12] - 8003bf6: 4a80 ldr r2, [pc, #512] @ (8003df8 ) - 8003bf8: 4293 cmp r3, r2 - 8003bfa: bf94 ite ls - 8003bfc: 2301 movls r3, #1 - 8003bfe: 2300 movhi r3, #0 - 8003c00: b2db uxtb r3, r3 - 8003c02: e006 b.n 8003c12 - 8003c04: 68fb ldr r3, [r7, #12] - 8003c06: 4a7d ldr r2, [pc, #500] @ (8003dfc ) - 8003c08: 4293 cmp r3, r2 - 8003c0a: bf94 ite ls - 8003c0c: 2301 movls r3, #1 - 8003c0e: 2300 movhi r3, #0 - 8003c10: b2db uxtb r3, r3 - 8003c12: 2b00 cmp r3, #0 - 8003c14: d001 beq.n 8003c1a + 8003c46: 687b ldr r3, [r7, #4] + 8003c48: 685b ldr r3, [r3, #4] + 8003c4a: 4a81 ldr r2, [pc, #516] @ (8003e50 ) + 8003c4c: 4293 cmp r3, r2 + 8003c4e: d807 bhi.n 8003c60 + 8003c50: 68fb ldr r3, [r7, #12] + 8003c52: 4a80 ldr r2, [pc, #512] @ (8003e54 ) + 8003c54: 4293 cmp r3, r2 + 8003c56: bf94 ite ls + 8003c58: 2301 movls r3, #1 + 8003c5a: 2300 movhi r3, #0 + 8003c5c: b2db uxtb r3, r3 + 8003c5e: e006 b.n 8003c6e + 8003c60: 68fb ldr r3, [r7, #12] + 8003c62: 4a7d ldr r2, [pc, #500] @ (8003e58 ) + 8003c64: 4293 cmp r3, r2 + 8003c66: bf94 ite ls + 8003c68: 2301 movls r3, #1 + 8003c6a: 2300 movhi r3, #0 + 8003c6c: b2db uxtb r3, r3 + 8003c6e: 2b00 cmp r3, #0 + 8003c70: d001 beq.n 8003c76 { return HAL_ERROR; - 8003c16: 2301 movs r3, #1 - 8003c18: e0e7 b.n 8003dea + 8003c72: 2301 movs r3, #1 + 8003c74: e0e7 b.n 8003e46 } /* Calculate frequency range */ freqrange = I2C_FREQRANGE(pclk1); - 8003c1a: 68fb ldr r3, [r7, #12] - 8003c1c: 4a78 ldr r2, [pc, #480] @ (8003e00 ) - 8003c1e: fba2 2303 umull r2, r3, r2, r3 - 8003c22: 0c9b lsrs r3, r3, #18 - 8003c24: 60bb str r3, [r7, #8] + 8003c76: 68fb ldr r3, [r7, #12] + 8003c78: 4a78 ldr r2, [pc, #480] @ (8003e5c ) + 8003c7a: fba2 2303 umull r2, r3, r2, r3 + 8003c7e: 0c9b lsrs r3, r3, #18 + 8003c80: 60bb str r3, [r7, #8] /*---------------------------- I2Cx CR2 Configuration ----------------------*/ /* Configure I2Cx: Frequency range */ MODIFY_REG(hi2c->Instance->CR2, I2C_CR2_FREQ, freqrange); - 8003c26: 687b ldr r3, [r7, #4] - 8003c28: 681b ldr r3, [r3, #0] - 8003c2a: 685b ldr r3, [r3, #4] - 8003c2c: f023 013f bic.w r1, r3, #63 @ 0x3f - 8003c30: 687b ldr r3, [r7, #4] - 8003c32: 681b ldr r3, [r3, #0] - 8003c34: 68ba ldr r2, [r7, #8] - 8003c36: 430a orrs r2, r1 - 8003c38: 605a str r2, [r3, #4] + 8003c82: 687b ldr r3, [r7, #4] + 8003c84: 681b ldr r3, [r3, #0] + 8003c86: 685b ldr r3, [r3, #4] + 8003c88: f023 013f bic.w r1, r3, #63 @ 0x3f + 8003c8c: 687b ldr r3, [r7, #4] + 8003c8e: 681b ldr r3, [r3, #0] + 8003c90: 68ba ldr r2, [r7, #8] + 8003c92: 430a orrs r2, r1 + 8003c94: 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)); - 8003c3a: 687b ldr r3, [r7, #4] - 8003c3c: 681b ldr r3, [r3, #0] - 8003c3e: 6a1b ldr r3, [r3, #32] - 8003c40: f023 013f bic.w r1, r3, #63 @ 0x3f - 8003c44: 687b ldr r3, [r7, #4] - 8003c46: 685b ldr r3, [r3, #4] - 8003c48: 4a6a ldr r2, [pc, #424] @ (8003df4 ) - 8003c4a: 4293 cmp r3, r2 - 8003c4c: d802 bhi.n 8003c54 - 8003c4e: 68bb ldr r3, [r7, #8] - 8003c50: 3301 adds r3, #1 - 8003c52: e009 b.n 8003c68 - 8003c54: 68bb ldr r3, [r7, #8] - 8003c56: f44f 7296 mov.w r2, #300 @ 0x12c - 8003c5a: fb02 f303 mul.w r3, r2, r3 - 8003c5e: 4a69 ldr r2, [pc, #420] @ (8003e04 ) - 8003c60: fba2 2303 umull r2, r3, r2, r3 - 8003c64: 099b lsrs r3, r3, #6 - 8003c66: 3301 adds r3, #1 - 8003c68: 687a ldr r2, [r7, #4] - 8003c6a: 6812 ldr r2, [r2, #0] - 8003c6c: 430b orrs r3, r1 - 8003c6e: 6213 str r3, [r2, #32] + 8003c96: 687b ldr r3, [r7, #4] + 8003c98: 681b ldr r3, [r3, #0] + 8003c9a: 6a1b ldr r3, [r3, #32] + 8003c9c: f023 013f bic.w r1, r3, #63 @ 0x3f + 8003ca0: 687b ldr r3, [r7, #4] + 8003ca2: 685b ldr r3, [r3, #4] + 8003ca4: 4a6a ldr r2, [pc, #424] @ (8003e50 ) + 8003ca6: 4293 cmp r3, r2 + 8003ca8: d802 bhi.n 8003cb0 + 8003caa: 68bb ldr r3, [r7, #8] + 8003cac: 3301 adds r3, #1 + 8003cae: e009 b.n 8003cc4 + 8003cb0: 68bb ldr r3, [r7, #8] + 8003cb2: f44f 7296 mov.w r2, #300 @ 0x12c + 8003cb6: fb02 f303 mul.w r3, r2, r3 + 8003cba: 4a69 ldr r2, [pc, #420] @ (8003e60 ) + 8003cbc: fba2 2303 umull r2, r3, r2, r3 + 8003cc0: 099b lsrs r3, r3, #6 + 8003cc2: 3301 adds r3, #1 + 8003cc4: 687a ldr r2, [r7, #4] + 8003cc6: 6812 ldr r2, [r2, #0] + 8003cc8: 430b orrs r3, r1 + 8003cca: 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)); - 8003c70: 687b ldr r3, [r7, #4] - 8003c72: 681b ldr r3, [r3, #0] - 8003c74: 69db ldr r3, [r3, #28] - 8003c76: f423 424f bic.w r2, r3, #52992 @ 0xcf00 - 8003c7a: f022 02ff bic.w r2, r2, #255 @ 0xff - 8003c7e: 687b ldr r3, [r7, #4] - 8003c80: 685b ldr r3, [r3, #4] - 8003c82: 495c ldr r1, [pc, #368] @ (8003df4 ) - 8003c84: 428b cmp r3, r1 - 8003c86: d819 bhi.n 8003cbc - 8003c88: 68fb ldr r3, [r7, #12] - 8003c8a: 1e59 subs r1, r3, #1 - 8003c8c: 687b ldr r3, [r7, #4] - 8003c8e: 685b ldr r3, [r3, #4] - 8003c90: 005b lsls r3, r3, #1 - 8003c92: fbb1 f3f3 udiv r3, r1, r3 - 8003c96: 1c59 adds r1, r3, #1 - 8003c98: f640 73fc movw r3, #4092 @ 0xffc - 8003c9c: 400b ands r3, r1 - 8003c9e: 2b00 cmp r3, #0 - 8003ca0: d00a beq.n 8003cb8 - 8003ca2: 68fb ldr r3, [r7, #12] - 8003ca4: 1e59 subs r1, r3, #1 - 8003ca6: 687b ldr r3, [r7, #4] - 8003ca8: 685b ldr r3, [r3, #4] - 8003caa: 005b lsls r3, r3, #1 - 8003cac: fbb1 f3f3 udiv r3, r1, r3 - 8003cb0: 3301 adds r3, #1 - 8003cb2: f3c3 030b ubfx r3, r3, #0, #12 - 8003cb6: e051 b.n 8003d5c - 8003cb8: 2304 movs r3, #4 - 8003cba: e04f b.n 8003d5c - 8003cbc: 687b ldr r3, [r7, #4] - 8003cbe: 689b ldr r3, [r3, #8] - 8003cc0: 2b00 cmp r3, #0 - 8003cc2: d111 bne.n 8003ce8 - 8003cc4: 68fb ldr r3, [r7, #12] - 8003cc6: 1e58 subs r0, r3, #1 - 8003cc8: 687b ldr r3, [r7, #4] - 8003cca: 6859 ldr r1, [r3, #4] - 8003ccc: 460b mov r3, r1 - 8003cce: 005b lsls r3, r3, #1 - 8003cd0: 440b add r3, r1 - 8003cd2: fbb0 f3f3 udiv r3, r0, r3 - 8003cd6: 3301 adds r3, #1 - 8003cd8: f3c3 030b ubfx r3, r3, #0, #12 - 8003cdc: 2b00 cmp r3, #0 - 8003cde: bf0c ite eq - 8003ce0: 2301 moveq r3, #1 - 8003ce2: 2300 movne r3, #0 - 8003ce4: b2db uxtb r3, r3 - 8003ce6: e012 b.n 8003d0e - 8003ce8: 68fb ldr r3, [r7, #12] - 8003cea: 1e58 subs r0, r3, #1 - 8003cec: 687b ldr r3, [r7, #4] - 8003cee: 6859 ldr r1, [r3, #4] - 8003cf0: 460b mov r3, r1 - 8003cf2: 009b lsls r3, r3, #2 - 8003cf4: 440b add r3, r1 - 8003cf6: 0099 lsls r1, r3, #2 - 8003cf8: 440b add r3, r1 - 8003cfa: fbb0 f3f3 udiv r3, r0, r3 - 8003cfe: 3301 adds r3, #1 - 8003d00: f3c3 030b ubfx r3, r3, #0, #12 - 8003d04: 2b00 cmp r3, #0 - 8003d06: bf0c ite eq - 8003d08: 2301 moveq r3, #1 - 8003d0a: 2300 movne r3, #0 - 8003d0c: b2db uxtb r3, r3 - 8003d0e: 2b00 cmp r3, #0 - 8003d10: d001 beq.n 8003d16 - 8003d12: 2301 movs r3, #1 - 8003d14: e022 b.n 8003d5c - 8003d16: 687b ldr r3, [r7, #4] - 8003d18: 689b ldr r3, [r3, #8] - 8003d1a: 2b00 cmp r3, #0 - 8003d1c: d10e bne.n 8003d3c - 8003d1e: 68fb ldr r3, [r7, #12] - 8003d20: 1e58 subs r0, r3, #1 - 8003d22: 687b ldr r3, [r7, #4] - 8003d24: 6859 ldr r1, [r3, #4] - 8003d26: 460b mov r3, r1 - 8003d28: 005b lsls r3, r3, #1 - 8003d2a: 440b add r3, r1 - 8003d2c: fbb0 f3f3 udiv r3, r0, r3 - 8003d30: 3301 adds r3, #1 - 8003d32: f3c3 030b ubfx r3, r3, #0, #12 - 8003d36: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8003d3a: e00f b.n 8003d5c - 8003d3c: 68fb ldr r3, [r7, #12] - 8003d3e: 1e58 subs r0, r3, #1 - 8003d40: 687b ldr r3, [r7, #4] - 8003d42: 6859 ldr r1, [r3, #4] - 8003d44: 460b mov r3, r1 - 8003d46: 009b lsls r3, r3, #2 - 8003d48: 440b add r3, r1 - 8003d4a: 0099 lsls r1, r3, #2 - 8003d4c: 440b add r3, r1 - 8003d4e: fbb0 f3f3 udiv r3, r0, r3 - 8003d52: 3301 adds r3, #1 - 8003d54: f3c3 030b ubfx r3, r3, #0, #12 - 8003d58: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 8003d5c: 6879 ldr r1, [r7, #4] - 8003d5e: 6809 ldr r1, [r1, #0] - 8003d60: 4313 orrs r3, r2 - 8003d62: 61cb str r3, [r1, #28] + 8003ccc: 687b ldr r3, [r7, #4] + 8003cce: 681b ldr r3, [r3, #0] + 8003cd0: 69db ldr r3, [r3, #28] + 8003cd2: f423 424f bic.w r2, r3, #52992 @ 0xcf00 + 8003cd6: f022 02ff bic.w r2, r2, #255 @ 0xff + 8003cda: 687b ldr r3, [r7, #4] + 8003cdc: 685b ldr r3, [r3, #4] + 8003cde: 495c ldr r1, [pc, #368] @ (8003e50 ) + 8003ce0: 428b cmp r3, r1 + 8003ce2: d819 bhi.n 8003d18 + 8003ce4: 68fb ldr r3, [r7, #12] + 8003ce6: 1e59 subs r1, r3, #1 + 8003ce8: 687b ldr r3, [r7, #4] + 8003cea: 685b ldr r3, [r3, #4] + 8003cec: 005b lsls r3, r3, #1 + 8003cee: fbb1 f3f3 udiv r3, r1, r3 + 8003cf2: 1c59 adds r1, r3, #1 + 8003cf4: f640 73fc movw r3, #4092 @ 0xffc + 8003cf8: 400b ands r3, r1 + 8003cfa: 2b00 cmp r3, #0 + 8003cfc: d00a beq.n 8003d14 + 8003cfe: 68fb ldr r3, [r7, #12] + 8003d00: 1e59 subs r1, r3, #1 + 8003d02: 687b ldr r3, [r7, #4] + 8003d04: 685b ldr r3, [r3, #4] + 8003d06: 005b lsls r3, r3, #1 + 8003d08: fbb1 f3f3 udiv r3, r1, r3 + 8003d0c: 3301 adds r3, #1 + 8003d0e: f3c3 030b ubfx r3, r3, #0, #12 + 8003d12: e051 b.n 8003db8 + 8003d14: 2304 movs r3, #4 + 8003d16: e04f b.n 8003db8 + 8003d18: 687b ldr r3, [r7, #4] + 8003d1a: 689b ldr r3, [r3, #8] + 8003d1c: 2b00 cmp r3, #0 + 8003d1e: d111 bne.n 8003d44 + 8003d20: 68fb ldr r3, [r7, #12] + 8003d22: 1e58 subs r0, r3, #1 + 8003d24: 687b ldr r3, [r7, #4] + 8003d26: 6859 ldr r1, [r3, #4] + 8003d28: 460b mov r3, r1 + 8003d2a: 005b lsls r3, r3, #1 + 8003d2c: 440b add r3, r1 + 8003d2e: fbb0 f3f3 udiv r3, r0, r3 + 8003d32: 3301 adds r3, #1 + 8003d34: f3c3 030b ubfx r3, r3, #0, #12 + 8003d38: 2b00 cmp r3, #0 + 8003d3a: bf0c ite eq + 8003d3c: 2301 moveq r3, #1 + 8003d3e: 2300 movne r3, #0 + 8003d40: b2db uxtb r3, r3 + 8003d42: e012 b.n 8003d6a + 8003d44: 68fb ldr r3, [r7, #12] + 8003d46: 1e58 subs r0, r3, #1 + 8003d48: 687b ldr r3, [r7, #4] + 8003d4a: 6859 ldr r1, [r3, #4] + 8003d4c: 460b mov r3, r1 + 8003d4e: 009b lsls r3, r3, #2 + 8003d50: 440b add r3, r1 + 8003d52: 0099 lsls r1, r3, #2 + 8003d54: 440b add r3, r1 + 8003d56: fbb0 f3f3 udiv r3, r0, r3 + 8003d5a: 3301 adds r3, #1 + 8003d5c: f3c3 030b ubfx r3, r3, #0, #12 + 8003d60: 2b00 cmp r3, #0 + 8003d62: bf0c ite eq + 8003d64: 2301 moveq r3, #1 + 8003d66: 2300 movne r3, #0 + 8003d68: b2db uxtb r3, r3 + 8003d6a: 2b00 cmp r3, #0 + 8003d6c: d001 beq.n 8003d72 + 8003d6e: 2301 movs r3, #1 + 8003d70: e022 b.n 8003db8 + 8003d72: 687b ldr r3, [r7, #4] + 8003d74: 689b ldr r3, [r3, #8] + 8003d76: 2b00 cmp r3, #0 + 8003d78: d10e bne.n 8003d98 + 8003d7a: 68fb ldr r3, [r7, #12] + 8003d7c: 1e58 subs r0, r3, #1 + 8003d7e: 687b ldr r3, [r7, #4] + 8003d80: 6859 ldr r1, [r3, #4] + 8003d82: 460b mov r3, r1 + 8003d84: 005b lsls r3, r3, #1 + 8003d86: 440b add r3, r1 + 8003d88: fbb0 f3f3 udiv r3, r0, r3 + 8003d8c: 3301 adds r3, #1 + 8003d8e: f3c3 030b ubfx r3, r3, #0, #12 + 8003d92: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8003d96: e00f b.n 8003db8 + 8003d98: 68fb ldr r3, [r7, #12] + 8003d9a: 1e58 subs r0, r3, #1 + 8003d9c: 687b ldr r3, [r7, #4] + 8003d9e: 6859 ldr r1, [r3, #4] + 8003da0: 460b mov r3, r1 + 8003da2: 009b lsls r3, r3, #2 + 8003da4: 440b add r3, r1 + 8003da6: 0099 lsls r1, r3, #2 + 8003da8: 440b add r3, r1 + 8003daa: fbb0 f3f3 udiv r3, r0, r3 + 8003dae: 3301 adds r3, #1 + 8003db0: f3c3 030b ubfx r3, r3, #0, #12 + 8003db4: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 8003db8: 6879 ldr r1, [r7, #4] + 8003dba: 6809 ldr r1, [r1, #0] + 8003dbc: 4313 orrs r3, r2 + 8003dbe: 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)); - 8003d64: 687b ldr r3, [r7, #4] - 8003d66: 681b ldr r3, [r3, #0] - 8003d68: 681b ldr r3, [r3, #0] - 8003d6a: f023 01c0 bic.w r1, r3, #192 @ 0xc0 - 8003d6e: 687b ldr r3, [r7, #4] - 8003d70: 69da ldr r2, [r3, #28] - 8003d72: 687b ldr r3, [r7, #4] - 8003d74: 6a1b ldr r3, [r3, #32] - 8003d76: 431a orrs r2, r3 - 8003d78: 687b ldr r3, [r7, #4] - 8003d7a: 681b ldr r3, [r3, #0] - 8003d7c: 430a orrs r2, r1 - 8003d7e: 601a str r2, [r3, #0] + 8003dc0: 687b ldr r3, [r7, #4] + 8003dc2: 681b ldr r3, [r3, #0] + 8003dc4: 681b ldr r3, [r3, #0] + 8003dc6: f023 01c0 bic.w r1, r3, #192 @ 0xc0 + 8003dca: 687b ldr r3, [r7, #4] + 8003dcc: 69da ldr r2, [r3, #28] + 8003dce: 687b ldr r3, [r7, #4] + 8003dd0: 6a1b ldr r3, [r3, #32] + 8003dd2: 431a orrs r2, r3 + 8003dd4: 687b ldr r3, [r7, #4] + 8003dd6: 681b ldr r3, [r3, #0] + 8003dd8: 430a orrs r2, r1 + 8003dda: 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)); - 8003d80: 687b ldr r3, [r7, #4] - 8003d82: 681b ldr r3, [r3, #0] - 8003d84: 689b ldr r3, [r3, #8] - 8003d86: f423 4303 bic.w r3, r3, #33536 @ 0x8300 - 8003d8a: f023 03ff bic.w r3, r3, #255 @ 0xff - 8003d8e: 687a ldr r2, [r7, #4] - 8003d90: 6911 ldr r1, [r2, #16] - 8003d92: 687a ldr r2, [r7, #4] - 8003d94: 68d2 ldr r2, [r2, #12] - 8003d96: 4311 orrs r1, r2 - 8003d98: 687a ldr r2, [r7, #4] - 8003d9a: 6812 ldr r2, [r2, #0] - 8003d9c: 430b orrs r3, r1 - 8003d9e: 6093 str r3, [r2, #8] + 8003ddc: 687b ldr r3, [r7, #4] + 8003dde: 681b ldr r3, [r3, #0] + 8003de0: 689b ldr r3, [r3, #8] + 8003de2: f423 4303 bic.w r3, r3, #33536 @ 0x8300 + 8003de6: f023 03ff bic.w r3, r3, #255 @ 0xff + 8003dea: 687a ldr r2, [r7, #4] + 8003dec: 6911 ldr r1, [r2, #16] + 8003dee: 687a ldr r2, [r7, #4] + 8003df0: 68d2 ldr r2, [r2, #12] + 8003df2: 4311 orrs r1, r2 + 8003df4: 687a ldr r2, [r7, #4] + 8003df6: 6812 ldr r2, [r2, #0] + 8003df8: 430b orrs r3, r1 + 8003dfa: 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)); - 8003da0: 687b ldr r3, [r7, #4] - 8003da2: 681b ldr r3, [r3, #0] - 8003da4: 68db ldr r3, [r3, #12] - 8003da6: f023 01ff bic.w r1, r3, #255 @ 0xff - 8003daa: 687b ldr r3, [r7, #4] - 8003dac: 695a ldr r2, [r3, #20] - 8003dae: 687b ldr r3, [r7, #4] - 8003db0: 699b ldr r3, [r3, #24] - 8003db2: 431a orrs r2, r3 - 8003db4: 687b ldr r3, [r7, #4] - 8003db6: 681b ldr r3, [r3, #0] - 8003db8: 430a orrs r2, r1 - 8003dba: 60da str r2, [r3, #12] + 8003dfc: 687b ldr r3, [r7, #4] + 8003dfe: 681b ldr r3, [r3, #0] + 8003e00: 68db ldr r3, [r3, #12] + 8003e02: f023 01ff bic.w r1, r3, #255 @ 0xff + 8003e06: 687b ldr r3, [r7, #4] + 8003e08: 695a ldr r2, [r3, #20] + 8003e0a: 687b ldr r3, [r7, #4] + 8003e0c: 699b ldr r3, [r3, #24] + 8003e0e: 431a orrs r2, r3 + 8003e10: 687b ldr r3, [r7, #4] + 8003e12: 681b ldr r3, [r3, #0] + 8003e14: 430a orrs r2, r1 + 8003e16: 60da str r2, [r3, #12] /* Enable the selected I2C peripheral */ __HAL_I2C_ENABLE(hi2c); - 8003dbc: 687b ldr r3, [r7, #4] - 8003dbe: 681b ldr r3, [r3, #0] - 8003dc0: 681a ldr r2, [r3, #0] - 8003dc2: 687b ldr r3, [r7, #4] - 8003dc4: 681b ldr r3, [r3, #0] - 8003dc6: f042 0201 orr.w r2, r2, #1 - 8003dca: 601a str r2, [r3, #0] + 8003e18: 687b ldr r3, [r7, #4] + 8003e1a: 681b ldr r3, [r3, #0] + 8003e1c: 681a ldr r2, [r3, #0] + 8003e1e: 687b ldr r3, [r7, #4] + 8003e20: 681b ldr r3, [r3, #0] + 8003e22: f042 0201 orr.w r2, r2, #1 + 8003e26: 601a str r2, [r3, #0] hi2c->ErrorCode = HAL_I2C_ERROR_NONE; - 8003dcc: 687b ldr r3, [r7, #4] - 8003dce: 2200 movs r2, #0 - 8003dd0: 641a str r2, [r3, #64] @ 0x40 + 8003e28: 687b ldr r3, [r7, #4] + 8003e2a: 2200 movs r2, #0 + 8003e2c: 641a str r2, [r3, #64] @ 0x40 hi2c->State = HAL_I2C_STATE_READY; - 8003dd2: 687b ldr r3, [r7, #4] - 8003dd4: 2220 movs r2, #32 - 8003dd6: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8003e2e: 687b ldr r3, [r7, #4] + 8003e30: 2220 movs r2, #32 + 8003e32: f883 203d strb.w r2, [r3, #61] @ 0x3d hi2c->PreviousState = I2C_STATE_NONE; - 8003dda: 687b ldr r3, [r7, #4] - 8003ddc: 2200 movs r2, #0 - 8003dde: 631a str r2, [r3, #48] @ 0x30 + 8003e36: 687b ldr r3, [r7, #4] + 8003e38: 2200 movs r2, #0 + 8003e3a: 631a str r2, [r3, #48] @ 0x30 hi2c->Mode = HAL_I2C_MODE_NONE; - 8003de0: 687b ldr r3, [r7, #4] - 8003de2: 2200 movs r2, #0 - 8003de4: f883 203e strb.w r2, [r3, #62] @ 0x3e + 8003e3c: 687b ldr r3, [r7, #4] + 8003e3e: 2200 movs r2, #0 + 8003e40: f883 203e strb.w r2, [r3, #62] @ 0x3e return HAL_OK; - 8003de8: 2300 movs r3, #0 + 8003e44: 2300 movs r3, #0 } - 8003dea: 4618 mov r0, r3 - 8003dec: 3710 adds r7, #16 - 8003dee: 46bd mov sp, r7 - 8003df0: bd80 pop {r7, pc} - 8003df2: bf00 nop - 8003df4: 000186a0 .word 0x000186a0 - 8003df8: 001e847f .word 0x001e847f - 8003dfc: 003d08ff .word 0x003d08ff - 8003e00: 431bde83 .word 0x431bde83 - 8003e04: 10624dd3 .word 0x10624dd3 + 8003e46: 4618 mov r0, r3 + 8003e48: 3710 adds r7, #16 + 8003e4a: 46bd mov sp, r7 + 8003e4c: bd80 pop {r7, pc} + 8003e4e: bf00 nop + 8003e50: 000186a0 .word 0x000186a0 + 8003e54: 001e847f .word 0x001e847f + 8003e58: 003d08ff .word 0x003d08ff + 8003e5c: 431bde83 .word 0x431bde83 + 8003e60: 10624dd3 .word 0x10624dd3 -08003e08 : +08003e64 : * the configuration information for the specified I2Cx peripheral. * @param AnalogFilter new state of the Analog filter. * @retval HAL status */ HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter) { - 8003e08: b480 push {r7} - 8003e0a: b083 sub sp, #12 - 8003e0c: af00 add r7, sp, #0 - 8003e0e: 6078 str r0, [r7, #4] - 8003e10: 6039 str r1, [r7, #0] + 8003e64: b480 push {r7} + 8003e66: b083 sub sp, #12 + 8003e68: af00 add r7, sp, #0 + 8003e6a: 6078 str r0, [r7, #4] + 8003e6c: 6039 str r1, [r7, #0] /* Check the parameters */ assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); assert_param(IS_I2C_ANALOG_FILTER(AnalogFilter)); if (hi2c->State == HAL_I2C_STATE_READY) - 8003e12: 687b ldr r3, [r7, #4] - 8003e14: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 8003e18: b2db uxtb r3, r3 - 8003e1a: 2b20 cmp r3, #32 - 8003e1c: d129 bne.n 8003e72 + 8003e6e: 687b ldr r3, [r7, #4] + 8003e70: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 8003e74: b2db uxtb r3, r3 + 8003e76: 2b20 cmp r3, #32 + 8003e78: d129 bne.n 8003ece { hi2c->State = HAL_I2C_STATE_BUSY; - 8003e1e: 687b ldr r3, [r7, #4] - 8003e20: 2224 movs r2, #36 @ 0x24 - 8003e22: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8003e7a: 687b ldr r3, [r7, #4] + 8003e7c: 2224 movs r2, #36 @ 0x24 + 8003e7e: f883 203d strb.w r2, [r3, #61] @ 0x3d /* Disable the selected I2C peripheral */ __HAL_I2C_DISABLE(hi2c); - 8003e26: 687b ldr r3, [r7, #4] - 8003e28: 681b ldr r3, [r3, #0] - 8003e2a: 681a ldr r2, [r3, #0] - 8003e2c: 687b ldr r3, [r7, #4] - 8003e2e: 681b ldr r3, [r3, #0] - 8003e30: f022 0201 bic.w r2, r2, #1 - 8003e34: 601a str r2, [r3, #0] + 8003e82: 687b ldr r3, [r7, #4] + 8003e84: 681b ldr r3, [r3, #0] + 8003e86: 681a ldr r2, [r3, #0] + 8003e88: 687b ldr r3, [r7, #4] + 8003e8a: 681b ldr r3, [r3, #0] + 8003e8c: f022 0201 bic.w r2, r2, #1 + 8003e90: 601a str r2, [r3, #0] /* Reset I2Cx ANOFF bit */ hi2c->Instance->FLTR &= ~(I2C_FLTR_ANOFF); - 8003e36: 687b ldr r3, [r7, #4] - 8003e38: 681b ldr r3, [r3, #0] - 8003e3a: 6a5a ldr r2, [r3, #36] @ 0x24 - 8003e3c: 687b ldr r3, [r7, #4] - 8003e3e: 681b ldr r3, [r3, #0] - 8003e40: f022 0210 bic.w r2, r2, #16 - 8003e44: 625a str r2, [r3, #36] @ 0x24 + 8003e92: 687b ldr r3, [r7, #4] + 8003e94: 681b ldr r3, [r3, #0] + 8003e96: 6a5a ldr r2, [r3, #36] @ 0x24 + 8003e98: 687b ldr r3, [r7, #4] + 8003e9a: 681b ldr r3, [r3, #0] + 8003e9c: f022 0210 bic.w r2, r2, #16 + 8003ea0: 625a str r2, [r3, #36] @ 0x24 /* Disable the analog filter */ hi2c->Instance->FLTR |= AnalogFilter; - 8003e46: 687b ldr r3, [r7, #4] - 8003e48: 681b ldr r3, [r3, #0] - 8003e4a: 6a59 ldr r1, [r3, #36] @ 0x24 - 8003e4c: 687b ldr r3, [r7, #4] - 8003e4e: 681b ldr r3, [r3, #0] - 8003e50: 683a ldr r2, [r7, #0] - 8003e52: 430a orrs r2, r1 - 8003e54: 625a str r2, [r3, #36] @ 0x24 + 8003ea2: 687b ldr r3, [r7, #4] + 8003ea4: 681b ldr r3, [r3, #0] + 8003ea6: 6a59 ldr r1, [r3, #36] @ 0x24 + 8003ea8: 687b ldr r3, [r7, #4] + 8003eaa: 681b ldr r3, [r3, #0] + 8003eac: 683a ldr r2, [r7, #0] + 8003eae: 430a orrs r2, r1 + 8003eb0: 625a str r2, [r3, #36] @ 0x24 __HAL_I2C_ENABLE(hi2c); - 8003e56: 687b ldr r3, [r7, #4] - 8003e58: 681b ldr r3, [r3, #0] - 8003e5a: 681a ldr r2, [r3, #0] - 8003e5c: 687b ldr r3, [r7, #4] - 8003e5e: 681b ldr r3, [r3, #0] - 8003e60: f042 0201 orr.w r2, r2, #1 - 8003e64: 601a str r2, [r3, #0] + 8003eb2: 687b ldr r3, [r7, #4] + 8003eb4: 681b ldr r3, [r3, #0] + 8003eb6: 681a ldr r2, [r3, #0] + 8003eb8: 687b ldr r3, [r7, #4] + 8003eba: 681b ldr r3, [r3, #0] + 8003ebc: f042 0201 orr.w r2, r2, #1 + 8003ec0: 601a str r2, [r3, #0] hi2c->State = HAL_I2C_STATE_READY; - 8003e66: 687b ldr r3, [r7, #4] - 8003e68: 2220 movs r2, #32 - 8003e6a: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8003ec2: 687b ldr r3, [r7, #4] + 8003ec4: 2220 movs r2, #32 + 8003ec6: f883 203d strb.w r2, [r3, #61] @ 0x3d return HAL_OK; - 8003e6e: 2300 movs r3, #0 - 8003e70: e000 b.n 8003e74 + 8003eca: 2300 movs r3, #0 + 8003ecc: e000 b.n 8003ed0 } else { return HAL_BUSY; - 8003e72: 2302 movs r3, #2 + 8003ece: 2302 movs r3, #2 } } - 8003e74: 4618 mov r0, r3 - 8003e76: 370c adds r7, #12 - 8003e78: 46bd mov sp, r7 - 8003e7a: f85d 7b04 ldr.w r7, [sp], #4 - 8003e7e: 4770 bx lr + 8003ed0: 4618 mov r0, r3 + 8003ed2: 370c adds r7, #12 + 8003ed4: 46bd mov sp, r7 + 8003ed6: f85d 7b04 ldr.w r7, [sp], #4 + 8003eda: 4770 bx lr -08003e80 : +08003edc : * the configuration information for the specified I2Cx peripheral. * @param DigitalFilter Coefficient of digital noise filter between 0x00 and 0x0F. * @retval HAL status */ HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter) { - 8003e80: b480 push {r7} - 8003e82: b085 sub sp, #20 - 8003e84: af00 add r7, sp, #0 - 8003e86: 6078 str r0, [r7, #4] - 8003e88: 6039 str r1, [r7, #0] + 8003edc: b480 push {r7} + 8003ede: b085 sub sp, #20 + 8003ee0: af00 add r7, sp, #0 + 8003ee2: 6078 str r0, [r7, #4] + 8003ee4: 6039 str r1, [r7, #0] uint16_t tmpreg = 0; - 8003e8a: 2300 movs r3, #0 - 8003e8c: 81fb strh r3, [r7, #14] + 8003ee6: 2300 movs r3, #0 + 8003ee8: 81fb strh r3, [r7, #14] /* Check the parameters */ assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); assert_param(IS_I2C_DIGITAL_FILTER(DigitalFilter)); if (hi2c->State == HAL_I2C_STATE_READY) - 8003e8e: 687b ldr r3, [r7, #4] - 8003e90: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 8003e94: b2db uxtb r3, r3 - 8003e96: 2b20 cmp r3, #32 - 8003e98: d12a bne.n 8003ef0 + 8003eea: 687b ldr r3, [r7, #4] + 8003eec: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 8003ef0: b2db uxtb r3, r3 + 8003ef2: 2b20 cmp r3, #32 + 8003ef4: d12a bne.n 8003f4c { hi2c->State = HAL_I2C_STATE_BUSY; - 8003e9a: 687b ldr r3, [r7, #4] - 8003e9c: 2224 movs r2, #36 @ 0x24 - 8003e9e: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8003ef6: 687b ldr r3, [r7, #4] + 8003ef8: 2224 movs r2, #36 @ 0x24 + 8003efa: f883 203d strb.w r2, [r3, #61] @ 0x3d /* Disable the selected I2C peripheral */ __HAL_I2C_DISABLE(hi2c); - 8003ea2: 687b ldr r3, [r7, #4] - 8003ea4: 681b ldr r3, [r3, #0] - 8003ea6: 681a ldr r2, [r3, #0] - 8003ea8: 687b ldr r3, [r7, #4] - 8003eaa: 681b ldr r3, [r3, #0] - 8003eac: f022 0201 bic.w r2, r2, #1 - 8003eb0: 601a str r2, [r3, #0] + 8003efe: 687b ldr r3, [r7, #4] + 8003f00: 681b ldr r3, [r3, #0] + 8003f02: 681a ldr r2, [r3, #0] + 8003f04: 687b ldr r3, [r7, #4] + 8003f06: 681b ldr r3, [r3, #0] + 8003f08: f022 0201 bic.w r2, r2, #1 + 8003f0c: 601a str r2, [r3, #0] /* Get the old register value */ tmpreg = hi2c->Instance->FLTR; - 8003eb2: 687b ldr r3, [r7, #4] - 8003eb4: 681b ldr r3, [r3, #0] - 8003eb6: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003eb8: 81fb strh r3, [r7, #14] + 8003f0e: 687b ldr r3, [r7, #4] + 8003f10: 681b ldr r3, [r3, #0] + 8003f12: 6a5b ldr r3, [r3, #36] @ 0x24 + 8003f14: 81fb strh r3, [r7, #14] /* Reset I2Cx DNF bit [3:0] */ tmpreg &= ~(I2C_FLTR_DNF); - 8003eba: 89fb ldrh r3, [r7, #14] - 8003ebc: f023 030f bic.w r3, r3, #15 - 8003ec0: 81fb strh r3, [r7, #14] + 8003f16: 89fb ldrh r3, [r7, #14] + 8003f18: f023 030f bic.w r3, r3, #15 + 8003f1c: 81fb strh r3, [r7, #14] /* Set I2Cx DNF coefficient */ tmpreg |= DigitalFilter; - 8003ec2: 683b ldr r3, [r7, #0] - 8003ec4: b29a uxth r2, r3 - 8003ec6: 89fb ldrh r3, [r7, #14] - 8003ec8: 4313 orrs r3, r2 - 8003eca: 81fb strh r3, [r7, #14] + 8003f1e: 683b ldr r3, [r7, #0] + 8003f20: b29a uxth r2, r3 + 8003f22: 89fb ldrh r3, [r7, #14] + 8003f24: 4313 orrs r3, r2 + 8003f26: 81fb strh r3, [r7, #14] /* Store the new register value */ hi2c->Instance->FLTR = tmpreg; - 8003ecc: 687b ldr r3, [r7, #4] - 8003ece: 681b ldr r3, [r3, #0] - 8003ed0: 89fa ldrh r2, [r7, #14] - 8003ed2: 625a str r2, [r3, #36] @ 0x24 + 8003f28: 687b ldr r3, [r7, #4] + 8003f2a: 681b ldr r3, [r3, #0] + 8003f2c: 89fa ldrh r2, [r7, #14] + 8003f2e: 625a str r2, [r3, #36] @ 0x24 __HAL_I2C_ENABLE(hi2c); - 8003ed4: 687b ldr r3, [r7, #4] - 8003ed6: 681b ldr r3, [r3, #0] - 8003ed8: 681a ldr r2, [r3, #0] - 8003eda: 687b ldr r3, [r7, #4] - 8003edc: 681b ldr r3, [r3, #0] - 8003ede: f042 0201 orr.w r2, r2, #1 - 8003ee2: 601a str r2, [r3, #0] + 8003f30: 687b ldr r3, [r7, #4] + 8003f32: 681b ldr r3, [r3, #0] + 8003f34: 681a ldr r2, [r3, #0] + 8003f36: 687b ldr r3, [r7, #4] + 8003f38: 681b ldr r3, [r3, #0] + 8003f3a: f042 0201 orr.w r2, r2, #1 + 8003f3e: 601a str r2, [r3, #0] hi2c->State = HAL_I2C_STATE_READY; - 8003ee4: 687b ldr r3, [r7, #4] - 8003ee6: 2220 movs r2, #32 - 8003ee8: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8003f40: 687b ldr r3, [r7, #4] + 8003f42: 2220 movs r2, #32 + 8003f44: f883 203d strb.w r2, [r3, #61] @ 0x3d return HAL_OK; - 8003eec: 2300 movs r3, #0 - 8003eee: e000 b.n 8003ef2 + 8003f48: 2300 movs r3, #0 + 8003f4a: e000 b.n 8003f4e } else { return HAL_BUSY; - 8003ef0: 2302 movs r3, #2 + 8003f4c: 2302 movs r3, #2 } } - 8003ef2: 4618 mov r0, r3 - 8003ef4: 3714 adds r7, #20 - 8003ef6: 46bd mov sp, r7 - 8003ef8: f85d 7b04 ldr.w r7, [sp], #4 - 8003efc: 4770 bx lr + 8003f4e: 4618 mov r0, r3 + 8003f50: 3714 adds r7, #20 + 8003f52: 46bd mov sp, r7 + 8003f54: f85d 7b04 ldr.w r7, [sp], #4 + 8003f58: 4770 bx lr -08003efe : +08003f5a : * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains * the configuration information for the LTDC. * @retval HAL status */ HAL_StatusTypeDef HAL_LTDC_Init(LTDC_HandleTypeDef *hltdc) { - 8003efe: b580 push {r7, lr} - 8003f00: b084 sub sp, #16 - 8003f02: af00 add r7, sp, #0 - 8003f04: 6078 str r0, [r7, #4] + 8003f5a: b580 push {r7, lr} + 8003f5c: b084 sub sp, #16 + 8003f5e: af00 add r7, sp, #0 + 8003f60: 6078 str r0, [r7, #4] uint32_t tmp; uint32_t tmp1; /* Check the LTDC peripheral state */ if (hltdc == NULL) - 8003f06: 687b ldr r3, [r7, #4] - 8003f08: 2b00 cmp r3, #0 - 8003f0a: d101 bne.n 8003f10 + 8003f62: 687b ldr r3, [r7, #4] + 8003f64: 2b00 cmp r3, #0 + 8003f66: d101 bne.n 8003f6c { return HAL_ERROR; - 8003f0c: 2301 movs r3, #1 - 8003f0e: e08f b.n 8004030 + 8003f68: 2301 movs r3, #1 + 8003f6a: e08f b.n 800408c } /* Init the low level hardware */ hltdc->MspInitCallback(hltdc); } #else if (hltdc->State == HAL_LTDC_STATE_RESET) - 8003f10: 687b ldr r3, [r7, #4] - 8003f12: f893 30a1 ldrb.w r3, [r3, #161] @ 0xa1 - 8003f16: b2db uxtb r3, r3 - 8003f18: 2b00 cmp r3, #0 - 8003f1a: d106 bne.n 8003f2a + 8003f6c: 687b ldr r3, [r7, #4] + 8003f6e: f893 30a1 ldrb.w r3, [r3, #161] @ 0xa1 + 8003f72: b2db uxtb r3, r3 + 8003f74: 2b00 cmp r3, #0 + 8003f76: d106 bne.n 8003f86 { /* Allocate lock resource and initialize it */ hltdc->Lock = HAL_UNLOCKED; - 8003f1c: 687b ldr r3, [r7, #4] - 8003f1e: 2200 movs r2, #0 - 8003f20: f883 20a0 strb.w r2, [r3, #160] @ 0xa0 + 8003f78: 687b ldr r3, [r7, #4] + 8003f7a: 2200 movs r2, #0 + 8003f7c: f883 20a0 strb.w r2, [r3, #160] @ 0xa0 /* Init the low level hardware */ HAL_LTDC_MspInit(hltdc); - 8003f24: 6878 ldr r0, [r7, #4] - 8003f26: f7fc ffdb bl 8000ee0 + 8003f80: 6878 ldr r0, [r7, #4] + 8003f82: f7fc ffff bl 8000f84 } #endif /* USE_HAL_LTDC_REGISTER_CALLBACKS */ /* Change LTDC peripheral state */ hltdc->State = HAL_LTDC_STATE_BUSY; - 8003f2a: 687b ldr r3, [r7, #4] - 8003f2c: 2202 movs r2, #2 - 8003f2e: f883 20a1 strb.w r2, [r3, #161] @ 0xa1 + 8003f86: 687b ldr r3, [r7, #4] + 8003f88: 2202 movs r2, #2 + 8003f8a: f883 20a1 strb.w r2, [r3, #161] @ 0xa1 /* Configure the HS, VS, DE and PC polarity */ hltdc->Instance->GCR &= ~(LTDC_GCR_HSPOL | LTDC_GCR_VSPOL | LTDC_GCR_DEPOL | LTDC_GCR_PCPOL); - 8003f32: 687b ldr r3, [r7, #4] - 8003f34: 681b ldr r3, [r3, #0] - 8003f36: 699a ldr r2, [r3, #24] - 8003f38: 687b ldr r3, [r7, #4] - 8003f3a: 681b ldr r3, [r3, #0] - 8003f3c: f022 4270 bic.w r2, r2, #4026531840 @ 0xf0000000 - 8003f40: 619a str r2, [r3, #24] + 8003f8e: 687b ldr r3, [r7, #4] + 8003f90: 681b ldr r3, [r3, #0] + 8003f92: 699a ldr r2, [r3, #24] + 8003f94: 687b ldr r3, [r7, #4] + 8003f96: 681b ldr r3, [r3, #0] + 8003f98: f022 4270 bic.w r2, r2, #4026531840 @ 0xf0000000 + 8003f9c: 619a str r2, [r3, #24] hltdc->Instance->GCR |= (uint32_t)(hltdc->Init.HSPolarity | hltdc->Init.VSPolarity | \ - 8003f42: 687b ldr r3, [r7, #4] - 8003f44: 681b ldr r3, [r3, #0] - 8003f46: 6999 ldr r1, [r3, #24] - 8003f48: 687b ldr r3, [r7, #4] - 8003f4a: 685a ldr r2, [r3, #4] - 8003f4c: 687b ldr r3, [r7, #4] - 8003f4e: 689b ldr r3, [r3, #8] - 8003f50: 431a orrs r2, r3 + 8003f9e: 687b ldr r3, [r7, #4] + 8003fa0: 681b ldr r3, [r3, #0] + 8003fa2: 6999 ldr r1, [r3, #24] + 8003fa4: 687b ldr r3, [r7, #4] + 8003fa6: 685a ldr r2, [r3, #4] + 8003fa8: 687b ldr r3, [r7, #4] + 8003faa: 689b ldr r3, [r3, #8] + 8003fac: 431a orrs r2, r3 hltdc->Init.DEPolarity | hltdc->Init.PCPolarity); - 8003f52: 687b ldr r3, [r7, #4] - 8003f54: 68db ldr r3, [r3, #12] + 8003fae: 687b ldr r3, [r7, #4] + 8003fb0: 68db ldr r3, [r3, #12] hltdc->Instance->GCR |= (uint32_t)(hltdc->Init.HSPolarity | hltdc->Init.VSPolarity | \ - 8003f56: 431a orrs r2, r3 + 8003fb2: 431a orrs r2, r3 hltdc->Init.DEPolarity | hltdc->Init.PCPolarity); - 8003f58: 687b ldr r3, [r7, #4] - 8003f5a: 691b ldr r3, [r3, #16] - 8003f5c: 431a orrs r2, r3 + 8003fb4: 687b ldr r3, [r7, #4] + 8003fb6: 691b ldr r3, [r3, #16] + 8003fb8: 431a orrs r2, r3 hltdc->Instance->GCR |= (uint32_t)(hltdc->Init.HSPolarity | hltdc->Init.VSPolarity | \ - 8003f5e: 687b ldr r3, [r7, #4] - 8003f60: 681b ldr r3, [r3, #0] - 8003f62: 430a orrs r2, r1 - 8003f64: 619a str r2, [r3, #24] + 8003fba: 687b ldr r3, [r7, #4] + 8003fbc: 681b ldr r3, [r3, #0] + 8003fbe: 430a orrs r2, r1 + 8003fc0: 619a str r2, [r3, #24] /* Set Synchronization size */ tmp = (hltdc->Init.HorizontalSync << 16U); - 8003f66: 687b ldr r3, [r7, #4] - 8003f68: 695b ldr r3, [r3, #20] - 8003f6a: 041b lsls r3, r3, #16 - 8003f6c: 60fb str r3, [r7, #12] + 8003fc2: 687b ldr r3, [r7, #4] + 8003fc4: 695b ldr r3, [r3, #20] + 8003fc6: 041b lsls r3, r3, #16 + 8003fc8: 60fb str r3, [r7, #12] WRITE_REG(hltdc->Instance->SSCR, (tmp | hltdc->Init.VerticalSync)); - 8003f6e: 687b ldr r3, [r7, #4] - 8003f70: 6999 ldr r1, [r3, #24] - 8003f72: 687b ldr r3, [r7, #4] - 8003f74: 681b ldr r3, [r3, #0] - 8003f76: 68fa ldr r2, [r7, #12] - 8003f78: 430a orrs r2, r1 - 8003f7a: 609a str r2, [r3, #8] + 8003fca: 687b ldr r3, [r7, #4] + 8003fcc: 6999 ldr r1, [r3, #24] + 8003fce: 687b ldr r3, [r7, #4] + 8003fd0: 681b ldr r3, [r3, #0] + 8003fd2: 68fa ldr r2, [r7, #12] + 8003fd4: 430a orrs r2, r1 + 8003fd6: 609a str r2, [r3, #8] /* Set Accumulated Back porch */ tmp = (hltdc->Init.AccumulatedHBP << 16U); - 8003f7c: 687b ldr r3, [r7, #4] - 8003f7e: 69db ldr r3, [r3, #28] - 8003f80: 041b lsls r3, r3, #16 - 8003f82: 60fb str r3, [r7, #12] + 8003fd8: 687b ldr r3, [r7, #4] + 8003fda: 69db ldr r3, [r3, #28] + 8003fdc: 041b lsls r3, r3, #16 + 8003fde: 60fb str r3, [r7, #12] WRITE_REG(hltdc->Instance->BPCR, (tmp | hltdc->Init.AccumulatedVBP)); - 8003f84: 687b ldr r3, [r7, #4] - 8003f86: 6a19 ldr r1, [r3, #32] - 8003f88: 687b ldr r3, [r7, #4] - 8003f8a: 681b ldr r3, [r3, #0] - 8003f8c: 68fa ldr r2, [r7, #12] - 8003f8e: 430a orrs r2, r1 - 8003f90: 60da str r2, [r3, #12] + 8003fe0: 687b ldr r3, [r7, #4] + 8003fe2: 6a19 ldr r1, [r3, #32] + 8003fe4: 687b ldr r3, [r7, #4] + 8003fe6: 681b ldr r3, [r3, #0] + 8003fe8: 68fa ldr r2, [r7, #12] + 8003fea: 430a orrs r2, r1 + 8003fec: 60da str r2, [r3, #12] /* Set Accumulated Active Width */ tmp = (hltdc->Init.AccumulatedActiveW << 16U); - 8003f92: 687b ldr r3, [r7, #4] - 8003f94: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003f96: 041b lsls r3, r3, #16 - 8003f98: 60fb str r3, [r7, #12] + 8003fee: 687b ldr r3, [r7, #4] + 8003ff0: 6a5b ldr r3, [r3, #36] @ 0x24 + 8003ff2: 041b lsls r3, r3, #16 + 8003ff4: 60fb str r3, [r7, #12] WRITE_REG(hltdc->Instance->AWCR, (tmp | hltdc->Init.AccumulatedActiveH)); - 8003f9a: 687b ldr r3, [r7, #4] - 8003f9c: 6a99 ldr r1, [r3, #40] @ 0x28 - 8003f9e: 687b ldr r3, [r7, #4] - 8003fa0: 681b ldr r3, [r3, #0] - 8003fa2: 68fa ldr r2, [r7, #12] - 8003fa4: 430a orrs r2, r1 - 8003fa6: 611a str r2, [r3, #16] + 8003ff6: 687b ldr r3, [r7, #4] + 8003ff8: 6a99 ldr r1, [r3, #40] @ 0x28 + 8003ffa: 687b ldr r3, [r7, #4] + 8003ffc: 681b ldr r3, [r3, #0] + 8003ffe: 68fa ldr r2, [r7, #12] + 8004000: 430a orrs r2, r1 + 8004002: 611a str r2, [r3, #16] /* Set Total Width */ tmp = (hltdc->Init.TotalWidth << 16U); - 8003fa8: 687b ldr r3, [r7, #4] - 8003faa: 6adb ldr r3, [r3, #44] @ 0x2c - 8003fac: 041b lsls r3, r3, #16 - 8003fae: 60fb str r3, [r7, #12] + 8004004: 687b ldr r3, [r7, #4] + 8004006: 6adb ldr r3, [r3, #44] @ 0x2c + 8004008: 041b lsls r3, r3, #16 + 800400a: 60fb str r3, [r7, #12] WRITE_REG(hltdc->Instance->TWCR, (tmp | hltdc->Init.TotalHeigh)); - 8003fb0: 687b ldr r3, [r7, #4] - 8003fb2: 6b19 ldr r1, [r3, #48] @ 0x30 - 8003fb4: 687b ldr r3, [r7, #4] - 8003fb6: 681b ldr r3, [r3, #0] - 8003fb8: 68fa ldr r2, [r7, #12] - 8003fba: 430a orrs r2, r1 - 8003fbc: 615a str r2, [r3, #20] + 800400c: 687b ldr r3, [r7, #4] + 800400e: 6b19 ldr r1, [r3, #48] @ 0x30 + 8004010: 687b ldr r3, [r7, #4] + 8004012: 681b ldr r3, [r3, #0] + 8004014: 68fa ldr r2, [r7, #12] + 8004016: 430a orrs r2, r1 + 8004018: 615a str r2, [r3, #20] /* Set the background color value */ tmp = ((uint32_t)(hltdc->Init.Backcolor.Green) << 8U); - 8003fbe: 687b ldr r3, [r7, #4] - 8003fc0: f893 3035 ldrb.w r3, [r3, #53] @ 0x35 - 8003fc4: 021b lsls r3, r3, #8 - 8003fc6: 60fb str r3, [r7, #12] + 800401a: 687b ldr r3, [r7, #4] + 800401c: f893 3035 ldrb.w r3, [r3, #53] @ 0x35 + 8004020: 021b lsls r3, r3, #8 + 8004022: 60fb str r3, [r7, #12] tmp1 = ((uint32_t)(hltdc->Init.Backcolor.Red) << 16U); - 8003fc8: 687b ldr r3, [r7, #4] - 8003fca: f893 3036 ldrb.w r3, [r3, #54] @ 0x36 - 8003fce: 041b lsls r3, r3, #16 - 8003fd0: 60bb str r3, [r7, #8] + 8004024: 687b ldr r3, [r7, #4] + 8004026: f893 3036 ldrb.w r3, [r3, #54] @ 0x36 + 800402a: 041b lsls r3, r3, #16 + 800402c: 60bb str r3, [r7, #8] hltdc->Instance->BCCR &= ~(LTDC_BCCR_BCBLUE | LTDC_BCCR_BCGREEN | LTDC_BCCR_BCRED); - 8003fd2: 687b ldr r3, [r7, #4] - 8003fd4: 681b ldr r3, [r3, #0] - 8003fd6: 6ada ldr r2, [r3, #44] @ 0x2c - 8003fd8: 687b ldr r3, [r7, #4] - 8003fda: 681b ldr r3, [r3, #0] - 8003fdc: f002 427f and.w r2, r2, #4278190080 @ 0xff000000 - 8003fe0: 62da str r2, [r3, #44] @ 0x2c + 800402e: 687b ldr r3, [r7, #4] + 8004030: 681b ldr r3, [r3, #0] + 8004032: 6ada ldr r2, [r3, #44] @ 0x2c + 8004034: 687b ldr r3, [r7, #4] + 8004036: 681b ldr r3, [r3, #0] + 8004038: f002 427f and.w r2, r2, #4278190080 @ 0xff000000 + 800403c: 62da str r2, [r3, #44] @ 0x2c hltdc->Instance->BCCR |= (tmp1 | tmp | hltdc->Init.Backcolor.Blue); - 8003fe2: 687b ldr r3, [r7, #4] - 8003fe4: 681b ldr r3, [r3, #0] - 8003fe6: 6ad9 ldr r1, [r3, #44] @ 0x2c - 8003fe8: 68ba ldr r2, [r7, #8] - 8003fea: 68fb ldr r3, [r7, #12] - 8003fec: 4313 orrs r3, r2 - 8003fee: 687a ldr r2, [r7, #4] - 8003ff0: f892 2034 ldrb.w r2, [r2, #52] @ 0x34 - 8003ff4: 431a orrs r2, r3 - 8003ff6: 687b ldr r3, [r7, #4] - 8003ff8: 681b ldr r3, [r3, #0] - 8003ffa: 430a orrs r2, r1 - 8003ffc: 62da str r2, [r3, #44] @ 0x2c + 800403e: 687b ldr r3, [r7, #4] + 8004040: 681b ldr r3, [r3, #0] + 8004042: 6ad9 ldr r1, [r3, #44] @ 0x2c + 8004044: 68ba ldr r2, [r7, #8] + 8004046: 68fb ldr r3, [r7, #12] + 8004048: 4313 orrs r3, r2 + 800404a: 687a ldr r2, [r7, #4] + 800404c: f892 2034 ldrb.w r2, [r2, #52] @ 0x34 + 8004050: 431a orrs r2, r3 + 8004052: 687b ldr r3, [r7, #4] + 8004054: 681b ldr r3, [r3, #0] + 8004056: 430a orrs r2, r1 + 8004058: 62da str r2, [r3, #44] @ 0x2c /* Enable the Transfer Error and FIFO underrun interrupts */ __HAL_LTDC_ENABLE_IT(hltdc, LTDC_IT_TE | LTDC_IT_FU); - 8003ffe: 687b ldr r3, [r7, #4] - 8004000: 681b ldr r3, [r3, #0] - 8004002: 6b5a ldr r2, [r3, #52] @ 0x34 - 8004004: 687b ldr r3, [r7, #4] - 8004006: 681b ldr r3, [r3, #0] - 8004008: f042 0206 orr.w r2, r2, #6 - 800400c: 635a str r2, [r3, #52] @ 0x34 + 800405a: 687b ldr r3, [r7, #4] + 800405c: 681b ldr r3, [r3, #0] + 800405e: 6b5a ldr r2, [r3, #52] @ 0x34 + 8004060: 687b ldr r3, [r7, #4] + 8004062: 681b ldr r3, [r3, #0] + 8004064: f042 0206 orr.w r2, r2, #6 + 8004068: 635a str r2, [r3, #52] @ 0x34 /* Enable LTDC by setting LTDCEN bit */ __HAL_LTDC_ENABLE(hltdc); - 800400e: 687b ldr r3, [r7, #4] - 8004010: 681b ldr r3, [r3, #0] - 8004012: 699a ldr r2, [r3, #24] - 8004014: 687b ldr r3, [r7, #4] - 8004016: 681b ldr r3, [r3, #0] - 8004018: f042 0201 orr.w r2, r2, #1 - 800401c: 619a str r2, [r3, #24] + 800406a: 687b ldr r3, [r7, #4] + 800406c: 681b ldr r3, [r3, #0] + 800406e: 699a ldr r2, [r3, #24] + 8004070: 687b ldr r3, [r7, #4] + 8004072: 681b ldr r3, [r3, #0] + 8004074: f042 0201 orr.w r2, r2, #1 + 8004078: 619a str r2, [r3, #24] /* Initialize the error code */ hltdc->ErrorCode = HAL_LTDC_ERROR_NONE; - 800401e: 687b ldr r3, [r7, #4] - 8004020: 2200 movs r2, #0 - 8004022: f8c3 20a4 str.w r2, [r3, #164] @ 0xa4 + 800407a: 687b ldr r3, [r7, #4] + 800407c: 2200 movs r2, #0 + 800407e: f8c3 20a4 str.w r2, [r3, #164] @ 0xa4 /* Initialize the LTDC state*/ hltdc->State = HAL_LTDC_STATE_READY; - 8004026: 687b ldr r3, [r7, #4] - 8004028: 2201 movs r2, #1 - 800402a: f883 20a1 strb.w r2, [r3, #161] @ 0xa1 + 8004082: 687b ldr r3, [r7, #4] + 8004084: 2201 movs r2, #1 + 8004086: f883 20a1 strb.w r2, [r3, #161] @ 0xa1 return HAL_OK; - 800402e: 2300 movs r3, #0 + 800408a: 2300 movs r3, #0 } - 8004030: 4618 mov r0, r3 - 8004032: 3710 adds r7, #16 - 8004034: 46bd mov sp, r7 - 8004036: bd80 pop {r7, pc} + 800408c: 4618 mov r0, r3 + 800408e: 3710 adds r7, #16 + 8004090: 46bd mov sp, r7 + 8004092: bd80 pop {r7, pc} -08004038 : +08004094 : * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains * the configuration information for the LTDC. * @retval HAL status */ void HAL_LTDC_IRQHandler(LTDC_HandleTypeDef *hltdc) { - 8004038: b580 push {r7, lr} - 800403a: b084 sub sp, #16 - 800403c: af00 add r7, sp, #0 - 800403e: 6078 str r0, [r7, #4] + 8004094: b580 push {r7, lr} + 8004096: b084 sub sp, #16 + 8004098: af00 add r7, sp, #0 + 800409a: 6078 str r0, [r7, #4] uint32_t isrflags = READ_REG(hltdc->Instance->ISR); - 8004040: 687b ldr r3, [r7, #4] - 8004042: 681b ldr r3, [r3, #0] - 8004044: 6b9b ldr r3, [r3, #56] @ 0x38 - 8004046: 60fb str r3, [r7, #12] + 800409c: 687b ldr r3, [r7, #4] + 800409e: 681b ldr r3, [r3, #0] + 80040a0: 6b9b ldr r3, [r3, #56] @ 0x38 + 80040a2: 60fb str r3, [r7, #12] uint32_t itsources = READ_REG(hltdc->Instance->IER); - 8004048: 687b ldr r3, [r7, #4] - 800404a: 681b ldr r3, [r3, #0] - 800404c: 6b5b ldr r3, [r3, #52] @ 0x34 - 800404e: 60bb str r3, [r7, #8] + 80040a4: 687b ldr r3, [r7, #4] + 80040a6: 681b ldr r3, [r3, #0] + 80040a8: 6b5b ldr r3, [r3, #52] @ 0x34 + 80040aa: 60bb str r3, [r7, #8] /* Transfer Error Interrupt management ***************************************/ if (((isrflags & LTDC_ISR_TERRIF) != 0U) && ((itsources & LTDC_IER_TERRIE) != 0U)) - 8004050: 68fb ldr r3, [r7, #12] - 8004052: f003 0304 and.w r3, r3, #4 - 8004056: 2b00 cmp r3, #0 - 8004058: d023 beq.n 80040a2 - 800405a: 68bb ldr r3, [r7, #8] - 800405c: f003 0304 and.w r3, r3, #4 - 8004060: 2b00 cmp r3, #0 - 8004062: d01e beq.n 80040a2 + 80040ac: 68fb ldr r3, [r7, #12] + 80040ae: f003 0304 and.w r3, r3, #4 + 80040b2: 2b00 cmp r3, #0 + 80040b4: d023 beq.n 80040fe + 80040b6: 68bb ldr r3, [r7, #8] + 80040b8: f003 0304 and.w r3, r3, #4 + 80040bc: 2b00 cmp r3, #0 + 80040be: d01e beq.n 80040fe { /* Disable the transfer Error interrupt */ __HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_TE); - 8004064: 687b ldr r3, [r7, #4] - 8004066: 681b ldr r3, [r3, #0] - 8004068: 6b5a ldr r2, [r3, #52] @ 0x34 - 800406a: 687b ldr r3, [r7, #4] - 800406c: 681b ldr r3, [r3, #0] - 800406e: f022 0204 bic.w r2, r2, #4 - 8004072: 635a str r2, [r3, #52] @ 0x34 + 80040c0: 687b ldr r3, [r7, #4] + 80040c2: 681b ldr r3, [r3, #0] + 80040c4: 6b5a ldr r2, [r3, #52] @ 0x34 + 80040c6: 687b ldr r3, [r7, #4] + 80040c8: 681b ldr r3, [r3, #0] + 80040ca: f022 0204 bic.w r2, r2, #4 + 80040ce: 635a str r2, [r3, #52] @ 0x34 /* Clear the transfer error flag */ __HAL_LTDC_CLEAR_FLAG(hltdc, LTDC_FLAG_TE); - 8004074: 687b ldr r3, [r7, #4] - 8004076: 681b ldr r3, [r3, #0] - 8004078: 2204 movs r2, #4 - 800407a: 63da str r2, [r3, #60] @ 0x3c + 80040d0: 687b ldr r3, [r7, #4] + 80040d2: 681b ldr r3, [r3, #0] + 80040d4: 2204 movs r2, #4 + 80040d6: 63da str r2, [r3, #60] @ 0x3c /* Update error code */ hltdc->ErrorCode |= HAL_LTDC_ERROR_TE; - 800407c: 687b ldr r3, [r7, #4] - 800407e: f8d3 30a4 ldr.w r3, [r3, #164] @ 0xa4 - 8004082: f043 0201 orr.w r2, r3, #1 - 8004086: 687b ldr r3, [r7, #4] - 8004088: f8c3 20a4 str.w r2, [r3, #164] @ 0xa4 + 80040d8: 687b ldr r3, [r7, #4] + 80040da: f8d3 30a4 ldr.w r3, [r3, #164] @ 0xa4 + 80040de: f043 0201 orr.w r2, r3, #1 + 80040e2: 687b ldr r3, [r7, #4] + 80040e4: f8c3 20a4 str.w r2, [r3, #164] @ 0xa4 /* Change LTDC state */ hltdc->State = HAL_LTDC_STATE_ERROR; - 800408c: 687b ldr r3, [r7, #4] - 800408e: 2204 movs r2, #4 - 8004090: f883 20a1 strb.w r2, [r3, #161] @ 0xa1 + 80040e8: 687b ldr r3, [r7, #4] + 80040ea: 2204 movs r2, #4 + 80040ec: f883 20a1 strb.w r2, [r3, #161] @ 0xa1 /* Process unlocked */ __HAL_UNLOCK(hltdc); - 8004094: 687b ldr r3, [r7, #4] - 8004096: 2200 movs r2, #0 - 8004098: f883 20a0 strb.w r2, [r3, #160] @ 0xa0 + 80040f0: 687b ldr r3, [r7, #4] + 80040f2: 2200 movs r2, #0 + 80040f4: f883 20a0 strb.w r2, [r3, #160] @ 0xa0 #if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ hltdc->ErrorCallback(hltdc); #else /* Call legacy error callback*/ HAL_LTDC_ErrorCallback(hltdc); - 800409c: 6878 ldr r0, [r7, #4] - 800409e: f000 f86f bl 8004180 + 80040f8: 6878 ldr r0, [r7, #4] + 80040fa: f000 f86f bl 80041dc #endif /* USE_HAL_LTDC_REGISTER_CALLBACKS */ } /* FIFO underrun Interrupt management ***************************************/ if (((isrflags & LTDC_ISR_FUIF) != 0U) && ((itsources & LTDC_IER_FUIE) != 0U)) - 80040a2: 68fb ldr r3, [r7, #12] - 80040a4: f003 0302 and.w r3, r3, #2 - 80040a8: 2b00 cmp r3, #0 - 80040aa: d023 beq.n 80040f4 - 80040ac: 68bb ldr r3, [r7, #8] - 80040ae: f003 0302 and.w r3, r3, #2 - 80040b2: 2b00 cmp r3, #0 - 80040b4: d01e beq.n 80040f4 + 80040fe: 68fb ldr r3, [r7, #12] + 8004100: f003 0302 and.w r3, r3, #2 + 8004104: 2b00 cmp r3, #0 + 8004106: d023 beq.n 8004150 + 8004108: 68bb ldr r3, [r7, #8] + 800410a: f003 0302 and.w r3, r3, #2 + 800410e: 2b00 cmp r3, #0 + 8004110: d01e beq.n 8004150 { /* Disable the FIFO underrun interrupt */ __HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_FU); - 80040b6: 687b ldr r3, [r7, #4] - 80040b8: 681b ldr r3, [r3, #0] - 80040ba: 6b5a ldr r2, [r3, #52] @ 0x34 - 80040bc: 687b ldr r3, [r7, #4] - 80040be: 681b ldr r3, [r3, #0] - 80040c0: f022 0202 bic.w r2, r2, #2 - 80040c4: 635a str r2, [r3, #52] @ 0x34 + 8004112: 687b ldr r3, [r7, #4] + 8004114: 681b ldr r3, [r3, #0] + 8004116: 6b5a ldr r2, [r3, #52] @ 0x34 + 8004118: 687b ldr r3, [r7, #4] + 800411a: 681b ldr r3, [r3, #0] + 800411c: f022 0202 bic.w r2, r2, #2 + 8004120: 635a str r2, [r3, #52] @ 0x34 /* Clear the FIFO underrun flag */ __HAL_LTDC_CLEAR_FLAG(hltdc, LTDC_FLAG_FU); - 80040c6: 687b ldr r3, [r7, #4] - 80040c8: 681b ldr r3, [r3, #0] - 80040ca: 2202 movs r2, #2 - 80040cc: 63da str r2, [r3, #60] @ 0x3c + 8004122: 687b ldr r3, [r7, #4] + 8004124: 681b ldr r3, [r3, #0] + 8004126: 2202 movs r2, #2 + 8004128: 63da str r2, [r3, #60] @ 0x3c /* Update error code */ hltdc->ErrorCode |= HAL_LTDC_ERROR_FU; - 80040ce: 687b ldr r3, [r7, #4] - 80040d0: f8d3 30a4 ldr.w r3, [r3, #164] @ 0xa4 - 80040d4: f043 0202 orr.w r2, r3, #2 - 80040d8: 687b ldr r3, [r7, #4] - 80040da: f8c3 20a4 str.w r2, [r3, #164] @ 0xa4 + 800412a: 687b ldr r3, [r7, #4] + 800412c: f8d3 30a4 ldr.w r3, [r3, #164] @ 0xa4 + 8004130: f043 0202 orr.w r2, r3, #2 + 8004134: 687b ldr r3, [r7, #4] + 8004136: f8c3 20a4 str.w r2, [r3, #164] @ 0xa4 /* Change LTDC state */ hltdc->State = HAL_LTDC_STATE_ERROR; - 80040de: 687b ldr r3, [r7, #4] - 80040e0: 2204 movs r2, #4 - 80040e2: f883 20a1 strb.w r2, [r3, #161] @ 0xa1 + 800413a: 687b ldr r3, [r7, #4] + 800413c: 2204 movs r2, #4 + 800413e: f883 20a1 strb.w r2, [r3, #161] @ 0xa1 /* Process unlocked */ __HAL_UNLOCK(hltdc); - 80040e6: 687b ldr r3, [r7, #4] - 80040e8: 2200 movs r2, #0 - 80040ea: f883 20a0 strb.w r2, [r3, #160] @ 0xa0 + 8004142: 687b ldr r3, [r7, #4] + 8004144: 2200 movs r2, #0 + 8004146: f883 20a0 strb.w r2, [r3, #160] @ 0xa0 #if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ hltdc->ErrorCallback(hltdc); #else /* Call legacy error callback*/ HAL_LTDC_ErrorCallback(hltdc); - 80040ee: 6878 ldr r0, [r7, #4] - 80040f0: f000 f846 bl 8004180 + 800414a: 6878 ldr r0, [r7, #4] + 800414c: f000 f846 bl 80041dc #endif /* USE_HAL_LTDC_REGISTER_CALLBACKS */ } /* Line Interrupt management ************************************************/ if (((isrflags & LTDC_ISR_LIF) != 0U) && ((itsources & LTDC_IER_LIE) != 0U)) - 80040f4: 68fb ldr r3, [r7, #12] - 80040f6: f003 0301 and.w r3, r3, #1 - 80040fa: 2b00 cmp r3, #0 - 80040fc: d01b beq.n 8004136 - 80040fe: 68bb ldr r3, [r7, #8] - 8004100: f003 0301 and.w r3, r3, #1 - 8004104: 2b00 cmp r3, #0 - 8004106: d016 beq.n 8004136 + 8004150: 68fb ldr r3, [r7, #12] + 8004152: f003 0301 and.w r3, r3, #1 + 8004156: 2b00 cmp r3, #0 + 8004158: d01b beq.n 8004192 + 800415a: 68bb ldr r3, [r7, #8] + 800415c: f003 0301 and.w r3, r3, #1 + 8004160: 2b00 cmp r3, #0 + 8004162: d016 beq.n 8004192 { /* Disable the Line interrupt */ __HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_LI); - 8004108: 687b ldr r3, [r7, #4] - 800410a: 681b ldr r3, [r3, #0] - 800410c: 6b5a ldr r2, [r3, #52] @ 0x34 - 800410e: 687b ldr r3, [r7, #4] - 8004110: 681b ldr r3, [r3, #0] - 8004112: f022 0201 bic.w r2, r2, #1 - 8004116: 635a str r2, [r3, #52] @ 0x34 + 8004164: 687b ldr r3, [r7, #4] + 8004166: 681b ldr r3, [r3, #0] + 8004168: 6b5a ldr r2, [r3, #52] @ 0x34 + 800416a: 687b ldr r3, [r7, #4] + 800416c: 681b ldr r3, [r3, #0] + 800416e: f022 0201 bic.w r2, r2, #1 + 8004172: 635a str r2, [r3, #52] @ 0x34 /* Clear the Line interrupt flag */ __HAL_LTDC_CLEAR_FLAG(hltdc, LTDC_FLAG_LI); - 8004118: 687b ldr r3, [r7, #4] - 800411a: 681b ldr r3, [r3, #0] - 800411c: 2201 movs r2, #1 - 800411e: 63da str r2, [r3, #60] @ 0x3c + 8004174: 687b ldr r3, [r7, #4] + 8004176: 681b ldr r3, [r3, #0] + 8004178: 2201 movs r2, #1 + 800417a: 63da str r2, [r3, #60] @ 0x3c /* Change LTDC state */ hltdc->State = HAL_LTDC_STATE_READY; - 8004120: 687b ldr r3, [r7, #4] - 8004122: 2201 movs r2, #1 - 8004124: f883 20a1 strb.w r2, [r3, #161] @ 0xa1 + 800417c: 687b ldr r3, [r7, #4] + 800417e: 2201 movs r2, #1 + 8004180: f883 20a1 strb.w r2, [r3, #161] @ 0xa1 /* Process unlocked */ __HAL_UNLOCK(hltdc); - 8004128: 687b ldr r3, [r7, #4] - 800412a: 2200 movs r2, #0 - 800412c: f883 20a0 strb.w r2, [r3, #160] @ 0xa0 + 8004184: 687b ldr r3, [r7, #4] + 8004186: 2200 movs r2, #0 + 8004188: f883 20a0 strb.w r2, [r3, #160] @ 0xa0 #if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1) /*Call registered Line Event callback */ hltdc->LineEventCallback(hltdc); #else /*Call Legacy Line Event callback */ HAL_LTDC_LineEventCallback(hltdc); - 8004130: 6878 ldr r0, [r7, #4] - 8004132: f000 f82f bl 8004194 + 800418c: 6878 ldr r0, [r7, #4] + 800418e: f000 f82f bl 80041f0 #endif /* USE_HAL_LTDC_REGISTER_CALLBACKS */ } /* Register reload Interrupt management ***************************************/ if (((isrflags & LTDC_ISR_RRIF) != 0U) && ((itsources & LTDC_IER_RRIE) != 0U)) - 8004136: 68fb ldr r3, [r7, #12] - 8004138: f003 0308 and.w r3, r3, #8 - 800413c: 2b00 cmp r3, #0 - 800413e: d01b beq.n 8004178 - 8004140: 68bb ldr r3, [r7, #8] - 8004142: f003 0308 and.w r3, r3, #8 - 8004146: 2b00 cmp r3, #0 - 8004148: d016 beq.n 8004178 + 8004192: 68fb ldr r3, [r7, #12] + 8004194: f003 0308 and.w r3, r3, #8 + 8004198: 2b00 cmp r3, #0 + 800419a: d01b beq.n 80041d4 + 800419c: 68bb ldr r3, [r7, #8] + 800419e: f003 0308 and.w r3, r3, #8 + 80041a2: 2b00 cmp r3, #0 + 80041a4: d016 beq.n 80041d4 { /* Disable the register reload interrupt */ __HAL_LTDC_DISABLE_IT(hltdc, LTDC_IT_RR); - 800414a: 687b ldr r3, [r7, #4] - 800414c: 681b ldr r3, [r3, #0] - 800414e: 6b5a ldr r2, [r3, #52] @ 0x34 - 8004150: 687b ldr r3, [r7, #4] - 8004152: 681b ldr r3, [r3, #0] - 8004154: f022 0208 bic.w r2, r2, #8 - 8004158: 635a str r2, [r3, #52] @ 0x34 + 80041a6: 687b ldr r3, [r7, #4] + 80041a8: 681b ldr r3, [r3, #0] + 80041aa: 6b5a ldr r2, [r3, #52] @ 0x34 + 80041ac: 687b ldr r3, [r7, #4] + 80041ae: 681b ldr r3, [r3, #0] + 80041b0: f022 0208 bic.w r2, r2, #8 + 80041b4: 635a str r2, [r3, #52] @ 0x34 /* Clear the register reload flag */ __HAL_LTDC_CLEAR_FLAG(hltdc, LTDC_FLAG_RR); - 800415a: 687b ldr r3, [r7, #4] - 800415c: 681b ldr r3, [r3, #0] - 800415e: 2208 movs r2, #8 - 8004160: 63da str r2, [r3, #60] @ 0x3c + 80041b6: 687b ldr r3, [r7, #4] + 80041b8: 681b ldr r3, [r3, #0] + 80041ba: 2208 movs r2, #8 + 80041bc: 63da str r2, [r3, #60] @ 0x3c /* Change LTDC state */ hltdc->State = HAL_LTDC_STATE_READY; - 8004162: 687b ldr r3, [r7, #4] - 8004164: 2201 movs r2, #1 - 8004166: f883 20a1 strb.w r2, [r3, #161] @ 0xa1 + 80041be: 687b ldr r3, [r7, #4] + 80041c0: 2201 movs r2, #1 + 80041c2: f883 20a1 strb.w r2, [r3, #161] @ 0xa1 /* Process unlocked */ __HAL_UNLOCK(hltdc); - 800416a: 687b ldr r3, [r7, #4] - 800416c: 2200 movs r2, #0 - 800416e: f883 20a0 strb.w r2, [r3, #160] @ 0xa0 + 80041c6: 687b ldr r3, [r7, #4] + 80041c8: 2200 movs r2, #0 + 80041ca: f883 20a0 strb.w r2, [r3, #160] @ 0xa0 #if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1) /*Call registered reload Event callback */ hltdc->ReloadEventCallback(hltdc); #else /*Call Legacy Reload Event callback */ HAL_LTDC_ReloadEventCallback(hltdc); - 8004172: 6878 ldr r0, [r7, #4] - 8004174: f000 f818 bl 80041a8 + 80041ce: 6878 ldr r0, [r7, #4] + 80041d0: f000 f818 bl 8004204 #endif /* USE_HAL_LTDC_REGISTER_CALLBACKS */ } } - 8004178: bf00 nop - 800417a: 3710 adds r7, #16 - 800417c: 46bd mov sp, r7 - 800417e: bd80 pop {r7, pc} + 80041d4: bf00 nop + 80041d6: 3710 adds r7, #16 + 80041d8: 46bd mov sp, r7 + 80041da: bd80 pop {r7, pc} -08004180 : +080041dc : * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains * the configuration information for the LTDC. * @retval None */ __weak void HAL_LTDC_ErrorCallback(LTDC_HandleTypeDef *hltdc) { - 8004180: b480 push {r7} - 8004182: b083 sub sp, #12 - 8004184: af00 add r7, sp, #0 - 8004186: 6078 str r0, [r7, #4] + 80041dc: b480 push {r7} + 80041de: b083 sub sp, #12 + 80041e0: af00 add r7, sp, #0 + 80041e2: 6078 str r0, [r7, #4] UNUSED(hltdc); /* NOTE : This function should not be modified, when the callback is needed, the HAL_LTDC_ErrorCallback could be implemented in the user file */ } - 8004188: bf00 nop - 800418a: 370c adds r7, #12 - 800418c: 46bd mov sp, r7 - 800418e: f85d 7b04 ldr.w r7, [sp], #4 - 8004192: 4770 bx lr + 80041e4: bf00 nop + 80041e6: 370c adds r7, #12 + 80041e8: 46bd mov sp, r7 + 80041ea: f85d 7b04 ldr.w r7, [sp], #4 + 80041ee: 4770 bx lr -08004194 : +080041f0 : * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains * the configuration information for the LTDC. * @retval None */ __weak void HAL_LTDC_LineEventCallback(LTDC_HandleTypeDef *hltdc) { - 8004194: b480 push {r7} - 8004196: b083 sub sp, #12 - 8004198: af00 add r7, sp, #0 - 800419a: 6078 str r0, [r7, #4] + 80041f0: b480 push {r7} + 80041f2: b083 sub sp, #12 + 80041f4: af00 add r7, sp, #0 + 80041f6: 6078 str r0, [r7, #4] UNUSED(hltdc); /* NOTE : This function should not be modified, when the callback is needed, the HAL_LTDC_LineEventCallback could be implemented in the user file */ } - 800419c: bf00 nop - 800419e: 370c adds r7, #12 - 80041a0: 46bd mov sp, r7 - 80041a2: f85d 7b04 ldr.w r7, [sp], #4 - 80041a6: 4770 bx lr + 80041f8: bf00 nop + 80041fa: 370c adds r7, #12 + 80041fc: 46bd mov sp, r7 + 80041fe: f85d 7b04 ldr.w r7, [sp], #4 + 8004202: 4770 bx lr -080041a8 : +08004204 : * @param hltdc pointer to a LTDC_HandleTypeDef structure that contains * the configuration information for the LTDC. * @retval None */ __weak void HAL_LTDC_ReloadEventCallback(LTDC_HandleTypeDef *hltdc) { - 80041a8: b480 push {r7} - 80041aa: b083 sub sp, #12 - 80041ac: af00 add r7, sp, #0 - 80041ae: 6078 str r0, [r7, #4] + 8004204: b480 push {r7} + 8004206: b083 sub sp, #12 + 8004208: af00 add r7, sp, #0 + 800420a: 6078 str r0, [r7, #4] UNUSED(hltdc); /* NOTE : This function should not be modified, when the callback is needed, the HAL_LTDC_ReloadEvenCallback could be implemented in the user file */ } - 80041b0: bf00 nop - 80041b2: 370c adds r7, #12 - 80041b4: 46bd mov sp, r7 - 80041b6: f85d 7b04 ldr.w r7, [sp], #4 - 80041ba: 4770 bx lr + 800420c: bf00 nop + 800420e: 370c adds r7, #12 + 8004210: 46bd mov sp, r7 + 8004212: f85d 7b04 ldr.w r7, [sp], #4 + 8004216: 4770 bx lr -080041bc : +08004218 : * This parameter can be one of the following values: * LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1) * @retval HAL status */ HAL_StatusTypeDef HAL_LTDC_ConfigLayer(LTDC_HandleTypeDef *hltdc, LTDC_LayerCfgTypeDef *pLayerCfg, uint32_t LayerIdx) { - 80041bc: b5b0 push {r4, r5, r7, lr} - 80041be: b084 sub sp, #16 - 80041c0: af00 add r7, sp, #0 - 80041c2: 60f8 str r0, [r7, #12] - 80041c4: 60b9 str r1, [r7, #8] - 80041c6: 607a str r2, [r7, #4] + 8004218: b5b0 push {r4, r5, r7, lr} + 800421a: b084 sub sp, #16 + 800421c: af00 add r7, sp, #0 + 800421e: 60f8 str r0, [r7, #12] + 8004220: 60b9 str r1, [r7, #8] + 8004222: 607a str r2, [r7, #4] assert_param(IS_LTDC_BLENDING_FACTOR2(pLayerCfg->BlendingFactor2)); assert_param(IS_LTDC_CFBLL(pLayerCfg->ImageWidth)); assert_param(IS_LTDC_CFBLNBR(pLayerCfg->ImageHeight)); /* Process locked */ __HAL_LOCK(hltdc); - 80041c8: 68fb ldr r3, [r7, #12] - 80041ca: f893 30a0 ldrb.w r3, [r3, #160] @ 0xa0 - 80041ce: 2b01 cmp r3, #1 - 80041d0: d101 bne.n 80041d6 - 80041d2: 2302 movs r3, #2 - 80041d4: e02c b.n 8004230 - 80041d6: 68fb ldr r3, [r7, #12] - 80041d8: 2201 movs r2, #1 - 80041da: f883 20a0 strb.w r2, [r3, #160] @ 0xa0 + 8004224: 68fb ldr r3, [r7, #12] + 8004226: f893 30a0 ldrb.w r3, [r3, #160] @ 0xa0 + 800422a: 2b01 cmp r3, #1 + 800422c: d101 bne.n 8004232 + 800422e: 2302 movs r3, #2 + 8004230: e02c b.n 800428c + 8004232: 68fb ldr r3, [r7, #12] + 8004234: 2201 movs r2, #1 + 8004236: f883 20a0 strb.w r2, [r3, #160] @ 0xa0 /* Change LTDC peripheral state */ hltdc->State = HAL_LTDC_STATE_BUSY; - 80041de: 68fb ldr r3, [r7, #12] - 80041e0: 2202 movs r2, #2 - 80041e2: f883 20a1 strb.w r2, [r3, #161] @ 0xa1 + 800423a: 68fb ldr r3, [r7, #12] + 800423c: 2202 movs r2, #2 + 800423e: f883 20a1 strb.w r2, [r3, #161] @ 0xa1 /* Copy new layer configuration into handle structure */ hltdc->LayerCfg[LayerIdx] = *pLayerCfg; - 80041e6: 68fa ldr r2, [r7, #12] - 80041e8: 687b ldr r3, [r7, #4] - 80041ea: 2134 movs r1, #52 @ 0x34 - 80041ec: fb01 f303 mul.w r3, r1, r3 - 80041f0: 4413 add r3, r2 - 80041f2: f103 0238 add.w r2, r3, #56 @ 0x38 - 80041f6: 68bb ldr r3, [r7, #8] - 80041f8: 4614 mov r4, r2 - 80041fa: 461d mov r5, r3 - 80041fc: cd0f ldmia r5!, {r0, r1, r2, r3} - 80041fe: c40f stmia r4!, {r0, r1, r2, r3} - 8004200: cd0f ldmia r5!, {r0, r1, r2, r3} - 8004202: c40f stmia r4!, {r0, r1, r2, r3} - 8004204: cd0f ldmia r5!, {r0, r1, r2, r3} - 8004206: c40f stmia r4!, {r0, r1, r2, r3} - 8004208: 682b ldr r3, [r5, #0] - 800420a: 6023 str r3, [r4, #0] + 8004242: 68fa ldr r2, [r7, #12] + 8004244: 687b ldr r3, [r7, #4] + 8004246: 2134 movs r1, #52 @ 0x34 + 8004248: fb01 f303 mul.w r3, r1, r3 + 800424c: 4413 add r3, r2 + 800424e: f103 0238 add.w r2, r3, #56 @ 0x38 + 8004252: 68bb ldr r3, [r7, #8] + 8004254: 4614 mov r4, r2 + 8004256: 461d mov r5, r3 + 8004258: cd0f ldmia r5!, {r0, r1, r2, r3} + 800425a: c40f stmia r4!, {r0, r1, r2, r3} + 800425c: cd0f ldmia r5!, {r0, r1, r2, r3} + 800425e: c40f stmia r4!, {r0, r1, r2, r3} + 8004260: cd0f ldmia r5!, {r0, r1, r2, r3} + 8004262: c40f stmia r4!, {r0, r1, r2, r3} + 8004264: 682b ldr r3, [r5, #0] + 8004266: 6023 str r3, [r4, #0] /* Configure the LTDC Layer */ LTDC_SetConfig(hltdc, pLayerCfg, LayerIdx); - 800420c: 687a ldr r2, [r7, #4] - 800420e: 68b9 ldr r1, [r7, #8] - 8004210: 68f8 ldr r0, [r7, #12] - 8004212: f000 f811 bl 8004238 + 8004268: 687a ldr r2, [r7, #4] + 800426a: 68b9 ldr r1, [r7, #8] + 800426c: 68f8 ldr r0, [r7, #12] + 800426e: f000 f811 bl 8004294 /* Set the Immediate Reload type */ hltdc->Instance->SRCR = LTDC_SRCR_IMR; - 8004216: 68fb ldr r3, [r7, #12] - 8004218: 681b ldr r3, [r3, #0] - 800421a: 2201 movs r2, #1 - 800421c: 625a str r2, [r3, #36] @ 0x24 + 8004272: 68fb ldr r3, [r7, #12] + 8004274: 681b ldr r3, [r3, #0] + 8004276: 2201 movs r2, #1 + 8004278: 625a str r2, [r3, #36] @ 0x24 /* Initialize the LTDC state*/ hltdc->State = HAL_LTDC_STATE_READY; - 800421e: 68fb ldr r3, [r7, #12] - 8004220: 2201 movs r2, #1 - 8004222: f883 20a1 strb.w r2, [r3, #161] @ 0xa1 + 800427a: 68fb ldr r3, [r7, #12] + 800427c: 2201 movs r2, #1 + 800427e: f883 20a1 strb.w r2, [r3, #161] @ 0xa1 /* Process unlocked */ __HAL_UNLOCK(hltdc); - 8004226: 68fb ldr r3, [r7, #12] - 8004228: 2200 movs r2, #0 - 800422a: f883 20a0 strb.w r2, [r3, #160] @ 0xa0 + 8004282: 68fb ldr r3, [r7, #12] + 8004284: 2200 movs r2, #0 + 8004286: f883 20a0 strb.w r2, [r3, #160] @ 0xa0 return HAL_OK; - 800422e: 2300 movs r3, #0 + 800428a: 2300 movs r3, #0 } - 8004230: 4618 mov r0, r3 - 8004232: 3710 adds r7, #16 - 8004234: 46bd mov sp, r7 - 8004236: bdb0 pop {r4, r5, r7, pc} + 800428c: 4618 mov r0, r3 + 800428e: 3710 adds r7, #16 + 8004290: 46bd mov sp, r7 + 8004292: bdb0 pop {r4, r5, r7, pc} -08004238 : +08004294 : * @param LayerIdx LTDC Layer index. * This parameter can be one of the following values: LTDC_LAYER_1 (0) or LTDC_LAYER_2 (1) * @retval None */ static void LTDC_SetConfig(LTDC_HandleTypeDef *hltdc, LTDC_LayerCfgTypeDef *pLayerCfg, uint32_t LayerIdx) { - 8004238: b480 push {r7} - 800423a: b089 sub sp, #36 @ 0x24 - 800423c: af00 add r7, sp, #0 - 800423e: 60f8 str r0, [r7, #12] - 8004240: 60b9 str r1, [r7, #8] - 8004242: 607a str r2, [r7, #4] + 8004294: b480 push {r7} + 8004296: b089 sub sp, #36 @ 0x24 + 8004298: af00 add r7, sp, #0 + 800429a: 60f8 str r0, [r7, #12] + 800429c: 60b9 str r1, [r7, #8] + 800429e: 607a str r2, [r7, #4] uint32_t tmp; uint32_t tmp1; uint32_t tmp2; /* Configure the horizontal start and stop position */ tmp = ((pLayerCfg->WindowX1 + ((hltdc->Instance->BPCR & LTDC_BPCR_AHBP) >> 16U)) << 16U); - 8004244: 68bb ldr r3, [r7, #8] - 8004246: 685a ldr r2, [r3, #4] - 8004248: 68fb ldr r3, [r7, #12] - 800424a: 681b ldr r3, [r3, #0] - 800424c: 68db ldr r3, [r3, #12] - 800424e: 0c1b lsrs r3, r3, #16 - 8004250: f3c3 030b ubfx r3, r3, #0, #12 - 8004254: 4413 add r3, r2 - 8004256: 041b lsls r3, r3, #16 - 8004258: 61fb str r3, [r7, #28] + 80042a0: 68bb ldr r3, [r7, #8] + 80042a2: 685a ldr r2, [r3, #4] + 80042a4: 68fb ldr r3, [r7, #12] + 80042a6: 681b ldr r3, [r3, #0] + 80042a8: 68db ldr r3, [r3, #12] + 80042aa: 0c1b lsrs r3, r3, #16 + 80042ac: f3c3 030b ubfx r3, r3, #0, #12 + 80042b0: 4413 add r3, r2 + 80042b2: 041b lsls r3, r3, #16 + 80042b4: 61fb str r3, [r7, #28] LTDC_LAYER(hltdc, LayerIdx)->WHPCR &= ~(LTDC_LxWHPCR_WHSTPOS | LTDC_LxWHPCR_WHSPPOS); - 800425a: 68fb ldr r3, [r7, #12] - 800425c: 681b ldr r3, [r3, #0] - 800425e: 461a mov r2, r3 - 8004260: 687b ldr r3, [r7, #4] - 8004262: 01db lsls r3, r3, #7 - 8004264: 4413 add r3, r2 - 8004266: 3384 adds r3, #132 @ 0x84 - 8004268: 685b ldr r3, [r3, #4] - 800426a: 68fa ldr r2, [r7, #12] - 800426c: 6812 ldr r2, [r2, #0] - 800426e: 4611 mov r1, r2 - 8004270: 687a ldr r2, [r7, #4] - 8004272: 01d2 lsls r2, r2, #7 - 8004274: 440a add r2, r1 - 8004276: 3284 adds r2, #132 @ 0x84 - 8004278: f403 4370 and.w r3, r3, #61440 @ 0xf000 - 800427c: 6053 str r3, [r2, #4] + 80042b6: 68fb ldr r3, [r7, #12] + 80042b8: 681b ldr r3, [r3, #0] + 80042ba: 461a mov r2, r3 + 80042bc: 687b ldr r3, [r7, #4] + 80042be: 01db lsls r3, r3, #7 + 80042c0: 4413 add r3, r2 + 80042c2: 3384 adds r3, #132 @ 0x84 + 80042c4: 685b ldr r3, [r3, #4] + 80042c6: 68fa ldr r2, [r7, #12] + 80042c8: 6812 ldr r2, [r2, #0] + 80042ca: 4611 mov r1, r2 + 80042cc: 687a ldr r2, [r7, #4] + 80042ce: 01d2 lsls r2, r2, #7 + 80042d0: 440a add r2, r1 + 80042d2: 3284 adds r2, #132 @ 0x84 + 80042d4: f403 4370 and.w r3, r3, #61440 @ 0xf000 + 80042d8: 6053 str r3, [r2, #4] LTDC_LAYER(hltdc, LayerIdx)->WHPCR = ((pLayerCfg->WindowX0 + \ - 800427e: 68bb ldr r3, [r7, #8] - 8004280: 681a ldr r2, [r3, #0] + 80042da: 68bb ldr r3, [r7, #8] + 80042dc: 681a ldr r2, [r3, #0] ((hltdc->Instance->BPCR & LTDC_BPCR_AHBP) >> 16U) + 1U) | tmp); - 8004282: 68fb ldr r3, [r7, #12] - 8004284: 681b ldr r3, [r3, #0] - 8004286: 68db ldr r3, [r3, #12] - 8004288: 0c1b lsrs r3, r3, #16 - 800428a: f3c3 030b ubfx r3, r3, #0, #12 + 80042de: 68fb ldr r3, [r7, #12] + 80042e0: 681b ldr r3, [r3, #0] + 80042e2: 68db ldr r3, [r3, #12] + 80042e4: 0c1b lsrs r3, r3, #16 + 80042e6: f3c3 030b ubfx r3, r3, #0, #12 LTDC_LAYER(hltdc, LayerIdx)->WHPCR = ((pLayerCfg->WindowX0 + \ - 800428e: 4413 add r3, r2 + 80042ea: 4413 add r3, r2 ((hltdc->Instance->BPCR & LTDC_BPCR_AHBP) >> 16U) + 1U) | tmp); - 8004290: 1c5a adds r2, r3, #1 + 80042ec: 1c5a adds r2, r3, #1 LTDC_LAYER(hltdc, LayerIdx)->WHPCR = ((pLayerCfg->WindowX0 + \ - 8004292: 68fb ldr r3, [r7, #12] - 8004294: 681b ldr r3, [r3, #0] - 8004296: 4619 mov r1, r3 - 8004298: 687b ldr r3, [r7, #4] - 800429a: 01db lsls r3, r3, #7 - 800429c: 440b add r3, r1 - 800429e: 3384 adds r3, #132 @ 0x84 - 80042a0: 4619 mov r1, r3 + 80042ee: 68fb ldr r3, [r7, #12] + 80042f0: 681b ldr r3, [r3, #0] + 80042f2: 4619 mov r1, r3 + 80042f4: 687b ldr r3, [r7, #4] + 80042f6: 01db lsls r3, r3, #7 + 80042f8: 440b add r3, r1 + 80042fa: 3384 adds r3, #132 @ 0x84 + 80042fc: 4619 mov r1, r3 ((hltdc->Instance->BPCR & LTDC_BPCR_AHBP) >> 16U) + 1U) | tmp); - 80042a2: 69fb ldr r3, [r7, #28] - 80042a4: 4313 orrs r3, r2 + 80042fe: 69fb ldr r3, [r7, #28] + 8004300: 4313 orrs r3, r2 LTDC_LAYER(hltdc, LayerIdx)->WHPCR = ((pLayerCfg->WindowX0 + \ - 80042a6: 604b str r3, [r1, #4] + 8004302: 604b str r3, [r1, #4] /* Configure the vertical start and stop position */ tmp = ((pLayerCfg->WindowY1 + (hltdc->Instance->BPCR & LTDC_BPCR_AVBP)) << 16U); - 80042a8: 68bb ldr r3, [r7, #8] - 80042aa: 68da ldr r2, [r3, #12] - 80042ac: 68fb ldr r3, [r7, #12] - 80042ae: 681b ldr r3, [r3, #0] - 80042b0: 68db ldr r3, [r3, #12] - 80042b2: f3c3 030a ubfx r3, r3, #0, #11 - 80042b6: 4413 add r3, r2 - 80042b8: 041b lsls r3, r3, #16 - 80042ba: 61fb str r3, [r7, #28] + 8004304: 68bb ldr r3, [r7, #8] + 8004306: 68da ldr r2, [r3, #12] + 8004308: 68fb ldr r3, [r7, #12] + 800430a: 681b ldr r3, [r3, #0] + 800430c: 68db ldr r3, [r3, #12] + 800430e: f3c3 030a ubfx r3, r3, #0, #11 + 8004312: 4413 add r3, r2 + 8004314: 041b lsls r3, r3, #16 + 8004316: 61fb str r3, [r7, #28] LTDC_LAYER(hltdc, LayerIdx)->WVPCR &= ~(LTDC_LxWVPCR_WVSTPOS | LTDC_LxWVPCR_WVSPPOS); - 80042bc: 68fb ldr r3, [r7, #12] - 80042be: 681b ldr r3, [r3, #0] - 80042c0: 461a mov r2, r3 - 80042c2: 687b ldr r3, [r7, #4] - 80042c4: 01db lsls r3, r3, #7 - 80042c6: 4413 add r3, r2 - 80042c8: 3384 adds r3, #132 @ 0x84 - 80042ca: 689b ldr r3, [r3, #8] - 80042cc: 68fa ldr r2, [r7, #12] - 80042ce: 6812 ldr r2, [r2, #0] - 80042d0: 4611 mov r1, r2 - 80042d2: 687a ldr r2, [r7, #4] - 80042d4: 01d2 lsls r2, r2, #7 - 80042d6: 440a add r2, r1 - 80042d8: 3284 adds r2, #132 @ 0x84 - 80042da: f403 4370 and.w r3, r3, #61440 @ 0xf000 - 80042de: 6093 str r3, [r2, #8] + 8004318: 68fb ldr r3, [r7, #12] + 800431a: 681b ldr r3, [r3, #0] + 800431c: 461a mov r2, r3 + 800431e: 687b ldr r3, [r7, #4] + 8004320: 01db lsls r3, r3, #7 + 8004322: 4413 add r3, r2 + 8004324: 3384 adds r3, #132 @ 0x84 + 8004326: 689b ldr r3, [r3, #8] + 8004328: 68fa ldr r2, [r7, #12] + 800432a: 6812 ldr r2, [r2, #0] + 800432c: 4611 mov r1, r2 + 800432e: 687a ldr r2, [r7, #4] + 8004330: 01d2 lsls r2, r2, #7 + 8004332: 440a add r2, r1 + 8004334: 3284 adds r2, #132 @ 0x84 + 8004336: f403 4370 and.w r3, r3, #61440 @ 0xf000 + 800433a: 6093 str r3, [r2, #8] LTDC_LAYER(hltdc, LayerIdx)->WVPCR = ((pLayerCfg->WindowY0 + (hltdc->Instance->BPCR & LTDC_BPCR_AVBP) + 1U) | tmp); - 80042e0: 68bb ldr r3, [r7, #8] - 80042e2: 689a ldr r2, [r3, #8] - 80042e4: 68fb ldr r3, [r7, #12] - 80042e6: 681b ldr r3, [r3, #0] - 80042e8: 68db ldr r3, [r3, #12] - 80042ea: f3c3 030a ubfx r3, r3, #0, #11 - 80042ee: 4413 add r3, r2 - 80042f0: 1c5a adds r2, r3, #1 - 80042f2: 68fb ldr r3, [r7, #12] - 80042f4: 681b ldr r3, [r3, #0] - 80042f6: 4619 mov r1, r3 - 80042f8: 687b ldr r3, [r7, #4] - 80042fa: 01db lsls r3, r3, #7 - 80042fc: 440b add r3, r1 - 80042fe: 3384 adds r3, #132 @ 0x84 - 8004300: 4619 mov r1, r3 - 8004302: 69fb ldr r3, [r7, #28] - 8004304: 4313 orrs r3, r2 - 8004306: 608b str r3, [r1, #8] + 800433c: 68bb ldr r3, [r7, #8] + 800433e: 689a ldr r2, [r3, #8] + 8004340: 68fb ldr r3, [r7, #12] + 8004342: 681b ldr r3, [r3, #0] + 8004344: 68db ldr r3, [r3, #12] + 8004346: f3c3 030a ubfx r3, r3, #0, #11 + 800434a: 4413 add r3, r2 + 800434c: 1c5a adds r2, r3, #1 + 800434e: 68fb ldr r3, [r7, #12] + 8004350: 681b ldr r3, [r3, #0] + 8004352: 4619 mov r1, r3 + 8004354: 687b ldr r3, [r7, #4] + 8004356: 01db lsls r3, r3, #7 + 8004358: 440b add r3, r1 + 800435a: 3384 adds r3, #132 @ 0x84 + 800435c: 4619 mov r1, r3 + 800435e: 69fb ldr r3, [r7, #28] + 8004360: 4313 orrs r3, r2 + 8004362: 608b str r3, [r1, #8] /* Specifies the pixel format */ LTDC_LAYER(hltdc, LayerIdx)->PFCR &= ~(LTDC_LxPFCR_PF); - 8004308: 68fb ldr r3, [r7, #12] - 800430a: 681b ldr r3, [r3, #0] - 800430c: 461a mov r2, r3 - 800430e: 687b ldr r3, [r7, #4] - 8004310: 01db lsls r3, r3, #7 - 8004312: 4413 add r3, r2 - 8004314: 3384 adds r3, #132 @ 0x84 - 8004316: 691b ldr r3, [r3, #16] - 8004318: 68fa ldr r2, [r7, #12] - 800431a: 6812 ldr r2, [r2, #0] - 800431c: 4611 mov r1, r2 - 800431e: 687a ldr r2, [r7, #4] - 8004320: 01d2 lsls r2, r2, #7 - 8004322: 440a add r2, r1 - 8004324: 3284 adds r2, #132 @ 0x84 - 8004326: f023 0307 bic.w r3, r3, #7 - 800432a: 6113 str r3, [r2, #16] + 8004364: 68fb ldr r3, [r7, #12] + 8004366: 681b ldr r3, [r3, #0] + 8004368: 461a mov r2, r3 + 800436a: 687b ldr r3, [r7, #4] + 800436c: 01db lsls r3, r3, #7 + 800436e: 4413 add r3, r2 + 8004370: 3384 adds r3, #132 @ 0x84 + 8004372: 691b ldr r3, [r3, #16] + 8004374: 68fa ldr r2, [r7, #12] + 8004376: 6812 ldr r2, [r2, #0] + 8004378: 4611 mov r1, r2 + 800437a: 687a ldr r2, [r7, #4] + 800437c: 01d2 lsls r2, r2, #7 + 800437e: 440a add r2, r1 + 8004380: 3284 adds r2, #132 @ 0x84 + 8004382: f023 0307 bic.w r3, r3, #7 + 8004386: 6113 str r3, [r2, #16] LTDC_LAYER(hltdc, LayerIdx)->PFCR = (pLayerCfg->PixelFormat); - 800432c: 68fb ldr r3, [r7, #12] - 800432e: 681b ldr r3, [r3, #0] - 8004330: 461a mov r2, r3 - 8004332: 687b ldr r3, [r7, #4] - 8004334: 01db lsls r3, r3, #7 - 8004336: 4413 add r3, r2 - 8004338: 3384 adds r3, #132 @ 0x84 - 800433a: 461a mov r2, r3 - 800433c: 68bb ldr r3, [r7, #8] - 800433e: 691b ldr r3, [r3, #16] - 8004340: 6113 str r3, [r2, #16] + 8004388: 68fb ldr r3, [r7, #12] + 800438a: 681b ldr r3, [r3, #0] + 800438c: 461a mov r2, r3 + 800438e: 687b ldr r3, [r7, #4] + 8004390: 01db lsls r3, r3, #7 + 8004392: 4413 add r3, r2 + 8004394: 3384 adds r3, #132 @ 0x84 + 8004396: 461a mov r2, r3 + 8004398: 68bb ldr r3, [r7, #8] + 800439a: 691b ldr r3, [r3, #16] + 800439c: 6113 str r3, [r2, #16] /* Configure the default color values */ tmp = ((uint32_t)(pLayerCfg->Backcolor.Green) << 8U); - 8004342: 68bb ldr r3, [r7, #8] - 8004344: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 - 8004348: 021b lsls r3, r3, #8 - 800434a: 61fb str r3, [r7, #28] + 800439e: 68bb ldr r3, [r7, #8] + 80043a0: f893 3031 ldrb.w r3, [r3, #49] @ 0x31 + 80043a4: 021b lsls r3, r3, #8 + 80043a6: 61fb str r3, [r7, #28] tmp1 = ((uint32_t)(pLayerCfg->Backcolor.Red) << 16U); - 800434c: 68bb ldr r3, [r7, #8] - 800434e: f893 3032 ldrb.w r3, [r3, #50] @ 0x32 - 8004352: 041b lsls r3, r3, #16 - 8004354: 61bb str r3, [r7, #24] + 80043a8: 68bb ldr r3, [r7, #8] + 80043aa: f893 3032 ldrb.w r3, [r3, #50] @ 0x32 + 80043ae: 041b lsls r3, r3, #16 + 80043b0: 61bb str r3, [r7, #24] tmp2 = (pLayerCfg->Alpha0 << 24U); - 8004356: 68bb ldr r3, [r7, #8] - 8004358: 699b ldr r3, [r3, #24] - 800435a: 061b lsls r3, r3, #24 - 800435c: 617b str r3, [r7, #20] + 80043b2: 68bb ldr r3, [r7, #8] + 80043b4: 699b ldr r3, [r3, #24] + 80043b6: 061b lsls r3, r3, #24 + 80043b8: 617b str r3, [r7, #20] WRITE_REG(LTDC_LAYER(hltdc, LayerIdx)->DCCR, (pLayerCfg->Backcolor.Blue | tmp | tmp1 | tmp2)); - 800435e: 68bb ldr r3, [r7, #8] - 8004360: f893 3030 ldrb.w r3, [r3, #48] @ 0x30 - 8004364: 461a mov r2, r3 - 8004366: 69fb ldr r3, [r7, #28] - 8004368: 431a orrs r2, r3 - 800436a: 69bb ldr r3, [r7, #24] - 800436c: 431a orrs r2, r3 - 800436e: 68fb ldr r3, [r7, #12] - 8004370: 681b ldr r3, [r3, #0] - 8004372: 4619 mov r1, r3 - 8004374: 687b ldr r3, [r7, #4] - 8004376: 01db lsls r3, r3, #7 - 8004378: 440b add r3, r1 - 800437a: 3384 adds r3, #132 @ 0x84 - 800437c: 4619 mov r1, r3 - 800437e: 697b ldr r3, [r7, #20] - 8004380: 4313 orrs r3, r2 - 8004382: 618b str r3, [r1, #24] + 80043ba: 68bb ldr r3, [r7, #8] + 80043bc: f893 3030 ldrb.w r3, [r3, #48] @ 0x30 + 80043c0: 461a mov r2, r3 + 80043c2: 69fb ldr r3, [r7, #28] + 80043c4: 431a orrs r2, r3 + 80043c6: 69bb ldr r3, [r7, #24] + 80043c8: 431a orrs r2, r3 + 80043ca: 68fb ldr r3, [r7, #12] + 80043cc: 681b ldr r3, [r3, #0] + 80043ce: 4619 mov r1, r3 + 80043d0: 687b ldr r3, [r7, #4] + 80043d2: 01db lsls r3, r3, #7 + 80043d4: 440b add r3, r1 + 80043d6: 3384 adds r3, #132 @ 0x84 + 80043d8: 4619 mov r1, r3 + 80043da: 697b ldr r3, [r7, #20] + 80043dc: 4313 orrs r3, r2 + 80043de: 618b str r3, [r1, #24] /* Specifies the constant alpha value */ LTDC_LAYER(hltdc, LayerIdx)->CACR &= ~(LTDC_LxCACR_CONSTA); - 8004384: 68fb ldr r3, [r7, #12] - 8004386: 681b ldr r3, [r3, #0] - 8004388: 461a mov r2, r3 - 800438a: 687b ldr r3, [r7, #4] - 800438c: 01db lsls r3, r3, #7 - 800438e: 4413 add r3, r2 - 8004390: 3384 adds r3, #132 @ 0x84 - 8004392: 695b ldr r3, [r3, #20] - 8004394: 68fa ldr r2, [r7, #12] - 8004396: 6812 ldr r2, [r2, #0] - 8004398: 4611 mov r1, r2 - 800439a: 687a ldr r2, [r7, #4] - 800439c: 01d2 lsls r2, r2, #7 - 800439e: 440a add r2, r1 - 80043a0: 3284 adds r2, #132 @ 0x84 - 80043a2: f023 03ff bic.w r3, r3, #255 @ 0xff - 80043a6: 6153 str r3, [r2, #20] + 80043e0: 68fb ldr r3, [r7, #12] + 80043e2: 681b ldr r3, [r3, #0] + 80043e4: 461a mov r2, r3 + 80043e6: 687b ldr r3, [r7, #4] + 80043e8: 01db lsls r3, r3, #7 + 80043ea: 4413 add r3, r2 + 80043ec: 3384 adds r3, #132 @ 0x84 + 80043ee: 695b ldr r3, [r3, #20] + 80043f0: 68fa ldr r2, [r7, #12] + 80043f2: 6812 ldr r2, [r2, #0] + 80043f4: 4611 mov r1, r2 + 80043f6: 687a ldr r2, [r7, #4] + 80043f8: 01d2 lsls r2, r2, #7 + 80043fa: 440a add r2, r1 + 80043fc: 3284 adds r2, #132 @ 0x84 + 80043fe: f023 03ff bic.w r3, r3, #255 @ 0xff + 8004402: 6153 str r3, [r2, #20] LTDC_LAYER(hltdc, LayerIdx)->CACR = (pLayerCfg->Alpha); - 80043a8: 68fb ldr r3, [r7, #12] - 80043aa: 681b ldr r3, [r3, #0] - 80043ac: 461a mov r2, r3 - 80043ae: 687b ldr r3, [r7, #4] - 80043b0: 01db lsls r3, r3, #7 - 80043b2: 4413 add r3, r2 - 80043b4: 3384 adds r3, #132 @ 0x84 - 80043b6: 461a mov r2, r3 - 80043b8: 68bb ldr r3, [r7, #8] - 80043ba: 695b ldr r3, [r3, #20] - 80043bc: 6153 str r3, [r2, #20] + 8004404: 68fb ldr r3, [r7, #12] + 8004406: 681b ldr r3, [r3, #0] + 8004408: 461a mov r2, r3 + 800440a: 687b ldr r3, [r7, #4] + 800440c: 01db lsls r3, r3, #7 + 800440e: 4413 add r3, r2 + 8004410: 3384 adds r3, #132 @ 0x84 + 8004412: 461a mov r2, r3 + 8004414: 68bb ldr r3, [r7, #8] + 8004416: 695b ldr r3, [r3, #20] + 8004418: 6153 str r3, [r2, #20] /* Specifies the blending factors */ LTDC_LAYER(hltdc, LayerIdx)->BFCR &= ~(LTDC_LxBFCR_BF2 | LTDC_LxBFCR_BF1); - 80043be: 68fb ldr r3, [r7, #12] - 80043c0: 681b ldr r3, [r3, #0] - 80043c2: 461a mov r2, r3 - 80043c4: 687b ldr r3, [r7, #4] - 80043c6: 01db lsls r3, r3, #7 - 80043c8: 4413 add r3, r2 - 80043ca: 3384 adds r3, #132 @ 0x84 - 80043cc: 69db ldr r3, [r3, #28] - 80043ce: 68fa ldr r2, [r7, #12] - 80043d0: 6812 ldr r2, [r2, #0] - 80043d2: 4611 mov r1, r2 - 80043d4: 687a ldr r2, [r7, #4] - 80043d6: 01d2 lsls r2, r2, #7 - 80043d8: 440a add r2, r1 - 80043da: 3284 adds r2, #132 @ 0x84 - 80043dc: f423 63e0 bic.w r3, r3, #1792 @ 0x700 - 80043e0: f023 0307 bic.w r3, r3, #7 - 80043e4: 61d3 str r3, [r2, #28] + 800441a: 68fb ldr r3, [r7, #12] + 800441c: 681b ldr r3, [r3, #0] + 800441e: 461a mov r2, r3 + 8004420: 687b ldr r3, [r7, #4] + 8004422: 01db lsls r3, r3, #7 + 8004424: 4413 add r3, r2 + 8004426: 3384 adds r3, #132 @ 0x84 + 8004428: 69db ldr r3, [r3, #28] + 800442a: 68fa ldr r2, [r7, #12] + 800442c: 6812 ldr r2, [r2, #0] + 800442e: 4611 mov r1, r2 + 8004430: 687a ldr r2, [r7, #4] + 8004432: 01d2 lsls r2, r2, #7 + 8004434: 440a add r2, r1 + 8004436: 3284 adds r2, #132 @ 0x84 + 8004438: f423 63e0 bic.w r3, r3, #1792 @ 0x700 + 800443c: f023 0307 bic.w r3, r3, #7 + 8004440: 61d3 str r3, [r2, #28] LTDC_LAYER(hltdc, LayerIdx)->BFCR = (pLayerCfg->BlendingFactor1 | pLayerCfg->BlendingFactor2); - 80043e6: 68bb ldr r3, [r7, #8] - 80043e8: 69da ldr r2, [r3, #28] - 80043ea: 68bb ldr r3, [r7, #8] - 80043ec: 6a1b ldr r3, [r3, #32] - 80043ee: 68f9 ldr r1, [r7, #12] - 80043f0: 6809 ldr r1, [r1, #0] - 80043f2: 4608 mov r0, r1 - 80043f4: 6879 ldr r1, [r7, #4] - 80043f6: 01c9 lsls r1, r1, #7 - 80043f8: 4401 add r1, r0 - 80043fa: 3184 adds r1, #132 @ 0x84 - 80043fc: 4313 orrs r3, r2 - 80043fe: 61cb str r3, [r1, #28] + 8004442: 68bb ldr r3, [r7, #8] + 8004444: 69da ldr r2, [r3, #28] + 8004446: 68bb ldr r3, [r7, #8] + 8004448: 6a1b ldr r3, [r3, #32] + 800444a: 68f9 ldr r1, [r7, #12] + 800444c: 6809 ldr r1, [r1, #0] + 800444e: 4608 mov r0, r1 + 8004450: 6879 ldr r1, [r7, #4] + 8004452: 01c9 lsls r1, r1, #7 + 8004454: 4401 add r1, r0 + 8004456: 3184 adds r1, #132 @ 0x84 + 8004458: 4313 orrs r3, r2 + 800445a: 61cb str r3, [r1, #28] /* Configure the color frame buffer start address */ WRITE_REG(LTDC_LAYER(hltdc, LayerIdx)->CFBAR, pLayerCfg->FBStartAdress); - 8004400: 68fb ldr r3, [r7, #12] - 8004402: 681b ldr r3, [r3, #0] - 8004404: 461a mov r2, r3 - 8004406: 687b ldr r3, [r7, #4] - 8004408: 01db lsls r3, r3, #7 - 800440a: 4413 add r3, r2 - 800440c: 3384 adds r3, #132 @ 0x84 - 800440e: 461a mov r2, r3 - 8004410: 68bb ldr r3, [r7, #8] - 8004412: 6a5b ldr r3, [r3, #36] @ 0x24 - 8004414: 6293 str r3, [r2, #40] @ 0x28 - - if (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB8888) - 8004416: 68bb ldr r3, [r7, #8] - 8004418: 691b ldr r3, [r3, #16] - 800441a: 2b00 cmp r3, #0 - 800441c: d102 bne.n 8004424 - { - tmp = 4U; - 800441e: 2304 movs r3, #4 - 8004420: 61fb str r3, [r7, #28] - 8004422: e01b b.n 800445c - } - else if (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_RGB888) - 8004424: 68bb ldr r3, [r7, #8] - 8004426: 691b ldr r3, [r3, #16] - 8004428: 2b01 cmp r3, #1 - 800442a: d102 bne.n 8004432 - { - tmp = 3U; - 800442c: 2303 movs r3, #3 - 800442e: 61fb str r3, [r7, #28] - 8004430: e014 b.n 800445c - } - else if ((pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB4444) || \ - 8004432: 68bb ldr r3, [r7, #8] - 8004434: 691b ldr r3, [r3, #16] - 8004436: 2b04 cmp r3, #4 - 8004438: d00b beq.n 8004452 - (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_RGB565) || \ - 800443a: 68bb ldr r3, [r7, #8] - 800443c: 691b ldr r3, [r3, #16] - else if ((pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB4444) || \ - 800443e: 2b02 cmp r3, #2 - 8004440: d007 beq.n 8004452 - (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB1555) || \ - 8004442: 68bb ldr r3, [r7, #8] - 8004444: 691b ldr r3, [r3, #16] - (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_RGB565) || \ - 8004446: 2b03 cmp r3, #3 - 8004448: d003 beq.n 8004452 - (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_AL88)) - 800444a: 68bb ldr r3, [r7, #8] - 800444c: 691b ldr r3, [r3, #16] - (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB1555) || \ - 800444e: 2b07 cmp r3, #7 - 8004450: d102 bne.n 8004458 - { - tmp = 2U; - 8004452: 2302 movs r3, #2 - 8004454: 61fb str r3, [r7, #28] - 8004456: e001 b.n 800445c - } - else - { - tmp = 1U; - 8004458: 2301 movs r3, #1 - 800445a: 61fb str r3, [r7, #28] - } - - /* Configure the color frame buffer pitch in byte */ - LTDC_LAYER(hltdc, LayerIdx)->CFBLR &= ~(LTDC_LxCFBLR_CFBLL | LTDC_LxCFBLR_CFBP); 800445c: 68fb ldr r3, [r7, #12] 800445e: 681b ldr r3, [r3, #0] 8004460: 461a mov r2, r3 @@ -10881,5318 +10846,5311 @@ static void LTDC_SetConfig(LTDC_HandleTypeDef *hltdc, LTDC_LayerCfgTypeDef *pLay 8004464: 01db lsls r3, r3, #7 8004466: 4413 add r3, r2 8004468: 3384 adds r3, #132 @ 0x84 - 800446a: 6adb ldr r3, [r3, #44] @ 0x2c - 800446c: 68fa ldr r2, [r7, #12] - 800446e: 6812 ldr r2, [r2, #0] - 8004470: 4611 mov r1, r2 - 8004472: 687a ldr r2, [r7, #4] - 8004474: 01d2 lsls r2, r2, #7 - 8004476: 440a add r2, r1 - 8004478: 3284 adds r2, #132 @ 0x84 - 800447a: f003 23e0 and.w r3, r3, #3758153728 @ 0xe000e000 - 800447e: 62d3 str r3, [r2, #44] @ 0x2c - LTDC_LAYER(hltdc, LayerIdx)->CFBLR = (((pLayerCfg->ImageWidth * tmp) << 16U) | \ + 800446a: 461a mov r2, r3 + 800446c: 68bb ldr r3, [r7, #8] + 800446e: 6a5b ldr r3, [r3, #36] @ 0x24 + 8004470: 6293 str r3, [r2, #40] @ 0x28 + + if (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB8888) + 8004472: 68bb ldr r3, [r7, #8] + 8004474: 691b ldr r3, [r3, #16] + 8004476: 2b00 cmp r3, #0 + 8004478: d102 bne.n 8004480 + { + tmp = 4U; + 800447a: 2304 movs r3, #4 + 800447c: 61fb str r3, [r7, #28] + 800447e: e01b b.n 80044b8 + } + else if (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_RGB888) 8004480: 68bb ldr r3, [r7, #8] - 8004482: 6a9b ldr r3, [r3, #40] @ 0x28 - 8004484: 69fa ldr r2, [r7, #28] - 8004486: fb02 f303 mul.w r3, r2, r3 - 800448a: 041a lsls r2, r3, #16 - (((pLayerCfg->WindowX1 - pLayerCfg->WindowX0) * tmp) + 3U)); - 800448c: 68bb ldr r3, [r7, #8] - 800448e: 6859 ldr r1, [r3, #4] - 8004490: 68bb ldr r3, [r7, #8] - 8004492: 681b ldr r3, [r3, #0] - 8004494: 1acb subs r3, r1, r3 - 8004496: 69f9 ldr r1, [r7, #28] - 8004498: fb01 f303 mul.w r3, r1, r3 - 800449c: 3303 adds r3, #3 + 8004482: 691b ldr r3, [r3, #16] + 8004484: 2b01 cmp r3, #1 + 8004486: d102 bne.n 800448e + { + tmp = 3U; + 8004488: 2303 movs r3, #3 + 800448a: 61fb str r3, [r7, #28] + 800448c: e014 b.n 80044b8 + } + else if ((pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB4444) || \ + 800448e: 68bb ldr r3, [r7, #8] + 8004490: 691b ldr r3, [r3, #16] + 8004492: 2b04 cmp r3, #4 + 8004494: d00b beq.n 80044ae + (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_RGB565) || \ + 8004496: 68bb ldr r3, [r7, #8] + 8004498: 691b ldr r3, [r3, #16] + else if ((pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB4444) || \ + 800449a: 2b02 cmp r3, #2 + 800449c: d007 beq.n 80044ae + (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB1555) || \ + 800449e: 68bb ldr r3, [r7, #8] + 80044a0: 691b ldr r3, [r3, #16] + (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_RGB565) || \ + 80044a2: 2b03 cmp r3, #3 + 80044a4: d003 beq.n 80044ae + (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_AL88)) + 80044a6: 68bb ldr r3, [r7, #8] + 80044a8: 691b ldr r3, [r3, #16] + (pLayerCfg->PixelFormat == LTDC_PIXEL_FORMAT_ARGB1555) || \ + 80044aa: 2b07 cmp r3, #7 + 80044ac: d102 bne.n 80044b4 + { + tmp = 2U; + 80044ae: 2302 movs r3, #2 + 80044b0: 61fb str r3, [r7, #28] + 80044b2: e001 b.n 80044b8 + } + else + { + tmp = 1U; + 80044b4: 2301 movs r3, #1 + 80044b6: 61fb str r3, [r7, #28] + } + + /* Configure the color frame buffer pitch in byte */ + LTDC_LAYER(hltdc, LayerIdx)->CFBLR &= ~(LTDC_LxCFBLR_CFBLL | LTDC_LxCFBLR_CFBP); + 80044b8: 68fb ldr r3, [r7, #12] + 80044ba: 681b ldr r3, [r3, #0] + 80044bc: 461a mov r2, r3 + 80044be: 687b ldr r3, [r7, #4] + 80044c0: 01db lsls r3, r3, #7 + 80044c2: 4413 add r3, r2 + 80044c4: 3384 adds r3, #132 @ 0x84 + 80044c6: 6adb ldr r3, [r3, #44] @ 0x2c + 80044c8: 68fa ldr r2, [r7, #12] + 80044ca: 6812 ldr r2, [r2, #0] + 80044cc: 4611 mov r1, r2 + 80044ce: 687a ldr r2, [r7, #4] + 80044d0: 01d2 lsls r2, r2, #7 + 80044d2: 440a add r2, r1 + 80044d4: 3284 adds r2, #132 @ 0x84 + 80044d6: f003 23e0 and.w r3, r3, #3758153728 @ 0xe000e000 + 80044da: 62d3 str r3, [r2, #44] @ 0x2c LTDC_LAYER(hltdc, LayerIdx)->CFBLR = (((pLayerCfg->ImageWidth * tmp) << 16U) | \ - 800449e: 68f9 ldr r1, [r7, #12] - 80044a0: 6809 ldr r1, [r1, #0] - 80044a2: 4608 mov r0, r1 - 80044a4: 6879 ldr r1, [r7, #4] - 80044a6: 01c9 lsls r1, r1, #7 - 80044a8: 4401 add r1, r0 - 80044aa: 3184 adds r1, #132 @ 0x84 - 80044ac: 4313 orrs r3, r2 - 80044ae: 62cb str r3, [r1, #44] @ 0x2c + 80044dc: 68bb ldr r3, [r7, #8] + 80044de: 6a9b ldr r3, [r3, #40] @ 0x28 + 80044e0: 69fa ldr r2, [r7, #28] + 80044e2: fb02 f303 mul.w r3, r2, r3 + 80044e6: 041a lsls r2, r3, #16 + (((pLayerCfg->WindowX1 - pLayerCfg->WindowX0) * tmp) + 3U)); + 80044e8: 68bb ldr r3, [r7, #8] + 80044ea: 6859 ldr r1, [r3, #4] + 80044ec: 68bb ldr r3, [r7, #8] + 80044ee: 681b ldr r3, [r3, #0] + 80044f0: 1acb subs r3, r1, r3 + 80044f2: 69f9 ldr r1, [r7, #28] + 80044f4: fb01 f303 mul.w r3, r1, r3 + 80044f8: 3303 adds r3, #3 + LTDC_LAYER(hltdc, LayerIdx)->CFBLR = (((pLayerCfg->ImageWidth * tmp) << 16U) | \ + 80044fa: 68f9 ldr r1, [r7, #12] + 80044fc: 6809 ldr r1, [r1, #0] + 80044fe: 4608 mov r0, r1 + 8004500: 6879 ldr r1, [r7, #4] + 8004502: 01c9 lsls r1, r1, #7 + 8004504: 4401 add r1, r0 + 8004506: 3184 adds r1, #132 @ 0x84 + 8004508: 4313 orrs r3, r2 + 800450a: 62cb str r3, [r1, #44] @ 0x2c /* Configure the frame buffer line number */ LTDC_LAYER(hltdc, LayerIdx)->CFBLNR &= ~(LTDC_LxCFBLNR_CFBLNBR); - 80044b0: 68fb ldr r3, [r7, #12] - 80044b2: 681b ldr r3, [r3, #0] - 80044b4: 461a mov r2, r3 - 80044b6: 687b ldr r3, [r7, #4] - 80044b8: 01db lsls r3, r3, #7 - 80044ba: 4413 add r3, r2 - 80044bc: 3384 adds r3, #132 @ 0x84 - 80044be: 6b1b ldr r3, [r3, #48] @ 0x30 - 80044c0: 68fa ldr r2, [r7, #12] - 80044c2: 6812 ldr r2, [r2, #0] - 80044c4: 4611 mov r1, r2 - 80044c6: 687a ldr r2, [r7, #4] - 80044c8: 01d2 lsls r2, r2, #7 - 80044ca: 440a add r2, r1 - 80044cc: 3284 adds r2, #132 @ 0x84 - 80044ce: f423 63ff bic.w r3, r3, #2040 @ 0x7f8 - 80044d2: f023 0307 bic.w r3, r3, #7 - 80044d6: 6313 str r3, [r2, #48] @ 0x30 + 800450c: 68fb ldr r3, [r7, #12] + 800450e: 681b ldr r3, [r3, #0] + 8004510: 461a mov r2, r3 + 8004512: 687b ldr r3, [r7, #4] + 8004514: 01db lsls r3, r3, #7 + 8004516: 4413 add r3, r2 + 8004518: 3384 adds r3, #132 @ 0x84 + 800451a: 6b1b ldr r3, [r3, #48] @ 0x30 + 800451c: 68fa ldr r2, [r7, #12] + 800451e: 6812 ldr r2, [r2, #0] + 8004520: 4611 mov r1, r2 + 8004522: 687a ldr r2, [r7, #4] + 8004524: 01d2 lsls r2, r2, #7 + 8004526: 440a add r2, r1 + 8004528: 3284 adds r2, #132 @ 0x84 + 800452a: f423 63ff bic.w r3, r3, #2040 @ 0x7f8 + 800452e: f023 0307 bic.w r3, r3, #7 + 8004532: 6313 str r3, [r2, #48] @ 0x30 LTDC_LAYER(hltdc, LayerIdx)->CFBLNR = (pLayerCfg->ImageHeight); - 80044d8: 68fb ldr r3, [r7, #12] - 80044da: 681b ldr r3, [r3, #0] - 80044dc: 461a mov r2, r3 - 80044de: 687b ldr r3, [r7, #4] - 80044e0: 01db lsls r3, r3, #7 - 80044e2: 4413 add r3, r2 - 80044e4: 3384 adds r3, #132 @ 0x84 - 80044e6: 461a mov r2, r3 - 80044e8: 68bb ldr r3, [r7, #8] - 80044ea: 6adb ldr r3, [r3, #44] @ 0x2c - 80044ec: 6313 str r3, [r2, #48] @ 0x30 + 8004534: 68fb ldr r3, [r7, #12] + 8004536: 681b ldr r3, [r3, #0] + 8004538: 461a mov r2, r3 + 800453a: 687b ldr r3, [r7, #4] + 800453c: 01db lsls r3, r3, #7 + 800453e: 4413 add r3, r2 + 8004540: 3384 adds r3, #132 @ 0x84 + 8004542: 461a mov r2, r3 + 8004544: 68bb ldr r3, [r7, #8] + 8004546: 6adb ldr r3, [r3, #44] @ 0x2c + 8004548: 6313 str r3, [r2, #48] @ 0x30 /* Enable LTDC_Layer by setting LEN bit */ LTDC_LAYER(hltdc, LayerIdx)->CR |= (uint32_t)LTDC_LxCR_LEN; - 80044ee: 68fb ldr r3, [r7, #12] - 80044f0: 681b ldr r3, [r3, #0] - 80044f2: 461a mov r2, r3 - 80044f4: 687b ldr r3, [r7, #4] - 80044f6: 01db lsls r3, r3, #7 - 80044f8: 4413 add r3, r2 - 80044fa: 3384 adds r3, #132 @ 0x84 - 80044fc: 681b ldr r3, [r3, #0] - 80044fe: 68fa ldr r2, [r7, #12] - 8004500: 6812 ldr r2, [r2, #0] - 8004502: 4611 mov r1, r2 - 8004504: 687a ldr r2, [r7, #4] - 8004506: 01d2 lsls r2, r2, #7 - 8004508: 440a add r2, r1 - 800450a: 3284 adds r2, #132 @ 0x84 - 800450c: f043 0301 orr.w r3, r3, #1 - 8004510: 6013 str r3, [r2, #0] + 800454a: 68fb ldr r3, [r7, #12] + 800454c: 681b ldr r3, [r3, #0] + 800454e: 461a mov r2, r3 + 8004550: 687b ldr r3, [r7, #4] + 8004552: 01db lsls r3, r3, #7 + 8004554: 4413 add r3, r2 + 8004556: 3384 adds r3, #132 @ 0x84 + 8004558: 681b ldr r3, [r3, #0] + 800455a: 68fa ldr r2, [r7, #12] + 800455c: 6812 ldr r2, [r2, #0] + 800455e: 4611 mov r1, r2 + 8004560: 687a ldr r2, [r7, #4] + 8004562: 01d2 lsls r2, r2, #7 + 8004564: 440a add r2, r1 + 8004566: 3284 adds r2, #132 @ 0x84 + 8004568: f043 0301 orr.w r3, r3, #1 + 800456c: 6013 str r3, [r2, #0] } - 8004512: bf00 nop - 8004514: 3724 adds r7, #36 @ 0x24 - 8004516: 46bd mov sp, r7 - 8004518: f85d 7b04 ldr.w r7, [sp], #4 - 800451c: 4770 bx lr + 800456e: bf00 nop + 8004570: 3724 adds r7, #36 @ 0x24 + 8004572: 46bd mov sp, r7 + 8004574: f85d 7b04 ldr.w r7, [sp], #4 + 8004578: 4770 bx lr ... -08004520 : +0800457c : * supported by this API. User should request a transition to HSE Off * first and then HSE On or HSE Bypass. * @retval HAL status */ __weak HAL_StatusTypeDef HAL_RCC_OscConfig(const RCC_OscInitTypeDef *RCC_OscInitStruct) { - 8004520: b580 push {r7, lr} - 8004522: b086 sub sp, #24 - 8004524: af00 add r7, sp, #0 - 8004526: 6078 str r0, [r7, #4] + 800457c: b580 push {r7, lr} + 800457e: b086 sub sp, #24 + 8004580: af00 add r7, sp, #0 + 8004582: 6078 str r0, [r7, #4] uint32_t tickstart; uint32_t pll_config; /* Check Null pointer */ if (RCC_OscInitStruct == NULL) - 8004528: 687b ldr r3, [r7, #4] - 800452a: 2b00 cmp r3, #0 - 800452c: d101 bne.n 8004532 + 8004584: 687b ldr r3, [r7, #4] + 8004586: 2b00 cmp r3, #0 + 8004588: d101 bne.n 800458e { return HAL_ERROR; - 800452e: 2301 movs r3, #1 - 8004530: e267 b.n 8004a02 + 800458a: 2301 movs r3, #1 + 800458c: e267 b.n 8004a5e } /* Check the parameters */ assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); /*------------------------------- HSE Configuration ------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) - 8004532: 687b ldr r3, [r7, #4] - 8004534: 681b ldr r3, [r3, #0] - 8004536: f003 0301 and.w r3, r3, #1 - 800453a: 2b00 cmp r3, #0 - 800453c: d075 beq.n 800462a + 800458e: 687b ldr r3, [r7, #4] + 8004590: 681b ldr r3, [r3, #0] + 8004592: f003 0301 and.w r3, r3, #1 + 8004596: 2b00 cmp r3, #0 + 8004598: d075 beq.n 8004686 { /* 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 HSE will not disabled */ if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSE) || \ - 800453e: 4b88 ldr r3, [pc, #544] @ (8004760 ) - 8004540: 689b ldr r3, [r3, #8] - 8004542: f003 030c and.w r3, r3, #12 - 8004546: 2b04 cmp r3, #4 - 8004548: d00c beq.n 8004564 + 800459a: 4b88 ldr r3, [pc, #544] @ (80047bc ) + 800459c: 689b ldr r3, [r3, #8] + 800459e: f003 030c and.w r3, r3, #12 + 80045a2: 2b04 cmp r3, #4 + 80045a4: d00c beq.n 80045c0 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE))) - 800454a: 4b85 ldr r3, [pc, #532] @ (8004760 ) - 800454c: 689b ldr r3, [r3, #8] - 800454e: f003 030c and.w r3, r3, #12 + 80045a6: 4b85 ldr r3, [pc, #532] @ (80047bc ) + 80045a8: 689b ldr r3, [r3, #8] + 80045aa: f003 030c and.w r3, r3, #12 if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSE) || \ - 8004552: 2b08 cmp r3, #8 - 8004554: d112 bne.n 800457c + 80045ae: 2b08 cmp r3, #8 + 80045b0: d112 bne.n 80045d8 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE))) - 8004556: 4b82 ldr r3, [pc, #520] @ (8004760 ) - 8004558: 685b ldr r3, [r3, #4] - 800455a: f403 0380 and.w r3, r3, #4194304 @ 0x400000 - 800455e: f5b3 0f80 cmp.w r3, #4194304 @ 0x400000 - 8004562: d10b bne.n 800457c + 80045b2: 4b82 ldr r3, [pc, #520] @ (80047bc ) + 80045b4: 685b ldr r3, [r3, #4] + 80045b6: f403 0380 and.w r3, r3, #4194304 @ 0x400000 + 80045ba: f5b3 0f80 cmp.w r3, #4194304 @ 0x400000 + 80045be: d10b bne.n 80045d8 { if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 8004564: 4b7e ldr r3, [pc, #504] @ (8004760 ) - 8004566: 681b ldr r3, [r3, #0] - 8004568: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 800456c: 2b00 cmp r3, #0 - 800456e: d05b beq.n 8004628 - 8004570: 687b ldr r3, [r7, #4] - 8004572: 685b ldr r3, [r3, #4] - 8004574: 2b00 cmp r3, #0 - 8004576: d157 bne.n 8004628 + 80045c0: 4b7e ldr r3, [pc, #504] @ (80047bc ) + 80045c2: 681b ldr r3, [r3, #0] + 80045c4: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80045c8: 2b00 cmp r3, #0 + 80045ca: d05b beq.n 8004684 + 80045cc: 687b ldr r3, [r7, #4] + 80045ce: 685b ldr r3, [r3, #4] + 80045d0: 2b00 cmp r3, #0 + 80045d2: d157 bne.n 8004684 { return HAL_ERROR; - 8004578: 2301 movs r3, #1 - 800457a: e242 b.n 8004a02 + 80045d4: 2301 movs r3, #1 + 80045d6: e242 b.n 8004a5e } } else { /* Set the new HSE configuration ---------------------------------------*/ __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); - 800457c: 687b ldr r3, [r7, #4] - 800457e: 685b ldr r3, [r3, #4] - 8004580: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8004584: d106 bne.n 8004594 - 8004586: 4b76 ldr r3, [pc, #472] @ (8004760 ) - 8004588: 681b ldr r3, [r3, #0] - 800458a: 4a75 ldr r2, [pc, #468] @ (8004760 ) - 800458c: f443 3380 orr.w r3, r3, #65536 @ 0x10000 - 8004590: 6013 str r3, [r2, #0] - 8004592: e01d b.n 80045d0 - 8004594: 687b ldr r3, [r7, #4] - 8004596: 685b ldr r3, [r3, #4] - 8004598: f5b3 2fa0 cmp.w r3, #327680 @ 0x50000 - 800459c: d10c bne.n 80045b8 - 800459e: 4b70 ldr r3, [pc, #448] @ (8004760 ) - 80045a0: 681b ldr r3, [r3, #0] - 80045a2: 4a6f ldr r2, [pc, #444] @ (8004760 ) - 80045a4: f443 2380 orr.w r3, r3, #262144 @ 0x40000 - 80045a8: 6013 str r3, [r2, #0] - 80045aa: 4b6d ldr r3, [pc, #436] @ (8004760 ) - 80045ac: 681b ldr r3, [r3, #0] - 80045ae: 4a6c ldr r2, [pc, #432] @ (8004760 ) - 80045b0: f443 3380 orr.w r3, r3, #65536 @ 0x10000 - 80045b4: 6013 str r3, [r2, #0] - 80045b6: e00b b.n 80045d0 - 80045b8: 4b69 ldr r3, [pc, #420] @ (8004760 ) - 80045ba: 681b ldr r3, [r3, #0] - 80045bc: 4a68 ldr r2, [pc, #416] @ (8004760 ) - 80045be: f423 3380 bic.w r3, r3, #65536 @ 0x10000 - 80045c2: 6013 str r3, [r2, #0] - 80045c4: 4b66 ldr r3, [pc, #408] @ (8004760 ) - 80045c6: 681b ldr r3, [r3, #0] - 80045c8: 4a65 ldr r2, [pc, #404] @ (8004760 ) - 80045ca: f423 2380 bic.w r3, r3, #262144 @ 0x40000 - 80045ce: 6013 str r3, [r2, #0] + 80045d8: 687b ldr r3, [r7, #4] + 80045da: 685b ldr r3, [r3, #4] + 80045dc: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 80045e0: d106 bne.n 80045f0 + 80045e2: 4b76 ldr r3, [pc, #472] @ (80047bc ) + 80045e4: 681b ldr r3, [r3, #0] + 80045e6: 4a75 ldr r2, [pc, #468] @ (80047bc ) + 80045e8: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 80045ec: 6013 str r3, [r2, #0] + 80045ee: e01d b.n 800462c + 80045f0: 687b ldr r3, [r7, #4] + 80045f2: 685b ldr r3, [r3, #4] + 80045f4: f5b3 2fa0 cmp.w r3, #327680 @ 0x50000 + 80045f8: d10c bne.n 8004614 + 80045fa: 4b70 ldr r3, [pc, #448] @ (80047bc ) + 80045fc: 681b ldr r3, [r3, #0] + 80045fe: 4a6f ldr r2, [pc, #444] @ (80047bc ) + 8004600: f443 2380 orr.w r3, r3, #262144 @ 0x40000 + 8004604: 6013 str r3, [r2, #0] + 8004606: 4b6d ldr r3, [pc, #436] @ (80047bc ) + 8004608: 681b ldr r3, [r3, #0] + 800460a: 4a6c ldr r2, [pc, #432] @ (80047bc ) + 800460c: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8004610: 6013 str r3, [r2, #0] + 8004612: e00b b.n 800462c + 8004614: 4b69 ldr r3, [pc, #420] @ (80047bc ) + 8004616: 681b ldr r3, [r3, #0] + 8004618: 4a68 ldr r2, [pc, #416] @ (80047bc ) + 800461a: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 800461e: 6013 str r3, [r2, #0] + 8004620: 4b66 ldr r3, [pc, #408] @ (80047bc ) + 8004622: 681b ldr r3, [r3, #0] + 8004624: 4a65 ldr r2, [pc, #404] @ (80047bc ) + 8004626: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 800462a: 6013 str r3, [r2, #0] /* Check the HSE State */ if ((RCC_OscInitStruct->HSEState) != RCC_HSE_OFF) - 80045d0: 687b ldr r3, [r7, #4] - 80045d2: 685b ldr r3, [r3, #4] - 80045d4: 2b00 cmp r3, #0 - 80045d6: d013 beq.n 8004600 + 800462c: 687b ldr r3, [r7, #4] + 800462e: 685b ldr r3, [r3, #4] + 8004630: 2b00 cmp r3, #0 + 8004632: d013 beq.n 800465c { /* Get Start Tick */ tickstart = HAL_GetTick(); - 80045d8: f7fd f832 bl 8001640 - 80045dc: 6138 str r0, [r7, #16] + 8004634: f7fd f856 bl 80016e4 + 8004638: 6138 str r0, [r7, #16] /* Wait till HSE is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 80045de: e008 b.n 80045f2 + 800463a: e008 b.n 800464e { if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 80045e0: f7fd f82e bl 8001640 - 80045e4: 4602 mov r2, r0 - 80045e6: 693b ldr r3, [r7, #16] - 80045e8: 1ad3 subs r3, r2, r3 - 80045ea: 2b64 cmp r3, #100 @ 0x64 - 80045ec: d901 bls.n 80045f2 + 800463c: f7fd f852 bl 80016e4 + 8004640: 4602 mov r2, r0 + 8004642: 693b ldr r3, [r7, #16] + 8004644: 1ad3 subs r3, r2, r3 + 8004646: 2b64 cmp r3, #100 @ 0x64 + 8004648: d901 bls.n 800464e { return HAL_TIMEOUT; - 80045ee: 2303 movs r3, #3 - 80045f0: e207 b.n 8004a02 + 800464a: 2303 movs r3, #3 + 800464c: e207 b.n 8004a5e while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 80045f2: 4b5b ldr r3, [pc, #364] @ (8004760 ) - 80045f4: 681b ldr r3, [r3, #0] - 80045f6: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 80045fa: 2b00 cmp r3, #0 - 80045fc: d0f0 beq.n 80045e0 - 80045fe: e014 b.n 800462a + 800464e: 4b5b ldr r3, [pc, #364] @ (80047bc ) + 8004650: 681b ldr r3, [r3, #0] + 8004652: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8004656: 2b00 cmp r3, #0 + 8004658: d0f0 beq.n 800463c + 800465a: e014 b.n 8004686 } } else { /* Get Start Tick */ tickstart = HAL_GetTick(); - 8004600: f7fd f81e bl 8001640 - 8004604: 6138 str r0, [r7, #16] + 800465c: f7fd f842 bl 80016e4 + 8004660: 6138 str r0, [r7, #16] /* Wait till HSE is bypassed or disabled */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) - 8004606: e008 b.n 800461a + 8004662: e008 b.n 8004676 { if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 8004608: f7fd f81a bl 8001640 - 800460c: 4602 mov r2, r0 - 800460e: 693b ldr r3, [r7, #16] - 8004610: 1ad3 subs r3, r2, r3 - 8004612: 2b64 cmp r3, #100 @ 0x64 - 8004614: d901 bls.n 800461a + 8004664: f7fd f83e bl 80016e4 + 8004668: 4602 mov r2, r0 + 800466a: 693b ldr r3, [r7, #16] + 800466c: 1ad3 subs r3, r2, r3 + 800466e: 2b64 cmp r3, #100 @ 0x64 + 8004670: d901 bls.n 8004676 { return HAL_TIMEOUT; - 8004616: 2303 movs r3, #3 - 8004618: e1f3 b.n 8004a02 + 8004672: 2303 movs r3, #3 + 8004674: e1f3 b.n 8004a5e while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) - 800461a: 4b51 ldr r3, [pc, #324] @ (8004760 ) - 800461c: 681b ldr r3, [r3, #0] - 800461e: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 8004622: 2b00 cmp r3, #0 - 8004624: d1f0 bne.n 8004608 - 8004626: e000 b.n 800462a + 8004676: 4b51 ldr r3, [pc, #324] @ (80047bc ) + 8004678: 681b ldr r3, [r3, #0] + 800467a: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 800467e: 2b00 cmp r3, #0 + 8004680: d1f0 bne.n 8004664 + 8004682: e000 b.n 8004686 if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 8004628: bf00 nop + 8004684: bf00 nop } } } } /*----------------------------- HSI Configuration --------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) - 800462a: 687b ldr r3, [r7, #4] - 800462c: 681b ldr r3, [r3, #0] - 800462e: f003 0302 and.w r3, r3, #2 - 8004632: 2b00 cmp r3, #0 - 8004634: d063 beq.n 80046fe + 8004686: 687b ldr r3, [r7, #4] + 8004688: 681b ldr r3, [r3, #0] + 800468a: f003 0302 and.w r3, r3, #2 + 800468e: 2b00 cmp r3, #0 + 8004690: d063 beq.n 800475a /* 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_CFGR_SWS_HSI) || \ - 8004636: 4b4a ldr r3, [pc, #296] @ (8004760 ) - 8004638: 689b ldr r3, [r3, #8] - 800463a: f003 030c and.w r3, r3, #12 - 800463e: 2b00 cmp r3, #0 - 8004640: d00b beq.n 800465a + 8004692: 4b4a ldr r3, [pc, #296] @ (80047bc ) + 8004694: 689b ldr r3, [r3, #8] + 8004696: f003 030c and.w r3, r3, #12 + 800469a: 2b00 cmp r3, #0 + 800469c: d00b beq.n 80046b6 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI))) - 8004642: 4b47 ldr r3, [pc, #284] @ (8004760 ) - 8004644: 689b ldr r3, [r3, #8] - 8004646: f003 030c and.w r3, r3, #12 + 800469e: 4b47 ldr r3, [pc, #284] @ (80047bc ) + 80046a0: 689b ldr r3, [r3, #8] + 80046a2: f003 030c and.w r3, r3, #12 if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSI) || \ - 800464a: 2b08 cmp r3, #8 - 800464c: d11c bne.n 8004688 + 80046a6: 2b08 cmp r3, #8 + 80046a8: d11c bne.n 80046e4 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI))) - 800464e: 4b44 ldr r3, [pc, #272] @ (8004760 ) - 8004650: 685b ldr r3, [r3, #4] - 8004652: f403 0380 and.w r3, r3, #4194304 @ 0x400000 - 8004656: 2b00 cmp r3, #0 - 8004658: d116 bne.n 8004688 + 80046aa: 4b44 ldr r3, [pc, #272] @ (80047bc ) + 80046ac: 685b ldr r3, [r3, #4] + 80046ae: f403 0380 and.w r3, r3, #4194304 @ 0x400000 + 80046b2: 2b00 cmp r3, #0 + 80046b4: d116 bne.n 80046e4 { /* 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)) - 800465a: 4b41 ldr r3, [pc, #260] @ (8004760 ) - 800465c: 681b ldr r3, [r3, #0] - 800465e: f003 0302 and.w r3, r3, #2 - 8004662: 2b00 cmp r3, #0 - 8004664: d005 beq.n 8004672 - 8004666: 687b ldr r3, [r7, #4] - 8004668: 68db ldr r3, [r3, #12] - 800466a: 2b01 cmp r3, #1 - 800466c: d001 beq.n 8004672 + 80046b6: 4b41 ldr r3, [pc, #260] @ (80047bc ) + 80046b8: 681b ldr r3, [r3, #0] + 80046ba: f003 0302 and.w r3, r3, #2 + 80046be: 2b00 cmp r3, #0 + 80046c0: d005 beq.n 80046ce + 80046c2: 687b ldr r3, [r7, #4] + 80046c4: 68db ldr r3, [r3, #12] + 80046c6: 2b01 cmp r3, #1 + 80046c8: d001 beq.n 80046ce { return HAL_ERROR; - 800466e: 2301 movs r3, #1 - 8004670: e1c7 b.n 8004a02 + 80046ca: 2301 movs r3, #1 + 80046cc: e1c7 b.n 8004a5e } /* Otherwise, just the calibration is allowed */ else { /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 8004672: 4b3b ldr r3, [pc, #236] @ (8004760 ) - 8004674: 681b ldr r3, [r3, #0] - 8004676: f023 02f8 bic.w r2, r3, #248 @ 0xf8 - 800467a: 687b ldr r3, [r7, #4] - 800467c: 691b ldr r3, [r3, #16] - 800467e: 00db lsls r3, r3, #3 - 8004680: 4937 ldr r1, [pc, #220] @ (8004760 ) - 8004682: 4313 orrs r3, r2 - 8004684: 600b str r3, [r1, #0] + 80046ce: 4b3b ldr r3, [pc, #236] @ (80047bc ) + 80046d0: 681b ldr r3, [r3, #0] + 80046d2: f023 02f8 bic.w r2, r3, #248 @ 0xf8 + 80046d6: 687b ldr r3, [r7, #4] + 80046d8: 691b ldr r3, [r3, #16] + 80046da: 00db lsls r3, r3, #3 + 80046dc: 4937 ldr r1, [pc, #220] @ (80047bc ) + 80046de: 4313 orrs r3, r2 + 80046e0: 600b str r3, [r1, #0] if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) - 8004686: e03a b.n 80046fe + 80046e2: e03a b.n 800475a } } else { /* Check the HSI State */ if ((RCC_OscInitStruct->HSIState) != RCC_HSI_OFF) - 8004688: 687b ldr r3, [r7, #4] - 800468a: 68db ldr r3, [r3, #12] - 800468c: 2b00 cmp r3, #0 - 800468e: d020 beq.n 80046d2 + 80046e4: 687b ldr r3, [r7, #4] + 80046e6: 68db ldr r3, [r3, #12] + 80046e8: 2b00 cmp r3, #0 + 80046ea: d020 beq.n 800472e { /* Enable the Internal High Speed oscillator (HSI). */ __HAL_RCC_HSI_ENABLE(); - 8004690: 4b34 ldr r3, [pc, #208] @ (8004764 ) - 8004692: 2201 movs r2, #1 - 8004694: 601a str r2, [r3, #0] + 80046ec: 4b34 ldr r3, [pc, #208] @ (80047c0 ) + 80046ee: 2201 movs r2, #1 + 80046f0: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8004696: f7fc ffd3 bl 8001640 - 800469a: 6138 str r0, [r7, #16] + 80046f2: f7fc fff7 bl 80016e4 + 80046f6: 6138 str r0, [r7, #16] /* Wait till HSI is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 800469c: e008 b.n 80046b0 + 80046f8: e008 b.n 800470c { if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 800469e: f7fc ffcf bl 8001640 - 80046a2: 4602 mov r2, r0 - 80046a4: 693b ldr r3, [r7, #16] - 80046a6: 1ad3 subs r3, r2, r3 - 80046a8: 2b02 cmp r3, #2 - 80046aa: d901 bls.n 80046b0 + 80046fa: f7fc fff3 bl 80016e4 + 80046fe: 4602 mov r2, r0 + 8004700: 693b ldr r3, [r7, #16] + 8004702: 1ad3 subs r3, r2, r3 + 8004704: 2b02 cmp r3, #2 + 8004706: d901 bls.n 800470c { return HAL_TIMEOUT; - 80046ac: 2303 movs r3, #3 - 80046ae: e1a8 b.n 8004a02 + 8004708: 2303 movs r3, #3 + 800470a: e1a8 b.n 8004a5e while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 80046b0: 4b2b ldr r3, [pc, #172] @ (8004760 ) - 80046b2: 681b ldr r3, [r3, #0] - 80046b4: f003 0302 and.w r3, r3, #2 - 80046b8: 2b00 cmp r3, #0 - 80046ba: d0f0 beq.n 800469e + 800470c: 4b2b ldr r3, [pc, #172] @ (80047bc ) + 800470e: 681b ldr r3, [r3, #0] + 8004710: f003 0302 and.w r3, r3, #2 + 8004714: 2b00 cmp r3, #0 + 8004716: d0f0 beq.n 80046fa } } /* Adjusts the Internal High Speed oscillator (HSI) calibration value. */ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 80046bc: 4b28 ldr r3, [pc, #160] @ (8004760 ) - 80046be: 681b ldr r3, [r3, #0] - 80046c0: f023 02f8 bic.w r2, r3, #248 @ 0xf8 - 80046c4: 687b ldr r3, [r7, #4] - 80046c6: 691b ldr r3, [r3, #16] - 80046c8: 00db lsls r3, r3, #3 - 80046ca: 4925 ldr r1, [pc, #148] @ (8004760 ) - 80046cc: 4313 orrs r3, r2 - 80046ce: 600b str r3, [r1, #0] - 80046d0: e015 b.n 80046fe + 8004718: 4b28 ldr r3, [pc, #160] @ (80047bc ) + 800471a: 681b ldr r3, [r3, #0] + 800471c: f023 02f8 bic.w r2, r3, #248 @ 0xf8 + 8004720: 687b ldr r3, [r7, #4] + 8004722: 691b ldr r3, [r3, #16] + 8004724: 00db lsls r3, r3, #3 + 8004726: 4925 ldr r1, [pc, #148] @ (80047bc ) + 8004728: 4313 orrs r3, r2 + 800472a: 600b str r3, [r1, #0] + 800472c: e015 b.n 800475a } else { /* Disable the Internal High Speed oscillator (HSI). */ __HAL_RCC_HSI_DISABLE(); - 80046d2: 4b24 ldr r3, [pc, #144] @ (8004764 ) - 80046d4: 2200 movs r2, #0 - 80046d6: 601a str r2, [r3, #0] + 800472e: 4b24 ldr r3, [pc, #144] @ (80047c0 ) + 8004730: 2200 movs r2, #0 + 8004732: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80046d8: f7fc ffb2 bl 8001640 - 80046dc: 6138 str r0, [r7, #16] + 8004734: f7fc ffd6 bl 80016e4 + 8004738: 6138 str r0, [r7, #16] /* Wait till HSI is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) - 80046de: e008 b.n 80046f2 + 800473a: e008 b.n 800474e { if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 80046e0: f7fc ffae bl 8001640 - 80046e4: 4602 mov r2, r0 - 80046e6: 693b ldr r3, [r7, #16] - 80046e8: 1ad3 subs r3, r2, r3 - 80046ea: 2b02 cmp r3, #2 - 80046ec: d901 bls.n 80046f2 + 800473c: f7fc ffd2 bl 80016e4 + 8004740: 4602 mov r2, r0 + 8004742: 693b ldr r3, [r7, #16] + 8004744: 1ad3 subs r3, r2, r3 + 8004746: 2b02 cmp r3, #2 + 8004748: d901 bls.n 800474e { return HAL_TIMEOUT; - 80046ee: 2303 movs r3, #3 - 80046f0: e187 b.n 8004a02 + 800474a: 2303 movs r3, #3 + 800474c: e187 b.n 8004a5e while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) - 80046f2: 4b1b ldr r3, [pc, #108] @ (8004760 ) - 80046f4: 681b ldr r3, [r3, #0] - 80046f6: f003 0302 and.w r3, r3, #2 - 80046fa: 2b00 cmp r3, #0 - 80046fc: d1f0 bne.n 80046e0 + 800474e: 4b1b ldr r3, [pc, #108] @ (80047bc ) + 8004750: 681b ldr r3, [r3, #0] + 8004752: f003 0302 and.w r3, r3, #2 + 8004756: 2b00 cmp r3, #0 + 8004758: d1f0 bne.n 800473c } } } } /*------------------------------ LSI Configuration -------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) - 80046fe: 687b ldr r3, [r7, #4] - 8004700: 681b ldr r3, [r3, #0] - 8004702: f003 0308 and.w r3, r3, #8 - 8004706: 2b00 cmp r3, #0 - 8004708: d036 beq.n 8004778 + 800475a: 687b ldr r3, [r7, #4] + 800475c: 681b ldr r3, [r3, #0] + 800475e: f003 0308 and.w r3, r3, #8 + 8004762: 2b00 cmp r3, #0 + 8004764: d036 beq.n 80047d4 { /* Check the parameters */ assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); /* Check the LSI State */ if ((RCC_OscInitStruct->LSIState) != RCC_LSI_OFF) - 800470a: 687b ldr r3, [r7, #4] - 800470c: 695b ldr r3, [r3, #20] - 800470e: 2b00 cmp r3, #0 - 8004710: d016 beq.n 8004740 + 8004766: 687b ldr r3, [r7, #4] + 8004768: 695b ldr r3, [r3, #20] + 800476a: 2b00 cmp r3, #0 + 800476c: d016 beq.n 800479c { /* Enable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_ENABLE(); - 8004712: 4b15 ldr r3, [pc, #84] @ (8004768 ) - 8004714: 2201 movs r2, #1 - 8004716: 601a str r2, [r3, #0] + 800476e: 4b15 ldr r3, [pc, #84] @ (80047c4 ) + 8004770: 2201 movs r2, #1 + 8004772: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8004718: f7fc ff92 bl 8001640 - 800471c: 6138 str r0, [r7, #16] + 8004774: f7fc ffb6 bl 80016e4 + 8004778: 6138 str r0, [r7, #16] /* Wait till LSI is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) - 800471e: e008 b.n 8004732 + 800477a: e008 b.n 800478e { if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 8004720: f7fc ff8e bl 8001640 - 8004724: 4602 mov r2, r0 - 8004726: 693b ldr r3, [r7, #16] - 8004728: 1ad3 subs r3, r2, r3 - 800472a: 2b02 cmp r3, #2 - 800472c: d901 bls.n 8004732 + 800477c: f7fc ffb2 bl 80016e4 + 8004780: 4602 mov r2, r0 + 8004782: 693b ldr r3, [r7, #16] + 8004784: 1ad3 subs r3, r2, r3 + 8004786: 2b02 cmp r3, #2 + 8004788: d901 bls.n 800478e { return HAL_TIMEOUT; - 800472e: 2303 movs r3, #3 - 8004730: e167 b.n 8004a02 + 800478a: 2303 movs r3, #3 + 800478c: e167 b.n 8004a5e while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) - 8004732: 4b0b ldr r3, [pc, #44] @ (8004760 ) - 8004734: 6f5b ldr r3, [r3, #116] @ 0x74 - 8004736: f003 0302 and.w r3, r3, #2 - 800473a: 2b00 cmp r3, #0 - 800473c: d0f0 beq.n 8004720 - 800473e: e01b b.n 8004778 + 800478e: 4b0b ldr r3, [pc, #44] @ (80047bc ) + 8004790: 6f5b ldr r3, [r3, #116] @ 0x74 + 8004792: f003 0302 and.w r3, r3, #2 + 8004796: 2b00 cmp r3, #0 + 8004798: d0f0 beq.n 800477c + 800479a: e01b b.n 80047d4 } } else { /* Disable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_DISABLE(); - 8004740: 4b09 ldr r3, [pc, #36] @ (8004768 ) - 8004742: 2200 movs r2, #0 - 8004744: 601a str r2, [r3, #0] + 800479c: 4b09 ldr r3, [pc, #36] @ (80047c4 ) + 800479e: 2200 movs r2, #0 + 80047a0: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8004746: f7fc ff7b bl 8001640 - 800474a: 6138 str r0, [r7, #16] + 80047a2: f7fc ff9f bl 80016e4 + 80047a6: 6138 str r0, [r7, #16] /* Wait till LSI is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) - 800474c: e00e b.n 800476c + 80047a8: e00e b.n 80047c8 { if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 800474e: f7fc ff77 bl 8001640 - 8004752: 4602 mov r2, r0 - 8004754: 693b ldr r3, [r7, #16] - 8004756: 1ad3 subs r3, r2, r3 - 8004758: 2b02 cmp r3, #2 - 800475a: d907 bls.n 800476c + 80047aa: f7fc ff9b bl 80016e4 + 80047ae: 4602 mov r2, r0 + 80047b0: 693b ldr r3, [r7, #16] + 80047b2: 1ad3 subs r3, r2, r3 + 80047b4: 2b02 cmp r3, #2 + 80047b6: d907 bls.n 80047c8 { return HAL_TIMEOUT; - 800475c: 2303 movs r3, #3 - 800475e: e150 b.n 8004a02 - 8004760: 40023800 .word 0x40023800 - 8004764: 42470000 .word 0x42470000 - 8004768: 42470e80 .word 0x42470e80 + 80047b8: 2303 movs r3, #3 + 80047ba: e150 b.n 8004a5e + 80047bc: 40023800 .word 0x40023800 + 80047c0: 42470000 .word 0x42470000 + 80047c4: 42470e80 .word 0x42470e80 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) - 800476c: 4b88 ldr r3, [pc, #544] @ (8004990 ) - 800476e: 6f5b ldr r3, [r3, #116] @ 0x74 - 8004770: f003 0302 and.w r3, r3, #2 - 8004774: 2b00 cmp r3, #0 - 8004776: d1ea bne.n 800474e + 80047c8: 4b88 ldr r3, [pc, #544] @ (80049ec ) + 80047ca: 6f5b ldr r3, [r3, #116] @ 0x74 + 80047cc: f003 0302 and.w r3, r3, #2 + 80047d0: 2b00 cmp r3, #0 + 80047d2: d1ea bne.n 80047aa } } } } /*------------------------------ LSE Configuration -------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) - 8004778: 687b ldr r3, [r7, #4] - 800477a: 681b ldr r3, [r3, #0] - 800477c: f003 0304 and.w r3, r3, #4 - 8004780: 2b00 cmp r3, #0 - 8004782: f000 8097 beq.w 80048b4 + 80047d4: 687b ldr r3, [r7, #4] + 80047d6: 681b ldr r3, [r3, #0] + 80047d8: f003 0304 and.w r3, r3, #4 + 80047dc: 2b00 cmp r3, #0 + 80047de: f000 8097 beq.w 8004910 { FlagStatus pwrclkchanged = RESET; - 8004786: 2300 movs r3, #0 - 8004788: 75fb strb r3, [r7, #23] + 80047e2: 2300 movs r3, #0 + 80047e4: 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()) - 800478a: 4b81 ldr r3, [pc, #516] @ (8004990 ) - 800478c: 6c1b ldr r3, [r3, #64] @ 0x40 - 800478e: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 8004792: 2b00 cmp r3, #0 - 8004794: d10f bne.n 80047b6 + 80047e6: 4b81 ldr r3, [pc, #516] @ (80049ec ) + 80047e8: 6c1b ldr r3, [r3, #64] @ 0x40 + 80047ea: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 80047ee: 2b00 cmp r3, #0 + 80047f0: d10f bne.n 8004812 { __HAL_RCC_PWR_CLK_ENABLE(); - 8004796: 2300 movs r3, #0 - 8004798: 60bb str r3, [r7, #8] - 800479a: 4b7d ldr r3, [pc, #500] @ (8004990 ) - 800479c: 6c1b ldr r3, [r3, #64] @ 0x40 - 800479e: 4a7c ldr r2, [pc, #496] @ (8004990 ) - 80047a0: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 80047a4: 6413 str r3, [r2, #64] @ 0x40 - 80047a6: 4b7a ldr r3, [pc, #488] @ (8004990 ) - 80047a8: 6c1b ldr r3, [r3, #64] @ 0x40 - 80047aa: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 80047ae: 60bb str r3, [r7, #8] - 80047b0: 68bb ldr r3, [r7, #8] + 80047f2: 2300 movs r3, #0 + 80047f4: 60bb str r3, [r7, #8] + 80047f6: 4b7d ldr r3, [pc, #500] @ (80049ec ) + 80047f8: 6c1b ldr r3, [r3, #64] @ 0x40 + 80047fa: 4a7c ldr r2, [pc, #496] @ (80049ec ) + 80047fc: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8004800: 6413 str r3, [r2, #64] @ 0x40 + 8004802: 4b7a ldr r3, [pc, #488] @ (80049ec ) + 8004804: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004806: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 800480a: 60bb str r3, [r7, #8] + 800480c: 68bb ldr r3, [r7, #8] pwrclkchanged = SET; - 80047b2: 2301 movs r3, #1 - 80047b4: 75fb strb r3, [r7, #23] + 800480e: 2301 movs r3, #1 + 8004810: 75fb strb r3, [r7, #23] } if (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 80047b6: 4b77 ldr r3, [pc, #476] @ (8004994 ) - 80047b8: 681b ldr r3, [r3, #0] - 80047ba: f403 7380 and.w r3, r3, #256 @ 0x100 - 80047be: 2b00 cmp r3, #0 - 80047c0: d118 bne.n 80047f4 + 8004812: 4b77 ldr r3, [pc, #476] @ (80049f0 ) + 8004814: 681b ldr r3, [r3, #0] + 8004816: f403 7380 and.w r3, r3, #256 @ 0x100 + 800481a: 2b00 cmp r3, #0 + 800481c: d118 bne.n 8004850 { /* Enable write access to Backup domain */ SET_BIT(PWR->CR, PWR_CR_DBP); - 80047c2: 4b74 ldr r3, [pc, #464] @ (8004994 ) - 80047c4: 681b ldr r3, [r3, #0] - 80047c6: 4a73 ldr r2, [pc, #460] @ (8004994 ) - 80047c8: f443 7380 orr.w r3, r3, #256 @ 0x100 - 80047cc: 6013 str r3, [r2, #0] + 800481e: 4b74 ldr r3, [pc, #464] @ (80049f0 ) + 8004820: 681b ldr r3, [r3, #0] + 8004822: 4a73 ldr r2, [pc, #460] @ (80049f0 ) + 8004824: f443 7380 orr.w r3, r3, #256 @ 0x100 + 8004828: 6013 str r3, [r2, #0] /* Wait for Backup domain Write protection disable */ tickstart = HAL_GetTick(); - 80047ce: f7fc ff37 bl 8001640 - 80047d2: 6138 str r0, [r7, #16] + 800482a: f7fc ff5b bl 80016e4 + 800482e: 6138 str r0, [r7, #16] while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 80047d4: e008 b.n 80047e8 + 8004830: e008 b.n 8004844 { if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 80047d6: f7fc ff33 bl 8001640 - 80047da: 4602 mov r2, r0 - 80047dc: 693b ldr r3, [r7, #16] - 80047de: 1ad3 subs r3, r2, r3 - 80047e0: 2b02 cmp r3, #2 - 80047e2: d901 bls.n 80047e8 + 8004832: f7fc ff57 bl 80016e4 + 8004836: 4602 mov r2, r0 + 8004838: 693b ldr r3, [r7, #16] + 800483a: 1ad3 subs r3, r2, r3 + 800483c: 2b02 cmp r3, #2 + 800483e: d901 bls.n 8004844 { return HAL_TIMEOUT; - 80047e4: 2303 movs r3, #3 - 80047e6: e10c b.n 8004a02 + 8004840: 2303 movs r3, #3 + 8004842: e10c b.n 8004a5e while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 80047e8: 4b6a ldr r3, [pc, #424] @ (8004994 ) - 80047ea: 681b ldr r3, [r3, #0] - 80047ec: f403 7380 and.w r3, r3, #256 @ 0x100 - 80047f0: 2b00 cmp r3, #0 - 80047f2: d0f0 beq.n 80047d6 + 8004844: 4b6a ldr r3, [pc, #424] @ (80049f0 ) + 8004846: 681b ldr r3, [r3, #0] + 8004848: f403 7380 and.w r3, r3, #256 @ 0x100 + 800484c: 2b00 cmp r3, #0 + 800484e: d0f0 beq.n 8004832 } } } /* Set the new LSE configuration -----------------------------------------*/ __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); - 80047f4: 687b ldr r3, [r7, #4] - 80047f6: 689b ldr r3, [r3, #8] - 80047f8: 2b01 cmp r3, #1 - 80047fa: d106 bne.n 800480a - 80047fc: 4b64 ldr r3, [pc, #400] @ (8004990 ) - 80047fe: 6f1b ldr r3, [r3, #112] @ 0x70 - 8004800: 4a63 ldr r2, [pc, #396] @ (8004990 ) - 8004802: f043 0301 orr.w r3, r3, #1 - 8004806: 6713 str r3, [r2, #112] @ 0x70 - 8004808: e01c b.n 8004844 - 800480a: 687b ldr r3, [r7, #4] - 800480c: 689b ldr r3, [r3, #8] - 800480e: 2b05 cmp r3, #5 - 8004810: d10c bne.n 800482c - 8004812: 4b5f ldr r3, [pc, #380] @ (8004990 ) - 8004814: 6f1b ldr r3, [r3, #112] @ 0x70 - 8004816: 4a5e ldr r2, [pc, #376] @ (8004990 ) - 8004818: f043 0304 orr.w r3, r3, #4 - 800481c: 6713 str r3, [r2, #112] @ 0x70 - 800481e: 4b5c ldr r3, [pc, #368] @ (8004990 ) - 8004820: 6f1b ldr r3, [r3, #112] @ 0x70 - 8004822: 4a5b ldr r2, [pc, #364] @ (8004990 ) - 8004824: f043 0301 orr.w r3, r3, #1 - 8004828: 6713 str r3, [r2, #112] @ 0x70 - 800482a: e00b b.n 8004844 - 800482c: 4b58 ldr r3, [pc, #352] @ (8004990 ) - 800482e: 6f1b ldr r3, [r3, #112] @ 0x70 - 8004830: 4a57 ldr r2, [pc, #348] @ (8004990 ) - 8004832: f023 0301 bic.w r3, r3, #1 - 8004836: 6713 str r3, [r2, #112] @ 0x70 - 8004838: 4b55 ldr r3, [pc, #340] @ (8004990 ) - 800483a: 6f1b ldr r3, [r3, #112] @ 0x70 - 800483c: 4a54 ldr r2, [pc, #336] @ (8004990 ) - 800483e: f023 0304 bic.w r3, r3, #4 - 8004842: 6713 str r3, [r2, #112] @ 0x70 + 8004850: 687b ldr r3, [r7, #4] + 8004852: 689b ldr r3, [r3, #8] + 8004854: 2b01 cmp r3, #1 + 8004856: d106 bne.n 8004866 + 8004858: 4b64 ldr r3, [pc, #400] @ (80049ec ) + 800485a: 6f1b ldr r3, [r3, #112] @ 0x70 + 800485c: 4a63 ldr r2, [pc, #396] @ (80049ec ) + 800485e: f043 0301 orr.w r3, r3, #1 + 8004862: 6713 str r3, [r2, #112] @ 0x70 + 8004864: e01c b.n 80048a0 + 8004866: 687b ldr r3, [r7, #4] + 8004868: 689b ldr r3, [r3, #8] + 800486a: 2b05 cmp r3, #5 + 800486c: d10c bne.n 8004888 + 800486e: 4b5f ldr r3, [pc, #380] @ (80049ec ) + 8004870: 6f1b ldr r3, [r3, #112] @ 0x70 + 8004872: 4a5e ldr r2, [pc, #376] @ (80049ec ) + 8004874: f043 0304 orr.w r3, r3, #4 + 8004878: 6713 str r3, [r2, #112] @ 0x70 + 800487a: 4b5c ldr r3, [pc, #368] @ (80049ec ) + 800487c: 6f1b ldr r3, [r3, #112] @ 0x70 + 800487e: 4a5b ldr r2, [pc, #364] @ (80049ec ) + 8004880: f043 0301 orr.w r3, r3, #1 + 8004884: 6713 str r3, [r2, #112] @ 0x70 + 8004886: e00b b.n 80048a0 + 8004888: 4b58 ldr r3, [pc, #352] @ (80049ec ) + 800488a: 6f1b ldr r3, [r3, #112] @ 0x70 + 800488c: 4a57 ldr r2, [pc, #348] @ (80049ec ) + 800488e: f023 0301 bic.w r3, r3, #1 + 8004892: 6713 str r3, [r2, #112] @ 0x70 + 8004894: 4b55 ldr r3, [pc, #340] @ (80049ec ) + 8004896: 6f1b ldr r3, [r3, #112] @ 0x70 + 8004898: 4a54 ldr r2, [pc, #336] @ (80049ec ) + 800489a: f023 0304 bic.w r3, r3, #4 + 800489e: 6713 str r3, [r2, #112] @ 0x70 /* Check the LSE State */ if ((RCC_OscInitStruct->LSEState) != RCC_LSE_OFF) - 8004844: 687b ldr r3, [r7, #4] - 8004846: 689b ldr r3, [r3, #8] - 8004848: 2b00 cmp r3, #0 - 800484a: d015 beq.n 8004878 + 80048a0: 687b ldr r3, [r7, #4] + 80048a2: 689b ldr r3, [r3, #8] + 80048a4: 2b00 cmp r3, #0 + 80048a6: d015 beq.n 80048d4 { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 800484c: f7fc fef8 bl 8001640 - 8004850: 6138 str r0, [r7, #16] + 80048a8: f7fc ff1c bl 80016e4 + 80048ac: 6138 str r0, [r7, #16] /* Wait till LSE is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 8004852: e00a b.n 800486a + 80048ae: e00a b.n 80048c6 { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8004854: f7fc fef4 bl 8001640 - 8004858: 4602 mov r2, r0 - 800485a: 693b ldr r3, [r7, #16] - 800485c: 1ad3 subs r3, r2, r3 - 800485e: f241 3288 movw r2, #5000 @ 0x1388 - 8004862: 4293 cmp r3, r2 - 8004864: d901 bls.n 800486a + 80048b0: f7fc ff18 bl 80016e4 + 80048b4: 4602 mov r2, r0 + 80048b6: 693b ldr r3, [r7, #16] + 80048b8: 1ad3 subs r3, r2, r3 + 80048ba: f241 3288 movw r2, #5000 @ 0x1388 + 80048be: 4293 cmp r3, r2 + 80048c0: d901 bls.n 80048c6 { return HAL_TIMEOUT; - 8004866: 2303 movs r3, #3 - 8004868: e0cb b.n 8004a02 + 80048c2: 2303 movs r3, #3 + 80048c4: e0cb b.n 8004a5e while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 800486a: 4b49 ldr r3, [pc, #292] @ (8004990 ) - 800486c: 6f1b ldr r3, [r3, #112] @ 0x70 - 800486e: f003 0302 and.w r3, r3, #2 - 8004872: 2b00 cmp r3, #0 - 8004874: d0ee beq.n 8004854 - 8004876: e014 b.n 80048a2 + 80048c6: 4b49 ldr r3, [pc, #292] @ (80049ec ) + 80048c8: 6f1b ldr r3, [r3, #112] @ 0x70 + 80048ca: f003 0302 and.w r3, r3, #2 + 80048ce: 2b00 cmp r3, #0 + 80048d0: d0ee beq.n 80048b0 + 80048d2: e014 b.n 80048fe } } else { /* Get Start Tick */ tickstart = HAL_GetTick(); - 8004878: f7fc fee2 bl 8001640 - 800487c: 6138 str r0, [r7, #16] + 80048d4: f7fc ff06 bl 80016e4 + 80048d8: 6138 str r0, [r7, #16] /* Wait till LSE is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) - 800487e: e00a b.n 8004896 + 80048da: e00a b.n 80048f2 { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8004880: f7fc fede bl 8001640 - 8004884: 4602 mov r2, r0 - 8004886: 693b ldr r3, [r7, #16] - 8004888: 1ad3 subs r3, r2, r3 - 800488a: f241 3288 movw r2, #5000 @ 0x1388 - 800488e: 4293 cmp r3, r2 - 8004890: d901 bls.n 8004896 + 80048dc: f7fc ff02 bl 80016e4 + 80048e0: 4602 mov r2, r0 + 80048e2: 693b ldr r3, [r7, #16] + 80048e4: 1ad3 subs r3, r2, r3 + 80048e6: f241 3288 movw r2, #5000 @ 0x1388 + 80048ea: 4293 cmp r3, r2 + 80048ec: d901 bls.n 80048f2 { return HAL_TIMEOUT; - 8004892: 2303 movs r3, #3 - 8004894: e0b5 b.n 8004a02 + 80048ee: 2303 movs r3, #3 + 80048f0: e0b5 b.n 8004a5e while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) - 8004896: 4b3e ldr r3, [pc, #248] @ (8004990 ) - 8004898: 6f1b ldr r3, [r3, #112] @ 0x70 - 800489a: f003 0302 and.w r3, r3, #2 - 800489e: 2b00 cmp r3, #0 - 80048a0: d1ee bne.n 8004880 + 80048f2: 4b3e ldr r3, [pc, #248] @ (80049ec ) + 80048f4: 6f1b ldr r3, [r3, #112] @ 0x70 + 80048f6: f003 0302 and.w r3, r3, #2 + 80048fa: 2b00 cmp r3, #0 + 80048fc: d1ee bne.n 80048dc } } } /* Restore clock configuration if changed */ if (pwrclkchanged == SET) - 80048a2: 7dfb ldrb r3, [r7, #23] - 80048a4: 2b01 cmp r3, #1 - 80048a6: d105 bne.n 80048b4 + 80048fe: 7dfb ldrb r3, [r7, #23] + 8004900: 2b01 cmp r3, #1 + 8004902: d105 bne.n 8004910 { __HAL_RCC_PWR_CLK_DISABLE(); - 80048a8: 4b39 ldr r3, [pc, #228] @ (8004990 ) - 80048aa: 6c1b ldr r3, [r3, #64] @ 0x40 - 80048ac: 4a38 ldr r2, [pc, #224] @ (8004990 ) - 80048ae: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 - 80048b2: 6413 str r3, [r2, #64] @ 0x40 + 8004904: 4b39 ldr r3, [pc, #228] @ (80049ec ) + 8004906: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004908: 4a38 ldr r2, [pc, #224] @ (80049ec ) + 800490a: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 800490e: 6413 str r3, [r2, #64] @ 0x40 } } /*-------------------------------- PLL Configuration -----------------------*/ /* Check the parameters */ assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) - 80048b4: 687b ldr r3, [r7, #4] - 80048b6: 699b ldr r3, [r3, #24] - 80048b8: 2b00 cmp r3, #0 - 80048ba: f000 80a1 beq.w 8004a00 + 8004910: 687b ldr r3, [r7, #4] + 8004912: 699b ldr r3, [r3, #24] + 8004914: 2b00 cmp r3, #0 + 8004916: f000 80a1 beq.w 8004a5c { /* Check if the PLL is used as system clock or not */ if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_CFGR_SWS_PLL) - 80048be: 4b34 ldr r3, [pc, #208] @ (8004990 ) - 80048c0: 689b ldr r3, [r3, #8] - 80048c2: f003 030c and.w r3, r3, #12 - 80048c6: 2b08 cmp r3, #8 - 80048c8: d05c beq.n 8004984 + 800491a: 4b34 ldr r3, [pc, #208] @ (80049ec ) + 800491c: 689b ldr r3, [r3, #8] + 800491e: f003 030c and.w r3, r3, #12 + 8004922: 2b08 cmp r3, #8 + 8004924: d05c beq.n 80049e0 { if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) - 80048ca: 687b ldr r3, [r7, #4] - 80048cc: 699b ldr r3, [r3, #24] - 80048ce: 2b02 cmp r3, #2 - 80048d0: d141 bne.n 8004956 + 8004926: 687b ldr r3, [r7, #4] + 8004928: 699b ldr r3, [r3, #24] + 800492a: 2b02 cmp r3, #2 + 800492c: d141 bne.n 80049b2 assert_param(IS_RCC_PLLN_VALUE(RCC_OscInitStruct->PLL.PLLN)); assert_param(IS_RCC_PLLP_VALUE(RCC_OscInitStruct->PLL.PLLP)); assert_param(IS_RCC_PLLQ_VALUE(RCC_OscInitStruct->PLL.PLLQ)); /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); - 80048d2: 4b31 ldr r3, [pc, #196] @ (8004998 ) - 80048d4: 2200 movs r2, #0 - 80048d6: 601a str r2, [r3, #0] + 800492e: 4b31 ldr r3, [pc, #196] @ (80049f4 ) + 8004930: 2200 movs r2, #0 + 8004932: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 80048d8: f7fc feb2 bl 8001640 - 80048dc: 6138 str r0, [r7, #16] + 8004934: f7fc fed6 bl 80016e4 + 8004938: 6138 str r0, [r7, #16] /* Wait till PLL is disabled */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 80048de: e008 b.n 80048f2 + 800493a: e008 b.n 800494e { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 80048e0: f7fc feae bl 8001640 - 80048e4: 4602 mov r2, r0 - 80048e6: 693b ldr r3, [r7, #16] - 80048e8: 1ad3 subs r3, r2, r3 - 80048ea: 2b02 cmp r3, #2 - 80048ec: d901 bls.n 80048f2 + 800493c: f7fc fed2 bl 80016e4 + 8004940: 4602 mov r2, r0 + 8004942: 693b ldr r3, [r7, #16] + 8004944: 1ad3 subs r3, r2, r3 + 8004946: 2b02 cmp r3, #2 + 8004948: d901 bls.n 800494e { return HAL_TIMEOUT; - 80048ee: 2303 movs r3, #3 - 80048f0: e087 b.n 8004a02 + 800494a: 2303 movs r3, #3 + 800494c: e087 b.n 8004a5e while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 80048f2: 4b27 ldr r3, [pc, #156] @ (8004990 ) - 80048f4: 681b ldr r3, [r3, #0] - 80048f6: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 80048fa: 2b00 cmp r3, #0 - 80048fc: d1f0 bne.n 80048e0 + 800494e: 4b27 ldr r3, [pc, #156] @ (80049ec ) + 8004950: 681b ldr r3, [r3, #0] + 8004952: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8004956: 2b00 cmp r3, #0 + 8004958: d1f0 bne.n 800493c } } /* Configure the main PLL clock source, multiplication and division factors. */ WRITE_REG(RCC->PLLCFGR, (RCC_OscInitStruct->PLL.PLLSource | \ - 80048fe: 687b ldr r3, [r7, #4] - 8004900: 69da ldr r2, [r3, #28] - 8004902: 687b ldr r3, [r7, #4] - 8004904: 6a1b ldr r3, [r3, #32] - 8004906: 431a orrs r2, r3 - 8004908: 687b ldr r3, [r7, #4] - 800490a: 6a5b ldr r3, [r3, #36] @ 0x24 - 800490c: 019b lsls r3, r3, #6 - 800490e: 431a orrs r2, r3 - 8004910: 687b ldr r3, [r7, #4] - 8004912: 6a9b ldr r3, [r3, #40] @ 0x28 - 8004914: 085b lsrs r3, r3, #1 - 8004916: 3b01 subs r3, #1 - 8004918: 041b lsls r3, r3, #16 - 800491a: 431a orrs r2, r3 - 800491c: 687b ldr r3, [r7, #4] - 800491e: 6adb ldr r3, [r3, #44] @ 0x2c - 8004920: 061b lsls r3, r3, #24 - 8004922: 491b ldr r1, [pc, #108] @ (8004990 ) - 8004924: 4313 orrs r3, r2 - 8004926: 604b str r3, [r1, #4] + 800495a: 687b ldr r3, [r7, #4] + 800495c: 69da ldr r2, [r3, #28] + 800495e: 687b ldr r3, [r7, #4] + 8004960: 6a1b ldr r3, [r3, #32] + 8004962: 431a orrs r2, r3 + 8004964: 687b ldr r3, [r7, #4] + 8004966: 6a5b ldr r3, [r3, #36] @ 0x24 + 8004968: 019b lsls r3, r3, #6 + 800496a: 431a orrs r2, r3 + 800496c: 687b ldr r3, [r7, #4] + 800496e: 6a9b ldr r3, [r3, #40] @ 0x28 + 8004970: 085b lsrs r3, r3, #1 + 8004972: 3b01 subs r3, #1 + 8004974: 041b lsls r3, r3, #16 + 8004976: 431a orrs r2, r3 + 8004978: 687b ldr r3, [r7, #4] + 800497a: 6adb ldr r3, [r3, #44] @ 0x2c + 800497c: 061b lsls r3, r3, #24 + 800497e: 491b ldr r1, [pc, #108] @ (80049ec ) + 8004980: 4313 orrs r3, r2 + 8004982: 604b str r3, [r1, #4] RCC_OscInitStruct->PLL.PLLM | \ (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos) | \ (((RCC_OscInitStruct->PLL.PLLP >> 1U) - 1U) << RCC_PLLCFGR_PLLP_Pos) | \ (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos))); /* Enable the main PLL. */ __HAL_RCC_PLL_ENABLE(); - 8004928: 4b1b ldr r3, [pc, #108] @ (8004998 ) - 800492a: 2201 movs r2, #1 - 800492c: 601a str r2, [r3, #0] + 8004984: 4b1b ldr r3, [pc, #108] @ (80049f4 ) + 8004986: 2201 movs r2, #1 + 8004988: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 800492e: f7fc fe87 bl 8001640 - 8004932: 6138 str r0, [r7, #16] + 800498a: f7fc feab bl 80016e4 + 800498e: 6138 str r0, [r7, #16] /* Wait till PLL is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 8004934: e008 b.n 8004948 + 8004990: e008 b.n 80049a4 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8004936: f7fc fe83 bl 8001640 - 800493a: 4602 mov r2, r0 - 800493c: 693b ldr r3, [r7, #16] - 800493e: 1ad3 subs r3, r2, r3 - 8004940: 2b02 cmp r3, #2 - 8004942: d901 bls.n 8004948 + 8004992: f7fc fea7 bl 80016e4 + 8004996: 4602 mov r2, r0 + 8004998: 693b ldr r3, [r7, #16] + 800499a: 1ad3 subs r3, r2, r3 + 800499c: 2b02 cmp r3, #2 + 800499e: d901 bls.n 80049a4 { return HAL_TIMEOUT; - 8004944: 2303 movs r3, #3 - 8004946: e05c b.n 8004a02 + 80049a0: 2303 movs r3, #3 + 80049a2: e05c b.n 8004a5e while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 8004948: 4b11 ldr r3, [pc, #68] @ (8004990 ) - 800494a: 681b ldr r3, [r3, #0] - 800494c: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 8004950: 2b00 cmp r3, #0 - 8004952: d0f0 beq.n 8004936 - 8004954: e054 b.n 8004a00 + 80049a4: 4b11 ldr r3, [pc, #68] @ (80049ec ) + 80049a6: 681b ldr r3, [r3, #0] + 80049a8: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 80049ac: 2b00 cmp r3, #0 + 80049ae: d0f0 beq.n 8004992 + 80049b0: e054 b.n 8004a5c } } else { /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); - 8004956: 4b10 ldr r3, [pc, #64] @ (8004998 ) - 8004958: 2200 movs r2, #0 - 800495a: 601a str r2, [r3, #0] + 80049b2: 4b10 ldr r3, [pc, #64] @ (80049f4 ) + 80049b4: 2200 movs r2, #0 + 80049b6: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 800495c: f7fc fe70 bl 8001640 - 8004960: 6138 str r0, [r7, #16] + 80049b8: f7fc fe94 bl 80016e4 + 80049bc: 6138 str r0, [r7, #16] /* Wait till PLL is disabled */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 8004962: e008 b.n 8004976 + 80049be: e008 b.n 80049d2 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8004964: f7fc fe6c bl 8001640 - 8004968: 4602 mov r2, r0 - 800496a: 693b ldr r3, [r7, #16] - 800496c: 1ad3 subs r3, r2, r3 - 800496e: 2b02 cmp r3, #2 - 8004970: d901 bls.n 8004976 + 80049c0: f7fc fe90 bl 80016e4 + 80049c4: 4602 mov r2, r0 + 80049c6: 693b ldr r3, [r7, #16] + 80049c8: 1ad3 subs r3, r2, r3 + 80049ca: 2b02 cmp r3, #2 + 80049cc: d901 bls.n 80049d2 { return HAL_TIMEOUT; - 8004972: 2303 movs r3, #3 - 8004974: e045 b.n 8004a02 + 80049ce: 2303 movs r3, #3 + 80049d0: e045 b.n 8004a5e while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 8004976: 4b06 ldr r3, [pc, #24] @ (8004990 ) - 8004978: 681b ldr r3, [r3, #0] - 800497a: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 800497e: 2b00 cmp r3, #0 - 8004980: d1f0 bne.n 8004964 - 8004982: e03d b.n 8004a00 + 80049d2: 4b06 ldr r3, [pc, #24] @ (80049ec ) + 80049d4: 681b ldr r3, [r3, #0] + 80049d6: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 80049da: 2b00 cmp r3, #0 + 80049dc: d1f0 bne.n 80049c0 + 80049de: e03d b.n 8004a5c } } else { /* Check if there is a request to disable the PLL used as System clock source */ if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) - 8004984: 687b ldr r3, [r7, #4] - 8004986: 699b ldr r3, [r3, #24] - 8004988: 2b01 cmp r3, #1 - 800498a: d107 bne.n 800499c + 80049e0: 687b ldr r3, [r7, #4] + 80049e2: 699b ldr r3, [r3, #24] + 80049e4: 2b01 cmp r3, #1 + 80049e6: d107 bne.n 80049f8 { return HAL_ERROR; - 800498c: 2301 movs r3, #1 - 800498e: e038 b.n 8004a02 - 8004990: 40023800 .word 0x40023800 - 8004994: 40007000 .word 0x40007000 - 8004998: 42470060 .word 0x42470060 + 80049e8: 2301 movs r3, #1 + 80049ea: e038 b.n 8004a5e + 80049ec: 40023800 .word 0x40023800 + 80049f0: 40007000 .word 0x40007000 + 80049f4: 42470060 .word 0x42470060 } else { /* Do not return HAL_ERROR if request repeats the current configuration */ pll_config = RCC->PLLCFGR; - 800499c: 4b1b ldr r3, [pc, #108] @ (8004a0c ) - 800499e: 685b ldr r3, [r3, #4] - 80049a0: 60fb str r3, [r7, #12] + 80049f8: 4b1b ldr r3, [pc, #108] @ (8004a68 ) + 80049fa: 685b ldr r3, [r3, #4] + 80049fc: 60fb str r3, [r7, #12] (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN) << RCC_PLLCFGR_PLLN_Pos) || (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != (((RCC_OscInitStruct->PLL.PLLP >> 1U) - 1U)) << RCC_PLLCFGR_PLLP_Pos) || (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos)) || (READ_BIT(pll_config, RCC_PLLCFGR_PLLR) != (RCC_OscInitStruct->PLL.PLLR << RCC_PLLCFGR_PLLR_Pos))) #else if (((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) || - 80049a2: 687b ldr r3, [r7, #4] - 80049a4: 699b ldr r3, [r3, #24] - 80049a6: 2b01 cmp r3, #1 - 80049a8: d028 beq.n 80049fc + 80049fe: 687b ldr r3, [r7, #4] + 8004a00: 699b ldr r3, [r3, #24] + 8004a02: 2b01 cmp r3, #1 + 8004a04: d028 beq.n 8004a58 (READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 80049aa: 68fb ldr r3, [r7, #12] - 80049ac: f403 0280 and.w r2, r3, #4194304 @ 0x400000 - 80049b0: 687b ldr r3, [r7, #4] - 80049b2: 69db ldr r3, [r3, #28] + 8004a06: 68fb ldr r3, [r7, #12] + 8004a08: f403 0280 and.w r2, r3, #4194304 @ 0x400000 + 8004a0c: 687b ldr r3, [r7, #4] + 8004a0e: 69db ldr r3, [r3, #28] if (((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) || - 80049b4: 429a cmp r2, r3 - 80049b6: d121 bne.n 80049fc + 8004a10: 429a cmp r2, r3 + 8004a12: d121 bne.n 8004a58 (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != (RCC_OscInitStruct->PLL.PLLM) << RCC_PLLCFGR_PLLM_Pos) || - 80049b8: 68fb ldr r3, [r7, #12] - 80049ba: f003 023f and.w r2, r3, #63 @ 0x3f - 80049be: 687b ldr r3, [r7, #4] - 80049c0: 6a1b ldr r3, [r3, #32] + 8004a14: 68fb ldr r3, [r7, #12] + 8004a16: f003 023f and.w r2, r3, #63 @ 0x3f + 8004a1a: 687b ldr r3, [r7, #4] + 8004a1c: 6a1b ldr r3, [r3, #32] (READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 80049c2: 429a cmp r2, r3 - 80049c4: d11a bne.n 80049fc + 8004a1e: 429a cmp r2, r3 + 8004a20: d11a bne.n 8004a58 (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN) << RCC_PLLCFGR_PLLN_Pos) || - 80049c6: 68fa ldr r2, [r7, #12] - 80049c8: f647 73c0 movw r3, #32704 @ 0x7fc0 - 80049cc: 4013 ands r3, r2 - 80049ce: 687a ldr r2, [r7, #4] - 80049d0: 6a52 ldr r2, [r2, #36] @ 0x24 - 80049d2: 0192 lsls r2, r2, #6 + 8004a22: 68fa ldr r2, [r7, #12] + 8004a24: f647 73c0 movw r3, #32704 @ 0x7fc0 + 8004a28: 4013 ands r3, r2 + 8004a2a: 687a ldr r2, [r7, #4] + 8004a2c: 6a52 ldr r2, [r2, #36] @ 0x24 + 8004a2e: 0192 lsls r2, r2, #6 (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != (RCC_OscInitStruct->PLL.PLLM) << RCC_PLLCFGR_PLLM_Pos) || - 80049d4: 4293 cmp r3, r2 - 80049d6: d111 bne.n 80049fc + 8004a30: 4293 cmp r3, r2 + 8004a32: d111 bne.n 8004a58 (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != (((RCC_OscInitStruct->PLL.PLLP >> 1U) - 1U)) << RCC_PLLCFGR_PLLP_Pos) || - 80049d8: 68fb ldr r3, [r7, #12] - 80049da: f403 3240 and.w r2, r3, #196608 @ 0x30000 - 80049de: 687b ldr r3, [r7, #4] - 80049e0: 6a9b ldr r3, [r3, #40] @ 0x28 - 80049e2: 085b lsrs r3, r3, #1 - 80049e4: 3b01 subs r3, #1 - 80049e6: 041b lsls r3, r3, #16 + 8004a34: 68fb ldr r3, [r7, #12] + 8004a36: f403 3240 and.w r2, r3, #196608 @ 0x30000 + 8004a3a: 687b ldr r3, [r7, #4] + 8004a3c: 6a9b ldr r3, [r3, #40] @ 0x28 + 8004a3e: 085b lsrs r3, r3, #1 + 8004a40: 3b01 subs r3, #1 + 8004a42: 041b lsls r3, r3, #16 (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN) << RCC_PLLCFGR_PLLN_Pos) || - 80049e8: 429a cmp r2, r3 - 80049ea: d107 bne.n 80049fc + 8004a44: 429a cmp r2, r3 + 8004a46: d107 bne.n 8004a58 (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos))) - 80049ec: 68fb ldr r3, [r7, #12] - 80049ee: f003 6270 and.w r2, r3, #251658240 @ 0xf000000 - 80049f2: 687b ldr r3, [r7, #4] - 80049f4: 6adb ldr r3, [r3, #44] @ 0x2c - 80049f6: 061b lsls r3, r3, #24 + 8004a48: 68fb ldr r3, [r7, #12] + 8004a4a: f003 6270 and.w r2, r3, #251658240 @ 0xf000000 + 8004a4e: 687b ldr r3, [r7, #4] + 8004a50: 6adb ldr r3, [r3, #44] @ 0x2c + 8004a52: 061b lsls r3, r3, #24 (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != (((RCC_OscInitStruct->PLL.PLLP >> 1U) - 1U)) << RCC_PLLCFGR_PLLP_Pos) || - 80049f8: 429a cmp r2, r3 - 80049fa: d001 beq.n 8004a00 + 8004a54: 429a cmp r2, r3 + 8004a56: d001 beq.n 8004a5c #endif /* RCC_PLLCFGR_PLLR */ { return HAL_ERROR; - 80049fc: 2301 movs r3, #1 - 80049fe: e000 b.n 8004a02 + 8004a58: 2301 movs r3, #1 + 8004a5a: e000 b.n 8004a5e } } } } return HAL_OK; - 8004a00: 2300 movs r3, #0 + 8004a5c: 2300 movs r3, #0 } - 8004a02: 4618 mov r0, r3 - 8004a04: 3718 adds r7, #24 - 8004a06: 46bd mov sp, r7 - 8004a08: bd80 pop {r7, pc} - 8004a0a: bf00 nop - 8004a0c: 40023800 .word 0x40023800 + 8004a5e: 4618 mov r0, r3 + 8004a60: 3718 adds r7, #24 + 8004a62: 46bd mov sp, r7 + 8004a64: bd80 pop {r7, pc} + 8004a66: bf00 nop + 8004a68: 40023800 .word 0x40023800 -08004a10 : +08004a6c : * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency * (for more details refer to section above "Initialization/de-initialization functions") * @retval None */ HAL_StatusTypeDef HAL_RCC_ClockConfig(const RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) { - 8004a10: b580 push {r7, lr} - 8004a12: b084 sub sp, #16 - 8004a14: af00 add r7, sp, #0 - 8004a16: 6078 str r0, [r7, #4] - 8004a18: 6039 str r1, [r7, #0] + 8004a6c: b580 push {r7, lr} + 8004a6e: b084 sub sp, #16 + 8004a70: af00 add r7, sp, #0 + 8004a72: 6078 str r0, [r7, #4] + 8004a74: 6039 str r1, [r7, #0] uint32_t tickstart; /* Check Null pointer */ if (RCC_ClkInitStruct == NULL) - 8004a1a: 687b ldr r3, [r7, #4] - 8004a1c: 2b00 cmp r3, #0 - 8004a1e: d101 bne.n 8004a24 + 8004a76: 687b ldr r3, [r7, #4] + 8004a78: 2b00 cmp r3, #0 + 8004a7a: d101 bne.n 8004a80 { return HAL_ERROR; - 8004a20: 2301 movs r3, #1 - 8004a22: e0cc b.n 8004bbe + 8004a7c: 2301 movs r3, #1 + 8004a7e: e0cc b.n 8004c1a /* To correctly read data from FLASH memory, the number of wait states (LATENCY) must be correctly programmed according to the frequency of the CPU clock (HCLK) and the supply voltage of the device. */ /* Increasing the number of wait states because of higher CPU frequency */ if (FLatency > __HAL_FLASH_GET_LATENCY()) - 8004a24: 4b68 ldr r3, [pc, #416] @ (8004bc8 ) - 8004a26: 681b ldr r3, [r3, #0] - 8004a28: f003 030f and.w r3, r3, #15 - 8004a2c: 683a ldr r2, [r7, #0] - 8004a2e: 429a cmp r2, r3 - 8004a30: d90c bls.n 8004a4c + 8004a80: 4b68 ldr r3, [pc, #416] @ (8004c24 ) + 8004a82: 681b ldr r3, [r3, #0] + 8004a84: f003 030f and.w r3, r3, #15 + 8004a88: 683a ldr r2, [r7, #0] + 8004a8a: 429a cmp r2, r3 + 8004a8c: d90c bls.n 8004aa8 { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); - 8004a32: 4b65 ldr r3, [pc, #404] @ (8004bc8 ) - 8004a34: 683a ldr r2, [r7, #0] - 8004a36: b2d2 uxtb r2, r2 - 8004a38: 701a strb r2, [r3, #0] + 8004a8e: 4b65 ldr r3, [pc, #404] @ (8004c24 ) + 8004a90: 683a ldr r2, [r7, #0] + 8004a92: b2d2 uxtb r2, r2 + 8004a94: 701a strb r2, [r3, #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) - 8004a3a: 4b63 ldr r3, [pc, #396] @ (8004bc8 ) - 8004a3c: 681b ldr r3, [r3, #0] - 8004a3e: f003 030f and.w r3, r3, #15 - 8004a42: 683a ldr r2, [r7, #0] - 8004a44: 429a cmp r2, r3 - 8004a46: d001 beq.n 8004a4c + 8004a96: 4b63 ldr r3, [pc, #396] @ (8004c24 ) + 8004a98: 681b ldr r3, [r3, #0] + 8004a9a: f003 030f and.w r3, r3, #15 + 8004a9e: 683a ldr r2, [r7, #0] + 8004aa0: 429a cmp r2, r3 + 8004aa2: d001 beq.n 8004aa8 { return HAL_ERROR; - 8004a48: 2301 movs r3, #1 - 8004a4a: e0b8 b.n 8004bbe + 8004aa4: 2301 movs r3, #1 + 8004aa6: e0b8 b.n 8004c1a } } /*-------------------------- HCLK Configuration --------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) - 8004a4c: 687b ldr r3, [r7, #4] - 8004a4e: 681b ldr r3, [r3, #0] - 8004a50: f003 0302 and.w r3, r3, #2 - 8004a54: 2b00 cmp r3, #0 - 8004a56: d020 beq.n 8004a9a + 8004aa8: 687b ldr r3, [r7, #4] + 8004aaa: 681b ldr r3, [r3, #0] + 8004aac: f003 0302 and.w r3, r3, #2 + 8004ab0: 2b00 cmp r3, #0 + 8004ab2: d020 beq.n 8004af6 { /* 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) - 8004a58: 687b ldr r3, [r7, #4] - 8004a5a: 681b ldr r3, [r3, #0] - 8004a5c: f003 0304 and.w r3, r3, #4 - 8004a60: 2b00 cmp r3, #0 - 8004a62: d005 beq.n 8004a70 + 8004ab4: 687b ldr r3, [r7, #4] + 8004ab6: 681b ldr r3, [r3, #0] + 8004ab8: f003 0304 and.w r3, r3, #4 + 8004abc: 2b00 cmp r3, #0 + 8004abe: d005 beq.n 8004acc { MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16); - 8004a64: 4b59 ldr r3, [pc, #356] @ (8004bcc ) - 8004a66: 689b ldr r3, [r3, #8] - 8004a68: 4a58 ldr r2, [pc, #352] @ (8004bcc ) - 8004a6a: f443 53e0 orr.w r3, r3, #7168 @ 0x1c00 - 8004a6e: 6093 str r3, [r2, #8] + 8004ac0: 4b59 ldr r3, [pc, #356] @ (8004c28 ) + 8004ac2: 689b ldr r3, [r3, #8] + 8004ac4: 4a58 ldr r2, [pc, #352] @ (8004c28 ) + 8004ac6: f443 53e0 orr.w r3, r3, #7168 @ 0x1c00 + 8004aca: 6093 str r3, [r2, #8] } if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) - 8004a70: 687b ldr r3, [r7, #4] - 8004a72: 681b ldr r3, [r3, #0] - 8004a74: f003 0308 and.w r3, r3, #8 - 8004a78: 2b00 cmp r3, #0 - 8004a7a: d005 beq.n 8004a88 + 8004acc: 687b ldr r3, [r7, #4] + 8004ace: 681b ldr r3, [r3, #0] + 8004ad0: f003 0308 and.w r3, r3, #8 + 8004ad4: 2b00 cmp r3, #0 + 8004ad6: d005 beq.n 8004ae4 { MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3)); - 8004a7c: 4b53 ldr r3, [pc, #332] @ (8004bcc ) - 8004a7e: 689b ldr r3, [r3, #8] - 8004a80: 4a52 ldr r2, [pc, #328] @ (8004bcc ) - 8004a82: f443 4360 orr.w r3, r3, #57344 @ 0xe000 - 8004a86: 6093 str r3, [r2, #8] + 8004ad8: 4b53 ldr r3, [pc, #332] @ (8004c28 ) + 8004ada: 689b ldr r3, [r3, #8] + 8004adc: 4a52 ldr r2, [pc, #328] @ (8004c28 ) + 8004ade: f443 4360 orr.w r3, r3, #57344 @ 0xe000 + 8004ae2: 6093 str r3, [r2, #8] } assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); - 8004a88: 4b50 ldr r3, [pc, #320] @ (8004bcc ) - 8004a8a: 689b ldr r3, [r3, #8] - 8004a8c: f023 02f0 bic.w r2, r3, #240 @ 0xf0 - 8004a90: 687b ldr r3, [r7, #4] - 8004a92: 689b ldr r3, [r3, #8] - 8004a94: 494d ldr r1, [pc, #308] @ (8004bcc ) - 8004a96: 4313 orrs r3, r2 - 8004a98: 608b str r3, [r1, #8] + 8004ae4: 4b50 ldr r3, [pc, #320] @ (8004c28 ) + 8004ae6: 689b ldr r3, [r3, #8] + 8004ae8: f023 02f0 bic.w r2, r3, #240 @ 0xf0 + 8004aec: 687b ldr r3, [r7, #4] + 8004aee: 689b ldr r3, [r3, #8] + 8004af0: 494d ldr r1, [pc, #308] @ (8004c28 ) + 8004af2: 4313 orrs r3, r2 + 8004af4: 608b str r3, [r1, #8] } /*------------------------- SYSCLK Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) - 8004a9a: 687b ldr r3, [r7, #4] - 8004a9c: 681b ldr r3, [r3, #0] - 8004a9e: f003 0301 and.w r3, r3, #1 - 8004aa2: 2b00 cmp r3, #0 - 8004aa4: d044 beq.n 8004b30 + 8004af6: 687b ldr r3, [r7, #4] + 8004af8: 681b ldr r3, [r3, #0] + 8004afa: f003 0301 and.w r3, r3, #1 + 8004afe: 2b00 cmp r3, #0 + 8004b00: d044 beq.n 8004b8c { assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); /* HSE is selected as System Clock Source */ if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) - 8004aa6: 687b ldr r3, [r7, #4] - 8004aa8: 685b ldr r3, [r3, #4] - 8004aaa: 2b01 cmp r3, #1 - 8004aac: d107 bne.n 8004abe + 8004b02: 687b ldr r3, [r7, #4] + 8004b04: 685b ldr r3, [r3, #4] + 8004b06: 2b01 cmp r3, #1 + 8004b08: d107 bne.n 8004b1a { /* Check the HSE ready flag */ if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 8004aae: 4b47 ldr r3, [pc, #284] @ (8004bcc ) - 8004ab0: 681b ldr r3, [r3, #0] - 8004ab2: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 8004ab6: 2b00 cmp r3, #0 - 8004ab8: d119 bne.n 8004aee + 8004b0a: 4b47 ldr r3, [pc, #284] @ (8004c28 ) + 8004b0c: 681b ldr r3, [r3, #0] + 8004b0e: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8004b12: 2b00 cmp r3, #0 + 8004b14: d119 bne.n 8004b4a { return HAL_ERROR; - 8004aba: 2301 movs r3, #1 - 8004abc: e07f b.n 8004bbe + 8004b16: 2301 movs r3, #1 + 8004b18: e07f b.n 8004c1a } } /* PLL is selected as System Clock Source */ else if ((RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) || - 8004abe: 687b ldr r3, [r7, #4] - 8004ac0: 685b ldr r3, [r3, #4] - 8004ac2: 2b02 cmp r3, #2 - 8004ac4: d003 beq.n 8004ace + 8004b1a: 687b ldr r3, [r7, #4] + 8004b1c: 685b ldr r3, [r3, #4] + 8004b1e: 2b02 cmp r3, #2 + 8004b20: d003 beq.n 8004b2a (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLRCLK)) - 8004ac6: 687b ldr r3, [r7, #4] - 8004ac8: 685b ldr r3, [r3, #4] + 8004b22: 687b ldr r3, [r7, #4] + 8004b24: 685b ldr r3, [r3, #4] else if ((RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) || - 8004aca: 2b03 cmp r3, #3 - 8004acc: d107 bne.n 8004ade + 8004b26: 2b03 cmp r3, #3 + 8004b28: d107 bne.n 8004b3a { /* Check the PLL ready flag */ if (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 8004ace: 4b3f ldr r3, [pc, #252] @ (8004bcc ) - 8004ad0: 681b ldr r3, [r3, #0] - 8004ad2: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 8004ad6: 2b00 cmp r3, #0 - 8004ad8: d109 bne.n 8004aee + 8004b2a: 4b3f ldr r3, [pc, #252] @ (8004c28 ) + 8004b2c: 681b ldr r3, [r3, #0] + 8004b2e: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8004b32: 2b00 cmp r3, #0 + 8004b34: d109 bne.n 8004b4a { return HAL_ERROR; - 8004ada: 2301 movs r3, #1 - 8004adc: e06f b.n 8004bbe + 8004b36: 2301 movs r3, #1 + 8004b38: e06f b.n 8004c1a } /* HSI is selected as System Clock Source */ else { /* Check the HSI ready flag */ if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 8004ade: 4b3b ldr r3, [pc, #236] @ (8004bcc ) - 8004ae0: 681b ldr r3, [r3, #0] - 8004ae2: f003 0302 and.w r3, r3, #2 - 8004ae6: 2b00 cmp r3, #0 - 8004ae8: d101 bne.n 8004aee + 8004b3a: 4b3b ldr r3, [pc, #236] @ (8004c28 ) + 8004b3c: 681b ldr r3, [r3, #0] + 8004b3e: f003 0302 and.w r3, r3, #2 + 8004b42: 2b00 cmp r3, #0 + 8004b44: d101 bne.n 8004b4a { return HAL_ERROR; - 8004aea: 2301 movs r3, #1 - 8004aec: e067 b.n 8004bbe + 8004b46: 2301 movs r3, #1 + 8004b48: e067 b.n 8004c1a } } __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); - 8004aee: 4b37 ldr r3, [pc, #220] @ (8004bcc ) - 8004af0: 689b ldr r3, [r3, #8] - 8004af2: f023 0203 bic.w r2, r3, #3 - 8004af6: 687b ldr r3, [r7, #4] - 8004af8: 685b ldr r3, [r3, #4] - 8004afa: 4934 ldr r1, [pc, #208] @ (8004bcc ) - 8004afc: 4313 orrs r3, r2 - 8004afe: 608b str r3, [r1, #8] + 8004b4a: 4b37 ldr r3, [pc, #220] @ (8004c28 ) + 8004b4c: 689b ldr r3, [r3, #8] + 8004b4e: f023 0203 bic.w r2, r3, #3 + 8004b52: 687b ldr r3, [r7, #4] + 8004b54: 685b ldr r3, [r3, #4] + 8004b56: 4934 ldr r1, [pc, #208] @ (8004c28 ) + 8004b58: 4313 orrs r3, r2 + 8004b5a: 608b str r3, [r1, #8] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8004b00: f7fc fd9e bl 8001640 - 8004b04: 60f8 str r0, [r7, #12] + 8004b5c: f7fc fdc2 bl 80016e4 + 8004b60: 60f8 str r0, [r7, #12] while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 8004b06: e00a b.n 8004b1e + 8004b62: e00a b.n 8004b7a { if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 8004b08: f7fc fd9a bl 8001640 - 8004b0c: 4602 mov r2, r0 - 8004b0e: 68fb ldr r3, [r7, #12] - 8004b10: 1ad3 subs r3, r2, r3 - 8004b12: f241 3288 movw r2, #5000 @ 0x1388 - 8004b16: 4293 cmp r3, r2 - 8004b18: d901 bls.n 8004b1e + 8004b64: f7fc fdbe bl 80016e4 + 8004b68: 4602 mov r2, r0 + 8004b6a: 68fb ldr r3, [r7, #12] + 8004b6c: 1ad3 subs r3, r2, r3 + 8004b6e: f241 3288 movw r2, #5000 @ 0x1388 + 8004b72: 4293 cmp r3, r2 + 8004b74: d901 bls.n 8004b7a { return HAL_TIMEOUT; - 8004b1a: 2303 movs r3, #3 - 8004b1c: e04f b.n 8004bbe + 8004b76: 2303 movs r3, #3 + 8004b78: e04f b.n 8004c1a while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 8004b1e: 4b2b ldr r3, [pc, #172] @ (8004bcc ) - 8004b20: 689b ldr r3, [r3, #8] - 8004b22: f003 020c and.w r2, r3, #12 - 8004b26: 687b ldr r3, [r7, #4] - 8004b28: 685b ldr r3, [r3, #4] - 8004b2a: 009b lsls r3, r3, #2 - 8004b2c: 429a cmp r2, r3 - 8004b2e: d1eb bne.n 8004b08 + 8004b7a: 4b2b ldr r3, [pc, #172] @ (8004c28 ) + 8004b7c: 689b ldr r3, [r3, #8] + 8004b7e: f003 020c and.w r2, r3, #12 + 8004b82: 687b ldr r3, [r7, #4] + 8004b84: 685b ldr r3, [r3, #4] + 8004b86: 009b lsls r3, r3, #2 + 8004b88: 429a cmp r2, r3 + 8004b8a: d1eb bne.n 8004b64 } } } /* Decreasing the number of wait states because of lower CPU frequency */ if (FLatency < __HAL_FLASH_GET_LATENCY()) - 8004b30: 4b25 ldr r3, [pc, #148] @ (8004bc8 ) - 8004b32: 681b ldr r3, [r3, #0] - 8004b34: f003 030f and.w r3, r3, #15 - 8004b38: 683a ldr r2, [r7, #0] - 8004b3a: 429a cmp r2, r3 - 8004b3c: d20c bcs.n 8004b58 + 8004b8c: 4b25 ldr r3, [pc, #148] @ (8004c24 ) + 8004b8e: 681b ldr r3, [r3, #0] + 8004b90: f003 030f and.w r3, r3, #15 + 8004b94: 683a ldr r2, [r7, #0] + 8004b96: 429a cmp r2, r3 + 8004b98: d20c bcs.n 8004bb4 { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); - 8004b3e: 4b22 ldr r3, [pc, #136] @ (8004bc8 ) - 8004b40: 683a ldr r2, [r7, #0] - 8004b42: b2d2 uxtb r2, r2 - 8004b44: 701a strb r2, [r3, #0] + 8004b9a: 4b22 ldr r3, [pc, #136] @ (8004c24 ) + 8004b9c: 683a ldr r2, [r7, #0] + 8004b9e: b2d2 uxtb r2, r2 + 8004ba0: 701a strb r2, [r3, #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) - 8004b46: 4b20 ldr r3, [pc, #128] @ (8004bc8 ) - 8004b48: 681b ldr r3, [r3, #0] - 8004b4a: f003 030f and.w r3, r3, #15 - 8004b4e: 683a ldr r2, [r7, #0] - 8004b50: 429a cmp r2, r3 - 8004b52: d001 beq.n 8004b58 + 8004ba2: 4b20 ldr r3, [pc, #128] @ (8004c24 ) + 8004ba4: 681b ldr r3, [r3, #0] + 8004ba6: f003 030f and.w r3, r3, #15 + 8004baa: 683a ldr r2, [r7, #0] + 8004bac: 429a cmp r2, r3 + 8004bae: d001 beq.n 8004bb4 { return HAL_ERROR; - 8004b54: 2301 movs r3, #1 - 8004b56: e032 b.n 8004bbe + 8004bb0: 2301 movs r3, #1 + 8004bb2: e032 b.n 8004c1a } } /*-------------------------- PCLK1 Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 8004b58: 687b ldr r3, [r7, #4] - 8004b5a: 681b ldr r3, [r3, #0] - 8004b5c: f003 0304 and.w r3, r3, #4 - 8004b60: 2b00 cmp r3, #0 - 8004b62: d008 beq.n 8004b76 + 8004bb4: 687b ldr r3, [r7, #4] + 8004bb6: 681b ldr r3, [r3, #0] + 8004bb8: f003 0304 and.w r3, r3, #4 + 8004bbc: 2b00 cmp r3, #0 + 8004bbe: d008 beq.n 8004bd2 { assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); - 8004b64: 4b19 ldr r3, [pc, #100] @ (8004bcc ) - 8004b66: 689b ldr r3, [r3, #8] - 8004b68: f423 52e0 bic.w r2, r3, #7168 @ 0x1c00 - 8004b6c: 687b ldr r3, [r7, #4] - 8004b6e: 68db ldr r3, [r3, #12] - 8004b70: 4916 ldr r1, [pc, #88] @ (8004bcc ) - 8004b72: 4313 orrs r3, r2 - 8004b74: 608b str r3, [r1, #8] + 8004bc0: 4b19 ldr r3, [pc, #100] @ (8004c28 ) + 8004bc2: 689b ldr r3, [r3, #8] + 8004bc4: f423 52e0 bic.w r2, r3, #7168 @ 0x1c00 + 8004bc8: 687b ldr r3, [r7, #4] + 8004bca: 68db ldr r3, [r3, #12] + 8004bcc: 4916 ldr r1, [pc, #88] @ (8004c28 ) + 8004bce: 4313 orrs r3, r2 + 8004bd0: 608b str r3, [r1, #8] } /*-------------------------- PCLK2 Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) - 8004b76: 687b ldr r3, [r7, #4] - 8004b78: 681b ldr r3, [r3, #0] - 8004b7a: f003 0308 and.w r3, r3, #8 - 8004b7e: 2b00 cmp r3, #0 - 8004b80: d009 beq.n 8004b96 + 8004bd2: 687b ldr r3, [r7, #4] + 8004bd4: 681b ldr r3, [r3, #0] + 8004bd6: f003 0308 and.w r3, r3, #8 + 8004bda: 2b00 cmp r3, #0 + 8004bdc: d009 beq.n 8004bf2 { assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3U)); - 8004b82: 4b12 ldr r3, [pc, #72] @ (8004bcc ) - 8004b84: 689b ldr r3, [r3, #8] - 8004b86: f423 4260 bic.w r2, r3, #57344 @ 0xe000 - 8004b8a: 687b ldr r3, [r7, #4] - 8004b8c: 691b ldr r3, [r3, #16] - 8004b8e: 00db lsls r3, r3, #3 - 8004b90: 490e ldr r1, [pc, #56] @ (8004bcc ) - 8004b92: 4313 orrs r3, r2 - 8004b94: 608b str r3, [r1, #8] + 8004bde: 4b12 ldr r3, [pc, #72] @ (8004c28 ) + 8004be0: 689b ldr r3, [r3, #8] + 8004be2: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 8004be6: 687b ldr r3, [r7, #4] + 8004be8: 691b ldr r3, [r3, #16] + 8004bea: 00db lsls r3, r3, #3 + 8004bec: 490e ldr r1, [pc, #56] @ (8004c28 ) + 8004bee: 4313 orrs r3, r2 + 8004bf0: 608b str r3, [r1, #8] } /* Update the SystemCoreClock global variable */ SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos]; - 8004b96: f000 f821 bl 8004bdc - 8004b9a: 4602 mov r2, r0 - 8004b9c: 4b0b ldr r3, [pc, #44] @ (8004bcc ) - 8004b9e: 689b ldr r3, [r3, #8] - 8004ba0: 091b lsrs r3, r3, #4 - 8004ba2: f003 030f and.w r3, r3, #15 - 8004ba6: 490a ldr r1, [pc, #40] @ (8004bd0 ) - 8004ba8: 5ccb ldrb r3, [r1, r3] - 8004baa: fa22 f303 lsr.w r3, r2, r3 - 8004bae: 4a09 ldr r2, [pc, #36] @ (8004bd4 ) - 8004bb0: 6013 str r3, [r2, #0] + 8004bf2: f000 f821 bl 8004c38 + 8004bf6: 4602 mov r2, r0 + 8004bf8: 4b0b ldr r3, [pc, #44] @ (8004c28 ) + 8004bfa: 689b ldr r3, [r3, #8] + 8004bfc: 091b lsrs r3, r3, #4 + 8004bfe: f003 030f and.w r3, r3, #15 + 8004c02: 490a ldr r1, [pc, #40] @ (8004c2c ) + 8004c04: 5ccb ldrb r3, [r1, r3] + 8004c06: fa22 f303 lsr.w r3, r2, r3 + 8004c0a: 4a09 ldr r2, [pc, #36] @ (8004c30 ) + 8004c0c: 6013 str r3, [r2, #0] /* Configure the source of time base considering new system clocks settings */ HAL_InitTick(uwTickPrio); - 8004bb2: 4b09 ldr r3, [pc, #36] @ (8004bd8 ) - 8004bb4: 681b ldr r3, [r3, #0] - 8004bb6: 4618 mov r0, r3 - 8004bb8: f7fc fc10 bl 80013dc + 8004c0e: 4b09 ldr r3, [pc, #36] @ (8004c34 ) + 8004c10: 681b ldr r3, [r3, #0] + 8004c12: 4618 mov r0, r3 + 8004c14: f7fc fc34 bl 8001480 return HAL_OK; - 8004bbc: 2300 movs r3, #0 + 8004c18: 2300 movs r3, #0 } - 8004bbe: 4618 mov r0, r3 - 8004bc0: 3710 adds r7, #16 - 8004bc2: 46bd mov sp, r7 - 8004bc4: bd80 pop {r7, pc} - 8004bc6: bf00 nop - 8004bc8: 40023c00 .word 0x40023c00 - 8004bcc: 40023800 .word 0x40023800 - 8004bd0: 08007f1c .word 0x08007f1c - 8004bd4: 20000000 .word 0x20000000 - 8004bd8: 20000004 .word 0x20000004 + 8004c1a: 4618 mov r0, r3 + 8004c1c: 3710 adds r7, #16 + 8004c1e: 46bd mov sp, r7 + 8004c20: bd80 pop {r7, pc} + 8004c22: bf00 nop + 8004c24: 40023c00 .word 0x40023c00 + 8004c28: 40023800 .word 0x40023800 + 8004c2c: 08007f6c .word 0x08007f6c + 8004c30: 20000000 .word 0x20000000 + 8004c34: 20000004 .word 0x20000004 -08004bdc : +08004c38 : * * * @retval SYSCLK frequency */ __weak uint32_t HAL_RCC_GetSysClockFreq(void) { - 8004bdc: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} - 8004be0: b094 sub sp, #80 @ 0x50 - 8004be2: af00 add r7, sp, #0 + 8004c38: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} + 8004c3c: b094 sub sp, #80 @ 0x50 + 8004c3e: af00 add r7, sp, #0 uint32_t pllm = 0U; - 8004be4: 2300 movs r3, #0 - 8004be6: 647b str r3, [r7, #68] @ 0x44 + 8004c40: 2300 movs r3, #0 + 8004c42: 647b str r3, [r7, #68] @ 0x44 uint32_t pllvco = 0U; - 8004be8: 2300 movs r3, #0 - 8004bea: 64fb str r3, [r7, #76] @ 0x4c + 8004c44: 2300 movs r3, #0 + 8004c46: 64fb str r3, [r7, #76] @ 0x4c uint32_t pllp = 0U; - 8004bec: 2300 movs r3, #0 - 8004bee: 643b str r3, [r7, #64] @ 0x40 + 8004c48: 2300 movs r3, #0 + 8004c4a: 643b str r3, [r7, #64] @ 0x40 uint32_t sysclockfreq = 0U; - 8004bf0: 2300 movs r3, #0 - 8004bf2: 64bb str r3, [r7, #72] @ 0x48 + 8004c4c: 2300 movs r3, #0 + 8004c4e: 64bb str r3, [r7, #72] @ 0x48 /* Get SYSCLK source -------------------------------------------------------*/ switch (RCC->CFGR & RCC_CFGR_SWS) - 8004bf4: 4b79 ldr r3, [pc, #484] @ (8004ddc ) - 8004bf6: 689b ldr r3, [r3, #8] - 8004bf8: f003 030c and.w r3, r3, #12 - 8004bfc: 2b08 cmp r3, #8 - 8004bfe: d00d beq.n 8004c1c - 8004c00: 2b08 cmp r3, #8 - 8004c02: f200 80e1 bhi.w 8004dc8 - 8004c06: 2b00 cmp r3, #0 - 8004c08: d002 beq.n 8004c10 - 8004c0a: 2b04 cmp r3, #4 - 8004c0c: d003 beq.n 8004c16 - 8004c0e: e0db b.n 8004dc8 + 8004c50: 4b79 ldr r3, [pc, #484] @ (8004e38 ) + 8004c52: 689b ldr r3, [r3, #8] + 8004c54: f003 030c and.w r3, r3, #12 + 8004c58: 2b08 cmp r3, #8 + 8004c5a: d00d beq.n 8004c78 + 8004c5c: 2b08 cmp r3, #8 + 8004c5e: f200 80e1 bhi.w 8004e24 + 8004c62: 2b00 cmp r3, #0 + 8004c64: d002 beq.n 8004c6c + 8004c66: 2b04 cmp r3, #4 + 8004c68: d003 beq.n 8004c72 + 8004c6a: e0db b.n 8004e24 { case RCC_CFGR_SWS_HSI: /* HSI used as system clock source */ { sysclockfreq = HSI_VALUE; - 8004c10: 4b73 ldr r3, [pc, #460] @ (8004de0 ) - 8004c12: 64bb str r3, [r7, #72] @ 0x48 + 8004c6c: 4b73 ldr r3, [pc, #460] @ (8004e3c ) + 8004c6e: 64bb str r3, [r7, #72] @ 0x48 break; - 8004c14: e0db b.n 8004dce + 8004c70: e0db b.n 8004e2a } case RCC_CFGR_SWS_HSE: /* HSE used as system clock source */ { sysclockfreq = HSE_VALUE; - 8004c16: 4b73 ldr r3, [pc, #460] @ (8004de4 ) - 8004c18: 64bb str r3, [r7, #72] @ 0x48 + 8004c72: 4b73 ldr r3, [pc, #460] @ (8004e40 ) + 8004c74: 64bb str r3, [r7, #72] @ 0x48 break; - 8004c1a: e0d8 b.n 8004dce + 8004c76: e0d8 b.n 8004e2a } case RCC_CFGR_SWS_PLL: /* PLL used as system clock source */ { /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN SYSCLK = PLL_VCO / PLLP */ pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; - 8004c1c: 4b6f ldr r3, [pc, #444] @ (8004ddc ) - 8004c1e: 685b ldr r3, [r3, #4] - 8004c20: f003 033f and.w r3, r3, #63 @ 0x3f - 8004c24: 647b str r3, [r7, #68] @ 0x44 + 8004c78: 4b6f ldr r3, [pc, #444] @ (8004e38 ) + 8004c7a: 685b ldr r3, [r3, #4] + 8004c7c: f003 033f and.w r3, r3, #63 @ 0x3f + 8004c80: 647b str r3, [r7, #68] @ 0x44 if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI) - 8004c26: 4b6d ldr r3, [pc, #436] @ (8004ddc ) - 8004c28: 685b ldr r3, [r3, #4] - 8004c2a: f403 0380 and.w r3, r3, #4194304 @ 0x400000 - 8004c2e: 2b00 cmp r3, #0 - 8004c30: d063 beq.n 8004cfa + 8004c82: 4b6d ldr r3, [pc, #436] @ (8004e38 ) + 8004c84: 685b ldr r3, [r3, #4] + 8004c86: f403 0380 and.w r3, r3, #4194304 @ 0x400000 + 8004c8a: 2b00 cmp r3, #0 + 8004c8c: d063 beq.n 8004d56 { /* HSE used as PLL clock source */ pllvco = (uint32_t)((((uint64_t) HSE_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm); - 8004c32: 4b6a ldr r3, [pc, #424] @ (8004ddc ) - 8004c34: 685b ldr r3, [r3, #4] - 8004c36: 099b lsrs r3, r3, #6 - 8004c38: 2200 movs r2, #0 - 8004c3a: 63bb str r3, [r7, #56] @ 0x38 - 8004c3c: 63fa str r2, [r7, #60] @ 0x3c - 8004c3e: 6bbb ldr r3, [r7, #56] @ 0x38 - 8004c40: f3c3 0308 ubfx r3, r3, #0, #9 - 8004c44: 633b str r3, [r7, #48] @ 0x30 - 8004c46: 2300 movs r3, #0 - 8004c48: 637b str r3, [r7, #52] @ 0x34 - 8004c4a: e9d7 450c ldrd r4, r5, [r7, #48] @ 0x30 - 8004c4e: 4622 mov r2, r4 - 8004c50: 462b mov r3, r5 - 8004c52: f04f 0000 mov.w r0, #0 - 8004c56: f04f 0100 mov.w r1, #0 - 8004c5a: 0159 lsls r1, r3, #5 - 8004c5c: ea41 61d2 orr.w r1, r1, r2, lsr #27 - 8004c60: 0150 lsls r0, r2, #5 - 8004c62: 4602 mov r2, r0 - 8004c64: 460b mov r3, r1 - 8004c66: 4621 mov r1, r4 - 8004c68: 1a51 subs r1, r2, r1 - 8004c6a: 6139 str r1, [r7, #16] - 8004c6c: 4629 mov r1, r5 - 8004c6e: eb63 0301 sbc.w r3, r3, r1 - 8004c72: 617b str r3, [r7, #20] - 8004c74: f04f 0200 mov.w r2, #0 - 8004c78: f04f 0300 mov.w r3, #0 - 8004c7c: e9d7 ab04 ldrd sl, fp, [r7, #16] - 8004c80: 4659 mov r1, fp - 8004c82: 018b lsls r3, r1, #6 - 8004c84: 4651 mov r1, sl - 8004c86: ea43 6391 orr.w r3, r3, r1, lsr #26 - 8004c8a: 4651 mov r1, sl - 8004c8c: 018a lsls r2, r1, #6 - 8004c8e: 4651 mov r1, sl - 8004c90: ebb2 0801 subs.w r8, r2, r1 - 8004c94: 4659 mov r1, fp - 8004c96: eb63 0901 sbc.w r9, r3, r1 - 8004c9a: f04f 0200 mov.w r2, #0 - 8004c9e: f04f 0300 mov.w r3, #0 - 8004ca2: ea4f 03c9 mov.w r3, r9, lsl #3 - 8004ca6: ea43 7358 orr.w r3, r3, r8, lsr #29 - 8004caa: ea4f 02c8 mov.w r2, r8, lsl #3 - 8004cae: 4690 mov r8, r2 - 8004cb0: 4699 mov r9, r3 - 8004cb2: 4623 mov r3, r4 - 8004cb4: eb18 0303 adds.w r3, r8, r3 - 8004cb8: 60bb str r3, [r7, #8] - 8004cba: 462b mov r3, r5 - 8004cbc: eb49 0303 adc.w r3, r9, r3 - 8004cc0: 60fb str r3, [r7, #12] - 8004cc2: f04f 0200 mov.w r2, #0 - 8004cc6: f04f 0300 mov.w r3, #0 - 8004cca: e9d7 4502 ldrd r4, r5, [r7, #8] - 8004cce: 4629 mov r1, r5 - 8004cd0: 024b lsls r3, r1, #9 - 8004cd2: 4621 mov r1, r4 - 8004cd4: ea43 53d1 orr.w r3, r3, r1, lsr #23 - 8004cd8: 4621 mov r1, r4 - 8004cda: 024a lsls r2, r1, #9 - 8004cdc: 4610 mov r0, r2 - 8004cde: 4619 mov r1, r3 - 8004ce0: 6c7b ldr r3, [r7, #68] @ 0x44 - 8004ce2: 2200 movs r2, #0 - 8004ce4: 62bb str r3, [r7, #40] @ 0x28 - 8004ce6: 62fa str r2, [r7, #44] @ 0x2c - 8004ce8: e9d7 230a ldrd r2, r3, [r7, #40] @ 0x28 - 8004cec: f7fb fa80 bl 80001f0 <__aeabi_uldivmod> - 8004cf0: 4602 mov r2, r0 - 8004cf2: 460b mov r3, r1 - 8004cf4: 4613 mov r3, r2 - 8004cf6: 64fb str r3, [r7, #76] @ 0x4c - 8004cf8: e058 b.n 8004dac + 8004c8e: 4b6a ldr r3, [pc, #424] @ (8004e38 ) + 8004c90: 685b ldr r3, [r3, #4] + 8004c92: 099b lsrs r3, r3, #6 + 8004c94: 2200 movs r2, #0 + 8004c96: 63bb str r3, [r7, #56] @ 0x38 + 8004c98: 63fa str r2, [r7, #60] @ 0x3c + 8004c9a: 6bbb ldr r3, [r7, #56] @ 0x38 + 8004c9c: f3c3 0308 ubfx r3, r3, #0, #9 + 8004ca0: 633b str r3, [r7, #48] @ 0x30 + 8004ca2: 2300 movs r3, #0 + 8004ca4: 637b str r3, [r7, #52] @ 0x34 + 8004ca6: e9d7 450c ldrd r4, r5, [r7, #48] @ 0x30 + 8004caa: 4622 mov r2, r4 + 8004cac: 462b mov r3, r5 + 8004cae: f04f 0000 mov.w r0, #0 + 8004cb2: f04f 0100 mov.w r1, #0 + 8004cb6: 0159 lsls r1, r3, #5 + 8004cb8: ea41 61d2 orr.w r1, r1, r2, lsr #27 + 8004cbc: 0150 lsls r0, r2, #5 + 8004cbe: 4602 mov r2, r0 + 8004cc0: 460b mov r3, r1 + 8004cc2: 4621 mov r1, r4 + 8004cc4: 1a51 subs r1, r2, r1 + 8004cc6: 6139 str r1, [r7, #16] + 8004cc8: 4629 mov r1, r5 + 8004cca: eb63 0301 sbc.w r3, r3, r1 + 8004cce: 617b str r3, [r7, #20] + 8004cd0: f04f 0200 mov.w r2, #0 + 8004cd4: f04f 0300 mov.w r3, #0 + 8004cd8: e9d7 ab04 ldrd sl, fp, [r7, #16] + 8004cdc: 4659 mov r1, fp + 8004cde: 018b lsls r3, r1, #6 + 8004ce0: 4651 mov r1, sl + 8004ce2: ea43 6391 orr.w r3, r3, r1, lsr #26 + 8004ce6: 4651 mov r1, sl + 8004ce8: 018a lsls r2, r1, #6 + 8004cea: 4651 mov r1, sl + 8004cec: ebb2 0801 subs.w r8, r2, r1 + 8004cf0: 4659 mov r1, fp + 8004cf2: eb63 0901 sbc.w r9, r3, r1 + 8004cf6: f04f 0200 mov.w r2, #0 + 8004cfa: f04f 0300 mov.w r3, #0 + 8004cfe: ea4f 03c9 mov.w r3, r9, lsl #3 + 8004d02: ea43 7358 orr.w r3, r3, r8, lsr #29 + 8004d06: ea4f 02c8 mov.w r2, r8, lsl #3 + 8004d0a: 4690 mov r8, r2 + 8004d0c: 4699 mov r9, r3 + 8004d0e: 4623 mov r3, r4 + 8004d10: eb18 0303 adds.w r3, r8, r3 + 8004d14: 60bb str r3, [r7, #8] + 8004d16: 462b mov r3, r5 + 8004d18: eb49 0303 adc.w r3, r9, r3 + 8004d1c: 60fb str r3, [r7, #12] + 8004d1e: f04f 0200 mov.w r2, #0 + 8004d22: f04f 0300 mov.w r3, #0 + 8004d26: e9d7 4502 ldrd r4, r5, [r7, #8] + 8004d2a: 4629 mov r1, r5 + 8004d2c: 024b lsls r3, r1, #9 + 8004d2e: 4621 mov r1, r4 + 8004d30: ea43 53d1 orr.w r3, r3, r1, lsr #23 + 8004d34: 4621 mov r1, r4 + 8004d36: 024a lsls r2, r1, #9 + 8004d38: 4610 mov r0, r2 + 8004d3a: 4619 mov r1, r3 + 8004d3c: 6c7b ldr r3, [r7, #68] @ 0x44 + 8004d3e: 2200 movs r2, #0 + 8004d40: 62bb str r3, [r7, #40] @ 0x28 + 8004d42: 62fa str r2, [r7, #44] @ 0x2c + 8004d44: e9d7 230a ldrd r2, r3, [r7, #40] @ 0x28 + 8004d48: f7fb fa52 bl 80001f0 <__aeabi_uldivmod> + 8004d4c: 4602 mov r2, r0 + 8004d4e: 460b mov r3, r1 + 8004d50: 4613 mov r3, r2 + 8004d52: 64fb str r3, [r7, #76] @ 0x4c + 8004d54: e058 b.n 8004e08 } else { /* HSI used as PLL clock source */ pllvco = (uint32_t)((((uint64_t) HSI_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm); - 8004cfa: 4b38 ldr r3, [pc, #224] @ (8004ddc ) - 8004cfc: 685b ldr r3, [r3, #4] - 8004cfe: 099b lsrs r3, r3, #6 - 8004d00: 2200 movs r2, #0 - 8004d02: 4618 mov r0, r3 - 8004d04: 4611 mov r1, r2 - 8004d06: f3c0 0308 ubfx r3, r0, #0, #9 - 8004d0a: 623b str r3, [r7, #32] - 8004d0c: 2300 movs r3, #0 - 8004d0e: 627b str r3, [r7, #36] @ 0x24 - 8004d10: e9d7 8908 ldrd r8, r9, [r7, #32] - 8004d14: 4642 mov r2, r8 - 8004d16: 464b mov r3, r9 - 8004d18: f04f 0000 mov.w r0, #0 - 8004d1c: f04f 0100 mov.w r1, #0 - 8004d20: 0159 lsls r1, r3, #5 - 8004d22: ea41 61d2 orr.w r1, r1, r2, lsr #27 - 8004d26: 0150 lsls r0, r2, #5 - 8004d28: 4602 mov r2, r0 - 8004d2a: 460b mov r3, r1 - 8004d2c: 4641 mov r1, r8 - 8004d2e: ebb2 0a01 subs.w sl, r2, r1 - 8004d32: 4649 mov r1, r9 - 8004d34: eb63 0b01 sbc.w fp, r3, r1 - 8004d38: f04f 0200 mov.w r2, #0 - 8004d3c: f04f 0300 mov.w r3, #0 - 8004d40: ea4f 138b mov.w r3, fp, lsl #6 - 8004d44: ea43 639a orr.w r3, r3, sl, lsr #26 - 8004d48: ea4f 128a mov.w r2, sl, lsl #6 - 8004d4c: ebb2 040a subs.w r4, r2, sl - 8004d50: eb63 050b sbc.w r5, r3, fp - 8004d54: f04f 0200 mov.w r2, #0 - 8004d58: f04f 0300 mov.w r3, #0 - 8004d5c: 00eb lsls r3, r5, #3 - 8004d5e: ea43 7354 orr.w r3, r3, r4, lsr #29 - 8004d62: 00e2 lsls r2, r4, #3 - 8004d64: 4614 mov r4, r2 - 8004d66: 461d mov r5, r3 - 8004d68: 4643 mov r3, r8 - 8004d6a: 18e3 adds r3, r4, r3 - 8004d6c: 603b str r3, [r7, #0] - 8004d6e: 464b mov r3, r9 - 8004d70: eb45 0303 adc.w r3, r5, r3 - 8004d74: 607b str r3, [r7, #4] - 8004d76: f04f 0200 mov.w r2, #0 - 8004d7a: f04f 0300 mov.w r3, #0 - 8004d7e: e9d7 4500 ldrd r4, r5, [r7] - 8004d82: 4629 mov r1, r5 - 8004d84: 028b lsls r3, r1, #10 - 8004d86: 4621 mov r1, r4 - 8004d88: ea43 5391 orr.w r3, r3, r1, lsr #22 - 8004d8c: 4621 mov r1, r4 - 8004d8e: 028a lsls r2, r1, #10 - 8004d90: 4610 mov r0, r2 - 8004d92: 4619 mov r1, r3 - 8004d94: 6c7b ldr r3, [r7, #68] @ 0x44 - 8004d96: 2200 movs r2, #0 - 8004d98: 61bb str r3, [r7, #24] - 8004d9a: 61fa str r2, [r7, #28] - 8004d9c: e9d7 2306 ldrd r2, r3, [r7, #24] - 8004da0: f7fb fa26 bl 80001f0 <__aeabi_uldivmod> - 8004da4: 4602 mov r2, r0 - 8004da6: 460b mov r3, r1 - 8004da8: 4613 mov r3, r2 - 8004daa: 64fb str r3, [r7, #76] @ 0x4c + 8004d56: 4b38 ldr r3, [pc, #224] @ (8004e38 ) + 8004d58: 685b ldr r3, [r3, #4] + 8004d5a: 099b lsrs r3, r3, #6 + 8004d5c: 2200 movs r2, #0 + 8004d5e: 4618 mov r0, r3 + 8004d60: 4611 mov r1, r2 + 8004d62: f3c0 0308 ubfx r3, r0, #0, #9 + 8004d66: 623b str r3, [r7, #32] + 8004d68: 2300 movs r3, #0 + 8004d6a: 627b str r3, [r7, #36] @ 0x24 + 8004d6c: e9d7 8908 ldrd r8, r9, [r7, #32] + 8004d70: 4642 mov r2, r8 + 8004d72: 464b mov r3, r9 + 8004d74: f04f 0000 mov.w r0, #0 + 8004d78: f04f 0100 mov.w r1, #0 + 8004d7c: 0159 lsls r1, r3, #5 + 8004d7e: ea41 61d2 orr.w r1, r1, r2, lsr #27 + 8004d82: 0150 lsls r0, r2, #5 + 8004d84: 4602 mov r2, r0 + 8004d86: 460b mov r3, r1 + 8004d88: 4641 mov r1, r8 + 8004d8a: ebb2 0a01 subs.w sl, r2, r1 + 8004d8e: 4649 mov r1, r9 + 8004d90: eb63 0b01 sbc.w fp, r3, r1 + 8004d94: f04f 0200 mov.w r2, #0 + 8004d98: f04f 0300 mov.w r3, #0 + 8004d9c: ea4f 138b mov.w r3, fp, lsl #6 + 8004da0: ea43 639a orr.w r3, r3, sl, lsr #26 + 8004da4: ea4f 128a mov.w r2, sl, lsl #6 + 8004da8: ebb2 040a subs.w r4, r2, sl + 8004dac: eb63 050b sbc.w r5, r3, fp + 8004db0: f04f 0200 mov.w r2, #0 + 8004db4: f04f 0300 mov.w r3, #0 + 8004db8: 00eb lsls r3, r5, #3 + 8004dba: ea43 7354 orr.w r3, r3, r4, lsr #29 + 8004dbe: 00e2 lsls r2, r4, #3 + 8004dc0: 4614 mov r4, r2 + 8004dc2: 461d mov r5, r3 + 8004dc4: 4643 mov r3, r8 + 8004dc6: 18e3 adds r3, r4, r3 + 8004dc8: 603b str r3, [r7, #0] + 8004dca: 464b mov r3, r9 + 8004dcc: eb45 0303 adc.w r3, r5, r3 + 8004dd0: 607b str r3, [r7, #4] + 8004dd2: f04f 0200 mov.w r2, #0 + 8004dd6: f04f 0300 mov.w r3, #0 + 8004dda: e9d7 4500 ldrd r4, r5, [r7] + 8004dde: 4629 mov r1, r5 + 8004de0: 028b lsls r3, r1, #10 + 8004de2: 4621 mov r1, r4 + 8004de4: ea43 5391 orr.w r3, r3, r1, lsr #22 + 8004de8: 4621 mov r1, r4 + 8004dea: 028a lsls r2, r1, #10 + 8004dec: 4610 mov r0, r2 + 8004dee: 4619 mov r1, r3 + 8004df0: 6c7b ldr r3, [r7, #68] @ 0x44 + 8004df2: 2200 movs r2, #0 + 8004df4: 61bb str r3, [r7, #24] + 8004df6: 61fa str r2, [r7, #28] + 8004df8: e9d7 2306 ldrd r2, r3, [r7, #24] + 8004dfc: f7fb f9f8 bl 80001f0 <__aeabi_uldivmod> + 8004e00: 4602 mov r2, r0 + 8004e02: 460b mov r3, r1 + 8004e04: 4613 mov r3, r2 + 8004e06: 64fb str r3, [r7, #76] @ 0x4c } pllp = ((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1U) * 2U); - 8004dac: 4b0b ldr r3, [pc, #44] @ (8004ddc ) - 8004dae: 685b ldr r3, [r3, #4] - 8004db0: 0c1b lsrs r3, r3, #16 - 8004db2: f003 0303 and.w r3, r3, #3 - 8004db6: 3301 adds r3, #1 - 8004db8: 005b lsls r3, r3, #1 - 8004dba: 643b str r3, [r7, #64] @ 0x40 + 8004e08: 4b0b ldr r3, [pc, #44] @ (8004e38 ) + 8004e0a: 685b ldr r3, [r3, #4] + 8004e0c: 0c1b lsrs r3, r3, #16 + 8004e0e: f003 0303 and.w r3, r3, #3 + 8004e12: 3301 adds r3, #1 + 8004e14: 005b lsls r3, r3, #1 + 8004e16: 643b str r3, [r7, #64] @ 0x40 sysclockfreq = pllvco / pllp; - 8004dbc: 6cfa ldr r2, [r7, #76] @ 0x4c - 8004dbe: 6c3b ldr r3, [r7, #64] @ 0x40 - 8004dc0: fbb2 f3f3 udiv r3, r2, r3 - 8004dc4: 64bb str r3, [r7, #72] @ 0x48 + 8004e18: 6cfa ldr r2, [r7, #76] @ 0x4c + 8004e1a: 6c3b ldr r3, [r7, #64] @ 0x40 + 8004e1c: fbb2 f3f3 udiv r3, r2, r3 + 8004e20: 64bb str r3, [r7, #72] @ 0x48 break; - 8004dc6: e002 b.n 8004dce + 8004e22: e002 b.n 8004e2a } default: { sysclockfreq = HSI_VALUE; - 8004dc8: 4b05 ldr r3, [pc, #20] @ (8004de0 ) - 8004dca: 64bb str r3, [r7, #72] @ 0x48 + 8004e24: 4b05 ldr r3, [pc, #20] @ (8004e3c ) + 8004e26: 64bb str r3, [r7, #72] @ 0x48 break; - 8004dcc: bf00 nop + 8004e28: bf00 nop } } return sysclockfreq; - 8004dce: 6cbb ldr r3, [r7, #72] @ 0x48 + 8004e2a: 6cbb ldr r3, [r7, #72] @ 0x48 } - 8004dd0: 4618 mov r0, r3 - 8004dd2: 3750 adds r7, #80 @ 0x50 - 8004dd4: 46bd mov sp, r7 - 8004dd6: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} - 8004dda: bf00 nop - 8004ddc: 40023800 .word 0x40023800 - 8004de0: 00f42400 .word 0x00f42400 - 8004de4: 007a1200 .word 0x007a1200 + 8004e2c: 4618 mov r0, r3 + 8004e2e: 3750 adds r7, #80 @ 0x50 + 8004e30: 46bd mov sp, r7 + 8004e32: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} + 8004e36: bf00 nop + 8004e38: 40023800 .word 0x40023800 + 8004e3c: 00f42400 .word 0x00f42400 + 8004e40: 007a1200 .word 0x007a1200 -08004de8 : +08004e44 : * @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) { - 8004de8: b480 push {r7} - 8004dea: af00 add r7, sp, #0 + 8004e44: b480 push {r7} + 8004e46: af00 add r7, sp, #0 return SystemCoreClock; - 8004dec: 4b03 ldr r3, [pc, #12] @ (8004dfc ) - 8004dee: 681b ldr r3, [r3, #0] + 8004e48: 4b03 ldr r3, [pc, #12] @ (8004e58 ) + 8004e4a: 681b ldr r3, [r3, #0] } - 8004df0: 4618 mov r0, r3 - 8004df2: 46bd mov sp, r7 - 8004df4: f85d 7b04 ldr.w r7, [sp], #4 - 8004df8: 4770 bx lr - 8004dfa: bf00 nop - 8004dfc: 20000000 .word 0x20000000 + 8004e4c: 4618 mov r0, r3 + 8004e4e: 46bd mov sp, r7 + 8004e50: f85d 7b04 ldr.w r7, [sp], #4 + 8004e54: 4770 bx lr + 8004e56: bf00 nop + 8004e58: 20000000 .word 0x20000000 -08004e00 : +08004e5c : * @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) { - 8004e00: b580 push {r7, lr} - 8004e02: af00 add r7, sp, #0 + 8004e5c: b580 push {r7, lr} + 8004e5e: 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]); - 8004e04: f7ff fff0 bl 8004de8 - 8004e08: 4602 mov r2, r0 - 8004e0a: 4b05 ldr r3, [pc, #20] @ (8004e20 ) - 8004e0c: 689b ldr r3, [r3, #8] - 8004e0e: 0a9b lsrs r3, r3, #10 - 8004e10: f003 0307 and.w r3, r3, #7 - 8004e14: 4903 ldr r1, [pc, #12] @ (8004e24 ) - 8004e16: 5ccb ldrb r3, [r1, r3] - 8004e18: fa22 f303 lsr.w r3, r2, r3 + 8004e60: f7ff fff0 bl 8004e44 + 8004e64: 4602 mov r2, r0 + 8004e66: 4b05 ldr r3, [pc, #20] @ (8004e7c ) + 8004e68: 689b ldr r3, [r3, #8] + 8004e6a: 0a9b lsrs r3, r3, #10 + 8004e6c: f003 0307 and.w r3, r3, #7 + 8004e70: 4903 ldr r1, [pc, #12] @ (8004e80 ) + 8004e72: 5ccb ldrb r3, [r1, r3] + 8004e74: fa22 f303 lsr.w r3, r2, r3 } - 8004e1c: 4618 mov r0, r3 - 8004e1e: bd80 pop {r7, pc} - 8004e20: 40023800 .word 0x40023800 - 8004e24: 08007f2c .word 0x08007f2c + 8004e78: 4618 mov r0, r3 + 8004e7a: bd80 pop {r7, pc} + 8004e7c: 40023800 .word 0x40023800 + 8004e80: 08007f7c .word 0x08007f7c -08004e28 : +08004e84 : * @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) { - 8004e28: b580 push {r7, lr} - 8004e2a: af00 add r7, sp, #0 + 8004e84: b580 push {r7, lr} + 8004e86: 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]); - 8004e2c: f7ff ffdc bl 8004de8 - 8004e30: 4602 mov r2, r0 - 8004e32: 4b05 ldr r3, [pc, #20] @ (8004e48 ) - 8004e34: 689b ldr r3, [r3, #8] - 8004e36: 0b5b lsrs r3, r3, #13 - 8004e38: f003 0307 and.w r3, r3, #7 - 8004e3c: 4903 ldr r1, [pc, #12] @ (8004e4c ) - 8004e3e: 5ccb ldrb r3, [r1, r3] - 8004e40: fa22 f303 lsr.w r3, r2, r3 + 8004e88: f7ff ffdc bl 8004e44 + 8004e8c: 4602 mov r2, r0 + 8004e8e: 4b05 ldr r3, [pc, #20] @ (8004ea4 ) + 8004e90: 689b ldr r3, [r3, #8] + 8004e92: 0b5b lsrs r3, r3, #13 + 8004e94: f003 0307 and.w r3, r3, #7 + 8004e98: 4903 ldr r1, [pc, #12] @ (8004ea8 ) + 8004e9a: 5ccb ldrb r3, [r1, r3] + 8004e9c: fa22 f303 lsr.w r3, r2, r3 } - 8004e44: 4618 mov r0, r3 - 8004e46: bd80 pop {r7, pc} - 8004e48: 40023800 .word 0x40023800 - 8004e4c: 08007f2c .word 0x08007f2c + 8004ea0: 4618 mov r0, r3 + 8004ea2: bd80 pop {r7, pc} + 8004ea4: 40023800 .word 0x40023800 + 8004ea8: 08007f7c .word 0x08007f7c -08004e50 : +08004eac : * will be configured. * @param pFLatency Pointer on the Flash Latency. * @retval None */ void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency) { - 8004e50: b480 push {r7} - 8004e52: b083 sub sp, #12 - 8004e54: af00 add r7, sp, #0 - 8004e56: 6078 str r0, [r7, #4] - 8004e58: 6039 str r1, [r7, #0] + 8004eac: b480 push {r7} + 8004eae: b083 sub sp, #12 + 8004eb0: af00 add r7, sp, #0 + 8004eb2: 6078 str r0, [r7, #4] + 8004eb4: 6039 str r1, [r7, #0] /* Set all possible values for the Clock type parameter --------------------*/ RCC_ClkInitStruct->ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; - 8004e5a: 687b ldr r3, [r7, #4] - 8004e5c: 220f movs r2, #15 - 8004e5e: 601a str r2, [r3, #0] + 8004eb6: 687b ldr r3, [r7, #4] + 8004eb8: 220f movs r2, #15 + 8004eba: 601a str r2, [r3, #0] /* Get the SYSCLK configuration --------------------------------------------*/ RCC_ClkInitStruct->SYSCLKSource = (uint32_t)(RCC->CFGR & RCC_CFGR_SW); - 8004e60: 4b12 ldr r3, [pc, #72] @ (8004eac ) - 8004e62: 689b ldr r3, [r3, #8] - 8004e64: f003 0203 and.w r2, r3, #3 - 8004e68: 687b ldr r3, [r7, #4] - 8004e6a: 605a str r2, [r3, #4] + 8004ebc: 4b12 ldr r3, [pc, #72] @ (8004f08 ) + 8004ebe: 689b ldr r3, [r3, #8] + 8004ec0: f003 0203 and.w r2, r3, #3 + 8004ec4: 687b ldr r3, [r7, #4] + 8004ec6: 605a str r2, [r3, #4] /* Get the HCLK configuration ----------------------------------------------*/ RCC_ClkInitStruct->AHBCLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_HPRE); - 8004e6c: 4b0f ldr r3, [pc, #60] @ (8004eac ) - 8004e6e: 689b ldr r3, [r3, #8] - 8004e70: f003 02f0 and.w r2, r3, #240 @ 0xf0 - 8004e74: 687b ldr r3, [r7, #4] - 8004e76: 609a str r2, [r3, #8] + 8004ec8: 4b0f ldr r3, [pc, #60] @ (8004f08 ) + 8004eca: 689b ldr r3, [r3, #8] + 8004ecc: f003 02f0 and.w r2, r3, #240 @ 0xf0 + 8004ed0: 687b ldr r3, [r7, #4] + 8004ed2: 609a str r2, [r3, #8] /* Get the APB1 configuration ----------------------------------------------*/ RCC_ClkInitStruct->APB1CLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_PPRE1); - 8004e78: 4b0c ldr r3, [pc, #48] @ (8004eac ) - 8004e7a: 689b ldr r3, [r3, #8] - 8004e7c: f403 52e0 and.w r2, r3, #7168 @ 0x1c00 - 8004e80: 687b ldr r3, [r7, #4] - 8004e82: 60da str r2, [r3, #12] + 8004ed4: 4b0c ldr r3, [pc, #48] @ (8004f08 ) + 8004ed6: 689b ldr r3, [r3, #8] + 8004ed8: f403 52e0 and.w r2, r3, #7168 @ 0x1c00 + 8004edc: 687b ldr r3, [r7, #4] + 8004ede: 60da str r2, [r3, #12] /* Get the APB2 configuration ----------------------------------------------*/ RCC_ClkInitStruct->APB2CLKDivider = (uint32_t)((RCC->CFGR & RCC_CFGR_PPRE2) >> 3U); - 8004e84: 4b09 ldr r3, [pc, #36] @ (8004eac ) - 8004e86: 689b ldr r3, [r3, #8] - 8004e88: 08db lsrs r3, r3, #3 - 8004e8a: f403 52e0 and.w r2, r3, #7168 @ 0x1c00 - 8004e8e: 687b ldr r3, [r7, #4] - 8004e90: 611a str r2, [r3, #16] + 8004ee0: 4b09 ldr r3, [pc, #36] @ (8004f08 ) + 8004ee2: 689b ldr r3, [r3, #8] + 8004ee4: 08db lsrs r3, r3, #3 + 8004ee6: f403 52e0 and.w r2, r3, #7168 @ 0x1c00 + 8004eea: 687b ldr r3, [r7, #4] + 8004eec: 611a str r2, [r3, #16] /* Get the Flash Wait State (Latency) configuration ------------------------*/ *pFLatency = (uint32_t)(FLASH->ACR & FLASH_ACR_LATENCY); - 8004e92: 4b07 ldr r3, [pc, #28] @ (8004eb0 ) - 8004e94: 681b ldr r3, [r3, #0] - 8004e96: f003 020f and.w r2, r3, #15 - 8004e9a: 683b ldr r3, [r7, #0] - 8004e9c: 601a str r2, [r3, #0] + 8004eee: 4b07 ldr r3, [pc, #28] @ (8004f0c ) + 8004ef0: 681b ldr r3, [r3, #0] + 8004ef2: f003 020f and.w r2, r3, #15 + 8004ef6: 683b ldr r3, [r7, #0] + 8004ef8: 601a str r2, [r3, #0] } - 8004e9e: bf00 nop - 8004ea0: 370c adds r7, #12 - 8004ea2: 46bd mov sp, r7 - 8004ea4: f85d 7b04 ldr.w r7, [sp], #4 - 8004ea8: 4770 bx lr - 8004eaa: bf00 nop - 8004eac: 40023800 .word 0x40023800 - 8004eb0: 40023c00 .word 0x40023c00 + 8004efa: bf00 nop + 8004efc: 370c adds r7, #12 + 8004efe: 46bd mov sp, r7 + 8004f00: f85d 7b04 ldr.w r7, [sp], #4 + 8004f04: 4770 bx lr + 8004f06: bf00 nop + 8004f08: 40023800 .word 0x40023800 + 8004f0c: 40023c00 .word 0x40023c00 -08004eb4 : +08004f10 : * the backup registers) and RCC_BDCR register are set to their reset values. * * @retval HAL status */ HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) { - 8004eb4: b580 push {r7, lr} - 8004eb6: b086 sub sp, #24 - 8004eb8: af00 add r7, sp, #0 - 8004eba: 6078 str r0, [r7, #4] + 8004f10: b580 push {r7, lr} + 8004f12: b086 sub sp, #24 + 8004f14: af00 add r7, sp, #0 + 8004f16: 6078 str r0, [r7, #4] uint32_t tickstart = 0U; - 8004ebc: 2300 movs r3, #0 - 8004ebe: 617b str r3, [r7, #20] + 8004f18: 2300 movs r3, #0 + 8004f1a: 617b str r3, [r7, #20] uint32_t tmpreg1 = 0U; - 8004ec0: 2300 movs r3, #0 - 8004ec2: 613b str r3, [r7, #16] + 8004f1c: 2300 movs r3, #0 + 8004f1e: 613b str r3, [r7, #16] /*----------------------- SAI/I2S Configuration (PLLI2S) -------------------*/ /*----------------------- Common configuration SAI/I2S ---------------------*/ /* In Case of SAI or I2S Clock Configuration through PLLI2S, PLLI2SN division factor is common parameters for both peripherals */ if ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) || - 8004ec4: 687b ldr r3, [r7, #4] - 8004ec6: 681b ldr r3, [r3, #0] - 8004ec8: f003 0301 and.w r3, r3, #1 - 8004ecc: 2b00 cmp r3, #0 - 8004ece: d10b bne.n 8004ee8 + 8004f20: 687b ldr r3, [r7, #4] + 8004f22: 681b ldr r3, [r3, #0] + 8004f24: f003 0301 and.w r3, r3, #1 + 8004f28: 2b00 cmp r3, #0 + 8004f2a: d10b bne.n 8004f44 (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI_PLLI2S) == RCC_PERIPHCLK_SAI_PLLI2S) || - 8004ed0: 687b ldr r3, [r7, #4] - 8004ed2: 681b ldr r3, [r3, #0] - 8004ed4: f003 0302 and.w r3, r3, #2 + 8004f2c: 687b ldr r3, [r7, #4] + 8004f2e: 681b ldr r3, [r3, #0] + 8004f30: f003 0302 and.w r3, r3, #2 if ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) || - 8004ed8: 2b00 cmp r3, #0 - 8004eda: d105 bne.n 8004ee8 + 8004f34: 2b00 cmp r3, #0 + 8004f36: d105 bne.n 8004f44 (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_PLLI2S) == RCC_PERIPHCLK_PLLI2S)) - 8004edc: 687b ldr r3, [r7, #4] - 8004ede: 681b ldr r3, [r3, #0] - 8004ee0: f003 0340 and.w r3, r3, #64 @ 0x40 + 8004f38: 687b ldr r3, [r7, #4] + 8004f3a: 681b ldr r3, [r3, #0] + 8004f3c: f003 0340 and.w r3, r3, #64 @ 0x40 (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI_PLLI2S) == RCC_PERIPHCLK_SAI_PLLI2S) || - 8004ee4: 2b00 cmp r3, #0 - 8004ee6: d075 beq.n 8004fd4 + 8004f40: 2b00 cmp r3, #0 + 8004f42: d075 beq.n 8005030 { /* check for Parameters */ assert_param(IS_RCC_PLLI2SN_VALUE(PeriphClkInit->PLLI2S.PLLI2SN)); /* Disable the PLLI2S */ __HAL_RCC_PLLI2S_DISABLE(); - 8004ee8: 4b91 ldr r3, [pc, #580] @ (8005130 ) - 8004eea: 2200 movs r2, #0 - 8004eec: 601a str r2, [r3, #0] + 8004f44: 4b91 ldr r3, [pc, #580] @ (800518c ) + 8004f46: 2200 movs r2, #0 + 8004f48: 601a str r2, [r3, #0] /* Get tick */ tickstart = HAL_GetTick(); - 8004eee: f7fc fba7 bl 8001640 - 8004ef2: 6178 str r0, [r7, #20] + 8004f4a: f7fc fbcb bl 80016e4 + 8004f4e: 6178 str r0, [r7, #20] /* Wait till PLLI2S is disabled */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET) - 8004ef4: e008 b.n 8004f08 + 8004f50: e008 b.n 8004f64 { if ((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE) - 8004ef6: f7fc fba3 bl 8001640 - 8004efa: 4602 mov r2, r0 - 8004efc: 697b ldr r3, [r7, #20] - 8004efe: 1ad3 subs r3, r2, r3 - 8004f00: 2b02 cmp r3, #2 - 8004f02: d901 bls.n 8004f08 + 8004f52: f7fc fbc7 bl 80016e4 + 8004f56: 4602 mov r2, r0 + 8004f58: 697b ldr r3, [r7, #20] + 8004f5a: 1ad3 subs r3, r2, r3 + 8004f5c: 2b02 cmp r3, #2 + 8004f5e: d901 bls.n 8004f64 { /* return in case of Timeout detected */ return HAL_TIMEOUT; - 8004f04: 2303 movs r3, #3 - 8004f06: e189 b.n 800521c + 8004f60: 2303 movs r3, #3 + 8004f62: e189 b.n 8005278 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET) - 8004f08: 4b8a ldr r3, [pc, #552] @ (8005134 ) - 8004f0a: 681b ldr r3, [r3, #0] - 8004f0c: f003 6300 and.w r3, r3, #134217728 @ 0x8000000 - 8004f10: 2b00 cmp r3, #0 - 8004f12: d1f0 bne.n 8004ef6 + 8004f64: 4b8a ldr r3, [pc, #552] @ (8005190 ) + 8004f66: 681b ldr r3, [r3, #0] + 8004f68: f003 6300 and.w r3, r3, #134217728 @ 0x8000000 + 8004f6c: 2b00 cmp r3, #0 + 8004f6e: d1f0 bne.n 8004f52 } /*---------------------------- I2S configuration -------------------------*/ /* In Case of I2S Clock Configuration through PLLI2S, PLLI2SR must be added only for I2S configuration */ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == (RCC_PERIPHCLK_I2S)) - 8004f14: 687b ldr r3, [r7, #4] - 8004f16: 681b ldr r3, [r3, #0] - 8004f18: f003 0301 and.w r3, r3, #1 - 8004f1c: 2b00 cmp r3, #0 - 8004f1e: d009 beq.n 8004f34 + 8004f70: 687b ldr r3, [r7, #4] + 8004f72: 681b ldr r3, [r3, #0] + 8004f74: f003 0301 and.w r3, r3, #1 + 8004f78: 2b00 cmp r3, #0 + 8004f7a: d009 beq.n 8004f90 /* check for Parameters */ assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->PLLI2S.PLLI2SR)); /* Configure the PLLI2S division factors */ /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) * (PLLI2SN/PLLM) */ /* I2SCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SR */ __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN, PeriphClkInit->PLLI2S.PLLI2SR); - 8004f20: 687b ldr r3, [r7, #4] - 8004f22: 685b ldr r3, [r3, #4] - 8004f24: 019a lsls r2, r3, #6 - 8004f26: 687b ldr r3, [r7, #4] - 8004f28: 689b ldr r3, [r3, #8] - 8004f2a: 071b lsls r3, r3, #28 - 8004f2c: 4981 ldr r1, [pc, #516] @ (8005134 ) - 8004f2e: 4313 orrs r3, r2 - 8004f30: f8c1 3084 str.w r3, [r1, #132] @ 0x84 + 8004f7c: 687b ldr r3, [r7, #4] + 8004f7e: 685b ldr r3, [r3, #4] + 8004f80: 019a lsls r2, r3, #6 + 8004f82: 687b ldr r3, [r7, #4] + 8004f84: 689b ldr r3, [r3, #8] + 8004f86: 071b lsls r3, r3, #28 + 8004f88: 4981 ldr r1, [pc, #516] @ (8005190 ) + 8004f8a: 4313 orrs r3, r2 + 8004f8c: f8c1 3084 str.w r3, [r1, #132] @ 0x84 } /*---------------------------- SAI configuration -------------------------*/ /* In Case of SAI Clock Configuration through PLLI2S, PLLI2SQ and PLLI2S_DIVQ must be added only for SAI configuration */ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI_PLLI2S) == (RCC_PERIPHCLK_SAI_PLLI2S)) - 8004f34: 687b ldr r3, [r7, #4] - 8004f36: 681b ldr r3, [r3, #0] - 8004f38: f003 0302 and.w r3, r3, #2 - 8004f3c: 2b00 cmp r3, #0 - 8004f3e: d01f beq.n 8004f80 + 8004f90: 687b ldr r3, [r7, #4] + 8004f92: 681b ldr r3, [r3, #0] + 8004f94: f003 0302 and.w r3, r3, #2 + 8004f98: 2b00 cmp r3, #0 + 8004f9a: d01f beq.n 8004fdc /* Check the PLLI2S division factors */ assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->PLLI2S.PLLI2SQ)); assert_param(IS_RCC_PLLI2S_DIVQ_VALUE(PeriphClkInit->PLLI2SDivQ)); /* Read PLLI2SR value from PLLI2SCFGR register (this value is not need for SAI configuration) */ tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos); - 8004f40: 4b7c ldr r3, [pc, #496] @ (8005134 ) - 8004f42: f8d3 3084 ldr.w r3, [r3, #132] @ 0x84 - 8004f46: 0f1b lsrs r3, r3, #28 - 8004f48: f003 0307 and.w r3, r3, #7 - 8004f4c: 613b str r3, [r7, #16] + 8004f9c: 4b7c ldr r3, [pc, #496] @ (8005190 ) + 8004f9e: f8d3 3084 ldr.w r3, [r3, #132] @ 0x84 + 8004fa2: 0f1b lsrs r3, r3, #28 + 8004fa4: f003 0307 and.w r3, r3, #7 + 8004fa8: 613b str r3, [r7, #16] /* Configure the PLLI2S division factors */ /* PLLI2S_VCO Input = PLL_SOURCE/PLLM */ /* PLLI2S_VCO Output = PLLI2S_VCO Input * PLLI2SN */ /* SAI_CLK(first level) = PLLI2S_VCO Output/PLLI2SQ */ __HAL_RCC_PLLI2S_SAICLK_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN, PeriphClkInit->PLLI2S.PLLI2SQ, tmpreg1); - 8004f4e: 687b ldr r3, [r7, #4] - 8004f50: 685b ldr r3, [r3, #4] - 8004f52: 019a lsls r2, r3, #6 - 8004f54: 687b ldr r3, [r7, #4] - 8004f56: 68db ldr r3, [r3, #12] - 8004f58: 061b lsls r3, r3, #24 - 8004f5a: 431a orrs r2, r3 - 8004f5c: 693b ldr r3, [r7, #16] - 8004f5e: 071b lsls r3, r3, #28 - 8004f60: 4974 ldr r1, [pc, #464] @ (8005134 ) - 8004f62: 4313 orrs r3, r2 - 8004f64: f8c1 3084 str.w r3, [r1, #132] @ 0x84 + 8004faa: 687b ldr r3, [r7, #4] + 8004fac: 685b ldr r3, [r3, #4] + 8004fae: 019a lsls r2, r3, #6 + 8004fb0: 687b ldr r3, [r7, #4] + 8004fb2: 68db ldr r3, [r3, #12] + 8004fb4: 061b lsls r3, r3, #24 + 8004fb6: 431a orrs r2, r3 + 8004fb8: 693b ldr r3, [r7, #16] + 8004fba: 071b lsls r3, r3, #28 + 8004fbc: 4974 ldr r1, [pc, #464] @ (8005190 ) + 8004fbe: 4313 orrs r3, r2 + 8004fc0: f8c1 3084 str.w r3, [r1, #132] @ 0x84 /* SAI_CLK_x = SAI_CLK(first level)/PLLI2SDIVQ */ __HAL_RCC_PLLI2S_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->PLLI2SDivQ); - 8004f68: 4b72 ldr r3, [pc, #456] @ (8005134 ) - 8004f6a: f8d3 308c ldr.w r3, [r3, #140] @ 0x8c - 8004f6e: f023 021f bic.w r2, r3, #31 - 8004f72: 687b ldr r3, [r7, #4] - 8004f74: 69db ldr r3, [r3, #28] - 8004f76: 3b01 subs r3, #1 - 8004f78: 496e ldr r1, [pc, #440] @ (8005134 ) - 8004f7a: 4313 orrs r3, r2 - 8004f7c: f8c1 308c str.w r3, [r1, #140] @ 0x8c + 8004fc4: 4b72 ldr r3, [pc, #456] @ (8005190 ) + 8004fc6: f8d3 308c ldr.w r3, [r3, #140] @ 0x8c + 8004fca: f023 021f bic.w r2, r3, #31 + 8004fce: 687b ldr r3, [r7, #4] + 8004fd0: 69db ldr r3, [r3, #28] + 8004fd2: 3b01 subs r3, #1 + 8004fd4: 496e ldr r1, [pc, #440] @ (8005190 ) + 8004fd6: 4313 orrs r3, r2 + 8004fd8: f8c1 308c str.w r3, [r1, #140] @ 0x8c } /*----------------- In Case of PLLI2S is just selected -----------------*/ if ((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_PLLI2S) == RCC_PERIPHCLK_PLLI2S) - 8004f80: 687b ldr r3, [r7, #4] - 8004f82: 681b ldr r3, [r3, #0] - 8004f84: f003 0340 and.w r3, r3, #64 @ 0x40 - 8004f88: 2b00 cmp r3, #0 - 8004f8a: d00d beq.n 8004fa8 + 8004fdc: 687b ldr r3, [r7, #4] + 8004fde: 681b ldr r3, [r3, #0] + 8004fe0: f003 0340 and.w r3, r3, #64 @ 0x40 + 8004fe4: 2b00 cmp r3, #0 + 8004fe6: d00d beq.n 8005004 /* Check for Parameters */ assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->PLLI2S.PLLI2SQ)); assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->PLLI2S.PLLI2SR)); /* Configure the PLLI2S multiplication and division factors */ __HAL_RCC_PLLI2S_SAICLK_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN, PeriphClkInit->PLLI2S.PLLI2SQ, - 8004f8c: 687b ldr r3, [r7, #4] - 8004f8e: 685b ldr r3, [r3, #4] - 8004f90: 019a lsls r2, r3, #6 - 8004f92: 687b ldr r3, [r7, #4] - 8004f94: 68db ldr r3, [r3, #12] - 8004f96: 061b lsls r3, r3, #24 - 8004f98: 431a orrs r2, r3 - 8004f9a: 687b ldr r3, [r7, #4] - 8004f9c: 689b ldr r3, [r3, #8] - 8004f9e: 071b lsls r3, r3, #28 - 8004fa0: 4964 ldr r1, [pc, #400] @ (8005134 ) - 8004fa2: 4313 orrs r3, r2 - 8004fa4: f8c1 3084 str.w r3, [r1, #132] @ 0x84 + 8004fe8: 687b ldr r3, [r7, #4] + 8004fea: 685b ldr r3, [r3, #4] + 8004fec: 019a lsls r2, r3, #6 + 8004fee: 687b ldr r3, [r7, #4] + 8004ff0: 68db ldr r3, [r3, #12] + 8004ff2: 061b lsls r3, r3, #24 + 8004ff4: 431a orrs r2, r3 + 8004ff6: 687b ldr r3, [r7, #4] + 8004ff8: 689b ldr r3, [r3, #8] + 8004ffa: 071b lsls r3, r3, #28 + 8004ffc: 4964 ldr r1, [pc, #400] @ (8005190 ) + 8004ffe: 4313 orrs r3, r2 + 8005000: f8c1 3084 str.w r3, [r1, #132] @ 0x84 PeriphClkInit->PLLI2S.PLLI2SR); } /* Enable the PLLI2S */ __HAL_RCC_PLLI2S_ENABLE(); - 8004fa8: 4b61 ldr r3, [pc, #388] @ (8005130 ) - 8004faa: 2201 movs r2, #1 - 8004fac: 601a str r2, [r3, #0] + 8005004: 4b61 ldr r3, [pc, #388] @ (800518c ) + 8005006: 2201 movs r2, #1 + 8005008: 601a str r2, [r3, #0] /* Get tick */ tickstart = HAL_GetTick(); - 8004fae: f7fc fb47 bl 8001640 - 8004fb2: 6178 str r0, [r7, #20] + 800500a: f7fc fb6b bl 80016e4 + 800500e: 6178 str r0, [r7, #20] /* Wait till PLLI2S is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET) - 8004fb4: e008 b.n 8004fc8 + 8005010: e008 b.n 8005024 { if ((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE) - 8004fb6: f7fc fb43 bl 8001640 - 8004fba: 4602 mov r2, r0 - 8004fbc: 697b ldr r3, [r7, #20] - 8004fbe: 1ad3 subs r3, r2, r3 - 8004fc0: 2b02 cmp r3, #2 - 8004fc2: d901 bls.n 8004fc8 + 8005012: f7fc fb67 bl 80016e4 + 8005016: 4602 mov r2, r0 + 8005018: 697b ldr r3, [r7, #20] + 800501a: 1ad3 subs r3, r2, r3 + 800501c: 2b02 cmp r3, #2 + 800501e: d901 bls.n 8005024 { /* return in case of Timeout detected */ return HAL_TIMEOUT; - 8004fc4: 2303 movs r3, #3 - 8004fc6: e129 b.n 800521c + 8005020: 2303 movs r3, #3 + 8005022: e129 b.n 8005278 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET) - 8004fc8: 4b5a ldr r3, [pc, #360] @ (8005134 ) - 8004fca: 681b ldr r3, [r3, #0] - 8004fcc: f003 6300 and.w r3, r3, #134217728 @ 0x8000000 - 8004fd0: 2b00 cmp r3, #0 - 8004fd2: d0f0 beq.n 8004fb6 + 8005024: 4b5a ldr r3, [pc, #360] @ (8005190 ) + 8005026: 681b ldr r3, [r3, #0] + 8005028: f003 6300 and.w r3, r3, #134217728 @ 0x8000000 + 800502c: 2b00 cmp r3, #0 + 800502e: d0f0 beq.n 8005012 /*----------------------- SAI/LTDC Configuration (PLLSAI) ------------------*/ /*----------------------- Common configuration SAI/LTDC --------------------*/ /* In Case of SAI or LTDC Clock Configuration through PLLSAI, PLLSAIN division factor is common parameters for both peripherals */ if ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI_PLLSAI) == RCC_PERIPHCLK_SAI_PLLSAI) || - 8004fd4: 687b ldr r3, [r7, #4] - 8004fd6: 681b ldr r3, [r3, #0] - 8004fd8: f003 0304 and.w r3, r3, #4 - 8004fdc: 2b00 cmp r3, #0 - 8004fde: d105 bne.n 8004fec + 8005030: 687b ldr r3, [r7, #4] + 8005032: 681b ldr r3, [r3, #0] + 8005034: f003 0304 and.w r3, r3, #4 + 8005038: 2b00 cmp r3, #0 + 800503a: d105 bne.n 8005048 (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LTDC) == RCC_PERIPHCLK_LTDC)) - 8004fe0: 687b ldr r3, [r7, #4] - 8004fe2: 681b ldr r3, [r3, #0] - 8004fe4: f003 0308 and.w r3, r3, #8 + 800503c: 687b ldr r3, [r7, #4] + 800503e: 681b ldr r3, [r3, #0] + 8005040: f003 0308 and.w r3, r3, #8 if ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI_PLLSAI) == RCC_PERIPHCLK_SAI_PLLSAI) || - 8004fe8: 2b00 cmp r3, #0 - 8004fea: d079 beq.n 80050e0 + 8005044: 2b00 cmp r3, #0 + 8005046: d079 beq.n 800513c { /* Check the PLLSAI division factors */ assert_param(IS_RCC_PLLSAIN_VALUE(PeriphClkInit->PLLSAI.PLLSAIN)); /* Disable PLLSAI Clock */ __HAL_RCC_PLLSAI_DISABLE(); - 8004fec: 4b52 ldr r3, [pc, #328] @ (8005138 ) - 8004fee: 2200 movs r2, #0 - 8004ff0: 601a str r2, [r3, #0] + 8005048: 4b52 ldr r3, [pc, #328] @ (8005194 ) + 800504a: 2200 movs r2, #0 + 800504c: 601a str r2, [r3, #0] /* Get tick */ tickstart = HAL_GetTick(); - 8004ff2: f7fc fb25 bl 8001640 - 8004ff6: 6178 str r0, [r7, #20] + 800504e: f7fc fb49 bl 80016e4 + 8005052: 6178 str r0, [r7, #20] /* Wait till PLLSAI is disabled */ while (__HAL_RCC_PLLSAI_GET_FLAG() != RESET) - 8004ff8: e008 b.n 800500c + 8005054: e008 b.n 8005068 { if ((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE) - 8004ffa: f7fc fb21 bl 8001640 - 8004ffe: 4602 mov r2, r0 - 8005000: 697b ldr r3, [r7, #20] - 8005002: 1ad3 subs r3, r2, r3 - 8005004: 2b02 cmp r3, #2 - 8005006: d901 bls.n 800500c + 8005056: f7fc fb45 bl 80016e4 + 800505a: 4602 mov r2, r0 + 800505c: 697b ldr r3, [r7, #20] + 800505e: 1ad3 subs r3, r2, r3 + 8005060: 2b02 cmp r3, #2 + 8005062: d901 bls.n 8005068 { /* return in case of Timeout detected */ return HAL_TIMEOUT; - 8005008: 2303 movs r3, #3 - 800500a: e107 b.n 800521c + 8005064: 2303 movs r3, #3 + 8005066: e107 b.n 8005278 while (__HAL_RCC_PLLSAI_GET_FLAG() != RESET) - 800500c: 4b49 ldr r3, [pc, #292] @ (8005134 ) - 800500e: 681b ldr r3, [r3, #0] - 8005010: f003 5300 and.w r3, r3, #536870912 @ 0x20000000 - 8005014: f1b3 5f00 cmp.w r3, #536870912 @ 0x20000000 - 8005018: d0ef beq.n 8004ffa + 8005068: 4b49 ldr r3, [pc, #292] @ (8005190 ) + 800506a: 681b ldr r3, [r3, #0] + 800506c: f003 5300 and.w r3, r3, #536870912 @ 0x20000000 + 8005070: f1b3 5f00 cmp.w r3, #536870912 @ 0x20000000 + 8005074: d0ef beq.n 8005056 } /*---------------------------- SAI configuration -------------------------*/ /* In Case of SAI Clock Configuration through PLLSAI, PLLSAIQ and PLLSAI_DIVQ must be added only for SAI configuration */ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI_PLLSAI) == (RCC_PERIPHCLK_SAI_PLLSAI)) - 800501a: 687b ldr r3, [r7, #4] - 800501c: 681b ldr r3, [r3, #0] - 800501e: f003 0304 and.w r3, r3, #4 - 8005022: 2b00 cmp r3, #0 - 8005024: d020 beq.n 8005068 + 8005076: 687b ldr r3, [r7, #4] + 8005078: 681b ldr r3, [r3, #0] + 800507a: f003 0304 and.w r3, r3, #4 + 800507e: 2b00 cmp r3, #0 + 8005080: d020 beq.n 80050c4 { assert_param(IS_RCC_PLLSAIQ_VALUE(PeriphClkInit->PLLSAI.PLLSAIQ)); assert_param(IS_RCC_PLLSAI_DIVQ_VALUE(PeriphClkInit->PLLSAIDivQ)); /* Read PLLSAIR value from PLLSAICFGR register (this value is not need for SAI configuration) */ tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIR) >> RCC_PLLSAICFGR_PLLSAIR_Pos); - 8005026: 4b43 ldr r3, [pc, #268] @ (8005134 ) - 8005028: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 - 800502c: 0f1b lsrs r3, r3, #28 - 800502e: f003 0307 and.w r3, r3, #7 - 8005032: 613b str r3, [r7, #16] + 8005082: 4b43 ldr r3, [pc, #268] @ (8005190 ) + 8005084: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 + 8005088: 0f1b lsrs r3, r3, #28 + 800508a: f003 0307 and.w r3, r3, #7 + 800508e: 613b str r3, [r7, #16] /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */ /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */ /* SAI_CLK(first level) = PLLSAI_VCO Output/PLLSAIQ */ __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN, PeriphClkInit->PLLSAI.PLLSAIQ, tmpreg1); - 8005034: 687b ldr r3, [r7, #4] - 8005036: 691b ldr r3, [r3, #16] - 8005038: 019a lsls r2, r3, #6 - 800503a: 687b ldr r3, [r7, #4] - 800503c: 695b ldr r3, [r3, #20] - 800503e: 061b lsls r3, r3, #24 - 8005040: 431a orrs r2, r3 - 8005042: 693b ldr r3, [r7, #16] - 8005044: 071b lsls r3, r3, #28 - 8005046: 493b ldr r1, [pc, #236] @ (8005134 ) - 8005048: 4313 orrs r3, r2 - 800504a: f8c1 3088 str.w r3, [r1, #136] @ 0x88 + 8005090: 687b ldr r3, [r7, #4] + 8005092: 691b ldr r3, [r3, #16] + 8005094: 019a lsls r2, r3, #6 + 8005096: 687b ldr r3, [r7, #4] + 8005098: 695b ldr r3, [r3, #20] + 800509a: 061b lsls r3, r3, #24 + 800509c: 431a orrs r2, r3 + 800509e: 693b ldr r3, [r7, #16] + 80050a0: 071b lsls r3, r3, #28 + 80050a2: 493b ldr r1, [pc, #236] @ (8005190 ) + 80050a4: 4313 orrs r3, r2 + 80050a6: f8c1 3088 str.w r3, [r1, #136] @ 0x88 /* SAI_CLK_x = SAI_CLK(first level)/PLLSAIDIVQ */ __HAL_RCC_PLLSAI_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->PLLSAIDivQ); - 800504e: 4b39 ldr r3, [pc, #228] @ (8005134 ) - 8005050: f8d3 308c ldr.w r3, [r3, #140] @ 0x8c - 8005054: f423 52f8 bic.w r2, r3, #7936 @ 0x1f00 - 8005058: 687b ldr r3, [r7, #4] - 800505a: 6a1b ldr r3, [r3, #32] - 800505c: 3b01 subs r3, #1 - 800505e: 021b lsls r3, r3, #8 - 8005060: 4934 ldr r1, [pc, #208] @ (8005134 ) - 8005062: 4313 orrs r3, r2 - 8005064: f8c1 308c str.w r3, [r1, #140] @ 0x8c + 80050aa: 4b39 ldr r3, [pc, #228] @ (8005190 ) + 80050ac: f8d3 308c ldr.w r3, [r3, #140] @ 0x8c + 80050b0: f423 52f8 bic.w r2, r3, #7936 @ 0x1f00 + 80050b4: 687b ldr r3, [r7, #4] + 80050b6: 6a1b ldr r3, [r3, #32] + 80050b8: 3b01 subs r3, #1 + 80050ba: 021b lsls r3, r3, #8 + 80050bc: 4934 ldr r1, [pc, #208] @ (8005190 ) + 80050be: 4313 orrs r3, r2 + 80050c0: f8c1 308c str.w r3, [r1, #140] @ 0x8c } /*---------------------------- LTDC configuration ------------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LTDC) == (RCC_PERIPHCLK_LTDC)) - 8005068: 687b ldr r3, [r7, #4] - 800506a: 681b ldr r3, [r3, #0] - 800506c: f003 0308 and.w r3, r3, #8 - 8005070: 2b00 cmp r3, #0 - 8005072: d01e beq.n 80050b2 + 80050c4: 687b ldr r3, [r7, #4] + 80050c6: 681b ldr r3, [r3, #0] + 80050c8: f003 0308 and.w r3, r3, #8 + 80050cc: 2b00 cmp r3, #0 + 80050ce: d01e beq.n 800510e { assert_param(IS_RCC_PLLSAIR_VALUE(PeriphClkInit->PLLSAI.PLLSAIR)); assert_param(IS_RCC_PLLSAI_DIVR_VALUE(PeriphClkInit->PLLSAIDivR)); /* Read PLLSAIR value from PLLSAICFGR register (this value is not need for SAI configuration) */ tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos); - 8005074: 4b2f ldr r3, [pc, #188] @ (8005134 ) - 8005076: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 - 800507a: 0e1b lsrs r3, r3, #24 - 800507c: f003 030f and.w r3, r3, #15 - 8005080: 613b str r3, [r7, #16] + 80050d0: 4b2f ldr r3, [pc, #188] @ (8005190 ) + 80050d2: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 + 80050d6: 0e1b lsrs r3, r3, #24 + 80050d8: f003 030f and.w r3, r3, #15 + 80050dc: 613b str r3, [r7, #16] /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */ /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */ /* LTDC_CLK(first level) = PLLSAI_VCO Output/PLLSAIR */ __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN, tmpreg1, PeriphClkInit->PLLSAI.PLLSAIR); - 8005082: 687b ldr r3, [r7, #4] - 8005084: 691b ldr r3, [r3, #16] - 8005086: 019a lsls r2, r3, #6 - 8005088: 693b ldr r3, [r7, #16] - 800508a: 061b lsls r3, r3, #24 - 800508c: 431a orrs r2, r3 - 800508e: 687b ldr r3, [r7, #4] - 8005090: 699b ldr r3, [r3, #24] - 8005092: 071b lsls r3, r3, #28 - 8005094: 4927 ldr r1, [pc, #156] @ (8005134 ) - 8005096: 4313 orrs r3, r2 - 8005098: f8c1 3088 str.w r3, [r1, #136] @ 0x88 + 80050de: 687b ldr r3, [r7, #4] + 80050e0: 691b ldr r3, [r3, #16] + 80050e2: 019a lsls r2, r3, #6 + 80050e4: 693b ldr r3, [r7, #16] + 80050e6: 061b lsls r3, r3, #24 + 80050e8: 431a orrs r2, r3 + 80050ea: 687b ldr r3, [r7, #4] + 80050ec: 699b ldr r3, [r3, #24] + 80050ee: 071b lsls r3, r3, #28 + 80050f0: 4927 ldr r1, [pc, #156] @ (8005190 ) + 80050f2: 4313 orrs r3, r2 + 80050f4: f8c1 3088 str.w r3, [r1, #136] @ 0x88 /* LTDC_CLK = LTDC_CLK(first level)/PLLSAIDIVR */ __HAL_RCC_PLLSAI_PLLSAICLKDIVR_CONFIG(PeriphClkInit->PLLSAIDivR); - 800509c: 4b25 ldr r3, [pc, #148] @ (8005134 ) - 800509e: f8d3 308c ldr.w r3, [r3, #140] @ 0x8c - 80050a2: f423 3240 bic.w r2, r3, #196608 @ 0x30000 - 80050a6: 687b ldr r3, [r7, #4] - 80050a8: 6a5b ldr r3, [r3, #36] @ 0x24 - 80050aa: 4922 ldr r1, [pc, #136] @ (8005134 ) - 80050ac: 4313 orrs r3, r2 - 80050ae: f8c1 308c str.w r3, [r1, #140] @ 0x8c + 80050f8: 4b25 ldr r3, [pc, #148] @ (8005190 ) + 80050fa: f8d3 308c ldr.w r3, [r3, #140] @ 0x8c + 80050fe: f423 3240 bic.w r2, r3, #196608 @ 0x30000 + 8005102: 687b ldr r3, [r7, #4] + 8005104: 6a5b ldr r3, [r3, #36] @ 0x24 + 8005106: 4922 ldr r1, [pc, #136] @ (8005190 ) + 8005108: 4313 orrs r3, r2 + 800510a: f8c1 308c str.w r3, [r1, #140] @ 0x8c } /* Enable PLLSAI Clock */ __HAL_RCC_PLLSAI_ENABLE(); - 80050b2: 4b21 ldr r3, [pc, #132] @ (8005138 ) - 80050b4: 2201 movs r2, #1 - 80050b6: 601a str r2, [r3, #0] + 800510e: 4b21 ldr r3, [pc, #132] @ (8005194 ) + 8005110: 2201 movs r2, #1 + 8005112: 601a str r2, [r3, #0] /* Get tick */ tickstart = HAL_GetTick(); - 80050b8: f7fc fac2 bl 8001640 - 80050bc: 6178 str r0, [r7, #20] + 8005114: f7fc fae6 bl 80016e4 + 8005118: 6178 str r0, [r7, #20] /* Wait till PLLSAI is ready */ while (__HAL_RCC_PLLSAI_GET_FLAG() == RESET) - 80050be: e008 b.n 80050d2 + 800511a: e008 b.n 800512e { if ((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE) - 80050c0: f7fc fabe bl 8001640 - 80050c4: 4602 mov r2, r0 - 80050c6: 697b ldr r3, [r7, #20] - 80050c8: 1ad3 subs r3, r2, r3 - 80050ca: 2b02 cmp r3, #2 - 80050cc: d901 bls.n 80050d2 + 800511c: f7fc fae2 bl 80016e4 + 8005120: 4602 mov r2, r0 + 8005122: 697b ldr r3, [r7, #20] + 8005124: 1ad3 subs r3, r2, r3 + 8005126: 2b02 cmp r3, #2 + 8005128: d901 bls.n 800512e { /* return in case of Timeout detected */ return HAL_TIMEOUT; - 80050ce: 2303 movs r3, #3 - 80050d0: e0a4 b.n 800521c + 800512a: 2303 movs r3, #3 + 800512c: e0a4 b.n 8005278 while (__HAL_RCC_PLLSAI_GET_FLAG() == RESET) - 80050d2: 4b18 ldr r3, [pc, #96] @ (8005134 ) - 80050d4: 681b ldr r3, [r3, #0] - 80050d6: f003 5300 and.w r3, r3, #536870912 @ 0x20000000 - 80050da: f1b3 5f00 cmp.w r3, #536870912 @ 0x20000000 - 80050de: d1ef bne.n 80050c0 + 800512e: 4b18 ldr r3, [pc, #96] @ (8005190 ) + 8005130: 681b ldr r3, [r3, #0] + 8005132: f003 5300 and.w r3, r3, #536870912 @ 0x20000000 + 8005136: f1b3 5f00 cmp.w r3, #536870912 @ 0x20000000 + 800513a: d1ef bne.n 800511c } } /*--------------------------------------------------------------------------*/ /*---------------------------- RTC configuration ---------------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == (RCC_PERIPHCLK_RTC)) - 80050e0: 687b ldr r3, [r7, #4] - 80050e2: 681b ldr r3, [r3, #0] - 80050e4: f003 0320 and.w r3, r3, #32 - 80050e8: 2b00 cmp r3, #0 - 80050ea: f000 808b beq.w 8005204 + 800513c: 687b ldr r3, [r7, #4] + 800513e: 681b ldr r3, [r3, #0] + 8005140: f003 0320 and.w r3, r3, #32 + 8005144: 2b00 cmp r3, #0 + 8005146: f000 808b beq.w 8005260 { /* Check for RTC Parameters used to output RTCCLK */ assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection)); /* Enable Power Clock*/ __HAL_RCC_PWR_CLK_ENABLE(); - 80050ee: 2300 movs r3, #0 - 80050f0: 60fb str r3, [r7, #12] - 80050f2: 4b10 ldr r3, [pc, #64] @ (8005134 ) - 80050f4: 6c1b ldr r3, [r3, #64] @ 0x40 - 80050f6: 4a0f ldr r2, [pc, #60] @ (8005134 ) - 80050f8: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 80050fc: 6413 str r3, [r2, #64] @ 0x40 - 80050fe: 4b0d ldr r3, [pc, #52] @ (8005134 ) - 8005100: 6c1b ldr r3, [r3, #64] @ 0x40 - 8005102: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 8005106: 60fb str r3, [r7, #12] - 8005108: 68fb ldr r3, [r7, #12] + 800514a: 2300 movs r3, #0 + 800514c: 60fb str r3, [r7, #12] + 800514e: 4b10 ldr r3, [pc, #64] @ (8005190 ) + 8005150: 6c1b ldr r3, [r3, #64] @ 0x40 + 8005152: 4a0f ldr r2, [pc, #60] @ (8005190 ) + 8005154: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8005158: 6413 str r3, [r2, #64] @ 0x40 + 800515a: 4b0d ldr r3, [pc, #52] @ (8005190 ) + 800515c: 6c1b ldr r3, [r3, #64] @ 0x40 + 800515e: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8005162: 60fb str r3, [r7, #12] + 8005164: 68fb ldr r3, [r7, #12] /* Enable write access to Backup domain */ PWR->CR |= PWR_CR_DBP; - 800510a: 4b0c ldr r3, [pc, #48] @ (800513c ) - 800510c: 681b ldr r3, [r3, #0] - 800510e: 4a0b ldr r2, [pc, #44] @ (800513c ) - 8005110: f443 7380 orr.w r3, r3, #256 @ 0x100 - 8005114: 6013 str r3, [r2, #0] + 8005166: 4b0c ldr r3, [pc, #48] @ (8005198 ) + 8005168: 681b ldr r3, [r3, #0] + 800516a: 4a0b ldr r2, [pc, #44] @ (8005198 ) + 800516c: f443 7380 orr.w r3, r3, #256 @ 0x100 + 8005170: 6013 str r3, [r2, #0] /* Get tick */ tickstart = HAL_GetTick(); - 8005116: f7fc fa93 bl 8001640 - 800511a: 6178 str r0, [r7, #20] + 8005172: f7fc fab7 bl 80016e4 + 8005176: 6178 str r0, [r7, #20] while ((PWR->CR & PWR_CR_DBP) == RESET) - 800511c: e010 b.n 8005140 + 8005178: e010 b.n 800519c { if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 800511e: f7fc fa8f bl 8001640 - 8005122: 4602 mov r2, r0 - 8005124: 697b ldr r3, [r7, #20] - 8005126: 1ad3 subs r3, r2, r3 - 8005128: 2b02 cmp r3, #2 - 800512a: d909 bls.n 8005140 + 800517a: f7fc fab3 bl 80016e4 + 800517e: 4602 mov r2, r0 + 8005180: 697b ldr r3, [r7, #20] + 8005182: 1ad3 subs r3, r2, r3 + 8005184: 2b02 cmp r3, #2 + 8005186: d909 bls.n 800519c { return HAL_TIMEOUT; - 800512c: 2303 movs r3, #3 - 800512e: e075 b.n 800521c - 8005130: 42470068 .word 0x42470068 - 8005134: 40023800 .word 0x40023800 - 8005138: 42470070 .word 0x42470070 - 800513c: 40007000 .word 0x40007000 + 8005188: 2303 movs r3, #3 + 800518a: e075 b.n 8005278 + 800518c: 42470068 .word 0x42470068 + 8005190: 40023800 .word 0x40023800 + 8005194: 42470070 .word 0x42470070 + 8005198: 40007000 .word 0x40007000 while ((PWR->CR & PWR_CR_DBP) == RESET) - 8005140: 4b38 ldr r3, [pc, #224] @ (8005224 ) - 8005142: 681b ldr r3, [r3, #0] - 8005144: f403 7380 and.w r3, r3, #256 @ 0x100 - 8005148: 2b00 cmp r3, #0 - 800514a: d0e8 beq.n 800511e + 800519c: 4b38 ldr r3, [pc, #224] @ (8005280 ) + 800519e: 681b ldr r3, [r3, #0] + 80051a0: f403 7380 and.w r3, r3, #256 @ 0x100 + 80051a4: 2b00 cmp r3, #0 + 80051a6: d0e8 beq.n 800517a } } /* Reset the Backup domain only if the RTC Clock source selection is modified from reset value */ tmpreg1 = (RCC->BDCR & RCC_BDCR_RTCSEL); - 800514c: 4b36 ldr r3, [pc, #216] @ (8005228 ) - 800514e: 6f1b ldr r3, [r3, #112] @ 0x70 - 8005150: f403 7340 and.w r3, r3, #768 @ 0x300 - 8005154: 613b str r3, [r7, #16] + 80051a8: 4b36 ldr r3, [pc, #216] @ (8005284 ) + 80051aa: 6f1b ldr r3, [r3, #112] @ 0x70 + 80051ac: f403 7340 and.w r3, r3, #768 @ 0x300 + 80051b0: 613b str r3, [r7, #16] if ((tmpreg1 != 0x00000000U) && ((tmpreg1) != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL))) - 8005156: 693b ldr r3, [r7, #16] - 8005158: 2b00 cmp r3, #0 - 800515a: d02f beq.n 80051bc - 800515c: 687b ldr r3, [r7, #4] - 800515e: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005160: f403 7340 and.w r3, r3, #768 @ 0x300 - 8005164: 693a ldr r2, [r7, #16] - 8005166: 429a cmp r2, r3 - 8005168: d028 beq.n 80051bc + 80051b2: 693b ldr r3, [r7, #16] + 80051b4: 2b00 cmp r3, #0 + 80051b6: d02f beq.n 8005218 + 80051b8: 687b ldr r3, [r7, #4] + 80051ba: 6a9b ldr r3, [r3, #40] @ 0x28 + 80051bc: f403 7340 and.w r3, r3, #768 @ 0x300 + 80051c0: 693a ldr r2, [r7, #16] + 80051c2: 429a cmp r2, r3 + 80051c4: d028 beq.n 8005218 { /* Store the content of BDCR register before the reset of Backup Domain */ tmpreg1 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL)); - 800516a: 4b2f ldr r3, [pc, #188] @ (8005228 ) - 800516c: 6f1b ldr r3, [r3, #112] @ 0x70 - 800516e: f423 7340 bic.w r3, r3, #768 @ 0x300 - 8005172: 613b str r3, [r7, #16] + 80051c6: 4b2f ldr r3, [pc, #188] @ (8005284 ) + 80051c8: 6f1b ldr r3, [r3, #112] @ 0x70 + 80051ca: f423 7340 bic.w r3, r3, #768 @ 0x300 + 80051ce: 613b str r3, [r7, #16] /* RTC Clock selection can be changed only if the Backup Domain is reset */ __HAL_RCC_BACKUPRESET_FORCE(); - 8005174: 4b2d ldr r3, [pc, #180] @ (800522c ) - 8005176: 2201 movs r2, #1 - 8005178: 601a str r2, [r3, #0] + 80051d0: 4b2d ldr r3, [pc, #180] @ (8005288 ) + 80051d2: 2201 movs r2, #1 + 80051d4: 601a str r2, [r3, #0] __HAL_RCC_BACKUPRESET_RELEASE(); - 800517a: 4b2c ldr r3, [pc, #176] @ (800522c ) - 800517c: 2200 movs r2, #0 - 800517e: 601a str r2, [r3, #0] + 80051d6: 4b2c ldr r3, [pc, #176] @ (8005288 ) + 80051d8: 2200 movs r2, #0 + 80051da: 601a str r2, [r3, #0] /* Restore the Content of BDCR register */ RCC->BDCR = tmpreg1; - 8005180: 4a29 ldr r2, [pc, #164] @ (8005228 ) - 8005182: 693b ldr r3, [r7, #16] - 8005184: 6713 str r3, [r2, #112] @ 0x70 + 80051dc: 4a29 ldr r2, [pc, #164] @ (8005284 ) + 80051de: 693b ldr r3, [r7, #16] + 80051e0: 6713 str r3, [r2, #112] @ 0x70 /* Wait for LSE reactivation if LSE was enable prior to Backup Domain reset */ if (HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSEON)) - 8005186: 4b28 ldr r3, [pc, #160] @ (8005228 ) - 8005188: 6f1b ldr r3, [r3, #112] @ 0x70 - 800518a: f003 0301 and.w r3, r3, #1 - 800518e: 2b01 cmp r3, #1 - 8005190: d114 bne.n 80051bc + 80051e2: 4b28 ldr r3, [pc, #160] @ (8005284 ) + 80051e4: 6f1b ldr r3, [r3, #112] @ 0x70 + 80051e6: f003 0301 and.w r3, r3, #1 + 80051ea: 2b01 cmp r3, #1 + 80051ec: d114 bne.n 8005218 { /* Get tick */ tickstart = HAL_GetTick(); - 8005192: f7fc fa55 bl 8001640 - 8005196: 6178 str r0, [r7, #20] + 80051ee: f7fc fa79 bl 80016e4 + 80051f2: 6178 str r0, [r7, #20] /* Wait till LSE is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 8005198: e00a b.n 80051b0 + 80051f4: e00a b.n 800520c { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 800519a: f7fc fa51 bl 8001640 - 800519e: 4602 mov r2, r0 - 80051a0: 697b ldr r3, [r7, #20] - 80051a2: 1ad3 subs r3, r2, r3 - 80051a4: f241 3288 movw r2, #5000 @ 0x1388 - 80051a8: 4293 cmp r3, r2 - 80051aa: d901 bls.n 80051b0 + 80051f6: f7fc fa75 bl 80016e4 + 80051fa: 4602 mov r2, r0 + 80051fc: 697b ldr r3, [r7, #20] + 80051fe: 1ad3 subs r3, r2, r3 + 8005200: f241 3288 movw r2, #5000 @ 0x1388 + 8005204: 4293 cmp r3, r2 + 8005206: d901 bls.n 800520c { return HAL_TIMEOUT; - 80051ac: 2303 movs r3, #3 - 80051ae: e035 b.n 800521c + 8005208: 2303 movs r3, #3 + 800520a: e035 b.n 8005278 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 80051b0: 4b1d ldr r3, [pc, #116] @ (8005228 ) - 80051b2: 6f1b ldr r3, [r3, #112] @ 0x70 - 80051b4: f003 0302 and.w r3, r3, #2 - 80051b8: 2b00 cmp r3, #0 - 80051ba: d0ee beq.n 800519a + 800520c: 4b1d ldr r3, [pc, #116] @ (8005284 ) + 800520e: 6f1b ldr r3, [r3, #112] @ 0x70 + 8005210: f003 0302 and.w r3, r3, #2 + 8005214: 2b00 cmp r3, #0 + 8005216: d0ee beq.n 80051f6 } } } } __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); - 80051bc: 687b ldr r3, [r7, #4] - 80051be: 6a9b ldr r3, [r3, #40] @ 0x28 - 80051c0: f403 7340 and.w r3, r3, #768 @ 0x300 - 80051c4: f5b3 7f40 cmp.w r3, #768 @ 0x300 - 80051c8: d10d bne.n 80051e6 - 80051ca: 4b17 ldr r3, [pc, #92] @ (8005228 ) - 80051cc: 689b ldr r3, [r3, #8] - 80051ce: f423 12f8 bic.w r2, r3, #2031616 @ 0x1f0000 - 80051d2: 687b ldr r3, [r7, #4] - 80051d4: 6a9b ldr r3, [r3, #40] @ 0x28 - 80051d6: f023 4370 bic.w r3, r3, #4026531840 @ 0xf0000000 - 80051da: f423 7340 bic.w r3, r3, #768 @ 0x300 - 80051de: 4912 ldr r1, [pc, #72] @ (8005228 ) - 80051e0: 4313 orrs r3, r2 - 80051e2: 608b str r3, [r1, #8] - 80051e4: e005 b.n 80051f2 - 80051e6: 4b10 ldr r3, [pc, #64] @ (8005228 ) - 80051e8: 689b ldr r3, [r3, #8] - 80051ea: 4a0f ldr r2, [pc, #60] @ (8005228 ) - 80051ec: f423 13f8 bic.w r3, r3, #2031616 @ 0x1f0000 - 80051f0: 6093 str r3, [r2, #8] - 80051f2: 4b0d ldr r3, [pc, #52] @ (8005228 ) - 80051f4: 6f1a ldr r2, [r3, #112] @ 0x70 - 80051f6: 687b ldr r3, [r7, #4] - 80051f8: 6a9b ldr r3, [r3, #40] @ 0x28 - 80051fa: f3c3 030b ubfx r3, r3, #0, #12 - 80051fe: 490a ldr r1, [pc, #40] @ (8005228 ) - 8005200: 4313 orrs r3, r2 - 8005202: 670b str r3, [r1, #112] @ 0x70 + 8005218: 687b ldr r3, [r7, #4] + 800521a: 6a9b ldr r3, [r3, #40] @ 0x28 + 800521c: f403 7340 and.w r3, r3, #768 @ 0x300 + 8005220: f5b3 7f40 cmp.w r3, #768 @ 0x300 + 8005224: d10d bne.n 8005242 + 8005226: 4b17 ldr r3, [pc, #92] @ (8005284 ) + 8005228: 689b ldr r3, [r3, #8] + 800522a: f423 12f8 bic.w r2, r3, #2031616 @ 0x1f0000 + 800522e: 687b ldr r3, [r7, #4] + 8005230: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005232: f023 4370 bic.w r3, r3, #4026531840 @ 0xf0000000 + 8005236: f423 7340 bic.w r3, r3, #768 @ 0x300 + 800523a: 4912 ldr r1, [pc, #72] @ (8005284 ) + 800523c: 4313 orrs r3, r2 + 800523e: 608b str r3, [r1, #8] + 8005240: e005 b.n 800524e + 8005242: 4b10 ldr r3, [pc, #64] @ (8005284 ) + 8005244: 689b ldr r3, [r3, #8] + 8005246: 4a0f ldr r2, [pc, #60] @ (8005284 ) + 8005248: f423 13f8 bic.w r3, r3, #2031616 @ 0x1f0000 + 800524c: 6093 str r3, [r2, #8] + 800524e: 4b0d ldr r3, [pc, #52] @ (8005284 ) + 8005250: 6f1a ldr r2, [r3, #112] @ 0x70 + 8005252: 687b ldr r3, [r7, #4] + 8005254: 6a9b ldr r3, [r3, #40] @ 0x28 + 8005256: f3c3 030b ubfx r3, r3, #0, #12 + 800525a: 490a ldr r1, [pc, #40] @ (8005284 ) + 800525c: 4313 orrs r3, r2 + 800525e: 670b str r3, [r1, #112] @ 0x70 } /*--------------------------------------------------------------------------*/ /*---------------------------- TIM configuration ---------------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM) == (RCC_PERIPHCLK_TIM)) - 8005204: 687b ldr r3, [r7, #4] - 8005206: 681b ldr r3, [r3, #0] - 8005208: f003 0310 and.w r3, r3, #16 - 800520c: 2b00 cmp r3, #0 - 800520e: d004 beq.n 800521a + 8005260: 687b ldr r3, [r7, #4] + 8005262: 681b ldr r3, [r3, #0] + 8005264: f003 0310 and.w r3, r3, #16 + 8005268: 2b00 cmp r3, #0 + 800526a: d004 beq.n 8005276 { __HAL_RCC_TIMCLKPRESCALER(PeriphClkInit->TIMPresSelection); - 8005210: 687b ldr r3, [r7, #4] - 8005212: f893 202c ldrb.w r2, [r3, #44] @ 0x2c - 8005216: 4b06 ldr r3, [pc, #24] @ (8005230 ) - 8005218: 601a str r2, [r3, #0] + 800526c: 687b ldr r3, [r7, #4] + 800526e: f893 202c ldrb.w r2, [r3, #44] @ 0x2c + 8005272: 4b06 ldr r3, [pc, #24] @ (800528c ) + 8005274: 601a str r2, [r3, #0] } return HAL_OK; - 800521a: 2300 movs r3, #0 + 8005276: 2300 movs r3, #0 } - 800521c: 4618 mov r0, r3 - 800521e: 3718 adds r7, #24 - 8005220: 46bd mov sp, r7 - 8005222: bd80 pop {r7, pc} - 8005224: 40007000 .word 0x40007000 - 8005228: 40023800 .word 0x40023800 - 800522c: 42470e40 .word 0x42470e40 - 8005230: 424711e0 .word 0x424711e0 + 8005278: 4618 mov r0, r3 + 800527a: 3718 adds r7, #24 + 800527c: 46bd mov sp, r7 + 800527e: bd80 pop {r7, pc} + 8005280: 40007000 .word 0x40007000 + 8005284: 40023800 .word 0x40023800 + 8005288: 42470e40 .word 0x42470e40 + 800528c: 424711e0 .word 0x424711e0 -08005234 : +08005290 : * the configuration information for SDRAM module. * @param Timing Pointer to SDRAM control timing structure * @retval HAL status */ HAL_StatusTypeDef HAL_SDRAM_Init(SDRAM_HandleTypeDef *hsdram, FMC_SDRAM_TimingTypeDef *Timing) { - 8005234: b580 push {r7, lr} - 8005236: b082 sub sp, #8 - 8005238: af00 add r7, sp, #0 - 800523a: 6078 str r0, [r7, #4] - 800523c: 6039 str r1, [r7, #0] + 8005290: b580 push {r7, lr} + 8005292: b082 sub sp, #8 + 8005294: af00 add r7, sp, #0 + 8005296: 6078 str r0, [r7, #4] + 8005298: 6039 str r1, [r7, #0] /* Check the SDRAM handle parameter */ if (hsdram == NULL) - 800523e: 687b ldr r3, [r7, #4] - 8005240: 2b00 cmp r3, #0 - 8005242: d101 bne.n 8005248 + 800529a: 687b ldr r3, [r7, #4] + 800529c: 2b00 cmp r3, #0 + 800529e: d101 bne.n 80052a4 { return HAL_ERROR; - 8005244: 2301 movs r3, #1 - 8005246: e025 b.n 8005294 + 80052a0: 2301 movs r3, #1 + 80052a2: e025 b.n 80052f0 } if (hsdram->State == HAL_SDRAM_STATE_RESET) - 8005248: 687b ldr r3, [r7, #4] - 800524a: f893 302c ldrb.w r3, [r3, #44] @ 0x2c - 800524e: b2db uxtb r3, r3 - 8005250: 2b00 cmp r3, #0 - 8005252: d106 bne.n 8005262 + 80052a4: 687b ldr r3, [r7, #4] + 80052a6: f893 302c ldrb.w r3, [r3, #44] @ 0x2c + 80052aa: b2db uxtb r3, r3 + 80052ac: 2b00 cmp r3, #0 + 80052ae: d106 bne.n 80052be { /* Allocate lock resource and initialize it */ hsdram->Lock = HAL_UNLOCKED; - 8005254: 687b ldr r3, [r7, #4] - 8005256: 2200 movs r2, #0 - 8005258: f883 202d strb.w r2, [r3, #45] @ 0x2d + 80052b0: 687b ldr r3, [r7, #4] + 80052b2: 2200 movs r2, #0 + 80052b4: f883 202d strb.w r2, [r3, #45] @ 0x2d /* Init the low level hardware */ hsdram->MspInitCallback(hsdram); #else /* Initialize the low level hardware (MSP) */ HAL_SDRAM_MspInit(hsdram); - 800525c: 6878 ldr r0, [r7, #4] - 800525e: f7fc f8b3 bl 80013c8 + 80052b8: 6878 ldr r0, [r7, #4] + 80052ba: f7fc f8d7 bl 800146c #endif /* USE_HAL_SDRAM_REGISTER_CALLBACKS */ } /* Initialize the SDRAM controller state */ hsdram->State = HAL_SDRAM_STATE_BUSY; - 8005262: 687b ldr r3, [r7, #4] - 8005264: 2202 movs r2, #2 - 8005266: f883 202c strb.w r2, [r3, #44] @ 0x2c + 80052be: 687b ldr r3, [r7, #4] + 80052c0: 2202 movs r2, #2 + 80052c2: f883 202c strb.w r2, [r3, #44] @ 0x2c /* Initialize SDRAM control Interface */ (void)FMC_SDRAM_Init(hsdram->Instance, &(hsdram->Init)); - 800526a: 687b ldr r3, [r7, #4] - 800526c: 681a ldr r2, [r3, #0] - 800526e: 687b ldr r3, [r7, #4] - 8005270: 3304 adds r3, #4 - 8005272: 4619 mov r1, r3 - 8005274: 4610 mov r0, r2 - 8005276: f000 ffcd bl 8006214 + 80052c6: 687b ldr r3, [r7, #4] + 80052c8: 681a ldr r2, [r3, #0] + 80052ca: 687b ldr r3, [r7, #4] + 80052cc: 3304 adds r3, #4 + 80052ce: 4619 mov r1, r3 + 80052d0: 4610 mov r0, r2 + 80052d2: f000 ffcd bl 8006270 /* Initialize SDRAM timing Interface */ (void)FMC_SDRAM_Timing_Init(hsdram->Instance, Timing, hsdram->Init.SDBank); - 800527a: 687b ldr r3, [r7, #4] - 800527c: 6818 ldr r0, [r3, #0] - 800527e: 687b ldr r3, [r7, #4] - 8005280: 685b ldr r3, [r3, #4] - 8005282: 461a mov r2, r3 - 8005284: 6839 ldr r1, [r7, #0] - 8005286: f001 f822 bl 80062ce + 80052d6: 687b ldr r3, [r7, #4] + 80052d8: 6818 ldr r0, [r3, #0] + 80052da: 687b ldr r3, [r7, #4] + 80052dc: 685b ldr r3, [r3, #4] + 80052de: 461a mov r2, r3 + 80052e0: 6839 ldr r1, [r7, #0] + 80052e2: f001 f822 bl 800632a /* Update the SDRAM controller state */ hsdram->State = HAL_SDRAM_STATE_READY; - 800528a: 687b ldr r3, [r7, #4] - 800528c: 2201 movs r2, #1 - 800528e: f883 202c strb.w r2, [r3, #44] @ 0x2c + 80052e6: 687b ldr r3, [r7, #4] + 80052e8: 2201 movs r2, #1 + 80052ea: f883 202c strb.w r2, [r3, #44] @ 0x2c return HAL_OK; - 8005292: 2300 movs r3, #0 + 80052ee: 2300 movs r3, #0 } - 8005294: 4618 mov r0, r3 - 8005296: 3708 adds r7, #8 - 8005298: 46bd mov sp, r7 - 800529a: bd80 pop {r7, pc} + 80052f0: 4618 mov r0, r3 + 80052f2: 3708 adds r7, #8 + 80052f4: 46bd mov sp, r7 + 80052f6: bd80 pop {r7, pc} -0800529c : +080052f8 : * @param hspi pointer to a SPI_HandleTypeDef structure that contains * the configuration information for SPI module. * @retval HAL status */ HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) { - 800529c: b580 push {r7, lr} - 800529e: b082 sub sp, #8 - 80052a0: af00 add r7, sp, #0 - 80052a2: 6078 str r0, [r7, #4] + 80052f8: b580 push {r7, lr} + 80052fa: b082 sub sp, #8 + 80052fc: af00 add r7, sp, #0 + 80052fe: 6078 str r0, [r7, #4] /* Check the SPI handle allocation */ if (hspi == NULL) - 80052a4: 687b ldr r3, [r7, #4] - 80052a6: 2b00 cmp r3, #0 - 80052a8: d101 bne.n 80052ae + 8005300: 687b ldr r3, [r7, #4] + 8005302: 2b00 cmp r3, #0 + 8005304: d101 bne.n 800530a { return HAL_ERROR; - 80052aa: 2301 movs r3, #1 - 80052ac: e07b b.n 80053a6 + 8005306: 2301 movs r3, #1 + 8005308: e07b b.n 8005402 assert_param(IS_SPI_DATASIZE(hspi->Init.DataSize)); assert_param(IS_SPI_NSS(hspi->Init.NSS)); assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) - 80052ae: 687b ldr r3, [r7, #4] - 80052b0: 6a5b ldr r3, [r3, #36] @ 0x24 - 80052b2: 2b00 cmp r3, #0 - 80052b4: d108 bne.n 80052c8 + 800530a: 687b ldr r3, [r7, #4] + 800530c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800530e: 2b00 cmp r3, #0 + 8005310: d108 bne.n 8005324 { assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); if (hspi->Init.Mode == SPI_MODE_MASTER) - 80052b6: 687b ldr r3, [r7, #4] - 80052b8: 685b ldr r3, [r3, #4] - 80052ba: f5b3 7f82 cmp.w r3, #260 @ 0x104 - 80052be: d009 beq.n 80052d4 + 8005312: 687b ldr r3, [r7, #4] + 8005314: 685b ldr r3, [r3, #4] + 8005316: f5b3 7f82 cmp.w r3, #260 @ 0x104 + 800531a: d009 beq.n 8005330 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); } else { /* Baudrate prescaler not use in Motoraola Slave mode. force to default value */ hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; - 80052c0: 687b ldr r3, [r7, #4] - 80052c2: 2200 movs r2, #0 - 80052c4: 61da str r2, [r3, #28] - 80052c6: e005 b.n 80052d4 + 800531c: 687b ldr r3, [r7, #4] + 800531e: 2200 movs r2, #0 + 8005320: 61da str r2, [r3, #28] + 8005322: e005 b.n 8005330 else { assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); /* Force polarity and phase to TI protocaol requirements */ hspi->Init.CLKPolarity = SPI_POLARITY_LOW; - 80052c8: 687b ldr r3, [r7, #4] - 80052ca: 2200 movs r2, #0 - 80052cc: 611a str r2, [r3, #16] + 8005324: 687b ldr r3, [r7, #4] + 8005326: 2200 movs r2, #0 + 8005328: 611a str r2, [r3, #16] hspi->Init.CLKPhase = SPI_PHASE_1EDGE; - 80052ce: 687b ldr r3, [r7, #4] - 80052d0: 2200 movs r2, #0 - 80052d2: 615a str r2, [r3, #20] + 800532a: 687b ldr r3, [r7, #4] + 800532c: 2200 movs r2, #0 + 800532e: 615a str r2, [r3, #20] if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) { assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); } #else hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; - 80052d4: 687b ldr r3, [r7, #4] - 80052d6: 2200 movs r2, #0 - 80052d8: 629a str r2, [r3, #40] @ 0x28 + 8005330: 687b ldr r3, [r7, #4] + 8005332: 2200 movs r2, #0 + 8005334: 629a str r2, [r3, #40] @ 0x28 #endif /* USE_SPI_CRC */ if (hspi->State == HAL_SPI_STATE_RESET) - 80052da: 687b ldr r3, [r7, #4] - 80052dc: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 - 80052e0: b2db uxtb r3, r3 - 80052e2: 2b00 cmp r3, #0 - 80052e4: d106 bne.n 80052f4 + 8005336: 687b ldr r3, [r7, #4] + 8005338: f893 3051 ldrb.w r3, [r3, #81] @ 0x51 + 800533c: b2db uxtb r3, r3 + 800533e: 2b00 cmp r3, #0 + 8005340: d106 bne.n 8005350 { /* Allocate lock resource and initialize it */ hspi->Lock = HAL_UNLOCKED; - 80052e6: 687b ldr r3, [r7, #4] - 80052e8: 2200 movs r2, #0 - 80052ea: f883 2050 strb.w r2, [r3, #80] @ 0x50 + 8005342: 687b ldr r3, [r7, #4] + 8005344: 2200 movs r2, #0 + 8005346: f883 2050 strb.w r2, [r3, #80] @ 0x50 /* Init the low level hardware : GPIO, CLOCK, NVIC... */ hspi->MspInitCallback(hspi); #else /* Init the low level hardware : GPIO, CLOCK, NVIC... */ HAL_SPI_MspInit(hspi); - 80052ee: 6878 ldr r0, [r7, #4] - 80052f0: f7fb ff26 bl 8001140 + 800534a: 6878 ldr r0, [r7, #4] + 800534c: f7fb ff4a bl 80011e4 #endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ } hspi->State = HAL_SPI_STATE_BUSY; - 80052f4: 687b ldr r3, [r7, #4] - 80052f6: 2202 movs r2, #2 - 80052f8: f883 2051 strb.w r2, [r3, #81] @ 0x51 + 8005350: 687b ldr r3, [r7, #4] + 8005352: 2202 movs r2, #2 + 8005354: f883 2051 strb.w r2, [r3, #81] @ 0x51 /* Disable the selected SPI peripheral */ __HAL_SPI_DISABLE(hspi); - 80052fc: 687b ldr r3, [r7, #4] - 80052fe: 681b ldr r3, [r3, #0] - 8005300: 681a ldr r2, [r3, #0] - 8005302: 687b ldr r3, [r7, #4] - 8005304: 681b ldr r3, [r3, #0] - 8005306: f022 0240 bic.w r2, r2, #64 @ 0x40 - 800530a: 601a str r2, [r3, #0] + 8005358: 687b ldr r3, [r7, #4] + 800535a: 681b ldr r3, [r3, #0] + 800535c: 681a ldr r2, [r3, #0] + 800535e: 687b ldr r3, [r7, #4] + 8005360: 681b ldr r3, [r3, #0] + 8005362: f022 0240 bic.w r2, r2, #64 @ 0x40 + 8005366: 601a str r2, [r3, #0] /*----------------------- SPIx CR1 & CR2 Configuration ---------------------*/ /* Configure : SPI Mode, Communication Mode, Data size, Clock polarity and phase, NSS management, Communication speed, First bit and CRC calculation state */ WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | - 800530c: 687b ldr r3, [r7, #4] - 800530e: 685b ldr r3, [r3, #4] - 8005310: f403 7282 and.w r2, r3, #260 @ 0x104 - 8005314: 687b ldr r3, [r7, #4] - 8005316: 689b ldr r3, [r3, #8] - 8005318: f403 4304 and.w r3, r3, #33792 @ 0x8400 - 800531c: 431a orrs r2, r3 - 800531e: 687b ldr r3, [r7, #4] - 8005320: 68db ldr r3, [r3, #12] - 8005322: f403 6300 and.w r3, r3, #2048 @ 0x800 - 8005326: 431a orrs r2, r3 - 8005328: 687b ldr r3, [r7, #4] - 800532a: 691b ldr r3, [r3, #16] - 800532c: f003 0302 and.w r3, r3, #2 - 8005330: 431a orrs r2, r3 - 8005332: 687b ldr r3, [r7, #4] - 8005334: 695b ldr r3, [r3, #20] - 8005336: f003 0301 and.w r3, r3, #1 - 800533a: 431a orrs r2, r3 - 800533c: 687b ldr r3, [r7, #4] - 800533e: 699b ldr r3, [r3, #24] - 8005340: f403 7300 and.w r3, r3, #512 @ 0x200 - 8005344: 431a orrs r2, r3 - 8005346: 687b ldr r3, [r7, #4] - 8005348: 69db ldr r3, [r3, #28] - 800534a: f003 0338 and.w r3, r3, #56 @ 0x38 - 800534e: 431a orrs r2, r3 - 8005350: 687b ldr r3, [r7, #4] - 8005352: 6a1b ldr r3, [r3, #32] - 8005354: f003 0380 and.w r3, r3, #128 @ 0x80 - 8005358: ea42 0103 orr.w r1, r2, r3 - 800535c: 687b ldr r3, [r7, #4] - 800535e: 6a9b ldr r3, [r3, #40] @ 0x28 - 8005360: f403 5200 and.w r2, r3, #8192 @ 0x2000 - 8005364: 687b ldr r3, [r7, #4] - 8005366: 681b ldr r3, [r3, #0] - 8005368: 430a orrs r2, r1 - 800536a: 601a str r2, [r3, #0] + 8005368: 687b ldr r3, [r7, #4] + 800536a: 685b ldr r3, [r3, #4] + 800536c: f403 7282 and.w r2, r3, #260 @ 0x104 + 8005370: 687b ldr r3, [r7, #4] + 8005372: 689b ldr r3, [r3, #8] + 8005374: f403 4304 and.w r3, r3, #33792 @ 0x8400 + 8005378: 431a orrs r2, r3 + 800537a: 687b ldr r3, [r7, #4] + 800537c: 68db ldr r3, [r3, #12] + 800537e: f403 6300 and.w r3, r3, #2048 @ 0x800 + 8005382: 431a orrs r2, r3 + 8005384: 687b ldr r3, [r7, #4] + 8005386: 691b ldr r3, [r3, #16] + 8005388: f003 0302 and.w r3, r3, #2 + 800538c: 431a orrs r2, r3 + 800538e: 687b ldr r3, [r7, #4] + 8005390: 695b ldr r3, [r3, #20] + 8005392: f003 0301 and.w r3, r3, #1 + 8005396: 431a orrs r2, r3 + 8005398: 687b ldr r3, [r7, #4] + 800539a: 699b ldr r3, [r3, #24] + 800539c: f403 7300 and.w r3, r3, #512 @ 0x200 + 80053a0: 431a orrs r2, r3 + 80053a2: 687b ldr r3, [r7, #4] + 80053a4: 69db ldr r3, [r3, #28] + 80053a6: f003 0338 and.w r3, r3, #56 @ 0x38 + 80053aa: 431a orrs r2, r3 + 80053ac: 687b ldr r3, [r7, #4] + 80053ae: 6a1b ldr r3, [r3, #32] + 80053b0: f003 0380 and.w r3, r3, #128 @ 0x80 + 80053b4: ea42 0103 orr.w r1, r2, r3 + 80053b8: 687b ldr r3, [r7, #4] + 80053ba: 6a9b ldr r3, [r3, #40] @ 0x28 + 80053bc: f403 5200 and.w r2, r3, #8192 @ 0x2000 + 80053c0: 687b ldr r3, [r7, #4] + 80053c2: 681b ldr r3, [r3, #0] + 80053c4: 430a orrs r2, r1 + 80053c6: 601a str r2, [r3, #0] (hspi->Init.BaudRatePrescaler & SPI_CR1_BR_Msk) | (hspi->Init.FirstBit & SPI_CR1_LSBFIRST) | (hspi->Init.CRCCalculation & SPI_CR1_CRCEN))); /* Configure : NSS management, TI Mode */ WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | (hspi->Init.TIMode & SPI_CR2_FRF))); - 800536c: 687b ldr r3, [r7, #4] - 800536e: 699b ldr r3, [r3, #24] - 8005370: 0c1b lsrs r3, r3, #16 - 8005372: f003 0104 and.w r1, r3, #4 - 8005376: 687b ldr r3, [r7, #4] - 8005378: 6a5b ldr r3, [r3, #36] @ 0x24 - 800537a: f003 0210 and.w r2, r3, #16 - 800537e: 687b ldr r3, [r7, #4] - 8005380: 681b ldr r3, [r3, #0] - 8005382: 430a orrs r2, r1 - 8005384: 605a str r2, [r3, #4] + 80053c8: 687b ldr r3, [r7, #4] + 80053ca: 699b ldr r3, [r3, #24] + 80053cc: 0c1b lsrs r3, r3, #16 + 80053ce: f003 0104 and.w r1, r3, #4 + 80053d2: 687b ldr r3, [r7, #4] + 80053d4: 6a5b ldr r3, [r3, #36] @ 0x24 + 80053d6: f003 0210 and.w r2, r3, #16 + 80053da: 687b ldr r3, [r7, #4] + 80053dc: 681b ldr r3, [r3, #0] + 80053de: 430a orrs r2, r1 + 80053e0: 605a str r2, [r3, #4] } #endif /* USE_SPI_CRC */ #if defined(SPI_I2SCFGR_I2SMOD) /* Activate the SPI mode (Make sure that I2SMOD bit in I2SCFGR register is reset) */ CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); - 8005386: 687b ldr r3, [r7, #4] - 8005388: 681b ldr r3, [r3, #0] - 800538a: 69da ldr r2, [r3, #28] - 800538c: 687b ldr r3, [r7, #4] - 800538e: 681b ldr r3, [r3, #0] - 8005390: f422 6200 bic.w r2, r2, #2048 @ 0x800 - 8005394: 61da str r2, [r3, #28] + 80053e2: 687b ldr r3, [r7, #4] + 80053e4: 681b ldr r3, [r3, #0] + 80053e6: 69da ldr r2, [r3, #28] + 80053e8: 687b ldr r3, [r7, #4] + 80053ea: 681b ldr r3, [r3, #0] + 80053ec: f422 6200 bic.w r2, r2, #2048 @ 0x800 + 80053f0: 61da str r2, [r3, #28] #endif /* SPI_I2SCFGR_I2SMOD */ hspi->ErrorCode = HAL_SPI_ERROR_NONE; - 8005396: 687b ldr r3, [r7, #4] - 8005398: 2200 movs r2, #0 - 800539a: 655a str r2, [r3, #84] @ 0x54 + 80053f2: 687b ldr r3, [r7, #4] + 80053f4: 2200 movs r2, #0 + 80053f6: 655a str r2, [r3, #84] @ 0x54 hspi->State = HAL_SPI_STATE_READY; - 800539c: 687b ldr r3, [r7, #4] - 800539e: 2201 movs r2, #1 - 80053a0: f883 2051 strb.w r2, [r3, #81] @ 0x51 + 80053f8: 687b ldr r3, [r7, #4] + 80053fa: 2201 movs r2, #1 + 80053fc: f883 2051 strb.w r2, [r3, #81] @ 0x51 return HAL_OK; - 80053a4: 2300 movs r3, #0 + 8005400: 2300 movs r3, #0 } - 80053a6: 4618 mov r0, r3 - 80053a8: 3708 adds r7, #8 - 80053aa: 46bd mov sp, r7 - 80053ac: bd80 pop {r7, pc} + 8005402: 4618 mov r0, r3 + 8005404: 3708 adds r7, #8 + 8005406: 46bd mov sp, r7 + 8005408: bd80 pop {r7, pc} -080053ae : +0800540a : * Ex: call @ref HAL_TIM_Base_DeInit() before HAL_TIM_Base_Init() * @param htim TIM Base handle * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim) { - 80053ae: b580 push {r7, lr} - 80053b0: b082 sub sp, #8 - 80053b2: af00 add r7, sp, #0 - 80053b4: 6078 str r0, [r7, #4] + 800540a: b580 push {r7, lr} + 800540c: b082 sub sp, #8 + 800540e: af00 add r7, sp, #0 + 8005410: 6078 str r0, [r7, #4] /* Check the TIM handle allocation */ if (htim == NULL) - 80053b6: 687b ldr r3, [r7, #4] - 80053b8: 2b00 cmp r3, #0 - 80053ba: d101 bne.n 80053c0 + 8005412: 687b ldr r3, [r7, #4] + 8005414: 2b00 cmp r3, #0 + 8005416: d101 bne.n 800541c { return HAL_ERROR; - 80053bc: 2301 movs r3, #1 - 80053be: e041 b.n 8005444 + 8005418: 2301 movs r3, #1 + 800541a: e041 b.n 80054a0 assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); if (htim->State == HAL_TIM_STATE_RESET) - 80053c0: 687b ldr r3, [r7, #4] - 80053c2: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 80053c6: b2db uxtb r3, r3 - 80053c8: 2b00 cmp r3, #0 - 80053ca: d106 bne.n 80053da + 800541c: 687b ldr r3, [r7, #4] + 800541e: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 8005422: b2db uxtb r3, r3 + 8005424: 2b00 cmp r3, #0 + 8005426: d106 bne.n 8005436 { /* Allocate lock resource and initialize it */ htim->Lock = HAL_UNLOCKED; - 80053cc: 687b ldr r3, [r7, #4] - 80053ce: 2200 movs r2, #0 - 80053d0: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8005428: 687b ldr r3, [r7, #4] + 800542a: 2200 movs r2, #0 + 800542c: f883 203c strb.w r2, [r3, #60] @ 0x3c } /* Init the low level hardware : GPIO, CLOCK, NVIC */ htim->Base_MspInitCallback(htim); #else /* Init the low level hardware : GPIO, CLOCK, NVIC */ HAL_TIM_Base_MspInit(htim); - 80053d4: 6878 ldr r0, [r7, #4] - 80053d6: f7fb fefb bl 80011d0 + 8005430: 6878 ldr r0, [r7, #4] + 8005432: f7fb ff1f bl 8001274 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } /* Set the TIM state */ htim->State = HAL_TIM_STATE_BUSY; - 80053da: 687b ldr r3, [r7, #4] - 80053dc: 2202 movs r2, #2 - 80053de: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8005436: 687b ldr r3, [r7, #4] + 8005438: 2202 movs r2, #2 + 800543a: f883 203d strb.w r2, [r3, #61] @ 0x3d /* Set the Time Base configuration */ TIM_Base_SetConfig(htim->Instance, &htim->Init); - 80053e2: 687b ldr r3, [r7, #4] - 80053e4: 681a ldr r2, [r3, #0] - 80053e6: 687b ldr r3, [r7, #4] - 80053e8: 3304 adds r3, #4 - 80053ea: 4619 mov r1, r3 - 80053ec: 4610 mov r0, r2 - 80053ee: f000 fa7d bl 80058ec + 800543e: 687b ldr r3, [r7, #4] + 8005440: 681a ldr r2, [r3, #0] + 8005442: 687b ldr r3, [r7, #4] + 8005444: 3304 adds r3, #4 + 8005446: 4619 mov r1, r3 + 8005448: 4610 mov r0, r2 + 800544a: f000 fa7d bl 8005948 /* Initialize the DMA burst operation state */ htim->DMABurstState = HAL_DMA_BURST_STATE_READY; - 80053f2: 687b ldr r3, [r7, #4] - 80053f4: 2201 movs r2, #1 - 80053f6: f883 2046 strb.w r2, [r3, #70] @ 0x46 + 800544e: 687b ldr r3, [r7, #4] + 8005450: 2201 movs r2, #1 + 8005452: f883 2046 strb.w r2, [r3, #70] @ 0x46 /* Initialize the TIM channels state */ TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 80053fa: 687b ldr r3, [r7, #4] - 80053fc: 2201 movs r2, #1 - 80053fe: f883 203e strb.w r2, [r3, #62] @ 0x3e - 8005402: 687b ldr r3, [r7, #4] - 8005404: 2201 movs r2, #1 - 8005406: f883 203f strb.w r2, [r3, #63] @ 0x3f - 800540a: 687b ldr r3, [r7, #4] - 800540c: 2201 movs r2, #1 - 800540e: f883 2040 strb.w r2, [r3, #64] @ 0x40 - 8005412: 687b ldr r3, [r7, #4] - 8005414: 2201 movs r2, #1 - 8005416: f883 2041 strb.w r2, [r3, #65] @ 0x41 + 8005456: 687b ldr r3, [r7, #4] + 8005458: 2201 movs r2, #1 + 800545a: f883 203e strb.w r2, [r3, #62] @ 0x3e + 800545e: 687b ldr r3, [r7, #4] + 8005460: 2201 movs r2, #1 + 8005462: f883 203f strb.w r2, [r3, #63] @ 0x3f + 8005466: 687b ldr r3, [r7, #4] + 8005468: 2201 movs r2, #1 + 800546a: f883 2040 strb.w r2, [r3, #64] @ 0x40 + 800546e: 687b ldr r3, [r7, #4] + 8005470: 2201 movs r2, #1 + 8005472: f883 2041 strb.w r2, [r3, #65] @ 0x41 TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 800541a: 687b ldr r3, [r7, #4] - 800541c: 2201 movs r2, #1 - 800541e: f883 2042 strb.w r2, [r3, #66] @ 0x42 - 8005422: 687b ldr r3, [r7, #4] - 8005424: 2201 movs r2, #1 - 8005426: f883 2043 strb.w r2, [r3, #67] @ 0x43 - 800542a: 687b ldr r3, [r7, #4] - 800542c: 2201 movs r2, #1 - 800542e: f883 2044 strb.w r2, [r3, #68] @ 0x44 - 8005432: 687b ldr r3, [r7, #4] - 8005434: 2201 movs r2, #1 - 8005436: f883 2045 strb.w r2, [r3, #69] @ 0x45 + 8005476: 687b ldr r3, [r7, #4] + 8005478: 2201 movs r2, #1 + 800547a: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 800547e: 687b ldr r3, [r7, #4] + 8005480: 2201 movs r2, #1 + 8005482: f883 2043 strb.w r2, [r3, #67] @ 0x43 + 8005486: 687b ldr r3, [r7, #4] + 8005488: 2201 movs r2, #1 + 800548a: f883 2044 strb.w r2, [r3, #68] @ 0x44 + 800548e: 687b ldr r3, [r7, #4] + 8005490: 2201 movs r2, #1 + 8005492: f883 2045 strb.w r2, [r3, #69] @ 0x45 /* Initialize the TIM state*/ htim->State = HAL_TIM_STATE_READY; - 800543a: 687b ldr r3, [r7, #4] - 800543c: 2201 movs r2, #1 - 800543e: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8005496: 687b ldr r3, [r7, #4] + 8005498: 2201 movs r2, #1 + 800549a: f883 203d strb.w r2, [r3, #61] @ 0x3d return HAL_OK; - 8005442: 2300 movs r3, #0 + 800549e: 2300 movs r3, #0 } - 8005444: 4618 mov r0, r3 - 8005446: 3708 adds r7, #8 - 8005448: 46bd mov sp, r7 - 800544a: bd80 pop {r7, pc} + 80054a0: 4618 mov r0, r3 + 80054a2: 3708 adds r7, #8 + 80054a4: 46bd mov sp, r7 + 80054a6: bd80 pop {r7, pc} -0800544c : +080054a8 : * @brief Starts the TIM Base generation in interrupt mode. * @param htim TIM Base handle * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim) { - 800544c: b480 push {r7} - 800544e: b085 sub sp, #20 - 8005450: af00 add r7, sp, #0 - 8005452: 6078 str r0, [r7, #4] + 80054a8: b480 push {r7} + 80054aa: b085 sub sp, #20 + 80054ac: af00 add r7, sp, #0 + 80054ae: 6078 str r0, [r7, #4] /* Check the parameters */ assert_param(IS_TIM_INSTANCE(htim->Instance)); /* Check the TIM state */ if (htim->State != HAL_TIM_STATE_READY) - 8005454: 687b ldr r3, [r7, #4] - 8005456: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 800545a: b2db uxtb r3, r3 - 800545c: 2b01 cmp r3, #1 - 800545e: d001 beq.n 8005464 + 80054b0: 687b ldr r3, [r7, #4] + 80054b2: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 80054b6: b2db uxtb r3, r3 + 80054b8: 2b01 cmp r3, #1 + 80054ba: d001 beq.n 80054c0 { return HAL_ERROR; - 8005460: 2301 movs r3, #1 - 8005462: e04e b.n 8005502 + 80054bc: 2301 movs r3, #1 + 80054be: e04e b.n 800555e } /* Set the TIM state */ htim->State = HAL_TIM_STATE_BUSY; - 8005464: 687b ldr r3, [r7, #4] - 8005466: 2202 movs r2, #2 - 8005468: f883 203d strb.w r2, [r3, #61] @ 0x3d + 80054c0: 687b ldr r3, [r7, #4] + 80054c2: 2202 movs r2, #2 + 80054c4: f883 203d strb.w r2, [r3, #61] @ 0x3d /* Enable the TIM Update interrupt */ __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE); - 800546c: 687b ldr r3, [r7, #4] - 800546e: 681b ldr r3, [r3, #0] - 8005470: 68da ldr r2, [r3, #12] - 8005472: 687b ldr r3, [r7, #4] - 8005474: 681b ldr r3, [r3, #0] - 8005476: f042 0201 orr.w r2, r2, #1 - 800547a: 60da str r2, [r3, #12] + 80054c8: 687b ldr r3, [r7, #4] + 80054ca: 681b ldr r3, [r3, #0] + 80054cc: 68da ldr r2, [r3, #12] + 80054ce: 687b ldr r3, [r7, #4] + 80054d0: 681b ldr r3, [r3, #0] + 80054d2: f042 0201 orr.w r2, r2, #1 + 80054d6: 60da str r2, [r3, #12] /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) - 800547c: 687b ldr r3, [r7, #4] - 800547e: 681b ldr r3, [r3, #0] - 8005480: 4a23 ldr r2, [pc, #140] @ (8005510 ) - 8005482: 4293 cmp r3, r2 - 8005484: d022 beq.n 80054cc - 8005486: 687b ldr r3, [r7, #4] - 8005488: 681b ldr r3, [r3, #0] - 800548a: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 800548e: d01d beq.n 80054cc - 8005490: 687b ldr r3, [r7, #4] - 8005492: 681b ldr r3, [r3, #0] - 8005494: 4a1f ldr r2, [pc, #124] @ (8005514 ) - 8005496: 4293 cmp r3, r2 - 8005498: d018 beq.n 80054cc - 800549a: 687b ldr r3, [r7, #4] - 800549c: 681b ldr r3, [r3, #0] - 800549e: 4a1e ldr r2, [pc, #120] @ (8005518 ) - 80054a0: 4293 cmp r3, r2 - 80054a2: d013 beq.n 80054cc - 80054a4: 687b ldr r3, [r7, #4] - 80054a6: 681b ldr r3, [r3, #0] - 80054a8: 4a1c ldr r2, [pc, #112] @ (800551c ) - 80054aa: 4293 cmp r3, r2 - 80054ac: d00e beq.n 80054cc - 80054ae: 687b ldr r3, [r7, #4] - 80054b0: 681b ldr r3, [r3, #0] - 80054b2: 4a1b ldr r2, [pc, #108] @ (8005520 ) - 80054b4: 4293 cmp r3, r2 - 80054b6: d009 beq.n 80054cc - 80054b8: 687b ldr r3, [r7, #4] - 80054ba: 681b ldr r3, [r3, #0] - 80054bc: 4a19 ldr r2, [pc, #100] @ (8005524 ) - 80054be: 4293 cmp r3, r2 - 80054c0: d004 beq.n 80054cc - 80054c2: 687b ldr r3, [r7, #4] - 80054c4: 681b ldr r3, [r3, #0] - 80054c6: 4a18 ldr r2, [pc, #96] @ (8005528 ) - 80054c8: 4293 cmp r3, r2 - 80054ca: d111 bne.n 80054f0 + 80054d8: 687b ldr r3, [r7, #4] + 80054da: 681b ldr r3, [r3, #0] + 80054dc: 4a23 ldr r2, [pc, #140] @ (800556c ) + 80054de: 4293 cmp r3, r2 + 80054e0: d022 beq.n 8005528 + 80054e2: 687b ldr r3, [r7, #4] + 80054e4: 681b ldr r3, [r3, #0] + 80054e6: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 80054ea: d01d beq.n 8005528 + 80054ec: 687b ldr r3, [r7, #4] + 80054ee: 681b ldr r3, [r3, #0] + 80054f0: 4a1f ldr r2, [pc, #124] @ (8005570 ) + 80054f2: 4293 cmp r3, r2 + 80054f4: d018 beq.n 8005528 + 80054f6: 687b ldr r3, [r7, #4] + 80054f8: 681b ldr r3, [r3, #0] + 80054fa: 4a1e ldr r2, [pc, #120] @ (8005574 ) + 80054fc: 4293 cmp r3, r2 + 80054fe: d013 beq.n 8005528 + 8005500: 687b ldr r3, [r7, #4] + 8005502: 681b ldr r3, [r3, #0] + 8005504: 4a1c ldr r2, [pc, #112] @ (8005578 ) + 8005506: 4293 cmp r3, r2 + 8005508: d00e beq.n 8005528 + 800550a: 687b ldr r3, [r7, #4] + 800550c: 681b ldr r3, [r3, #0] + 800550e: 4a1b ldr r2, [pc, #108] @ (800557c ) + 8005510: 4293 cmp r3, r2 + 8005512: d009 beq.n 8005528 + 8005514: 687b ldr r3, [r7, #4] + 8005516: 681b ldr r3, [r3, #0] + 8005518: 4a19 ldr r2, [pc, #100] @ (8005580 ) + 800551a: 4293 cmp r3, r2 + 800551c: d004 beq.n 8005528 + 800551e: 687b ldr r3, [r7, #4] + 8005520: 681b ldr r3, [r3, #0] + 8005522: 4a18 ldr r2, [pc, #96] @ (8005584 ) + 8005524: 4293 cmp r3, r2 + 8005526: d111 bne.n 800554c { tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; - 80054cc: 687b ldr r3, [r7, #4] - 80054ce: 681b ldr r3, [r3, #0] - 80054d0: 689b ldr r3, [r3, #8] - 80054d2: f003 0307 and.w r3, r3, #7 - 80054d6: 60fb str r3, [r7, #12] + 8005528: 687b ldr r3, [r7, #4] + 800552a: 681b ldr r3, [r3, #0] + 800552c: 689b ldr r3, [r3, #8] + 800552e: f003 0307 and.w r3, r3, #7 + 8005532: 60fb str r3, [r7, #12] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 80054d8: 68fb ldr r3, [r7, #12] - 80054da: 2b06 cmp r3, #6 - 80054dc: d010 beq.n 8005500 + 8005534: 68fb ldr r3, [r7, #12] + 8005536: 2b06 cmp r3, #6 + 8005538: d010 beq.n 800555c { __HAL_TIM_ENABLE(htim); - 80054de: 687b ldr r3, [r7, #4] - 80054e0: 681b ldr r3, [r3, #0] - 80054e2: 681a ldr r2, [r3, #0] - 80054e4: 687b ldr r3, [r7, #4] - 80054e6: 681b ldr r3, [r3, #0] - 80054e8: f042 0201 orr.w r2, r2, #1 - 80054ec: 601a str r2, [r3, #0] + 800553a: 687b ldr r3, [r7, #4] + 800553c: 681b ldr r3, [r3, #0] + 800553e: 681a ldr r2, [r3, #0] + 8005540: 687b ldr r3, [r7, #4] + 8005542: 681b ldr r3, [r3, #0] + 8005544: f042 0201 orr.w r2, r2, #1 + 8005548: 601a str r2, [r3, #0] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 80054ee: e007 b.n 8005500 + 800554a: e007 b.n 800555c } } else { __HAL_TIM_ENABLE(htim); - 80054f0: 687b ldr r3, [r7, #4] - 80054f2: 681b ldr r3, [r3, #0] - 80054f4: 681a ldr r2, [r3, #0] - 80054f6: 687b ldr r3, [r7, #4] - 80054f8: 681b ldr r3, [r3, #0] - 80054fa: f042 0201 orr.w r2, r2, #1 - 80054fe: 601a str r2, [r3, #0] + 800554c: 687b ldr r3, [r7, #4] + 800554e: 681b ldr r3, [r3, #0] + 8005550: 681a ldr r2, [r3, #0] + 8005552: 687b ldr r3, [r7, #4] + 8005554: 681b ldr r3, [r3, #0] + 8005556: f042 0201 orr.w r2, r2, #1 + 800555a: 601a str r2, [r3, #0] } /* Return function status */ return HAL_OK; - 8005500: 2300 movs r3, #0 + 800555c: 2300 movs r3, #0 } - 8005502: 4618 mov r0, r3 - 8005504: 3714 adds r7, #20 - 8005506: 46bd mov sp, r7 - 8005508: f85d 7b04 ldr.w r7, [sp], #4 - 800550c: 4770 bx lr - 800550e: bf00 nop - 8005510: 40010000 .word 0x40010000 - 8005514: 40000400 .word 0x40000400 - 8005518: 40000800 .word 0x40000800 - 800551c: 40000c00 .word 0x40000c00 - 8005520: 40010400 .word 0x40010400 - 8005524: 40014000 .word 0x40014000 - 8005528: 40001800 .word 0x40001800 + 800555e: 4618 mov r0, r3 + 8005560: 3714 adds r7, #20 + 8005562: 46bd mov sp, r7 + 8005564: f85d 7b04 ldr.w r7, [sp], #4 + 8005568: 4770 bx lr + 800556a: bf00 nop + 800556c: 40010000 .word 0x40010000 + 8005570: 40000400 .word 0x40000400 + 8005574: 40000800 .word 0x40000800 + 8005578: 40000c00 .word 0x40000c00 + 800557c: 40010400 .word 0x40010400 + 8005580: 40014000 .word 0x40014000 + 8005584: 40001800 .word 0x40001800 -0800552c : +08005588 : * @brief This function handles TIM interrupts requests. * @param htim TIM handle * @retval None */ void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim) { - 800552c: b580 push {r7, lr} - 800552e: b084 sub sp, #16 - 8005530: af00 add r7, sp, #0 - 8005532: 6078 str r0, [r7, #4] + 8005588: b580 push {r7, lr} + 800558a: b084 sub sp, #16 + 800558c: af00 add r7, sp, #0 + 800558e: 6078 str r0, [r7, #4] uint32_t itsource = htim->Instance->DIER; - 8005534: 687b ldr r3, [r7, #4] - 8005536: 681b ldr r3, [r3, #0] - 8005538: 68db ldr r3, [r3, #12] - 800553a: 60fb str r3, [r7, #12] + 8005590: 687b ldr r3, [r7, #4] + 8005592: 681b ldr r3, [r3, #0] + 8005594: 68db ldr r3, [r3, #12] + 8005596: 60fb str r3, [r7, #12] uint32_t itflag = htim->Instance->SR; - 800553c: 687b ldr r3, [r7, #4] - 800553e: 681b ldr r3, [r3, #0] - 8005540: 691b ldr r3, [r3, #16] - 8005542: 60bb str r3, [r7, #8] + 8005598: 687b ldr r3, [r7, #4] + 800559a: 681b ldr r3, [r3, #0] + 800559c: 691b ldr r3, [r3, #16] + 800559e: 60bb str r3, [r7, #8] /* Capture compare 1 event */ if ((itflag & (TIM_FLAG_CC1)) == (TIM_FLAG_CC1)) - 8005544: 68bb ldr r3, [r7, #8] - 8005546: f003 0302 and.w r3, r3, #2 - 800554a: 2b00 cmp r3, #0 - 800554c: d020 beq.n 8005590 + 80055a0: 68bb ldr r3, [r7, #8] + 80055a2: f003 0302 and.w r3, r3, #2 + 80055a6: 2b00 cmp r3, #0 + 80055a8: d020 beq.n 80055ec { if ((itsource & (TIM_IT_CC1)) == (TIM_IT_CC1)) - 800554e: 68fb ldr r3, [r7, #12] - 8005550: f003 0302 and.w r3, r3, #2 - 8005554: 2b00 cmp r3, #0 - 8005556: d01b beq.n 8005590 + 80055aa: 68fb ldr r3, [r7, #12] + 80055ac: f003 0302 and.w r3, r3, #2 + 80055b0: 2b00 cmp r3, #0 + 80055b2: d01b beq.n 80055ec { { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC1); - 8005558: 687b ldr r3, [r7, #4] - 800555a: 681b ldr r3, [r3, #0] - 800555c: f06f 0202 mvn.w r2, #2 - 8005560: 611a str r2, [r3, #16] + 80055b4: 687b ldr r3, [r7, #4] + 80055b6: 681b ldr r3, [r3, #0] + 80055b8: f06f 0202 mvn.w r2, #2 + 80055bc: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; - 8005562: 687b ldr r3, [r7, #4] - 8005564: 2201 movs r2, #1 - 8005566: 771a strb r2, [r3, #28] + 80055be: 687b ldr r3, [r7, #4] + 80055c0: 2201 movs r2, #1 + 80055c2: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U) - 8005568: 687b ldr r3, [r7, #4] - 800556a: 681b ldr r3, [r3, #0] - 800556c: 699b ldr r3, [r3, #24] - 800556e: f003 0303 and.w r3, r3, #3 - 8005572: 2b00 cmp r3, #0 - 8005574: d003 beq.n 800557e + 80055c4: 687b ldr r3, [r7, #4] + 80055c6: 681b ldr r3, [r3, #0] + 80055c8: 699b ldr r3, [r3, #24] + 80055ca: f003 0303 and.w r3, r3, #3 + 80055ce: 2b00 cmp r3, #0 + 80055d0: d003 beq.n 80055da { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 8005576: 6878 ldr r0, [r7, #4] - 8005578: f000 f999 bl 80058ae - 800557c: e005 b.n 800558a + 80055d2: 6878 ldr r0, [r7, #4] + 80055d4: f000 f999 bl 800590a + 80055d8: e005 b.n 80055e6 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 800557e: 6878 ldr r0, [r7, #4] - 8005580: f000 f98b bl 800589a + 80055da: 6878 ldr r0, [r7, #4] + 80055dc: f000 f98b bl 80058f6 HAL_TIM_PWM_PulseFinishedCallback(htim); - 8005584: 6878 ldr r0, [r7, #4] - 8005586: f000 f99c bl 80058c2 + 80055e0: 6878 ldr r0, [r7, #4] + 80055e2: f000 f99c bl 800591e #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 800558a: 687b ldr r3, [r7, #4] - 800558c: 2200 movs r2, #0 - 800558e: 771a strb r2, [r3, #28] + 80055e6: 687b ldr r3, [r7, #4] + 80055e8: 2200 movs r2, #0 + 80055ea: 771a strb r2, [r3, #28] } } } /* Capture compare 2 event */ if ((itflag & (TIM_FLAG_CC2)) == (TIM_FLAG_CC2)) - 8005590: 68bb ldr r3, [r7, #8] - 8005592: f003 0304 and.w r3, r3, #4 - 8005596: 2b00 cmp r3, #0 - 8005598: d020 beq.n 80055dc + 80055ec: 68bb ldr r3, [r7, #8] + 80055ee: f003 0304 and.w r3, r3, #4 + 80055f2: 2b00 cmp r3, #0 + 80055f4: d020 beq.n 8005638 { if ((itsource & (TIM_IT_CC2)) == (TIM_IT_CC2)) - 800559a: 68fb ldr r3, [r7, #12] - 800559c: f003 0304 and.w r3, r3, #4 - 80055a0: 2b00 cmp r3, #0 - 80055a2: d01b beq.n 80055dc + 80055f6: 68fb ldr r3, [r7, #12] + 80055f8: f003 0304 and.w r3, r3, #4 + 80055fc: 2b00 cmp r3, #0 + 80055fe: d01b beq.n 8005638 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC2); - 80055a4: 687b ldr r3, [r7, #4] - 80055a6: 681b ldr r3, [r3, #0] - 80055a8: f06f 0204 mvn.w r2, #4 - 80055ac: 611a str r2, [r3, #16] + 8005600: 687b ldr r3, [r7, #4] + 8005602: 681b ldr r3, [r3, #0] + 8005604: f06f 0204 mvn.w r2, #4 + 8005608: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; - 80055ae: 687b ldr r3, [r7, #4] - 80055b0: 2202 movs r2, #2 - 80055b2: 771a strb r2, [r3, #28] + 800560a: 687b ldr r3, [r7, #4] + 800560c: 2202 movs r2, #2 + 800560e: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U) - 80055b4: 687b ldr r3, [r7, #4] - 80055b6: 681b ldr r3, [r3, #0] - 80055b8: 699b ldr r3, [r3, #24] - 80055ba: f403 7340 and.w r3, r3, #768 @ 0x300 - 80055be: 2b00 cmp r3, #0 - 80055c0: d003 beq.n 80055ca + 8005610: 687b ldr r3, [r7, #4] + 8005612: 681b ldr r3, [r3, #0] + 8005614: 699b ldr r3, [r3, #24] + 8005616: f403 7340 and.w r3, r3, #768 @ 0x300 + 800561a: 2b00 cmp r3, #0 + 800561c: d003 beq.n 8005626 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 80055c2: 6878 ldr r0, [r7, #4] - 80055c4: f000 f973 bl 80058ae - 80055c8: e005 b.n 80055d6 + 800561e: 6878 ldr r0, [r7, #4] + 8005620: f000 f973 bl 800590a + 8005624: e005 b.n 8005632 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 80055ca: 6878 ldr r0, [r7, #4] - 80055cc: f000 f965 bl 800589a + 8005626: 6878 ldr r0, [r7, #4] + 8005628: f000 f965 bl 80058f6 HAL_TIM_PWM_PulseFinishedCallback(htim); - 80055d0: 6878 ldr r0, [r7, #4] - 80055d2: f000 f976 bl 80058c2 + 800562c: 6878 ldr r0, [r7, #4] + 800562e: f000 f976 bl 800591e #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 80055d6: 687b ldr r3, [r7, #4] - 80055d8: 2200 movs r2, #0 - 80055da: 771a strb r2, [r3, #28] + 8005632: 687b ldr r3, [r7, #4] + 8005634: 2200 movs r2, #0 + 8005636: 771a strb r2, [r3, #28] } } /* Capture compare 3 event */ if ((itflag & (TIM_FLAG_CC3)) == (TIM_FLAG_CC3)) - 80055dc: 68bb ldr r3, [r7, #8] - 80055de: f003 0308 and.w r3, r3, #8 - 80055e2: 2b00 cmp r3, #0 - 80055e4: d020 beq.n 8005628 + 8005638: 68bb ldr r3, [r7, #8] + 800563a: f003 0308 and.w r3, r3, #8 + 800563e: 2b00 cmp r3, #0 + 8005640: d020 beq.n 8005684 { if ((itsource & (TIM_IT_CC3)) == (TIM_IT_CC3)) - 80055e6: 68fb ldr r3, [r7, #12] - 80055e8: f003 0308 and.w r3, r3, #8 - 80055ec: 2b00 cmp r3, #0 - 80055ee: d01b beq.n 8005628 + 8005642: 68fb ldr r3, [r7, #12] + 8005644: f003 0308 and.w r3, r3, #8 + 8005648: 2b00 cmp r3, #0 + 800564a: d01b beq.n 8005684 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC3); - 80055f0: 687b ldr r3, [r7, #4] - 80055f2: 681b ldr r3, [r3, #0] - 80055f4: f06f 0208 mvn.w r2, #8 - 80055f8: 611a str r2, [r3, #16] + 800564c: 687b ldr r3, [r7, #4] + 800564e: 681b ldr r3, [r3, #0] + 8005650: f06f 0208 mvn.w r2, #8 + 8005654: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; - 80055fa: 687b ldr r3, [r7, #4] - 80055fc: 2204 movs r2, #4 - 80055fe: 771a strb r2, [r3, #28] + 8005656: 687b ldr r3, [r7, #4] + 8005658: 2204 movs r2, #4 + 800565a: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U) - 8005600: 687b ldr r3, [r7, #4] - 8005602: 681b ldr r3, [r3, #0] - 8005604: 69db ldr r3, [r3, #28] - 8005606: f003 0303 and.w r3, r3, #3 - 800560a: 2b00 cmp r3, #0 - 800560c: d003 beq.n 8005616 + 800565c: 687b ldr r3, [r7, #4] + 800565e: 681b ldr r3, [r3, #0] + 8005660: 69db ldr r3, [r3, #28] + 8005662: f003 0303 and.w r3, r3, #3 + 8005666: 2b00 cmp r3, #0 + 8005668: d003 beq.n 8005672 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 800560e: 6878 ldr r0, [r7, #4] - 8005610: f000 f94d bl 80058ae - 8005614: e005 b.n 8005622 + 800566a: 6878 ldr r0, [r7, #4] + 800566c: f000 f94d bl 800590a + 8005670: e005 b.n 800567e { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 8005616: 6878 ldr r0, [r7, #4] - 8005618: f000 f93f bl 800589a + 8005672: 6878 ldr r0, [r7, #4] + 8005674: f000 f93f bl 80058f6 HAL_TIM_PWM_PulseFinishedCallback(htim); - 800561c: 6878 ldr r0, [r7, #4] - 800561e: f000 f950 bl 80058c2 + 8005678: 6878 ldr r0, [r7, #4] + 800567a: f000 f950 bl 800591e #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 8005622: 687b ldr r3, [r7, #4] - 8005624: 2200 movs r2, #0 - 8005626: 771a strb r2, [r3, #28] + 800567e: 687b ldr r3, [r7, #4] + 8005680: 2200 movs r2, #0 + 8005682: 771a strb r2, [r3, #28] } } /* Capture compare 4 event */ if ((itflag & (TIM_FLAG_CC4)) == (TIM_FLAG_CC4)) - 8005628: 68bb ldr r3, [r7, #8] - 800562a: f003 0310 and.w r3, r3, #16 - 800562e: 2b00 cmp r3, #0 - 8005630: d020 beq.n 8005674 + 8005684: 68bb ldr r3, [r7, #8] + 8005686: f003 0310 and.w r3, r3, #16 + 800568a: 2b00 cmp r3, #0 + 800568c: d020 beq.n 80056d0 { if ((itsource & (TIM_IT_CC4)) == (TIM_IT_CC4)) - 8005632: 68fb ldr r3, [r7, #12] - 8005634: f003 0310 and.w r3, r3, #16 - 8005638: 2b00 cmp r3, #0 - 800563a: d01b beq.n 8005674 + 800568e: 68fb ldr r3, [r7, #12] + 8005690: f003 0310 and.w r3, r3, #16 + 8005694: 2b00 cmp r3, #0 + 8005696: d01b beq.n 80056d0 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC4); - 800563c: 687b ldr r3, [r7, #4] - 800563e: 681b ldr r3, [r3, #0] - 8005640: f06f 0210 mvn.w r2, #16 - 8005644: 611a str r2, [r3, #16] + 8005698: 687b ldr r3, [r7, #4] + 800569a: 681b ldr r3, [r3, #0] + 800569c: f06f 0210 mvn.w r2, #16 + 80056a0: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; - 8005646: 687b ldr r3, [r7, #4] - 8005648: 2208 movs r2, #8 - 800564a: 771a strb r2, [r3, #28] + 80056a2: 687b ldr r3, [r7, #4] + 80056a4: 2208 movs r2, #8 + 80056a6: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U) - 800564c: 687b ldr r3, [r7, #4] - 800564e: 681b ldr r3, [r3, #0] - 8005650: 69db ldr r3, [r3, #28] - 8005652: f403 7340 and.w r3, r3, #768 @ 0x300 - 8005656: 2b00 cmp r3, #0 - 8005658: d003 beq.n 8005662 + 80056a8: 687b ldr r3, [r7, #4] + 80056aa: 681b ldr r3, [r3, #0] + 80056ac: 69db ldr r3, [r3, #28] + 80056ae: f403 7340 and.w r3, r3, #768 @ 0x300 + 80056b2: 2b00 cmp r3, #0 + 80056b4: d003 beq.n 80056be { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 800565a: 6878 ldr r0, [r7, #4] - 800565c: f000 f927 bl 80058ae - 8005660: e005 b.n 800566e + 80056b6: 6878 ldr r0, [r7, #4] + 80056b8: f000 f927 bl 800590a + 80056bc: e005 b.n 80056ca { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 8005662: 6878 ldr r0, [r7, #4] - 8005664: f000 f919 bl 800589a + 80056be: 6878 ldr r0, [r7, #4] + 80056c0: f000 f919 bl 80058f6 HAL_TIM_PWM_PulseFinishedCallback(htim); - 8005668: 6878 ldr r0, [r7, #4] - 800566a: f000 f92a bl 80058c2 + 80056c4: 6878 ldr r0, [r7, #4] + 80056c6: f000 f92a bl 800591e #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 800566e: 687b ldr r3, [r7, #4] - 8005670: 2200 movs r2, #0 - 8005672: 771a strb r2, [r3, #28] + 80056ca: 687b ldr r3, [r7, #4] + 80056cc: 2200 movs r2, #0 + 80056ce: 771a strb r2, [r3, #28] } } /* TIM Update event */ if ((itflag & (TIM_FLAG_UPDATE)) == (TIM_FLAG_UPDATE)) - 8005674: 68bb ldr r3, [r7, #8] - 8005676: f003 0301 and.w r3, r3, #1 - 800567a: 2b00 cmp r3, #0 - 800567c: d00c beq.n 8005698 + 80056d0: 68bb ldr r3, [r7, #8] + 80056d2: f003 0301 and.w r3, r3, #1 + 80056d6: 2b00 cmp r3, #0 + 80056d8: d00c beq.n 80056f4 { if ((itsource & (TIM_IT_UPDATE)) == (TIM_IT_UPDATE)) - 800567e: 68fb ldr r3, [r7, #12] - 8005680: f003 0301 and.w r3, r3, #1 - 8005684: 2b00 cmp r3, #0 - 8005686: d007 beq.n 8005698 + 80056da: 68fb ldr r3, [r7, #12] + 80056dc: f003 0301 and.w r3, r3, #1 + 80056e0: 2b00 cmp r3, #0 + 80056e2: d007 beq.n 80056f4 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_UPDATE); - 8005688: 687b ldr r3, [r7, #4] - 800568a: 681b ldr r3, [r3, #0] - 800568c: f06f 0201 mvn.w r2, #1 - 8005690: 611a str r2, [r3, #16] + 80056e4: 687b ldr r3, [r7, #4] + 80056e6: 681b ldr r3, [r3, #0] + 80056e8: f06f 0201 mvn.w r2, #1 + 80056ec: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->PeriodElapsedCallback(htim); #else HAL_TIM_PeriodElapsedCallback(htim); - 8005692: 6878 ldr r0, [r7, #4] - 8005694: f7fb fb2c bl 8000cf0 + 80056ee: 6878 ldr r0, [r7, #4] + 80056f0: f7fb fb50 bl 8000d94 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM Break input event */ if ((itflag & (TIM_FLAG_BREAK)) == (TIM_FLAG_BREAK)) - 8005698: 68bb ldr r3, [r7, #8] - 800569a: f003 0380 and.w r3, r3, #128 @ 0x80 - 800569e: 2b00 cmp r3, #0 - 80056a0: d00c beq.n 80056bc + 80056f4: 68bb ldr r3, [r7, #8] + 80056f6: f003 0380 and.w r3, r3, #128 @ 0x80 + 80056fa: 2b00 cmp r3, #0 + 80056fc: d00c beq.n 8005718 { if ((itsource & (TIM_IT_BREAK)) == (TIM_IT_BREAK)) - 80056a2: 68fb ldr r3, [r7, #12] - 80056a4: f003 0380 and.w r3, r3, #128 @ 0x80 - 80056a8: 2b00 cmp r3, #0 - 80056aa: d007 beq.n 80056bc + 80056fe: 68fb ldr r3, [r7, #12] + 8005700: f003 0380 and.w r3, r3, #128 @ 0x80 + 8005704: 2b00 cmp r3, #0 + 8005706: d007 beq.n 8005718 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_BREAK); - 80056ac: 687b ldr r3, [r7, #4] - 80056ae: 681b ldr r3, [r3, #0] - 80056b0: f06f 0280 mvn.w r2, #128 @ 0x80 - 80056b4: 611a str r2, [r3, #16] + 8005708: 687b ldr r3, [r7, #4] + 800570a: 681b ldr r3, [r3, #0] + 800570c: f06f 0280 mvn.w r2, #128 @ 0x80 + 8005710: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->BreakCallback(htim); #else HAL_TIMEx_BreakCallback(htim); - 80056b6: 6878 ldr r0, [r7, #4] - 80056b8: f000 fade bl 8005c78 + 8005712: 6878 ldr r0, [r7, #4] + 8005714: f000 fade bl 8005cd4 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM Trigger detection event */ if ((itflag & (TIM_FLAG_TRIGGER)) == (TIM_FLAG_TRIGGER)) - 80056bc: 68bb ldr r3, [r7, #8] - 80056be: f003 0340 and.w r3, r3, #64 @ 0x40 - 80056c2: 2b00 cmp r3, #0 - 80056c4: d00c beq.n 80056e0 + 8005718: 68bb ldr r3, [r7, #8] + 800571a: f003 0340 and.w r3, r3, #64 @ 0x40 + 800571e: 2b00 cmp r3, #0 + 8005720: d00c beq.n 800573c { if ((itsource & (TIM_IT_TRIGGER)) == (TIM_IT_TRIGGER)) - 80056c6: 68fb ldr r3, [r7, #12] - 80056c8: f003 0340 and.w r3, r3, #64 @ 0x40 - 80056cc: 2b00 cmp r3, #0 - 80056ce: d007 beq.n 80056e0 + 8005722: 68fb ldr r3, [r7, #12] + 8005724: f003 0340 and.w r3, r3, #64 @ 0x40 + 8005728: 2b00 cmp r3, #0 + 800572a: d007 beq.n 800573c { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_TRIGGER); - 80056d0: 687b ldr r3, [r7, #4] - 80056d2: 681b ldr r3, [r3, #0] - 80056d4: f06f 0240 mvn.w r2, #64 @ 0x40 - 80056d8: 611a str r2, [r3, #16] + 800572c: 687b ldr r3, [r7, #4] + 800572e: 681b ldr r3, [r3, #0] + 8005730: f06f 0240 mvn.w r2, #64 @ 0x40 + 8005734: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->TriggerCallback(htim); #else HAL_TIM_TriggerCallback(htim); - 80056da: 6878 ldr r0, [r7, #4] - 80056dc: f000 f8fb bl 80058d6 + 8005736: 6878 ldr r0, [r7, #4] + 8005738: f000 f8fb bl 8005932 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM commutation event */ if ((itflag & (TIM_FLAG_COM)) == (TIM_FLAG_COM)) - 80056e0: 68bb ldr r3, [r7, #8] - 80056e2: f003 0320 and.w r3, r3, #32 - 80056e6: 2b00 cmp r3, #0 - 80056e8: d00c beq.n 8005704 + 800573c: 68bb ldr r3, [r7, #8] + 800573e: f003 0320 and.w r3, r3, #32 + 8005742: 2b00 cmp r3, #0 + 8005744: d00c beq.n 8005760 { if ((itsource & (TIM_IT_COM)) == (TIM_IT_COM)) - 80056ea: 68fb ldr r3, [r7, #12] - 80056ec: f003 0320 and.w r3, r3, #32 - 80056f0: 2b00 cmp r3, #0 - 80056f2: d007 beq.n 8005704 + 8005746: 68fb ldr r3, [r7, #12] + 8005748: f003 0320 and.w r3, r3, #32 + 800574c: 2b00 cmp r3, #0 + 800574e: d007 beq.n 8005760 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_COM); - 80056f4: 687b ldr r3, [r7, #4] - 80056f6: 681b ldr r3, [r3, #0] - 80056f8: f06f 0220 mvn.w r2, #32 - 80056fc: 611a str r2, [r3, #16] + 8005750: 687b ldr r3, [r7, #4] + 8005752: 681b ldr r3, [r3, #0] + 8005754: f06f 0220 mvn.w r2, #32 + 8005758: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->CommutationCallback(htim); #else HAL_TIMEx_CommutCallback(htim); - 80056fe: 6878 ldr r0, [r7, #4] - 8005700: f000 fab0 bl 8005c64 + 800575a: 6878 ldr r0, [r7, #4] + 800575c: f000 fab0 bl 8005cc0 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } } - 8005704: bf00 nop - 8005706: 3710 adds r7, #16 - 8005708: 46bd mov sp, r7 - 800570a: bd80 pop {r7, pc} + 8005760: bf00 nop + 8005762: 3710 adds r7, #16 + 8005764: 46bd mov sp, r7 + 8005766: bd80 pop {r7, pc} -0800570c : +08005768 : * @param sClockSourceConfig pointer to a TIM_ClockConfigTypeDef structure that * contains the clock source information for the TIM peripheral. * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, const TIM_ClockConfigTypeDef *sClockSourceConfig) { - 800570c: b580 push {r7, lr} - 800570e: b084 sub sp, #16 - 8005710: af00 add r7, sp, #0 - 8005712: 6078 str r0, [r7, #4] - 8005714: 6039 str r1, [r7, #0] + 8005768: b580 push {r7, lr} + 800576a: b084 sub sp, #16 + 800576c: af00 add r7, sp, #0 + 800576e: 6078 str r0, [r7, #4] + 8005770: 6039 str r1, [r7, #0] HAL_StatusTypeDef status = HAL_OK; - 8005716: 2300 movs r3, #0 - 8005718: 73fb strb r3, [r7, #15] + 8005772: 2300 movs r3, #0 + 8005774: 73fb strb r3, [r7, #15] uint32_t tmpsmcr; /* Process Locked */ __HAL_LOCK(htim); - 800571a: 687b ldr r3, [r7, #4] - 800571c: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 8005720: 2b01 cmp r3, #1 - 8005722: d101 bne.n 8005728 - 8005724: 2302 movs r3, #2 - 8005726: e0b4 b.n 8005892 - 8005728: 687b ldr r3, [r7, #4] - 800572a: 2201 movs r2, #1 - 800572c: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8005776: 687b ldr r3, [r7, #4] + 8005778: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 800577c: 2b01 cmp r3, #1 + 800577e: d101 bne.n 8005784 + 8005780: 2302 movs r3, #2 + 8005782: e0b4 b.n 80058ee + 8005784: 687b ldr r3, [r7, #4] + 8005786: 2201 movs r2, #1 + 8005788: f883 203c strb.w r2, [r3, #60] @ 0x3c htim->State = HAL_TIM_STATE_BUSY; - 8005730: 687b ldr r3, [r7, #4] - 8005732: 2202 movs r2, #2 - 8005734: f883 203d strb.w r2, [r3, #61] @ 0x3d + 800578c: 687b ldr r3, [r7, #4] + 800578e: 2202 movs r2, #2 + 8005790: f883 203d strb.w r2, [r3, #61] @ 0x3d /* Check the parameters */ assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource)); /* Reset the SMS, TS, ECE, ETPS and ETRF bits */ tmpsmcr = htim->Instance->SMCR; - 8005738: 687b ldr r3, [r7, #4] - 800573a: 681b ldr r3, [r3, #0] - 800573c: 689b ldr r3, [r3, #8] - 800573e: 60bb str r3, [r7, #8] + 8005794: 687b ldr r3, [r7, #4] + 8005796: 681b ldr r3, [r3, #0] + 8005798: 689b ldr r3, [r3, #8] + 800579a: 60bb str r3, [r7, #8] tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); - 8005740: 68bb ldr r3, [r7, #8] - 8005742: f023 0377 bic.w r3, r3, #119 @ 0x77 - 8005746: 60bb str r3, [r7, #8] + 800579c: 68bb ldr r3, [r7, #8] + 800579e: f023 0377 bic.w r3, r3, #119 @ 0x77 + 80057a2: 60bb str r3, [r7, #8] tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); - 8005748: 68bb ldr r3, [r7, #8] - 800574a: f423 437f bic.w r3, r3, #65280 @ 0xff00 - 800574e: 60bb str r3, [r7, #8] + 80057a4: 68bb ldr r3, [r7, #8] + 80057a6: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 80057aa: 60bb str r3, [r7, #8] htim->Instance->SMCR = tmpsmcr; - 8005750: 687b ldr r3, [r7, #4] - 8005752: 681b ldr r3, [r3, #0] - 8005754: 68ba ldr r2, [r7, #8] - 8005756: 609a str r2, [r3, #8] + 80057ac: 687b ldr r3, [r7, #4] + 80057ae: 681b ldr r3, [r3, #0] + 80057b0: 68ba ldr r2, [r7, #8] + 80057b2: 609a str r2, [r3, #8] switch (sClockSourceConfig->ClockSource) - 8005758: 683b ldr r3, [r7, #0] - 800575a: 681b ldr r3, [r3, #0] - 800575c: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 8005760: d03e beq.n 80057e0 - 8005762: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 8005766: f200 8087 bhi.w 8005878 - 800576a: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 800576e: f000 8086 beq.w 800587e - 8005772: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 8005776: d87f bhi.n 8005878 - 8005778: 2b70 cmp r3, #112 @ 0x70 - 800577a: d01a beq.n 80057b2 - 800577c: 2b70 cmp r3, #112 @ 0x70 - 800577e: d87b bhi.n 8005878 - 8005780: 2b60 cmp r3, #96 @ 0x60 - 8005782: d050 beq.n 8005826 - 8005784: 2b60 cmp r3, #96 @ 0x60 - 8005786: d877 bhi.n 8005878 - 8005788: 2b50 cmp r3, #80 @ 0x50 - 800578a: d03c beq.n 8005806 - 800578c: 2b50 cmp r3, #80 @ 0x50 - 800578e: d873 bhi.n 8005878 - 8005790: 2b40 cmp r3, #64 @ 0x40 - 8005792: d058 beq.n 8005846 - 8005794: 2b40 cmp r3, #64 @ 0x40 - 8005796: d86f bhi.n 8005878 - 8005798: 2b30 cmp r3, #48 @ 0x30 - 800579a: d064 beq.n 8005866 - 800579c: 2b30 cmp r3, #48 @ 0x30 - 800579e: d86b bhi.n 8005878 - 80057a0: 2b20 cmp r3, #32 - 80057a2: d060 beq.n 8005866 - 80057a4: 2b20 cmp r3, #32 - 80057a6: d867 bhi.n 8005878 - 80057a8: 2b00 cmp r3, #0 - 80057aa: d05c beq.n 8005866 - 80057ac: 2b10 cmp r3, #16 - 80057ae: d05a beq.n 8005866 - 80057b0: e062 b.n 8005878 + 80057b4: 683b ldr r3, [r7, #0] + 80057b6: 681b ldr r3, [r3, #0] + 80057b8: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 80057bc: d03e beq.n 800583c + 80057be: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 80057c2: f200 8087 bhi.w 80058d4 + 80057c6: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 80057ca: f000 8086 beq.w 80058da + 80057ce: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 80057d2: d87f bhi.n 80058d4 + 80057d4: 2b70 cmp r3, #112 @ 0x70 + 80057d6: d01a beq.n 800580e + 80057d8: 2b70 cmp r3, #112 @ 0x70 + 80057da: d87b bhi.n 80058d4 + 80057dc: 2b60 cmp r3, #96 @ 0x60 + 80057de: d050 beq.n 8005882 + 80057e0: 2b60 cmp r3, #96 @ 0x60 + 80057e2: d877 bhi.n 80058d4 + 80057e4: 2b50 cmp r3, #80 @ 0x50 + 80057e6: d03c beq.n 8005862 + 80057e8: 2b50 cmp r3, #80 @ 0x50 + 80057ea: d873 bhi.n 80058d4 + 80057ec: 2b40 cmp r3, #64 @ 0x40 + 80057ee: d058 beq.n 80058a2 + 80057f0: 2b40 cmp r3, #64 @ 0x40 + 80057f2: d86f bhi.n 80058d4 + 80057f4: 2b30 cmp r3, #48 @ 0x30 + 80057f6: d064 beq.n 80058c2 + 80057f8: 2b30 cmp r3, #48 @ 0x30 + 80057fa: d86b bhi.n 80058d4 + 80057fc: 2b20 cmp r3, #32 + 80057fe: d060 beq.n 80058c2 + 8005800: 2b20 cmp r3, #32 + 8005802: d867 bhi.n 80058d4 + 8005804: 2b00 cmp r3, #0 + 8005806: d05c beq.n 80058c2 + 8005808: 2b10 cmp r3, #16 + 800580a: d05a beq.n 80058c2 + 800580c: e062 b.n 80058d4 assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); /* Configure the ETR Clock source */ TIM_ETR_SetConfig(htim->Instance, - 80057b2: 687b ldr r3, [r7, #4] - 80057b4: 6818 ldr r0, [r3, #0] + 800580e: 687b ldr r3, [r7, #4] + 8005810: 6818 ldr r0, [r3, #0] sClockSourceConfig->ClockPrescaler, - 80057b6: 683b ldr r3, [r7, #0] - 80057b8: 6899 ldr r1, [r3, #8] + 8005812: 683b ldr r3, [r7, #0] + 8005814: 6899 ldr r1, [r3, #8] sClockSourceConfig->ClockPolarity, - 80057ba: 683b ldr r3, [r7, #0] - 80057bc: 685a ldr r2, [r3, #4] + 8005816: 683b ldr r3, [r7, #0] + 8005818: 685a ldr r2, [r3, #4] sClockSourceConfig->ClockFilter); - 80057be: 683b ldr r3, [r7, #0] - 80057c0: 68db ldr r3, [r3, #12] + 800581a: 683b ldr r3, [r7, #0] + 800581c: 68db ldr r3, [r3, #12] TIM_ETR_SetConfig(htim->Instance, - 80057c2: f000 f9b3 bl 8005b2c + 800581e: f000 f9b3 bl 8005b88 /* Select the External clock mode1 and the ETRF trigger */ tmpsmcr = htim->Instance->SMCR; - 80057c6: 687b ldr r3, [r7, #4] - 80057c8: 681b ldr r3, [r3, #0] - 80057ca: 689b ldr r3, [r3, #8] - 80057cc: 60bb str r3, [r7, #8] + 8005822: 687b ldr r3, [r7, #4] + 8005824: 681b ldr r3, [r3, #0] + 8005826: 689b ldr r3, [r3, #8] + 8005828: 60bb str r3, [r7, #8] tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); - 80057ce: 68bb ldr r3, [r7, #8] - 80057d0: f043 0377 orr.w r3, r3, #119 @ 0x77 - 80057d4: 60bb str r3, [r7, #8] + 800582a: 68bb ldr r3, [r7, #8] + 800582c: f043 0377 orr.w r3, r3, #119 @ 0x77 + 8005830: 60bb str r3, [r7, #8] /* Write to TIMx SMCR */ htim->Instance->SMCR = tmpsmcr; - 80057d6: 687b ldr r3, [r7, #4] - 80057d8: 681b ldr r3, [r3, #0] - 80057da: 68ba ldr r2, [r7, #8] - 80057dc: 609a str r2, [r3, #8] + 8005832: 687b ldr r3, [r7, #4] + 8005834: 681b ldr r3, [r3, #0] + 8005836: 68ba ldr r2, [r7, #8] + 8005838: 609a str r2, [r3, #8] break; - 80057de: e04f b.n 8005880 + 800583a: e04f b.n 80058dc assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); /* Configure the ETR Clock source */ TIM_ETR_SetConfig(htim->Instance, - 80057e0: 687b ldr r3, [r7, #4] - 80057e2: 6818 ldr r0, [r3, #0] + 800583c: 687b ldr r3, [r7, #4] + 800583e: 6818 ldr r0, [r3, #0] sClockSourceConfig->ClockPrescaler, - 80057e4: 683b ldr r3, [r7, #0] - 80057e6: 6899 ldr r1, [r3, #8] + 8005840: 683b ldr r3, [r7, #0] + 8005842: 6899 ldr r1, [r3, #8] sClockSourceConfig->ClockPolarity, - 80057e8: 683b ldr r3, [r7, #0] - 80057ea: 685a ldr r2, [r3, #4] + 8005844: 683b ldr r3, [r7, #0] + 8005846: 685a ldr r2, [r3, #4] sClockSourceConfig->ClockFilter); - 80057ec: 683b ldr r3, [r7, #0] - 80057ee: 68db ldr r3, [r3, #12] + 8005848: 683b ldr r3, [r7, #0] + 800584a: 68db ldr r3, [r3, #12] TIM_ETR_SetConfig(htim->Instance, - 80057f0: f000 f99c bl 8005b2c + 800584c: f000 f99c bl 8005b88 /* Enable the External clock mode2 */ htim->Instance->SMCR |= TIM_SMCR_ECE; - 80057f4: 687b ldr r3, [r7, #4] - 80057f6: 681b ldr r3, [r3, #0] - 80057f8: 689a ldr r2, [r3, #8] - 80057fa: 687b ldr r3, [r7, #4] - 80057fc: 681b ldr r3, [r3, #0] - 80057fe: f442 4280 orr.w r2, r2, #16384 @ 0x4000 - 8005802: 609a str r2, [r3, #8] + 8005850: 687b ldr r3, [r7, #4] + 8005852: 681b ldr r3, [r3, #0] + 8005854: 689a ldr r2, [r3, #8] + 8005856: 687b ldr r3, [r7, #4] + 8005858: 681b ldr r3, [r3, #0] + 800585a: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 800585e: 609a str r2, [r3, #8] break; - 8005804: e03c b.n 8005880 + 8005860: e03c b.n 80058dc /* Check TI1 input conditioning related parameters */ assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); TIM_TI1_ConfigInputStage(htim->Instance, - 8005806: 687b ldr r3, [r7, #4] - 8005808: 6818 ldr r0, [r3, #0] + 8005862: 687b ldr r3, [r7, #4] + 8005864: 6818 ldr r0, [r3, #0] sClockSourceConfig->ClockPolarity, - 800580a: 683b ldr r3, [r7, #0] - 800580c: 6859 ldr r1, [r3, #4] + 8005866: 683b ldr r3, [r7, #0] + 8005868: 6859 ldr r1, [r3, #4] sClockSourceConfig->ClockFilter); - 800580e: 683b ldr r3, [r7, #0] - 8005810: 68db ldr r3, [r3, #12] + 800586a: 683b ldr r3, [r7, #0] + 800586c: 68db ldr r3, [r3, #12] TIM_TI1_ConfigInputStage(htim->Instance, - 8005812: 461a mov r2, r3 - 8005814: f000 f910 bl 8005a38 + 800586e: 461a mov r2, r3 + 8005870: f000 f910 bl 8005a94 TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); - 8005818: 687b ldr r3, [r7, #4] - 800581a: 681b ldr r3, [r3, #0] - 800581c: 2150 movs r1, #80 @ 0x50 - 800581e: 4618 mov r0, r3 - 8005820: f000 f969 bl 8005af6 + 8005874: 687b ldr r3, [r7, #4] + 8005876: 681b ldr r3, [r3, #0] + 8005878: 2150 movs r1, #80 @ 0x50 + 800587a: 4618 mov r0, r3 + 800587c: f000 f969 bl 8005b52 break; - 8005824: e02c b.n 8005880 + 8005880: e02c b.n 80058dc /* Check TI2 input conditioning related parameters */ assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); TIM_TI2_ConfigInputStage(htim->Instance, - 8005826: 687b ldr r3, [r7, #4] - 8005828: 6818 ldr r0, [r3, #0] + 8005882: 687b ldr r3, [r7, #4] + 8005884: 6818 ldr r0, [r3, #0] sClockSourceConfig->ClockPolarity, - 800582a: 683b ldr r3, [r7, #0] - 800582c: 6859 ldr r1, [r3, #4] + 8005886: 683b ldr r3, [r7, #0] + 8005888: 6859 ldr r1, [r3, #4] sClockSourceConfig->ClockFilter); - 800582e: 683b ldr r3, [r7, #0] - 8005830: 68db ldr r3, [r3, #12] + 800588a: 683b ldr r3, [r7, #0] + 800588c: 68db ldr r3, [r3, #12] TIM_TI2_ConfigInputStage(htim->Instance, - 8005832: 461a mov r2, r3 - 8005834: f000 f92f bl 8005a96 + 800588e: 461a mov r2, r3 + 8005890: f000 f92f bl 8005af2 TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); - 8005838: 687b ldr r3, [r7, #4] - 800583a: 681b ldr r3, [r3, #0] - 800583c: 2160 movs r1, #96 @ 0x60 - 800583e: 4618 mov r0, r3 - 8005840: f000 f959 bl 8005af6 + 8005894: 687b ldr r3, [r7, #4] + 8005896: 681b ldr r3, [r3, #0] + 8005898: 2160 movs r1, #96 @ 0x60 + 800589a: 4618 mov r0, r3 + 800589c: f000 f959 bl 8005b52 break; - 8005844: e01c b.n 8005880 + 80058a0: e01c b.n 80058dc /* Check TI1 input conditioning related parameters */ assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); TIM_TI1_ConfigInputStage(htim->Instance, - 8005846: 687b ldr r3, [r7, #4] - 8005848: 6818 ldr r0, [r3, #0] + 80058a2: 687b ldr r3, [r7, #4] + 80058a4: 6818 ldr r0, [r3, #0] sClockSourceConfig->ClockPolarity, - 800584a: 683b ldr r3, [r7, #0] - 800584c: 6859 ldr r1, [r3, #4] + 80058a6: 683b ldr r3, [r7, #0] + 80058a8: 6859 ldr r1, [r3, #4] sClockSourceConfig->ClockFilter); - 800584e: 683b ldr r3, [r7, #0] - 8005850: 68db ldr r3, [r3, #12] + 80058aa: 683b ldr r3, [r7, #0] + 80058ac: 68db ldr r3, [r3, #12] TIM_TI1_ConfigInputStage(htim->Instance, - 8005852: 461a mov r2, r3 - 8005854: f000 f8f0 bl 8005a38 + 80058ae: 461a mov r2, r3 + 80058b0: f000 f8f0 bl 8005a94 TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); - 8005858: 687b ldr r3, [r7, #4] - 800585a: 681b ldr r3, [r3, #0] - 800585c: 2140 movs r1, #64 @ 0x40 - 800585e: 4618 mov r0, r3 - 8005860: f000 f949 bl 8005af6 + 80058b4: 687b ldr r3, [r7, #4] + 80058b6: 681b ldr r3, [r3, #0] + 80058b8: 2140 movs r1, #64 @ 0x40 + 80058ba: 4618 mov r0, r3 + 80058bc: f000 f949 bl 8005b52 break; - 8005864: e00c b.n 8005880 + 80058c0: e00c b.n 80058dc case TIM_CLOCKSOURCE_ITR3: { /* Check whether or not the timer instance supports internal trigger input */ assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance)); TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource); - 8005866: 687b ldr r3, [r7, #4] - 8005868: 681a ldr r2, [r3, #0] - 800586a: 683b ldr r3, [r7, #0] - 800586c: 681b ldr r3, [r3, #0] - 800586e: 4619 mov r1, r3 - 8005870: 4610 mov r0, r2 - 8005872: f000 f940 bl 8005af6 + 80058c2: 687b ldr r3, [r7, #4] + 80058c4: 681a ldr r2, [r3, #0] + 80058c6: 683b ldr r3, [r7, #0] + 80058c8: 681b ldr r3, [r3, #0] + 80058ca: 4619 mov r1, r3 + 80058cc: 4610 mov r0, r2 + 80058ce: f000 f940 bl 8005b52 break; - 8005876: e003 b.n 8005880 + 80058d2: e003 b.n 80058dc } default: status = HAL_ERROR; - 8005878: 2301 movs r3, #1 - 800587a: 73fb strb r3, [r7, #15] + 80058d4: 2301 movs r3, #1 + 80058d6: 73fb strb r3, [r7, #15] break; - 800587c: e000 b.n 8005880 + 80058d8: e000 b.n 80058dc break; - 800587e: bf00 nop + 80058da: bf00 nop } htim->State = HAL_TIM_STATE_READY; - 8005880: 687b ldr r3, [r7, #4] - 8005882: 2201 movs r2, #1 - 8005884: f883 203d strb.w r2, [r3, #61] @ 0x3d + 80058dc: 687b ldr r3, [r7, #4] + 80058de: 2201 movs r2, #1 + 80058e0: f883 203d strb.w r2, [r3, #61] @ 0x3d __HAL_UNLOCK(htim); - 8005888: 687b ldr r3, [r7, #4] - 800588a: 2200 movs r2, #0 - 800588c: f883 203c strb.w r2, [r3, #60] @ 0x3c + 80058e4: 687b ldr r3, [r7, #4] + 80058e6: 2200 movs r2, #0 + 80058e8: f883 203c strb.w r2, [r3, #60] @ 0x3c return status; - 8005890: 7bfb ldrb r3, [r7, #15] + 80058ec: 7bfb ldrb r3, [r7, #15] } - 8005892: 4618 mov r0, r3 - 8005894: 3710 adds r7, #16 - 8005896: 46bd mov sp, r7 - 8005898: bd80 pop {r7, pc} + 80058ee: 4618 mov r0, r3 + 80058f0: 3710 adds r7, #16 + 80058f2: 46bd mov sp, r7 + 80058f4: bd80 pop {r7, pc} -0800589a : +080058f6 : * @brief Output Compare callback in non-blocking mode * @param htim TIM OC handle * @retval None */ __weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) { - 800589a: b480 push {r7} - 800589c: b083 sub sp, #12 - 800589e: af00 add r7, sp, #0 - 80058a0: 6078 str r0, [r7, #4] + 80058f6: b480 push {r7} + 80058f8: b083 sub sp, #12 + 80058fa: af00 add r7, sp, #0 + 80058fc: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file */ } - 80058a2: bf00 nop - 80058a4: 370c adds r7, #12 - 80058a6: 46bd mov sp, r7 - 80058a8: f85d 7b04 ldr.w r7, [sp], #4 - 80058ac: 4770 bx lr + 80058fe: bf00 nop + 8005900: 370c adds r7, #12 + 8005902: 46bd mov sp, r7 + 8005904: f85d 7b04 ldr.w r7, [sp], #4 + 8005908: 4770 bx lr -080058ae : +0800590a : * @brief Input Capture callback in non-blocking mode * @param htim TIM IC handle * @retval None */ __weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { - 80058ae: b480 push {r7} - 80058b0: b083 sub sp, #12 - 80058b2: af00 add r7, sp, #0 - 80058b4: 6078 str r0, [r7, #4] + 800590a: b480 push {r7} + 800590c: b083 sub sp, #12 + 800590e: af00 add r7, sp, #0 + 8005910: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_IC_CaptureCallback could be implemented in the user file */ } - 80058b6: bf00 nop - 80058b8: 370c adds r7, #12 - 80058ba: 46bd mov sp, r7 - 80058bc: f85d 7b04 ldr.w r7, [sp], #4 - 80058c0: 4770 bx lr + 8005912: bf00 nop + 8005914: 370c adds r7, #12 + 8005916: 46bd mov sp, r7 + 8005918: f85d 7b04 ldr.w r7, [sp], #4 + 800591c: 4770 bx lr -080058c2 : +0800591e : * @brief PWM Pulse finished callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) { - 80058c2: b480 push {r7} - 80058c4: b083 sub sp, #12 - 80058c6: af00 add r7, sp, #0 - 80058c8: 6078 str r0, [r7, #4] + 800591e: b480 push {r7} + 8005920: b083 sub sp, #12 + 8005922: af00 add r7, sp, #0 + 8005924: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file */ } - 80058ca: bf00 nop - 80058cc: 370c adds r7, #12 - 80058ce: 46bd mov sp, r7 - 80058d0: f85d 7b04 ldr.w r7, [sp], #4 - 80058d4: 4770 bx lr + 8005926: bf00 nop + 8005928: 370c adds r7, #12 + 800592a: 46bd mov sp, r7 + 800592c: f85d 7b04 ldr.w r7, [sp], #4 + 8005930: 4770 bx lr -080058d6 : +08005932 : * @brief Hall Trigger detection callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim) { - 80058d6: b480 push {r7} - 80058d8: b083 sub sp, #12 - 80058da: af00 add r7, sp, #0 - 80058dc: 6078 str r0, [r7, #4] + 8005932: b480 push {r7} + 8005934: b083 sub sp, #12 + 8005936: af00 add r7, sp, #0 + 8005938: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_TriggerCallback could be implemented in the user file */ } - 80058de: bf00 nop - 80058e0: 370c adds r7, #12 - 80058e2: 46bd mov sp, r7 - 80058e4: f85d 7b04 ldr.w r7, [sp], #4 - 80058e8: 4770 bx lr + 800593a: bf00 nop + 800593c: 370c adds r7, #12 + 800593e: 46bd mov sp, r7 + 8005940: f85d 7b04 ldr.w r7, [sp], #4 + 8005944: 4770 bx lr ... -080058ec : +08005948 : * @param TIMx TIM peripheral * @param Structure TIM Base configuration structure * @retval None */ void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure) { - 80058ec: b480 push {r7} - 80058ee: b085 sub sp, #20 - 80058f0: af00 add r7, sp, #0 - 80058f2: 6078 str r0, [r7, #4] - 80058f4: 6039 str r1, [r7, #0] + 8005948: b480 push {r7} + 800594a: b085 sub sp, #20 + 800594c: af00 add r7, sp, #0 + 800594e: 6078 str r0, [r7, #4] + 8005950: 6039 str r1, [r7, #0] uint32_t tmpcr1; tmpcr1 = TIMx->CR1; - 80058f6: 687b ldr r3, [r7, #4] - 80058f8: 681b ldr r3, [r3, #0] - 80058fa: 60fb str r3, [r7, #12] + 8005952: 687b ldr r3, [r7, #4] + 8005954: 681b ldr r3, [r3, #0] + 8005956: 60fb str r3, [r7, #12] /* Set TIM Time Base Unit parameters ---------------------------------------*/ if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) - 80058fc: 687b ldr r3, [r7, #4] - 80058fe: 4a43 ldr r2, [pc, #268] @ (8005a0c ) - 8005900: 4293 cmp r3, r2 - 8005902: d013 beq.n 800592c - 8005904: 687b ldr r3, [r7, #4] - 8005906: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 800590a: d00f beq.n 800592c - 800590c: 687b ldr r3, [r7, #4] - 800590e: 4a40 ldr r2, [pc, #256] @ (8005a10 ) - 8005910: 4293 cmp r3, r2 - 8005912: d00b beq.n 800592c - 8005914: 687b ldr r3, [r7, #4] - 8005916: 4a3f ldr r2, [pc, #252] @ (8005a14 ) - 8005918: 4293 cmp r3, r2 - 800591a: d007 beq.n 800592c - 800591c: 687b ldr r3, [r7, #4] - 800591e: 4a3e ldr r2, [pc, #248] @ (8005a18 ) - 8005920: 4293 cmp r3, r2 - 8005922: d003 beq.n 800592c - 8005924: 687b ldr r3, [r7, #4] - 8005926: 4a3d ldr r2, [pc, #244] @ (8005a1c ) - 8005928: 4293 cmp r3, r2 - 800592a: d108 bne.n 800593e + 8005958: 687b ldr r3, [r7, #4] + 800595a: 4a43 ldr r2, [pc, #268] @ (8005a68 ) + 800595c: 4293 cmp r3, r2 + 800595e: d013 beq.n 8005988 + 8005960: 687b ldr r3, [r7, #4] + 8005962: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8005966: d00f beq.n 8005988 + 8005968: 687b ldr r3, [r7, #4] + 800596a: 4a40 ldr r2, [pc, #256] @ (8005a6c ) + 800596c: 4293 cmp r3, r2 + 800596e: d00b beq.n 8005988 + 8005970: 687b ldr r3, [r7, #4] + 8005972: 4a3f ldr r2, [pc, #252] @ (8005a70 ) + 8005974: 4293 cmp r3, r2 + 8005976: d007 beq.n 8005988 + 8005978: 687b ldr r3, [r7, #4] + 800597a: 4a3e ldr r2, [pc, #248] @ (8005a74 ) + 800597c: 4293 cmp r3, r2 + 800597e: d003 beq.n 8005988 + 8005980: 687b ldr r3, [r7, #4] + 8005982: 4a3d ldr r2, [pc, #244] @ (8005a78 ) + 8005984: 4293 cmp r3, r2 + 8005986: d108 bne.n 800599a { /* Select the Counter Mode */ tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); - 800592c: 68fb ldr r3, [r7, #12] - 800592e: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8005932: 60fb str r3, [r7, #12] + 8005988: 68fb ldr r3, [r7, #12] + 800598a: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800598e: 60fb str r3, [r7, #12] tmpcr1 |= Structure->CounterMode; - 8005934: 683b ldr r3, [r7, #0] - 8005936: 685b ldr r3, [r3, #4] - 8005938: 68fa ldr r2, [r7, #12] - 800593a: 4313 orrs r3, r2 - 800593c: 60fb str r3, [r7, #12] + 8005990: 683b ldr r3, [r7, #0] + 8005992: 685b ldr r3, [r3, #4] + 8005994: 68fa ldr r2, [r7, #12] + 8005996: 4313 orrs r3, r2 + 8005998: 60fb str r3, [r7, #12] } if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) - 800593e: 687b ldr r3, [r7, #4] - 8005940: 4a32 ldr r2, [pc, #200] @ (8005a0c ) - 8005942: 4293 cmp r3, r2 - 8005944: d02b beq.n 800599e - 8005946: 687b ldr r3, [r7, #4] - 8005948: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 800594c: d027 beq.n 800599e - 800594e: 687b ldr r3, [r7, #4] - 8005950: 4a2f ldr r2, [pc, #188] @ (8005a10 ) - 8005952: 4293 cmp r3, r2 - 8005954: d023 beq.n 800599e - 8005956: 687b ldr r3, [r7, #4] - 8005958: 4a2e ldr r2, [pc, #184] @ (8005a14 ) - 800595a: 4293 cmp r3, r2 - 800595c: d01f beq.n 800599e - 800595e: 687b ldr r3, [r7, #4] - 8005960: 4a2d ldr r2, [pc, #180] @ (8005a18 ) - 8005962: 4293 cmp r3, r2 - 8005964: d01b beq.n 800599e - 8005966: 687b ldr r3, [r7, #4] - 8005968: 4a2c ldr r2, [pc, #176] @ (8005a1c ) - 800596a: 4293 cmp r3, r2 - 800596c: d017 beq.n 800599e - 800596e: 687b ldr r3, [r7, #4] - 8005970: 4a2b ldr r2, [pc, #172] @ (8005a20 ) - 8005972: 4293 cmp r3, r2 - 8005974: d013 beq.n 800599e - 8005976: 687b ldr r3, [r7, #4] - 8005978: 4a2a ldr r2, [pc, #168] @ (8005a24 ) - 800597a: 4293 cmp r3, r2 - 800597c: d00f beq.n 800599e - 800597e: 687b ldr r3, [r7, #4] - 8005980: 4a29 ldr r2, [pc, #164] @ (8005a28 ) - 8005982: 4293 cmp r3, r2 - 8005984: d00b beq.n 800599e - 8005986: 687b ldr r3, [r7, #4] - 8005988: 4a28 ldr r2, [pc, #160] @ (8005a2c ) - 800598a: 4293 cmp r3, r2 - 800598c: d007 beq.n 800599e - 800598e: 687b ldr r3, [r7, #4] - 8005990: 4a27 ldr r2, [pc, #156] @ (8005a30 ) - 8005992: 4293 cmp r3, r2 - 8005994: d003 beq.n 800599e - 8005996: 687b ldr r3, [r7, #4] - 8005998: 4a26 ldr r2, [pc, #152] @ (8005a34 ) - 800599a: 4293 cmp r3, r2 - 800599c: d108 bne.n 80059b0 + 800599a: 687b ldr r3, [r7, #4] + 800599c: 4a32 ldr r2, [pc, #200] @ (8005a68 ) + 800599e: 4293 cmp r3, r2 + 80059a0: d02b beq.n 80059fa + 80059a2: 687b ldr r3, [r7, #4] + 80059a4: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 80059a8: d027 beq.n 80059fa + 80059aa: 687b ldr r3, [r7, #4] + 80059ac: 4a2f ldr r2, [pc, #188] @ (8005a6c ) + 80059ae: 4293 cmp r3, r2 + 80059b0: d023 beq.n 80059fa + 80059b2: 687b ldr r3, [r7, #4] + 80059b4: 4a2e ldr r2, [pc, #184] @ (8005a70 ) + 80059b6: 4293 cmp r3, r2 + 80059b8: d01f beq.n 80059fa + 80059ba: 687b ldr r3, [r7, #4] + 80059bc: 4a2d ldr r2, [pc, #180] @ (8005a74 ) + 80059be: 4293 cmp r3, r2 + 80059c0: d01b beq.n 80059fa + 80059c2: 687b ldr r3, [r7, #4] + 80059c4: 4a2c ldr r2, [pc, #176] @ (8005a78 ) + 80059c6: 4293 cmp r3, r2 + 80059c8: d017 beq.n 80059fa + 80059ca: 687b ldr r3, [r7, #4] + 80059cc: 4a2b ldr r2, [pc, #172] @ (8005a7c ) + 80059ce: 4293 cmp r3, r2 + 80059d0: d013 beq.n 80059fa + 80059d2: 687b ldr r3, [r7, #4] + 80059d4: 4a2a ldr r2, [pc, #168] @ (8005a80 ) + 80059d6: 4293 cmp r3, r2 + 80059d8: d00f beq.n 80059fa + 80059da: 687b ldr r3, [r7, #4] + 80059dc: 4a29 ldr r2, [pc, #164] @ (8005a84 ) + 80059de: 4293 cmp r3, r2 + 80059e0: d00b beq.n 80059fa + 80059e2: 687b ldr r3, [r7, #4] + 80059e4: 4a28 ldr r2, [pc, #160] @ (8005a88 ) + 80059e6: 4293 cmp r3, r2 + 80059e8: d007 beq.n 80059fa + 80059ea: 687b ldr r3, [r7, #4] + 80059ec: 4a27 ldr r2, [pc, #156] @ (8005a8c ) + 80059ee: 4293 cmp r3, r2 + 80059f0: d003 beq.n 80059fa + 80059f2: 687b ldr r3, [r7, #4] + 80059f4: 4a26 ldr r2, [pc, #152] @ (8005a90 ) + 80059f6: 4293 cmp r3, r2 + 80059f8: d108 bne.n 8005a0c { /* Set the clock division */ tmpcr1 &= ~TIM_CR1_CKD; - 800599e: 68fb ldr r3, [r7, #12] - 80059a0: f423 7340 bic.w r3, r3, #768 @ 0x300 - 80059a4: 60fb str r3, [r7, #12] + 80059fa: 68fb ldr r3, [r7, #12] + 80059fc: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8005a00: 60fb str r3, [r7, #12] tmpcr1 |= (uint32_t)Structure->ClockDivision; - 80059a6: 683b ldr r3, [r7, #0] - 80059a8: 68db ldr r3, [r3, #12] - 80059aa: 68fa ldr r2, [r7, #12] - 80059ac: 4313 orrs r3, r2 - 80059ae: 60fb str r3, [r7, #12] + 8005a02: 683b ldr r3, [r7, #0] + 8005a04: 68db ldr r3, [r3, #12] + 8005a06: 68fa ldr r2, [r7, #12] + 8005a08: 4313 orrs r3, r2 + 8005a0a: 60fb str r3, [r7, #12] } /* Set the auto-reload preload */ MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); - 80059b0: 68fb ldr r3, [r7, #12] - 80059b2: f023 0280 bic.w r2, r3, #128 @ 0x80 - 80059b6: 683b ldr r3, [r7, #0] - 80059b8: 695b ldr r3, [r3, #20] - 80059ba: 4313 orrs r3, r2 - 80059bc: 60fb str r3, [r7, #12] + 8005a0c: 68fb ldr r3, [r7, #12] + 8005a0e: f023 0280 bic.w r2, r3, #128 @ 0x80 + 8005a12: 683b ldr r3, [r7, #0] + 8005a14: 695b ldr r3, [r3, #20] + 8005a16: 4313 orrs r3, r2 + 8005a18: 60fb str r3, [r7, #12] /* Set the Autoreload value */ TIMx->ARR = (uint32_t)Structure->Period ; - 80059be: 683b ldr r3, [r7, #0] - 80059c0: 689a ldr r2, [r3, #8] - 80059c2: 687b ldr r3, [r7, #4] - 80059c4: 62da str r2, [r3, #44] @ 0x2c + 8005a1a: 683b ldr r3, [r7, #0] + 8005a1c: 689a ldr r2, [r3, #8] + 8005a1e: 687b ldr r3, [r7, #4] + 8005a20: 62da str r2, [r3, #44] @ 0x2c /* Set the Prescaler value */ TIMx->PSC = Structure->Prescaler; - 80059c6: 683b ldr r3, [r7, #0] - 80059c8: 681a ldr r2, [r3, #0] - 80059ca: 687b ldr r3, [r7, #4] - 80059cc: 629a str r2, [r3, #40] @ 0x28 + 8005a22: 683b ldr r3, [r7, #0] + 8005a24: 681a ldr r2, [r3, #0] + 8005a26: 687b ldr r3, [r7, #4] + 8005a28: 629a str r2, [r3, #40] @ 0x28 if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx)) - 80059ce: 687b ldr r3, [r7, #4] - 80059d0: 4a0e ldr r2, [pc, #56] @ (8005a0c ) - 80059d2: 4293 cmp r3, r2 - 80059d4: d003 beq.n 80059de - 80059d6: 687b ldr r3, [r7, #4] - 80059d8: 4a10 ldr r2, [pc, #64] @ (8005a1c ) - 80059da: 4293 cmp r3, r2 - 80059dc: d103 bne.n 80059e6 + 8005a2a: 687b ldr r3, [r7, #4] + 8005a2c: 4a0e ldr r2, [pc, #56] @ (8005a68 ) + 8005a2e: 4293 cmp r3, r2 + 8005a30: d003 beq.n 8005a3a + 8005a32: 687b ldr r3, [r7, #4] + 8005a34: 4a10 ldr r2, [pc, #64] @ (8005a78 ) + 8005a36: 4293 cmp r3, r2 + 8005a38: d103 bne.n 8005a42 { /* Set the Repetition Counter value */ TIMx->RCR = Structure->RepetitionCounter; - 80059de: 683b ldr r3, [r7, #0] - 80059e0: 691a ldr r2, [r3, #16] - 80059e2: 687b ldr r3, [r7, #4] - 80059e4: 631a str r2, [r3, #48] @ 0x30 + 8005a3a: 683b ldr r3, [r7, #0] + 8005a3c: 691a ldr r2, [r3, #16] + 8005a3e: 687b ldr r3, [r7, #4] + 8005a40: 631a str r2, [r3, #48] @ 0x30 } /* Disable Update Event (UEV) with Update Generation (UG) by changing Update Request Source (URS) to avoid Update flag (UIF) */ SET_BIT(TIMx->CR1, TIM_CR1_URS); - 80059e6: 687b ldr r3, [r7, #4] - 80059e8: 681b ldr r3, [r3, #0] - 80059ea: f043 0204 orr.w r2, r3, #4 - 80059ee: 687b ldr r3, [r7, #4] - 80059f0: 601a str r2, [r3, #0] + 8005a42: 687b ldr r3, [r7, #4] + 8005a44: 681b ldr r3, [r3, #0] + 8005a46: f043 0204 orr.w r2, r3, #4 + 8005a4a: 687b ldr r3, [r7, #4] + 8005a4c: 601a str r2, [r3, #0] /* Generate an update event to reload the Prescaler and the repetition counter (only for advanced timer) value immediately */ TIMx->EGR = TIM_EGR_UG; - 80059f2: 687b ldr r3, [r7, #4] - 80059f4: 2201 movs r2, #1 - 80059f6: 615a str r2, [r3, #20] + 8005a4e: 687b ldr r3, [r7, #4] + 8005a50: 2201 movs r2, #1 + 8005a52: 615a str r2, [r3, #20] TIMx->CR1 = tmpcr1; - 80059f8: 687b ldr r3, [r7, #4] - 80059fa: 68fa ldr r2, [r7, #12] - 80059fc: 601a str r2, [r3, #0] + 8005a54: 687b ldr r3, [r7, #4] + 8005a56: 68fa ldr r2, [r7, #12] + 8005a58: 601a str r2, [r3, #0] } - 80059fe: bf00 nop - 8005a00: 3714 adds r7, #20 - 8005a02: 46bd mov sp, r7 - 8005a04: f85d 7b04 ldr.w r7, [sp], #4 - 8005a08: 4770 bx lr - 8005a0a: bf00 nop - 8005a0c: 40010000 .word 0x40010000 - 8005a10: 40000400 .word 0x40000400 - 8005a14: 40000800 .word 0x40000800 - 8005a18: 40000c00 .word 0x40000c00 - 8005a1c: 40010400 .word 0x40010400 - 8005a20: 40014000 .word 0x40014000 - 8005a24: 40014400 .word 0x40014400 - 8005a28: 40014800 .word 0x40014800 - 8005a2c: 40001800 .word 0x40001800 - 8005a30: 40001c00 .word 0x40001c00 - 8005a34: 40002000 .word 0x40002000 + 8005a5a: bf00 nop + 8005a5c: 3714 adds r7, #20 + 8005a5e: 46bd mov sp, r7 + 8005a60: f85d 7b04 ldr.w r7, [sp], #4 + 8005a64: 4770 bx lr + 8005a66: bf00 nop + 8005a68: 40010000 .word 0x40010000 + 8005a6c: 40000400 .word 0x40000400 + 8005a70: 40000800 .word 0x40000800 + 8005a74: 40000c00 .word 0x40000c00 + 8005a78: 40010400 .word 0x40010400 + 8005a7c: 40014000 .word 0x40014000 + 8005a80: 40014400 .word 0x40014400 + 8005a84: 40014800 .word 0x40014800 + 8005a88: 40001800 .word 0x40001800 + 8005a8c: 40001c00 .word 0x40001c00 + 8005a90: 40002000 .word 0x40002000 -08005a38 : +08005a94 : * @param TIM_ICFilter Specifies the Input Capture Filter. * This parameter must be a value between 0x00 and 0x0F. * @retval None */ static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) { - 8005a38: b480 push {r7} - 8005a3a: b087 sub sp, #28 - 8005a3c: af00 add r7, sp, #0 - 8005a3e: 60f8 str r0, [r7, #12] - 8005a40: 60b9 str r1, [r7, #8] - 8005a42: 607a str r2, [r7, #4] + 8005a94: b480 push {r7} + 8005a96: b087 sub sp, #28 + 8005a98: af00 add r7, sp, #0 + 8005a9a: 60f8 str r0, [r7, #12] + 8005a9c: 60b9 str r1, [r7, #8] + 8005a9e: 607a str r2, [r7, #4] uint32_t tmpccmr1; uint32_t tmpccer; /* Disable the Channel 1: Reset the CC1E Bit */ tmpccer = TIMx->CCER; - 8005a44: 68fb ldr r3, [r7, #12] - 8005a46: 6a1b ldr r3, [r3, #32] - 8005a48: 617b str r3, [r7, #20] + 8005aa0: 68fb ldr r3, [r7, #12] + 8005aa2: 6a1b ldr r3, [r3, #32] + 8005aa4: 617b str r3, [r7, #20] TIMx->CCER &= ~TIM_CCER_CC1E; - 8005a4a: 68fb ldr r3, [r7, #12] - 8005a4c: 6a1b ldr r3, [r3, #32] - 8005a4e: f023 0201 bic.w r2, r3, #1 - 8005a52: 68fb ldr r3, [r7, #12] - 8005a54: 621a str r2, [r3, #32] + 8005aa6: 68fb ldr r3, [r7, #12] + 8005aa8: 6a1b ldr r3, [r3, #32] + 8005aaa: f023 0201 bic.w r2, r3, #1 + 8005aae: 68fb ldr r3, [r7, #12] + 8005ab0: 621a str r2, [r3, #32] tmpccmr1 = TIMx->CCMR1; - 8005a56: 68fb ldr r3, [r7, #12] - 8005a58: 699b ldr r3, [r3, #24] - 8005a5a: 613b str r3, [r7, #16] + 8005ab2: 68fb ldr r3, [r7, #12] + 8005ab4: 699b ldr r3, [r3, #24] + 8005ab6: 613b str r3, [r7, #16] /* Set the filter */ tmpccmr1 &= ~TIM_CCMR1_IC1F; - 8005a5c: 693b ldr r3, [r7, #16] - 8005a5e: f023 03f0 bic.w r3, r3, #240 @ 0xf0 - 8005a62: 613b str r3, [r7, #16] + 8005ab8: 693b ldr r3, [r7, #16] + 8005aba: f023 03f0 bic.w r3, r3, #240 @ 0xf0 + 8005abe: 613b str r3, [r7, #16] tmpccmr1 |= (TIM_ICFilter << 4U); - 8005a64: 687b ldr r3, [r7, #4] - 8005a66: 011b lsls r3, r3, #4 - 8005a68: 693a ldr r2, [r7, #16] - 8005a6a: 4313 orrs r3, r2 - 8005a6c: 613b str r3, [r7, #16] + 8005ac0: 687b ldr r3, [r7, #4] + 8005ac2: 011b lsls r3, r3, #4 + 8005ac4: 693a ldr r2, [r7, #16] + 8005ac6: 4313 orrs r3, r2 + 8005ac8: 613b str r3, [r7, #16] /* Select the Polarity and set the CC1E Bit */ tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); - 8005a6e: 697b ldr r3, [r7, #20] - 8005a70: f023 030a bic.w r3, r3, #10 - 8005a74: 617b str r3, [r7, #20] + 8005aca: 697b ldr r3, [r7, #20] + 8005acc: f023 030a bic.w r3, r3, #10 + 8005ad0: 617b str r3, [r7, #20] tmpccer |= TIM_ICPolarity; - 8005a76: 697a ldr r2, [r7, #20] - 8005a78: 68bb ldr r3, [r7, #8] - 8005a7a: 4313 orrs r3, r2 - 8005a7c: 617b str r3, [r7, #20] + 8005ad2: 697a ldr r2, [r7, #20] + 8005ad4: 68bb ldr r3, [r7, #8] + 8005ad6: 4313 orrs r3, r2 + 8005ad8: 617b str r3, [r7, #20] /* Write to TIMx CCMR1 and CCER registers */ TIMx->CCMR1 = tmpccmr1; - 8005a7e: 68fb ldr r3, [r7, #12] - 8005a80: 693a ldr r2, [r7, #16] - 8005a82: 619a str r2, [r3, #24] + 8005ada: 68fb ldr r3, [r7, #12] + 8005adc: 693a ldr r2, [r7, #16] + 8005ade: 619a str r2, [r3, #24] TIMx->CCER = tmpccer; - 8005a84: 68fb ldr r3, [r7, #12] - 8005a86: 697a ldr r2, [r7, #20] - 8005a88: 621a str r2, [r3, #32] + 8005ae0: 68fb ldr r3, [r7, #12] + 8005ae2: 697a ldr r2, [r7, #20] + 8005ae4: 621a str r2, [r3, #32] } - 8005a8a: bf00 nop - 8005a8c: 371c adds r7, #28 - 8005a8e: 46bd mov sp, r7 - 8005a90: f85d 7b04 ldr.w r7, [sp], #4 - 8005a94: 4770 bx lr + 8005ae6: bf00 nop + 8005ae8: 371c adds r7, #28 + 8005aea: 46bd mov sp, r7 + 8005aec: f85d 7b04 ldr.w r7, [sp], #4 + 8005af0: 4770 bx lr -08005a96 : +08005af2 : * @param TIM_ICFilter Specifies the Input Capture Filter. * This parameter must be a value between 0x00 and 0x0F. * @retval None */ static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) { - 8005a96: b480 push {r7} - 8005a98: b087 sub sp, #28 - 8005a9a: af00 add r7, sp, #0 - 8005a9c: 60f8 str r0, [r7, #12] - 8005a9e: 60b9 str r1, [r7, #8] - 8005aa0: 607a str r2, [r7, #4] + 8005af2: b480 push {r7} + 8005af4: b087 sub sp, #28 + 8005af6: af00 add r7, sp, #0 + 8005af8: 60f8 str r0, [r7, #12] + 8005afa: 60b9 str r1, [r7, #8] + 8005afc: 607a str r2, [r7, #4] uint32_t tmpccmr1; uint32_t tmpccer; /* Disable the Channel 2: Reset the CC2E Bit */ tmpccer = TIMx->CCER; - 8005aa2: 68fb ldr r3, [r7, #12] - 8005aa4: 6a1b ldr r3, [r3, #32] - 8005aa6: 617b str r3, [r7, #20] + 8005afe: 68fb ldr r3, [r7, #12] + 8005b00: 6a1b ldr r3, [r3, #32] + 8005b02: 617b str r3, [r7, #20] TIMx->CCER &= ~TIM_CCER_CC2E; - 8005aa8: 68fb ldr r3, [r7, #12] - 8005aaa: 6a1b ldr r3, [r3, #32] - 8005aac: f023 0210 bic.w r2, r3, #16 - 8005ab0: 68fb ldr r3, [r7, #12] - 8005ab2: 621a str r2, [r3, #32] + 8005b04: 68fb ldr r3, [r7, #12] + 8005b06: 6a1b ldr r3, [r3, #32] + 8005b08: f023 0210 bic.w r2, r3, #16 + 8005b0c: 68fb ldr r3, [r7, #12] + 8005b0e: 621a str r2, [r3, #32] tmpccmr1 = TIMx->CCMR1; - 8005ab4: 68fb ldr r3, [r7, #12] - 8005ab6: 699b ldr r3, [r3, #24] - 8005ab8: 613b str r3, [r7, #16] + 8005b10: 68fb ldr r3, [r7, #12] + 8005b12: 699b ldr r3, [r3, #24] + 8005b14: 613b str r3, [r7, #16] /* Set the filter */ tmpccmr1 &= ~TIM_CCMR1_IC2F; - 8005aba: 693b ldr r3, [r7, #16] - 8005abc: f423 4370 bic.w r3, r3, #61440 @ 0xf000 - 8005ac0: 613b str r3, [r7, #16] + 8005b16: 693b ldr r3, [r7, #16] + 8005b18: f423 4370 bic.w r3, r3, #61440 @ 0xf000 + 8005b1c: 613b str r3, [r7, #16] tmpccmr1 |= (TIM_ICFilter << 12U); - 8005ac2: 687b ldr r3, [r7, #4] - 8005ac4: 031b lsls r3, r3, #12 - 8005ac6: 693a ldr r2, [r7, #16] - 8005ac8: 4313 orrs r3, r2 - 8005aca: 613b str r3, [r7, #16] + 8005b1e: 687b ldr r3, [r7, #4] + 8005b20: 031b lsls r3, r3, #12 + 8005b22: 693a ldr r2, [r7, #16] + 8005b24: 4313 orrs r3, r2 + 8005b26: 613b str r3, [r7, #16] /* Select the Polarity and set the CC2E Bit */ tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); - 8005acc: 697b ldr r3, [r7, #20] - 8005ace: f023 03a0 bic.w r3, r3, #160 @ 0xa0 - 8005ad2: 617b str r3, [r7, #20] + 8005b28: 697b ldr r3, [r7, #20] + 8005b2a: f023 03a0 bic.w r3, r3, #160 @ 0xa0 + 8005b2e: 617b str r3, [r7, #20] tmpccer |= (TIM_ICPolarity << 4U); - 8005ad4: 68bb ldr r3, [r7, #8] - 8005ad6: 011b lsls r3, r3, #4 - 8005ad8: 697a ldr r2, [r7, #20] - 8005ada: 4313 orrs r3, r2 - 8005adc: 617b str r3, [r7, #20] + 8005b30: 68bb ldr r3, [r7, #8] + 8005b32: 011b lsls r3, r3, #4 + 8005b34: 697a ldr r2, [r7, #20] + 8005b36: 4313 orrs r3, r2 + 8005b38: 617b str r3, [r7, #20] /* Write to TIMx CCMR1 and CCER registers */ TIMx->CCMR1 = tmpccmr1 ; - 8005ade: 68fb ldr r3, [r7, #12] - 8005ae0: 693a ldr r2, [r7, #16] - 8005ae2: 619a str r2, [r3, #24] + 8005b3a: 68fb ldr r3, [r7, #12] + 8005b3c: 693a ldr r2, [r7, #16] + 8005b3e: 619a str r2, [r3, #24] TIMx->CCER = tmpccer; - 8005ae4: 68fb ldr r3, [r7, #12] - 8005ae6: 697a ldr r2, [r7, #20] - 8005ae8: 621a str r2, [r3, #32] + 8005b40: 68fb ldr r3, [r7, #12] + 8005b42: 697a ldr r2, [r7, #20] + 8005b44: 621a str r2, [r3, #32] } - 8005aea: bf00 nop - 8005aec: 371c adds r7, #28 - 8005aee: 46bd mov sp, r7 - 8005af0: f85d 7b04 ldr.w r7, [sp], #4 - 8005af4: 4770 bx lr + 8005b46: bf00 nop + 8005b48: 371c adds r7, #28 + 8005b4a: 46bd mov sp, r7 + 8005b4c: f85d 7b04 ldr.w r7, [sp], #4 + 8005b50: 4770 bx lr -08005af6 : +08005b52 : * @arg TIM_TS_TI2FP2: Filtered Timer Input 2 * @arg TIM_TS_ETRF: External Trigger input * @retval None */ static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource) { - 8005af6: b480 push {r7} - 8005af8: b085 sub sp, #20 - 8005afa: af00 add r7, sp, #0 - 8005afc: 6078 str r0, [r7, #4] - 8005afe: 6039 str r1, [r7, #0] + 8005b52: b480 push {r7} + 8005b54: b085 sub sp, #20 + 8005b56: af00 add r7, sp, #0 + 8005b58: 6078 str r0, [r7, #4] + 8005b5a: 6039 str r1, [r7, #0] uint32_t tmpsmcr; /* Get the TIMx SMCR register value */ tmpsmcr = TIMx->SMCR; - 8005b00: 687b ldr r3, [r7, #4] - 8005b02: 689b ldr r3, [r3, #8] - 8005b04: 60fb str r3, [r7, #12] + 8005b5c: 687b ldr r3, [r7, #4] + 8005b5e: 689b ldr r3, [r3, #8] + 8005b60: 60fb str r3, [r7, #12] /* Reset the TS Bits */ tmpsmcr &= ~TIM_SMCR_TS; - 8005b06: 68fb ldr r3, [r7, #12] - 8005b08: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8005b0c: 60fb str r3, [r7, #12] + 8005b62: 68fb ldr r3, [r7, #12] + 8005b64: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8005b68: 60fb str r3, [r7, #12] /* Set the Input Trigger source and the slave mode*/ tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); - 8005b0e: 683a ldr r2, [r7, #0] - 8005b10: 68fb ldr r3, [r7, #12] - 8005b12: 4313 orrs r3, r2 - 8005b14: f043 0307 orr.w r3, r3, #7 - 8005b18: 60fb str r3, [r7, #12] + 8005b6a: 683a ldr r2, [r7, #0] + 8005b6c: 68fb ldr r3, [r7, #12] + 8005b6e: 4313 orrs r3, r2 + 8005b70: f043 0307 orr.w r3, r3, #7 + 8005b74: 60fb str r3, [r7, #12] /* Write to TIMx SMCR */ TIMx->SMCR = tmpsmcr; - 8005b1a: 687b ldr r3, [r7, #4] - 8005b1c: 68fa ldr r2, [r7, #12] - 8005b1e: 609a str r2, [r3, #8] + 8005b76: 687b ldr r3, [r7, #4] + 8005b78: 68fa ldr r2, [r7, #12] + 8005b7a: 609a str r2, [r3, #8] } - 8005b20: bf00 nop - 8005b22: 3714 adds r7, #20 - 8005b24: 46bd mov sp, r7 - 8005b26: f85d 7b04 ldr.w r7, [sp], #4 - 8005b2a: 4770 bx lr + 8005b7c: bf00 nop + 8005b7e: 3714 adds r7, #20 + 8005b80: 46bd mov sp, r7 + 8005b82: f85d 7b04 ldr.w r7, [sp], #4 + 8005b86: 4770 bx lr -08005b2c : +08005b88 : * This parameter must be a value between 0x00 and 0x0F * @retval None */ void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler, uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter) { - 8005b2c: b480 push {r7} - 8005b2e: b087 sub sp, #28 - 8005b30: af00 add r7, sp, #0 - 8005b32: 60f8 str r0, [r7, #12] - 8005b34: 60b9 str r1, [r7, #8] - 8005b36: 607a str r2, [r7, #4] - 8005b38: 603b str r3, [r7, #0] + 8005b88: b480 push {r7} + 8005b8a: b087 sub sp, #28 + 8005b8c: af00 add r7, sp, #0 + 8005b8e: 60f8 str r0, [r7, #12] + 8005b90: 60b9 str r1, [r7, #8] + 8005b92: 607a str r2, [r7, #4] + 8005b94: 603b str r3, [r7, #0] uint32_t tmpsmcr; tmpsmcr = TIMx->SMCR; - 8005b3a: 68fb ldr r3, [r7, #12] - 8005b3c: 689b ldr r3, [r3, #8] - 8005b3e: 617b str r3, [r7, #20] + 8005b96: 68fb ldr r3, [r7, #12] + 8005b98: 689b ldr r3, [r3, #8] + 8005b9a: 617b str r3, [r7, #20] /* Reset the ETR Bits */ tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); - 8005b40: 697b ldr r3, [r7, #20] - 8005b42: f423 437f bic.w r3, r3, #65280 @ 0xff00 - 8005b46: 617b str r3, [r7, #20] + 8005b9c: 697b ldr r3, [r7, #20] + 8005b9e: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 8005ba2: 617b str r3, [r7, #20] /* Set the Prescaler, the Filter value and the Polarity */ tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); - 8005b48: 683b ldr r3, [r7, #0] - 8005b4a: 021a lsls r2, r3, #8 - 8005b4c: 687b ldr r3, [r7, #4] - 8005b4e: 431a orrs r2, r3 - 8005b50: 68bb ldr r3, [r7, #8] - 8005b52: 4313 orrs r3, r2 - 8005b54: 697a ldr r2, [r7, #20] - 8005b56: 4313 orrs r3, r2 - 8005b58: 617b str r3, [r7, #20] + 8005ba4: 683b ldr r3, [r7, #0] + 8005ba6: 021a lsls r2, r3, #8 + 8005ba8: 687b ldr r3, [r7, #4] + 8005baa: 431a orrs r2, r3 + 8005bac: 68bb ldr r3, [r7, #8] + 8005bae: 4313 orrs r3, r2 + 8005bb0: 697a ldr r2, [r7, #20] + 8005bb2: 4313 orrs r3, r2 + 8005bb4: 617b str r3, [r7, #20] /* Write to TIMx SMCR */ TIMx->SMCR = tmpsmcr; - 8005b5a: 68fb ldr r3, [r7, #12] - 8005b5c: 697a ldr r2, [r7, #20] - 8005b5e: 609a str r2, [r3, #8] + 8005bb6: 68fb ldr r3, [r7, #12] + 8005bb8: 697a ldr r2, [r7, #20] + 8005bba: 609a str r2, [r3, #8] } - 8005b60: bf00 nop - 8005b62: 371c adds r7, #28 - 8005b64: 46bd mov sp, r7 - 8005b66: f85d 7b04 ldr.w r7, [sp], #4 - 8005b6a: 4770 bx lr + 8005bbc: bf00 nop + 8005bbe: 371c adds r7, #28 + 8005bc0: 46bd mov sp, r7 + 8005bc2: f85d 7b04 ldr.w r7, [sp], #4 + 8005bc6: 4770 bx lr -08005b6c : +08005bc8 : * mode. * @retval HAL status */ HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, const TIM_MasterConfigTypeDef *sMasterConfig) { - 8005b6c: b480 push {r7} - 8005b6e: b085 sub sp, #20 - 8005b70: af00 add r7, sp, #0 - 8005b72: 6078 str r0, [r7, #4] - 8005b74: 6039 str r1, [r7, #0] + 8005bc8: b480 push {r7} + 8005bca: b085 sub sp, #20 + 8005bcc: af00 add r7, sp, #0 + 8005bce: 6078 str r0, [r7, #4] + 8005bd0: 6039 str r1, [r7, #0] assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance)); assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger)); assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode)); /* Check input state */ __HAL_LOCK(htim); - 8005b76: 687b ldr r3, [r7, #4] - 8005b78: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 8005b7c: 2b01 cmp r3, #1 - 8005b7e: d101 bne.n 8005b84 - 8005b80: 2302 movs r3, #2 - 8005b82: e05a b.n 8005c3a - 8005b84: 687b ldr r3, [r7, #4] - 8005b86: 2201 movs r2, #1 - 8005b88: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8005bd2: 687b ldr r3, [r7, #4] + 8005bd4: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 8005bd8: 2b01 cmp r3, #1 + 8005bda: d101 bne.n 8005be0 + 8005bdc: 2302 movs r3, #2 + 8005bde: e05a b.n 8005c96 + 8005be0: 687b ldr r3, [r7, #4] + 8005be2: 2201 movs r2, #1 + 8005be4: f883 203c strb.w r2, [r3, #60] @ 0x3c /* Change the handler state */ htim->State = HAL_TIM_STATE_BUSY; - 8005b8c: 687b ldr r3, [r7, #4] - 8005b8e: 2202 movs r2, #2 - 8005b90: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8005be8: 687b ldr r3, [r7, #4] + 8005bea: 2202 movs r2, #2 + 8005bec: f883 203d strb.w r2, [r3, #61] @ 0x3d /* Get the TIMx CR2 register value */ tmpcr2 = htim->Instance->CR2; - 8005b94: 687b ldr r3, [r7, #4] - 8005b96: 681b ldr r3, [r3, #0] - 8005b98: 685b ldr r3, [r3, #4] - 8005b9a: 60fb str r3, [r7, #12] + 8005bf0: 687b ldr r3, [r7, #4] + 8005bf2: 681b ldr r3, [r3, #0] + 8005bf4: 685b ldr r3, [r3, #4] + 8005bf6: 60fb str r3, [r7, #12] /* Get the TIMx SMCR register value */ tmpsmcr = htim->Instance->SMCR; - 8005b9c: 687b ldr r3, [r7, #4] - 8005b9e: 681b ldr r3, [r3, #0] - 8005ba0: 689b ldr r3, [r3, #8] - 8005ba2: 60bb str r3, [r7, #8] + 8005bf8: 687b ldr r3, [r7, #4] + 8005bfa: 681b ldr r3, [r3, #0] + 8005bfc: 689b ldr r3, [r3, #8] + 8005bfe: 60bb str r3, [r7, #8] /* Reset the MMS Bits */ tmpcr2 &= ~TIM_CR2_MMS; - 8005ba4: 68fb ldr r3, [r7, #12] - 8005ba6: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8005baa: 60fb str r3, [r7, #12] + 8005c00: 68fb ldr r3, [r7, #12] + 8005c02: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8005c06: 60fb str r3, [r7, #12] /* Select the TRGO source */ tmpcr2 |= sMasterConfig->MasterOutputTrigger; - 8005bac: 683b ldr r3, [r7, #0] - 8005bae: 681b ldr r3, [r3, #0] - 8005bb0: 68fa ldr r2, [r7, #12] - 8005bb2: 4313 orrs r3, r2 - 8005bb4: 60fb str r3, [r7, #12] + 8005c08: 683b ldr r3, [r7, #0] + 8005c0a: 681b ldr r3, [r3, #0] + 8005c0c: 68fa ldr r2, [r7, #12] + 8005c0e: 4313 orrs r3, r2 + 8005c10: 60fb str r3, [r7, #12] /* Update TIMx CR2 */ htim->Instance->CR2 = tmpcr2; - 8005bb6: 687b ldr r3, [r7, #4] - 8005bb8: 681b ldr r3, [r3, #0] - 8005bba: 68fa ldr r2, [r7, #12] - 8005bbc: 605a str r2, [r3, #4] + 8005c12: 687b ldr r3, [r7, #4] + 8005c14: 681b ldr r3, [r3, #0] + 8005c16: 68fa ldr r2, [r7, #12] + 8005c18: 605a str r2, [r3, #4] if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) - 8005bbe: 687b ldr r3, [r7, #4] - 8005bc0: 681b ldr r3, [r3, #0] - 8005bc2: 4a21 ldr r2, [pc, #132] @ (8005c48 ) - 8005bc4: 4293 cmp r3, r2 - 8005bc6: d022 beq.n 8005c0e - 8005bc8: 687b ldr r3, [r7, #4] - 8005bca: 681b ldr r3, [r3, #0] - 8005bcc: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8005bd0: d01d beq.n 8005c0e - 8005bd2: 687b ldr r3, [r7, #4] - 8005bd4: 681b ldr r3, [r3, #0] - 8005bd6: 4a1d ldr r2, [pc, #116] @ (8005c4c ) - 8005bd8: 4293 cmp r3, r2 - 8005bda: d018 beq.n 8005c0e - 8005bdc: 687b ldr r3, [r7, #4] - 8005bde: 681b ldr r3, [r3, #0] - 8005be0: 4a1b ldr r2, [pc, #108] @ (8005c50 ) - 8005be2: 4293 cmp r3, r2 - 8005be4: d013 beq.n 8005c0e - 8005be6: 687b ldr r3, [r7, #4] - 8005be8: 681b ldr r3, [r3, #0] - 8005bea: 4a1a ldr r2, [pc, #104] @ (8005c54 ) - 8005bec: 4293 cmp r3, r2 - 8005bee: d00e beq.n 8005c0e - 8005bf0: 687b ldr r3, [r7, #4] - 8005bf2: 681b ldr r3, [r3, #0] - 8005bf4: 4a18 ldr r2, [pc, #96] @ (8005c58 ) - 8005bf6: 4293 cmp r3, r2 - 8005bf8: d009 beq.n 8005c0e - 8005bfa: 687b ldr r3, [r7, #4] - 8005bfc: 681b ldr r3, [r3, #0] - 8005bfe: 4a17 ldr r2, [pc, #92] @ (8005c5c ) - 8005c00: 4293 cmp r3, r2 - 8005c02: d004 beq.n 8005c0e - 8005c04: 687b ldr r3, [r7, #4] - 8005c06: 681b ldr r3, [r3, #0] - 8005c08: 4a15 ldr r2, [pc, #84] @ (8005c60 ) - 8005c0a: 4293 cmp r3, r2 - 8005c0c: d10c bne.n 8005c28 + 8005c1a: 687b ldr r3, [r7, #4] + 8005c1c: 681b ldr r3, [r3, #0] + 8005c1e: 4a21 ldr r2, [pc, #132] @ (8005ca4 ) + 8005c20: 4293 cmp r3, r2 + 8005c22: d022 beq.n 8005c6a + 8005c24: 687b ldr r3, [r7, #4] + 8005c26: 681b ldr r3, [r3, #0] + 8005c28: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8005c2c: d01d beq.n 8005c6a + 8005c2e: 687b ldr r3, [r7, #4] + 8005c30: 681b ldr r3, [r3, #0] + 8005c32: 4a1d ldr r2, [pc, #116] @ (8005ca8 ) + 8005c34: 4293 cmp r3, r2 + 8005c36: d018 beq.n 8005c6a + 8005c38: 687b ldr r3, [r7, #4] + 8005c3a: 681b ldr r3, [r3, #0] + 8005c3c: 4a1b ldr r2, [pc, #108] @ (8005cac ) + 8005c3e: 4293 cmp r3, r2 + 8005c40: d013 beq.n 8005c6a + 8005c42: 687b ldr r3, [r7, #4] + 8005c44: 681b ldr r3, [r3, #0] + 8005c46: 4a1a ldr r2, [pc, #104] @ (8005cb0 ) + 8005c48: 4293 cmp r3, r2 + 8005c4a: d00e beq.n 8005c6a + 8005c4c: 687b ldr r3, [r7, #4] + 8005c4e: 681b ldr r3, [r3, #0] + 8005c50: 4a18 ldr r2, [pc, #96] @ (8005cb4 ) + 8005c52: 4293 cmp r3, r2 + 8005c54: d009 beq.n 8005c6a + 8005c56: 687b ldr r3, [r7, #4] + 8005c58: 681b ldr r3, [r3, #0] + 8005c5a: 4a17 ldr r2, [pc, #92] @ (8005cb8 ) + 8005c5c: 4293 cmp r3, r2 + 8005c5e: d004 beq.n 8005c6a + 8005c60: 687b ldr r3, [r7, #4] + 8005c62: 681b ldr r3, [r3, #0] + 8005c64: 4a15 ldr r2, [pc, #84] @ (8005cbc ) + 8005c66: 4293 cmp r3, r2 + 8005c68: d10c bne.n 8005c84 { /* Reset the MSM Bit */ tmpsmcr &= ~TIM_SMCR_MSM; - 8005c0e: 68bb ldr r3, [r7, #8] - 8005c10: f023 0380 bic.w r3, r3, #128 @ 0x80 - 8005c14: 60bb str r3, [r7, #8] + 8005c6a: 68bb ldr r3, [r7, #8] + 8005c6c: f023 0380 bic.w r3, r3, #128 @ 0x80 + 8005c70: 60bb str r3, [r7, #8] /* Set master mode */ tmpsmcr |= sMasterConfig->MasterSlaveMode; - 8005c16: 683b ldr r3, [r7, #0] - 8005c18: 685b ldr r3, [r3, #4] - 8005c1a: 68ba ldr r2, [r7, #8] - 8005c1c: 4313 orrs r3, r2 - 8005c1e: 60bb str r3, [r7, #8] + 8005c72: 683b ldr r3, [r7, #0] + 8005c74: 685b ldr r3, [r3, #4] + 8005c76: 68ba ldr r2, [r7, #8] + 8005c78: 4313 orrs r3, r2 + 8005c7a: 60bb str r3, [r7, #8] /* Update TIMx SMCR */ htim->Instance->SMCR = tmpsmcr; - 8005c20: 687b ldr r3, [r7, #4] - 8005c22: 681b ldr r3, [r3, #0] - 8005c24: 68ba ldr r2, [r7, #8] - 8005c26: 609a str r2, [r3, #8] + 8005c7c: 687b ldr r3, [r7, #4] + 8005c7e: 681b ldr r3, [r3, #0] + 8005c80: 68ba ldr r2, [r7, #8] + 8005c82: 609a str r2, [r3, #8] } /* Change the htim state */ htim->State = HAL_TIM_STATE_READY; - 8005c28: 687b ldr r3, [r7, #4] - 8005c2a: 2201 movs r2, #1 - 8005c2c: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8005c84: 687b ldr r3, [r7, #4] + 8005c86: 2201 movs r2, #1 + 8005c88: f883 203d strb.w r2, [r3, #61] @ 0x3d __HAL_UNLOCK(htim); - 8005c30: 687b ldr r3, [r7, #4] - 8005c32: 2200 movs r2, #0 - 8005c34: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8005c8c: 687b ldr r3, [r7, #4] + 8005c8e: 2200 movs r2, #0 + 8005c90: f883 203c strb.w r2, [r3, #60] @ 0x3c return HAL_OK; - 8005c38: 2300 movs r3, #0 + 8005c94: 2300 movs r3, #0 } - 8005c3a: 4618 mov r0, r3 - 8005c3c: 3714 adds r7, #20 - 8005c3e: 46bd mov sp, r7 - 8005c40: f85d 7b04 ldr.w r7, [sp], #4 - 8005c44: 4770 bx lr - 8005c46: bf00 nop - 8005c48: 40010000 .word 0x40010000 - 8005c4c: 40000400 .word 0x40000400 - 8005c50: 40000800 .word 0x40000800 - 8005c54: 40000c00 .word 0x40000c00 - 8005c58: 40010400 .word 0x40010400 - 8005c5c: 40014000 .word 0x40014000 - 8005c60: 40001800 .word 0x40001800 + 8005c96: 4618 mov r0, r3 + 8005c98: 3714 adds r7, #20 + 8005c9a: 46bd mov sp, r7 + 8005c9c: f85d 7b04 ldr.w r7, [sp], #4 + 8005ca0: 4770 bx lr + 8005ca2: bf00 nop + 8005ca4: 40010000 .word 0x40010000 + 8005ca8: 40000400 .word 0x40000400 + 8005cac: 40000800 .word 0x40000800 + 8005cb0: 40000c00 .word 0x40000c00 + 8005cb4: 40010400 .word 0x40010400 + 8005cb8: 40014000 .word 0x40014000 + 8005cbc: 40001800 .word 0x40001800 -08005c64 : +08005cc0 : * @brief Commutation callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim) { - 8005c64: b480 push {r7} - 8005c66: b083 sub sp, #12 - 8005c68: af00 add r7, sp, #0 - 8005c6a: 6078 str r0, [r7, #4] + 8005cc0: b480 push {r7} + 8005cc2: b083 sub sp, #12 + 8005cc4: af00 add r7, sp, #0 + 8005cc6: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIMEx_CommutCallback could be implemented in the user file */ } - 8005c6c: bf00 nop - 8005c6e: 370c adds r7, #12 - 8005c70: 46bd mov sp, r7 - 8005c72: f85d 7b04 ldr.w r7, [sp], #4 - 8005c76: 4770 bx lr + 8005cc8: bf00 nop + 8005cca: 370c adds r7, #12 + 8005ccc: 46bd mov sp, r7 + 8005cce: f85d 7b04 ldr.w r7, [sp], #4 + 8005cd2: 4770 bx lr -08005c78 : +08005cd4 : * @brief Break detection callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim) { - 8005c78: b480 push {r7} - 8005c7a: b083 sub sp, #12 - 8005c7c: af00 add r7, sp, #0 - 8005c7e: 6078 str r0, [r7, #4] + 8005cd4: b480 push {r7} + 8005cd6: b083 sub sp, #12 + 8005cd8: af00 add r7, sp, #0 + 8005cda: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIMEx_BreakCallback could be implemented in the user file */ } - 8005c80: bf00 nop - 8005c82: 370c adds r7, #12 - 8005c84: 46bd mov sp, r7 - 8005c86: f85d 7b04 ldr.w r7, [sp], #4 - 8005c8a: 4770 bx lr + 8005cdc: bf00 nop + 8005cde: 370c adds r7, #12 + 8005ce0: 46bd mov sp, r7 + 8005ce2: f85d 7b04 ldr.w r7, [sp], #4 + 8005ce6: 4770 bx lr -08005c8c : +08005ce8 : * @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) { - 8005c8c: b580 push {r7, lr} - 8005c8e: b082 sub sp, #8 - 8005c90: af00 add r7, sp, #0 - 8005c92: 6078 str r0, [r7, #4] + 8005ce8: b580 push {r7, lr} + 8005cea: b082 sub sp, #8 + 8005cec: af00 add r7, sp, #0 + 8005cee: 6078 str r0, [r7, #4] /* Check the UART handle allocation */ if (huart == NULL) - 8005c94: 687b ldr r3, [r7, #4] - 8005c96: 2b00 cmp r3, #0 - 8005c98: d101 bne.n 8005c9e + 8005cf0: 687b ldr r3, [r7, #4] + 8005cf2: 2b00 cmp r3, #0 + 8005cf4: d101 bne.n 8005cfa { return HAL_ERROR; - 8005c9a: 2301 movs r3, #1 - 8005c9c: e042 b.n 8005d24 + 8005cf6: 2301 movs r3, #1 + 8005cf8: e042 b.n 8005d80 assert_param(IS_UART_INSTANCE(huart->Instance)); } assert_param(IS_UART_WORD_LENGTH(huart->Init.WordLength)); assert_param(IS_UART_OVERSAMPLING(huart->Init.OverSampling)); if (huart->gState == HAL_UART_STATE_RESET) - 8005c9e: 687b ldr r3, [r7, #4] - 8005ca0: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 - 8005ca4: b2db uxtb r3, r3 - 8005ca6: 2b00 cmp r3, #0 - 8005ca8: d106 bne.n 8005cb8 + 8005cfa: 687b ldr r3, [r7, #4] + 8005cfc: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 + 8005d00: b2db uxtb r3, r3 + 8005d02: 2b00 cmp r3, #0 + 8005d04: d106 bne.n 8005d14 { /* Allocate lock resource and initialize it */ huart->Lock = HAL_UNLOCKED; - 8005caa: 687b ldr r3, [r7, #4] - 8005cac: 2200 movs r2, #0 - 8005cae: f883 2040 strb.w r2, [r3, #64] @ 0x40 + 8005d06: 687b ldr r3, [r7, #4] + 8005d08: 2200 movs r2, #0 + 8005d0a: f883 2040 strb.w r2, [r3, #64] @ 0x40 /* Init the low level hardware */ huart->MspInitCallback(huart); #else /* Init the low level hardware : GPIO, CLOCK */ HAL_UART_MspInit(huart); - 8005cb2: 6878 ldr r0, [r7, #4] - 8005cb4: f7fb faae bl 8001214 + 8005d0e: 6878 ldr r0, [r7, #4] + 8005d10: f7fb fad2 bl 80012b8 #endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ } huart->gState = HAL_UART_STATE_BUSY; - 8005cb8: 687b ldr r3, [r7, #4] - 8005cba: 2224 movs r2, #36 @ 0x24 - 8005cbc: f883 2041 strb.w r2, [r3, #65] @ 0x41 + 8005d14: 687b ldr r3, [r7, #4] + 8005d16: 2224 movs r2, #36 @ 0x24 + 8005d18: f883 2041 strb.w r2, [r3, #65] @ 0x41 /* Disable the peripheral */ __HAL_UART_DISABLE(huart); - 8005cc0: 687b ldr r3, [r7, #4] - 8005cc2: 681b ldr r3, [r3, #0] - 8005cc4: 68da ldr r2, [r3, #12] - 8005cc6: 687b ldr r3, [r7, #4] - 8005cc8: 681b ldr r3, [r3, #0] - 8005cca: f422 5200 bic.w r2, r2, #8192 @ 0x2000 - 8005cce: 60da str r2, [r3, #12] + 8005d1c: 687b ldr r3, [r7, #4] + 8005d1e: 681b ldr r3, [r3, #0] + 8005d20: 68da ldr r2, [r3, #12] + 8005d22: 687b ldr r3, [r7, #4] + 8005d24: 681b ldr r3, [r3, #0] + 8005d26: f422 5200 bic.w r2, r2, #8192 @ 0x2000 + 8005d2a: 60da str r2, [r3, #12] /* Set the UART Communication parameters */ UART_SetConfig(huart); - 8005cd0: 6878 ldr r0, [r7, #4] - 8005cd2: f000 f82b bl 8005d2c + 8005d2c: 6878 ldr r0, [r7, #4] + 8005d2e: f000 f82b bl 8005d88 /* 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)); - 8005cd6: 687b ldr r3, [r7, #4] - 8005cd8: 681b ldr r3, [r3, #0] - 8005cda: 691a ldr r2, [r3, #16] - 8005cdc: 687b ldr r3, [r7, #4] - 8005cde: 681b ldr r3, [r3, #0] - 8005ce0: f422 4290 bic.w r2, r2, #18432 @ 0x4800 - 8005ce4: 611a str r2, [r3, #16] + 8005d32: 687b ldr r3, [r7, #4] + 8005d34: 681b ldr r3, [r3, #0] + 8005d36: 691a ldr r2, [r3, #16] + 8005d38: 687b ldr r3, [r7, #4] + 8005d3a: 681b ldr r3, [r3, #0] + 8005d3c: f422 4290 bic.w r2, r2, #18432 @ 0x4800 + 8005d40: 611a str r2, [r3, #16] CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); - 8005ce6: 687b ldr r3, [r7, #4] - 8005ce8: 681b ldr r3, [r3, #0] - 8005cea: 695a ldr r2, [r3, #20] - 8005cec: 687b ldr r3, [r7, #4] - 8005cee: 681b ldr r3, [r3, #0] - 8005cf0: f022 022a bic.w r2, r2, #42 @ 0x2a - 8005cf4: 615a str r2, [r3, #20] + 8005d42: 687b ldr r3, [r7, #4] + 8005d44: 681b ldr r3, [r3, #0] + 8005d46: 695a ldr r2, [r3, #20] + 8005d48: 687b ldr r3, [r7, #4] + 8005d4a: 681b ldr r3, [r3, #0] + 8005d4c: f022 022a bic.w r2, r2, #42 @ 0x2a + 8005d50: 615a str r2, [r3, #20] /* Enable the peripheral */ __HAL_UART_ENABLE(huart); - 8005cf6: 687b ldr r3, [r7, #4] - 8005cf8: 681b ldr r3, [r3, #0] - 8005cfa: 68da ldr r2, [r3, #12] - 8005cfc: 687b ldr r3, [r7, #4] - 8005cfe: 681b ldr r3, [r3, #0] - 8005d00: f442 5200 orr.w r2, r2, #8192 @ 0x2000 - 8005d04: 60da str r2, [r3, #12] + 8005d52: 687b ldr r3, [r7, #4] + 8005d54: 681b ldr r3, [r3, #0] + 8005d56: 68da ldr r2, [r3, #12] + 8005d58: 687b ldr r3, [r7, #4] + 8005d5a: 681b ldr r3, [r3, #0] + 8005d5c: f442 5200 orr.w r2, r2, #8192 @ 0x2000 + 8005d60: 60da str r2, [r3, #12] /* Initialize the UART state */ huart->ErrorCode = HAL_UART_ERROR_NONE; - 8005d06: 687b ldr r3, [r7, #4] - 8005d08: 2200 movs r2, #0 - 8005d0a: 645a str r2, [r3, #68] @ 0x44 + 8005d62: 687b ldr r3, [r7, #4] + 8005d64: 2200 movs r2, #0 + 8005d66: 645a str r2, [r3, #68] @ 0x44 huart->gState = HAL_UART_STATE_READY; - 8005d0c: 687b ldr r3, [r7, #4] - 8005d0e: 2220 movs r2, #32 - 8005d10: f883 2041 strb.w r2, [r3, #65] @ 0x41 + 8005d68: 687b ldr r3, [r7, #4] + 8005d6a: 2220 movs r2, #32 + 8005d6c: f883 2041 strb.w r2, [r3, #65] @ 0x41 huart->RxState = HAL_UART_STATE_READY; - 8005d14: 687b ldr r3, [r7, #4] - 8005d16: 2220 movs r2, #32 - 8005d18: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 8005d70: 687b ldr r3, [r7, #4] + 8005d72: 2220 movs r2, #32 + 8005d74: f883 2042 strb.w r2, [r3, #66] @ 0x42 huart->RxEventType = HAL_UART_RXEVENT_TC; - 8005d1c: 687b ldr r3, [r7, #4] - 8005d1e: 2200 movs r2, #0 - 8005d20: 635a str r2, [r3, #52] @ 0x34 + 8005d78: 687b ldr r3, [r7, #4] + 8005d7a: 2200 movs r2, #0 + 8005d7c: 635a str r2, [r3, #52] @ 0x34 return HAL_OK; - 8005d22: 2300 movs r3, #0 + 8005d7e: 2300 movs r3, #0 } - 8005d24: 4618 mov r0, r3 - 8005d26: 3708 adds r7, #8 - 8005d28: 46bd mov sp, r7 - 8005d2a: bd80 pop {r7, pc} + 8005d80: 4618 mov r0, r3 + 8005d82: 3708 adds r7, #8 + 8005d84: 46bd mov sp, r7 + 8005d86: bd80 pop {r7, pc} -08005d2c : +08005d88 : * @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) { - 8005d2c: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} - 8005d30: b0c0 sub sp, #256 @ 0x100 - 8005d32: af00 add r7, sp, #0 - 8005d34: f8c7 00f4 str.w r0, [r7, #244] @ 0xf4 + 8005d88: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} + 8005d8c: b0c0 sub sp, #256 @ 0x100 + 8005d8e: af00 add r7, sp, #0 + 8005d90: f8c7 00f4 str.w r0, [r7, #244] @ 0xf4 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); - 8005d38: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005d3c: 681b ldr r3, [r3, #0] - 8005d3e: 691b ldr r3, [r3, #16] - 8005d40: f423 5040 bic.w r0, r3, #12288 @ 0x3000 - 8005d44: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005d48: 68d9 ldr r1, [r3, #12] - 8005d4a: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005d4e: 681a ldr r2, [r3, #0] - 8005d50: ea40 0301 orr.w r3, r0, r1 - 8005d54: 6113 str r3, [r2, #16] + 8005d94: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005d98: 681b ldr r3, [r3, #0] + 8005d9a: 691b ldr r3, [r3, #16] + 8005d9c: f423 5040 bic.w r0, r3, #12288 @ 0x3000 + 8005da0: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005da4: 68d9 ldr r1, [r3, #12] + 8005da6: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005daa: 681a ldr r2, [r3, #0] + 8005dac: ea40 0301 orr.w r3, r0, r1 + 8005db0: 6113 str r3, [r2, #16] Set the M bits according to huart->Init.WordLength value Set PCE and PS bits according to huart->Init.Parity value Set TE and RE bits according to huart->Init.Mode value Set OVER8 bit according to huart->Init.OverSampling value */ tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling; - 8005d56: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005d5a: 689a ldr r2, [r3, #8] - 8005d5c: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005d60: 691b ldr r3, [r3, #16] - 8005d62: 431a orrs r2, r3 - 8005d64: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005d68: 695b ldr r3, [r3, #20] - 8005d6a: 431a orrs r2, r3 - 8005d6c: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005d70: 69db ldr r3, [r3, #28] - 8005d72: 4313 orrs r3, r2 - 8005d74: f8c7 30f8 str.w r3, [r7, #248] @ 0xf8 + 8005db2: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005db6: 689a ldr r2, [r3, #8] + 8005db8: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005dbc: 691b ldr r3, [r3, #16] + 8005dbe: 431a orrs r2, r3 + 8005dc0: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005dc4: 695b ldr r3, [r3, #20] + 8005dc6: 431a orrs r2, r3 + 8005dc8: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005dcc: 69db ldr r3, [r3, #28] + 8005dce: 4313 orrs r3, r2 + 8005dd0: f8c7 30f8 str.w r3, [r7, #248] @ 0xf8 MODIFY_REG(huart->Instance->CR1, - 8005d78: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005d7c: 681b ldr r3, [r3, #0] - 8005d7e: 68db ldr r3, [r3, #12] - 8005d80: f423 4116 bic.w r1, r3, #38400 @ 0x9600 - 8005d84: f021 010c bic.w r1, r1, #12 - 8005d88: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005d8c: 681a ldr r2, [r3, #0] - 8005d8e: f8d7 30f8 ldr.w r3, [r7, #248] @ 0xf8 - 8005d92: 430b orrs r3, r1 - 8005d94: 60d3 str r3, [r2, #12] + 8005dd4: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005dd8: 681b ldr r3, [r3, #0] + 8005dda: 68db ldr r3, [r3, #12] + 8005ddc: f423 4116 bic.w r1, r3, #38400 @ 0x9600 + 8005de0: f021 010c bic.w r1, r1, #12 + 8005de4: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005de8: 681a ldr r2, [r3, #0] + 8005dea: f8d7 30f8 ldr.w r3, [r7, #248] @ 0xf8 + 8005dee: 430b orrs r3, r1 + 8005df0: 60d3 str r3, [r2, #12] (uint32_t)(USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | USART_CR1_TE | USART_CR1_RE | USART_CR1_OVER8), tmpreg); /*-------------------------- 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); - 8005d96: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005d9a: 681b ldr r3, [r3, #0] - 8005d9c: 695b ldr r3, [r3, #20] - 8005d9e: f423 7040 bic.w r0, r3, #768 @ 0x300 - 8005da2: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005da6: 6999 ldr r1, [r3, #24] - 8005da8: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005dac: 681a ldr r2, [r3, #0] - 8005dae: ea40 0301 orr.w r3, r0, r1 - 8005db2: 6153 str r3, [r2, #20] + 8005df2: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005df6: 681b ldr r3, [r3, #0] + 8005df8: 695b ldr r3, [r3, #20] + 8005dfa: f423 7040 bic.w r0, r3, #768 @ 0x300 + 8005dfe: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005e02: 6999 ldr r1, [r3, #24] + 8005e04: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005e08: 681a ldr r2, [r3, #0] + 8005e0a: ea40 0301 orr.w r3, r0, r1 + 8005e0e: 6153 str r3, [r2, #20] if ((huart->Instance == USART1) || (huart->Instance == USART6) || (huart->Instance == UART9) || (huart->Instance == UART10)) { pclk = HAL_RCC_GetPCLK2Freq(); } #elif defined(USART6) if ((huart->Instance == USART1) || (huart->Instance == USART6)) - 8005db4: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005db8: 681a ldr r2, [r3, #0] - 8005dba: 4b8f ldr r3, [pc, #572] @ (8005ff8 ) - 8005dbc: 429a cmp r2, r3 - 8005dbe: d005 beq.n 8005dcc - 8005dc0: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005dc4: 681a ldr r2, [r3, #0] - 8005dc6: 4b8d ldr r3, [pc, #564] @ (8005ffc ) - 8005dc8: 429a cmp r2, r3 - 8005dca: d104 bne.n 8005dd6 + 8005e10: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005e14: 681a ldr r2, [r3, #0] + 8005e16: 4b8f ldr r3, [pc, #572] @ (8006054 ) + 8005e18: 429a cmp r2, r3 + 8005e1a: d005 beq.n 8005e28 + 8005e1c: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005e20: 681a ldr r2, [r3, #0] + 8005e22: 4b8d ldr r3, [pc, #564] @ (8006058 ) + 8005e24: 429a cmp r2, r3 + 8005e26: d104 bne.n 8005e32 { pclk = HAL_RCC_GetPCLK2Freq(); - 8005dcc: f7ff f82c bl 8004e28 - 8005dd0: f8c7 00fc str.w r0, [r7, #252] @ 0xfc - 8005dd4: e003 b.n 8005dde + 8005e28: f7ff f82c bl 8004e84 + 8005e2c: f8c7 00fc str.w r0, [r7, #252] @ 0xfc + 8005e30: e003 b.n 8005e3a pclk = HAL_RCC_GetPCLK2Freq(); } #endif /* USART6 */ else { pclk = HAL_RCC_GetPCLK1Freq(); - 8005dd6: f7ff f813 bl 8004e00 - 8005dda: f8c7 00fc str.w r0, [r7, #252] @ 0xfc + 8005e32: f7ff f813 bl 8004e5c + 8005e36: f8c7 00fc str.w r0, [r7, #252] @ 0xfc } /*-------------------------- USART BRR Configuration ---------------------*/ if (huart->Init.OverSampling == UART_OVERSAMPLING_8) - 8005dde: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005de2: 69db ldr r3, [r3, #28] - 8005de4: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 - 8005de8: f040 810c bne.w 8006004 + 8005e3a: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005e3e: 69db ldr r3, [r3, #28] + 8005e40: f5b3 4f00 cmp.w r3, #32768 @ 0x8000 + 8005e44: f040 810c bne.w 8006060 { huart->Instance->BRR = UART_BRR_SAMPLING8(pclk, huart->Init.BaudRate); - 8005dec: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc - 8005df0: 2200 movs r2, #0 - 8005df2: f8c7 30e8 str.w r3, [r7, #232] @ 0xe8 - 8005df6: f8c7 20ec str.w r2, [r7, #236] @ 0xec - 8005dfa: e9d7 453a ldrd r4, r5, [r7, #232] @ 0xe8 - 8005dfe: 4622 mov r2, r4 - 8005e00: 462b mov r3, r5 - 8005e02: 1891 adds r1, r2, r2 - 8005e04: 65b9 str r1, [r7, #88] @ 0x58 - 8005e06: 415b adcs r3, r3 - 8005e08: 65fb str r3, [r7, #92] @ 0x5c - 8005e0a: e9d7 2316 ldrd r2, r3, [r7, #88] @ 0x58 - 8005e0e: 4621 mov r1, r4 - 8005e10: eb12 0801 adds.w r8, r2, r1 - 8005e14: 4629 mov r1, r5 - 8005e16: eb43 0901 adc.w r9, r3, r1 - 8005e1a: f04f 0200 mov.w r2, #0 - 8005e1e: f04f 0300 mov.w r3, #0 - 8005e22: ea4f 03c9 mov.w r3, r9, lsl #3 - 8005e26: ea43 7358 orr.w r3, r3, r8, lsr #29 - 8005e2a: ea4f 02c8 mov.w r2, r8, lsl #3 - 8005e2e: 4690 mov r8, r2 - 8005e30: 4699 mov r9, r3 - 8005e32: 4623 mov r3, r4 - 8005e34: eb18 0303 adds.w r3, r8, r3 - 8005e38: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 - 8005e3c: 462b mov r3, r5 - 8005e3e: eb49 0303 adc.w r3, r9, r3 - 8005e42: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 - 8005e46: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005e4a: 685b ldr r3, [r3, #4] + 8005e48: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc 8005e4c: 2200 movs r2, #0 - 8005e4e: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 - 8005e52: f8c7 20dc str.w r2, [r7, #220] @ 0xdc - 8005e56: e9d7 1236 ldrd r1, r2, [r7, #216] @ 0xd8 - 8005e5a: 460b mov r3, r1 - 8005e5c: 18db adds r3, r3, r3 - 8005e5e: 653b str r3, [r7, #80] @ 0x50 - 8005e60: 4613 mov r3, r2 - 8005e62: eb42 0303 adc.w r3, r2, r3 - 8005e66: 657b str r3, [r7, #84] @ 0x54 - 8005e68: e9d7 2314 ldrd r2, r3, [r7, #80] @ 0x50 - 8005e6c: e9d7 0138 ldrd r0, r1, [r7, #224] @ 0xe0 - 8005e70: f7fa f9be bl 80001f0 <__aeabi_uldivmod> - 8005e74: 4602 mov r2, r0 - 8005e76: 460b mov r3, r1 - 8005e78: 4b61 ldr r3, [pc, #388] @ (8006000 ) - 8005e7a: fba3 2302 umull r2, r3, r3, r2 - 8005e7e: 095b lsrs r3, r3, #5 - 8005e80: 011c lsls r4, r3, #4 - 8005e82: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc - 8005e86: 2200 movs r2, #0 - 8005e88: f8c7 30d0 str.w r3, [r7, #208] @ 0xd0 - 8005e8c: f8c7 20d4 str.w r2, [r7, #212] @ 0xd4 - 8005e90: e9d7 8934 ldrd r8, r9, [r7, #208] @ 0xd0 - 8005e94: 4642 mov r2, r8 - 8005e96: 464b mov r3, r9 - 8005e98: 1891 adds r1, r2, r2 - 8005e9a: 64b9 str r1, [r7, #72] @ 0x48 - 8005e9c: 415b adcs r3, r3 - 8005e9e: 64fb str r3, [r7, #76] @ 0x4c - 8005ea0: e9d7 2312 ldrd r2, r3, [r7, #72] @ 0x48 - 8005ea4: 4641 mov r1, r8 - 8005ea6: eb12 0a01 adds.w sl, r2, r1 - 8005eaa: 4649 mov r1, r9 - 8005eac: eb43 0b01 adc.w fp, r3, r1 - 8005eb0: f04f 0200 mov.w r2, #0 - 8005eb4: f04f 0300 mov.w r3, #0 - 8005eb8: ea4f 03cb mov.w r3, fp, lsl #3 - 8005ebc: ea43 735a orr.w r3, r3, sl, lsr #29 - 8005ec0: ea4f 02ca mov.w r2, sl, lsl #3 - 8005ec4: 4692 mov sl, r2 - 8005ec6: 469b mov fp, r3 - 8005ec8: 4643 mov r3, r8 - 8005eca: eb1a 0303 adds.w r3, sl, r3 - 8005ece: f8c7 30c8 str.w r3, [r7, #200] @ 0xc8 - 8005ed2: 464b mov r3, r9 - 8005ed4: eb4b 0303 adc.w r3, fp, r3 - 8005ed8: f8c7 30cc str.w r3, [r7, #204] @ 0xcc - 8005edc: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005ee0: 685b ldr r3, [r3, #4] + 8005e4e: f8c7 30e8 str.w r3, [r7, #232] @ 0xe8 + 8005e52: f8c7 20ec str.w r2, [r7, #236] @ 0xec + 8005e56: e9d7 453a ldrd r4, r5, [r7, #232] @ 0xe8 + 8005e5a: 4622 mov r2, r4 + 8005e5c: 462b mov r3, r5 + 8005e5e: 1891 adds r1, r2, r2 + 8005e60: 65b9 str r1, [r7, #88] @ 0x58 + 8005e62: 415b adcs r3, r3 + 8005e64: 65fb str r3, [r7, #92] @ 0x5c + 8005e66: e9d7 2316 ldrd r2, r3, [r7, #88] @ 0x58 + 8005e6a: 4621 mov r1, r4 + 8005e6c: eb12 0801 adds.w r8, r2, r1 + 8005e70: 4629 mov r1, r5 + 8005e72: eb43 0901 adc.w r9, r3, r1 + 8005e76: f04f 0200 mov.w r2, #0 + 8005e7a: f04f 0300 mov.w r3, #0 + 8005e7e: ea4f 03c9 mov.w r3, r9, lsl #3 + 8005e82: ea43 7358 orr.w r3, r3, r8, lsr #29 + 8005e86: ea4f 02c8 mov.w r2, r8, lsl #3 + 8005e8a: 4690 mov r8, r2 + 8005e8c: 4699 mov r9, r3 + 8005e8e: 4623 mov r3, r4 + 8005e90: eb18 0303 adds.w r3, r8, r3 + 8005e94: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 + 8005e98: 462b mov r3, r5 + 8005e9a: eb49 0303 adc.w r3, r9, r3 + 8005e9e: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 + 8005ea2: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005ea6: 685b ldr r3, [r3, #4] + 8005ea8: 2200 movs r2, #0 + 8005eaa: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 + 8005eae: f8c7 20dc str.w r2, [r7, #220] @ 0xdc + 8005eb2: e9d7 1236 ldrd r1, r2, [r7, #216] @ 0xd8 + 8005eb6: 460b mov r3, r1 + 8005eb8: 18db adds r3, r3, r3 + 8005eba: 653b str r3, [r7, #80] @ 0x50 + 8005ebc: 4613 mov r3, r2 + 8005ebe: eb42 0303 adc.w r3, r2, r3 + 8005ec2: 657b str r3, [r7, #84] @ 0x54 + 8005ec4: e9d7 2314 ldrd r2, r3, [r7, #80] @ 0x50 + 8005ec8: e9d7 0138 ldrd r0, r1, [r7, #224] @ 0xe0 + 8005ecc: f7fa f990 bl 80001f0 <__aeabi_uldivmod> + 8005ed0: 4602 mov r2, r0 + 8005ed2: 460b mov r3, r1 + 8005ed4: 4b61 ldr r3, [pc, #388] @ (800605c ) + 8005ed6: fba3 2302 umull r2, r3, r3, r2 + 8005eda: 095b lsrs r3, r3, #5 + 8005edc: 011c lsls r4, r3, #4 + 8005ede: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc 8005ee2: 2200 movs r2, #0 - 8005ee4: f8c7 30c0 str.w r3, [r7, #192] @ 0xc0 - 8005ee8: f8c7 20c4 str.w r2, [r7, #196] @ 0xc4 - 8005eec: e9d7 1230 ldrd r1, r2, [r7, #192] @ 0xc0 - 8005ef0: 460b mov r3, r1 - 8005ef2: 18db adds r3, r3, r3 - 8005ef4: 643b str r3, [r7, #64] @ 0x40 - 8005ef6: 4613 mov r3, r2 - 8005ef8: eb42 0303 adc.w r3, r2, r3 - 8005efc: 647b str r3, [r7, #68] @ 0x44 - 8005efe: e9d7 2310 ldrd r2, r3, [r7, #64] @ 0x40 - 8005f02: e9d7 0132 ldrd r0, r1, [r7, #200] @ 0xc8 - 8005f06: f7fa f973 bl 80001f0 <__aeabi_uldivmod> - 8005f0a: 4602 mov r2, r0 - 8005f0c: 460b mov r3, r1 - 8005f0e: 4611 mov r1, r2 - 8005f10: 4b3b ldr r3, [pc, #236] @ (8006000 ) - 8005f12: fba3 2301 umull r2, r3, r3, r1 - 8005f16: 095b lsrs r3, r3, #5 - 8005f18: 2264 movs r2, #100 @ 0x64 - 8005f1a: fb02 f303 mul.w r3, r2, r3 - 8005f1e: 1acb subs r3, r1, r3 - 8005f20: 00db lsls r3, r3, #3 - 8005f22: f103 0232 add.w r2, r3, #50 @ 0x32 - 8005f26: 4b36 ldr r3, [pc, #216] @ (8006000 ) - 8005f28: fba3 2302 umull r2, r3, r3, r2 - 8005f2c: 095b lsrs r3, r3, #5 - 8005f2e: 005b lsls r3, r3, #1 - 8005f30: f403 73f8 and.w r3, r3, #496 @ 0x1f0 - 8005f34: 441c add r4, r3 - 8005f36: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc - 8005f3a: 2200 movs r2, #0 - 8005f3c: f8c7 30b8 str.w r3, [r7, #184] @ 0xb8 - 8005f40: f8c7 20bc str.w r2, [r7, #188] @ 0xbc - 8005f44: e9d7 892e ldrd r8, r9, [r7, #184] @ 0xb8 - 8005f48: 4642 mov r2, r8 - 8005f4a: 464b mov r3, r9 - 8005f4c: 1891 adds r1, r2, r2 - 8005f4e: 63b9 str r1, [r7, #56] @ 0x38 - 8005f50: 415b adcs r3, r3 - 8005f52: 63fb str r3, [r7, #60] @ 0x3c - 8005f54: e9d7 230e ldrd r2, r3, [r7, #56] @ 0x38 - 8005f58: 4641 mov r1, r8 - 8005f5a: 1851 adds r1, r2, r1 - 8005f5c: 6339 str r1, [r7, #48] @ 0x30 - 8005f5e: 4649 mov r1, r9 - 8005f60: 414b adcs r3, r1 - 8005f62: 637b str r3, [r7, #52] @ 0x34 - 8005f64: f04f 0200 mov.w r2, #0 - 8005f68: f04f 0300 mov.w r3, #0 - 8005f6c: e9d7 ab0c ldrd sl, fp, [r7, #48] @ 0x30 - 8005f70: 4659 mov r1, fp - 8005f72: 00cb lsls r3, r1, #3 - 8005f74: 4651 mov r1, sl - 8005f76: ea43 7351 orr.w r3, r3, r1, lsr #29 - 8005f7a: 4651 mov r1, sl - 8005f7c: 00ca lsls r2, r1, #3 - 8005f7e: 4610 mov r0, r2 - 8005f80: 4619 mov r1, r3 - 8005f82: 4603 mov r3, r0 - 8005f84: 4642 mov r2, r8 - 8005f86: 189b adds r3, r3, r2 - 8005f88: f8c7 30b0 str.w r3, [r7, #176] @ 0xb0 - 8005f8c: 464b mov r3, r9 - 8005f8e: 460a mov r2, r1 - 8005f90: eb42 0303 adc.w r3, r2, r3 - 8005f94: f8c7 30b4 str.w r3, [r7, #180] @ 0xb4 - 8005f98: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005f9c: 685b ldr r3, [r3, #4] - 8005f9e: 2200 movs r2, #0 - 8005fa0: f8c7 30a8 str.w r3, [r7, #168] @ 0xa8 - 8005fa4: f8c7 20ac str.w r2, [r7, #172] @ 0xac - 8005fa8: e9d7 122a ldrd r1, r2, [r7, #168] @ 0xa8 - 8005fac: 460b mov r3, r1 - 8005fae: 18db adds r3, r3, r3 - 8005fb0: 62bb str r3, [r7, #40] @ 0x28 - 8005fb2: 4613 mov r3, r2 - 8005fb4: eb42 0303 adc.w r3, r2, r3 - 8005fb8: 62fb str r3, [r7, #44] @ 0x2c - 8005fba: e9d7 230a ldrd r2, r3, [r7, #40] @ 0x28 - 8005fbe: e9d7 012c ldrd r0, r1, [r7, #176] @ 0xb0 - 8005fc2: f7fa f915 bl 80001f0 <__aeabi_uldivmod> - 8005fc6: 4602 mov r2, r0 - 8005fc8: 460b mov r3, r1 - 8005fca: 4b0d ldr r3, [pc, #52] @ (8006000 ) - 8005fcc: fba3 1302 umull r1, r3, r3, r2 - 8005fd0: 095b lsrs r3, r3, #5 - 8005fd2: 2164 movs r1, #100 @ 0x64 - 8005fd4: fb01 f303 mul.w r3, r1, r3 - 8005fd8: 1ad3 subs r3, r2, r3 - 8005fda: 00db lsls r3, r3, #3 - 8005fdc: 3332 adds r3, #50 @ 0x32 - 8005fde: 4a08 ldr r2, [pc, #32] @ (8006000 ) - 8005fe0: fba2 2303 umull r2, r3, r2, r3 - 8005fe4: 095b lsrs r3, r3, #5 - 8005fe6: f003 0207 and.w r2, r3, #7 - 8005fea: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005fee: 681b ldr r3, [r3, #0] - 8005ff0: 4422 add r2, r4 - 8005ff2: 609a str r2, [r3, #8] + 8005ee4: f8c7 30d0 str.w r3, [r7, #208] @ 0xd0 + 8005ee8: f8c7 20d4 str.w r2, [r7, #212] @ 0xd4 + 8005eec: e9d7 8934 ldrd r8, r9, [r7, #208] @ 0xd0 + 8005ef0: 4642 mov r2, r8 + 8005ef2: 464b mov r3, r9 + 8005ef4: 1891 adds r1, r2, r2 + 8005ef6: 64b9 str r1, [r7, #72] @ 0x48 + 8005ef8: 415b adcs r3, r3 + 8005efa: 64fb str r3, [r7, #76] @ 0x4c + 8005efc: e9d7 2312 ldrd r2, r3, [r7, #72] @ 0x48 + 8005f00: 4641 mov r1, r8 + 8005f02: eb12 0a01 adds.w sl, r2, r1 + 8005f06: 4649 mov r1, r9 + 8005f08: eb43 0b01 adc.w fp, r3, r1 + 8005f0c: f04f 0200 mov.w r2, #0 + 8005f10: f04f 0300 mov.w r3, #0 + 8005f14: ea4f 03cb mov.w r3, fp, lsl #3 + 8005f18: ea43 735a orr.w r3, r3, sl, lsr #29 + 8005f1c: ea4f 02ca mov.w r2, sl, lsl #3 + 8005f20: 4692 mov sl, r2 + 8005f22: 469b mov fp, r3 + 8005f24: 4643 mov r3, r8 + 8005f26: eb1a 0303 adds.w r3, sl, r3 + 8005f2a: f8c7 30c8 str.w r3, [r7, #200] @ 0xc8 + 8005f2e: 464b mov r3, r9 + 8005f30: eb4b 0303 adc.w r3, fp, r3 + 8005f34: f8c7 30cc str.w r3, [r7, #204] @ 0xcc + 8005f38: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005f3c: 685b ldr r3, [r3, #4] + 8005f3e: 2200 movs r2, #0 + 8005f40: f8c7 30c0 str.w r3, [r7, #192] @ 0xc0 + 8005f44: f8c7 20c4 str.w r2, [r7, #196] @ 0xc4 + 8005f48: e9d7 1230 ldrd r1, r2, [r7, #192] @ 0xc0 + 8005f4c: 460b mov r3, r1 + 8005f4e: 18db adds r3, r3, r3 + 8005f50: 643b str r3, [r7, #64] @ 0x40 + 8005f52: 4613 mov r3, r2 + 8005f54: eb42 0303 adc.w r3, r2, r3 + 8005f58: 647b str r3, [r7, #68] @ 0x44 + 8005f5a: e9d7 2310 ldrd r2, r3, [r7, #64] @ 0x40 + 8005f5e: e9d7 0132 ldrd r0, r1, [r7, #200] @ 0xc8 + 8005f62: f7fa f945 bl 80001f0 <__aeabi_uldivmod> + 8005f66: 4602 mov r2, r0 + 8005f68: 460b mov r3, r1 + 8005f6a: 4611 mov r1, r2 + 8005f6c: 4b3b ldr r3, [pc, #236] @ (800605c ) + 8005f6e: fba3 2301 umull r2, r3, r3, r1 + 8005f72: 095b lsrs r3, r3, #5 + 8005f74: 2264 movs r2, #100 @ 0x64 + 8005f76: fb02 f303 mul.w r3, r2, r3 + 8005f7a: 1acb subs r3, r1, r3 + 8005f7c: 00db lsls r3, r3, #3 + 8005f7e: f103 0232 add.w r2, r3, #50 @ 0x32 + 8005f82: 4b36 ldr r3, [pc, #216] @ (800605c ) + 8005f84: fba3 2302 umull r2, r3, r3, r2 + 8005f88: 095b lsrs r3, r3, #5 + 8005f8a: 005b lsls r3, r3, #1 + 8005f8c: f403 73f8 and.w r3, r3, #496 @ 0x1f0 + 8005f90: 441c add r4, r3 + 8005f92: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc + 8005f96: 2200 movs r2, #0 + 8005f98: f8c7 30b8 str.w r3, [r7, #184] @ 0xb8 + 8005f9c: f8c7 20bc str.w r2, [r7, #188] @ 0xbc + 8005fa0: e9d7 892e ldrd r8, r9, [r7, #184] @ 0xb8 + 8005fa4: 4642 mov r2, r8 + 8005fa6: 464b mov r3, r9 + 8005fa8: 1891 adds r1, r2, r2 + 8005faa: 63b9 str r1, [r7, #56] @ 0x38 + 8005fac: 415b adcs r3, r3 + 8005fae: 63fb str r3, [r7, #60] @ 0x3c + 8005fb0: e9d7 230e ldrd r2, r3, [r7, #56] @ 0x38 + 8005fb4: 4641 mov r1, r8 + 8005fb6: 1851 adds r1, r2, r1 + 8005fb8: 6339 str r1, [r7, #48] @ 0x30 + 8005fba: 4649 mov r1, r9 + 8005fbc: 414b adcs r3, r1 + 8005fbe: 637b str r3, [r7, #52] @ 0x34 + 8005fc0: f04f 0200 mov.w r2, #0 + 8005fc4: f04f 0300 mov.w r3, #0 + 8005fc8: e9d7 ab0c ldrd sl, fp, [r7, #48] @ 0x30 + 8005fcc: 4659 mov r1, fp + 8005fce: 00cb lsls r3, r1, #3 + 8005fd0: 4651 mov r1, sl + 8005fd2: ea43 7351 orr.w r3, r3, r1, lsr #29 + 8005fd6: 4651 mov r1, sl + 8005fd8: 00ca lsls r2, r1, #3 + 8005fda: 4610 mov r0, r2 + 8005fdc: 4619 mov r1, r3 + 8005fde: 4603 mov r3, r0 + 8005fe0: 4642 mov r2, r8 + 8005fe2: 189b adds r3, r3, r2 + 8005fe4: f8c7 30b0 str.w r3, [r7, #176] @ 0xb0 + 8005fe8: 464b mov r3, r9 + 8005fea: 460a mov r2, r1 + 8005fec: eb42 0303 adc.w r3, r2, r3 + 8005ff0: f8c7 30b4 str.w r3, [r7, #180] @ 0xb4 + 8005ff4: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005ff8: 685b ldr r3, [r3, #4] + 8005ffa: 2200 movs r2, #0 + 8005ffc: f8c7 30a8 str.w r3, [r7, #168] @ 0xa8 + 8006000: f8c7 20ac str.w r2, [r7, #172] @ 0xac + 8006004: e9d7 122a ldrd r1, r2, [r7, #168] @ 0xa8 + 8006008: 460b mov r3, r1 + 800600a: 18db adds r3, r3, r3 + 800600c: 62bb str r3, [r7, #40] @ 0x28 + 800600e: 4613 mov r3, r2 + 8006010: eb42 0303 adc.w r3, r2, r3 + 8006014: 62fb str r3, [r7, #44] @ 0x2c + 8006016: e9d7 230a ldrd r2, r3, [r7, #40] @ 0x28 + 800601a: e9d7 012c ldrd r0, r1, [r7, #176] @ 0xb0 + 800601e: f7fa f8e7 bl 80001f0 <__aeabi_uldivmod> + 8006022: 4602 mov r2, r0 + 8006024: 460b mov r3, r1 + 8006026: 4b0d ldr r3, [pc, #52] @ (800605c ) + 8006028: fba3 1302 umull r1, r3, r3, r2 + 800602c: 095b lsrs r3, r3, #5 + 800602e: 2164 movs r1, #100 @ 0x64 + 8006030: fb01 f303 mul.w r3, r1, r3 + 8006034: 1ad3 subs r3, r2, r3 + 8006036: 00db lsls r3, r3, #3 + 8006038: 3332 adds r3, #50 @ 0x32 + 800603a: 4a08 ldr r2, [pc, #32] @ (800605c ) + 800603c: fba2 2303 umull r2, r3, r2, r3 + 8006040: 095b lsrs r3, r3, #5 + 8006042: f003 0207 and.w r2, r3, #7 + 8006046: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800604a: 681b ldr r3, [r3, #0] + 800604c: 4422 add r2, r4 + 800604e: 609a str r2, [r3, #8] } else { huart->Instance->BRR = UART_BRR_SAMPLING16(pclk, huart->Init.BaudRate); } } - 8005ff4: e106 b.n 8006204 - 8005ff6: bf00 nop - 8005ff8: 40011000 .word 0x40011000 - 8005ffc: 40011400 .word 0x40011400 - 8006000: 51eb851f .word 0x51eb851f + 8006050: e106 b.n 8006260 + 8006052: bf00 nop + 8006054: 40011000 .word 0x40011000 + 8006058: 40011400 .word 0x40011400 + 800605c: 51eb851f .word 0x51eb851f huart->Instance->BRR = UART_BRR_SAMPLING16(pclk, huart->Init.BaudRate); - 8006004: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc - 8006008: 2200 movs r2, #0 - 800600a: f8c7 30a0 str.w r3, [r7, #160] @ 0xa0 - 800600e: f8c7 20a4 str.w r2, [r7, #164] @ 0xa4 - 8006012: e9d7 8928 ldrd r8, r9, [r7, #160] @ 0xa0 - 8006016: 4642 mov r2, r8 - 8006018: 464b mov r3, r9 - 800601a: 1891 adds r1, r2, r2 - 800601c: 6239 str r1, [r7, #32] - 800601e: 415b adcs r3, r3 - 8006020: 627b str r3, [r7, #36] @ 0x24 - 8006022: e9d7 2308 ldrd r2, r3, [r7, #32] - 8006026: 4641 mov r1, r8 - 8006028: 1854 adds r4, r2, r1 - 800602a: 4649 mov r1, r9 - 800602c: eb43 0501 adc.w r5, r3, r1 - 8006030: f04f 0200 mov.w r2, #0 - 8006034: f04f 0300 mov.w r3, #0 - 8006038: 00eb lsls r3, r5, #3 - 800603a: ea43 7354 orr.w r3, r3, r4, lsr #29 - 800603e: 00e2 lsls r2, r4, #3 - 8006040: 4614 mov r4, r2 - 8006042: 461d mov r5, r3 - 8006044: 4643 mov r3, r8 - 8006046: 18e3 adds r3, r4, r3 - 8006048: f8c7 3098 str.w r3, [r7, #152] @ 0x98 - 800604c: 464b mov r3, r9 - 800604e: eb45 0303 adc.w r3, r5, r3 - 8006052: f8c7 309c str.w r3, [r7, #156] @ 0x9c - 8006056: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800605a: 685b ldr r3, [r3, #4] - 800605c: 2200 movs r2, #0 - 800605e: f8c7 3090 str.w r3, [r7, #144] @ 0x90 - 8006062: f8c7 2094 str.w r2, [r7, #148] @ 0x94 - 8006066: f04f 0200 mov.w r2, #0 - 800606a: f04f 0300 mov.w r3, #0 - 800606e: e9d7 4524 ldrd r4, r5, [r7, #144] @ 0x90 - 8006072: 4629 mov r1, r5 - 8006074: 008b lsls r3, r1, #2 - 8006076: 4621 mov r1, r4 - 8006078: ea43 7391 orr.w r3, r3, r1, lsr #30 - 800607c: 4621 mov r1, r4 - 800607e: 008a lsls r2, r1, #2 - 8006080: e9d7 0126 ldrd r0, r1, [r7, #152] @ 0x98 - 8006084: f7fa f8b4 bl 80001f0 <__aeabi_uldivmod> - 8006088: 4602 mov r2, r0 - 800608a: 460b mov r3, r1 - 800608c: 4b60 ldr r3, [pc, #384] @ (8006210 ) - 800608e: fba3 2302 umull r2, r3, r3, r2 - 8006092: 095b lsrs r3, r3, #5 - 8006094: 011c lsls r4, r3, #4 - 8006096: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc - 800609a: 2200 movs r2, #0 - 800609c: f8c7 3088 str.w r3, [r7, #136] @ 0x88 - 80060a0: f8c7 208c str.w r2, [r7, #140] @ 0x8c - 80060a4: e9d7 8922 ldrd r8, r9, [r7, #136] @ 0x88 - 80060a8: 4642 mov r2, r8 - 80060aa: 464b mov r3, r9 - 80060ac: 1891 adds r1, r2, r2 - 80060ae: 61b9 str r1, [r7, #24] - 80060b0: 415b adcs r3, r3 - 80060b2: 61fb str r3, [r7, #28] - 80060b4: e9d7 2306 ldrd r2, r3, [r7, #24] - 80060b8: 4641 mov r1, r8 - 80060ba: 1851 adds r1, r2, r1 - 80060bc: 6139 str r1, [r7, #16] - 80060be: 4649 mov r1, r9 - 80060c0: 414b adcs r3, r1 - 80060c2: 617b str r3, [r7, #20] - 80060c4: f04f 0200 mov.w r2, #0 - 80060c8: f04f 0300 mov.w r3, #0 - 80060cc: e9d7 ab04 ldrd sl, fp, [r7, #16] - 80060d0: 4659 mov r1, fp - 80060d2: 00cb lsls r3, r1, #3 - 80060d4: 4651 mov r1, sl - 80060d6: ea43 7351 orr.w r3, r3, r1, lsr #29 - 80060da: 4651 mov r1, sl - 80060dc: 00ca lsls r2, r1, #3 - 80060de: 4610 mov r0, r2 - 80060e0: 4619 mov r1, r3 - 80060e2: 4603 mov r3, r0 - 80060e4: 4642 mov r2, r8 - 80060e6: 189b adds r3, r3, r2 - 80060e8: f8c7 3080 str.w r3, [r7, #128] @ 0x80 - 80060ec: 464b mov r3, r9 - 80060ee: 460a mov r2, r1 - 80060f0: eb42 0303 adc.w r3, r2, r3 - 80060f4: f8c7 3084 str.w r3, [r7, #132] @ 0x84 - 80060f8: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 80060fc: 685b ldr r3, [r3, #4] - 80060fe: 2200 movs r2, #0 - 8006100: 67bb str r3, [r7, #120] @ 0x78 - 8006102: 67fa str r2, [r7, #124] @ 0x7c - 8006104: f04f 0200 mov.w r2, #0 - 8006108: f04f 0300 mov.w r3, #0 - 800610c: e9d7 891e ldrd r8, r9, [r7, #120] @ 0x78 - 8006110: 4649 mov r1, r9 - 8006112: 008b lsls r3, r1, #2 + 8006060: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc + 8006064: 2200 movs r2, #0 + 8006066: f8c7 30a0 str.w r3, [r7, #160] @ 0xa0 + 800606a: f8c7 20a4 str.w r2, [r7, #164] @ 0xa4 + 800606e: e9d7 8928 ldrd r8, r9, [r7, #160] @ 0xa0 + 8006072: 4642 mov r2, r8 + 8006074: 464b mov r3, r9 + 8006076: 1891 adds r1, r2, r2 + 8006078: 6239 str r1, [r7, #32] + 800607a: 415b adcs r3, r3 + 800607c: 627b str r3, [r7, #36] @ 0x24 + 800607e: e9d7 2308 ldrd r2, r3, [r7, #32] + 8006082: 4641 mov r1, r8 + 8006084: 1854 adds r4, r2, r1 + 8006086: 4649 mov r1, r9 + 8006088: eb43 0501 adc.w r5, r3, r1 + 800608c: f04f 0200 mov.w r2, #0 + 8006090: f04f 0300 mov.w r3, #0 + 8006094: 00eb lsls r3, r5, #3 + 8006096: ea43 7354 orr.w r3, r3, r4, lsr #29 + 800609a: 00e2 lsls r2, r4, #3 + 800609c: 4614 mov r4, r2 + 800609e: 461d mov r5, r3 + 80060a0: 4643 mov r3, r8 + 80060a2: 18e3 adds r3, r4, r3 + 80060a4: f8c7 3098 str.w r3, [r7, #152] @ 0x98 + 80060a8: 464b mov r3, r9 + 80060aa: eb45 0303 adc.w r3, r5, r3 + 80060ae: f8c7 309c str.w r3, [r7, #156] @ 0x9c + 80060b2: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 80060b6: 685b ldr r3, [r3, #4] + 80060b8: 2200 movs r2, #0 + 80060ba: f8c7 3090 str.w r3, [r7, #144] @ 0x90 + 80060be: f8c7 2094 str.w r2, [r7, #148] @ 0x94 + 80060c2: f04f 0200 mov.w r2, #0 + 80060c6: f04f 0300 mov.w r3, #0 + 80060ca: e9d7 4524 ldrd r4, r5, [r7, #144] @ 0x90 + 80060ce: 4629 mov r1, r5 + 80060d0: 008b lsls r3, r1, #2 + 80060d2: 4621 mov r1, r4 + 80060d4: ea43 7391 orr.w r3, r3, r1, lsr #30 + 80060d8: 4621 mov r1, r4 + 80060da: 008a lsls r2, r1, #2 + 80060dc: e9d7 0126 ldrd r0, r1, [r7, #152] @ 0x98 + 80060e0: f7fa f886 bl 80001f0 <__aeabi_uldivmod> + 80060e4: 4602 mov r2, r0 + 80060e6: 460b mov r3, r1 + 80060e8: 4b60 ldr r3, [pc, #384] @ (800626c ) + 80060ea: fba3 2302 umull r2, r3, r3, r2 + 80060ee: 095b lsrs r3, r3, #5 + 80060f0: 011c lsls r4, r3, #4 + 80060f2: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc + 80060f6: 2200 movs r2, #0 + 80060f8: f8c7 3088 str.w r3, [r7, #136] @ 0x88 + 80060fc: f8c7 208c str.w r2, [r7, #140] @ 0x8c + 8006100: e9d7 8922 ldrd r8, r9, [r7, #136] @ 0x88 + 8006104: 4642 mov r2, r8 + 8006106: 464b mov r3, r9 + 8006108: 1891 adds r1, r2, r2 + 800610a: 61b9 str r1, [r7, #24] + 800610c: 415b adcs r3, r3 + 800610e: 61fb str r3, [r7, #28] + 8006110: e9d7 2306 ldrd r2, r3, [r7, #24] 8006114: 4641 mov r1, r8 - 8006116: ea43 7391 orr.w r3, r3, r1, lsr #30 - 800611a: 4641 mov r1, r8 - 800611c: 008a lsls r2, r1, #2 - 800611e: e9d7 0120 ldrd r0, r1, [r7, #128] @ 0x80 - 8006122: f7fa f865 bl 80001f0 <__aeabi_uldivmod> - 8006126: 4602 mov r2, r0 - 8006128: 460b mov r3, r1 - 800612a: 4611 mov r1, r2 - 800612c: 4b38 ldr r3, [pc, #224] @ (8006210 ) - 800612e: fba3 2301 umull r2, r3, r3, r1 - 8006132: 095b lsrs r3, r3, #5 - 8006134: 2264 movs r2, #100 @ 0x64 - 8006136: fb02 f303 mul.w r3, r2, r3 - 800613a: 1acb subs r3, r1, r3 - 800613c: 011b lsls r3, r3, #4 - 800613e: 3332 adds r3, #50 @ 0x32 - 8006140: 4a33 ldr r2, [pc, #204] @ (8006210 ) - 8006142: fba2 2303 umull r2, r3, r2, r3 - 8006146: 095b lsrs r3, r3, #5 - 8006148: f003 03f0 and.w r3, r3, #240 @ 0xf0 - 800614c: 441c add r4, r3 - 800614e: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc - 8006152: 2200 movs r2, #0 - 8006154: 673b str r3, [r7, #112] @ 0x70 - 8006156: 677a str r2, [r7, #116] @ 0x74 - 8006158: e9d7 891c ldrd r8, r9, [r7, #112] @ 0x70 - 800615c: 4642 mov r2, r8 - 800615e: 464b mov r3, r9 - 8006160: 1891 adds r1, r2, r2 - 8006162: 60b9 str r1, [r7, #8] - 8006164: 415b adcs r3, r3 - 8006166: 60fb str r3, [r7, #12] - 8006168: e9d7 2302 ldrd r2, r3, [r7, #8] - 800616c: 4641 mov r1, r8 - 800616e: 1851 adds r1, r2, r1 - 8006170: 6039 str r1, [r7, #0] - 8006172: 4649 mov r1, r9 - 8006174: 414b adcs r3, r1 - 8006176: 607b str r3, [r7, #4] - 8006178: f04f 0200 mov.w r2, #0 - 800617c: f04f 0300 mov.w r3, #0 - 8006180: e9d7 ab00 ldrd sl, fp, [r7] - 8006184: 4659 mov r1, fp - 8006186: 00cb lsls r3, r1, #3 - 8006188: 4651 mov r1, sl - 800618a: ea43 7351 orr.w r3, r3, r1, lsr #29 - 800618e: 4651 mov r1, sl - 8006190: 00ca lsls r2, r1, #3 - 8006192: 4610 mov r0, r2 - 8006194: 4619 mov r1, r3 - 8006196: 4603 mov r3, r0 - 8006198: 4642 mov r2, r8 - 800619a: 189b adds r3, r3, r2 - 800619c: 66bb str r3, [r7, #104] @ 0x68 - 800619e: 464b mov r3, r9 - 80061a0: 460a mov r2, r1 - 80061a2: eb42 0303 adc.w r3, r2, r3 - 80061a6: 66fb str r3, [r7, #108] @ 0x6c - 80061a8: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 80061ac: 685b ldr r3, [r3, #4] + 8006116: 1851 adds r1, r2, r1 + 8006118: 6139 str r1, [r7, #16] + 800611a: 4649 mov r1, r9 + 800611c: 414b adcs r3, r1 + 800611e: 617b str r3, [r7, #20] + 8006120: f04f 0200 mov.w r2, #0 + 8006124: f04f 0300 mov.w r3, #0 + 8006128: e9d7 ab04 ldrd sl, fp, [r7, #16] + 800612c: 4659 mov r1, fp + 800612e: 00cb lsls r3, r1, #3 + 8006130: 4651 mov r1, sl + 8006132: ea43 7351 orr.w r3, r3, r1, lsr #29 + 8006136: 4651 mov r1, sl + 8006138: 00ca lsls r2, r1, #3 + 800613a: 4610 mov r0, r2 + 800613c: 4619 mov r1, r3 + 800613e: 4603 mov r3, r0 + 8006140: 4642 mov r2, r8 + 8006142: 189b adds r3, r3, r2 + 8006144: f8c7 3080 str.w r3, [r7, #128] @ 0x80 + 8006148: 464b mov r3, r9 + 800614a: 460a mov r2, r1 + 800614c: eb42 0303 adc.w r3, r2, r3 + 8006150: f8c7 3084 str.w r3, [r7, #132] @ 0x84 + 8006154: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8006158: 685b ldr r3, [r3, #4] + 800615a: 2200 movs r2, #0 + 800615c: 67bb str r3, [r7, #120] @ 0x78 + 800615e: 67fa str r2, [r7, #124] @ 0x7c + 8006160: f04f 0200 mov.w r2, #0 + 8006164: f04f 0300 mov.w r3, #0 + 8006168: e9d7 891e ldrd r8, r9, [r7, #120] @ 0x78 + 800616c: 4649 mov r1, r9 + 800616e: 008b lsls r3, r1, #2 + 8006170: 4641 mov r1, r8 + 8006172: ea43 7391 orr.w r3, r3, r1, lsr #30 + 8006176: 4641 mov r1, r8 + 8006178: 008a lsls r2, r1, #2 + 800617a: e9d7 0120 ldrd r0, r1, [r7, #128] @ 0x80 + 800617e: f7fa f837 bl 80001f0 <__aeabi_uldivmod> + 8006182: 4602 mov r2, r0 + 8006184: 460b mov r3, r1 + 8006186: 4611 mov r1, r2 + 8006188: 4b38 ldr r3, [pc, #224] @ (800626c ) + 800618a: fba3 2301 umull r2, r3, r3, r1 + 800618e: 095b lsrs r3, r3, #5 + 8006190: 2264 movs r2, #100 @ 0x64 + 8006192: fb02 f303 mul.w r3, r2, r3 + 8006196: 1acb subs r3, r1, r3 + 8006198: 011b lsls r3, r3, #4 + 800619a: 3332 adds r3, #50 @ 0x32 + 800619c: 4a33 ldr r2, [pc, #204] @ (800626c ) + 800619e: fba2 2303 umull r2, r3, r2, r3 + 80061a2: 095b lsrs r3, r3, #5 + 80061a4: f003 03f0 and.w r3, r3, #240 @ 0xf0 + 80061a8: 441c add r4, r3 + 80061aa: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc 80061ae: 2200 movs r2, #0 - 80061b0: 663b str r3, [r7, #96] @ 0x60 - 80061b2: 667a str r2, [r7, #100] @ 0x64 - 80061b4: f04f 0200 mov.w r2, #0 - 80061b8: f04f 0300 mov.w r3, #0 - 80061bc: e9d7 8918 ldrd r8, r9, [r7, #96] @ 0x60 - 80061c0: 4649 mov r1, r9 - 80061c2: 008b lsls r3, r1, #2 - 80061c4: 4641 mov r1, r8 - 80061c6: ea43 7391 orr.w r3, r3, r1, lsr #30 - 80061ca: 4641 mov r1, r8 - 80061cc: 008a lsls r2, r1, #2 - 80061ce: e9d7 011a ldrd r0, r1, [r7, #104] @ 0x68 - 80061d2: f7fa f80d bl 80001f0 <__aeabi_uldivmod> - 80061d6: 4602 mov r2, r0 - 80061d8: 460b mov r3, r1 - 80061da: 4b0d ldr r3, [pc, #52] @ (8006210 ) - 80061dc: fba3 1302 umull r1, r3, r3, r2 - 80061e0: 095b lsrs r3, r3, #5 - 80061e2: 2164 movs r1, #100 @ 0x64 - 80061e4: fb01 f303 mul.w r3, r1, r3 - 80061e8: 1ad3 subs r3, r2, r3 - 80061ea: 011b lsls r3, r3, #4 - 80061ec: 3332 adds r3, #50 @ 0x32 - 80061ee: 4a08 ldr r2, [pc, #32] @ (8006210 ) - 80061f0: fba2 2303 umull r2, r3, r2, r3 - 80061f4: 095b lsrs r3, r3, #5 - 80061f6: f003 020f and.w r2, r3, #15 - 80061fa: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 80061fe: 681b ldr r3, [r3, #0] - 8006200: 4422 add r2, r4 - 8006202: 609a str r2, [r3, #8] + 80061b0: 673b str r3, [r7, #112] @ 0x70 + 80061b2: 677a str r2, [r7, #116] @ 0x74 + 80061b4: e9d7 891c ldrd r8, r9, [r7, #112] @ 0x70 + 80061b8: 4642 mov r2, r8 + 80061ba: 464b mov r3, r9 + 80061bc: 1891 adds r1, r2, r2 + 80061be: 60b9 str r1, [r7, #8] + 80061c0: 415b adcs r3, r3 + 80061c2: 60fb str r3, [r7, #12] + 80061c4: e9d7 2302 ldrd r2, r3, [r7, #8] + 80061c8: 4641 mov r1, r8 + 80061ca: 1851 adds r1, r2, r1 + 80061cc: 6039 str r1, [r7, #0] + 80061ce: 4649 mov r1, r9 + 80061d0: 414b adcs r3, r1 + 80061d2: 607b str r3, [r7, #4] + 80061d4: f04f 0200 mov.w r2, #0 + 80061d8: f04f 0300 mov.w r3, #0 + 80061dc: e9d7 ab00 ldrd sl, fp, [r7] + 80061e0: 4659 mov r1, fp + 80061e2: 00cb lsls r3, r1, #3 + 80061e4: 4651 mov r1, sl + 80061e6: ea43 7351 orr.w r3, r3, r1, lsr #29 + 80061ea: 4651 mov r1, sl + 80061ec: 00ca lsls r2, r1, #3 + 80061ee: 4610 mov r0, r2 + 80061f0: 4619 mov r1, r3 + 80061f2: 4603 mov r3, r0 + 80061f4: 4642 mov r2, r8 + 80061f6: 189b adds r3, r3, r2 + 80061f8: 66bb str r3, [r7, #104] @ 0x68 + 80061fa: 464b mov r3, r9 + 80061fc: 460a mov r2, r1 + 80061fe: eb42 0303 adc.w r3, r2, r3 + 8006202: 66fb str r3, [r7, #108] @ 0x6c + 8006204: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8006208: 685b ldr r3, [r3, #4] + 800620a: 2200 movs r2, #0 + 800620c: 663b str r3, [r7, #96] @ 0x60 + 800620e: 667a str r2, [r7, #100] @ 0x64 + 8006210: f04f 0200 mov.w r2, #0 + 8006214: f04f 0300 mov.w r3, #0 + 8006218: e9d7 8918 ldrd r8, r9, [r7, #96] @ 0x60 + 800621c: 4649 mov r1, r9 + 800621e: 008b lsls r3, r1, #2 + 8006220: 4641 mov r1, r8 + 8006222: ea43 7391 orr.w r3, r3, r1, lsr #30 + 8006226: 4641 mov r1, r8 + 8006228: 008a lsls r2, r1, #2 + 800622a: e9d7 011a ldrd r0, r1, [r7, #104] @ 0x68 + 800622e: f7f9 ffdf bl 80001f0 <__aeabi_uldivmod> + 8006232: 4602 mov r2, r0 + 8006234: 460b mov r3, r1 + 8006236: 4b0d ldr r3, [pc, #52] @ (800626c ) + 8006238: fba3 1302 umull r1, r3, r3, r2 + 800623c: 095b lsrs r3, r3, #5 + 800623e: 2164 movs r1, #100 @ 0x64 + 8006240: fb01 f303 mul.w r3, r1, r3 + 8006244: 1ad3 subs r3, r2, r3 + 8006246: 011b lsls r3, r3, #4 + 8006248: 3332 adds r3, #50 @ 0x32 + 800624a: 4a08 ldr r2, [pc, #32] @ (800626c ) + 800624c: fba2 2303 umull r2, r3, r2, r3 + 8006250: 095b lsrs r3, r3, #5 + 8006252: f003 020f and.w r2, r3, #15 + 8006256: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800625a: 681b ldr r3, [r3, #0] + 800625c: 4422 add r2, r4 + 800625e: 609a str r2, [r3, #8] } - 8006204: bf00 nop - 8006206: f507 7780 add.w r7, r7, #256 @ 0x100 - 800620a: 46bd mov sp, r7 - 800620c: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} - 8006210: 51eb851f .word 0x51eb851f + 8006260: bf00 nop + 8006262: f507 7780 add.w r7, r7, #256 @ 0x100 + 8006266: 46bd mov sp, r7 + 8006268: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} + 800626c: 51eb851f .word 0x51eb851f -08006214 : +08006270 : * @param Device Pointer to SDRAM device instance * @param Init Pointer to SDRAM Initialization structure * @retval HAL status */ HAL_StatusTypeDef FMC_SDRAM_Init(FMC_SDRAM_TypeDef *Device, const FMC_SDRAM_InitTypeDef *Init) { - 8006214: b480 push {r7} - 8006216: b083 sub sp, #12 - 8006218: af00 add r7, sp, #0 - 800621a: 6078 str r0, [r7, #4] - 800621c: 6039 str r1, [r7, #0] + 8006270: b480 push {r7} + 8006272: b083 sub sp, #12 + 8006274: af00 add r7, sp, #0 + 8006276: 6078 str r0, [r7, #4] + 8006278: 6039 str r1, [r7, #0] assert_param(IS_FMC_SDCLOCK_PERIOD(Init->SDClockPeriod)); assert_param(IS_FMC_READ_BURST(Init->ReadBurst)); assert_param(IS_FMC_READPIPE_DELAY(Init->ReadPipeDelay)); /* Set SDRAM bank configuration parameters */ if (Init->SDBank == FMC_SDRAM_BANK1) - 800621e: 683b ldr r3, [r7, #0] - 8006220: 681b ldr r3, [r3, #0] - 8006222: 2b00 cmp r3, #0 - 8006224: d123 bne.n 800626e + 800627a: 683b ldr r3, [r7, #0] + 800627c: 681b ldr r3, [r3, #0] + 800627e: 2b00 cmp r3, #0 + 8006280: d123 bne.n 80062ca { MODIFY_REG(Device->SDCR[FMC_SDRAM_BANK1], - 8006226: 687b ldr r3, [r7, #4] - 8006228: 681b ldr r3, [r3, #0] - 800622a: f423 43ff bic.w r3, r3, #32640 @ 0x7f80 - 800622e: f023 037f bic.w r3, r3, #127 @ 0x7f - 8006232: 683a ldr r2, [r7, #0] - 8006234: 6851 ldr r1, [r2, #4] - 8006236: 683a ldr r2, [r7, #0] - 8006238: 6892 ldr r2, [r2, #8] - 800623a: 4311 orrs r1, r2 - 800623c: 683a ldr r2, [r7, #0] - 800623e: 68d2 ldr r2, [r2, #12] - 8006240: 4311 orrs r1, r2 - 8006242: 683a ldr r2, [r7, #0] - 8006244: 6912 ldr r2, [r2, #16] - 8006246: 4311 orrs r1, r2 - 8006248: 683a ldr r2, [r7, #0] - 800624a: 6952 ldr r2, [r2, #20] - 800624c: 4311 orrs r1, r2 - 800624e: 683a ldr r2, [r7, #0] - 8006250: 6992 ldr r2, [r2, #24] - 8006252: 4311 orrs r1, r2 - 8006254: 683a ldr r2, [r7, #0] - 8006256: 69d2 ldr r2, [r2, #28] - 8006258: 4311 orrs r1, r2 - 800625a: 683a ldr r2, [r7, #0] - 800625c: 6a12 ldr r2, [r2, #32] - 800625e: 4311 orrs r1, r2 - 8006260: 683a ldr r2, [r7, #0] - 8006262: 6a52 ldr r2, [r2, #36] @ 0x24 - 8006264: 430a orrs r2, r1 - 8006266: 431a orrs r2, r3 - 8006268: 687b ldr r3, [r7, #4] - 800626a: 601a str r2, [r3, #0] - 800626c: e028 b.n 80062c0 + 8006282: 687b ldr r3, [r7, #4] + 8006284: 681b ldr r3, [r3, #0] + 8006286: f423 43ff bic.w r3, r3, #32640 @ 0x7f80 + 800628a: f023 037f bic.w r3, r3, #127 @ 0x7f + 800628e: 683a ldr r2, [r7, #0] + 8006290: 6851 ldr r1, [r2, #4] + 8006292: 683a ldr r2, [r7, #0] + 8006294: 6892 ldr r2, [r2, #8] + 8006296: 4311 orrs r1, r2 + 8006298: 683a ldr r2, [r7, #0] + 800629a: 68d2 ldr r2, [r2, #12] + 800629c: 4311 orrs r1, r2 + 800629e: 683a ldr r2, [r7, #0] + 80062a0: 6912 ldr r2, [r2, #16] + 80062a2: 4311 orrs r1, r2 + 80062a4: 683a ldr r2, [r7, #0] + 80062a6: 6952 ldr r2, [r2, #20] + 80062a8: 4311 orrs r1, r2 + 80062aa: 683a ldr r2, [r7, #0] + 80062ac: 6992 ldr r2, [r2, #24] + 80062ae: 4311 orrs r1, r2 + 80062b0: 683a ldr r2, [r7, #0] + 80062b2: 69d2 ldr r2, [r2, #28] + 80062b4: 4311 orrs r1, r2 + 80062b6: 683a ldr r2, [r7, #0] + 80062b8: 6a12 ldr r2, [r2, #32] + 80062ba: 4311 orrs r1, r2 + 80062bc: 683a ldr r2, [r7, #0] + 80062be: 6a52 ldr r2, [r2, #36] @ 0x24 + 80062c0: 430a orrs r2, r1 + 80062c2: 431a orrs r2, r3 + 80062c4: 687b ldr r3, [r7, #4] + 80062c6: 601a str r2, [r3, #0] + 80062c8: e028 b.n 800631c Init->ReadBurst | Init->ReadPipeDelay)); } else /* FMC_Bank2_SDRAM */ { MODIFY_REG(Device->SDCR[FMC_SDRAM_BANK1], - 800626e: 687b ldr r3, [r7, #4] - 8006270: 681b ldr r3, [r3, #0] - 8006272: f423 42f8 bic.w r2, r3, #31744 @ 0x7c00 - 8006276: 683b ldr r3, [r7, #0] - 8006278: 69d9 ldr r1, [r3, #28] - 800627a: 683b ldr r3, [r7, #0] - 800627c: 6a1b ldr r3, [r3, #32] - 800627e: 4319 orrs r1, r3 - 8006280: 683b ldr r3, [r7, #0] - 8006282: 6a5b ldr r3, [r3, #36] @ 0x24 - 8006284: 430b orrs r3, r1 - 8006286: 431a orrs r2, r3 - 8006288: 687b ldr r3, [r7, #4] - 800628a: 601a str r2, [r3, #0] + 80062ca: 687b ldr r3, [r7, #4] + 80062cc: 681b ldr r3, [r3, #0] + 80062ce: f423 42f8 bic.w r2, r3, #31744 @ 0x7c00 + 80062d2: 683b ldr r3, [r7, #0] + 80062d4: 69d9 ldr r1, [r3, #28] + 80062d6: 683b ldr r3, [r7, #0] + 80062d8: 6a1b ldr r3, [r3, #32] + 80062da: 4319 orrs r1, r3 + 80062dc: 683b ldr r3, [r7, #0] + 80062de: 6a5b ldr r3, [r3, #36] @ 0x24 + 80062e0: 430b orrs r3, r1 + 80062e2: 431a orrs r2, r3 + 80062e4: 687b ldr r3, [r7, #4] + 80062e6: 601a str r2, [r3, #0] FMC_SDCR1_RPIPE, (Init->SDClockPeriod | Init->ReadBurst | Init->ReadPipeDelay)); MODIFY_REG(Device->SDCR[FMC_SDRAM_BANK2], - 800628c: 687b ldr r3, [r7, #4] - 800628e: 685b ldr r3, [r3, #4] - 8006290: f423 43ff bic.w r3, r3, #32640 @ 0x7f80 - 8006294: f023 037f bic.w r3, r3, #127 @ 0x7f - 8006298: 683a ldr r2, [r7, #0] - 800629a: 6851 ldr r1, [r2, #4] - 800629c: 683a ldr r2, [r7, #0] - 800629e: 6892 ldr r2, [r2, #8] - 80062a0: 4311 orrs r1, r2 - 80062a2: 683a ldr r2, [r7, #0] - 80062a4: 68d2 ldr r2, [r2, #12] - 80062a6: 4311 orrs r1, r2 - 80062a8: 683a ldr r2, [r7, #0] - 80062aa: 6912 ldr r2, [r2, #16] - 80062ac: 4311 orrs r1, r2 - 80062ae: 683a ldr r2, [r7, #0] - 80062b0: 6952 ldr r2, [r2, #20] - 80062b2: 4311 orrs r1, r2 - 80062b4: 683a ldr r2, [r7, #0] - 80062b6: 6992 ldr r2, [r2, #24] - 80062b8: 430a orrs r2, r1 - 80062ba: 431a orrs r2, r3 - 80062bc: 687b ldr r3, [r7, #4] - 80062be: 605a str r2, [r3, #4] + 80062e8: 687b ldr r3, [r7, #4] + 80062ea: 685b ldr r3, [r3, #4] + 80062ec: f423 43ff bic.w r3, r3, #32640 @ 0x7f80 + 80062f0: f023 037f bic.w r3, r3, #127 @ 0x7f + 80062f4: 683a ldr r2, [r7, #0] + 80062f6: 6851 ldr r1, [r2, #4] + 80062f8: 683a ldr r2, [r7, #0] + 80062fa: 6892 ldr r2, [r2, #8] + 80062fc: 4311 orrs r1, r2 + 80062fe: 683a ldr r2, [r7, #0] + 8006300: 68d2 ldr r2, [r2, #12] + 8006302: 4311 orrs r1, r2 + 8006304: 683a ldr r2, [r7, #0] + 8006306: 6912 ldr r2, [r2, #16] + 8006308: 4311 orrs r1, r2 + 800630a: 683a ldr r2, [r7, #0] + 800630c: 6952 ldr r2, [r2, #20] + 800630e: 4311 orrs r1, r2 + 8006310: 683a ldr r2, [r7, #0] + 8006312: 6992 ldr r2, [r2, #24] + 8006314: 430a orrs r2, r1 + 8006316: 431a orrs r2, r3 + 8006318: 687b ldr r3, [r7, #4] + 800631a: 605a str r2, [r3, #4] Init->InternalBankNumber | Init->CASLatency | Init->WriteProtection)); } return HAL_OK; - 80062c0: 2300 movs r3, #0 + 800631c: 2300 movs r3, #0 } - 80062c2: 4618 mov r0, r3 - 80062c4: 370c adds r7, #12 - 80062c6: 46bd mov sp, r7 - 80062c8: f85d 7b04 ldr.w r7, [sp], #4 - 80062cc: 4770 bx lr + 800631e: 4618 mov r0, r3 + 8006320: 370c adds r7, #12 + 8006322: 46bd mov sp, r7 + 8006324: f85d 7b04 ldr.w r7, [sp], #4 + 8006328: 4770 bx lr -080062ce : +0800632a : * @param Bank SDRAM bank number * @retval HAL status */ HAL_StatusTypeDef FMC_SDRAM_Timing_Init(FMC_SDRAM_TypeDef *Device, const FMC_SDRAM_TimingTypeDef *Timing, uint32_t Bank) { - 80062ce: b480 push {r7} - 80062d0: b085 sub sp, #20 - 80062d2: af00 add r7, sp, #0 - 80062d4: 60f8 str r0, [r7, #12] - 80062d6: 60b9 str r1, [r7, #8] - 80062d8: 607a str r2, [r7, #4] + 800632a: b480 push {r7} + 800632c: b085 sub sp, #20 + 800632e: af00 add r7, sp, #0 + 8006330: 60f8 str r0, [r7, #12] + 8006332: 60b9 str r1, [r7, #8] + 8006334: 607a str r2, [r7, #4] assert_param(IS_FMC_RP_DELAY(Timing->RPDelay)); assert_param(IS_FMC_RCD_DELAY(Timing->RCDDelay)); assert_param(IS_FMC_SDRAM_BANK(Bank)); /* Set SDRAM device timing parameters */ if (Bank == FMC_SDRAM_BANK1) - 80062da: 687b ldr r3, [r7, #4] - 80062dc: 2b00 cmp r3, #0 - 80062de: d128 bne.n 8006332 + 8006336: 687b ldr r3, [r7, #4] + 8006338: 2b00 cmp r3, #0 + 800633a: d128 bne.n 800638e { MODIFY_REG(Device->SDTR[FMC_SDRAM_BANK1], - 80062e0: 68fb ldr r3, [r7, #12] - 80062e2: 689b ldr r3, [r3, #8] - 80062e4: f003 4270 and.w r2, r3, #4026531840 @ 0xf0000000 - 80062e8: 68bb ldr r3, [r7, #8] - 80062ea: 681b ldr r3, [r3, #0] - 80062ec: 1e59 subs r1, r3, #1 - 80062ee: 68bb ldr r3, [r7, #8] - 80062f0: 685b ldr r3, [r3, #4] - 80062f2: 3b01 subs r3, #1 - 80062f4: 011b lsls r3, r3, #4 - 80062f6: 4319 orrs r1, r3 - 80062f8: 68bb ldr r3, [r7, #8] - 80062fa: 689b ldr r3, [r3, #8] - 80062fc: 3b01 subs r3, #1 - 80062fe: 021b lsls r3, r3, #8 - 8006300: 4319 orrs r1, r3 - 8006302: 68bb ldr r3, [r7, #8] - 8006304: 68db ldr r3, [r3, #12] - 8006306: 3b01 subs r3, #1 - 8006308: 031b lsls r3, r3, #12 - 800630a: 4319 orrs r1, r3 - 800630c: 68bb ldr r3, [r7, #8] - 800630e: 691b ldr r3, [r3, #16] - 8006310: 3b01 subs r3, #1 - 8006312: 041b lsls r3, r3, #16 - 8006314: 4319 orrs r1, r3 - 8006316: 68bb ldr r3, [r7, #8] - 8006318: 695b ldr r3, [r3, #20] - 800631a: 3b01 subs r3, #1 - 800631c: 051b lsls r3, r3, #20 - 800631e: 4319 orrs r1, r3 - 8006320: 68bb ldr r3, [r7, #8] - 8006322: 699b ldr r3, [r3, #24] - 8006324: 3b01 subs r3, #1 - 8006326: 061b lsls r3, r3, #24 - 8006328: 430b orrs r3, r1 - 800632a: 431a orrs r2, r3 - 800632c: 68fb ldr r3, [r7, #12] - 800632e: 609a str r2, [r3, #8] - 8006330: e02f b.n 8006392 + 800633c: 68fb ldr r3, [r7, #12] + 800633e: 689b ldr r3, [r3, #8] + 8006340: f003 4270 and.w r2, r3, #4026531840 @ 0xf0000000 + 8006344: 68bb ldr r3, [r7, #8] + 8006346: 681b ldr r3, [r3, #0] + 8006348: 1e59 subs r1, r3, #1 + 800634a: 68bb ldr r3, [r7, #8] + 800634c: 685b ldr r3, [r3, #4] + 800634e: 3b01 subs r3, #1 + 8006350: 011b lsls r3, r3, #4 + 8006352: 4319 orrs r1, r3 + 8006354: 68bb ldr r3, [r7, #8] + 8006356: 689b ldr r3, [r3, #8] + 8006358: 3b01 subs r3, #1 + 800635a: 021b lsls r3, r3, #8 + 800635c: 4319 orrs r1, r3 + 800635e: 68bb ldr r3, [r7, #8] + 8006360: 68db ldr r3, [r3, #12] + 8006362: 3b01 subs r3, #1 + 8006364: 031b lsls r3, r3, #12 + 8006366: 4319 orrs r1, r3 + 8006368: 68bb ldr r3, [r7, #8] + 800636a: 691b ldr r3, [r3, #16] + 800636c: 3b01 subs r3, #1 + 800636e: 041b lsls r3, r3, #16 + 8006370: 4319 orrs r1, r3 + 8006372: 68bb ldr r3, [r7, #8] + 8006374: 695b ldr r3, [r3, #20] + 8006376: 3b01 subs r3, #1 + 8006378: 051b lsls r3, r3, #20 + 800637a: 4319 orrs r1, r3 + 800637c: 68bb ldr r3, [r7, #8] + 800637e: 699b ldr r3, [r3, #24] + 8006380: 3b01 subs r3, #1 + 8006382: 061b lsls r3, r3, #24 + 8006384: 430b orrs r3, r1 + 8006386: 431a orrs r2, r3 + 8006388: 68fb ldr r3, [r7, #12] + 800638a: 609a str r2, [r3, #8] + 800638c: e02f b.n 80063ee (((Timing->RPDelay) - 1U) << FMC_SDTR1_TRP_Pos) | (((Timing->RCDDelay) - 1U) << FMC_SDTR1_TRCD_Pos))); } else /* FMC_Bank2_SDRAM */ { MODIFY_REG(Device->SDTR[FMC_SDRAM_BANK1], - 8006332: 68fb ldr r3, [r7, #12] - 8006334: 689b ldr r3, [r3, #8] - 8006336: f423 0370 bic.w r3, r3, #15728640 @ 0xf00000 - 800633a: f423 4370 bic.w r3, r3, #61440 @ 0xf000 - 800633e: 68ba ldr r2, [r7, #8] - 8006340: 68d2 ldr r2, [r2, #12] - 8006342: 3a01 subs r2, #1 - 8006344: 0311 lsls r1, r2, #12 - 8006346: 68ba ldr r2, [r7, #8] - 8006348: 6952 ldr r2, [r2, #20] - 800634a: 3a01 subs r2, #1 - 800634c: 0512 lsls r2, r2, #20 - 800634e: 430a orrs r2, r1 - 8006350: 431a orrs r2, r3 - 8006352: 68fb ldr r3, [r7, #12] - 8006354: 609a str r2, [r3, #8] + 800638e: 68fb ldr r3, [r7, #12] + 8006390: 689b ldr r3, [r3, #8] + 8006392: f423 0370 bic.w r3, r3, #15728640 @ 0xf00000 + 8006396: f423 4370 bic.w r3, r3, #61440 @ 0xf000 + 800639a: 68ba ldr r2, [r7, #8] + 800639c: 68d2 ldr r2, [r2, #12] + 800639e: 3a01 subs r2, #1 + 80063a0: 0311 lsls r1, r2, #12 + 80063a2: 68ba ldr r2, [r7, #8] + 80063a4: 6952 ldr r2, [r2, #20] + 80063a6: 3a01 subs r2, #1 + 80063a8: 0512 lsls r2, r2, #20 + 80063aa: 430a orrs r2, r1 + 80063ac: 431a orrs r2, r3 + 80063ae: 68fb ldr r3, [r7, #12] + 80063b0: 609a str r2, [r3, #8] FMC_SDTR1_TRC | FMC_SDTR1_TRP, (((Timing->RowCycleDelay) - 1U) << FMC_SDTR1_TRC_Pos) | (((Timing->RPDelay) - 1U) << FMC_SDTR1_TRP_Pos)); MODIFY_REG(Device->SDTR[FMC_SDRAM_BANK2], - 8006356: 68fb ldr r3, [r7, #12] - 8006358: 68db ldr r3, [r3, #12] - 800635a: f003 4270 and.w r2, r3, #4026531840 @ 0xf0000000 - 800635e: 68bb ldr r3, [r7, #8] - 8006360: 681b ldr r3, [r3, #0] - 8006362: 1e59 subs r1, r3, #1 - 8006364: 68bb ldr r3, [r7, #8] - 8006366: 685b ldr r3, [r3, #4] - 8006368: 3b01 subs r3, #1 - 800636a: 011b lsls r3, r3, #4 - 800636c: 4319 orrs r1, r3 - 800636e: 68bb ldr r3, [r7, #8] - 8006370: 689b ldr r3, [r3, #8] - 8006372: 3b01 subs r3, #1 - 8006374: 021b lsls r3, r3, #8 - 8006376: 4319 orrs r1, r3 - 8006378: 68bb ldr r3, [r7, #8] - 800637a: 691b ldr r3, [r3, #16] - 800637c: 3b01 subs r3, #1 - 800637e: 041b lsls r3, r3, #16 - 8006380: 4319 orrs r1, r3 - 8006382: 68bb ldr r3, [r7, #8] - 8006384: 699b ldr r3, [r3, #24] - 8006386: 3b01 subs r3, #1 - 8006388: 061b lsls r3, r3, #24 - 800638a: 430b orrs r3, r1 - 800638c: 431a orrs r2, r3 - 800638e: 68fb ldr r3, [r7, #12] - 8006390: 60da str r2, [r3, #12] + 80063b2: 68fb ldr r3, [r7, #12] + 80063b4: 68db ldr r3, [r3, #12] + 80063b6: f003 4270 and.w r2, r3, #4026531840 @ 0xf0000000 + 80063ba: 68bb ldr r3, [r7, #8] + 80063bc: 681b ldr r3, [r3, #0] + 80063be: 1e59 subs r1, r3, #1 + 80063c0: 68bb ldr r3, [r7, #8] + 80063c2: 685b ldr r3, [r3, #4] + 80063c4: 3b01 subs r3, #1 + 80063c6: 011b lsls r3, r3, #4 + 80063c8: 4319 orrs r1, r3 + 80063ca: 68bb ldr r3, [r7, #8] + 80063cc: 689b ldr r3, [r3, #8] + 80063ce: 3b01 subs r3, #1 + 80063d0: 021b lsls r3, r3, #8 + 80063d2: 4319 orrs r1, r3 + 80063d4: 68bb ldr r3, [r7, #8] + 80063d6: 691b ldr r3, [r3, #16] + 80063d8: 3b01 subs r3, #1 + 80063da: 041b lsls r3, r3, #16 + 80063dc: 4319 orrs r1, r3 + 80063de: 68bb ldr r3, [r7, #8] + 80063e0: 699b ldr r3, [r3, #24] + 80063e2: 3b01 subs r3, #1 + 80063e4: 061b lsls r3, r3, #24 + 80063e6: 430b orrs r3, r1 + 80063e8: 431a orrs r2, r3 + 80063ea: 68fb ldr r3, [r7, #12] + 80063ec: 60da str r2, [r3, #12] (((Timing->SelfRefreshTime) - 1U) << FMC_SDTR1_TRAS_Pos) | (((Timing->WriteRecoveryTime) - 1U) << FMC_SDTR1_TWR_Pos) | (((Timing->RCDDelay) - 1U) << FMC_SDTR1_TRCD_Pos))); } return HAL_OK; - 8006392: 2300 movs r3, #0 + 80063ee: 2300 movs r3, #0 } - 8006394: 4618 mov r0, r3 - 8006396: 3714 adds r7, #20 - 8006398: 46bd mov sp, r7 - 800639a: f85d 7b04 ldr.w r7, [sp], #4 - 800639e: 4770 bx lr + 80063f0: 4618 mov r0, r3 + 80063f2: 3714 adds r7, #20 + 80063f4: 46bd mov sp, r7 + 80063f6: f85d 7b04 ldr.w r7, [sp], #4 + 80063fa: 4770 bx lr -080063a0 : +080063fc : * 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) { - 80063a0: b480 push {r7} - 80063a2: b083 sub sp, #12 - 80063a4: af00 add r7, sp, #0 - 80063a6: 6078 str r0, [r7, #4] + 80063fc: b480 push {r7} + 80063fe: b083 sub sp, #12 + 8006400: af00 add r7, sp, #0 + 8006402: 6078 str r0, [r7, #4] USBx->GAHBCFG |= USB_OTG_GAHBCFG_GINT; - 80063a8: 687b ldr r3, [r7, #4] - 80063aa: 689b ldr r3, [r3, #8] - 80063ac: f043 0201 orr.w r2, r3, #1 - 80063b0: 687b ldr r3, [r7, #4] - 80063b2: 609a str r2, [r3, #8] + 8006404: 687b ldr r3, [r7, #4] + 8006406: 689b ldr r3, [r3, #8] + 8006408: f043 0201 orr.w r2, r3, #1 + 800640c: 687b ldr r3, [r7, #4] + 800640e: 609a str r2, [r3, #8] return HAL_OK; - 80063b4: 2300 movs r3, #0 + 8006410: 2300 movs r3, #0 } - 80063b6: 4618 mov r0, r3 - 80063b8: 370c adds r7, #12 - 80063ba: 46bd mov sp, r7 - 80063bc: f85d 7b04 ldr.w r7, [sp], #4 - 80063c0: 4770 bx lr + 8006412: 4618 mov r0, r3 + 8006414: 370c adds r7, #12 + 8006416: 46bd mov sp, r7 + 8006418: f85d 7b04 ldr.w r7, [sp], #4 + 800641c: 4770 bx lr -080063c2 : +0800641e : * 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) { - 80063c2: b480 push {r7} - 80063c4: b083 sub sp, #12 - 80063c6: af00 add r7, sp, #0 - 80063c8: 6078 str r0, [r7, #4] + 800641e: b480 push {r7} + 8006420: b083 sub sp, #12 + 8006422: af00 add r7, sp, #0 + 8006424: 6078 str r0, [r7, #4] USBx->GAHBCFG &= ~USB_OTG_GAHBCFG_GINT; - 80063ca: 687b ldr r3, [r7, #4] - 80063cc: 689b ldr r3, [r3, #8] - 80063ce: f023 0201 bic.w r2, r3, #1 - 80063d2: 687b ldr r3, [r7, #4] - 80063d4: 609a str r2, [r3, #8] + 8006426: 687b ldr r3, [r7, #4] + 8006428: 689b ldr r3, [r3, #8] + 800642a: f023 0201 bic.w r2, r3, #1 + 800642e: 687b ldr r3, [r7, #4] + 8006430: 609a str r2, [r3, #8] return HAL_OK; - 80063d6: 2300 movs r3, #0 + 8006432: 2300 movs r3, #0 } - 80063d8: 4618 mov r0, r3 - 80063da: 370c adds r7, #12 - 80063dc: 46bd mov sp, r7 - 80063de: f85d 7b04 ldr.w r7, [sp], #4 - 80063e2: 4770 bx lr + 8006434: 4618 mov r0, r3 + 8006436: 370c adds r7, #12 + 8006438: 46bd mov sp, r7 + 800643a: f85d 7b04 ldr.w r7, [sp], #4 + 800643e: 4770 bx lr -080063e4 : +08006440 : * 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) { - 80063e4: b480 push {r7} - 80063e6: b085 sub sp, #20 - 80063e8: af00 add r7, sp, #0 - 80063ea: 6078 str r0, [r7, #4] - 80063ec: 6039 str r1, [r7, #0] + 8006440: b480 push {r7} + 8006442: b085 sub sp, #20 + 8006444: af00 add r7, sp, #0 + 8006446: 6078 str r0, [r7, #4] + 8006448: 6039 str r1, [r7, #0] __IO uint32_t count = 0U; - 80063ee: 2300 movs r3, #0 - 80063f0: 60fb str r3, [r7, #12] + 800644a: 2300 movs r3, #0 + 800644c: 60fb str r3, [r7, #12] /* Wait for AHB master IDLE state. */ do { count++; - 80063f2: 68fb ldr r3, [r7, #12] - 80063f4: 3301 adds r3, #1 - 80063f6: 60fb str r3, [r7, #12] + 800644e: 68fb ldr r3, [r7, #12] + 8006450: 3301 adds r3, #1 + 8006452: 60fb str r3, [r7, #12] if (count > HAL_USB_TIMEOUT) - 80063f8: 68fb ldr r3, [r7, #12] - 80063fa: f1b3 6f70 cmp.w r3, #251658240 @ 0xf000000 - 80063fe: d901 bls.n 8006404 + 8006454: 68fb ldr r3, [r7, #12] + 8006456: f1b3 6f70 cmp.w r3, #251658240 @ 0xf000000 + 800645a: d901 bls.n 8006460 { return HAL_TIMEOUT; - 8006400: 2303 movs r3, #3 - 8006402: e01b b.n 800643c + 800645c: 2303 movs r3, #3 + 800645e: e01b b.n 8006498 } } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_AHBIDL) == 0U); - 8006404: 687b ldr r3, [r7, #4] - 8006406: 691b ldr r3, [r3, #16] - 8006408: 2b00 cmp r3, #0 - 800640a: daf2 bge.n 80063f2 + 8006460: 687b ldr r3, [r7, #4] + 8006462: 691b ldr r3, [r3, #16] + 8006464: 2b00 cmp r3, #0 + 8006466: daf2 bge.n 800644e /* Flush TX Fifo */ count = 0U; - 800640c: 2300 movs r3, #0 - 800640e: 60fb str r3, [r7, #12] + 8006468: 2300 movs r3, #0 + 800646a: 60fb str r3, [r7, #12] USBx->GRSTCTL = (USB_OTG_GRSTCTL_TXFFLSH | (num << 6)); - 8006410: 683b ldr r3, [r7, #0] - 8006412: 019b lsls r3, r3, #6 - 8006414: f043 0220 orr.w r2, r3, #32 - 8006418: 687b ldr r3, [r7, #4] - 800641a: 611a str r2, [r3, #16] - - do - { - count++; - 800641c: 68fb ldr r3, [r7, #12] - 800641e: 3301 adds r3, #1 - 8006420: 60fb str r3, [r7, #12] - - if (count > HAL_USB_TIMEOUT) - 8006422: 68fb ldr r3, [r7, #12] - 8006424: f1b3 6f70 cmp.w r3, #251658240 @ 0xf000000 - 8006428: d901 bls.n 800642e - { - return HAL_TIMEOUT; - 800642a: 2303 movs r3, #3 - 800642c: e006 b.n 800643c - } - } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_TXFFLSH) == USB_OTG_GRSTCTL_TXFFLSH); - 800642e: 687b ldr r3, [r7, #4] - 8006430: 691b ldr r3, [r3, #16] - 8006432: f003 0320 and.w r3, r3, #32 - 8006436: 2b20 cmp r3, #32 - 8006438: d0f0 beq.n 800641c - - return HAL_OK; - 800643a: 2300 movs r3, #0 -} - 800643c: 4618 mov r0, r3 - 800643e: 3714 adds r7, #20 - 8006440: 46bd mov sp, r7 - 8006442: f85d 7b04 ldr.w r7, [sp], #4 - 8006446: 4770 bx lr - -08006448 : - * @brief USB_FlushRxFifo Flush Rx FIFO - * @param USBx Selected device - * @retval HAL status - */ -HAL_StatusTypeDef USB_FlushRxFifo(USB_OTG_GlobalTypeDef *USBx) -{ - 8006448: b480 push {r7} - 800644a: b085 sub sp, #20 - 800644c: af00 add r7, sp, #0 - 800644e: 6078 str r0, [r7, #4] - __IO uint32_t count = 0U; - 8006450: 2300 movs r3, #0 - 8006452: 60fb str r3, [r7, #12] - - /* Wait for AHB master IDLE state. */ - do - { - count++; - 8006454: 68fb ldr r3, [r7, #12] - 8006456: 3301 adds r3, #1 - 8006458: 60fb str r3, [r7, #12] - - if (count > HAL_USB_TIMEOUT) - 800645a: 68fb ldr r3, [r7, #12] - 800645c: f1b3 6f70 cmp.w r3, #251658240 @ 0xf000000 - 8006460: d901 bls.n 8006466 - { - return HAL_TIMEOUT; - 8006462: 2303 movs r3, #3 - 8006464: e018 b.n 8006498 - } - } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_AHBIDL) == 0U); - 8006466: 687b ldr r3, [r7, #4] - 8006468: 691b ldr r3, [r3, #16] - 800646a: 2b00 cmp r3, #0 - 800646c: daf2 bge.n 8006454 - - /* Flush RX Fifo */ - count = 0U; - 800646e: 2300 movs r3, #0 - 8006470: 60fb str r3, [r7, #12] - USBx->GRSTCTL = USB_OTG_GRSTCTL_RXFFLSH; - 8006472: 687b ldr r3, [r7, #4] - 8006474: 2210 movs r2, #16 + 800646c: 683b ldr r3, [r7, #0] + 800646e: 019b lsls r3, r3, #6 + 8006470: f043 0220 orr.w r2, r3, #32 + 8006474: 687b ldr r3, [r7, #4] 8006476: 611a str r2, [r3, #16] do @@ -16205,18 +16163,18 @@ HAL_StatusTypeDef USB_FlushRxFifo(USB_OTG_GlobalTypeDef *USBx) if (count > HAL_USB_TIMEOUT) 800647e: 68fb ldr r3, [r7, #12] 8006480: f1b3 6f70 cmp.w r3, #251658240 @ 0xf000000 - 8006484: d901 bls.n 800648a + 8006484: d901 bls.n 800648a { return HAL_TIMEOUT; 8006486: 2303 movs r3, #3 - 8006488: e006 b.n 8006498 + 8006488: e006 b.n 8006498 } - } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_RXFFLSH) == USB_OTG_GRSTCTL_RXFFLSH); + } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_TXFFLSH) == USB_OTG_GRSTCTL_TXFFLSH); 800648a: 687b ldr r3, [r7, #4] 800648c: 691b ldr r3, [r3, #16] - 800648e: f003 0310 and.w r3, r3, #16 - 8006492: 2b10 cmp r3, #16 - 8006494: d0f0 beq.n 8006478 + 800648e: f003 0320 and.w r3, r3, #32 + 8006492: 2b20 cmp r3, #32 + 8006494: d0f0 beq.n 8006478 return HAL_OK; 8006496: 2300 movs r3, #0 @@ -16227,4787 +16185,4865 @@ HAL_StatusTypeDef USB_FlushRxFifo(USB_OTG_GlobalTypeDef *USBx) 800649e: f85d 7b04 ldr.w r7, [sp], #4 80064a2: 4770 bx lr -080064a4 : +080064a4 : + * @brief USB_FlushRxFifo Flush Rx FIFO + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_FlushRxFifo(USB_OTG_GlobalTypeDef *USBx) +{ + 80064a4: b480 push {r7} + 80064a6: b085 sub sp, #20 + 80064a8: af00 add r7, sp, #0 + 80064aa: 6078 str r0, [r7, #4] + __IO uint32_t count = 0U; + 80064ac: 2300 movs r3, #0 + 80064ae: 60fb str r3, [r7, #12] + + /* Wait for AHB master IDLE state. */ + do + { + count++; + 80064b0: 68fb ldr r3, [r7, #12] + 80064b2: 3301 adds r3, #1 + 80064b4: 60fb str r3, [r7, #12] + + if (count > HAL_USB_TIMEOUT) + 80064b6: 68fb ldr r3, [r7, #12] + 80064b8: f1b3 6f70 cmp.w r3, #251658240 @ 0xf000000 + 80064bc: d901 bls.n 80064c2 + { + return HAL_TIMEOUT; + 80064be: 2303 movs r3, #3 + 80064c0: e018 b.n 80064f4 + } + } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_AHBIDL) == 0U); + 80064c2: 687b ldr r3, [r7, #4] + 80064c4: 691b ldr r3, [r3, #16] + 80064c6: 2b00 cmp r3, #0 + 80064c8: daf2 bge.n 80064b0 + + /* Flush RX Fifo */ + count = 0U; + 80064ca: 2300 movs r3, #0 + 80064cc: 60fb str r3, [r7, #12] + USBx->GRSTCTL = USB_OTG_GRSTCTL_RXFFLSH; + 80064ce: 687b ldr r3, [r7, #4] + 80064d0: 2210 movs r2, #16 + 80064d2: 611a str r2, [r3, #16] + + do + { + count++; + 80064d4: 68fb ldr r3, [r7, #12] + 80064d6: 3301 adds r3, #1 + 80064d8: 60fb str r3, [r7, #12] + + if (count > HAL_USB_TIMEOUT) + 80064da: 68fb ldr r3, [r7, #12] + 80064dc: f1b3 6f70 cmp.w r3, #251658240 @ 0xf000000 + 80064e0: d901 bls.n 80064e6 + { + return HAL_TIMEOUT; + 80064e2: 2303 movs r3, #3 + 80064e4: e006 b.n 80064f4 + } + } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_RXFFLSH) == USB_OTG_GRSTCTL_RXFFLSH); + 80064e6: 687b ldr r3, [r7, #4] + 80064e8: 691b ldr r3, [r3, #16] + 80064ea: f003 0310 and.w r3, r3, #16 + 80064ee: 2b10 cmp r3, #16 + 80064f0: d0f0 beq.n 80064d4 + + return HAL_OK; + 80064f2: 2300 movs r3, #0 +} + 80064f4: 4618 mov r0, r3 + 80064f6: 3714 adds r7, #20 + 80064f8: 46bd mov sp, r7 + 80064fa: f85d 7b04 ldr.w r7, [sp], #4 + 80064fe: 4770 bx lr + +08006500 : * @param dest source pointer * @param len Number of bytes to read * @retval pointer to destination buffer */ void *USB_ReadPacket(const USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len) { - 80064a4: b480 push {r7} - 80064a6: b08b sub sp, #44 @ 0x2c - 80064a8: af00 add r7, sp, #0 - 80064aa: 60f8 str r0, [r7, #12] - 80064ac: 60b9 str r1, [r7, #8] - 80064ae: 4613 mov r3, r2 - 80064b0: 80fb strh r3, [r7, #6] + 8006500: b480 push {r7} + 8006502: b08b sub sp, #44 @ 0x2c + 8006504: af00 add r7, sp, #0 + 8006506: 60f8 str r0, [r7, #12] + 8006508: 60b9 str r1, [r7, #8] + 800650a: 4613 mov r3, r2 + 800650c: 80fb strh r3, [r7, #6] uint32_t USBx_BASE = (uint32_t)USBx; - 80064b2: 68fb ldr r3, [r7, #12] - 80064b4: 61bb str r3, [r7, #24] + 800650e: 68fb ldr r3, [r7, #12] + 8006510: 61bb str r3, [r7, #24] uint8_t *pDest = dest; - 80064b6: 68bb ldr r3, [r7, #8] - 80064b8: 627b str r3, [r7, #36] @ 0x24 + 8006512: 68bb ldr r3, [r7, #8] + 8006514: 627b str r3, [r7, #36] @ 0x24 uint32_t pData; uint32_t i; uint32_t count32b = (uint32_t)len >> 2U; - 80064ba: 88fb ldrh r3, [r7, #6] - 80064bc: 089b lsrs r3, r3, #2 - 80064be: b29b uxth r3, r3 - 80064c0: 617b str r3, [r7, #20] + 8006516: 88fb ldrh r3, [r7, #6] + 8006518: 089b lsrs r3, r3, #2 + 800651a: b29b uxth r3, r3 + 800651c: 617b str r3, [r7, #20] uint16_t remaining_bytes = len % 4U; - 80064c2: 88fb ldrh r3, [r7, #6] - 80064c4: f003 0303 and.w r3, r3, #3 - 80064c8: 83fb strh r3, [r7, #30] + 800651e: 88fb ldrh r3, [r7, #6] + 8006520: f003 0303 and.w r3, r3, #3 + 8006524: 83fb strh r3, [r7, #30] for (i = 0U; i < count32b; i++) - 80064ca: 2300 movs r3, #0 - 80064cc: 623b str r3, [r7, #32] - 80064ce: e014 b.n 80064fa + 8006526: 2300 movs r3, #0 + 8006528: 623b str r3, [r7, #32] + 800652a: e014 b.n 8006556 { __UNALIGNED_UINT32_WRITE(pDest, USBx_DFIFO(0U)); - 80064d0: 69bb ldr r3, [r7, #24] - 80064d2: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 80064d6: 681a ldr r2, [r3, #0] - 80064d8: 6a7b ldr r3, [r7, #36] @ 0x24 - 80064da: 601a str r2, [r3, #0] + 800652c: 69bb ldr r3, [r7, #24] + 800652e: f503 5380 add.w r3, r3, #4096 @ 0x1000 + 8006532: 681a ldr r2, [r3, #0] + 8006534: 6a7b ldr r3, [r7, #36] @ 0x24 + 8006536: 601a str r2, [r3, #0] pDest++; - 80064dc: 6a7b ldr r3, [r7, #36] @ 0x24 - 80064de: 3301 adds r3, #1 - 80064e0: 627b str r3, [r7, #36] @ 0x24 + 8006538: 6a7b ldr r3, [r7, #36] @ 0x24 + 800653a: 3301 adds r3, #1 + 800653c: 627b str r3, [r7, #36] @ 0x24 pDest++; - 80064e2: 6a7b ldr r3, [r7, #36] @ 0x24 - 80064e4: 3301 adds r3, #1 - 80064e6: 627b str r3, [r7, #36] @ 0x24 + 800653e: 6a7b ldr r3, [r7, #36] @ 0x24 + 8006540: 3301 adds r3, #1 + 8006542: 627b str r3, [r7, #36] @ 0x24 pDest++; - 80064e8: 6a7b ldr r3, [r7, #36] @ 0x24 - 80064ea: 3301 adds r3, #1 - 80064ec: 627b str r3, [r7, #36] @ 0x24 + 8006544: 6a7b ldr r3, [r7, #36] @ 0x24 + 8006546: 3301 adds r3, #1 + 8006548: 627b str r3, [r7, #36] @ 0x24 pDest++; - 80064ee: 6a7b ldr r3, [r7, #36] @ 0x24 - 80064f0: 3301 adds r3, #1 - 80064f2: 627b str r3, [r7, #36] @ 0x24 + 800654a: 6a7b ldr r3, [r7, #36] @ 0x24 + 800654c: 3301 adds r3, #1 + 800654e: 627b str r3, [r7, #36] @ 0x24 for (i = 0U; i < count32b; i++) - 80064f4: 6a3b ldr r3, [r7, #32] - 80064f6: 3301 adds r3, #1 - 80064f8: 623b str r3, [r7, #32] - 80064fa: 6a3a ldr r2, [r7, #32] - 80064fc: 697b ldr r3, [r7, #20] - 80064fe: 429a cmp r2, r3 - 8006500: d3e6 bcc.n 80064d0 + 8006550: 6a3b ldr r3, [r7, #32] + 8006552: 3301 adds r3, #1 + 8006554: 623b str r3, [r7, #32] + 8006556: 6a3a ldr r2, [r7, #32] + 8006558: 697b ldr r3, [r7, #20] + 800655a: 429a cmp r2, r3 + 800655c: d3e6 bcc.n 800652c } /* When Number of data is not word aligned, read the remaining byte */ if (remaining_bytes != 0U) - 8006502: 8bfb ldrh r3, [r7, #30] - 8006504: 2b00 cmp r3, #0 - 8006506: d01e beq.n 8006546 + 800655e: 8bfb ldrh r3, [r7, #30] + 8006560: 2b00 cmp r3, #0 + 8006562: d01e beq.n 80065a2 { i = 0U; - 8006508: 2300 movs r3, #0 - 800650a: 623b str r3, [r7, #32] + 8006564: 2300 movs r3, #0 + 8006566: 623b str r3, [r7, #32] __UNALIGNED_UINT32_WRITE(&pData, USBx_DFIFO(0U)); - 800650c: 69bb ldr r3, [r7, #24] - 800650e: f503 5380 add.w r3, r3, #4096 @ 0x1000 - 8006512: 461a mov r2, r3 - 8006514: f107 0310 add.w r3, r7, #16 - 8006518: 6812 ldr r2, [r2, #0] - 800651a: 601a str r2, [r3, #0] + 8006568: 69bb ldr r3, [r7, #24] + 800656a: f503 5380 add.w r3, r3, #4096 @ 0x1000 + 800656e: 461a mov r2, r3 + 8006570: f107 0310 add.w r3, r7, #16 + 8006574: 6812 ldr r2, [r2, #0] + 8006576: 601a str r2, [r3, #0] do { *(uint8_t *)pDest = (uint8_t)(pData >> (8U * (uint8_t)(i))); - 800651c: 693a ldr r2, [r7, #16] - 800651e: 6a3b ldr r3, [r7, #32] - 8006520: b2db uxtb r3, r3 - 8006522: 00db lsls r3, r3, #3 - 8006524: fa22 f303 lsr.w r3, r2, r3 - 8006528: b2da uxtb r2, r3 - 800652a: 6a7b ldr r3, [r7, #36] @ 0x24 - 800652c: 701a strb r2, [r3, #0] + 8006578: 693a ldr r2, [r7, #16] + 800657a: 6a3b ldr r3, [r7, #32] + 800657c: b2db uxtb r3, r3 + 800657e: 00db lsls r3, r3, #3 + 8006580: fa22 f303 lsr.w r3, r2, r3 + 8006584: b2da uxtb r2, r3 + 8006586: 6a7b ldr r3, [r7, #36] @ 0x24 + 8006588: 701a strb r2, [r3, #0] i++; - 800652e: 6a3b ldr r3, [r7, #32] - 8006530: 3301 adds r3, #1 - 8006532: 623b str r3, [r7, #32] + 800658a: 6a3b ldr r3, [r7, #32] + 800658c: 3301 adds r3, #1 + 800658e: 623b str r3, [r7, #32] pDest++; - 8006534: 6a7b ldr r3, [r7, #36] @ 0x24 - 8006536: 3301 adds r3, #1 - 8006538: 627b str r3, [r7, #36] @ 0x24 + 8006590: 6a7b ldr r3, [r7, #36] @ 0x24 + 8006592: 3301 adds r3, #1 + 8006594: 627b str r3, [r7, #36] @ 0x24 remaining_bytes--; - 800653a: 8bfb ldrh r3, [r7, #30] - 800653c: 3b01 subs r3, #1 - 800653e: 83fb strh r3, [r7, #30] + 8006596: 8bfb ldrh r3, [r7, #30] + 8006598: 3b01 subs r3, #1 + 800659a: 83fb strh r3, [r7, #30] } while (remaining_bytes != 0U); - 8006540: 8bfb ldrh r3, [r7, #30] - 8006542: 2b00 cmp r3, #0 - 8006544: d1ea bne.n 800651c + 800659c: 8bfb ldrh r3, [r7, #30] + 800659e: 2b00 cmp r3, #0 + 80065a0: d1ea bne.n 8006578 } return ((void *)pDest); - 8006546: 6a7b ldr r3, [r7, #36] @ 0x24 + 80065a2: 6a7b ldr r3, [r7, #36] @ 0x24 } - 8006548: 4618 mov r0, r3 - 800654a: 372c adds r7, #44 @ 0x2c - 800654c: 46bd mov sp, r7 - 800654e: f85d 7b04 ldr.w r7, [sp], #4 - 8006552: 4770 bx lr + 80065a4: 4618 mov r0, r3 + 80065a6: 372c adds r7, #44 @ 0x2c + 80065a8: 46bd mov sp, r7 + 80065aa: f85d 7b04 ldr.w r7, [sp], #4 + 80065ae: 4770 bx lr -08006554 : +080065b0 : * @brief USB_ReadInterrupts: return the global USB interrupt status * @param USBx Selected device * @retval USB Global Interrupt status */ uint32_t USB_ReadInterrupts(USB_OTG_GlobalTypeDef const *USBx) { - 8006554: b480 push {r7} - 8006556: b085 sub sp, #20 - 8006558: af00 add r7, sp, #0 - 800655a: 6078 str r0, [r7, #4] + 80065b0: b480 push {r7} + 80065b2: b085 sub sp, #20 + 80065b4: af00 add r7, sp, #0 + 80065b6: 6078 str r0, [r7, #4] uint32_t tmpreg; tmpreg = USBx->GINTSTS; - 800655c: 687b ldr r3, [r7, #4] - 800655e: 695b ldr r3, [r3, #20] - 8006560: 60fb str r3, [r7, #12] + 80065b8: 687b ldr r3, [r7, #4] + 80065ba: 695b ldr r3, [r3, #20] + 80065bc: 60fb str r3, [r7, #12] tmpreg &= USBx->GINTMSK; - 8006562: 687b ldr r3, [r7, #4] - 8006564: 699b ldr r3, [r3, #24] - 8006566: 68fa ldr r2, [r7, #12] - 8006568: 4013 ands r3, r2 - 800656a: 60fb str r3, [r7, #12] + 80065be: 687b ldr r3, [r7, #4] + 80065c0: 699b ldr r3, [r3, #24] + 80065c2: 68fa ldr r2, [r7, #12] + 80065c4: 4013 ands r3, r2 + 80065c6: 60fb str r3, [r7, #12] return tmpreg; - 800656c: 68fb ldr r3, [r7, #12] + 80065c8: 68fb ldr r3, [r7, #12] } - 800656e: 4618 mov r0, r3 - 8006570: 3714 adds r7, #20 - 8006572: 46bd mov sp, r7 - 8006574: f85d 7b04 ldr.w r7, [sp], #4 - 8006578: 4770 bx lr + 80065ca: 4618 mov r0, r3 + 80065cc: 3714 adds r7, #20 + 80065ce: 46bd mov sp, r7 + 80065d0: f85d 7b04 ldr.w r7, [sp], #4 + 80065d4: 4770 bx lr -0800657a : +080065d6 : * @param USBx Selected device * @param chnum Channel number * @retval USB Channel Interrupt status */ uint32_t USB_ReadChInterrupts(const USB_OTG_GlobalTypeDef *USBx, uint8_t chnum) { - 800657a: b480 push {r7} - 800657c: b085 sub sp, #20 - 800657e: af00 add r7, sp, #0 - 8006580: 6078 str r0, [r7, #4] - 8006582: 460b mov r3, r1 - 8006584: 70fb strb r3, [r7, #3] + 80065d6: b480 push {r7} + 80065d8: b085 sub sp, #20 + 80065da: af00 add r7, sp, #0 + 80065dc: 6078 str r0, [r7, #4] + 80065de: 460b mov r3, r1 + 80065e0: 70fb strb r3, [r7, #3] uint32_t USBx_BASE = (uint32_t)USBx; - 8006586: 687b ldr r3, [r7, #4] - 8006588: 60fb str r3, [r7, #12] + 80065e2: 687b ldr r3, [r7, #4] + 80065e4: 60fb str r3, [r7, #12] uint32_t tmpreg; tmpreg = USBx_HC(chnum)->HCINT; - 800658a: 78fb ldrb r3, [r7, #3] - 800658c: 015a lsls r2, r3, #5 - 800658e: 68fb ldr r3, [r7, #12] - 8006590: 4413 add r3, r2 - 8006592: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8006596: 689b ldr r3, [r3, #8] - 8006598: 60bb str r3, [r7, #8] + 80065e6: 78fb ldrb r3, [r7, #3] + 80065e8: 015a lsls r2, r3, #5 + 80065ea: 68fb ldr r3, [r7, #12] + 80065ec: 4413 add r3, r2 + 80065ee: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80065f2: 689b ldr r3, [r3, #8] + 80065f4: 60bb str r3, [r7, #8] tmpreg &= USBx_HC(chnum)->HCINTMSK; - 800659a: 78fb ldrb r3, [r7, #3] - 800659c: 015a lsls r2, r3, #5 - 800659e: 68fb ldr r3, [r7, #12] - 80065a0: 4413 add r3, r2 - 80065a2: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 80065a6: 68db ldr r3, [r3, #12] - 80065a8: 68ba ldr r2, [r7, #8] - 80065aa: 4013 ands r3, r2 - 80065ac: 60bb str r3, [r7, #8] + 80065f6: 78fb ldrb r3, [r7, #3] + 80065f8: 015a lsls r2, r3, #5 + 80065fa: 68fb ldr r3, [r7, #12] + 80065fc: 4413 add r3, r2 + 80065fe: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8006602: 68db ldr r3, [r3, #12] + 8006604: 68ba ldr r2, [r7, #8] + 8006606: 4013 ands r3, r2 + 8006608: 60bb str r3, [r7, #8] return tmpreg; - 80065ae: 68bb ldr r3, [r7, #8] + 800660a: 68bb ldr r3, [r7, #8] } - 80065b0: 4618 mov r0, r3 - 80065b2: 3714 adds r7, #20 - 80065b4: 46bd mov sp, r7 - 80065b6: f85d 7b04 ldr.w r7, [sp], #4 - 80065ba: 4770 bx lr + 800660c: 4618 mov r0, r3 + 800660e: 3714 adds r7, #20 + 8006610: 46bd mov sp, r7 + 8006612: f85d 7b04 ldr.w r7, [sp], #4 + 8006616: 4770 bx lr -080065bc : +08006618 : * This parameter can be one of these values: * 1 : Host * 0 : Device */ uint32_t USB_GetMode(const USB_OTG_GlobalTypeDef *USBx) { - 80065bc: b480 push {r7} - 80065be: b083 sub sp, #12 - 80065c0: af00 add r7, sp, #0 - 80065c2: 6078 str r0, [r7, #4] + 8006618: b480 push {r7} + 800661a: b083 sub sp, #12 + 800661c: af00 add r7, sp, #0 + 800661e: 6078 str r0, [r7, #4] return ((USBx->GINTSTS) & 0x1U); - 80065c4: 687b ldr r3, [r7, #4] - 80065c6: 695b ldr r3, [r3, #20] - 80065c8: f003 0301 and.w r3, r3, #1 + 8006620: 687b ldr r3, [r7, #4] + 8006622: 695b ldr r3, [r3, #20] + 8006624: f003 0301 and.w r3, r3, #1 } - 80065cc: 4618 mov r0, r3 - 80065ce: 370c adds r7, #12 - 80065d0: 46bd mov sp, r7 - 80065d2: f85d 7b04 ldr.w r7, [sp], #4 - 80065d6: 4770 bx lr + 8006628: 4618 mov r0, r3 + 800662a: 370c adds r7, #12 + 800662c: 46bd mov sp, r7 + 800662e: f85d 7b04 ldr.w r7, [sp], #4 + 8006632: 4770 bx lr -080065d8 : +08006634 : * HCFG_48_MHZ : Full Speed 48 MHz Clock * HCFG_6_MHZ : Low Speed 6 MHz Clock * @retval HAL status */ HAL_StatusTypeDef USB_InitFSLSPClkSel(const USB_OTG_GlobalTypeDef *USBx, uint8_t freq) { - 80065d8: b480 push {r7} - 80065da: b085 sub sp, #20 - 80065dc: af00 add r7, sp, #0 - 80065de: 6078 str r0, [r7, #4] - 80065e0: 460b mov r3, r1 - 80065e2: 70fb strb r3, [r7, #3] + 8006634: b480 push {r7} + 8006636: b085 sub sp, #20 + 8006638: af00 add r7, sp, #0 + 800663a: 6078 str r0, [r7, #4] + 800663c: 460b mov r3, r1 + 800663e: 70fb strb r3, [r7, #3] uint32_t USBx_BASE = (uint32_t)USBx; - 80065e4: 687b ldr r3, [r7, #4] - 80065e6: 60fb str r3, [r7, #12] + 8006640: 687b ldr r3, [r7, #4] + 8006642: 60fb str r3, [r7, #12] USBx_HOST->HCFG &= ~(USB_OTG_HCFG_FSLSPCS); - 80065e8: 68fb ldr r3, [r7, #12] - 80065ea: f503 6380 add.w r3, r3, #1024 @ 0x400 - 80065ee: 681b ldr r3, [r3, #0] - 80065f0: 68fa ldr r2, [r7, #12] - 80065f2: f502 6280 add.w r2, r2, #1024 @ 0x400 - 80065f6: f023 0303 bic.w r3, r3, #3 - 80065fa: 6013 str r3, [r2, #0] + 8006644: 68fb ldr r3, [r7, #12] + 8006646: f503 6380 add.w r3, r3, #1024 @ 0x400 + 800664a: 681b ldr r3, [r3, #0] + 800664c: 68fa ldr r2, [r7, #12] + 800664e: f502 6280 add.w r2, r2, #1024 @ 0x400 + 8006652: f023 0303 bic.w r3, r3, #3 + 8006656: 6013 str r3, [r2, #0] USBx_HOST->HCFG |= (uint32_t)freq & USB_OTG_HCFG_FSLSPCS; - 80065fc: 68fb ldr r3, [r7, #12] - 80065fe: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8006602: 681a ldr r2, [r3, #0] - 8006604: 78fb ldrb r3, [r7, #3] - 8006606: f003 0303 and.w r3, r3, #3 - 800660a: 68f9 ldr r1, [r7, #12] - 800660c: f501 6180 add.w r1, r1, #1024 @ 0x400 - 8006610: 4313 orrs r3, r2 - 8006612: 600b str r3, [r1, #0] + 8006658: 68fb ldr r3, [r7, #12] + 800665a: f503 6380 add.w r3, r3, #1024 @ 0x400 + 800665e: 681a ldr r2, [r3, #0] + 8006660: 78fb ldrb r3, [r7, #3] + 8006662: f003 0303 and.w r3, r3, #3 + 8006666: 68f9 ldr r1, [r7, #12] + 8006668: f501 6180 add.w r1, r1, #1024 @ 0x400 + 800666c: 4313 orrs r3, r2 + 800666e: 600b str r3, [r1, #0] if (freq == HCFG_48_MHZ) - 8006614: 78fb ldrb r3, [r7, #3] - 8006616: 2b01 cmp r3, #1 - 8006618: d107 bne.n 800662a + 8006670: 78fb ldrb r3, [r7, #3] + 8006672: 2b01 cmp r3, #1 + 8006674: d107 bne.n 8006686 { USBx_HOST->HFIR = HFIR_48_MHZ; - 800661a: 68fb ldr r3, [r7, #12] - 800661c: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8006620: 461a mov r2, r3 - 8006622: f64b 3380 movw r3, #48000 @ 0xbb80 - 8006626: 6053 str r3, [r2, #4] - 8006628: e00c b.n 8006644 + 8006676: 68fb ldr r3, [r7, #12] + 8006678: f503 6380 add.w r3, r3, #1024 @ 0x400 + 800667c: 461a mov r2, r3 + 800667e: f64b 3380 movw r3, #48000 @ 0xbb80 + 8006682: 6053 str r3, [r2, #4] + 8006684: e00c b.n 80066a0 } else if (freq == HCFG_6_MHZ) - 800662a: 78fb ldrb r3, [r7, #3] - 800662c: 2b02 cmp r3, #2 - 800662e: d107 bne.n 8006640 + 8006686: 78fb ldrb r3, [r7, #3] + 8006688: 2b02 cmp r3, #2 + 800668a: d107 bne.n 800669c { USBx_HOST->HFIR = HFIR_6_MHZ; - 8006630: 68fb ldr r3, [r7, #12] - 8006632: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8006636: 461a mov r2, r3 - 8006638: f241 7370 movw r3, #6000 @ 0x1770 - 800663c: 6053 str r3, [r2, #4] - 800663e: e001 b.n 8006644 + 800668c: 68fb ldr r3, [r7, #12] + 800668e: f503 6380 add.w r3, r3, #1024 @ 0x400 + 8006692: 461a mov r2, r3 + 8006694: f241 7370 movw r3, #6000 @ 0x1770 + 8006698: 6053 str r3, [r2, #4] + 800669a: e001 b.n 80066a0 } else { return HAL_ERROR; - 8006640: 2301 movs r3, #1 - 8006642: e000 b.n 8006646 + 800669c: 2301 movs r3, #1 + 800669e: e000 b.n 80066a2 } return HAL_OK; - 8006644: 2300 movs r3, #0 + 80066a0: 2300 movs r3, #0 } - 8006646: 4618 mov r0, r3 - 8006648: 3714 adds r7, #20 - 800664a: 46bd mov sp, r7 - 800664c: f85d 7b04 ldr.w r7, [sp], #4 - 8006650: 4770 bx lr + 80066a2: 4618 mov r0, r3 + 80066a4: 3714 adds r7, #20 + 80066a6: 46bd mov sp, r7 + 80066a8: f85d 7b04 ldr.w r7, [sp], #4 + 80066ac: 4770 bx lr -08006652 : +080066ae : * @brief Read all host channel interrupts status * @param USBx Selected device * @retval HAL state */ uint32_t USB_HC_ReadInterrupt(const USB_OTG_GlobalTypeDef *USBx) { - 8006652: b480 push {r7} - 8006654: b085 sub sp, #20 - 8006656: af00 add r7, sp, #0 - 8006658: 6078 str r0, [r7, #4] + 80066ae: b480 push {r7} + 80066b0: b085 sub sp, #20 + 80066b2: af00 add r7, sp, #0 + 80066b4: 6078 str r0, [r7, #4] uint32_t USBx_BASE = (uint32_t)USBx; - 800665a: 687b ldr r3, [r7, #4] - 800665c: 60fb str r3, [r7, #12] + 80066b6: 687b ldr r3, [r7, #4] + 80066b8: 60fb str r3, [r7, #12] return ((USBx_HOST->HAINT) & 0xFFFFU); - 800665e: 68fb ldr r3, [r7, #12] - 8006660: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8006664: 695b ldr r3, [r3, #20] - 8006666: b29b uxth r3, r3 + 80066ba: 68fb ldr r3, [r7, #12] + 80066bc: f503 6380 add.w r3, r3, #1024 @ 0x400 + 80066c0: 695b ldr r3, [r3, #20] + 80066c2: b29b uxth r3, r3 } - 8006668: 4618 mov r0, r3 - 800666a: 3714 adds r7, #20 - 800666c: 46bd mov sp, r7 - 800666e: f85d 7b04 ldr.w r7, [sp], #4 - 8006672: 4770 bx lr + 80066c4: 4618 mov r0, r3 + 80066c6: 3714 adds r7, #20 + 80066c8: 46bd mov sp, r7 + 80066ca: f85d 7b04 ldr.w r7, [sp], #4 + 80066ce: 4770 bx lr -08006674 : +080066d0 : * @param hc_num Host Channel number * This parameter can be a value from 1 to 15 * @retval HAL state */ HAL_StatusTypeDef USB_HC_Halt(const USB_OTG_GlobalTypeDef *USBx, uint8_t hc_num) { - 8006674: b480 push {r7} - 8006676: b089 sub sp, #36 @ 0x24 - 8006678: af00 add r7, sp, #0 - 800667a: 6078 str r0, [r7, #4] - 800667c: 460b mov r3, r1 - 800667e: 70fb strb r3, [r7, #3] + 80066d0: b480 push {r7} + 80066d2: b089 sub sp, #36 @ 0x24 + 80066d4: af00 add r7, sp, #0 + 80066d6: 6078 str r0, [r7, #4] + 80066d8: 460b mov r3, r1 + 80066da: 70fb strb r3, [r7, #3] uint32_t USBx_BASE = (uint32_t)USBx; - 8006680: 687b ldr r3, [r7, #4] - 8006682: 61fb str r3, [r7, #28] + 80066dc: 687b ldr r3, [r7, #4] + 80066de: 61fb str r3, [r7, #28] uint32_t hcnum = (uint32_t)hc_num; - 8006684: 78fb ldrb r3, [r7, #3] - 8006686: 61bb str r3, [r7, #24] + 80066e0: 78fb ldrb r3, [r7, #3] + 80066e2: 61bb str r3, [r7, #24] __IO uint32_t count = 0U; - 8006688: 2300 movs r3, #0 - 800668a: 60bb str r3, [r7, #8] + 80066e4: 2300 movs r3, #0 + 80066e6: 60bb str r3, [r7, #8] uint32_t HcEpType = (USBx_HC(hcnum)->HCCHAR & USB_OTG_HCCHAR_EPTYP) >> 18; - 800668c: 69bb ldr r3, [r7, #24] - 800668e: 015a lsls r2, r3, #5 - 8006690: 69fb ldr r3, [r7, #28] - 8006692: 4413 add r3, r2 - 8006694: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8006698: 681b ldr r3, [r3, #0] - 800669a: 0c9b lsrs r3, r3, #18 - 800669c: f003 0303 and.w r3, r3, #3 - 80066a0: 617b str r3, [r7, #20] + 80066e8: 69bb ldr r3, [r7, #24] + 80066ea: 015a lsls r2, r3, #5 + 80066ec: 69fb ldr r3, [r7, #28] + 80066ee: 4413 add r3, r2 + 80066f0: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80066f4: 681b ldr r3, [r3, #0] + 80066f6: 0c9b lsrs r3, r3, #18 + 80066f8: f003 0303 and.w r3, r3, #3 + 80066fc: 617b str r3, [r7, #20] uint32_t ChannelEna = (USBx_HC(hcnum)->HCCHAR & USB_OTG_HCCHAR_CHENA) >> 31; - 80066a2: 69bb ldr r3, [r7, #24] - 80066a4: 015a lsls r2, r3, #5 - 80066a6: 69fb ldr r3, [r7, #28] - 80066a8: 4413 add r3, r2 - 80066aa: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 80066ae: 681b ldr r3, [r3, #0] - 80066b0: 0fdb lsrs r3, r3, #31 - 80066b2: f003 0301 and.w r3, r3, #1 - 80066b6: 613b str r3, [r7, #16] + 80066fe: 69bb ldr r3, [r7, #24] + 8006700: 015a lsls r2, r3, #5 + 8006702: 69fb ldr r3, [r7, #28] + 8006704: 4413 add r3, r2 + 8006706: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 800670a: 681b ldr r3, [r3, #0] + 800670c: 0fdb lsrs r3, r3, #31 + 800670e: f003 0301 and.w r3, r3, #1 + 8006712: 613b str r3, [r7, #16] uint32_t SplitEna = (USBx_HC(hcnum)->HCSPLT & USB_OTG_HCSPLT_SPLITEN) >> 31; - 80066b8: 69bb ldr r3, [r7, #24] - 80066ba: 015a lsls r2, r3, #5 - 80066bc: 69fb ldr r3, [r7, #28] - 80066be: 4413 add r3, r2 - 80066c0: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 80066c4: 685b ldr r3, [r3, #4] - 80066c6: 0fdb lsrs r3, r3, #31 - 80066c8: f003 0301 and.w r3, r3, #1 - 80066cc: 60fb str r3, [r7, #12] + 8006714: 69bb ldr r3, [r7, #24] + 8006716: 015a lsls r2, r3, #5 + 8006718: 69fb ldr r3, [r7, #28] + 800671a: 4413 add r3, r2 + 800671c: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8006720: 685b ldr r3, [r3, #4] + 8006722: 0fdb lsrs r3, r3, #31 + 8006724: f003 0301 and.w r3, r3, #1 + 8006728: 60fb str r3, [r7, #12] /* In buffer DMA, Channel disable must not be programmed for non-split periodic channels. At the end of the next uframe/frame (in the worst case), the core generates a channel halted and disables the channel automatically. */ if ((((USBx->GAHBCFG & USB_OTG_GAHBCFG_DMAEN) == USB_OTG_GAHBCFG_DMAEN) && (SplitEna == 0U)) && - 80066ce: 687b ldr r3, [r7, #4] - 80066d0: 689b ldr r3, [r3, #8] - 80066d2: f003 0320 and.w r3, r3, #32 - 80066d6: 2b20 cmp r3, #32 - 80066d8: d10d bne.n 80066f6 - 80066da: 68fb ldr r3, [r7, #12] - 80066dc: 2b00 cmp r3, #0 - 80066de: d10a bne.n 80066f6 - 80066e0: 693b ldr r3, [r7, #16] - 80066e2: 2b00 cmp r3, #0 - 80066e4: d005 beq.n 80066f2 + 800672a: 687b ldr r3, [r7, #4] + 800672c: 689b ldr r3, [r3, #8] + 800672e: f003 0320 and.w r3, r3, #32 + 8006732: 2b20 cmp r3, #32 + 8006734: d10d bne.n 8006752 + 8006736: 68fb ldr r3, [r7, #12] + 8006738: 2b00 cmp r3, #0 + 800673a: d10a bne.n 8006752 + 800673c: 693b ldr r3, [r7, #16] + 800673e: 2b00 cmp r3, #0 + 8006740: d005 beq.n 800674e ((ChannelEna == 0U) || (((HcEpType == HCCHAR_ISOC) || (HcEpType == HCCHAR_INTR))))) - 80066e6: 697b ldr r3, [r7, #20] - 80066e8: 2b01 cmp r3, #1 - 80066ea: d002 beq.n 80066f2 - 80066ec: 697b ldr r3, [r7, #20] - 80066ee: 2b03 cmp r3, #3 - 80066f0: d101 bne.n 80066f6 + 8006742: 697b ldr r3, [r7, #20] + 8006744: 2b01 cmp r3, #1 + 8006746: d002 beq.n 800674e + 8006748: 697b ldr r3, [r7, #20] + 800674a: 2b03 cmp r3, #3 + 800674c: d101 bne.n 8006752 { return HAL_OK; - 80066f2: 2300 movs r3, #0 - 80066f4: e0d8 b.n 80068a8 + 800674e: 2300 movs r3, #0 + 8006750: e0d8 b.n 8006904 } /* Check for space in the request queue to issue the halt. */ if ((HcEpType == HCCHAR_CTRL) || (HcEpType == HCCHAR_BULK)) - 80066f6: 697b ldr r3, [r7, #20] - 80066f8: 2b00 cmp r3, #0 - 80066fa: d002 beq.n 8006702 - 80066fc: 697b ldr r3, [r7, #20] - 80066fe: 2b02 cmp r3, #2 - 8006700: d173 bne.n 80067ea + 8006752: 697b ldr r3, [r7, #20] + 8006754: 2b00 cmp r3, #0 + 8006756: d002 beq.n 800675e + 8006758: 697b ldr r3, [r7, #20] + 800675a: 2b02 cmp r3, #2 + 800675c: d173 bne.n 8006846 { USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHDIS; - 8006702: 69bb ldr r3, [r7, #24] - 8006704: 015a lsls r2, r3, #5 - 8006706: 69fb ldr r3, [r7, #28] - 8006708: 4413 add r3, r2 - 800670a: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 800670e: 681b ldr r3, [r3, #0] - 8006710: 69ba ldr r2, [r7, #24] - 8006712: 0151 lsls r1, r2, #5 - 8006714: 69fa ldr r2, [r7, #28] - 8006716: 440a add r2, r1 - 8006718: f502 62a0 add.w r2, r2, #1280 @ 0x500 - 800671c: f043 4380 orr.w r3, r3, #1073741824 @ 0x40000000 - 8006720: 6013 str r3, [r2, #0] + 800675e: 69bb ldr r3, [r7, #24] + 8006760: 015a lsls r2, r3, #5 + 8006762: 69fb ldr r3, [r7, #28] + 8006764: 4413 add r3, r2 + 8006766: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 800676a: 681b ldr r3, [r3, #0] + 800676c: 69ba ldr r2, [r7, #24] + 800676e: 0151 lsls r1, r2, #5 + 8006770: 69fa ldr r2, [r7, #28] + 8006772: 440a add r2, r1 + 8006774: f502 62a0 add.w r2, r2, #1280 @ 0x500 + 8006778: f043 4380 orr.w r3, r3, #1073741824 @ 0x40000000 + 800677c: 6013 str r3, [r2, #0] if ((USBx->GAHBCFG & USB_OTG_GAHBCFG_DMAEN) == 0U) - 8006722: 687b ldr r3, [r7, #4] - 8006724: 689b ldr r3, [r3, #8] - 8006726: f003 0320 and.w r3, r3, #32 - 800672a: 2b00 cmp r3, #0 - 800672c: d14a bne.n 80067c4 + 800677e: 687b ldr r3, [r7, #4] + 8006780: 689b ldr r3, [r3, #8] + 8006782: f003 0320 and.w r3, r3, #32 + 8006786: 2b00 cmp r3, #0 + 8006788: d14a bne.n 8006820 { if ((USBx->HNPTXSTS & (0xFFU << 16)) == 0U) - 800672e: 687b ldr r3, [r7, #4] - 8006730: 6adb ldr r3, [r3, #44] @ 0x2c - 8006732: f403 037f and.w r3, r3, #16711680 @ 0xff0000 - 8006736: 2b00 cmp r3, #0 - 8006738: d133 bne.n 80067a2 + 800678a: 687b ldr r3, [r7, #4] + 800678c: 6adb ldr r3, [r3, #44] @ 0x2c + 800678e: f403 037f and.w r3, r3, #16711680 @ 0xff0000 + 8006792: 2b00 cmp r3, #0 + 8006794: d133 bne.n 80067fe { USBx_HC(hcnum)->HCCHAR &= ~USB_OTG_HCCHAR_CHENA; - 800673a: 69bb ldr r3, [r7, #24] - 800673c: 015a lsls r2, r3, #5 - 800673e: 69fb ldr r3, [r7, #28] - 8006740: 4413 add r3, r2 - 8006742: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8006746: 681b ldr r3, [r3, #0] - 8006748: 69ba ldr r2, [r7, #24] - 800674a: 0151 lsls r1, r2, #5 - 800674c: 69fa ldr r2, [r7, #28] - 800674e: 440a add r2, r1 - 8006750: f502 62a0 add.w r2, r2, #1280 @ 0x500 - 8006754: f023 4300 bic.w r3, r3, #2147483648 @ 0x80000000 - 8006758: 6013 str r3, [r2, #0] + 8006796: 69bb ldr r3, [r7, #24] + 8006798: 015a lsls r2, r3, #5 + 800679a: 69fb ldr r3, [r7, #28] + 800679c: 4413 add r3, r2 + 800679e: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80067a2: 681b ldr r3, [r3, #0] + 80067a4: 69ba ldr r2, [r7, #24] + 80067a6: 0151 lsls r1, r2, #5 + 80067a8: 69fa ldr r2, [r7, #28] + 80067aa: 440a add r2, r1 + 80067ac: f502 62a0 add.w r2, r2, #1280 @ 0x500 + 80067b0: f023 4300 bic.w r3, r3, #2147483648 @ 0x80000000 + 80067b4: 6013 str r3, [r2, #0] USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHENA; - 800675a: 69bb ldr r3, [r7, #24] - 800675c: 015a lsls r2, r3, #5 - 800675e: 69fb ldr r3, [r7, #28] - 8006760: 4413 add r3, r2 - 8006762: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8006766: 681b ldr r3, [r3, #0] - 8006768: 69ba ldr r2, [r7, #24] - 800676a: 0151 lsls r1, r2, #5 - 800676c: 69fa ldr r2, [r7, #28] - 800676e: 440a add r2, r1 - 8006770: f502 62a0 add.w r2, r2, #1280 @ 0x500 - 8006774: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 - 8006778: 6013 str r3, [r2, #0] + 80067b6: 69bb ldr r3, [r7, #24] + 80067b8: 015a lsls r2, r3, #5 + 80067ba: 69fb ldr r3, [r7, #28] + 80067bc: 4413 add r3, r2 + 80067be: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80067c2: 681b ldr r3, [r3, #0] + 80067c4: 69ba ldr r2, [r7, #24] + 80067c6: 0151 lsls r1, r2, #5 + 80067c8: 69fa ldr r2, [r7, #28] + 80067ca: 440a add r2, r1 + 80067cc: f502 62a0 add.w r2, r2, #1280 @ 0x500 + 80067d0: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 80067d4: 6013 str r3, [r2, #0] do { count++; - 800677a: 68bb ldr r3, [r7, #8] - 800677c: 3301 adds r3, #1 - 800677e: 60bb str r3, [r7, #8] + 80067d6: 68bb ldr r3, [r7, #8] + 80067d8: 3301 adds r3, #1 + 80067da: 60bb str r3, [r7, #8] if (count > 1000U) - 8006780: 68bb ldr r3, [r7, #8] - 8006782: f5b3 7f7a cmp.w r3, #1000 @ 0x3e8 - 8006786: d82e bhi.n 80067e6 + 80067dc: 68bb ldr r3, [r7, #8] + 80067de: f5b3 7f7a cmp.w r3, #1000 @ 0x3e8 + 80067e2: d82e bhi.n 8006842 { break; } } while ((USBx_HC(hcnum)->HCCHAR & USB_OTG_HCCHAR_CHENA) == USB_OTG_HCCHAR_CHENA); - 8006788: 69bb ldr r3, [r7, #24] - 800678a: 015a lsls r2, r3, #5 - 800678c: 69fb ldr r3, [r7, #28] - 800678e: 4413 add r3, r2 - 8006790: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8006794: 681b ldr r3, [r3, #0] - 8006796: f003 4300 and.w r3, r3, #2147483648 @ 0x80000000 - 800679a: f1b3 4f00 cmp.w r3, #2147483648 @ 0x80000000 - 800679e: d0ec beq.n 800677a + 80067e4: 69bb ldr r3, [r7, #24] + 80067e6: 015a lsls r2, r3, #5 + 80067e8: 69fb ldr r3, [r7, #28] + 80067ea: 4413 add r3, r2 + 80067ec: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80067f0: 681b ldr r3, [r3, #0] + 80067f2: f003 4300 and.w r3, r3, #2147483648 @ 0x80000000 + 80067f6: f1b3 4f00 cmp.w r3, #2147483648 @ 0x80000000 + 80067fa: d0ec beq.n 80067d6 if ((USBx->GAHBCFG & USB_OTG_GAHBCFG_DMAEN) == 0U) - 80067a0: e081 b.n 80068a6 + 80067fc: e081 b.n 8006902 } else { USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHENA; - 80067a2: 69bb ldr r3, [r7, #24] - 80067a4: 015a lsls r2, r3, #5 - 80067a6: 69fb ldr r3, [r7, #28] - 80067a8: 4413 add r3, r2 - 80067aa: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 80067ae: 681b ldr r3, [r3, #0] - 80067b0: 69ba ldr r2, [r7, #24] - 80067b2: 0151 lsls r1, r2, #5 - 80067b4: 69fa ldr r2, [r7, #28] - 80067b6: 440a add r2, r1 - 80067b8: f502 62a0 add.w r2, r2, #1280 @ 0x500 - 80067bc: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 - 80067c0: 6013 str r3, [r2, #0] + 80067fe: 69bb ldr r3, [r7, #24] + 8006800: 015a lsls r2, r3, #5 + 8006802: 69fb ldr r3, [r7, #28] + 8006804: 4413 add r3, r2 + 8006806: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 800680a: 681b ldr r3, [r3, #0] + 800680c: 69ba ldr r2, [r7, #24] + 800680e: 0151 lsls r1, r2, #5 + 8006810: 69fa ldr r2, [r7, #28] + 8006812: 440a add r2, r1 + 8006814: f502 62a0 add.w r2, r2, #1280 @ 0x500 + 8006818: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 800681c: 6013 str r3, [r2, #0] if ((USBx->GAHBCFG & USB_OTG_GAHBCFG_DMAEN) == 0U) - 80067c2: e070 b.n 80068a6 + 800681e: e070 b.n 8006902 } } else { USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHENA; - 80067c4: 69bb ldr r3, [r7, #24] - 80067c6: 015a lsls r2, r3, #5 - 80067c8: 69fb ldr r3, [r7, #28] - 80067ca: 4413 add r3, r2 - 80067cc: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 80067d0: 681b ldr r3, [r3, #0] - 80067d2: 69ba ldr r2, [r7, #24] - 80067d4: 0151 lsls r1, r2, #5 - 80067d6: 69fa ldr r2, [r7, #28] - 80067d8: 440a add r2, r1 - 80067da: f502 62a0 add.w r2, r2, #1280 @ 0x500 - 80067de: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 - 80067e2: 6013 str r3, [r2, #0] + 8006820: 69bb ldr r3, [r7, #24] + 8006822: 015a lsls r2, r3, #5 + 8006824: 69fb ldr r3, [r7, #28] + 8006826: 4413 add r3, r2 + 8006828: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 800682c: 681b ldr r3, [r3, #0] + 800682e: 69ba ldr r2, [r7, #24] + 8006830: 0151 lsls r1, r2, #5 + 8006832: 69fa ldr r2, [r7, #28] + 8006834: 440a add r2, r1 + 8006836: f502 62a0 add.w r2, r2, #1280 @ 0x500 + 800683a: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 800683e: 6013 str r3, [r2, #0] if ((USBx->GAHBCFG & USB_OTG_GAHBCFG_DMAEN) == 0U) - 80067e4: e05f b.n 80068a6 + 8006840: e05f b.n 8006902 break; - 80067e6: bf00 nop + 8006842: bf00 nop if ((USBx->GAHBCFG & USB_OTG_GAHBCFG_DMAEN) == 0U) - 80067e8: e05d b.n 80068a6 + 8006844: e05d b.n 8006902 } } else { USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHDIS; - 80067ea: 69bb ldr r3, [r7, #24] - 80067ec: 015a lsls r2, r3, #5 - 80067ee: 69fb ldr r3, [r7, #28] - 80067f0: 4413 add r3, r2 - 80067f2: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 80067f6: 681b ldr r3, [r3, #0] - 80067f8: 69ba ldr r2, [r7, #24] - 80067fa: 0151 lsls r1, r2, #5 - 80067fc: 69fa ldr r2, [r7, #28] - 80067fe: 440a add r2, r1 - 8006800: f502 62a0 add.w r2, r2, #1280 @ 0x500 - 8006804: f043 4380 orr.w r3, r3, #1073741824 @ 0x40000000 - 8006808: 6013 str r3, [r2, #0] + 8006846: 69bb ldr r3, [r7, #24] + 8006848: 015a lsls r2, r3, #5 + 800684a: 69fb ldr r3, [r7, #28] + 800684c: 4413 add r3, r2 + 800684e: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8006852: 681b ldr r3, [r3, #0] + 8006854: 69ba ldr r2, [r7, #24] + 8006856: 0151 lsls r1, r2, #5 + 8006858: 69fa ldr r2, [r7, #28] + 800685a: 440a add r2, r1 + 800685c: f502 62a0 add.w r2, r2, #1280 @ 0x500 + 8006860: f043 4380 orr.w r3, r3, #1073741824 @ 0x40000000 + 8006864: 6013 str r3, [r2, #0] if ((USBx_HOST->HPTXSTS & (0xFFU << 16)) == 0U) - 800680a: 69fb ldr r3, [r7, #28] - 800680c: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8006810: 691b ldr r3, [r3, #16] - 8006812: f403 037f and.w r3, r3, #16711680 @ 0xff0000 - 8006816: 2b00 cmp r3, #0 - 8006818: d133 bne.n 8006882 + 8006866: 69fb ldr r3, [r7, #28] + 8006868: f503 6380 add.w r3, r3, #1024 @ 0x400 + 800686c: 691b ldr r3, [r3, #16] + 800686e: f403 037f and.w r3, r3, #16711680 @ 0xff0000 + 8006872: 2b00 cmp r3, #0 + 8006874: d133 bne.n 80068de { USBx_HC(hcnum)->HCCHAR &= ~USB_OTG_HCCHAR_CHENA; - 800681a: 69bb ldr r3, [r7, #24] - 800681c: 015a lsls r2, r3, #5 - 800681e: 69fb ldr r3, [r7, #28] - 8006820: 4413 add r3, r2 - 8006822: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8006826: 681b ldr r3, [r3, #0] - 8006828: 69ba ldr r2, [r7, #24] - 800682a: 0151 lsls r1, r2, #5 - 800682c: 69fa ldr r2, [r7, #28] - 800682e: 440a add r2, r1 - 8006830: f502 62a0 add.w r2, r2, #1280 @ 0x500 - 8006834: f023 4300 bic.w r3, r3, #2147483648 @ 0x80000000 - 8006838: 6013 str r3, [r2, #0] + 8006876: 69bb ldr r3, [r7, #24] + 8006878: 015a lsls r2, r3, #5 + 800687a: 69fb ldr r3, [r7, #28] + 800687c: 4413 add r3, r2 + 800687e: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8006882: 681b ldr r3, [r3, #0] + 8006884: 69ba ldr r2, [r7, #24] + 8006886: 0151 lsls r1, r2, #5 + 8006888: 69fa ldr r2, [r7, #28] + 800688a: 440a add r2, r1 + 800688c: f502 62a0 add.w r2, r2, #1280 @ 0x500 + 8006890: f023 4300 bic.w r3, r3, #2147483648 @ 0x80000000 + 8006894: 6013 str r3, [r2, #0] USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHENA; - 800683a: 69bb ldr r3, [r7, #24] - 800683c: 015a lsls r2, r3, #5 - 800683e: 69fb ldr r3, [r7, #28] - 8006840: 4413 add r3, r2 - 8006842: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8006846: 681b ldr r3, [r3, #0] - 8006848: 69ba ldr r2, [r7, #24] - 800684a: 0151 lsls r1, r2, #5 - 800684c: 69fa ldr r2, [r7, #28] - 800684e: 440a add r2, r1 - 8006850: f502 62a0 add.w r2, r2, #1280 @ 0x500 - 8006854: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 - 8006858: 6013 str r3, [r2, #0] + 8006896: 69bb ldr r3, [r7, #24] + 8006898: 015a lsls r2, r3, #5 + 800689a: 69fb ldr r3, [r7, #28] + 800689c: 4413 add r3, r2 + 800689e: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80068a2: 681b ldr r3, [r3, #0] + 80068a4: 69ba ldr r2, [r7, #24] + 80068a6: 0151 lsls r1, r2, #5 + 80068a8: 69fa ldr r2, [r7, #28] + 80068aa: 440a add r2, r1 + 80068ac: f502 62a0 add.w r2, r2, #1280 @ 0x500 + 80068b0: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 80068b4: 6013 str r3, [r2, #0] do { count++; - 800685a: 68bb ldr r3, [r7, #8] - 800685c: 3301 adds r3, #1 - 800685e: 60bb str r3, [r7, #8] + 80068b6: 68bb ldr r3, [r7, #8] + 80068b8: 3301 adds r3, #1 + 80068ba: 60bb str r3, [r7, #8] if (count > 1000U) - 8006860: 68bb ldr r3, [r7, #8] - 8006862: f5b3 7f7a cmp.w r3, #1000 @ 0x3e8 - 8006866: d81d bhi.n 80068a4 + 80068bc: 68bb ldr r3, [r7, #8] + 80068be: f5b3 7f7a cmp.w r3, #1000 @ 0x3e8 + 80068c2: d81d bhi.n 8006900 { break; } } while ((USBx_HC(hcnum)->HCCHAR & USB_OTG_HCCHAR_CHENA) == USB_OTG_HCCHAR_CHENA); - 8006868: 69bb ldr r3, [r7, #24] - 800686a: 015a lsls r2, r3, #5 - 800686c: 69fb ldr r3, [r7, #28] - 800686e: 4413 add r3, r2 - 8006870: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8006874: 681b ldr r3, [r3, #0] - 8006876: f003 4300 and.w r3, r3, #2147483648 @ 0x80000000 - 800687a: f1b3 4f00 cmp.w r3, #2147483648 @ 0x80000000 - 800687e: d0ec beq.n 800685a - 8006880: e011 b.n 80068a6 + 80068c4: 69bb ldr r3, [r7, #24] + 80068c6: 015a lsls r2, r3, #5 + 80068c8: 69fb ldr r3, [r7, #28] + 80068ca: 4413 add r3, r2 + 80068cc: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80068d0: 681b ldr r3, [r3, #0] + 80068d2: f003 4300 and.w r3, r3, #2147483648 @ 0x80000000 + 80068d6: f1b3 4f00 cmp.w r3, #2147483648 @ 0x80000000 + 80068da: d0ec beq.n 80068b6 + 80068dc: e011 b.n 8006902 } else { USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHENA; - 8006882: 69bb ldr r3, [r7, #24] - 8006884: 015a lsls r2, r3, #5 - 8006886: 69fb ldr r3, [r7, #28] - 8006888: 4413 add r3, r2 - 800688a: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 800688e: 681b ldr r3, [r3, #0] - 8006890: 69ba ldr r2, [r7, #24] - 8006892: 0151 lsls r1, r2, #5 - 8006894: 69fa ldr r2, [r7, #28] - 8006896: 440a add r2, r1 - 8006898: f502 62a0 add.w r2, r2, #1280 @ 0x500 - 800689c: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 - 80068a0: 6013 str r3, [r2, #0] - 80068a2: e000 b.n 80068a6 + 80068de: 69bb ldr r3, [r7, #24] + 80068e0: 015a lsls r2, r3, #5 + 80068e2: 69fb ldr r3, [r7, #28] + 80068e4: 4413 add r3, r2 + 80068e6: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80068ea: 681b ldr r3, [r3, #0] + 80068ec: 69ba ldr r2, [r7, #24] + 80068ee: 0151 lsls r1, r2, #5 + 80068f0: 69fa ldr r2, [r7, #28] + 80068f2: 440a add r2, r1 + 80068f4: f502 62a0 add.w r2, r2, #1280 @ 0x500 + 80068f8: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 80068fc: 6013 str r3, [r2, #0] + 80068fe: e000 b.n 8006902 break; - 80068a4: bf00 nop + 8006900: bf00 nop } } return HAL_OK; - 80068a6: 2300 movs r3, #0 + 8006902: 2300 movs r3, #0 } - 80068a8: 4618 mov r0, r3 - 80068aa: 3724 adds r7, #36 @ 0x24 - 80068ac: 46bd mov sp, r7 - 80068ae: f85d 7b04 ldr.w r7, [sp], #4 - 80068b2: 4770 bx lr + 8006904: 4618 mov r0, r3 + 8006906: 3724 adds r7, #36 @ 0x24 + 8006908: 46bd mov sp, r7 + 800690a: f85d 7b04 ldr.w r7, [sp], #4 + 800690e: 4770 bx lr -080068b4 : +08006910 : * @brief Stop Host Core * @param USBx Selected device * @retval HAL state */ HAL_StatusTypeDef USB_StopHost(USB_OTG_GlobalTypeDef *USBx) { - 80068b4: b580 push {r7, lr} - 80068b6: b088 sub sp, #32 - 80068b8: af00 add r7, sp, #0 - 80068ba: 6078 str r0, [r7, #4] + 8006910: b580 push {r7, lr} + 8006912: b088 sub sp, #32 + 8006914: af00 add r7, sp, #0 + 8006916: 6078 str r0, [r7, #4] HAL_StatusTypeDef ret = HAL_OK; - 80068bc: 2300 movs r3, #0 - 80068be: 77fb strb r3, [r7, #31] + 8006918: 2300 movs r3, #0 + 800691a: 77fb strb r3, [r7, #31] uint32_t USBx_BASE = (uint32_t)USBx; - 80068c0: 687b ldr r3, [r7, #4] - 80068c2: 617b str r3, [r7, #20] + 800691c: 687b ldr r3, [r7, #4] + 800691e: 617b str r3, [r7, #20] __IO uint32_t count = 0U; - 80068c4: 2300 movs r3, #0 - 80068c6: 60fb str r3, [r7, #12] + 8006920: 2300 movs r3, #0 + 8006922: 60fb str r3, [r7, #12] uint32_t value; uint32_t i; (void)USB_DisableGlobalInt(USBx); - 80068c8: 6878 ldr r0, [r7, #4] - 80068ca: f7ff fd7a bl 80063c2 + 8006924: 6878 ldr r0, [r7, #4] + 8006926: f7ff fd7a bl 800641e /* Flush USB FIFO */ if (USB_FlushTxFifo(USBx, 0x10U) != HAL_OK) /* all Tx FIFOs */ - 80068ce: 2110 movs r1, #16 - 80068d0: 6878 ldr r0, [r7, #4] - 80068d2: f7ff fd87 bl 80063e4 - 80068d6: 4603 mov r3, r0 - 80068d8: 2b00 cmp r3, #0 - 80068da: d001 beq.n 80068e0 + 800692a: 2110 movs r1, #16 + 800692c: 6878 ldr r0, [r7, #4] + 800692e: f7ff fd87 bl 8006440 + 8006932: 4603 mov r3, r0 + 8006934: 2b00 cmp r3, #0 + 8006936: d001 beq.n 800693c { ret = HAL_ERROR; - 80068dc: 2301 movs r3, #1 - 80068de: 77fb strb r3, [r7, #31] + 8006938: 2301 movs r3, #1 + 800693a: 77fb strb r3, [r7, #31] } if (USB_FlushRxFifo(USBx) != HAL_OK) - 80068e0: 6878 ldr r0, [r7, #4] - 80068e2: f7ff fdb1 bl 8006448 - 80068e6: 4603 mov r3, r0 - 80068e8: 2b00 cmp r3, #0 - 80068ea: d001 beq.n 80068f0 + 800693c: 6878 ldr r0, [r7, #4] + 800693e: f7ff fdb1 bl 80064a4 + 8006942: 4603 mov r3, r0 + 8006944: 2b00 cmp r3, #0 + 8006946: d001 beq.n 800694c { ret = HAL_ERROR; - 80068ec: 2301 movs r3, #1 - 80068ee: 77fb strb r3, [r7, #31] + 8006948: 2301 movs r3, #1 + 800694a: 77fb strb r3, [r7, #31] } /* Flush out any leftover queued requests. */ for (i = 0U; i <= 15U; i++) - 80068f0: 2300 movs r3, #0 - 80068f2: 61bb str r3, [r7, #24] - 80068f4: e01f b.n 8006936 + 800694c: 2300 movs r3, #0 + 800694e: 61bb str r3, [r7, #24] + 8006950: e01f b.n 8006992 { value = USBx_HC(i)->HCCHAR; - 80068f6: 69bb ldr r3, [r7, #24] - 80068f8: 015a lsls r2, r3, #5 - 80068fa: 697b ldr r3, [r7, #20] - 80068fc: 4413 add r3, r2 - 80068fe: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8006902: 681b ldr r3, [r3, #0] - 8006904: 613b str r3, [r7, #16] + 8006952: 69bb ldr r3, [r7, #24] + 8006954: 015a lsls r2, r3, #5 + 8006956: 697b ldr r3, [r7, #20] + 8006958: 4413 add r3, r2 + 800695a: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 800695e: 681b ldr r3, [r3, #0] + 8006960: 613b str r3, [r7, #16] value |= USB_OTG_HCCHAR_CHDIS; - 8006906: 693b ldr r3, [r7, #16] - 8006908: f043 4380 orr.w r3, r3, #1073741824 @ 0x40000000 - 800690c: 613b str r3, [r7, #16] + 8006962: 693b ldr r3, [r7, #16] + 8006964: f043 4380 orr.w r3, r3, #1073741824 @ 0x40000000 + 8006968: 613b str r3, [r7, #16] value &= ~USB_OTG_HCCHAR_CHENA; - 800690e: 693b ldr r3, [r7, #16] - 8006910: f023 4300 bic.w r3, r3, #2147483648 @ 0x80000000 - 8006914: 613b str r3, [r7, #16] + 800696a: 693b ldr r3, [r7, #16] + 800696c: f023 4300 bic.w r3, r3, #2147483648 @ 0x80000000 + 8006970: 613b str r3, [r7, #16] value &= ~USB_OTG_HCCHAR_EPDIR; - 8006916: 693b ldr r3, [r7, #16] - 8006918: f423 4300 bic.w r3, r3, #32768 @ 0x8000 - 800691c: 613b str r3, [r7, #16] + 8006972: 693b ldr r3, [r7, #16] + 8006974: f423 4300 bic.w r3, r3, #32768 @ 0x8000 + 8006978: 613b str r3, [r7, #16] USBx_HC(i)->HCCHAR = value; - 800691e: 69bb ldr r3, [r7, #24] - 8006920: 015a lsls r2, r3, #5 - 8006922: 697b ldr r3, [r7, #20] - 8006924: 4413 add r3, r2 - 8006926: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 800692a: 461a mov r2, r3 - 800692c: 693b ldr r3, [r7, #16] - 800692e: 6013 str r3, [r2, #0] + 800697a: 69bb ldr r3, [r7, #24] + 800697c: 015a lsls r2, r3, #5 + 800697e: 697b ldr r3, [r7, #20] + 8006980: 4413 add r3, r2 + 8006982: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 8006986: 461a mov r2, r3 + 8006988: 693b ldr r3, [r7, #16] + 800698a: 6013 str r3, [r2, #0] for (i = 0U; i <= 15U; i++) - 8006930: 69bb ldr r3, [r7, #24] - 8006932: 3301 adds r3, #1 - 8006934: 61bb str r3, [r7, #24] - 8006936: 69bb ldr r3, [r7, #24] - 8006938: 2b0f cmp r3, #15 - 800693a: d9dc bls.n 80068f6 + 800698c: 69bb ldr r3, [r7, #24] + 800698e: 3301 adds r3, #1 + 8006990: 61bb str r3, [r7, #24] + 8006992: 69bb ldr r3, [r7, #24] + 8006994: 2b0f cmp r3, #15 + 8006996: d9dc bls.n 8006952 } /* Halt all channels to put them into a known state. */ for (i = 0U; i <= 15U; i++) - 800693c: 2300 movs r3, #0 - 800693e: 61bb str r3, [r7, #24] - 8006940: e034 b.n 80069ac + 8006998: 2300 movs r3, #0 + 800699a: 61bb str r3, [r7, #24] + 800699c: e034 b.n 8006a08 { value = USBx_HC(i)->HCCHAR; - 8006942: 69bb ldr r3, [r7, #24] - 8006944: 015a lsls r2, r3, #5 - 8006946: 697b ldr r3, [r7, #20] - 8006948: 4413 add r3, r2 - 800694a: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 800694e: 681b ldr r3, [r3, #0] - 8006950: 613b str r3, [r7, #16] + 800699e: 69bb ldr r3, [r7, #24] + 80069a0: 015a lsls r2, r3, #5 + 80069a2: 697b ldr r3, [r7, #20] + 80069a4: 4413 add r3, r2 + 80069a6: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80069aa: 681b ldr r3, [r3, #0] + 80069ac: 613b str r3, [r7, #16] value |= USB_OTG_HCCHAR_CHDIS; - 8006952: 693b ldr r3, [r7, #16] - 8006954: f043 4380 orr.w r3, r3, #1073741824 @ 0x40000000 - 8006958: 613b str r3, [r7, #16] + 80069ae: 693b ldr r3, [r7, #16] + 80069b0: f043 4380 orr.w r3, r3, #1073741824 @ 0x40000000 + 80069b4: 613b str r3, [r7, #16] value |= USB_OTG_HCCHAR_CHENA; - 800695a: 693b ldr r3, [r7, #16] - 800695c: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 - 8006960: 613b str r3, [r7, #16] + 80069b6: 693b ldr r3, [r7, #16] + 80069b8: f043 4300 orr.w r3, r3, #2147483648 @ 0x80000000 + 80069bc: 613b str r3, [r7, #16] value &= ~USB_OTG_HCCHAR_EPDIR; - 8006962: 693b ldr r3, [r7, #16] - 8006964: f423 4300 bic.w r3, r3, #32768 @ 0x8000 - 8006968: 613b str r3, [r7, #16] + 80069be: 693b ldr r3, [r7, #16] + 80069c0: f423 4300 bic.w r3, r3, #32768 @ 0x8000 + 80069c4: 613b str r3, [r7, #16] USBx_HC(i)->HCCHAR = value; - 800696a: 69bb ldr r3, [r7, #24] - 800696c: 015a lsls r2, r3, #5 - 800696e: 697b ldr r3, [r7, #20] - 8006970: 4413 add r3, r2 - 8006972: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8006976: 461a mov r2, r3 - 8006978: 693b ldr r3, [r7, #16] - 800697a: 6013 str r3, [r2, #0] + 80069c6: 69bb ldr r3, [r7, #24] + 80069c8: 015a lsls r2, r3, #5 + 80069ca: 697b ldr r3, [r7, #20] + 80069cc: 4413 add r3, r2 + 80069ce: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80069d2: 461a mov r2, r3 + 80069d4: 693b ldr r3, [r7, #16] + 80069d6: 6013 str r3, [r2, #0] do { count++; - 800697c: 68fb ldr r3, [r7, #12] - 800697e: 3301 adds r3, #1 - 8006980: 60fb str r3, [r7, #12] + 80069d8: 68fb ldr r3, [r7, #12] + 80069da: 3301 adds r3, #1 + 80069dc: 60fb str r3, [r7, #12] if (count > 1000U) - 8006982: 68fb ldr r3, [r7, #12] - 8006984: f5b3 7f7a cmp.w r3, #1000 @ 0x3e8 - 8006988: d80c bhi.n 80069a4 + 80069de: 68fb ldr r3, [r7, #12] + 80069e0: f5b3 7f7a cmp.w r3, #1000 @ 0x3e8 + 80069e4: d80c bhi.n 8006a00 { break; } } while ((USBx_HC(i)->HCCHAR & USB_OTG_HCCHAR_CHENA) == USB_OTG_HCCHAR_CHENA); - 800698a: 69bb ldr r3, [r7, #24] - 800698c: 015a lsls r2, r3, #5 - 800698e: 697b ldr r3, [r7, #20] - 8006990: 4413 add r3, r2 - 8006992: f503 63a0 add.w r3, r3, #1280 @ 0x500 - 8006996: 681b ldr r3, [r3, #0] - 8006998: f003 4300 and.w r3, r3, #2147483648 @ 0x80000000 - 800699c: f1b3 4f00 cmp.w r3, #2147483648 @ 0x80000000 - 80069a0: d0ec beq.n 800697c - 80069a2: e000 b.n 80069a6 + 80069e6: 69bb ldr r3, [r7, #24] + 80069e8: 015a lsls r2, r3, #5 + 80069ea: 697b ldr r3, [r7, #20] + 80069ec: 4413 add r3, r2 + 80069ee: f503 63a0 add.w r3, r3, #1280 @ 0x500 + 80069f2: 681b ldr r3, [r3, #0] + 80069f4: f003 4300 and.w r3, r3, #2147483648 @ 0x80000000 + 80069f8: f1b3 4f00 cmp.w r3, #2147483648 @ 0x80000000 + 80069fc: d0ec beq.n 80069d8 + 80069fe: e000 b.n 8006a02 break; - 80069a4: bf00 nop + 8006a00: bf00 nop for (i = 0U; i <= 15U; i++) - 80069a6: 69bb ldr r3, [r7, #24] - 80069a8: 3301 adds r3, #1 - 80069aa: 61bb str r3, [r7, #24] - 80069ac: 69bb ldr r3, [r7, #24] - 80069ae: 2b0f cmp r3, #15 - 80069b0: d9c7 bls.n 8006942 + 8006a02: 69bb ldr r3, [r7, #24] + 8006a04: 3301 adds r3, #1 + 8006a06: 61bb str r3, [r7, #24] + 8006a08: 69bb ldr r3, [r7, #24] + 8006a0a: 2b0f cmp r3, #15 + 8006a0c: d9c7 bls.n 800699e } /* Clear any pending Host interrupts */ USBx_HOST->HAINT = CLEAR_INTERRUPT_MASK; - 80069b2: 697b ldr r3, [r7, #20] - 80069b4: f503 6380 add.w r3, r3, #1024 @ 0x400 - 80069b8: 461a mov r2, r3 - 80069ba: f04f 33ff mov.w r3, #4294967295 @ 0xffffffff - 80069be: 6153 str r3, [r2, #20] + 8006a0e: 697b ldr r3, [r7, #20] + 8006a10: f503 6380 add.w r3, r3, #1024 @ 0x400 + 8006a14: 461a mov r2, r3 + 8006a16: f04f 33ff mov.w r3, #4294967295 @ 0xffffffff + 8006a1a: 6153 str r3, [r2, #20] USBx->GINTSTS = CLEAR_INTERRUPT_MASK; - 80069c0: 687b ldr r3, [r7, #4] - 80069c2: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff - 80069c6: 615a str r2, [r3, #20] + 8006a1c: 687b ldr r3, [r7, #4] + 8006a1e: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 8006a22: 615a str r2, [r3, #20] (void)USB_EnableGlobalInt(USBx); - 80069c8: 6878 ldr r0, [r7, #4] - 80069ca: f7ff fce9 bl 80063a0 + 8006a24: 6878 ldr r0, [r7, #4] + 8006a26: f7ff fce9 bl 80063fc return ret; - 80069ce: 7ffb ldrb r3, [r7, #31] + 8006a2a: 7ffb ldrb r3, [r7, #31] } - 80069d0: 4618 mov r0, r3 - 80069d2: 3720 adds r7, #32 - 80069d4: 46bd mov sp, r7 - 80069d6: bd80 pop {r7, pc} + 8006a2c: 4618 mov r0, r3 + 8006a2e: 3720 adds r7, #32 + 8006a30: 46bd mov sp, r7 + 8006a32: bd80 pop {r7, pc} -080069d8 : +08006a34 : * Increment Host Timer tick * @param phost: Host Handle * @retval None */ void USBH_LL_IncTimer(USBH_HandleTypeDef *phost) { - 80069d8: b580 push {r7, lr} - 80069da: b082 sub sp, #8 - 80069dc: af00 add r7, sp, #0 - 80069de: 6078 str r0, [r7, #4] + 8006a34: b580 push {r7, lr} + 8006a36: b082 sub sp, #8 + 8006a38: af00 add r7, sp, #0 + 8006a3a: 6078 str r0, [r7, #4] phost->Timer++; - 80069e0: 687b ldr r3, [r7, #4] - 80069e2: f8d3 33c4 ldr.w r3, [r3, #964] @ 0x3c4 - 80069e6: 1c5a adds r2, r3, #1 - 80069e8: 687b ldr r3, [r7, #4] - 80069ea: f8c3 23c4 str.w r2, [r3, #964] @ 0x3c4 + 8006a3c: 687b ldr r3, [r7, #4] + 8006a3e: f8d3 33c4 ldr.w r3, [r3, #964] @ 0x3c4 + 8006a42: 1c5a adds r2, r3, #1 + 8006a44: 687b ldr r3, [r7, #4] + 8006a46: f8c3 23c4 str.w r2, [r3, #964] @ 0x3c4 USBH_HandleSof(phost); - 80069ee: 6878 ldr r0, [r7, #4] - 80069f0: f000 f804 bl 80069fc + 8006a4a: 6878 ldr r0, [r7, #4] + 8006a4c: f000 f804 bl 8006a58 } - 80069f4: bf00 nop - 80069f6: 3708 adds r7, #8 - 80069f8: 46bd mov sp, r7 - 80069fa: bd80 pop {r7, pc} + 8006a50: bf00 nop + 8006a52: 3708 adds r7, #8 + 8006a54: 46bd mov sp, r7 + 8006a56: bd80 pop {r7, pc} -080069fc : +08006a58 : * Call SOF process * @param phost: Host Handle * @retval None */ static void USBH_HandleSof(USBH_HandleTypeDef *phost) { - 80069fc: b580 push {r7, lr} - 80069fe: b082 sub sp, #8 - 8006a00: af00 add r7, sp, #0 - 8006a02: 6078 str r0, [r7, #4] + 8006a58: b580 push {r7, lr} + 8006a5a: b082 sub sp, #8 + 8006a5c: af00 add r7, sp, #0 + 8006a5e: 6078 str r0, [r7, #4] if ((phost->gState == HOST_CLASS) && (phost->pActiveClass != NULL)) - 8006a04: 687b ldr r3, [r7, #4] - 8006a06: 781b ldrb r3, [r3, #0] - 8006a08: b2db uxtb r3, r3 - 8006a0a: 2b0b cmp r3, #11 - 8006a0c: d10a bne.n 8006a24 - 8006a0e: 687b ldr r3, [r7, #4] - 8006a10: f8d3 337c ldr.w r3, [r3, #892] @ 0x37c - 8006a14: 2b00 cmp r3, #0 - 8006a16: d005 beq.n 8006a24 + 8006a60: 687b ldr r3, [r7, #4] + 8006a62: 781b ldrb r3, [r3, #0] + 8006a64: b2db uxtb r3, r3 + 8006a66: 2b0b cmp r3, #11 + 8006a68: d10a bne.n 8006a80 + 8006a6a: 687b ldr r3, [r7, #4] + 8006a6c: f8d3 337c ldr.w r3, [r3, #892] @ 0x37c + 8006a70: 2b00 cmp r3, #0 + 8006a72: d005 beq.n 8006a80 { phost->pActiveClass->SOFProcess(phost); - 8006a18: 687b ldr r3, [r7, #4] - 8006a1a: f8d3 337c ldr.w r3, [r3, #892] @ 0x37c - 8006a1e: 699b ldr r3, [r3, #24] - 8006a20: 6878 ldr r0, [r7, #4] - 8006a22: 4798 blx r3 + 8006a74: 687b ldr r3, [r7, #4] + 8006a76: f8d3 337c ldr.w r3, [r3, #892] @ 0x37c + 8006a7a: 699b ldr r3, [r3, #24] + 8006a7c: 6878 ldr r0, [r7, #4] + 8006a7e: 4798 blx r3 } } - 8006a24: bf00 nop - 8006a26: 3708 adds r7, #8 - 8006a28: 46bd mov sp, r7 - 8006a2a: bd80 pop {r7, pc} + 8006a80: bf00 nop + 8006a82: 3708 adds r7, #8 + 8006a84: 46bd mov sp, r7 + 8006a86: bd80 pop {r7, pc} -08006a2c : +08006a88 : * Port Enabled * @param phost: Host Handle * @retval None */ void USBH_LL_PortEnabled(USBH_HandleTypeDef *phost) { - 8006a2c: b580 push {r7, lr} - 8006a2e: b082 sub sp, #8 - 8006a30: af00 add r7, sp, #0 - 8006a32: 6078 str r0, [r7, #4] + 8006a88: b580 push {r7, lr} + 8006a8a: b082 sub sp, #8 + 8006a8c: af00 add r7, sp, #0 + 8006a8e: 6078 str r0, [r7, #4] phost->device.PortEnabled = 1U; - 8006a34: 687b ldr r3, [r7, #4] - 8006a36: 2201 movs r2, #1 - 8006a38: f883 2323 strb.w r2, [r3, #803] @ 0x323 + 8006a90: 687b ldr r3, [r7, #4] + 8006a92: 2201 movs r2, #1 + 8006a94: f883 2323 strb.w r2, [r3, #803] @ 0x323 #if (USBH_USE_OS == 1U) USBH_OS_PutMessage(phost, USBH_PORT_EVENT, 0U, 0U); - 8006a3c: 2300 movs r3, #0 - 8006a3e: 2200 movs r2, #0 - 8006a40: 2101 movs r1, #1 - 8006a42: 6878 ldr r0, [r7, #4] - 8006a44: f000 f85b bl 8006afe + 8006a98: 2300 movs r3, #0 + 8006a9a: 2200 movs r2, #0 + 8006a9c: 2101 movs r1, #1 + 8006a9e: 6878 ldr r0, [r7, #4] + 8006aa0: f000 f85b bl 8006b5a #endif /* (USBH_USE_OS == 1U) */ return; - 8006a48: bf00 nop + 8006aa4: bf00 nop } - 8006a4a: 3708 adds r7, #8 - 8006a4c: 46bd mov sp, r7 - 8006a4e: bd80 pop {r7, pc} + 8006aa6: 3708 adds r7, #8 + 8006aa8: 46bd mov sp, r7 + 8006aaa: bd80 pop {r7, pc} -08006a50 : +08006aac : * Port Disabled * @param phost: Host Handle * @retval None */ void USBH_LL_PortDisabled(USBH_HandleTypeDef *phost) { - 8006a50: b480 push {r7} - 8006a52: b083 sub sp, #12 - 8006a54: af00 add r7, sp, #0 - 8006a56: 6078 str r0, [r7, #4] + 8006aac: b480 push {r7} + 8006aae: b083 sub sp, #12 + 8006ab0: af00 add r7, sp, #0 + 8006ab2: 6078 str r0, [r7, #4] phost->device.PortEnabled = 0U; - 8006a58: 687b ldr r3, [r7, #4] - 8006a5a: 2200 movs r2, #0 - 8006a5c: f883 2323 strb.w r2, [r3, #803] @ 0x323 + 8006ab4: 687b ldr r3, [r7, #4] + 8006ab6: 2200 movs r2, #0 + 8006ab8: f883 2323 strb.w r2, [r3, #803] @ 0x323 phost->device.is_disconnected = 1U; - 8006a60: 687b ldr r3, [r7, #4] - 8006a62: 2201 movs r2, #1 - 8006a64: f883 2321 strb.w r2, [r3, #801] @ 0x321 + 8006abc: 687b ldr r3, [r7, #4] + 8006abe: 2201 movs r2, #1 + 8006ac0: f883 2321 strb.w r2, [r3, #801] @ 0x321 return; - 8006a68: bf00 nop + 8006ac4: bf00 nop } - 8006a6a: 370c adds r7, #12 - 8006a6c: 46bd mov sp, r7 - 8006a6e: f85d 7b04 ldr.w r7, [sp], #4 - 8006a72: 4770 bx lr + 8006ac6: 370c adds r7, #12 + 8006ac8: 46bd mov sp, r7 + 8006aca: f85d 7b04 ldr.w r7, [sp], #4 + 8006ace: 4770 bx lr -08006a74 : +08006ad0 : * Handle USB Host connection event * @param phost: Host Handle * @retval USBH_Status */ USBH_StatusTypeDef USBH_LL_Connect(USBH_HandleTypeDef *phost) { - 8006a74: b580 push {r7, lr} - 8006a76: b082 sub sp, #8 - 8006a78: af00 add r7, sp, #0 - 8006a7a: 6078 str r0, [r7, #4] + 8006ad0: b580 push {r7, lr} + 8006ad2: b082 sub sp, #8 + 8006ad4: af00 add r7, sp, #0 + 8006ad6: 6078 str r0, [r7, #4] phost->device.is_connected = 1U; - 8006a7c: 687b ldr r3, [r7, #4] - 8006a7e: 2201 movs r2, #1 - 8006a80: f883 2320 strb.w r2, [r3, #800] @ 0x320 + 8006ad8: 687b ldr r3, [r7, #4] + 8006ada: 2201 movs r2, #1 + 8006adc: f883 2320 strb.w r2, [r3, #800] @ 0x320 phost->device.is_disconnected = 0U; - 8006a84: 687b ldr r3, [r7, #4] - 8006a86: 2200 movs r2, #0 - 8006a88: f883 2321 strb.w r2, [r3, #801] @ 0x321 + 8006ae0: 687b ldr r3, [r7, #4] + 8006ae2: 2200 movs r2, #0 + 8006ae4: f883 2321 strb.w r2, [r3, #801] @ 0x321 phost->device.is_ReEnumerated = 0U; - 8006a8c: 687b ldr r3, [r7, #4] - 8006a8e: 2200 movs r2, #0 - 8006a90: f883 2322 strb.w r2, [r3, #802] @ 0x322 + 8006ae8: 687b ldr r3, [r7, #4] + 8006aea: 2200 movs r2, #0 + 8006aec: f883 2322 strb.w r2, [r3, #802] @ 0x322 #if (USBH_USE_OS == 1U) USBH_OS_PutMessage(phost, USBH_PORT_EVENT, 0U, 0U); - 8006a94: 2300 movs r3, #0 - 8006a96: 2200 movs r2, #0 - 8006a98: 2101 movs r1, #1 - 8006a9a: 6878 ldr r0, [r7, #4] - 8006a9c: f000 f82f bl 8006afe + 8006af0: 2300 movs r3, #0 + 8006af2: 2200 movs r2, #0 + 8006af4: 2101 movs r1, #1 + 8006af6: 6878 ldr r0, [r7, #4] + 8006af8: f000 f82f bl 8006b5a #endif /* (USBH_USE_OS == 1U) */ return USBH_OK; - 8006aa0: 2300 movs r3, #0 + 8006afc: 2300 movs r3, #0 } - 8006aa2: 4618 mov r0, r3 - 8006aa4: 3708 adds r7, #8 - 8006aa6: 46bd mov sp, r7 - 8006aa8: bd80 pop {r7, pc} + 8006afe: 4618 mov r0, r3 + 8006b00: 3708 adds r7, #8 + 8006b02: 46bd mov sp, r7 + 8006b04: bd80 pop {r7, pc} -08006aaa : +08006b06 : * Handle USB Host disconnection event * @param phost: Host Handle * @retval USBH_Status */ USBH_StatusTypeDef USBH_LL_Disconnect(USBH_HandleTypeDef *phost) { - 8006aaa: b580 push {r7, lr} - 8006aac: b082 sub sp, #8 - 8006aae: af00 add r7, sp, #0 - 8006ab0: 6078 str r0, [r7, #4] + 8006b06: b580 push {r7, lr} + 8006b08: b082 sub sp, #8 + 8006b0a: af00 add r7, sp, #0 + 8006b0c: 6078 str r0, [r7, #4] /* update device connection states */ phost->device.is_disconnected = 1U; - 8006ab2: 687b ldr r3, [r7, #4] - 8006ab4: 2201 movs r2, #1 - 8006ab6: f883 2321 strb.w r2, [r3, #801] @ 0x321 + 8006b0e: 687b ldr r3, [r7, #4] + 8006b10: 2201 movs r2, #1 + 8006b12: f883 2321 strb.w r2, [r3, #801] @ 0x321 phost->device.is_connected = 0U; - 8006aba: 687b ldr r3, [r7, #4] - 8006abc: 2200 movs r2, #0 - 8006abe: f883 2320 strb.w r2, [r3, #800] @ 0x320 + 8006b16: 687b ldr r3, [r7, #4] + 8006b18: 2200 movs r2, #0 + 8006b1a: f883 2320 strb.w r2, [r3, #800] @ 0x320 phost->device.PortEnabled = 0U; - 8006ac2: 687b ldr r3, [r7, #4] - 8006ac4: 2200 movs r2, #0 - 8006ac6: f883 2323 strb.w r2, [r3, #803] @ 0x323 + 8006b1e: 687b ldr r3, [r7, #4] + 8006b20: 2200 movs r2, #0 + 8006b22: f883 2323 strb.w r2, [r3, #803] @ 0x323 /* Stop Host */ (void)USBH_LL_Stop(phost); - 8006aca: 6878 ldr r0, [r7, #4] - 8006acc: f001 f998 bl 8007e00 + 8006b26: 6878 ldr r0, [r7, #4] + 8006b28: f001 f992 bl 8007e50 /* FRee Control Pipes */ (void)USBH_FreePipe(phost, phost->Control.pipe_in); - 8006ad0: 687b ldr r3, [r7, #4] - 8006ad2: 791b ldrb r3, [r3, #4] - 8006ad4: 4619 mov r1, r3 - 8006ad6: 6878 ldr r0, [r7, #4] - 8006ad8: f000 f847 bl 8006b6a + 8006b2c: 687b ldr r3, [r7, #4] + 8006b2e: 791b ldrb r3, [r3, #4] + 8006b30: 4619 mov r1, r3 + 8006b32: 6878 ldr r0, [r7, #4] + 8006b34: f000 f847 bl 8006bc6 (void)USBH_FreePipe(phost, phost->Control.pipe_out); - 8006adc: 687b ldr r3, [r7, #4] - 8006ade: 795b ldrb r3, [r3, #5] - 8006ae0: 4619 mov r1, r3 - 8006ae2: 6878 ldr r0, [r7, #4] - 8006ae4: f000 f841 bl 8006b6a + 8006b38: 687b ldr r3, [r7, #4] + 8006b3a: 795b ldrb r3, [r3, #5] + 8006b3c: 4619 mov r1, r3 + 8006b3e: 6878 ldr r0, [r7, #4] + 8006b40: f000 f841 bl 8006bc6 #if (USBH_USE_OS == 1U) USBH_OS_PutMessage(phost, USBH_PORT_EVENT, 0U, 0U); - 8006ae8: 2300 movs r3, #0 - 8006aea: 2200 movs r2, #0 - 8006aec: 2101 movs r1, #1 - 8006aee: 6878 ldr r0, [r7, #4] - 8006af0: f000 f805 bl 8006afe + 8006b44: 2300 movs r3, #0 + 8006b46: 2200 movs r2, #0 + 8006b48: 2101 movs r1, #1 + 8006b4a: 6878 ldr r0, [r7, #4] + 8006b4c: f000 f805 bl 8006b5a #endif /* (USBH_USE_OS == 1U) */ return USBH_OK; - 8006af4: 2300 movs r3, #0 + 8006b50: 2300 movs r3, #0 } - 8006af6: 4618 mov r0, r3 - 8006af8: 3708 adds r7, #8 - 8006afa: 46bd mov sp, r7 - 8006afc: bd80 pop {r7, pc} + 8006b52: 4618 mov r0, r3 + 8006b54: 3708 adds r7, #8 + 8006b56: 46bd mov sp, r7 + 8006b58: bd80 pop {r7, pc} -08006afe : +08006b5a : * @param timeout message event timeout * @param priority message event priority * @retval None */ void USBH_OS_PutMessage(USBH_HandleTypeDef *phost, USBH_OSEventTypeDef message, uint32_t timeout, uint32_t priority) { - 8006afe: b580 push {r7, lr} - 8006b00: b086 sub sp, #24 - 8006b02: af00 add r7, sp, #0 - 8006b04: 60f8 str r0, [r7, #12] - 8006b06: 607a str r2, [r7, #4] - 8006b08: 603b str r3, [r7, #0] - 8006b0a: 460b mov r3, r1 - 8006b0c: 72fb strb r3, [r7, #11] + 8006b5a: b580 push {r7, lr} + 8006b5c: b086 sub sp, #24 + 8006b5e: af00 add r7, sp, #0 + 8006b60: 60f8 str r0, [r7, #12] + 8006b62: 607a str r2, [r7, #4] + 8006b64: 603b str r3, [r7, #0] + 8006b66: 460b mov r3, r1 + 8006b68: 72fb strb r3, [r7, #11] phost->os_msg = (uint32_t)message; - 8006b0e: 7afa ldrb r2, [r7, #11] - 8006b10: 68fb ldr r3, [r7, #12] - 8006b12: f8c3 23e0 str.w r2, [r3, #992] @ 0x3e0 + 8006b6a: 7afa ldrb r2, [r7, #11] + 8006b6c: 68fb ldr r3, [r7, #12] + 8006b6e: f8c3 23e0 str.w r2, [r3, #992] @ 0x3e0 #if (osCMSIS < 0x20000U) UNUSED(priority); /* Calculate the number of available spaces */ uint32_t available_spaces = MSGQUEUE_OBJECTS - osMessageWaiting(phost->os_event); - 8006b16: 68fb ldr r3, [r7, #12] - 8006b18: f8d3 33d8 ldr.w r3, [r3, #984] @ 0x3d8 - 8006b1c: 4618 mov r0, r3 - 8006b1e: f000 f895 bl 8006c4c - 8006b22: 4603 mov r3, r0 - 8006b24: f1c3 0310 rsb r3, r3, #16 - 8006b28: 617b str r3, [r7, #20] + 8006b72: 68fb ldr r3, [r7, #12] + 8006b74: f8d3 33d8 ldr.w r3, [r3, #984] @ 0x3d8 + 8006b78: 4618 mov r0, r3 + 8006b7a: f000 f895 bl 8006ca8 + 8006b7e: 4603 mov r3, r0 + 8006b80: f1c3 0310 rsb r3, r3, #16 + 8006b84: 617b str r3, [r7, #20] if (available_spaces != 0U) - 8006b2a: 697b ldr r3, [r7, #20] - 8006b2c: 2b00 cmp r3, #0 - 8006b2e: d009 beq.n 8006b44 + 8006b86: 697b ldr r3, [r7, #20] + 8006b88: 2b00 cmp r3, #0 + 8006b8a: d009 beq.n 8006ba0 { (void)osMessagePut(phost->os_event, phost->os_msg, timeout); - 8006b30: 68fb ldr r3, [r7, #12] - 8006b32: f8d3 03d8 ldr.w r0, [r3, #984] @ 0x3d8 - 8006b36: 68fb ldr r3, [r7, #12] - 8006b38: f8d3 33e0 ldr.w r3, [r3, #992] @ 0x3e0 - 8006b3c: 687a ldr r2, [r7, #4] - 8006b3e: 4619 mov r1, r3 - 8006b40: f000 f844 bl 8006bcc + 8006b8c: 68fb ldr r3, [r7, #12] + 8006b8e: f8d3 03d8 ldr.w r0, [r3, #984] @ 0x3d8 + 8006b92: 68fb ldr r3, [r7, #12] + 8006b94: f8d3 33e0 ldr.w r3, [r3, #992] @ 0x3e0 + 8006b98: 687a ldr r2, [r7, #4] + 8006b9a: 4619 mov r1, r3 + 8006b9c: f000 f844 bl 8006c28 if (osMessageQueueGetSpace(phost->os_event) != 0U) { (void)osMessageQueuePut(phost->os_event, &phost->os_msg, priority, timeout); } #endif /* (osCMSIS < 0x20000U) */ } - 8006b44: bf00 nop - 8006b46: 3718 adds r7, #24 - 8006b48: 46bd mov sp, r7 - 8006b4a: bd80 pop {r7, pc} + 8006ba0: bf00 nop + 8006ba2: 3718 adds r7, #24 + 8006ba4: 46bd mov sp, r7 + 8006ba6: bd80 pop {r7, pc} -08006b4c : +08006ba8 : * Notify URB state Change * @param phost: Host handle * @retval USBH Status */ USBH_StatusTypeDef USBH_LL_NotifyURBChange(USBH_HandleTypeDef *phost) { - 8006b4c: b580 push {r7, lr} - 8006b4e: b082 sub sp, #8 - 8006b50: af00 add r7, sp, #0 - 8006b52: 6078 str r0, [r7, #4] + 8006ba8: b580 push {r7, lr} + 8006baa: b082 sub sp, #8 + 8006bac: af00 add r7, sp, #0 + 8006bae: 6078 str r0, [r7, #4] #if (USBH_USE_OS == 1U) USBH_OS_PutMessage(phost, USBH_PORT_EVENT, 0U, 0U); - 8006b54: 2300 movs r3, #0 - 8006b56: 2200 movs r2, #0 - 8006b58: 2101 movs r1, #1 - 8006b5a: 6878 ldr r0, [r7, #4] - 8006b5c: f7ff ffcf bl 8006afe + 8006bb0: 2300 movs r3, #0 + 8006bb2: 2200 movs r2, #0 + 8006bb4: 2101 movs r1, #1 + 8006bb6: 6878 ldr r0, [r7, #4] + 8006bb8: f7ff ffcf bl 8006b5a #endif /* (USBH_USE_OS == 1U) */ return USBH_OK; - 8006b60: 2300 movs r3, #0 + 8006bbc: 2300 movs r3, #0 } - 8006b62: 4618 mov r0, r3 - 8006b64: 3708 adds r7, #8 - 8006b66: 46bd mov sp, r7 - 8006b68: bd80 pop {r7, pc} + 8006bbe: 4618 mov r0, r3 + 8006bc0: 3708 adds r7, #8 + 8006bc2: 46bd mov sp, r7 + 8006bc4: bd80 pop {r7, pc} -08006b6a : +08006bc6 : * @param phost: Host Handle * @param idx: Pipe number to be freed * @retval USBH Status */ USBH_StatusTypeDef USBH_FreePipe(USBH_HandleTypeDef *phost, uint8_t idx) { - 8006b6a: b480 push {r7} - 8006b6c: b083 sub sp, #12 - 8006b6e: af00 add r7, sp, #0 - 8006b70: 6078 str r0, [r7, #4] - 8006b72: 460b mov r3, r1 - 8006b74: 70fb strb r3, [r7, #3] + 8006bc6: b480 push {r7} + 8006bc8: b083 sub sp, #12 + 8006bca: af00 add r7, sp, #0 + 8006bcc: 6078 str r0, [r7, #4] + 8006bce: 460b mov r3, r1 + 8006bd0: 70fb strb r3, [r7, #3] if (idx < USBH_MAX_PIPES_NBR) - 8006b76: 78fb ldrb r3, [r7, #3] - 8006b78: 2b0f cmp r3, #15 - 8006b7a: d80d bhi.n 8006b98 + 8006bd2: 78fb ldrb r3, [r7, #3] + 8006bd4: 2b0f cmp r3, #15 + 8006bd6: d80d bhi.n 8006bf4 { phost->Pipes[idx] &= 0x7FFFU; - 8006b7c: 78fb ldrb r3, [r7, #3] - 8006b7e: 687a ldr r2, [r7, #4] - 8006b80: 33e0 adds r3, #224 @ 0xe0 - 8006b82: 009b lsls r3, r3, #2 - 8006b84: 4413 add r3, r2 - 8006b86: 685a ldr r2, [r3, #4] - 8006b88: 78fb ldrb r3, [r7, #3] - 8006b8a: f3c2 020e ubfx r2, r2, #0, #15 - 8006b8e: 6879 ldr r1, [r7, #4] - 8006b90: 33e0 adds r3, #224 @ 0xe0 - 8006b92: 009b lsls r3, r3, #2 - 8006b94: 440b add r3, r1 - 8006b96: 605a str r2, [r3, #4] + 8006bd8: 78fb ldrb r3, [r7, #3] + 8006bda: 687a ldr r2, [r7, #4] + 8006bdc: 33e0 adds r3, #224 @ 0xe0 + 8006bde: 009b lsls r3, r3, #2 + 8006be0: 4413 add r3, r2 + 8006be2: 685a ldr r2, [r3, #4] + 8006be4: 78fb ldrb r3, [r7, #3] + 8006be6: f3c2 020e ubfx r2, r2, #0, #15 + 8006bea: 6879 ldr r1, [r7, #4] + 8006bec: 33e0 adds r3, #224 @ 0xe0 + 8006bee: 009b lsls r3, r3, #2 + 8006bf0: 440b add r3, r1 + 8006bf2: 605a str r2, [r3, #4] } return USBH_OK; - 8006b98: 2300 movs r3, #0 + 8006bf4: 2300 movs r3, #0 } - 8006b9a: 4618 mov r0, r3 - 8006b9c: 370c adds r7, #12 - 8006b9e: 46bd mov sp, r7 - 8006ba0: f85d 7b04 ldr.w r7, [sp], #4 - 8006ba4: 4770 bx lr + 8006bf6: 4618 mov r0, r3 + 8006bf8: 370c adds r7, #12 + 8006bfa: 46bd mov sp, r7 + 8006bfc: f85d 7b04 ldr.w r7, [sp], #4 + 8006c00: 4770 bx lr -08006ba6 : +08006c02 : #endif /* Determine whether we are in thread mode or handler mode. */ static int inHandlerMode (void) { - 8006ba6: b480 push {r7} - 8006ba8: b083 sub sp, #12 - 8006baa: af00 add r7, sp, #0 + 8006c02: b480 push {r7} + 8006c04: b083 sub sp, #12 + 8006c06: af00 add r7, sp, #0 */ __STATIC_FORCEINLINE uint32_t __get_IPSR(void) { uint32_t result; __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); - 8006bac: f3ef 8305 mrs r3, IPSR - 8006bb0: 607b str r3, [r7, #4] + 8006c08: f3ef 8305 mrs r3, IPSR + 8006c0c: 607b str r3, [r7, #4] return(result); - 8006bb2: 687b ldr r3, [r7, #4] + 8006c0e: 687b ldr r3, [r7, #4] return __get_IPSR() != 0; - 8006bb4: 2b00 cmp r3, #0 - 8006bb6: bf14 ite ne - 8006bb8: 2301 movne r3, #1 - 8006bba: 2300 moveq r3, #0 - 8006bbc: b2db uxtb r3, r3 + 8006c10: 2b00 cmp r3, #0 + 8006c12: bf14 ite ne + 8006c14: 2301 movne r3, #1 + 8006c16: 2300 moveq r3, #0 + 8006c18: b2db uxtb r3, r3 } - 8006bbe: 4618 mov r0, r3 - 8006bc0: 370c adds r7, #12 - 8006bc2: 46bd mov sp, r7 - 8006bc4: f85d 7b04 ldr.w r7, [sp], #4 - 8006bc8: 4770 bx lr + 8006c1a: 4618 mov r0, r3 + 8006c1c: 370c adds r7, #12 + 8006c1e: 46bd mov sp, r7 + 8006c20: f85d 7b04 ldr.w r7, [sp], #4 + 8006c24: 4770 bx lr ... -08006bcc : +08006c28 : * @param millisec timeout value or 0 in case of no time-out. * @retval status code that indicates the execution status of the function. * @note MUST REMAIN UNCHANGED: \b osMessagePut shall be consistent in every CMSIS-RTOS. */ osStatus osMessagePut (osMessageQId queue_id, uint32_t info, uint32_t millisec) { - 8006bcc: b580 push {r7, lr} - 8006bce: b086 sub sp, #24 - 8006bd0: af00 add r7, sp, #0 - 8006bd2: 60f8 str r0, [r7, #12] - 8006bd4: 60b9 str r1, [r7, #8] - 8006bd6: 607a str r2, [r7, #4] + 8006c28: b580 push {r7, lr} + 8006c2a: b086 sub sp, #24 + 8006c2c: af00 add r7, sp, #0 + 8006c2e: 60f8 str r0, [r7, #12] + 8006c30: 60b9 str r1, [r7, #8] + 8006c32: 607a str r2, [r7, #4] portBASE_TYPE taskWoken = pdFALSE; - 8006bd8: 2300 movs r3, #0 - 8006bda: 613b str r3, [r7, #16] + 8006c34: 2300 movs r3, #0 + 8006c36: 613b str r3, [r7, #16] TickType_t ticks; ticks = millisec / portTICK_PERIOD_MS; - 8006bdc: 687b ldr r3, [r7, #4] - 8006bde: 617b str r3, [r7, #20] + 8006c38: 687b ldr r3, [r7, #4] + 8006c3a: 617b str r3, [r7, #20] if (ticks == 0) { - 8006be0: 697b ldr r3, [r7, #20] - 8006be2: 2b00 cmp r3, #0 - 8006be4: d101 bne.n 8006bea + 8006c3c: 697b ldr r3, [r7, #20] + 8006c3e: 2b00 cmp r3, #0 + 8006c40: d101 bne.n 8006c46 ticks = 1; - 8006be6: 2301 movs r3, #1 - 8006be8: 617b str r3, [r7, #20] + 8006c42: 2301 movs r3, #1 + 8006c44: 617b str r3, [r7, #20] } if (inHandlerMode()) { - 8006bea: f7ff ffdc bl 8006ba6 - 8006bee: 4603 mov r3, r0 - 8006bf0: 2b00 cmp r3, #0 - 8006bf2: d018 beq.n 8006c26 + 8006c46: f7ff ffdc bl 8006c02 + 8006c4a: 4603 mov r3, r0 + 8006c4c: 2b00 cmp r3, #0 + 8006c4e: d018 beq.n 8006c82 if (xQueueSendFromISR(queue_id, &info, &taskWoken) != pdTRUE) { - 8006bf4: f107 0210 add.w r2, r7, #16 - 8006bf8: f107 0108 add.w r1, r7, #8 - 8006bfc: 2300 movs r3, #0 - 8006bfe: 68f8 ldr r0, [r7, #12] - 8006c00: f000 f9c4 bl 8006f8c - 8006c04: 4603 mov r3, r0 - 8006c06: 2b01 cmp r3, #1 - 8006c08: d001 beq.n 8006c0e + 8006c50: f107 0210 add.w r2, r7, #16 + 8006c54: f107 0108 add.w r1, r7, #8 + 8006c58: 2300 movs r3, #0 + 8006c5a: 68f8 ldr r0, [r7, #12] + 8006c5c: f000 f9c4 bl 8006fe8 + 8006c60: 4603 mov r3, r0 + 8006c62: 2b01 cmp r3, #1 + 8006c64: d001 beq.n 8006c6a return osErrorOS; - 8006c0a: 23ff movs r3, #255 @ 0xff - 8006c0c: e018 b.n 8006c40 + 8006c66: 23ff movs r3, #255 @ 0xff + 8006c68: e018 b.n 8006c9c } portEND_SWITCHING_ISR(taskWoken); - 8006c0e: 693b ldr r3, [r7, #16] - 8006c10: 2b00 cmp r3, #0 - 8006c12: d014 beq.n 8006c3e - 8006c14: 4b0c ldr r3, [pc, #48] @ (8006c48 ) - 8006c16: f04f 5280 mov.w r2, #268435456 @ 0x10000000 - 8006c1a: 601a str r2, [r3, #0] - 8006c1c: f3bf 8f4f dsb sy - 8006c20: f3bf 8f6f isb sy - 8006c24: e00b b.n 8006c3e + 8006c6a: 693b ldr r3, [r7, #16] + 8006c6c: 2b00 cmp r3, #0 + 8006c6e: d014 beq.n 8006c9a + 8006c70: 4b0c ldr r3, [pc, #48] @ (8006ca4 ) + 8006c72: f04f 5280 mov.w r2, #268435456 @ 0x10000000 + 8006c76: 601a str r2, [r3, #0] + 8006c78: f3bf 8f4f dsb sy + 8006c7c: f3bf 8f6f isb sy + 8006c80: e00b b.n 8006c9a } else { if (xQueueSend(queue_id, &info, ticks) != pdTRUE) { - 8006c26: f107 0108 add.w r1, r7, #8 - 8006c2a: 2300 movs r3, #0 - 8006c2c: 697a ldr r2, [r7, #20] - 8006c2e: 68f8 ldr r0, [r7, #12] - 8006c30: f000 f8aa bl 8006d88 - 8006c34: 4603 mov r3, r0 - 8006c36: 2b01 cmp r3, #1 - 8006c38: d001 beq.n 8006c3e + 8006c82: f107 0108 add.w r1, r7, #8 + 8006c86: 2300 movs r3, #0 + 8006c88: 697a ldr r2, [r7, #20] + 8006c8a: 68f8 ldr r0, [r7, #12] + 8006c8c: f000 f8aa bl 8006de4 + 8006c90: 4603 mov r3, r0 + 8006c92: 2b01 cmp r3, #1 + 8006c94: d001 beq.n 8006c9a return osErrorOS; - 8006c3a: 23ff movs r3, #255 @ 0xff - 8006c3c: e000 b.n 8006c40 + 8006c96: 23ff movs r3, #255 @ 0xff + 8006c98: e000 b.n 8006c9c } } return osOK; - 8006c3e: 2300 movs r3, #0 + 8006c9a: 2300 movs r3, #0 } - 8006c40: 4618 mov r0, r3 - 8006c42: 3718 adds r7, #24 - 8006c44: 46bd mov sp, r7 - 8006c46: bd80 pop {r7, pc} - 8006c48: e000ed04 .word 0xe000ed04 + 8006c9c: 4618 mov r0, r3 + 8006c9e: 3718 adds r7, #24 + 8006ca0: 46bd mov sp, r7 + 8006ca2: bd80 pop {r7, pc} + 8006ca4: e000ed04 .word 0xe000ed04 -08006c4c : +08006ca8 : * @brief Get the number of messaged stored in a queue. * @param queue_id message queue ID obtained with \ref osMessageCreate. * @retval number of messages stored in a queue. */ uint32_t osMessageWaiting(osMessageQId queue_id) { - 8006c4c: b580 push {r7, lr} - 8006c4e: b082 sub sp, #8 - 8006c50: af00 add r7, sp, #0 - 8006c52: 6078 str r0, [r7, #4] + 8006ca8: b580 push {r7, lr} + 8006caa: b082 sub sp, #8 + 8006cac: af00 add r7, sp, #0 + 8006cae: 6078 str r0, [r7, #4] if (inHandlerMode()) { - 8006c54: f7ff ffa7 bl 8006ba6 - 8006c58: 4603 mov r3, r0 - 8006c5a: 2b00 cmp r3, #0 - 8006c5c: d004 beq.n 8006c68 + 8006cb0: f7ff ffa7 bl 8006c02 + 8006cb4: 4603 mov r3, r0 + 8006cb6: 2b00 cmp r3, #0 + 8006cb8: d004 beq.n 8006cc4 return uxQueueMessagesWaitingFromISR(queue_id); - 8006c5e: 6878 ldr r0, [r7, #4] - 8006c60: f000 fa51 bl 8007106 - 8006c64: 4603 mov r3, r0 - 8006c66: e003 b.n 8006c70 + 8006cba: 6878 ldr r0, [r7, #4] + 8006cbc: f000 fa51 bl 8007162 + 8006cc0: 4603 mov r3, r0 + 8006cc2: e003 b.n 8006ccc } else { return uxQueueMessagesWaiting(queue_id); - 8006c68: 6878 ldr r0, [r7, #4] - 8006c6a: f000 fa2d bl 80070c8 - 8006c6e: 4603 mov r3, r0 + 8006cc4: 6878 ldr r0, [r7, #4] + 8006cc6: f000 fa2d bl 8007124 + 8006cca: 4603 mov r3, r0 } } - 8006c70: 4618 mov r0, r3 - 8006c72: 3708 adds r7, #8 - 8006c74: 46bd mov sp, r7 - 8006c76: bd80 pop {r7, pc} + 8006ccc: 4618 mov r0, r3 + 8006cce: 3708 adds r7, #8 + 8006cd0: 46bd mov sp, r7 + 8006cd2: bd80 pop {r7, pc} -08006c78 : +08006cd4 : listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ); } /*-----------------------------------------------------------*/ void vListInsertEnd( List_t * const pxList, ListItem_t * const pxNewListItem ) { - 8006c78: b480 push {r7} - 8006c7a: b085 sub sp, #20 - 8006c7c: af00 add r7, sp, #0 - 8006c7e: 6078 str r0, [r7, #4] - 8006c80: 6039 str r1, [r7, #0] + 8006cd4: b480 push {r7} + 8006cd6: b085 sub sp, #20 + 8006cd8: af00 add r7, sp, #0 + 8006cda: 6078 str r0, [r7, #4] + 8006cdc: 6039 str r1, [r7, #0] ListItem_t * const pxIndex = pxList->pxIndex; - 8006c82: 687b ldr r3, [r7, #4] - 8006c84: 685b ldr r3, [r3, #4] - 8006c86: 60fb str r3, [r7, #12] + 8006cde: 687b ldr r3, [r7, #4] + 8006ce0: 685b ldr r3, [r3, #4] + 8006ce2: 60fb str r3, [r7, #12] listTEST_LIST_ITEM_INTEGRITY( pxNewListItem ); /* Insert a new list item into pxList, but rather than sort the list, makes the new list item the last item to be removed by a call to listGET_OWNER_OF_NEXT_ENTRY(). */ pxNewListItem->pxNext = pxIndex; - 8006c88: 683b ldr r3, [r7, #0] - 8006c8a: 68fa ldr r2, [r7, #12] - 8006c8c: 605a str r2, [r3, #4] + 8006ce4: 683b ldr r3, [r7, #0] + 8006ce6: 68fa ldr r2, [r7, #12] + 8006ce8: 605a str r2, [r3, #4] pxNewListItem->pxPrevious = pxIndex->pxPrevious; - 8006c8e: 68fb ldr r3, [r7, #12] - 8006c90: 689a ldr r2, [r3, #8] - 8006c92: 683b ldr r3, [r7, #0] - 8006c94: 609a str r2, [r3, #8] + 8006cea: 68fb ldr r3, [r7, #12] + 8006cec: 689a ldr r2, [r3, #8] + 8006cee: 683b ldr r3, [r7, #0] + 8006cf0: 609a str r2, [r3, #8] /* Only used during decision coverage testing. */ mtCOVERAGE_TEST_DELAY(); pxIndex->pxPrevious->pxNext = pxNewListItem; - 8006c96: 68fb ldr r3, [r7, #12] - 8006c98: 689b ldr r3, [r3, #8] - 8006c9a: 683a ldr r2, [r7, #0] - 8006c9c: 605a str r2, [r3, #4] + 8006cf2: 68fb ldr r3, [r7, #12] + 8006cf4: 689b ldr r3, [r3, #8] + 8006cf6: 683a ldr r2, [r7, #0] + 8006cf8: 605a str r2, [r3, #4] pxIndex->pxPrevious = pxNewListItem; - 8006c9e: 68fb ldr r3, [r7, #12] - 8006ca0: 683a ldr r2, [r7, #0] - 8006ca2: 609a str r2, [r3, #8] + 8006cfa: 68fb ldr r3, [r7, #12] + 8006cfc: 683a ldr r2, [r7, #0] + 8006cfe: 609a str r2, [r3, #8] /* Remember which list the item is in. */ pxNewListItem->pxContainer = pxList; - 8006ca4: 683b ldr r3, [r7, #0] - 8006ca6: 687a ldr r2, [r7, #4] - 8006ca8: 611a str r2, [r3, #16] + 8006d00: 683b ldr r3, [r7, #0] + 8006d02: 687a ldr r2, [r7, #4] + 8006d04: 611a str r2, [r3, #16] ( pxList->uxNumberOfItems )++; - 8006caa: 687b ldr r3, [r7, #4] - 8006cac: 681b ldr r3, [r3, #0] - 8006cae: 1c5a adds r2, r3, #1 - 8006cb0: 687b ldr r3, [r7, #4] - 8006cb2: 601a str r2, [r3, #0] + 8006d06: 687b ldr r3, [r7, #4] + 8006d08: 681b ldr r3, [r3, #0] + 8006d0a: 1c5a adds r2, r3, #1 + 8006d0c: 687b ldr r3, [r7, #4] + 8006d0e: 601a str r2, [r3, #0] } - 8006cb4: bf00 nop - 8006cb6: 3714 adds r7, #20 - 8006cb8: 46bd mov sp, r7 - 8006cba: f85d 7b04 ldr.w r7, [sp], #4 - 8006cbe: 4770 bx lr + 8006d10: bf00 nop + 8006d12: 3714 adds r7, #20 + 8006d14: 46bd mov sp, r7 + 8006d16: f85d 7b04 ldr.w r7, [sp], #4 + 8006d1a: 4770 bx lr -08006cc0 : +08006d1c : /*-----------------------------------------------------------*/ void vListInsert( List_t * const pxList, ListItem_t * const pxNewListItem ) { - 8006cc0: b480 push {r7} - 8006cc2: b085 sub sp, #20 - 8006cc4: af00 add r7, sp, #0 - 8006cc6: 6078 str r0, [r7, #4] - 8006cc8: 6039 str r1, [r7, #0] + 8006d1c: b480 push {r7} + 8006d1e: b085 sub sp, #20 + 8006d20: af00 add r7, sp, #0 + 8006d22: 6078 str r0, [r7, #4] + 8006d24: 6039 str r1, [r7, #0] ListItem_t *pxIterator; const TickType_t xValueOfInsertion = pxNewListItem->xItemValue; - 8006cca: 683b ldr r3, [r7, #0] - 8006ccc: 681b ldr r3, [r3, #0] - 8006cce: 60bb str r3, [r7, #8] + 8006d26: 683b ldr r3, [r7, #0] + 8006d28: 681b ldr r3, [r3, #0] + 8006d2a: 60bb str r3, [r7, #8] new list item should be placed after it. This ensures that TCBs which are stored in ready lists (all of which have the same xItemValue value) get a share of the CPU. However, if the xItemValue is the same as the back marker the iteration loop below will not end. Therefore the value is checked first, and the algorithm slightly modified if necessary. */ if( xValueOfInsertion == portMAX_DELAY ) - 8006cd0: 68bb ldr r3, [r7, #8] - 8006cd2: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff - 8006cd6: d103 bne.n 8006ce0 + 8006d2c: 68bb ldr r3, [r7, #8] + 8006d2e: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8006d32: d103 bne.n 8006d3c { pxIterator = pxList->xListEnd.pxPrevious; - 8006cd8: 687b ldr r3, [r7, #4] - 8006cda: 691b ldr r3, [r3, #16] - 8006cdc: 60fb str r3, [r7, #12] - 8006cde: e00c b.n 8006cfa + 8006d34: 687b ldr r3, [r7, #4] + 8006d36: 691b ldr r3, [r3, #16] + 8006d38: 60fb str r3, [r7, #12] + 8006d3a: e00c b.n 8006d56 4) Using a queue or semaphore before it has been initialised or before the scheduler has been started (are interrupts firing before vTaskStartScheduler() has been called?). **********************************************************************/ for( pxIterator = ( ListItem_t * ) &( pxList->xListEnd ); pxIterator->pxNext->xItemValue <= xValueOfInsertion; pxIterator = pxIterator->pxNext ) /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. *//*lint !e440 The iterator moves to a different value, not xValueOfInsertion. */ - 8006ce0: 687b ldr r3, [r7, #4] - 8006ce2: 3308 adds r3, #8 - 8006ce4: 60fb str r3, [r7, #12] - 8006ce6: e002 b.n 8006cee - 8006ce8: 68fb ldr r3, [r7, #12] - 8006cea: 685b ldr r3, [r3, #4] - 8006cec: 60fb str r3, [r7, #12] - 8006cee: 68fb ldr r3, [r7, #12] - 8006cf0: 685b ldr r3, [r3, #4] - 8006cf2: 681b ldr r3, [r3, #0] - 8006cf4: 68ba ldr r2, [r7, #8] - 8006cf6: 429a cmp r2, r3 - 8006cf8: d2f6 bcs.n 8006ce8 + 8006d3c: 687b ldr r3, [r7, #4] + 8006d3e: 3308 adds r3, #8 + 8006d40: 60fb str r3, [r7, #12] + 8006d42: e002 b.n 8006d4a + 8006d44: 68fb ldr r3, [r7, #12] + 8006d46: 685b ldr r3, [r3, #4] + 8006d48: 60fb str r3, [r7, #12] + 8006d4a: 68fb ldr r3, [r7, #12] + 8006d4c: 685b ldr r3, [r3, #4] + 8006d4e: 681b ldr r3, [r3, #0] + 8006d50: 68ba ldr r2, [r7, #8] + 8006d52: 429a cmp r2, r3 + 8006d54: d2f6 bcs.n 8006d44 /* There is nothing to do here, just iterating to the wanted insertion position. */ } } pxNewListItem->pxNext = pxIterator->pxNext; - 8006cfa: 68fb ldr r3, [r7, #12] - 8006cfc: 685a ldr r2, [r3, #4] - 8006cfe: 683b ldr r3, [r7, #0] - 8006d00: 605a str r2, [r3, #4] + 8006d56: 68fb ldr r3, [r7, #12] + 8006d58: 685a ldr r2, [r3, #4] + 8006d5a: 683b ldr r3, [r7, #0] + 8006d5c: 605a str r2, [r3, #4] pxNewListItem->pxNext->pxPrevious = pxNewListItem; - 8006d02: 683b ldr r3, [r7, #0] - 8006d04: 685b ldr r3, [r3, #4] - 8006d06: 683a ldr r2, [r7, #0] - 8006d08: 609a str r2, [r3, #8] + 8006d5e: 683b ldr r3, [r7, #0] + 8006d60: 685b ldr r3, [r3, #4] + 8006d62: 683a ldr r2, [r7, #0] + 8006d64: 609a str r2, [r3, #8] pxNewListItem->pxPrevious = pxIterator; - 8006d0a: 683b ldr r3, [r7, #0] - 8006d0c: 68fa ldr r2, [r7, #12] - 8006d0e: 609a str r2, [r3, #8] + 8006d66: 683b ldr r3, [r7, #0] + 8006d68: 68fa ldr r2, [r7, #12] + 8006d6a: 609a str r2, [r3, #8] pxIterator->pxNext = pxNewListItem; - 8006d10: 68fb ldr r3, [r7, #12] - 8006d12: 683a ldr r2, [r7, #0] - 8006d14: 605a str r2, [r3, #4] + 8006d6c: 68fb ldr r3, [r7, #12] + 8006d6e: 683a ldr r2, [r7, #0] + 8006d70: 605a str r2, [r3, #4] /* Remember which list the item is in. This allows fast removal of the item later. */ pxNewListItem->pxContainer = pxList; - 8006d16: 683b ldr r3, [r7, #0] - 8006d18: 687a ldr r2, [r7, #4] - 8006d1a: 611a str r2, [r3, #16] + 8006d72: 683b ldr r3, [r7, #0] + 8006d74: 687a ldr r2, [r7, #4] + 8006d76: 611a str r2, [r3, #16] ( pxList->uxNumberOfItems )++; - 8006d1c: 687b ldr r3, [r7, #4] - 8006d1e: 681b ldr r3, [r3, #0] - 8006d20: 1c5a adds r2, r3, #1 - 8006d22: 687b ldr r3, [r7, #4] - 8006d24: 601a str r2, [r3, #0] + 8006d78: 687b ldr r3, [r7, #4] + 8006d7a: 681b ldr r3, [r3, #0] + 8006d7c: 1c5a adds r2, r3, #1 + 8006d7e: 687b ldr r3, [r7, #4] + 8006d80: 601a str r2, [r3, #0] } - 8006d26: bf00 nop - 8006d28: 3714 adds r7, #20 - 8006d2a: 46bd mov sp, r7 - 8006d2c: f85d 7b04 ldr.w r7, [sp], #4 - 8006d30: 4770 bx lr + 8006d82: bf00 nop + 8006d84: 3714 adds r7, #20 + 8006d86: 46bd mov sp, r7 + 8006d88: f85d 7b04 ldr.w r7, [sp], #4 + 8006d8c: 4770 bx lr -08006d32 : +08006d8e : /*-----------------------------------------------------------*/ UBaseType_t uxListRemove( ListItem_t * const pxItemToRemove ) { - 8006d32: b480 push {r7} - 8006d34: b085 sub sp, #20 - 8006d36: af00 add r7, sp, #0 - 8006d38: 6078 str r0, [r7, #4] + 8006d8e: b480 push {r7} + 8006d90: b085 sub sp, #20 + 8006d92: af00 add r7, sp, #0 + 8006d94: 6078 str r0, [r7, #4] /* The list item knows which list it is in. Obtain the list from the list item. */ List_t * const pxList = pxItemToRemove->pxContainer; - 8006d3a: 687b ldr r3, [r7, #4] - 8006d3c: 691b ldr r3, [r3, #16] - 8006d3e: 60fb str r3, [r7, #12] + 8006d96: 687b ldr r3, [r7, #4] + 8006d98: 691b ldr r3, [r3, #16] + 8006d9a: 60fb str r3, [r7, #12] pxItemToRemove->pxNext->pxPrevious = pxItemToRemove->pxPrevious; - 8006d40: 687b ldr r3, [r7, #4] - 8006d42: 685b ldr r3, [r3, #4] - 8006d44: 687a ldr r2, [r7, #4] - 8006d46: 6892 ldr r2, [r2, #8] - 8006d48: 609a str r2, [r3, #8] + 8006d9c: 687b ldr r3, [r7, #4] + 8006d9e: 685b ldr r3, [r3, #4] + 8006da0: 687a ldr r2, [r7, #4] + 8006da2: 6892 ldr r2, [r2, #8] + 8006da4: 609a str r2, [r3, #8] pxItemToRemove->pxPrevious->pxNext = pxItemToRemove->pxNext; - 8006d4a: 687b ldr r3, [r7, #4] - 8006d4c: 689b ldr r3, [r3, #8] - 8006d4e: 687a ldr r2, [r7, #4] - 8006d50: 6852 ldr r2, [r2, #4] - 8006d52: 605a str r2, [r3, #4] + 8006da6: 687b ldr r3, [r7, #4] + 8006da8: 689b ldr r3, [r3, #8] + 8006daa: 687a ldr r2, [r7, #4] + 8006dac: 6852 ldr r2, [r2, #4] + 8006dae: 605a str r2, [r3, #4] /* Only used during decision coverage testing. */ mtCOVERAGE_TEST_DELAY(); /* Make sure the index is left pointing to a valid item. */ if( pxList->pxIndex == pxItemToRemove ) - 8006d54: 68fb ldr r3, [r7, #12] - 8006d56: 685b ldr r3, [r3, #4] - 8006d58: 687a ldr r2, [r7, #4] - 8006d5a: 429a cmp r2, r3 - 8006d5c: d103 bne.n 8006d66 + 8006db0: 68fb ldr r3, [r7, #12] + 8006db2: 685b ldr r3, [r3, #4] + 8006db4: 687a ldr r2, [r7, #4] + 8006db6: 429a cmp r2, r3 + 8006db8: d103 bne.n 8006dc2 { pxList->pxIndex = pxItemToRemove->pxPrevious; - 8006d5e: 687b ldr r3, [r7, #4] - 8006d60: 689a ldr r2, [r3, #8] - 8006d62: 68fb ldr r3, [r7, #12] - 8006d64: 605a str r2, [r3, #4] + 8006dba: 687b ldr r3, [r7, #4] + 8006dbc: 689a ldr r2, [r3, #8] + 8006dbe: 68fb ldr r3, [r7, #12] + 8006dc0: 605a str r2, [r3, #4] else { mtCOVERAGE_TEST_MARKER(); } pxItemToRemove->pxContainer = NULL; - 8006d66: 687b ldr r3, [r7, #4] - 8006d68: 2200 movs r2, #0 - 8006d6a: 611a str r2, [r3, #16] + 8006dc2: 687b ldr r3, [r7, #4] + 8006dc4: 2200 movs r2, #0 + 8006dc6: 611a str r2, [r3, #16] ( pxList->uxNumberOfItems )--; - 8006d6c: 68fb ldr r3, [r7, #12] - 8006d6e: 681b ldr r3, [r3, #0] - 8006d70: 1e5a subs r2, r3, #1 - 8006d72: 68fb ldr r3, [r7, #12] - 8006d74: 601a str r2, [r3, #0] + 8006dc8: 68fb ldr r3, [r7, #12] + 8006dca: 681b ldr r3, [r3, #0] + 8006dcc: 1e5a subs r2, r3, #1 + 8006dce: 68fb ldr r3, [r7, #12] + 8006dd0: 601a str r2, [r3, #0] return pxList->uxNumberOfItems; - 8006d76: 68fb ldr r3, [r7, #12] - 8006d78: 681b ldr r3, [r3, #0] + 8006dd2: 68fb ldr r3, [r7, #12] + 8006dd4: 681b ldr r3, [r3, #0] } - 8006d7a: 4618 mov r0, r3 - 8006d7c: 3714 adds r7, #20 - 8006d7e: 46bd mov sp, r7 - 8006d80: f85d 7b04 ldr.w r7, [sp], #4 - 8006d84: 4770 bx lr + 8006dd6: 4618 mov r0, r3 + 8006dd8: 3714 adds r7, #20 + 8006dda: 46bd mov sp, r7 + 8006ddc: f85d 7b04 ldr.w r7, [sp], #4 + 8006de0: 4770 bx lr ... -08006d88 : +08006de4 : #endif /* ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */ /*-----------------------------------------------------------*/ BaseType_t xQueueGenericSend( QueueHandle_t xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition ) { - 8006d88: b580 push {r7, lr} - 8006d8a: b08e sub sp, #56 @ 0x38 - 8006d8c: af00 add r7, sp, #0 - 8006d8e: 60f8 str r0, [r7, #12] - 8006d90: 60b9 str r1, [r7, #8] - 8006d92: 607a str r2, [r7, #4] - 8006d94: 603b str r3, [r7, #0] + 8006de4: b580 push {r7, lr} + 8006de6: b08e sub sp, #56 @ 0x38 + 8006de8: af00 add r7, sp, #0 + 8006dea: 60f8 str r0, [r7, #12] + 8006dec: 60b9 str r1, [r7, #8] + 8006dee: 607a str r2, [r7, #4] + 8006df0: 603b str r3, [r7, #0] BaseType_t xEntryTimeSet = pdFALSE, xYieldRequired; - 8006d96: 2300 movs r3, #0 - 8006d98: 637b str r3, [r7, #52] @ 0x34 + 8006df2: 2300 movs r3, #0 + 8006df4: 637b str r3, [r7, #52] @ 0x34 TimeOut_t xTimeOut; Queue_t * const pxQueue = xQueue; - 8006d9a: 68fb ldr r3, [r7, #12] - 8006d9c: 633b str r3, [r7, #48] @ 0x30 + 8006df6: 68fb ldr r3, [r7, #12] + 8006df8: 633b str r3, [r7, #48] @ 0x30 configASSERT( pxQueue ); - 8006d9e: 6b3b ldr r3, [r7, #48] @ 0x30 - 8006da0: 2b00 cmp r3, #0 - 8006da2: d10b bne.n 8006dbc + 8006dfa: 6b3b ldr r3, [r7, #48] @ 0x30 + 8006dfc: 2b00 cmp r3, #0 + 8006dfe: d10b bne.n 8006e18 portFORCE_INLINE static void vPortRaiseBASEPRI( void ) { uint32_t ulNewBASEPRI; __asm volatile - 8006da4: f04f 0350 mov.w r3, #80 @ 0x50 - 8006da8: f383 8811 msr BASEPRI, r3 - 8006dac: f3bf 8f6f isb sy - 8006db0: f3bf 8f4f dsb sy - 8006db4: 62bb str r3, [r7, #40] @ 0x28 + 8006e00: f04f 0350 mov.w r3, #80 @ 0x50 + 8006e04: f383 8811 msr BASEPRI, r3 + 8006e08: f3bf 8f6f isb sy + 8006e0c: f3bf 8f4f dsb sy + 8006e10: 62bb str r3, [r7, #40] @ 0x28 " msr basepri, %0 \n" \ " isb \n" \ " dsb \n" \ :"=r" (ulNewBASEPRI) : "i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY ) : "memory" ); } - 8006db6: bf00 nop - 8006db8: bf00 nop - 8006dba: e7fd b.n 8006db8 + 8006e12: bf00 nop + 8006e14: bf00 nop + 8006e16: e7fd b.n 8006e14 configASSERT( !( ( pvItemToQueue == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) ); - 8006dbc: 68bb ldr r3, [r7, #8] - 8006dbe: 2b00 cmp r3, #0 - 8006dc0: d103 bne.n 8006dca - 8006dc2: 6b3b ldr r3, [r7, #48] @ 0x30 - 8006dc4: 6c1b ldr r3, [r3, #64] @ 0x40 - 8006dc6: 2b00 cmp r3, #0 - 8006dc8: d101 bne.n 8006dce - 8006dca: 2301 movs r3, #1 - 8006dcc: e000 b.n 8006dd0 - 8006dce: 2300 movs r3, #0 - 8006dd0: 2b00 cmp r3, #0 - 8006dd2: d10b bne.n 8006dec + 8006e18: 68bb ldr r3, [r7, #8] + 8006e1a: 2b00 cmp r3, #0 + 8006e1c: d103 bne.n 8006e26 + 8006e1e: 6b3b ldr r3, [r7, #48] @ 0x30 + 8006e20: 6c1b ldr r3, [r3, #64] @ 0x40 + 8006e22: 2b00 cmp r3, #0 + 8006e24: d101 bne.n 8006e2a + 8006e26: 2301 movs r3, #1 + 8006e28: e000 b.n 8006e2c + 8006e2a: 2300 movs r3, #0 + 8006e2c: 2b00 cmp r3, #0 + 8006e2e: d10b bne.n 8006e48 __asm volatile - 8006dd4: f04f 0350 mov.w r3, #80 @ 0x50 - 8006dd8: f383 8811 msr BASEPRI, r3 - 8006ddc: f3bf 8f6f isb sy - 8006de0: f3bf 8f4f dsb sy - 8006de4: 627b str r3, [r7, #36] @ 0x24 + 8006e30: f04f 0350 mov.w r3, #80 @ 0x50 + 8006e34: f383 8811 msr BASEPRI, r3 + 8006e38: f3bf 8f6f isb sy + 8006e3c: f3bf 8f4f dsb sy + 8006e40: 627b str r3, [r7, #36] @ 0x24 } - 8006de6: bf00 nop - 8006de8: bf00 nop - 8006dea: e7fd b.n 8006de8 + 8006e42: bf00 nop + 8006e44: bf00 nop + 8006e46: e7fd b.n 8006e44 configASSERT( !( ( xCopyPosition == queueOVERWRITE ) && ( pxQueue->uxLength != 1 ) ) ); - 8006dec: 683b ldr r3, [r7, #0] - 8006dee: 2b02 cmp r3, #2 - 8006df0: d103 bne.n 8006dfa - 8006df2: 6b3b ldr r3, [r7, #48] @ 0x30 - 8006df4: 6bdb ldr r3, [r3, #60] @ 0x3c - 8006df6: 2b01 cmp r3, #1 - 8006df8: d101 bne.n 8006dfe - 8006dfa: 2301 movs r3, #1 - 8006dfc: e000 b.n 8006e00 - 8006dfe: 2300 movs r3, #0 - 8006e00: 2b00 cmp r3, #0 - 8006e02: d10b bne.n 8006e1c + 8006e48: 683b ldr r3, [r7, #0] + 8006e4a: 2b02 cmp r3, #2 + 8006e4c: d103 bne.n 8006e56 + 8006e4e: 6b3b ldr r3, [r7, #48] @ 0x30 + 8006e50: 6bdb ldr r3, [r3, #60] @ 0x3c + 8006e52: 2b01 cmp r3, #1 + 8006e54: d101 bne.n 8006e5a + 8006e56: 2301 movs r3, #1 + 8006e58: e000 b.n 8006e5c + 8006e5a: 2300 movs r3, #0 + 8006e5c: 2b00 cmp r3, #0 + 8006e5e: d10b bne.n 8006e78 __asm volatile - 8006e04: f04f 0350 mov.w r3, #80 @ 0x50 - 8006e08: f383 8811 msr BASEPRI, r3 - 8006e0c: f3bf 8f6f isb sy - 8006e10: f3bf 8f4f dsb sy - 8006e14: 623b str r3, [r7, #32] + 8006e60: f04f 0350 mov.w r3, #80 @ 0x50 + 8006e64: f383 8811 msr BASEPRI, r3 + 8006e68: f3bf 8f6f isb sy + 8006e6c: f3bf 8f4f dsb sy + 8006e70: 623b str r3, [r7, #32] } - 8006e16: bf00 nop - 8006e18: bf00 nop - 8006e1a: e7fd b.n 8006e18 + 8006e72: bf00 nop + 8006e74: bf00 nop + 8006e76: e7fd b.n 8006e74 #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) { configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) ); - 8006e1c: f000 fd7e bl 800791c - 8006e20: 4603 mov r3, r0 - 8006e22: 2b00 cmp r3, #0 - 8006e24: d102 bne.n 8006e2c - 8006e26: 687b ldr r3, [r7, #4] - 8006e28: 2b00 cmp r3, #0 - 8006e2a: d101 bne.n 8006e30 - 8006e2c: 2301 movs r3, #1 - 8006e2e: e000 b.n 8006e32 - 8006e30: 2300 movs r3, #0 - 8006e32: 2b00 cmp r3, #0 - 8006e34: d10b bne.n 8006e4e + 8006e78: f000 fd7e bl 8007978 + 8006e7c: 4603 mov r3, r0 + 8006e7e: 2b00 cmp r3, #0 + 8006e80: d102 bne.n 8006e88 + 8006e82: 687b ldr r3, [r7, #4] + 8006e84: 2b00 cmp r3, #0 + 8006e86: d101 bne.n 8006e8c + 8006e88: 2301 movs r3, #1 + 8006e8a: e000 b.n 8006e8e + 8006e8c: 2300 movs r3, #0 + 8006e8e: 2b00 cmp r3, #0 + 8006e90: d10b bne.n 8006eaa __asm volatile - 8006e36: f04f 0350 mov.w r3, #80 @ 0x50 - 8006e3a: f383 8811 msr BASEPRI, r3 - 8006e3e: f3bf 8f6f isb sy - 8006e42: f3bf 8f4f dsb sy - 8006e46: 61fb str r3, [r7, #28] + 8006e92: f04f 0350 mov.w r3, #80 @ 0x50 + 8006e96: f383 8811 msr BASEPRI, r3 + 8006e9a: f3bf 8f6f isb sy + 8006e9e: f3bf 8f4f dsb sy + 8006ea2: 61fb str r3, [r7, #28] } - 8006e48: bf00 nop - 8006e4a: bf00 nop - 8006e4c: e7fd b.n 8006e4a + 8006ea4: bf00 nop + 8006ea6: bf00 nop + 8006ea8: e7fd b.n 8006ea6 /*lint -save -e904 This function relaxes the coding standard somewhat to allow return statements within the function itself. This is done in the interest of execution time efficiency. */ for( ;; ) { taskENTER_CRITICAL(); - 8006e4e: f000 fe8b bl 8007b68 + 8006eaa: f000 fe85 bl 8007bb8 { /* Is there room on the queue now? The running task must be the highest priority task wanting to access the queue. If the head item in the queue is to be overwritten then it does not matter if the queue is full. */ if( ( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) || ( xCopyPosition == queueOVERWRITE ) ) - 8006e52: 6b3b ldr r3, [r7, #48] @ 0x30 - 8006e54: 6b9a ldr r2, [r3, #56] @ 0x38 - 8006e56: 6b3b ldr r3, [r7, #48] @ 0x30 - 8006e58: 6bdb ldr r3, [r3, #60] @ 0x3c - 8006e5a: 429a cmp r2, r3 - 8006e5c: d302 bcc.n 8006e64 - 8006e5e: 683b ldr r3, [r7, #0] - 8006e60: 2b02 cmp r3, #2 - 8006e62: d129 bne.n 8006eb8 + 8006eae: 6b3b ldr r3, [r7, #48] @ 0x30 + 8006eb0: 6b9a ldr r2, [r3, #56] @ 0x38 + 8006eb2: 6b3b ldr r3, [r7, #48] @ 0x30 + 8006eb4: 6bdb ldr r3, [r3, #60] @ 0x3c + 8006eb6: 429a cmp r2, r3 + 8006eb8: d302 bcc.n 8006ec0 + 8006eba: 683b ldr r3, [r7, #0] + 8006ebc: 2b02 cmp r3, #2 + 8006ebe: d129 bne.n 8006f14 } } } #else /* configUSE_QUEUE_SETS */ { xYieldRequired = prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition ); - 8006e64: 683a ldr r2, [r7, #0] - 8006e66: 68b9 ldr r1, [r7, #8] - 8006e68: 6b38 ldr r0, [r7, #48] @ 0x30 - 8006e6a: f000 f96b bl 8007144 - 8006e6e: 62f8 str r0, [r7, #44] @ 0x2c + 8006ec0: 683a ldr r2, [r7, #0] + 8006ec2: 68b9 ldr r1, [r7, #8] + 8006ec4: 6b38 ldr r0, [r7, #48] @ 0x30 + 8006ec6: f000 f96b bl 80071a0 + 8006eca: 62f8 str r0, [r7, #44] @ 0x2c /* If there was a task waiting for data to arrive on the queue then unblock it now. */ if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) - 8006e70: 6b3b ldr r3, [r7, #48] @ 0x30 - 8006e72: 6a5b ldr r3, [r3, #36] @ 0x24 - 8006e74: 2b00 cmp r3, #0 - 8006e76: d010 beq.n 8006e9a + 8006ecc: 6b3b ldr r3, [r7, #48] @ 0x30 + 8006ece: 6a5b ldr r3, [r3, #36] @ 0x24 + 8006ed0: 2b00 cmp r3, #0 + 8006ed2: d010 beq.n 8006ef6 { if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) - 8006e78: 6b3b ldr r3, [r7, #48] @ 0x30 - 8006e7a: 3324 adds r3, #36 @ 0x24 - 8006e7c: 4618 mov r0, r3 - 8006e7e: f000 fc43 bl 8007708 - 8006e82: 4603 mov r3, r0 - 8006e84: 2b00 cmp r3, #0 - 8006e86: d013 beq.n 8006eb0 + 8006ed4: 6b3b ldr r3, [r7, #48] @ 0x30 + 8006ed6: 3324 adds r3, #36 @ 0x24 + 8006ed8: 4618 mov r0, r3 + 8006eda: f000 fc43 bl 8007764 + 8006ede: 4603 mov r3, r0 + 8006ee0: 2b00 cmp r3, #0 + 8006ee2: d013 beq.n 8006f0c { /* The unblocked task has a priority higher than our own so yield immediately. Yes it is ok to do this from within the critical section - the kernel takes care of that. */ queueYIELD_IF_USING_PREEMPTION(); - 8006e88: 4b3f ldr r3, [pc, #252] @ (8006f88 ) - 8006e8a: f04f 5280 mov.w r2, #268435456 @ 0x10000000 - 8006e8e: 601a str r2, [r3, #0] - 8006e90: f3bf 8f4f dsb sy - 8006e94: f3bf 8f6f isb sy - 8006e98: e00a b.n 8006eb0 + 8006ee4: 4b3f ldr r3, [pc, #252] @ (8006fe4 ) + 8006ee6: f04f 5280 mov.w r2, #268435456 @ 0x10000000 + 8006eea: 601a str r2, [r3, #0] + 8006eec: f3bf 8f4f dsb sy + 8006ef0: f3bf 8f6f isb sy + 8006ef4: e00a b.n 8006f0c else { mtCOVERAGE_TEST_MARKER(); } } else if( xYieldRequired != pdFALSE ) - 8006e9a: 6afb ldr r3, [r7, #44] @ 0x2c - 8006e9c: 2b00 cmp r3, #0 - 8006e9e: d007 beq.n 8006eb0 + 8006ef6: 6afb ldr r3, [r7, #44] @ 0x2c + 8006ef8: 2b00 cmp r3, #0 + 8006efa: d007 beq.n 8006f0c { /* This path is a special case that will only get executed if the task was holding multiple mutexes and the mutexes were given back in an order that is different to that in which they were taken. */ queueYIELD_IF_USING_PREEMPTION(); - 8006ea0: 4b39 ldr r3, [pc, #228] @ (8006f88 ) - 8006ea2: f04f 5280 mov.w r2, #268435456 @ 0x10000000 - 8006ea6: 601a str r2, [r3, #0] - 8006ea8: f3bf 8f4f dsb sy - 8006eac: f3bf 8f6f isb sy + 8006efc: 4b39 ldr r3, [pc, #228] @ (8006fe4 ) + 8006efe: f04f 5280 mov.w r2, #268435456 @ 0x10000000 + 8006f02: 601a str r2, [r3, #0] + 8006f04: f3bf 8f4f dsb sy + 8006f08: f3bf 8f6f isb sy mtCOVERAGE_TEST_MARKER(); } } #endif /* configUSE_QUEUE_SETS */ taskEXIT_CRITICAL(); - 8006eb0: f000 fe8c bl 8007bcc + 8006f0c: f000 fe86 bl 8007c1c return pdPASS; - 8006eb4: 2301 movs r3, #1 - 8006eb6: e063 b.n 8006f80 + 8006f10: 2301 movs r3, #1 + 8006f12: e063 b.n 8006fdc } else { if( xTicksToWait == ( TickType_t ) 0 ) - 8006eb8: 687b ldr r3, [r7, #4] - 8006eba: 2b00 cmp r3, #0 - 8006ebc: d103 bne.n 8006ec6 + 8006f14: 687b ldr r3, [r7, #4] + 8006f16: 2b00 cmp r3, #0 + 8006f18: d103 bne.n 8006f22 { /* The queue was full and no block time is specified (or the block time has expired) so leave now. */ taskEXIT_CRITICAL(); - 8006ebe: f000 fe85 bl 8007bcc + 8006f1a: f000 fe7f bl 8007c1c /* Return to the original privilege level before exiting the function. */ traceQUEUE_SEND_FAILED( pxQueue ); return errQUEUE_FULL; - 8006ec2: 2300 movs r3, #0 - 8006ec4: e05c b.n 8006f80 + 8006f1e: 2300 movs r3, #0 + 8006f20: e05c b.n 8006fdc } else if( xEntryTimeSet == pdFALSE ) - 8006ec6: 6b7b ldr r3, [r7, #52] @ 0x34 - 8006ec8: 2b00 cmp r3, #0 - 8006eca: d106 bne.n 8006eda + 8006f22: 6b7b ldr r3, [r7, #52] @ 0x34 + 8006f24: 2b00 cmp r3, #0 + 8006f26: d106 bne.n 8006f36 { /* The queue was full and a block time was specified so configure the timeout structure. */ vTaskInternalSetTimeOutState( &xTimeOut ); - 8006ecc: f107 0314 add.w r3, r7, #20 - 8006ed0: 4618 mov r0, r3 - 8006ed2: f000 fc7d bl 80077d0 + 8006f28: f107 0314 add.w r3, r7, #20 + 8006f2c: 4618 mov r0, r3 + 8006f2e: f000 fc7d bl 800782c xEntryTimeSet = pdTRUE; - 8006ed6: 2301 movs r3, #1 - 8006ed8: 637b str r3, [r7, #52] @ 0x34 + 8006f32: 2301 movs r3, #1 + 8006f34: 637b str r3, [r7, #52] @ 0x34 /* Entry time was already set. */ mtCOVERAGE_TEST_MARKER(); } } } taskEXIT_CRITICAL(); - 8006eda: f000 fe77 bl 8007bcc + 8006f36: f000 fe71 bl 8007c1c /* Interrupts and other tasks can send to and receive from the queue now the critical section has been exited. */ vTaskSuspendAll(); - 8006ede: f000 fa05 bl 80072ec + 8006f3a: f000 fa05 bl 8007348 prvLockQueue( pxQueue ); - 8006ee2: f000 fe41 bl 8007b68 - 8006ee6: 6b3b ldr r3, [r7, #48] @ 0x30 - 8006ee8: f893 3044 ldrb.w r3, [r3, #68] @ 0x44 - 8006eec: b25b sxtb r3, r3 - 8006eee: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff - 8006ef2: d103 bne.n 8006efc - 8006ef4: 6b3b ldr r3, [r7, #48] @ 0x30 - 8006ef6: 2200 movs r2, #0 - 8006ef8: f883 2044 strb.w r2, [r3, #68] @ 0x44 - 8006efc: 6b3b ldr r3, [r7, #48] @ 0x30 - 8006efe: f893 3045 ldrb.w r3, [r3, #69] @ 0x45 - 8006f02: b25b sxtb r3, r3 - 8006f04: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff - 8006f08: d103 bne.n 8006f12 - 8006f0a: 6b3b ldr r3, [r7, #48] @ 0x30 - 8006f0c: 2200 movs r2, #0 - 8006f0e: f883 2045 strb.w r2, [r3, #69] @ 0x45 - 8006f12: f000 fe5b bl 8007bcc + 8006f3e: f000 fe3b bl 8007bb8 + 8006f42: 6b3b ldr r3, [r7, #48] @ 0x30 + 8006f44: f893 3044 ldrb.w r3, [r3, #68] @ 0x44 + 8006f48: b25b sxtb r3, r3 + 8006f4a: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8006f4e: d103 bne.n 8006f58 + 8006f50: 6b3b ldr r3, [r7, #48] @ 0x30 + 8006f52: 2200 movs r2, #0 + 8006f54: f883 2044 strb.w r2, [r3, #68] @ 0x44 + 8006f58: 6b3b ldr r3, [r7, #48] @ 0x30 + 8006f5a: f893 3045 ldrb.w r3, [r3, #69] @ 0x45 + 8006f5e: b25b sxtb r3, r3 + 8006f60: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8006f64: d103 bne.n 8006f6e + 8006f66: 6b3b ldr r3, [r7, #48] @ 0x30 + 8006f68: 2200 movs r2, #0 + 8006f6a: f883 2045 strb.w r2, [r3, #69] @ 0x45 + 8006f6e: f000 fe55 bl 8007c1c /* Update the timeout state to see if it has expired yet. */ if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ) - 8006f16: 1d3a adds r2, r7, #4 - 8006f18: f107 0314 add.w r3, r7, #20 - 8006f1c: 4611 mov r1, r2 - 8006f1e: 4618 mov r0, r3 - 8006f20: f000 fc6c bl 80077fc - 8006f24: 4603 mov r3, r0 - 8006f26: 2b00 cmp r3, #0 - 8006f28: d124 bne.n 8006f74 + 8006f72: 1d3a adds r2, r7, #4 + 8006f74: f107 0314 add.w r3, r7, #20 + 8006f78: 4611 mov r1, r2 + 8006f7a: 4618 mov r0, r3 + 8006f7c: f000 fc6c bl 8007858 + 8006f80: 4603 mov r3, r0 + 8006f82: 2b00 cmp r3, #0 + 8006f84: d124 bne.n 8006fd0 { if( prvIsQueueFull( pxQueue ) != pdFALSE ) - 8006f2a: 6b38 ldr r0, [r7, #48] @ 0x30 - 8006f2c: f000 f9c6 bl 80072bc - 8006f30: 4603 mov r3, r0 - 8006f32: 2b00 cmp r3, #0 - 8006f34: d018 beq.n 8006f68 + 8006f86: 6b38 ldr r0, [r7, #48] @ 0x30 + 8006f88: f000 f9c6 bl 8007318 + 8006f8c: 4603 mov r3, r0 + 8006f8e: 2b00 cmp r3, #0 + 8006f90: d018 beq.n 8006fc4 { traceBLOCKING_ON_QUEUE_SEND( pxQueue ); vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToSend ), xTicksToWait ); - 8006f36: 6b3b ldr r3, [r7, #48] @ 0x30 - 8006f38: 3310 adds r3, #16 - 8006f3a: 687a ldr r2, [r7, #4] - 8006f3c: 4611 mov r1, r2 - 8006f3e: 4618 mov r0, r3 - 8006f40: f000 fbbc bl 80076bc + 8006f92: 6b3b ldr r3, [r7, #48] @ 0x30 + 8006f94: 3310 adds r3, #16 + 8006f96: 687a ldr r2, [r7, #4] + 8006f98: 4611 mov r1, r2 + 8006f9a: 4618 mov r0, r3 + 8006f9c: f000 fbbc bl 8007718 /* Unlocking the queue means queue events can effect the event list. It is possible that interrupts occurring now remove this task from the event list again - but as the scheduler is suspended the task will go onto the pending ready last instead of the actual ready list. */ prvUnlockQueue( pxQueue ); - 8006f44: 6b38 ldr r0, [r7, #48] @ 0x30 - 8006f46: f000 f967 bl 8007218 + 8006fa0: 6b38 ldr r0, [r7, #48] @ 0x30 + 8006fa2: f000 f967 bl 8007274 /* Resuming the scheduler will move tasks from the pending ready list into the ready list - so it is feasible that this task is already in a ready list before it yields - in which case the yield will not cause a context switch unless there is also a higher priority task in the pending ready list. */ if( xTaskResumeAll() == pdFALSE ) - 8006f4a: f000 f9dd bl 8007308 - 8006f4e: 4603 mov r3, r0 - 8006f50: 2b00 cmp r3, #0 - 8006f52: f47f af7c bne.w 8006e4e + 8006fa6: f000 f9dd bl 8007364 + 8006faa: 4603 mov r3, r0 + 8006fac: 2b00 cmp r3, #0 + 8006fae: f47f af7c bne.w 8006eaa { portYIELD_WITHIN_API(); - 8006f56: 4b0c ldr r3, [pc, #48] @ (8006f88 ) - 8006f58: f04f 5280 mov.w r2, #268435456 @ 0x10000000 - 8006f5c: 601a str r2, [r3, #0] - 8006f5e: f3bf 8f4f dsb sy - 8006f62: f3bf 8f6f isb sy - 8006f66: e772 b.n 8006e4e + 8006fb2: 4b0c ldr r3, [pc, #48] @ (8006fe4 ) + 8006fb4: f04f 5280 mov.w r2, #268435456 @ 0x10000000 + 8006fb8: 601a str r2, [r3, #0] + 8006fba: f3bf 8f4f dsb sy + 8006fbe: f3bf 8f6f isb sy + 8006fc2: e772 b.n 8006eaa } } else { /* Try again. */ prvUnlockQueue( pxQueue ); - 8006f68: 6b38 ldr r0, [r7, #48] @ 0x30 - 8006f6a: f000 f955 bl 8007218 + 8006fc4: 6b38 ldr r0, [r7, #48] @ 0x30 + 8006fc6: f000 f955 bl 8007274 ( void ) xTaskResumeAll(); - 8006f6e: f000 f9cb bl 8007308 - 8006f72: e76c b.n 8006e4e + 8006fca: f000 f9cb bl 8007364 + 8006fce: e76c b.n 8006eaa } } else { /* The timeout has expired. */ prvUnlockQueue( pxQueue ); - 8006f74: 6b38 ldr r0, [r7, #48] @ 0x30 - 8006f76: f000 f94f bl 8007218 + 8006fd0: 6b38 ldr r0, [r7, #48] @ 0x30 + 8006fd2: f000 f94f bl 8007274 ( void ) xTaskResumeAll(); - 8006f7a: f000 f9c5 bl 8007308 + 8006fd6: f000 f9c5 bl 8007364 traceQUEUE_SEND_FAILED( pxQueue ); return errQUEUE_FULL; - 8006f7e: 2300 movs r3, #0 + 8006fda: 2300 movs r3, #0 } } /*lint -restore */ } - 8006f80: 4618 mov r0, r3 - 8006f82: 3738 adds r7, #56 @ 0x38 - 8006f84: 46bd mov sp, r7 - 8006f86: bd80 pop {r7, pc} - 8006f88: e000ed04 .word 0xe000ed04 + 8006fdc: 4618 mov r0, r3 + 8006fde: 3738 adds r7, #56 @ 0x38 + 8006fe0: 46bd mov sp, r7 + 8006fe2: bd80 pop {r7, pc} + 8006fe4: e000ed04 .word 0xe000ed04 -08006f8c : +08006fe8 : /*-----------------------------------------------------------*/ BaseType_t xQueueGenericSendFromISR( QueueHandle_t xQueue, const void * const pvItemToQueue, BaseType_t * const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition ) { - 8006f8c: b580 push {r7, lr} - 8006f8e: b090 sub sp, #64 @ 0x40 - 8006f90: af00 add r7, sp, #0 - 8006f92: 60f8 str r0, [r7, #12] - 8006f94: 60b9 str r1, [r7, #8] - 8006f96: 607a str r2, [r7, #4] - 8006f98: 603b str r3, [r7, #0] + 8006fe8: b580 push {r7, lr} + 8006fea: b090 sub sp, #64 @ 0x40 + 8006fec: af00 add r7, sp, #0 + 8006fee: 60f8 str r0, [r7, #12] + 8006ff0: 60b9 str r1, [r7, #8] + 8006ff2: 607a str r2, [r7, #4] + 8006ff4: 603b str r3, [r7, #0] BaseType_t xReturn; UBaseType_t uxSavedInterruptStatus; Queue_t * const pxQueue = xQueue; - 8006f9a: 68fb ldr r3, [r7, #12] - 8006f9c: 63bb str r3, [r7, #56] @ 0x38 + 8006ff6: 68fb ldr r3, [r7, #12] + 8006ff8: 63bb str r3, [r7, #56] @ 0x38 configASSERT( pxQueue ); - 8006f9e: 6bbb ldr r3, [r7, #56] @ 0x38 - 8006fa0: 2b00 cmp r3, #0 - 8006fa2: d10b bne.n 8006fbc + 8006ffa: 6bbb ldr r3, [r7, #56] @ 0x38 + 8006ffc: 2b00 cmp r3, #0 + 8006ffe: d10b bne.n 8007018 __asm volatile - 8006fa4: f04f 0350 mov.w r3, #80 @ 0x50 - 8006fa8: f383 8811 msr BASEPRI, r3 - 8006fac: f3bf 8f6f isb sy - 8006fb0: f3bf 8f4f dsb sy - 8006fb4: 62bb str r3, [r7, #40] @ 0x28 + 8007000: f04f 0350 mov.w r3, #80 @ 0x50 + 8007004: f383 8811 msr BASEPRI, r3 + 8007008: f3bf 8f6f isb sy + 800700c: f3bf 8f4f dsb sy + 8007010: 62bb str r3, [r7, #40] @ 0x28 } - 8006fb6: bf00 nop - 8006fb8: bf00 nop - 8006fba: e7fd b.n 8006fb8 + 8007012: bf00 nop + 8007014: bf00 nop + 8007016: e7fd b.n 8007014 configASSERT( !( ( pvItemToQueue == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) ); - 8006fbc: 68bb ldr r3, [r7, #8] - 8006fbe: 2b00 cmp r3, #0 - 8006fc0: d103 bne.n 8006fca - 8006fc2: 6bbb ldr r3, [r7, #56] @ 0x38 - 8006fc4: 6c1b ldr r3, [r3, #64] @ 0x40 - 8006fc6: 2b00 cmp r3, #0 - 8006fc8: d101 bne.n 8006fce - 8006fca: 2301 movs r3, #1 - 8006fcc: e000 b.n 8006fd0 - 8006fce: 2300 movs r3, #0 - 8006fd0: 2b00 cmp r3, #0 - 8006fd2: d10b bne.n 8006fec + 8007018: 68bb ldr r3, [r7, #8] + 800701a: 2b00 cmp r3, #0 + 800701c: d103 bne.n 8007026 + 800701e: 6bbb ldr r3, [r7, #56] @ 0x38 + 8007020: 6c1b ldr r3, [r3, #64] @ 0x40 + 8007022: 2b00 cmp r3, #0 + 8007024: d101 bne.n 800702a + 8007026: 2301 movs r3, #1 + 8007028: e000 b.n 800702c + 800702a: 2300 movs r3, #0 + 800702c: 2b00 cmp r3, #0 + 800702e: d10b bne.n 8007048 __asm volatile - 8006fd4: f04f 0350 mov.w r3, #80 @ 0x50 - 8006fd8: f383 8811 msr BASEPRI, r3 - 8006fdc: f3bf 8f6f isb sy - 8006fe0: f3bf 8f4f dsb sy - 8006fe4: 627b str r3, [r7, #36] @ 0x24 + 8007030: f04f 0350 mov.w r3, #80 @ 0x50 + 8007034: f383 8811 msr BASEPRI, r3 + 8007038: f3bf 8f6f isb sy + 800703c: f3bf 8f4f dsb sy + 8007040: 627b str r3, [r7, #36] @ 0x24 } - 8006fe6: bf00 nop - 8006fe8: bf00 nop - 8006fea: e7fd b.n 8006fe8 + 8007042: bf00 nop + 8007044: bf00 nop + 8007046: e7fd b.n 8007044 configASSERT( !( ( xCopyPosition == queueOVERWRITE ) && ( pxQueue->uxLength != 1 ) ) ); - 8006fec: 683b ldr r3, [r7, #0] - 8006fee: 2b02 cmp r3, #2 - 8006ff0: d103 bne.n 8006ffa - 8006ff2: 6bbb ldr r3, [r7, #56] @ 0x38 - 8006ff4: 6bdb ldr r3, [r3, #60] @ 0x3c - 8006ff6: 2b01 cmp r3, #1 - 8006ff8: d101 bne.n 8006ffe - 8006ffa: 2301 movs r3, #1 - 8006ffc: e000 b.n 8007000 - 8006ffe: 2300 movs r3, #0 - 8007000: 2b00 cmp r3, #0 - 8007002: d10b bne.n 800701c + 8007048: 683b ldr r3, [r7, #0] + 800704a: 2b02 cmp r3, #2 + 800704c: d103 bne.n 8007056 + 800704e: 6bbb ldr r3, [r7, #56] @ 0x38 + 8007050: 6bdb ldr r3, [r3, #60] @ 0x3c + 8007052: 2b01 cmp r3, #1 + 8007054: d101 bne.n 800705a + 8007056: 2301 movs r3, #1 + 8007058: e000 b.n 800705c + 800705a: 2300 movs r3, #0 + 800705c: 2b00 cmp r3, #0 + 800705e: d10b bne.n 8007078 __asm volatile - 8007004: f04f 0350 mov.w r3, #80 @ 0x50 - 8007008: f383 8811 msr BASEPRI, r3 - 800700c: f3bf 8f6f isb sy - 8007010: f3bf 8f4f dsb sy - 8007014: 623b str r3, [r7, #32] + 8007060: f04f 0350 mov.w r3, #80 @ 0x50 + 8007064: f383 8811 msr BASEPRI, r3 + 8007068: f3bf 8f6f isb sy + 800706c: f3bf 8f4f dsb sy + 8007070: 623b str r3, [r7, #32] } - 8007016: bf00 nop - 8007018: bf00 nop - 800701a: e7fd b.n 8007018 + 8007072: bf00 nop + 8007074: bf00 nop + 8007076: e7fd b.n 8007074 that have been assigned a priority at or (logically) below the maximum system call interrupt priority. FreeRTOS maintains a separate interrupt safe API to ensure interrupt entry is as fast and as simple as possible. More information (albeit Cortex-M specific) is provided on the following link: http://www.freertos.org/RTOS-Cortex-M3-M4.html */ portASSERT_IF_INTERRUPT_PRIORITY_INVALID(); - 800701c: f000 fe56 bl 8007ccc + 8007078: f000 fe50 bl 8007d1c portFORCE_INLINE static uint32_t ulPortRaiseBASEPRI( void ) { uint32_t ulOriginalBASEPRI, ulNewBASEPRI; __asm volatile - 8007020: f3ef 8211 mrs r2, BASEPRI - 8007024: f04f 0350 mov.w r3, #80 @ 0x50 - 8007028: f383 8811 msr BASEPRI, r3 - 800702c: f3bf 8f6f isb sy - 8007030: f3bf 8f4f dsb sy - 8007034: 61fa str r2, [r7, #28] - 8007036: 61bb str r3, [r7, #24] + 800707c: f3ef 8211 mrs r2, BASEPRI + 8007080: f04f 0350 mov.w r3, #80 @ 0x50 + 8007084: f383 8811 msr BASEPRI, r3 + 8007088: f3bf 8f6f isb sy + 800708c: f3bf 8f4f dsb sy + 8007090: 61fa str r2, [r7, #28] + 8007092: 61bb str r3, [r7, #24] :"=r" (ulOriginalBASEPRI), "=r" (ulNewBASEPRI) : "i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY ) : "memory" ); /* This return will not be reached but is necessary to prevent compiler warnings. */ return ulOriginalBASEPRI; - 8007038: 69fb ldr r3, [r7, #28] + 8007094: 69fb ldr r3, [r7, #28] /* Similar to xQueueGenericSend, except without blocking if there is no room in the queue. Also don't directly wake a task that was blocked on a queue read, instead return a flag to say whether a context switch is required or not (i.e. has a task with a higher priority than us been woken by this post). */ uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR(); - 800703a: 637b str r3, [r7, #52] @ 0x34 + 8007096: 637b str r3, [r7, #52] @ 0x34 { if( ( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) || ( xCopyPosition == queueOVERWRITE ) ) - 800703c: 6bbb ldr r3, [r7, #56] @ 0x38 - 800703e: 6b9a ldr r2, [r3, #56] @ 0x38 - 8007040: 6bbb ldr r3, [r7, #56] @ 0x38 - 8007042: 6bdb ldr r3, [r3, #60] @ 0x3c - 8007044: 429a cmp r2, r3 - 8007046: d302 bcc.n 800704e - 8007048: 683b ldr r3, [r7, #0] - 800704a: 2b02 cmp r3, #2 - 800704c: d12f bne.n 80070ae + 8007098: 6bbb ldr r3, [r7, #56] @ 0x38 + 800709a: 6b9a ldr r2, [r3, #56] @ 0x38 + 800709c: 6bbb ldr r3, [r7, #56] @ 0x38 + 800709e: 6bdb ldr r3, [r3, #60] @ 0x3c + 80070a0: 429a cmp r2, r3 + 80070a2: d302 bcc.n 80070aa + 80070a4: 683b ldr r3, [r7, #0] + 80070a6: 2b02 cmp r3, #2 + 80070a8: d12f bne.n 800710a { const int8_t cTxLock = pxQueue->cTxLock; - 800704e: 6bbb ldr r3, [r7, #56] @ 0x38 - 8007050: f893 3045 ldrb.w r3, [r3, #69] @ 0x45 - 8007054: f887 3033 strb.w r3, [r7, #51] @ 0x33 + 80070aa: 6bbb ldr r3, [r7, #56] @ 0x38 + 80070ac: f893 3045 ldrb.w r3, [r3, #69] @ 0x45 + 80070b0: f887 3033 strb.w r3, [r7, #51] @ 0x33 const UBaseType_t uxPreviousMessagesWaiting = pxQueue->uxMessagesWaiting; - 8007058: 6bbb ldr r3, [r7, #56] @ 0x38 - 800705a: 6b9b ldr r3, [r3, #56] @ 0x38 - 800705c: 62fb str r3, [r7, #44] @ 0x2c + 80070b4: 6bbb ldr r3, [r7, #56] @ 0x38 + 80070b6: 6b9b ldr r3, [r3, #56] @ 0x38 + 80070b8: 62fb str r3, [r7, #44] @ 0x2c /* Semaphores use xQueueGiveFromISR(), so pxQueue will not be a semaphore or mutex. That means prvCopyDataToQueue() cannot result in a task disinheriting a priority and prvCopyDataToQueue() can be called here even though the disinherit function does not check if the scheduler is suspended before accessing the ready lists. */ ( void ) prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition ); - 800705e: 683a ldr r2, [r7, #0] - 8007060: 68b9 ldr r1, [r7, #8] - 8007062: 6bb8 ldr r0, [r7, #56] @ 0x38 - 8007064: f000 f86e bl 8007144 + 80070ba: 683a ldr r2, [r7, #0] + 80070bc: 68b9 ldr r1, [r7, #8] + 80070be: 6bb8 ldr r0, [r7, #56] @ 0x38 + 80070c0: f000 f86e bl 80071a0 /* The event list is not altered if the queue is locked. This will be done when the queue is unlocked later. */ if( cTxLock == queueUNLOCKED ) - 8007068: f997 3033 ldrsb.w r3, [r7, #51] @ 0x33 - 800706c: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff - 8007070: d112 bne.n 8007098 + 80070c4: f997 3033 ldrsb.w r3, [r7, #51] @ 0x33 + 80070c8: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 80070cc: d112 bne.n 80070f4 } } } #else /* configUSE_QUEUE_SETS */ { if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) - 8007072: 6bbb ldr r3, [r7, #56] @ 0x38 - 8007074: 6a5b ldr r3, [r3, #36] @ 0x24 - 8007076: 2b00 cmp r3, #0 - 8007078: d016 beq.n 80070a8 + 80070ce: 6bbb ldr r3, [r7, #56] @ 0x38 + 80070d0: 6a5b ldr r3, [r3, #36] @ 0x24 + 80070d2: 2b00 cmp r3, #0 + 80070d4: d016 beq.n 8007104 { if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) - 800707a: 6bbb ldr r3, [r7, #56] @ 0x38 - 800707c: 3324 adds r3, #36 @ 0x24 - 800707e: 4618 mov r0, r3 - 8007080: f000 fb42 bl 8007708 - 8007084: 4603 mov r3, r0 - 8007086: 2b00 cmp r3, #0 - 8007088: d00e beq.n 80070a8 + 80070d6: 6bbb ldr r3, [r7, #56] @ 0x38 + 80070d8: 3324 adds r3, #36 @ 0x24 + 80070da: 4618 mov r0, r3 + 80070dc: f000 fb42 bl 8007764 + 80070e0: 4603 mov r3, r0 + 80070e2: 2b00 cmp r3, #0 + 80070e4: d00e beq.n 8007104 { /* The task waiting has a higher priority so record that a context switch is required. */ if( pxHigherPriorityTaskWoken != NULL ) - 800708a: 687b ldr r3, [r7, #4] - 800708c: 2b00 cmp r3, #0 - 800708e: d00b beq.n 80070a8 + 80070e6: 687b ldr r3, [r7, #4] + 80070e8: 2b00 cmp r3, #0 + 80070ea: d00b beq.n 8007104 { *pxHigherPriorityTaskWoken = pdTRUE; - 8007090: 687b ldr r3, [r7, #4] - 8007092: 2201 movs r2, #1 - 8007094: 601a str r2, [r3, #0] - 8007096: e007 b.n 80070a8 + 80070ec: 687b ldr r3, [r7, #4] + 80070ee: 2201 movs r2, #1 + 80070f0: 601a str r2, [r3, #0] + 80070f2: e007 b.n 8007104 } else { /* Increment the lock count so the task that unlocks the queue knows that data was posted while it was locked. */ pxQueue->cTxLock = ( int8_t ) ( cTxLock + 1 ); - 8007098: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 - 800709c: 3301 adds r3, #1 - 800709e: b2db uxtb r3, r3 - 80070a0: b25a sxtb r2, r3 - 80070a2: 6bbb ldr r3, [r7, #56] @ 0x38 - 80070a4: f883 2045 strb.w r2, [r3, #69] @ 0x45 + 80070f4: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 + 80070f8: 3301 adds r3, #1 + 80070fa: b2db uxtb r3, r3 + 80070fc: b25a sxtb r2, r3 + 80070fe: 6bbb ldr r3, [r7, #56] @ 0x38 + 8007100: f883 2045 strb.w r2, [r3, #69] @ 0x45 } xReturn = pdPASS; - 80070a8: 2301 movs r3, #1 - 80070aa: 63fb str r3, [r7, #60] @ 0x3c + 8007104: 2301 movs r3, #1 + 8007106: 63fb str r3, [r7, #60] @ 0x3c { - 80070ac: e001 b.n 80070b2 + 8007108: e001 b.n 800710e } else { traceQUEUE_SEND_FROM_ISR_FAILED( pxQueue ); xReturn = errQUEUE_FULL; - 80070ae: 2300 movs r3, #0 - 80070b0: 63fb str r3, [r7, #60] @ 0x3c - 80070b2: 6b7b ldr r3, [r7, #52] @ 0x34 - 80070b4: 617b str r3, [r7, #20] + 800710a: 2300 movs r3, #0 + 800710c: 63fb str r3, [r7, #60] @ 0x3c + 800710e: 6b7b ldr r3, [r7, #52] @ 0x34 + 8007110: 617b str r3, [r7, #20] } /*-----------------------------------------------------------*/ portFORCE_INLINE static void vPortSetBASEPRI( uint32_t ulNewMaskValue ) { __asm volatile - 80070b6: 697b ldr r3, [r7, #20] - 80070b8: f383 8811 msr BASEPRI, r3 + 8007112: 697b ldr r3, [r7, #20] + 8007114: f383 8811 msr BASEPRI, r3 ( " msr basepri, %0 " :: "r" ( ulNewMaskValue ) : "memory" ); } - 80070bc: bf00 nop + 8007118: bf00 nop } } portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); return xReturn; - 80070be: 6bfb ldr r3, [r7, #60] @ 0x3c + 800711a: 6bfb ldr r3, [r7, #60] @ 0x3c } - 80070c0: 4618 mov r0, r3 - 80070c2: 3740 adds r7, #64 @ 0x40 - 80070c4: 46bd mov sp, r7 - 80070c6: bd80 pop {r7, pc} + 800711c: 4618 mov r0, r3 + 800711e: 3740 adds r7, #64 @ 0x40 + 8007120: 46bd mov sp, r7 + 8007122: bd80 pop {r7, pc} -080070c8 : +08007124 : return xReturn; } /*-----------------------------------------------------------*/ UBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue ) { - 80070c8: b580 push {r7, lr} - 80070ca: b084 sub sp, #16 - 80070cc: af00 add r7, sp, #0 - 80070ce: 6078 str r0, [r7, #4] + 8007124: b580 push {r7, lr} + 8007126: b084 sub sp, #16 + 8007128: af00 add r7, sp, #0 + 800712a: 6078 str r0, [r7, #4] UBaseType_t uxReturn; configASSERT( xQueue ); - 80070d0: 687b ldr r3, [r7, #4] - 80070d2: 2b00 cmp r3, #0 - 80070d4: d10b bne.n 80070ee + 800712c: 687b ldr r3, [r7, #4] + 800712e: 2b00 cmp r3, #0 + 8007130: d10b bne.n 800714a __asm volatile - 80070d6: f04f 0350 mov.w r3, #80 @ 0x50 - 80070da: f383 8811 msr BASEPRI, r3 - 80070de: f3bf 8f6f isb sy - 80070e2: f3bf 8f4f dsb sy - 80070e6: 60bb str r3, [r7, #8] + 8007132: f04f 0350 mov.w r3, #80 @ 0x50 + 8007136: f383 8811 msr BASEPRI, r3 + 800713a: f3bf 8f6f isb sy + 800713e: f3bf 8f4f dsb sy + 8007142: 60bb str r3, [r7, #8] } - 80070e8: bf00 nop - 80070ea: bf00 nop - 80070ec: e7fd b.n 80070ea + 8007144: bf00 nop + 8007146: bf00 nop + 8007148: e7fd b.n 8007146 taskENTER_CRITICAL(); - 80070ee: f000 fd3b bl 8007b68 + 800714a: f000 fd35 bl 8007bb8 { uxReturn = ( ( Queue_t * ) xQueue )->uxMessagesWaiting; - 80070f2: 687b ldr r3, [r7, #4] - 80070f4: 6b9b ldr r3, [r3, #56] @ 0x38 - 80070f6: 60fb str r3, [r7, #12] + 800714e: 687b ldr r3, [r7, #4] + 8007150: 6b9b ldr r3, [r3, #56] @ 0x38 + 8007152: 60fb str r3, [r7, #12] } taskEXIT_CRITICAL(); - 80070f8: f000 fd68 bl 8007bcc + 8007154: f000 fd62 bl 8007c1c return uxReturn; - 80070fc: 68fb ldr r3, [r7, #12] + 8007158: 68fb ldr r3, [r7, #12] } /*lint !e818 Pointer cannot be declared const as xQueue is a typedef not pointer. */ - 80070fe: 4618 mov r0, r3 - 8007100: 3710 adds r7, #16 - 8007102: 46bd mov sp, r7 - 8007104: bd80 pop {r7, pc} + 800715a: 4618 mov r0, r3 + 800715c: 3710 adds r7, #16 + 800715e: 46bd mov sp, r7 + 8007160: bd80 pop {r7, pc} -08007106 : +08007162 : return uxReturn; } /*lint !e818 Pointer cannot be declared const as xQueue is a typedef not pointer. */ /*-----------------------------------------------------------*/ UBaseType_t uxQueueMessagesWaitingFromISR( const QueueHandle_t xQueue ) { - 8007106: b480 push {r7} - 8007108: b087 sub sp, #28 - 800710a: af00 add r7, sp, #0 - 800710c: 6078 str r0, [r7, #4] + 8007162: b480 push {r7} + 8007164: b087 sub sp, #28 + 8007166: af00 add r7, sp, #0 + 8007168: 6078 str r0, [r7, #4] UBaseType_t uxReturn; Queue_t * const pxQueue = xQueue; - 800710e: 687b ldr r3, [r7, #4] - 8007110: 617b str r3, [r7, #20] + 800716a: 687b ldr r3, [r7, #4] + 800716c: 617b str r3, [r7, #20] configASSERT( pxQueue ); - 8007112: 697b ldr r3, [r7, #20] - 8007114: 2b00 cmp r3, #0 - 8007116: d10b bne.n 8007130 + 800716e: 697b ldr r3, [r7, #20] + 8007170: 2b00 cmp r3, #0 + 8007172: d10b bne.n 800718c __asm volatile - 8007118: f04f 0350 mov.w r3, #80 @ 0x50 - 800711c: f383 8811 msr BASEPRI, r3 - 8007120: f3bf 8f6f isb sy - 8007124: f3bf 8f4f dsb sy - 8007128: 60fb str r3, [r7, #12] + 8007174: f04f 0350 mov.w r3, #80 @ 0x50 + 8007178: f383 8811 msr BASEPRI, r3 + 800717c: f3bf 8f6f isb sy + 8007180: f3bf 8f4f dsb sy + 8007184: 60fb str r3, [r7, #12] } - 800712a: bf00 nop - 800712c: bf00 nop - 800712e: e7fd b.n 800712c + 8007186: bf00 nop + 8007188: bf00 nop + 800718a: e7fd b.n 8007188 uxReturn = pxQueue->uxMessagesWaiting; - 8007130: 697b ldr r3, [r7, #20] - 8007132: 6b9b ldr r3, [r3, #56] @ 0x38 - 8007134: 613b str r3, [r7, #16] + 800718c: 697b ldr r3, [r7, #20] + 800718e: 6b9b ldr r3, [r3, #56] @ 0x38 + 8007190: 613b str r3, [r7, #16] return uxReturn; - 8007136: 693b ldr r3, [r7, #16] + 8007192: 693b ldr r3, [r7, #16] } /*lint !e818 Pointer cannot be declared const as xQueue is a typedef not pointer. */ - 8007138: 4618 mov r0, r3 - 800713a: 371c adds r7, #28 - 800713c: 46bd mov sp, r7 - 800713e: f85d 7b04 ldr.w r7, [sp], #4 - 8007142: 4770 bx lr + 8007194: 4618 mov r0, r3 + 8007196: 371c adds r7, #28 + 8007198: 46bd mov sp, r7 + 800719a: f85d 7b04 ldr.w r7, [sp], #4 + 800719e: 4770 bx lr -08007144 : +080071a0 : #endif /* configUSE_MUTEXES */ /*-----------------------------------------------------------*/ static BaseType_t prvCopyDataToQueue( Queue_t * const pxQueue, const void *pvItemToQueue, const BaseType_t xPosition ) { - 8007144: b580 push {r7, lr} - 8007146: b086 sub sp, #24 - 8007148: af00 add r7, sp, #0 - 800714a: 60f8 str r0, [r7, #12] - 800714c: 60b9 str r1, [r7, #8] - 800714e: 607a str r2, [r7, #4] + 80071a0: b580 push {r7, lr} + 80071a2: b086 sub sp, #24 + 80071a4: af00 add r7, sp, #0 + 80071a6: 60f8 str r0, [r7, #12] + 80071a8: 60b9 str r1, [r7, #8] + 80071aa: 607a str r2, [r7, #4] BaseType_t xReturn = pdFALSE; - 8007150: 2300 movs r3, #0 - 8007152: 617b str r3, [r7, #20] + 80071ac: 2300 movs r3, #0 + 80071ae: 617b str r3, [r7, #20] UBaseType_t uxMessagesWaiting; /* This function is called from a critical section. */ uxMessagesWaiting = pxQueue->uxMessagesWaiting; - 8007154: 68fb ldr r3, [r7, #12] - 8007156: 6b9b ldr r3, [r3, #56] @ 0x38 - 8007158: 613b str r3, [r7, #16] + 80071b0: 68fb ldr r3, [r7, #12] + 80071b2: 6b9b ldr r3, [r3, #56] @ 0x38 + 80071b4: 613b str r3, [r7, #16] if( pxQueue->uxItemSize == ( UBaseType_t ) 0 ) - 800715a: 68fb ldr r3, [r7, #12] - 800715c: 6c1b ldr r3, [r3, #64] @ 0x40 - 800715e: 2b00 cmp r3, #0 - 8007160: d10d bne.n 800717e + 80071b6: 68fb ldr r3, [r7, #12] + 80071b8: 6c1b ldr r3, [r3, #64] @ 0x40 + 80071ba: 2b00 cmp r3, #0 + 80071bc: d10d bne.n 80071da { #if ( configUSE_MUTEXES == 1 ) { if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) - 8007162: 68fb ldr r3, [r7, #12] - 8007164: 681b ldr r3, [r3, #0] - 8007166: 2b00 cmp r3, #0 - 8007168: d14d bne.n 8007206 + 80071be: 68fb ldr r3, [r7, #12] + 80071c0: 681b ldr r3, [r3, #0] + 80071c2: 2b00 cmp r3, #0 + 80071c4: d14d bne.n 8007262 { /* The mutex is no longer being held. */ xReturn = xTaskPriorityDisinherit( pxQueue->u.xSemaphore.xMutexHolder ); - 800716a: 68fb ldr r3, [r7, #12] - 800716c: 689b ldr r3, [r3, #8] - 800716e: 4618 mov r0, r3 - 8007170: f000 fbf2 bl 8007958 - 8007174: 6178 str r0, [r7, #20] + 80071c6: 68fb ldr r3, [r7, #12] + 80071c8: 689b ldr r3, [r3, #8] + 80071ca: 4618 mov r0, r3 + 80071cc: f000 fbf2 bl 80079b4 + 80071d0: 6178 str r0, [r7, #20] pxQueue->u.xSemaphore.xMutexHolder = NULL; - 8007176: 68fb ldr r3, [r7, #12] - 8007178: 2200 movs r2, #0 - 800717a: 609a str r2, [r3, #8] - 800717c: e043 b.n 8007206 + 80071d2: 68fb ldr r3, [r7, #12] + 80071d4: 2200 movs r2, #0 + 80071d6: 609a str r2, [r3, #8] + 80071d8: e043 b.n 8007262 mtCOVERAGE_TEST_MARKER(); } } #endif /* configUSE_MUTEXES */ } else if( xPosition == queueSEND_TO_BACK ) - 800717e: 687b ldr r3, [r7, #4] - 8007180: 2b00 cmp r3, #0 - 8007182: d119 bne.n 80071b8 + 80071da: 687b ldr r3, [r7, #4] + 80071dc: 2b00 cmp r3, #0 + 80071de: d119 bne.n 8007214 { ( void ) memcpy( ( void * ) pxQueue->pcWriteTo, pvItemToQueue, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e418 !e9087 MISRA exception as the casts are only redundant for some ports, plus previous logic ensures a null pointer can only be passed to memcpy() if the copy size is 0. Cast to void required by function signature and safe as no alignment requirement and copy length specified in bytes. */ - 8007184: 68fb ldr r3, [r7, #12] - 8007186: 6858 ldr r0, [r3, #4] - 8007188: 68fb ldr r3, [r7, #12] - 800718a: 6c1b ldr r3, [r3, #64] @ 0x40 - 800718c: 461a mov r2, r3 - 800718e: 68b9 ldr r1, [r7, #8] - 8007190: f000 feaa bl 8007ee8 + 80071e0: 68fb ldr r3, [r7, #12] + 80071e2: 6858 ldr r0, [r3, #4] + 80071e4: 68fb ldr r3, [r7, #12] + 80071e6: 6c1b ldr r3, [r3, #64] @ 0x40 + 80071e8: 461a mov r2, r3 + 80071ea: 68b9 ldr r1, [r7, #8] + 80071ec: f000 fea4 bl 8007f38 pxQueue->pcWriteTo += pxQueue->uxItemSize; /*lint !e9016 Pointer arithmetic on char types ok, especially in this use case where it is the clearest way of conveying intent. */ - 8007194: 68fb ldr r3, [r7, #12] - 8007196: 685a ldr r2, [r3, #4] - 8007198: 68fb ldr r3, [r7, #12] - 800719a: 6c1b ldr r3, [r3, #64] @ 0x40 - 800719c: 441a add r2, r3 - 800719e: 68fb ldr r3, [r7, #12] - 80071a0: 605a str r2, [r3, #4] + 80071f0: 68fb ldr r3, [r7, #12] + 80071f2: 685a ldr r2, [r3, #4] + 80071f4: 68fb ldr r3, [r7, #12] + 80071f6: 6c1b ldr r3, [r3, #64] @ 0x40 + 80071f8: 441a add r2, r3 + 80071fa: 68fb ldr r3, [r7, #12] + 80071fc: 605a str r2, [r3, #4] if( pxQueue->pcWriteTo >= pxQueue->u.xQueue.pcTail ) /*lint !e946 MISRA exception justified as comparison of pointers is the cleanest solution. */ - 80071a2: 68fb ldr r3, [r7, #12] - 80071a4: 685a ldr r2, [r3, #4] - 80071a6: 68fb ldr r3, [r7, #12] - 80071a8: 689b ldr r3, [r3, #8] - 80071aa: 429a cmp r2, r3 - 80071ac: d32b bcc.n 8007206 + 80071fe: 68fb ldr r3, [r7, #12] + 8007200: 685a ldr r2, [r3, #4] + 8007202: 68fb ldr r3, [r7, #12] + 8007204: 689b ldr r3, [r3, #8] + 8007206: 429a cmp r2, r3 + 8007208: d32b bcc.n 8007262 { pxQueue->pcWriteTo = pxQueue->pcHead; - 80071ae: 68fb ldr r3, [r7, #12] - 80071b0: 681a ldr r2, [r3, #0] - 80071b2: 68fb ldr r3, [r7, #12] - 80071b4: 605a str r2, [r3, #4] - 80071b6: e026 b.n 8007206 + 800720a: 68fb ldr r3, [r7, #12] + 800720c: 681a ldr r2, [r3, #0] + 800720e: 68fb ldr r3, [r7, #12] + 8007210: 605a str r2, [r3, #4] + 8007212: e026 b.n 8007262 mtCOVERAGE_TEST_MARKER(); } } else { ( void ) memcpy( ( void * ) pxQueue->u.xQueue.pcReadFrom, pvItemToQueue, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e9087 !e418 MISRA exception as the casts are only redundant for some ports. Cast to void required by function signature and safe as no alignment requirement and copy length specified in bytes. Assert checks null pointer only used when length is 0. */ - 80071b8: 68fb ldr r3, [r7, #12] - 80071ba: 68d8 ldr r0, [r3, #12] - 80071bc: 68fb ldr r3, [r7, #12] - 80071be: 6c1b ldr r3, [r3, #64] @ 0x40 - 80071c0: 461a mov r2, r3 - 80071c2: 68b9 ldr r1, [r7, #8] - 80071c4: f000 fe90 bl 8007ee8 + 8007214: 68fb ldr r3, [r7, #12] + 8007216: 68d8 ldr r0, [r3, #12] + 8007218: 68fb ldr r3, [r7, #12] + 800721a: 6c1b ldr r3, [r3, #64] @ 0x40 + 800721c: 461a mov r2, r3 + 800721e: 68b9 ldr r1, [r7, #8] + 8007220: f000 fe8a bl 8007f38 pxQueue->u.xQueue.pcReadFrom -= pxQueue->uxItemSize; - 80071c8: 68fb ldr r3, [r7, #12] - 80071ca: 68da ldr r2, [r3, #12] - 80071cc: 68fb ldr r3, [r7, #12] - 80071ce: 6c1b ldr r3, [r3, #64] @ 0x40 - 80071d0: 425b negs r3, r3 - 80071d2: 441a add r2, r3 - 80071d4: 68fb ldr r3, [r7, #12] - 80071d6: 60da str r2, [r3, #12] + 8007224: 68fb ldr r3, [r7, #12] + 8007226: 68da ldr r2, [r3, #12] + 8007228: 68fb ldr r3, [r7, #12] + 800722a: 6c1b ldr r3, [r3, #64] @ 0x40 + 800722c: 425b negs r3, r3 + 800722e: 441a add r2, r3 + 8007230: 68fb ldr r3, [r7, #12] + 8007232: 60da str r2, [r3, #12] if( pxQueue->u.xQueue.pcReadFrom < pxQueue->pcHead ) /*lint !e946 MISRA exception justified as comparison of pointers is the cleanest solution. */ - 80071d8: 68fb ldr r3, [r7, #12] - 80071da: 68da ldr r2, [r3, #12] - 80071dc: 68fb ldr r3, [r7, #12] - 80071de: 681b ldr r3, [r3, #0] - 80071e0: 429a cmp r2, r3 - 80071e2: d207 bcs.n 80071f4 + 8007234: 68fb ldr r3, [r7, #12] + 8007236: 68da ldr r2, [r3, #12] + 8007238: 68fb ldr r3, [r7, #12] + 800723a: 681b ldr r3, [r3, #0] + 800723c: 429a cmp r2, r3 + 800723e: d207 bcs.n 8007250 { pxQueue->u.xQueue.pcReadFrom = ( pxQueue->u.xQueue.pcTail - pxQueue->uxItemSize ); - 80071e4: 68fb ldr r3, [r7, #12] - 80071e6: 689a ldr r2, [r3, #8] - 80071e8: 68fb ldr r3, [r7, #12] - 80071ea: 6c1b ldr r3, [r3, #64] @ 0x40 - 80071ec: 425b negs r3, r3 - 80071ee: 441a add r2, r3 - 80071f0: 68fb ldr r3, [r7, #12] - 80071f2: 60da str r2, [r3, #12] + 8007240: 68fb ldr r3, [r7, #12] + 8007242: 689a ldr r2, [r3, #8] + 8007244: 68fb ldr r3, [r7, #12] + 8007246: 6c1b ldr r3, [r3, #64] @ 0x40 + 8007248: 425b negs r3, r3 + 800724a: 441a add r2, r3 + 800724c: 68fb ldr r3, [r7, #12] + 800724e: 60da str r2, [r3, #12] else { mtCOVERAGE_TEST_MARKER(); } if( xPosition == queueOVERWRITE ) - 80071f4: 687b ldr r3, [r7, #4] - 80071f6: 2b02 cmp r3, #2 - 80071f8: d105 bne.n 8007206 + 8007250: 687b ldr r3, [r7, #4] + 8007252: 2b02 cmp r3, #2 + 8007254: d105 bne.n 8007262 { if( uxMessagesWaiting > ( UBaseType_t ) 0 ) - 80071fa: 693b ldr r3, [r7, #16] - 80071fc: 2b00 cmp r3, #0 - 80071fe: d002 beq.n 8007206 + 8007256: 693b ldr r3, [r7, #16] + 8007258: 2b00 cmp r3, #0 + 800725a: d002 beq.n 8007262 { /* An item is not being added but overwritten, so subtract one from the recorded number of items in the queue so when one is added again below the number of recorded items remains correct. */ --uxMessagesWaiting; - 8007200: 693b ldr r3, [r7, #16] - 8007202: 3b01 subs r3, #1 - 8007204: 613b str r3, [r7, #16] + 800725c: 693b ldr r3, [r7, #16] + 800725e: 3b01 subs r3, #1 + 8007260: 613b str r3, [r7, #16] { mtCOVERAGE_TEST_MARKER(); } } pxQueue->uxMessagesWaiting = uxMessagesWaiting + ( UBaseType_t ) 1; - 8007206: 693b ldr r3, [r7, #16] - 8007208: 1c5a adds r2, r3, #1 - 800720a: 68fb ldr r3, [r7, #12] - 800720c: 639a str r2, [r3, #56] @ 0x38 + 8007262: 693b ldr r3, [r7, #16] + 8007264: 1c5a adds r2, r3, #1 + 8007266: 68fb ldr r3, [r7, #12] + 8007268: 639a str r2, [r3, #56] @ 0x38 return xReturn; - 800720e: 697b ldr r3, [r7, #20] + 800726a: 697b ldr r3, [r7, #20] } - 8007210: 4618 mov r0, r3 - 8007212: 3718 adds r7, #24 - 8007214: 46bd mov sp, r7 - 8007216: bd80 pop {r7, pc} + 800726c: 4618 mov r0, r3 + 800726e: 3718 adds r7, #24 + 8007270: 46bd mov sp, r7 + 8007272: bd80 pop {r7, pc} -08007218 : +08007274 : } } /*-----------------------------------------------------------*/ static void prvUnlockQueue( Queue_t * const pxQueue ) { - 8007218: b580 push {r7, lr} - 800721a: b084 sub sp, #16 - 800721c: af00 add r7, sp, #0 - 800721e: 6078 str r0, [r7, #4] + 8007274: b580 push {r7, lr} + 8007276: b084 sub sp, #16 + 8007278: af00 add r7, sp, #0 + 800727a: 6078 str r0, [r7, #4] /* The lock counts contains the number of extra data items placed or removed from the queue while the queue was locked. When a queue is locked items can be added or removed, but the event lists cannot be updated. */ taskENTER_CRITICAL(); - 8007220: f000 fca2 bl 8007b68 + 800727c: f000 fc9c bl 8007bb8 { int8_t cTxLock = pxQueue->cTxLock; - 8007224: 687b ldr r3, [r7, #4] - 8007226: f893 3045 ldrb.w r3, [r3, #69] @ 0x45 - 800722a: 73fb strb r3, [r7, #15] + 8007280: 687b ldr r3, [r7, #4] + 8007282: f893 3045 ldrb.w r3, [r3, #69] @ 0x45 + 8007286: 73fb strb r3, [r7, #15] /* See if data was added to the queue while it was locked. */ while( cTxLock > queueLOCKED_UNMODIFIED ) - 800722c: e011 b.n 8007252 + 8007288: e011 b.n 80072ae } #else /* configUSE_QUEUE_SETS */ { /* Tasks that are removed from the event list will get added to the pending ready list as the scheduler is still suspended. */ if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE ) - 800722e: 687b ldr r3, [r7, #4] - 8007230: 6a5b ldr r3, [r3, #36] @ 0x24 - 8007232: 2b00 cmp r3, #0 - 8007234: d012 beq.n 800725c + 800728a: 687b ldr r3, [r7, #4] + 800728c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800728e: 2b00 cmp r3, #0 + 8007290: d012 beq.n 80072b8 { if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) - 8007236: 687b ldr r3, [r7, #4] - 8007238: 3324 adds r3, #36 @ 0x24 - 800723a: 4618 mov r0, r3 - 800723c: f000 fa64 bl 8007708 - 8007240: 4603 mov r3, r0 - 8007242: 2b00 cmp r3, #0 - 8007244: d001 beq.n 800724a + 8007292: 687b ldr r3, [r7, #4] + 8007294: 3324 adds r3, #36 @ 0x24 + 8007296: 4618 mov r0, r3 + 8007298: f000 fa64 bl 8007764 + 800729c: 4603 mov r3, r0 + 800729e: 2b00 cmp r3, #0 + 80072a0: d001 beq.n 80072a6 { /* The task waiting has a higher priority so record that a context switch is required. */ vTaskMissedYield(); - 8007246: f000 fb3d bl 80078c4 + 80072a2: f000 fb3d bl 8007920 break; } } #endif /* configUSE_QUEUE_SETS */ --cTxLock; - 800724a: 7bfb ldrb r3, [r7, #15] - 800724c: 3b01 subs r3, #1 - 800724e: b2db uxtb r3, r3 - 8007250: 73fb strb r3, [r7, #15] + 80072a6: 7bfb ldrb r3, [r7, #15] + 80072a8: 3b01 subs r3, #1 + 80072aa: b2db uxtb r3, r3 + 80072ac: 73fb strb r3, [r7, #15] while( cTxLock > queueLOCKED_UNMODIFIED ) - 8007252: f997 300f ldrsb.w r3, [r7, #15] - 8007256: 2b00 cmp r3, #0 - 8007258: dce9 bgt.n 800722e - 800725a: e000 b.n 800725e + 80072ae: f997 300f ldrsb.w r3, [r7, #15] + 80072b2: 2b00 cmp r3, #0 + 80072b4: dce9 bgt.n 800728a + 80072b6: e000 b.n 80072ba break; - 800725c: bf00 nop + 80072b8: bf00 nop } pxQueue->cTxLock = queueUNLOCKED; - 800725e: 687b ldr r3, [r7, #4] - 8007260: 22ff movs r2, #255 @ 0xff - 8007262: f883 2045 strb.w r2, [r3, #69] @ 0x45 + 80072ba: 687b ldr r3, [r7, #4] + 80072bc: 22ff movs r2, #255 @ 0xff + 80072be: f883 2045 strb.w r2, [r3, #69] @ 0x45 } taskEXIT_CRITICAL(); - 8007266: f000 fcb1 bl 8007bcc + 80072c2: f000 fcab bl 8007c1c /* Do the same for the Rx lock. */ taskENTER_CRITICAL(); - 800726a: f000 fc7d bl 8007b68 + 80072c6: f000 fc77 bl 8007bb8 { int8_t cRxLock = pxQueue->cRxLock; - 800726e: 687b ldr r3, [r7, #4] - 8007270: f893 3044 ldrb.w r3, [r3, #68] @ 0x44 - 8007274: 73bb strb r3, [r7, #14] + 80072ca: 687b ldr r3, [r7, #4] + 80072cc: f893 3044 ldrb.w r3, [r3, #68] @ 0x44 + 80072d0: 73bb strb r3, [r7, #14] while( cRxLock > queueLOCKED_UNMODIFIED ) - 8007276: e011 b.n 800729c + 80072d2: e011 b.n 80072f8 { if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE ) - 8007278: 687b ldr r3, [r7, #4] - 800727a: 691b ldr r3, [r3, #16] - 800727c: 2b00 cmp r3, #0 - 800727e: d012 beq.n 80072a6 + 80072d4: 687b ldr r3, [r7, #4] + 80072d6: 691b ldr r3, [r3, #16] + 80072d8: 2b00 cmp r3, #0 + 80072da: d012 beq.n 8007302 { if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) - 8007280: 687b ldr r3, [r7, #4] - 8007282: 3310 adds r3, #16 - 8007284: 4618 mov r0, r3 - 8007286: f000 fa3f bl 8007708 - 800728a: 4603 mov r3, r0 - 800728c: 2b00 cmp r3, #0 - 800728e: d001 beq.n 8007294 + 80072dc: 687b ldr r3, [r7, #4] + 80072de: 3310 adds r3, #16 + 80072e0: 4618 mov r0, r3 + 80072e2: f000 fa3f bl 8007764 + 80072e6: 4603 mov r3, r0 + 80072e8: 2b00 cmp r3, #0 + 80072ea: d001 beq.n 80072f0 { vTaskMissedYield(); - 8007290: f000 fb18 bl 80078c4 + 80072ec: f000 fb18 bl 8007920 else { mtCOVERAGE_TEST_MARKER(); } --cRxLock; - 8007294: 7bbb ldrb r3, [r7, #14] - 8007296: 3b01 subs r3, #1 - 8007298: b2db uxtb r3, r3 - 800729a: 73bb strb r3, [r7, #14] + 80072f0: 7bbb ldrb r3, [r7, #14] + 80072f2: 3b01 subs r3, #1 + 80072f4: b2db uxtb r3, r3 + 80072f6: 73bb strb r3, [r7, #14] while( cRxLock > queueLOCKED_UNMODIFIED ) - 800729c: f997 300e ldrsb.w r3, [r7, #14] - 80072a0: 2b00 cmp r3, #0 - 80072a2: dce9 bgt.n 8007278 - 80072a4: e000 b.n 80072a8 + 80072f8: f997 300e ldrsb.w r3, [r7, #14] + 80072fc: 2b00 cmp r3, #0 + 80072fe: dce9 bgt.n 80072d4 + 8007300: e000 b.n 8007304 } else { break; - 80072a6: bf00 nop + 8007302: bf00 nop } } pxQueue->cRxLock = queueUNLOCKED; - 80072a8: 687b ldr r3, [r7, #4] - 80072aa: 22ff movs r2, #255 @ 0xff - 80072ac: f883 2044 strb.w r2, [r3, #68] @ 0x44 + 8007304: 687b ldr r3, [r7, #4] + 8007306: 22ff movs r2, #255 @ 0xff + 8007308: f883 2044 strb.w r2, [r3, #68] @ 0x44 } taskEXIT_CRITICAL(); - 80072b0: f000 fc8c bl 8007bcc + 800730c: f000 fc86 bl 8007c1c } - 80072b4: bf00 nop - 80072b6: 3710 adds r7, #16 - 80072b8: 46bd mov sp, r7 - 80072ba: bd80 pop {r7, pc} + 8007310: bf00 nop + 8007312: 3710 adds r7, #16 + 8007314: 46bd mov sp, r7 + 8007316: bd80 pop {r7, pc} -080072bc : +08007318 : return xReturn; } /*lint !e818 xQueue could not be pointer to const because it is a typedef. */ /*-----------------------------------------------------------*/ static BaseType_t prvIsQueueFull( const Queue_t *pxQueue ) { - 80072bc: b580 push {r7, lr} - 80072be: b084 sub sp, #16 - 80072c0: af00 add r7, sp, #0 - 80072c2: 6078 str r0, [r7, #4] + 8007318: b580 push {r7, lr} + 800731a: b084 sub sp, #16 + 800731c: af00 add r7, sp, #0 + 800731e: 6078 str r0, [r7, #4] BaseType_t xReturn; taskENTER_CRITICAL(); - 80072c4: f000 fc50 bl 8007b68 + 8007320: f000 fc4a bl 8007bb8 { if( pxQueue->uxMessagesWaiting == pxQueue->uxLength ) - 80072c8: 687b ldr r3, [r7, #4] - 80072ca: 6b9a ldr r2, [r3, #56] @ 0x38 - 80072cc: 687b ldr r3, [r7, #4] - 80072ce: 6bdb ldr r3, [r3, #60] @ 0x3c - 80072d0: 429a cmp r2, r3 - 80072d2: d102 bne.n 80072da + 8007324: 687b ldr r3, [r7, #4] + 8007326: 6b9a ldr r2, [r3, #56] @ 0x38 + 8007328: 687b ldr r3, [r7, #4] + 800732a: 6bdb ldr r3, [r3, #60] @ 0x3c + 800732c: 429a cmp r2, r3 + 800732e: d102 bne.n 8007336 { xReturn = pdTRUE; - 80072d4: 2301 movs r3, #1 - 80072d6: 60fb str r3, [r7, #12] - 80072d8: e001 b.n 80072de + 8007330: 2301 movs r3, #1 + 8007332: 60fb str r3, [r7, #12] + 8007334: e001 b.n 800733a } else { xReturn = pdFALSE; - 80072da: 2300 movs r3, #0 - 80072dc: 60fb str r3, [r7, #12] + 8007336: 2300 movs r3, #0 + 8007338: 60fb str r3, [r7, #12] } } taskEXIT_CRITICAL(); - 80072de: f000 fc75 bl 8007bcc + 800733a: f000 fc6f bl 8007c1c return xReturn; - 80072e2: 68fb ldr r3, [r7, #12] + 800733e: 68fb ldr r3, [r7, #12] } - 80072e4: 4618 mov r0, r3 - 80072e6: 3710 adds r7, #16 - 80072e8: 46bd mov sp, r7 - 80072ea: bd80 pop {r7, pc} + 8007340: 4618 mov r0, r3 + 8007342: 3710 adds r7, #16 + 8007344: 46bd mov sp, r7 + 8007346: bd80 pop {r7, pc} -080072ec : +08007348 : vPortEndScheduler(); } /*----------------------------------------------------------*/ void vTaskSuspendAll( void ) { - 80072ec: b480 push {r7} - 80072ee: af00 add r7, sp, #0 + 8007348: b480 push {r7} + 800734a: af00 add r7, sp, #0 do not otherwise exhibit real time behaviour. */ portSOFTWARE_BARRIER(); /* The scheduler is suspended if uxSchedulerSuspended is non-zero. An increment is used to allow calls to vTaskSuspendAll() to nest. */ ++uxSchedulerSuspended; - 80072f0: 4b04 ldr r3, [pc, #16] @ (8007304 ) - 80072f2: 681b ldr r3, [r3, #0] - 80072f4: 3301 adds r3, #1 - 80072f6: 4a03 ldr r2, [pc, #12] @ (8007304 ) - 80072f8: 6013 str r3, [r2, #0] + 800734c: 4b04 ldr r3, [pc, #16] @ (8007360 ) + 800734e: 681b ldr r3, [r3, #0] + 8007350: 3301 adds r3, #1 + 8007352: 4a03 ldr r2, [pc, #12] @ (8007360 ) + 8007354: 6013 str r3, [r2, #0] /* Enforces ordering for ports and optimised compilers that may otherwise place the above increment elsewhere. */ portMEMORY_BARRIER(); } - 80072fa: bf00 nop - 80072fc: 46bd mov sp, r7 - 80072fe: f85d 7b04 ldr.w r7, [sp], #4 - 8007302: 4770 bx lr - 8007304: 200003bc .word 0x200003bc + 8007356: bf00 nop + 8007358: 46bd mov sp, r7 + 800735a: f85d 7b04 ldr.w r7, [sp], #4 + 800735e: 4770 bx lr + 8007360: 200003c8 .word 0x200003c8 -08007308 : +08007364 : #endif /* configUSE_TICKLESS_IDLE */ /*----------------------------------------------------------*/ BaseType_t xTaskResumeAll( void ) { - 8007308: b580 push {r7, lr} - 800730a: b084 sub sp, #16 - 800730c: af00 add r7, sp, #0 + 8007364: b580 push {r7, lr} + 8007366: b084 sub sp, #16 + 8007368: af00 add r7, sp, #0 TCB_t *pxTCB = NULL; - 800730e: 2300 movs r3, #0 - 8007310: 60fb str r3, [r7, #12] + 800736a: 2300 movs r3, #0 + 800736c: 60fb str r3, [r7, #12] BaseType_t xAlreadyYielded = pdFALSE; - 8007312: 2300 movs r3, #0 - 8007314: 60bb str r3, [r7, #8] + 800736e: 2300 movs r3, #0 + 8007370: 60bb str r3, [r7, #8] /* If uxSchedulerSuspended is zero then this function does not match a previous call to vTaskSuspendAll(). */ configASSERT( uxSchedulerSuspended ); - 8007316: 4b42 ldr r3, [pc, #264] @ (8007420 ) - 8007318: 681b ldr r3, [r3, #0] - 800731a: 2b00 cmp r3, #0 - 800731c: d10b bne.n 8007336 + 8007372: 4b42 ldr r3, [pc, #264] @ (800747c ) + 8007374: 681b ldr r3, [r3, #0] + 8007376: 2b00 cmp r3, #0 + 8007378: d10b bne.n 8007392 __asm volatile - 800731e: f04f 0350 mov.w r3, #80 @ 0x50 - 8007322: f383 8811 msr BASEPRI, r3 - 8007326: f3bf 8f6f isb sy - 800732a: f3bf 8f4f dsb sy - 800732e: 603b str r3, [r7, #0] + 800737a: f04f 0350 mov.w r3, #80 @ 0x50 + 800737e: f383 8811 msr BASEPRI, r3 + 8007382: f3bf 8f6f isb sy + 8007386: f3bf 8f4f dsb sy + 800738a: 603b str r3, [r7, #0] } - 8007330: bf00 nop - 8007332: bf00 nop - 8007334: e7fd b.n 8007332 + 800738c: bf00 nop + 800738e: bf00 nop + 8007390: e7fd b.n 800738e /* It is possible that an ISR caused a task to be removed from an event list while the scheduler was suspended. If this was the case then the removed task will have been added to the xPendingReadyList. Once the scheduler has been resumed it is safe to move all the pending ready tasks from this list into their appropriate ready list. */ taskENTER_CRITICAL(); - 8007336: f000 fc17 bl 8007b68 + 8007392: f000 fc11 bl 8007bb8 { --uxSchedulerSuspended; - 800733a: 4b39 ldr r3, [pc, #228] @ (8007420 ) - 800733c: 681b ldr r3, [r3, #0] - 800733e: 3b01 subs r3, #1 - 8007340: 4a37 ldr r2, [pc, #220] @ (8007420 ) - 8007342: 6013 str r3, [r2, #0] + 8007396: 4b39 ldr r3, [pc, #228] @ (800747c ) + 8007398: 681b ldr r3, [r3, #0] + 800739a: 3b01 subs r3, #1 + 800739c: 4a37 ldr r2, [pc, #220] @ (800747c ) + 800739e: 6013 str r3, [r2, #0] if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) - 8007344: 4b36 ldr r3, [pc, #216] @ (8007420 ) - 8007346: 681b ldr r3, [r3, #0] - 8007348: 2b00 cmp r3, #0 - 800734a: d161 bne.n 8007410 + 80073a0: 4b36 ldr r3, [pc, #216] @ (800747c ) + 80073a2: 681b ldr r3, [r3, #0] + 80073a4: 2b00 cmp r3, #0 + 80073a6: d161 bne.n 800746c { if( uxCurrentNumberOfTasks > ( UBaseType_t ) 0U ) - 800734c: 4b35 ldr r3, [pc, #212] @ (8007424 ) - 800734e: 681b ldr r3, [r3, #0] - 8007350: 2b00 cmp r3, #0 - 8007352: d05d beq.n 8007410 + 80073a8: 4b35 ldr r3, [pc, #212] @ (8007480 ) + 80073aa: 681b ldr r3, [r3, #0] + 80073ac: 2b00 cmp r3, #0 + 80073ae: d05d beq.n 800746c { /* Move any readied tasks from the pending list into the appropriate ready list. */ while( listLIST_IS_EMPTY( &xPendingReadyList ) == pdFALSE ) - 8007354: e02e b.n 80073b4 + 80073b0: e02e b.n 8007410 { pxTCB = listGET_OWNER_OF_HEAD_ENTRY( ( &xPendingReadyList ) ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ - 8007356: 4b34 ldr r3, [pc, #208] @ (8007428 ) - 8007358: 68db ldr r3, [r3, #12] - 800735a: 68db ldr r3, [r3, #12] - 800735c: 60fb str r3, [r7, #12] + 80073b2: 4b34 ldr r3, [pc, #208] @ (8007484 ) + 80073b4: 68db ldr r3, [r3, #12] + 80073b6: 68db ldr r3, [r3, #12] + 80073b8: 60fb str r3, [r7, #12] ( void ) uxListRemove( &( pxTCB->xEventListItem ) ); - 800735e: 68fb ldr r3, [r7, #12] - 8007360: 3318 adds r3, #24 - 8007362: 4618 mov r0, r3 - 8007364: f7ff fce5 bl 8006d32 + 80073ba: 68fb ldr r3, [r7, #12] + 80073bc: 3318 adds r3, #24 + 80073be: 4618 mov r0, r3 + 80073c0: f7ff fce5 bl 8006d8e ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); - 8007368: 68fb ldr r3, [r7, #12] - 800736a: 3304 adds r3, #4 - 800736c: 4618 mov r0, r3 - 800736e: f7ff fce0 bl 8006d32 + 80073c4: 68fb ldr r3, [r7, #12] + 80073c6: 3304 adds r3, #4 + 80073c8: 4618 mov r0, r3 + 80073ca: f7ff fce0 bl 8006d8e prvAddTaskToReadyList( pxTCB ); - 8007372: 68fb ldr r3, [r7, #12] - 8007374: 6adb ldr r3, [r3, #44] @ 0x2c - 8007376: 2201 movs r2, #1 - 8007378: 409a lsls r2, r3 - 800737a: 4b2c ldr r3, [pc, #176] @ (800742c ) - 800737c: 681b ldr r3, [r3, #0] - 800737e: 4313 orrs r3, r2 - 8007380: 4a2a ldr r2, [pc, #168] @ (800742c ) - 8007382: 6013 str r3, [r2, #0] - 8007384: 68fb ldr r3, [r7, #12] - 8007386: 6ada ldr r2, [r3, #44] @ 0x2c - 8007388: 4613 mov r3, r2 - 800738a: 009b lsls r3, r3, #2 - 800738c: 4413 add r3, r2 - 800738e: 009b lsls r3, r3, #2 - 8007390: 4a27 ldr r2, [pc, #156] @ (8007430 ) - 8007392: 441a add r2, r3 - 8007394: 68fb ldr r3, [r7, #12] - 8007396: 3304 adds r3, #4 - 8007398: 4619 mov r1, r3 - 800739a: 4610 mov r0, r2 - 800739c: f7ff fc6c bl 8006c78 + 80073ce: 68fb ldr r3, [r7, #12] + 80073d0: 6adb ldr r3, [r3, #44] @ 0x2c + 80073d2: 2201 movs r2, #1 + 80073d4: 409a lsls r2, r3 + 80073d6: 4b2c ldr r3, [pc, #176] @ (8007488 ) + 80073d8: 681b ldr r3, [r3, #0] + 80073da: 4313 orrs r3, r2 + 80073dc: 4a2a ldr r2, [pc, #168] @ (8007488 ) + 80073de: 6013 str r3, [r2, #0] + 80073e0: 68fb ldr r3, [r7, #12] + 80073e2: 6ada ldr r2, [r3, #44] @ 0x2c + 80073e4: 4613 mov r3, r2 + 80073e6: 009b lsls r3, r3, #2 + 80073e8: 4413 add r3, r2 + 80073ea: 009b lsls r3, r3, #2 + 80073ec: 4a27 ldr r2, [pc, #156] @ (800748c ) + 80073ee: 441a add r2, r3 + 80073f0: 68fb ldr r3, [r7, #12] + 80073f2: 3304 adds r3, #4 + 80073f4: 4619 mov r1, r3 + 80073f6: 4610 mov r0, r2 + 80073f8: f7ff fc6c bl 8006cd4 /* If the moved task has a priority higher than the current task then a yield must be performed. */ if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority ) - 80073a0: 68fb ldr r3, [r7, #12] - 80073a2: 6ada ldr r2, [r3, #44] @ 0x2c - 80073a4: 4b23 ldr r3, [pc, #140] @ (8007434 ) - 80073a6: 681b ldr r3, [r3, #0] - 80073a8: 6adb ldr r3, [r3, #44] @ 0x2c - 80073aa: 429a cmp r2, r3 - 80073ac: d302 bcc.n 80073b4 + 80073fc: 68fb ldr r3, [r7, #12] + 80073fe: 6ada ldr r2, [r3, #44] @ 0x2c + 8007400: 4b23 ldr r3, [pc, #140] @ (8007490 ) + 8007402: 681b ldr r3, [r3, #0] + 8007404: 6adb ldr r3, [r3, #44] @ 0x2c + 8007406: 429a cmp r2, r3 + 8007408: d302 bcc.n 8007410 { xYieldPending = pdTRUE; - 80073ae: 4b22 ldr r3, [pc, #136] @ (8007438 ) - 80073b0: 2201 movs r2, #1 - 80073b2: 601a str r2, [r3, #0] + 800740a: 4b22 ldr r3, [pc, #136] @ (8007494 ) + 800740c: 2201 movs r2, #1 + 800740e: 601a str r2, [r3, #0] while( listLIST_IS_EMPTY( &xPendingReadyList ) == pdFALSE ) - 80073b4: 4b1c ldr r3, [pc, #112] @ (8007428 ) - 80073b6: 681b ldr r3, [r3, #0] - 80073b8: 2b00 cmp r3, #0 - 80073ba: d1cc bne.n 8007356 + 8007410: 4b1c ldr r3, [pc, #112] @ (8007484 ) + 8007412: 681b ldr r3, [r3, #0] + 8007414: 2b00 cmp r3, #0 + 8007416: d1cc bne.n 80073b2 { mtCOVERAGE_TEST_MARKER(); } } if( pxTCB != NULL ) - 80073bc: 68fb ldr r3, [r7, #12] - 80073be: 2b00 cmp r3, #0 - 80073c0: d001 beq.n 80073c6 + 8007418: 68fb ldr r3, [r7, #12] + 800741a: 2b00 cmp r3, #0 + 800741c: d001 beq.n 8007422 which may have prevented the next unblock time from being re-calculated, in which case re-calculate it now. Mainly important for low power tickless implementations, where this can prevent an unnecessary exit from low power state. */ prvResetNextTaskUnblockTime(); - 80073c2: f000 fa8b bl 80078dc + 800741e: f000 fa8b bl 8007938 /* If any ticks occurred while the scheduler was suspended then they should be processed now. This ensures the tick count does not slip, and that any delayed tasks are resumed at the correct time. */ { TickType_t xPendedCounts = xPendedTicks; /* Non-volatile copy. */ - 80073c6: 4b1d ldr r3, [pc, #116] @ (800743c ) - 80073c8: 681b ldr r3, [r3, #0] - 80073ca: 607b str r3, [r7, #4] + 8007422: 4b1d ldr r3, [pc, #116] @ (8007498 ) + 8007424: 681b ldr r3, [r3, #0] + 8007426: 607b str r3, [r7, #4] if( xPendedCounts > ( TickType_t ) 0U ) - 80073cc: 687b ldr r3, [r7, #4] - 80073ce: 2b00 cmp r3, #0 - 80073d0: d010 beq.n 80073f4 + 8007428: 687b ldr r3, [r7, #4] + 800742a: 2b00 cmp r3, #0 + 800742c: d010 beq.n 8007450 { do { if( xTaskIncrementTick() != pdFALSE ) - 80073d2: f000 f837 bl 8007444 - 80073d6: 4603 mov r3, r0 - 80073d8: 2b00 cmp r3, #0 - 80073da: d002 beq.n 80073e2 + 800742e: f000 f837 bl 80074a0 + 8007432: 4603 mov r3, r0 + 8007434: 2b00 cmp r3, #0 + 8007436: d002 beq.n 800743e { xYieldPending = pdTRUE; - 80073dc: 4b16 ldr r3, [pc, #88] @ (8007438 ) - 80073de: 2201 movs r2, #1 - 80073e0: 601a str r2, [r3, #0] + 8007438: 4b16 ldr r3, [pc, #88] @ (8007494 ) + 800743a: 2201 movs r2, #1 + 800743c: 601a str r2, [r3, #0] } else { mtCOVERAGE_TEST_MARKER(); } --xPendedCounts; - 80073e2: 687b ldr r3, [r7, #4] - 80073e4: 3b01 subs r3, #1 - 80073e6: 607b str r3, [r7, #4] + 800743e: 687b ldr r3, [r7, #4] + 8007440: 3b01 subs r3, #1 + 8007442: 607b str r3, [r7, #4] } while( xPendedCounts > ( TickType_t ) 0U ); - 80073e8: 687b ldr r3, [r7, #4] - 80073ea: 2b00 cmp r3, #0 - 80073ec: d1f1 bne.n 80073d2 + 8007444: 687b ldr r3, [r7, #4] + 8007446: 2b00 cmp r3, #0 + 8007448: d1f1 bne.n 800742e xPendedTicks = 0; - 80073ee: 4b13 ldr r3, [pc, #76] @ (800743c ) - 80073f0: 2200 movs r2, #0 - 80073f2: 601a str r2, [r3, #0] + 800744a: 4b13 ldr r3, [pc, #76] @ (8007498 ) + 800744c: 2200 movs r2, #0 + 800744e: 601a str r2, [r3, #0] { mtCOVERAGE_TEST_MARKER(); } } if( xYieldPending != pdFALSE ) - 80073f4: 4b10 ldr r3, [pc, #64] @ (8007438 ) - 80073f6: 681b ldr r3, [r3, #0] - 80073f8: 2b00 cmp r3, #0 - 80073fa: d009 beq.n 8007410 + 8007450: 4b10 ldr r3, [pc, #64] @ (8007494 ) + 8007452: 681b ldr r3, [r3, #0] + 8007454: 2b00 cmp r3, #0 + 8007456: d009 beq.n 800746c { #if( configUSE_PREEMPTION != 0 ) { xAlreadyYielded = pdTRUE; - 80073fc: 2301 movs r3, #1 - 80073fe: 60bb str r3, [r7, #8] + 8007458: 2301 movs r3, #1 + 800745a: 60bb str r3, [r7, #8] } #endif taskYIELD_IF_USING_PREEMPTION(); - 8007400: 4b0f ldr r3, [pc, #60] @ (8007440 ) - 8007402: f04f 5280 mov.w r2, #268435456 @ 0x10000000 - 8007406: 601a str r2, [r3, #0] - 8007408: f3bf 8f4f dsb sy - 800740c: f3bf 8f6f isb sy + 800745c: 4b0f ldr r3, [pc, #60] @ (800749c ) + 800745e: f04f 5280 mov.w r2, #268435456 @ 0x10000000 + 8007462: 601a str r2, [r3, #0] + 8007464: f3bf 8f4f dsb sy + 8007468: f3bf 8f6f isb sy else { mtCOVERAGE_TEST_MARKER(); } } taskEXIT_CRITICAL(); - 8007410: f000 fbdc bl 8007bcc + 800746c: f000 fbd6 bl 8007c1c return xAlreadyYielded; - 8007414: 68bb ldr r3, [r7, #8] + 8007470: 68bb ldr r3, [r7, #8] } - 8007416: 4618 mov r0, r3 - 8007418: 3710 adds r7, #16 - 800741a: 46bd mov sp, r7 - 800741c: bd80 pop {r7, pc} - 800741e: bf00 nop - 8007420: 200003bc .word 0x200003bc - 8007424: 2000039c .word 0x2000039c - 8007428: 20000374 .word 0x20000374 - 800742c: 200003a4 .word 0x200003a4 - 8007430: 200002e0 .word 0x200002e0 - 8007434: 200002dc .word 0x200002dc - 8007438: 200003b0 .word 0x200003b0 - 800743c: 200003ac .word 0x200003ac - 8007440: e000ed04 .word 0xe000ed04 + 8007472: 4618 mov r0, r3 + 8007474: 3710 adds r7, #16 + 8007476: 46bd mov sp, r7 + 8007478: bd80 pop {r7, pc} + 800747a: bf00 nop + 800747c: 200003c8 .word 0x200003c8 + 8007480: 200003a8 .word 0x200003a8 + 8007484: 20000380 .word 0x20000380 + 8007488: 200003b0 .word 0x200003b0 + 800748c: 200002ec .word 0x200002ec + 8007490: 200002e8 .word 0x200002e8 + 8007494: 200003bc .word 0x200003bc + 8007498: 200003b8 .word 0x200003b8 + 800749c: e000ed04 .word 0xe000ed04 -08007444 : +080074a0 : #endif /* INCLUDE_xTaskAbortDelay */ /*----------------------------------------------------------*/ BaseType_t xTaskIncrementTick( void ) { - 8007444: b580 push {r7, lr} - 8007446: b086 sub sp, #24 - 8007448: af00 add r7, sp, #0 + 80074a0: b580 push {r7, lr} + 80074a2: b086 sub sp, #24 + 80074a4: af00 add r7, sp, #0 TCB_t * pxTCB; TickType_t xItemValue; BaseType_t xSwitchRequired = pdFALSE; - 800744a: 2300 movs r3, #0 - 800744c: 617b str r3, [r7, #20] + 80074a6: 2300 movs r3, #0 + 80074a8: 617b str r3, [r7, #20] /* Called by the portable layer each time a tick interrupt occurs. Increments the tick then checks to see if the new tick value will cause any tasks to be unblocked. */ traceTASK_INCREMENT_TICK( xTickCount ); if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) - 800744e: 4b4f ldr r3, [pc, #316] @ (800758c ) - 8007450: 681b ldr r3, [r3, #0] - 8007452: 2b00 cmp r3, #0 - 8007454: f040 808f bne.w 8007576 + 80074aa: 4b4f ldr r3, [pc, #316] @ (80075e8 ) + 80074ac: 681b ldr r3, [r3, #0] + 80074ae: 2b00 cmp r3, #0 + 80074b0: f040 808f bne.w 80075d2 { /* Minor optimisation. The tick count cannot change in this block. */ const TickType_t xConstTickCount = xTickCount + ( TickType_t ) 1; - 8007458: 4b4d ldr r3, [pc, #308] @ (8007590 ) - 800745a: 681b ldr r3, [r3, #0] - 800745c: 3301 adds r3, #1 - 800745e: 613b str r3, [r7, #16] + 80074b4: 4b4d ldr r3, [pc, #308] @ (80075ec ) + 80074b6: 681b ldr r3, [r3, #0] + 80074b8: 3301 adds r3, #1 + 80074ba: 613b str r3, [r7, #16] /* Increment the RTOS tick, switching the delayed and overflowed delayed lists if it wraps to 0. */ xTickCount = xConstTickCount; - 8007460: 4a4b ldr r2, [pc, #300] @ (8007590 ) - 8007462: 693b ldr r3, [r7, #16] - 8007464: 6013 str r3, [r2, #0] + 80074bc: 4a4b ldr r2, [pc, #300] @ (80075ec ) + 80074be: 693b ldr r3, [r7, #16] + 80074c0: 6013 str r3, [r2, #0] if( xConstTickCount == ( TickType_t ) 0U ) /*lint !e774 'if' does not always evaluate to false as it is looking for an overflow. */ - 8007466: 693b ldr r3, [r7, #16] - 8007468: 2b00 cmp r3, #0 - 800746a: d121 bne.n 80074b0 + 80074c2: 693b ldr r3, [r7, #16] + 80074c4: 2b00 cmp r3, #0 + 80074c6: d121 bne.n 800750c { taskSWITCH_DELAYED_LISTS(); - 800746c: 4b49 ldr r3, [pc, #292] @ (8007594 ) - 800746e: 681b ldr r3, [r3, #0] - 8007470: 681b ldr r3, [r3, #0] - 8007472: 2b00 cmp r3, #0 - 8007474: d00b beq.n 800748e + 80074c8: 4b49 ldr r3, [pc, #292] @ (80075f0 ) + 80074ca: 681b ldr r3, [r3, #0] + 80074cc: 681b ldr r3, [r3, #0] + 80074ce: 2b00 cmp r3, #0 + 80074d0: d00b beq.n 80074ea __asm volatile - 8007476: f04f 0350 mov.w r3, #80 @ 0x50 - 800747a: f383 8811 msr BASEPRI, r3 - 800747e: f3bf 8f6f isb sy - 8007482: f3bf 8f4f dsb sy - 8007486: 603b str r3, [r7, #0] + 80074d2: f04f 0350 mov.w r3, #80 @ 0x50 + 80074d6: f383 8811 msr BASEPRI, r3 + 80074da: f3bf 8f6f isb sy + 80074de: f3bf 8f4f dsb sy + 80074e2: 603b str r3, [r7, #0] } - 8007488: bf00 nop - 800748a: bf00 nop - 800748c: e7fd b.n 800748a - 800748e: 4b41 ldr r3, [pc, #260] @ (8007594 ) - 8007490: 681b ldr r3, [r3, #0] - 8007492: 60fb str r3, [r7, #12] - 8007494: 4b40 ldr r3, [pc, #256] @ (8007598 ) - 8007496: 681b ldr r3, [r3, #0] - 8007498: 4a3e ldr r2, [pc, #248] @ (8007594 ) - 800749a: 6013 str r3, [r2, #0] - 800749c: 4a3e ldr r2, [pc, #248] @ (8007598 ) - 800749e: 68fb ldr r3, [r7, #12] - 80074a0: 6013 str r3, [r2, #0] - 80074a2: 4b3e ldr r3, [pc, #248] @ (800759c ) - 80074a4: 681b ldr r3, [r3, #0] - 80074a6: 3301 adds r3, #1 - 80074a8: 4a3c ldr r2, [pc, #240] @ (800759c ) - 80074aa: 6013 str r3, [r2, #0] - 80074ac: f000 fa16 bl 80078dc + 80074e4: bf00 nop + 80074e6: bf00 nop + 80074e8: e7fd b.n 80074e6 + 80074ea: 4b41 ldr r3, [pc, #260] @ (80075f0 ) + 80074ec: 681b ldr r3, [r3, #0] + 80074ee: 60fb str r3, [r7, #12] + 80074f0: 4b40 ldr r3, [pc, #256] @ (80075f4 ) + 80074f2: 681b ldr r3, [r3, #0] + 80074f4: 4a3e ldr r2, [pc, #248] @ (80075f0 ) + 80074f6: 6013 str r3, [r2, #0] + 80074f8: 4a3e ldr r2, [pc, #248] @ (80075f4 ) + 80074fa: 68fb ldr r3, [r7, #12] + 80074fc: 6013 str r3, [r2, #0] + 80074fe: 4b3e ldr r3, [pc, #248] @ (80075f8 ) + 8007500: 681b ldr r3, [r3, #0] + 8007502: 3301 adds r3, #1 + 8007504: 4a3c ldr r2, [pc, #240] @ (80075f8 ) + 8007506: 6013 str r3, [r2, #0] + 8007508: f000 fa16 bl 8007938 /* See if this tick has made a timeout expire. Tasks are stored in the queue in the order of their wake time - meaning once one task has been found whose block time has not expired there is no need to look any further down the list. */ if( xConstTickCount >= xNextTaskUnblockTime ) - 80074b0: 4b3b ldr r3, [pc, #236] @ (80075a0 ) - 80074b2: 681b ldr r3, [r3, #0] - 80074b4: 693a ldr r2, [r7, #16] - 80074b6: 429a cmp r2, r3 - 80074b8: d348 bcc.n 800754c + 800750c: 4b3b ldr r3, [pc, #236] @ (80075fc ) + 800750e: 681b ldr r3, [r3, #0] + 8007510: 693a ldr r2, [r7, #16] + 8007512: 429a cmp r2, r3 + 8007514: d348 bcc.n 80075a8 { for( ;; ) { if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE ) - 80074ba: 4b36 ldr r3, [pc, #216] @ (8007594 ) - 80074bc: 681b ldr r3, [r3, #0] - 80074be: 681b ldr r3, [r3, #0] - 80074c0: 2b00 cmp r3, #0 - 80074c2: d104 bne.n 80074ce + 8007516: 4b36 ldr r3, [pc, #216] @ (80075f0 ) + 8007518: 681b ldr r3, [r3, #0] + 800751a: 681b ldr r3, [r3, #0] + 800751c: 2b00 cmp r3, #0 + 800751e: d104 bne.n 800752a /* The delayed list is empty. Set xNextTaskUnblockTime to the maximum possible value so it is extremely unlikely that the if( xTickCount >= xNextTaskUnblockTime ) test will pass next time through. */ xNextTaskUnblockTime = portMAX_DELAY; /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ - 80074c4: 4b36 ldr r3, [pc, #216] @ (80075a0 ) - 80074c6: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff - 80074ca: 601a str r2, [r3, #0] + 8007520: 4b36 ldr r3, [pc, #216] @ (80075fc ) + 8007522: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 8007526: 601a str r2, [r3, #0] break; - 80074cc: e03e b.n 800754c + 8007528: e03e b.n 80075a8 { /* The delayed list is not empty, get the value of the item at the head of the delayed list. This is the time at which the task at the head of the delayed list must be removed from the Blocked state. */ pxTCB = listGET_OWNER_OF_HEAD_ENTRY( pxDelayedTaskList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ - 80074ce: 4b31 ldr r3, [pc, #196] @ (8007594 ) - 80074d0: 681b ldr r3, [r3, #0] - 80074d2: 68db ldr r3, [r3, #12] - 80074d4: 68db ldr r3, [r3, #12] - 80074d6: 60bb str r3, [r7, #8] + 800752a: 4b31 ldr r3, [pc, #196] @ (80075f0 ) + 800752c: 681b ldr r3, [r3, #0] + 800752e: 68db ldr r3, [r3, #12] + 8007530: 68db ldr r3, [r3, #12] + 8007532: 60bb str r3, [r7, #8] xItemValue = listGET_LIST_ITEM_VALUE( &( pxTCB->xStateListItem ) ); - 80074d8: 68bb ldr r3, [r7, #8] - 80074da: 685b ldr r3, [r3, #4] - 80074dc: 607b str r3, [r7, #4] + 8007534: 68bb ldr r3, [r7, #8] + 8007536: 685b ldr r3, [r3, #4] + 8007538: 607b str r3, [r7, #4] if( xConstTickCount < xItemValue ) - 80074de: 693a ldr r2, [r7, #16] - 80074e0: 687b ldr r3, [r7, #4] - 80074e2: 429a cmp r2, r3 - 80074e4: d203 bcs.n 80074ee + 800753a: 693a ldr r2, [r7, #16] + 800753c: 687b ldr r3, [r7, #4] + 800753e: 429a cmp r2, r3 + 8007540: d203 bcs.n 800754a /* It is not time to unblock this item yet, but the item value is the time at which the task at the head of the blocked list must be removed from the Blocked state - so record the item value in xNextTaskUnblockTime. */ xNextTaskUnblockTime = xItemValue; - 80074e6: 4a2e ldr r2, [pc, #184] @ (80075a0 ) - 80074e8: 687b ldr r3, [r7, #4] - 80074ea: 6013 str r3, [r2, #0] + 8007542: 4a2e ldr r2, [pc, #184] @ (80075fc ) + 8007544: 687b ldr r3, [r7, #4] + 8007546: 6013 str r3, [r2, #0] break; /*lint !e9011 Code structure here is deedmed easier to understand with multiple breaks. */ - 80074ec: e02e b.n 800754c + 8007548: e02e b.n 80075a8 { mtCOVERAGE_TEST_MARKER(); } /* It is time to remove the item from the Blocked state. */ ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); - 80074ee: 68bb ldr r3, [r7, #8] - 80074f0: 3304 adds r3, #4 - 80074f2: 4618 mov r0, r3 - 80074f4: f7ff fc1d bl 8006d32 + 800754a: 68bb ldr r3, [r7, #8] + 800754c: 3304 adds r3, #4 + 800754e: 4618 mov r0, r3 + 8007550: f7ff fc1d bl 8006d8e /* Is the task waiting on an event also? If so remove it from the event list. */ if( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL ) - 80074f8: 68bb ldr r3, [r7, #8] - 80074fa: 6a9b ldr r3, [r3, #40] @ 0x28 - 80074fc: 2b00 cmp r3, #0 - 80074fe: d004 beq.n 800750a + 8007554: 68bb ldr r3, [r7, #8] + 8007556: 6a9b ldr r3, [r3, #40] @ 0x28 + 8007558: 2b00 cmp r3, #0 + 800755a: d004 beq.n 8007566 { ( void ) uxListRemove( &( pxTCB->xEventListItem ) ); - 8007500: 68bb ldr r3, [r7, #8] - 8007502: 3318 adds r3, #24 - 8007504: 4618 mov r0, r3 - 8007506: f7ff fc14 bl 8006d32 + 800755c: 68bb ldr r3, [r7, #8] + 800755e: 3318 adds r3, #24 + 8007560: 4618 mov r0, r3 + 8007562: f7ff fc14 bl 8006d8e mtCOVERAGE_TEST_MARKER(); } /* Place the unblocked task into the appropriate ready list. */ prvAddTaskToReadyList( pxTCB ); - 800750a: 68bb ldr r3, [r7, #8] - 800750c: 6adb ldr r3, [r3, #44] @ 0x2c - 800750e: 2201 movs r2, #1 - 8007510: 409a lsls r2, r3 - 8007512: 4b24 ldr r3, [pc, #144] @ (80075a4 ) - 8007514: 681b ldr r3, [r3, #0] - 8007516: 4313 orrs r3, r2 - 8007518: 4a22 ldr r2, [pc, #136] @ (80075a4 ) - 800751a: 6013 str r3, [r2, #0] - 800751c: 68bb ldr r3, [r7, #8] - 800751e: 6ada ldr r2, [r3, #44] @ 0x2c - 8007520: 4613 mov r3, r2 - 8007522: 009b lsls r3, r3, #2 - 8007524: 4413 add r3, r2 - 8007526: 009b lsls r3, r3, #2 - 8007528: 4a1f ldr r2, [pc, #124] @ (80075a8 ) - 800752a: 441a add r2, r3 - 800752c: 68bb ldr r3, [r7, #8] - 800752e: 3304 adds r3, #4 - 8007530: 4619 mov r1, r3 - 8007532: 4610 mov r0, r2 - 8007534: f7ff fba0 bl 8006c78 + 8007566: 68bb ldr r3, [r7, #8] + 8007568: 6adb ldr r3, [r3, #44] @ 0x2c + 800756a: 2201 movs r2, #1 + 800756c: 409a lsls r2, r3 + 800756e: 4b24 ldr r3, [pc, #144] @ (8007600 ) + 8007570: 681b ldr r3, [r3, #0] + 8007572: 4313 orrs r3, r2 + 8007574: 4a22 ldr r2, [pc, #136] @ (8007600 ) + 8007576: 6013 str r3, [r2, #0] + 8007578: 68bb ldr r3, [r7, #8] + 800757a: 6ada ldr r2, [r3, #44] @ 0x2c + 800757c: 4613 mov r3, r2 + 800757e: 009b lsls r3, r3, #2 + 8007580: 4413 add r3, r2 + 8007582: 009b lsls r3, r3, #2 + 8007584: 4a1f ldr r2, [pc, #124] @ (8007604 ) + 8007586: 441a add r2, r3 + 8007588: 68bb ldr r3, [r7, #8] + 800758a: 3304 adds r3, #4 + 800758c: 4619 mov r1, r3 + 800758e: 4610 mov r0, r2 + 8007590: f7ff fba0 bl 8006cd4 { /* Preemption is on, but a context switch should only be performed if the unblocked task has a priority that is equal to or higher than the currently executing task. */ if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority ) - 8007538: 68bb ldr r3, [r7, #8] - 800753a: 6ada ldr r2, [r3, #44] @ 0x2c - 800753c: 4b1b ldr r3, [pc, #108] @ (80075ac ) - 800753e: 681b ldr r3, [r3, #0] - 8007540: 6adb ldr r3, [r3, #44] @ 0x2c - 8007542: 429a cmp r2, r3 - 8007544: d3b9 bcc.n 80074ba + 8007594: 68bb ldr r3, [r7, #8] + 8007596: 6ada ldr r2, [r3, #44] @ 0x2c + 8007598: 4b1b ldr r3, [pc, #108] @ (8007608 ) + 800759a: 681b ldr r3, [r3, #0] + 800759c: 6adb ldr r3, [r3, #44] @ 0x2c + 800759e: 429a cmp r2, r3 + 80075a0: d3b9 bcc.n 8007516 { xSwitchRequired = pdTRUE; - 8007546: 2301 movs r3, #1 - 8007548: 617b str r3, [r7, #20] + 80075a2: 2301 movs r3, #1 + 80075a4: 617b str r3, [r7, #20] if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE ) - 800754a: e7b6 b.n 80074ba + 80075a6: e7b6 b.n 8007516 /* Tasks of equal priority to the currently running task will share processing time (time slice) if preemption is on, and the application writer has not explicitly turned time slicing off. */ #if ( ( configUSE_PREEMPTION == 1 ) && ( configUSE_TIME_SLICING == 1 ) ) { if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ pxCurrentTCB->uxPriority ] ) ) > ( UBaseType_t ) 1 ) - 800754c: 4b17 ldr r3, [pc, #92] @ (80075ac ) - 800754e: 681b ldr r3, [r3, #0] - 8007550: 6ada ldr r2, [r3, #44] @ 0x2c - 8007552: 4915 ldr r1, [pc, #84] @ (80075a8 ) - 8007554: 4613 mov r3, r2 - 8007556: 009b lsls r3, r3, #2 - 8007558: 4413 add r3, r2 - 800755a: 009b lsls r3, r3, #2 - 800755c: 440b add r3, r1 - 800755e: 681b ldr r3, [r3, #0] - 8007560: 2b01 cmp r3, #1 - 8007562: d901 bls.n 8007568 + 80075a8: 4b17 ldr r3, [pc, #92] @ (8007608 ) + 80075aa: 681b ldr r3, [r3, #0] + 80075ac: 6ada ldr r2, [r3, #44] @ 0x2c + 80075ae: 4915 ldr r1, [pc, #84] @ (8007604 ) + 80075b0: 4613 mov r3, r2 + 80075b2: 009b lsls r3, r3, #2 + 80075b4: 4413 add r3, r2 + 80075b6: 009b lsls r3, r3, #2 + 80075b8: 440b add r3, r1 + 80075ba: 681b ldr r3, [r3, #0] + 80075bc: 2b01 cmp r3, #1 + 80075be: d901 bls.n 80075c4 { xSwitchRequired = pdTRUE; - 8007564: 2301 movs r3, #1 - 8007566: 617b str r3, [r7, #20] + 80075c0: 2301 movs r3, #1 + 80075c2: 617b str r3, [r7, #20] } #endif /* configUSE_TICK_HOOK */ #if ( configUSE_PREEMPTION == 1 ) { if( xYieldPending != pdFALSE ) - 8007568: 4b11 ldr r3, [pc, #68] @ (80075b0 ) - 800756a: 681b ldr r3, [r3, #0] - 800756c: 2b00 cmp r3, #0 - 800756e: d007 beq.n 8007580 + 80075c4: 4b11 ldr r3, [pc, #68] @ (800760c ) + 80075c6: 681b ldr r3, [r3, #0] + 80075c8: 2b00 cmp r3, #0 + 80075ca: d007 beq.n 80075dc { xSwitchRequired = pdTRUE; - 8007570: 2301 movs r3, #1 - 8007572: 617b str r3, [r7, #20] - 8007574: e004 b.n 8007580 + 80075cc: 2301 movs r3, #1 + 80075ce: 617b str r3, [r7, #20] + 80075d0: e004 b.n 80075dc } #endif /* configUSE_PREEMPTION */ } else { ++xPendedTicks; - 8007576: 4b0f ldr r3, [pc, #60] @ (80075b4 ) - 8007578: 681b ldr r3, [r3, #0] - 800757a: 3301 adds r3, #1 - 800757c: 4a0d ldr r2, [pc, #52] @ (80075b4 ) - 800757e: 6013 str r3, [r2, #0] + 80075d2: 4b0f ldr r3, [pc, #60] @ (8007610 ) + 80075d4: 681b ldr r3, [r3, #0] + 80075d6: 3301 adds r3, #1 + 80075d8: 4a0d ldr r2, [pc, #52] @ (8007610 ) + 80075da: 6013 str r3, [r2, #0] vApplicationTickHook(); } #endif } return xSwitchRequired; - 8007580: 697b ldr r3, [r7, #20] + 80075dc: 697b ldr r3, [r7, #20] } - 8007582: 4618 mov r0, r3 - 8007584: 3718 adds r7, #24 - 8007586: 46bd mov sp, r7 - 8007588: bd80 pop {r7, pc} - 800758a: bf00 nop - 800758c: 200003bc .word 0x200003bc - 8007590: 200003a0 .word 0x200003a0 - 8007594: 2000036c .word 0x2000036c - 8007598: 20000370 .word 0x20000370 - 800759c: 200003b4 .word 0x200003b4 - 80075a0: 200003b8 .word 0x200003b8 - 80075a4: 200003a4 .word 0x200003a4 - 80075a8: 200002e0 .word 0x200002e0 - 80075ac: 200002dc .word 0x200002dc - 80075b0: 200003b0 .word 0x200003b0 - 80075b4: 200003ac .word 0x200003ac + 80075de: 4618 mov r0, r3 + 80075e0: 3718 adds r7, #24 + 80075e2: 46bd mov sp, r7 + 80075e4: bd80 pop {r7, pc} + 80075e6: bf00 nop + 80075e8: 200003c8 .word 0x200003c8 + 80075ec: 200003ac .word 0x200003ac + 80075f0: 20000378 .word 0x20000378 + 80075f4: 2000037c .word 0x2000037c + 80075f8: 200003c0 .word 0x200003c0 + 80075fc: 200003c4 .word 0x200003c4 + 8007600: 200003b0 .word 0x200003b0 + 8007604: 200002ec .word 0x200002ec + 8007608: 200002e8 .word 0x200002e8 + 800760c: 200003bc .word 0x200003bc + 8007610: 200003b8 .word 0x200003b8 -080075b8 : +08007614 : #endif /* configUSE_APPLICATION_TASK_TAG */ /*-----------------------------------------------------------*/ void vTaskSwitchContext( void ) { - 80075b8: b580 push {r7, lr} - 80075ba: b088 sub sp, #32 - 80075bc: af00 add r7, sp, #0 + 8007614: b580 push {r7, lr} + 8007616: b088 sub sp, #32 + 8007618: af00 add r7, sp, #0 if( uxSchedulerSuspended != ( UBaseType_t ) pdFALSE ) - 80075be: 4b3a ldr r3, [pc, #232] @ (80076a8 ) - 80075c0: 681b ldr r3, [r3, #0] - 80075c2: 2b00 cmp r3, #0 - 80075c4: d003 beq.n 80075ce + 800761a: 4b3a ldr r3, [pc, #232] @ (8007704 ) + 800761c: 681b ldr r3, [r3, #0] + 800761e: 2b00 cmp r3, #0 + 8007620: d003 beq.n 800762a { /* The scheduler is currently suspended - do not allow a context switch. */ xYieldPending = pdTRUE; - 80075c6: 4b39 ldr r3, [pc, #228] @ (80076ac ) - 80075c8: 2201 movs r2, #1 - 80075ca: 601a str r2, [r3, #0] + 8007622: 4b39 ldr r3, [pc, #228] @ (8007708 ) + 8007624: 2201 movs r2, #1 + 8007626: 601a str r2, [r3, #0] for additional information. */ _impure_ptr = &( pxCurrentTCB->xNewLib_reent ); } #endif /* configUSE_NEWLIB_REENTRANT */ } } - 80075cc: e067 b.n 800769e + 8007628: e067 b.n 80076fa xYieldPending = pdFALSE; - 80075ce: 4b37 ldr r3, [pc, #220] @ (80076ac ) - 80075d0: 2200 movs r2, #0 - 80075d2: 601a str r2, [r3, #0] + 800762a: 4b37 ldr r3, [pc, #220] @ (8007708 ) + 800762c: 2200 movs r2, #0 + 800762e: 601a str r2, [r3, #0] taskCHECK_FOR_STACK_OVERFLOW(); - 80075d4: 4b36 ldr r3, [pc, #216] @ (80076b0 ) - 80075d6: 681b ldr r3, [r3, #0] - 80075d8: 6b1b ldr r3, [r3, #48] @ 0x30 - 80075da: 61fb str r3, [r7, #28] - 80075dc: f04f 33a5 mov.w r3, #2779096485 @ 0xa5a5a5a5 - 80075e0: 61bb str r3, [r7, #24] - 80075e2: 69fb ldr r3, [r7, #28] - 80075e4: 681b ldr r3, [r3, #0] - 80075e6: 69ba ldr r2, [r7, #24] - 80075e8: 429a cmp r2, r3 - 80075ea: d111 bne.n 8007610 - 80075ec: 69fb ldr r3, [r7, #28] - 80075ee: 3304 adds r3, #4 - 80075f0: 681b ldr r3, [r3, #0] - 80075f2: 69ba ldr r2, [r7, #24] - 80075f4: 429a cmp r2, r3 - 80075f6: d10b bne.n 8007610 - 80075f8: 69fb ldr r3, [r7, #28] - 80075fa: 3308 adds r3, #8 - 80075fc: 681b ldr r3, [r3, #0] - 80075fe: 69ba ldr r2, [r7, #24] - 8007600: 429a cmp r2, r3 - 8007602: d105 bne.n 8007610 - 8007604: 69fb ldr r3, [r7, #28] - 8007606: 330c adds r3, #12 - 8007608: 681b ldr r3, [r3, #0] - 800760a: 69ba ldr r2, [r7, #24] - 800760c: 429a cmp r2, r3 - 800760e: d008 beq.n 8007622 - 8007610: 4b27 ldr r3, [pc, #156] @ (80076b0 ) - 8007612: 681a ldr r2, [r3, #0] - 8007614: 4b26 ldr r3, [pc, #152] @ (80076b0 ) - 8007616: 681b ldr r3, [r3, #0] - 8007618: 3334 adds r3, #52 @ 0x34 - 800761a: 4619 mov r1, r3 - 800761c: 4610 mov r0, r2 - 800761e: f7f8 ffab bl 8000578 + 8007630: 4b36 ldr r3, [pc, #216] @ (800770c ) + 8007632: 681b ldr r3, [r3, #0] + 8007634: 6b1b ldr r3, [r3, #48] @ 0x30 + 8007636: 61fb str r3, [r7, #28] + 8007638: f04f 33a5 mov.w r3, #2779096485 @ 0xa5a5a5a5 + 800763c: 61bb str r3, [r7, #24] + 800763e: 69fb ldr r3, [r7, #28] + 8007640: 681b ldr r3, [r3, #0] + 8007642: 69ba ldr r2, [r7, #24] + 8007644: 429a cmp r2, r3 + 8007646: d111 bne.n 800766c + 8007648: 69fb ldr r3, [r7, #28] + 800764a: 3304 adds r3, #4 + 800764c: 681b ldr r3, [r3, #0] + 800764e: 69ba ldr r2, [r7, #24] + 8007650: 429a cmp r2, r3 + 8007652: d10b bne.n 800766c + 8007654: 69fb ldr r3, [r7, #28] + 8007656: 3308 adds r3, #8 + 8007658: 681b ldr r3, [r3, #0] + 800765a: 69ba ldr r2, [r7, #24] + 800765c: 429a cmp r2, r3 + 800765e: d105 bne.n 800766c + 8007660: 69fb ldr r3, [r7, #28] + 8007662: 330c adds r3, #12 + 8007664: 681b ldr r3, [r3, #0] + 8007666: 69ba ldr r2, [r7, #24] + 8007668: 429a cmp r2, r3 + 800766a: d008 beq.n 800767e + 800766c: 4b27 ldr r3, [pc, #156] @ (800770c ) + 800766e: 681a ldr r2, [r3, #0] + 8007670: 4b26 ldr r3, [pc, #152] @ (800770c ) + 8007672: 681b ldr r3, [r3, #0] + 8007674: 3334 adds r3, #52 @ 0x34 + 8007676: 4619 mov r1, r3 + 8007678: 4610 mov r0, r2 + 800767a: f7f8 ffcb bl 8000614 taskSELECT_HIGHEST_PRIORITY_TASK(); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ - 8007622: 4b24 ldr r3, [pc, #144] @ (80076b4 ) - 8007624: 681b ldr r3, [r3, #0] - 8007626: 60fb str r3, [r7, #12] + 800767e: 4b24 ldr r3, [pc, #144] @ (8007710 ) + 8007680: 681b ldr r3, [r3, #0] + 8007682: 60fb str r3, [r7, #12] __asm volatile ( "clz %0, %1" : "=r" ( ucReturn ) : "r" ( ulBitmap ) : "memory" ); - 8007628: 68fb ldr r3, [r7, #12] - 800762a: fab3 f383 clz r3, r3 - 800762e: 72fb strb r3, [r7, #11] + 8007684: 68fb ldr r3, [r7, #12] + 8007686: fab3 f383 clz r3, r3 + 800768a: 72fb strb r3, [r7, #11] return ucReturn; - 8007630: 7afb ldrb r3, [r7, #11] - 8007632: f1c3 031f rsb r3, r3, #31 - 8007636: 617b str r3, [r7, #20] - 8007638: 491f ldr r1, [pc, #124] @ (80076b8 ) - 800763a: 697a ldr r2, [r7, #20] - 800763c: 4613 mov r3, r2 - 800763e: 009b lsls r3, r3, #2 - 8007640: 4413 add r3, r2 - 8007642: 009b lsls r3, r3, #2 - 8007644: 440b add r3, r1 - 8007646: 681b ldr r3, [r3, #0] - 8007648: 2b00 cmp r3, #0 - 800764a: d10b bne.n 8007664 + 800768c: 7afb ldrb r3, [r7, #11] + 800768e: f1c3 031f rsb r3, r3, #31 + 8007692: 617b str r3, [r7, #20] + 8007694: 491f ldr r1, [pc, #124] @ (8007714 ) + 8007696: 697a ldr r2, [r7, #20] + 8007698: 4613 mov r3, r2 + 800769a: 009b lsls r3, r3, #2 + 800769c: 4413 add r3, r2 + 800769e: 009b lsls r3, r3, #2 + 80076a0: 440b add r3, r1 + 80076a2: 681b ldr r3, [r3, #0] + 80076a4: 2b00 cmp r3, #0 + 80076a6: d10b bne.n 80076c0 __asm volatile - 800764c: f04f 0350 mov.w r3, #80 @ 0x50 - 8007650: f383 8811 msr BASEPRI, r3 - 8007654: f3bf 8f6f isb sy - 8007658: f3bf 8f4f dsb sy - 800765c: 607b str r3, [r7, #4] + 80076a8: f04f 0350 mov.w r3, #80 @ 0x50 + 80076ac: f383 8811 msr BASEPRI, r3 + 80076b0: f3bf 8f6f isb sy + 80076b4: f3bf 8f4f dsb sy + 80076b8: 607b str r3, [r7, #4] } - 800765e: bf00 nop - 8007660: bf00 nop - 8007662: e7fd b.n 8007660 - 8007664: 697a ldr r2, [r7, #20] - 8007666: 4613 mov r3, r2 - 8007668: 009b lsls r3, r3, #2 - 800766a: 4413 add r3, r2 - 800766c: 009b lsls r3, r3, #2 - 800766e: 4a12 ldr r2, [pc, #72] @ (80076b8 ) - 8007670: 4413 add r3, r2 - 8007672: 613b str r3, [r7, #16] - 8007674: 693b ldr r3, [r7, #16] - 8007676: 685b ldr r3, [r3, #4] - 8007678: 685a ldr r2, [r3, #4] - 800767a: 693b ldr r3, [r7, #16] - 800767c: 605a str r2, [r3, #4] - 800767e: 693b ldr r3, [r7, #16] - 8007680: 685a ldr r2, [r3, #4] - 8007682: 693b ldr r3, [r7, #16] - 8007684: 3308 adds r3, #8 - 8007686: 429a cmp r2, r3 - 8007688: d104 bne.n 8007694 - 800768a: 693b ldr r3, [r7, #16] - 800768c: 685b ldr r3, [r3, #4] - 800768e: 685a ldr r2, [r3, #4] - 8007690: 693b ldr r3, [r7, #16] - 8007692: 605a str r2, [r3, #4] - 8007694: 693b ldr r3, [r7, #16] - 8007696: 685b ldr r3, [r3, #4] - 8007698: 68db ldr r3, [r3, #12] - 800769a: 4a05 ldr r2, [pc, #20] @ (80076b0 ) - 800769c: 6013 str r3, [r2, #0] + 80076ba: bf00 nop + 80076bc: bf00 nop + 80076be: e7fd b.n 80076bc + 80076c0: 697a ldr r2, [r7, #20] + 80076c2: 4613 mov r3, r2 + 80076c4: 009b lsls r3, r3, #2 + 80076c6: 4413 add r3, r2 + 80076c8: 009b lsls r3, r3, #2 + 80076ca: 4a12 ldr r2, [pc, #72] @ (8007714 ) + 80076cc: 4413 add r3, r2 + 80076ce: 613b str r3, [r7, #16] + 80076d0: 693b ldr r3, [r7, #16] + 80076d2: 685b ldr r3, [r3, #4] + 80076d4: 685a ldr r2, [r3, #4] + 80076d6: 693b ldr r3, [r7, #16] + 80076d8: 605a str r2, [r3, #4] + 80076da: 693b ldr r3, [r7, #16] + 80076dc: 685a ldr r2, [r3, #4] + 80076de: 693b ldr r3, [r7, #16] + 80076e0: 3308 adds r3, #8 + 80076e2: 429a cmp r2, r3 + 80076e4: d104 bne.n 80076f0 + 80076e6: 693b ldr r3, [r7, #16] + 80076e8: 685b ldr r3, [r3, #4] + 80076ea: 685a ldr r2, [r3, #4] + 80076ec: 693b ldr r3, [r7, #16] + 80076ee: 605a str r2, [r3, #4] + 80076f0: 693b ldr r3, [r7, #16] + 80076f2: 685b ldr r3, [r3, #4] + 80076f4: 68db ldr r3, [r3, #12] + 80076f6: 4a05 ldr r2, [pc, #20] @ (800770c ) + 80076f8: 6013 str r3, [r2, #0] } - 800769e: bf00 nop - 80076a0: 3720 adds r7, #32 - 80076a2: 46bd mov sp, r7 - 80076a4: bd80 pop {r7, pc} - 80076a6: bf00 nop - 80076a8: 200003bc .word 0x200003bc - 80076ac: 200003b0 .word 0x200003b0 - 80076b0: 200002dc .word 0x200002dc - 80076b4: 200003a4 .word 0x200003a4 - 80076b8: 200002e0 .word 0x200002e0 + 80076fa: bf00 nop + 80076fc: 3720 adds r7, #32 + 80076fe: 46bd mov sp, r7 + 8007700: bd80 pop {r7, pc} + 8007702: bf00 nop + 8007704: 200003c8 .word 0x200003c8 + 8007708: 200003bc .word 0x200003bc + 800770c: 200002e8 .word 0x200002e8 + 8007710: 200003b0 .word 0x200003b0 + 8007714: 200002ec .word 0x200002ec -080076bc : +08007718 : /*-----------------------------------------------------------*/ void vTaskPlaceOnEventList( List_t * const pxEventList, const TickType_t xTicksToWait ) { - 80076bc: b580 push {r7, lr} - 80076be: b084 sub sp, #16 - 80076c0: af00 add r7, sp, #0 - 80076c2: 6078 str r0, [r7, #4] - 80076c4: 6039 str r1, [r7, #0] + 8007718: b580 push {r7, lr} + 800771a: b084 sub sp, #16 + 800771c: af00 add r7, sp, #0 + 800771e: 6078 str r0, [r7, #4] + 8007720: 6039 str r1, [r7, #0] configASSERT( pxEventList ); - 80076c6: 687b ldr r3, [r7, #4] - 80076c8: 2b00 cmp r3, #0 - 80076ca: d10b bne.n 80076e4 + 8007722: 687b ldr r3, [r7, #4] + 8007724: 2b00 cmp r3, #0 + 8007726: d10b bne.n 8007740 __asm volatile - 80076cc: f04f 0350 mov.w r3, #80 @ 0x50 - 80076d0: f383 8811 msr BASEPRI, r3 - 80076d4: f3bf 8f6f isb sy - 80076d8: f3bf 8f4f dsb sy - 80076dc: 60fb str r3, [r7, #12] + 8007728: f04f 0350 mov.w r3, #80 @ 0x50 + 800772c: f383 8811 msr BASEPRI, r3 + 8007730: f3bf 8f6f isb sy + 8007734: f3bf 8f4f dsb sy + 8007738: 60fb str r3, [r7, #12] } - 80076de: bf00 nop - 80076e0: bf00 nop - 80076e2: e7fd b.n 80076e0 + 800773a: bf00 nop + 800773c: bf00 nop + 800773e: e7fd b.n 800773c /* Place the event list item of the TCB in the appropriate event list. This is placed in the list in priority order so the highest priority task is the first to be woken by the event. The queue that contains the event list is locked, preventing simultaneous access from interrupts. */ vListInsert( pxEventList, &( pxCurrentTCB->xEventListItem ) ); - 80076e4: 4b07 ldr r3, [pc, #28] @ (8007704 ) - 80076e6: 681b ldr r3, [r3, #0] - 80076e8: 3318 adds r3, #24 - 80076ea: 4619 mov r1, r3 - 80076ec: 6878 ldr r0, [r7, #4] - 80076ee: f7ff fae7 bl 8006cc0 + 8007740: 4b07 ldr r3, [pc, #28] @ (8007760 ) + 8007742: 681b ldr r3, [r3, #0] + 8007744: 3318 adds r3, #24 + 8007746: 4619 mov r1, r3 + 8007748: 6878 ldr r0, [r7, #4] + 800774a: f7ff fae7 bl 8006d1c prvAddCurrentTaskToDelayedList( xTicksToWait, pdTRUE ); - 80076f2: 2101 movs r1, #1 - 80076f4: 6838 ldr r0, [r7, #0] - 80076f6: f000 f9b7 bl 8007a68 + 800774e: 2101 movs r1, #1 + 8007750: 6838 ldr r0, [r7, #0] + 8007752: f000 f9b7 bl 8007ac4 } - 80076fa: bf00 nop - 80076fc: 3710 adds r7, #16 - 80076fe: 46bd mov sp, r7 - 8007700: bd80 pop {r7, pc} - 8007702: bf00 nop - 8007704: 200002dc .word 0x200002dc + 8007756: bf00 nop + 8007758: 3710 adds r7, #16 + 800775a: 46bd mov sp, r7 + 800775c: bd80 pop {r7, pc} + 800775e: bf00 nop + 8007760: 200002e8 .word 0x200002e8 -08007708 : +08007764 : #endif /* configUSE_TIMERS */ /*-----------------------------------------------------------*/ BaseType_t xTaskRemoveFromEventList( const List_t * const pxEventList ) { - 8007708: b580 push {r7, lr} - 800770a: b086 sub sp, #24 - 800770c: af00 add r7, sp, #0 - 800770e: 6078 str r0, [r7, #4] + 8007764: b580 push {r7, lr} + 8007766: b086 sub sp, #24 + 8007768: af00 add r7, sp, #0 + 800776a: 6078 str r0, [r7, #4] get called - the lock count on the queue will get modified instead. This means exclusive access to the event list is guaranteed here. This function assumes that a check has already been made to ensure that pxEventList is not empty. */ pxUnblockedTCB = listGET_OWNER_OF_HEAD_ENTRY( pxEventList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ - 8007710: 687b ldr r3, [r7, #4] - 8007712: 68db ldr r3, [r3, #12] - 8007714: 68db ldr r3, [r3, #12] - 8007716: 613b str r3, [r7, #16] + 800776c: 687b ldr r3, [r7, #4] + 800776e: 68db ldr r3, [r3, #12] + 8007770: 68db ldr r3, [r3, #12] + 8007772: 613b str r3, [r7, #16] configASSERT( pxUnblockedTCB ); - 8007718: 693b ldr r3, [r7, #16] - 800771a: 2b00 cmp r3, #0 - 800771c: d10b bne.n 8007736 + 8007774: 693b ldr r3, [r7, #16] + 8007776: 2b00 cmp r3, #0 + 8007778: d10b bne.n 8007792 __asm volatile - 800771e: f04f 0350 mov.w r3, #80 @ 0x50 - 8007722: f383 8811 msr BASEPRI, r3 - 8007726: f3bf 8f6f isb sy - 800772a: f3bf 8f4f dsb sy - 800772e: 60fb str r3, [r7, #12] + 800777a: f04f 0350 mov.w r3, #80 @ 0x50 + 800777e: f383 8811 msr BASEPRI, r3 + 8007782: f3bf 8f6f isb sy + 8007786: f3bf 8f4f dsb sy + 800778a: 60fb str r3, [r7, #12] } - 8007730: bf00 nop - 8007732: bf00 nop - 8007734: e7fd b.n 8007732 + 800778c: bf00 nop + 800778e: bf00 nop + 8007790: e7fd b.n 800778e ( void ) uxListRemove( &( pxUnblockedTCB->xEventListItem ) ); - 8007736: 693b ldr r3, [r7, #16] - 8007738: 3318 adds r3, #24 - 800773a: 4618 mov r0, r3 - 800773c: f7ff faf9 bl 8006d32 + 8007792: 693b ldr r3, [r7, #16] + 8007794: 3318 adds r3, #24 + 8007796: 4618 mov r0, r3 + 8007798: f7ff faf9 bl 8006d8e if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) - 8007740: 4b1d ldr r3, [pc, #116] @ (80077b8 ) - 8007742: 681b ldr r3, [r3, #0] - 8007744: 2b00 cmp r3, #0 - 8007746: d11c bne.n 8007782 + 800779c: 4b1d ldr r3, [pc, #116] @ (8007814 ) + 800779e: 681b ldr r3, [r3, #0] + 80077a0: 2b00 cmp r3, #0 + 80077a2: d11c bne.n 80077de { ( void ) uxListRemove( &( pxUnblockedTCB->xStateListItem ) ); - 8007748: 693b ldr r3, [r7, #16] - 800774a: 3304 adds r3, #4 - 800774c: 4618 mov r0, r3 - 800774e: f7ff faf0 bl 8006d32 + 80077a4: 693b ldr r3, [r7, #16] + 80077a6: 3304 adds r3, #4 + 80077a8: 4618 mov r0, r3 + 80077aa: f7ff faf0 bl 8006d8e prvAddTaskToReadyList( pxUnblockedTCB ); - 8007752: 693b ldr r3, [r7, #16] - 8007754: 6adb ldr r3, [r3, #44] @ 0x2c - 8007756: 2201 movs r2, #1 - 8007758: 409a lsls r2, r3 - 800775a: 4b18 ldr r3, [pc, #96] @ (80077bc ) - 800775c: 681b ldr r3, [r3, #0] - 800775e: 4313 orrs r3, r2 - 8007760: 4a16 ldr r2, [pc, #88] @ (80077bc ) - 8007762: 6013 str r3, [r2, #0] - 8007764: 693b ldr r3, [r7, #16] - 8007766: 6ada ldr r2, [r3, #44] @ 0x2c - 8007768: 4613 mov r3, r2 - 800776a: 009b lsls r3, r3, #2 - 800776c: 4413 add r3, r2 - 800776e: 009b lsls r3, r3, #2 - 8007770: 4a13 ldr r2, [pc, #76] @ (80077c0 ) - 8007772: 441a add r2, r3 - 8007774: 693b ldr r3, [r7, #16] - 8007776: 3304 adds r3, #4 - 8007778: 4619 mov r1, r3 - 800777a: 4610 mov r0, r2 - 800777c: f7ff fa7c bl 8006c78 - 8007780: e005 b.n 800778e + 80077ae: 693b ldr r3, [r7, #16] + 80077b0: 6adb ldr r3, [r3, #44] @ 0x2c + 80077b2: 2201 movs r2, #1 + 80077b4: 409a lsls r2, r3 + 80077b6: 4b18 ldr r3, [pc, #96] @ (8007818 ) + 80077b8: 681b ldr r3, [r3, #0] + 80077ba: 4313 orrs r3, r2 + 80077bc: 4a16 ldr r2, [pc, #88] @ (8007818 ) + 80077be: 6013 str r3, [r2, #0] + 80077c0: 693b ldr r3, [r7, #16] + 80077c2: 6ada ldr r2, [r3, #44] @ 0x2c + 80077c4: 4613 mov r3, r2 + 80077c6: 009b lsls r3, r3, #2 + 80077c8: 4413 add r3, r2 + 80077ca: 009b lsls r3, r3, #2 + 80077cc: 4a13 ldr r2, [pc, #76] @ (800781c ) + 80077ce: 441a add r2, r3 + 80077d0: 693b ldr r3, [r7, #16] + 80077d2: 3304 adds r3, #4 + 80077d4: 4619 mov r1, r3 + 80077d6: 4610 mov r0, r2 + 80077d8: f7ff fa7c bl 8006cd4 + 80077dc: e005 b.n 80077ea } else { /* The delayed and ready lists cannot be accessed, so hold this task pending until the scheduler is resumed. */ vListInsertEnd( &( xPendingReadyList ), &( pxUnblockedTCB->xEventListItem ) ); - 8007782: 693b ldr r3, [r7, #16] - 8007784: 3318 adds r3, #24 - 8007786: 4619 mov r1, r3 - 8007788: 480e ldr r0, [pc, #56] @ (80077c4 ) - 800778a: f7ff fa75 bl 8006c78 + 80077de: 693b ldr r3, [r7, #16] + 80077e0: 3318 adds r3, #24 + 80077e2: 4619 mov r1, r3 + 80077e4: 480e ldr r0, [pc, #56] @ (8007820 ) + 80077e6: f7ff fa75 bl 8006cd4 } if( pxUnblockedTCB->uxPriority > pxCurrentTCB->uxPriority ) - 800778e: 693b ldr r3, [r7, #16] - 8007790: 6ada ldr r2, [r3, #44] @ 0x2c - 8007792: 4b0d ldr r3, [pc, #52] @ (80077c8 ) - 8007794: 681b ldr r3, [r3, #0] - 8007796: 6adb ldr r3, [r3, #44] @ 0x2c - 8007798: 429a cmp r2, r3 - 800779a: d905 bls.n 80077a8 + 80077ea: 693b ldr r3, [r7, #16] + 80077ec: 6ada ldr r2, [r3, #44] @ 0x2c + 80077ee: 4b0d ldr r3, [pc, #52] @ (8007824 ) + 80077f0: 681b ldr r3, [r3, #0] + 80077f2: 6adb ldr r3, [r3, #44] @ 0x2c + 80077f4: 429a cmp r2, r3 + 80077f6: d905 bls.n 8007804 { /* Return true if the task removed from the event list has a higher priority than the calling task. This allows the calling task to know if it should force a context switch now. */ xReturn = pdTRUE; - 800779c: 2301 movs r3, #1 - 800779e: 617b str r3, [r7, #20] + 80077f8: 2301 movs r3, #1 + 80077fa: 617b str r3, [r7, #20] /* Mark that a yield is pending in case the user is not using the "xHigherPriorityTaskWoken" parameter to an ISR safe FreeRTOS function. */ xYieldPending = pdTRUE; - 80077a0: 4b0a ldr r3, [pc, #40] @ (80077cc ) - 80077a2: 2201 movs r2, #1 - 80077a4: 601a str r2, [r3, #0] - 80077a6: e001 b.n 80077ac + 80077fc: 4b0a ldr r3, [pc, #40] @ (8007828 ) + 80077fe: 2201 movs r2, #1 + 8007800: 601a str r2, [r3, #0] + 8007802: e001 b.n 8007808 } else { xReturn = pdFALSE; - 80077a8: 2300 movs r3, #0 - 80077aa: 617b str r3, [r7, #20] + 8007804: 2300 movs r3, #0 + 8007806: 617b str r3, [r7, #20] } return xReturn; - 80077ac: 697b ldr r3, [r7, #20] + 8007808: 697b ldr r3, [r7, #20] } - 80077ae: 4618 mov r0, r3 - 80077b0: 3718 adds r7, #24 - 80077b2: 46bd mov sp, r7 - 80077b4: bd80 pop {r7, pc} - 80077b6: bf00 nop - 80077b8: 200003bc .word 0x200003bc - 80077bc: 200003a4 .word 0x200003a4 - 80077c0: 200002e0 .word 0x200002e0 - 80077c4: 20000374 .word 0x20000374 - 80077c8: 200002dc .word 0x200002dc - 80077cc: 200003b0 .word 0x200003b0 + 800780a: 4618 mov r0, r3 + 800780c: 3718 adds r7, #24 + 800780e: 46bd mov sp, r7 + 8007810: bd80 pop {r7, pc} + 8007812: bf00 nop + 8007814: 200003c8 .word 0x200003c8 + 8007818: 200003b0 .word 0x200003b0 + 800781c: 200002ec .word 0x200002ec + 8007820: 20000380 .word 0x20000380 + 8007824: 200002e8 .word 0x200002e8 + 8007828: 200003bc .word 0x200003bc -080077d0 : +0800782c : taskEXIT_CRITICAL(); } /*-----------------------------------------------------------*/ void vTaskInternalSetTimeOutState( TimeOut_t * const pxTimeOut ) { - 80077d0: b480 push {r7} - 80077d2: b083 sub sp, #12 - 80077d4: af00 add r7, sp, #0 - 80077d6: 6078 str r0, [r7, #4] + 800782c: b480 push {r7} + 800782e: b083 sub sp, #12 + 8007830: af00 add r7, sp, #0 + 8007832: 6078 str r0, [r7, #4] /* For internal use only as it does not use a critical section. */ pxTimeOut->xOverflowCount = xNumOfOverflows; - 80077d8: 4b06 ldr r3, [pc, #24] @ (80077f4 ) - 80077da: 681a ldr r2, [r3, #0] - 80077dc: 687b ldr r3, [r7, #4] - 80077de: 601a str r2, [r3, #0] + 8007834: 4b06 ldr r3, [pc, #24] @ (8007850 ) + 8007836: 681a ldr r2, [r3, #0] + 8007838: 687b ldr r3, [r7, #4] + 800783a: 601a str r2, [r3, #0] pxTimeOut->xTimeOnEntering = xTickCount; - 80077e0: 4b05 ldr r3, [pc, #20] @ (80077f8 ) - 80077e2: 681a ldr r2, [r3, #0] - 80077e4: 687b ldr r3, [r7, #4] - 80077e6: 605a str r2, [r3, #4] + 800783c: 4b05 ldr r3, [pc, #20] @ (8007854 ) + 800783e: 681a ldr r2, [r3, #0] + 8007840: 687b ldr r3, [r7, #4] + 8007842: 605a str r2, [r3, #4] } - 80077e8: bf00 nop - 80077ea: 370c adds r7, #12 - 80077ec: 46bd mov sp, r7 - 80077ee: f85d 7b04 ldr.w r7, [sp], #4 - 80077f2: 4770 bx lr - 80077f4: 200003b4 .word 0x200003b4 - 80077f8: 200003a0 .word 0x200003a0 + 8007844: bf00 nop + 8007846: 370c adds r7, #12 + 8007848: 46bd mov sp, r7 + 800784a: f85d 7b04 ldr.w r7, [sp], #4 + 800784e: 4770 bx lr + 8007850: 200003c0 .word 0x200003c0 + 8007854: 200003ac .word 0x200003ac -080077fc : +08007858 : /*-----------------------------------------------------------*/ BaseType_t xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut, TickType_t * const pxTicksToWait ) { - 80077fc: b580 push {r7, lr} - 80077fe: b088 sub sp, #32 - 8007800: af00 add r7, sp, #0 - 8007802: 6078 str r0, [r7, #4] - 8007804: 6039 str r1, [r7, #0] + 8007858: b580 push {r7, lr} + 800785a: b088 sub sp, #32 + 800785c: af00 add r7, sp, #0 + 800785e: 6078 str r0, [r7, #4] + 8007860: 6039 str r1, [r7, #0] BaseType_t xReturn; configASSERT( pxTimeOut ); - 8007806: 687b ldr r3, [r7, #4] - 8007808: 2b00 cmp r3, #0 - 800780a: d10b bne.n 8007824 + 8007862: 687b ldr r3, [r7, #4] + 8007864: 2b00 cmp r3, #0 + 8007866: d10b bne.n 8007880 __asm volatile - 800780c: f04f 0350 mov.w r3, #80 @ 0x50 - 8007810: f383 8811 msr BASEPRI, r3 - 8007814: f3bf 8f6f isb sy - 8007818: f3bf 8f4f dsb sy - 800781c: 613b str r3, [r7, #16] + 8007868: f04f 0350 mov.w r3, #80 @ 0x50 + 800786c: f383 8811 msr BASEPRI, r3 + 8007870: f3bf 8f6f isb sy + 8007874: f3bf 8f4f dsb sy + 8007878: 613b str r3, [r7, #16] } - 800781e: bf00 nop - 8007820: bf00 nop - 8007822: e7fd b.n 8007820 + 800787a: bf00 nop + 800787c: bf00 nop + 800787e: e7fd b.n 800787c configASSERT( pxTicksToWait ); - 8007824: 683b ldr r3, [r7, #0] - 8007826: 2b00 cmp r3, #0 - 8007828: d10b bne.n 8007842 + 8007880: 683b ldr r3, [r7, #0] + 8007882: 2b00 cmp r3, #0 + 8007884: d10b bne.n 800789e __asm volatile - 800782a: f04f 0350 mov.w r3, #80 @ 0x50 - 800782e: f383 8811 msr BASEPRI, r3 - 8007832: f3bf 8f6f isb sy - 8007836: f3bf 8f4f dsb sy - 800783a: 60fb str r3, [r7, #12] + 8007886: f04f 0350 mov.w r3, #80 @ 0x50 + 800788a: f383 8811 msr BASEPRI, r3 + 800788e: f3bf 8f6f isb sy + 8007892: f3bf 8f4f dsb sy + 8007896: 60fb str r3, [r7, #12] } - 800783c: bf00 nop - 800783e: bf00 nop - 8007840: e7fd b.n 800783e + 8007898: bf00 nop + 800789a: bf00 nop + 800789c: e7fd b.n 800789a taskENTER_CRITICAL(); - 8007842: f000 f991 bl 8007b68 + 800789e: f000 f98b bl 8007bb8 { /* Minor optimisation. The tick count cannot change in this block. */ const TickType_t xConstTickCount = xTickCount; - 8007846: 4b1d ldr r3, [pc, #116] @ (80078bc ) - 8007848: 681b ldr r3, [r3, #0] - 800784a: 61bb str r3, [r7, #24] + 80078a2: 4b1d ldr r3, [pc, #116] @ (8007918 ) + 80078a4: 681b ldr r3, [r3, #0] + 80078a6: 61bb str r3, [r7, #24] const TickType_t xElapsedTime = xConstTickCount - pxTimeOut->xTimeOnEntering; - 800784c: 687b ldr r3, [r7, #4] - 800784e: 685b ldr r3, [r3, #4] - 8007850: 69ba ldr r2, [r7, #24] - 8007852: 1ad3 subs r3, r2, r3 - 8007854: 617b str r3, [r7, #20] + 80078a8: 687b ldr r3, [r7, #4] + 80078aa: 685b ldr r3, [r3, #4] + 80078ac: 69ba ldr r2, [r7, #24] + 80078ae: 1ad3 subs r3, r2, r3 + 80078b0: 617b str r3, [r7, #20] } else #endif #if ( INCLUDE_vTaskSuspend == 1 ) if( *pxTicksToWait == portMAX_DELAY ) - 8007856: 683b ldr r3, [r7, #0] - 8007858: 681b ldr r3, [r3, #0] - 800785a: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff - 800785e: d102 bne.n 8007866 + 80078b2: 683b ldr r3, [r7, #0] + 80078b4: 681b ldr r3, [r3, #0] + 80078b6: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 80078ba: d102 bne.n 80078c2 { /* If INCLUDE_vTaskSuspend is set to 1 and the block time specified is the maximum block time then the task should block indefinitely, and therefore never time out. */ xReturn = pdFALSE; - 8007860: 2300 movs r3, #0 - 8007862: 61fb str r3, [r7, #28] - 8007864: e023 b.n 80078ae + 80078bc: 2300 movs r3, #0 + 80078be: 61fb str r3, [r7, #28] + 80078c0: e023 b.n 800790a } else #endif if( ( xNumOfOverflows != pxTimeOut->xOverflowCount ) && ( xConstTickCount >= pxTimeOut->xTimeOnEntering ) ) /*lint !e525 Indentation preferred as is to make code within pre-processor directives clearer. */ - 8007866: 687b ldr r3, [r7, #4] - 8007868: 681a ldr r2, [r3, #0] - 800786a: 4b15 ldr r3, [pc, #84] @ (80078c0 ) - 800786c: 681b ldr r3, [r3, #0] - 800786e: 429a cmp r2, r3 - 8007870: d007 beq.n 8007882 - 8007872: 687b ldr r3, [r7, #4] - 8007874: 685b ldr r3, [r3, #4] - 8007876: 69ba ldr r2, [r7, #24] - 8007878: 429a cmp r2, r3 - 800787a: d302 bcc.n 8007882 + 80078c2: 687b ldr r3, [r7, #4] + 80078c4: 681a ldr r2, [r3, #0] + 80078c6: 4b15 ldr r3, [pc, #84] @ (800791c ) + 80078c8: 681b ldr r3, [r3, #0] + 80078ca: 429a cmp r2, r3 + 80078cc: d007 beq.n 80078de + 80078ce: 687b ldr r3, [r7, #4] + 80078d0: 685b ldr r3, [r3, #4] + 80078d2: 69ba ldr r2, [r7, #24] + 80078d4: 429a cmp r2, r3 + 80078d6: d302 bcc.n 80078de /* The tick count is greater than the time at which vTaskSetTimeout() was called, but has also overflowed since vTaskSetTimeOut() was called. It must have wrapped all the way around and gone past again. This passed since vTaskSetTimeout() was called. */ xReturn = pdTRUE; - 800787c: 2301 movs r3, #1 - 800787e: 61fb str r3, [r7, #28] - 8007880: e015 b.n 80078ae + 80078d8: 2301 movs r3, #1 + 80078da: 61fb str r3, [r7, #28] + 80078dc: e015 b.n 800790a } else if( xElapsedTime < *pxTicksToWait ) /*lint !e961 Explicit casting is only redundant with some compilers, whereas others require it to prevent integer conversion errors. */ - 8007882: 683b ldr r3, [r7, #0] - 8007884: 681b ldr r3, [r3, #0] - 8007886: 697a ldr r2, [r7, #20] - 8007888: 429a cmp r2, r3 - 800788a: d20b bcs.n 80078a4 + 80078de: 683b ldr r3, [r7, #0] + 80078e0: 681b ldr r3, [r3, #0] + 80078e2: 697a ldr r2, [r7, #20] + 80078e4: 429a cmp r2, r3 + 80078e6: d20b bcs.n 8007900 { /* Not a genuine timeout. Adjust parameters for time remaining. */ *pxTicksToWait -= xElapsedTime; - 800788c: 683b ldr r3, [r7, #0] - 800788e: 681a ldr r2, [r3, #0] - 8007890: 697b ldr r3, [r7, #20] - 8007892: 1ad2 subs r2, r2, r3 - 8007894: 683b ldr r3, [r7, #0] - 8007896: 601a str r2, [r3, #0] + 80078e8: 683b ldr r3, [r7, #0] + 80078ea: 681a ldr r2, [r3, #0] + 80078ec: 697b ldr r3, [r7, #20] + 80078ee: 1ad2 subs r2, r2, r3 + 80078f0: 683b ldr r3, [r7, #0] + 80078f2: 601a str r2, [r3, #0] vTaskInternalSetTimeOutState( pxTimeOut ); - 8007898: 6878 ldr r0, [r7, #4] - 800789a: f7ff ff99 bl 80077d0 + 80078f4: 6878 ldr r0, [r7, #4] + 80078f6: f7ff ff99 bl 800782c xReturn = pdFALSE; - 800789e: 2300 movs r3, #0 - 80078a0: 61fb str r3, [r7, #28] - 80078a2: e004 b.n 80078ae + 80078fa: 2300 movs r3, #0 + 80078fc: 61fb str r3, [r7, #28] + 80078fe: e004 b.n 800790a } else { *pxTicksToWait = 0; - 80078a4: 683b ldr r3, [r7, #0] - 80078a6: 2200 movs r2, #0 - 80078a8: 601a str r2, [r3, #0] + 8007900: 683b ldr r3, [r7, #0] + 8007902: 2200 movs r2, #0 + 8007904: 601a str r2, [r3, #0] xReturn = pdTRUE; - 80078aa: 2301 movs r3, #1 - 80078ac: 61fb str r3, [r7, #28] + 8007906: 2301 movs r3, #1 + 8007908: 61fb str r3, [r7, #28] } } taskEXIT_CRITICAL(); - 80078ae: f000 f98d bl 8007bcc + 800790a: f000 f987 bl 8007c1c return xReturn; - 80078b2: 69fb ldr r3, [r7, #28] + 800790e: 69fb ldr r3, [r7, #28] } - 80078b4: 4618 mov r0, r3 - 80078b6: 3720 adds r7, #32 - 80078b8: 46bd mov sp, r7 - 80078ba: bd80 pop {r7, pc} - 80078bc: 200003a0 .word 0x200003a0 - 80078c0: 200003b4 .word 0x200003b4 + 8007910: 4618 mov r0, r3 + 8007912: 3720 adds r7, #32 + 8007914: 46bd mov sp, r7 + 8007916: bd80 pop {r7, pc} + 8007918: 200003ac .word 0x200003ac + 800791c: 200003c0 .word 0x200003c0 -080078c4 : +08007920 : /*-----------------------------------------------------------*/ void vTaskMissedYield( void ) { - 80078c4: b480 push {r7} - 80078c6: af00 add r7, sp, #0 + 8007920: b480 push {r7} + 8007922: af00 add r7, sp, #0 xYieldPending = pdTRUE; - 80078c8: 4b03 ldr r3, [pc, #12] @ (80078d8 ) - 80078ca: 2201 movs r2, #1 - 80078cc: 601a str r2, [r3, #0] + 8007924: 4b03 ldr r3, [pc, #12] @ (8007934 ) + 8007926: 2201 movs r2, #1 + 8007928: 601a str r2, [r3, #0] } - 80078ce: bf00 nop - 80078d0: 46bd mov sp, r7 - 80078d2: f85d 7b04 ldr.w r7, [sp], #4 - 80078d6: 4770 bx lr - 80078d8: 200003b0 .word 0x200003b0 + 800792a: bf00 nop + 800792c: 46bd mov sp, r7 + 800792e: f85d 7b04 ldr.w r7, [sp], #4 + 8007932: 4770 bx lr + 8007934: 200003bc .word 0x200003bc -080078dc : +08007938 : #endif /* INCLUDE_vTaskDelete */ /*-----------------------------------------------------------*/ static void prvResetNextTaskUnblockTime( void ) { - 80078dc: b480 push {r7} - 80078de: b083 sub sp, #12 - 80078e0: af00 add r7, sp, #0 + 8007938: b480 push {r7} + 800793a: b083 sub sp, #12 + 800793c: af00 add r7, sp, #0 TCB_t *pxTCB; if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE ) - 80078e2: 4b0c ldr r3, [pc, #48] @ (8007914 ) - 80078e4: 681b ldr r3, [r3, #0] - 80078e6: 681b ldr r3, [r3, #0] - 80078e8: 2b00 cmp r3, #0 - 80078ea: d104 bne.n 80078f6 + 800793e: 4b0c ldr r3, [pc, #48] @ (8007970 ) + 8007940: 681b ldr r3, [r3, #0] + 8007942: 681b ldr r3, [r3, #0] + 8007944: 2b00 cmp r3, #0 + 8007946: d104 bne.n 8007952 { /* The new current delayed list is empty. Set xNextTaskUnblockTime to the maximum possible value so it is extremely unlikely that the if( xTickCount >= xNextTaskUnblockTime ) test will pass until there is an item in the delayed list. */ xNextTaskUnblockTime = portMAX_DELAY; - 80078ec: 4b0a ldr r3, [pc, #40] @ (8007918 ) - 80078ee: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff - 80078f2: 601a str r2, [r3, #0] + 8007948: 4b0a ldr r3, [pc, #40] @ (8007974 ) + 800794a: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 800794e: 601a str r2, [r3, #0] which the task at the head of the delayed list should be removed from the Blocked state. */ ( pxTCB ) = listGET_OWNER_OF_HEAD_ENTRY( pxDelayedTaskList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ xNextTaskUnblockTime = listGET_LIST_ITEM_VALUE( &( ( pxTCB )->xStateListItem ) ); } } - 80078f4: e008 b.n 8007908 + 8007950: e008 b.n 8007964 ( pxTCB ) = listGET_OWNER_OF_HEAD_ENTRY( pxDelayedTaskList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ - 80078f6: 4b07 ldr r3, [pc, #28] @ (8007914 ) - 80078f8: 681b ldr r3, [r3, #0] - 80078fa: 68db ldr r3, [r3, #12] - 80078fc: 68db ldr r3, [r3, #12] - 80078fe: 607b str r3, [r7, #4] + 8007952: 4b07 ldr r3, [pc, #28] @ (8007970 ) + 8007954: 681b ldr r3, [r3, #0] + 8007956: 68db ldr r3, [r3, #12] + 8007958: 68db ldr r3, [r3, #12] + 800795a: 607b str r3, [r7, #4] xNextTaskUnblockTime = listGET_LIST_ITEM_VALUE( &( ( pxTCB )->xStateListItem ) ); - 8007900: 687b ldr r3, [r7, #4] - 8007902: 685b ldr r3, [r3, #4] - 8007904: 4a04 ldr r2, [pc, #16] @ (8007918 ) - 8007906: 6013 str r3, [r2, #0] + 800795c: 687b ldr r3, [r7, #4] + 800795e: 685b ldr r3, [r3, #4] + 8007960: 4a04 ldr r2, [pc, #16] @ (8007974 ) + 8007962: 6013 str r3, [r2, #0] } - 8007908: bf00 nop - 800790a: 370c adds r7, #12 - 800790c: 46bd mov sp, r7 - 800790e: f85d 7b04 ldr.w r7, [sp], #4 - 8007912: 4770 bx lr - 8007914: 2000036c .word 0x2000036c - 8007918: 200003b8 .word 0x200003b8 + 8007964: bf00 nop + 8007966: 370c adds r7, #12 + 8007968: 46bd mov sp, r7 + 800796a: f85d 7b04 ldr.w r7, [sp], #4 + 800796e: 4770 bx lr + 8007970: 20000378 .word 0x20000378 + 8007974: 200003c4 .word 0x200003c4 -0800791c : +08007978 : /*-----------------------------------------------------------*/ #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) ) BaseType_t xTaskGetSchedulerState( void ) { - 800791c: b480 push {r7} - 800791e: b083 sub sp, #12 - 8007920: af00 add r7, sp, #0 + 8007978: b480 push {r7} + 800797a: b083 sub sp, #12 + 800797c: af00 add r7, sp, #0 BaseType_t xReturn; if( xSchedulerRunning == pdFALSE ) - 8007922: 4b0b ldr r3, [pc, #44] @ (8007950 ) - 8007924: 681b ldr r3, [r3, #0] - 8007926: 2b00 cmp r3, #0 - 8007928: d102 bne.n 8007930 + 800797e: 4b0b ldr r3, [pc, #44] @ (80079ac ) + 8007980: 681b ldr r3, [r3, #0] + 8007982: 2b00 cmp r3, #0 + 8007984: d102 bne.n 800798c { xReturn = taskSCHEDULER_NOT_STARTED; - 800792a: 2301 movs r3, #1 - 800792c: 607b str r3, [r7, #4] - 800792e: e008 b.n 8007942 + 8007986: 2301 movs r3, #1 + 8007988: 607b str r3, [r7, #4] + 800798a: e008 b.n 800799e } else { if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) - 8007930: 4b08 ldr r3, [pc, #32] @ (8007954 ) - 8007932: 681b ldr r3, [r3, #0] - 8007934: 2b00 cmp r3, #0 - 8007936: d102 bne.n 800793e + 800798c: 4b08 ldr r3, [pc, #32] @ (80079b0 ) + 800798e: 681b ldr r3, [r3, #0] + 8007990: 2b00 cmp r3, #0 + 8007992: d102 bne.n 800799a { xReturn = taskSCHEDULER_RUNNING; - 8007938: 2302 movs r3, #2 - 800793a: 607b str r3, [r7, #4] - 800793c: e001 b.n 8007942 + 8007994: 2302 movs r3, #2 + 8007996: 607b str r3, [r7, #4] + 8007998: e001 b.n 800799e } else { xReturn = taskSCHEDULER_SUSPENDED; - 800793e: 2300 movs r3, #0 - 8007940: 607b str r3, [r7, #4] + 800799a: 2300 movs r3, #0 + 800799c: 607b str r3, [r7, #4] } } return xReturn; - 8007942: 687b ldr r3, [r7, #4] + 800799e: 687b ldr r3, [r7, #4] } - 8007944: 4618 mov r0, r3 - 8007946: 370c adds r7, #12 - 8007948: 46bd mov sp, r7 - 800794a: f85d 7b04 ldr.w r7, [sp], #4 - 800794e: 4770 bx lr - 8007950: 200003a8 .word 0x200003a8 - 8007954: 200003bc .word 0x200003bc + 80079a0: 4618 mov r0, r3 + 80079a2: 370c adds r7, #12 + 80079a4: 46bd mov sp, r7 + 80079a6: f85d 7b04 ldr.w r7, [sp], #4 + 80079aa: 4770 bx lr + 80079ac: 200003b4 .word 0x200003b4 + 80079b0: 200003c8 .word 0x200003c8 -08007958 : +080079b4 : /*-----------------------------------------------------------*/ #if ( configUSE_MUTEXES == 1 ) BaseType_t xTaskPriorityDisinherit( TaskHandle_t const pxMutexHolder ) { - 8007958: b580 push {r7, lr} - 800795a: b086 sub sp, #24 - 800795c: af00 add r7, sp, #0 - 800795e: 6078 str r0, [r7, #4] + 80079b4: b580 push {r7, lr} + 80079b6: b086 sub sp, #24 + 80079b8: af00 add r7, sp, #0 + 80079ba: 6078 str r0, [r7, #4] TCB_t * const pxTCB = pxMutexHolder; - 8007960: 687b ldr r3, [r7, #4] - 8007962: 613b str r3, [r7, #16] + 80079bc: 687b ldr r3, [r7, #4] + 80079be: 613b str r3, [r7, #16] BaseType_t xReturn = pdFALSE; - 8007964: 2300 movs r3, #0 - 8007966: 617b str r3, [r7, #20] + 80079c0: 2300 movs r3, #0 + 80079c2: 617b str r3, [r7, #20] if( pxMutexHolder != NULL ) - 8007968: 687b ldr r3, [r7, #4] - 800796a: 2b00 cmp r3, #0 - 800796c: d070 beq.n 8007a50 + 80079c4: 687b ldr r3, [r7, #4] + 80079c6: 2b00 cmp r3, #0 + 80079c8: d070 beq.n 8007aac { /* A task can only have an inherited priority if it holds the mutex. If the mutex is held by a task then it cannot be given from an interrupt, and if a mutex is given by the holding task then it must be the running state task. */ configASSERT( pxTCB == pxCurrentTCB ); - 800796e: 4b3b ldr r3, [pc, #236] @ (8007a5c ) - 8007970: 681b ldr r3, [r3, #0] - 8007972: 693a ldr r2, [r7, #16] - 8007974: 429a cmp r2, r3 - 8007976: d00b beq.n 8007990 + 80079ca: 4b3b ldr r3, [pc, #236] @ (8007ab8 ) + 80079cc: 681b ldr r3, [r3, #0] + 80079ce: 693a ldr r2, [r7, #16] + 80079d0: 429a cmp r2, r3 + 80079d2: d00b beq.n 80079ec __asm volatile - 8007978: f04f 0350 mov.w r3, #80 @ 0x50 - 800797c: f383 8811 msr BASEPRI, r3 - 8007980: f3bf 8f6f isb sy - 8007984: f3bf 8f4f dsb sy - 8007988: 60fb str r3, [r7, #12] + 80079d4: f04f 0350 mov.w r3, #80 @ 0x50 + 80079d8: f383 8811 msr BASEPRI, r3 + 80079dc: f3bf 8f6f isb sy + 80079e0: f3bf 8f4f dsb sy + 80079e4: 60fb str r3, [r7, #12] } - 800798a: bf00 nop - 800798c: bf00 nop - 800798e: e7fd b.n 800798c + 80079e6: bf00 nop + 80079e8: bf00 nop + 80079ea: e7fd b.n 80079e8 configASSERT( pxTCB->uxMutexesHeld ); - 8007990: 693b ldr r3, [r7, #16] - 8007992: 6c9b ldr r3, [r3, #72] @ 0x48 - 8007994: 2b00 cmp r3, #0 - 8007996: d10b bne.n 80079b0 + 80079ec: 693b ldr r3, [r7, #16] + 80079ee: 6c9b ldr r3, [r3, #72] @ 0x48 + 80079f0: 2b00 cmp r3, #0 + 80079f2: d10b bne.n 8007a0c __asm volatile - 8007998: f04f 0350 mov.w r3, #80 @ 0x50 - 800799c: f383 8811 msr BASEPRI, r3 - 80079a0: f3bf 8f6f isb sy - 80079a4: f3bf 8f4f dsb sy - 80079a8: 60bb str r3, [r7, #8] + 80079f4: f04f 0350 mov.w r3, #80 @ 0x50 + 80079f8: f383 8811 msr BASEPRI, r3 + 80079fc: f3bf 8f6f isb sy + 8007a00: f3bf 8f4f dsb sy + 8007a04: 60bb str r3, [r7, #8] } - 80079aa: bf00 nop - 80079ac: bf00 nop - 80079ae: e7fd b.n 80079ac + 8007a06: bf00 nop + 8007a08: bf00 nop + 8007a0a: e7fd b.n 8007a08 ( pxTCB->uxMutexesHeld )--; - 80079b0: 693b ldr r3, [r7, #16] - 80079b2: 6c9b ldr r3, [r3, #72] @ 0x48 - 80079b4: 1e5a subs r2, r3, #1 - 80079b6: 693b ldr r3, [r7, #16] - 80079b8: 649a str r2, [r3, #72] @ 0x48 + 8007a0c: 693b ldr r3, [r7, #16] + 8007a0e: 6c9b ldr r3, [r3, #72] @ 0x48 + 8007a10: 1e5a subs r2, r3, #1 + 8007a12: 693b ldr r3, [r7, #16] + 8007a14: 649a str r2, [r3, #72] @ 0x48 /* Has the holder of the mutex inherited the priority of another task? */ if( pxTCB->uxPriority != pxTCB->uxBasePriority ) - 80079ba: 693b ldr r3, [r7, #16] - 80079bc: 6ada ldr r2, [r3, #44] @ 0x2c - 80079be: 693b ldr r3, [r7, #16] - 80079c0: 6c5b ldr r3, [r3, #68] @ 0x44 - 80079c2: 429a cmp r2, r3 - 80079c4: d044 beq.n 8007a50 + 8007a16: 693b ldr r3, [r7, #16] + 8007a18: 6ada ldr r2, [r3, #44] @ 0x2c + 8007a1a: 693b ldr r3, [r7, #16] + 8007a1c: 6c5b ldr r3, [r3, #68] @ 0x44 + 8007a1e: 429a cmp r2, r3 + 8007a20: d044 beq.n 8007aac { /* Only disinherit if no other mutexes are held. */ if( pxTCB->uxMutexesHeld == ( UBaseType_t ) 0 ) - 80079c6: 693b ldr r3, [r7, #16] - 80079c8: 6c9b ldr r3, [r3, #72] @ 0x48 - 80079ca: 2b00 cmp r3, #0 - 80079cc: d140 bne.n 8007a50 + 8007a22: 693b ldr r3, [r7, #16] + 8007a24: 6c9b ldr r3, [r3, #72] @ 0x48 + 8007a26: 2b00 cmp r3, #0 + 8007a28: d140 bne.n 8007aac /* A task can only have an inherited priority if it holds the mutex. If the mutex is held by a task then it cannot be given from an interrupt, and if a mutex is given by the holding task then it must be the running state task. Remove the holding task from the ready/delayed list. */ if( uxListRemove( &( pxTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) - 80079ce: 693b ldr r3, [r7, #16] - 80079d0: 3304 adds r3, #4 - 80079d2: 4618 mov r0, r3 - 80079d4: f7ff f9ad bl 8006d32 - 80079d8: 4603 mov r3, r0 - 80079da: 2b00 cmp r3, #0 - 80079dc: d115 bne.n 8007a0a + 8007a2a: 693b ldr r3, [r7, #16] + 8007a2c: 3304 adds r3, #4 + 8007a2e: 4618 mov r0, r3 + 8007a30: f7ff f9ad bl 8006d8e + 8007a34: 4603 mov r3, r0 + 8007a36: 2b00 cmp r3, #0 + 8007a38: d115 bne.n 8007a66 { taskRESET_READY_PRIORITY( pxTCB->uxPriority ); - 80079de: 693b ldr r3, [r7, #16] - 80079e0: 6ada ldr r2, [r3, #44] @ 0x2c - 80079e2: 491f ldr r1, [pc, #124] @ (8007a60 ) - 80079e4: 4613 mov r3, r2 - 80079e6: 009b lsls r3, r3, #2 - 80079e8: 4413 add r3, r2 - 80079ea: 009b lsls r3, r3, #2 - 80079ec: 440b add r3, r1 - 80079ee: 681b ldr r3, [r3, #0] - 80079f0: 2b00 cmp r3, #0 - 80079f2: d10a bne.n 8007a0a - 80079f4: 693b ldr r3, [r7, #16] - 80079f6: 6adb ldr r3, [r3, #44] @ 0x2c - 80079f8: 2201 movs r2, #1 - 80079fa: fa02 f303 lsl.w r3, r2, r3 - 80079fe: 43da mvns r2, r3 - 8007a00: 4b18 ldr r3, [pc, #96] @ (8007a64 ) - 8007a02: 681b ldr r3, [r3, #0] - 8007a04: 4013 ands r3, r2 - 8007a06: 4a17 ldr r2, [pc, #92] @ (8007a64 ) - 8007a08: 6013 str r3, [r2, #0] + 8007a3a: 693b ldr r3, [r7, #16] + 8007a3c: 6ada ldr r2, [r3, #44] @ 0x2c + 8007a3e: 491f ldr r1, [pc, #124] @ (8007abc ) + 8007a40: 4613 mov r3, r2 + 8007a42: 009b lsls r3, r3, #2 + 8007a44: 4413 add r3, r2 + 8007a46: 009b lsls r3, r3, #2 + 8007a48: 440b add r3, r1 + 8007a4a: 681b ldr r3, [r3, #0] + 8007a4c: 2b00 cmp r3, #0 + 8007a4e: d10a bne.n 8007a66 + 8007a50: 693b ldr r3, [r7, #16] + 8007a52: 6adb ldr r3, [r3, #44] @ 0x2c + 8007a54: 2201 movs r2, #1 + 8007a56: fa02 f303 lsl.w r3, r2, r3 + 8007a5a: 43da mvns r2, r3 + 8007a5c: 4b18 ldr r3, [pc, #96] @ (8007ac0 ) + 8007a5e: 681b ldr r3, [r3, #0] + 8007a60: 4013 ands r3, r2 + 8007a62: 4a17 ldr r2, [pc, #92] @ (8007ac0 ) + 8007a64: 6013 str r3, [r2, #0] } /* Disinherit the priority before adding the task into the new ready list. */ traceTASK_PRIORITY_DISINHERIT( pxTCB, pxTCB->uxBasePriority ); pxTCB->uxPriority = pxTCB->uxBasePriority; - 8007a0a: 693b ldr r3, [r7, #16] - 8007a0c: 6c5a ldr r2, [r3, #68] @ 0x44 - 8007a0e: 693b ldr r3, [r7, #16] - 8007a10: 62da str r2, [r3, #44] @ 0x2c + 8007a66: 693b ldr r3, [r7, #16] + 8007a68: 6c5a ldr r2, [r3, #68] @ 0x44 + 8007a6a: 693b ldr r3, [r7, #16] + 8007a6c: 62da str r2, [r3, #44] @ 0x2c /* Reset the event list item value. It cannot be in use for any other purpose if this task is running, and it must be running to give back the mutex. */ listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) pxTCB->uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ - 8007a12: 693b ldr r3, [r7, #16] - 8007a14: 6adb ldr r3, [r3, #44] @ 0x2c - 8007a16: f1c3 0207 rsb r2, r3, #7 - 8007a1a: 693b ldr r3, [r7, #16] - 8007a1c: 619a str r2, [r3, #24] + 8007a6e: 693b ldr r3, [r7, #16] + 8007a70: 6adb ldr r3, [r3, #44] @ 0x2c + 8007a72: f1c3 0207 rsb r2, r3, #7 + 8007a76: 693b ldr r3, [r7, #16] + 8007a78: 619a str r2, [r3, #24] prvAddTaskToReadyList( pxTCB ); - 8007a1e: 693b ldr r3, [r7, #16] - 8007a20: 6adb ldr r3, [r3, #44] @ 0x2c - 8007a22: 2201 movs r2, #1 - 8007a24: 409a lsls r2, r3 - 8007a26: 4b0f ldr r3, [pc, #60] @ (8007a64 ) - 8007a28: 681b ldr r3, [r3, #0] - 8007a2a: 4313 orrs r3, r2 - 8007a2c: 4a0d ldr r2, [pc, #52] @ (8007a64 ) - 8007a2e: 6013 str r3, [r2, #0] - 8007a30: 693b ldr r3, [r7, #16] - 8007a32: 6ada ldr r2, [r3, #44] @ 0x2c - 8007a34: 4613 mov r3, r2 - 8007a36: 009b lsls r3, r3, #2 - 8007a38: 4413 add r3, r2 - 8007a3a: 009b lsls r3, r3, #2 - 8007a3c: 4a08 ldr r2, [pc, #32] @ (8007a60 ) - 8007a3e: 441a add r2, r3 - 8007a40: 693b ldr r3, [r7, #16] - 8007a42: 3304 adds r3, #4 - 8007a44: 4619 mov r1, r3 - 8007a46: 4610 mov r0, r2 - 8007a48: f7ff f916 bl 8006c78 + 8007a7a: 693b ldr r3, [r7, #16] + 8007a7c: 6adb ldr r3, [r3, #44] @ 0x2c + 8007a7e: 2201 movs r2, #1 + 8007a80: 409a lsls r2, r3 + 8007a82: 4b0f ldr r3, [pc, #60] @ (8007ac0 ) + 8007a84: 681b ldr r3, [r3, #0] + 8007a86: 4313 orrs r3, r2 + 8007a88: 4a0d ldr r2, [pc, #52] @ (8007ac0 ) + 8007a8a: 6013 str r3, [r2, #0] + 8007a8c: 693b ldr r3, [r7, #16] + 8007a8e: 6ada ldr r2, [r3, #44] @ 0x2c + 8007a90: 4613 mov r3, r2 + 8007a92: 009b lsls r3, r3, #2 + 8007a94: 4413 add r3, r2 + 8007a96: 009b lsls r3, r3, #2 + 8007a98: 4a08 ldr r2, [pc, #32] @ (8007abc ) + 8007a9a: 441a add r2, r3 + 8007a9c: 693b ldr r3, [r7, #16] + 8007a9e: 3304 adds r3, #4 + 8007aa0: 4619 mov r1, r3 + 8007aa2: 4610 mov r0, r2 + 8007aa4: f7ff f916 bl 8006cd4 in an order different to that in which they were taken. If a context switch did not occur when the first mutex was returned, even if a task was waiting on it, then a context switch should occur when the last mutex is returned whether a task is waiting on it or not. */ xReturn = pdTRUE; - 8007a4c: 2301 movs r3, #1 - 8007a4e: 617b str r3, [r7, #20] + 8007aa8: 2301 movs r3, #1 + 8007aaa: 617b str r3, [r7, #20] else { mtCOVERAGE_TEST_MARKER(); } return xReturn; - 8007a50: 697b ldr r3, [r7, #20] + 8007aac: 697b ldr r3, [r7, #20] } - 8007a52: 4618 mov r0, r3 - 8007a54: 3718 adds r7, #24 - 8007a56: 46bd mov sp, r7 - 8007a58: bd80 pop {r7, pc} - 8007a5a: bf00 nop - 8007a5c: 200002dc .word 0x200002dc - 8007a60: 200002e0 .word 0x200002e0 - 8007a64: 200003a4 .word 0x200003a4 + 8007aae: 4618 mov r0, r3 + 8007ab0: 3718 adds r7, #24 + 8007ab2: 46bd mov sp, r7 + 8007ab4: bd80 pop {r7, pc} + 8007ab6: bf00 nop + 8007ab8: 200002e8 .word 0x200002e8 + 8007abc: 200002ec .word 0x200002ec + 8007ac0: 200003b0 .word 0x200003b0 -08007a68 : +08007ac4 : #endif /*-----------------------------------------------------------*/ static void prvAddCurrentTaskToDelayedList( TickType_t xTicksToWait, const BaseType_t xCanBlockIndefinitely ) { - 8007a68: b580 push {r7, lr} - 8007a6a: b084 sub sp, #16 - 8007a6c: af00 add r7, sp, #0 - 8007a6e: 6078 str r0, [r7, #4] - 8007a70: 6039 str r1, [r7, #0] + 8007ac4: b580 push {r7, lr} + 8007ac6: b084 sub sp, #16 + 8007ac8: af00 add r7, sp, #0 + 8007aca: 6078 str r0, [r7, #4] + 8007acc: 6039 str r1, [r7, #0] TickType_t xTimeToWake; const TickType_t xConstTickCount = xTickCount; - 8007a72: 4b29 ldr r3, [pc, #164] @ (8007b18 ) - 8007a74: 681b ldr r3, [r3, #0] - 8007a76: 60fb str r3, [r7, #12] + 8007ace: 4b29 ldr r3, [pc, #164] @ (8007b74 ) + 8007ad0: 681b ldr r3, [r3, #0] + 8007ad2: 60fb str r3, [r7, #12] } #endif /* Remove the task from the ready list before adding it to the blocked list as the same list item is used for both lists. */ if( uxListRemove( &( pxCurrentTCB->xStateListItem ) ) == ( UBaseType_t ) 0 ) - 8007a78: 4b28 ldr r3, [pc, #160] @ (8007b1c ) - 8007a7a: 681b ldr r3, [r3, #0] - 8007a7c: 3304 adds r3, #4 - 8007a7e: 4618 mov r0, r3 - 8007a80: f7ff f957 bl 8006d32 - 8007a84: 4603 mov r3, r0 - 8007a86: 2b00 cmp r3, #0 - 8007a88: d10b bne.n 8007aa2 + 8007ad4: 4b28 ldr r3, [pc, #160] @ (8007b78 ) + 8007ad6: 681b ldr r3, [r3, #0] + 8007ad8: 3304 adds r3, #4 + 8007ada: 4618 mov r0, r3 + 8007adc: f7ff f957 bl 8006d8e + 8007ae0: 4603 mov r3, r0 + 8007ae2: 2b00 cmp r3, #0 + 8007ae4: d10b bne.n 8007afe { /* The current task must be in a ready list, so there is no need to check, and the port reset macro can be called directly. */ portRESET_READY_PRIORITY( pxCurrentTCB->uxPriority, uxTopReadyPriority ); /*lint !e931 pxCurrentTCB cannot change as it is the calling task. pxCurrentTCB->uxPriority and uxTopReadyPriority cannot change as called with scheduler suspended or in a critical section. */ - 8007a8a: 4b24 ldr r3, [pc, #144] @ (8007b1c ) - 8007a8c: 681b ldr r3, [r3, #0] - 8007a8e: 6adb ldr r3, [r3, #44] @ 0x2c - 8007a90: 2201 movs r2, #1 - 8007a92: fa02 f303 lsl.w r3, r2, r3 - 8007a96: 43da mvns r2, r3 - 8007a98: 4b21 ldr r3, [pc, #132] @ (8007b20 ) - 8007a9a: 681b ldr r3, [r3, #0] - 8007a9c: 4013 ands r3, r2 - 8007a9e: 4a20 ldr r2, [pc, #128] @ (8007b20 ) - 8007aa0: 6013 str r3, [r2, #0] + 8007ae6: 4b24 ldr r3, [pc, #144] @ (8007b78 ) + 8007ae8: 681b ldr r3, [r3, #0] + 8007aea: 6adb ldr r3, [r3, #44] @ 0x2c + 8007aec: 2201 movs r2, #1 + 8007aee: fa02 f303 lsl.w r3, r2, r3 + 8007af2: 43da mvns r2, r3 + 8007af4: 4b21 ldr r3, [pc, #132] @ (8007b7c ) + 8007af6: 681b ldr r3, [r3, #0] + 8007af8: 4013 ands r3, r2 + 8007afa: 4a20 ldr r2, [pc, #128] @ (8007b7c ) + 8007afc: 6013 str r3, [r2, #0] mtCOVERAGE_TEST_MARKER(); } #if ( INCLUDE_vTaskSuspend == 1 ) { if( ( xTicksToWait == portMAX_DELAY ) && ( xCanBlockIndefinitely != pdFALSE ) ) - 8007aa2: 687b ldr r3, [r7, #4] - 8007aa4: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff - 8007aa8: d10a bne.n 8007ac0 - 8007aaa: 683b ldr r3, [r7, #0] - 8007aac: 2b00 cmp r3, #0 - 8007aae: d007 beq.n 8007ac0 + 8007afe: 687b ldr r3, [r7, #4] + 8007b00: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 8007b04: d10a bne.n 8007b1c + 8007b06: 683b ldr r3, [r7, #0] + 8007b08: 2b00 cmp r3, #0 + 8007b0a: d007 beq.n 8007b1c { /* Add the task to the suspended task list instead of a delayed task list to ensure it is not woken by a timing event. It will block indefinitely. */ vListInsertEnd( &xSuspendedTaskList, &( pxCurrentTCB->xStateListItem ) ); - 8007ab0: 4b1a ldr r3, [pc, #104] @ (8007b1c ) - 8007ab2: 681b ldr r3, [r3, #0] - 8007ab4: 3304 adds r3, #4 - 8007ab6: 4619 mov r1, r3 - 8007ab8: 481a ldr r0, [pc, #104] @ (8007b24 ) - 8007aba: f7ff f8dd bl 8006c78 + 8007b0c: 4b1a ldr r3, [pc, #104] @ (8007b78 ) + 8007b0e: 681b ldr r3, [r3, #0] + 8007b10: 3304 adds r3, #4 + 8007b12: 4619 mov r1, r3 + 8007b14: 481a ldr r0, [pc, #104] @ (8007b80 ) + 8007b16: f7ff f8dd bl 8006cd4 /* Avoid compiler warning when INCLUDE_vTaskSuspend is not 1. */ ( void ) xCanBlockIndefinitely; } #endif /* INCLUDE_vTaskSuspend */ } - 8007abe: e026 b.n 8007b0e + 8007b1a: e026 b.n 8007b6a xTimeToWake = xConstTickCount + xTicksToWait; - 8007ac0: 68fa ldr r2, [r7, #12] - 8007ac2: 687b ldr r3, [r7, #4] - 8007ac4: 4413 add r3, r2 - 8007ac6: 60bb str r3, [r7, #8] + 8007b1c: 68fa ldr r2, [r7, #12] + 8007b1e: 687b ldr r3, [r7, #4] + 8007b20: 4413 add r3, r2 + 8007b22: 60bb str r3, [r7, #8] listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xStateListItem ), xTimeToWake ); - 8007ac8: 4b14 ldr r3, [pc, #80] @ (8007b1c ) - 8007aca: 681b ldr r3, [r3, #0] - 8007acc: 68ba ldr r2, [r7, #8] - 8007ace: 605a str r2, [r3, #4] + 8007b24: 4b14 ldr r3, [pc, #80] @ (8007b78 ) + 8007b26: 681b ldr r3, [r3, #0] + 8007b28: 68ba ldr r2, [r7, #8] + 8007b2a: 605a str r2, [r3, #4] if( xTimeToWake < xConstTickCount ) - 8007ad0: 68ba ldr r2, [r7, #8] - 8007ad2: 68fb ldr r3, [r7, #12] - 8007ad4: 429a cmp r2, r3 - 8007ad6: d209 bcs.n 8007aec + 8007b2c: 68ba ldr r2, [r7, #8] + 8007b2e: 68fb ldr r3, [r7, #12] + 8007b30: 429a cmp r2, r3 + 8007b32: d209 bcs.n 8007b48 vListInsert( pxOverflowDelayedTaskList, &( pxCurrentTCB->xStateListItem ) ); - 8007ad8: 4b13 ldr r3, [pc, #76] @ (8007b28 ) - 8007ada: 681a ldr r2, [r3, #0] - 8007adc: 4b0f ldr r3, [pc, #60] @ (8007b1c ) - 8007ade: 681b ldr r3, [r3, #0] - 8007ae0: 3304 adds r3, #4 - 8007ae2: 4619 mov r1, r3 - 8007ae4: 4610 mov r0, r2 - 8007ae6: f7ff f8eb bl 8006cc0 + 8007b34: 4b13 ldr r3, [pc, #76] @ (8007b84 ) + 8007b36: 681a ldr r2, [r3, #0] + 8007b38: 4b0f ldr r3, [pc, #60] @ (8007b78 ) + 8007b3a: 681b ldr r3, [r3, #0] + 8007b3c: 3304 adds r3, #4 + 8007b3e: 4619 mov r1, r3 + 8007b40: 4610 mov r0, r2 + 8007b42: f7ff f8eb bl 8006d1c } - 8007aea: e010 b.n 8007b0e + 8007b46: e010 b.n 8007b6a vListInsert( pxDelayedTaskList, &( pxCurrentTCB->xStateListItem ) ); - 8007aec: 4b0f ldr r3, [pc, #60] @ (8007b2c ) - 8007aee: 681a ldr r2, [r3, #0] - 8007af0: 4b0a ldr r3, [pc, #40] @ (8007b1c ) - 8007af2: 681b ldr r3, [r3, #0] - 8007af4: 3304 adds r3, #4 - 8007af6: 4619 mov r1, r3 - 8007af8: 4610 mov r0, r2 - 8007afa: f7ff f8e1 bl 8006cc0 + 8007b48: 4b0f ldr r3, [pc, #60] @ (8007b88 ) + 8007b4a: 681a ldr r2, [r3, #0] + 8007b4c: 4b0a ldr r3, [pc, #40] @ (8007b78 ) + 8007b4e: 681b ldr r3, [r3, #0] + 8007b50: 3304 adds r3, #4 + 8007b52: 4619 mov r1, r3 + 8007b54: 4610 mov r0, r2 + 8007b56: f7ff f8e1 bl 8006d1c if( xTimeToWake < xNextTaskUnblockTime ) - 8007afe: 4b0c ldr r3, [pc, #48] @ (8007b30 ) - 8007b00: 681b ldr r3, [r3, #0] - 8007b02: 68ba ldr r2, [r7, #8] - 8007b04: 429a cmp r2, r3 - 8007b06: d202 bcs.n 8007b0e + 8007b5a: 4b0c ldr r3, [pc, #48] @ (8007b8c ) + 8007b5c: 681b ldr r3, [r3, #0] + 8007b5e: 68ba ldr r2, [r7, #8] + 8007b60: 429a cmp r2, r3 + 8007b62: d202 bcs.n 8007b6a xNextTaskUnblockTime = xTimeToWake; - 8007b08: 4a09 ldr r2, [pc, #36] @ (8007b30 ) - 8007b0a: 68bb ldr r3, [r7, #8] - 8007b0c: 6013 str r3, [r2, #0] + 8007b64: 4a09 ldr r2, [pc, #36] @ (8007b8c ) + 8007b66: 68bb ldr r3, [r7, #8] + 8007b68: 6013 str r3, [r2, #0] } - 8007b0e: bf00 nop - 8007b10: 3710 adds r7, #16 - 8007b12: 46bd mov sp, r7 - 8007b14: bd80 pop {r7, pc} - 8007b16: bf00 nop - 8007b18: 200003a0 .word 0x200003a0 - 8007b1c: 200002dc .word 0x200002dc - 8007b20: 200003a4 .word 0x200003a4 - 8007b24: 20000388 .word 0x20000388 - 8007b28: 20000370 .word 0x20000370 - 8007b2c: 2000036c .word 0x2000036c - 8007b30: 200003b8 .word 0x200003b8 - ... + 8007b6a: bf00 nop + 8007b6c: 3710 adds r7, #16 + 8007b6e: 46bd mov sp, r7 + 8007b70: bd80 pop {r7, pc} + 8007b72: bf00 nop + 8007b74: 200003ac .word 0x200003ac + 8007b78: 200002e8 .word 0x200002e8 + 8007b7c: 200003b0 .word 0x200003b0 + 8007b80: 20000394 .word 0x20000394 + 8007b84: 2000037c .word 0x2000037c + 8007b88: 20000378 .word 0x20000378 + 8007b8c: 200003c4 .word 0x200003c4 -08007b40 : +08007b90 : } /*-----------------------------------------------------------*/ void vPortSVCHandler( void ) { __asm volatile ( - 8007b40: 4b07 ldr r3, [pc, #28] @ (8007b60 ) - 8007b42: 6819 ldr r1, [r3, #0] - 8007b44: 6808 ldr r0, [r1, #0] - 8007b46: e8b0 4ff0 ldmia.w r0!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8007b4a: f380 8809 msr PSP, r0 - 8007b4e: f3bf 8f6f isb sy - 8007b52: f04f 0000 mov.w r0, #0 - 8007b56: f380 8811 msr BASEPRI, r0 - 8007b5a: 4770 bx lr - 8007b5c: f3af 8000 nop.w + 8007b90: 4b07 ldr r3, [pc, #28] @ (8007bb0 ) + 8007b92: 6819 ldr r1, [r3, #0] + 8007b94: 6808 ldr r0, [r1, #0] + 8007b96: e8b0 4ff0 ldmia.w r0!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8007b9a: f380 8809 msr PSP, r0 + 8007b9e: f3bf 8f6f isb sy + 8007ba2: f04f 0000 mov.w r0, #0 + 8007ba6: f380 8811 msr BASEPRI, r0 + 8007baa: 4770 bx lr + 8007bac: f3af 8000 nop.w -08007b60 : - 8007b60: 200002dc .word 0x200002dc +08007bb0 : + 8007bb0: 200002e8 .word 0x200002e8 " bx r14 \n" " \n" " .align 4 \n" "pxCurrentTCBConst2: .word pxCurrentTCB \n" ); } - 8007b64: bf00 nop - 8007b66: bf00 nop + 8007bb4: bf00 nop + 8007bb6: bf00 nop -08007b68 : +08007bb8 : configASSERT( uxCriticalNesting == 1000UL ); } /*-----------------------------------------------------------*/ void vPortEnterCritical( void ) { - 8007b68: b480 push {r7} - 8007b6a: b083 sub sp, #12 - 8007b6c: af00 add r7, sp, #0 + 8007bb8: b480 push {r7} + 8007bba: b083 sub sp, #12 + 8007bbc: af00 add r7, sp, #0 __asm volatile - 8007b6e: f04f 0350 mov.w r3, #80 @ 0x50 - 8007b72: f383 8811 msr BASEPRI, r3 - 8007b76: f3bf 8f6f isb sy - 8007b7a: f3bf 8f4f dsb sy - 8007b7e: 607b str r3, [r7, #4] + 8007bbe: f04f 0350 mov.w r3, #80 @ 0x50 + 8007bc2: f383 8811 msr BASEPRI, r3 + 8007bc6: f3bf 8f6f isb sy + 8007bca: f3bf 8f4f dsb sy + 8007bce: 607b str r3, [r7, #4] } - 8007b80: bf00 nop + 8007bd0: bf00 nop portDISABLE_INTERRUPTS(); uxCriticalNesting++; - 8007b82: 4b10 ldr r3, [pc, #64] @ (8007bc4 ) - 8007b84: 681b ldr r3, [r3, #0] - 8007b86: 3301 adds r3, #1 - 8007b88: 4a0e ldr r2, [pc, #56] @ (8007bc4 ) - 8007b8a: 6013 str r3, [r2, #0] + 8007bd2: 4b10 ldr r3, [pc, #64] @ (8007c14 ) + 8007bd4: 681b ldr r3, [r3, #0] + 8007bd6: 3301 adds r3, #1 + 8007bd8: 4a0e ldr r2, [pc, #56] @ (8007c14 ) + 8007bda: 6013 str r3, [r2, #0] /* This is not the interrupt safe version of the enter critical function so assert() if it is being called from an interrupt context. Only API functions that end in "FromISR" can be used in an interrupt. Only assert if the critical nesting count is 1 to protect against recursive calls if the assert function also uses a critical section. */ if( uxCriticalNesting == 1 ) - 8007b8c: 4b0d ldr r3, [pc, #52] @ (8007bc4 ) - 8007b8e: 681b ldr r3, [r3, #0] - 8007b90: 2b01 cmp r3, #1 - 8007b92: d110 bne.n 8007bb6 + 8007bdc: 4b0d ldr r3, [pc, #52] @ (8007c14 ) + 8007bde: 681b ldr r3, [r3, #0] + 8007be0: 2b01 cmp r3, #1 + 8007be2: d110 bne.n 8007c06 { configASSERT( ( portNVIC_INT_CTRL_REG & portVECTACTIVE_MASK ) == 0 ); - 8007b94: 4b0c ldr r3, [pc, #48] @ (8007bc8 ) - 8007b96: 681b ldr r3, [r3, #0] - 8007b98: b2db uxtb r3, r3 - 8007b9a: 2b00 cmp r3, #0 - 8007b9c: d00b beq.n 8007bb6 + 8007be4: 4b0c ldr r3, [pc, #48] @ (8007c18 ) + 8007be6: 681b ldr r3, [r3, #0] + 8007be8: b2db uxtb r3, r3 + 8007bea: 2b00 cmp r3, #0 + 8007bec: d00b beq.n 8007c06 __asm volatile - 8007b9e: f04f 0350 mov.w r3, #80 @ 0x50 - 8007ba2: f383 8811 msr BASEPRI, r3 - 8007ba6: f3bf 8f6f isb sy - 8007baa: f3bf 8f4f dsb sy - 8007bae: 603b str r3, [r7, #0] + 8007bee: f04f 0350 mov.w r3, #80 @ 0x50 + 8007bf2: f383 8811 msr BASEPRI, r3 + 8007bf6: f3bf 8f6f isb sy + 8007bfa: f3bf 8f4f dsb sy + 8007bfe: 603b str r3, [r7, #0] } - 8007bb0: bf00 nop - 8007bb2: bf00 nop - 8007bb4: e7fd b.n 8007bb2 + 8007c00: bf00 nop + 8007c02: bf00 nop + 8007c04: e7fd b.n 8007c02 } } - 8007bb6: bf00 nop - 8007bb8: 370c adds r7, #12 - 8007bba: 46bd mov sp, r7 - 8007bbc: f85d 7b04 ldr.w r7, [sp], #4 - 8007bc0: 4770 bx lr - 8007bc2: bf00 nop - 8007bc4: 2000000c .word 0x2000000c - 8007bc8: e000ed04 .word 0xe000ed04 + 8007c06: bf00 nop + 8007c08: 370c adds r7, #12 + 8007c0a: 46bd mov sp, r7 + 8007c0c: f85d 7b04 ldr.w r7, [sp], #4 + 8007c10: 4770 bx lr + 8007c12: bf00 nop + 8007c14: 2000000c .word 0x2000000c + 8007c18: e000ed04 .word 0xe000ed04 -08007bcc : +08007c1c : /*-----------------------------------------------------------*/ void vPortExitCritical( void ) { - 8007bcc: b480 push {r7} - 8007bce: b083 sub sp, #12 - 8007bd0: af00 add r7, sp, #0 + 8007c1c: b480 push {r7} + 8007c1e: b083 sub sp, #12 + 8007c20: af00 add r7, sp, #0 configASSERT( uxCriticalNesting ); - 8007bd2: 4b12 ldr r3, [pc, #72] @ (8007c1c ) - 8007bd4: 681b ldr r3, [r3, #0] - 8007bd6: 2b00 cmp r3, #0 - 8007bd8: d10b bne.n 8007bf2 + 8007c22: 4b12 ldr r3, [pc, #72] @ (8007c6c ) + 8007c24: 681b ldr r3, [r3, #0] + 8007c26: 2b00 cmp r3, #0 + 8007c28: d10b bne.n 8007c42 __asm volatile - 8007bda: f04f 0350 mov.w r3, #80 @ 0x50 - 8007bde: f383 8811 msr BASEPRI, r3 - 8007be2: f3bf 8f6f isb sy - 8007be6: f3bf 8f4f dsb sy - 8007bea: 607b str r3, [r7, #4] + 8007c2a: f04f 0350 mov.w r3, #80 @ 0x50 + 8007c2e: f383 8811 msr BASEPRI, r3 + 8007c32: f3bf 8f6f isb sy + 8007c36: f3bf 8f4f dsb sy + 8007c3a: 607b str r3, [r7, #4] } - 8007bec: bf00 nop - 8007bee: bf00 nop - 8007bf0: e7fd b.n 8007bee + 8007c3c: bf00 nop + 8007c3e: bf00 nop + 8007c40: e7fd b.n 8007c3e uxCriticalNesting--; - 8007bf2: 4b0a ldr r3, [pc, #40] @ (8007c1c ) - 8007bf4: 681b ldr r3, [r3, #0] - 8007bf6: 3b01 subs r3, #1 - 8007bf8: 4a08 ldr r2, [pc, #32] @ (8007c1c ) - 8007bfa: 6013 str r3, [r2, #0] + 8007c42: 4b0a ldr r3, [pc, #40] @ (8007c6c ) + 8007c44: 681b ldr r3, [r3, #0] + 8007c46: 3b01 subs r3, #1 + 8007c48: 4a08 ldr r2, [pc, #32] @ (8007c6c ) + 8007c4a: 6013 str r3, [r2, #0] if( uxCriticalNesting == 0 ) - 8007bfc: 4b07 ldr r3, [pc, #28] @ (8007c1c ) - 8007bfe: 681b ldr r3, [r3, #0] - 8007c00: 2b00 cmp r3, #0 - 8007c02: d105 bne.n 8007c10 - 8007c04: 2300 movs r3, #0 - 8007c06: 603b str r3, [r7, #0] + 8007c4c: 4b07 ldr r3, [pc, #28] @ (8007c6c ) + 8007c4e: 681b ldr r3, [r3, #0] + 8007c50: 2b00 cmp r3, #0 + 8007c52: d105 bne.n 8007c60 + 8007c54: 2300 movs r3, #0 + 8007c56: 603b str r3, [r7, #0] __asm volatile - 8007c08: 683b ldr r3, [r7, #0] - 8007c0a: f383 8811 msr BASEPRI, r3 + 8007c58: 683b ldr r3, [r7, #0] + 8007c5a: f383 8811 msr BASEPRI, r3 } - 8007c0e: bf00 nop + 8007c5e: bf00 nop { portENABLE_INTERRUPTS(); } } - 8007c10: bf00 nop - 8007c12: 370c adds r7, #12 - 8007c14: 46bd mov sp, r7 - 8007c16: f85d 7b04 ldr.w r7, [sp], #4 - 8007c1a: 4770 bx lr - 8007c1c: 2000000c .word 0x2000000c + 8007c60: bf00 nop + 8007c62: 370c adds r7, #12 + 8007c64: 46bd mov sp, r7 + 8007c66: f85d 7b04 ldr.w r7, [sp], #4 + 8007c6a: 4770 bx lr + 8007c6c: 2000000c .word 0x2000000c -08007c20 : +08007c70 : void xPortPendSVHandler( void ) { /* This is a naked function. */ __asm volatile - 8007c20: f3ef 8009 mrs r0, PSP - 8007c24: f3bf 8f6f isb sy - 8007c28: 4b15 ldr r3, [pc, #84] @ (8007c80 ) - 8007c2a: 681a ldr r2, [r3, #0] - 8007c2c: f01e 0f10 tst.w lr, #16 - 8007c30: bf08 it eq - 8007c32: ed20 8a10 vstmdbeq r0!, {s16-s31} - 8007c36: e920 4ff0 stmdb r0!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8007c3a: 6010 str r0, [r2, #0] - 8007c3c: e92d 0009 stmdb sp!, {r0, r3} - 8007c40: f04f 0050 mov.w r0, #80 @ 0x50 - 8007c44: f380 8811 msr BASEPRI, r0 - 8007c48: f3bf 8f4f dsb sy - 8007c4c: f3bf 8f6f isb sy - 8007c50: f7ff fcb2 bl 80075b8 - 8007c54: f04f 0000 mov.w r0, #0 - 8007c58: f380 8811 msr BASEPRI, r0 - 8007c5c: bc09 pop {r0, r3} - 8007c5e: 6819 ldr r1, [r3, #0] - 8007c60: 6808 ldr r0, [r1, #0] - 8007c62: e8b0 4ff0 ldmia.w r0!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8007c66: f01e 0f10 tst.w lr, #16 - 8007c6a: bf08 it eq - 8007c6c: ecb0 8a10 vldmiaeq r0!, {s16-s31} - 8007c70: f380 8809 msr PSP, r0 + 8007c70: f3ef 8009 mrs r0, PSP 8007c74: f3bf 8f6f isb sy - 8007c78: 4770 bx lr - 8007c7a: bf00 nop - 8007c7c: f3af 8000 nop.w + 8007c78: 4b15 ldr r3, [pc, #84] @ (8007cd0 ) + 8007c7a: 681a ldr r2, [r3, #0] + 8007c7c: f01e 0f10 tst.w lr, #16 + 8007c80: bf08 it eq + 8007c82: ed20 8a10 vstmdbeq r0!, {s16-s31} + 8007c86: e920 4ff0 stmdb r0!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8007c8a: 6010 str r0, [r2, #0] + 8007c8c: e92d 0009 stmdb sp!, {r0, r3} + 8007c90: f04f 0050 mov.w r0, #80 @ 0x50 + 8007c94: f380 8811 msr BASEPRI, r0 + 8007c98: f3bf 8f4f dsb sy + 8007c9c: f3bf 8f6f isb sy + 8007ca0: f7ff fcb8 bl 8007614 + 8007ca4: f04f 0000 mov.w r0, #0 + 8007ca8: f380 8811 msr BASEPRI, r0 + 8007cac: bc09 pop {r0, r3} + 8007cae: 6819 ldr r1, [r3, #0] + 8007cb0: 6808 ldr r0, [r1, #0] + 8007cb2: e8b0 4ff0 ldmia.w r0!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8007cb6: f01e 0f10 tst.w lr, #16 + 8007cba: bf08 it eq + 8007cbc: ecb0 8a10 vldmiaeq r0!, {s16-s31} + 8007cc0: f380 8809 msr PSP, r0 + 8007cc4: f3bf 8f6f isb sy + 8007cc8: 4770 bx lr + 8007cca: bf00 nop + 8007ccc: f3af 8000 nop.w -08007c80 : - 8007c80: 200002dc .word 0x200002dc +08007cd0 : + 8007cd0: 200002e8 .word 0x200002e8 " \n" " .align 4 \n" "pxCurrentTCBConst: .word pxCurrentTCB \n" ::"i"(configMAX_SYSCALL_INTERRUPT_PRIORITY) ); } - 8007c84: bf00 nop - 8007c86: bf00 nop + 8007cd4: bf00 nop + 8007cd6: bf00 nop -08007c88 : +08007cd8 : /*-----------------------------------------------------------*/ void xPortSysTickHandler( void ) { - 8007c88: b580 push {r7, lr} - 8007c8a: b082 sub sp, #8 - 8007c8c: af00 add r7, sp, #0 + 8007cd8: b580 push {r7, lr} + 8007cda: b082 sub sp, #8 + 8007cdc: af00 add r7, sp, #0 __asm volatile - 8007c8e: f04f 0350 mov.w r3, #80 @ 0x50 - 8007c92: f383 8811 msr BASEPRI, r3 - 8007c96: f3bf 8f6f isb sy - 8007c9a: f3bf 8f4f dsb sy - 8007c9e: 607b str r3, [r7, #4] + 8007cde: f04f 0350 mov.w r3, #80 @ 0x50 + 8007ce2: f383 8811 msr BASEPRI, r3 + 8007ce6: f3bf 8f6f isb sy + 8007cea: f3bf 8f4f dsb sy + 8007cee: 607b str r3, [r7, #4] } - 8007ca0: bf00 nop + 8007cf0: bf00 nop save and then restore the interrupt mask value as its value is already known. */ portDISABLE_INTERRUPTS(); { /* Increment the RTOS tick. */ if( xTaskIncrementTick() != pdFALSE ) - 8007ca2: f7ff fbcf bl 8007444 - 8007ca6: 4603 mov r3, r0 - 8007ca8: 2b00 cmp r3, #0 - 8007caa: d003 beq.n 8007cb4 + 8007cf2: f7ff fbd5 bl 80074a0 + 8007cf6: 4603 mov r3, r0 + 8007cf8: 2b00 cmp r3, #0 + 8007cfa: d003 beq.n 8007d04 { /* A context switch is required. Context switching is performed in the PendSV interrupt. Pend the PendSV interrupt. */ portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT; - 8007cac: 4b06 ldr r3, [pc, #24] @ (8007cc8 ) - 8007cae: f04f 5280 mov.w r2, #268435456 @ 0x10000000 - 8007cb2: 601a str r2, [r3, #0] - 8007cb4: 2300 movs r3, #0 - 8007cb6: 603b str r3, [r7, #0] + 8007cfc: 4b06 ldr r3, [pc, #24] @ (8007d18 ) + 8007cfe: f04f 5280 mov.w r2, #268435456 @ 0x10000000 + 8007d02: 601a str r2, [r3, #0] + 8007d04: 2300 movs r3, #0 + 8007d06: 603b str r3, [r7, #0] __asm volatile - 8007cb8: 683b ldr r3, [r7, #0] - 8007cba: f383 8811 msr BASEPRI, r3 + 8007d08: 683b ldr r3, [r7, #0] + 8007d0a: f383 8811 msr BASEPRI, r3 } - 8007cbe: bf00 nop + 8007d0e: bf00 nop } } portENABLE_INTERRUPTS(); } - 8007cc0: bf00 nop - 8007cc2: 3708 adds r7, #8 - 8007cc4: 46bd mov sp, r7 - 8007cc6: bd80 pop {r7, pc} - 8007cc8: e000ed04 .word 0xe000ed04 + 8007d10: bf00 nop + 8007d12: 3708 adds r7, #8 + 8007d14: 46bd mov sp, r7 + 8007d16: bd80 pop {r7, pc} + 8007d18: e000ed04 .word 0xe000ed04 -08007ccc : +08007d1c : /*-----------------------------------------------------------*/ #if( configASSERT_DEFINED == 1 ) void vPortValidateInterruptPriority( void ) { - 8007ccc: b480 push {r7} - 8007cce: b085 sub sp, #20 - 8007cd0: af00 add r7, sp, #0 + 8007d1c: b480 push {r7} + 8007d1e: b085 sub sp, #20 + 8007d20: af00 add r7, sp, #0 uint32_t ulCurrentInterrupt; uint8_t ucCurrentPriority; /* Obtain the number of the currently executing interrupt. */ __asm volatile( "mrs %0, ipsr" : "=r"( ulCurrentInterrupt ) :: "memory" ); - 8007cd2: f3ef 8305 mrs r3, IPSR - 8007cd6: 60fb str r3, [r7, #12] + 8007d22: f3ef 8305 mrs r3, IPSR + 8007d26: 60fb str r3, [r7, #12] /* Is the interrupt number a user defined interrupt? */ if( ulCurrentInterrupt >= portFIRST_USER_INTERRUPT_NUMBER ) - 8007cd8: 68fb ldr r3, [r7, #12] - 8007cda: 2b0f cmp r3, #15 - 8007cdc: d915 bls.n 8007d0a + 8007d28: 68fb ldr r3, [r7, #12] + 8007d2a: 2b0f cmp r3, #15 + 8007d2c: d915 bls.n 8007d5a { /* Look up the interrupt's priority. */ ucCurrentPriority = pcInterruptPriorityRegisters[ ulCurrentInterrupt ]; - 8007cde: 4a18 ldr r2, [pc, #96] @ (8007d40 ) - 8007ce0: 68fb ldr r3, [r7, #12] - 8007ce2: 4413 add r3, r2 - 8007ce4: 781b ldrb r3, [r3, #0] - 8007ce6: 72fb strb r3, [r7, #11] + 8007d2e: 4a18 ldr r2, [pc, #96] @ (8007d90 ) + 8007d30: 68fb ldr r3, [r7, #12] + 8007d32: 4413 add r3, r2 + 8007d34: 781b ldrb r3, [r3, #0] + 8007d36: 72fb strb r3, [r7, #11] interrupt entry is as fast and simple as possible. The following links provide detailed information: http://www.freertos.org/RTOS-Cortex-M3-M4.html http://www.freertos.org/FAQHelp.html */ configASSERT( ucCurrentPriority >= ucMaxSysCallPriority ); - 8007ce8: 4b16 ldr r3, [pc, #88] @ (8007d44 ) - 8007cea: 781b ldrb r3, [r3, #0] - 8007cec: 7afa ldrb r2, [r7, #11] - 8007cee: 429a cmp r2, r3 - 8007cf0: d20b bcs.n 8007d0a + 8007d38: 4b16 ldr r3, [pc, #88] @ (8007d94 ) + 8007d3a: 781b ldrb r3, [r3, #0] + 8007d3c: 7afa ldrb r2, [r7, #11] + 8007d3e: 429a cmp r2, r3 + 8007d40: d20b bcs.n 8007d5a __asm volatile - 8007cf2: f04f 0350 mov.w r3, #80 @ 0x50 - 8007cf6: f383 8811 msr BASEPRI, r3 - 8007cfa: f3bf 8f6f isb sy - 8007cfe: f3bf 8f4f dsb sy - 8007d02: 607b str r3, [r7, #4] + 8007d42: f04f 0350 mov.w r3, #80 @ 0x50 + 8007d46: f383 8811 msr BASEPRI, r3 + 8007d4a: f3bf 8f6f isb sy + 8007d4e: f3bf 8f4f dsb sy + 8007d52: 607b str r3, [r7, #4] } - 8007d04: bf00 nop - 8007d06: bf00 nop - 8007d08: e7fd b.n 8007d06 + 8007d54: bf00 nop + 8007d56: bf00 nop + 8007d58: e7fd b.n 8007d56 configuration then the correct setting can be achieved on all Cortex-M devices by calling NVIC_SetPriorityGrouping( 0 ); before starting the scheduler. Note however that some vendor specific peripheral libraries assume a non-zero priority group setting, in which cases using a value of zero will result in unpredictable behaviour. */ configASSERT( ( portAIRCR_REG & portPRIORITY_GROUP_MASK ) <= ulMaxPRIGROUPValue ); - 8007d0a: 4b0f ldr r3, [pc, #60] @ (8007d48 ) - 8007d0c: 681b ldr r3, [r3, #0] - 8007d0e: f403 62e0 and.w r2, r3, #1792 @ 0x700 - 8007d12: 4b0e ldr r3, [pc, #56] @ (8007d4c ) - 8007d14: 681b ldr r3, [r3, #0] - 8007d16: 429a cmp r2, r3 - 8007d18: d90b bls.n 8007d32 + 8007d5a: 4b0f ldr r3, [pc, #60] @ (8007d98 ) + 8007d5c: 681b ldr r3, [r3, #0] + 8007d5e: f403 62e0 and.w r2, r3, #1792 @ 0x700 + 8007d62: 4b0e ldr r3, [pc, #56] @ (8007d9c ) + 8007d64: 681b ldr r3, [r3, #0] + 8007d66: 429a cmp r2, r3 + 8007d68: d90b bls.n 8007d82 __asm volatile - 8007d1a: f04f 0350 mov.w r3, #80 @ 0x50 - 8007d1e: f383 8811 msr BASEPRI, r3 - 8007d22: f3bf 8f6f isb sy - 8007d26: f3bf 8f4f dsb sy - 8007d2a: 603b str r3, [r7, #0] + 8007d6a: f04f 0350 mov.w r3, #80 @ 0x50 + 8007d6e: f383 8811 msr BASEPRI, r3 + 8007d72: f3bf 8f6f isb sy + 8007d76: f3bf 8f4f dsb sy + 8007d7a: 603b str r3, [r7, #0] } - 8007d2c: bf00 nop - 8007d2e: bf00 nop - 8007d30: e7fd b.n 8007d2e + 8007d7c: bf00 nop + 8007d7e: bf00 nop + 8007d80: e7fd b.n 8007d7e } - 8007d32: bf00 nop - 8007d34: 3714 adds r7, #20 - 8007d36: 46bd mov sp, r7 - 8007d38: f85d 7b04 ldr.w r7, [sp], #4 - 8007d3c: 4770 bx lr - 8007d3e: bf00 nop - 8007d40: e000e3f0 .word 0xe000e3f0 - 8007d44: 200003c0 .word 0x200003c0 - 8007d48: e000ed0c .word 0xe000ed0c - 8007d4c: 200003c4 .word 0x200003c4 + 8007d82: bf00 nop + 8007d84: 3714 adds r7, #20 + 8007d86: 46bd mov sp, r7 + 8007d88: f85d 7b04 ldr.w r7, [sp], #4 + 8007d8c: 4770 bx lr + 8007d8e: bf00 nop + 8007d90: e000e3f0 .word 0xe000e3f0 + 8007d94: 200003cc .word 0x200003cc + 8007d98: e000ed0c .word 0xe000ed0c + 8007d9c: 200003d0 .word 0x200003d0 -08007d50 : +08007da0 : * @brief SOF callback. * @param hhcd: HCD handle * @retval None */ void HAL_HCD_SOF_Callback(HCD_HandleTypeDef *hhcd) { - 8007d50: b580 push {r7, lr} - 8007d52: b082 sub sp, #8 - 8007d54: af00 add r7, sp, #0 - 8007d56: 6078 str r0, [r7, #4] + 8007da0: b580 push {r7, lr} + 8007da2: b082 sub sp, #8 + 8007da4: af00 add r7, sp, #0 + 8007da6: 6078 str r0, [r7, #4] USBH_LL_IncTimer(hhcd->pData); - 8007d58: 687b ldr r3, [r7, #4] - 8007d5a: f8d3 33dc ldr.w r3, [r3, #988] @ 0x3dc - 8007d5e: 4618 mov r0, r3 - 8007d60: f7fe fe3a bl 80069d8 + 8007da8: 687b ldr r3, [r7, #4] + 8007daa: f8d3 33dc ldr.w r3, [r3, #988] @ 0x3dc + 8007dae: 4618 mov r0, r3 + 8007db0: f7fe fe40 bl 8006a34 } - 8007d64: bf00 nop - 8007d66: 3708 adds r7, #8 - 8007d68: 46bd mov sp, r7 - 8007d6a: bd80 pop {r7, pc} + 8007db4: bf00 nop + 8007db6: 3708 adds r7, #8 + 8007db8: 46bd mov sp, r7 + 8007dba: bd80 pop {r7, pc} -08007d6c : +08007dbc : * @brief SOF callback. * @param hhcd: HCD handle * @retval None */ void HAL_HCD_Connect_Callback(HCD_HandleTypeDef *hhcd) { - 8007d6c: b580 push {r7, lr} - 8007d6e: b082 sub sp, #8 - 8007d70: af00 add r7, sp, #0 - 8007d72: 6078 str r0, [r7, #4] + 8007dbc: b580 push {r7, lr} + 8007dbe: b082 sub sp, #8 + 8007dc0: af00 add r7, sp, #0 + 8007dc2: 6078 str r0, [r7, #4] USBH_LL_Connect(hhcd->pData); - 8007d74: 687b ldr r3, [r7, #4] - 8007d76: f8d3 33dc ldr.w r3, [r3, #988] @ 0x3dc - 8007d7a: 4618 mov r0, r3 - 8007d7c: f7fe fe7a bl 8006a74 + 8007dc4: 687b ldr r3, [r7, #4] + 8007dc6: f8d3 33dc ldr.w r3, [r3, #988] @ 0x3dc + 8007dca: 4618 mov r0, r3 + 8007dcc: f7fe fe80 bl 8006ad0 } - 8007d80: bf00 nop - 8007d82: 3708 adds r7, #8 - 8007d84: 46bd mov sp, r7 - 8007d86: bd80 pop {r7, pc} + 8007dd0: bf00 nop + 8007dd2: 3708 adds r7, #8 + 8007dd4: 46bd mov sp, r7 + 8007dd6: bd80 pop {r7, pc} -08007d88 : +08007dd8 : * @brief SOF callback. * @param hhcd: HCD handle * @retval None */ void HAL_HCD_Disconnect_Callback(HCD_HandleTypeDef *hhcd) { - 8007d88: b580 push {r7, lr} - 8007d8a: b082 sub sp, #8 - 8007d8c: af00 add r7, sp, #0 - 8007d8e: 6078 str r0, [r7, #4] + 8007dd8: b580 push {r7, lr} + 8007dda: b082 sub sp, #8 + 8007ddc: af00 add r7, sp, #0 + 8007dde: 6078 str r0, [r7, #4] USBH_LL_Disconnect(hhcd->pData); - 8007d90: 687b ldr r3, [r7, #4] - 8007d92: f8d3 33dc ldr.w r3, [r3, #988] @ 0x3dc - 8007d96: 4618 mov r0, r3 - 8007d98: f7fe fe87 bl 8006aaa + 8007de0: 687b ldr r3, [r7, #4] + 8007de2: f8d3 33dc ldr.w r3, [r3, #988] @ 0x3dc + 8007de6: 4618 mov r0, r3 + 8007de8: f7fe fe8d bl 8006b06 } - 8007d9c: bf00 nop - 8007d9e: 3708 adds r7, #8 - 8007da0: 46bd mov sp, r7 - 8007da2: bd80 pop {r7, pc} + 8007dec: bf00 nop + 8007dee: 3708 adds r7, #8 + 8007df0: 46bd mov sp, r7 + 8007df2: bd80 pop {r7, pc} -08007da4 : +08007df4 : * @param chnum: channel number * @param urb_state: state * @retval None */ void HAL_HCD_HC_NotifyURBChange_Callback(HCD_HandleTypeDef *hhcd, uint8_t chnum, HCD_URBStateTypeDef urb_state) { - 8007da4: b580 push {r7, lr} - 8007da6: b082 sub sp, #8 - 8007da8: af00 add r7, sp, #0 - 8007daa: 6078 str r0, [r7, #4] - 8007dac: 460b mov r3, r1 - 8007dae: 70fb strb r3, [r7, #3] - 8007db0: 4613 mov r3, r2 - 8007db2: 70bb strb r3, [r7, #2] + 8007df4: b580 push {r7, lr} + 8007df6: b082 sub sp, #8 + 8007df8: af00 add r7, sp, #0 + 8007dfa: 6078 str r0, [r7, #4] + 8007dfc: 460b mov r3, r1 + 8007dfe: 70fb strb r3, [r7, #3] + 8007e00: 4613 mov r3, r2 + 8007e02: 70bb strb r3, [r7, #2] /* To be used with OS to sync URB state with the global state machine */ #if (USBH_USE_OS == 1) USBH_LL_NotifyURBChange(hhcd->pData); - 8007db4: 687b ldr r3, [r7, #4] - 8007db6: f8d3 33dc ldr.w r3, [r3, #988] @ 0x3dc - 8007dba: 4618 mov r0, r3 - 8007dbc: f7fe fec6 bl 8006b4c + 8007e04: 687b ldr r3, [r7, #4] + 8007e06: f8d3 33dc ldr.w r3, [r3, #988] @ 0x3dc + 8007e0a: 4618 mov r0, r3 + 8007e0c: f7fe fecc bl 8006ba8 #endif } - 8007dc0: bf00 nop - 8007dc2: 3708 adds r7, #8 - 8007dc4: 46bd mov sp, r7 - 8007dc6: bd80 pop {r7, pc} + 8007e10: bf00 nop + 8007e12: 3708 adds r7, #8 + 8007e14: 46bd mov sp, r7 + 8007e16: bd80 pop {r7, pc} -08007dc8 : +08007e18 : * @brief Port Port Enabled callback. * @param hhcd: HCD handle * @retval None */ void HAL_HCD_PortEnabled_Callback(HCD_HandleTypeDef *hhcd) { - 8007dc8: b580 push {r7, lr} - 8007dca: b082 sub sp, #8 - 8007dcc: af00 add r7, sp, #0 - 8007dce: 6078 str r0, [r7, #4] + 8007e18: b580 push {r7, lr} + 8007e1a: b082 sub sp, #8 + 8007e1c: af00 add r7, sp, #0 + 8007e1e: 6078 str r0, [r7, #4] USBH_LL_PortEnabled(hhcd->pData); - 8007dd0: 687b ldr r3, [r7, #4] - 8007dd2: f8d3 33dc ldr.w r3, [r3, #988] @ 0x3dc - 8007dd6: 4618 mov r0, r3 - 8007dd8: f7fe fe28 bl 8006a2c + 8007e20: 687b ldr r3, [r7, #4] + 8007e22: f8d3 33dc ldr.w r3, [r3, #988] @ 0x3dc + 8007e26: 4618 mov r0, r3 + 8007e28: f7fe fe2e bl 8006a88 } - 8007ddc: bf00 nop - 8007dde: 3708 adds r7, #8 - 8007de0: 46bd mov sp, r7 - 8007de2: bd80 pop {r7, pc} + 8007e2c: bf00 nop + 8007e2e: 3708 adds r7, #8 + 8007e30: 46bd mov sp, r7 + 8007e32: bd80 pop {r7, pc} -08007de4 : +08007e34 : * @brief Port Port Disabled callback. * @param hhcd: HCD handle * @retval None */ void HAL_HCD_PortDisabled_Callback(HCD_HandleTypeDef *hhcd) { - 8007de4: b580 push {r7, lr} - 8007de6: b082 sub sp, #8 - 8007de8: af00 add r7, sp, #0 - 8007dea: 6078 str r0, [r7, #4] + 8007e34: b580 push {r7, lr} + 8007e36: b082 sub sp, #8 + 8007e38: af00 add r7, sp, #0 + 8007e3a: 6078 str r0, [r7, #4] USBH_LL_PortDisabled(hhcd->pData); - 8007dec: 687b ldr r3, [r7, #4] - 8007dee: f8d3 33dc ldr.w r3, [r3, #988] @ 0x3dc - 8007df2: 4618 mov r0, r3 - 8007df4: f7fe fe2c bl 8006a50 + 8007e3c: 687b ldr r3, [r7, #4] + 8007e3e: f8d3 33dc ldr.w r3, [r3, #988] @ 0x3dc + 8007e42: 4618 mov r0, r3 + 8007e44: f7fe fe32 bl 8006aac } - 8007df8: bf00 nop - 8007dfa: 3708 adds r7, #8 - 8007dfc: 46bd mov sp, r7 - 8007dfe: bd80 pop {r7, pc} + 8007e48: bf00 nop + 8007e4a: 3708 adds r7, #8 + 8007e4c: 46bd mov sp, r7 + 8007e4e: bd80 pop {r7, pc} -08007e00 : +08007e50 : * @brief Stop the low level portion of the host driver. * @param phost: Host handle * @retval USBH status */ USBH_StatusTypeDef USBH_LL_Stop(USBH_HandleTypeDef *phost) { - 8007e00: b580 push {r7, lr} - 8007e02: b084 sub sp, #16 - 8007e04: af00 add r7, sp, #0 - 8007e06: 6078 str r0, [r7, #4] + 8007e50: b580 push {r7, lr} + 8007e52: b084 sub sp, #16 + 8007e54: af00 add r7, sp, #0 + 8007e56: 6078 str r0, [r7, #4] HAL_StatusTypeDef hal_status = HAL_OK; - 8007e08: 2300 movs r3, #0 - 8007e0a: 73fb strb r3, [r7, #15] + 8007e58: 2300 movs r3, #0 + 8007e5a: 73fb strb r3, [r7, #15] USBH_StatusTypeDef usb_status = USBH_OK; - 8007e0c: 2300 movs r3, #0 - 8007e0e: 73bb strb r3, [r7, #14] + 8007e5c: 2300 movs r3, #0 + 8007e5e: 73bb strb r3, [r7, #14] hal_status = HAL_HCD_Stop(phost->pData); - 8007e10: 687b ldr r3, [r7, #4] - 8007e12: f8d3 33d0 ldr.w r3, [r3, #976] @ 0x3d0 - 8007e16: 4618 mov r0, r3 - 8007e18: f7fa fa1b bl 8002252 - 8007e1c: 4603 mov r3, r0 - 8007e1e: 73fb strb r3, [r7, #15] + 8007e60: 687b ldr r3, [r7, #4] + 8007e62: f8d3 33d0 ldr.w r3, [r3, #976] @ 0x3d0 + 8007e66: 4618 mov r0, r3 + 8007e68: f7fa fa21 bl 80022ae + 8007e6c: 4603 mov r3, r0 + 8007e6e: 73fb strb r3, [r7, #15] usb_status = USBH_Get_USB_Status(hal_status); - 8007e20: 7bfb ldrb r3, [r7, #15] - 8007e22: 4618 mov r0, r3 - 8007e24: f000 f808 bl 8007e38 - 8007e28: 4603 mov r3, r0 - 8007e2a: 73bb strb r3, [r7, #14] + 8007e70: 7bfb ldrb r3, [r7, #15] + 8007e72: 4618 mov r0, r3 + 8007e74: f000 f808 bl 8007e88 + 8007e78: 4603 mov r3, r0 + 8007e7a: 73bb strb r3, [r7, #14] return usb_status; - 8007e2c: 7bbb ldrb r3, [r7, #14] + 8007e7c: 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} + 8007e7e: 4618 mov r0, r3 + 8007e80: 3710 adds r7, #16 + 8007e82: 46bd mov sp, r7 + 8007e84: bd80 pop {r7, pc} ... -08007e38 : +08007e88 : * @brief Returns the USB status depending on the HAL status: * @param hal_status: HAL status * @retval USB status */ USBH_StatusTypeDef USBH_Get_USB_Status(HAL_StatusTypeDef hal_status) { - 8007e38: b480 push {r7} - 8007e3a: b085 sub sp, #20 - 8007e3c: af00 add r7, sp, #0 - 8007e3e: 4603 mov r3, r0 - 8007e40: 71fb strb r3, [r7, #7] + 8007e88: b480 push {r7} + 8007e8a: b085 sub sp, #20 + 8007e8c: af00 add r7, sp, #0 + 8007e8e: 4603 mov r3, r0 + 8007e90: 71fb strb r3, [r7, #7] USBH_StatusTypeDef usb_status = USBH_OK; - 8007e42: 2300 movs r3, #0 - 8007e44: 73fb strb r3, [r7, #15] + 8007e92: 2300 movs r3, #0 + 8007e94: 73fb strb r3, [r7, #15] switch (hal_status) - 8007e46: 79fb ldrb r3, [r7, #7] - 8007e48: 2b03 cmp r3, #3 - 8007e4a: d817 bhi.n 8007e7c - 8007e4c: a201 add r2, pc, #4 @ (adr r2, 8007e54 ) - 8007e4e: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8007e52: bf00 nop - 8007e54: 08007e65 .word 0x08007e65 - 8007e58: 08007e6b .word 0x08007e6b - 8007e5c: 08007e71 .word 0x08007e71 - 8007e60: 08007e77 .word 0x08007e77 + 8007e96: 79fb ldrb r3, [r7, #7] + 8007e98: 2b03 cmp r3, #3 + 8007e9a: d817 bhi.n 8007ecc + 8007e9c: a201 add r2, pc, #4 @ (adr r2, 8007ea4 ) + 8007e9e: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8007ea2: bf00 nop + 8007ea4: 08007eb5 .word 0x08007eb5 + 8007ea8: 08007ebb .word 0x08007ebb + 8007eac: 08007ec1 .word 0x08007ec1 + 8007eb0: 08007ec7 .word 0x08007ec7 { case HAL_OK : usb_status = USBH_OK; - 8007e64: 2300 movs r3, #0 - 8007e66: 73fb strb r3, [r7, #15] + 8007eb4: 2300 movs r3, #0 + 8007eb6: 73fb strb r3, [r7, #15] break; - 8007e68: e00b b.n 8007e82 + 8007eb8: e00b b.n 8007ed2 case HAL_ERROR : usb_status = USBH_FAIL; - 8007e6a: 2302 movs r3, #2 - 8007e6c: 73fb strb r3, [r7, #15] + 8007eba: 2302 movs r3, #2 + 8007ebc: 73fb strb r3, [r7, #15] break; - 8007e6e: e008 b.n 8007e82 + 8007ebe: e008 b.n 8007ed2 case HAL_BUSY : usb_status = USBH_BUSY; - 8007e70: 2301 movs r3, #1 - 8007e72: 73fb strb r3, [r7, #15] + 8007ec0: 2301 movs r3, #1 + 8007ec2: 73fb strb r3, [r7, #15] break; - 8007e74: e005 b.n 8007e82 + 8007ec4: e005 b.n 8007ed2 case HAL_TIMEOUT : usb_status = USBH_FAIL; - 8007e76: 2302 movs r3, #2 - 8007e78: 73fb strb r3, [r7, #15] + 8007ec6: 2302 movs r3, #2 + 8007ec8: 73fb strb r3, [r7, #15] break; - 8007e7a: e002 b.n 8007e82 + 8007eca: e002 b.n 8007ed2 default : usb_status = USBH_FAIL; - 8007e7c: 2302 movs r3, #2 - 8007e7e: 73fb strb r3, [r7, #15] + 8007ecc: 2302 movs r3, #2 + 8007ece: 73fb strb r3, [r7, #15] break; - 8007e80: bf00 nop + 8007ed0: bf00 nop } return usb_status; - 8007e82: 7bfb ldrb r3, [r7, #15] + 8007ed2: 7bfb ldrb r3, [r7, #15] } - 8007e84: 4618 mov r0, r3 - 8007e86: 3714 adds r7, #20 - 8007e88: 46bd mov sp, r7 - 8007e8a: f85d 7b04 ldr.w r7, [sp], #4 - 8007e8e: 4770 bx lr + 8007ed4: 4618 mov r0, r3 + 8007ed6: 3714 adds r7, #20 + 8007ed8: 46bd mov sp, r7 + 8007eda: f85d 7b04 ldr.w r7, [sp], #4 + 8007ede: 4770 bx lr -08007e90 : - 8007e90: 4402 add r2, r0 - 8007e92: 4603 mov r3, r0 - 8007e94: 4293 cmp r3, r2 - 8007e96: d100 bne.n 8007e9a - 8007e98: 4770 bx lr - 8007e9a: f803 1b01 strb.w r1, [r3], #1 - 8007e9e: e7f9 b.n 8007e94 +08007ee0 : + 8007ee0: 4402 add r2, r0 + 8007ee2: 4603 mov r3, r0 + 8007ee4: 4293 cmp r3, r2 + 8007ee6: d100 bne.n 8007eea + 8007ee8: 4770 bx lr + 8007eea: f803 1b01 strb.w r1, [r3], #1 + 8007eee: e7f9 b.n 8007ee4 -08007ea0 <__libc_init_array>: - 8007ea0: b570 push {r4, r5, r6, lr} - 8007ea2: 4d0d ldr r5, [pc, #52] @ (8007ed8 <__libc_init_array+0x38>) - 8007ea4: 4c0d ldr r4, [pc, #52] @ (8007edc <__libc_init_array+0x3c>) - 8007ea6: 1b64 subs r4, r4, r5 - 8007ea8: 10a4 asrs r4, r4, #2 - 8007eaa: 2600 movs r6, #0 - 8007eac: 42a6 cmp r6, r4 - 8007eae: d109 bne.n 8007ec4 <__libc_init_array+0x24> - 8007eb0: 4d0b ldr r5, [pc, #44] @ (8007ee0 <__libc_init_array+0x40>) - 8007eb2: 4c0c ldr r4, [pc, #48] @ (8007ee4 <__libc_init_array+0x44>) - 8007eb4: f000 f826 bl 8007f04 <_init> - 8007eb8: 1b64 subs r4, r4, r5 - 8007eba: 10a4 asrs r4, r4, #2 - 8007ebc: 2600 movs r6, #0 - 8007ebe: 42a6 cmp r6, r4 - 8007ec0: d105 bne.n 8007ece <__libc_init_array+0x2e> - 8007ec2: bd70 pop {r4, r5, r6, pc} - 8007ec4: f855 3b04 ldr.w r3, [r5], #4 - 8007ec8: 4798 blx r3 - 8007eca: 3601 adds r6, #1 - 8007ecc: e7ee b.n 8007eac <__libc_init_array+0xc> - 8007ece: f855 3b04 ldr.w r3, [r5], #4 - 8007ed2: 4798 blx r3 - 8007ed4: 3601 adds r6, #1 - 8007ed6: e7f2 b.n 8007ebe <__libc_init_array+0x1e> - 8007ed8: 08007f3c .word 0x08007f3c - 8007edc: 08007f3c .word 0x08007f3c - 8007ee0: 08007f3c .word 0x08007f3c - 8007ee4: 08007f40 .word 0x08007f40 +08007ef0 <__libc_init_array>: + 8007ef0: b570 push {r4, r5, r6, lr} + 8007ef2: 4d0d ldr r5, [pc, #52] @ (8007f28 <__libc_init_array+0x38>) + 8007ef4: 4c0d ldr r4, [pc, #52] @ (8007f2c <__libc_init_array+0x3c>) + 8007ef6: 1b64 subs r4, r4, r5 + 8007ef8: 10a4 asrs r4, r4, #2 + 8007efa: 2600 movs r6, #0 + 8007efc: 42a6 cmp r6, r4 + 8007efe: d109 bne.n 8007f14 <__libc_init_array+0x24> + 8007f00: 4d0b ldr r5, [pc, #44] @ (8007f30 <__libc_init_array+0x40>) + 8007f02: 4c0c ldr r4, [pc, #48] @ (8007f34 <__libc_init_array+0x44>) + 8007f04: f000 f826 bl 8007f54 <_init> + 8007f08: 1b64 subs r4, r4, r5 + 8007f0a: 10a4 asrs r4, r4, #2 + 8007f0c: 2600 movs r6, #0 + 8007f0e: 42a6 cmp r6, r4 + 8007f10: d105 bne.n 8007f1e <__libc_init_array+0x2e> + 8007f12: bd70 pop {r4, r5, r6, pc} + 8007f14: f855 3b04 ldr.w r3, [r5], #4 + 8007f18: 4798 blx r3 + 8007f1a: 3601 adds r6, #1 + 8007f1c: e7ee b.n 8007efc <__libc_init_array+0xc> + 8007f1e: f855 3b04 ldr.w r3, [r5], #4 + 8007f22: 4798 blx r3 + 8007f24: 3601 adds r6, #1 + 8007f26: e7f2 b.n 8007f0e <__libc_init_array+0x1e> + 8007f28: 08007f8c .word 0x08007f8c + 8007f2c: 08007f8c .word 0x08007f8c + 8007f30: 08007f8c .word 0x08007f8c + 8007f34: 08007f90 .word 0x08007f90 -08007ee8 : - 8007ee8: 440a add r2, r1 - 8007eea: 4291 cmp r1, r2 - 8007eec: f100 33ff add.w r3, r0, #4294967295 @ 0xffffffff - 8007ef0: d100 bne.n 8007ef4 - 8007ef2: 4770 bx lr - 8007ef4: b510 push {r4, lr} - 8007ef6: f811 4b01 ldrb.w r4, [r1], #1 - 8007efa: f803 4f01 strb.w r4, [r3, #1]! - 8007efe: 4291 cmp r1, r2 - 8007f00: d1f9 bne.n 8007ef6 - 8007f02: bd10 pop {r4, pc} +08007f38 : + 8007f38: 440a add r2, r1 + 8007f3a: 4291 cmp r1, r2 + 8007f3c: f100 33ff add.w r3, r0, #4294967295 @ 0xffffffff + 8007f40: d100 bne.n 8007f44 + 8007f42: 4770 bx lr + 8007f44: b510 push {r4, lr} + 8007f46: f811 4b01 ldrb.w r4, [r1], #1 + 8007f4a: f803 4f01 strb.w r4, [r3, #1]! + 8007f4e: 4291 cmp r1, r2 + 8007f50: d1f9 bne.n 8007f46 + 8007f52: bd10 pop {r4, pc} -08007f04 <_init>: - 8007f04: b5f8 push {r3, r4, r5, r6, r7, lr} - 8007f06: bf00 nop - 8007f08: bcf8 pop {r3, r4, r5, r6, r7} - 8007f0a: bc08 pop {r3} - 8007f0c: 469e mov lr, r3 - 8007f0e: 4770 bx lr +08007f54 <_init>: + 8007f54: b5f8 push {r3, r4, r5, r6, r7, lr} + 8007f56: bf00 nop + 8007f58: bcf8 pop {r3, r4, r5, r6, r7} + 8007f5a: bc08 pop {r3} + 8007f5c: 469e mov lr, r3 + 8007f5e: 4770 bx lr -08007f10 <_fini>: - 8007f10: b5f8 push {r3, r4, r5, r6, r7, lr} - 8007f12: bf00 nop - 8007f14: bcf8 pop {r3, r4, r5, r6, r7} - 8007f16: bc08 pop {r3} - 8007f18: 469e mov lr, r3 - 8007f1a: 4770 bx lr +08007f60 <_fini>: + 8007f60: b5f8 push {r3, r4, r5, r6, r7, lr} + 8007f62: bf00 nop + 8007f64: bcf8 pop {r3, r4, r5, r6, r7} + 8007f66: bc08 pop {r3} + 8007f68: 469e mov lr, r3 + 8007f6a: 4770 bx lr diff --git a/TrafficLightsPlus/Debug/TrafficLightsPlus.map b/TrafficLightsPlus/Debug/TrafficLightsPlus.map index aaf3de7..1ce36e3 100644 --- a/TrafficLightsPlus/Debug/TrafficLightsPlus.map +++ b/TrafficLightsPlus/Debug/TrafficLightsPlus.map @@ -239,7 +239,7 @@ Discarded input sections .debug_macro 0x00000000 0x293 ./Core/Src/freertos.o .debug_macro 0x00000000 0x98 ./Core/Src/freertos.o .debug_macro 0x00000000 0x134 ./Core/Src/freertos.o - .debug_macro 0x00000000 0x4f2 ./Core/Src/freertos.o + .debug_macro 0x00000000 0x500 ./Core/Src/freertos.o .group 0x00000000 0xc ./Core/Src/main.o .group 0x00000000 0xc ./Core/Src/main.o .group 0x00000000 0xc ./Core/Src/main.o @@ -361,7 +361,7 @@ Discarded input sections .debug_macro 0x00000000 0x293 ./Core/Src/main.o .debug_macro 0x00000000 0x98 ./Core/Src/main.o .debug_macro 0x00000000 0x134 ./Core/Src/main.o - .debug_macro 0x00000000 0x4f2 ./Core/Src/main.o + .debug_macro 0x00000000 0x500 ./Core/Src/main.o .debug_macro 0x00000000 0x15a ./Core/Src/main.o .debug_macro 0x00000000 0xde ./Core/Src/main.o .debug_macro 0x00000000 0x1c ./Core/Src/main.o @@ -493,7 +493,7 @@ Discarded input sections .debug_macro 0x00000000 0x293 ./Core/Src/stm32f4xx_hal_msp.o .debug_macro 0x00000000 0x98 ./Core/Src/stm32f4xx_hal_msp.o .debug_macro 0x00000000 0x134 ./Core/Src/stm32f4xx_hal_msp.o - .debug_macro 0x00000000 0x4f2 ./Core/Src/stm32f4xx_hal_msp.o + .debug_macro 0x00000000 0x500 ./Core/Src/stm32f4xx_hal_msp.o .group 0x00000000 0xc ./Core/Src/stm32f4xx_hal_timebase_tim.o .group 0x00000000 0xc ./Core/Src/stm32f4xx_hal_timebase_tim.o .group 0x00000000 0xc ./Core/Src/stm32f4xx_hal_timebase_tim.o @@ -705,7 +705,7 @@ Discarded input sections .debug_macro 0x00000000 0x293 ./Core/Src/stm32f4xx_it.o .debug_macro 0x00000000 0x98 ./Core/Src/stm32f4xx_it.o .debug_macro 0x00000000 0x134 ./Core/Src/stm32f4xx_it.o - .debug_macro 0x00000000 0x4f2 ./Core/Src/stm32f4xx_it.o + .debug_macro 0x00000000 0x500 ./Core/Src/stm32f4xx_it.o .group 0x00000000 0xc ./Core/Src/syscalls.o .group 0x00000000 0xc ./Core/Src/syscalls.o .group 0x00000000 0xc ./Core/Src/syscalls.o @@ -1081,6 +1081,8 @@ Discarded input sections 0x00000000 0x50 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o .text.HAL_GetTickFreq 0x00000000 0x18 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .text.HAL_Delay + 0x00000000 0x48 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o .text.HAL_SuspendTick 0x00000000 0x20 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o .text.HAL_ResumeTick @@ -6060,7 +6062,7 @@ Discarded input sections .debug_macro 0x00000000 0x293 ./Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.o .debug_macro 0x00000000 0x98 ./Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.o .debug_macro 0x00000000 0x134 ./Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.o - .debug_macro 0x00000000 0x4f2 ./Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.o + .debug_macro 0x00000000 0x500 ./Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.o .debug_macro 0x00000000 0x46 ./Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.o .debug_macro 0x00000000 0x109 ./Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.o .debug_macro 0x00000000 0x15a ./Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.o @@ -6082,7 +6084,7 @@ Discarded input sections .debug_macro 0x00000000 0x28 ./Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.o .debug_macro 0x00000000 0x15b ./Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.o .debug_line 0x00000000 0x109e ./Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.o - .debug_str 0x00000000 0xe9ee9 ./Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.o + .debug_str 0x00000000 0xe9f1c ./Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.o .comment 0x00000000 0x44 ./Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.o .debug_frame 0x00000000 0x2b4 ./Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.o .ARM.attributes @@ -6293,7 +6295,7 @@ Discarded input sections .debug_macro 0x00000000 0x293 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o .debug_macro 0x00000000 0x98 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o .debug_macro 0x00000000 0x134 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o - .debug_macro 0x00000000 0x4f2 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o + .debug_macro 0x00000000 0x500 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o .debug_macro 0x00000000 0x46 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o .debug_macro 0x00000000 0x109 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o .debug_macro 0x00000000 0x15a ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o @@ -6527,7 +6529,7 @@ Discarded input sections .debug_macro 0x00000000 0x293 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.o .debug_macro 0x00000000 0x98 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.o .debug_macro 0x00000000 0x134 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.o - .debug_macro 0x00000000 0x4f2 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.o + .debug_macro 0x00000000 0x500 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.o .debug_macro 0x00000000 0x46 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.o .debug_macro 0x00000000 0x109 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.o .debug_macro 0x00000000 0x15a ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.o @@ -6548,7 +6550,7 @@ Discarded input sections .debug_macro 0x00000000 0x28 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.o .debug_macro 0x00000000 0x28 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.o .debug_line 0x00000000 0x12ab ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.o - .debug_str 0x00000000 0xe939e ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.o + .debug_str 0x00000000 0xe93d1 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.o .comment 0x00000000 0x44 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.o .debug_frame 0x00000000 0x28c ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.o .ARM.attributes @@ -6751,7 +6753,7 @@ Discarded input sections .debug_macro 0x00000000 0x293 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.o .debug_macro 0x00000000 0x98 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.o .debug_macro 0x00000000 0x134 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.o - .debug_macro 0x00000000 0x4f2 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.o + .debug_macro 0x00000000 0x500 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.o .debug_macro 0x00000000 0x46 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.o .debug_macro 0x00000000 0x109 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.o .debug_macro 0x00000000 0x15a ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.o @@ -6772,7 +6774,7 @@ Discarded input sections .debug_macro 0x00000000 0x28 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.o .debug_macro 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.o .debug_line 0x00000000 0xc71 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.o - .debug_str 0x00000000 0xe910e ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.o + .debug_str 0x00000000 0xe9141 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.o .comment 0x00000000 0x44 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.o .debug_frame 0x00000000 0x154 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.o .ARM.attributes @@ -6958,7 +6960,7 @@ Discarded input sections .debug_macro 0x00000000 0x293 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o .debug_macro 0x00000000 0x98 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o .debug_macro 0x00000000 0x134 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o - .debug_macro 0x00000000 0x4f2 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o + .debug_macro 0x00000000 0x500 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o .debug_macro 0x00000000 0x46 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o .debug_macro 0x00000000 0x109 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o .debug_macro 0x00000000 0x15a ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o @@ -8255,7 +8257,7 @@ Discarded input sections .debug_macro 0x00000000 0x29 ./USB_HOST/App/usb_host.o .debug_macro 0x00000000 0x16 ./USB_HOST/App/usb_host.o .debug_macro 0x00000000 0x20 ./USB_HOST/App/usb_host.o - .debug_macro 0x00000000 0x4f8 ./USB_HOST/App/usb_host.o + .debug_macro 0x00000000 0x506 ./USB_HOST/App/usb_host.o .debug_macro 0x00000000 0x46 ./USB_HOST/App/usb_host.o .debug_macro 0x00000000 0x109 ./USB_HOST/App/usb_host.o .debug_macro 0x00000000 0x15a ./USB_HOST/App/usb_host.o @@ -8277,7 +8279,7 @@ Discarded input sections .debug_macro 0x00000000 0x28 ./USB_HOST/App/usb_host.o .debug_macro 0x00000000 0x161 ./USB_HOST/App/usb_host.o .debug_line 0x00000000 0xbf9 ./USB_HOST/App/usb_host.o - .debug_str 0x00000000 0xe978e ./USB_HOST/App/usb_host.o + .debug_str 0x00000000 0xe97c1 ./USB_HOST/App/usb_host.o .comment 0x00000000 0x44 ./USB_HOST/App/usb_host.o .debug_frame 0x00000000 0x54 ./USB_HOST/App/usb_host.o .ARM.attributes @@ -8489,7 +8491,7 @@ Discarded input sections .debug_macro 0x00000000 0x293 ./USB_HOST/Target/usbh_conf.o .debug_macro 0x00000000 0x98 ./USB_HOST/Target/usbh_conf.o .debug_macro 0x00000000 0x134 ./USB_HOST/Target/usbh_conf.o - .debug_macro 0x00000000 0x4f2 ./USB_HOST/Target/usbh_conf.o + .debug_macro 0x00000000 0x500 ./USB_HOST/Target/usbh_conf.o .debug_macro 0x00000000 0x46 ./USB_HOST/Target/usbh_conf.o .debug_macro 0x00000000 0x109 ./USB_HOST/Target/usbh_conf.o .debug_macro 0x00000000 0x15a ./USB_HOST/Target/usbh_conf.o @@ -8973,7 +8975,7 @@ LOAD /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externalto 0x08000000 g_pfnVectors 0x080001ac . = ALIGN (0x4) -.text 0x080001b0 0x7d6c +.text 0x080001b0 0x7dbc 0x080001b0 . = ALIGN (0x4) *(.text) .text 0x080001b0 0x40 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o @@ -8985,658 +8987,657 @@ LOAD /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externalto 0x08000518 __aeabi_ldiv0 0x08000518 __aeabi_idiv0 *(.text*) - .text.breadboard - 0x0800051c 0x5c ./Core/Src/breadboard.o - 0x0800051c breadboard + .text.starttick + 0x0800051c 0x24 ./Core/Src/breadboard.o + 0x0800051c starttick + .text.trafflight + 0x08000540 0xd4 ./Core/Src/breadboard.o + 0x08000540 trafflight .text.vApplicationStackOverflowHook - 0x08000578 0x16 ./Core/Src/freertos.o - 0x08000578 vApplicationStackOverflowHook - .text.main 0x0800058e 0x3a ./Core/Src/main.o - 0x0800058e main + 0x08000614 0x16 ./Core/Src/freertos.o + 0x08000614 vApplicationStackOverflowHook + .text.main 0x0800062a 0x42 ./Core/Src/main.o + 0x0800062a main .text.SystemClock_Config - 0x080005c8 0xd4 ./Core/Src/main.o - 0x080005c8 SystemClock_Config + 0x0800066c 0xd4 ./Core/Src/main.o + 0x0800066c SystemClock_Config .text.MX_CRC_Init - 0x0800069c 0x28 ./Core/Src/main.o + 0x08000740 0x28 ./Core/Src/main.o .text.MX_DMA2D_Init - 0x080006c4 0x64 ./Core/Src/main.o + 0x08000768 0x64 ./Core/Src/main.o .text.MX_I2C3_Init - 0x08000728 0x80 ./Core/Src/main.o + 0x080007cc 0x80 ./Core/Src/main.o .text.MX_LTDC_Init - 0x080007a8 0x100 ./Core/Src/main.o + 0x0800084c 0x100 ./Core/Src/main.o .text.MX_SPI5_Init - 0x080008a8 0x6c ./Core/Src/main.o + 0x0800094c 0x6c ./Core/Src/main.o .text.MX_TIM1_Init - 0x08000914 0xa0 ./Core/Src/main.o + 0x080009b8 0xa0 ./Core/Src/main.o .text.MX_USART1_UART_Init - 0x080009b4 0x54 ./Core/Src/main.o + 0x08000a58 0x54 ./Core/Src/main.o .text.MX_FMC_Init - 0x08000a08 0xa0 ./Core/Src/main.o + 0x08000aac 0xa0 ./Core/Src/main.o .text.MX_GPIO_Init - 0x08000aa8 0x248 ./Core/Src/main.o + 0x08000b4c 0x248 ./Core/Src/main.o .text.HAL_TIM_PeriodElapsedCallback - 0x08000cf0 0x24 ./Core/Src/main.o - 0x08000cf0 HAL_TIM_PeriodElapsedCallback + 0x08000d94 0x24 ./Core/Src/main.o + 0x08000d94 HAL_TIM_PeriodElapsedCallback .text.Error_Handler - 0x08000d14 0xc ./Core/Src/main.o - 0x08000d14 Error_Handler + 0x08000db8 0xc ./Core/Src/main.o + 0x08000db8 Error_Handler .text.HAL_MspInit - 0x08000d20 0x58 ./Core/Src/stm32f4xx_hal_msp.o - 0x08000d20 HAL_MspInit + 0x08000dc4 0x58 ./Core/Src/stm32f4xx_hal_msp.o + 0x08000dc4 HAL_MspInit .text.HAL_CRC_MspInit - 0x08000d78 0x44 ./Core/Src/stm32f4xx_hal_msp.o - 0x08000d78 HAL_CRC_MspInit + 0x08000e1c 0x44 ./Core/Src/stm32f4xx_hal_msp.o + 0x08000e1c HAL_CRC_MspInit .text.HAL_DMA2D_MspInit - 0x08000dbc 0x50 ./Core/Src/stm32f4xx_hal_msp.o - 0x08000dbc HAL_DMA2D_MspInit + 0x08000e60 0x50 ./Core/Src/stm32f4xx_hal_msp.o + 0x08000e60 HAL_DMA2D_MspInit .text.HAL_I2C_MspInit - 0x08000e0c 0xd4 ./Core/Src/stm32f4xx_hal_msp.o - 0x08000e0c HAL_I2C_MspInit + 0x08000eb0 0xd4 ./Core/Src/stm32f4xx_hal_msp.o + 0x08000eb0 HAL_I2C_MspInit .text.HAL_LTDC_MspInit - 0x08000ee0 0x260 ./Core/Src/stm32f4xx_hal_msp.o - 0x08000ee0 HAL_LTDC_MspInit + 0x08000f84 0x260 ./Core/Src/stm32f4xx_hal_msp.o + 0x08000f84 HAL_LTDC_MspInit .text.HAL_SPI_MspInit - 0x08001140 0x90 ./Core/Src/stm32f4xx_hal_msp.o - 0x08001140 HAL_SPI_MspInit + 0x080011e4 0x90 ./Core/Src/stm32f4xx_hal_msp.o + 0x080011e4 HAL_SPI_MspInit .text.HAL_TIM_Base_MspInit - 0x080011d0 0x44 ./Core/Src/stm32f4xx_hal_msp.o - 0x080011d0 HAL_TIM_Base_MspInit + 0x08001274 0x44 ./Core/Src/stm32f4xx_hal_msp.o + 0x08001274 HAL_TIM_Base_MspInit .text.HAL_UART_MspInit - 0x08001214 0x90 ./Core/Src/stm32f4xx_hal_msp.o - 0x08001214 HAL_UART_MspInit + 0x080012b8 0x90 ./Core/Src/stm32f4xx_hal_msp.o + 0x080012b8 HAL_UART_MspInit .text.HAL_FMC_MspInit - 0x080012a4 0x124 ./Core/Src/stm32f4xx_hal_msp.o + 0x08001348 0x124 ./Core/Src/stm32f4xx_hal_msp.o .text.HAL_SDRAM_MspInit - 0x080013c8 0x14 ./Core/Src/stm32f4xx_hal_msp.o - 0x080013c8 HAL_SDRAM_MspInit + 0x0800146c 0x14 ./Core/Src/stm32f4xx_hal_msp.o + 0x0800146c HAL_SDRAM_MspInit .text.HAL_InitTick - 0x080013dc 0xf8 ./Core/Src/stm32f4xx_hal_timebase_tim.o - 0x080013dc HAL_InitTick + 0x08001480 0xf8 ./Core/Src/stm32f4xx_hal_timebase_tim.o + 0x08001480 HAL_InitTick .text.NMI_Handler - 0x080014d4 0x8 ./Core/Src/stm32f4xx_it.o - 0x080014d4 NMI_Handler + 0x08001578 0x8 ./Core/Src/stm32f4xx_it.o + 0x08001578 NMI_Handler .text.HardFault_Handler - 0x080014dc 0x8 ./Core/Src/stm32f4xx_it.o - 0x080014dc HardFault_Handler + 0x08001580 0x8 ./Core/Src/stm32f4xx_it.o + 0x08001580 HardFault_Handler .text.MemManage_Handler - 0x080014e4 0x8 ./Core/Src/stm32f4xx_it.o - 0x080014e4 MemManage_Handler + 0x08001588 0x8 ./Core/Src/stm32f4xx_it.o + 0x08001588 MemManage_Handler .text.BusFault_Handler - 0x080014ec 0x8 ./Core/Src/stm32f4xx_it.o - 0x080014ec BusFault_Handler + 0x08001590 0x8 ./Core/Src/stm32f4xx_it.o + 0x08001590 BusFault_Handler .text.UsageFault_Handler - 0x080014f4 0x8 ./Core/Src/stm32f4xx_it.o - 0x080014f4 UsageFault_Handler + 0x08001598 0x8 ./Core/Src/stm32f4xx_it.o + 0x08001598 UsageFault_Handler .text.DebugMon_Handler - 0x080014fc 0xe ./Core/Src/stm32f4xx_it.o - 0x080014fc DebugMon_Handler - *fill* 0x0800150a 0x2 + 0x080015a0 0xe ./Core/Src/stm32f4xx_it.o + 0x080015a0 DebugMon_Handler + *fill* 0x080015ae 0x2 .text.TIM6_DAC_IRQHandler - 0x0800150c 0x14 ./Core/Src/stm32f4xx_it.o - 0x0800150c TIM6_DAC_IRQHandler + 0x080015b0 0x14 ./Core/Src/stm32f4xx_it.o + 0x080015b0 TIM6_DAC_IRQHandler .text.OTG_HS_IRQHandler - 0x08001520 0x14 ./Core/Src/stm32f4xx_it.o - 0x08001520 OTG_HS_IRQHandler + 0x080015c4 0x14 ./Core/Src/stm32f4xx_it.o + 0x080015c4 OTG_HS_IRQHandler .text.LTDC_IRQHandler - 0x08001534 0x14 ./Core/Src/stm32f4xx_it.o - 0x08001534 LTDC_IRQHandler + 0x080015d8 0x14 ./Core/Src/stm32f4xx_it.o + 0x080015d8 LTDC_IRQHandler .text.DMA2D_IRQHandler - 0x08001548 0x14 ./Core/Src/stm32f4xx_it.o - 0x08001548 DMA2D_IRQHandler + 0x080015ec 0x14 ./Core/Src/stm32f4xx_it.o + 0x080015ec DMA2D_IRQHandler .text.SystemInit - 0x0800155c 0x24 ./Core/Src/system_stm32f4xx.o - 0x0800155c SystemInit + 0x08001600 0x24 ./Core/Src/system_stm32f4xx.o + 0x08001600 SystemInit .text.Reset_Handler - 0x08001580 0x50 ./Core/Startup/startup_stm32f429zitx.o - 0x08001580 Reset_Handler + 0x08001624 0x50 ./Core/Startup/startup_stm32f429zitx.o + 0x08001624 Reset_Handler .text.Default_Handler - 0x080015d0 0x2 ./Core/Startup/startup_stm32f429zitx.o - 0x080015d0 RTC_Alarm_IRQHandler - 0x080015d0 HASH_RNG_IRQHandler - 0x080015d0 EXTI2_IRQHandler - 0x080015d0 TIM8_CC_IRQHandler - 0x080015d0 UART8_IRQHandler - 0x080015d0 SPI4_IRQHandler - 0x080015d0 TIM1_CC_IRQHandler - 0x080015d0 DMA2_Stream5_IRQHandler - 0x080015d0 DMA1_Stream5_IRQHandler - 0x080015d0 PVD_IRQHandler - 0x080015d0 SDIO_IRQHandler - 0x080015d0 TAMP_STAMP_IRQHandler - 0x080015d0 CAN2_RX1_IRQHandler - 0x080015d0 EXTI3_IRQHandler - 0x080015d0 TIM8_TRG_COM_TIM14_IRQHandler - 0x080015d0 TIM1_UP_TIM10_IRQHandler - 0x080015d0 TIM8_UP_TIM13_IRQHandler - 0x080015d0 I2C3_ER_IRQHandler - 0x080015d0 EXTI0_IRQHandler - 0x080015d0 I2C2_EV_IRQHandler - 0x080015d0 DMA1_Stream2_IRQHandler - 0x080015d0 CAN1_RX0_IRQHandler - 0x080015d0 FPU_IRQHandler - 0x080015d0 OTG_HS_WKUP_IRQHandler - 0x080015d0 LTDC_ER_IRQHandler - 0x080015d0 CAN2_SCE_IRQHandler - 0x080015d0 DMA2_Stream2_IRQHandler - 0x080015d0 SPI1_IRQHandler - 0x080015d0 TIM1_BRK_TIM9_IRQHandler - 0x080015d0 DCMI_IRQHandler - 0x080015d0 CAN2_RX0_IRQHandler - 0x080015d0 DMA2_Stream3_IRQHandler - 0x080015d0 USART6_IRQHandler - 0x080015d0 USART3_IRQHandler - 0x080015d0 CAN1_RX1_IRQHandler - 0x080015d0 UART5_IRQHandler - 0x080015d0 DMA2_Stream0_IRQHandler - 0x080015d0 TIM4_IRQHandler - 0x080015d0 I2C1_EV_IRQHandler - 0x080015d0 DMA1_Stream6_IRQHandler - 0x080015d0 DMA1_Stream1_IRQHandler - 0x080015d0 UART4_IRQHandler - 0x080015d0 TIM3_IRQHandler - 0x080015d0 RCC_IRQHandler - 0x080015d0 TIM8_BRK_TIM12_IRQHandler - 0x080015d0 Default_Handler - 0x080015d0 EXTI15_10_IRQHandler - 0x080015d0 ADC_IRQHandler - 0x080015d0 DMA1_Stream7_IRQHandler - 0x080015d0 SPI5_IRQHandler - 0x080015d0 TIM7_IRQHandler - 0x080015d0 CAN2_TX_IRQHandler - 0x080015d0 TIM5_IRQHandler - 0x080015d0 DMA2_Stream7_IRQHandler - 0x080015d0 I2C3_EV_IRQHandler - 0x080015d0 EXTI9_5_IRQHandler - 0x080015d0 RTC_WKUP_IRQHandler - 0x080015d0 ETH_WKUP_IRQHandler - 0x080015d0 SPI2_IRQHandler - 0x080015d0 OTG_HS_EP1_IN_IRQHandler - 0x080015d0 DMA1_Stream0_IRQHandler - 0x080015d0 CAN1_TX_IRQHandler - 0x080015d0 EXTI4_IRQHandler - 0x080015d0 ETH_IRQHandler - 0x080015d0 OTG_HS_EP1_OUT_IRQHandler - 0x080015d0 WWDG_IRQHandler - 0x080015d0 SPI6_IRQHandler - 0x080015d0 TIM2_IRQHandler - 0x080015d0 OTG_FS_WKUP_IRQHandler - 0x080015d0 TIM1_TRG_COM_TIM11_IRQHandler - 0x080015d0 EXTI1_IRQHandler - 0x080015d0 UART7_IRQHandler - 0x080015d0 USART2_IRQHandler - 0x080015d0 I2C2_ER_IRQHandler - 0x080015d0 DMA2_Stream1_IRQHandler - 0x080015d0 CAN1_SCE_IRQHandler - 0x080015d0 FLASH_IRQHandler - 0x080015d0 DMA2_Stream4_IRQHandler - 0x080015d0 USART1_IRQHandler - 0x080015d0 OTG_FS_IRQHandler - 0x080015d0 SPI3_IRQHandler - 0x080015d0 DMA1_Stream4_IRQHandler - 0x080015d0 I2C1_ER_IRQHandler - 0x080015d0 FMC_IRQHandler - 0x080015d0 DMA2_Stream6_IRQHandler - 0x080015d0 SAI1_IRQHandler - 0x080015d0 DMA1_Stream3_IRQHandler - *fill* 0x080015d2 0x2 + 0x08001674 0x2 ./Core/Startup/startup_stm32f429zitx.o + 0x08001674 RTC_Alarm_IRQHandler + 0x08001674 HASH_RNG_IRQHandler + 0x08001674 EXTI2_IRQHandler + 0x08001674 TIM8_CC_IRQHandler + 0x08001674 UART8_IRQHandler + 0x08001674 SPI4_IRQHandler + 0x08001674 TIM1_CC_IRQHandler + 0x08001674 DMA2_Stream5_IRQHandler + 0x08001674 DMA1_Stream5_IRQHandler + 0x08001674 PVD_IRQHandler + 0x08001674 SDIO_IRQHandler + 0x08001674 TAMP_STAMP_IRQHandler + 0x08001674 CAN2_RX1_IRQHandler + 0x08001674 EXTI3_IRQHandler + 0x08001674 TIM8_TRG_COM_TIM14_IRQHandler + 0x08001674 TIM1_UP_TIM10_IRQHandler + 0x08001674 TIM8_UP_TIM13_IRQHandler + 0x08001674 I2C3_ER_IRQHandler + 0x08001674 EXTI0_IRQHandler + 0x08001674 I2C2_EV_IRQHandler + 0x08001674 DMA1_Stream2_IRQHandler + 0x08001674 CAN1_RX0_IRQHandler + 0x08001674 FPU_IRQHandler + 0x08001674 OTG_HS_WKUP_IRQHandler + 0x08001674 LTDC_ER_IRQHandler + 0x08001674 CAN2_SCE_IRQHandler + 0x08001674 DMA2_Stream2_IRQHandler + 0x08001674 SPI1_IRQHandler + 0x08001674 TIM1_BRK_TIM9_IRQHandler + 0x08001674 DCMI_IRQHandler + 0x08001674 CAN2_RX0_IRQHandler + 0x08001674 DMA2_Stream3_IRQHandler + 0x08001674 USART6_IRQHandler + 0x08001674 USART3_IRQHandler + 0x08001674 CAN1_RX1_IRQHandler + 0x08001674 UART5_IRQHandler + 0x08001674 DMA2_Stream0_IRQHandler + 0x08001674 TIM4_IRQHandler + 0x08001674 I2C1_EV_IRQHandler + 0x08001674 DMA1_Stream6_IRQHandler + 0x08001674 DMA1_Stream1_IRQHandler + 0x08001674 UART4_IRQHandler + 0x08001674 TIM3_IRQHandler + 0x08001674 RCC_IRQHandler + 0x08001674 TIM8_BRK_TIM12_IRQHandler + 0x08001674 Default_Handler + 0x08001674 EXTI15_10_IRQHandler + 0x08001674 ADC_IRQHandler + 0x08001674 DMA1_Stream7_IRQHandler + 0x08001674 SPI5_IRQHandler + 0x08001674 TIM7_IRQHandler + 0x08001674 CAN2_TX_IRQHandler + 0x08001674 TIM5_IRQHandler + 0x08001674 DMA2_Stream7_IRQHandler + 0x08001674 I2C3_EV_IRQHandler + 0x08001674 EXTI9_5_IRQHandler + 0x08001674 RTC_WKUP_IRQHandler + 0x08001674 ETH_WKUP_IRQHandler + 0x08001674 SPI2_IRQHandler + 0x08001674 OTG_HS_EP1_IN_IRQHandler + 0x08001674 DMA1_Stream0_IRQHandler + 0x08001674 CAN1_TX_IRQHandler + 0x08001674 EXTI4_IRQHandler + 0x08001674 ETH_IRQHandler + 0x08001674 OTG_HS_EP1_OUT_IRQHandler + 0x08001674 WWDG_IRQHandler + 0x08001674 SPI6_IRQHandler + 0x08001674 TIM2_IRQHandler + 0x08001674 OTG_FS_WKUP_IRQHandler + 0x08001674 TIM1_TRG_COM_TIM11_IRQHandler + 0x08001674 EXTI1_IRQHandler + 0x08001674 UART7_IRQHandler + 0x08001674 USART2_IRQHandler + 0x08001674 I2C2_ER_IRQHandler + 0x08001674 DMA2_Stream1_IRQHandler + 0x08001674 CAN1_SCE_IRQHandler + 0x08001674 FLASH_IRQHandler + 0x08001674 DMA2_Stream4_IRQHandler + 0x08001674 USART1_IRQHandler + 0x08001674 OTG_FS_IRQHandler + 0x08001674 SPI3_IRQHandler + 0x08001674 DMA1_Stream4_IRQHandler + 0x08001674 I2C1_ER_IRQHandler + 0x08001674 FMC_IRQHandler + 0x08001674 DMA2_Stream6_IRQHandler + 0x08001674 SAI1_IRQHandler + 0x08001674 DMA1_Stream3_IRQHandler + *fill* 0x08001676 0x2 .text.HAL_Init - 0x080015d4 0x44 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - 0x080015d4 HAL_Init + 0x08001678 0x44 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x08001678 HAL_Init .text.HAL_IncTick - 0x08001618 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - 0x08001618 HAL_IncTick + 0x080016bc 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x080016bc HAL_IncTick .text.HAL_GetTick - 0x08001640 0x18 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - 0x08001640 HAL_GetTick - .text.HAL_Delay - 0x08001658 0x48 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - 0x08001658 HAL_Delay + 0x080016e4 0x18 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x080016e4 HAL_GetTick .text.__NVIC_SetPriorityGrouping - 0x080016a0 0x48 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x080016fc 0x48 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .text.__NVIC_GetPriorityGrouping - 0x080016e8 0x1c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x08001744 0x1c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .text.__NVIC_EnableIRQ - 0x08001704 0x3c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x08001760 0x3c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .text.__NVIC_SetPriority - 0x08001740 0x54 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x0800179c 0x54 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .text.NVIC_EncodePriority - 0x08001794 0x66 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x080017f0 0x66 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .text.HAL_NVIC_SetPriorityGrouping - 0x080017fa 0x16 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - 0x080017fa HAL_NVIC_SetPriorityGrouping + 0x08001856 0x16 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x08001856 HAL_NVIC_SetPriorityGrouping .text.HAL_NVIC_SetPriority - 0x08001810 0x38 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - 0x08001810 HAL_NVIC_SetPriority + 0x0800186c 0x38 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x0800186c HAL_NVIC_SetPriority .text.HAL_NVIC_EnableIRQ - 0x08001848 0x1c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - 0x08001848 HAL_NVIC_EnableIRQ + 0x080018a4 0x1c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x080018a4 HAL_NVIC_EnableIRQ .text.HAL_CRC_Init - 0x08001864 0x38 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.o - 0x08001864 HAL_CRC_Init + 0x080018c0 0x38 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.o + 0x080018c0 HAL_CRC_Init .text.HAL_DMA2D_Init - 0x0800189c 0x92 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o - 0x0800189c HAL_DMA2D_Init + 0x080018f8 0x92 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o + 0x080018f8 HAL_DMA2D_Init .text.HAL_DMA2D_IRQHandler - 0x0800192e 0x1f8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o - 0x0800192e HAL_DMA2D_IRQHandler + 0x0800198a 0x1f8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o + 0x0800198a HAL_DMA2D_IRQHandler .text.HAL_DMA2D_LineEventCallback - 0x08001b26 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o - 0x08001b26 HAL_DMA2D_LineEventCallback + 0x08001b82 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o + 0x08001b82 HAL_DMA2D_LineEventCallback .text.HAL_DMA2D_CLUTLoadingCpltCallback - 0x08001b3a 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o - 0x08001b3a HAL_DMA2D_CLUTLoadingCpltCallback - *fill* 0x08001b4e 0x2 + 0x08001b96 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o + 0x08001b96 HAL_DMA2D_CLUTLoadingCpltCallback + *fill* 0x08001baa 0x2 .text.HAL_DMA2D_ConfigLayer - 0x08001b50 0x124 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o - 0x08001b50 HAL_DMA2D_ConfigLayer + 0x08001bac 0x124 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o + 0x08001bac HAL_DMA2D_ConfigLayer .text.HAL_GPIO_Init - 0x08001c74 0x358 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - 0x08001c74 HAL_GPIO_Init + 0x08001cd0 0x358 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + 0x08001cd0 HAL_GPIO_Init .text.HAL_GPIO_WritePin - 0x08001fcc 0x32 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - 0x08001fcc HAL_GPIO_WritePin + 0x08002028 0x32 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + 0x08002028 HAL_GPIO_WritePin .text.HAL_GPIO_TogglePin - 0x08001ffe 0x34 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - 0x08001ffe HAL_GPIO_TogglePin + 0x0800205a 0x34 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + 0x0800205a HAL_GPIO_TogglePin .text.HAL_HCD_IRQHandler - 0x08002032 0x220 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o - 0x08002032 HAL_HCD_IRQHandler + 0x0800208e 0x220 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o + 0x0800208e HAL_HCD_IRQHandler .text.HAL_HCD_Stop - 0x08002252 0x3a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o - 0x08002252 HAL_HCD_Stop + 0x080022ae 0x3a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o + 0x080022ae HAL_HCD_Stop .text.HCD_HC_IN_IRQHandler - 0x0800228c 0xcd2 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o + 0x080022e8 0xcd2 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o .text.HCD_HC_OUT_IRQHandler - 0x08002f5e 0x97e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o + 0x08002fba 0x97e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o .text.HCD_RXQLVL_IRQHandler - 0x080038dc 0x1be ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o + 0x08003938 0x1be ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o .text.HCD_Port_IRQHandler - 0x08003a9a 0xe6 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o + 0x08003af6 0xe6 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o .text.HAL_I2C_Init - 0x08003b80 0x288 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.o - 0x08003b80 HAL_I2C_Init + 0x08003bdc 0x288 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.o + 0x08003bdc HAL_I2C_Init .text.HAL_I2CEx_ConfigAnalogFilter - 0x08003e08 0x78 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o - 0x08003e08 HAL_I2CEx_ConfigAnalogFilter + 0x08003e64 0x78 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o + 0x08003e64 HAL_I2CEx_ConfigAnalogFilter .text.HAL_I2CEx_ConfigDigitalFilter - 0x08003e80 0x7e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o - 0x08003e80 HAL_I2CEx_ConfigDigitalFilter + 0x08003edc 0x7e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o + 0x08003edc HAL_I2CEx_ConfigDigitalFilter .text.HAL_LTDC_Init - 0x08003efe 0x13a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o - 0x08003efe HAL_LTDC_Init + 0x08003f5a 0x13a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o + 0x08003f5a HAL_LTDC_Init .text.HAL_LTDC_IRQHandler - 0x08004038 0x148 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o - 0x08004038 HAL_LTDC_IRQHandler + 0x08004094 0x148 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o + 0x08004094 HAL_LTDC_IRQHandler .text.HAL_LTDC_ErrorCallback - 0x08004180 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o - 0x08004180 HAL_LTDC_ErrorCallback + 0x080041dc 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o + 0x080041dc HAL_LTDC_ErrorCallback .text.HAL_LTDC_LineEventCallback - 0x08004194 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o - 0x08004194 HAL_LTDC_LineEventCallback + 0x080041f0 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o + 0x080041f0 HAL_LTDC_LineEventCallback .text.HAL_LTDC_ReloadEventCallback - 0x080041a8 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o - 0x080041a8 HAL_LTDC_ReloadEventCallback + 0x08004204 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o + 0x08004204 HAL_LTDC_ReloadEventCallback .text.HAL_LTDC_ConfigLayer - 0x080041bc 0x7c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o - 0x080041bc HAL_LTDC_ConfigLayer + 0x08004218 0x7c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o + 0x08004218 HAL_LTDC_ConfigLayer .text.LTDC_SetConfig - 0x08004238 0x2e6 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o - *fill* 0x0800451e 0x2 + 0x08004294 0x2e6 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o + *fill* 0x0800457a 0x2 .text.HAL_RCC_OscConfig - 0x08004520 0x4f0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - 0x08004520 HAL_RCC_OscConfig + 0x0800457c 0x4f0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x0800457c HAL_RCC_OscConfig .text.HAL_RCC_ClockConfig - 0x08004a10 0x1cc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - 0x08004a10 HAL_RCC_ClockConfig + 0x08004a6c 0x1cc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x08004a6c HAL_RCC_ClockConfig .text.HAL_RCC_GetSysClockFreq - 0x08004bdc 0x20c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - 0x08004bdc HAL_RCC_GetSysClockFreq + 0x08004c38 0x20c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x08004c38 HAL_RCC_GetSysClockFreq .text.HAL_RCC_GetHCLKFreq - 0x08004de8 0x18 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - 0x08004de8 HAL_RCC_GetHCLKFreq + 0x08004e44 0x18 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x08004e44 HAL_RCC_GetHCLKFreq .text.HAL_RCC_GetPCLK1Freq - 0x08004e00 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - 0x08004e00 HAL_RCC_GetPCLK1Freq + 0x08004e5c 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x08004e5c HAL_RCC_GetPCLK1Freq .text.HAL_RCC_GetPCLK2Freq - 0x08004e28 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - 0x08004e28 HAL_RCC_GetPCLK2Freq + 0x08004e84 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x08004e84 HAL_RCC_GetPCLK2Freq .text.HAL_RCC_GetClockConfig - 0x08004e50 0x64 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - 0x08004e50 HAL_RCC_GetClockConfig + 0x08004eac 0x64 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x08004eac HAL_RCC_GetClockConfig .text.HAL_RCCEx_PeriphCLKConfig - 0x08004eb4 0x380 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o - 0x08004eb4 HAL_RCCEx_PeriphCLKConfig + 0x08004f10 0x380 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o + 0x08004f10 HAL_RCCEx_PeriphCLKConfig .text.HAL_SDRAM_Init - 0x08005234 0x68 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.o - 0x08005234 HAL_SDRAM_Init + 0x08005290 0x68 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.o + 0x08005290 HAL_SDRAM_Init .text.HAL_SPI_Init - 0x0800529c 0x112 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - 0x0800529c HAL_SPI_Init + 0x080052f8 0x112 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + 0x080052f8 HAL_SPI_Init .text.HAL_TIM_Base_Init - 0x080053ae 0x9e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x080053ae HAL_TIM_Base_Init + 0x0800540a 0x9e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x0800540a HAL_TIM_Base_Init .text.HAL_TIM_Base_Start_IT - 0x0800544c 0xe0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x0800544c HAL_TIM_Base_Start_IT + 0x080054a8 0xe0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x080054a8 HAL_TIM_Base_Start_IT .text.HAL_TIM_IRQHandler - 0x0800552c 0x1e0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x0800552c HAL_TIM_IRQHandler + 0x08005588 0x1e0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08005588 HAL_TIM_IRQHandler .text.HAL_TIM_ConfigClockSource - 0x0800570c 0x18e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x0800570c HAL_TIM_ConfigClockSource + 0x08005768 0x18e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08005768 HAL_TIM_ConfigClockSource .text.HAL_TIM_OC_DelayElapsedCallback - 0x0800589a 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x0800589a HAL_TIM_OC_DelayElapsedCallback + 0x080058f6 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x080058f6 HAL_TIM_OC_DelayElapsedCallback .text.HAL_TIM_IC_CaptureCallback - 0x080058ae 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x080058ae HAL_TIM_IC_CaptureCallback + 0x0800590a 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x0800590a HAL_TIM_IC_CaptureCallback .text.HAL_TIM_PWM_PulseFinishedCallback - 0x080058c2 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x080058c2 HAL_TIM_PWM_PulseFinishedCallback + 0x0800591e 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x0800591e HAL_TIM_PWM_PulseFinishedCallback .text.HAL_TIM_TriggerCallback - 0x080058d6 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x080058d6 HAL_TIM_TriggerCallback - *fill* 0x080058ea 0x2 + 0x08005932 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08005932 HAL_TIM_TriggerCallback + *fill* 0x08005946 0x2 .text.TIM_Base_SetConfig - 0x080058ec 0x14c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x080058ec TIM_Base_SetConfig + 0x08005948 0x14c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08005948 TIM_Base_SetConfig .text.TIM_TI1_ConfigInputStage - 0x08005a38 0x5e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08005a94 0x5e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o .text.TIM_TI2_ConfigInputStage - 0x08005a96 0x60 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08005af2 0x60 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o .text.TIM_ITRx_SetConfig - 0x08005af6 0x36 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08005b52 0x36 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o .text.TIM_ETR_SetConfig - 0x08005b2c 0x40 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x08005b2c TIM_ETR_SetConfig + 0x08005b88 0x40 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08005b88 TIM_ETR_SetConfig .text.HAL_TIMEx_MasterConfigSynchronization - 0x08005b6c 0xf8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - 0x08005b6c HAL_TIMEx_MasterConfigSynchronization + 0x08005bc8 0xf8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + 0x08005bc8 HAL_TIMEx_MasterConfigSynchronization .text.HAL_TIMEx_CommutCallback - 0x08005c64 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - 0x08005c64 HAL_TIMEx_CommutCallback + 0x08005cc0 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + 0x08005cc0 HAL_TIMEx_CommutCallback .text.HAL_TIMEx_BreakCallback - 0x08005c78 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - 0x08005c78 HAL_TIMEx_BreakCallback + 0x08005cd4 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + 0x08005cd4 HAL_TIMEx_BreakCallback .text.HAL_UART_Init - 0x08005c8c 0xa0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - 0x08005c8c HAL_UART_Init + 0x08005ce8 0xa0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x08005ce8 HAL_UART_Init .text.UART_SetConfig - 0x08005d2c 0x4e8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x08005d88 0x4e8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o .text.FMC_SDRAM_Init - 0x08006214 0xba ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o - 0x08006214 FMC_SDRAM_Init + 0x08006270 0xba ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o + 0x08006270 FMC_SDRAM_Init .text.FMC_SDRAM_Timing_Init - 0x080062ce 0xd2 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o - 0x080062ce FMC_SDRAM_Timing_Init + 0x0800632a 0xd2 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o + 0x0800632a FMC_SDRAM_Timing_Init .text.USB_EnableGlobalInt - 0x080063a0 0x22 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x080063a0 USB_EnableGlobalInt + 0x080063fc 0x22 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x080063fc USB_EnableGlobalInt .text.USB_DisableGlobalInt - 0x080063c2 0x22 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x080063c2 USB_DisableGlobalInt + 0x0800641e 0x22 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x0800641e USB_DisableGlobalInt .text.USB_FlushTxFifo - 0x080063e4 0x64 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x080063e4 USB_FlushTxFifo + 0x08006440 0x64 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08006440 USB_FlushTxFifo .text.USB_FlushRxFifo - 0x08006448 0x5c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x08006448 USB_FlushRxFifo + 0x080064a4 0x5c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x080064a4 USB_FlushRxFifo .text.USB_ReadPacket - 0x080064a4 0xb0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x080064a4 USB_ReadPacket + 0x08006500 0xb0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08006500 USB_ReadPacket .text.USB_ReadInterrupts - 0x08006554 0x26 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x08006554 USB_ReadInterrupts + 0x080065b0 0x26 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x080065b0 USB_ReadInterrupts .text.USB_ReadChInterrupts - 0x0800657a 0x42 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x0800657a USB_ReadChInterrupts + 0x080065d6 0x42 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x080065d6 USB_ReadChInterrupts .text.USB_GetMode - 0x080065bc 0x1c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x080065bc USB_GetMode + 0x08006618 0x1c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08006618 USB_GetMode .text.USB_InitFSLSPClkSel - 0x080065d8 0x7a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x080065d8 USB_InitFSLSPClkSel + 0x08006634 0x7a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08006634 USB_InitFSLSPClkSel .text.USB_HC_ReadInterrupt - 0x08006652 0x22 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x08006652 USB_HC_ReadInterrupt + 0x080066ae 0x22 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x080066ae USB_HC_ReadInterrupt .text.USB_HC_Halt - 0x08006674 0x240 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x08006674 USB_HC_Halt + 0x080066d0 0x240 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x080066d0 USB_HC_Halt .text.USB_StopHost - 0x080068b4 0x124 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x080068b4 USB_StopHost + 0x08006910 0x124 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08006910 USB_StopHost .text.USBH_LL_IncTimer - 0x080069d8 0x24 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o - 0x080069d8 USBH_LL_IncTimer + 0x08006a34 0x24 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o + 0x08006a34 USBH_LL_IncTimer .text.USBH_HandleSof - 0x080069fc 0x30 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o + 0x08006a58 0x30 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o .text.USBH_LL_PortEnabled - 0x08006a2c 0x24 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o - 0x08006a2c USBH_LL_PortEnabled + 0x08006a88 0x24 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o + 0x08006a88 USBH_LL_PortEnabled .text.USBH_LL_PortDisabled - 0x08006a50 0x24 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o - 0x08006a50 USBH_LL_PortDisabled + 0x08006aac 0x24 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o + 0x08006aac USBH_LL_PortDisabled .text.USBH_LL_Connect - 0x08006a74 0x36 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o - 0x08006a74 USBH_LL_Connect + 0x08006ad0 0x36 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o + 0x08006ad0 USBH_LL_Connect .text.USBH_LL_Disconnect - 0x08006aaa 0x54 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o - 0x08006aaa USBH_LL_Disconnect + 0x08006b06 0x54 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o + 0x08006b06 USBH_LL_Disconnect .text.USBH_OS_PutMessage - 0x08006afe 0x4e ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o - 0x08006afe USBH_OS_PutMessage + 0x08006b5a 0x4e ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o + 0x08006b5a USBH_OS_PutMessage .text.USBH_LL_NotifyURBChange - 0x08006b4c 0x1e ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o - 0x08006b4c USBH_LL_NotifyURBChange + 0x08006ba8 0x1e ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o + 0x08006ba8 USBH_LL_NotifyURBChange .text.USBH_FreePipe - 0x08006b6a 0x3c ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o - 0x08006b6a USBH_FreePipe + 0x08006bc6 0x3c ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o + 0x08006bc6 USBH_FreePipe .text.inHandlerMode - 0x08006ba6 0x24 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - *fill* 0x08006bca 0x2 + 0x08006c02 0x24 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + *fill* 0x08006c26 0x2 .text.osMessagePut - 0x08006bcc 0x80 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - 0x08006bcc osMessagePut + 0x08006c28 0x80 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + 0x08006c28 osMessagePut .text.osMessageWaiting - 0x08006c4c 0x2c ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - 0x08006c4c osMessageWaiting + 0x08006ca8 0x2c ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + 0x08006ca8 osMessageWaiting .text.vListInsertEnd - 0x08006c78 0x48 ./Middlewares/Third_Party/FreeRTOS/Source/list.o - 0x08006c78 vListInsertEnd + 0x08006cd4 0x48 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + 0x08006cd4 vListInsertEnd .text.vListInsert - 0x08006cc0 0x72 ./Middlewares/Third_Party/FreeRTOS/Source/list.o - 0x08006cc0 vListInsert + 0x08006d1c 0x72 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + 0x08006d1c vListInsert .text.uxListRemove - 0x08006d32 0x54 ./Middlewares/Third_Party/FreeRTOS/Source/list.o - 0x08006d32 uxListRemove - *fill* 0x08006d86 0x2 + 0x08006d8e 0x54 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + 0x08006d8e uxListRemove + *fill* 0x08006de2 0x2 .text.xQueueGenericSend - 0x08006d88 0x204 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o - 0x08006d88 xQueueGenericSend + 0x08006de4 0x204 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o + 0x08006de4 xQueueGenericSend .text.xQueueGenericSendFromISR - 0x08006f8c 0x13c ./Middlewares/Third_Party/FreeRTOS/Source/queue.o - 0x08006f8c xQueueGenericSendFromISR + 0x08006fe8 0x13c ./Middlewares/Third_Party/FreeRTOS/Source/queue.o + 0x08006fe8 xQueueGenericSendFromISR .text.uxQueueMessagesWaiting - 0x080070c8 0x3e ./Middlewares/Third_Party/FreeRTOS/Source/queue.o - 0x080070c8 uxQueueMessagesWaiting + 0x08007124 0x3e ./Middlewares/Third_Party/FreeRTOS/Source/queue.o + 0x08007124 uxQueueMessagesWaiting .text.uxQueueMessagesWaitingFromISR - 0x08007106 0x3e ./Middlewares/Third_Party/FreeRTOS/Source/queue.o - 0x08007106 uxQueueMessagesWaitingFromISR + 0x08007162 0x3e ./Middlewares/Third_Party/FreeRTOS/Source/queue.o + 0x08007162 uxQueueMessagesWaitingFromISR .text.prvCopyDataToQueue - 0x08007144 0xd4 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o + 0x080071a0 0xd4 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o .text.prvUnlockQueue - 0x08007218 0xa4 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o + 0x08007274 0xa4 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o .text.prvIsQueueFull - 0x080072bc 0x30 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o + 0x08007318 0x30 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o .text.vTaskSuspendAll - 0x080072ec 0x1c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x080072ec vTaskSuspendAll + 0x08007348 0x1c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x08007348 vTaskSuspendAll .text.xTaskResumeAll - 0x08007308 0x13c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x08007308 xTaskResumeAll + 0x08007364 0x13c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x08007364 xTaskResumeAll .text.xTaskIncrementTick - 0x08007444 0x174 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x08007444 xTaskIncrementTick + 0x080074a0 0x174 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x080074a0 xTaskIncrementTick .text.vTaskSwitchContext - 0x080075b8 0x104 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x080075b8 vTaskSwitchContext + 0x08007614 0x104 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x08007614 vTaskSwitchContext .text.vTaskPlaceOnEventList - 0x080076bc 0x4c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x080076bc vTaskPlaceOnEventList + 0x08007718 0x4c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x08007718 vTaskPlaceOnEventList .text.xTaskRemoveFromEventList - 0x08007708 0xc8 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x08007708 xTaskRemoveFromEventList + 0x08007764 0xc8 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x08007764 xTaskRemoveFromEventList .text.vTaskInternalSetTimeOutState - 0x080077d0 0x2c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x080077d0 vTaskInternalSetTimeOutState + 0x0800782c 0x2c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x0800782c vTaskInternalSetTimeOutState .text.xTaskCheckForTimeOut - 0x080077fc 0xc8 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x080077fc xTaskCheckForTimeOut + 0x08007858 0xc8 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x08007858 xTaskCheckForTimeOut .text.vTaskMissedYield - 0x080078c4 0x18 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x080078c4 vTaskMissedYield + 0x08007920 0x18 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x08007920 vTaskMissedYield .text.prvResetNextTaskUnblockTime - 0x080078dc 0x40 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x08007938 0x40 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .text.xTaskGetSchedulerState - 0x0800791c 0x3c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x0800791c xTaskGetSchedulerState + 0x08007978 0x3c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x08007978 xTaskGetSchedulerState .text.xTaskPriorityDisinherit - 0x08007958 0x110 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x08007958 xTaskPriorityDisinherit + 0x080079b4 0x110 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x080079b4 xTaskPriorityDisinherit .text.prvAddCurrentTaskToDelayedList - 0x08007a68 0xcc ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - *fill* 0x08007b34 0xc + 0x08007ac4 0xcc ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .text.SVC_Handler - 0x08007b40 0x28 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - 0x08007b40 SVC_Handler + 0x08007b90 0x28 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x08007b90 SVC_Handler .text.vPortEnterCritical - 0x08007b68 0x64 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - 0x08007b68 vPortEnterCritical + 0x08007bb8 0x64 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x08007bb8 vPortEnterCritical .text.vPortExitCritical - 0x08007bcc 0x54 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - 0x08007bcc vPortExitCritical + 0x08007c1c 0x54 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x08007c1c vPortExitCritical .text.PendSV_Handler - 0x08007c20 0x68 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - 0x08007c20 PendSV_Handler + 0x08007c70 0x68 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x08007c70 PendSV_Handler .text.SysTick_Handler - 0x08007c88 0x44 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - 0x08007c88 SysTick_Handler + 0x08007cd8 0x44 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x08007cd8 SysTick_Handler .text.vPortValidateInterruptPriority - 0x08007ccc 0x84 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - 0x08007ccc vPortValidateInterruptPriority + 0x08007d1c 0x84 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x08007d1c vPortValidateInterruptPriority .text.HAL_HCD_SOF_Callback - 0x08007d50 0x1c ./USB_HOST/Target/usbh_conf.o - 0x08007d50 HAL_HCD_SOF_Callback + 0x08007da0 0x1c ./USB_HOST/Target/usbh_conf.o + 0x08007da0 HAL_HCD_SOF_Callback .text.HAL_HCD_Connect_Callback - 0x08007d6c 0x1c ./USB_HOST/Target/usbh_conf.o - 0x08007d6c HAL_HCD_Connect_Callback + 0x08007dbc 0x1c ./USB_HOST/Target/usbh_conf.o + 0x08007dbc HAL_HCD_Connect_Callback .text.HAL_HCD_Disconnect_Callback - 0x08007d88 0x1c ./USB_HOST/Target/usbh_conf.o - 0x08007d88 HAL_HCD_Disconnect_Callback + 0x08007dd8 0x1c ./USB_HOST/Target/usbh_conf.o + 0x08007dd8 HAL_HCD_Disconnect_Callback .text.HAL_HCD_HC_NotifyURBChange_Callback - 0x08007da4 0x24 ./USB_HOST/Target/usbh_conf.o - 0x08007da4 HAL_HCD_HC_NotifyURBChange_Callback + 0x08007df4 0x24 ./USB_HOST/Target/usbh_conf.o + 0x08007df4 HAL_HCD_HC_NotifyURBChange_Callback .text.HAL_HCD_PortEnabled_Callback - 0x08007dc8 0x1c ./USB_HOST/Target/usbh_conf.o - 0x08007dc8 HAL_HCD_PortEnabled_Callback + 0x08007e18 0x1c ./USB_HOST/Target/usbh_conf.o + 0x08007e18 HAL_HCD_PortEnabled_Callback .text.HAL_HCD_PortDisabled_Callback - 0x08007de4 0x1c ./USB_HOST/Target/usbh_conf.o - 0x08007de4 HAL_HCD_PortDisabled_Callback + 0x08007e34 0x1c ./USB_HOST/Target/usbh_conf.o + 0x08007e34 HAL_HCD_PortDisabled_Callback .text.USBH_LL_Stop - 0x08007e00 0x36 ./USB_HOST/Target/usbh_conf.o - 0x08007e00 USBH_LL_Stop - *fill* 0x08007e36 0x2 + 0x08007e50 0x36 ./USB_HOST/Target/usbh_conf.o + 0x08007e50 USBH_LL_Stop + *fill* 0x08007e86 0x2 .text.USBH_Get_USB_Status - 0x08007e38 0x58 ./USB_HOST/Target/usbh_conf.o - 0x08007e38 USBH_Get_USB_Status - .text.memset 0x08007e90 0x10 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-memset.o) - 0x08007e90 memset + 0x08007e88 0x58 ./USB_HOST/Target/usbh_conf.o + 0x08007e88 USBH_Get_USB_Status + .text.memset 0x08007ee0 0x10 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-memset.o) + 0x08007ee0 memset .text.__libc_init_array - 0x08007ea0 0x48 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-init.o) - 0x08007ea0 __libc_init_array - .text.memcpy 0x08007ee8 0x1c /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-memcpy-stub.o) - 0x08007ee8 memcpy + 0x08007ef0 0x48 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-init.o) + 0x08007ef0 __libc_init_array + .text.memcpy 0x08007f38 0x1c /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-memcpy-stub.o) + 0x08007f38 memcpy *(.glue_7) - .glue_7 0x08007f04 0x0 linker stubs + .glue_7 0x08007f54 0x0 linker stubs *(.glue_7t) - .glue_7t 0x08007f04 0x0 linker stubs + .glue_7t 0x08007f54 0x0 linker stubs *(.eh_frame) - .eh_frame 0x08007f04 0x0 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o + .eh_frame 0x08007f54 0x0 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o *(.init) - .init 0x08007f04 0x4 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crti.o - 0x08007f04 _init - .init 0x08007f08 0x8 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtn.o + .init 0x08007f54 0x4 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crti.o + 0x08007f54 _init + .init 0x08007f58 0x8 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtn.o *(.fini) - .fini 0x08007f10 0x4 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crti.o - 0x08007f10 _fini - .fini 0x08007f14 0x8 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtn.o - 0x08007f1c . = ALIGN (0x4) - 0x08007f1c _etext = . + .fini 0x08007f60 0x4 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crti.o + 0x08007f60 _fini + .fini 0x08007f64 0x8 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtn.o + 0x08007f6c . = ALIGN (0x4) + 0x08007f6c _etext = . -.vfp11_veneer 0x08007f1c 0x0 - .vfp11_veneer 0x08007f1c 0x0 linker stubs +.vfp11_veneer 0x08007f6c 0x0 + .vfp11_veneer 0x08007f6c 0x0 linker stubs -.v4_bx 0x08007f1c 0x0 - .v4_bx 0x08007f1c 0x0 linker stubs +.v4_bx 0x08007f6c 0x0 + .v4_bx 0x08007f6c 0x0 linker stubs -.iplt 0x08007f1c 0x0 - .iplt 0x08007f1c 0x0 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o +.iplt 0x08007f6c 0x0 + .iplt 0x08007f6c 0x0 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o -.rodata 0x08007f1c 0x18 - 0x08007f1c . = ALIGN (0x4) +.rodata 0x08007f6c 0x18 + 0x08007f6c . = ALIGN (0x4) *(.rodata) *(.rodata*) .rodata.AHBPrescTable - 0x08007f1c 0x10 ./Core/Src/system_stm32f4xx.o - 0x08007f1c AHBPrescTable + 0x08007f6c 0x10 ./Core/Src/system_stm32f4xx.o + 0x08007f6c AHBPrescTable .rodata.APBPrescTable - 0x08007f2c 0x8 ./Core/Src/system_stm32f4xx.o - 0x08007f2c APBPrescTable - 0x08007f34 . = ALIGN (0x4) + 0x08007f7c 0x8 ./Core/Src/system_stm32f4xx.o + 0x08007f7c APBPrescTable + 0x08007f84 . = ALIGN (0x4) -.ARM.extab 0x08007f34 0x0 - 0x08007f34 . = ALIGN (0x4) +.ARM.extab 0x08007f84 0x0 + 0x08007f84 . = ALIGN (0x4) *(.ARM.extab* .gnu.linkonce.armextab.*) - 0x08007f34 . = ALIGN (0x4) + 0x08007f84 . = ALIGN (0x4) -.ARM 0x08007f34 0x8 - 0x08007f34 . = ALIGN (0x4) - 0x08007f34 __exidx_start = . +.ARM 0x08007f84 0x8 + 0x08007f84 . = ALIGN (0x4) + 0x08007f84 __exidx_start = . *(.ARM.exidx*) - .ARM.exidx 0x08007f34 0x8 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) - 0x08007f3c __exidx_end = . - 0x08007f3c . = ALIGN (0x4) + .ARM.exidx 0x08007f84 0x8 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) + 0x08007f8c __exidx_end = . + 0x08007f8c . = ALIGN (0x4) -.preinit_array 0x08007f3c 0x0 - 0x08007f3c . = ALIGN (0x4) - 0x08007f3c PROVIDE (__preinit_array_start = .) +.preinit_array 0x08007f8c 0x0 + 0x08007f8c . = ALIGN (0x4) + 0x08007f8c PROVIDE (__preinit_array_start = .) *(.preinit_array*) - 0x08007f3c PROVIDE (__preinit_array_end = .) - 0x08007f3c . = ALIGN (0x4) + 0x08007f8c PROVIDE (__preinit_array_end = .) + 0x08007f8c . = ALIGN (0x4) -.init_array 0x08007f3c 0x4 - 0x08007f3c . = ALIGN (0x4) - 0x08007f3c PROVIDE (__init_array_start = .) +.init_array 0x08007f8c 0x4 + 0x08007f8c . = ALIGN (0x4) + 0x08007f8c PROVIDE (__init_array_start = .) *(SORT_BY_NAME(.init_array.*)) *(.init_array*) - .init_array 0x08007f3c 0x4 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o - 0x08007f40 PROVIDE (__init_array_end = .) - 0x08007f40 . = ALIGN (0x4) + .init_array 0x08007f8c 0x4 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o + 0x08007f90 PROVIDE (__init_array_end = .) + 0x08007f90 . = ALIGN (0x4) -.fini_array 0x08007f40 0x4 - 0x08007f40 . = ALIGN (0x4) +.fini_array 0x08007f90 0x4 + 0x08007f90 . = ALIGN (0x4) [!provide] PROVIDE (__fini_array_start = .) *(SORT_BY_NAME(.fini_array.*)) *(.fini_array*) - .fini_array 0x08007f40 0x4 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o + .fini_array 0x08007f90 0x4 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o [!provide] PROVIDE (__fini_array_end = .) - 0x08007f44 . = ALIGN (0x4) - 0x08007f44 _sidata = LOADADDR (.data) + 0x08007f94 . = ALIGN (0x4) + 0x08007f94 _sidata = LOADADDR (.data) -.rel.dyn 0x08007f44 0x0 - .rel.iplt 0x08007f44 0x0 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o +.rel.dyn 0x08007f94 0x0 + .rel.iplt 0x08007f94 0x0 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o -.data 0x20000000 0x10 load address 0x08007f44 +.data 0x20000000 0x10 load address 0x08007f94 0x20000000 . = ALIGN (0x4) 0x20000000 _sdata = . *(.data) @@ -9657,12 +9658,12 @@ LOAD /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externalto *(.RamFunc*) 0x20000010 . = ALIGN (0x4) 0x20000010 _edata = . - 0x08007f54 _siccmram = LOADADDR (.ccmram) + 0x08007fa4 _siccmram = LOADADDR (.ccmram) -.igot.plt 0x20000010 0x0 load address 0x08007f54 +.igot.plt 0x20000010 0x0 load address 0x08007fa4 .igot.plt 0x20000010 0x0 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o -.ccmram 0x10000000 0x0 load address 0x08007f54 +.ccmram 0x10000000 0x0 load address 0x08007fa4 0x10000000 . = ALIGN (0x4) 0x10000000 _sccmram = . *(.ccmram) @@ -9671,88 +9672,99 @@ LOAD /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externalto 0x10000000 _eccmram = . 0x10000000 . = ALIGN (0x4) -.bss 0x20000010 0x798 +.bss 0x20000010 0x7a4 0x20000010 _sbss = . 0x20000010 __bss_start__ = _sbss *(.bss) .bss 0x20000010 0x1c /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o *(.bss*) - .bss.hcrc 0x2000002c 0x8 ./Core/Src/main.o - 0x2000002c hcrc - .bss.hdma2d 0x20000034 0x40 ./Core/Src/main.o - 0x20000034 hdma2d - .bss.hi2c3 0x20000074 0x54 ./Core/Src/main.o - 0x20000074 hi2c3 - .bss.hltdc 0x200000c8 0xa8 ./Core/Src/main.o - 0x200000c8 hltdc - .bss.hspi5 0x20000170 0x58 ./Core/Src/main.o - 0x20000170 hspi5 - .bss.htim1 0x200001c8 0x48 ./Core/Src/main.o - 0x200001c8 htim1 - .bss.huart1 0x20000210 0x48 ./Core/Src/main.o - 0x20000210 huart1 - .bss.hsdram1 0x20000258 0x34 ./Core/Src/main.o - 0x20000258 hsdram1 + .bss.trafftick_last + 0x2000002c 0x4 ./Core/Src/breadboard.o + 0x2000002c trafftick_last + .bss.walktick_last + 0x20000030 0x4 ./Core/Src/breadboard.o + 0x20000030 walktick_last + .bss.trafflight_index + 0x20000034 0x1 ./Core/Src/breadboard.o + 0x20000034 trafflight_index + *fill* 0x20000035 0x3 + .bss.hcrc 0x20000038 0x8 ./Core/Src/main.o + 0x20000038 hcrc + .bss.hdma2d 0x20000040 0x40 ./Core/Src/main.o + 0x20000040 hdma2d + .bss.hi2c3 0x20000080 0x54 ./Core/Src/main.o + 0x20000080 hi2c3 + .bss.hltdc 0x200000d4 0xa8 ./Core/Src/main.o + 0x200000d4 hltdc + .bss.hspi5 0x2000017c 0x58 ./Core/Src/main.o + 0x2000017c hspi5 + .bss.htim1 0x200001d4 0x48 ./Core/Src/main.o + 0x200001d4 htim1 + .bss.huart1 0x2000021c 0x48 ./Core/Src/main.o + 0x2000021c huart1 + .bss.hsdram1 0x20000264 0x34 ./Core/Src/main.o + 0x20000264 hsdram1 .bss.FMC_Initialized - 0x2000028c 0x4 ./Core/Src/stm32f4xx_hal_msp.o - .bss.htim6 0x20000290 0x48 ./Core/Src/stm32f4xx_hal_timebase_tim.o - 0x20000290 htim6 - .bss.uwTick 0x200002d8 0x4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - 0x200002d8 uwTick + 0x20000298 0x4 ./Core/Src/stm32f4xx_hal_msp.o + .bss.htim6 0x2000029c 0x48 ./Core/Src/stm32f4xx_hal_timebase_tim.o + 0x2000029c htim6 + .bss.uwTick 0x200002e4 0x4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x200002e4 uwTick .bss.pxCurrentTCB - 0x200002dc 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x200002dc pxCurrentTCB + 0x200002e8 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x200002e8 pxCurrentTCB .bss.pxReadyTasksLists - 0x200002e0 0x8c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x200002ec 0x8c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .bss.pxDelayedTaskList - 0x2000036c 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x20000378 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .bss.pxOverflowDelayedTaskList - 0x20000370 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x2000037c 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .bss.xPendingReadyList - 0x20000374 0x14 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x20000380 0x14 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .bss.xSuspendedTaskList - 0x20000388 0x14 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x20000394 0x14 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .bss.uxCurrentNumberOfTasks - 0x2000039c 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.xTickCount - 0x200003a0 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.uxTopReadyPriority - 0x200003a4 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.xSchedulerRunning 0x200003a8 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.xPendedTicks + .bss.xTickCount 0x200003ac 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.xYieldPending + .bss.uxTopReadyPriority 0x200003b0 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.xNumOfOverflows + .bss.xSchedulerRunning 0x200003b4 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.xNextTaskUnblockTime + .bss.xPendedTicks 0x200003b8 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.uxSchedulerSuspended + .bss.xYieldPending 0x200003bc 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .bss.xNumOfOverflows + 0x200003c0 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .bss.xNextTaskUnblockTime + 0x200003c4 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .bss.uxSchedulerSuspended + 0x200003c8 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .bss.ucMaxSysCallPriority - 0x200003c0 0x1 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - *fill* 0x200003c1 0x3 + 0x200003cc 0x1 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + *fill* 0x200003cd 0x3 .bss.ulMaxPRIGROUPValue - 0x200003c4 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x200003d0 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o .bss.hhcd_USB_OTG_HS - 0x200003c8 0x3e0 ./USB_HOST/Target/usbh_conf.o - 0x200003c8 hhcd_USB_OTG_HS + 0x200003d4 0x3e0 ./USB_HOST/Target/usbh_conf.o + 0x200003d4 hhcd_USB_OTG_HS *(COMMON) - 0x200007a8 . = ALIGN (0x4) - 0x200007a8 _ebss = . - 0x200007a8 __bss_end__ = _ebss + 0x200007b4 . = ALIGN (0x4) + 0x200007b4 _ebss = . + 0x200007b4 __bss_end__ = _ebss ._user_heap_stack - 0x200007a8 0x600 - 0x200007a8 . = ALIGN (0x8) + 0x200007b4 0x604 + 0x200007b8 . = ALIGN (0x8) + *fill* 0x200007b4 0x4 [!provide] PROVIDE (end = .) - 0x200007a8 PROVIDE (_end = .) - 0x200009a8 . = (. + _Min_Heap_Size) - *fill* 0x200007a8 0x200 - 0x20000da8 . = (. + _Min_Stack_Size) - *fill* 0x200009a8 0x400 - 0x20000da8 . = ALIGN (0x8) + 0x200007b8 PROVIDE (_end = .) + 0x200009b8 . = (. + _Min_Heap_Size) + *fill* 0x200007b8 0x200 + 0x20000db8 . = (. + _Min_Stack_Size) + *fill* 0x200009b8 0x400 + 0x20000db8 . = ALIGN (0x8) /DISCARD/ libc.a(*) @@ -9854,395 +9866,395 @@ LOAD /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externalto LOAD /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libm.a LOAD /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/libgcc.a -.debug_info 0x00000000 0x24fcd - .debug_info 0x00000000 0x195 ./Core/Src/breadboard.o - .debug_info 0x00000195 0x2f5 ./Core/Src/freertos.o - .debug_info 0x0000048a 0x2282 ./Core/Src/main.o - .debug_info 0x0000270c 0x22cf ./Core/Src/stm32f4xx_hal_msp.o - .debug_info 0x000049db 0xc40 ./Core/Src/stm32f4xx_hal_timebase_tim.o - .debug_info 0x0000561b 0x12cf ./Core/Src/stm32f4xx_it.o - .debug_info 0x000068ea 0x52e ./Core/Src/system_stm32f4xx.o - .debug_info 0x00006e18 0x30 ./Core/Startup/startup_stm32f429zitx.o - .debug_info 0x00006e48 0x9ba ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - .debug_info 0x00007802 0xdc2 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .debug_info 0x000085c4 0x37f ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.o - .debug_info 0x00008943 0xe82 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o - .debug_info 0x000097c5 0x6db ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - .debug_info 0x00009ea0 0x114c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o - .debug_info 0x0000afec 0x2421 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.o - .debug_info 0x0000d40d 0x672 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o - .debug_info 0x0000da7f 0x1031 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o - .debug_info 0x0000eab0 0x8db ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - .debug_info 0x0000f38b 0x64c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o - .debug_info 0x0000f9d7 0xed7 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.o - .debug_info 0x000108ae 0x1525 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .debug_info 0x00011dd3 0x299d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - .debug_info 0x00014770 0x14db ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - .debug_info 0x00015c4b 0x2f4f ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - .debug_info 0x00018b9a 0xe2d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o - .debug_info 0x000199c7 0x1993 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - .debug_info 0x0001b35a 0x177f ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o - .debug_info 0x0001cad9 0xb0d ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o - .debug_info 0x0001d5e6 0x1bfc ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - .debug_info 0x0001f1e2 0x2af ./Middlewares/Third_Party/FreeRTOS/Source/list.o - .debug_info 0x0001f491 0x19b5 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o - .debug_info 0x00020e46 0x1ee2 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .debug_info 0x00022d28 0x4de ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - .debug_info 0x00023206 0x1dc7 ./USB_HOST/Target/usbh_conf.o +.debug_info 0x00000000 0x2508f + .debug_info 0x00000000 0x24b ./Core/Src/breadboard.o + .debug_info 0x0000024b 0x2f5 ./Core/Src/freertos.o + .debug_info 0x00000540 0x228e ./Core/Src/main.o + .debug_info 0x000027ce 0x22cf ./Core/Src/stm32f4xx_hal_msp.o + .debug_info 0x00004a9d 0xc40 ./Core/Src/stm32f4xx_hal_timebase_tim.o + .debug_info 0x000056dd 0x12cf ./Core/Src/stm32f4xx_it.o + .debug_info 0x000069ac 0x52e ./Core/Src/system_stm32f4xx.o + .debug_info 0x00006eda 0x30 ./Core/Startup/startup_stm32f429zitx.o + .debug_info 0x00006f0a 0x9ba ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_info 0x000078c4 0xdc2 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_info 0x00008686 0x37f ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.o + .debug_info 0x00008a05 0xe82 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o + .debug_info 0x00009887 0x6db ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_info 0x00009f62 0x114c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o + .debug_info 0x0000b0ae 0x2421 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.o + .debug_info 0x0000d4cf 0x672 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o + .debug_info 0x0000db41 0x1031 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o + .debug_info 0x0000eb72 0x8db ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_info 0x0000f44d 0x64c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o + .debug_info 0x0000fa99 0xed7 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.o + .debug_info 0x00010970 0x1525 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .debug_info 0x00011e95 0x299d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + .debug_info 0x00014832 0x14db ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + .debug_info 0x00015d0d 0x2f4f ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + .debug_info 0x00018c5c 0xe2d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o + .debug_info 0x00019a89 0x1993 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + .debug_info 0x0001b41c 0x177f ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o + .debug_info 0x0001cb9b 0xb0d ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o + .debug_info 0x0001d6a8 0x1bfc ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + .debug_info 0x0001f2a4 0x2af ./Middlewares/Third_Party/FreeRTOS/Source/list.o + .debug_info 0x0001f553 0x19b5 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o + .debug_info 0x00020f08 0x1ee2 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .debug_info 0x00022dea 0x4de ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + .debug_info 0x000232c8 0x1dc7 ./USB_HOST/Target/usbh_conf.o -.debug_abbrev 0x00000000 0x4e45 - .debug_abbrev 0x00000000 0xe8 ./Core/Src/breadboard.o - .debug_abbrev 0x000000e8 0xf6 ./Core/Src/freertos.o - .debug_abbrev 0x000001de 0x319 ./Core/Src/main.o - .debug_abbrev 0x000004f7 0x2d5 ./Core/Src/stm32f4xx_hal_msp.o - .debug_abbrev 0x000007cc 0x1f4 ./Core/Src/stm32f4xx_hal_timebase_tim.o - .debug_abbrev 0x000009c0 0x1d7 ./Core/Src/stm32f4xx_it.o - .debug_abbrev 0x00000b97 0x11a ./Core/Src/system_stm32f4xx.o - .debug_abbrev 0x00000cb1 0x24 ./Core/Startup/startup_stm32f429zitx.o - .debug_abbrev 0x00000cd5 0x214 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - .debug_abbrev 0x00000ee9 0x31d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .debug_abbrev 0x00001206 0x1b1 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.o - .debug_abbrev 0x000013b7 0x23e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o - .debug_abbrev 0x000015f5 0x1d4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - .debug_abbrev 0x000017c9 0x296 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o - .debug_abbrev 0x00001a5f 0x2ad ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.o - .debug_abbrev 0x00001d0c 0x157 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o - .debug_abbrev 0x00001e63 0x23a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o - .debug_abbrev 0x0000209d 0x2b7 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - .debug_abbrev 0x00002354 0x1b0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o - .debug_abbrev 0x00002504 0x227 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.o - .debug_abbrev 0x0000272b 0x27a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .debug_abbrev 0x000029a5 0x278 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - .debug_abbrev 0x00002c1d 0x283 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - .debug_abbrev 0x00002ea0 0x30e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - .debug_abbrev 0x000031ae 0x1ac ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o - .debug_abbrev 0x0000335a 0x2b3 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - .debug_abbrev 0x0000360d 0x3ca ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o - .debug_abbrev 0x000039d7 0x289 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o - .debug_abbrev 0x00003c60 0x3b7 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - .debug_abbrev 0x00004017 0xf5 ./Middlewares/Third_Party/FreeRTOS/Source/list.o - .debug_abbrev 0x0000410c 0x3b5 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o - .debug_abbrev 0x000044c1 0x378 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .debug_abbrev 0x00004839 0x25c ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - .debug_abbrev 0x00004a95 0x3b0 ./USB_HOST/Target/usbh_conf.o +.debug_abbrev 0x00000000 0x4eb9 + .debug_abbrev 0x00000000 0x15c ./Core/Src/breadboard.o + .debug_abbrev 0x0000015c 0xf6 ./Core/Src/freertos.o + .debug_abbrev 0x00000252 0x319 ./Core/Src/main.o + .debug_abbrev 0x0000056b 0x2d5 ./Core/Src/stm32f4xx_hal_msp.o + .debug_abbrev 0x00000840 0x1f4 ./Core/Src/stm32f4xx_hal_timebase_tim.o + .debug_abbrev 0x00000a34 0x1d7 ./Core/Src/stm32f4xx_it.o + .debug_abbrev 0x00000c0b 0x11a ./Core/Src/system_stm32f4xx.o + .debug_abbrev 0x00000d25 0x24 ./Core/Startup/startup_stm32f429zitx.o + .debug_abbrev 0x00000d49 0x214 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_abbrev 0x00000f5d 0x31d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_abbrev 0x0000127a 0x1b1 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.o + .debug_abbrev 0x0000142b 0x23e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o + .debug_abbrev 0x00001669 0x1d4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_abbrev 0x0000183d 0x296 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o + .debug_abbrev 0x00001ad3 0x2ad ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.o + .debug_abbrev 0x00001d80 0x157 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o + .debug_abbrev 0x00001ed7 0x23a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o + .debug_abbrev 0x00002111 0x2b7 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_abbrev 0x000023c8 0x1b0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o + .debug_abbrev 0x00002578 0x227 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.o + .debug_abbrev 0x0000279f 0x27a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .debug_abbrev 0x00002a19 0x278 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + .debug_abbrev 0x00002c91 0x283 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + .debug_abbrev 0x00002f14 0x30e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + .debug_abbrev 0x00003222 0x1ac ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o + .debug_abbrev 0x000033ce 0x2b3 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + .debug_abbrev 0x00003681 0x3ca ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o + .debug_abbrev 0x00003a4b 0x289 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o + .debug_abbrev 0x00003cd4 0x3b7 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + .debug_abbrev 0x0000408b 0xf5 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + .debug_abbrev 0x00004180 0x3b5 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o + .debug_abbrev 0x00004535 0x378 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .debug_abbrev 0x000048ad 0x25c ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + .debug_abbrev 0x00004b09 0x3b0 ./USB_HOST/Target/usbh_conf.o -.debug_aranges 0x00000000 0x2090 +.debug_aranges 0x00000000 0x2098 .debug_aranges - 0x00000000 0x20 ./Core/Src/breadboard.o + 0x00000000 0x28 ./Core/Src/breadboard.o .debug_aranges - 0x00000020 0x38 ./Core/Src/freertos.o + 0x00000028 0x38 ./Core/Src/freertos.o .debug_aranges - 0x00000058 0x88 ./Core/Src/main.o + 0x00000060 0x88 ./Core/Src/main.o .debug_aranges - 0x000000e0 0xb0 ./Core/Src/stm32f4xx_hal_msp.o + 0x000000e8 0xb0 ./Core/Src/stm32f4xx_hal_msp.o .debug_aranges - 0x00000190 0x30 ./Core/Src/stm32f4xx_hal_timebase_tim.o + 0x00000198 0x30 ./Core/Src/stm32f4xx_hal_timebase_tim.o .debug_aranges - 0x000001c0 0x68 ./Core/Src/stm32f4xx_it.o + 0x000001c8 0x68 ./Core/Src/stm32f4xx_it.o .debug_aranges - 0x00000228 0x28 ./Core/Src/system_stm32f4xx.o + 0x00000230 0x28 ./Core/Src/system_stm32f4xx.o .debug_aranges - 0x00000250 0x28 ./Core/Startup/startup_stm32f429zitx.o + 0x00000258 0x28 ./Core/Startup/startup_stm32f429zitx.o .debug_aranges - 0x00000278 0x100 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x00000280 0x100 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o .debug_aranges - 0x00000378 0x130 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x00000380 0x130 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .debug_aranges - 0x000004a8 0x50 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.o + 0x000004b0 0x50 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.o .debug_aranges - 0x000004f8 0x118 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o + 0x00000500 0x118 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o .debug_aranges - 0x00000610 0x58 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + 0x00000618 0x58 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o .debug_aranges - 0x00000668 0x108 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o + 0x00000670 0x108 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o .debug_aranges - 0x00000770 0x2a8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.o + 0x00000778 0x2a8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.o .debug_aranges - 0x00000a18 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o + 0x00000a20 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o .debug_aranges - 0x00000a40 0x158 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o + 0x00000a48 0x158 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o .debug_aranges - 0x00000b98 0x88 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x00000ba0 0x88 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o .debug_aranges - 0x00000c20 0x58 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o + 0x00000c28 0x58 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o .debug_aranges - 0x00000c78 0xe8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.o + 0x00000c80 0xe8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.o .debug_aranges - 0x00000d60 0x1d0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + 0x00000d68 0x1d0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .debug_aranges - 0x00000f30 0x3d0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x00000f38 0x3d0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o .debug_aranges - 0x00001300 0x168 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + 0x00001308 0x168 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o .debug_aranges - 0x00001468 0x208 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x00001470 0x208 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o .debug_aranges - 0x00001670 0xf0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o + 0x00001678 0xf0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o .debug_aranges - 0x00001760 0x1a0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x00001768 0x1a0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o .debug_aranges - 0x00001900 0xd8 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o + 0x00001908 0xd8 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o .debug_aranges - 0x000019d8 0x40 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o + 0x000019e0 0x40 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o .debug_aranges - 0x00001a18 0x1d8 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + 0x00001a20 0x1d8 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o .debug_aranges - 0x00001bf0 0x40 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + 0x00001bf8 0x40 ./Middlewares/Third_Party/FreeRTOS/Source/list.o .debug_aranges - 0x00001c30 0x128 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o + 0x00001c38 0x128 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o .debug_aranges - 0x00001d58 0x1d8 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x00001d60 0x1d8 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .debug_aranges - 0x00001f30 0x80 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x00001f38 0x80 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o .debug_aranges - 0x00001fb0 0xe0 ./USB_HOST/Target/usbh_conf.o + 0x00001fb8 0xe0 ./USB_HOST/Target/usbh_conf.o .debug_rnglists - 0x00000000 0x1956 + 0x00000000 0x195d .debug_rnglists - 0x00000000 0x13 ./Core/Src/breadboard.o + 0x00000000 0x1a ./Core/Src/breadboard.o .debug_rnglists - 0x00000013 0x25 ./Core/Src/freertos.o + 0x0000001a 0x25 ./Core/Src/freertos.o .debug_rnglists - 0x00000038 0x67 ./Core/Src/main.o + 0x0000003f 0x67 ./Core/Src/main.o .debug_rnglists - 0x0000009f 0x85 ./Core/Src/stm32f4xx_hal_msp.o + 0x000000a6 0x85 ./Core/Src/stm32f4xx_hal_msp.o .debug_rnglists - 0x00000124 0x20 ./Core/Src/stm32f4xx_hal_timebase_tim.o + 0x0000012b 0x20 ./Core/Src/stm32f4xx_hal_timebase_tim.o .debug_rnglists - 0x00000144 0x49 ./Core/Src/stm32f4xx_it.o + 0x0000014b 0x49 ./Core/Src/stm32f4xx_it.o .debug_rnglists - 0x0000018d 0x1a ./Core/Src/system_stm32f4xx.o + 0x00000194 0x1a ./Core/Src/system_stm32f4xx.o .debug_rnglists - 0x000001a7 0x19 ./Core/Startup/startup_stm32f429zitx.o + 0x000001ae 0x19 ./Core/Startup/startup_stm32f429zitx.o .debug_rnglists - 0x000001c0 0xbb ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x000001c7 0xbb ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o .debug_rnglists - 0x0000027b 0xe0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x00000282 0xe0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .debug_rnglists - 0x0000035b 0x37 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.o + 0x00000362 0x37 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.o .debug_rnglists - 0x00000392 0xdc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o + 0x00000399 0xdc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o .debug_rnglists - 0x0000046e 0x3f ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + 0x00000475 0x3f ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o .debug_rnglists - 0x000004ad 0xca ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o + 0x000004b4 0xca ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o .debug_rnglists - 0x00000577 0x23c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.o + 0x0000057e 0x23c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.o .debug_rnglists - 0x000007b3 0x19 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o + 0x000007ba 0x19 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o .debug_rnglists - 0x000007cc 0x10a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o + 0x000007d3 0x10a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o .debug_rnglists - 0x000008d6 0x66 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x000008dd 0x66 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o .debug_rnglists - 0x0000093c 0x43 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o + 0x00000943 0x43 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o .debug_rnglists - 0x0000097f 0xb1 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.o + 0x00000986 0xb1 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.o .debug_rnglists - 0x00000a30 0x16f ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + 0x00000a37 0x16f ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .debug_rnglists - 0x00000b9f 0x31a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x00000ba6 0x31a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o .debug_rnglists - 0x00000eb9 0x125 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + 0x00000ec0 0x125 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o .debug_rnglists - 0x00000fde 0x1bc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + 0x00000fe5 0x1bc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o .debug_rnglists - 0x0000119a 0xb5 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o + 0x000011a1 0xb5 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o .debug_rnglists - 0x0000124f 0x147 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x00001256 0x147 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o .debug_rnglists - 0x00001396 0xa2 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o + 0x0000139d 0xa2 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o .debug_rnglists - 0x00001438 0x2b ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o + 0x0000143f 0x2b ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o .debug_rnglists - 0x00001463 0x16a ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + 0x0000146a 0x16a ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o .debug_rnglists - 0x000015cd 0x2b ./Middlewares/Third_Party/FreeRTOS/Source/list.o + 0x000015d4 0x2b ./Middlewares/Third_Party/FreeRTOS/Source/list.o .debug_rnglists - 0x000015f8 0xe5 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o + 0x000015ff 0xe5 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o .debug_rnglists - 0x000016dd 0x177 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x000016e4 0x177 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .debug_rnglists - 0x00001854 0x5d ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x0000185b 0x5d ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o .debug_rnglists - 0x000018b1 0xa5 ./USB_HOST/Target/usbh_conf.o + 0x000018b8 0xa5 ./USB_HOST/Target/usbh_conf.o -.debug_macro 0x00000000 0x28e32 - .debug_macro 0x00000000 0x290 ./Core/Src/breadboard.o - .debug_macro 0x00000290 0xad8 ./Core/Src/breadboard.o - .debug_macro 0x00000d68 0x2c5 ./Core/Src/breadboard.o - .debug_macro 0x0000102d 0x2e ./Core/Src/breadboard.o - .debug_macro 0x0000105b 0x28 ./Core/Src/breadboard.o - .debug_macro 0x00001083 0x22 ./Core/Src/breadboard.o - .debug_macro 0x000010a5 0x8e ./Core/Src/breadboard.o - .debug_macro 0x00001133 0x51 ./Core/Src/breadboard.o - .debug_macro 0x00001184 0x103 ./Core/Src/breadboard.o - .debug_macro 0x00001287 0x6a ./Core/Src/breadboard.o - .debug_macro 0x000012f1 0x1df ./Core/Src/breadboard.o - .debug_macro 0x000014d0 0x1c ./Core/Src/breadboard.o - .debug_macro 0x000014ec 0x22 ./Core/Src/breadboard.o - .debug_macro 0x0000150e 0xfb ./Core/Src/breadboard.o - .debug_macro 0x00001609 0x1011 ./Core/Src/breadboard.o - .debug_macro 0x0000261a 0x11f ./Core/Src/breadboard.o - .debug_macro 0x00002739 0x17ff1 ./Core/Src/breadboard.o - .debug_macro 0x0001a72a 0x6d ./Core/Src/breadboard.o - .debug_macro 0x0001a797 0x370a ./Core/Src/breadboard.o - .debug_macro 0x0001dea1 0x190 ./Core/Src/breadboard.o - .debug_macro 0x0001e031 0x5c ./Core/Src/breadboard.o - .debug_macro 0x0001e08d 0xcba ./Core/Src/breadboard.o - .debug_macro 0x0001ed47 0x9e9 ./Core/Src/breadboard.o - .debug_macro 0x0001f730 0x115 ./Core/Src/breadboard.o - .debug_macro 0x0001f845 0x156 ./Core/Src/breadboard.o - .debug_macro 0x0001f99b 0xa5 ./Core/Src/breadboard.o - .debug_macro 0x0001fa40 0x182 ./Core/Src/breadboard.o - .debug_macro 0x0001fbc2 0x287 ./Core/Src/breadboard.o - .debug_macro 0x0001fe49 0x5f ./Core/Src/breadboard.o - .debug_macro 0x0001fea8 0x236 ./Core/Src/breadboard.o - .debug_macro 0x000200de 0x22 ./Core/Src/breadboard.o - .debug_macro 0x00020100 0x208 ./Core/Src/breadboard.o - .debug_macro 0x00020308 0x132 ./Core/Src/breadboard.o - .debug_macro 0x0002043a 0x41d ./Core/Src/breadboard.o - .debug_macro 0x00020857 0x2e ./Core/Src/breadboard.o - .debug_macro 0x00020885 0x556 ./Core/Src/breadboard.o - .debug_macro 0x00020ddb 0x1b5 ./Core/Src/breadboard.o - .debug_macro 0x00020f90 0x22 ./Core/Src/breadboard.o - .debug_macro 0x00020fb2 0xd6 ./Core/Src/breadboard.o - .debug_macro 0x00021088 0x198 ./Core/Src/breadboard.o - .debug_macro 0x00021220 0xd6 ./Core/Src/breadboard.o - .debug_macro 0x000212f6 0x127 ./Core/Src/breadboard.o - .debug_macro 0x0002141d 0xe2 ./Core/Src/breadboard.o - .debug_macro 0x000214ff 0x89 ./Core/Src/breadboard.o - .debug_macro 0x00021588 0x225 ./Core/Src/breadboard.o - .debug_macro 0x000217ad 0x8ed ./Core/Src/breadboard.o - .debug_macro 0x0002209a 0x4d ./Core/Src/breadboard.o - .debug_macro 0x000220e7 0x2aa ./Core/Src/breadboard.o - .debug_macro 0x00022391 0x293 ./Core/Src/breadboard.o - .debug_macro 0x00022624 0x98 ./Core/Src/breadboard.o - .debug_macro 0x000226bc 0x134 ./Core/Src/breadboard.o - .debug_macro 0x000227f0 0x4f2 ./Core/Src/breadboard.o - .debug_macro 0x00022ce2 0x2ca ./Core/Src/freertos.o - .debug_macro 0x00022fac 0x109 ./Core/Src/freertos.o - .debug_macro 0x000230b5 0x15a ./Core/Src/freertos.o - .debug_macro 0x0002320f 0xde ./Core/Src/freertos.o - .debug_macro 0x000232ed 0x1c ./Core/Src/freertos.o - .debug_macro 0x00023309 0x26 ./Core/Src/freertos.o - .debug_macro 0x0002332f 0x4e1 ./Core/Src/freertos.o - .debug_macro 0x00023810 0xb5 ./Core/Src/freertos.o - .debug_macro 0x000238c5 0xaa ./Core/Src/freertos.o - .debug_macro 0x0002396f 0x329 ./Core/Src/main.o - .debug_macro 0x00023c98 0x109 ./Core/Src/main.o - .debug_macro 0x00023da1 0x91 ./Core/Src/main.o - .debug_macro 0x00023e32 0x8d ./Core/Src/main.o - .debug_macro 0x00023ebf 0x9a ./Core/Src/main.o - .debug_macro 0x00023f59 0x19 ./Core/Src/main.o - .debug_macro 0x00023f72 0xf2 ./Core/Src/main.o - .debug_macro 0x00024064 0x262 ./Core/Src/stm32f4xx_hal_msp.o - .debug_macro 0x000242c6 0x253 ./Core/Src/stm32f4xx_hal_timebase_tim.o - .debug_macro 0x00024519 0x26c ./Core/Src/stm32f4xx_it.o - .debug_macro 0x00024785 0x253 ./Core/Src/system_stm32f4xx.o - .debug_macro 0x000249d8 0x2b3 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - .debug_macro 0x00024c8b 0x253 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .debug_macro 0x00024ede 0x253 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.o - .debug_macro 0x00025131 0x262 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o - .debug_macro 0x00025393 0x259 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - .debug_macro 0x000255ec 0x253 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o - .debug_macro 0x0002583f 0x2a1 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.o - .debug_macro 0x00025ae0 0x253 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o - .debug_macro 0x00025d33 0x25b ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o - .debug_macro 0x00025f8e 0x277 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - .debug_macro 0x00026205 0x253 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o - .debug_macro 0x00026458 0x253 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.o - .debug_macro 0x000266ab 0x262 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .debug_macro 0x0002690d 0x254 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - .debug_macro 0x00026b61 0x253 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - .debug_macro 0x00026db4 0x254 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - .debug_macro 0x00027008 0x29c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o - .debug_macro 0x000272a4 0x253 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - .debug_macro 0x000274f7 0x4af ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o - .debug_macro 0x000279a6 0x4a1 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o - .debug_macro 0x00027e47 0x1fe ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - .debug_macro 0x00028045 0x10 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - .debug_macro 0x00028055 0xe9 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - .debug_macro 0x0002813e 0x187 ./Middlewares/Third_Party/FreeRTOS/Source/list.o - .debug_macro 0x000282c5 0x216 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o - .debug_macro 0x000284db 0x87 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o - .debug_macro 0x00028562 0x279 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .debug_macro 0x000287db 0x10 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .debug_macro 0x000287eb 0x196 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - .debug_macro 0x00028981 0x4b1 ./USB_HOST/Target/usbh_conf.o +.debug_macro 0x00000000 0x28e4c + .debug_macro 0x00000000 0x29c ./Core/Src/breadboard.o + .debug_macro 0x0000029c 0xad8 ./Core/Src/breadboard.o + .debug_macro 0x00000d74 0x2c5 ./Core/Src/breadboard.o + .debug_macro 0x00001039 0x2e ./Core/Src/breadboard.o + .debug_macro 0x00001067 0x28 ./Core/Src/breadboard.o + .debug_macro 0x0000108f 0x22 ./Core/Src/breadboard.o + .debug_macro 0x000010b1 0x8e ./Core/Src/breadboard.o + .debug_macro 0x0000113f 0x51 ./Core/Src/breadboard.o + .debug_macro 0x00001190 0x103 ./Core/Src/breadboard.o + .debug_macro 0x00001293 0x6a ./Core/Src/breadboard.o + .debug_macro 0x000012fd 0x1df ./Core/Src/breadboard.o + .debug_macro 0x000014dc 0x1c ./Core/Src/breadboard.o + .debug_macro 0x000014f8 0x22 ./Core/Src/breadboard.o + .debug_macro 0x0000151a 0xfb ./Core/Src/breadboard.o + .debug_macro 0x00001615 0x1011 ./Core/Src/breadboard.o + .debug_macro 0x00002626 0x11f ./Core/Src/breadboard.o + .debug_macro 0x00002745 0x17ff1 ./Core/Src/breadboard.o + .debug_macro 0x0001a736 0x6d ./Core/Src/breadboard.o + .debug_macro 0x0001a7a3 0x370a ./Core/Src/breadboard.o + .debug_macro 0x0001dead 0x190 ./Core/Src/breadboard.o + .debug_macro 0x0001e03d 0x5c ./Core/Src/breadboard.o + .debug_macro 0x0001e099 0xcba ./Core/Src/breadboard.o + .debug_macro 0x0001ed53 0x9e9 ./Core/Src/breadboard.o + .debug_macro 0x0001f73c 0x115 ./Core/Src/breadboard.o + .debug_macro 0x0001f851 0x156 ./Core/Src/breadboard.o + .debug_macro 0x0001f9a7 0xa5 ./Core/Src/breadboard.o + .debug_macro 0x0001fa4c 0x182 ./Core/Src/breadboard.o + .debug_macro 0x0001fbce 0x287 ./Core/Src/breadboard.o + .debug_macro 0x0001fe55 0x5f ./Core/Src/breadboard.o + .debug_macro 0x0001feb4 0x236 ./Core/Src/breadboard.o + .debug_macro 0x000200ea 0x22 ./Core/Src/breadboard.o + .debug_macro 0x0002010c 0x208 ./Core/Src/breadboard.o + .debug_macro 0x00020314 0x132 ./Core/Src/breadboard.o + .debug_macro 0x00020446 0x41d ./Core/Src/breadboard.o + .debug_macro 0x00020863 0x2e ./Core/Src/breadboard.o + .debug_macro 0x00020891 0x556 ./Core/Src/breadboard.o + .debug_macro 0x00020de7 0x1b5 ./Core/Src/breadboard.o + .debug_macro 0x00020f9c 0x22 ./Core/Src/breadboard.o + .debug_macro 0x00020fbe 0xd6 ./Core/Src/breadboard.o + .debug_macro 0x00021094 0x198 ./Core/Src/breadboard.o + .debug_macro 0x0002122c 0xd6 ./Core/Src/breadboard.o + .debug_macro 0x00021302 0x127 ./Core/Src/breadboard.o + .debug_macro 0x00021429 0xe2 ./Core/Src/breadboard.o + .debug_macro 0x0002150b 0x89 ./Core/Src/breadboard.o + .debug_macro 0x00021594 0x225 ./Core/Src/breadboard.o + .debug_macro 0x000217b9 0x8ed ./Core/Src/breadboard.o + .debug_macro 0x000220a6 0x4d ./Core/Src/breadboard.o + .debug_macro 0x000220f3 0x2aa ./Core/Src/breadboard.o + .debug_macro 0x0002239d 0x293 ./Core/Src/breadboard.o + .debug_macro 0x00022630 0x98 ./Core/Src/breadboard.o + .debug_macro 0x000226c8 0x134 ./Core/Src/breadboard.o + .debug_macro 0x000227fc 0x500 ./Core/Src/breadboard.o + .debug_macro 0x00022cfc 0x2ca ./Core/Src/freertos.o + .debug_macro 0x00022fc6 0x109 ./Core/Src/freertos.o + .debug_macro 0x000230cf 0x15a ./Core/Src/freertos.o + .debug_macro 0x00023229 0xde ./Core/Src/freertos.o + .debug_macro 0x00023307 0x1c ./Core/Src/freertos.o + .debug_macro 0x00023323 0x26 ./Core/Src/freertos.o + .debug_macro 0x00023349 0x4e1 ./Core/Src/freertos.o + .debug_macro 0x0002382a 0xb5 ./Core/Src/freertos.o + .debug_macro 0x000238df 0xaa ./Core/Src/freertos.o + .debug_macro 0x00023989 0x329 ./Core/Src/main.o + .debug_macro 0x00023cb2 0x109 ./Core/Src/main.o + .debug_macro 0x00023dbb 0x91 ./Core/Src/main.o + .debug_macro 0x00023e4c 0x8d ./Core/Src/main.o + .debug_macro 0x00023ed9 0x9a ./Core/Src/main.o + .debug_macro 0x00023f73 0x19 ./Core/Src/main.o + .debug_macro 0x00023f8c 0xf2 ./Core/Src/main.o + .debug_macro 0x0002407e 0x262 ./Core/Src/stm32f4xx_hal_msp.o + .debug_macro 0x000242e0 0x253 ./Core/Src/stm32f4xx_hal_timebase_tim.o + .debug_macro 0x00024533 0x26c ./Core/Src/stm32f4xx_it.o + .debug_macro 0x0002479f 0x253 ./Core/Src/system_stm32f4xx.o + .debug_macro 0x000249f2 0x2b3 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_macro 0x00024ca5 0x253 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_macro 0x00024ef8 0x253 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.o + .debug_macro 0x0002514b 0x262 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o + .debug_macro 0x000253ad 0x259 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_macro 0x00025606 0x253 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o + .debug_macro 0x00025859 0x2a1 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.o + .debug_macro 0x00025afa 0x253 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o + .debug_macro 0x00025d4d 0x25b ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o + .debug_macro 0x00025fa8 0x277 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_macro 0x0002621f 0x253 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o + .debug_macro 0x00026472 0x253 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.o + .debug_macro 0x000266c5 0x262 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .debug_macro 0x00026927 0x254 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + .debug_macro 0x00026b7b 0x253 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + .debug_macro 0x00026dce 0x254 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + .debug_macro 0x00027022 0x29c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o + .debug_macro 0x000272be 0x253 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + .debug_macro 0x00027511 0x4af ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o + .debug_macro 0x000279c0 0x4a1 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o + .debug_macro 0x00027e61 0x1fe ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + .debug_macro 0x0002805f 0x10 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + .debug_macro 0x0002806f 0xe9 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + .debug_macro 0x00028158 0x187 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + .debug_macro 0x000282df 0x216 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o + .debug_macro 0x000284f5 0x87 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o + .debug_macro 0x0002857c 0x279 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .debug_macro 0x000287f5 0x10 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .debug_macro 0x00028805 0x196 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + .debug_macro 0x0002899b 0x4b1 ./USB_HOST/Target/usbh_conf.o -.debug_line 0x00000000 0x25434 - .debug_line 0x00000000 0x7b4 ./Core/Src/breadboard.o - .debug_line 0x000007b4 0x8df ./Core/Src/freertos.o - .debug_line 0x00001093 0xd17 ./Core/Src/main.o - .debug_line 0x00001daa 0xb24 ./Core/Src/stm32f4xx_hal_msp.o - .debug_line 0x000028ce 0x820 ./Core/Src/stm32f4xx_hal_timebase_tim.o - .debug_line 0x000030ee 0x873 ./Core/Src/stm32f4xx_it.o - .debug_line 0x00003961 0x818 ./Core/Src/system_stm32f4xx.o - .debug_line 0x00004179 0x7a ./Core/Startup/startup_stm32f429zitx.o - .debug_line 0x000041f3 0xaca ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - .debug_line 0x00004cbd 0xd64 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .debug_line 0x00005a21 0x8c9 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.o - .debug_line 0x000062ea 0x11bc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o - .debug_line 0x000074a6 0xc14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - .debug_line 0x000080ba 0x1625 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o - .debug_line 0x000096df 0x3b41 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.o - .debug_line 0x0000d220 0x81d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o - .debug_line 0x0000da3d 0x13a4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o - .debug_line 0x0000ede1 0xea3 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - .debug_line 0x0000fc84 0xcec ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o - .debug_line 0x00010970 0xd9f ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.o - .debug_line 0x0001170f 0x1d2f ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .debug_line 0x0001343e 0x3809 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - .debug_line 0x00016c47 0x19f4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - .debug_line 0x0001863b 0x25dc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - .debug_line 0x0001ac17 0xc89 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o - .debug_line 0x0001b8a0 0x1dc8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - .debug_line 0x0001d668 0x1378 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o - .debug_line 0x0001e9e0 0xc1e ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o - .debug_line 0x0001f5fe 0x1280 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - .debug_line 0x0002087e 0x6d5 ./Middlewares/Third_Party/FreeRTOS/Source/list.o - .debug_line 0x00020f53 0x1559 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o - .debug_line 0x000224ac 0x191b ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .debug_line 0x00023dc7 0x766 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - .debug_line 0x0002452d 0xf07 ./USB_HOST/Target/usbh_conf.o +.debug_line 0x00000000 0x25485 + .debug_line 0x00000000 0x804 ./Core/Src/breadboard.o + .debug_line 0x00000804 0x8df ./Core/Src/freertos.o + .debug_line 0x000010e3 0xd18 ./Core/Src/main.o + .debug_line 0x00001dfb 0xb24 ./Core/Src/stm32f4xx_hal_msp.o + .debug_line 0x0000291f 0x820 ./Core/Src/stm32f4xx_hal_timebase_tim.o + .debug_line 0x0000313f 0x873 ./Core/Src/stm32f4xx_it.o + .debug_line 0x000039b2 0x818 ./Core/Src/system_stm32f4xx.o + .debug_line 0x000041ca 0x7a ./Core/Startup/startup_stm32f429zitx.o + .debug_line 0x00004244 0xaca ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_line 0x00004d0e 0xd64 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_line 0x00005a72 0x8c9 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.o + .debug_line 0x0000633b 0x11bc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o + .debug_line 0x000074f7 0xc14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_line 0x0000810b 0x1625 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o + .debug_line 0x00009730 0x3b41 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.o + .debug_line 0x0000d271 0x81d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o + .debug_line 0x0000da8e 0x13a4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o + .debug_line 0x0000ee32 0xea3 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_line 0x0000fcd5 0xcec ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o + .debug_line 0x000109c1 0xd9f ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.o + .debug_line 0x00011760 0x1d2f ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .debug_line 0x0001348f 0x3809 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + .debug_line 0x00016c98 0x19f4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + .debug_line 0x0001868c 0x25dc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + .debug_line 0x0001ac68 0xc89 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o + .debug_line 0x0001b8f1 0x1dc8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + .debug_line 0x0001d6b9 0x1378 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o + .debug_line 0x0001ea31 0xc1e ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o + .debug_line 0x0001f64f 0x1280 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + .debug_line 0x000208cf 0x6d5 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + .debug_line 0x00020fa4 0x1559 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o + .debug_line 0x000224fd 0x191b ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .debug_line 0x00023e18 0x766 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + .debug_line 0x0002457e 0xf07 ./USB_HOST/Target/usbh_conf.o -.debug_str 0x00000000 0xf41e1 - .debug_str 0x00000000 0xf41e1 ./Core/Src/breadboard.o - 0xddcd3 (size before relaxing) - .debug_str 0x000f41e1 0xe1b73 ./Core/Src/freertos.o - .debug_str 0x000f41e1 0xe5663 ./Core/Src/main.o - .debug_str 0x000f41e1 0xdf763 ./Core/Src/stm32f4xx_hal_msp.o - .debug_str 0x000f41e1 0xdd917 ./Core/Src/stm32f4xx_hal_timebase_tim.o - .debug_str 0x000f41e1 0xdea7c ./Core/Src/stm32f4xx_it.o - .debug_str 0x000f41e1 0xdcdbc ./Core/Src/system_stm32f4xx.o - .debug_str 0x000f41e1 0x6d ./Core/Startup/startup_stm32f429zitx.o - .debug_str 0x000f41e1 0xdd9df ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - .debug_str 0x000f41e1 0xdd70d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .debug_str 0x000f41e1 0xdcdd7 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.o - .debug_str 0x000f41e1 0xdd398 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o - .debug_str 0x000f41e1 0xdcf37 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - .debug_str 0x000f41e1 0xdd691 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o - .debug_str 0x000f41e1 0xdddcc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.o - .debug_str 0x000f41e1 0xdd18b ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o - .debug_str 0x000f41e1 0xdd420 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o - .debug_str 0x000f41e1 0xdd1f0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - .debug_str 0x000f41e1 0xdcfb7 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o - .debug_str 0x000f41e1 0xdd4dc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.o - .debug_str 0x000f41e1 0xdd667 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .debug_str 0x000f41e1 0xde133 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - .debug_str 0x000f41e1 0xdd93f ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - .debug_str 0x000f41e1 0xdd7be ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - .debug_str 0x000f41e1 0xdd9a6 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o - .debug_str 0x000f41e1 0xdd762 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - .debug_str 0x000f41e1 0xe98ea ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o - .debug_str 0x000f41e1 0xe90a4 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o - .debug_str 0x000f41e1 0xed44 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - .debug_str 0x000f41e1 0xac17 ./Middlewares/Third_Party/FreeRTOS/Source/list.o - .debug_str 0x000f41e1 0xc661 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o - .debug_str 0x000f41e1 0xd205 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .debug_str 0x000f41e1 0x87b9 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - .debug_str 0x000f41e1 0xea0af ./USB_HOST/Target/usbh_conf.o +.debug_str 0x00000000 0xf428b + .debug_str 0x00000000 0xf428b ./Core/Src/breadboard.o + 0xdddd3 (size before relaxing) + .debug_str 0x000f428b 0xe1ba6 ./Core/Src/freertos.o + .debug_str 0x000f428b 0xe56a0 ./Core/Src/main.o + .debug_str 0x000f428b 0xdf796 ./Core/Src/stm32f4xx_hal_msp.o + .debug_str 0x000f428b 0xdd917 ./Core/Src/stm32f4xx_hal_timebase_tim.o + .debug_str 0x000f428b 0xdeaaf ./Core/Src/stm32f4xx_it.o + .debug_str 0x000f428b 0xdcdbc ./Core/Src/system_stm32f4xx.o + .debug_str 0x000f428b 0x6d ./Core/Startup/startup_stm32f429zitx.o + .debug_str 0x000f428b 0xdd9df ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_str 0x000f428b 0xdd70d ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_str 0x000f428b 0xdcdd7 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.o + .debug_str 0x000f428b 0xdd398 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o + .debug_str 0x000f428b 0xdcf37 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_str 0x000f428b 0xdd691 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o + .debug_str 0x000f428b 0xdddcc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.o + .debug_str 0x000f428b 0xdd18b ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o + .debug_str 0x000f428b 0xdd420 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o + .debug_str 0x000f428b 0xdd1f0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_str 0x000f428b 0xdcfb7 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o + .debug_str 0x000f428b 0xdd4dc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.o + .debug_str 0x000f428b 0xdd667 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .debug_str 0x000f428b 0xde133 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + .debug_str 0x000f428b 0xdd93f ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + .debug_str 0x000f428b 0xdd7be ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + .debug_str 0x000f428b 0xdd9a6 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o + .debug_str 0x000f428b 0xdd762 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + .debug_str 0x000f428b 0xe991d ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o + .debug_str 0x000f428b 0xe90d7 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o + .debug_str 0x000f428b 0xed44 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + .debug_str 0x000f428b 0xac17 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + .debug_str 0x000f428b 0xc661 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o + .debug_str 0x000f428b 0xd205 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .debug_str 0x000f428b 0x87b9 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + .debug_str 0x000f428b 0xea0e2 ./USB_HOST/Target/usbh_conf.o .comment 0x00000000 0x43 .comment 0x00000000 0x43 ./Core/Src/breadboard.o @@ -10280,45 +10292,45 @@ LOAD /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externalto .comment 0x00000043 0x44 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o .comment 0x00000043 0x44 ./USB_HOST/Target/usbh_conf.o -.debug_frame 0x00000000 0x8bf0 - .debug_frame 0x00000000 0x34 ./Core/Src/breadboard.o - .debug_frame 0x00000034 0xa0 ./Core/Src/freertos.o - .debug_frame 0x000000d4 0x1cc ./Core/Src/main.o - .debug_frame 0x000002a0 0x2c8 ./Core/Src/stm32f4xx_hal_msp.o - .debug_frame 0x00000568 0x74 ./Core/Src/stm32f4xx_hal_timebase_tim.o - .debug_frame 0x000005dc 0x118 ./Core/Src/stm32f4xx_it.o - .debug_frame 0x000006f4 0x58 ./Core/Src/system_stm32f4xx.o - .debug_frame 0x0000074c 0x3b4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - .debug_frame 0x00000b00 0x508 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .debug_frame 0x00001008 0x120 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.o - .debug_frame 0x00001128 0x4e0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o - .debug_frame 0x00001608 0x14c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - .debug_frame 0x00001754 0x498 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o - .debug_frame 0x00001bec 0xc84 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.o - .debug_frame 0x00002870 0x60 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o - .debug_frame 0x000028d0 0x61c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o - .debug_frame 0x00002eec 0x1f4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - .debug_frame 0x000030e0 0x13c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o - .debug_frame 0x0000321c 0x3e8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.o - .debug_frame 0x00003604 0x828 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .debug_frame 0x00003e2c 0x11c0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - .debug_frame 0x00004fec 0x638 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - .debug_frame 0x00005624 0x954 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o - .debug_frame 0x00005f78 0x440 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o - .debug_frame 0x000063b8 0x7c0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - .debug_frame 0x00006b78 0x398 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o - .debug_frame 0x00006f10 0xcc ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o - .debug_frame 0x00006fdc 0x800 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o - .debug_frame 0x000077dc 0xd8 ./Middlewares/Third_Party/FreeRTOS/Source/list.o - .debug_frame 0x000078b4 0x504 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o - .debug_frame 0x00007db8 0x80c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .debug_frame 0x000085c4 0x1a8 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - .debug_frame 0x0000876c 0x3b0 ./USB_HOST/Target/usbh_conf.o - .debug_frame 0x00008b1c 0x20 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-memset.o) - .debug_frame 0x00008b3c 0x2c /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-init.o) - .debug_frame 0x00008b68 0x28 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-memcpy-stub.o) - .debug_frame 0x00008b90 0x2c /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/libgcc.a(_aeabi_uldivmod.o) - .debug_frame 0x00008bbc 0x34 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) +.debug_frame 0x00000000 0x8c0c + .debug_frame 0x00000000 0x50 ./Core/Src/breadboard.o + .debug_frame 0x00000050 0xa0 ./Core/Src/freertos.o + .debug_frame 0x000000f0 0x1cc ./Core/Src/main.o + .debug_frame 0x000002bc 0x2c8 ./Core/Src/stm32f4xx_hal_msp.o + .debug_frame 0x00000584 0x74 ./Core/Src/stm32f4xx_hal_timebase_tim.o + .debug_frame 0x000005f8 0x118 ./Core/Src/stm32f4xx_it.o + .debug_frame 0x00000710 0x58 ./Core/Src/system_stm32f4xx.o + .debug_frame 0x00000768 0x3b4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_frame 0x00000b1c 0x508 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_frame 0x00001024 0x120 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_crc.o + .debug_frame 0x00001144 0x4e0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.o + .debug_frame 0x00001624 0x14c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_frame 0x00001770 0x498 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o + .debug_frame 0x00001c08 0xc84 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.o + .debug_frame 0x0000288c 0x60 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o + .debug_frame 0x000028ec 0x61c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_ltdc.o + .debug_frame 0x00002f08 0x1f4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_frame 0x000030fc 0x13c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o + .debug_frame 0x00003238 0x3e8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_sdram.o + .debug_frame 0x00003620 0x828 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .debug_frame 0x00003e48 0x11c0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + .debug_frame 0x00005008 0x638 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + .debug_frame 0x00005640 0x954 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o + .debug_frame 0x00005f94 0x440 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_fmc.o + .debug_frame 0x000063d4 0x7c0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + .debug_frame 0x00006b94 0x398 ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o + .debug_frame 0x00006f2c 0xcc ./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o + .debug_frame 0x00006ff8 0x800 ./Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.o + .debug_frame 0x000077f8 0xd8 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + .debug_frame 0x000078d0 0x504 ./Middlewares/Third_Party/FreeRTOS/Source/queue.o + .debug_frame 0x00007dd4 0x80c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .debug_frame 0x000085e0 0x1a8 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + .debug_frame 0x00008788 0x3b0 ./USB_HOST/Target/usbh_conf.o + .debug_frame 0x00008b38 0x20 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-memset.o) + .debug_frame 0x00008b58 0x2c /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-init.o) + .debug_frame 0x00008b84 0x28 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-memcpy-stub.o) + .debug_frame 0x00008bac 0x2c /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/libgcc.a(_aeabi_uldivmod.o) + .debug_frame 0x00008bd8 0x34 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) .debug_line_str 0x00000000 0x51 diff --git a/TrafficLightsPlus/Debug/USB_HOST/App/usb_host.o b/TrafficLightsPlus/Debug/USB_HOST/App/usb_host.o index 91e9682537b6b040b6cee0b7a51dce4b52a4682b..3d825d462eb2e118f956879cb7ec1e64ecd18a34 100644 GIT binary patch delta 151198 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

    xpex}4RPl|klYkco&!wT;&CM) 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 d0MFCt4%e%Ai$=vcdKJzgR}NOgSQ4lK#SP%gb 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 Bv_{x}D9+>U z()``=4B_2bV`KfGIj|FF4^Akn=Ve0t>$r?~_6Zrb<6z~G@ck7`hs6WtDiC$Z^K51t z;^YsVF`|ZN?$?Q39O`&6h_e6_#f@ypB#WE8FFZ|LnhIiuh${nRiP}YQDO=p)(b+zc zX4h=X*cy4$kWgs5DpvD8p_`(`EL2vB7n~|_Uu;bTG>F}=QP(8S@&w@v z@hPt`t&xmb2t}r3brC-8mLg8zp5#i4dHSN&SQagJz;)?V> zcVliyx%~aQC3%JMj*+`kGS4>DNqf^keIj+|(;=Fq?MrZjBIOs{35t^~_zk;BzQCQj zBsq=e%G2bTLm-|ZPg7wxOD>3mquKITsepa5IiDt)CtLHXSH7(02TY-y&%M55@>U+< zmdK92VNiNTKD`O7=jAh*pq9zEc-wNhyze!XUY9*4fmk7z@#c=(viv2?SIZxKh`Jj2 zRUc@pmE)`c4`nY-$*7lOW~1~}HZ6b`jq;e2u=`Rz!yyS*7B@lJYNdk(-%zDRsTtls z>l7R;g*&Qz%Xx>1imo%{la=Dp@F`8H zfxr0*-mGY$(vNo^A5$(qhIonM(FvSql&kJAcwPzk5~|CTcn(*&@*+@=_s?~uZ7Wn( zDDJ_a-d5~?Lb$7yIh>(bqZm8EV68HbSC$_tc6=-Al_Wd(^i;|81!tqup&JaoR2+GB zBOIFmAh%jw#^a3`wKaDP)~S}f)iYk*VuQPtsOIrJaI(5#Bm~0J)I9z|W~hEo5t=M@ za3vsHUBKx=`&7&BfIL+?1H1X^PR>gyRMR;V_?UW;_o9@jcH7|n8TDl}OWw2pBC63@V&N@_Z9u1&8`B=e$9;Y#`3iN zccA8gb~_f~I;bt<)x#gPhhIZkzIKhr9fveq{;zUaldQo~puH|dlM1!{UqEM(Hv1I3 zKcdxT@yPC|_C7cCnAXUT^%CuM4uXJv`@B4KN~1CmPiuycQTj>i#!1ZAv`4(r?RRZP zIN(n$`VLGa>!U*7J^Kb$4}*pYle$6cS9^yc7_(12gO)kQzrjDZ-xNgR>y|@6nHM&7 zF-W1euY+}dB(Hfb$nZk-H=p)~SiX2L3Yw0K4%|IICyH*udbzOp3mlcAJCNchRaJ~^kV-c7wQq^@h|D#kok8h+D#2Z@9Nk-0H3cDn=U-Ir* zY!|%?75$_gh>88RRp50P#QPYX6L_)3<)2dc=xUwa9R|PGJ{>-Xq65#V%*?by; z_p6+A4Q)E8Y&-}R6CLw=Uo0E`fZar;sx2z(6-Rd{-K3`5K(I{h z!Y6vh>XK$c;F4~(g1RK_-ySf3Uz@}`VUFt4d*S~NdYkX&&O<3(4VoZT#j@#r;4WKDqb6cNn3Pg2Ej zo-p2uL;O&eCN9$51z47GuZ5}%;m#=`MWU1stcjA-c!6}Sd@m9)*e-jW1!T%ygP{6= z9J&ph&*W2=L3|-cECVrCS_pk2A;bz7gD&^z*(3XFt7ChlowE=#SqguKNd{ zlYY1bza~FTMPR1CXO25Kb0hBqm^EN5q(VMC3JqUH^X`e+;}W2M&Z`ZmojXnkN?7Q( z!yz!=!VckF(5e$uEVMj@ibZ?&g0fh71Y=A5LJ*MeCdF_wTXNd!isGH%Sy>(eMUmo9 zYrrZI^b*Qfi`%!ryhdE&^FE?PByazX7W1>f5+kyH>R1NvCyU z9A`>x6p#2!pLp>-zv&Z1122nj62bi7-7H>J!@)$+;X9PJh`A-Olq4c|AW$T3K8HZE z$l&qeR&jg^TAe05#zK6Xu;y&d?V|r=$fXPa$>7{6cJ<}$ELp;uUlY4T&0WB5vBnoB z_K4?vmSMK=;9gUXs9g`&a>W-W)a@0$r@;Mv;#oY@>=%BmpgT_-XoEN&5bpP&<)A3y zzGA+(#*=M_#D}~{c37lzgfm5=Cueya7lUd5a*6maJz0pq7g|-JK^^`%Jh_4j$3c7o zhEp16lsd2D?t@FjUudUm3V~vJP^Ejz-L5yMiP?AL%s>a_H`sA}9S!%KOL=<7rMLrX zU6*^m8$G-14PqUMCE#`&T?BVbr^g|P?yYsMC=A#Tow5iU+84fNv@^4e>{yW8-EvRgPQfM@H&@5$j?<<( zPM_-H>g-^eVjt|_G{c2SQ>QycPabQDt8KyLu~wDYG-9@up}_5x)%l*}*~6%i(%m>p zgi=6v<7g31I~Zc9fgzr}dH|9sfgywL0;rQMWSn|JCXXU|f?h#a7;5PwTR-32-?vba{koN+n6qbD4`EZv*<2E z3_0{QE|#oADYq|JYw3AkQ1i&g4kiqXDAf+saC(5E$R<-irmms5exQ0%C5jNSwFlKc zik8`f8cG*XgkBp5Ks|*pWKa=9HkmmBs%bn!J>>u-{d#J0gkT`~^anMbQW!Gm0YEZr zAa^HJ=25H@sO4125JR@k%{)sP3h4raC)v0F0x5(cnTi88WDnp@eMR0kyOgAX%qTse5x%Z3ci^O(6iuemWf)04f^k z0qS`g50LD4QLYE5h4h?@hGOy^h~g|t8OWMWQ5_e{$utNu85GM9PL&J@>|nqWTFQ_? z7Z~cv#uE@kApps6jgELi-jmF{KnJTeUh6jCgM zKUFfIl^+A@X(@w0U0?_#n_++v6vEI*MZ=7|MnLE6jGc8c&#YRs(2<3=u``YeaPT(v zfVuGuT_}Q~nsONW&=r8>_J*3gjon2QeKZ`!7J__-qd1M`bJ1F&R4#_oNiMocRL8~L zWH|yVg2==WO~DNH6wBa22N=#%CBuCZK7e?#WmrrB0LjywmiZXFs|s?mQYoUBr4?1! z84ZZ;1?JjL4GhU-;|nMtFNQn{VaTBbh7u}bxKDQhlD;*WkAz!2$YEr2<#>kA-j?tM z7!Ag29XayJ%~iRd$e$rv5QEg6t1YClK`owCDn}rdkk5A0_rg` ZF^r;MfOTP8V~Z15Z2SKYI=s+`XK??0WH%n1f(lB)(C)tPE|bMRis z5T%J$jWcnr6^?J~HIiyXv#^=xbXocl3j*0Zw2aOLiqeoj$K<8TYWEdj#edrITyYT! zx;i^*{*FbZ%-k63)^-{<*4kl#!i}>oDa3ITt@nYSWWDs<%uTVH-!jg@Ze=PQ#~ugp z9Am$IHaMPng~^=2YWNGB$XYhhIEj@iW9Ce(RA z#x>Wu;_OfXfh)nDZ`QbytVsuzE5+J9P`J`8BunMWF!{R7m1Pyv7*~!p?rP@Bv+~tU zTm`ncp@pl++Cy3;Hu5*dRc6LQ3s;3r=w#-qvT8AkgR92+9b;T|b|%8i)nHe>G_EE~ zX=LJRvBcpbSDVdPByn}v*|uh`F3UGw;Oeo^rV3Y|#ne@}2CQHknQO=j!^B3cb_0=X z%(lHzxh8Diatqg#E#VEW8H*mlbIn<`6p?Ge*3Y$YE!p-uGS`aLdM$BXTC?p@2G@p- z`a|a0vEsW#u03l9=HFO$u!;MfHLhghI&yZyCaw$f)J$Ag zb~B&Kb>mFq59^$;O^8BYH1%?xF^2eh{-$w4ecoP6;5d<=9EJJ@Zb;_;b+)w>DY2=k zzzI#Y4pALj*&SIGyVP!i|H z+4$vC6;3$lhVt;0I+{2k-VNpBEl#`D$GWgJaEINv!hAkwO{-7I@LMn=(T%Ib>vKVI z%neoJ3!XAKA&Iw_gCVu}3C^ijpZ=u?capc)2d)|a{uwMd<)&}PFK-B0r`=Eo-kAn_ z&bXm2d==t5>z37n|6B*|o^#jr;jP1YPB`y|2JrQqIo4v$HpSo#yX@98f$z58%n4WA z6hZu^WRVlDx}h0-xq6VC?1tv>bvwg@Yi=l*lZQF~v=w%Y-i6>T5q`Etvmr3k>4s$f zoeV`w-H^`DiIzBFnH#e4n`(n{xf{yEZ>sw*ON;j0B&kO^!$_@GRbJ`#* ztKCpxo|PO9Z`ZiNK>p}AC|v7?O7UI;!MIM)DW2u{Gmo9M?D_m2qW=pU1>?Ml2@|!ZFS?+3A_fKTsJhaOR3SwX!Hw3Nmx%DlR}4x-FJDb9EP> z3;mqEbCoDs<*5w*r!Q$N92Ukw?)qH_8S|bG#c(g`vr_jdtI*nGs`rky3(Fww!QK_Tb6l=&cbxB#6q zCEkZwQ-yA1YAt!kXardB7!R#G4Y#TD8grby+XXP;TUV8n_qqUHcy$D<`(1$GwmZ%R zh(gk2)EsgFk`PtYStL)swu3Q`$wyr{S(wmU=j23#T1^)c{>6-wdqF%JrEyMW@tyNPfv)kRiHXq5q@?z@0;Lai$ho#p~62}_-pyxv8x7D33L z3i;5Qrov@mS*9r+RKt!be5sz?CzBG#86nsZI z^LrF*aUD~((o;Ye;R?;g!?d=K#;Hw;Y{hS72OdSP4n(i`{*S?FmUWr+@q7=p=TQ z4kvh*6S>`V91kxXoRP;3GCun}HHbs4vbKUJ4? zLyR}s;b=LxGd$nC1$32n*NJ?gVjO2wa6=Mb&>0O~Q5&EOD=r#-WPY&oj+Y+`cYg8m z^*TF_-lyhvTEx~cF}zP9Gicyeo#nj!9F1nvLibinGiWL_GjTj8hj)T2?U}F;Hs+ye zrX%yRfhck)WV4tjB<>1#cmRaI9yq>Jp zZzimXecs^(VWuSvYvK!dDKU%7r;?nPy?si(dO~&_#6pWP5d$I5KJl0XVX+9|aabuz ztXg*!!gGFediwY}0v^$9H}MW0Y#?}fHfAkNHSt|cUR=Qbc++$7{$A4&q^h_a%x*>S6&q7kQQQlTRVXK{MJhoOw|z zF+Qv^v~71oJReyECPXmrB#cQSU*kF2cn9;McTVQ_4@K{dbVDlNWh|uZWM1p>>gasS zT%e3%Uf0NGezbshZkJnTUQYfYqFY2Wp{CH5 z6-gwBnFIfV#8_6uJ(Zbhay8=IAQQ}5K@cBwgS=qAW`~A&Hz)|^rrj~NC9opcL11ZN zuCoh+&>=S{33biJIZz*V!zRI8U^qk{af4>TyuUW6kGf^ag88?hs7+)=Xlzpj^VMU{ zF1}?QbF!czi3yM4l8?V}nsv<$hi+mBH_ozr+u;GnxAuXcb1WZuAo4fQBF^WT=eRr+ z%c~)fdch6pe67WRF1jHbe-yKhamfwk;n!e}FfO~HeEi6BkaC4NO@8_PB3o$OW5Gya zHj>E~eS&D-V17l>1RO6q>-qWktz8enx0%-sm?`pK^26^t%oVKe&QxREtDTJfHTtF&3s-k zyKH;Pyw*VfWx<@+fTRqj9fG85f|)sg`1yJa4u*g?ZUJd{Cn;=lQ)l@CP5dLRu=PC? zMgUc@Oi%RkqPc0Flc1X8Y&PeL0)?2(8DF3P>+if%pf)S)^zyIB-#_7Od%09_des`y@ft=0#r3*D&_Mjp*5=8F`1jgPHD$?de(`XrWKja^5Fx*Km|D}hqo7}x zE@1|j$z1k=@hA7NU)-6j#(#5XvgSXzrJ6TQ;Op!LhpHdD@!WIfL5)X7*}FOe3VE?! z&YFe%`u|Z#=1wt>2I$K4uPFX!Yg2!zIK}F?Rg7^Nc#5@l%N)(whnNH|;yxiks5*Pm9&k-unkl_DI)^8QzZ zD;Ew7pt#Lqwg20!S*+DBv%HVzbxtXq&p}kx;%jn=I3FE{Lm?os~a|60C^%fP}uKMkz;%d_FGAl3dQeLT9Mj4X=> zb$@>GILKxdVIF;X*G{?`KQe=I1tK2GJnl0Ed#?MH?WG9el@(bt~=816|@zW;3N@t$~_ zLW&kCMI@P3e=2g3JpV5enS1enjuu?+d{ETWMhs_vS~iBuSJEjLE65_9CGl+RY*Q@2 zuT@7gx3%TZFl$S18{F1`SXsm6QCz+P&IKUc?%a)Mm@~Op6=rv;f&R?Cw`5?bRB1>L zY>oYLOFrx0AR*wJN0JZq!LmfnE14S>#cE0Qz*s;-hU+P4o>+1_S(%dTqO)|FqF#qE z3%TKCfm!!I}1U_#yUZrCj;lvR+tzh7}Cl=agS3t3Pf#VSh$`a9Fh4&k!{obAii zW9ytt%5CtRSRMZ7m;Z}dlrn^M&SvF(Sq107@_zjN)y`Sv%X$g%AS~SBzX^pJ9VNf~ z&Wq)J@&q9xD-_ax1+I2y$+xQWd--CHU9Z6AYx`B<*Hy}^Oq5|zfo}gJ%F`-&T&`>Z zZFk9Y-*U!@SQ{agB5}i@Q{tQ@D3S4X7#3~Z-8RTna49FTh~(y7q~G=bHSp|Jp5b}m z98q3H`at52I?z}W_dZp}^DQ=L64!f+is$^H7CbKwq305bo}Qs3ZdgBh9$Z71kw|w+ z-2PHT-z9>qY5#x}7|%&s+7U9Py$`8rx|Q&Q8j`sMR|)iNMNjRDgY5F(N+R+VqTg-e zsiGCGjka6K3Ph&v45L5hs1Rl zM+&<0)GFtOkd3WV=s9seu`T(7JQ#;`F2cBwXcn7E(3F=X;+=``E%T5O@4u2ki@K2; z?a@K-)Je{JY-d2@LzreQi2jet6w6*V&^x#`uL#(O-iua2ei<3#GGyN4t|C`5DzdTtm#KgNc3( zjy5Fjc@mkpy(>|++C{(fUnXUBj!^BB+T_@^o+Pt{tJ@ZFx#Zz`)pK6z)c;E_BV}zK zlPS*_u^lT#m}Nc48|P?Z-iLD{ydxsvBiB)Qqp<0Q=|@Siw~e^EwI=#SONgHDNEi{P z6B0LfEjxK4H$CB4zh+3MX-1r^&Mv zWIQBpjH?4a2&La&I#PIz&ctilOq69u(C-sHA+q|1Jp?RZ<*xg^W9a{0Df~JILyVABf@oX+p(M zC2_BM(eKAM2%lFchEpv`WvzmwAbJYX1S9b;aetSg+GoF0Bl?{tH`-nz{2Dv)HjAKG zuHQ|VgcJ0f+?8nB*0qx0Bvy=QNmP6{>og{m=wWpFFezJslmna`PKJ8zAek$1FoW1^MIt6o zjXaLN$PFW<<4^39qDdVKBF6L>viQ0{J_NfakqxdXRG3YeEfq*nFCeU89F_siYl_2rzLhCee3F5owJ_WcxYfAVJxZl*2K5131FE?37AN@J z^}a~dae5&h&ss?0NZjl8gue{`Ox)ig2q^a@9H&uSvBD%M#|t+CxRc??)^TAgC{CxB zQtaYoFa}n{yKUn7x~7<$kI0Yi@uYbEHfq1X z9)y{M;|+F-I#T6#}(fP#O zb1*&QOOog&W698g==CNp8EZ+24ac6oHS8<%$o4AmHq-8*UYMRZiezWxuNp_44 zBhReJBVetDH7>?09*bXE-HMsxpv1JPFVvc&tARpZm>2D@^hGalQTSxPN3e?>pAU+X z%W8qU%=}P9;Spc8Er4|1gXX>G{6!H;Uh%IjfZp)Q6TtnEAM6Kb9bfqF31}pzaB4Te zb;54mHPLWV>)FM@)cqta4ElYO(+TiqE+QOzF=PXU- zb4nvbv-zB+i0L9e=ueQY;MZ4#o1wh&8PHbVz7|j0K>3mo zTrl?3&k&h<`ap&?Fbwj%qU;ir3prNMTa+K_J7WbetMX5mLWXa4kxD zLyOVf(s`VJOEJ=vuQ2q0)h zmhLY6IVu#}Qw-h(7Qn4Bsl;e%?itKE8`jKZH)u|u#R9${UbETIcMeFM!&+y+x4F#z z4N~W^n2&MHfcu5+4K9>+?03ZgGr=XHS3StMB^>uh@laU)8cNfJ z3RTddvV?;}K>b1Zw>|`X7MlD6WR5U{M!0EWI<>$Yagz;o^Ta`Q;K3%bMk;h}5${C; z+9tl331Q*lw6c)0UA#dn{s{4;7wp&}I#$q35Gk(S4$__CCmYm9iG4mm=q|B(AjLym zM!NuPP?|x-9`RpVE$tOAVht(9h^eI!kA31|3#9EAXO4l217bW)Xt84343NZ$yF}P~ zP*f%X882>H3n)RH!~;4cYPkL-ISz}PE5NAfrZyX4_Y6}8am+M@KLc`>X~ORyoo)I; z`^Y(_U4KE-TvPI9)Xg(pK<-zXZ;GMmCD?T35$YD0Qs2YgMW%vS%1f(FaWZV$XzH|y z95fyJ8}{xtl_c-?n8E{~-svz`$70;oXBwt71g7<*EIfb9M8?X6<&`GTZR8#V-n^~$ z|6GE0?y~~bU8+xjv0WQ+cy`-cAEx$rhAUrE&qFz&?zJZacJ^K|3Y2}iP*e3?Wr3`I zgGb?a{{i=4#sEjIO(6Z_U;|h<)^o}_KMcd>)FKFfHtw+uMmnYY%cBawlX#t z?AzG$*)(W`vxJ(!MzDqTK(m7dQ3^GZt(*aAF-)Sl@s+rx4K%$L?@t5c66xqw)a{bO zDGQV=J=p;0nxxW;ks_@b47aaK+pujxv!0~9jbX^ctL2mtD4B7D>@;`U!Xt!vf1790yo14?zdnXspd$TwY&8fG_$d zjXx#-rfopk4Y=$oRXJD_Y}LA-!S9-L2wy+;1{5}U8iLR@oahJ!LyJ>Gz}%r>ZxD4% ztAS8-ve&@x&e^5V5?#igf-6`JNf0#Ndo@Hm#%_b? z>8#Bh#5|ZK`hs>j3+e{46)bHU=vK1OzX7dc_w6WFvvUsYOwm`KPk{mJSffN}UC){< zN31rmSu_%CWC5$8Y!fSrE2&Z_JMtF{-ppoDu51enazbbrYxo?|*vgjEqHG&mPkFy^ zR`U&_yq(!QKy(C~d>y9kVB#n+M6#q7Fl{GmI2$+Oq$qak0fg>i**0Kzvy}w_MYA^8 zLP~pB775+U`ZR(uG3;#g zgEEgbUQu?k;UkRRQj4$W5xn1CAra(|dN!iW@!*r?A!uZ61Jx6faPni(5K)ExyojAIctNpxDWh76G}R^~040Q!H~CALm-ym<}?R`SHwUe*$wkaEOuB zrenU@E(Y0>6PzbPx+6y z2qaa^Iu4rZ^|FDlUFQ=pbu;KFu2HvQaJhL!I?HKu>JI3CkL>a@W8s;E%QKR1lZv1& z^wu#CK=D?$@vJ-p_spfbfv-`~ydNDc{r-UZS`gbpx$>#ZmxiEeEGi%3wUX_{CkPlA zl5sZ#149($@j}_cJrJ>(b)&897WS34BvGt7@$F(;szS+bRx%KEv25He_!!3=jp!oV zLH3f?QO8--Q(#Z9ORwPcNmijXe7VMYI^cW?lS-qw&Wd#ce>y9=84OQZQ*tJQ?V&Wl z2iCI{6ndm?P&l954~+ZyJG($~fFCvjhQ{(bP1`5=K}S)X;zPQ?wM%^F?=brYUxyAf zQ~B-GWcPTl{$PK|kM@P8biPUn#4w9LPe*wl_~l7}f`m=CD3v}_@GT6EU_sAmEhAC&=w(>7D!>jgeVlzLdS*haF4KhJX9nK=Fw1bOeo-N+b*voA1-A| zMOLT(Opi4<)E;od6CWVDQ6SCjO+)tMIcQb&pHrQ;4{a`s#|6WNQZw>_uI!cO_+25a z7^GKTum~1ci$s=As@e1(VCpEerLMnXGQ!g61g`x`t+wI4lsZ)X7kEdHMRe9OAfXuy z9d3*U(O+@%5#3Solye(0EmdK9F&ZX;Cb?A~0!;qXpYTw!ac2K4JrDz)ojPDJAff6RC>XSw@25c9TE3Yd1g+!8-9xc~ANP>9svG&)l-LO6%i?aNw3+{27NlW( z{xd*s<-4STG@S1=9(HZ#yVBzJAm8mi^v3gd=s@i{fA18a8+-sIL~il7+d<}SKAA^! z?(#KhACbxrj)buL{H_)-G>y-t!KR0Nh>3Uh`OV)^;XW+Q;^!Jr@tpS<0BJAz^he-$ z#pgIdn$5RXVA>mgS3mI26xx1A-7H}&t$61ME%3FPG*|HY3Wf89amYZTb0$*CW~b1s z7@#Pj2(`lv;r4exH-+mP;KXeqn=&tVggK6Pz@`eP&cT^`LYcE@$26hI3=|K9MJG`_ z5}aef|5)(+h~lX*wLKio5W*4xWePo~f-g%Lngl0a2>WS3dnpv6WXEfv)>eql78;TI zw*rqVUeY@uk#-^j3Fzp)Z~9d=WYy2lP#-6$0133(IIO$PqdfhZR9$ zu8}}a6U%19?&)IaVR$%8w9EuFTMX?F_IcuvEufq)%7>wFfw+4kR4f#i-2gH~To4Yk z7mMHVu1QX@4z1RfibpeWWGF2c+tIRog;mfD9! z(-71h6(2D0C5kG&pGo2)GW)oAlMabaiV?WaDV-8mP;T^$XfFsW&WiVGL2+K}oCf3t z@hv{olN^^s`5eSt7I)@{Ygff#BS4cZw%-edDdH|<7o_WAUP`o1PFFK&reKy2^^#Y6E#5Tra7ccj3yC*mSHD9R9Ls*v(b92*0D zSq^akWzn9CCx=7DOEI)5u&+d?7iivyl|O*vt;kb=-;1Aj0r^2p83);)#1Bg#^s{(P zhlO9o2{hAv6FbnB`iJ;u3S7z&9le2^D$VK*l4+9fEr^~et-!H`G)r2Q56C%^W8o3> zh`Cb9hQQ93ia$lzf+c4x7#B(h+C$+YDP}UH;oblx)0aq-+d#!qNeP4cWzsv!Hm{H_ zRRwaT)Uh@~x<;B=85XXUcH#>pX}wgxA&?s+?`sgfNhXS;nJZk)PcycNxY! zlOibbnkn%gLGoOhaTp{or1v#YH`6q(42oH%clUstW4hN>^`>2a{gtq0zNtn4ID$># zG&d|Xb##Vw&f`d>6XfNlSUTZZVLIIx(OPY~O55c%rjtmJN$X4BU8*Q6i-ZDhk-QRGlo2M^@&;#b8CXmFL+cW{mL38^tKqi%}j+n>B!``Fj ziJcXI$IQ>;5z8d=TxaR7#T}h!ResU@r5#%0lKHP8D6W`4kELjvr_#NdYvxC>P@7^t zuR!e$^G@0T-!$(%0!4SsHRAx?HLoiObMKocP+Bm}Je01rJu;uH2GNhrF)u**)chkI zMr4@hS4WX$&XpggJU9R0C=Z%f=Jo;@Uz<;?go?N3g`>d#&Rl2}Xg-*yo`o?V&0}5y z`fUE*7Ik0D^Zo+mH*?XsD88G$mjjt&K6?#@2FZo9QB0HlXx}_t{%1IfnR5GSXr)O3s8R)p9sR4 zM0wh2s7R7+SD^m5>`fb!lk!6+C{M{(euJ2*m}tNJH>lly69YF3TaO zA^M7ZG>?G!>Y5zBkpe6y(`B}s@(W5m-jWYBfZKQE4R29*S5BsbrF-%RnoRD?{i?$3 z2l7rz2|bk0J%rxJa@8+DK9R3i1Ibf4jS}z~auS_1WXchAvnNY#(h~gyy|G5?gQSgZwWI1)t=${;=t@e381`S9uKu|C@Z2&bofcxALRN zk|9&QPw0L(@zphVB;5R(@LxXpZt{Pe_@sa2J6LR(f23TE{}A z4hNx&lpeG@SfX^Kjh0h6NNd&QN@>c=tx$&3{$rK0JQ|L!R&LUIajnvf2Ay?E6m69^ zD6{rJ??$D-zwkFy37}=vW+lfTMVRt?Z;0Ni)IAC-wk!G*utzA#tspwmp;Y;Ta;NhB z3Yz4+Qj7+HOG;;axF%gz{`~>|t4aVJQzk2apM(`D%6443maZ$c^8k5ENwK4SZY#rR zHFj5dP!4>lO0T+*d0%}z zn*a;HDivsu{jQ8p0?7}huMT^I)JQr=nyLy5z&>5|r_A*X)x$xz*k-A3c7kTMS}h0s zbJgT?K+aP;k-}hgBqetisIO_@->x>~VN8T-42AiT>U}yq*{Ob{Q}A8tznkFUZnZkS zF?-asIjGyK8b~Wh`&7?XkhxziqJuA19Y^{3IJMFVI^Ky_JJS8w1U0KQNDr&?o1*fF z`e!E?lc?(JAoQ5JZVh5_LcOv8?Q>GSIus0N)Z~q*JFA{;07uWOrCNdHf_nHm*e|Ie zU!m}_nvUZV>8jc~5=F8)xCvxlS4Y$Z-wn0lFy%M2p;{pkuH9Cz90JE(wJyF%mQvM9 z_+(hRuRf*Ql4sxLO!Uk_JRA8S}YQJKC9h6g5i8QVS+0fBIo}Fx z1a*K_+VTP*S*=Z|1(|ELE)noyotE|yS~qB`Y4NvFn@QKYLbXayLAhBw>1YfUVcHxT z3$|)ghk-F%n@#(c?OK&&7_&o5rKvkoyF|OrDD8R!XxgO>r5#zcHoFK&_GraVK}w8v zwkk~9r`=RRazN|!12SW^7%w2>wGDI{oS?A^fDUWs;ix;JJ=Yxok7=z&BO*y!j5nYY z+ShQ%KB>ie!|v1CqQijBXdZN#>6|u`mJ{c-H8h)C)LP=Mf^UJHd+v?LMiSGA6` zHNB?AzC+AYw5GMecSCDWM-VqP|G6;qw$_XG4R z540Q006o%{(xr^Y+Vu_4o37+Eo4Z9k{koFIojc7wKU$5t0!7 zEL|yHtVfT8O-u9zbfDg$NY?4i zO2LTrdIlw^H|dRT!oX1d6P+@J=_w`{u~i@V8B$K`t7$cUM$b(H=vjR=J}i^Y>EBO5 z`+0qEO-Q+*C(xnnMSbG}K$rBx#CKUAd=SMI{oWLazN#;(fFfBx>evm1clDy-s7%$J z;lQTpaddk9Sg$%8bx-tvmIF%Hy}eO9)vwWA&kQ{+1;sP{-?X184gb6}m=p|p35yF2 z@kA&K`?iG4B8Bi(oK&>OPFPfI+EHKvd*dWgDn7Cd#FeP+cmNwqW|}}$Y6I-J%3xQla1qZ+v40^Fm19;wT$R;}V0qQgW%0Y( z+)sE`A5AAZHH!Ddv*wEqkY6jKI^@*8hrcHx)g5yc&w7DAG*Q;y+Z;pzm4Tx1t^l0 zq$Z4JrC0pCkrN~@Di1AFMQS}8Y1vPD`Y7kAJZ#cKHuy&&u4HvXVlFURGFr5og)BT%VR(U4n_qWN-+QaN{`Tld%ZI}Hh z4;LYyKZat5oF0mnipx7zj9z|)yD7hWY0lVbewCC6@AE5~;TAqFY#U44!fH8aJ zV@qInjJ&cjY}zMRpNG2rGIs;T0eR6RAY)~L4h7@n$cd1hAit-#?2x>YE;SvN7tj|1 zN8~wsfIKQE&4i(ea`rvkqLYrv;g!%NN%Gq6;6EWBJPq?t%FAdlJ|(AD1aw+1O{?!S z^2s`2JS#s92J)P|U@WAam%Yyex*#8*OX(NoAv-{MNiM{J^0MrE86;Qam(L;ks_aEu zkYxF9ABest=f!f{f#uyw6WZdYyoQXrCHqsl`L^8X6asulj@=3VyK-O%id6YFKElOf zZxH2c?#mUzASO+|MAko$3r&Xlhw|BT5cWv^Ru9l)IVc3J^+aywgy?j6NMp!+D#yP8 zLx%iiEZ7~-1DM<o+7e4l>UtonMkGlLh$WWVw}(rr5vSY)-I(|F-Y01{ONdz%4nq| z<;C_WM?68ZSIIjJ{>CUCouOi%a&0d;3Fhm{a~kt7{a+E6<1sB-Wr3{6xHS4BvUDIQO0K2A~|(WR^7 z%7AJRb3!>o7mZFTgJ=PIN=ZnA(9??fHHk^|hw*o8q#Mdd zx(swv`Hj*Fx0HNz6X>>5Hy^~@QHE>-|6OGVEyz-pg%M!5r;Hm4P4|`Jv*1jc@?r?; z9w>unq3)qF{|BVtK0!JZK2|Q!A?y>S@@SBxE4$($?5UC$e_FwTrS=#)-hHMNtOS}& zC6w+tWGTang66rh>NUi?P=*Xc@lyGdz7Kk(B>e*wua!g8OR|;ONl^brX@3C5yj7g} z5WIKFU@N4&S87=x<%6X12KCd`5Nf*_YU?yWGu7i4p<d8*H7Fw9pc(J;5tp)UUivUjRA@h3&FM8AIqjM3_NI+)v| zc3+BOuUePx0>-EsCBpZqjbgyRUk$km{sZc3x?vZqzM`|YICVSC`3F_+HP9QcPPvXE zLEU&C#UZtIJlGGb0*wMk)bo#_@2Khsq7f!h^`hG$$JP9<+hyv2X{bD@#yVawznhnpZv2-|fLDkOzc~PxP3C~OFg8`tttTrABDOc13 zv^Kh`KBRS8vYPz>HeFK{2W^;B)YW-Gb6w5X6=H6vo9KM}rs^FCF}KuNTfuQ#U0ebd z-cf7QV&ty+jBXXBs?l^rc2AAX2H$;ES_qOfb;&r8JWyxS$?QY5>`I7!q)t5t%Eu}Q zX@k&|(zVziyrK2SQ&pmS0U2t`=7{Ap^)scXGu6c@D6-U?Ado&+)uVVhUZ`p^?0uUHZN8hP=%qZTg^XWqq>@X%l-$ym|5%hgg zyXR1v;j3DX7K-20!IbIzu705G`VaNbdJvPN4yEKlkd{pe+Ns(FIvJd%bu0st=~_QJ zQJJB=JA*jQ)FyQR`z-DAUG#+6TB*FKo1^s)1ahwSkv=t;r^V3m*?g@YtrLQ^N}iM! zU!XnWA#|bk&jD~O(oU~H5JR-U5g=Wx)u2T95^eG>Ku&F)9mP`Z2%VlU(>_o>d%1Qr z8Wyh5roDjBm0Iq~fL3WN5_(r_i<=@OYqacg=*MfdeRNNDo%ZS-DA#KqrBLVCpiSri zF&ni`pCNRU7F7-Wp_+F`RBqOupMl$3w7E8rglTIjySP=0p@WWX+FLqA4A<0JpxmxC zlR*-x1?K>{Q)_es{zhs4QkHp__D2t>->r4ZLY$&CANo>gk5>B~;_aMxMrhQ?1bhRdjirf8=!Mqd%AjjUhDP({1>$DlqA2XSt$d4NfSk|U)GLa1M-SC z|1o4<)gFez>|||NNw|GY3$r6YDOxf54DGsBpSJQhvl6Z#k6P2)Q2$B0N{)Wk z=FWkmU$pylxcpW7_y;Wfrg;gV{I1QuL0_@_&~8qGqdD4-dWc1k{_Y<@Q*}lsX4CXN zrNA*=Uo#F0XXsOGfM)6j6|;0d4so8XH>Qs-=ID*+cGq0}3yr<=^ab=9&DReVf|Ovr z>mIbh0)1c#JX@&$MbIq%IuvxFO7m#C%zJ>C8+jNC;AmRFS+O2Na_fuLwQlC{DvDm3UqC>kxdd5sBx~i9;YeC8S zTbfL-=?;~y{iW#3=$7ntJ!C34Zs_--L3&f4L6?kf=~eK3j&xfun;*~}{S6&U-POBP zf)%NH!WgjM(*v4A=zYD&2&hlfm*^-S=ot&3;-Nl^hV@5!Eq{djvEGH&k5BZ4rNNi3 zZ*Goa~(USuxBywq>d!SyTskCrg)wO%X=eA#*c zy?<|XgD$GSMTbBv-s#%EfZpp7J5cvQ&(jGqKk7wstylV_=eZ8OpP>PiU-X0}4jA=S zzjg*3-}Hm@dCYhH8y&*@&_n3XTaKRj5*$HB;m@#Qs_}{rIHwt}3&Z>AMs^YK%`jFk z2j5JiI&ElX899`vo^4E`9l;!<1T7Wk8s9!a{XF9Wb?*7bQCe~Z8(+83m$VCvPV_n8 zLgSC~;9q1U(PlQpxK8V%#m0I%m0n`B?g)OTF`Lp^ON~>$@M)RRIt6-{8}XEBTVd3s z)035kNT2JkF&5E~kwdA0g$8G1)<<5@(G@ zD`CY2V{}!RebMMO4ni*(O^Si^vhl|gSaHQ@K#8`ihDaBIl8wLU?DLv2N`Q(K;|^Uw zyKc<$g{B+E2s7Ak8cc*Qw~Ui>QFq%&xdQe(M#JT<)N_%FjyE}?j4 z6x{)PGmRxV@GQ&7lNXfFjr@(F{)MsW92|UU#N7e($~c%z-SM@NWdmcjQDq`X-x+D8 zVAFf!uY%zJVCpdokVe=TKNb z!;fhNS#g-$3J zTT;y2wXn`I6<>Ww>n&b05VZ}KqTRsf*l78K2Cq$)f@XlBmd#fnX0v5h z9IV)4Y4b1m!z?cwL)uo$u9ZM;v(%wPb-1P4I52Ft90>tQgr(^j6gw>WY3UPb>DnJs zc3Sq-g1=FgQ2Mrem!%&5W}>v);u()3+A@ASNcK1^ZRxe&YZ+buV2tI$B*@-p>3;<@ z`z;-44}8E1jI%VJ3Fx3@2_2-xTY@h@c7mnUH#Ef|%VoNcci3_wH~5ZN zI?)GlM=h}};BTTOq9~j=W~oh0k!0yL4t2*Z&I{wrj!;_Ap0@0yuY=E6(%-|&vzEA# z(00L6J{WZuExE{`OO`DRUS77~pck)%rN=?oeAROFPZY_PecQo)&BAVgA;r>q3fkzp zWzlOGd&8nshPIoQta|Y7mSrJbkG*XfMoZ>97R5o=_U~Fc(BV?5CG8&g?^))KgeUhc z{ps*L&2oa$>JKdA`$OnMOFjh*k1R*%{OYj#AjZ_S^ZuD=Fb|Db&Q0&9mt(6rF{Xg^37SsPG#C&c=x z6vQmH*7=OOCDyOFBP%(rp|_!MsWoUf>Xum_(P#9_ts#^PTwx7hU|(rf2O*-XtcU4_ z{%UIiO`U73R?69|wf0CtvCisK)`E9%y>%zu{oP=Fs=>C6)|pm7p;jB+`rB+Rm8vm$|}>nu3grY*5KQ1ofi%39nse598~PFKBdU+wPxW@g9|wD~wE>No*Q~WE z!{33bn0-^TJa-<-m(VLClt4>Np$`DjDkdAs&t;6P_ zVeVNA(4~s|)|C2l~}tK|t4KCxDM4Jh5({!iHS z)Y@tcC^M|BcEiwT)*_A=U^A^}ngN?-ZT1zKo?AnU0Qth2MtOsmRxetyzqXE`oO-tP z-d?!<#%iUb&$re%`sn(d_5CtXzPEO14de&wph}SP(b|%3s(!MrI|~axTer~M`NcZ) z9E|yDO{I#%_klVkOwWI&KjtA)@^wN3a0Xqv5QA@EPPId*_!hRyOf z>So$vR>7uOwlF%~nQdE6k(pzA*c8xwo5w#;5o~))gUABgG#V%t+PX}J*^6vnnxF`= zCDS#!#kRuL=%(Hh8+QO4PTN^KR4lbsi$K_x+2n61mfPykwsw^bGb!F9+rPA0Tw^Ov zDYmt?B7aY>>wTZBqlKdDz@A9(tWfDTLj(x-eFrd7Dc43^*11Q+QvKpNtEqeE+BW=o@|Et z-L_kmU}3cF1FdoP*rF*VvDY@?8WhIZgy~SY&*n*6&i%G$!O(la7L7j_FU8t+(z-Ox z=0SJs90zTMskg-2#?wYL!Dd9G@ebL3-w4LTwy_yN9 zLq(F!DuCg*E$1(|eZm%42Mi}|O9h1Fl*xFG3>a6YZCs=>ZwrDhv z=N-0kCqQ$-7Ek@-qOEi_n0U$deK*8hw$-F79#`BpU9(-G!6e1jb0Lt|ZL4V8bHldn zES$M%dqQi$TegFAH~hA(rvlUN*d~>Lrn|OGy10MOR)%i0+_xROh$78q(AfFF<_PhH zGY@T@^MUb^Z4>Qjp4irp1C(y7H48y_YO@}L!VFuD2Vi_=>oyNirmY`cKzd>G41nyH zHXD7y`^wg=8IZ4S#qc*ErEJ^x=cs#Q`)d|7ytUmm!I*cpM)^>@$De3JEI!y4Ig$~D zkG7ihH?Th0t_^_qpKX=Kf&YtbLx1ppwVmz&(r>o+_@fficUv7Ar+(NDd4V#=#+Jd+ zAp6}v08O>>bL2Cd3|}2-%D6ANRwwCH4(;&&z2~q?Pnidr&fDFSBP5!*YAz zdYHDto=vAJEA75>LAlEQxCCUbwtt}I$U6I2`r9Py?Q?R2VS}CR2Xdo*$axL#-zIxh zFrq{XZOCcU+cL8_rx=rtBf?%Qm7h>H(wcF`}{XtlAU5Yt1O=1u@^vPpjvjE`)1TVYePP0SN;wAj3R z0TcAtW^NGlw%Wu|jZm9S0>zZuZPruiL5I!4RhWxTn+iH9smms0Cxkt-siJ^wx6Q_1 zz}{mMpab4so3c02^x3pIgYUVG)$0+u{Wj-mBRgOtph(rA&AU_;H)QkueW)0<@wDLL zn2oO!D93FU-NejH*yPb>-j;EF3RKuJJ`M!lBaBm&&~ucrlj7UQ82?Vkl-M)4=W)@2 zq5csv9T^+00NQcJ-HlLxg3)3<3)xPLLh@LjVtnY2t1gUXG+(C~os=qdhVk{^kmkxr zq;$2jj8r;F!Hsc@KIZ2bi3VJBXS_U)-g$hruL9!W*z6neiqCBvKgf(6%d;(L(F7>x{LO zY>~#uq_{*n<3B(A=oyS%v!L(>BRdg4Og7`Elen0}(DniLO~#rd(3{Ix_#Q~|7)Q55 zLq5YR7{Uq|m8dzePQArYQ(|Z_gTEGoC5)>+U@T<}w1T6IahY7><&4%ZAf|#bzX>yQ zn^C+Jm?{~Q`CzDGELa4}YR2pgK)b_ulVU@688QFgax<>o#aJC<@piD^XPlxPT|HyA zJ(>oFTN~6`A28lC0&pYadl_UuWW?##`uq3{o{;2 z`ovB!T6RMH5vI2-R2*ey(6;Ir)0Y-$_RKuWeRE(Q{}Vk&W-6^zk24)|RX!09^EDHuiwTmpL;4?0(FD$hGFrd}N&r zg#pZD4nPGm-?#^%mzm4R&|s!+J${i8=5J-V7|LAy0VuCBuTxfF7<0Wl^oBEMJ;cQb z=C-dOEs{B}7?e@WANPYjni)fG=osc9Ix{Gi`4K%h*O>Whz!%4SKre%MCdYmOx(Upo zJs?eFz7q@CNzAjfa7|`@?gWk$X66?dOJydJtNA+fZ`uK+F&l>5I_(A4ljL^4!R(?v zbT)H@mWnydEZQ#LWL{c@UM@40YB2MdUy>6&pE-rTjRnk4_Cv}orkNIph0LZ%uop4! z>cLRVd~pRPuY{TNH^xetiLL-x#{4J)29`6w@<&s_JV@nux0!KP+E!IE7rqW@Rm_Zb z@K-alD0Fd$+4Ukc-DNiK21gCE#|7ah=PCHy z!({G3)60C%5kEm6^RHr%JZCoW9-bKHZxo3iVlH=cb!1sniDZl! zLOF)EtPPYXZ^vqC0mTv4v~GYn%BtLo<`}EwPmI~KQhd=ku(~Mc#F6#iKJXo9rF;e( zPOu8RpxueJISDwOS;=+)agxP&4Rd#jl}V@1xv+#;7(2~cL5VkKSPUyA*SNBL=>vV1 z)la(`H`Zl}8JuIicL)6LtnWr)nFs5awGiXUT1#ty^Q;|yXfCiWJpqFk>%E0&yjgo` zrRT$P`3z$hSqiE-xWrmY9yVXrTV`nRV~IBap+9TRdY}kkU3R2zVj$~W2GCq)rK`Yy zg{4>k(jeBaG|j=Rhd~$%VSPn!=TO$(QsBMH+CeLjFjnMh^uk#qlu;GIilX&qB&%Z< zE=I8q(S|LW^%iBp$FLNckQvLm90z^ZSfg!d;#k%h`2VY^@vP5j3y{FVVa9l-Sd-Gh zk;MA05%7~)7K%=!u##y3mC7om$wa#s6~=vAou{SUxVF`SPLd#a5F3K6=-T(=pc1I{XlN2Uxdmpf|``Qw#nf)|%arHq6RifUyzQ1uC`}Wo>!^V`HqUZ^1s! zVp2lN1ZyQ_RNJyU<^q!)TSLilN7#FV>A2jZ>{(x+dyM_kd`PorPuc>T9N6C;MbD9) z(}%I+?8TeuA!9f7L5veSsv2X??8P&I_as|cjfC3I_b)j9mE6R^X!fa%-03>N0c;% z6b$-Md$V7nGk|^A-=~A*BD?=4q+MbM(n8snoxq1sKejWap82yqeW5;peVu$*f$Sau zfL>;=(t+U$`+f@MFo^vk2MpF=c6T?Vg|Hg}K^n?V%17@idmbGv6UKh|OVEU~YYM>_ z!FF4TnTccv=7BPbeajAW8Ot7^ZOt|Iyb!2}W6${ou;baml+c;Lw(i1jkjS3Sz*rLd z6AgOFY%SeSDQxF{ph&f{Z+;E4ue0?Bp*M|vkQ@o=YzgH(WU$YWdmxi-pznMZ`)i7> z++e>-8^&z*V)7T|uy0fF>n2-I738_>_D2Ak$G%Kv=d%|)fQkb4*^#cs8OltOke z#i@$e>&q}}#cXQ^#X3vaX;jNx%065H{xY_ajlpvEvT`t1u&Wy|m$%tho6%IVkG9}q z6?^y}m|e{dBuDEV_D>%G%w0C~b*QLeucqXjTK3!-=-p#)pqEh{`yoPFQ}451OhvDr z?N|q44Qv}LRh>OxkL7^0k-gyw#5`nwNmW@*Y@QutKVnC3g2HC@DAmKZumf5_`IzlY zOYv6ri3s%C*s|9lt)0D`-l!dHE#(0`VQ-rb6i?ZyZs>Kgk-mxtkDW@J?q_VZ8^Cn4 z?-{I6*uzdXLrgE*x&qkx*q1(swCC*UP3ZNrW1pZmz;>Sj^@Hr34WJxicMgJYm_2_j zRE)5rDB?594hX@_j!HG%^C7udd^po+6?~C%`!j&K#MzyR#+TD&i^h*rJp~N@oCjj`0yt($h6v=W zp;XAr9H&n7u5dD51DGIAFnLpgIh_=F3E_m&>NS+(MGmp6oL^%B)EdTdqLRUI&K7z| zA~-6FMMrYJxCPl!oUY{{jplr(gqRqPH!U1vIqmd}T;l|g>mZKvFdiiF98oytB7wu0 zz*r*Z$RD_v#EGP5B$+cAuJfrWoSF@oi&RcMrL|n=_-(}mrCB+<7uS`=0ncf+u&&8tYbj-BMu`CLYp}c zj$me5IIokN>@jCIL^LPjWc-)rnH^2uOB2GoWORd=;S!P1d=Y!b{zOI^%be^Fdx1EA_N4PyT;5*8V zTmxapxO3=OLwoMGbcn74wJIH&u)=7w$T8=bz@fbiu+iTzfj3%9VR@2FA{EHKn-d#to+1`W&}rE@ZlMzgrF? zJh%(T(DUT3p&aw`+?$j#dVxEEVjk;MFYebAg7W5`Itdyd?!gt9gp1rjvf>hVcqfGV za=Vt}=knuPC|u*u&7eHT0Pb$uJO^^+{-C_f&3qXoSGd}F^x$!;OVI>#b0{Svgu9l$ zBcWVRCqTQ(y+ZzkFmCz(kIN3{>Xrdi1ef6eX_4IHLl6_iRnxXLn!9Ez)W>k!PGb^c zx&PA3?;7|1fB3cHxJ%xLig@lFN2o~P&ZF2|BKP76FeGt5`@eUNyZtsuQn=6Pp-Sb> zI*p0F&K)}d4QX624va{*as_DsmBB5c{G&|nk2&DT;>vx{yTOg8itKEzh=N=>+JChdUcepkaF#9gI?Fvk*;T~>4 zQ_GbKf#M$b#tz7?mv_m~^UguSiY=Jx=tjr-@DP~Xm7VgP>!x3CSSJ>eFu z0RL0&hEz!F092*9jDVo`?%F~3gmOHhbx5j zbL%VV`5WM_q8#->Zr3Ex3~`(3eAi)a?hP~}+^AuYjB@Q7fntmsJq+37+!tNJFu{E$ zgcw`iN*Siqj(2DwP#odaJi*veUTHfRj`2RUgDv*F&6IHAz`OAh#vFM++JfOYFLf(D zev=4OReI$jw&b(L(NS)+)li%kQuVyiXy6{F90nBOMs_&-2P(M00^R^*5O0#rrRMGM+zg zp8Yw9@!=`{1;<5R7}XqK;$8U~hWhd*en!uaSGxo%{CRmu3!fUmdxdgB0(p)~G?#g+ zz69SDUcoLf1o1p{fE~=+d=FzGyv8w%h4TDp|9O=sqXe8V-XuEqDV+Dp6o9ct@GNw+ zPb66^qmgn#VthmPe?>%}_6M2JCke0-&pj578 zUJ+$Nr|@>tn=O_1!kcKW^On$YA!)p$6ckVAwHHG}2Cs!uT{C$m0fc2)c?b4E;SJtD zR8ODHd*c;MVh-;-MR{-X9O$nQa(R^$>dxa?sQxXV=Si>G0$#z(u=f^k&M53HJtT~rHG!uz8MW2L-x`wUn+UOQPDyb z@6ZLvuI62T0JHD#PK={>mnSL0SPif2Dsb2G=F=!9KRFOhuhjl5}Az<$U}QG>6EcWD_AKH`a&VGf&l%dO<#YT^AsaoxwfJAb0r z%DeavjA`T5Q}nW(=R&EY9Xy{);CR9-p|{sl-n-=K>EvC_fx<4H(_@T1<6WSjTsQB9 zAxvct@912N_42AIVYZLQmqWvI-ZJuT^z&Ml0pS48emy;ZgS=Hna18M(DZO);7fG+J z5ndpb8I1A@!l7`C=XC*N^Sn*xq2j4^Nis-@ub;Xfz;|3$v((g#PYvL+M)Lh{NL!5luZ5#x;wM@|Iu6PhLta_#|&ljJ70#v9R9boP`}9+QMfgizlE}5^Z3D6 z!I;l~pa(|*ze9<6y2byP4n-*Bk7Q!3h@Z6s=!^N8ZX>_{;dQbUJ7` zf0ZYi3jS|zqq)r&Qz?5T-#B?bq*d`hp~SRm{uiET?(n_lL(^Tpi!bJ)hHoavPc7fc z?R{_7w`COEs^@P`#{4$$wf@lefUn5J#YTP&m3Thn%Z%V|;k<<_E^pzP+?Q9z}KpYsEt^zvs- zg1&yf>s2Tk;NSWP?1TI*ooI&mlb2%ZhWSlDgKvbtkDP6zd<(sh#`teiYTr123w;?U z_y<}b%vKP$A0&2y>Q69PM+CW)S#nh1dKJB6f>*81kY+EqdJUuwf|W%;;V9TQfQ!ck zD<;5rLLj5M8Ye*)3uDd#mkLbiNx}EM0CP(4u^uM52sWMp-qV7gBGH@?>@s1@RZv2^ z>i2^RR!qZ}d-u9}4xL#SYf0Mf1sa_Qfs!UP4j=!FX!=0Qw^AcPBq zk%FfvwVWCyI5!9L94*L9fY2DhhsU5dR&nF0WP!u^) zAo>o%k_4e0P@gQ=rh%dq!3MZJty5D49`RtjE|^8%tu(>1zn~&r@D{y^G6Yq-(PRoH zqCt`+xJdtMbVKkR2a}jBaO{BW9KqGs(A*S!90j4df?mps&J$=NAS_>Sa|aX_2&%cj zdrKg2#2gk1j9rjfB#5DmL~F6&S_lS91fMNNQz{7V#?>;xonkcQg2gwWsY0-uDo}3= z7B7aTN`aOV{i+22(1z)*;AjAv8bSMWOhT<-FKsUF3GOWcNu8jH0WkLk2Pi^aFL;R_ zD6Z>i5AWi8RVO$W#T!nk`FnMQ%CsQ!yCVZnFy>mh}IXK;gKRm!i58NAD&X$77oT(BEsH-uZQ z+hAI@aGc&7IYRb*^ll0l{su9*!tjrAF;Do;IVj8*Ceq(-6bL_|aLFy<0s3GR3cv7x zm?GgmT7MM_3&|0szz8!(S%xID<$gQ6P|hk$~xiXE-1V&4DZKSz0h_h zY-$j`d>)z}2+eNq2e7Q)eu0^MB%Jd-Kr{<0%h78QmXj;;v2d?5daXh$MV#7%i@t-% zcASC~!9 z%RXV#R5Z_piPlG$$$nuTRq720eT=v|C^XZ)bV$gf+_Pa}OcBJ42rEOOcT~7>2WDbS zc$s2%X z;5{SS?f|o0MZ3vEa8~qN3xv9fBB=`RoM^u%)Vqt0Q((YDG)D95DSF!(`p%2?(;MM} z=+bGbtoIQGlGpK~=u^tnz9e#>96w)CnKOj?iOkKA<}V5+KS_Wn$_~&1MLy(kyDWN} z3YxEoye^U`69&SVnvLuPhsm>x-et>CtqTeWWKVKC1IiwYcUVRGm zw?y6Xpez*KrNu&#XrB;LibadQhm;c0W;#x;R1``#X_;t794O00|5d=23ajV|ZOLwn zl4Q}hXW_Pa#6 zv^jnzGH(P)w`dA2HhM(wl2@u%w6PQ#`a}mTkn&tq_85x#MM5hd-2qWH$sQDG=^+^s z1yn=*u;}heFph|<&v9{FbgB~82Q0&54{5z#zoD@%$f&Y|v(grAW z5!auC6{p3)N$8yspBMp&t9T8Crp}7zVp%lRO?-?>n$C$2lLN|KTu5sq53#EeB%b1* zUkAx~u~!!6@Pc?r1w?y^Pjvu=x44@!`+dYNC#kaVqIk+_&|DHvngdO~;_G7VrTtzO@1f1{74Z>zYXym4`VYngi)EidMTq!m3iv|BzG6tZ zD)yWQzA&+zmZafg-As%{i09MVJ5sz3Z!PQ8DDiLKKxnjhBe|tw#NvxECRSYeBJ^Gp zms6T$oVe)_G{uX3u0Uvl7*g=yiSxXmH%T155h{|!J`}f25oZTBi67E`(XL#5UxIz9F{hM>kunr2TA;xMc?*-V|S;+@f5u z{uijv6aPZ*lzj2rAAqSqeAW$`Zi%mvW28{r^Dc}i5`VS}nu^6`-k>ZI@A(}lO2tDB zkWwZNrnP9f_Kbo(zsE@uo)@tQK?WJ$FYO69pA_#nWB} z;2QCXE4WxIzWq0V-V+;6VXRJkdO2j@7Yp};?}0e{04_F)D=Q%Lp_nlp7n{UC(<1hf zSXK)5X7S3q=(ULTl#%jSY~8d6-Bxjy0E}(o?p5Gu7qjVQ(jk78e)K0|Tm0AA)TiRY zZJ5hW@i`e}cZs)BrO`9-PZ=2N7SGxNh92<%Wf}B}Z$E>~K5_jgQ21QjLkH>gi^FJT zJ0KoPhoV98bUM0mNE~jZY_VZ+)BpxY#BR?pI4Z7sguyX!%M8dK7b|FMHz9r`!$n)k zVoD~olO)du!x2f{LCnQb$!r!>9FyFu2YP$SY0o@eOEBNPhSZ zCOJv6)&ZKcWXqd$vc*YBDdqE=k|eDKZWoF6EHIsxgi=1w8OaPe)^@OyulD{bD z#!b>50KMlVtG@!fyJYtkT=bAs+=ft3N#bfSoR?%%zR3lN9YwgjByLoi=PfZuLxYdR zmmUs5L`eRG=XPqO#ED!@QIcy^7!@t~f|e&Sk`_7& zF;-IeCIDWOys`)kagy`1p&(we$pOL=B!_q5VxnaCyC6xDd`;z9$&%fh03}7T;Q-L4 zN@^&acwMsDN?XA+N%lKv(j^;cU7R8Loc`DJhD7}xtj?CWQ@kig@_rY3Hzm{Qe#n*h z`++}CVxW?Re8~b|@D)hbFGX`pvi?N?EtK3^1=vLrJNiS5Vo6Li#!4hI3ObicjP&Q0 zWs+egERNR(i&4U${lBELBR7s{4g0Wf>bQlWnNY2dyw7Zf+lsZ!* znRW%5Y9-g3AoQMOzWa|a}S6uTajtfoBSA<4$qA#GSPD-Q}sBy+xig`<+tAXqUbiJ>L`xMYhx z)K5r?$scMf4W=>-JE{LnTs$J3PN9RN(ogA}tYgwcRS<12WnBh|gLK6`^sJ83Ya-Zt zTpIHkWS@{0(%aoh8b1v*&Qh^AFrAbl42dU9iqk^ygh_SZpgAo?+8v%SX_+3BuF`Yl zmpm)&q`j1z)bkU_J||7gfM|E=P6|1ANPD@!>nWAf%JjT+OAZ(=Sf%+?#p)$(szTRW zdUy%U_K_Aep}8nsL+O>5q(9Jm(O3Edx$FF-d+NdOFZHDl`(^2gWLS7by3-8yAgLGC zF(EnDM9K*p2$S$)+v~TBx%A9^pd63 zui~Cbk@7A=W~wxqoXOXv+pd5iO**(5W9ia0e*rx4$plN~t#W(l6EM zHAvrIir?UYlx3rpE=RMMelp)Y7ZJ{t+pL7ca z8I?NG`9@>XjZ}v- zE)5}t6ViVqV7Hb1JPjmvGT(JjaYQC50sB$es{N4ZAmh*%!cpe@|F4#;jArnJ?9L}p z?<7<8|9`nCW7C1JCuPzhSbs{^N2iy#$f}N`IW3E!RpS|1AgxwiWlofneO9J10EL?@ zf{x@mCp$~&Gw!lJO1AKjC6a^AQ+9%jNjNX7OF?r%=6DxUykzsA0h6 zk`<7nELf(YV(buEKre)a%Ji*}a#c2e3=Cm1WefC%%NTBxVp&$-Nx&H`+c*{1Vq|ma zp^cUOLN;8J<^Kz~ak5lj*cUI8(7QE3W})2TMA_8OATmkzC1vg=%W7v}vQlI-UqX{A zJ3yc6>$0C{?Up8E?1F}L*#IpxGGqgX04!6s<7JqaC7WucZOaW=KLy;fWnUG5KSx$x z4B0nj1~v@Km2IMLbe`->2cXE89a;lv1+rsQI&w=Upd&d7Wk2r&v?5v9R)8s%{o4ag zB{I)*Kv61-m=6?XGA}#8E|*z;grW-BB#P+YmYH|Z2B%UMPY$0dne$={R?9X=pm#@B znh1q=Wji{-UnBe61^l(L&l@58o-D!((CTD=27vOu>UqlXm})hbt|Ma%MSlXJM>oB95ZmY$-dYCh3&G{HW1n&>!EP{ z6WLtal|GeaWMiyTwqz%oE?Kk_%zh?&n|52>vdxsv)Fbn!7*($<`4f!w$+-Pse=d7Q z4!M5Wp|62(Kz5YQB^i`SZ(*8;Wb5#6-PWnYvNvroI3laDM>8su-UH*9EQG#H857AonsC)sPF>y@(of5F^<@G{aYhs(c0m=7!0WrCn1uzVdAO zAC&-;BX9J>jNFueK&M0J%FVQ?%#+W%2ZXoem;Zx-h4LCo*D8|#s{v)Pd@8+LOXQbq zC;_lk9!<|ynf&~A;4YWfWMi;G9Z17XARwe+}*$iJfO-BG#w9gvL4?Wk^JT;7^SM_NqCqsU=ntB9HbO?HZt zJ1}@e;Y5{(M-?Iqq#aY#QpS+IVhcT44vJUksdZGi(Ba+372n@Mb3(CT7*p@02(y6C zSz%8MCl#N53cRNje*1yKMe)Hqz;s%nsDy?y3Ko}=A6*r_%fOoG2+-C>v;pcr2~32&J|#k;+jgv*LOv|YHO;84eqB7o&JYpYvEn zWD-cODJr)^Z=B+g5k|x-hAG^apeUdk4Qry}UInBjDMBdMEm`4CZ;KQ~DQ%2X6_4&i z+I2-JEy&UoA2ES2UGd(Zke#8(qB4g}#TS1=OqRl&fw3EkuWBJBTk-EENXbzMDBJR; zVh#nga~1KIASF++mCkR?SLD#?5Cv9+nF0m36v?!yUBL1>ZU+J{h4tk}_nizSNe zcJP-fHoHM~nWFJyFqA9uT%or@v5A~Gw-tjFHLg^gr;AmJmwmujtx!oYm3I_h^}&d{ z3JV<`Q=@3Vi@B&(yix+0_Y~F$`km?&i)_%nuQ)6MVEm=lB5*V)+!q4y1I2;_G>wX` zIgs{HaqBDaHz~IM0Ln*-wLKVXR*akk>=wmFT3J0-WXNEBt73B|7}^y6AdFG6kHOGbXf^crQM+HQ6|wQv{$+NJ4oqM_ME`jbLCzN z_Vp`WDMB!yRFk`DQ29HhE)OZQts}5(SSjBDX(LJ{z2-)hx%7yQDJ{Q%V_dn4(hVn+ z>$OmCtFrF|gPrQ=D6BrBvONGXM^!HmgW;H}doRZ9RnvKxPzTl4Yanq{y=?&dan;5+ z*m**=nzrChs?G|GIji=sr6Vd&s+Q4#ucuTiX`Ah$T1^YX)2h@*5PC+Ho(G|>ssYN} zJgZ{AfxE*^l|WwJbE>`c-E&ucPoZHC)j~IU2Fv=GVq#vZ#$90ZRxSJ)Js;IeMQARn zYRLC=NmWA55MR}YQ(>L+sZ_^Wn&0g(Z!Fp5?Os{W++(Ph=W&mrZC>T5O>1gZ4o zgA7)&X#EnRatQ_KP?ar}#$Ht!XX9d+YMYh*4l-P|kZQFfRNjRE7^(VA329NPNQ!qw zs}4~)qIOIQ8Cho%gb$3^rqRkf3WDN8kl;(|9+W%L@( zR^=?mSdQxBrD$%d*3gn8SJg-^zC6{}9{3^hRSY{^EKrqq!WDW`l&E}zA*EDRTuWyQSEzou6^~VE`@q<$noGZEo9fpW0Igk> zKNE}{D%C;U5Kl0BAbF}%(Dt`eb=?+xU8-->!SGDA;3F8?t@^4NV?C;l_kpliwfYyp z?o<6kd2Y{DBhDbP_N!j-2F-wKNC3cts$6=n45{L1;Xka}ln)gnDjt0>MpcbZfnrR> zBfs~!szL)X6RH*|NNm+7=>QTt^$q&^98rHyPROI`a&lrGQ*SGQOndcLuR@W7dL_l@ z9M!MVD)+cmoqrOzPpHQS!0)8a^gz#9eQ_7WoK#I6K#xK)Px8B z64f2Ks#j33;;cGm8&tTdU!XV9Idv(yCf(J!uVA`7)DOus>8T!=2KDFF@l(*dpmz8f zV_s_OOIjG}t@iN;hmU&E|Cfzw<2KM-Qor~fg!-x-3xUE?4sbagNt&z_;)LYbwR>Tjg<{AH;x z_yOAubsOceWvds_f-OhwPkYRp>L5=b%~gL$u8%zR;y5tmtNqAJQlQQxcfl?7CW>+t zsyES!rAXaId+K6!NG!}QQ7@qbrAyU`foRIq_G7(lzHey0Q^b?P_iUsmp`$9~7f zdbN(~JQ~z}jbM17F8T&j(x^VJ0^Wz}C6j=uNxhX2K2j$k3&=XPS^dX2K((kFRzvS& zby68rw5oOf5Zb1WUWgyPUHv+F_d3)`6nS}~{>=xnpQ>4O9#E(H8l8RFrT&o4eR!r0 zCf{VYx@9IV_NdoW!9%Zl_lIcu)J5rFc&e&>JwADOH1B0C=^bKG-qH&~r;G-H@ zHAs$WrtX4e_L?7NVGbQMiQnR)qsE77#E)yfSpYjvST(6Ca5!o7Y^ZS7j7&#!Qp2L$ z+fy3Pm0)zySm|avt+|N6%+xcQpC^FHRrA*X)SuPZHbI)3CR>hq_R#!H?gmdy{BwXg zuaN~q{RPbqaxr<~FS$YDt#PGYrjO=2WvgG*SVgYjxTN`rb{xK%gE&HDs-I^16QJs76R25DnT3}%o?nCVil&7YPC=R|azF=bf*K$@L=#GDqfpH#xu33Tq?Gy< zra4Z9O5vKjZ$V0gMn$!gk(!m{%Zk!0w|c;|XpLVKIASy!@^i#$j{FQU*EILjFcznA zqP&`T%^`BdC1}jFpH9?tP*OyaW~UucBx^n)gejW6KIo-t@(zIgy5{q9n1nP<#0l`F zYy6pD$k0@+0p3i_k?p{grMWSOp1&KKZ=^tzt=UbltsKn+)#BgOOxX@Gxtj08FqWs8 zMO6j)nkI_S6==SRz{OjdaQY?}YPb|tEz(rclBrme&IIfdO_w|LmTI0*{au;nU>*3% zHTVAnLxo1Q1?q2W=6ya55y(o-w||1MO2hdZlV6ShVZq=XP4pJ1xT|^VV{p`HqCdps z*J}3Bfh+ek6@`#ir^#?@%wt(AThV!-dASE58a0|BP(0MEpkq0kG=CWY;*sX&#~5qY z?4kmP7EnOsW6dEB6trski!j!vVJw8!c1`lz5Z0l2mlkSIG~du2`&4rYFN&$1n!`fK z?9yBa0L*8aux<$J*08M-bbB;m^x5szyh!PoeVW_#7<{ggP^I{wW(n<1hcxdlh2CM! z>{2j{X#S=k<)|isHcw-kr4)%C*C;0NdrWBB3eebUFH-`homNF_vm@I4zX9f`cIzH6 z9Mi5LpNqY=*j)&u4%)EaV2q=73>!et~cG1R?zv;AgN;HPf zXs>;Oo~w2tm5-j)Zl$Az+_Z;R0rffU?5P0guATih#yqrB{{n-jc9s?Mb6#6N56CWP zFPYHu(oT_q!CRX`C4@fO-+lmwi`v>$^e$4+CSgtL9S9NUXNW0-9^uiAtb|)4ml074h1_ zFf<9;`Lt6`)Y?&MP?9#IA1acyM#_{<(f&iu=2Yzq^zdHS8XsYv(zM^!LPfeZhITs{ zT6@YF%+&Tz$HgqIc_9?t(ApU>PuW^83*|58XdV6q|4nV|WB|_9c76s!^R$H~sL0pa zOagy_Hu@x>-O^T5O?RR8?*$+!(pFP`d9hZV51}Pm5qYRewQqfoUYT|gCG(eS6GEV= zLc6mEW4E;%PN1pO&Zm6+Ds4Hw^46)<+FRAobVs|B@;Yj@6J-58?YETvU#E><3r+X6 zot1!JuT@h(q(S=!9ZLN`+uMbvQM-l$%MZ0p`_MFLHBM0RNb5#n`DQKuD5SJ#NAzeO zYjYO^Osn=kx~2(av5m4w0kE*_A@Py zG9tRQwe~>Rqm2tguUEToA^7^VD=2#QT+49BSig4pdi=fv+Nvl_-k>)6KYGHn>Exps z)-Ir`*AeYU(O@67YNd4i@0hlS){EoXE3}}V(8}ILW2(iPGQ%~`kaJ&c{yEnWz{ zr*xIH)N#>Sw=aXH(>h;z5uVZY=b>@cou)YRS)B(5n%s1~9RPezw@!neyKWa{NqXpJ zvmn${_iZp3&g<~k8hG$@6%<+X((R)Ug|{wv78)Pjfj_{0QFpf&iZ1CKsi?qLw}Fxh z{B+-2X%XqKYZ75FKzCy@qy_3K-oW5xT^22Rujs;Q4;Z9l{sm0Ix-FE*8>0K3<}y^b zk2p)g1HD|t+B>YR6hAy=0%Ooe@Ux|R0< zDqklZfoTOgyH`MZOJ_@q*FxPFm!PmnXI_SxDc12?K~kbSN3Oh59haPMWx5_E#>#cK z=R!(_&QuTBw{?Z|#;?@9n2!mn(xs7KqguC#Zk9Vb(KkSGSNHrT9o1N)^S%aYwYpDg zL32-ckW!@UbdhAmeO>8PNUPV`Q2J_vZqZFhd!P%X;@L(WlaAbYsLR~|3!8LrHlX)N z_Y$oWn{}J&z|f*w-H+z6ZuK45+p1eZ3~joV0Z`wr+oT2M!x$2knf&Hvrv)c+%H~l;BVt&u*Z9afPcl}>q z;i8AWB@;bQ{pu|+=Dhwe;}lAMAlmk^1ZzP#C2b7o!)gpVN$4i_!axp^4RVhB03jI-rR)E>4WSwO;^%;$sc)qHPL}?}*I>AzXHu$uw!V#Ss~r8Fl|XS*zx5mRa`mqD zV9(R*$a9ph-_-%W0{tH+f$5fhgyPQDLj96Nh$+&mJHSz_pYt)KmFVx^2S=&?IsL;z znSNCYILh^Qv_z}WKclbyZT)oG_EhSd529D4-|Y)&)%wYl_I*cRzXh7^>U}n#SEHYp ziC?l-{|$KR)Pw zrY8LhSE2rq{=XDlY}Vi3hhB@moV-$x_0^?7*s6aV1{H1k;dM~ou5Y6gRXX$u^c8%f zw--avQ~jC0G25N`ugLe;rMJpxi~mfYbQh%EdM_#u?9pGRZ)&f;iRPTnzaiVC=NvZMp@{7=jLg!PT&scEx863MwjaGi1_2 z=$v7C9~8M8&RQwP=V6%M2sECCU+5!#-taRM92X24itl?Fyy@-iZFmv`>wOFX`7q|9 z;ov(MyJW~A54^A8&aYtbGfe&&WB!JPe*k@e;VDH50}aZZ&~(`_#Ro=QF|46@aFAj9 zJqQanjAYZX^&y5TDxV8AgwSdIR}D)#Fc@aot$ji8(uT$_MsPNh-?CTyy3-np*O+sGrhGE4V<^pOEMf;2WZI# zMl9v}rxX}1lVUq`RfkWBusDuZ(+ zrnK7NLkojD2IDmF-8CFLf(fcI#QKAz*6>J!v3rK{MzGi6)`N!ohBd39zTRrs{{|+b z!El=@v>zIlQGI%ofgcEtM~0W_IchfODHE&3pyMi;WX@3LhfMFHAVFnF$;m|u|NTQ9?u;Iwd=#3b%XwN!o_~|Kxjv3yL z0Qzym2cux0Ft}3@kgak4DCWY>I7AijM~t47sd3bpLz~WH#vW@wq}dzmo`c`PIEV5R z9gVDLpg3+!qg0I(Mlrp%oQ&C%LE>yI+lF7{q;X;^_)Zzik73Nk=tfCnr;UFdgr+mb z6?;MAYTTIxlCwtpH88@>xacO>&lzX?VrJZpuM~j6!{}XY!MrH!d5(;02?K z4ny!V&ZMuBw{gR-AoVdGr2K}9#-KC6eaTqV3E95JSLw6hXZ)K2AO6Naenc<87%>m* zfyNzcAo{XVya+O{82_cp?jU1mE))eD`^d{0Vti@!3;Xfl8QuRMPcu6Af;7x{+5=+3 zjjv@xeT1=w5_%$yvp1j@W&9D3%+zROGOed#jMFEBA=dc&GK^g_M%rMy;*6e@B^htr zMA;_^##I#BNi@b4Lw%BQj+@P0mUTLL&#oJfxdULD@!g+5pKhE-PeX>$NN$--BdY-R zWf|XVMX$gpc>uV#j6Ex$wa^$g3tCH!@9l@WGUFKC+vUb70x(n=eaX>PZEU3^s5{29 zW6;oO%zF-oCgb_pQ2WR@VcmwS&BjmZZf-H|y?~$Ru~8ld*{#O$DvY%muh3?>-B?c^ z+YX~I`NEzW72XijY4n{5FkQwI^FjH{D5P+Ix6ziQ^caWe*o{7;dL1-9H`b?Pvigmi zPk?g3xM(4oL1X2p6^0HQLpMO$h;jBBNEBVmwjYuc3# zh9jn(^d3HHxHO$W)DaKZGc8<2UK zLTOv-ZOU?oXdlzt^hY-rO>gs|&)2l59PECkeP4pX-?Z>$Ohtg{5S@$>Xgc!*GB2Bs zd=0HvOfOQIXt1f)9T!7PZ@qIAm_kkAHz50}$w)!;Fq4M1P2r{|6u*cvJyAhZv}rwU z9AZp6Hef1ZO}A6s>}mzpyIaspHhEF};=1WA1}M`^O}_(Ey6MXXG+CyxThMUB)J4?_ z*`{oA4&|C^$oY_G+DwOyZY5&!nBKr zi&Z9%5%5);R$2dq!aF7eeDTILWe7^^mRi&913-V@^z}F{)|+eun4kvJ+W))6 zOaVKgu+gM=iu>WAsq+lRnoYiRgk+0p0d0IAo4m-g+iJR)i>YWc87O0--84?_)2F6m zAz<$`JSFGq7w2iSC&i7=n2TtQ<7$rB25D!_f0Ogr&1|AHuXAQ@ zHyU^ICnXs3Fz>9vta+NFlA!*)`3G7nTrjVB1O_kj_F|BDn^gya!p9sJkBb-0@<3`qJqbho%p1dCy}$Vz+71Vp%j2Lv&|LZ=G+j2Yy$cmr%+JiY7-F8wfS6G8 zE)jZH&HaNgEzE39K@)C1_W;usVV*{jq)77@WuS~Q|MwwgG}>H3A;N3sUU$1l_TFatB1W&VM_gxTiL5^*udETVeRo96j{gD=K=jn;mJP)@t_j0DGJHMcM$j zn?;3aI?U(Z!^J1&=1^$rGOwG9i_gplf*`Ehe1SZQJ?2sC>$oF&&2OH9+5Kj&8NC7X zyY!hHH2YADZ^&HJ1O8#Nd=J!*nCET>$*6hGIL5}zMJ$Ysn-_l$h6(dBDsZs1nDa2t zb{21n=pV6cdx+^eYLPgicg(U~484vP&wnv9PL_gCs7%(`VkCFrNz0D~7(8XEF9C;( zW#J~!oVIj)1x;rxPd8)C)gqyat+SSd3S4xvJbnr6=Pcv2igLG%F2z)yx4h$5i;;4{gDq=CxENw_qnwFQ3zw4ou38wBO&Dg`L@w<}%ONUbj^Iy&F_zzM!@yX}-b?6RvuIxf>;%hJxD9aHzU8eSU|N#Jw+bqfE%(+#VT$EFnuJu# z+G!Aa-BSGo{Am{NKOi*SVtE}58I~KVkd|rLTmpNuEDQgDp#>H(y>D(=8an~4&@%88 zd_@-FS|BX8OsT|JiKVd&>Psy%W`M+6X1SRMP34w_?d6Vy1wvFIoo#hO@`tMt|lDD$nlJg~+ z28+)uAbenHr_E-gWqAN(KD1g^Ga;?X!lx{|N0t*?U|O>!*b_oqEZMXMcx?IA7EP-q zJqG-3mSvmpYqeY6PJs0tmIQj#o>=x6F!t24eL3c$)6&a@NnI9i2cUmuDJ3_5w`Bw6 z`uAAwn?TZQIX(=&K8v;38&mV#Qtkrv{g%n}VIQy@rN1#8v~>T3u_4QwS&%(!8K#?b z#FFzDgpOLCP5vK8*BzH-)rK|GEE{U3m1$;WspY%(-kZ!aElbVPEG;cZ%Y0?;y+s5> z1QAhL3J#_yLqTPOG6Wf-fD8p3-*ta~o!>d<-p@Mc9_PW}lVv-}HTQJc$-N-@Y?+yA zuJ$n;slwWkA!VU)Vidmz1ZPGT`9ob8^(7$f%5aE5cnBr?vr03nHS@k2l!Wz;7D zB$?qt5#-|x%e$bG%6PRC>`yRG_kqeu#venJ1b>QALIKt^#;8B2r8AzVbg>M^5eu}> zWVGjjXci-fJXfa~3n>%m3?t$j%w;orUI5V?#_npE*&2)z&K8?{z68@CooqLWJ{ zyuiMSae}H=s~KJNF|A>oA;*fnmNE1I?CTgyKL`7IhN=oI8W_LPp#+VL?ew8@%UD5Mxn71T3}o&x4yK^F&v-;$&pyUn z3gh%M^d4Y1z-Vp<-UCL_&k${p5lCT;A%>0IO2Z7>Qdnk$G5Iyne8^}f=gA|6fD#=? z8P()<9AkV+JIQf|eG--DK4tt(kN-19cPv=!V_u>ct0S|Z8zymLrc#jGnc4OYZc-QK z8>=zr%5M5yfOsM(6?NCW=)@Gv|=I{UGx;#c*So9cf@6%Ul=* zDsjw(Dylm=#Qe|^q=pA8Br;Oc1=C>hGCW$GdinXK6s2vzg zW?u0C-ZAELw1P@u)=^p4apn-M3R9UINVF47X&xA!WPV4*9H*F9DY-q3c_{$BbmmN7 z`u=4w7hi@Hnao?qz%Yxsts4TLW(H7n;|%i`${WsRX6(XcKF73>fzC4n=&88C{N@)( zk;@cG(92_H`vN4N8UGw;7ck#n0?0yU&To*gi22J+Xn&CzwGgH(W+uK5nwOY;c%OeX z`7*Pv68I%d-y)2bGB3nIiZW*DCYZFGdBT9XE6f$ai#zAqc{$MRI&(!LNZ(+dqQcrL z=IUf{sAhigF-X@id5+*-%M39?vO4CA@gP~xOr!-=19KN2bB)YuPYgCOjpPTq$^76Z z_}pTagrnEYbUY6^TbSD^e$mR@-vBCY%u(8!-)641cLTqj*~14$2Q!Bp40o6g5}2uz zX>I^w7xP7m^L8_vC}7&dJY9&vyUenqXnL71nqZ%M%&*ARbf4)r1Y&*6|K@;2KeIg> z%>Z-FpWyp|>2ety2AM9=P;iLpp$5%i=D3*N)g#OU^UyqGy3)pJjJcMUT;t3@s%(AC zY@zJQC(Ln5UwO(bP5{Ga%wv=fwU2d`+%k@=2eD|JSno{$3ul%m8QX=Ga}GUMRxM>m zxUr0M1G%%f%P{A`@}-cuC(FB)?iDZAAGd(-&6+qDM15FG>0RKj&)@l1`n}9 z$=?yrQnx{;!z{xpASAFP6e>Kz+P59-6In6UkSU3^<#`MqWjT}sB$@SO1Ee^{`Yjii zB88RrC#W1}#aqGFp317GvkXqKR(%e{lPngcGM{3drNW^!)=GK@rL#ozr=JX#flg7& zWCc=k))|%uc}B8X>uWKX!wR4q@jUAst-&v_((c2~xvcmLz$;)eoiJC(D)$6l5vy7b zyb9JbN*JiLvo26J<~7zb3e{X^G08h{gLNyFYFI&(LR8C|M~P;2 zta+4PRL|o5guw=u)(LiMWKE?Uo+j4uWX#=U*`hFai`D)nE=4nI8$HV{tS@{(vz4`v zVzF&3djZA5ZnNHA21VOhof|>BgSCGhVD7NKpc|r-wf0wN(Z%}eJ;>C}YKsP^9@ay8 zh23Sv9R|@})_qC?zQ;1&fb{oSiGPFd1J(~BG=nTxN*Nhqjb?+&Fw3?ZAS0~Z0yGa< zJMDYG@Db}iZDL1Rd&o&U#!|$>dgCn58DRgI)lDIfC#?7BYCmPAv(bCT3KC*&ANxlY z1|8W8BZ1(=E}+U|XLbttHr&~}zX351cFWr!?aAhhqw!+@$buB!>`dB-`>;<9>wxde zKIM$Yk3BsKYWuU_`2ey7u(Q8~WdhlYopC1wvD^OwelS}>iOM1D#|t1uD7%MN@?q?V zpx#;bZ1RO1V1Kd_qC~TGYcO+=y)Ff$V%YiQtB++jJ42$w>YZlW89+b7o<{zZV%3+zX~VKkSWOYzP;wv2M+^4X(rLBay|(n`z~vR$$vS`oXs7FXvY+rb3L zVs`#~FucTGN9FgI+2=lmvL);bWxy+CPx=&8%Gg8nNR+eJwgce`+fj$Xt8Bj#I}BRE zzE4riO7|x&$qq)moKrX9Zw(%d_u=m)DGC=!2yP2ZIeeCB2khh<0py1B{ zd)++@K45!gpf|{VgIohc?0z!-Fx%n|_9N`)-h@gI*^hF;?-84;q)p!_+dx{3u@80v z<0-q2VmZ&)$(iWw<6NaY14qt3-$NKD&T(3(IdlGS1{oKQV*& zEb9h>H|H)@y!&wWkSzi@>aTzo$l16TgF&3n4ge&KbNgpVF(aJw(VMt<5uC(&h#1Kc z2glxDXs;yy)nU%Zv%w*evyIMyOXAo*0f(cUqBWqI!Wp14ljEFUNZnMNL(wKQKz?C@J2T!P!C^xlGQ-v@*)(tlo;j98R_$bU4eY{}WtuIjd;vmB$gT2YNo| zqyKM(E^@xg0Aex6mj@P?I7?=tcbQ{646#c%n<>+_l=BCjxpS4X=o_%F;55-1yONWW z2ToO-m>S4i%^9N=N)6|WcqmcJSv~_Gb)2Okz^mtYP#o(HCydVB?&R#Cw2>~3WEEwB zb#r3B0)7vtcMf3ga=OXK)XQ<8{mMPgY}#nt=LAtkP9LX@a?ATUH44xk-~O8ByZFRCutL8ddNwA6CjT`i+_WHqZ~gd2i>Pp=cVU<-tC=B~;HqzgCuPYCMD zjiEAVH*UE*8h36YWzBeSJ+)BDlRJAHe7(2bJfuRInMp+ zZ#1b~;Q%B&!F`YbDNb@fXoqD_ad(V?SQ=MOy-d5VTyEHMpyzRa zyaM+5+>u7GDBx~i1PKedcPR;`h&z!SlNY&_gV4H|TXlrC!zJ7=X~|v6ear?%8JACW z0_EKQQh<1c+hhgCRjvyYAQjvv#aY4(_spz`Mg;wg^op7rrGt zWLyq8y1ThKKcng4E@*^kce&Z*3+(0QYaoUF9@juouKV1JpJB3(`!=~E`?=z!pgq9t zrVN1x+|DEr9pwH=ALJqKv|dmf=I$X6-w5}Qy^#JPH^B!|JmQ+)gxI6p6_heE#;rXG z$Z>8u{m$hvw}`^%Pq;gGq4$*g^Bmj>&+OdK=+w`Byl*H1;>atf&88FY=p5iX^Tua@ zp$l&lWg@xqOqBfK#*+#$=+0}SV^KVKUs2hNCoiAA0A4)(1>kw}w$lpUhqq)IMDyh> zaRBK6-Y5r*0(t&)U`!CNlJ3V~p8Zue@I!b%QyNSt?~T3S6vo?i8+H!ob<-;~f+ybz znId@&v`XL4o1p_j6fcDG<`3|eUjtq=?+1#lALKPtW^oLU6_2@C-sl)4jN@IVe85Az zm2ZGyJa6v@pmLapw8;sR6L@WQ3XdG&y+(`Bqr8KsA#gJ9;~79a##=_AfE3=uLjXO_ zJ9!r3r}D%U?mWS}V1uA1c>yheJjLs$D0~`^Nt?cO-rY@@%iv9;k9a08^)D!q#d}7N z=xLsomRM(a#pH|6=4~+0J2;0ovJNn3dFmg*;vBE{9;lt?tvduV7kH^BfRW2P*^6Et zZyFW#<@2_LLEZx1&LtpI$h&SsuZX9kW#2_!LoH|)^9m{2aEUjQqQjSY-BdGL!t?e- zuax&3CAF0C4xFQ!iE`e_7a`jf-iu1;dzIHkIsFy9K_PmTyns0n<{B@Iil(pg7W@la z+~BbSfl$RW>;biE-b<94Q^PCF!CWoxEG3-P@p>pgR?qu608ImLwjXTK$orf;gH611 znXuDMUL%qz?UQfuZj)!D85bQeExcRzfZxh{lU%QDJOgdpZu1V&|0~*gbuU4f4&H4_ zKDfjCeJxDV$@_6BMC;jd6gBQ(!*Ooo~OIKeV$<7%gb)T+&$i336QX#XCjB_ z0B`nY^n%ZgOt-Ts@pPEi9|Zf2@IHML^d9oIP-5>RUQRIxjq;A1Ml;59rwp`lo{)~% zdCW7BL-+}A2mOluDbIzT{AaiaL3SViV>XQ9$lo#>2u}P&D!g~*e@JJtx$yb4BX;Fy zQ3i?||93mxr|$d%RxwBT$?w9jiTrNzE+p|&{=dNDe`$dd$^6ZJlvRC< z@0JF+Q~0TrG<=+Ir#i?~eh6(JPw*X%0`w&RCwfzz;=8W{wKV=6O8-vhucfCmgTFuu zhNt=8&%)pt{#JTlX7e{wra=zhF&)?7EPpOVInVLO{LwqlpY}QAy}*Aj{P_uQP0r;n z{sk=Z__K|mme2pa9(7YDaKnq{BX0?1-M*BN7%_$w%kb(!Cp16fM=Eo9$P{p6BiotSz(i+gZ!tY22-c|nAd^8pO6O%Dl$=~o8RIc%NO@+4C`L1yg_XfW%3?fzW z6X|xU=F6!Wa=Y~L$0C8)&*xJC z!2myjs>>hn-yrYHAm5V(hC}>qJE6-k|BMGfM)(Wp&&Ut?zw86eNBk*tkB;*HUI{8= ze6a{1r>En6#V`#_&N!SDeu8q(6beYE`m6Ukhu!> zL_uvg!ODd&g1cZVef~WJsT3OX6fB@qLc9br4G_Eq9sAMv2!5sGUVH@$C?&{GkT45W z`~`YcvDhaE2)5F58z}fz0=_{4|6&+8SWx&5ScC|C)}RR$bi4?G!vsIl-Z@;bg+k&H z0#6F(L<-_kA^m>A--!?=N}z5>?|?wZ17x%yOAV786l^tNFh=n6Sq#PsYUtROIKjGJ z%-IhK7?chZFPJxk=CGiS!u$yWKYHIC5u{OkFi~)jcB4rG?lSa_3U1GXOvwV@IEZ~r z@b3wTmLh1P&;M~j*fI1{1zCFlaze0pHB53+keiR*DZ#>cFiaD$sCFb>@O%~cW!MEr z=;CDx`gUV7OR$mt`*B+E$8{i{5uD!-7TJQclxC76*zpnApB21@6xGS+1fI0QI4_t$ zuDT0?X|Dn=SKvsg^LYZt_n>ILVDKM676^8QL8ekc=4Q;534Wakn&krDmEdqiVAnjv z<+>_36$|zig8CQ0qEgU71zgtz{gnN2T~JDXsT%@^ddyV`hPark5quqlxmv*&q0pjE zz^3z?>jh!th-eU~Rsy6^@P0Z#ngqYlDHt~e!3&^7vtX|rhHVjy9|8MT!5?-?7i<&6 zE(6SM!9hBOx?K?Bho(dDWgZ6a2#$pVq*G8tCnR+VuJ@qn7R-4coO%SW&|2iKAeUmw zy@Ik}=yFeRm7a=z!IXyp84x^HgYN@@{xdX#f^$?1G$hy?0gz$Aa*G{^BZ9R-kmjLa zB{}LJ3Cd_oFe<418-rs4hp%z*#sz!|mOK{xN&B29f@4*fdnzcSe5_}JjH|HoKH*9- zf}`*hx!s+Fk3NBD&O!w_4P1l|SD~y=V0Ny2bc>H%6wq1P~ksc z13gUm!+Yq33s0qiW`yvhAMhfDrr%+p{ld|5+yYU;R}ega6IAHG04$<~lgMRqP}sK) zpfSRml#CZE%%ntwIN`DwG>3$<`#>#TI6~{!!$Ls?lt~cs%YlAGc$?PbiNYn6o1G+# z3;>Ix!a0;go-7no`r9#Kz=W1!TT(W)wgQgx8LNbfI17_b%EZVf9u>b5Z!l8<4bEm|X;zOG3{T zK)fuBpN_#2;Ur4yDHU!f|4*4Pf~t$lg16CfvRc=Dsa#{~Day zh2MUUUWagy^1JQ`EmT%uv{&f16>{Gb9;J-l`$9oFF#3cq zGC`(a=yevf2ZRj^0r^1q&tCKfh5Zy+8xlGPp&1q~eiw5i!q8t~wTHrOe?ibkLNP7F zMujH25yyl+?*a0$FmV;t8axpWKSuYdP`d!udnTO10meR&odRBtqAB$1cM|{CQsqIO(VP5-1z6~!b0|AgpT0-BSeu#3PrCA#z`Ak#!2oC0LJ z$ie_*hUnw@=w*t2r@(xcXyK>mofe({6p&{`%~OGwE!w;h*Dgn7pu764D1`Rl=R~{c zcp&?E(RXj-YF`lD+yO0eMINr0%oFXTvh#e=8J;~vpe^4s1Oy-K^2UeUQf!1tbL$2+(^?u+Jy0k2QA{vq)C zMHlJKG$3049tIzX?ERoJD0({*b3>x$1F*%g=sq3)G$L9?JM)L4`TwE!Nc5(i^5RBC z+i9~gCR+0&CdWnMTNr#SYP|-cPej}2pm{3Fr-D^SaWrjNoWy=J0qHD$_Zb=&@$o|d zaTO;7L3=l``E7uBh+D(a^AyiG33EPRG$(fzE9D{SaD4u>>DQ*zWU+{JV4@T^1a84H~2!} z!{XtS=p~3NJ_GF|Vh1;{PZW>S5;aNefk$TYQL%~)oGfmo-SaVVE4h|Z#6N|C=y7p& zIAij}xpp%}Nz=rRuQe=up-Up*B@z#|9IW6v>a}jgISINnFRy>Ci z;m(PF`5KVt#gWSac|q*h2qALCMoNFm7tcR{ra;`|34}uNXe-n$5^wqldR`P~R08jk zc*vfC(aU1d7hq8$ekcQrQt=N82wEntY{uXf@%NM^b5*>z7>E_(Wwf}f6t~R-(QD$| zr$E0hUe=Gf8{+rpfMJz*2_2PJEl&6X64r>TX}eg9RVQfHiN~pSv0m)ofx!mx>xU`0 z+bEv64n&*8qvXlEDVEW(VzXN@^90?t^HX_|gC%Z;RJb&Re^9 zYbdC6h!1aq_IJdmeg$5q_=^n~>=N5E!LVB#ORk3=vDYl{y(|8S^7nehl`m2);XQF< zEUwRe@f5m*ed6LKAoh#rP-4rVIII@J42i#_@Y%4q>la8dA{Nu;^P#v}gWe?7C*nDj`TtZrN*Th>#C_yK+b6k1`EZVsSiCdslbt0$Q3%UL z@_aL7bCrA{g!pcf^K`P0yQGQ2svZ(U8$|PzBrQSDOR}9-xZVhu9ZisAj|qdpl6jOI8zQOR2M(c<*W1z9!zG=xrHzpIK7pYk zB{k2$V!!0N0TI3@;4xlN<5~cNtPU-HP11-FkSM(LR^Ck$;KUk%#wUar9P)6ZuBiaBdJM)Fxe6w1CTkA zdufpHtYjIjpw3Cw(O3I|B#h!pxsuL_0LhcM{RqEPxi}k`_w5xFXpT2ZXDVHJ?GH z3W==?AeEBn7&O-u&ZlzNVBVp~zEb1!K=7094uTT?(#?CIXn=GU zeWwGZYD#Plk~&g|Fj)HU#Q*;!Ub>d@royD*pPO72I$iq@s4%jD1ot_87Bhnk+K0||@KQH}-@+2?VrE+os`^qArH_7tWlE$+48SXuM$(6?OnQf6)#Xwd$~*BMmwLbJs~xh`oSWyN+&U!jcV9;xemXn$84 zNw4Q#=}tPz;+~X6?w3C4hqP(#moC(T%7E0F7H1Enukc~*LFrjqtPDxJ{V+HzP1yr} zBhuvaKzJyrELICVAKBbJ z0P&R#EJM#v_6xl;{betB>h1kl4XB3LEmGt_=TXI zB3r#5L{nvhv~fBiV^a0uN!bBfkerhJN1@a-*|c1Uohh41DH~a`5c;^Bmd&7?_%pH? zcM!{#iD{#jBOBgETb8r3;Zo>yUN*@I7#CzolwOf5n?}!co-E57GUdzmlINj7HitrH zg)(_L$Xt{~e*uJI*)uJqxFp*}U;WFnR$6qF$Qm2KuvGT`N;G9M8D%q-%UnGHaz)0Y zKXzV~{Yoopdxfl&UYgfr*|e0uF8hlPiMk={Cj(c>2I!ftmc`P!J2kS`wt#)D>=P;U zt(RTf5Bvt%JUWi8QRegz*S85VSM+YmEH;SUB6Fl{P&6lxog#m)r!0~wq4u!Azs$>wC8t{|Bh26CcDV1D9O}SKK&EmyUA4)26vZd zQbx0fe5V{#eB?>Ab@!FOMN1z)`4R=>^_K^}2ZR850C`^mnQmlPJXf;)DFqto`oh}zV$Hh4$EJ&0VF}*G80l9k-zZ(=t=S&lyP!YK9zPg$?~4r zXpYGpu2bb+iu`wag&voG{uYR)%D038|D=4<4q%*;`}_vA)8xCqgfQvy;}kc@kUwk& zLZ&>HkKP%1)N=66mj8AIO^*EfHRy6yt{w-%Ir(CWYM+;{^Tths(j8w(5{eA@&jb0Jc8C2*W}*M1LV4VQaALhk}s;jV72@h<)7EcmtoOi zpIj?976GG9K2C3edU@%u5T-%ivK751`NW67zbWsYg5E9pi9uMVSuQ05x5&3sMnkLo z!oQ%_E+3>gU5EU2IyhuJ^rE}+e<*#>-YZ{5 z=?eGd9(oY%lY7xSpG{f=>bSB-1ypVFk9?A2_Q#mS6 zp|{qU{J&rfj?0hJM*gw34*dO+?|ELx09;i$-J1u-YPq9zAjXT_gX zf$gGrq(bAWP-OwpO)-nS5*~^VC!_IH)JrkvrIk}oDqv9=m`;fkeSC83Q_s3edgQt<*E zvAbUp>ko`5g_;8q4=9}8fKJhhE#bYd%iDe}V5+*EJ{v@*V>s9p*2n-#O@3(%_gEd&^CiXF7YyRG>79SpWBW{{_{ zL-CY@=8obRMWs3wqrYITOVLF+!QG0o>tNBN;OQaSU4{Ex(7dPUp`Y~JSLjwkmp;Wx zdR_G^78}qTP|UnO0T1j0g^dDWgNk$Cfas7S=|@ZsE2?_HX+%*7Oaq`T~8Qay|J%9hK>Apy{Oaph`(+ zWyC80aZ`?l;?A?XD;ItbEj*Ntk1*<~^q&Q}y_7yw2I;NbwgMPF%6`i1_f;l5!lpAS1 z6{+mm3B3JwWf2_%AEh+kL-&Bv>n{*JsNCxc#2DqzP9Peqyh91namsZ(kU6B>#)LBQ z$^(~Si^IwoGD(6`kp(J8lzH^LCn`620wGEHh*D9Lm9vc?eN1`F00mQ&CFJWquADX- z!lWwg^OFE`LirXQuX|ECnF8gfl;OwFq$%f7R#&<*>3!g5D3|>KkkiV&To~bu@*PU6 z%2qD#21t%Ffl_GCD%Y>Z;5lXc3D7*RtfX)G1?AELFw9kkSivw)SzHh8^OcSNL9;?- zv7Pe#ij*#$z__T4pk-vSvcnAPT~cNY0rawR*KV*cQTEV7U8-zo211$g?^RHyTzN7I zM6W14%Yaa!tdRn}Qu!nhGF?*+<)XQ+RM2w!hSK>XG*!yavoTn$G)xE08l~Ucc95x6 z&OHG9I;D^n{q@SM8DP<{d>tBLRAp##Er+RsNbs5$9fIp&6t1 zl+LXHy{{ble{z;`UKY&Oul$&{jRVS|55VGqa`x{aI;0HLL5gAJ2NcL1QGRBH^beIh z3MW5OUJODrs;rm=CB~GeN`N=6+)l~1kCiJZE#ZmsJ9_&(RgNH}V4u8CwPraqbW~No z2DzP7zh4BXv&!Woz__SxQSP6sD!Ug%-Bh_xf$y&BIEKbU_3?HHzMOXeftq;`l}i%0TQ4ZS`J+TRpF`7Gf4Fu6_|yOzcuki`xaW6g{lN@ z;1Z^C+5>$eRTn5+ykGSr?V6%gnpbee4yc^I1ea)4-X(~9P<1#Rg2bp+(|RdZgfZ6-zMpRYw$$hA*p8%SVR1Q=IWFJ@k)``)_s)t^{c%tf|%!;R~cYgrw zXQ~Y?xD@-;Grt9fqq_ME3_7XDsVLl8{R1>7w^~5AJk?IrVQQxmFr#iAIwLfJm9Z-wzgHyDc z>j_0;)Dw4LFjoDmKg=AbX6(h_A+^1NQgh?gfe$fySiNsMSR|;^w`1^#y5I%$64hlt zL761A4|y$)s&~esIj(+2(VtZH%T%&?LM{COYNx5UQQlg*x`FC{GSp8gOX{@xwT+lN zqwc4YiEQ<^7Bo5PuzBEcR&Dx{jf;0)-Mbwy7t}pY&^}kqc@Mojbt%=`=Btw_t-Mez zA$L%b`Wh|VFRI7MgITQJIvI19)Nx$&O4MGLp+u?LIehv2iL>l+n}A-So|yo{R;riM z?*E#)lHLh7)IvR)Dzz)^H>%a{Q_-tcZ=!sKI(6(0h+VIq9ScSc>IrloH>y*e!RV&? z&*anUQ(s?=!G3k^N(>ID|DzA^1GT&p#D>)SX+<}z zUb7lBN7O9(q0dA0QVPdCQvX2b$&9H_QapNG-4#PApO4jdo&x`=+MvehGqpE`lJ;q~ zEQZk?HKkM|;iUOMg~mm*AO?-A=06@-xM}8*qu4`JO(~R~nr=GS+DjAn7BuwM%v*rQ zN8|AY?mR!u);B=YUlVX1>;p8DXn_@^*_liya0F{EFNeM%8Y3mjg=&7DfL@qJ)&`hJ z4N@?0%W85bgG`j>vvF`bpo!AM2+^9M??COKhVvzQF`9t|z>CwQlgsmvre_dMye9A? z;2qYy<%YQg&8y@>Kcd-|in&D1v{w4O9o0CKZ!1|dOiAU(G>b@z6pdjU_#W4c#bPj3 zW2ZAwPH4Q|1>z~qU>4@mG+%87?R3q{lxLrzN$CY%re@|1$dsi~ehKZ*Xl#{`H(T=w zeHC&v2mS^6SjOgFjaGm6R7Ys!rfzd^H? zs(l+ZViyS7q;aC<$1P1>DF&N0-;98Li)Lg7=2|uXb-^-inu)v7yRG?P6Xb2z+@%`l zJDNUPh<0i&MuT6M#;ywinQl$H4g&W;d|2qN<{HHj?`d3U!*E}7ofedRntD3AuV3Tv z9c(e6iJ=s^2b#eW=rp7`O|@LZntG}S8qsWEK$wRbmtQgWNHgtq;EifruY&!!X1NoZ z$C@n4QhcJ>WABADPc_FVgXEd!4rM#;(+;c$UuSLE2cYJnjUel}Y7bMciJP{D9KP<_ z0$<>JXouKf;iX+dN27Rao3{boN2{mLke}A;6!84D@^=9ep#6&?4?)`QcR@N>`vNT_ zL$uE|Q$RUXn^_Be!?b=cp%cv|rH2B}RKW9>Tc6~Msds({#SIa)R zL~E3zTdHlK9EvjSW?C1OYrmze?kn0QbzpH->+&4ruF!r!HGP%ZO|&Drrd{m{v9D`q zQDFIowqiZdtF&#?0a>kOP?)MlYo=6)TJ5nBGzTF?v(GPlnzttusCM&Dx8Okh?|u$!5sZs^wA+VVkzG1+;H#XI4SqcI^*KpnZpS z7iIR{(RNV~wp082a@eU$JI?_OyR|%e`SobOCLiEkZMp!xUhS&qFn7 zO!jFxr$MG)Yaala0qtYjQ#{bBSD_iyKJNg5hqR|-z9ppUgD=qY}peT8m;r&<9eFFeyuZT1E2eY$VL*M10R zOVly+Ty;J4`E}DRqN9-Ab&JVy<)JG%2t-fa3oL+m>DIpsqTaeA^=N!_^M(QGt2-10 z_I^5{5Iuk0_Pyu@=p<**1nROW@hnL9_cKTltb2u4S0OrmBnHEEp{*btq5Htz2Du}3 zU;Y3^_vo!K(A?Y!lA4SPi zbT3g5_qZ;d+`y^2Kj^J@LU+;*)lTZ})1^42dmM;fnr@^62XUHU6PIHR-EK>*ph-`pWZj_%%Wa5$^`>SgrK>DvGQyQ=d#em11Ipj$(C zLay%jYhaP5J3+DQeBFvH2veZDLUqlBx()O~FVY3G0eMl^=7zaq-4Z%!^pfrgdFC$b zx+>8t(XD?DAf>uO4{$2e&CsJ)uA5CY-dA)ldxOeVT`P{huurbg$*)7iN?j4XsIKW= zA}7Rk-COi7x}p2vGTHP&QAk^t(RHIa{Yo^l32Az;r z-Hp0GKLkjV?zwjKZt7m4_xUZIgBBpoIv+}OQ2qyG{27c{Fb8-lw;9 zyYA0_&~)e?>;&Q+-C{WZCwJ>ck3;SrUH={o-ql^EwPCN$`3X4P)19Gj&3)ZtDpl;$ z-KGO{`gI%P&>PStmI3{NPU{8^gSzM!q2Q3N`X7J{+jVXKqC28{Rs_(8IvoP1lOO4J zFMv#=y0QP)G3h?yL;G8j^a?xCChMe<&|>+KFofO_bUk=ma6xi6#f(&zpGlX~mj zjR5u0ucX==U;UFWfZ?Yf`Wb`%`g62?4A5Iira(Q9LVrQ}*%c5pSl{Un2}AUi6M+z_ z-$Mt(gz4=mzzf&EmXE;*{ZdL;i_&km*8t;y{sPqjM(fkRf-Mi~&qRP>jNWf9XvgZy zj>CF!`t`lQKcr7;KohTDn*+SV`dL=sCFplI!Inq#V-zt-)Nc?1JxRZk{_%HI-$8qZ zWWC20;2qcVC^DO>|2_pWozTB`nF;)p`WNVRcS?WX2>djCn+?5m{VWUEXXt%@grb@H zzD$tG(mxlzUvVKE46y=k@(o*!hCqAsHaK`c`tUQ=qQlb9%d@w4~hrEfoi~8NXXILsX{;VET~oLg-Xm_)6byIVGN$Mw@;eRrB1|ukeHv?Rx+Dkg!8PwHyrZ z==ZikwNCv}%Bt+rZ>1#GZv8qcdFj!&QY7uJ{!la^d-eU4sdi8Q61nH^>*rBXai4zp z8Lc7u_3abEa6o^Fe#7uU|MFx^4(eA&0dz?JQ9ooF)-TS*+=zau2jqRIAE3?aBfTR% zzN7kYXc0Z8|C&CZrh(Sj~0hMMr8A51*>}G=mLYax@`^?NlWbYEV(t*Nia3#}42W zZjhdYY7qu|c-|+tE%lW9alo*VGTx#M>-K};LBmKRSi~5*9|1Aeu=yP3;tZNF;2kpj zHyIZu-q7MD@E-#ynby958PA11zGAS+tTlX!O%!F2-1-f@-nG5=vr-GiJJj#UUemHyFkn zQ+Gg@!^XLbz%aqcAkmH(7ssGUH0ILgGs$?*h4v#yjr`rvDcShpP6&0(m`~4iig9lu zjCkCrivnn>(TiT|CyeisckQI{8@fwQ8TAxTNHe<8Cq2{XO0JnKL^431b&x^V~H2{(-CE*Pvb z9@>b(YU93UNLXW>^(K0?#tPD+&glI-w68bXL}(g}-_hc((U{Ezizegi8=?J8<4P*| zyk&g!D|*ew94g9fF>a!7M5}RLJcT;ijP6;WcH20kA0oCJr{Ky=?lfkEv)FjAdj5&I zyTjSh-^X8e+t z&HGGy8MsRvP2P04kCRFH3CK8`_F5p5iz(a*kgleU7lG(zvaJG$yD5q?W;{&g!GQEM zvBGC?pwc8dF2L6`lmkdV)08Jb_cxu1hiCz&s6~)I(9{?V^dM6M)d&Qe+BETlt_V z&~_cV#F)<0K^?KCzYEceGi@Zd@*z_=l_bWSu66+9u&I__5DBLE_aNF4Q_*y=NHo3e z1Ywd)D^~zA*`y60AeAPP|1Z^4Mk$XcOf9LHJ862JLX)RVLeebFRQDRt(@mXpqEUt^ zssjj_rYs3ek!3ngc&ANeUx4%(Qxje5Y}1-P%$+m&Q9j^#)64Hd>kFor(lMB8>gWeZ zo@qiE?3!;n{X#vYFED)@?#;zpeHGP}Trvey*7;?Vxd}~)DJC0;rKSgTT2h&55f$E) zn^vzx?}{m&%4n{dUVRyO6(-SRAXJ)CJRs9G(?)VvUN`Ls#@r3lhCD!4ndXgwShZS)c-WYX0D z&q1u)#5)VodQ7YC(x>>Ysf3SiugRZ|x4ma_bU<_8q^9M0pXr?un62ORA2~4xOgpKd z@qtPG26}_0IrL^2GEFw488%&{Dv=Qr^Z&;}nf6eb#Um4!oHnDT`IVqKX7bhpZ`{P9 z)au8kn*xd-Juy9{3iGF?MRfGYGt(7{An!A;r8T>w`5qrqIGNKk(Q`J31;Sh|=3}&j zb~VR;3$@+MKBZ9G-CVpEJr8p+g$q2*dWw>Gna|R$z}wuN2y^?GmGo%&nv1)@!OvV3 z_uPc=L;Q(v+TWzaxnOfFB^ZX7J${9dq2|N1><%+0#Ni5un_WtP8e!h?J>-Zqcay(% zznR;JxhQiE-Gc|sZ-0g+#{3hNfybJ!lfxv=Z2cAphs<-n#$3F4$#+oku=!Lv<`T@V zF9H3Cxy`;FlZobPDo;x?x3QqkQM23$O|tnz%0oM5&aFn1VjhqI^0@iacVLE8bMl)& zIAQL70rH+SH&{UJlsRt;u5g<9NHONp%`el@qZwugN-@neSJO5*%RGfV!l%vUw2D1r zp7{I}h?s5uEBt~04@4=gKQEZ0D3K-Cydnie^UT+c5IEmlm<}=p<|Qj3MWJ~jxz&rz z?~zC9qWMKRs1%!fU&6J#WX>1^M-yvHNR;F%`$UE3=qoA^L9bOE9TEA z40hH0?+o-R%!__D;ZjtZKRW>0*US^h8GGIQ9}iO8Fz zcg&x^34~7bik;|nnUkl0ShtyX6+-lwm;45i?wUWL^CNoA9#w$6XXft4T%Y+0-O2st z#6@5`U>>6f;emNMEx-oN=W5XmnHTFZIBcFZAEZajDQBSkL-VpkaCl_iZ%;!zYTnWU zm@)H0$~hi4kDCDV*gP7EEAhn4$%BGV&D&^A`^-F_?%jQs<+N0Ev~;qel9MGS68D3% zDV>uYQS$>^}Id@CR@1WvgS(gebo|aowv*KmpJB0U%CQi2Zug0X0 zCF%bKvzEE!l=QPa+Yc%HEx*zpDZp}oUcP}A>5G^PvZT|#AlR}uA7nx-e^QolsO9ZH z02yZagf=(fmW4}U`v}V^$`OmS>?1w*TS7b_VU*>)jUaZwa>NG+(H4najM0OZKgm-P zV<{v5VXUQ%-kx!mMDnc0ThbK(Ic%9O2blzmHWGtJEQ6Z?l4!}GzZWN2`e@mF)N+Qh z9Fr}U4zNFF8JmP&iiKx^Nse3Q(~3ORBAo@kCoIWyJDs%LSz||g%5o$M>XL0%) z#Lim+=m+K(ER$$^kZW=N2MBo<_6hXzEw50XY=LF%fAlZu^9IP;i}~p#p^08 zL*3w1Y2j0L$Tf?30L^tv>l_ffVF{vja+O7LWZHyfldCOtuR-n_%gkkfskLmSoQFEg zTa*k`Z`nZkGYyu7+T?AO`PSQt0c_XQ@(Pu-`IH%f|uB z`L99jfkpKVhz(jwm!TQ5RJ=x6EyI@3N@zG@smTw&DxLVAy^YH09$R|ok$YkhzK!Oo zC4CqKo>?UHF4|}H+fPr9bql4~IawJ?(KuUQeF2S&b!{oAxm%~~1Qib}`vo9)TIW$> zu9x*R(e$?N>Vc#_*7E-#o3FLD5sjafvkmC}RzG_h+5qdHbhiXrLxyoj1X&k}Ks4C; z<4VkhSf7xSJ=D7P83x0wXMV+CxV7OHj1gfCxdcv;*6Fkw-EZAPPi&O+X9_hRus+=Z zkZ3En8te~RXZ?b!6=P*l#5vX)OeHLF)>)NSbPrj*Gk_m&J$3{bhpnRvfstVCqcz(R z>pZ&ZiB=aMfFxPv|MzlRFK)$LvUM{RCLgmN{R9%GSkH%x+0^g4h{rI32{BZSDOMkU7@X!C-sVdLs=M zJ!j>Tf9kw7DF;{Lf^`C=q~}|I9ROs3^#>}OEwm0%dQOow{skYj7p+sn8{`ug+q=Jq zXyw+?5;Rw=>+&&o)jE;~+7;GKqDT(oiPUy}j)*!of(5T96$r@{WI^(rllo>`4$5N)6BVkNY2wB4w|oRjT! zUm!T!UZIQ_7u&xR(74)uUH}9)+bSg>-EHp;1Jc80wLn2no98zAbG(+NfMjebDkXKSSBuD|U#C7cG>rv8a0&{qBz$OPFot%hZSZA+D45n@{%4fdh7 zh#*{wFx%5A*dpAvi~Ld%w$JFp9%*|_89e)Kh1=0Y+iv0M#ZNJ8V_{G`#>S;pX{=3m z7)0Z2Hz@JxknQW8n2WcqivgL#wr|2QmteCWLod;`oPKVRWb;~r-cj3DI#3|l_Rlby zW43#Lf<=mLupV>AZ84O{lWKeAJTyCDYbKAwNt@#W=wd%*dy7(P(`<3?!|Lg_JTLE2+0&vxQy;vVkr)}0(pxtGY(e2!Ad+T+8^xE<$6Yiev z_eenAx5av(*JpF1OW1GwnGWtAuuZjZf=M6Pu73&^gEkJ`UPCqorBw{ulF0);V*4l= zEFRjnJqE}lTM>odMr~gnLvPGBcNNHt+ukw*^093Oy`7)f+DAa;sV(bekbY*HLmRMt z4(I7(>gaH~55$}t!eXGkvxB6O)(I{SuC%asbr|0OYHki6y^Nl_L*xuxH4lfmUcm5l zXjla@UJjEe7VquQIuSh|hb@KZ`8w=g4TgRWB@{C9cR17p^ZOJEE{H9 zZ5hwrd+&$J-FgsIwtzBZgMg@j0s?}v5fBjpQHCr*L56~&f`H2VJ?~%lbMHOhGwyHQ zd(OG{N0Yp8=a1inX%Wu7dK8h)x95X*lyft(qn)CiH#@*I#(6;;6peKrx`raoxr8!B z4m!utA$jr6&(OR+!CA5yMWXZ4MbPk&bD}%?lAK>&54ne(f1U>15$DR?Gp4-gbkupS z2k^K|&=u>a&UQFaobj@AJB862oU68>uhIEk@{u$-H_`s_X6Mg7 zfP$^gn{Pul{y;UG6!ba!jKe(fPTHXdQ9h`G0?r^N;J%IpMr_HRL{Yes4QS z9yz}^8*(2zhfl)JN#}S9uJcA;Ju}Fo+SO%vM;^P?QU&8u> zj3Rpc;u+`qL6X3jahrlYiHvXG$MreHD5v`|iSf(pkaU>w9PRHq!pNk_>`}%L{r@hR zkxR*MDU2m_97!tUCat-TF}i8Xz;VXaR1_Hu@mv718S&*PPBMPyCy;Bt|1 zlk&{#89%&;k@@lx<9IG;E;Bw{kIn|h7e~-}h4CRx!dn=wEZkSEjIH$jYhyg19ro>v zVw(GOFcL!tf5cqt%u0yA&UlH=2J2=Vrfc8FSn?0x{S4NAC^Ntq6{7DZD3-eOeK zH6LVzCBncVMg|> zjEeIR^q6tpLGSZPMnxvZ!j);h1x0rR9SL)9^Okd9c=1fYh3S_?8hQ58wSSN@L zVNP30uh&rKf4_nB0JFal7KSmin@|g9zV#On5zMnRB$3Po|Bst7qke;i(ab;CC=N1r zuSOBiO!^qO1g7LUsGZ2H=z&g$m@O}ZbrREwd<4nNS1DyEh4~xp6-{OCjK-)PV-6-9L(m7;%X%=gFvpUHIdhi+NSPe-6dHuK&Q48lp~tlt34VNOyCeJ*o`4@gcizsN>$ znz{7`xaBct<$+5PvwkN?ikWq{FeD|+wDS;O&b&ukh%1GXUWX?T-Vu-nn!dZ8jfBy-}d(3NeeeW}~ zg3vg|Tx@{ZHr)vTkfd z)s59i_qsc4p)YE?SWz_1@ME>Dhu(WxX|zoCXSu!)fdMR^lQ1-p@&d&T=#)qcwtcrvguN6zgIO zTBBJN0$3lzs-#SjSk^`I$;7c%Dj?|~>t9dsPGo)00PYZL2W_TEVpZ=0`W}E|til^G@HngAp+#pJOGpvebXEs#=*(dG zQ=H=j>%WySJChat2*4~>W+jSj)~Z|JeUjx%PkIjP^L_wwS!XlA?G$VKKj=Hn>Y#f) zk9CR?ck@}(#b8~)`fV-LE@Wj=V5Eqpe;=%iS)P2FkCm`u$5Ab1{k;I4XIP)n?wm5# z*kS<7SrxOOOa<%9S7FRqR`6xqtl_kqUdKut%Yg>tb%^jZn8ot$>geQe98!0l&u%W##0*!I6R!q8y$%@ifn87qTq1kX`v4qb zFItFN5_|nJ=zEwwo8reu*ar`Q@+f;-7aEVT9|l5f8hg_gn48WH3d9&>u-oJyIl=ZL zH(n;&P7%E<_Q*O6b1wU*GiW@`UfB;_^4RatL8AHWB*!4i0``20a2K-Uvwe+9-0}+?l?{q+m%j_Cj1OZPidqlbC!fw$>t)CD!L*M({~L(tXP41N!2$LTO0K=h zey$UUTWnuC-C&UYWDdC9Wk-|&e~&#vnZEbgS@fD4VJFjVHOl@m6n$eDQ7{{4|1^ZY z3EZ(T=`s7c8t6319v+7TSI*DKxpp}1YnOfO|OM6ukH1 zJURuY-kjZgz{ZEO;u_@oa`Fbi#*Y(C2mkElJTZa$!k^RkE{Z@-MJp)xakd-)&;1IrA=q+W}5`5hR6i#D9V`lJn^m;G;M@$(b3=+20D% z7|!@4w20*_nhKIQ&KbJL<2mosv?zg7Ly2LDoEM5ga){%dg}x-ty}4k0loR#|;K`gF zR@@gU920G5NabvzEj-5@oE;QeJkGh$4e{xmbM%4E;1o{<;smF+3iwP;26?x$I75`+ zmBaZV2>4u1$Y;Qv;{3W9ik{}&^8`sAr*#^Ne9jUz;02rwl*drWX{3F=B^);GDlO#{ zkyHH)$4vKH8OO1ilGMvNFEY@2mh&?U_)5<2`RPM0~+3(?rXxkB^nM$V^;fNSFT)2HnU zCx@0+Eu3%%ackvxkyE3MbA>|N?VL3oxlKJ=M)o3H)pmP z_#VzjPoVDx=Oq28q?faf0_=U9t(1}3&v}nxL<5|^H$tbIoQeVHbc^#2EqVtzE%cAR zAx@`^CWW^-19EiU;rLfT#4u+u#m(+W#v&UuCWvlE!Il6}X+;=P3r~#!cNq z=Zd;>_miJ!7k76(NOyCSeNo%P-AFT35AMq^pytW_^gr}@ac8QalQ)<74+A8ap$E9EGRO_%x@<=g&aI?G)(EbhCU=qC3=Kv$ipv=XKAO9a{umO&{h2=S zvD`h6QH$dq`2}1Kaz`nU6VDA_f;%vQJAF1(JH(Bqv-py@#x~e;n0wz9I7c#9?uTJZ z;Vx&QNadClVDOJ|2WV=0oLll9NYl8bHq_F&e^J0JgL{NRmnXR5TBw%EZTbU!S=@hy zL7B}}W}@*VcaT)e;ePT3D08{5zX9t{aV08w=7=KeeeUA6-1|J}Tgwf43ypPL7TrM?xmx-v)pPR> zqjrh=X+CO~xeo$hQUf<=25^ns9S^~?i8~=et(hA~`EXab15Gfng=^gkTq`%z@evSh zT)`J8u5vjvYv|;TQc$dmdps5PUgKV^K?l zQFG;eOKa_&yj@FCxbe39iA(6tdw~GEcrwan+ReN85=`2|+gM5e(eU666r$CWw~Fp# zFW${eu<_<4DIwm6x2pzv`||!gjy^wL32o}$%loAc0DoSNGim|6ZT-+Ukav}GS@!W< zDL}WM*ZnVwAl?jedGJ3$l9bI?-}!E5;k z3PLI9tH}p3y{aK#zJJc$9%i3VeIo?Z|pseDV8E8Dudu<(*sOC*jy2}OL8V9{EYIsk4 zh%v0?t)@Guj@P*jMqK2z-v+RrC!-T=F7X!8;`1_ZO#q4po-h_xH}ZJ&Bc>+aYDyt% z=530G_$$1_Bfz!rVyq}yc~8-2uZ=hS7|OKs=F*hEgEyPfey{RcgrP>!)Mpm{NKV&l zyiHRuGS_)suY;zW$LUAW!&@C1D8kdfV+XA7=WU+?$^qV=^aj4k`P^!4BwOTBV+leD={Q-{Gv0c z9pqP0?oB*D@lX1eCh+~QLyJUy;Tnw4A^wcLD3bW!MS}D&|JCzgbA+Gs9Y~JyUrUGF zWWEng$5QzJOoiN3zPST{WBlFQq1ti&M{8hj8bA0b8q@g&v{K68OOF9}g75n(`ZD=9 z!U50XA3igC$^xfs{`E$5p5}9Zg1~%!9YuZ$_}AYKJuR8Kz%l&*6ffm_d<5Ih@XN_v zRK^$o4n9@<(H`hl&99`Zeu3{vS0gH{<=_)F>I(!viS>s$Fw4$Am#XdX4{RA4snAJ1DN%&1ap$o!`Tk&xD8@{8RK9>*dFs2k$<< zJP_jh`H$#v7~rq)LE}yST{@%j7Jq`iW`q1E`^fL%zhq19b*)ehdf1o~Rov|F$& z7$Wuv-0$G3c?hPffcF$!I|4~wf^+m1@fJARA<#$A+=8L>6|62qpP!)aW$@f95K*GA zzaWF=00Dxmlc)s>o*ssQ`vmvkoO{J-zhF)%Zmb}|L=(gZ3ykzJ4iUT_+AqUv_HA0m zMF?!ckQ6DHPd3E}Dpx>@SV6^dj76N_pQFGX6s#ccOT6HpNa&j&SVfs+iGsW2us9^p zkQ*XN&`wD+hXwv+AUPuV@D~7%3Qo|zo@BvmBTy|x&^-*RQw67KPuMX*k%K;5#|2>& z1xpint_5kj;1;b+GXxL52mXX$K`S)O6imAa3$p~#1t_uw=P3L5q`-sDjm#13r#I3<{*B*D{ymM1X?d4fOR0ndDa_j&*d1f7!*R4C{?54DQ~tM)qpEEXJFfX)&@ z_f{ZE1qB~K(=&o3au}8gqLa~AF1Shg2o-`ebjw8Elu)=ykWvVIv*7!U7=$Z=7784<2#(TzmsUY2r4zLY-VZHQOkM2gq4n`KfsNuZ z*9E1oLz!+t6`i8jBdDcgA#MmdX9L$OST6x(pP-ct>=zuTc=LeZ=xSW8n}S~2UwTV0 za}e4O3RWk8a!BwurHS1ZyiyM?cLaCIe>N<5mAtff1rFM4bWb33tOMzN!J>6gbVSg1 z7`0KsRXY3Wf#BOwkd6tmxG2U2mqZx+2|*L>#eOJo&w{>>1aX~cd@QJ40G%cUOdsgv zDhyx&uu~XL(OfrS^L9vb7Y;9ihP#B$PocJ3c=91s+asL0Lj|CR@abv*J%!8YTm~=U zYB~|YTX>N&qJ4z^p>)+{gk3(U?G=9E1}*%BmuMLkAY4YrLj?+l{=-=86W*d> z4iYxK3qY`NVd%FiJSmWY6M>5mZlKL5kwVF@5E~_2zXYm93!kKbMvU;qZZyUU z1y+nfoKR1>CkKUpo(D<1aAXd+BnXR~pjo1D&X1rxELV#M6U2svjn9^hFg?|n}-%G;v-C%ZESXKmFgYZ52*I1+QC@rm; zgh{VKi)Nw91;rI%hJ$7XEy9g1=xh~6i2!U9{u&HmyD*0)79GML+radyu!;8Zbqag5 z0CWl0(o=X%XzM`Zbz!0fBik+1(`U0sc&Z$L8$$OVz_VBAIS(X#!ts;9^$VlBP#X}w zO1_1g!kBmIqjF0)bvE#WLa!~bX-L@W11)X~J%(}5+!6ZH$81=blnE1x$A#$PJ^qwNdzv%N4 z4U?nYTjX&E%J_)hqjV2nQ7(Bg{6rtqjC!w#-G>X~FZzH&$^oJapQ15PH1-RMeWJ5p z(Yb>AMK5)u8YH^@3P^)RHaZe4M6_Z7*o2B!{|HSFh>B@S947LkS6H~{Q4%O4MEjdj zixhoQgyD)39Y2c3Xwi~qG0rifNt&9*isnh6TAXNy9eoEy-$%mwcu@w0a}q@98NfLb zMH89mJS2LP7UD^wMROqOu&9C-(nmxLdj5`zzW)WJ$)d-!bv#8BLKCo5k?RK#e@x_B ziQ>2@i83A1L>scvmoB;+jUq!7lZU<&qQMeqktzCtQsuHlv!YSU7Fo$_f6^gpnZzLG zhziL=nJXIE4w_SiYu>w*C95XJrteXoj`43Kn+oE`LVc8My!fuYw#>o$P& zx@egKa=S(KXMyh#l{tg-hUka+P_0+wL77#3qAj!>>K8qt2*OG%V760r)-9XSo0I9ElVGC?1GL=3|7$L}l+n zi*eCre+=7%D2u+n4@DEJ(Dz8xmkj)4QO6_nO^W6{4c@Ne_b6j%r+8Kyv~Uxb`#^1X z@pC2s_J{?oVC^A(91MV`ID_6LUSiPU!4ao0Xvyy*w*7>vuQ>Aoc>9T$Zh{qi#c%rp z;V;%l!k7T@8G2y^ilYWl>=%prAuvchD+zZ(uvkoYP>A?=BLJb|R|6sUfVhYvkYVE7 zRuaCQ>3{0O9+Y*cjE9VB#ns=ehAVSala=>4~maf!TNY{`8;TvAbx8B zNE5}`G`&A0p8q8zC5aRFp>|m8`ZfSZ#6>(XJu2Sw3UJBd4002th=0+dmMT8-CTeNo zIj=)}y4dL(6dB?d{9)h;F@yG7Ix@whe_=SX#H$<8nk{~VCTBU~So+;$u6S=E`c8>m zY3Y7i%y=E*^Th6*;GHl2m=-xj;?0zTSu9Sa!zoI{S18t5Dn?ubkAwKNQPj%BK`UWk zxw!8XNGim$JJDDvo=a2ca}M!73R_o+_tRLO7f*W=MYY&Wqjy34DS1(9#FvZ^Un>rx zB+)wY%M>BFD2|*B@%7>s+R%MTe3AC5UlyODH(R4v=Zm6A++7W3&Eia2oLmtH)AzbX ze1U_$R&iD@8r#HIt5 zR?BXZ9Lfsvm5fmg&rkBpJ&5<0xPOb04UiPZLEk`0WD`jCNnFV}w_mcb4e%g|gyI{) zl0(OcO^9T89^{5f%;X$DATd}043nIm0dC=vLtP+=kbFxX{z!=rIrF0=A6U^CEm=f! z_ZUe9Ewf`K&r)0_PO_3_)CVO^3UG;+j8POVL6S_FQHhcb6zM%AnQ#I;Ns=*(0!W7? z){oJ7MDog94CztHB&8T8OGfAn+!V={2Ov$AR2@TcOd|gnS{#?0q)&UABxVu<(Mzq*MwnnGz2p8nYz7QYLh^g!c&=PfB)Btml-(M03j1lK-%cOX!p*naDwB zzGTh;T!R9M_*qCQl-#GtV3Fi$+OS+KnLi5NC6djH!L3xXDG#G}Mv_5KMVVxbK1bz} zxkmt~knr!J@vI~=w8#RN&aO=WoR@qX0$Zvj6_hD)K_aqYU~42XpQ5o=Vk9qDo#ciH zwp^4{voS#RlC^K4?~-IT?dQ8JIj#YqL9#gtN;FCWDSX=`SwlO$nkCQi(RW4S%fV>3 zNM5EjS*v6lWeT-PwmNOxyyYL`9YBMO9E(`Fd(^29h)HZIu}1j-4?(pCt3D0!b8jgKU0jUag}DJuYAQsTQDg{xFb@0p#_pD5(%CS9Bj zech$ux9INLB^{?-@w=t{D~fz(s#y%az%=}J0f*IUYX4Y!An^fY~v zeWkluX!MglPeJUx(jET~k4R%_-Wed(Z$}X*y-q>hebT#Mf#-f{%XcV(q%EoF3zlBO z3K-!LX%78WH&nWYGFJ~s-;qMMFzLZ$ND7zE34x&z(j^p;h?I6ehQKK4$DaWZEnV+` z^)b@Rw5W=eHjaUJoRskbii6TsKY~lVbTQ4R5~NEg!!}X6gaV+4qbW-~8ER@NSI_5%Pu5`mcu>O=ZiwE3k>E1l_PFi9^ z^`i7+N@1y&PP+x(m!uz2;OMgSzZd`;r0-n@w?^qx-XLj`#tXrwS^7QAVy{RyJ^)FJ z^dg)vPOVZ2#Xj1kKR$p-?b00-hU%1lqd=`o`sEfB*Q6!CLBe&Z*zpRg-O?$aqv(

    xH5gy>-@Z#F3JN`oJu zZ$!$WRn@5UBnP+$(rvxqIVN3OiNYw#N^Reli~`DEG=PcT>`(zbvu~+62g6r98(#+4p`R z-6!**M4J7w74+Qc!ccX zM*u|1@;^fnCEL^leWPXb{zMTYlhJ>2Vr3mjdvZ9%$-*z9^`LA&?TU|=wdX)!f{gJ9 zMWXBxeLxP$TJ$KAWZCrcJS^i2A>xQ^l73QjR915teaW&Xx1*LKdqAO#RN1~ED056! zP!7OxSsO)C(qv!Lv^8Dk`UZw1Lw2SEVjU-BQz!(PDO*#5B1;zWClJ}P4L5;5DJu(u z7CEvUdhT;&Ldq%0lbs;%WxkBljJ^Wdnyna%LRk!jgNkHFkKlnVmeo@LwnS#OL13wD zC0&X$vgNcjx=gl21PSG`mo9@@g+tazZjiIG9-0eO%G@YAdQNt_1U6O4I)l-8UY2to zw{^9wVF17jGNCKv*2u=Zz`IuVIeDP#WbQNpyD0m0A+)HMrDucZC7Bnk%`VH_X`4-h zEQ9`F+$fuz3S5)y+ER#bmN`=CX1yYNeHm12kxAwN(JIS#0=`XFL>Z3lvX$NdcF3Ne z0^n8IACqY8lwCRrxm_|d&4sVYN>+f|b=kAm0PmKa+6JCIvKPJvJQ-Uvf)$;#gWVo=5tU=W66$H?7!TlVD{^xctdQ9#nL z%$=NNcV!MS#^RoA!wWF&zKl;vu_LmYODINV?(|SSko`)J!Y`Ieu`cBH1QnV&VKJNx_x$@7?pzoBt@pCA1T7HJ+33>9geDoE{Bcfnnkz7Py z!(#bU0bo`l|MttLak@&We9skho{^W$18JH3?@Dx*%bj`9qC&pz0gO2-@A5@srToLt zz%3NQq}lTYxj_i=HS*^&(N`;UzYciJFh`5 zF+kBq`8?X--6TIS9YwQzVKC%fksqQo|2DZ~8z|f5-_eez4tXR+3%lfj67akx|HZ+C z!0YmuVIaEY2ij2d$ZeElcS9cN0er7KR}Mq_e6Iz7`||0J>5DZY&)kaY zn0)CX@E(^(OhMy>{OADeeJG#nifiyl{uVju9?OH@f@+iURRvJrRpA*6opvg0l=bDN z7^O?$uE=b|Q0`JhQDWI{MJg>M_9z}z!Fmrx9TzoE#YLK8dMN_D={w@BFx~)DABD65 z;(Zk!6j1R~tkpsMUd575u<=){qLkGD#nMoa1S$gFLE}CJ?n-=W6tPPoH%M{tH8ch* zw$l#|LljTU!N`OvbQDHDpm^dS;9-h4p9M*{;&?pFjZnene}u zVgosWViXN8(1W9}+fl?R9?}>3pd$Wz=oGK`sT@Uu;v^-eBr4{m!=^)uX`5ig5yi$r zNJ>#~Lbl_L@GpIL(iCpJDAEo*c#SpD$ixizwm|3i-q*F=GC>~NI ztxQqnpeb6pLN5WLQc>-O&U1?CY^YnMI7Bg}3ks*(z}G0A@&vwC@!W5qtXF8apz)HT zmtsSg6^p+HWs_p)4*HrEcgTBqMd3y6zc$5(zeA^Xg_-XA4#oZbklUqjrxOjYDK@54 z`p|X7o|UNHP?XZnkY0uRP5}E9zixuSn~D;8FWpkCq(#`ELg5X$cNG6VL~U5Hf=*<+ ztLRbzH=?*t9(9yOp77@qj0}za3-7!K8_-y(bkOdRbINkMqE*TtouJ`)WmzKFR4W(ItM7uc<{=tumEj%` zQKww-8T7rVtSo@|dga+!z+F;4qDk3hsw>=orrdTF#M ze^o(=HsxXm<&C#1gXx>rq1^EnBwbaqDLJQ8*-atKF6Hf|s9jUaDB5;i8B+${-AWgV z>-Q-A5m9%#p}aZ@ZoSGWYfgAd#-Wpx0U4Jzl-2A(11;!(hF zD@{H0p}M17O^L?^wD)y9i~<8PE{B!=iO8q@^8AUzE}_3E>#-^zjmwghbbLl zk4pJFfF7!R`i6U|UZMR%-l|gCUgM*xrGz_Q)%6@S`l(D}aNDage-07;Dh*|%1gJKI z!-zoDC&RFQpXzQ4`hrwXP$Fiqs{2)F5uzGc4`v5c0Y#7-rkY2YXW^E!_`EiK;&eF=~fYlnChK=*m+zPLHT};G}SMQp>VpY z_Z8qXRBtQ+{)8&hgvLzOu|jB(t!ivX?W8JZ9S}JxDS5+lRbNt=j zr%GK2K)$Mk&Xz4uMW$i6i&P6{z=%?nFbWdRsFLV}nKG3z1h{gCDurA~6{-|U0y(RS zr!6#(8RqPsAe?c|h4nU1+*GG_4t9qV1R~J>keviI-)k-6Z zODeG|485${qzAJGmG4a`)2N!RgM=nkAk9y&sJf;@rxuliLx;n(s{H%FtwXhA84y=- z@lbTC1~voHrF#4Zw78~PO8+~%t_q}SeYdLW8Cc(=I;Zm2dti=tPR76L{4R1bSW z(yvW+#>PPt)K(PBut zt9mE_&4@~K2TVs*Tbsf3fohI3D92Q>pI{KiRf800n^1L8{?J3!8cLmhr1F#k_gJ-O z8UT|j5p9NdRbQv&=}vV5T^Kj@cYV;_T|Hb(?vGvSWnZIpx7vwz#OzVCo&w%OeV0;6 zJk>YpPmEsb^=34Bt8+mQ0r&zHf90`)JnyR=YUPn&d#)LSTfqgXxpG88RQ+m>V0OVtOyffi@f@6l4Q zOx^w|NXpgE_Mx#t{l<5IpH&~A1RTdXbx}B~RqCftg66#X;|?fXtzNMkwF_!DdTZ9I z$3mfSo!USjr;F;9yTP z8YFks(<%4sp8DWH;O?tKQ+H0C;kZb@;TlzU3PJxsofQJD$JA%vMr~YOtbx`O7$u+| zt6!tdUXyC664ttE?opnEyM{+^qFtJ(BVf5(v)u`5dTKV^h8!==wTI~Q)@WvcnV)7A zJrjF1<R80=e?T%^QjDe)%nmrWVPt&9rF&62XaC!ls&}=J(q)bgh zC(O>$T%-^{w&u0a+isZO-gN+XTH{O6y*$n24%G5BU!+2r0?kMSBo%6gC@@x}`Gq`e z#hOq`t18i~PlKRR&1W}Z*%{4*2#S_z){=qcn%AF4QK@P32FW>%KYcu_G@pz^!UfG= zAA+(*Q#y*qTFre&II4A;mgm9yqUJ?fV$^F&WvE@!w7v+rmo>jW4G|5RHz-lBQ4>V3 z_$JMB^aHnM&CAPS(iP3eF{rg@Qs$%9s`7vJV|G_bZA29J9SkP`424X z)CBB<5nY<+m(xVznr5^Iq}Mgu#pvwTJf>Asj|Q$S+{~H^+J4ll8Qun_eVYB3F_it9 zUo$~Dps|)f;7!ek^cA_K`JRS(P!mcyghQGd+MRq`v*SD@-O((kw8&vi>}ROm)kOM2 znR}X2S8{^i*Q}-Z$%v*b3cyiK&luP|&^)B=En}MB+A$X6npK;i(}ZT)Tr@t^lu%6O zk>>1e03K^TnhWbEHJkEbi>o%g34J@Yuaj%pP3uKoFn4VSO)_?APw}DXZtYs~SMSlz zOQplPJ+uY1EcMg|dSRfvw5RVtptttYA0YM7E;tTDeYH$-L-}dHpqc4jZM6`1f9=w4 z)B?2Y{2@0`D?SYPKJA;7T(e(mr=>!WHn|9v1#2JggiZ&v`83lC)9!u&s)cLM(dK4H zg!Vi+G$XZ5PNUS7Xf5`1nzAW2)R0MEnPGZe5qqJ5V<`A4-=DEOPKRa#(DigqLIY)W-#yOh8m z)8<`5aa{Yb2~5+ppFIg+y0*9)Of$58T|k`B%IH#NYCrZtk)?Gf?^(9CX%VbHsg2zR zT#nZ5IrQaf2bbb%ozhMbp>|rUFNNGZ?PChE=W9#%Kv02pF9mpuwT`DKh+Cq)To0O3 z?H5v*c1HWuDs+}#Y0nFw?|JP^ z+DTHaJ^VSuU(gOx%)3TgNcpC<+Mg)STc>?J7A9TPzR?THdhJ(^?YPXBv@fKA&1LPY zv(eh1eWDBE8?_g{0isFk^Z_hv*8W?D+7<0o8MJ889;U5Ht=e+(WVUHf{)n+`*M`xi zh7RpJE-0>Q-=IW?PVGxipw^{5PfM$7S}k4l>)JQI0-#&Fwt;q`_h^r_V`y$@UrL7+ zz1pfy)cUkuG@a?!{z?<40c|Rsfpk+_Jq3VU+TvYMW>EY41b7c=XHZ_qZS9v+pv)a@ z=p$%9to?@)*Y0YU88C+Tw00?&-Pi8j0^EqUlXfwTYWw!lA%e)8Ml{H2Ogliyo#WbO zN`jiu`ZJ*7L+yR~6hG3Y-AChN?dOzHHK~mvkG!kyMM?(RsZ)IloSW`y1em((a!WD5 zyL7uKi)gp*cM*y`y5X~s;GvsK$NzZh7SW;lK05zbr{ekZ)pdEn3P0V25bzGr+1-E$ z)NTC}H2ZY(WZ)L2(^B?Pq%J!YY@&3Feneli?g`2_iqU;U$7;vw)DJ)zrxVYH+6Q$! z3jM|FoMxa%&^-)=_J?#87g0;n6-uD*Vci>a#E-(lO|?vtr$QKLJ;wyG2J$mg<_~fIFjG z9g13+&TkDQlXJ@Fvr3(x2T0E8PDxR#*45IDa6xy{0?HcQA4gHt z>RykBW_7x2j_qK2QRg66e7){&8xWUtAr!d0tQ)6yNrSFr0*#HjFG#f}UDsYTHtPZ| z0dPgPegxcFbp6xO*sA+vGiq(R%^cX-t~>S{Y8^V|IuuuRn|^@6PM!ZX;I8XLM?li8 z3!Xtausu2-y7o78>plccudZSr8vAq%3Ox4f+-XDPfNmqDBHq*u?SdA!bTjB=qCwq@ z#o#uilQq+=u1lb-r8~MWeb6|pi>?C6T^*k`kloYmJ&)Rb-5az+Xhf$ahwZ3NJDsxG z9_VK6L3K>Wp|#1l?ho=gP3TH!0{>7KK-cb(Zle%PAM3Iyn7UKHw+c+%^ffP|&s`r$ zNgI3grdiQd`9Y^)i^n;LO{dF(U zr0TuN4RB0=NlnDTc1z6SWoJI za>HYrqnFcJiKq1v%2&Epq7R9)P4`eHXo_O7zdW z!opI04DHXV(q{xf;CcPGl*w4Fcc}-P3;MtZz}M)vPlLc({jWL{b$U-T`Y!5wTEMJc zpHBmPNuTjM)V{0_mLPTtNMqu0iaX=`Ai_X^bs^GyQXh=394P!Px$~vw|)nCn0xdIVX*gxKB@?{ zUi~9l1oi1XZb8C;eq;o-L47h!CWrLP!@%seKGi{?_dEJecf+P(eM&Am@9JM(0)hAR zx#Z!yuiy6;tRK;zB+tmGzV&lZKF~+1z->%_Vmbhi^vmee_*l;fLgS>qmF`?u!`xYb z?={H0-?sh2srON+M4%Op61X zL__o%kQ_C{QNB;I;Q(bQq!`{8L5oy_st1(E44stgf81c_fF#ZE7rFP-4YA}u%P@5R zfZ~K<8bxh04O=HbdD75OL)$@f4BsmtH`l=b7c{2~u6qDHZBWr}hCIX9-$HJ_VISqr z7Z{Ey!Mo7#^cDb$4ENb!Q*6kXioOy@Fe9#)EU}oUesXN^AvbD8rZZWq{*Z1T}BVe8r*GsngTw1j8iBR#KYLX4_0^@ zFM2?{m(jcwB;H07?M(DB{y7GLzQ*gX!|Xt#3pvO38C5>O?Kl20iW@1&7({WgVB;T) zfeSHKeY6X$p~i=|Vc`K|B1H|tjN{~*4>xZ84Ky*vkLZ}CSYr*n$>WS$L*ERXI(LPh zRyT>p50(Ia$T(#SYDvb{CD8t`F}4RHQjI=zJ0CNC5ULEscm4=PSTl`>==GXq{O>dX z*~T^t0H=+AQRFYr=&AxP-*`g{k^*DE6c|`&Jn%I%D>5#H+ufxBs!K~7lL@w8J#vjPHTxG2K7q#=oWCvw9R2%p6(R#tyMrTRX7?1sf zqSnap0lv=oEIAJ^8jrg`QoYe926CH>{`qKZHrh6zxMI9ok6~^xJ|6^qTaB+t!Mn|9 zUkIJrjpy88Qit)Yo7i8=s=H z1_q2>zTkG#m`jfKTSgV-kqsLEprofE<2N*ixMzHcf}r<}GuNOPF&6v^%28t|rEfnl zK9dN_G2?EUc#RuBW}}!ehUDRXcxX&r{6y&FzNt^Y{N6e!=Wf!Fzj2r8zyUDWZCVrh z#(u2%JN|+iUZ$?60r57KkI@Zf>e&XsUQ-A~Is8p&J}3fA%g9j}X!4=&^*+-`D46Xx zmC@ok!X%-HW2EW*)#!^du_@*qZOV$p(8QS19;1jg#l8%ZIMY4)d>%CQ)9f|gG{f;U zu3my^rZadankFd6=8$Qb9~zTP^S{M-9X4qwU+IWR_Y!nUHu;&f4D z%rt!xl*di!^c$PIGN^sE^6R+;Ah2a;-2Gllssn5K#8EX*3yl`gQU zHLcBt!gZ$ZHVnc=lkXCUs5kvU``9j-epn4|mrW~Q2W5k)hd!~5rUcsI*JMgv57nAY zF9nGcTAq-b{{tFC_!=8lt8P5`zB9XOOBXs1w$vtsOe*h_l}vSP6N%j>4!|% zG-2|ftM<_JD{YN>WSXhQReNlbv}1rKO<(;3lAY%F$>Zl{-uO9i?&d!z^tj7hK`)x! z=J!Ux)59G77X*5mODP`dWqyOs%=b2bmI>8-%yqQp_jQ<~-^E4uHzy8Ej6Ze6kSpj@Q9E)GTTN(*x#c`h13&|D@PMxH-}V zeG%rL-2jL*mn;IaDDxKbokp8O{~u5^=TXEp)~xxy73#;Clj)?EgXWP1;2m%Nk#>$I zn7^W#d7|0t6%>ceU#G(QBy&w1^gV38N@pq`F~4>SB95A4=wOUwbMv3zl45>H=`gA0 zW3_%xNC(YsXamq1!k}E&goJ_9uQ|A3n z(D$@?8y$pQU|xR&tP9PXqfr!@Wf9P&*!)~P#Fm(&Xdz!}4y2FE8S@|XY?PUIkAq9O zIn5P3E6jBcCIp@}|F#{ZmF8~-0X%1x(21v2=4T&4-}C0>bttOMb15!(!QA==iW>7N za_-fd#k6^`&iw3S4CO_03GEB3H_xUw*(I}pZrsb}b1%S_2D2X}7B-rv{0)*Ov!3$S zn$5Yx3)FBUI}!GwM-XHG6LWNvHW<9>iZa ze^!N}+kBsez8>>23YFe4(~rQMdd+@W;Mr$R8U>)={Ou}G4w#KOpuA}w7K8GZ`LON@ zJm`bwC(?224VkA=2>rJCh4+EDW1jj25X0u*nNawyc|D!%a?kwEP3UyrtZ9LUBW4#m zWnmQp7=siAZzH}I@T`kvAz;mZ1V969b z=x&zpX(F}DG9C=3yDj^hAZd@qZ7)>xu(Y0sF`gF57V!46bW<$a$FeO3B77}tAE43C zBFzHHUduXKSo>R&DEt&)DLn)c`z#HVZL!~Slsx7^maV^nb%^CTiV1~UzRv)Ocj?K>24mc@U9Tf9X>vDE}i zF%4;=B{mh34q3*&0wBq<{{na(wj81je@89l@BgZq6N$u%Uzn(m027!NYir5d@{7c;+e5b{SvMakRa`H7?vuvazCAuxo(~GUgvVs1Xal;Zl8#eV?-cbVHXZbl0gD_y3 zM)@T-Ei^r*!g0Ln4T_se10xaAI=2smN+i2RO|mH>B9x>}PdS74`=wFO$ZSznN#&)xbR zz3p~elYRop9_xZCu=cRF&{hyn>(*v+?s-{fs!{c}4$=(H$NDdMU;V7RDJHzvIz9)g z`CB__X&GQGKZ3?U>xa8h+i#7dRG%Pg!WWPmYz?5jNg>wfgwQwCs{9CpaKO5cB7k95 z87*Zats&n+rzq>QGr=X=x*Wkihf|Do<0c?ttw+iG6KAdWhG_?_$0>LcZ#}L8BEhu?Q@TVL@3Nt*SWHK;k#t?%RH5~mDnB?bFWSo3FqG}HQuA9!b3-=dv@*;dCh zXgq1n6~n?D>+>Ptoon4hagI~g;P=7iv~`>o3whQs`dw+hb=C?fT40@(0wW5ovKxRG zS%WBPs@VEAg&a$)Z_?YY)M0&42W`$+wKUf%vyL4_XSsDg&15R9>3>7SS?epO&{t)R zy@YFj-pc(QBC4$sHE680>L^N7XRW47c+sk)(*IcqSkG#4~D=V>zlMetIs<9Be3bW z8t9WTVC`N3frHj(3P3Vsef}d9x2>M!DYn_3ovb`t%f{@ zZniOcn%!*;E1=qL+sly>3p-^GA?+WsXUxtC3~5O8l>qc{3|Y`^YB&DXY( z4GsNlrPZ_&*=zf@8cO-w<^_XkfNh2oBn8@>Yr%A%t(?~9`)v#9RK_41Qw#CIw*G_Q z7GgX0HYA1F%y9sO+dlgb0wZhzf1`-BO+5u%lugr)A&It4qodSgY;S)8vtw;ydif7$wJDvelGAi_5k+n(a5(xRin1X#13&+a?>2 zB74oYIWaKzicRDTk`~(?ntis~3Y$=CvrQewptswupTtmf*uLXK&{f;p{|~m?rgni@ zm+i2FPW8EFONs&Mb=%^tVA^e4LV5i?wq|na^x3Y^+r8fw`Zj6+ZIDf%6DuH`=IZzZT{PU-?a&*0yknSqtxM1+ag*!Kd|-vMK`dmm)xe~wr{?o zm)C@C^jBE_&^F~Rm_D+lQ(X12?QaSjOxo73M9tOSxd7sK+N(Xm&CTvgp-6Xo*AW!E z?2eZ}vfG{=0YmrLOTGe65BrG(jD@HDH6~bl+4CPm8E^Xw^U&vGuZjaRU%Ta9$^!JW z8@|C{?6qeZQTW^EpMcx|`)vw=2HNW=Hnz_$qUqdz`|@_EA7syBL13`GZ8=Cn>^JE# z3bi-TkQ}i8NBN^+c4vB;!tI}pLT-fpi9z5Z?QBXNi?Xk$O<&RWU4Kra7rA|U0%&6G zTI@@6inFtm(Rt85gJwdB_T{w8=8*k&%8*L3%VW@Z*j`N2`y=)*DfWNVZlt3ClI@Of zATY&#hu$oy_W6fU9JAjczvFTH0ENBN>}AJ+OScDzfy=O4S6~nvC+t6afi%0RrNqAS320wx52Y1&x&0L7{Z-hXrnl@_`v=#-y3%2Pyc*SW_JvPCV3qxN zClo$!ucw5+YP-``Fuh=xll!yAo>LEQwf276c3)>-5sBJGdvY9fs<(gJ41t&I4Ke^O z+i!^gZ?Km=4_u?Yihj`BWG|y6hh}?HF_gJtf9Wq2Eq2GXL6ElEU!>(!oBen4Jha;% zU4l*>_L=1Ex@!M`&WP-^_XR=WE_?gSkaW#nN<(tpzM~l=-S%8NwCJ%92*LD*ok^ba zUb`nbL;CEYEYxn=uZe)WWuHb~kU@JkZF?WGpLNg+>bBjo2_o*;XV8LT*v_Nvcz5kO zdXwI>OK6wceS0_Udmpi1@PRQ8>?frt#_aD5p>N!-E(A9>7k3J9xVzjIpmCSW`dGks zyLisUIPGz{bQo|Cmsg5F;_31aIWxUnhG)=M$=hWkJx4w+Zj@x|=b{>d7JFUfbgrSl z%MNmd1-N{66gmaEc#%(NpGzGbMzP<;@g>*_T<=y|s7hT?13X*7-m3vUcxV-fB6QAPFcbQJ-F2}ii>Ip3lx`fiDh<7Rb9F2)C zdU6>Ya>=E`4w77+Cx^*l7h!06B2rbqpfBAqmvwZn9(Q3chb?I?z4xJZx{H$@hMsU) zW`r%7E*TksXS;;|2e~I*!g*-SadC*i?6iw}6^zJp$)+5}|8aC3a8*|C-xq|~a)mqG zm6e%V=1(hEX{lwID_fdo{>@A+?%wyl_p)S(h{#ZIfr^5lfG9E?sDL0cWy@5S>@Dm6 zefoU-_;Aj7_Pfq`p68sK>U5rh3y+*md*HfcIQ{+*5;C1OHbS#3r*TRIJ$9N+FRg5+ zY_q_I5&;d1o%$$({mdzO z7dlIvrjZe)P6eSLD0AvmfuO=^&TNcTI>kkzv&v}?MwbQ__P_54CiwX3R zsCT;cAqE?qu13Ma7fxk*h=1v{jLNMVoyMptyvZq@5<$&Q-_)Sh;#5z8v{ok#?J#`h z^m#Zi+nl~#51ZPZ`YBP@;k22K(&%*RY=NXMCw?sq>~?a>0eO$ppI@T0*Xi|X`Uv+q zIk-Tney8X6fHUBcDy@U&=f~mJ~krz;Xg!f~Bazyz1AqeypF4zceM}_H6z|BvXKndq# z!uro~ef@=pY0`gO*k>B_RwU!_+u4uNJSm({7xt9!>u{JBDh#EtT$s>;7L2EbRqHW! zM)=PEp>n{D2|ZRq{CVNpD2NXiz8eBA5yDPNY+ev*sAl1!Fe%6{65&!MrBJU6 zFK_|kgjL-zJ6<@I5=aTc5PGz42O zlZD-Pp;?O1`wO6?3iS(MS(;Er!J9k62Q-tvD||Zv1owm?z8JeNjA3cIoGuI$g7*XA zhjjoCg;i7r^+@>lDu4{(wol;EOrbYz?#U8H1%v*v@Mb&cvV}>XfOn4YM=L1vMEH~r zPR$kmOOySlLa`NEdBT0P{>c|k{tTD}!X-30Diq$KIbo4-&2|>BSh#}jl4rt-rvN3w zPpcreR2Urwxn;uQySQlO!oZtgS|N0~2b4--FZ_b^Z4jn?4}urM(9>Y{QrJ+8&PHMK=M+V05+>5rwpkeOhTaz8iw5Y_ zDvYMGt#)B0&0RW#Nwfu^Q&>-Lh%Vvm9bnTfOr#$~=n?))71X`L5__1|Cp0?)%zoj{ z0BA8FTt~O#ps?UuupSZ?e*|W)g{lpp8x|VBrnB`&gz1)$G%6e@!r++jD;?O33-xIL z22qY9^fro)1VOH|$aMxfT||-p18^1Xrr@cYD1{D0bQjgE!4*9$x=Rac579GvfqRO& z=3~rD6hMU@-l8{YM(raqqjI1lB3Jr;u)d<-sVeEHXePZM{Y05zAUq~&83G%B(Ne1J zJT8i(&G!K!u`LKsh^(BUQ=mvk2W$q3qG)5*Ns)$X7EXyuDE$>G`jg6Q&WJSr;Br

    m%danBEMYljulzWhKAQf^CrUU*F`I7i%^_sDZS+5MH^`%lOQsqdHD^| zMhf61iV79zyeSeLM(dV{wb%nSl0>Ez;C)+km%eSuqFei*Q;LXfMrW#M#WyfJO=O3y z0A_bY*2jQyU$mH(Vd!YO7}EV7|! z;xkd0Gsa3pTcZI=MOF78w@mbZ-$9vj(eDM&utJoPic3)``h|XYqDoX&27%8-7j{Fn zYSFG=Ag@N$TFAntT9FGa2J1xrR2fq*dPQl<2GLSKxb1~#8yz0qBnqL`RI|u!5Kk~!Cj)(9&~n#F8_{}LEPR7o<{K>*C5_mTuFIy z7jerD`iVhT@u^i%*iF2EPF!^t|4j#R9~S@74B#QIRe`Cec#91vyu?$3(djK7q6VD$5oxgbFYuI~SJbn8*EB94m(SOJXV2jYo>V+y=VKVj0~m z>=kiW9-2|&{C-eGi`T^iTorGpbVrQ1_AB7TiVFq+u8BweA?dpKdkQSYiG41@w0QA2 z)k7zUd-&jTLpnByVdU}9T z#Sdv+o+g$}2h%&^%WaT!S6uTuaPEl*=^&r`;y=%Vce>a>Q}G94zjF}rQ0zi)k4NG^ zsSYqh{1&~7GR2re;{gyKECs=1@jp8-mMva97uM&93*STM6Y&>q0J&n;a|a|n6>HsK zVV*d36uk4rCvpJ_#3jREQz*vHO*{Z%_xC|xEWXWv;F;Km>K;qPv9S=ClNqHF04NB5UsQZ#lCWk4T%FNz4=-kLUpvm;vXrc zHzMA@0E&)^eQ8UIL1IJE9;4(8Ek2zkpSZ##H%Y4<=-egtv>rGtDH+0;mqa6hbZ<$? zHMD#rR_qTDaYRy=jBD>J8M=kmQOOeenEFY+3`6UfHtpBu*bdZm?wT-%u??Vns26lM+*k2A-0P&`bKXWFy55&q(5SqIFgh z^(6~Q;gZnzff^w>O@&?;BtNP_e^K)2I=EeuZ0~_*A|*CIg3V>g0XIBGS0rZZphc9# z@DIdCO9K9e)2~W~XmS=KS-t_P#Y%qAW9*vb1SN8=OLiQBhH;X``@k$-vg-{f`$3;1`PUEhDUxWq)l(%0?m}Riq`ns5j>O6oir$rsQn}bYNiWsk z-j{qe4Xt!Zdm}V_Adyjim&)3c&e9#E&@S=B>EOm*cTGH2jEM| zPfK87qhvB=Vwxlt@$f~nB#kC zCQqp+fSqd#P&LU+PSc_HpR~Iv+7W zI?Mq$AlvQhNAJv@T0iKLEiMX)?`huSzr72wa&Msc<%U$4c#=L76yd4XtP5 zrOv$|Opvay07|md(*hJJ(v4JUk}7?Z3QE(YdnprhN7_6QI^C7d%>=pr?cIU$K&qn^?L+Br6j*vB{p=s0WJupZngaKw)JU}sS<)Fxq5fm(`q1_GZ*-=VciuJkJ|xILAgF+hBtbpKW`&6mDO<;n$88`|DhD4j5Zu_Ec8o}eq1 zGPEo9nRG6J5@~V{K&kXt7EsEiORrEpLWMM)(iWA{y*nYWO3Hr?ot{h0ze1~88uuEY zMta;AgtgN7RN+-8&5Z{^y)-Ep$}~ui=^_4wG~5SFUrN_fpubUS9tVOZsr3zzH%mQE zfS^Ts>2q|pN+mhCcJ0zidzxT(NWCfc)hYcd6&ChL?YBTguXHLshJDgaggPi)Lv!gN z=}juhd@cR;bBGw0PG1Sk5osjN??rmDTfMlfTT3s&$UbCN2kN zfGjWsss+h5kWIm|PyfJJi0rd*kcZ0VOhIRuOb`mQPs|-`4E4Zl^vt>_Z3;=G2leW{nddQ< zEMt3UDV!o3cSJK)HZco>X|n7{T#-AnPbp$}S0?%c0`JMRw72)Z?28MKlrFn20_Fpm zGaYsEP}ZVH=OdZZZivs2IZzlRQx-<0>RGaS0mdH7et&^hw(JYKJ9A_gDI@VjwuOBT zrn$1jhw%DSnFkkI`*K+aMa3&*Nwd(Zl&!0WYE`ngs6z6&Y&oSAs%2OFC{R=*%Y7dX zu9Zbl8AhFK>0VsJdRhPXz-f^EdQlK=-mI}~nk==a>rmeEc^uBl{ zyLcG9J7hzTVST48Spm=`>st#&du4tJP_0iktr>#)W$XW2Z_0d=>HGIuc5*kE4$ESW zL*SUKkit#lvKR^;8RR!8Ghvi3^aYBuoS`q5i+sf@@OG8IODk$O`4L(-y32p2;@rdX z47w9M%kSNRZV~dm z6kfX^H&RUWqFibYluPpJdVomzOPY~fmOD`7;fmbe2!bg2r`ypPEq^-{T&~LH`=CXP z{INMbIC7uA;F4?d#8p7KE_XJ^Se#sEg!p(?E~UbN1o`5(;k_Gj8*6BqC|^$pn%R09!d@(+6<;*PvH9A@8@w^Aw1 zJ^45E*}pG8NAHVtd7&@B19{A6(Eg#EeME1HNAiDYftw+h3_wz*{0UX9Wyxo~0WBWO z9RnaDTRw#%_BrxzrUN{Y`%~m0S8hqutEcikk0B{fzKSv;`EvW?=q!-Ge;J*H@&l2O zR3u+P`Osqdn%`i=Gx=cf^OyV`il@)A^(E{t(EeCdZ<<< zXQlx>m;byG^wsjEZ=h8p|7#5hYUPVYAfitGaxw_&@v+U$Yl-&naO2QvPW_ zI-BLIDnQ;M-#-az z%ZJM0%N}`N60Gl)PoQFlKKc6;P3f1{=l}-fHx=MAC=ZK-FNWmXJHYIcL}zX>Od%RL4_VNl$o$+S^%VH-p^D|&=Lbx~;hAjws6lzv;l zO<`;Rio4=@5aZQF|F|NT62bur1*L6HD8{H{BvA1!@e5K!r=T-fu}==CoKg&{ zFczx#;{iIu6lqdOKCPHRyI9XC4y^&Rvx=F=VE8%3YZf}5SD4d#I$W{d9+(k|WO{%v zDE96Kvx|x+ES+q1N%7rRz=>2ym!bEvf=gwqR}|YR4iu$GnF|A=6_HdKdsR_12t{KQ zB8uS0Dsrgu@tQ&s1ZA!(J`aN7aSG)Z0P%{e6x>NrJp2^khN8v*f<(nx`bgeXG*Vdq zmSXTR)rur3rr$yHw&K(l5GE@gd;^LUg(Mzhsfz!804Ggx?j<_!D5gF`=Uv6tQdn_M zaf#|a?<+d!e4lg$Zd5#8iiPy{e5mNAbq1Z$_j2R2~@44d0AF!-iv4ASs>l9vbkWjDSQQ38aA{@CG)~r!6 zjeZoXN%4Xzbea{{sJOCA(XbH4bSpyt54?L639|rt6{{S9(x-Svzbe(Qn9>Th2Nc_A z>&l=au?ejqMQ1X`UMtdQp*^fvLT|Vc#a~oGJgV4B#Xn<;t#ct^Tp^_51=gTkz7Yx= zm0!~A$61+86D1erb|=ugDr@Nb@232TityZ(pDYIN!^-J&2YM(SY2T}-auQXodMV%B zg_gH6j?NbFQO>r8zDJaYD#6-UIhX+gf8`tsz8zOSS^#DN$|{OionVzRDjx_`*1dvH zf|Nfj1Yxjp`4J3;D6{EC4pUasC+M{DsuGgUC|A&vbXM6N0&q_G)pUUK%2~AZ3s)Yc zj75YpX8{CWRIZo-a7nq?4qlH`PF(~Emz7) vWLbHO@F$^K2@x@hH#5HznUeW_S6 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%0AbIz{0$TR8rmZekY@!*)!J2jKh?)&s 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

    VS=G&Y5TZauz3{5 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 diff --git a/TrafficLightsPlus/Debug/USB_HOST/Target/usbh_conf.o b/TrafficLightsPlus/Debug/USB_HOST/Target/usbh_conf.o index ea0b1f6d4e9d32c76ac7b497bd60d0097cfac3d2..8b15f59b0ebbfe4c7094c1c6e7888619499b53e5 100644 GIT binary patch delta 154389 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 BE{gyF delta 320769 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: 80001d4: b508 push {r3, lr} @@ -78,7 +78,7 @@ Disassembly of section .text: 80001e2: bd08 pop {r3, pc} 80001e4: 00000000 .word 0x00000000 80001e8: 20000014 .word 0x20000014 - 80001ec: 08007f04 .word 0x08007f04 + 80001ec: 08007f54 .word 0x08007f54 080001f0 <__aeabi_uldivmod>: 80001f0: b953 cbnz r3, 8000208 <__aeabi_uldivmod+0x18> @@ -371,6945 +371,6932 @@ Disassembly of section .text: 8000518: 4770 bx lr 800051a: bf00 nop -0800051c : -#define G_Prt GreenLight_GPIO_Port +0800051c : + +uint8_t trafflight_index = 0; -// HAL_GPIO_WritePin(LED_EXT_GPIO_Port, LED_EXT_Pin, GPIO_PIN_RESET); void -breadboard(int traffSPD) +starttick(void) { 800051c: b580 push {r7, lr} - 800051e: b082 sub sp, #8 - 8000520: af00 add r7, sp, #0 - 8000522: 6078 str r0, [r7, #4] - HAL_GPIO_WritePin(YellowLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GreenLight_GPIO_Port, GreenLight_Pin, GPIO_PIN_SET); - HAL_Delay(traffSPD); - */ - - HAL_GPIO_TogglePin(R_Prt, R_Pin); - 8000524: 2104 movs r1, #4 - 8000526: 4813 ldr r0, [pc, #76] @ (8000574 ) - 8000528: f001 fd69 bl 8001ffe - HAL_Delay(traffSPD); - 800052c: 687b ldr r3, [r7, #4] - 800052e: 4618 mov r0, r3 - 8000530: f001 f892 bl 8001658 - HAL_GPIO_TogglePin(R_Prt, R_Pin); - 8000534: 2104 movs r1, #4 - 8000536: 480f ldr r0, [pc, #60] @ (8000574 ) - 8000538: f001 fd61 bl 8001ffe - - HAL_GPIO_TogglePin(Y_Prt, Y_Pin); - 800053c: 2108 movs r1, #8 - 800053e: 480d ldr r0, [pc, #52] @ (8000574 ) - 8000540: f001 fd5d bl 8001ffe - HAL_Delay(traffSPD); - 8000544: 687b ldr r3, [r7, #4] - 8000546: 4618 mov r0, r3 - 8000548: f001 f886 bl 8001658 - HAL_GPIO_TogglePin(Y_Prt, Y_Pin); - 800054c: 2108 movs r1, #8 - 800054e: 4809 ldr r0, [pc, #36] @ (8000574 ) - 8000550: f001 fd55 bl 8001ffe - - HAL_GPIO_TogglePin(G_Prt, G_Pin); - 8000554: 2110 movs r1, #16 - 8000556: 4807 ldr r0, [pc, #28] @ (8000574 ) - 8000558: f001 fd51 bl 8001ffe - HAL_Delay(traffSPD); - 800055c: 687b ldr r3, [r7, #4] - 800055e: 4618 mov r0, r3 - 8000560: f001 f87a bl 8001658 - HAL_GPIO_TogglePin(G_Prt, G_Pin); - 8000564: 2110 movs r1, #16 - 8000566: 4803 ldr r0, [pc, #12] @ (8000574 ) - 8000568: f001 fd49 bl 8001ffe - - - // Walk signal - - // Light dimmer + 800051e: af00 add r7, sp, #0 + trafftick_last = HAL_GetTick(); + 8000520: f001 f8e0 bl 80016e4 + 8000524: 4603 mov r3, r0 + 8000526: 4a04 ldr r2, [pc, #16] @ (8000538 ) + 8000528: 6013 str r3, [r2, #0] + walktick_last = HAL_GetTick(); + 800052a: f001 f8db bl 80016e4 + 800052e: 4603 mov r3, r0 + 8000530: 4a02 ldr r2, [pc, #8] @ (800053c ) + 8000532: 6013 str r3, [r2, #0] } - 800056c: bf00 nop - 800056e: 3708 adds r7, #8 - 8000570: 46bd mov sp, r7 - 8000572: bd80 pop {r7, pc} - 8000574: 40021000 .word 0x40021000 + 8000534: bf00 nop + 8000536: bd80 pop {r7, pc} + 8000538: 2000002c .word 0x2000002c + 800053c: 20000030 .word 0x20000030 -08000578 : +08000540 : + +void +trafflight(int traffSPD, int walkSPD) +{ + 8000540: b580 push {r7, lr} + 8000542: b084 sub sp, #16 + 8000544: af00 add r7, sp, #0 + 8000546: 6078 str r0, [r7, #4] + 8000548: 6039 str r1, [r7, #0] + uint32_t trafftick_curr = HAL_GetTick(); + 800054a: f001 f8cb bl 80016e4 + 800054e: 60f8 str r0, [r7, #12] + + if ((trafftick_curr - trafftick_last) >= traffSPD) { + 8000550: 4b2b ldr r3, [pc, #172] @ (8000600 ) + 8000552: 681b ldr r3, [r3, #0] + 8000554: 68fa ldr r2, [r7, #12] + 8000556: 1ad2 subs r2, r2, r3 + 8000558: 687b ldr r3, [r7, #4] + 800055a: 429a cmp r2, r3 + 800055c: d33d bcc.n 80005da + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_RESET); + 800055e: 2200 movs r2, #0 + 8000560: 2104 movs r1, #4 + 8000562: 4828 ldr r0, [pc, #160] @ (8000604 ) + 8000564: f001 fd60 bl 8002028 + HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_RESET); + 8000568: 2200 movs r2, #0 + 800056a: 2108 movs r1, #8 + 800056c: 4825 ldr r0, [pc, #148] @ (8000604 ) + 800056e: f001 fd5b bl 8002028 + HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_RESET); + 8000572: 2200 movs r2, #0 + 8000574: 2110 movs r1, #16 + 8000576: 4823 ldr r0, [pc, #140] @ (8000604 ) + 8000578: f001 fd56 bl 8002028 + + switch (trafflight_index) { + 800057c: 4b22 ldr r3, [pc, #136] @ (8000608 ) + 800057e: 781b ldrb r3, [r3, #0] + 8000580: 2b02 cmp r3, #2 + 8000582: d012 beq.n 80005aa + 8000584: 2b02 cmp r3, #2 + 8000586: dc16 bgt.n 80005b6 + 8000588: 2b00 cmp r3, #0 + 800058a: d002 beq.n 8000592 + 800058c: 2b01 cmp r3, #1 + 800058e: d006 beq.n 800059e + 8000590: e011 b.n 80005b6 + case 0: + HAL_GPIO_WritePin(R_Prt, R_Pin, GPIO_PIN_SET); + 8000592: 2201 movs r2, #1 + 8000594: 2104 movs r1, #4 + 8000596: 481b ldr r0, [pc, #108] @ (8000604 ) + 8000598: f001 fd46 bl 8002028 + break; + 800059c: e00b b.n 80005b6 + case 1: + HAL_GPIO_WritePin(Y_Prt, Y_Pin, GPIO_PIN_SET); + 800059e: 2201 movs r2, #1 + 80005a0: 2108 movs r1, #8 + 80005a2: 4818 ldr r0, [pc, #96] @ (8000604 ) + 80005a4: f001 fd40 bl 8002028 + break; + 80005a8: e005 b.n 80005b6 + case 2: + HAL_GPIO_WritePin(G_Prt, G_Pin, GPIO_PIN_SET); + 80005aa: 2201 movs r2, #1 + 80005ac: 2110 movs r1, #16 + 80005ae: 4815 ldr r0, [pc, #84] @ (8000604 ) + 80005b0: f001 fd3a bl 8002028 + break; + 80005b4: bf00 nop + } + + trafflight_index = (trafflight_index + 1) % 3; + 80005b6: 4b14 ldr r3, [pc, #80] @ (8000608 ) + 80005b8: 781b ldrb r3, [r3, #0] + 80005ba: 1c5a adds r2, r3, #1 + 80005bc: 4b13 ldr r3, [pc, #76] @ (800060c ) + 80005be: fb83 3102 smull r3, r1, r3, r2 + 80005c2: 17d3 asrs r3, r2, #31 + 80005c4: 1ac9 subs r1, r1, r3 + 80005c6: 460b mov r3, r1 + 80005c8: 005b lsls r3, r3, #1 + 80005ca: 440b add r3, r1 + 80005cc: 1ad1 subs r1, r2, r3 + 80005ce: b2ca uxtb r2, r1 + 80005d0: 4b0d ldr r3, [pc, #52] @ (8000608 ) + 80005d2: 701a strb r2, [r3, #0] + trafftick_last = trafftick_curr; + 80005d4: 4a0a ldr r2, [pc, #40] @ (8000600 ) + 80005d6: 68fb ldr r3, [r7, #12] + 80005d8: 6013 str r3, [r2, #0] + } + + if ((trafftick_curr - walktick_last) >= walkSPD) { + 80005da: 4b0d ldr r3, [pc, #52] @ (8000610 ) + 80005dc: 681b ldr r3, [r3, #0] + 80005de: 68fa ldr r2, [r7, #12] + 80005e0: 1ad2 subs r2, r2, r3 + 80005e2: 683b ldr r3, [r7, #0] + 80005e4: 429a cmp r2, r3 + 80005e6: d306 bcc.n 80005f6 + HAL_GPIO_TogglePin(W_Prt, W_Pin); + 80005e8: 2120 movs r1, #32 + 80005ea: 4806 ldr r0, [pc, #24] @ (8000604 ) + 80005ec: f001 fd35 bl 800205a + walktick_last = trafftick_curr; + 80005f0: 4a07 ldr r2, [pc, #28] @ (8000610 ) + 80005f2: 68fb ldr r3, [r7, #12] + 80005f4: 6013 str r3, [r2, #0] + } +} + 80005f6: bf00 nop + 80005f8: 3710 adds r7, #16 + 80005fa: 46bd mov sp, r7 + 80005fc: bd80 pop {r7, pc} + 80005fe: bf00 nop + 8000600: 2000002c .word 0x2000002c + 8000604: 40021000 .word 0x40021000 + 8000608: 20000034 .word 0x20000034 + 800060c: 55555556 .word 0x55555556 + 8000610: 20000030 .word 0x20000030 + +08000614 : } /* USER CODE END 2 */ /* USER CODE BEGIN 4 */ __weak void vApplicationStackOverflowHook(xTaskHandle xTask, signed char *pcTaskName) { - 8000578: b480 push {r7} - 800057a: b083 sub sp, #12 - 800057c: af00 add r7, sp, #0 - 800057e: 6078 str r0, [r7, #4] - 8000580: 6039 str r1, [r7, #0] + 8000614: b480 push {r7} + 8000616: b083 sub sp, #12 + 8000618: af00 add r7, sp, #0 + 800061a: 6078 str r0, [r7, #4] + 800061c: 6039 str r1, [r7, #0] /* Run time stack overflow checking is performed if configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook function is called if a stack overflow is detected. */ } - 8000582: bf00 nop - 8000584: 370c adds r7, #12 - 8000586: 46bd mov sp, r7 - 8000588: f85d 7b04 ldr.w r7, [sp], #4 - 800058c: 4770 bx lr + 800061e: bf00 nop + 8000620: 370c adds r7, #12 + 8000622: 46bd mov sp, r7 + 8000624: f85d 7b04 ldr.w r7, [sp], #4 + 8000628: 4770 bx lr -0800058e

    j%kW%$0{UL?)KLCdrl%+xC>K5V4Wg9gX_lar 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 z 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 =xbA1wMCF=j=nyX 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 z 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

  • (7%_erHq481<^uRvjXCswUh658Lg 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